diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 8bf5346d59..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -name: Bug report -about: Create a report to help fix an issue. -title: '' -labels: bug -assignees: '' - ---- - -**Platform**: *The type of device you were playing on - Android/iOS/Mac/Windows/Linux* ("All" is NOT a platform!) - -**Build**: *The build number under the title in the main menu. Required. "LATEST" IS NOT A VERSION, I NEED THE EXACT BUILD NUMBER OF YOUR GAME.* - -**Issue**: *Explain your issue in detail.* - -**Steps to reproduce**: *How you happened across the issue, and what exactly you did to make the bug happen.* - -**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. 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. - -**(Crash) logs**: *Either crash reports from the crash folder, or the file you get when you go into Settings -> Game Data -> Export Crash logs. REQUIRED if you are reporting a crash.* - ---- - -*Place an X (no spaces) between the brackets to confirm that you have read the line below.* -- [ ] **I have updated to the latest release (https://github.com/Anuken/Mindustry/releases) to make sure my issue has not been fixed.** -- [ ] **I have searched the closed and open issues to make sure that this problem has not already been reported.** diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000000..53c3710077 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,76 @@ +name: Bug report +description: The type of device you were playing on +labels: ["bug"] + +body: + - type: dropdown + id: platform + attributes: + label: Platforms + description: On what platforms do you know the bug happens? + multiple: false + options: + - Android + - iOS + - Mac + - Windows + - Linux + validations: + required: true + - type: input + id: build + attributes: + label: Build + description: The build number under the title in the main menu. + placeholder: LATEST IS NOT A VERSION, I NEED THE EXACT BUILD NUMBER OF YOUR GAME. + validations: + required: true + - type: textarea + id: issue + attributes: + label: Issue + description: Explain your issue in detail. + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Steps to reproduce + description: How you happened across the issue, and what exactly you did to make the bug happen. + validations: + required: true + - type: textarea + id: mods + attributes: + label: Mods used + description: The mod repositories or zip files that are related to the issue, if applicable. + validations: + required: false + - type: textarea + id: save-file + attributes: + label: Save file + description: The (zipped) save file you were playing on when the bug happened. If this happened in the campaign, specify the sector, and attach the file you get from Settings -> Game Data -> Export Data. For custom games, attach the .msav file exported from the save dialog, zipped. + placeholder: THIS IS REQUIRED FOR ANY ISSUE HAPPENING IN-GAME OR IN MULTIPLAYER, REGARDLESS OF WHETHER YOU THINK IT HAPPENS EVERYWHERE. DO NOT 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. + validations: + required: false + - type: textarea + id: logs + attributes: + label: (Crash) logs + description: Either crash reports from the crash folder, or the file you get when you go into Settings -> Game Data -> Export Crash logs. + placeholder: REQUIRED if you are reporting a crash. + validations: + required: false + - type: checkboxes + id: agreement + attributes: + label: Submission + description: Check the boxes to confirm that you have read the lines below. + options: + - label: I have updated to the latest release (https://github.com/Anuken/Mindustry/releases) to make sure my issue has not been fixed. + required: true + - label: I have searched the closed and open issues to make sure that this problem has not already been reported. + required: true + - label: "I am not using Foo's Client, and have made sure the bug is not caused by mods I have installed." + required: true diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 059b2bbdad..224a753d65 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -44,7 +44,7 @@ jobs: rm -rf .github rm README.md git add . - git commit --allow-empty -m "${GITHUB_SHA}" + git commit --allow-empty -m "Updating" git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/MindustryJitpack git tag ${RELEASE_VERSION} git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/MindustryJitpack diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml new file mode 100644 index 0000000000..95cce8bab6 --- /dev/null +++ b/.github/workflows/gradle-wrapper-validation.yml @@ -0,0 +1,10 @@ +name: "Validate Gradle Wrapper" +on: [push, pull_request] + +jobs: + validation: + name: "Validation" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: gradle/wrapper-validation-action@v2 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 4cc2f6d88f..eb2dcff192 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -17,8 +17,10 @@ jobs: java-version: 17 - name: Setup Gradle uses: gradle/gradle-build-action@v2 + - name: Run unit tests + run: ./gradlew tests:test --stacktrace --rerun - name: Run unit tests and build JAR - run: ./gradlew test desktop:dist + run: ./gradlew desktop:dist - name: Upload desktop JAR for testing uses: actions/upload-artifact@v2 with: diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 5476ff44ee..cd593a6dfd 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -33,6 +33,8 @@ jobs: ./gradlew updateBundles if [ -n "$(git status --porcelain)" ]; then + git config --global user.name "Github Actions" + git config --global user.email "actions@github.com" git add core/assets/bundles/* git commit -m "Automatic bundle update" git push @@ -41,7 +43,7 @@ jobs: if: ${{ github.repository == 'Anuken/Mindustry' }} run: | git config --global user.name "Github Actions" - git config --global user.email "cli@github.com" + git config --global user.email "actions@github.com" cd ../ cp -r ./Mindustry ./MindustryJitpack cd MindustryJitpack @@ -52,8 +54,8 @@ jobs: rm -rf .github rm README.md git add . - git commit --allow-empty -m "${GITHUB_SHA}" + git commit --allow-empty -m "Updating" git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/MindustryJitpack cd ../Mindustry - name: Run unit tests - run: ./gradlew clean cleanTest test --stacktrace + run: ./gradlew tests:test --rerun --stacktrace diff --git a/.gitignore b/.gitignore index d0a0666c26..dd3f2a0f06 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ logs/ /core/assets/.gifimages/ /deploy/ /out/ +ios/libs/ /desktop/packr-out/ /desktop/packr-export/ /desktop/mindustry-saves/ @@ -43,6 +44,7 @@ steam_appid.txt ios/robovm.properties packr-out/ config/ +buildSrc/ *.gif /tests/out diff --git a/SERVERLIST.md b/SERVERLIST.md index b3dbebe0ca..f18655ff14 100644 --- a/SERVERLIST.md +++ b/SERVERLIST.md @@ -1,7 +1,7 @@ ### Adding a server to the list Mindustry now has a public list of servers that everyone can see and connect to. -This is done by letting clients `GET` a [JSON list of servers](https://github.com/Anuken/Mindustry/blob/master/servers_v6.json) in this repository. +This is done by letting clients `GET` a [JSON list of servers](https://github.com/Anuken/Mindustry/blob/master/servers_v7.json) in this repository. You may want to add your server to this list. The steps for getting this done are as follows: @@ -18,13 +18,16 @@ You'll need to either hire some moderators, or make use of (currently non-existe 4. **Get some good maps.** *(optional, but highly recommended)*. Add some maps to your server and set the map rotation to custom-only. You can get maps from the Steam workshop by subscribing and exporting them; using the `#maps` channel on Discord is also an option. 5. **Check your server configuration.** *(optional)* I would recommend adding a message rate limit of 1 second (`config messageRateLimit 1`), and disabling connect/disconnect messages to reduce spam (`config showConnectMessages false`). 6. Finally, **submit a pull request** to add your server's IP to the list. -This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers_v6.json), then add a JSON object with a single key, indicating your server address. -For example, if your server address is `example.com:6000`, you would add a comma after the last entry and insert: +This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers_v7.json), then add a JSON object with the following format: ```json { - "address": "example.com:6000" + "name": "Your Server Group Name", + "address": ["your.server.address"] } ``` + + If your group has multiple servers, simply add extra addresses inside the square brackets, separated by commas. For example: `["address1", "address2"]` + > Note that Mindustry also support SRV records. This allows you to use a subdomain for your server address instead of specifying the port. For example, if you want to use `play.example.com` instead of `example.com:6000`, in the dns settings of your domain, add an SRV record with `_mindustry` as the service, `tcp` as the protocol, `play` as the target and `6000` as the port. You can also setup fallback servers by modifying the weight or priority of the record. Although SRV records are very convenient, keep in mind they are slower than regular addresses. Avoid using them in the server list, but rather as an easy way to share your server address. Then, press the *'submit pull request'* button and I'll take a look at your server. If I have any issues with it, I'll let you know in the PR comments. diff --git a/android/build.gradle b/android/build.gradle index 8f9d14077c..f7f1ce377b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -29,8 +29,8 @@ task deploy(type: Copy){ } android{ - buildToolsVersion '31.0.0' - compileSdkVersion 31 + buildToolsVersion '33.0.2' + compileSdkVersion 33 sourceSets{ main{ manifest.srcFile 'AndroidManifest.xml' @@ -56,7 +56,7 @@ android{ applicationId "io.anuke.mindustry" minSdkVersion 14 - targetSdkVersion 31 + targetSdkVersion 33 versionName versionNameResult versionCode = vcode @@ -119,8 +119,8 @@ dependencies{ implementation arcModule("backends:backend-android") implementation 'com.jakewharton.android.repackaged:dalvik-dx:9.0.0_r3' - natives "com.github.Anuken.Arc:natives-android:${getArcHash()}" - natives "com.github.Anuken.Arc:natives-freetype-android:${getArcHash()}" + natives "com.github.Anuken.Arc:natives-android:$arcHash" + natives "com.github.Anuken.Arc:natives-freetype-android:$arcHash" def version; def highestVersion; diff --git a/android/src/mindustry/android/AndroidLauncher.java b/android/src/mindustry/android/AndroidLauncher.java index da3944fe06..fdb8a4ec56 100644 --- a/android/src/mindustry/android/AndroidLauncher.java +++ b/android/src/mindustry/android/AndroidLauncher.java @@ -101,64 +101,68 @@ public class AndroidLauncher extends AndroidApplication{ } void showFileChooser(boolean open, String title, Cons cons, String... extensions){ - String extension = extensions[0]; + try{ + String extension = extensions[0]; - if(VERSION.SDK_INT >= VERSION_CODES.Q){ - Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setType(extension.equals("zip") && !open && extensions.length == 1 ? "application/zip" : "*/*"); + if(VERSION.SDK_INT >= VERSION_CODES.Q){ + Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT); + intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.setType(extension.equals("zip") && !open && extensions.length == 1 ? "application/zip" : "*/*"); - addResultListener(i -> startActivityForResult(intent, i), (code, in) -> { - if(code == Activity.RESULT_OK && in != null && in.getData() != null){ - Uri uri = in.getData(); + addResultListener(i -> startActivityForResult(intent, i), (code, in) -> { + if(code == Activity.RESULT_OK && in != null && in.getData() != null){ + Uri uri = in.getData(); - if(uri.getPath().contains("(invalid)")) return; + if(uri.getPath().contains("(invalid)")) return; - Core.app.post(() -> Core.app.post(() -> cons.get(new Fi(uri.getPath()){ - @Override - public InputStream read(){ - try{ - return getContentResolver().openInputStream(uri); - }catch(IOException e){ - throw new ArcRuntimeException(e); + Core.app.post(() -> Core.app.post(() -> cons.get(new Fi(uri.getPath()){ + @Override + public InputStream read(){ + try{ + return getContentResolver().openInputStream(uri); + }catch(IOException e){ + throw new ArcRuntimeException(e); + } } - } - @Override - public OutputStream write(boolean append){ - try{ - return getContentResolver().openOutputStream(uri); - }catch(IOException e){ - throw new ArcRuntimeException(e); + @Override + public OutputStream write(boolean append){ + try{ + return getContentResolver().openOutputStream(uri); + }catch(IOException e){ + throw new ArcRuntimeException(e); + } } - } - }))); - } - }); - }else if(VERSION.SDK_INT >= VERSION_CODES.M && !(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && + }))); + } + }); + }else if(VERSION.SDK_INT >= VERSION_CODES.M && !(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){ - chooser = new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), open, file -> { - if(!open){ - cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension)); - }else{ - cons.get(file); - } - }); + chooser = new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), open, file -> { + if(!open){ + cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension)); + }else{ + cons.get(file); + } + }); - ArrayList perms = new ArrayList<>(); - if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ - perms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); - } - if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ - perms.add(Manifest.permission.READ_EXTERNAL_STORAGE); - } - requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE); - }else{ - if(open){ - new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show(); + ArrayList perms = new ArrayList<>(); + if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ + perms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); + } + if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ + perms.add(Manifest.permission.READ_EXTERNAL_STORAGE); + } + requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE); }else{ - super.showFileChooser(open, "@open", extension, cons); + if(open){ + new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show(); + }else{ + super.showFileChooser(open, "@open", extension, cons); + } } + }catch(Throwable error){ + Core.app.post(() -> Vars.ui.showException(error)); } } @@ -180,6 +184,7 @@ public class AndroidLauncher extends AndroidApplication{ }, new AndroidApplicationConfiguration(){{ useImmersiveMode = true; hideStatusBar = true; + useGL30 = true; }}); checkFiles(getIntent()); diff --git a/annotations/src/main/java/mindustry/annotations/Annotations.java b/annotations/src/main/java/mindustry/annotations/Annotations.java index 9960f673eb..88811afca5 100644 --- a/annotations/src/main/java/mindustry/annotations/Annotations.java +++ b/annotations/src/main/java/mindustry/annotations/Annotations.java @@ -8,14 +8,12 @@ public class Annotations{ /** Indicates that a method overrides other methods. */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.SOURCE) - public @interface Replace{ - } + public @interface Replace{} /** Indicates that a method should be final in all implementing classes. */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.SOURCE) - public @interface Final{ - } + public @interface Final{} /** Indicates that a field will be interpolated when synced. */ @Target({ElementType.FIELD}) @@ -30,15 +28,18 @@ public class Annotations{ /** Indicates that a field will not be read from the server when syncing the local player state. */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.SOURCE) - public @interface SyncLocal{ + public @interface SyncLocal{} + + /** Indicates that a field should not be synced to clients (but may still be non-transient) */ + @Target({ElementType.FIELD}) + @Retention(RetentionPolicy.SOURCE) + public @interface NoSync{} - } /** Indicates that a component field is imported from other components. This means it doesn't actually exist. */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.SOURCE) - public @interface Import{ - } + public @interface Import{} /** Indicates that a component field is read-only. */ @Target({ElementType.FIELD, ElementType.METHOD}) @@ -105,8 +106,7 @@ public class Annotations{ /** Indicates an internal interface for entity components. */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) - public @interface EntityInterface{ - } + public @interface EntityInterface{} //endregion //region misc. utility @@ -145,15 +145,12 @@ public class Annotations{ /** Indicates that a method should always call its super version. */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) - public @interface CallSuper{ - - } + public @interface CallSuper{} /** Annotation that allows overriding CallSuper annotation. To be used on method that overrides method with CallSuper annotation from parent class. */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) - public @interface OverrideCallSuper{ - } + public @interface OverrideCallSuper{} //endregion //region struct @@ -161,9 +158,7 @@ public class Annotations{ /** Marks a class as a special value type struct. Class name must end in 'Struct'. */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) - public @interface Struct{ - - } + public @interface Struct{} /** Marks a field of a struct. Optional. */ @Target(ElementType.FIELD) @@ -251,8 +246,7 @@ public class Annotations{ @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) - public @interface TypeIOHandler{ - } + public @interface TypeIOHandler{ } //endregion } diff --git a/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java b/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java index 7f817fe562..4d9ce94869 100644 --- a/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java +++ b/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java @@ -118,13 +118,16 @@ public class EntityIO{ } } - void writeSync(MethodSpec.Builder method, boolean write, Seq syncFields, Seq allFields) throws Exception{ + void writeSync(MethodSpec.Builder method, boolean write, Seq allFields) throws Exception{ this.method = method; this.write = write; if(write){ //write uses most recent revision for(RevisionField field : revisions.peek().fields){ + Svar var = allFields.find(s -> s.name().equals(field.name)); + if(var == null || var.has(NoSync.class)) continue; + io(field.type, "this." + field.name, true); } }else{ @@ -138,6 +141,7 @@ public class EntityIO{ //add code for reading revision for(RevisionField field : rev.fields){ Svar var = allFields.find(s -> s.name().equals(field.name)); + if(var == null || var.has(NoSync.class)) continue; boolean sf = var.has(SyncField.class), sl = var.has(SyncLocal.class); if(sl) cont("if(!islocal)"); @@ -223,7 +227,7 @@ public class EntityIO{ if(BaseProcessor.isPrimitive(type)){ s(type.equals("boolean") ? "bool" : type.charAt(0) + "", field); - }else if(instanceOf(type, "mindustry.ctype.Content")){ + }else if(instanceOf(type, "mindustry.ctype.Content") && !type.equals("mindustry.ai.UnitStance") && !type.equals("mindustry.ai.UnitCommand")){ if(write){ s("s", field + ".id"); }else{ diff --git a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java index ba44aa5b9a..3fa62d8446 100644 --- a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java +++ b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java @@ -490,7 +490,7 @@ public class EntityProcess extends BaseProcessor{ //SPECIAL CASE: sync I/O code if((first.name().equals("readSync") || first.name().equals("writeSync"))){ - io.writeSync(mbuilder, first.name().equals("writeSync"), syncedFields, allFields); + io.writeSync(mbuilder, first.name().equals("writeSync"), allFields); } //SPECIAL CASE: sync I/O code for writing to/from a manual buffer diff --git a/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java b/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java index 5ca28c0370..64b12ca33d 100644 --- a/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java +++ b/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java @@ -57,6 +57,9 @@ public class AssetsProcess extends BaseProcessor{ ichtype.addField(FieldSpec.builder(ParameterizedTypeName.get(ObjectIntMap.class, String.class), "codes", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("new ObjectIntMap<>()").build()); + ichtype.addField(FieldSpec.builder(ParameterizedTypeName.get(IntMap.class, String.class), + "codeToName", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("new IntMap<>()").build()); + ObjectSet used = new ObjectSet<>(); for(Jval val : icons.get("glyphs").asArray()){ @@ -67,7 +70,9 @@ public class AssetsProcess extends BaseProcessor{ int code = val.getInt("code", 0); iconcAll.append((char)code); ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).addJavadoc(String.format("\\u%04x", code)).initializer("'" + ((char)code) + "'").build()); + ichinit.addStatement("codes.put($S, $L)", name, code); + ichinit.addStatement("codeToName.put($L, $S)", code, name); ictype.addField(TextureRegionDrawable.class, name + "Small", Modifier.PUBLIC, Modifier.STATIC); icload.addStatement(name + "Small = mindustry.ui.Fonts.getGlyph(mindustry.ui.Fonts.def, (char)" + code + ")"); diff --git a/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java b/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java index bac713b019..955587301d 100644 --- a/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java +++ b/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java @@ -102,7 +102,7 @@ public class StructProcess extends BaseProcessor{ //bools: single bit, needs special case to clear things setter.beginControlFlow("if(value)"); - setter.addStatement("return ($T)(($L & ~(1L << $LL)) | (1L << $LL))", structType, structParam, offset, offset); + setter.addStatement("return ($T)($L | (1L << $LL))", structType, structParam, offset); setter.nextControlFlow("else"); setter.addStatement("return ($T)(($L & ~(1L << $LL)))", structType, structParam, offset); setter.endControlFlow(); diff --git a/annotations/src/main/resources/revisions/PlayerComp/1.json b/annotations/src/main/resources/revisions/PlayerComp/1.json new file mode 100644 index 0000000000..52d4a67cae --- /dev/null +++ b/annotations/src/main/resources/revisions/PlayerComp/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:admin,type:boolean},{name:boosting,type:boolean},{name:color,type:arc.graphics.Color},{name:lastCommand,type:mindustry.ai.UnitCommand},{name:mouseX,type:float},{name:mouseY,type:float},{name:name,type:java.lang.String},{name:shooting,type:boolean},{name:team,type:mindustry.game.Team},{name:typing,type:boolean},{name:unit,type:Unit},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/build.gradle b/build.gradle index 5b3103f660..9bca8edb25 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,14 @@ buildscript{ ext{ - getArcHash = { - return new Properties().with{ p -> p.load(file('gradle.properties').newReader()); return p }["archash"] - } + arcHash = property("archash") - arcHash = getArcHash() + localArc = !project.hasProperty("release") && new File(rootDir.parent, 'Arc').exists() && !project.hasProperty("noLocalArc") + + arcModule = { String name -> + //skip to last submodule + name = name.substring(name.lastIndexOf(':') + 1) + return "com.github.Anuken${localArc ? "" : ".Arc"}:$name:$arcHash" + } } repositories{ @@ -16,8 +20,8 @@ buildscript{ } dependencies{ - classpath "com.github.Anuken.Arc:packer:$arcHash" - classpath "com.github.Anuken.Arc:arc-core:$arcHash" + classpath arcModule(":extensions:packer") + classpath arcModule(":arc-core") } } @@ -48,20 +52,6 @@ allprojects{ return new File(projectDir.parent, '../Mindustry-Debug').exists() && !project.hasProperty("release") && project.hasProperty("args") } - localArc = { - return !project.hasProperty("release") && !project.hasProperty("noLocalArc") && new File(projectDir.parent, '../Arc').exists() - } - - arcModule = { String name -> - if(localArc()){ - return project(":Arc:$name") - }else{ - //skip to last submodule - if(name.contains(':')) name = name.split(':').last() - return "com.github.Anuken.Arc:$name:${getArcHash()}" - } - } - generateDeployName = { String platform -> if(platform == "windows"){ platform += "64" @@ -116,12 +106,12 @@ allprojects{ generateLocales = { def output = 'en\n' def bundles = new File(project(':core').projectDir, 'assets/bundles/') - bundles.listFiles().each{ other -> - if(other.name == "bundle.properties") return - output += other.name.substring("bundle".length() + 1, other.name.lastIndexOf('.')) + "\n" + bundles.list().sort().each{ name -> + if(name == "bundle.properties") return + output += name.substring("bundle".length() + 1, name.lastIndexOf('.')) + "\n" } new File(project(':core').projectDir, 'assets/locales').text = output - new File(project(':core').projectDir, 'assets/basepartnames').text = new File(project(':core').projectDir, 'assets/baseparts/').list().join("\n") + new File(project(':core').projectDir, 'assets/basepartnames').text = new File(project(':core').projectDir, 'assets/baseparts/').list().sort().join("\n") } writeVersion = { @@ -195,7 +185,7 @@ allprojects{ tasks.withType(JavaCompile){ targetCompatibility = 8 - sourceCompatibility = JavaVersion.VERSION_16 + sourceCompatibility = JavaVersion.VERSION_17 options.encoding = "UTF-8" options.compilerArgs += ["-Xlint:deprecation"] dependsOn clearCache @@ -244,6 +234,7 @@ project(":desktop"){ dependencies{ implementation project(":core") implementation arcModule("extensions:discord") + implementation arcModule("natives:natives-filedialogs") implementation arcModule("natives:natives-desktop") implementation arcModule("natives:natives-freetype-desktop") @@ -320,11 +311,6 @@ project(":core"){ } } - artifacts{ - archives sourcesJar - archives assetsJar - } - dependencies{ compileJava.dependsOn(preGen) @@ -335,13 +321,14 @@ project(":core"){ api arcModule("extensions:g3d") api arcModule("extensions:fx") api arcModule("extensions:arcnet") + implementation arcModule("extensions:filedialogs") api "com.github.Anuken:rhino:$rhinoVersion" - if(localArc() && debugged()) api arcModule("extensions:recorder") - if(localArc()) api arcModule(":extensions:packer") + if(localArc && debugged()) api arcModule("extensions:recorder") + if(localArc) api arcModule(":extensions:packer") annotationProcessor 'com.github.Anuken:jabel:0.9.0' compileOnly project(":annotations") - kapt project(":annotations") + if(!project.hasProperty("noKapt")) kapt project(":annotations") } afterEvaluate{ @@ -396,6 +383,7 @@ project(":tests"){ testImplementation "org.junit.jupiter:junit-jupiter-params:5.7.1" testImplementation "org.junit.jupiter:junit-jupiter-api:5.7.1" testImplementation arcModule("backends:backend-headless") + testImplementation "org.json:json:20230618" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.7.1" } @@ -428,7 +416,7 @@ project(":annotations"){ dependencies{ implementation 'com.squareup:javapoet:1.12.1' - implementation "com.github.Anuken.Arc:arc-core:$arcHash" + implementation arcModule("arc-core") } } @@ -442,6 +430,9 @@ configure([":core", ":server"].collect{project(it)}){ publications{ maven(MavenPublication){ from components.java + if(project.name == "core"){ + artifact(tasks.named("assetsJar")) + } } } } diff --git a/core/assets-raw/sprites/blocks/distribution/stack-conveyors/surge-conveyor-edge-glow.png b/core/assets-raw/sprites/blocks/distribution/stack-conveyors/surge-conveyor-edge-glow.png new file mode 100644 index 0000000000..379eb10394 Binary files /dev/null and b/core/assets-raw/sprites/blocks/distribution/stack-conveyors/surge-conveyor-edge-glow.png differ diff --git a/core/assets-raw/sprites/blocks/logic/world-switch-on.png b/core/assets-raw/sprites/blocks/logic/world-switch-on.png new file mode 100644 index 0000000000..54f03c820c Binary files /dev/null and b/core/assets-raw/sprites/blocks/logic/world-switch-on.png differ diff --git a/core/assets-raw/sprites/blocks/logic/world-switch.png b/core/assets-raw/sprites/blocks/logic/world-switch.png new file mode 100644 index 0000000000..b7c65601a9 Binary files /dev/null and b/core/assets-raw/sprites/blocks/logic/world-switch.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/hail-heat.png b/core/assets-raw/sprites/blocks/turrets/hail-heat.png index ef3805e18e..84f197b52b 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/hail-heat.png and b/core/assets-raw/sprites/blocks/turrets/hail-heat.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/hail.png b/core/assets-raw/sprites/blocks/turrets/hail.png index 10001df6ed..604fb5d5de 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/hail.png and b/core/assets-raw/sprites/blocks/turrets/hail.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/ripple.png b/core/assets-raw/sprites/blocks/turrets/ripple.png index 92bd3db328..4660117fd8 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/ripple.png and b/core/assets-raw/sprites/blocks/turrets/ripple.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/salvo/salvo-barrel-heat.png b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-barrel-heat.png index 3da2059037..274053f819 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/salvo/salvo-barrel-heat.png and b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-barrel-heat.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/salvo/salvo-barrel.png b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-barrel.png index b21c193a11..1ac7d8ff1f 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/salvo/salvo-barrel.png and b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-barrel.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/salvo/salvo-heat.png b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-heat.png deleted file mode 100644 index 48482e2697..0000000000 Binary files a/core/assets-raw/sprites/blocks/turrets/salvo/salvo-heat.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/turrets/salvo/salvo-preview.png b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-preview.png index 77d2e39b93..936f708770 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/salvo/salvo-preview.png and b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-preview.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/salvo/salvo-side-l.png b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-side-l.png new file mode 100644 index 0000000000..4ef9628282 Binary files /dev/null and b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-side-l.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/salvo/salvo-side-r.png b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-side-r.png new file mode 100644 index 0000000000..21cda3b07b Binary files /dev/null and b/core/assets-raw/sprites/blocks/turrets/salvo/salvo-side-r.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/salvo/salvo.png b/core/assets-raw/sprites/blocks/turrets/salvo/salvo.png deleted file mode 100644 index 7fb14de983..0000000000 Binary files a/core/assets-raw/sprites/blocks/turrets/salvo/salvo.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/turrets/scatter/scatter-mid.png b/core/assets-raw/sprites/blocks/turrets/scatter/scatter-mid.png index b33adc2c17..1dc01391fe 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/scatter/scatter-mid.png and b/core/assets-raw/sprites/blocks/turrets/scatter/scatter-mid.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/scatter/scatter-preview.png b/core/assets-raw/sprites/blocks/turrets/scatter/scatter-preview.png index 5cde2b862b..14930eb725 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/scatter/scatter-preview.png and b/core/assets-raw/sprites/blocks/turrets/scatter/scatter-preview.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/scatter/scatter.png b/core/assets-raw/sprites/blocks/turrets/scatter/scatter.png index b37f3f7c53..83613f9364 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/scatter/scatter.png and b/core/assets-raw/sprites/blocks/turrets/scatter/scatter.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/scorch-heat.png b/core/assets-raw/sprites/blocks/turrets/scorch-heat.png index ede4fe6657..82ac4b138f 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/scorch-heat.png and b/core/assets-raw/sprites/blocks/turrets/scorch-heat.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/scorch.png b/core/assets-raw/sprites/blocks/turrets/scorch.png index abbd3b5188..ad77c9feda 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/scorch.png and b/core/assets-raw/sprites/blocks/turrets/scorch.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/swarmer.png b/core/assets-raw/sprites/blocks/turrets/swarmer.png index 6f98a1ba7a..508e74f861 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/swarmer.png and b/core/assets-raw/sprites/blocks/turrets/swarmer.png differ diff --git a/core/assets-raw/sprites/effects/white.png b/core/assets-raw/sprites/effects/white.png index ba9bf827c1..e8b825eae0 100644 Binary files a/core/assets-raw/sprites/effects/white.png and b/core/assets-raw/sprites/effects/white.png differ diff --git a/core/assets-raw/sprites/statuses/status-fast.png b/core/assets-raw/sprites/statuses/status-fast.png new file mode 100644 index 0000000000..0de6eda95b Binary files /dev/null and b/core/assets-raw/sprites/statuses/status-fast.png differ diff --git a/core/assets-raw/sprites/ui/cat.png b/core/assets-raw/sprites/ui/cat.png new file mode 100755 index 0000000000..cdc94db9f9 Binary files /dev/null and b/core/assets-raw/sprites/ui/cat.png differ diff --git a/core/assets-raw/sprites/ui/ranai.png b/core/assets-raw/sprites/ui/ranai.png new file mode 100644 index 0000000000..e6fc9b930c Binary files /dev/null and b/core/assets-raw/sprites/ui/ranai.png differ diff --git a/core/assets-raw/sprites/units/dagger.png b/core/assets-raw/sprites/units/dagger.png index 2fa4b1464d..784c3c49e1 100644 Binary files a/core/assets-raw/sprites/units/dagger.png and b/core/assets-raw/sprites/units/dagger.png differ diff --git a/core/assets/baseparts/000.msch b/core/assets/baseparts/000.msch deleted file mode 100644 index 35d2df8e14..0000000000 Binary files a/core/assets/baseparts/000.msch and /dev/null differ diff --git a/core/assets/baseparts/1591389341902.msch b/core/assets/baseparts/1591389341902.msch deleted file mode 100644 index de7b07b8bf..0000000000 Binary files a/core/assets/baseparts/1591389341902.msch and /dev/null differ diff --git a/core/assets/baseparts/1591389353247.msch b/core/assets/baseparts/1591389353247.msch deleted file mode 100644 index 35d2df8e14..0000000000 Binary files a/core/assets/baseparts/1591389353247.msch and /dev/null differ diff --git a/core/assets/baseparts/1591389457130.msch b/core/assets/baseparts/1591389457130.msch deleted file mode 100644 index cba53a4737..0000000000 --- a/core/assets/baseparts/1591389457130.msch +++ /dev/null @@ -1 +0,0 @@ -mschx%Q0 C]R>v>9"S(H~)X_dKaYDݹ(Sim;VI^e0s-@ uVxz?k \ No newline at end of file diff --git a/core/assets/baseparts/1603214918168.msch b/core/assets/baseparts/1603214918168.msch deleted file mode 100644 index 6d69a2c362..0000000000 --- a/core/assets/baseparts/1603214918168.msch +++ /dev/null @@ -1,2 +0,0 @@ -mschx5 -! Ey-J(qG&'.}SmtWKuXGq Yz\P?E:Y ΤԢh)(%UDK(.%#V0FN# \ No newline at end of file diff --git a/core/assets/baseparts/1603219428262.msch b/core/assets/baseparts/1603219428262.msch deleted file mode 100644 index 6d5b519036..0000000000 Binary files a/core/assets/baseparts/1603219428262.msch and /dev/null differ diff --git a/core/assets/baseparts/752919619894902997.msch b/core/assets/baseparts/752919619894902997.msch deleted file mode 100644 index c8c143ca23..0000000000 Binary files a/core/assets/baseparts/752919619894902997.msch and /dev/null differ diff --git a/core/assets/baseparts/752926963076694047.msch b/core/assets/baseparts/752926963076694047.msch deleted file mode 100644 index 6e26296729..0000000000 Binary files a/core/assets/baseparts/752926963076694047.msch and /dev/null differ diff --git a/core/assets/baseparts/752961607314702336.msch b/core/assets/baseparts/752961607314702336.msch deleted file mode 100644 index f7ea7664db..0000000000 Binary files a/core/assets/baseparts/752961607314702336.msch and /dev/null differ diff --git a/core/assets/baseparts/752980871690059906.msch b/core/assets/baseparts/752980871690059906.msch deleted file mode 100644 index 360d04733b..0000000000 Binary files a/core/assets/baseparts/752980871690059906.msch and /dev/null differ diff --git a/core/assets/baseparts/752982341865046126.msch b/core/assets/baseparts/752982341865046126.msch deleted file mode 100644 index 360d04733b..0000000000 Binary files a/core/assets/baseparts/752982341865046126.msch and /dev/null differ diff --git a/core/assets/baseparts/753043453876895784.msch b/core/assets/baseparts/753043453876895784.msch deleted file mode 100644 index 013e2b4e23..0000000000 Binary files a/core/assets/baseparts/753043453876895784.msch and /dev/null differ diff --git a/core/assets/baseparts/772860344174772254.msch b/core/assets/baseparts/772860344174772254.msch deleted file mode 100644 index 781cd94d46..0000000000 Binary files a/core/assets/baseparts/772860344174772254.msch and /dev/null differ diff --git a/core/assets/baseparts/772861253630165084.msch b/core/assets/baseparts/772861253630165084.msch deleted file mode 100644 index e73ded4e03..0000000000 --- a/core/assets/baseparts/772861253630165084.msch +++ /dev/null @@ -1,3 +0,0 @@ -mschx%kn IV9 ;xS!a@M%F>fzƩp~:}bU$ %M; Ce~rT:^/6*#yA97ϧ#)%++5mꘌ5;f18ZfS4b0f52wOV$N+1(u -U -mIRuâ80GFĩ2шU;F~'b3xb`_ ݾ+U \ No newline at end of file diff --git a/core/assets/baseparts/actuallyokrtg.msch b/core/assets/baseparts/actuallyokrtg.msch new file mode 100644 index 0000000000..904f16fda5 --- /dev/null +++ b/core/assets/baseparts/actuallyokrtg.msch @@ -0,0 +1,4 @@ +mschxMan0 MK[H"9rcڏ <-4(Ma~)R{vB':Դi^'+ /4g"jPa~dwIStxoNpK >98DW&D`TTj=>rwA`%IQ V*Ž6ˀf'06LZ^s03ey1 b$=Hz A2o6 </_& \ No newline at end of file diff --git a/core/assets/baseparts/simplemeltdown.msch b/core/assets/baseparts/simplemeltdown.msch new file mode 100644 index 0000000000..3cb3fc34df --- /dev/null +++ b/core/assets/baseparts/simplemeltdown.msch @@ -0,0 +1,2 @@ +mschx=벓0 (=8@tjɝqjqmq(|ٗ|Q㼘j5w<8U/5]kvvݢ];8c-[R߼z?;(.za5jY)m|/n2زKߩ\N]v5C;75?%#N~ˑ~A!" 6_r$F2U#>yIR. `2'ʼD=)eۓ[]D#C&4HJVxHjӎLZr>;XUD"%(Bg$QJ'X\ZS2x`Bzo:M +Up$wI%̓G2޹A# " PHLo \ No newline at end of file diff --git a/core/assets/baseparts/solarbrick1.msch b/core/assets/baseparts/solarbrick1.msch new file mode 100644 index 0000000000..730215bf91 Binary files /dev/null and b/core/assets/baseparts/solarbrick1.msch differ diff --git a/core/assets/baseparts/solarbrick2.msch b/core/assets/baseparts/solarbrick2.msch new file mode 100644 index 0000000000..3909b5f00f Binary files /dev/null and b/core/assets/baseparts/solarbrick2.msch differ diff --git a/core/assets/baseparts/solarbrick4.msch b/core/assets/baseparts/solarbrick4.msch new file mode 100644 index 0000000000..d740903d5e Binary files /dev/null and b/core/assets/baseparts/solarbrick4.msch differ diff --git a/core/assets/baseparts/steamgobrr.msch b/core/assets/baseparts/steamgobrr.msch new file mode 100644 index 0000000000..99af5789df --- /dev/null +++ b/core/assets/baseparts/steamgobrr.msch @@ -0,0 +1,2 @@ +mschx%r JԘfm:@u̠d^Y.fd!6gmȿ\^6R0m_p9N1upvf¯/3)9u3IoO +\$NGD=ȡo\7l03i1H<H\(FE 5s\(FYd /Jh%Zi,:#VIX%JbUB*ݨiFu8IJZIhVi^UZhQW?J- \ No newline at end of file diff --git a/core/assets/baseparts/strong_duos.msch b/core/assets/baseparts/strong_duos.msch new file mode 100644 index 0000000000..32027b2c7e Binary files /dev/null and b/core/assets/baseparts/strong_duos.msch differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index c7d8db925b..5b08e098ac 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = Sort by stars schematic = Schematic schematic.add = Save Schematic... schematics = Schematics +schematic.search = Search schematics... schematic.replace = A schematic by that name already exists. Replace it? schematic.exists = A schematic by that name already exists. schematic.import = Import Schematic... @@ -69,7 +70,7 @@ schematic.shareworkshop = Share on Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic schematic.saved = Schematic saved. schematic.delete.confirm = This schematic will be utterly eradicated. -schematic.rename = Rename Schematic +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blocks schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.tags = Tags: @@ -78,6 +79,7 @@ schematic.addtag = Add Tag schematic.texttag = Text Tag schematic.icontag = Icon Tag schematic.renametag = Rename Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Delete this tag completely? schematic.tagexists = That tag already exists. @@ -257,11 +259,21 @@ trace = Trace Player trace.playername = Player name: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobile Client: [accent]{0} trace.modclient = Custom Client: [accent]{0} trace.times.joined = Times Joined: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Invalid client ID! Submit a bug report. + +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team + server.bans = Bans server.bans.none = No banned players found! server.admins = Admins @@ -275,10 +287,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Custom Build confirmban = Are you sure you want to ban "{0}[white]"? confirmkick = Are you sure you want to kick "{0}[white]"? -confirmvotekick = Are you sure you want to vote-kick "{0}[white]"? confirmunban = Are you sure you want to unban this player? confirmadmin = Are you sure you want to make "{0}[white]" an admin? confirmunadmin = Are you sure you want to remove admin status from "{0}[white]"? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Join Game joingame.ip = Address: disconnect = Disconnected. @@ -334,12 +347,23 @@ open = Open customize = Customize Rules cancel = Cancel command = Command +command.queue = Queue command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Open Link copylink = Copy Link back = Back @@ -386,9 +410,9 @@ custom = Custom builtin = Built-In map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone! map.random = [accent]Random Map -map.nospawn = This map does not have any cores for the player to spawn in! Add a [#{0}]{1}[] core to this map in the editor. +map.nospawn = This map does not have any cores for the player to spawn in! Add a {0} core to this map in the editor. map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[scarlet] non-orange[] cores to this map in the editor. -map.nospawn.attack = This map does not have any enemy cores for player to attack! Add [#{0}]{1}[] cores to this map in the editor. +map.nospawn.attack = This map does not have any enemy cores for player to attack! Add {0} cores to this map in the editor. map.invalid = Error loading map: corrupted or invalid map file. workshop.update = Update Item workshop.error = Error fetching workshop details: {0} @@ -420,6 +444,12 @@ editor.waves = Waves editor.rules = Rules editor.generation = Generation editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -463,7 +493,7 @@ waves.sort.begin = Begin waves.sort.health = Health waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Hide All waves.units.show = Show All @@ -474,8 +504,11 @@ wavemode.health = health editor.default = [lightgray] details = Details... -edit = Edit... +edit = Edit variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables + editor.name = Name: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -487,6 +520,7 @@ editor.errorlegacy = This map is too old, and uses a legacy map format that is n editor.errornot = This is not a map file. editor.errorheader = This map file is either not valid or corrupt. editor.errorname = Map has no name defined. Are you trying to load a save file? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Update editor.randomize = Randomize editor.moveup = Move Up @@ -498,6 +532,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Resize editor.loadmap = Load Map editor.savemap = Save Map +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Saved! editor.save.noname = Your map does not have a name! Set one in the 'map info' menu. editor.save.overwrite = Your map overwrites a built-in map! Pick a different name in the 'map info' menu. @@ -536,6 +571,8 @@ toolmode.eraseores = Erase Ores toolmode.eraseores.description = Erase only ores. toolmode.fillteams = Fill Teams toolmode.fillteams.description = Fill teams instead of blocks. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Draw Teams toolmode.drawteams.description = Draw teams instead of blocks. #unused @@ -560,6 +597,7 @@ filter.clear = Clear filter.option.ignore = Ignore filter.scatter = Scatter filter.terrain = Terrain +filter.logic = Logic filter.option.scale = Scale filter.option.chance = Chance @@ -583,6 +621,26 @@ filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +filter.option.code = Code +filter.option.loop = Loop + +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Width: height = Height: @@ -635,9 +693,12 @@ objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline @@ -666,7 +727,6 @@ resources.max = Max bannedblocks = Banned Blocks objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -689,7 +749,7 @@ error.any = Unknown network error. error.bloom = Failed to initialize bloom.\nYour device may not support it. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -726,8 +786,8 @@ sector.curlost = Sector Lost sector.missingresources = [scarlet]Insufficient Core Resources sector.attacked = Sector [accent]{0}[white] under attack! sector.lost = Sector [accent]{0}[white] lost! -#note: the missing space in the line below is intentional -sector.captured = Sector [accent]{0}[white]captured! +sector.capture = Sector [accent]{0}[white] Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -939,6 +999,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -949,14 +1010,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field -ability.statusfield = {0} Status Field -ability.unitspawn = {0} Factory +ability.repairfield.description = Repairs nearby units +ability.statusfield = Status Field +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc -ability.suppressionfield = Repair Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets +ability.suppressionfield = Repair Suppression +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Self Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death + +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Better Drill Required @@ -996,17 +1090,18 @@ bullet.splashdamage = [stat]{0}[lightgray] area dmg ~ [stat]{1}[lightgray] tiles bullet.incendiary = [stat]incendiary bullet.homing = [stat]homing bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0}[lightgray] seconds of repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: -bullet.frags = [stat]{0}[lightgray]x frag bullets: -bullet.lightning = [stat]{0}[lightgray]x lightning ~ [stat]{1}[lightgray] damage +bullet.frags = [stat]{0}x[lightgray] frag bullets: +bullet.lightning = [stat]{0}x[lightgray] lightning ~ [stat]{1}[lightgray] damage bullet.buildingdamage = [stat]{0}%[lightgray] building damage bullet.knockback = [stat]{0}[lightgray] knockback -bullet.pierce = [stat]{0}[lightgray]x pierce +bullet.pierce = [stat]{0}x[lightgray] pierce bullet.infinitepierce = [stat]pierce -bullet.healpercent = [stat]{0}[lightgray]% repair +bullet.healpercent = [stat]{0}%[lightgray] repair bullet.healamount = [stat]{0}[lightgray] direct repair -bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier +bullet.multiplier = [stat]{0}[lightgray] ammo/item bullet.reload = [stat]{0}%[lightgray] fire rate bullet.range = [stat]{0}[lightgray] tiles range @@ -1031,6 +1126,7 @@ unit.items = items unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = General @@ -1051,6 +1147,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animated Surfaces setting.animatedshields.name = Animated Shields @@ -1097,13 +1194,14 @@ setting.position.name = Show Player Position setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Music Volume setting.atmosphere.name = Show Planet Atmosphere +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Mute Music setting.sfxvol.name = SFX Volume setting.mutesound.name = Mute Sound setting.crashreport.name = Send Anonymous Crash Reports setting.savecreate.name = Auto-Create Saves -setting.publichost.name = Public Game Visibility +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Player Limit setting.chatopacity.name = Chat Opacity setting.lasersopacity.name = Power Laser Opacity @@ -1111,6 +1209,8 @@ setting.bridgeopacity.name = Bridge Opacity setting.playerchat.name = Display Player Bubble Chat setting.showweather.name = Show Weather Graphics setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Adapt interface to display notch +setting.macnotch.description = Restart required to apply changes steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Note that beta versions of the game cannot make public lobbies. @@ -1121,6 +1221,7 @@ keybind.title = Rebind Keys keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = General category.view.name = View +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1138,6 +1239,27 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Queue Unit Command +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders + +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram + +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload + keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1202,16 +1324,24 @@ mode.attack.name = Attack mode.attack.description = Destroy the enemy's base. \n[gray]Requires a red core in the map to play. mode.custom = Custom Rules +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Infinite Resources rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Wave Timer rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Waves +rules.airUseSpawns = Air units use spawn points rules.attack = Attack Mode +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI [red](WIP) rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1230,6 +1360,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) @@ -1263,6 +1394,9 @@ rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. + content.item.name = Items content.liquid.name = Fluids content.unit.name = Units @@ -1483,6 +1617,7 @@ block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Illuminator block.overflow-gate.name = Overflow Gate block.underflow-gate.name = Underflow Gate @@ -1725,7 +1860,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1778,18 +1912,18 @@ hint.desktopPause = Press [accent][[Space][] to pause and unpause the game. hint.breaking = [accent]Right-click[] and drag to break blocks. hint.breaking.mobile = Activate the \uE817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. hint.blockInfo = View information of a block by selecting it in the [accent]build menu[], then selecting the [accent][[?][] button at the right. -hint.derelict = [accent]Derelict[] structures are broken remnants of old bases that no longer function.\n\nThese structures can be [accent]deconstructed[] for resources. +hint.derelict = [accent]Derelict[] structures are broken remnants of old bases that no longer function.\n\nThese structures can be [accent]deconstructed[] for resources, or repaired. hint.research = Use the \uE875 [accent]Research[] button to research new technology. hint.research.mobile = Use the \uE875 [accent]Research[] button in the \uE88C [accent]Menu[] to research new technology. hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to manually control friendly units or turrets. hint.unitControl.mobile = [accent][[Double-tap][] to manually control friendly units or turrets. hint.unitSelectControl = To control units, enter [accent]command mode[] by holding [accent]L-shift.[]\nWhile in command mode, click and drag to select units. [accent]Right-click[] a location or target to command units there. hint.unitSelectControl.mobile = To control units, enter [accent]command mode[] by pressing the [accent]command[] button in the bottom left.\nWhile in command mode, long-press and drag to select units. Tap a location or target to command units there. -hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \uE827 [accent]Map[] in the bottom right. +hint.launch = Once enough resources are collected, you can [accent]Launch[] to the next sector by opening the \uE827 [accent]Map[] in the bottom right, and panning over to the new location. hint.launch.mobile = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \uE827 [accent]Map[] in the \uE88C [accent]Menu[]. hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. hint.rebuildSelect = Hold [accent][[B][] and drag to select destroyed block plans.\nThis will rebuild them automatically. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect.mobile = Select the \uE874 copy button, then tap the \uE80F rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. hint.conveyorPathfind.mobile = Enable \uE844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. hint.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters. @@ -1809,8 +1943,8 @@ hint.factoryControl.mobile = To set a unit factory's [accent]output destination[ gz.mine = Move near the \uF8C4 [accent]copper ore[] on the ground and click to begin mining. gz.mine.mobile = Move near the \uF8C4 [accent]copper ore[] on the ground and tap it to begin mining. -gz.research = Open the \uE875 tech tree.\nResearch the \uF870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nClick on a copper patch to place it. -gz.research.mobile = Open the \uE875 tech tree.\nResearch the \uF870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nTap on a copper patch to place it.\n\nPress the \uE800 [accent]checkmark[] at the bottom right to confirm. +gz.research = Open the \uE875 tech tree.\nResearch the \uF870 [accent]Mechanical Drill[], then select it from the \ue85e menu in the bottom right.\nClick on a copper patch to place it. +gz.research.mobile = Open the \uE875 tech tree.\nResearch the \uF870 [accent]Mechanical Drill[], then select it from the \ue85e menu in the bottom right.\nTap on a copper patch to place it.\n\nPress the \uE800 [accent]checkmark[] at the bottom right to confirm. gz.conveyors = Research and place \uF896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. gz.conveyors.mobile = Research and place \uF896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nHold down your finger for a second and drag to place multiple conveyors. gz.drills = Expand the mining operation.\nPlace more Mechanical Drills.\nMine 100 copper. @@ -1843,12 +1977,16 @@ onset.crusher = Use \uF74D [accent]cliff crushers[] to mine sand. onset.fabricator = Use [accent]units[] to explore the map, defend buildings, and attack the enemy. Research and place a \uF6A2 [accent]tank fabricator[]. onset.makeunit = Produce a unit.\nUse the "?" button to see selected factory requirements. onset.turrets = Units are effective, but [accent]turrets[] provide better defensive capabilities if used effectively.\nPlace a \uF6EB [accent]Breach[] turret.\nTurrets require \uF748 [accent]ammo[]. -onset.turretammo = Supply the turret with [accent]beryllium ammo.[] +onset.turretammo = Supply the turret with [accent]beryllium[] as ammo, using ducts. onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uF6EE [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uF725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [[ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) @@ -1949,7 +2087,7 @@ block.force-projector.description = Creates a hexagonal force field around itsel block.shock-mine.description = Releases electric arcs upon enemy unit contact. block.conveyor.description = Transports items forward. block.titanium-conveyor.description = Transports items forward. Faster than a standard conveyor. -block.plastanium-conveyor.description = Transports items forward in batches. Accepts items at the back, and unloads them in three directions at the front. Requires multiple loading and unloading points for peak throughput. +block.plastanium-conveyor.description = Transports items forward in batches. Accepts items at the back, and unloads them in three directions at the front. Requires multiple loading and unloading points for peak throughput. block.junction.description = Acts as a bridge for two crossing conveyor belts. block.bridge-conveyor.description = Transports items over terrain or buildings. block.phase-conveyor.description = Instantly transports items over terrain or buildings. Longer range than the item bridge, but requires power. @@ -1978,7 +2116,7 @@ block.power-node-large.description = An advanced power node with greater range. block.surge-tower.description = A long-range power node with fewer available connections. block.diode.description = Moves battery power in one direction, but only if the other side has less power stored. block.battery.description = Stores power in times of surplus energy. Outputs power in times of deficit. -block.battery-large.description = Stores power in times of surplus energy. Outputs power in times of deficit. Higher capacity than a regular battery. +block.battery-large.description = Stores power in times of surplus energy. Outputs power in times of deficit. Higher capacity than a regular battery. block.combustion-generator.description = Generates power by burning flammable materials, such as coal. block.thermal-generator.description = Generates power when placed in hot locations. block.steam-generator.description = Generates power by burning flammable materials and converting water to steam. @@ -2028,7 +2166,7 @@ block.parallax.description = Fires a tractor beam that pulls in air targets, dam block.tsunami.description = Fires powerful streams of liquid at enemies. Automatically extinguishes fires when supplied with water. block.silicon-crucible.description = Refines silicon from sand and coal, using pyratite as an additional heat source. More efficient in hot locations. block.disassembler.description = Separates slag into trace amounts of exotic mineral components at low efficiency. Can produce thorium. -block.overdrive-dome.description = Increases the speed of nearby buildings. Requires phase fabric and silicon to operate. +block.overdrive-dome.description = Increases the speed of nearby buildings. Requires phase fabric and silicon to operate. block.payload-conveyor.description = Moves large payloads, such as units from factories. Magnetic. Usable in zero-G environments. block.payload-router.description = Splits input payloads into 3 output directions. Functions as a sorter when a filter is set. Magnetic. Usable in zero-G environments. block.ground-factory.description = Produces ground units. Output units can be used directly, or moved into reconstructors for upgrading. @@ -2048,7 +2186,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. #Erekir block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. @@ -2086,7 +2223,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge between two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2198,8 +2334,8 @@ unit.collaris.description = Fires long-range fragmenting artillery at enemy targ unit.elude.description = Fires pairs of homing bullets at enemy targets. Can float over bodies of liquid. unit.avert.description = Fires twisting pairs of bullets at enemy targets. unit.obviate.description = Fires twisting pairs of lightning orbs at enemy targets. -unit.quell.description = Fires long-range homing missiles at enemy targets. Suppresses enemy structure repair blocks. -unit.disrupt.description = Fires long-range homing suppression missiles at enemy targets. Suppresses enemy structure repair blocks. +unit.quell.description = Fires long-range homing missiles at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets. +unit.disrupt.description = Fires long-range homing suppression missiles at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets. unit.evoke.description = Builds structures to defend the Bastion core. Repairs structures with a beam. Capable of carrying 2x2 structures. unit.incite.description = Builds structures to defend the Citadel core. Repairs structures with a beam. Capable of carrying 2x2 structures. unit.emanate.description = Builds structures to defend the Acropolis core. Repairs structures with beams. Capable of carrying 2x2 structures. @@ -2207,6 +2343,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2219,7 +2356,7 @@ lst.operation = Perform an operation on 1-2 variables. lst.end = Jump to the top of the instruction stack. lst.wait = Wait a certain number of seconds. lst.stop = Halt execution of this processor. -lst.lookup = Look up an item/liquid/unit/block type by ID.\nTotal counts of each type can be accessed with:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] +lst.lookup = Look up an item/liquid/unit/block type by ID.\nTotal counts of each type can be accessed with:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[]\nFor the inverse operation, sense [accent]@id[] of the object. 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. @@ -2229,6 +2366,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a unit. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Spawn a wave. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2240,6 +2379,54 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nLimited to 20 times a second per variable. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.\n[accent]null []values are ignored. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. + +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees + +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles + +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup + +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) + +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction + +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server + +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True if the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. @@ -2255,6 +2442,7 @@ 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]@ctrlCommand[] if unit controller is a player command\nOtherwise, 0. laccess.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. @@ -2282,6 +2470,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nOnly ASCII characters are allowed.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. @@ -2301,6 +2490,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. @@ -2375,6 +2565,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the specified position. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2385,11 +2576,14 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building, floor and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -#Don't translate these yet! -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. - +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed color, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index a1ea0615d1..27cd44b075 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Сартаваць па зоркам schematic = Схема schematic.add = Захаваць схему... schematics = Схемы +schematic.search = Пошук схемы... schematic.replace = Схема с дадзенай назвай ужо існуе. Замяніць яе? schematic.exists = Схема с дадзенай назвай ужо існуе. schematic.import = Імпартаваць схему... @@ -68,7 +69,7 @@ schematic.shareworkshop = Падзяліцца ў Майстэрні schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Адлюстраваць схему schematic.saved = Схема захавана. schematic.delete.confirm = Гэтая схема будзе выдалена. -schematic.rename = Пераназваць схему +schematic.edit = Рэдагаваць схему schematic.info = {0}x{1}, {2} блокаў schematic.disabled = [scarlet]Схемы забаронены[]\nВам нельга выкарыстоўваць схемы на гэтай [accent]карце[] альбо [accent]серверы. schematic.tags = Тэгі: @@ -77,6 +78,7 @@ schematic.addtag = Дадаць Тэг schematic.texttag = Тэкставы Тэгу schematic.icontag = Іконкавы Тэгу schematic.renametag = Пераназваць Тэг +schematic.tagged = {0} tagged schematic.tagdelconfirm = Выдаліць гэты тэг цалкам? schematic.tagexists = Такі тэг ужо ёсць. stats = Вынікі @@ -124,7 +126,7 @@ uploadingpreviewfile = Выгрузка файла прадпрагляду committingchanges = Унясенне змяненняў done = Гатова feature.unsupported = Ваша прылада не падтрымлівае гэтую магчымасць. -mods.initfailed = [red]⚠[] The previous Mindustry instance failed to initialize. This was likely caused by misbehaving mods.\n\nTo prevent a crash loop, [red]all mods have been disabled.[] +mods.initfailed = [red]⚠[] Папярэдні асобнік Mindustry не атрымалася ініцыялізаваць. Гэта напэўна выклікана тым, што моды не працуюць належным чынам.\n\nКаб прадухіліць цыкл збояў, [red]усе моды былі адключаныя.[] mods = Мадыфікацыі mods.none = [lightgray]Мадыфікацыі не знойдзены! mods.guide = Кіраўніцтва па мадам @@ -248,11 +250,19 @@ trace = Адсочваць гульца trace.playername = Iмя гульца: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Мабільны кліент: [accent]{0} trace.modclient = Карыстальніцкі кліент: [accent]{0} trace.times.joined = Разоў Падлучана: [accent]{0} trace.times.kicked = Разоў Выгнана: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Недапушчальны ID кліента! Адпраўце справаздачу пра памылку. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Блакаваннi server.bans.none = Заблакаваных гульцоў няма! server.admins = Адміністратары @@ -266,14 +276,15 @@ server.version = [gray]Версія: {0} {1} server.custombuild = [accent]карыстальніцкая зборка confirmban = Вы сапраўды хочаце заблакаваць гэтага гульца? confirmkick = Вы сапраўды хочаце выгнаць гэтага гульца? -confirmvotekick = Вы сапраўды хочаце галасаваннем выгнаць гэтага гульца? confirmunban = Вы сапраўды хочаце разблакаваць гэтага гульца? confirmadmin = Вы сапраўды хочаце зрабіць гэтага гульца адміністратарам? confirmunadmin = Вы сапраўды хочаце прыбраць гэтага гульца з адміністратараў? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Далучыцца да гульні joingame.ip = Адрас: disconnect = Адключана. -disconnect.error = Памылка злучэння. +disconnect.error = Памылка злучэння. disconnect.closed = Злучэнне закрыта. disconnect.timeout = Час чакання скончыўся. disconnect.data = Памылка пры загрузцы дадзеных свету! @@ -287,7 +298,7 @@ server.invalidport = Няправільны нумар порта! server.error = [барвовы]Памылка стварэння сервера. save.new = Новае захаванне save.overwrite = Вы ўпэўненыя, што жадаеце перазапісаць\nгэты слот для захавання? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = Індывідуальныя файлы захавання кампаніі нельга імпартаваць. overwrite = Перазапісаць save.none = Захавання не знойдзены! savefail = Не атрымалася захаваць гульню! @@ -325,12 +336,23 @@ open = Адкрыць customize = наладзіць правілы cancel = адмена command = Камандаваць +command.queue = [lightgray][Queuing] command.mine = Дабываць command.repair = Рамантаваць command.rebuild = Перабудоўваць command.assist = Следаваць За Гульцом command.move = Рухацца command.boost = Узляцець +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = адкрыць спасылку copylink = скапіяваць спасылку back = Назад @@ -377,9 +399,9 @@ custom = Карыстацкая builtin = Убудаваная map.delete.confirm = Вы сапраўды жадаеце выдаліць гэтую карту? Гэта дзеянне не можа быць адменена! map.random = [accent]Выпадковая карта -map.nospawn = Гэтая карта не мае ні аднаго ядра, у якім гулец можа з’явіцца! Дадайце[accent] аранжавае[] ядро на гэтую карту ў рэдактары. -map.nospawn.pvp = У гэтай карты няма варожых ядраў, у якіх гулец можа з’явіцца! Дадайце[scarlet] не аранжавае[] ядро на гэтую карту ў рэдактары. -map.nospawn.attack = У гэтай карты няма варожых ядраў для нападу гульцом! Дадайце[scarlet] ружовае[] ядро на гэтую карту ў рэдактары. +map.nospawn = Гэтая карта не мае ні аднаго ядра, у якім гулец можа з’явіцца! Дадайце {0} ядро на гэтую карту ў рэдактары. +map.nospawn.pvp = У гэтай карты няма варожых ядраў, у якіх гулец можа з’явіцца! Дадайце [scarlet]не аранжавае[] ядро на гэтую карту ў рэдактары. +map.nospawn.attack = У гэтай карты няма варожых ядраў для нападу гульцом! Дадайце {0} ядро на гэтую карту ў рэдактары. map.invalid = Памылка загрузкі карты: пашкоджаны або недапушчальны файл карты. workshop.update = Абнавіць змесціва workshop.error = Памылка загрузкі інфармацыі з Майстэрні: {0} @@ -411,6 +433,12 @@ editor.waves = Хвалі: editor.rules = Правілы: editor.generation = Генерацыя: editor.objectives = Мэты +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Рэдагаваць ў гульні editor.playtest = Тэставаць editor.publish.workshop = Апублікаваць у майстэрні @@ -430,14 +458,14 @@ waves.title = Хвалі waves.remove = Выдаліць waves.every = кожны waves.waves = хваля (ы) -waves.health = health: {0}% +waves.health = Здароўе: {0}% waves.perspawn = за з’яўленне waves.shields = адзінак шчыта/хвалю waves.to = да waves.spawn = зявілася: waves.spawn.all = <усе> waves.spawn.select = Выбар Кропкі Зяўлення -waves.spawn.none = [scarlet]no spawns found in map +waves.spawn.none = [scarlet]спаўны на карце не знойдзены waves.max = максімум адзінак waves.guardian = Вартаўнік waves.preview = Папярэдні прагляд @@ -453,8 +481,8 @@ waves.sort.reverse = Рэверсіўнае Сартаванне waves.sort.begin = Пачатак waves.sort.health = Здароўе waves.sort.type = Тып -waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.search = Пошук хваль... +waves.filter = Фільтраваць Юнітав waves.units.hide = Схаваць Усё waves.units.show = Паказаць Усё @@ -466,6 +494,8 @@ editor.default = [lightgray]<Па змаўчанні> details = Падрабязнасці... edit = Рэдагаваць... variables = Пераменныя +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Назва: editor.spawn = Стварыць баявую адзінку editor.removeunit = Выдаліць баявую адзінку @@ -477,6 +507,7 @@ editor.errorlegacy = Гэтая карта занадта старая і вык editor.errornot = Гэта не файл карты. editor.errorheader = Гэты файл карты ня дзейнічае або пашкоджаны. editor.errorname = Карта не мае імя. Можа быць, Вы спрабуеце загрузіць захаванне? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Абнавіць editor.randomize = Выпадкова editor.moveup = Рухацца Уверх @@ -488,6 +519,7 @@ editor.sectorgenerate = Згенераваць Сектар editor.resize = Змяніць \nразмер editor.loadmap = Загрузіць \nкарту editor.savemap = Захаваць \nкарту +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Захавана! editor.save.noname = У Вашай карты няма імя! Назавіце яе ў меню «Інфармацыя аб карце». editor.save.overwrite = Ваша карта не можа быць запісана па-над убудаванай карты! Калі ласка, увядзіце іншую назву ў меню «Інфармацыя аб карце» @@ -526,10 +558,12 @@ toolmode.eraseores = Сцерці руды toolmode.eraseores.description = Сцерці толькі руды. toolmode.fillteams = Змяніць каманду блокаў toolmode.fillteams.description = Змяняе прыналежнасць \nблокаў да каманды. +toolmode.fillerase = Сцерці заліўку +toolmode.fillerase.description = Сцерці ўсе блокі аднаго тыпу. toolmode.drawteams = Змяніць каманду блока toolmode.drawteams.description = Змяняе прыналежнасць \nблокаў да каманды. -toolmode.underliquid = Under Liquids -toolmode.underliquid.description = Draw floors under liquid tiles. +toolmode.underliquid = Пад вадкасцямі +toolmode.underliquid.description = Малюе паверхні пад вадзяныя блокі. filters.empty = [lightgray]Няма фільтраў! Дадайце адзін пры дапамозе кнопкі ніжэй. filter.distort = Скажэнне @@ -548,6 +582,7 @@ filter.clear = Ачысціць filter.option.ignore = Ігнараваць filter.scatter = Сеяцель filter.terrain = Ландшафт +filter.logic = Logic filter.option.scale = Маштаб фільтра filter.option.chance = Шанец filter.option.mag = Сіла прымянення @@ -570,6 +605,25 @@ filter.option.floor2 = Другая паверхню filter.option.threshold2 = Другасны гранічны парог filter.option.radius = Радыус filter.option.percentile = Процентль +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Шырыня: height = Вышыня: @@ -620,11 +674,14 @@ objective.destroycore.name = Знішчыць Ядро objective.commandmode.name = Рэжым Загадаў objective.flag.name = Сцяг marker.shapetext.name = Форма Тэксту -marker.minimap.name = Міні-Мапа +marker.point.name = Point marker.shape.name = Форма marker.text.name = Тэкст +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Задні Фон -marker.outline = Outline +marker.outline = Контур objective.research = [accent]Даследаваць:\n[]{0}[lightgray]{1} objective.produce = [accent]Атрымаць:\n[]{0}[lightgray]{1} objective.destroyblock = [accent]Знішчыць:\n[]{0}[lightgray]{1} @@ -647,7 +704,6 @@ resources.max = Максімум Рэсурсаў bannedblocks = Забароненыя блокі objectives = Мэты bannedunits = Забароненыя Адзінкі -rules.hidebannedblocks = Схаваць Забароненыя Блокі bannedunits.whitelist = Забароненыя Адзінкі Ў Белым Спісе bannedblocks.whitelist = Забароненыя Блокі Ў Белым Спісе addall = Дадаць всё @@ -670,7 +726,7 @@ error.any = Невядомая сеткавая памылка. error.bloom = Не атрымалася ініцыялізаваць свячэнне (Bloom). \nМагчыма, зараз Вашая прылада не падтрымлівае яго. weather.rain.name = Дождж -weather.snow.name = Снег +weather.snowing.name = Снег weather.sandstorm.name = Пясчаная бура weather.sporestorm.name = Спаравая бура weather.fog.name = Туман @@ -706,7 +762,8 @@ sector.curlost = Сектар Згублены sector.missingresources = [scarlet]Insufficient Core Resources sector.attacked = Сектар [accent]{0}[white] атакуецца! sector.lost = Сектар [accent]{0}[white] згублены! -sector.captured = Сектар [accent]{0}[white]захоплены! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Змяніць Іконку sector.noswitch.title = Немагчыма Пераключыцца на Сектар sector.noswitch = Вы не можаце пераключацца на сектары калі гэты сектар атакуецца.\n\nСектар: [accent]{0}[] у [accent]{1}[] @@ -748,7 +805,7 @@ sector.craters.description = Вада сабралася ў гэтым крат sector.ruinousShores.description = Ператварыўшаяся ў мусар, берагавая лінія. Раней, гэта лакацыя была раёнам берагавой абароны. Мала што ад яе засталося. Толькі самыя простыя абарончыя структуры засталіся непашкоджанымі, усё яшчэ ператвораныя ў металалом.\nПрацягніце пашырэнне па-за гэты сектар. Адкрыйце нанава гэту тэхналогію. sector.stainedMountains.description = Далей ідзе востраў на якім ляжаць горы, яшчэ не заплямлены спорамі.\nДабудзьце багата тытану ў гэтым сектары. Даведайцеся як выкарыстоуваць яго.\n\nВарожая прысутнасць тут мацней. Не дайце ім часу каб адправіць іх мацнейшыя адзінкі. sector.overgrowth.description = Гэты сектар зарос, бліжэйшы да крыніцы спораў.\nВораг заснаваў тутThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. -sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.tarFields.description = Ваколіцы зоны здабычы нафты, паміж гарамі і пустыняй. Адзін з некалькіх зон з прыдатнымі для выкарыстання запасамі дзёгцю.\nТаксама закінутая, гэтая зона мае побач небяспечных ворагаў. Не варта недаацэньваць іх.\n\n[lightgray]Знайдзіце па магчымасці тэхналогіі перапрацоўкі нафты. sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. @@ -914,6 +971,7 @@ stat.abilities = Здольнасйі stat.canboost = Можа Узлятаць stat.flying = Паветраны stat.ammouse = Выкарыстанне Боезапасу +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Множнік Пашкоджанняў stat.healthmultiplier = Множнік Здароўя stat.speedmultiplier = Множнік Хуткасці @@ -924,14 +982,46 @@ stat.immunities = Імунітэт stat.healing = Аднаўленне ability.forcefield = Сіловое Поле +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Поле Рамонту +ability.repairfield.description = Repairs nearby units ability.statusfield = Поле Статусу -ability.unitspawn = {0} Завод +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Завод +ability.unitspawn.description = Constructs units ability.shieldregenfield = Васстанўляюяае Поле Шчыта +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Рух Маланкі +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Шчытавая Дуга +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Энэргетычнае Поле: [accent]{0}[] пашкоджанні ~ [accent]{1}[] блокі / [accent]{2}[] целі +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Энэргетычнае Поле +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Даступны Толькі Перанос Рэсурсаў У Ядро bar.drilltierreq = Патрабуецца свідар лепей @@ -971,6 +1061,7 @@ bullet.splashdamage = [stat] {0} [lightgray]страты ў радыусе ~ [st bullet.incendiary = [stat] запальны bullet.homing = [stat] саманаводных bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1006,6 +1097,7 @@ unit.items = прадметаў unit.thousands = Тыс. unit.millions = М. unit.billions = Б. +unit.shots = shots unit.pershot = /стрэл category.purpose = Апісанне category.general = Асноўныя @@ -1026,6 +1118,7 @@ setting.backgroundpause.name = Паўза Калі Ў Фоне setting.buildautopause.name = Аўтаматычная прыпыненне будаўніцтва setting.doubletapmine.name = Двайныая Пстрычка каб дабываць setting.commandmodehold.name = Утрымаць Для Рэжыму Загадаў +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Адключыць Мадыфікацыі Пры Памылковым Запуску setting.animatedwater.name = Аніміраваныя вада setting.animatedshields.name = Аніміраваныя шчыты @@ -1072,13 +1165,14 @@ setting.position.name = Адлюстроўваць каардынаты гуль setting.mouseposition.name = Паказаць Пазіцыю Мышы setting.musicvol.name = Гучнасць музыкі setting.atmosphere.name = Паказаць Атмасферу Планеты +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Гучнасць акружэння setting.mutemusic.name = Заглушыць музыку setting.sfxvol.name = Гучнасць эфектаў setting.mutesound.name = Заглушыць гук setting.crashreport.name = Адпраўляць ананімныя справаздачы аб вылетах setting.savecreate.name = Аўтаматычнае стварэнне захаванняў -setting.publichost.name = Агульная даступнасць гульні +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Абмежаванне гульцоў setting.chatopacity.name = Непразрыстасць чата setting.lasersopacity.name = Непразрыстасць лазераў энергазабеспячэння @@ -1086,6 +1180,8 @@ setting.bridgeopacity.name = Непразрыстасць мастоў setting.playerchat.name = Адлюстроўваць аблокі чата над гульцамі setting.showweather.name = Паказаць Анімацыю Надвор'я setting.hidedisplays.name = Схаваць Лагічныя Дысплэі +setting.macnotch.name = Адаптуйце інтэрфейс для адлюстравання выемкі +setting.macnotch.description = Каб змены ўжыліся патрабуецца перазапуск steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Майце на ўвазе, што бэта-версія гульні не можа рабіць гульні публічнымі. @@ -1096,6 +1192,7 @@ keybind.title = Кіраванне keybinds.mobile = [scarlet] Большасць камбінацый клавіш тут не працуюць на мабільных прыладах. Падтрымліваецца толькі базавы рух. category.general.name = Асноўнае category.view.name = Прагляд +category.command.name = Unit Command category.multiplayer.name = Сеткавая гульня category.blocks.name = Выбар Блока placement.blockselectkeys = \n[lightgray]Клавіша: [{0}, @@ -1113,6 +1210,24 @@ keybind.mouse_move.name = Следаваць За Еурсорам keybind.pan.name = Панарамны Прагляд keybind.boost.name = Узляцець keybind.command_mode.name = Рэжым Загадаў +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Перабудаваць Рэгіён keybind.schematic_select.name = Абраць Вобласць keybind.schematic_menu.name = Меню Схем @@ -1176,17 +1291,25 @@ mode.pvp.description = Змагайцеся супраць іншых гульц mode.attack.name = Атака mode.attack.description = Знішчыце варожую базу. \n[gray]Для гульні патрабуецца чырвонае ядро ​​на карце. mode.custom = Карыстальніцкія правілы +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Схаваць Забароненыя Блокі rules.infiniteresources = Бясконцыя рэсурсы (Гулец) rules.onlydepositcore = Дазволіць Толькі Дэплананне Ядра +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Выбухі рэактараў rules.coreincinerates = Ядро Спальвае Рэсурсы rules.disableworldprocessors = Адключыць Працэсары Свету rules.schematic = Схемы Дазволены rules.wavetimer = Інтэрвал хваляў rules.wavesending = Адпраўка Хваль +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Хвалі +rules.airUseSpawns = Air units use spawn points rules.attack = Рэжым атакі +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Мінімальны Размер Атраду rules.rtsmaxsquadsize = Максімальны Размер Атраду @@ -1205,6 +1328,7 @@ rules.unitdamagemultiplier = Множнік страт баяв. адз. rules.unitcrashdamagemultiplier = Множнік Падрыўнога Пашкоджання Юніта rules.solarmultiplier = Множнік Сонечнай Энергіі rules.unitcapvariable = Ядра Спрыяюць Колькасці Юнітаў +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Асноўная Колькасць Юнітаў rules.limitarea = Абмежаваць Вобласць Мапы rules.enemycorebuildradius = Радыус абароны варожае. ядраў: [lightgray] (блок.) @@ -1237,6 +1361,8 @@ rules.weather = Надвор'е rules.weather.frequency = Частата: rules.weather.always = Заўсёды rules.weather.duration = Працягласць: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Рэчывы content.liquid.name = Вадкасці @@ -1454,6 +1580,7 @@ block.inverted-sorter.name = Інвертаваны сартавальнік block.message.name = Паведамленне block.reinforced-message.name = Узмоцненнае Паведамленне block.world-message.name = Паведамленне Свету +block.world-switch.name = World Switch block.illuminator.name = Асвятляльнік block.overflow-gate.name = Залішнi затвор block.underflow-gate.name = Залішнi шлюз @@ -1505,7 +1632,7 @@ block.solar-panel.name = Сонечная панэль block.solar-panel-large.name = Вялікая сонечная панэль block.oil-extractor.name = Нафтавая вышка block.repair-point.name = Рамонтны пункт -block.repair-turret.name = Repair Turret +block.repair-turret.name = Рамонтна турэль block.pulse-conduit.name = Імпульсны трубаправод block.plated-conduit.name = Умацаваны трубаправод block.phase-conduit.name = Фазавы трубаправод @@ -1694,7 +1821,6 @@ block.disperse.name = Разыход block.afflict.name = Пакута block.lustre.name = Блеск block.scathe.name = Паражэнне -block.fabricator.name = Фабрыкатар block.tank-refabricator.name = Рэфабрыкатар Танкаў block.mech-refabricator.name = Рэфабрыкатар Мяхоў block.ship-refabricator.name = Рэфабрыкатар Суднаў @@ -1812,9 +1938,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Зажміце [accent]shift[] каб увайсці ў [accent]рэжым камандавання[].\n[accent]Левая Кнопка Мышкі і працягнуць[] каб выбраць адзінкі.\n[accent]Правая Кнопка Мышкі[] каб камандаваць выбранымі адзінкамі каб рухаць або атакаваць. +onset.commandmode.mobile = Націсніце на кнопку [accent]Камандавання[] каб увайсці ў [accent]рэжым камандавання[].\nУтрамайце палец, пасля [accent]правесці[] да выбраных адзінак.\n[accent]Націсніце[] каб камандаваць выбранымі адзінкамі каб рухаць або атакаваць. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -1981,7 +2111,7 @@ block.ripple.description = Вельмі магутная артылерыйск block.cyclone.description = Вялікая турэль, якая можа весці агонь па паветраных і наземных мэтах. Страляе разрыўнымі снарадамі па бліжэйшых ворагам. block.spectre.description = Масіўная двуствольное гармата. Страляе буйнымі бранябойнымі кулямі па паветраных і наземных мэтах. block.meltdown.description = Масіўная лазерная гармата. Зараджае і страляе пастаянным лазерным прамянём ў бліжэйшых ворагаў. Патрабуецца астуджальная вадкасць для працы. -block.foreshadow.description = Fires a large single-target bolt over long distances. Prioritizes enemies with higher max health. +block.foreshadow.description = Страляе маланкай па адной цэлі на вялікай адлегласці. Аддае прыярытэт ворагам з большым максімальным здароўем. block.repair-point.description = Бесперапынна лечыць бліжэйшую пашкоджаную баявую адзінку або мех у сваім радыусе. block.segment.description = Пашкоджвае і знішчае снарады. Лазерныя снарады не шкодзяца. block.parallax.description = Fires a tractor beam that pulls in air targets, damaging them in the process. @@ -2008,7 +2138,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2044,7 +2173,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2161,6 +2289,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2183,6 +2312,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2194,6 +2325,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2206,6 +2378,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2231,6 +2404,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2248,6 +2422,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2309,6 +2484,7 @@ lenum.unbind = Поўнасццю адключыць кантраляванне lenum.move = Рухацца да канкрэтнай каардынаты. lenum.approach = Падысці да каардынаты з радыюсам. lenum.pathfind = Найці шлях да варожай кропкі з'яўлення. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Атакаваць каардынату. lenum.targetp = Атакаваць мэту з прадвылічэннем скорасці. lenum.itemdrop = Апусціць прадмет. @@ -2319,8 +2495,13 @@ lenum.payenter = Увайсці/прызямліцца на блок выгру lenum.flag = Лічбавы сцяг адзінкі. lenum.mine = Дабываць у кардынатах. lenum.build = Пабудаваць структуру. -lenum.getblock = Атрымаць будынак і яго тып у каардынатах.\nАдзінка павінна быць у дыяпазоне ад каардынат.\nЦвердыя не будынкі павінны мець тып [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Правярае калі адзінка знаходзіцца каля каардынат. lenum.boost = Пачаць/перастаць узлятаць. -onset.commandmode = Зажміце [accent]shift[] каб увайсці ў [accent]рэжым камандавання[].\n[accent]Левая Кнопка Мышкі і працягнуць[] каб выбраць адзінкі.\n[accent]Правая Кнопка Мышкі[] каб камандаваць выбранымі адзінкамі каб рухаць або атакаваць. -onset.commandmode.mobile = Націсніце на кнопку [accent]Камандавання[] каб увайсці ў [accent]рэжым камандавання[].\nУтрамайце палец, пасля [accent]правесці[] да выбраных адзінак.\n[accent]Націсніце[] каб камандаваць выбранымі адзінкамі каб рухаць або атакаваць. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 0962beb62a..89926a3a4f 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = Сортирай по рейтинг schematic = Схема schematic.add = Запази Схема... schematics = Схеми +schematic.search = Search schematics... schematic.replace = Вече съществува схема с това име. Да бъде ли заместена? schematic.exists = Вече съществува схема с това име. schematic.import = Внасяне на Схема... @@ -69,7 +70,7 @@ schematic.shareworkshop = Сподели в Работилницата schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Обърни Схемата schematic.saved = Схемате беше запазена. schematic.delete.confirm = Тази схема ще бъде напълно унищожена. -schematic.rename = Преименуване на схема +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} елемента schematic.disabled = [scarlet]Схемите не са достъпни[]\nНе ви е позволено да използвате Схеми на тази [accent]карта[] или [accent]сървър[]. schematic.tags = Tags: @@ -78,6 +79,7 @@ schematic.addtag = Add Tag schematic.texttag = Text Tag schematic.icontag = Icon Tag schematic.renametag = Rename Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Delete this tag completely? schematic.tagexists = That tag already exists. @@ -170,7 +172,7 @@ mod.import.file = Вмъкни от файл mod.import.github = Вмъкни от GitHub mod.jarwarn = [scarlet]JAR модовете могат да са опасни.[]\n Уверете се, че този мод e от надежден източник! mod.item.remove = Този предмет е част от [accent] '{0}'[] мод. За да го премахнете, премахнете или забранете този мод. -mod.remove.confirm = Този мод ще бъде премахнат. +mod.remove.confirm = Този мод ще бъде премахнат. mod.author = [lightgray]Автор:[] {0} mod.missing = Този запис съдържа модове, които са били обновени или изтрити. Може да възникнат грешки при зареждането. Сигурни ли сте, че искате да го заредите?\n[lightgray]Модове:\n{0} mod.preview.missing = За да публикувате този мод в Работилницата, той трябва да съдържа изображение за визуализация.\n Поставете файл с името [accent]preview.png[] в директорията на мода и опитайте отново. @@ -253,11 +255,19 @@ trace = Проследи Играч trace.playername = Име на играча: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Мобилен Клиент: [accent]{0} trace.modclient = Модифициран Клиент: [accent]{0} trace.times.joined = Пъти участвал в игра: [accent]{0} trace.times.kicked = Пъти изхвърлен от игра: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Невалидно ID на клиент. Съобщете за грешка. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Банове server.bans.none = Няма намерени баннати играчи! server.admins = Администратори @@ -271,10 +281,11 @@ server.version = [gray]в{0} {1} server.custombuild = [accent]Персонализирана компилация confirmban = Сигурни ли сте, че искате да баннете "{0}[white]"? confirmkick = Сигурни ли сте, че искате да изгоните "{0}[white]"? -confirmvotekick = Сигурни ли сте, че искате да изгоните "{0}[white]" чрез гласуване? confirmunban = Сигурни ли сте че, искате да анулирате банването на този играч? confirmadmin = Сигурни ли сте че, искате да направите "{0}[white]" администратор? confirmunadmin = Сигурни ли сте че, искате да премахнете администраторските права на "{0}[white]"? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Присъединяване в игра joingame.ip = IP адрес: disconnect = Връзката беше прекъсната. @@ -330,12 +341,23 @@ open = Отвори customize = Персонализирай правилата cancel = Отказ command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Отвори Линк copylink = Копирай Линк back = Назад @@ -382,9 +404,9 @@ custom = Персонализирано builtin = Вградено map.delete.confirm = Сигурни ли сте, че искате да изтриете тази карта? Това действие няма да може да бъде отменено! map.random = [accent]Случайна Карта -map.nospawn = Тази карта няма позиция за ядро на играча! Добавете поне едно [accent]оранжево[] ядро от редактора на карти. +map.nospawn = Тази карта няма позиция за ядро на играча! Добавете поне едно {0} ядро от редактора на карти. map.nospawn.pvp = Тази карта няма достатъчно позиции за ядра на други играчи! Добавете поне едно [scarlet]неоранжево[] ядро от редактора на карти. -map.nospawn.attack = Тази карта няма нито едно вражеско ядро! Добавете поне едно [scarlet]червено[] ядро от редактора на карти. +map.nospawn.attack = Тази карта няма нито едно вражеско ядро! Добавете поне едно {0} ядро от редактора на карти. map.invalid = Грешка при зареждане на карта: увреден или невалиден файл. workshop.update = Обновяване на елемент workshop.error = Грешка при изтегляне на данни от Работилницата: {0} @@ -416,6 +438,12 @@ editor.waves = Вълни: editor.rules = Правила: editor.generation = Генериране: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Редактирай в игра editor.playtest = Playtest editor.publish.workshop = Публикувай в Работилницата @@ -459,7 +487,7 @@ waves.sort.begin = Begin waves.sort.health = Health waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Hide All waves.units.show = Show All @@ -472,6 +500,8 @@ editor.default = [lightgray]<Стандартно> details = Детайли... edit = Редактирай... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Име: editor.spawn = Създай Единица editor.removeunit = Премахни Единица @@ -483,6 +513,7 @@ editor.errorlegacy = Тази карта е твърде стара, играт editor.errornot = Този файл не е карта. editor.errorheader = Този файл с карта е повреден или невалиден. editor.errorname = Картата няма зададено име. Да не се опитвате да заредите игра? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Обнови editor.randomize = Случайно editor.moveup = Move Up @@ -494,6 +525,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Смени размера editor.loadmap = Зареди Карта editor.savemap = Запиши Карта +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Записано! editor.save.noname = Картата няма име! Задайте такова в 'Информация за картата' от менюто. editor.save.overwrite = Съществува стандартна карта с такова име! Изберете различно име от 'Информация за картата' от менюто. @@ -532,6 +564,8 @@ toolmode.eraseores = Изтриване на руди toolmode.eraseores.description = Изтрива само руди. toolmode.fillteams = Запълване в отбори toolmode.fillteams.description = Променя отбора, не типа на обектите, чрез запълване +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Рисуване в отбори toolmode.drawteams.description = Променя отбора, не типа на обектите, чрез рисуване toolmode.underliquid = Under Liquids @@ -554,6 +588,7 @@ filter.clear = Изчисти filter.option.ignore = Игнорирай filter.scatter = Разпръскване filter.terrain = Терен +filter.logic = Logic filter.option.scale = Мащаб filter.option.chance = Вероятност filter.option.mag = Магнитут @@ -576,6 +611,25 @@ filter.option.floor2 = Втори под filter.option.threshold2 = Втори праг filter.option.radius = Радиус filter.option.percentile = Перцентил +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Дължина: height = Височина: @@ -626,9 +680,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -654,7 +711,6 @@ resources.max = Max bannedblocks = Забранени блокове objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Добави Всички @@ -677,7 +733,7 @@ error.any = Неизвестна мрежова грешка. error.bloom = Неуспешно инициализиране на Сияния.\nВашето устройство може да не поддържа този ефект. weather.rain.name = Дъжд -weather.snow.name = Сняг +weather.snowing.name = Сняг weather.sandstorm.name = Пясъчна буря weather.sporestorm.name = Спорова буря weather.fog.name = Мъгла @@ -713,8 +769,8 @@ sector.curlost = Зоната загубена sector.missingresources = [scarlet]Недостатъчни ресурси в ядрото sector.attacked = Зона [accent]{0}[white] е под атака! sector.lost = Зона [accent]{0}[white] беше загубена! -#note: the missing space in the line below is intentional -sector.captured = Зона [accent]{0}[white]беше превзета! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -925,6 +981,7 @@ stat.abilities = Способности stat.canboost = Може да ускорява stat.flying = Летящ stat.ammouse = Употребе на Боеприпаси +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Множител на Щети stat.healthmultiplier = Множител на Точки живот stat.speedmultiplier = Множител на Скорост @@ -935,14 +992,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Енергийно Поле +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Възстановяващо Поле +ability.repairfield.description = Repairs nearby units ability.statusfield = Подсилващо Поле -ability.unitspawn = {0} Factory +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Възстановяващо броня Поле +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Подвижна светкавица +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Необходимо е по-добро Свредло @@ -982,6 +1072,7 @@ bullet.splashdamage = [stat]{0}[lightgray] щети на площ ~[stat] {1}[li bullet.incendiary = [stat]Подпалване bullet.homing = [stat]Самонасочване bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1017,6 +1108,7 @@ unit.items = предмети unit.thousands = хил unit.millions = млн unit.billions = млр +unit.shots = shots unit.pershot = /изстрел category.purpose = Предназначение category.general = Обща информация @@ -1037,6 +1129,7 @@ setting.backgroundpause.name = Пауза при загуба на фокус setting.buildautopause.name = Автоматична Пауза на Изграждането setting.doubletapmine.name = Двоен Клик за Добив на Ресурс setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Забрани Модовете При Стартиране След Срив setting.animatedwater.name = Анимирани Повърхности setting.animatedshields.name = Анимирани Щитове @@ -1083,13 +1176,14 @@ setting.position.name = Показвай Позиция на Играч setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Сила на Звука setting.atmosphere.name = Показвай Атмосферата на Планетата +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Сила на Звука на Околната Среда setting.mutemusic.name = Заглуши Музиката setting.sfxvol.name = Сила на Звуковите Ефекти setting.mutesound.name = Заглуши Звука setting.crashreport.name = ИЗпращай Анонимни Отчети за Сривове setting.savecreate.name = Автоматични Записи -setting.publichost.name = Видимост на Публичните Игри +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Лимит на Играчи setting.chatopacity.name = Плътност на Чата setting.lasersopacity.name = Плътност на Енергийните Лазери @@ -1097,6 +1191,8 @@ setting.bridgeopacity.name = Плътност на Мостовете setting.playerchat.name = Показвай Мехурчета с Чат setting.showweather.name = Показвай Графики за Климата setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Адаптирайте интерфейса за показване на прорез +setting.macnotch.description = За прилагане на промените е необходимо рестартиране steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Имайте в предвид, че бета версии на играта не могат да стартират публични игри. @@ -1107,6 +1203,7 @@ keybind.title = Промени Клавишите keybinds.mobile = [scarlet]Повечето клавиши тук не са използваеми за мобилната версия. Само основните движения се поддържат. category.general.name = Основни настройки category.view.name = Изглед +category.command.name = Unit Command category.multiplayer.name = Мрежова игра category.blocks.name = Избор на блок placement.blockselectkeys = \n[lightgray]Клавиш: [{0}, @@ -1124,6 +1221,24 @@ keybind.mouse_move.name = Следвай Мишката keybind.pan.name = Панорамен Изглед keybind.boost.name = Ускорение keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Избери Регион keybind.schematic_menu.name = Меню със Схеми @@ -1187,17 +1302,25 @@ mode.pvp.description = Играйте срещу други играчи в ло mode.attack.name = Нападение mode.attack.description = Унищожете вражеската база. \n[gray]Картата трябва да съдържа червено ядро. mode.custom = Персонализирани Правила +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Безкрайни Ресурси rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Експлозиращи Реактори rules.coreincinerates = Унищожаване на Ресурси при Преливане rules.disableworldprocessors = Disable World Processors rules.schematic = Позволена Употребата на Схеми rules.wavetimer = Таймер за Вълни rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Вълни +rules.airUseSpawns = Air units use spawn points rules.attack = Режим Атака +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1216,6 +1339,7 @@ rules.unitdamagemultiplier = Множител на Щетите на Едини rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Ядрата Увеличават Максималния Брой Единици +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Максимален Брой Единици rules.limitarea = Limit Map Area rules.enemycorebuildradius = Радиус на Защитена от Строене Зона Около Ядрата:[lightgray] (полета) @@ -1248,6 +1372,8 @@ rules.weather = Климат rules.weather.frequency = Честота: rules.weather.always = Винаги rules.weather.duration = Продължителност: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Предмети content.liquid.name = Течности @@ -1465,6 +1591,7 @@ block.inverted-sorter.name = Обърнат сортирач block.message.name = Съобщение block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Осветител block.overflow-gate.name = Преливаща Порта block.underflow-gate.name = Обратна Преливаща Порта @@ -1705,7 +1832,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1824,9 +1950,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -1972,7 +2102,7 @@ block.core-shard.description = Ядро на базата. Веднъж унищ block.core-shard.details = Първата итерация. Компактно. Самовъзпроизвеждащо се.Оборудвано с едноктарни стартови двигатели. Не е предназначено за междупланетарни полети. block.core-foundation.description = Ядро на базата. Добре бронирано. Съдържа повече ресурси от модел Шард. block.core-foundation.details = Втората итерация. -block.core-nucleus.description = Ядро на базата. Изключително добре бронирано. Съхранява огромни количества ресурси. +block.core-nucleus.description = Ядро на базата. Изключително добре бронирано. Съхранява огромни количества ресурси. block.core-nucleus.details = Третата и финална итерация. block.vault.description = Съхранява голямо количество материали от всеки тип. Съдържанието може да бъде достъпено чрез разтоварач. block.container.description = Съхранява малко количество материали от всеки тип. Съдържанието може да бъде достъпено чрез разтоварач. @@ -2020,7 +2150,6 @@ block.logic-display.description = Позволява изобразяванет block.large-logic-display.description = Позволява изобразяването на графика чрез процесор. block.interplanetary-accelerator.description = Масивна електромагнитна релсова кула. Ускорява ядрата до необходимата скорост за междупланетно изстрелване. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2056,7 +2185,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2145,7 +2273,7 @@ unit.minke.description = Изстрелва сачми и стандартни unit.bryde.description = Изстрелва далекообхватни боеприпаси и ракети по врагове. unit.sei.description = Изстрелва поредица от ракети и бронебойни куршуми по врагове. unit.omura.description = Изстрелва далечни пробивни релсови лазери по врагове. Изгражда единици модел Факел. -unit.alpha.description = Защитава ядро Шард от врагове. Строи структури. +unit.alpha.description = Защитава ядро Шард от врагове. Строи структури. unit.beta.description = Защитава ядро Фондация от врагове. Строи структури. unit.gamma.description = Защитава ядро Център от врагове. Строи структури. unit.retusa.description = Fires homing torpedoes at nearby enemies. Repairs allied units. @@ -2175,6 +2303,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Прочети число от свързано хранилище за памет. lst.write = Запиши число в свързано хранилище за памет. lst.print = Добави текст в буфера за изписване.\nНе визуализира нищо докато не използвате [accent]Print Flush[]. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Добавя операция в буфера за изображение.\nНе показва нищо докато не използвате [accent]Draw Flush[]. lst.drawflush = Изпълнява операции, поискани с команда [accent]Draw[] върху посочен дисплей. lst.printflush = Извежда текст натрупан с [accent]Print[] върху посочен блок за съобщение. @@ -2197,6 +2326,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2208,6 +2339,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Действия за строене на единици не са позволени тук. @@ -2223,6 +2395,7 @@ laccess.dead = Дали дадена единица/сграда е била у laccess.controlled = Връща:\n[accent]@ctrlProcessor[] ако единицата е контролирана от процесор\n[accent]@ctrlPlayer[] ако единицата/сградата е контролирана от играч\n[accent]@ctrlFormation[] ако единицата участва във формация\nИначе, връща 0. laccess.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2249,6 +2422,7 @@ graphicstype.poly = Запълва правилен многоъгълник. graphicstype.linepoly = Очертава правилен многоъгълник. graphicstype.triangle = Запълва триъгълник. graphicstype.image = Рисува изображение.\nНапример: [accent]@router[] или [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Винаги вярно lenum.idiv = Деление с цели числа. @@ -2268,6 +2442,7 @@ lenum.xor = Побитово ИЗКЛЮЧВАЩО ИЛИ. lenum.min = Минимална стойност от 2 числа. lenum.max = Максимална стойност от 2 числа. lenum.angle = Ъгъл на вектор в градуси. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Дължина на вектор. lenum.sin = Синус, в градуси. lenum.cos = Косинус, в градуси. @@ -2339,6 +2514,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Премести се на конкретна позиция. lenum.approach = Доближи се до позиция на определено разстояние. lenum.pathfind = Намери пътека до вражеската начална точка. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Стреляй към позиция. lenum.targetp = Стреляй към цел, изчислявайки нейната скорост. lenum.itemdrop = Разтовари предмет(и). @@ -2349,8 +2525,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Числов флаг на единица. lenum.mine = Добивай ресурси от позиция. lenum.build = Построй структура. -lenum.getblock = Преверете типът на постройката на дадени координати.\nПозицията трябва да е в обхвата на единицата.\nСолидни не-сгради ще имат типа [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Проверете дали дадена позиция е в обхват на единицата. lenum.boost = Започни/Спри ускорението. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 920fdae708..94d70b12d1 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = Ordena per valoració schematic = Esquema schematic.add = Desa l’esquema… schematics = Esquemes +schematic.search = Cerca esquemes… schematic.replace = Ja hi ha un esquema amb aquest nom. Voleu reemplaçar-lo? schematic.exists = Ja hi ha un esquema amb aquest nom. schematic.import = Importa un esquema @@ -69,7 +70,7 @@ schematic.shareworkshop = Comparteix al Workshop de l’Steam schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Dóna la volta a l’esquema schematic.saved = L’esquema s’ha desat. schematic.delete.confirm = Aquest esquema s’esborrarà. -schematic.rename = Reanomena l’esquema +schematic.edit = Edita l’esquema schematic.info = {0}×{1}, {2} blocs schematic.disabled = [scarlet]Els esquemes s’han desactivat.[]\nNo podeu fer servir esquemes en aquest [accent]mapa[] o [accent]servidor[]. schematic.tags = Etiquetes: @@ -78,6 +79,7 @@ schematic.addtag = Afegeix una etiqueta schematic.texttag = Text de l’etiqueta schematic.icontag = Icona de l’etiqueta schematic.renametag = Canvia el nom de l’etiqueta +schematic.tagged = {0} d’etiquetades schematic.tagdelconfirm = Voleu esborrar del tot aquesta etiqueta? schematic.tagexists = Aquesta etiqueta ja existeix. @@ -146,8 +148,8 @@ mod.content = Contingut: mod.delete.error = El mod no es pot esborrar. Potser el fitxer està en ús. mod.incompatiblegame = [red]Versió no compatible mod.incompatiblemod = [red]Incompatible -mod.blacklisted = [red]Unsupported -mod.unmetdependencies = [red]Depèndencies sense resoldre +mod.blacklisted = [red]No suportat +mod.unmetdependencies = [red]Dependències sense resoldre mod.erroredcontent = [scarlet]Errors del contingut mod.circulardependencies = [red]Dependències circulars mod.incompletedependencies = [red]Dependències incompletes @@ -253,11 +255,19 @@ trace = Rastreja un jugador trace.playername = Nom del jugador: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Client de mòbil: [accent]{0} trace.modclient = Client personalitzat: [accent]{0} trace.times.joined = S’ha unit [accent]{0}[] vegades. trace.times.kicked = Ha estat expulsat [accent]{0}[] vegades. +trace.ips = Direccions IP: +trace.names = Noms: invalidid = ID de client no vàlid! Envieu un informe d’error. +player.ban = Bandeja +player.kick = Expulsa +player.trace = Traça +player.admin = Commuta d’admin +player.team = Canvia l’equip server.bans = Bandejaments server.bans.none = No s’ha trobat cap jugador bandejat! server.admins = Administradors @@ -271,10 +281,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Versió personalitzada confirmban = Esteu segur que voleu bandejar a «{0}[white]»? confirmkick = Esteu segur que voleu expulsar a «{0}[white]»? -confirmvotekick = Esteu segur que voleu votar per a expulsar a «{0}[white]»? confirmunban = Esteu segur que voleu treure el bandeig a aquest jugador? confirmadmin = Esteu segur que voleu fer administrador a «{0}[white]»? confirmunadmin = Esteu segur que voleu treure a «{0}[white]» els permisos d’administrador? +votekick.reason = Motiu per a la votació d’expulsió +votekick.reason.message = Esteu segur que voleu votar per a expulsar per votació a «{0}[white]»?\nSi és que sí, escriviu-ne el motiu: joingame.title = Uneix-me a la partida joingame.ip = Direcció IP: disconnect = Desconnectat. @@ -292,7 +303,7 @@ server.invalidport = El número de port no és vàlid! server.error = [scarlet]S’ha produït un error mentre s’allotjava el servidor. save.new = Desa en un fitxer nou save.overwrite = Esteu segur que voleu sobreescriure\naquesta ranura de desades? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = Els fitxers de desades individuals de la campanya no es poden importar. overwrite = Sobreescriu save.none = No s’ha trobat cap partida desada! savefail = No s’ha pogut desar la partida! @@ -330,12 +341,23 @@ open = Obre customize = Personalitza les regles cancel = Cancel·la command = Ordre +command.queue = [lightgray][Queuing] command.mine = Extreu recursos command.repair = Repara command.rebuild = Reconstrueix command.assist = Assisteix al jugador command.move = Mou command.boost = Sobrevola +command.enterPayload = Entra bloc +command.loadUnits = Carrega unitats +command.loadBlocks = Carrega blocs +command.unloadPayload = Descarrega +stance.stop = Cancel·la les ordres +stance.shoot = Comportament: Dispara +stance.holdfire = Comportament: Mantén el foc +stance.pursuetarget = Comportament: Persegueix l’objectiu +stance.patrol = Comportament: Patrulla el camí +stance.ram = Comportament: Senzill\n[lightgray]Mou-te en línia recta, sense encaminador openlink = Obre l’enllaç copylink = Copia l’enllaç back = Enrere @@ -361,7 +383,7 @@ pausebuilding = [accent][[{0}][] per a posar en pausa la construcció. resumebuilding = [scarlet][[{0}][] per a reprendre la construcció. enablebuilding = [scarlet][[{0}][] per a activar l’edifici. showui = La interfície gràfica està amagada.\nPremeu [accent][[{0}][] per a mostrar-la. -commandmode.name = [accent]Command Mode +commandmode.name = [accent]Mode d’Ordres commandmode.nounits = [no units] wave = [accent]Onada {0} wave.cap = [accent]Onada {0}/{1} @@ -382,9 +404,9 @@ custom = Personalitzat builtin = *Integrat* map.delete.confirm = Esteu segur que voleu esborrar aquest mapa? Aquesta acció no es pot desfer! map.random = [accent]Mapa aleatori -map.nospawn = Aquest mapa no té cap nucli per tal que el jugador hi pugui aparèixer! Afegiu-hi un nucli [#{0}]{1}[] amb l’editor. -map.nospawn.pvp = Aquest mapa no té nuclis enemics per tal que hi puguin aparèixer altres jugadors! Afegiu-hi nuclis[scarlet] d’un altre color[] amb l’editor. -map.nospawn.attack = Aquest mapa no té cap nucli enemic que el jugador pugui atacar! Afegiu-hi nuclis [#{0}]{1}[] amb l’editor. +map.nospawn = Aquest mapa no té cap nucli per tal que el jugador hi pugui aparèixer! Afegiu-hi un nucli {0} amb l’editor. +map.nospawn.pvp = Aquest mapa no té nuclis enemics per tal que hi puguin aparèixer altres jugadors! Afegiu-hi nuclis [scarlet]d’un altre color[] amb l’editor. +map.nospawn.attack = Aquest mapa no té cap nucli enemic que el jugador pugui atacar! Afegiu-hi nuclis {0} amb l’editor. map.invalid = S’ha produït un error carregant el mapa: el fitxer està corromput o bé el mapa no és vàlid. workshop.update = Actualitza l’element workshop.error = S’ha produït un error mentre s’obtenien els detalls del Workshop: {0} @@ -416,6 +438,12 @@ editor.waves = Onades editor.rules = Regles editor.generation = Generació editor.objectives = Objectius +editor.locales = Paquet de traduccions +editor.worldprocessors = Processadors integrats +editor.worldprocessors.editname = Edita el nom +editor.worldprocessors.none = [lightgray]No s’han trobat blocs de processadors integrats!\nAfegiu-ne un a l’editor de mapes o feu servir el botó \ue813 de sota. +editor.worldprocessors.nospace = No hi ha espai disponible per a posar un processador integrat!\nPotser el mapa està ple d’estructures. +editor.worldprocessors.delete.confirm = Esteu segur que voleu esborrar aquest processador integrat?\n\nSi està envoltat de murs, es reemplaçarà per un mur mediambiental. editor.ingame = Edita des de la partida editor.playtest = Prova el mapa editor.publish.workshop = Publica al Workshop @@ -458,8 +486,8 @@ waves.sort.reverse = Ordre invers waves.sort.begin = Comença waves.sort.health = Salut waves.sort.type = Tipus -waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.search = Es busquen onades… +waves.filter = Filtre d'unitats waves.units.hide = Amaga-les totes waves.units.show = Mostra-les totes @@ -472,6 +500,8 @@ editor.default = [lightgray] details = Detalls edit = Edita variables = Variables +logic.clear.confirm = Esteu segur que voleu esborrar tot el codi d’aquest processador? +logic.globals = Built-in Variables editor.name = Nom: editor.spawn = Genera una unitat editor.removeunit = Treu una unitat @@ -483,6 +513,7 @@ editor.errorlegacy = Aquest mapa és massa antic i fa servir un format obsolet. editor.errornot = No és un fitxer de mapa. editor.errorheader = Aquest fitxer de mapa no és vàlid o està corromput. editor.errorname = No s’ha definit el nom del mapa. Esteu intentant carregar una partida desada? +editor.errorlocales = S’ha produït un error mentre es llegia un paquet de traduccions no vàlid. editor.update = Actualitza editor.randomize = Assigna a l’atzar editor.moveup = Mou amunt @@ -494,6 +525,7 @@ editor.sectorgenerate = Generació del sector editor.resize = Canvia la mida editor.loadmap = Carrega un mapa editor.savemap = Desa el mapa +editor.savechanges = [scarlet]Teniu canvis sense desar!\n\n[]Voleu desar-los? editor.saved = S’ha desat. editor.save.noname = El mapa no té nom! Trieu-ne un des del menú «Informació del mapa». editor.save.overwrite = El vostre mapa sobreescriu un mapa incorporat al joc! Trieu un nom diferent des del menú «Informació del mapa». @@ -532,6 +564,8 @@ toolmode.eraseores = Esborra els minerals toolmode.eraseores.description = Esborra només els minerals. toolmode.fillteams = Omple els equips toolmode.fillteams.description = Omple els equips en lloc dels blocs. +toolmode.fillerase = Esborra els del mateix tipus +toolmode.fillerase.description = Esborra els blocs que siguin del mateix tipus. toolmode.drawteams = Dibuixa els equips toolmode.drawteams.description = Dibuixa els equips en lloc de dibuixar blocs. #unused @@ -556,6 +590,7 @@ filter.clear = Neteja filter.option.ignore = Ignora filter.scatter = Dispersió filter.terrain = Terreny +filter.logic = Lògica filter.option.scale = Escala filter.option.chance = Probabilitat @@ -579,6 +614,25 @@ filter.option.floor2 = Terra secundari filter.option.threshold2 = Llindar secundari filter.option.radius = Radi filter.option.percentile = Percentil +filter.option.code = Codi +filter.option.loop = Bucle +locales.info = Aquí, podeu afegir paquets de traducció per a idiomes específics al vostre mapa. En els paquets de traducció, cada propietat té un nom i un valor. Aquestes propietats les poden fer servir els processadors integrats i els objectius, fent servir els seus noms. Suporten el format de text (reemplaçant els marcadors de posició amb els seus valors corresponents).\n\n[cyan]Exemple de propietat:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Esteu segur que voleu esborrar aquesta traducció? +locales.applytoall = Aplica els canvis a totes les traduccions +locales.addtoother = Afegeix a les altres traduccions +locales.rollback = Restableix a l’última aplicada +locales.filter = Propietat per al filtre +locales.searchname = Cerca el nom… +locales.searchvalue = Cerca el valor… +locales.searchlocale = Cerca la traducció… +locales.byname = Per nom +locales.byvalue = Per valor +locales.showcorrect = Mostra les propietats que estan en totes les traduccions i tenen valors únics en totes +locales.showmissing = Mostra les propietats que fan falta en algunes traduccions +locales.showsame = Mostra les propietats que tenen els mateixos valors en traduccions diferents +locales.viewproperty = Mostra en totes les traduccions +locales.viewing = Es mostra la propietat «{0}» +locales.addicon = Afegeix una icona width = Amplada: height = Alçada: @@ -629,9 +683,12 @@ objective.destroycore.name = Destrueix el nucli objective.commandmode.name = Mode de comandament objective.flag.name = Bandera marker.shapetext.name = Forma del text -marker.minimap.name = Minimapa +marker.point.name = Punt marker.shape.name = Forma marker.text.name = Text +marker.line.name = Línia +marker.quad.name = Rectangle +marker.texture.name = Textura marker.background = Fons marker.outline = Contorn @@ -658,7 +715,6 @@ resources.max = Màx. bannedblocks = Blocs no permesos objectives = Objectius bannedunits = Unitats no permeses -rules.hidebannedblocks = Amaga els blocs no permesos bannedunits.whitelist = Unitats no permeses com a llista blanca bannedblocks.whitelist = Blocs no permesos com a llista blanca addall = Afegeix-ho tot @@ -681,7 +737,7 @@ error.any = S’ha produït un error de xarxa desconegut. error.bloom = No s’ha pogut inicialitzar l’efecte «bloom».\nPotser el dispositiu no admet aquesta funció. weather.rain.name = Pluja -weather.snow.name = Neu +weather.snowing.name = Neu weather.sandstorm.name = Tempesta de sorra weather.sporestorm.name = Tempesta d’espores weather.fog.name = Boira @@ -717,8 +773,8 @@ sector.curlost = Sector perdut sector.missingresources = [scarlet]Recursos insuficients al nucli sector.attacked = Ataquen el sector [accent]{0}[white]! sector.lost = Heu perdut el sector [accent]{0}[white]! -#note: the missing space in the line below is intentional -sector.captured = S’ha capturat el sector [accent]{0}[white]! +sector.capture = S’ha capturat el sector [accent]{0}[white]! +sector.capture.current = Sector capturat! sector.changeicon = Canvia la icona sector.noswitch.title = Els sectors no es poden canviar. sector.noswitch = Potser no podeu canviar de sector perquè n’ataquen un altre.\n\nSector: [accent]{0}[] de [accent]{1}[] @@ -804,7 +860,7 @@ sector.ravine.description = No es detecten nuclis enemics al sector, tot i que sector.caldera-erekir.description = Els recursos que s’han detectat al sector estan espargits per diverses illes.\nInvestigueu i establiu una xarxa de transport que faci servir drons. sector.stronghold.description = El campament enemic gran d’aquest sector guarda dipòsits importants de [accent]tori[].\nFeu-lo servir per a desenvolupar unitats i torretes de nivells més alts. sector.crevice.description = L’enemic enviarà un atac ferotge per a eliminar la vostra base del sector.\nPer a poder sobreviure, caldrà desenvolupar [accent]carburs[] i [accent]generadors pirolítics[]. -sector.siege.description = En aquest sector hi ha dos canyons paral·lels que forçaran un atac per dues bandes.\nInvestigueu el [accent]cianogen[] per a poder crear unitats d’atac més fortes.\nAtenció: s’han detectat missils de llarg abast. Els missils es poden abatre abans que impactin contra el seu objectiu. +sector.siege.description = En aquest sector hi ha dos canyons paral·lels que forçaran un atac per dues bandes.\nInvestigueu el [accent]cianogen[] per a poder crear unitats d’atac més fortes.\nAtenció: s’han detectat míssils de llarg abast. Els míssils es poden abatre abans que impactin contra el seu objectiu. sector.crossroads.description = Les bases enemigues del sector s’han establert en diferents tipus de terreny. Investigueu unitats diferents per a adaptar els atacs.\nA més a més, algunes bases estan protegides per escuts. Esbrineu d’on treuen l’energia. sector.karst.description = Aquest sector és ric en recursos, però l’enemic l’atacarà tan aviat com hi aterri un nucli.\nAprofiteu els recursos i recerqueu el [accent]teixit de fase[]. sector.origin.description = El sector final amb una presència enemiga important.\nProbablement no queden oportunitats de recerca. Centreu-vos en destruir els nuclis enemics. @@ -929,6 +985,7 @@ stat.abilities = Habilitats stat.canboost = Pot sobrevolar. stat.flying = Està volant. stat.ammouse = Ús de munició +stat.ammocapacity = Capacitat de munició stat.damagemultiplier = Multiplicador de dany stat.healthmultiplier = Multiplicador de salut stat.speedmultiplier = Multiplicador de velocitat @@ -939,14 +996,46 @@ stat.immunities = Immunitats stat.healing = Reparador ability.forcefield = Camp de força +ability.forcefield.description = Projecta un camp de força que absorbeix les bales. ability.repairfield = Repara el camp de força -ability.statusfield = Estat del camp: {0} -ability.unitspawn = Fàbrica de {0} +ability.repairfield.description = Repara les unitats properes. +ability.statusfield = Estat del camp +ability.statusfield.description = Aplica un efecte d’estat a les unitats properes. +ability.unitspawn = Fàbrica +ability.unitspawn.description = Construeix unitats. ability.shieldregenfield = Regenerador de camps de força +ability.shieldregenfield.description = Regenera els escuts d’unitats properes. ability.movelightning = Moviment llampec +ability.movelightning.description = Solta un llamp mentre es mou. +ability.armorplate = Armadura de plaques +ability.armorplate.description = Redueix el dany rebut mentre dispara. ability.shieldarc = Escut de descàrregues -ability.suppressionfield = Regen Suppression Field -ability.energyfield = Camp de força: [accent]{0}[] de dany ~ [accent]{1}[] blocs / [accent]{2}[] objectius +ability.shieldarc.description = Projecta un escut de força en un arc que absorbeix les bales. +ability.suppressionfield = Regenera el camp de supressió +ability.suppressionfield.description = Para els edificis de reparació propers. +ability.energyfield = Camp de força +ability.energyfield.description = Ataca els enemics propers. +ability.energyfield.healdescription = Ataca els enemics propers i cura els aliats. +ability.regen = Regeneració +ability.regen.description = Regenera la seva salut amb el pas del temps. +ability.liquidregen = Absorció de líquids +ability.liquidregen.description = Absorbeix líquids per a curar-se. +ability.spawndeath = Aparicions mortals +ability.spawndeath.description = Allibera unitats quan mor. +ability.liquidexplode = Vessament mortal +ability.liquidexplode.description = Vessa líquid quan mor. +ability.stat.firingrate = [stat]{0}/seg[lightgray] de cadència de tir +ability.stat.regen = [stat]{0}[lightgray] de salut/seg +ability.stat.shield = [stat]{0}[lightgray] d’escut +ability.stat.repairspeed = [stat]{0}/seg[lightgray] de velocitat de reparació +ability.stat.slurpheal = [stat]{0}[lightgray] de salut/unitat de líquid +ability.stat.cooldown = [stat]{0} seg[lightgray] de temps de refredament +ability.stat.maxtargets = [stat]{0}[lightgray] objectius com a màxim +ability.stat.sametypehealmultiplier = [stat]{0} %[lightgray] a la quantitat de reparació del mateix tipus +ability.stat.damagereduction = [stat]{0} %[lightgray] de reducció del dany +ability.stat.minspeed = [stat]{0} caselles/seg[lightgray] de velocitat mín. +ability.stat.duration = [stat]{0} seg[lightgray] de duració +ability.stat.buildtime = [stat]{0} seg[lightgray] de temps de construcció bar.onlycoredeposit = Només es permet depositar al nucli. bar.drilltierreq = Cal una perforadora millor. @@ -986,6 +1075,7 @@ bullet.splashdamage = [stat]{0}[lightgray] de dany a l’àrea ~[stat] {1}[light bullet.incendiary = [stat]incendiari bullet.homing = [stat]munició guiada bullet.armorpierce = [stat]perforador d’armadures +bullet.maxdamagefraction = [stat]{0}%[lightgray] de dany límit bullet.suppression = [stat]Supressió de reparacions cada {0} s[lightgray] ~ [stat]{1}[lightgray] caselles bullet.interval = [stat]Interval de bales de {0}/s[lightgray]: bullet.frags = [stat]{0}[lightgray]× de bales de fragmentació: @@ -1021,6 +1111,7 @@ unit.items = elements unit.thousands = k unit.millions = M unit.billions = kM +unit.shots = dispars unit.pershot = /dispar category.purpose = Funció category.general = General @@ -1041,6 +1132,7 @@ setting.backgroundpause.name = Pausa automàtica quan s’estigui en segon pla setting.buildautopause.name = Pausa automàtica quan es construeixi setting.doubletapmine.name = Dos tocs/clics per a extreure recursos setting.commandmodehold.name = Mantén per al mode de comandament +setting.distinctcontrolgroups.name = Limita a un grup de control per unitat setting.modcrashdisable.name = Desactiva els mods quan no es pugui iniciar el joc setting.animatedwater.name = Animacions del terreny setting.animatedshields.name = Animacions dels escuts @@ -1087,13 +1179,14 @@ setting.position.name = Mostra la posició del jugador setting.mouseposition.name = Mostra la posició del ratolí setting.musicvol.name = Volum de la música setting.atmosphere.name = Mostra l’atmosfera del planeta +setting.drawlight.name = Dibuixa la foscor/llum setting.ambientvol.name = Volum del so ambiental setting.mutemusic.name = Silencia la música setting.sfxvol.name = Volums dels efectes de so setting.mutesound.name = Silencia el so setting.crashreport.name = Envia informes d’error anònims setting.savecreate.name = Desa automàticament la partida -setting.publichost.name = Visibilitat de la partida pública +setting.steampublichost.name = Visibilitat de la partida pública setting.playerlimit.name = Límit de jugadors setting.chatopacity.name = Opacitat del xat setting.lasersopacity.name = Opacitat dels làsers d’energia @@ -1101,6 +1194,8 @@ setting.bridgeopacity.name = Opacitat de cintes i canonades subterrànies setting.playerchat.name = Mostra el xat bombolla de jugadors setting.showweather.name = Mostra l’estat meteorològic setting.hidedisplays.name = Amaga els monitors lògics +setting.macnotch.name = Adapta la interfície per a mostrar el notch +setting.macnotch.description = Cal reiniciar perquè s’apliquin els canvis steam.friendsonly = Només amics steam.friendsonly.tooltip = Indica si només els amics de Steam podran unir-se a la vostra partida.\nSi no es selecciona aquesta opció, la vostra partida serà pública i s’hi podrà unir qualsevol jugador. public.beta = Tingueu en compte que les versions beta no disposen de sales d’espera. @@ -1111,6 +1206,7 @@ keybind.title = Personalització dels controls keybinds.mobile = [scarlet]La majoria de dreceres no estan disponibles en les versions per a pantalles tàctils. Només està inclòs el moviment bàsic. category.general.name = General category.view.name = Control de la vista i altres +category.command.name = Ordre d’unitat category.multiplayer.name = Multijugador category.blocks.name = Selecció d’estructures per construir placement.blockselectkeys = \n[lightgray]Tecles: [{0}, @@ -1128,6 +1224,24 @@ keybind.mouse_move.name = Segueix el ratolí keybind.pan.name = Desplaça la vista keybind.boost.name = Sobrevola keybind.command_mode.name = Mode de comandament +keybind.command_queue.name = Cua d’ordres d’unitat +keybind.create_control_group.name = Crea un grup de control +keybind.cancel_orders.name = Cancel·la les ordres +keybind.unit_stance_shoot.name = Comportament: Dispara +keybind.unit_stance_hold_fire.name = Comportament: Mantén el foc +keybind.unit_stance_pursue_target.name = Comportament: Persegueix l’objectiu +keybind.unit_stance_patrol.name = Comportament: Patrulla +keybind.unit_stance_ram.name = Comportament: Senzill +keybind.unit_command_move.name = Ordre d’unitat: Mou +keybind.unit_command_repair.name = Ordre d’unitat: Repara +keybind.unit_command_rebuild.name = Ordre d’unitat: Reconstrueix +keybind.unit_command_assist.name = Ordre d’unitat: Assisteix +keybind.unit_command_mine.name = Ordre d’unitat: Extrau +keybind.unit_command_boost.name = Ordre d’unitat: Sobrevola +keybind.unit_command_load_units.name = Ordre d’unitat: Carrega unitats +keybind.unit_command_load_blocks.name = Ordre d’unitat: Carrega blocs +keybind.unit_command_unload_payload.name = Ordre d’unitat: Descarrega blocs +keybind.unit_command_enter_payload.name = Ordre d’unitat: Entra blocs keybind.rebuild_select.name = Reconstrueix la regió keybind.schematic_select.name = Selecciona una regió keybind.schematic_menu.name = Menú de plànols @@ -1191,17 +1305,25 @@ mode.pvp.description = Lluiteu contra altres jugadors localment.\n[gray]Cal que mode.attack.name = Atac mode.attack.description = Destruïu la base enemiga. \n[gray]Cal que al mapa hi hagi un nucli vermell. mode.custom = Regles personalitzades +rules.invaliddata = Dades del porta-retalls no vàlides. +rules.hidebannedblocks = Amaga els blocs no permesos rules.infiniteresources = Recursos infinits rules.onlydepositcore = Al nucli només es poden dipositar recursos +rules.derelictrepair = Permet la reparació dels blocs en ruïnes rules.reactorexplosions = Explosions als reactors rules.coreincinerates = El nucli incinera els excedents rules.disableworldprocessors = Desactiva els processadors integrats rules.schematic = Permetre l’ús d’esquemes rules.wavetimer = Temporitzador d’onades rules.wavesending = Enviament d’onades +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Onades +rules.airUseSpawns = Air units use spawn points rules.attack = Mode d’atac +rules.buildai = IA constructora de bases +rules.buildaitier = Nivell de construcció de la IA rules.rtsai = IA avançada (RTS AI) rules.rtsminsquadsize = Mida mínima de l’esquadró rules.rtsmaxsquadsize = Mida màxima de l’esquadró @@ -1220,6 +1342,7 @@ rules.unitdamagemultiplier = Multiplicador del dany de les unitats rules.unitcrashdamagemultiplier = Multiplicador del dany de xoc de les unitats rules.solarmultiplier = Multiplicador de l’energia solar rules.unitcapvariable = Els nuclis contribueixen al límit d’unitats +rules.unitpayloadsexplode = Els blocs carregats exploten juntament amb la unitat rules.unitcap = Capacitat base d’unitats rules.limitarea = Limita l’àrea del mapa rules.enemycorebuildradius = Radi de no construcció del nucli enemic:[lightgray] (caselles) @@ -1229,7 +1352,7 @@ rules.buildcostmultiplier = Multiplicador del cost de construcció rules.buildspeedmultiplier = Multiplicador de la velocitat de construcció rules.deconstructrefundmultiplier = Multiplicador dels elements recuperats per desmuntatge rules.waitForWaveToEnd = Les onades esperen fins veure enemics -rules.wavelimit = Map Ends After Wave +rules.wavelimit = El mapa acaba després de l’onada rules.dropzoneradius = Radi de la zona d’aterratge:[lightgray] (caselles) rules.unitammo = Les unitats necessiten munició rules.enemyteam = Equip enemic @@ -1252,6 +1375,8 @@ rules.weather = Estat meteorològic rules.weather.frequency = Freqüència: rules.weather.always = Sempre rules.weather.duration = Durada: +rules.placerangecheck.info = No es permet que els jugadors puguin posar res a prop dels edificis enemics. Quan s’intenta posar una torreta, l’abast augmenta i la torreta no podrà arribar a l’enemic. +rules.onlydepositcore.info = No es permet que les unitats deixin elements a dins dels edificis excepte els nuclis. content.item.name = Elements content.liquid.name = Fluids @@ -1473,6 +1598,7 @@ block.inverted-sorter.name = Classificador invers block.message.name = Missatge block.reinforced-message.name = Missatge destacat block.world-message.name = Missatge mundial +block.world-switch.name = Interruptor mundial block.illuminator.name = Il·luminador block.overflow-gate.name = Porta de desbordament block.underflow-gate.name = Porta de subdesbordament @@ -1715,7 +1841,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricadora block.tank-refabricator.name = Milloradora de tancs block.mech-refabricator.name = Milloradora de meques block.ship-refabricator.name = Milloradora de naus @@ -1738,7 +1863,7 @@ block.diffuse.name = Diffuse block.basic-assembler-module.name = Mòdul de muntatge bàsic block.smite.name = Smite block.malign.name = Maligne -block.flux-reactor.name = Reactor de fluxe +block.flux-reactor.name = Reactor de flux block.neoplasia-reactor.name = Reactor de neoplàsia block.switch.name = Interruptor @@ -1779,7 +1904,7 @@ hint.launch = Un cop s’han recollit prou recursos, podeu iniciar un llançamen hint.launch.mobile = Un cop s’han recollit prou recursos, podeu iniciar un llançament seleccionant un sector proper del \ue827 [accent]Mapa[] del \ue88c [accent]Menú[]. hint.schematicSelect = Manteniu premuda la tecla [accent]F[] i arrossegueu per a seleccionar els blocs que vulgueu copiar i enganxar.\n\nFeu clic amb el [accent]botó del mig[] del ratolí per a copiar només un tipus de bloc. hint.rebuildSelect = Manteniu premuda la tecla [accent][[B][] i arrossegueu per a seleccionar els plànols dels blocs destruïts.\nAixí, es podran reconstruir automàticament. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect.mobile = Seleccioneu el botó de copiar \ue874. Després, toqueu el botó de reconstrucció \ue80f i arrossegueu per a triar quins blocs voleu que es reconstrueixin.\nAixò farà que es reconstrueixin de manera automàtica. hint.conveyorPathfind = Manteniu premuda la tecla [accent]ControlEsquerra[] i arrossegueu les cintes per a generar un camí automàticament. hint.conveyorPathfind.mobile = Activeu el \ue844 [accent]mode diagonal[] i arrossegueu les cintes per a generar un camí automàticament. hint.boost = Manteniu premuda la tecla [accent]ControlEsquerra[] per a sobrevolar els obstacles amb la unitat actual.\n\nNomés algunes unitats terrestres tenen elevadors per a poder-ho fer. @@ -1834,13 +1959,17 @@ onset.turrets = Les unitats són efectives, però les [accent]torretes[] proporc onset.turretammo = Subministreu [accent]munició de beril·li[] a la torreta. onset.walls = Els [accent]murs[] poden evitar que el dany arribi a les estructures importants.\nConstruïu alguns \uf6ee [accent]murs de beril·li[] al voltant de la torreta. onset.enemies = S’apropa un enemic. Prepareu la defensa. +onset.defenses = [accent]Establiu defenses:[lightgray] {0} onset.attack = L’enemic és vulnerable. Contraataqueu. onset.cores = Els nuclis nous es poden construir en [accent]caselles de nucli[].\nEls nuclis nous funcionen com a bases i comparteixen un inventari de recursos amb altres nuclis.\nConstruïu un \uf725 nucli. onset.detect = L’enemic us detectarà d’aquí 2 minuts.\nEstabliu les defenses i les explotacions mineres i de producció. +onset.commandmode = Mantingueu premuda [accent]Maj.[] per a entrar al [accent]mode de comandament[].\n[accent]Feu clic amb el botó esquerre i arrossegueu[] per a seleccionar unitats.\n[accent]Feu clic amb el botó dret[] per a ordenar a les unitats seleccionades que ataquin o que es moguin. +onset.commandmode.mobile = Premeu el [accent]botó de comandament[] per a entrar al [accent]mode de comandament[].\nPremeu i [accent]arrossegueu[] per a seleccionar unitats.\n[accent]Toqueu[] per a ordenar a les unitats seleccionades que ataquin o que es moguin. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = La unitat nucli pot recollir alguns blocs.\nRecolliu aquest [accent]contenidor[] i poseu-lo al [accent]transportador de blocs a distància[].\n(Les tecles per defecte són [ i ] per a recollir i deixar). split.pickup.mobile = La unitat nucli pot recollir alguns blocs.\nRecolliu aquest [accent]contenidor[] i poseu-lo al [accent]transportador de blocs a distància[].\n(Per a deixar o recollir alguna cosa, premeu-la uns segons). split.acquire = Heu d’aconseguir una mica de tungstè per a construir unitats. -split.build = Les unitats s’han de transportar a l’altra banda del mur.\nConstruïu dos [accent]transportadors de blocs a distància[], un a cada banda del mur.\nPer establir-hi un enllaç, seleccioneu-ne un i després seleecionant l’altre. +split.build = Les unitats s’han de transportar a l’altra banda del mur.\nConstruïu dos [accent]transportadors de blocs a distància[], un a cada banda del mur.\nPer establir-hi un enllaç, seleccioneu-ne un i després seleccionant l’altre. split.container = Igual que els contenidors, les unitats també es poden transportar amb els [accent]transportadors de blocs a distància[].\nConstruïu una fabricadora d’unitats al costat d’un transportadors de blocs a distància per a carregar-les i enviar-les més enllà del mur per a atacar la base enemiga. item.copper.description = S’empra en molts tipus de construccions i munició. @@ -1864,10 +1993,10 @@ item.spore-pod.description = Es pot convertir en petroli, explosius i combustibl item.spore-pod.details = Espores. Probablement, es tracta d’una forma de vida sintètica. Emet gasos tòxics per a altres formes de vida i és molt invasiva. Sota certes condicions, són molt inflamables. item.blast-compound.description = S’empra en bombes i munició explosiva. item.pyratite.description = S’empra en armes incendiàries i generadors a combustió. -item.beryllium.description = S’empra en molts tipus de construccions i municó d’Erekir. +item.beryllium.description = S’empra en molts tipus de construccions i munició d’Erekir. item.tungsten.description = S’empra en perforadores, armadures i munició. Se’n necessita per construir estructures més avançades. item.oxide.description = S’empra com a conductor de l’energia tèrmica i també es fa servir com a aïllant elèctric. -item.carbide.description = Es fa servir en estrutures avançades, unitats pesants i munició. +item.carbide.description = Es fa servir en estructures avançades, unitats pesants i munició. liquid.water.description = S’empra per a refredar màquines i processar residus. liquid.slag.description = Es refina en separadors per a obtenir-ne diferents metalls. També es fa servir com a munició líquida en torretes. @@ -1878,7 +2007,7 @@ liquid.ozone.description = Es fa servir com a agent oxidant en producció de mat liquid.hydrogen.description = Es fa servir en extracció de recursos, producció d’unitats i reparació d’estructures. Inflamable. liquid.cyanogen.description = Es fa servir per a munició, construcció d’unitats avançades i diverses reaccions en blocs avançats. Molt inflamable. liquid.nitrogen.description = Es fa servir per a extraure recursos, obtenció de gas i producció d’unitats. Inert. -liquid.neoplasm.description = Un subproducte biològic perillís del reactor de neoplàsia. S’estén de pressa a altres blocs adjacents que continguin aigua que toca, fent-los malbé. Viscós. +liquid.neoplasm.description = Un subproducte biològic perillós del reactor de neoplàsia. S’estén de pressa a altres blocs adjacents que continguin aigua que toca, fent-los malbé. Viscós. liquid.neoplasm.details = Neoplasma. Una massa incontrolable de cèl·lules sintètiques que es divideixen molt de pressa amb una consistència fangosa. Resisteix temperatures altes. Extremadament perillosa per a estructures amb aigua.\n\nMassa complexa i inestable per a fer-ne una anàlisi estàndard. Aplicacions potencials desconegudes. Es recomana incinerar-la en piscines de residus. block.derelict = \uf77e [lightgray]En ruïnes @@ -2031,7 +2160,6 @@ block.logic-display.description = Mostra un gràfic des d’un processador lògi block.large-logic-display.description = Mostra un gràfic des d’un processador lògic. block.interplanetary-accelerator.description = Una torreta amb un canó electromagnètic enorme. Accelera els nuclis fins aconseguir la velocitat d’escapament per a fer llançaments interplanetaris. block.repair-turret.description = Repara contínuament la unitat danyada que tingui més a prop al seu voltant. També se li pot subministrar refrigerant perquè funcioni més ràpid. -block.payload-propulsion-tower.description = Estructura de transport de recursos a distància. Dispara paquets de càrrega a altres torres de transport a distància enllaçades. block.core-bastion.description = Nucli de la base. Blindat. Quan es destrueix, es perd el sector. block.core-citadel.description = Nucli de la base. Molt ben blindat. Emmagatzema més recursos que un nucli Bastió. block.core-acropolis.description = Nucli de la base. Excepcionalment ben blindat. Emmagatzema més recursos que un nucli Ciutadella. @@ -2067,7 +2195,6 @@ block.impact-drill.description = Quan es posa a sobre de minerals, n’extrau in block.eruption-drill.description = Una perforadora d’impacte millorada. Pot extraure tori. Necessita hidrogen. block.reinforced-conduit.description = Impulsa i fa circular els fluids. No accepta entrades des dels laterals si no és a través de conductes. block.reinforced-liquid-router.description = Distribueix fluids a tots els seus costats. -block.reinforced-junction.description = Actua com a dues canonades independents que es creuen. block.reinforced-liquid-tank.description = Emmagatzema una gran quantitat de fluid. block.reinforced-liquid-container.description = Emmagatzema fluids. block.reinforced-bridge-conduit.description = Transporta fluids per sota de les estructures i del terreny. @@ -2171,14 +2298,14 @@ unit.vanquish.description = Dispara munició de gran calibre perforadora i de di unit.conquer.description = Dispara ràfegues llargues de bales als objectius enemics. unit.merui.description = Dispara artilleria de llarg abast als objectius enemics. Pot travessar la majoria de terrenys. unit.cleroi.description = Dispara parelles de projectils als objectius enemics. Busca projectils enemics amb torretes de punt de defensa. Pot travessar la majoria de terrenys. -unit.anthicus.description = Dispara missils dirigits de llarg abast als objectius enemics. Pot travessar la majoria de terrenys. -unit.tecta.description = Dispara missils de plasma dirigits als objectius enemics. Es protegeix a si mateix amb un escut direccional. Pot travessar la majoria de terrenys. +unit.anthicus.description = Dispara míssils dirigits de llarg abast als objectius enemics. Pot travessar la majoria de terrenys. +unit.tecta.description = Dispara míssils de plasma dirigits als objectius enemics. Es protegeix a si mateix amb un escut direccional. Pot travessar la majoria de terrenys. unit.collaris.description = Dispara artilleria de fragmentació de llarg abast als objectius enemics. Pot travessar la majoria de terrenys. unit.elude.description = Dispara parelles de bales dirigides als objectius enemics. Pot volar sobre les masses de líquid. unit.avert.description = Dispara parelles de bales que torcen la trajectòria als objectius enemics. unit.obviate.description = Dispara parelles de boles elèctriques als objectius enemics. -unit.quell.description = Dispara missils de llarg abast dirigits als objectius enemics. Evita la reparació de les estructures enemigues per part dels blocs de reparació. -unit.disrupt.description = Dispara missils de llarg abast dirigits i supressors als objecius enemics. Evita la reparació de les estructures enemigues per part dels blocs de reparació. +unit.quell.description = Dispara míssils de llarg abast dirigits als objectius enemics. Evita la reparació de les estructures enemigues per part dels blocs de reparació. +unit.disrupt.description = Dispara míssils de llarg abast dirigits i supressors als objectius enemics. Evita la reparació de les estructures enemigues per part dels blocs de reparació. unit.evoke.description = Construeix estructures per defensar el nucli Bastió. Repara les estructures amb un raig. unit.incite.description = Construeix estructures per defensar el nucli Ciutadella. Repara les estructures amb un raig. unit.emanate.description = Construeix estructures per defensar el nucli Acròpolis. Repara les estructures amb un raig. @@ -2186,6 +2313,7 @@ unit.emanate.description = Construeix estructures per defensar el nucli Acròpol lst.read = Llegeix un nombre des d’una cel·la de memòria connectada. lst.write = Escriu un nombre en una cel·la de memòria connectada. lst.print = Afegeix un text a la cua d’impressió.\nEl text no es mostrarà fins que s’apliqui «[accent]Print Flush[]». +lst.format = Reemplaça el següent marcador de posició a la cua d’impressió amb un valor.\nNo fa res si el patró del marcador no és vàlid.\nPatró del marcador: "{[accent]número 0-9[]}"\nExemple:\n[accent]print "test {0}"\nformat "example" lst.draw = Afegeix una instrucció de dibuix a la cua corresponent.\nEl resultat no es mostrarà fins que s’apliqui «[accent]Draw Flush[]». lst.drawflush = Executa les operacions de la cua de dibuix al monitor lògic. lst.printflush = Executa les operacions de la cua d’impressió al monitor lògic. @@ -2208,6 +2336,8 @@ lst.getblock = Obtén les dades d’un bloc en qualsevol posició. lst.setblock = Estableix les dades d’un bloc en qualsevol posició. lst.spawnunit = Fes aparèixer una unitat en una posició. lst.applystatus = Aplica o esborra un efecte d’estat d’una unitat. +lst.weathersense = Comprova si un tipus de temps meteorològics està actiu. +lst.weatherset = Estableix l’estat actual per a un tipus de temps meteorològic. lst.spawnwave = Simula l’aparició d’una onada enemiga en una posició arbitrària.\nEl comptador d’onades no s’incrementarà. lst.explosion = Crea una explosió en una posició. lst.setrate = Estableix la velocitat d’execució del processador en instruccions/tic. @@ -2219,6 +2349,47 @@ lst.cutscene = Manipula la càmera del jugador. lst.setflag = Estableix un senyal global que es podrà llegir en tots els processadors. lst.getflag = Obtén un senyal global. lst.setprop = Estableix una propietat d’una unitat o estructura. +lst.effect = Crea un efecte de partícula. +lst.sync = Sincronitza una variable a través de la xarxa.\nS’invoca com a molt 10 vegades per segon. +lst.makemarker = Crea una marca lògica al món.\nS’ha de donar un ID per a identificar-la.\nEs poden establir fins a 20.000 marcadors per món. +lst.setmarker = Estableix una propietat per a la marca.\nL’ID que es faci servir ha de ser el mateix que el de la instrucció de crear la marca. +lst.localeprint = Afegeix el valor d’una propietat de la traducció d’un mapa a la cua d’impressió.\nPer a establir paquets de traducció de mapes a l’editor de mapes, comproveu [accent]Informació del mapa > Paquets de traducció[].\nSi el client és un dispositiu mòbil, primer intenta imprimir una propietat que acabi en «.mobile». +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = La constant matemàtica pi (3.141…) +lglobal.@e = La constant matemàtica e (2.718…) +lglobal.@degToRad = Multiplica per aquest nombre per a convertir graus sexagesimals en radians. +lglobal.@radToDeg = Multiplica per aquest nombre per a convertir radians en graus sexagesimals. +lglobal.@time = Temps de joc de la partida actual, en mil·lisegons +lglobal.@tick = Temps de joc de la partida actual, en tics (1 segon = 60 tics) +lglobal.@second = Temps de joc de la partida actual, en segons +lglobal.@minute = Temps de joc de la partida actual, en minuts +lglobal.@waveNumber = Nombre de l’onada actual, si les onades estan activades +lglobal.@waveTime = Comptador enrere de les onades, en segons +lglobal.@mapw = Amplada del mapa en caselles +lglobal.@maph = Alçària del mapa en caselles +lglobal.sectionMap = Mapa +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Xarxa/Client [Només processador integrat] +lglobal.sectionProcessor = Processador +lglobal.sectionLookup = Lookup +lglobal.@this = El bloc lògic que executa el codi +lglobal.@thisx = Coordenada X del bloc que executa el codi +lglobal.@thisy = Coordenada Y del bloc que executa el codi +lglobal.@links = Quantitat total de blocs enllaçats amb aquest processador +lglobal.@ipt = Velocitat d’execució del processador en instruccions per tic (60 tics = 1 segon) +lglobal.@unitCount = Nombre total de tipus de continguts d’unitat a la partida; es fa servir amb la instrucció lookup. +lglobal.@blockCount = Nombre total de tipus de continguts de bloc a la partida; es fa servir amb la instrucció lookup. +lglobal.@itemCount = Nombre total de tipus de continguts d’element a la partida; es fa servir amb la instrucció lookup. +lglobal.@liquidCount = Nombre total de tipus de continguts de líquid a la partida; es fa servir amb la instrucció lookup. +lglobal.@server = Cert si el codi s’executa en un servidor o en mode d’un sol jugador; fals altrament. +lglobal.@client = Cert si el codi s’executa en un client connectat a un servidor. +lglobal.@clientLocale = Traducció del client que executa el codi. Per exemple: en_US +lglobal.@clientUnit = Unitat del client que executa el codi +lglobal.@clientName = Nom del jugador del client que executa el codi +lglobal.@clientTeam = Identificador de l’equip que executa el codi +lglobal.@clientMobile = Cert si el client que executa el codi és un dispositiu mòbil; fals altrament. logic.nounitbuild = [red]Aquí no es permet construir blocs de tipus lògic. @@ -2234,6 +2405,7 @@ laccess.dead = Retorna si una unitat o bloc està destruïda o si ja no és vàl laccess.controlled = Returna:\n[accent]@ctrlProcessor[] si el controlador de la unitat és un processador;\n[accent]@ctrlPlayer[] si el controlador de la unitat és un jugador;\n[accent]@ctrlCommand[] si el controlador és un comandament del jugador;\naltrament, és 0. laccess.progress = Progrés de l’acció, entre 0 i 1.\nRetorna la producció, la recàrrega de la torreta o el progrés de la construcció. laccess.speed = Velocitat màxima de la unitat, en caselles/s. +laccess.id = Identificador d’unitat/bloc/element/líquid.\nÉs l’invers de l’operació lookup. lcategory.unknown = Desconegut lcategory.unknown.description = Instruccions sense categoria. lcategory.io = Entrada i sortida @@ -2260,6 +2432,7 @@ graphicstype.poly = Omple un polígon regular. graphicstype.linepoly = Dibuixa els costats d’un polígon regular. graphicstype.triangle = Omple un triangle. graphicstype.image = Dibuixa una imatge d’algun element del joc.\nPer exemple: [accent]@router[] o [accent]@dagger[]. +graphicstype.print = Dibuixa el text de la cua d’impressió.\nEsborra la cua d’impressió. lenum.always = Sempre cert. lenum.idiv = Divisió entera. @@ -2279,6 +2452,7 @@ lenum.xor = Operació lògica XOR bit a bit. lenum.min = Mínim de dos nombres. lenum.max = Màxim de dos nombres. lenum.angle = Angle del vector en graus. +lenum.anglediff = Distància absoluta entre dos angles en graus. lenum.len = Llargada (mòdul) del vector. lenum.sin = Sinus de l’angle (en graus). @@ -2353,6 +2527,7 @@ lenum.unbind = Desactiva del tot el control lògic.\nContinua amb la IA estànda lenum.move = Mou a una posició exacta. lenum.approach = Aproxima a una zona determinada amb una posició i un radi. lenum.pathfind = Troba un camí i segueix una ruta fins al punt d’aparició d’enemics. +lenum.autopathfind = Busca un camí automàticament fins al nucli enemic més proper o punt d’aterratge.\nÉs el mateix que el camí d'una onada enemiga estàndard. lenum.target = Dispara a una posició. lenum.targetp = Dispara a un objectiu tenint en compte la seva velocitat a l’hora d’apuntar. lenum.itemdrop = Deixa un element. @@ -2363,8 +2538,13 @@ lenum.payenter = Entra o apareix al bloc on es troba la unitat. lenum.flag = Identificador numèric de la unitat. lenum.mine = Extreu recursos en una posició. lenum.build = Construeix una estructura. -lenum.getblock = Obté un bloc i el seu tipus a les coordenades indicades.\nLa posició escollida ha d’estar a l’abast de la unitat.\nEls blocs que no són construccions tindran el tipus [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Comprova si la unitat està a prop d’una posició. lenum.boost = Inicia/Detén el vol. -onset.commandmode = Mantingueu premuda [accent]Maj.[] per a entrar al [accent]mode de comandament[].\n[accent]Feu clic amb el botó esquerre i arrossegueu[] per a seleccionar unitats.\n[accent]Feu clic amb el botó dret[] per a ordenar a les unitats seleccionades que ataquin o que es moguin. -onset.commandmode.mobile = Premeu el [accent]botó de comandament[] per a entrar al [accent]mode de comandament[].\nPremeu i [accent]arrossegueu[] per a seleccionar unitats.\n[accent]Toqueu[] per a ordenar a les unitats seleccionades que ataquin o que es moguin. +lenum.flushtext = Passa el contingut de la cua d’impressió al marcador, si es pot.\nSi s’estableix «fetch» a vertader, s’intentarà carregar les propietats de la traducció del mapa o del joc. +lenum.texture = Nom de la textura directa de l’atles de textures del joc (amb l’estil de noms kebab-case).\nSi «printFlush» s’estableix a vertader, consumeix el contingut de la cua d’impressió com a argument de text. +lenum.texturesize = Mida de la textura a les caselles. Un valor de zero indica que s’ha d'escalar l’amplada del marcador a la mida original de la textura. +lenum.autoscale = Indica si cal escalar el marcador segons el nivell de zoom del jugador. +lenum.posi = Posició indexada que es fa servir per a marcadors de línia i de rectangles on l’índex zero és la primera posició. +lenum.uvi = Posició de la textura que va de zero a u i que es fa servir per a marcadors de tipus rectangle. +lenum.colori = Posició indexada que es fa servir per a marcadors de línies i rectangles on l’índex zero és el primer color. diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index d46ecbc12b..80f53b1eee 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -7,14 +7,14 @@ link.reddit.description = Mindustry na Redditu link.github.description = Zdrojový kód hry link.changelog.description = Seznam úprav link.dev-builds.description = Nestabilní vývojová verze hry -link.trello.description = Oficiální Trello nástěnka s plánovanými novinkami +link.trello.description = Oficiální Trello nástěnka s plánovanými novinkami link.itch.io.description = Stránka na itch.io s odkazy na stažení hry link.google-play.description = Obchod Google Play link.f-droid.description = F-Droid link.wiki.description = Oficiální Wiki Mindustry -link.suggestions.description = Suggest new features +link.suggestions.description = Doporučit nové funkce link.bug.description = Našel jsi nějaký? Nahlaš ho zde -linkopen = This server has sent you a link. Are you sure you want to open it?\n\n[sky]{0} +linkopen = Tento server vám poslal odkaz. Jste si jist s jeho otevřením?\n\n[sky]{0} linkfail = Nepodařilo se otevřít odkaz!\nAdresa URL byla zkopírována do schránky. screenshot = Snímek obrazovky uložen {0} screenshot.invalid = Mapa je moc velká, nemusí být dost paměti pro získání snímku obrazovky. @@ -45,18 +45,19 @@ mods.browser = Prohlížeč modifikací mods.browser.selected = Vybraný mod mods.browser.add = Stáhnout mods.browser.reinstall = Reinstalovat -mods.browser.view-releases = View Releases -mods.browser.noreleases = [scarlet]No Releases Found\n[accent]Couldn't find any releases for this mod. Check if the mod's repository has any releases published. -mods.browser.latest = -mods.browser.releases = Releases +mods.browser.view-releases = Zobrazit Vydání +mods.browser.noreleases = [scarlet]Žádné Vydání Nenalezeny\n[accent]Nenalezene žádné vydání pro tento mod. Check if the mod's repository has any releases published. Zjistěte, jestli repozitář modu má již veřejně vydán. +mods.browser.latest = +mods.browser.releases = Vydání mods.github.open = Úložiště -mods.github.open-release = Release Page +mods.github.open-release = Stranka Vydání mods.browser.sortdate = Řadit podle nedavných mods.browser.sortstars = Řadit podle hvězd schematic = Šablona schematic.add = Uložit šablonu... schematics = Šablony +schematic.search = Search schematics... schematic.replace = Šablona s tímto názvem již existuje. Chceš ji nahradit? schematic.exists = Šablona s tímto názvem již existuje. schematic.import = Importuji šablonu... @@ -69,7 +70,7 @@ schematic.shareworkshop = Sdílet skrze Workshop na Steamu schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Převrátit šablonu schematic.saved = Šablona byla uložena. schematic.delete.confirm = Šablona bude kompletně vyhlazena. -schematic.rename = Přejmenovat šablonu +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} bloků schematic.disabled = [scarlet]Šablony jsou zakázány[]\nNa této [accent]mapě[] nebo [accent]serveru[] nemůžeš používat šablony. schematic.tags = Značky: @@ -78,17 +79,18 @@ schematic.addtag = Přidat Značku schematic.texttag = Textová Značka schematic.icontag = Ikonová Značka schematic.renametag = Přejmenovat Značku +schematic.tagged = {0} tagged schematic.tagdelconfirm = Smazat tuto značku? schematic.tagexists = Tato značka již existuje. stats = Statistiky -stats.wave = Waves Defeated -stats.unitsCreated = Units Created -stats.enemiesDestroyed = Enemies Destroyed -stats.built = Buildings Built -stats.destroyed = Buildings Destroyed -stats.deconstructed = Buildings Deconstructed -stats.playtime = Time Played +stats.wave = Poraženo Vln +stats.unitsCreated = Jednotek Vytvořeno +stats.enemiesDestroyed = Nepřátel Zničeno +stats.built = Budov Postaveno +stats.destroyed = Budov Zničeno +stats.deconstructed = Budov Zdekonstruovano +stats.playtime = Doba Hraní globalitems = [accent]Celkové položky[] map.delete = Jsi si jistý, že chceš smazat mapu "[accent]{0}[]"? @@ -144,19 +146,19 @@ mod.multiplayer.compatible = [gray]Hra více hráčů komapitibilní mod.disable = Zakázat mod.content = Obsah: mod.delete.error = Nebylo možnost smazat modifikaci. Soubor může být používán. -mod.incompatiblegame = [red]Outdated Game -mod.incompatiblemod = [red]Incompatible -mod.blacklisted = [red]Unsupported -mod.unmetdependencies = [red]Unmet Dependencies +mod.incompatiblegame = [red]Zastaralá Hra +mod.incompatiblemod = [red]Nekompatibilní +mod.blacklisted = [red]Nepodporováno +mod.unmetdependencies = [red]Nesplněné Dependencies mod.erroredcontent = [scarlet]V obsahu jsou chyby[] -mod.circulardependencies = [red]Circular Dependencies -mod.incompletedependencies = [red]Incomplete Dependencies -mod.requiresversion.details = Requires game version: [accent]{0}[]\nYour game is outdated. This mod requires a newer version of the game (possibly a beta/alpha release) to function. -mod.outdatedv7.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 136[] to its [accent]mod.json[] file. -mod.blacklisted.details = This mod has been manually blacklisted for causing crashes or other issues with this version of the game. Do not use it. -mod.missingdependencies.details = This mod is missing dependencies: {0} -mod.erroredcontent.details = This game caused errors when loading. Ask the mod author to fix them. -mod.circulardependencies.details = This mod has dependencies that depends on each other. +mod.circulardependencies = [red]Kruhové Dependencies +mod.incompletedependencies = [red]Nedokončené Dependencies +mod.requiresversion.details = Vyžaduje verzi hry: [accent]{0}[]\nVaše hra je zastaralá. Tento mod vyžaduje novější verzi hry (možná beta/alfa verze) aby fungoval. +mod.outdatedv7.details = Tento mod není kompatibilní s nejnovější verzí hry. Autor ho musí aktualizovat a přidat [accent]minGameVersion: 136[] ho do [accent]mod.json[] složky. +mod.blacklisted.details = Tento mod byl ručně zařazen na černou listinu, protože způsobuje pády nebo jiné problémy s touto verzí hry. Nepoužívejte jej. +mod.missingdependencies.details = Tomuto módu chybí závislosti: {0} +mod.erroredcontent.details = Tato hra způsobovala chyby při načítání. Požádejte autora módu o jejich opravu. +mod.circulardependencies.details = Tento mod má závislosti, které na sobě navzájem závisí. mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}. mod.requiresversion = Requires game version: [red]{0} mod.errors = Při načítání obsahu hry se vyskytly problémy. @@ -187,13 +189,13 @@ filename = Název souboru: unlocked = Byl odemmknut nový blok! available = Je zpřístupněn nový výzkum! unlock.incampaign = < Odemkni v kampani pro více detailů > -campaign.select = Select Starting Campaign +campaign.select = Vybrat Začínající Kampaň campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. completed = [accent]Dokončeno[] techtree = Technologie -techtree.select = Tech Tree Selection +techtree.select = Výběr Výzkumného Stromu techtree.serpulo = Serpulo techtree.erekir = Erekir research.load = Načíst @@ -253,11 +255,19 @@ trace = Vystopovat hráče trace.playername = Jméno hráče: [accent]{0}[] trace.ip = Adresa IP: [accent]{0}[] trace.id = Unikátní ID: [accent]{0}[] +trace.language = Language: [accent]{0} trace.mobile = Mobilní klient hry: [accent]{0}[] trace.modclient = Upravený klient hry: [accent]{0}[] trace.times.joined = Krát Připojen: [accent]{0} trace.times.kicked = Krát Vyhozen: [accent]{0} +trace.ips = IPs: +trace.names = Jména: invalidid = Neplatná adresa IP klienta! Zašli prosím zprávu o chybě. +player.ban = Ban +player.kick = Vyhodit +player.trace = Trace +player.admin = Přepínání správce +player.team = Změnit tým server.bans = Zákazy server.bans.none = Žádní hráči se zákazem nebyli nalezeni. server.admins = Správci @@ -271,10 +281,11 @@ server.version = [gray]Verze: {0} {1}[] server.custombuild = [accent]Upravená verze hry[] confirmban = Jsi si jistý, že chceš zakázat hráče "{0}[white]"?[] confirmkick = Jsi si jistý, že chceš vykopnout hráče "{0}[white]"?[] -confirmvotekick = Jsi si jistý, že chceš hlasovat pro vykopnutí hráče "{0}[white]"?[] confirmunban = Jsi si jistý, že chceš zrušit zákaz pro tohoto hráče? confirmadmin = Jsi si jistý, že chceš hráče "{0}[white]" povýšit na správce?[] confirmunadmin = Jsi si jistý, že chceš odebrat hráči "{0}[white]" roli správce?[] +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Připojit se ke hře joingame.ip = Adresa IP: disconnect = Odpojeno. @@ -329,18 +340,30 @@ ok = OK open = Otevřít customize = Přizpůsobit pravidla cancel = Zrušit -command = Command -command.mine = Mine -command.repair = Repair -command.rebuild = Rebuild -command.assist = Assist Player -command.move = Move +command = Velet +command.queue = Queue +command.mine = Těžit +command.repair = Opravovat +command.rebuild = Přestavět +command.assist = Asistovat hráči +command.move = Pohyb + command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Otevřít odkaz copylink = Zkopírovat odkaz back = Zpět max = Max -objective = Map Objective +objective = Úkol mapy crash.export = Exportovat záznamy o zhroucení hry crash.none = Záznamy o zhroucení hry nebyly nalezeny. crash.exported = Záznamy o zhroucení hry byly exportovány. @@ -361,7 +384,7 @@ pausebuilding = [accent][[{0}][] zastaví stavění resumebuilding = [scarlet][[{0}][] bude pokračovat ve stavění enablebuilding = [scarlet][[{0}][] povolí stavení showui = UI je skryto.\nZmáčkni [accent][[{0}][] pro jeho zobrazení. -commandmode.name = [accent]Command Mode +commandmode.name = [accent]Velící zežim commandmode.nounits = [no units] wave = [accent]Vlna číslo {0}[] wave.cap = [accent]Vlna {0} z {1}[] @@ -382,9 +405,9 @@ custom = Upraveno builtin = Vestavěno map.delete.confirm = Jsi si jistý, že chceš tuto mapu smazat? Tato akce je nevratná! map.random = [accent]Náhodná mapa[] -map.nospawn = Na této mapě nejsou jádra, u kterých by se mohli zrodit hráči. Přidej v editoru do této mapy aspoň jedno [accent]oranžové[] jádro. +map.nospawn = Na této mapě nejsou jádra, u kterých by se mohli zrodit hráči. Přidej v editoru do této mapy aspoň jedno {0} jádro. map.nospawn.pvp = Tato mapa nemá nepřátelská jádra, u kterých by se mohli zrodit hráči. Přidej v editoru do této mapy aspoň jedno [scarlet]neoranžové[] jádro. -map.nospawn.attack = Tato mapa nemá nepřátelská jádra, která by mohla být zničena. Přidej v editoru do této mapy aspoň jedno [scarlet]červené[] jádro. +map.nospawn.attack = Tato mapa nemá nepřátelská jádra, která by mohla být zničena. Přidej v editoru do této mapy aspoň jedno {0} jádro. map.invalid = Chyba v načítání mapy: poškozený nebo neplatný soubor mapy. workshop.update = Aktualizovat položku workshop.error = Chyba při načítání podrobností z Workshopu na Steamu: {0} @@ -392,15 +415,15 @@ map.publish.confirm = Jsi si jistý, že chceš publikovat tuto mapu?\n\n[lightg workshop.menu = Vyber si, co bys chtěl dělat s touto položkou. workshop.info = Informace o položce changelog = Seznam změn (volitelně): -updatedesc = Overwrite Title & Description +updatedesc = Přepsat Nadpis a Popis eula = Smluvní podmínky platformy Steam missing = Tato položka byla smazána nebo přesunuta.\n[lightgray]Položka bude automaticky odebrána ze seznamu Workshopu na Steamu. publishing = [accent]Publikuji... publish.confirm = Opravdu chceš toto publikovat?\n\n[lightgray]Ujisti se nejprve, že souhlasíš se smluvními podmínkami Workshopu na Steamu (EULA), jinak se Tvoje položky nezobrazí.[] publish.error = Chyba při publikování položky: {0} steam.error = Nepodařilo se inicializovat služby platformy Steam. Chyba: {0} -editor.planet = Planet: -editor.sector = Sector: +editor.planet = Planeta: +editor.sector = Sektor: editor.seed = Seed: editor.cliffs = Zdi Na Útesy @@ -415,7 +438,13 @@ editor.nodescription = Než může být mapa publikována, musí mít popis dlou editor.waves = Vln: editor.rules = Pravidla: editor.generation = Generace: -editor.objectives = Objectives +editor.objectives = Úkoly: +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Upravit ve hře editor.playtest = Playtest editor.publish.workshop = Publikovat do Workshopu na Steamu @@ -435,19 +464,19 @@ waves.title = Vlny waves.remove = Odebrat waves.every = každých waves.waves = vln(y) -waves.health = health: {0}% +waves.health = životy: {0}% waves.perspawn = za zrození waves.shields = štítů/vlnu waves.to = do -waves.spawn = spawn: +waves.spawn = zrození: waves.spawn.all = -waves.spawn.select = Spawn Select -waves.spawn.none = [scarlet]no spawns found in map +waves.spawn.select = Výběr Zrození +waves.spawn.none = [scarlet]žádné zrození nebyly nalezeny na mapě waves.max = max jednotek waves.guardian = Strážce waves.preview = Náhled waves.edit = Upravit.... -waves.random = Random +waves.random = Náhodně waves.copy = Uložit do schránky waves.load = Načíst ze schránky waves.invalid = Neplatné vlny ve schránce. @@ -458,8 +487,8 @@ waves.sort.reverse = Obrátit řazení waves.sort.begin = Začít waves.sort.health = Životy waves.sort.type = Typ -waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.search = Hledat vlny... +waves.filter = Unit Filter waves.units.hide = Schovat vše waves.units.show = Zobrazit vše @@ -472,33 +501,37 @@ editor.default = [lightgray][] details = Podrobnosti... edit = Upravit... variables = Hodnoty +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Jméno: editor.spawn = Zrodit jednotku editor.removeunit = Odstranit jednotku editor.teams = Týmy editor.errorload = Chyba při načítání souboru. editor.errorsave = Chyba při ukládání souboru. -editor.errorimage = Toto je obrázek, ne mapa.\nPokud chceš importovat mapu z verze 3.5/sestavení 40, použij položku nabídky 'Importovat starou mapu'. +editor.errorimage = Toto je obrázek, ne mapa.\nPokud chceš importovat mapu z verze 3.5/sestavení 40, použij položku nabídky 'Importovat starou mapu'. editor.errorlegacy = Tato mapa je příliš stará a používá formát mapy, který už není podporován. editor.errornot = Toto není soubor mapy. editor.errorheader = Tento soubor mapy je buď neplatný nebo poškozen. editor.errorname = Mapa nemá definované jméno. Nesnažíš se náhodou nahrát soubor s uložením hry? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Aktualizovat editor.randomize = Náhodně vygenerovat -editor.moveup = Move Up -editor.movedown = Move Down -editor.copy = Copy +editor.moveup = Pohyb Nahoru +editor.movedown = Pohyb Dolu +editor.copy = Kopírovat editor.apply = Aplikovat editor.generate = Generovat -editor.sectorgenerate = Sector Generate +editor.sectorgenerate = Generovat Sektor editor.resize = Změnit velikost editor.loadmap = Načíst mapu editor.savemap = Uložit mapu +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Uloženo! editor.save.noname = Tvoje mapa nemá jméno! Jméno nastavíš v položce nabídky "Informace o mapě". editor.save.overwrite = Tvoje mapa přepisuje vestavěnou mapu! Nastav jí radši jiné jméno v položce nabídky "Informace o mapě". editor.import.exists = [scarlet]Není možno importovat:[] existuje vestavěná mapa se stejným jménem '{0}'! -editor.import = Import... +editor.import = Importovat... editor.importmap = Importovat mapu editor.importmap.description = Importovat již existující mapu editor.importfile = Importovat soubor @@ -532,13 +565,14 @@ toolmode.eraseores = Mazat rudy toolmode.eraseores.description = Maže jen rudy. toolmode.fillteams = Doplnit týmy toolmode.fillteams.description = Doplní týmy místo bloků. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Kreslit týmy toolmode.drawteams.description = Kreslí týmy místo bloků. -toolmode.underliquid = Under Liquids -toolmode.underliquid.description = Draw floors under liquid tiles. +toolmode.underliquid = Pod Kapalinami +toolmode.underliquid.description = Kreslí podlahy pod kostkama kapalin. filters.empty = [lightgray]Nejsou zadány žádné filtry, přidej filtr tlačítkem níže.[] - filter.distort = Zkreslení filter.noise = Zašumění filter.enemyspawn = Výběr nepřátelské líhně @@ -555,6 +589,7 @@ filter.clear = Vyčistit filter.option.ignore = Ignorovat filter.scatter = Rozptýlení filter.terrain = Terén +filter.logic = Logic filter.option.scale = Měřítko filter.option.chance = Náhoda @@ -564,9 +599,9 @@ filter.option.circle-scale = Poloměr kružnice filter.option.octaves = Octávy filter.option.falloff = Pokles filter.option.angle = Úhel -filter.option.tilt = Tilt +filter.option.tilt = Naklonit filter.option.rotate = Otočit -filter.option.amount = Amount +filter.option.amount = Počet filter.option.block = Blok filter.option.floor = Povrch filter.option.flooronto = Cílový povrch @@ -578,6 +613,25 @@ filter.option.floor2 = Druhotný povrch filter.option.threshold2 = Druhotný práh filter.option.radius = Poloměr filter.option.percentile = Percentil +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Šířka: height = Výška: @@ -607,31 +661,34 @@ requirement.core = Znič nepřátelské jádro na mapě {0} requirement.research = Vynalezni {0} requirement.produce = Vyrob {0} requirement.capture = Polap {0} -requirement.onplanet = Control Sector On {0} -requirement.onsector = Land On Sector: {0} +requirement.onplanet = Kontrolovat Sektor na {0} +requirement.onsector = Přistát na Sektor: {0} launch.text = Vyslat research.multiplayer = Jen hostitel hry může vynalézat nové technologie. map.multiplayer = Jen hostitel může prohlížet sektory. uncover = Odkrýt mapu configure = Přizpůsobit vybavení -objective.research.name = Research -objective.produce.name = Obtain -objective.item.name = Obtain Item -objective.coreitem.name = Core Item -objective.buildcount.name = Build Count -objective.unitcount.name = Unit Count -objective.destroyunits.name = Destroy Units -objective.timer.name = Timer -objective.destroyblock.name = Destroy Block -objective.destroyblocks.name = Destroy Blocks -objective.destroycore.name = Destroy Core -objective.commandmode.name = Command Mode -objective.flag.name = Flag +objective.research.name = Výzkum +objective.produce.name = Získat +objective.item.name = Získat Věc +objective.coreitem.name = Jádrova Věc +objective.buildcount.name = Počet Budov +objective.unitcount.name = Počet Jednotek +objective.destroyunits.name = Znič Jednotky +objective.timer.name = Časovač +objective.destroyblock.name = Zničit Kostku +objective.destroyblocks.name = Zničit Kostky +objective.destroycore.name = Zničit Jádro +objective.commandmode.name = Příkazovy Režim +objective.flag.name = Vlajka marker.shapetext.name = Shape Text -marker.minimap.name = Minimap -marker.shape.name = Shape +marker.point.name = Point +marker.shape.name = Tvar marker.text.name = Text -marker.background = Background +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture +marker.background = Pozadí marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} objective.produce = [accent]Obtain:\n[]{0}[lightgray]{1} @@ -651,17 +708,16 @@ objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ loadout = Načtení -resources = Zdroje +resources = Zdroje resources.max = Max bannedblocks = Zakázané bloky -objectives = Objectives +objectives = Úkoly bannedunits = Zakázané jednotky -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Přidat vše launch.from = Vysláno z: [accent]{0} -launch.capacity = Launching Item Capacity: [accent]{0} +launch.capacity = Odpalovací kapacita: [accent]{0} launch.destination = Cíl: {0} configure.invalid = Hodnota musí být číslo mezi 0 a {0}. add = Přidat... @@ -679,7 +735,7 @@ error.any = Neznámá chyba sítě. error.bloom = Chyba inicializace filtru Bloom.\nTvé zařízení ho nejspíš nepodporuje. weather.rain.name = Déšť -weather.snow.name = Sníh +weather.snowing.name = Sníh weather.sandstorm.name = Písečná ouře weather.sporestorm.name = Spórová bouře weather.fog.name = Mlha @@ -691,8 +747,8 @@ sectorlist.attacked = {0} pod útokem sectors.unexplored = [lightgray]Neprozkoumáno sectors.resources = Zdroje: sectors.production = Výroba: -sectors.export = Export: -sectors.import = Import: +sectors.export = Exportovat: +sectors.import = Importovat: sectors.time = Čas: sectors.threat = Ohrožení: sectors.wave = Vlna: @@ -708,19 +764,19 @@ sectors.underattack = [scarlet]Pod palbou! [accent]{0}% poškozeno sectors.underattack.nodamage = [scarlet]Uncaptured sectors.survives = [accent]Přežívá již {0} vln sectors.go = Jdi -sector.abandon = Abandon +sector.abandon = Opustit sector.abandon.confirm = This sector's core(s) will self-destruct.\nContinue? sector.curcapture = Sektor polapen sector.curlost = Sektor ztracen sector.missingresources = [scarlet]Nedostatečné zdroje v jádře sector.attacked = Sektor [accent]{0}[white] pod útokem! sector.lost = Sektor [accent]{0}[white] ztracen! :( -#note: chybějící mezera v řádce níže je záměrná :) -sector.captured = Sektor [accent]{0}[white]polapen! :) +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Změnit Ikonu -sector.noswitch.title = Unable to Switch Sectors +sector.noswitch.title = Nelze Vyměnit Sektor sector.noswitch = Sektory nelze přepnut, pokud je stávající sektor pod útokem.\n\nSektor: [accent]{0}[] na [accent]{1}[] -sector.view = View Sector +sector.view = Prohlédnout Sektor threat.low = Nízké threat.medium = Střední @@ -728,7 +784,7 @@ threat.high = Velké threat.extreme = Extrémní threat.eradication = Vyhlazující -planets = Planets +planets = Planety planet.serpulo.name = Serpulo planet.erekir.name = Erekir @@ -767,45 +823,45 @@ sector.fungalPass.description = Přechodová oblast mezi vysokými horami a spó sector.biomassFacility.description = Prapůvod všech spór. Toto je zařízení, be kterém byly spóry vynalezeny a zpočátku u vyráběny.\nVynalezni technologii, která se skrýbá uvnitř. Kultivuj spóry k výrobě paliva a plastů.\n\n[lightgray]Po vypnutí tohoto zařízení byly spóry vypuštěny. V okolním ekosystému však tomuto invazivnímu druhu nebylo nic schopné konkurovat. sector.windsweptIslands.description = Vzdálen od pevniny je tento řetízek ostrovů. Záznamy ukazují, že zde kdysi byly zařízení na výrobu [accent]Plastany[].\n\nPoraž nepřátelské námořní jednotky. Vybuduj základnu na ostrově. Vynalezni továrny. sector.extractionOutpost.description = Vzdálená pevnost, postavená nepřítelem za účelem vysílání zdrojů do okolních sektorů.\n\nDoprava položek napříč sektory je nezbytná pro lapení dalších sektorů. Znič základnu. Vyzkoumej jejich Vysílací plošiny. -sector.impact0078.description = Zde leží zbytky mezihvězdné lodi, která vstoupila d otohoto systému.\n\nZachraň z vraku vše, co se dá. Vyzkoumej nepoškozenou technologii. +sector.impact0078.description = Zde leží zbytky mezihvězdné lodi, která vstoupila do tohoto systému.\n\nZachraň z vraku vše, co se dá. Vyzkoumej nepoškozenou technologii. sector.planetaryTerminal.description = Konečný cíl.\n\nTato pobřežní základna obsahuje konstrukce schopné vyslat jádra na okolní planety. Je mimořádně dobře opevněna.\n\nVyrob námořní jednotky. Odstraň nepřítele tak rychle, jak umíš. Vyzkoumej vysílací konstrukci. -sector.coastline.description = Remnants of naval unit technology have been detected at this location. Repel the enemy attacks, capture this sector, and acquire the technology. -sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. -sector.onset.name = The Onset +sector.coastline.description = V této lokaci byly objeveny pozůstatky techniky námořních jednotek. Odražte nepřátelské útoky, dobijte tento sektor a získejte technologii. +sector.navalFortress.description = Nepřítel si vybudoval základnu na odlehlém, přírodou opevněném ostrově. Zničte tuto základnu. Získejte jejich pokročilou technologii námořních plavidel a vyzkoumejte ji. +sector.onset.name = Nástup sector.aegis.name = Aegis -sector.lake.name = Lake -sector.intersect.name = Intersect +sector.lake.name = Jezero +sector.intersect.name = Průsečík sector.atlas.name = Atlas -sector.split.name = Split -sector.basin.name = Basin -sector.marsh.name = Marsh -sector.peaks.name = Peaks -sector.ravine.name = Ravine -sector.caldera-erekir.name = Caldera -sector.stronghold.name = Stronghold -sector.crevice.name = Crevice -sector.siege.name = Siege -sector.crossroads.name = Crossroads -sector.karst.name = Karst -sector.origin.name = Origin -sector.onset.description = Commence the conquest of Erekir. Gather resources, produce units, and begin researching technology. +sector.split.name = Rozdělení +sector.basin.name = Povodí +sector.marsh.name = Marš +sector.peaks.name = Vrcholy +sector.ravine.name = Rokle +sector.caldera-erekir.name = Kaldera +sector.stronghold.name = Pevnost +sector.crevice.name = Štěrbina +sector.siege.name = Obléhání +sector.crossroads.name = Křižovatka +sector.karst.name = Kras +sector.origin.name = Původ +sector.onset.description = Zahajte dobývání Erekiru. Shromážděte zdroje, vyrobte jednotky a začněte zkoumat technologie. -sector.aegis.description = This sector contains deposits of tungsten.\nResearch the [accent]Impact Drill[] to mine this resource, and destroy the enemy base in the area. -sector.lake.description = This sector's slag lake greatly limits viable units. A hover unit is the only option.\nResearch the [accent]ship fabricator[] and produce an [accent]elude[] unit as soon as possible. -sector.intersect.description = Scans suggest that this sector will be attacked from multiple sides soon after landing.\nSet up defenses quickly and expand as soon as possible.\n[accent]Mech[] units will be required for the area's rough terrain. -sector.atlas.description = This sector contains varied terrain and will require a variety of units to attack effectively.\nUpgraded units may also be necessary to get past some of the tougher enemy bases detected here.\nResearch the [accent]Electrolyzer[] and the [accent]Tank Refabricator[]. -sector.split.description = The minimal enemy presence in this sector makes it perfect for testing new transport tech. -sector.basin.description = Large enemy presence detected in this sector.\nBuild units quickly and capture enemy cores to gain a foothold. -sector.marsh.description = This sector has an abundance of arkycite, but has limited vents.\nBuild [accent]Chemical Combustion Chambers[] to generate power. -sector.peaks.description = The mountainous terrain in this sector make most units useless. Flying units will be required.\nBe aware of enemy anti-air installations. It may be possible to disable some of these installations by targeting their supporting buildings. -sector.ravine.description = No enemy cores detected in the sector, although it's an important transportation route for the enemy. Expect variety of enemy forces.\nProduce [accent]surge alloy[]. Construct [accent]Afflict[] turrets. -sector.caldera-erekir.description = The resources detected in this sector are scattered across several islands.\nResearch and deploy drone-based transportation. -sector.stronghold.description = The large enemy encampment in this sector guards significant deposits of [accent]thorium[].\nUse it to develop higher tier units and turrets. -sector.crevice.description = The enemy will send fierce attack forces to take out your base in this sector.\nDeveloping [accent]carbide[] and the [accent]Pyrolysis Generator[] may be imperative for survival. -sector.siege.description = This sector features two parallel canyons that will force a two-pronged attack.\nResearch [accent]cyanogen[] to gain the capability to create even stronger tank units.\nCaution: enemy long-range missiles have been detected. The missiles may be shot down before impact. -sector.crossroads.description = The enemy bases in this sector have been established in varying terrain. Research different units to adapt.\nAdditionally, some bases are protected by shields. Figure out how they are powered. -sector.karst.description = This sector is rich in resources, but will be attacked by the enemy once a new core lands.\nTake advantage of the resources and research [accent]phase fabric[]. -sector.origin.description = The final sector with a significant enemy presence.\nNo probable research opportunities remain - focus solely on destroying all enemy cores. +sector.aegis.description = Tento sektor obsahuje ložiska wolframu.\nVyzkoumej [accent]Nárazový vrták[] k vytěžení této suroviny, a znič nepřátelskou základnu. +sector.lake.description = Struskové jezero v tomto sektoru značně omezuje použitelné jednotky. Jedinou možností je vznášecí jednotka.\nVyzkoumej [accent]továrna na výrobu lodí[] a vyrob [accent]elude[] jednotku co nejdříve +sector.intersect.description = Podle průzkumů bude tento sektor brzy po přistání napaden z více stran.\nRychle vytvořte obranu a co nejdříve expandujte.\n[accent]Mech[] jednotky budou zapotřebí pro překročení teréu v oblasti. +sector.atlas.description = Tento sektor obsahuje rozmanitý terén a pro efektivní útok bude vyžadovat různé jednotky.\nPro překonání některých těžších nepřátelských základen zde mohou být nutné i vylepšené jednotky.\nVyzkoumej [accent]Electrolyzér[] a [accent]Přestavovač tanků[]. +sector.split.description = Minimální přítomnost nepřátel v tomto sektoru je ideální pro testování nových dopravních technologií. +sector.basin.description = V tomto sektoru byla zjištěna velká přítomnost nepřátel.\nRychle postavte jednotky a získejte nepřátelská jádra, abyste se prosadili. +sector.marsh.description = Tento sektor má hojnost arkycitu, ale má omezené průduchy.\nPostav [accent]Chemické spalovací komory[] k výrobě energie. +sector.peaks.description = Hornatý terén v tomto sektoru činí většinu jednotek nepoužitelnými. Bude zapotřebí létajících jednotek.\nDejte si pozor na nepřátelská protiletecká zařízení. Některá z těchto zařízení je možné vyřadit zaměřením jejich podpůrných budov. +sector.ravine.description = V sektoru nebyla zjištěna žádná nepřátelská jádra, ačkoli se jedná o důležitou dopravní trasu pro nepřítele. Očekávejte rozmanitost nepřátelských sil.\nVyrob [accent]rázová slitina[]. Postav [accent]Aflict[] věže. +sector.caldera-erekir.description = Zdroje zjištěné v tomto sektoru jsou rozptýleny na několika ostrovech. \nVyzkoumejte a nasaďte dopravu pomocí dronů. +sector.stronghold.description = Rozsáhlé nepřátelské ležení v tomto sektoru střeží významná ložiska [accent]thoria[].\nPoužijte ho na vývoj jednotek a věží vyšší úrovně. +sector.crevice.description = Nepřítel vyšle ostré útočné síly, aby zničily vaši základnu v tomto sektoru.\nVývoj [accent]karbid[] a [accent]Pyrolytický generátor[] může být nezbytný pro přežití. +sector.siege.description = V tomto sektoru se nacházejí dva paralelní kaňony, které si vynutí útok dvěma směry.\nVyzkoumej [accent]kyan[] pro získání schopnosti vytvářet ještě silnější tankové jednotky.\nPozor: byly detekovány nepřátelské rakety dlouhého doletu. Rakety mohou být sestřeleny před dopadem. +sector.crossroads.description = Nepřátelské základny v tomto sektoru jsou rozmístěny v různém terénu. Výzkumem různých jednotek se jim přizpůsobíte.\nNěkteré základny jsou navíc chráněny štíty. Zjistěte, jak jsou napájeny. +sector.karst.description = Tento sektor je bohatý na zdroje, ale jakmile se zde objeví nové jádro, bude napaden nepřítelem.\nVyužijte zdroje a vyzkoumej [accent]fázová tkanina[]. +sector.origin.description = Poslední sektor s výrazným výskytem nepřátel.\nŽádné pravděpodobné možnosti výzkumu nezbývají - soustřeďte se výhradně na zničení všech nepřátelských jader. status.burning.name = Hořící status.freezing.name = Mrazící @@ -889,8 +945,8 @@ stat.repairtime = Čas do úplné opravy stat.repairspeed = Rychlost Opravy stat.weapons = Zbraně stat.bullet = Střela -stat.moduletier = Module Tier -stat.unittype = Unit Type +stat.moduletier = Úroveň Modulu +stat.unittype = Typ Jednotky stat.speedincrease = Zvýšení rychlosti stat.range = Dosah stat.drilltier = Lze těžit @@ -927,25 +983,59 @@ stat.abilities = Schopnosti stat.canboost = Umí posilovat stat.flying = Létající stat.ammouse = Spotřeba Munice +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Násobič Poškození stat.healthmultiplier = Násobič Životů stat.speedmultiplier = Násobič Rychlostí stat.reloadmultiplier = Násobič Přebití stat.buildspeedmultiplier = Nasobič Rychlostí Stavby stat.reactive = Reaguje -stat.immunities = Immunities +stat.immunities = Imunity stat.healing = Léčí se ability.forcefield = Silové pole +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Opravit pole +ability.repairfield.description = Repairs nearby units ability.statusfield = Stav pole -ability.unitspawn = {0} továrna +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = továrna +ability.unitspawn.description = Constructs units ability.shieldregenfield = Silově opravné pole +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Pohybující se blesk -ability.shieldarc = Shield Arc +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting +ability.shieldarc = Štítovy Oblouk +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energetické pole: [accent]{0}[] poškození ~ [accent]{1}[] dlaždic / [accent]{2}[] cílu -bar.onlycoredeposit = Only Core Depositing Allowed +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energetické pole +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + +bar.onlycoredeposit = Pouze Ukládání do Jádra je povoleno bar.drilltierreq = Je vyžadován lepší vrt bar.noresources = Chybějí zdroje @@ -966,12 +1056,12 @@ bar.capacity = Kapacita: {0} bar.unitcap = {0} {1}/{2} bar.liquid = Chlazení bar.heat = Teplo -bar.instability = Instability -bar.heatamount = Heat: {0} -bar.heatpercent = Heat: {0} ({1}%) +bar.instability = Nestabilita +bar.heatamount = Teplo: {0} +bar.heatpercent = Teplo: {0} ({1}%) bar.power = Energie bar.progress = Konstrukce v průběhu -bar.loadprogress = Progress +bar.loadprogress = Pokrok bar.launchcooldown = Launch Cooldown bar.input = Vstup bar.output = Výstup @@ -984,7 +1074,8 @@ bullet.splashdamage = [stat]{0}[lightgray] plošného poškození ~[stat] {1}[li bullet.incendiary = [stat]zápalný bullet.homing = [stat]samonaváděcí bullet.armorpierce = [stat]armor piercing -bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit +bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] kostek bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag střel: bullet.lightning = [stat]{0}[lightgray]x jiskření ~ [stat]{1}[lightgray] poškození @@ -993,10 +1084,10 @@ bullet.knockback = [stat]{0}[lightgray] odhození[] bullet.pierce = [stat]{0}[lightgray]x průrazné[] bullet.infinitepierce = [stat]průrazné[] bullet.healpercent = [stat]{0}[lightgray]% opravující -bullet.healamount = [stat]{0}[lightgray] direct repair +bullet.healamount = [stat]{0}[lightgray] přímá oprava bullet.multiplier = [stat]{0}[lightgray]x více střel[] bullet.reload = [stat]{0}[lightgray]x rychlost střelby[] -bullet.range = [stat]{0}[lightgray] tiles range +bullet.range = [stat]{0}[lightgray] kostek dosah unit.blocks = bloky unit.blockssquared = bloky² @@ -1006,7 +1097,7 @@ unit.liquidsecond = kapalin/sekundu unit.itemssecond = předmětů/sekundu unit.liquidunits = jednotek kapalin unit.powerunits = jednotek energie -unit.heatunits = heat units +unit.heatunits = jednotek tepla unit.degrees = úhly unit.seconds = sekundy unit.minutes = minuty @@ -1019,6 +1110,7 @@ unit.items = předměty unit.thousands = tis unit.millions = mio unit.billions = mld +unit.shots = shots unit.pershot = /střela category.purpose = Účel category.general = Všeobecné @@ -1038,7 +1130,8 @@ setting.logichints.name = Logic Nápovědy setting.backgroundpause.name = Pozastavit v pozadí setting.buildautopause.name = Automaticky pozastavit stavění setting.doubletapmine.name = Dvojklik pro Těžbu -setting.commandmodehold.name = Hold For Command Mode +setting.commandmodehold.name = Držet pro Příkazový Režim +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Vypnout Modifikace Při Pádovém Spuštění setting.animatedwater.name = Animované povrchy setting.animatedshields.name = Animované štíty @@ -1060,11 +1153,11 @@ setting.difficulty.hard = Těžká setting.difficulty.insane = Šílená setting.difficulty.name = Obtížnost: setting.screenshake.name = Chvění obrazovky -setting.bloomintensity.name = Bloom Intensity -setting.bloomblur.name = Bloom Blur +setting.bloomintensity.name = Intenzita Bloom +setting.bloomblur.name = Rozmazání Bloom setting.effects.name = Zobrazit efekty setting.destroyedblocks.name = Zobrazit zničené bloky -setting.blockstatus.name = Display Block Status +setting.blockstatus.name = Zobrazit Stav Bloku setting.conveyorpathfinding.name = Hledat cestu při umisťování pásu setting.sensitivity.name = Citlivost ovladače setting.saveinterval.name = Interval automatického ukládání @@ -1075,31 +1168,34 @@ setting.borderlesswindow.name = Bezokrajové okno [lightgray](může výt vyžad setting.borderlesswindow.name.windows = Celá obrazovka bez okrajů setting.borderlesswindow.description = Pro aplikování změn, je potřeba restart. setting.fps.name = Ukázat FPS a ping -setting.console.name = Enable Console +setting.console.name = Povolit Konzoli setting.smoothcamera.name = Plynulá kamera setting.vsync.name = Vertikální synchronizace setting.pixelate.name = Rozpixlovat setting.minimap.name = Ukázat mapičku setting.coreitems.name = Ukázat položky jádra setting.position.name = Ukázat pozici hráče -setting.mouseposition.name = Show Mouse Position +setting.mouseposition.name = Zobrazit Pozici Myši setting.musicvol.name = Hlasitost hudby setting.atmosphere.name = Ukázat atmosféru planety +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Hlasitost prostředí setting.mutemusic.name = Ztišit hudbu setting.sfxvol.name = Hlasitost efektů setting.mutesound.name = Ztišit zvuk setting.crashreport.name = Poslat anonymní hlášení o spadnutí Mindustry setting.savecreate.name = Automaticky ukládat hru -setting.publichost.name = Veřejná viditelnost hry +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Nejvyšší počet hráčů setting.chatopacity.name = Průsvitnost kanálu zpráv -setting.lasersopacity.name = Průsvitnost energetického laseru +setting.lasersopacity.name = Průsvitnost energetického laseru setting.bridgeopacity.name = Průsvitnost přemostění setting.playerchat.name = Zobrazit bublinu se zprávami hráče setting.showweather.name = Zobrazit Grafiku Počasí setting.hidedisplays.name = Hide Logic Displays -steam.friendsonly = Friends Only +setting.macnotch.name = Přizpůsobte rozhraní zobrazení zářezu +setting.macnotch.description = Pro aplikování změn, je potřeba restart +steam.friendsonly = Přátele Pouze steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Poznámka: nevydané verze her nemůžou být veřejné. uiscale.reset = Škálování uživatelskho rozhraní se změnilo.\nZmáčkni "OK", abys potvrdil toto nastavení.\n[scarlet]Návrat k původním hodnotám proběhne za [accent]{0}[] vteřin...[] @@ -1109,6 +1205,7 @@ keybind.title = Změnit klávesy keybinds.mobile = [scarlet]Většina kláves nefunguje v mobilní verzi hry. Je podporován jen základní pohyb.[] category.general.name = Všeobecné category.view.name = Pohled +category.command.name = Unit Command category.multiplayer.name = Hra více hráčů category.blocks.name = Výběr bloků placement.blockselectkeys = \n[lightgray]Klávesa:[] [{0}, @@ -1125,8 +1222,26 @@ keybind.move_y.name = Pohyb svisle keybind.mouse_move.name = Následovat myš keybind.pan.name = Následovat kameru keybind.boost.name = Posílení -keybind.command_mode.name = Command Mode -keybind.rebuild_select.name = Rebuild Region +keybind.command_mode.name = Příkazový Režim +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.rebuild_select.name = Přestavět Region keybind.schematic_select.name = Vybrat oblast keybind.schematic_menu.name = Nabídka šablon keybind.schematic_flip_x.name = Překlopit šablona podle svislé osy @@ -1152,8 +1267,8 @@ keybind.select.name = Vybrat/Střílet keybind.diagonal_placement.name = Umisťovat úhlopříčně keybind.pick.name = Vybrat blok keybind.break_block.name = Rozbít blok -keybind.select_all_units.name = Select All Units -keybind.select_all_unit_factories.name = Select All Unit Factories +keybind.select_all_units.name = Vybrat Všechny Jednotky +keybind.select_all_unit_factories.name = Vybrat Všechny Továrny Jednotek keybind.deselect.name = Odznačit keybind.pickupCargo.name = Vyzvednout náklad keybind.dropCargo.name = Položit náklad @@ -1189,35 +1304,44 @@ mode.pvp.description = Bojuj proti ostatním hráčům v lokální síti.\n[gray mode.attack.name = Útok mode.attack.description = Znič nepřátelskou základnu.\n[gray]Vyžaduje přítomnost červeného jádra na mapě.[] mode.custom = Vlastní pravidla +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Schovat Zakázané Kostky rules.infiniteresources = Neomezeně surovin rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Výbuch reaktoru rules.coreincinerates = Jádro Spaluje Nadbytečné Suroviny -rules.disableworldprocessors = Disable World Processors +rules.disableworldprocessors = Zakázat Světové Procesory rules.schematic = Šablony povoleny rules.wavetimer = Časovač vln rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Vlny +rules.airUseSpawns = Air units use spawn points rules.attack = Režim útoku +rules.buildai = Umělá AI staví +rules.buildaitier = Úroveň AI stavitele rules.rtsai = RTS AI -rules.rtsminsquadsize = Min Squad Size -rules.rtsmaxsquadsize = Max Squad Size -rules.rtsminattackweight = Min Attack Weight +rules.rtsminsquadsize = Min velikost skupiny +rules.rtsmaxsquadsize = Max velikost skupiny +rules.rtsminattackweight = Min váha útoku rules.cleanupdeadteams = Vyčistit Budovy Poražených Týmů (PvP) rules.corecapture = Dobýt Jádro Po Jeho Zničení rules.polygoncoreprotection = Polygonální Ochrana Jádra -rules.placerangecheck = Placement Range Check +rules.placerangecheck = Dosah stavění rules.enemyCheat = Neomezeně surovin pro umělou inteligenci rules.blockhealthmultiplier = Násobek zdraví bloků rules.blockdamagemultiplier = Násobek poškození bloků rules.unitbuildspeedmultiplier = Násobek rychlosti výroby jednotek -rules.unitcostmultiplier = Unit Cost Multiplier +rules.unitcostmultiplier = Násobek ceny jednotek rules.unithealthmultiplier = Násobek zdraví jednotek rules.unitdamagemultiplier = Násobek poškození jednotkami -rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier -rules.solarmultiplier = Solar Power Multiplier +rules.unitcrashdamagemultiplier = Násobek poškození při nárazu jednotky +rules.solarmultiplier = Násobek Solární Energie rules.unitcapvariable = Jádra Zvýšujou Maximum Počtu Jednotek +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Základní Maximum Počtu Jednotek rules.limitarea = Limit Map Area rules.enemycorebuildradius = Poloměr, ve kterém se okolo nepřátelského jádra nesmí stavět: [lightgray](dlaždic)[] @@ -1227,7 +1351,7 @@ rules.buildcostmultiplier = Násobek ceny stavění rules.buildspeedmultiplier = Násobek rychlosti stavění rules.deconstructrefundmultiplier = Násobek vratky při rozebrání rules.waitForWaveToEnd = Vlny čekají na nepřátele -rules.wavelimit = Map Ends After Wave +rules.wavelimit = Mapa končí po vlně rules.dropzoneradius = Poloměr oblasti pro vylíhnutí: [lightgray](dlaždic)[] rules.unitammo = Jednotky vyžadují munici rules.enemyteam = Nepřátelský Tým @@ -1239,17 +1363,19 @@ rules.title.unit = Jednotky rules.title.experimental = Experimentální rules.title.environment = Environmentální rules.title.teams = Týmy -rules.title.planet = Planet +rules.title.planet = Planeta rules.lighting = Osvětlení rules.fog = Fog of War rules.fire = Výstřel -rules.anyenv = +rules.anyenv = rules.explosions = Výbušné poškození bloku/jednotky rules.ambientlight = Světlo prostředí rules.weather = Počasí rules.weather.frequency = Četnost: rules.weather.always = Vždy rules.weather.duration = Trvání: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Předměty content.liquid.name = Kapaliny @@ -1276,24 +1402,24 @@ item.blast-compound.name = Výbušnina item.pyratite.name = Pyratit item.metaglass.name = Metasklo item.scrap.name = Šrot -item.fissile-matter.name = Fissile Matter -item.beryllium.name = Beryllium -item.tungsten.name = Tungsten -item.oxide.name = Oxide -item.carbide.name = Carbide +item.fissile-matter.name = Štěpná Hmota +item.beryllium.name = Berylium +item.tungsten.name = Wolfram +item.oxide.name = Oxid +item.carbide.name = Karbid item.dormant-cyst.name = Dormant Cyst liquid.water.name = Voda liquid.slag.name = Struska liquid.oil.name = Nafta liquid.cryofluid.name = Chladící kapalina -liquid.neoplasm.name = Neoplasm -liquid.arkycite.name = Arkycite -liquid.gallium.name = Gallium -liquid.ozone.name = Ozone -liquid.hydrogen.name = Hydrogen -liquid.nitrogen.name = Nitrogen -liquid.cyanogen.name = Cyanogen +liquid.neoplasm.name = Neoplasma +liquid.arkycite.name = Arkycit +liquid.gallium.name = Gálium +liquid.ozone.name = Ozón +liquid.hydrogen.name = Vodík +liquid.nitrogen.name = Dusík +liquid.cyanogen.name = Kyanogen unit.dagger.name = Dýka unit.mace.name = Palcát @@ -1337,12 +1463,12 @@ unit.stell.name = Stell unit.locus.name = Locus unit.precept.name = Precept unit.vanquish.name = Vanquish -unit.conquer.name = Conquer +unit.conquer.name = Dobyvatel unit.merui.name = Merui unit.cleroi.name = Cleroi -unit.anthicus.name = Anthicus +unit.anthicus.name = Antikus unit.tecta.name = Tecta -unit.collaris.name = Collaris +unit.collaris.name = Kolaris unit.elude.name = Elude unit.avert.name = Avert unit.obviate.name = Obviate @@ -1352,7 +1478,7 @@ unit.evoke.name = Evoke unit.incite.name = Incite unit.emanate.name = Emanate unit.manifold.name = Manifold -unit.assembly-drone.name = Assembly Drone +unit.assembly-drone.name = Montážní Dron unit.latum.name = Latum unit.renale.name = Renale @@ -1363,7 +1489,7 @@ block.basalt-boulder.name = Čedičový balvan block.grass.name = Tráva block.molten-slag.name = Struska block.pooled-cryofluid.name = Chladící kapalina -block.space.name = Vesmír +block.space.name = Vesmír block.salt.name = Sůl block.salt-wall.name = Solné skály block.pebbles.name = Oblázky @@ -1467,8 +1593,9 @@ block.distributor.name = Rozdělovač block.sorter.name = Třídička block.inverted-sorter.name = Obrácená třídička block.message.name = Zpráva -block.reinforced-message.name = Reinforced Message -block.world-message.name = World Message +block.reinforced-message.name = Posílená Zpráva +block.world-message.name = Světová Zpráva +block.world-switch.name = World Switch block.illuminator.name = Osvětlovač block.overflow-gate.name = Brána s přepadem block.underflow-gate.name = Brána s podtokem @@ -1565,12 +1692,12 @@ block.payload-router.name = Směřovač nákladu block.duct.name = Potrubí block.duct-router.name = Potrubní Směrovač block.duct-bridge.name = Potrubní Most -block.large-payload-mass-driver.name = Large Payload Mass Driver +block.large-payload-mass-driver.name = Velká Nákladní Transportní Věž block.payload-void.name = Černá díra na náklad block.payload-source.name = Zdroj nákladů block.disassembler.name = Rozebírač block.silicon-crucible.name = Tavicí tyglík pro křemík -block.overdrive-dome.name = Velká urychlující kupole +block.overdrive-dome.name = Velká urychlující kupole block.interplanetary-accelerator.name = Meziplanetární urychlovač block.constructor.name = Konstruktor block.constructor.description = Vyrábí konstrukce až do velikosti dlaždic 2x2. @@ -1582,23 +1709,23 @@ block.payload-loader.name = Nákladový Nakládač block.payload-loader.description = Nakládá kapaliny a věci z bloků. block.payload-unloader.name = Nákladový Vykládač block.payload-unloader.description = Vykládá kapaliny a věci z bloků. -block.heat-source.name = Heat Source -block.heat-source.description = A 1x1 block that gives virtualy infinite heat. -block.empty.name = Empty -block.rhyolite-crater.name = Rhyolite Crater -block.rough-rhyolite.name = Rough Rhyolite -block.regolith.name = Regolith -block.yellow-stone.name = Yellow Stone -block.carbon-stone.name = Carbon Stone +block.heat-source.name = Zdroj Tepla +block.heat-source.description = 1x1 blok, který dává virtuálně někonečné teplo. +block.empty.name = Prázdné +block.rhyolite-crater.name = Ryolitní Kráter +block.rough-rhyolite.name = Hrubý Ryolit +block.regolith.name = Regolit +block.yellow-stone.name = Žlutý Kámen +block.carbon-stone.name = Krabonový Kámen block.ferric-stone.name = Ferric Stone block.ferric-craters.name = Ferric Craters block.beryllic-stone.name = Beryllic Stone block.crystalline-stone.name = Crystalline Stone -block.crystal-floor.name = Crystal Floor -block.yellow-stone-plates.name = Yellow Stone Plates -block.red-stone.name = Red Stone -block.dense-red-stone.name = Dense Red Stone -block.red-ice.name = Red Ice +block.crystal-floor.name = Křišťalová Zem +block.yellow-stone-plates.name = Žluté Kamenné Pláty +block.red-stone.name = Červený Kámen +block.dense-red-stone.name = Hustý Červený Kámen +block.red-ice.name = Červený Led block.arkycite-floor.name = Arkycite Floor block.arkyic-stone.name = Arkyic Stone block.rhyolite-vent.name = Rhyolite Vent @@ -1609,21 +1736,21 @@ block.red-stone-vent.name = Red Stone Vent block.crystalline-vent.name = Crystalline Vent block.redmat.name = Redmat block.bluemat.name = Bluemat -block.core-zone.name = Core Zone +block.core-zone.name = Jádrová Zona block.regolith-wall.name = Regolith Wall block.yellow-stone-wall.name = Yellow Stone Wall block.rhyolite-wall.name = Rhyolite Wall -block.carbon-wall.name = Carbon Wall +block.carbon-wall.name = Krabonová Zeď block.ferric-stone-wall.name = Ferric Stone Wall block.beryllic-stone-wall.name = Beryllic Stone Wall block.arkyic-wall.name = Arkyic Wall block.crystalline-stone-wall.name = Crystalline Stone Wall -block.red-ice-wall.name = Red Ice Wall -block.red-stone-wall.name = Red Stone Wall -block.red-diamond-wall.name = Red Diamond Wall +block.red-ice-wall.name = Červená Ledová Zeď +block.red-stone-wall.name = Červená Kamenná Zeď +block.red-diamond-wall.name = Červená Diamantová Zeď block.redweed.name = Redweed block.pur-bush.name = Pur Bush -block.yellowcoral.name = Yellowcoral +block.yellowcoral.name = Žlutý Korál block.carbon-boulder.name = Carbon Boulder block.ferric-boulder.name = Ferric Boulder block.beryllic-boulder.name = Beryllic Boulder @@ -1631,32 +1758,32 @@ block.yellow-stone-boulder.name = Yellow Stone Boulder block.arkyic-boulder.name = Arkyic Boulder block.crystal-cluster.name = Crystal Cluster block.vibrant-crystal-cluster.name = Vibrant Crystal Cluster -block.crystal-blocks.name = Crystal Blocks -block.crystal-orbs.name = Crystal Orbs +block.crystal-blocks.name = Křišťálové Bloky +block.crystal-orbs.name = Křišťálové Orby block.crystalline-boulder.name = Crystalline Boulder block.red-ice-boulder.name = Red Ice Boulder block.rhyolite-boulder.name = Rhyolite Boulder block.red-stone-boulder.name = Red Stone Boulder block.graphitic-wall.name = Graphitic Wall block.silicon-arc-furnace.name = Silicon Arc Furnace -block.electrolyzer.name = Electrolyzer +block.electrolyzer.name = Elektrolyzer block.atmospheric-concentrator.name = Atmospheric Concentrator block.oxidation-chamber.name = Oxidation Chamber -block.electric-heater.name = Electric Heater +block.electric-heater.name = Elektrický Ohřívač block.slag-heater.name = Slag Heater block.phase-heater.name = Phase Heater block.heat-redirector.name = Heat Redirector -block.heat-router.name = Heat Router +block.heat-router.name = Tepelný Směrovač block.slag-incinerator.name = Slag Incinerator block.carbide-crucible.name = Carbide Crucible block.slag-centrifuge.name = Slag Centrifuge block.surge-crucible.name = Surge Crucible block.cyanogen-synthesizer.name = Cyanogen Synthesizer block.phase-synthesizer.name = Phase Synthesizer -block.heat-reactor.name = Heat Reactor +block.heat-reactor.name = Tepelný Reaktor block.beryllium-wall.name = Beryllium Wall block.beryllium-wall-large.name = Large Beryllium Wall -block.tungsten-wall.name = Tungsten Wall +block.tungsten-wall.name = Wolframová Zeď block.tungsten-wall-large.name = Large Tungsten Wall block.blast-door.name = Blast Door block.carbide-wall.name = Carbide Wall @@ -1668,7 +1795,7 @@ block.radar.name = Radar block.build-tower.name = Build Tower block.regen-projector.name = Regen Projector block.shockwave-tower.name = Shockwave Tower -block.shield-projector.name = Shield Projector +block.shield-projector.name = Štítový Projektor block.large-shield-projector.name = Large Shield Projector block.armored-duct.name = Armored Duct block.overflow-duct.name = Overflow Duct @@ -1709,7 +1836,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1720,20 +1846,20 @@ block.reinforced-payload-conveyor.name = Reinforced Payload Conveyor block.reinforced-payload-router.name = Reinforced Payload Router block.payload-mass-driver.name = Payload Mass Driver block.small-deconstructor.name = Small Deconstructor -block.canvas.name = Canvas -block.world-processor.name = World Processor -block.world-cell.name = World Cell -block.tank-fabricator.name = Tank Fabricator +block.canvas.name = Plátno +block.world-processor.name = Světový Procesor +block.world-cell.name = Světová Buňka +block.tank-fabricator.name = Frabrikátor tanků block.mech-fabricator.name = Mech Fabricator block.ship-fabricator.name = Ship Fabricator block.prime-refabricator.name = Prime Refabricator block.unit-repair-tower.name = Unit Repair Tower block.diffuse.name = Diffuse -block.basic-assembler-module.name = Basic Assembler Module +block.basic-assembler-module.name = Běžný Skládací Modul block.smite.name = Smite block.malign.name = Malign -block.flux-reactor.name = Flux Reactor -block.neoplasia-reactor.name = Neoplasia Reactor +block.flux-reactor.name = Fluxní Reaktor +block.neoplasia-reactor.name = Neoplasia Reaktor block.switch.name = Přepínač block.micro-processor.name = Mikroprocesor @@ -1828,9 +1954,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -1938,8 +2068,8 @@ block.distributor.description = Rozděluje vstupní položky rovnoměrně do sed block.overflow-gate.description = Pokud je směr vpřed ucpán, posílá vstupní položky do stran. Nelze použít vedle jiné brány. block.underflow-gate.description = Pokud je směr do stran ucpán, posílá vstupní položky vpřed. Nelze použít vedle jiné brány. block.mass-driver.description = Konstrukce pro přepravu položek na velkou vzdálenost. Shromáždí dávku položek a vystřelí ji k dalšímu hromadnému přenašeči. -block.mechanical-pump.description = Pumpuje kapalinu a předává ji dál. Nevyžaduje energii. -block.rotary-pump.description = Pumpuje kapalinu a předává ji dál. Vyžaduje energii. +block.mechanical-pump.description = Pumpuje kapalinu a předává ji dál. Nevyžaduje energii. +block.rotary-pump.description = Pumpuje kapalinu a předává ji dál. Vyžaduje energii. block.impulse-pump.description = Pumpuje kapalinu a předává ji dál. block.conduit.description = Přepravuje kapaliny vpřed. Používá se spolu s pumpami a dalším potrubím. block.pulse-conduit.description = Přepravuje kapaliny vpřed. Přepravuje kapaliny rychleji a ukládá jich více, než standadní potrubí. @@ -1963,7 +2093,7 @@ block.differential-generator.description = Generuje velké množství energie. V block.rtg-generator.description = Používá teplo z rozpadajících se radioaktivních materiálů k výrobě energie v malých dávkách. block.solar-panel.description = Vytváří malého množství energie ze Slunce. block.solar-panel-large.description = Vytváří malého množství energie ze Slunce. Efektivnější, než základní solárí panel. -block.thorium-reactor.description = Generuje významné množství energie z thoria. Vyžaduje nepřetržité chlazení. Je-li chlazen nedostatečně, způsobí značnou explozi. +block.thorium-reactor.description = Generuje významné množství energie z thoria. Vyžaduje nepřetržité chlazení. Je-li chlazen nedostatečně, způsobí značnou explozi. block.impact-reactor.description = Vytváří při špičkové účinnosti velké množství energi. Vyspělý generátor, schopný vytvářet při maximálním výkonu obrovská množství energie. Vyžaduje však značné množství energie pro nastartování celého procesu. block.mechanical-drill.description = Když je umístěn na rudu, generuje donekonečna odpovídající položky, pomalou rychlostí. Použitelný jen pro těžení základních surovin. block.pneumatic-drill.description = Vylepšený vrt, který je schopen těžit i titan. Těží vyšší rychlostí než mechanický vrt. @@ -1982,7 +2112,7 @@ block.core-nucleus.details = Třetí a konečná iterace vývoje jádra. block.vault.description = Ukládá velké množství předmětů od každého typu. K vyskladnění věcí z trezoru je možné použít odbavovač. block.container.description = Ukládá menší množství předmětů od každého typu. K vyskladnění věcí z kontejneru je možné použít odbavovač. block.unloader.description = Vyskladňuje vybrané položky z okolních bloků. -block.launch-pad.description = Vysílá dávky předmětů do přilehlých sektorů. +block.launch-pad.description = Vysílá dávky předmětů do přilehlých sektorů. block.launch-pad.details = Sub-orbital system for point-to-point transportation of resources. Payload pods are fragile and incapable of surviving re-entry. block.duo.description = Střílí střídavé dávky kulek na nepřátele. block.scatter.description = Střílí kusy olova, pláty šrotu nebo střepy metaskla na nepřátelské letectvo. @@ -2025,7 +2155,6 @@ block.logic-display.description = Zobrazuje libovolnou grafiku z logického proc block.large-logic-display.description = Zobrazuje libovolnou grafiku z logického procesoru. block.interplanetary-accelerator.description = Masivní elektromagnetická věž. Urychlí jádro na únikovou rychlost pro meziplanetární vyslání. block.repair-turret.description = Nepřetržitě opravuje nejblížší poškozenou jednotku v jeho blízkosti. Lze volitelně dodávat chlazení pro jeho posílení. -block.payload-propulsion-tower.description = Dálková nákladní transportní věž. Střílí náklad do dalších propojených nákladních transportních věží. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2061,7 +2190,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2180,6 +2308,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Přečte číslo z připojené paměti. lst.write = Zapíše číslo do připojené paměti. lst.print = Přídá text do vypisovacího buferu.\nNezobrazí nic dokud [accent]Print Flush[] je použít. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Přídá operaci do vykreslovacího buferu.\nNezobrazí nic dokud [accent]Draw Flush[] je použít. lst.drawflush = Provede všechny [accent]Draw[] operace na zobrazovač logiky. Pak vyčistí vykreslovací bufer. lst.printflush = Provede všechny [accent]Print[] operace do zprávy. Pak vyčistí vypisovací bufer. @@ -2202,6 +2331,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2213,6 +2344,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Stavba budov pomoci jednotek kontrolované procesorem neni povolené. @@ -2228,20 +2400,21 @@ laccess.dead = Zda jednotka/budova je mrtvá/zničená nebo již neplatná. laccess.controlled = Vrací:\n[accent]@ctrlProcessor[] pokud kontroler jednotky je procesor\n[accent]@ctrlPlayer[] pokud kontroloer jednotky/budovy je hráč\n[accent]@ctrlFormation[] pokud jednotka je ve formaci\nJiank, 0. laccess.progress = Průběh akce, 0 do 1.\nVrací průběh výroby, přebití věže nebo stavby. laccess.speed = Top speed of a unit, in tiles/sec. -lcategory.unknown = Unknown -lcategory.unknown.description = Uncategorized instructions. -lcategory.io = Input & Output -lcategory.io.description = Modify contents of memory blocks and processor buffers. -lcategory.block = Block Control -lcategory.block.description = Interact with blocks. -lcategory.operation = Operations -lcategory.operation.description = Logical operations. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. +lcategory.unknown = Neznámé +lcategory.unknown.description = Nezařazené instrukce. +lcategory.io = Vstup a Výstup +lcategory.io.description = Upravuje obsah paměťních bloků a procesorových pamětí. +lcategory.block = Ovládaní Bloku +lcategory.block.description = Interaktovat s bloky. +lcategory.operation = Operace +lcategory.operation.description = Logické operace. lcategory.control = Flow Control lcategory.control.description = Manage execution order. lcategory.unit = Unit Control lcategory.unit.description = Give units commands. -lcategory.world = World -lcategory.world.description = Control how the world behaves. +lcategory.world = Svět +lcategory.world.description = Ovládá, jak se svět chová. graphicstype.clear = Vyplní zobrazovač danou barvou. graphicstype.color = Vybere barvu pro další vykreslovací operace. @@ -2254,6 +2427,7 @@ graphicstype.poly = Vyplní pravidelný mnohoúhelník. graphicstype.linepoly = Nakreslí obrys pravidelného mnohoúhelníku. graphicstype.triangle = Vyplní trojúhelník. graphicstype.image = Vykreslí obrázek nějakého obsahu.\nnapř.: [accent]@router[] nebo [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Vždy pravda. lenum.idiv = Číselné dělení. @@ -2273,6 +2447,7 @@ lenum.xor = Bitový XOR. lenum.min = Menší číslo ze dvou čísel. lenum.max = Větší číslo ze dvou čísel. lenum.angle = Úhel vektoru ve stupních. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Délka vektoru. lenum.sin = Sinus, ve stupních. @@ -2347,6 +2522,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Pohnout se na určité místo. lenum.approach = Přiblížit se k určité pozici s určitou vzdálenosti. lenum.pathfind = Nalézt cestu k nepřátelskému spawnu/bodu zrození +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Střelit na pozici. lenum.targetp = Vystřelí na jednotku/budovu s rychlostní předpovědí lenum.itemdrop = Zahodit věc. @@ -2357,8 +2533,13 @@ lenum.payenter = Vstoupit/přistat na nákladní blok, na kterém jednotka je. lenum.flag = Číselné označení (flag) jednotky. lenum.mine = Těžit na pozici. lenum.build = Postavit strukturu. -lenum.getblock = Získat budovu a typ na dané pozici.\nJednotka musí být v dosahu dané pozice.\nSolidní non-budovy budou mít typ [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Zkontrolovat, jestli jednotka je blízko dané pozice. lenum.boost = Začít/Přestat posilovat. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 73462d394f..c5c9c3d96a 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Sort by stars schematic = Skabelon schematic.add = Gem skabelon... schematics = Skabeloner +schematic.search = Search schematics... schematic.replace = En skabelon med det navn eksisterer allerede - vil du erstatte denne? schematic.exists = En skabelon med det navn eksisterer allerede. schematic.import = Importer skabelon ... @@ -68,7 +69,7 @@ schematic.shareworkshop = Del på Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Vend skabelon schematic.saved = Skabelon gemt. schematic.delete.confirm = Denne skabelon vil være væk for altid. -schematic.rename = Omdøb skabelon +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blokke schematic.disabled = [scarlet]Skabeloner er slået fra.[]\nDu har ikke lov til at bruge skabeloner på denne [accent]bane[] eller [accent]server. schematic.tags = Tags: @@ -77,6 +78,7 @@ schematic.addtag = Add Tag schematic.texttag = Text Tag schematic.icontag = Icon Tag schematic.renametag = Rename Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Delete this tag completely? schematic.tagexists = That tag already exists. stats = Stats @@ -249,11 +251,19 @@ trace = Følg spiller trace.playername = Spiller-navn: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Unik ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobil client: [accent]{0} trace.modclient = Brugerdefineret klient: [accent]{0} trace.times.joined = Times Joined: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Ugyldig klient-ID! Indsend en fejlrapport. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Banlysninger server.bans.none = Ingen banned Spillere fundet! server.admins = Administratorer @@ -267,10 +277,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Brugerdefineret version confirmban = Er du sikker på, at du ønsker at banne denne spiller? confirmkick = Er du sikker på, at du ønsker at kicke denne spiller? -confirmvotekick = Er du sikker på, at du ønsker at vote-kicke denne spiller? confirmunban = Er du sikker på, at du ønsker at fjerne banlysning af denne spiller? confirmadmin = Er du sikker på, at du ønsker at gøre denne spiller til administrator? confirmunadmin = Er du sikker på at du ønsker at fjerne administrator-rolle fra denne spiller? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Deltag i spil joingame.ip = Addresse: disconnect = Afbryd forbindelse @@ -326,12 +337,23 @@ open = Åben customize = Customize Rules cancel = Afblæs command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Åben Link copylink = Kopier Link back = Tilbage @@ -378,9 +400,9 @@ custom = Brugerdefineret builtin = Indbygget map.delete.confirm = Er du sikker på, at du vil slette dette spil? Dette kan ikke blive genskabt! map.random = [accent]Tilfældig bane -map.nospawn = Denne bane har ikke nogen kerne, spillere kan opstå fra! Tilføj en [accent]orange[] kerne til denne bane via bane-editoren. -map.nospawn.pvp = Denne bane har ikke nogen kerne, modstandere kan opstå fra! Tilføj en [SCARLET]ikke-orange[] kerne til banen via bane-editoren. -map.nospawn.attack = Denne bane har ikke nogen kerne, spillerne kan angribe! Tilføj en [SCARLET]rød[] kerne til banen via bane-editoren. +map.nospawn = Denne bane har ikke nogen kerne, spillere kan opstå fra! Tilføj en {0} kerne til denne bane via bane-editoren. +map.nospawn.pvp = Denne bane har ikke nogen kerne, modstandere kan opstå fra! Tilføj en [scarlet]ikke-orange[] kerne til banen via bane-editoren. +map.nospawn.attack = Denne bane har ikke nogen kerne, spillerne kan angribe! Tilføj en {0} kerne til banen via bane-editoren. map.invalid = Kunne ikke indlæse bane: bane-filen er i stykker. workshop.update = Opdater genstand workshop.error = Der skete en fejl ved indlæsning af Workshop-detaljer: {0} @@ -412,6 +434,12 @@ editor.waves = Bølge: editor.rules = Regler: editor.generation = Generering: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Ændr i spil editor.playtest = Playtest editor.publish.workshop = Publicer på Workshop @@ -455,7 +483,7 @@ waves.sort.begin = Begin waves.sort.health = Health waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Hide All waves.units.show = Show All @@ -467,6 +495,8 @@ editor.default = [lightgray] details = Detaljer... edit = Rediger... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Navn: editor.spawn = Påkald enhed editor.removeunit = Fjern enhed @@ -478,6 +508,7 @@ editor.errorlegacy = Denne bane er forældet, og bruger et eftermægle-format, d editor.errornot = Dette er ikke en bane-fil. editor.errorheader = Denne bane er enten ugyldig eller i stykker. editor.errorname = Banen har ikke noget navn. Forsøger du at gemme filen? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Opdater editor.randomize = Tilfældiggør editor.moveup = Move Up @@ -489,6 +520,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Omskaler editor.loadmap = Indlæs bane editor.savemap = Gem bane +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Gemt! editor.save.noname = Din bane har intet navn! Giv den et navn under 'bane-information'-menuen. editor.save.overwrite = Din bane overskriver en indbygget bane! Vælge et andet navn under 'bane-information'-menuen. @@ -527,6 +559,8 @@ toolmode.eraseores = Udvisk malm toolmode.eraseores.description = Udvisker udelukkende malm. toolmode.fillteams = Udfyld hold toolmode.fillteams.description = Udfylder hold i stedet for blokke. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Tegn hold toolmode.drawteams.description = Tegner hold i stedet for blokke. toolmode.underliquid = Under Liquids @@ -549,6 +583,7 @@ filter.clear = Ryd filter.option.ignore = Ignorer filter.scatter = Spreder filter.terrain = Terræn +filter.logic = Logic filter.option.scale = Skaler filter.option.chance = Chance filter.option.mag = Størrelse @@ -571,6 +606,25 @@ filter.option.floor2 = Sekundært gulv filter.option.threshold2 = Sekundær terskel filter.option.radius = Radius filter.option.percentile = Percentil +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Bredde: height = Højde: @@ -621,9 +675,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -643,12 +700,11 @@ objective.command = [accent]Command Units objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ loadout = Udrustning -resources = Resurser +resources = Resurser resources.max = Max bannedblocks = Banlyste blokke objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Tilføj alle @@ -671,7 +727,7 @@ error.any = Ukendt netværksfejl. error.bloom = Kunne ikke etablere bloom-effekt.\nMåske understøtter din enhed den ikke. weather.rain.name = Regn -weather.snow.name = Sne +weather.snowing.name = Sne weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Tåge @@ -707,7 +763,8 @@ sector.curlost = Sector Lost sector.missingresources = [scarlet]Ikke nok resurser i kernen. sector.attacked = Sector [accent]{0}[white] under attack! sector.lost = Sector [accent]{0}[white] lost! -sector.captured = Sector [accent]{0}[white]captured! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -915,6 +972,7 @@ stat.abilities = Evner stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -925,14 +983,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Kraftfelt +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Reparationsfelt +ability.repairfield.description = Repairs nearby units ability.statusfield = Statusfelt -ability.unitspawn = {0} Fabrik +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Fabrik +ability.unitspawn.description = Constructs units ability.shieldregenfield = Skjold-regenereringsfelt +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Kræver bedre bor @@ -972,6 +1063,7 @@ bullet.splashdamage = [stat]{0}[lightgray] områdeskade ~[stat] {1}[lightgray] f bullet.incendiary = [stat]brændfarlig bullet.homing = [stat]målsøgende bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1007,6 +1099,7 @@ unit.items = genstande unit.thousands = t unit.millions = mio unit.billions = mia +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Generel @@ -1027,6 +1120,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-pause af bygning setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animeret vand setting.animatedshields.name = Animeret skjold @@ -1073,13 +1167,14 @@ setting.position.name = Vis spillerposition setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Musik-volumen setting.atmosphere.name = Vis planet-atmosfære +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Stemningslyde-volumen setting.mutemusic.name = Forstum musik setting.sfxvol.name = SFX-volumen setting.mutesound.name = Forstum lyde setting.crashreport.name = Send anonyme fejlrapporter setting.savecreate.name = Gem automatisk -setting.publichost.name = Synlighed af offentlige spil +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Spiller-grænse setting.chatopacity.name = Chat-gennemsigtighed setting.lasersopacity.name = Strøm-laser-gennemsigtighed @@ -1087,6 +1182,8 @@ setting.bridgeopacity.name = Bro-gennemsigtighed setting.playerchat.name = Vis spillers bobbel-chat setting.showweather.name = Show Weather Graphics setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Tilpas grænsefladen til at vise hak +setting.macnotch.description = Genstart påkrævet for at anvende ændringer steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Bemærk at beta-versioner af spillet ikke kan tilslutte sig offentlige spil. @@ -1097,6 +1194,7 @@ keybind.title = Rekonfigurer taster keybinds.mobile = [scarlet]De fleste taster er ikke relevante for mobil. Kun basal bevægelse er understøttet. category.general.name = Generel category.view.name = Billede +category.command.name = Unit Command category.multiplayer.name = Spil med andre category.blocks.name = Blokvalg placement.blockselectkeys = \n[lightgray]Tast: [{0}, @@ -1114,6 +1212,24 @@ keybind.mouse_move.name = Følg musen keybind.pan.name = Panorer billede keybind.boost.name = Forstærk keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Vælg region keybind.schematic_menu.name = Skabelon-visning @@ -1177,17 +1293,25 @@ mode.pvp.description = Spil mod andre spillere lokalt.\n[gray]Kræver mindst to mode.attack.name = Angrib mode.attack.description = Destruer fjendens base. \n[gray]Kræver en rød kerne i banen, for at spille. mode.custom = Brugerdefinerede regler +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Uendelig resurser rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reaktor-eksplosioner rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors rules.schematic = Skabeloner tilladt rules.wavetimer = Bølge-æggeur rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Bølger +rules.airUseSpawns = Air units use spawn points rules.attack = Angrebsmode +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1206,6 +1330,7 @@ rules.unitdamagemultiplier = Enheds-skade-forstærker rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Radius af fjendtlig kernes ubebyggelig zone:[lightgray] (felter) @@ -1238,6 +1363,8 @@ rules.weather = Vejr rules.weather.frequency = Frekvens: rules.weather.always = Always rules.weather.duration = Varighed: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Genstande content.liquid.name = Væsker @@ -1455,6 +1582,7 @@ block.inverted-sorter.name = Omvendt Filter block.message.name = Besked block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Lyskilde block.overflow-gate.name = Overflods-låge block.underflow-gate.name = Underflods-låge @@ -1695,7 +1823,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1813,9 +1940,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2007,7 +2138,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2043,7 +2173,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2160,6 +2289,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2182,6 +2312,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2193,6 +2325,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2205,6 +2378,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2230,6 +2404,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2247,6 +2422,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2308,6 +2484,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2318,8 +2495,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 8b630402bd..3da8778462 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = Nach Sternen sortieren schematic = Entwurf schematic.add = Entwurf speichern... schematics = Entwürfe +schematic.search = Search schematics... schematic.replace = Es gibt bereits einen Entwurf mit diesem Namen. Diesen ersetzen? schematic.exists = Es gibt schon einen Entwurf mit diesem Namen. schematic.import = Entwurf importieren... @@ -69,7 +70,7 @@ schematic.shareworkshop = Im Workshop teilen schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Entwurf umkehren schematic.saved = Entwurf gespeichert. schematic.delete.confirm = Dieser Entwurf wird vollständig vernichtet. -schematic.rename = Entwurf umbenennen +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} Blöcke schematic.disabled = [scarlet]Entwürfe deaktiviert[]\nAuf dieser [accent]Karte[] oder [accent]Server[] dürfen keine Entwürfe verwendet werden. schematic.tags = Tags: @@ -78,6 +79,7 @@ schematic.addtag = Tag hinzufügen schematic.texttag = Text-Tag schematic.icontag = Bild-Tag schematic.renametag = Tag umbenennen +schematic.tagged = {0} tagged schematic.tagdelconfirm = Dieses Tag wirklich löschen? schematic.tagexists = Dieses Tag gibt es schon. @@ -256,11 +258,19 @@ trace = Spieler verfolgen trace.playername = Spielername: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobiler Client: [accent]{0} trace.modclient = Gemoddeter Client: [accent]{0} trace.times.joined = Beigetreten: [accent]{0}[] Mal trace.times.kicked = Rausgeworfen: [accent]{0}[] Mal +trace.ips = IPs: +trace.names = Names: invalidid = Ungültige Client-ID! Berichte den Fehler. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Verbannungen server.bans.none = Keine verbannten Spieler gefunden! server.admins = Administratoren @@ -274,10 +284,11 @@ server.version = [lightgray]Version: {0} server.custombuild = [accent]Benutzerdefinierter Build confirmban = Bist du sicher, dass du diesen Spieler verbannen möchtest? confirmkick = Bist du sicher, dass du diesen Spieler rauswerfen willst? -confirmvotekick = Bist du sicher, dass du darüber abstimmen willst, diesen Spieler rauszuwerfen? confirmunban = Bist du sicher, dass du die Verbannung des Spielers rückgängig machen willst? confirmadmin = Bist du sicher, dass du diesen Spieler zu einem Administrator machen möchtest? confirmunadmin = Bist du sicher, dass dieser Spieler kein Administrator mehr sein soll? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Spiel beitreten joingame.ip = IP: disconnect = Verbindung unterbrochen. @@ -333,12 +344,23 @@ open = Öffnen customize = Anpassen cancel = Abbruch command = Befehl +command.queue = [lightgray][Queuing] command.mine = Abbauen command.repair = Reparieren command.rebuild = Wiederaufbauen command.assist = Spieler unterstützen command.move = Bewegen command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Link öffnen copylink = Link kopieren back = Zurück @@ -385,9 +407,9 @@ custom = Benutzerdefiniert builtin = Enthalten map.delete.confirm = Bist du sicher, dass du diese Karte löschen willst? Dies kann nicht rückgängig gemacht werden! map.random = [accent]Zufällige Karte -map.nospawn = Diese Karte hat keine Kerne, in denen die Spieler beginnen können! Füge einen [#{0}]{1}[] Kern zu dieser Karte im Editor hinzu. -map.nospawn.pvp = Diese Karte hat keine Kerne für die gegnerischen Spieler! Füge über den Editor [scarlet] nicht-orange[] Kerne zu dieser Karte hinzu. -map.nospawn.attack = Diese Karte hat keine gegnerischen Kerne, die Spieler angreifen können! Füge über den Editor a [#{0}]{1}[] Kerne zu dieser Karte hinzu. +map.nospawn = Diese Karte hat keine Kerne, in denen die Spieler beginnen können! Füge einen {0} Kern zu dieser Karte im Editor hinzu. +map.nospawn.pvp = Diese Karte hat keine Kerne für die gegnerischen Spieler! Füge über den Editor [scarlet]nicht-orange[] Kerne zu dieser Karte hinzu. +map.nospawn.attack = Diese Karte hat keine gegnerischen Kerne, die Spieler angreifen können! Füge über den Editor a {0} Kerne zu dieser Karte hinzu. map.invalid = Fehler beim Laden der Karte: Beschädigte oder ungültige Kartendatei. workshop.update = Objekt aktualisieren workshop.error = Fehler beim Laden von Workshop-Details: {0} @@ -419,6 +441,12 @@ editor.waves = Wellen editor.rules = Regeln editor.generation = Generator editor.objectives = Ziele +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Im Spiel bearbeiten editor.playtest = Playtest editor.publish.workshop = Im Workshop veröffentlichen @@ -462,7 +490,7 @@ waves.sort.begin = Anfang waves.sort.health = Lebenspunkte waves.sort.type = Sorte waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Alle verstecken waves.units.show = Alle anzeigen @@ -475,6 +503,8 @@ editor.default = [lightgray] details = Details edit = Bearbeiten variables = Variablen +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Name: editor.spawn = Spawnbereich editor.removeunit = Bereich entfernen @@ -486,6 +516,7 @@ editor.errorlegacy = Diese Karte ist zu alt und benutzt ein veraltetes Kartenfor editor.errornot = Dies ist keine Kartendatei. editor.errorheader = Diese Karte ist entweder nicht gültig oder beschädigt. editor.errorname = Karte hat keinen Namen. +editor.errorlocales = Error reading invalid locale bundles. editor.update = Aktualisieren editor.randomize = Zufällig anordnen editor.moveup = Hochschieben @@ -497,6 +528,7 @@ editor.sectorgenerate = Sektor generieren editor.resize = Größe\nanpassen editor.loadmap = Karte\nladen editor.savemap = Karte\nspeichern +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Gespeichert! editor.save.noname = Deine Karte hat keinen Namen! Setze einen Namen im [accent]Karten-Info[]-Menü. editor.save.overwrite = Deine Karte überschreibt eine Standardkarte! Wähle einen anderen Karten Namen im [accent]Karten-Info[]-Menü. @@ -535,6 +567,8 @@ toolmode.eraseores = Erze löschen toolmode.eraseores.description = Löscht nur Erze. toolmode.fillteams = Teams ausfüllen toolmode.fillteams.description = Füllt Teams aus statt Blöcke. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Teams zeichnen toolmode.drawteams.description = Zeichnet Teams statt Blöcke. #unused @@ -559,6 +593,7 @@ filter.clear = Löschen filter.option.ignore = Ignorieren filter.scatter = Streuen filter.terrain = Landschaft +filter.logic = Logic filter.option.scale = Skalierung filter.option.chance = Wahrscheinlichkeit @@ -582,6 +617,25 @@ filter.option.floor2 = Sekundärer Boden filter.option.threshold2 = Sekundärer Grenzwert filter.option.radius = Radius filter.option.percentile = Perzentil +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Breite: height = Höhe: @@ -634,9 +688,12 @@ objective.commandmode.name = Steuerungsmodus objective.flag.name = Flag marker.shapetext.name = Geformter Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Form marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Hintergrund marker.outline = Umriss @@ -651,7 +708,7 @@ objective.build = [accent]Baue: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.buildunit = [accent]Baue Einheit: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.destroyunits = [accent]Zerstöre: [][lightgray]{0}[]x Units objective.enemiesapproaching = [accent]Gegner in [lightgray]{0}[] -objective.enemyescelating = [accent]Gegnerische Lufteinheit-Produktion steigert sich in [lightgray]{0}[] +objective.enemyescelating = [accent]Gegnerische Einheit-Produktion steigert sich in [lightgray]{0}[] objective.enemyairunits = [accent]Gegnerische Lufteinheit-Produktion startet in [lightgray]{0}[] objective.destroycore = [accent]Gegnerischen Kern zerstören objective.command = [accent]Einheiten Steuern @@ -665,7 +722,6 @@ resources.max = Max bannedblocks = Gesperrte Blöcke objectives = Ziele bannedunits = Gesperrte Einheiten -rules.hidebannedblocks = Gesperrte Blöcke verstecken bannedunits.whitelist = Gesperrte Einheiten als Whitelist bannedblocks.whitelist = Gesperrte Blöcke als Whitelist addall = Alle hinzufügen @@ -688,7 +744,7 @@ error.any = Unbekannter Netzwerkfehler. error.bloom = Bloom konnte nicht initialisiert werden.\nEs kann sein, dass dein Gerät es nicht unterstützt. weather.rain.name = Regen -weather.snow.name = Schnee +weather.snowing.name = Schnee weather.sandstorm.name = Sandsturm weather.sporestorm.name = Sporensturm weather.fog.name = Nebel @@ -725,8 +781,8 @@ sector.curlost = Sektor verloren sector.missingresources = [scarlet]Fehlende Kernressourcen sector.attacked = Sektor [accent]{0}[white] wird angegriffen! sector.lost = Sektor [accent]{0}[white] verloren! -#note: the missing space in the line below is intentional -sector.captured = Sektor [accent]{0}[white]erobert! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Bild ändern sector.noswitch.title = Kann Sektoren nicht wechseln sector.noswitch = Du kannst nicht zwischen Sektoren wechseln, wenn ein anderer angegriffen wird.\n\nSektor: [accent]{0}[] auf [accent]{1}[] @@ -938,6 +994,7 @@ stat.abilities = Fähigkeiten stat.canboost = Kann boosten stat.flying = Flug stat.ammouse = Muntionsverbrauch +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Schaden-Multiplikator stat.healthmultiplier = Lebenspunkte-Multiplikator stat.speedmultiplier = Geschwindigkeit-Multiplikator @@ -948,14 +1005,47 @@ stat.immunities = Immunitäten stat.healing = Heilung ability.forcefield = Kraftfeld +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Heilungsfeld -ability.statusfield = {0} Statusfeld -ability.unitspawn = {0} Fabrik -ability.shieldregenfield = Schild-regenerations-Feld +ability.repairfield.description = Repairs nearby units +ability.statusfield = Statusfeld +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Fabrik +ability.unitspawn.description = Constructs units +ability.shieldregenfield = Schildregenerationsfeld +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Bewegungsblitze +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Lichtbogenschild +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Heilungsunterdrückungsfeld -ability.energyfield = Energiefeld: [accent]{0}[] Schaden ~ [accent]{1}[] Blöcke / [accent]{2}[] Ziele +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energiefeld +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Nur Kernablage möglich bar.drilltierreq = Besserer Bohrer benötigt @@ -995,6 +1085,7 @@ bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray bullet.incendiary = [stat]entzündend bullet.homing = [stat]zielsuchend bullet.armorpierce = [stat]panzerbrechend +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] Heilungsunterdrückung ~ [stat]{1}[lightgray] Kacheln bullet.interval = [stat]{0}/sec[lightgray] Intervallgeschosse: bullet.frags = [stat]{0}[lightgray]x Splittergeschosse: @@ -1030,6 +1121,7 @@ unit.items = Materialeinheiten unit.thousands = k unit.millions = Mio unit.billions = Mrd +unit.shots = shots unit.pershot = /Schuss category.purpose = Beschreibung category.general = Allgemeines @@ -1040,7 +1132,7 @@ category.crafting = Erzeugung category.function = Funktion category.optional = Optionale Zusätze setting.skipcoreanimation.name = Kern Start- und Lande-Animation überspringen -setting.landscape.name = Landschaft sperren +setting.landscape.name = Querformat sperren setting.shadows.name = Schatten setting.blockreplace.name = Automatische Blockvorschläge setting.linear.name = Lineare Filterung @@ -1050,8 +1142,9 @@ setting.backgroundpause.name = Im Hintergrund pausieren setting.buildautopause.name = Bauen automatisch pausieren setting.doubletapmine.name = Doppeltippen zum Abbauen setting.commandmodehold.name = Halten für Steuerungsmodus +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Mods bei Absturz deaktivieren -setting.animatedwater.name = Animiertes Wasser +setting.animatedwater.name = Animierte Oberflächen setting.animatedshields.name = Animierte Schilde setting.playerindicators.name = Spieler-Indikatoren setting.indicators.name = Verbündeten-Indikatoren @@ -1096,13 +1189,14 @@ setting.position.name = Spieler-Position anzeigen setting.mouseposition.name = Mausposition anzeigen setting.musicvol.name = Musiklautstärke setting.atmosphere.name = Planetatmosphäre zeigen +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Ambient-Lautstärke setting.mutemusic.name = Musik stummschalten setting.sfxvol.name = Audioeffekt-Lautstärke setting.mutesound.name = Audioeffekte stummschalten setting.crashreport.name = Anonyme Absturzberichte senden setting.savecreate.name = Automatisch speichern -setting.publichost.name = Öffentliche Sichtbarkeit des Spiels +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Spielerbegrenzung setting.chatopacity.name = Chat-Deckkraft setting.lasersopacity.name = Power-Laser-Deckkraft @@ -1110,6 +1204,8 @@ setting.bridgeopacity.name = Brücken-Deckkraft setting.playerchat.name = Chat im Spiel anzeigen setting.showweather.name = Wetter anzeigen setting.hidedisplays.name = Logik-Bildschirme verdecken +setting.macnotch.name = Passen Sie die Schnittstelle an die Anzeigekerbe an +setting.macnotch.description = Neustart erforderlich steam.friendsonly = Nur Freunde steam.friendsonly.tooltip = Ob nur Steam-Freunde dein Spiel beitreten können.\nDiese Einstellung zu deaktivieren macht dein Spiel öffentlich - jeder kann beitreten. public.beta = Bemerke: Beta-Versionen des Spiels können keine öffentlichen Spiele machen. @@ -1120,6 +1216,7 @@ keybind.title = Tasten zuweisen keybinds.mobile = [scarlet]Die meisten Tastenzuweisungen hier funktionieren auf mobilen Geräten nicht. Nur grundlegende Bewegung wird unterstützt. category.general.name = Allgemein category.view.name = Ansicht +category.command.name = Unit Command category.multiplayer.name = Mehrspieler category.blocks.name = Blockauswahl placement.blockselectkeys = \n[lightgray]Taste: [{0}, @@ -1137,6 +1234,24 @@ keybind.mouse_move.name = Der Maus folgen keybind.pan.name = Kamera alleine bewegen keybind.boost.name = Boost keybind.command_mode.name = Steuerungsmodus +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Region wiederaufbauen keybind.schematic_select.name = Bereich auswählen keybind.schematic_menu.name = Entwurfsmenü @@ -1200,17 +1315,25 @@ mode.pvp.description = Kämpfe lokal gegen andere Spieler.\n[gray]Benötigt mind mode.attack.name = Angriff mode.attack.description = Keine Wellen, das Ziel ist es, die gegnerische Basis zu zerstören.\n[gray]Benötigt einen roten Kern auf der Karte. mode.custom = Angepasste Regeln +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Gesperrte Blöcke verstecken rules.infiniteresources = Unbegrenzte Ressourcen rules.onlydepositcore = Nur in den Kern ablegen +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reaktor-Explosionen rules.coreincinerates = Kern verbrennt überflüssige Materialien rules.disableworldprocessors = Deaktiviere Weltprozessoren rules.schematic = Entwürfe erlaubt rules.wavetimer = Wellen-Timer rules.wavesending = Manuelle Wellen möglich +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Wellen +rules.airUseSpawns = Air units use spawn points rules.attack = Angriff-Modus +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS KI [red](unfertig) rules.rtsminsquadsize = Min. Squadgröße rules.rtsmaxsquadsize = Max. Squadgröße @@ -1229,6 +1352,7 @@ rules.unitdamagemultiplier = Einheit-Schaden-Multiplikator rules.unitcrashdamagemultiplier = Einheiten-Absturzschaden-Multiplikator rules.solarmultiplier = Solarstrom-Multiplikator rules.unitcapvariable = Kerne zählen zum Einheiten-Limit dazu +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Einheiten-Limit rules.limitarea = Kartenbereich begrenzen rules.enemycorebuildradius = Bauverbot-Radius durch feindlichen Kern:[lightgray] (Kacheln) @@ -1261,6 +1385,8 @@ rules.weather = Wetter rules.weather.frequency = Häufigkeit: rules.weather.always = Immer rules.weather.duration = Dauer: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Materialien content.liquid.name = Flüssigkeiten @@ -1461,8 +1587,8 @@ block.plastanium-wall.name = Plastaniummauer block.plastanium-wall-large.name = Große Plastaniummauer block.phase-wall.name = Phasenmauer block.phase-wall-large.name = Große Phasenmauer -block.thorium-wall.name = Thorium-Mauer -block.thorium-wall-large.name = Große Thorium-Mauer +block.thorium-wall.name = Thoriummauer +block.thorium-wall-large.name = Große Thoriummauer block.door.name = Tor block.door-large.name = Großes Tor block.duo.name = Doppelgeschütz @@ -1482,6 +1608,7 @@ block.inverted-sorter.name = Invertierter Sortierer block.message.name = Nachricht block.reinforced-message.name = Verstärkte Nachricht block.world-message.name = Weltnachricht +block.world-switch.name = World Switch block.illuminator.name = Illuminierer block.overflow-gate.name = Überlauftor block.underflow-gate.name = Unterlauftor @@ -1724,7 +1851,6 @@ block.disperse.name = Streu block.afflict.name = Afflikt block.lustre.name = Lustre block.scathe.name = Skate -block.fabricator.name = Hersteller block.tank-refabricator.name = Panzerverbesserer block.mech-refabricator.name = Mechverbesserer block.ship-refabricator.name = Schiffverbesserer @@ -1847,10 +1973,16 @@ onset.turrets = Einheiten sind effektiv, aber [accent]Geschütze[] sind beim Ver onset.turretammo = Versorge das Geschütz mit [accent]Berylliummunition[]. onset.walls = [accent]Mauern[] können andere Blöcke vor Schaden schützen.\nBaue \uf6ee [accent]Berylliummauern[] um die Geschütze. onset.enemies = Feinde kommen bald, bereite dich vor. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = Der Feid ist verwundbar. Greife ihn an. onset.cores = Neue Kerne können auf [accent]Kernzonen[] platziert werden.\nNeue Kerne funktionieren als Außenposten und haben alle Zugriff auf dasselbe Kerninventar.\nBaue einen \uf725 Kern. onset.detect = Der Feind wird dich in zwei Minuten entdecken.\nStelle Verteidigung, Bergbau und Produktion auf. +#Don't translate these yet! +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. + split.pickup = Manche Blöcke können von der Kerneinheit aufgehoben werden.\nHebe diesen [accent]Behälter[] hoch und trage ihn auf den [accent]Frachtlader[].\n(Default-Tasten für Aufhaben und Fallenlassen sind [ und ] ) split.pickup.mobile = Manche Blöcke können von der Kerneinheit aufgehoben werden.\nHebe diesen [accent]Behälter[] hoch und trage ihn auf den [accent]Frachtlader[].\n(Um etwas aufzuheben oder fallenzulassen, tippe lange drauf.) split.acquire = Du must etwas Wolfram sammeln, um Einheiten zu bauen. @@ -2049,7 +2181,6 @@ block.logic-display.description = Zeigt mithilfe eines Prozessors Beliebiges an. block.large-logic-display.description = Zeigt mithilfe eines Prozessors Beliebiges an. block.interplanetary-accelerator.description = Ein Riesen-Railgun-Turm, der mithilfe des Elektromagnetismus Kerne auf die nötige Geschwindigkeit bringt, um interplanetarisches Reisen zu ermöglichen. block.repair-turret.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung. Verwendet optional Kühlung. -block.payload-propulsion-tower.description = Frachttransportationsturm mit hoher Reichweite. Schießt Fracht zu verbundenen Türmen. #Erekir block.core-bastion.description = Kern der Basis. Gepanzert. Einmal zerstört, ist jeglicher Kontakt zum Sektor verloren. @@ -2071,7 +2202,7 @@ block.electric-heater.description = Heizt Blöcke in einer bestimmten Richtung. block.slag-heater.description = Heizt Blöcke in einer bestimmten Richtung. Benötigt Schlacke. block.phase-heater.description = Heizt Blöcke in einer bestimmten Richtung. Benötigt Phasengewebe. block.heat-redirector.description = Lenkt angesammelte Hitze weiter. -block.heat-router.description = Spreads accumulated heat in three output directions. Verteilt angesammelte Hitze auf die 3 anderen Seiten. +block.heat-router.description = Verteilt angesammelte Hitze auf die 3 anderen Seiten. block.electrolyzer.description = Spaltet Wasser in Wasserstoff und Ozon. block.atmospheric-concentrator.description = Sammelt Stickstoff aus der Atmosphäre. Benötigt Hitze. block.surge-crucible.description = Formt Spannungslegierung ais Schlacke und Silizium. Benötigt Hitze. @@ -2081,13 +2212,12 @@ block.cyanogen-synthesizer.description = Synthetisiert Cyanogen aus Arkyzit und block.slag-incinerator.description = Verbrennt nicht-volatile Materialien und Flüssigkeiten. Benötigt Schlacke. block.vent-condenser.description = Kondensiert Schlotgase zu Wasser. Verbraucht Strom. block.plasma-bore.description = Baut unbefristet Erze aus einer Erzwand ab. Erfordert kleine Mengen an Strom.\nVerwendet optional Wasserstoff, um die Effizienz zu steigern. -block.large-plasma-bore.description = Ein größerer Plasmabohrer. Kann Wolfram und Thorium abbauen. Benötigt Wasserstoff und Strom.\nVerwendet optional Wasserstoff, um die Effizienz zu steigern. +block.large-plasma-bore.description = Ein größerer Plasmabohrer. Kann Wolfram und Thorium abbauen. Benötigt Wasserstoff und Strom.\nVerwendet optional Stickstoff, um die Effizienz zu steigern. block.cliff-crusher.description = Zertrümmert Wände, um unbefristet Sand herzustellen. Benötigt Strom. Effizienz variiert je nach Wandart. block.impact-drill.description = Baut unbefristet Erze in Schüben aus dem Boden ab. Benötigt Strom und Wasser. block.eruption-drill.description = Ein verbesserter Schlagbohrer. Kann Thorium abbauen. Benötigt Wasserstoff. block.reinforced-conduit.description = Transportiert Flüssigkeiten. Nimmt von nicht-Kanälen nur von hinten an. block.reinforced-liquid-router.description = Verteilt Flüssigkeiten gleichmäßig auf bis zu drei Richtungen. -block.reinforced-junction.description = Kann als Brücke für zwei sich kreuzende Kanäle verwendet werden. block.reinforced-liquid-tank.description = Lagert eine große Menge an Flüssigkeiten. block.reinforced-liquid-container.description = Lagert eine beträchtliche Menge an Flüssigkeiten. block.reinforced-bridge-conduit.description = Transportiert Flüssigkeiten über Blöcke und Terrain. @@ -2208,6 +2338,7 @@ unit.emanate.description = Baut Blöcke, um den Akropolis-Kern zu beschützen. H lst.read = Liest einen Wert aus einer verbundenen Speicherzelle. lst.write = Schreibt eine Zahl in einer verbundene Speicherzelle. lst.print = Fügt Text zum Textspeicher hinzu.\nZeigt nichts an, bis [accent]Print Flush[] verwendet wird. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Fügt eine [accent]Draw[]-Aufgabe zum Bildspeicher hinzu.\nZeigt nichts an, bis [accent]Draw Flush[] verwendet wird. lst.drawflush = Druckt [accent]Draw[]-Aufgaben aus dem Bildspeicher auf einen Bildschirm. lst.printflush = Druckt [accent]Print[]-Aufgaben aus dem Textspeicher auf einen Nachrichtenblock. @@ -2230,6 +2361,8 @@ lst.getblock = Lese Tile-Daten von jedem Standort. lst.setblock = Setze Tile-Daten an jedem Standort. lst.spawnunit = Einheit an einem Standort erstellen. lst.applystatus = Füge einer Einheit einen Effekt hinzu oder entferne ihn. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Schickt die nächste Welle. lst.explosion = Erstellt an einer beliebigen Stelle eine Explosion. lst.setrate = Setzt die Ausführungsgeschwindigkeit von Prozessoren in Anweisungen/tick. @@ -2241,6 +2374,47 @@ lst.cutscene = Verschiebe die Spielerkamera. lst.setflag = Setze eine Flag, die von allen Prozessoren gelesen werden kann. lst.getflag = Überprüfe, ob eine Flag gesetzt ist. lst.setprop = Setzt eine Eigenschaft einer Einheit oder eines Blockes. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Logik, die Blöcke baut, ist hier nicht erlaubt. @@ -2256,6 +2430,7 @@ laccess.dead = Ob ein Block / eine Einheit tot oder nicht mehr gültig ist. laccess.controlled = Gibt zurück:\n[accent]@ctrlProcessor[] wenn die Einheit prozessorgesteuert ist\n[accent]@ctrlPlayer[] wenn die Einheit / der Block von einem Spieler gesteuert wird\n[accent]@ctrlFormation[] wenn die Einheit Teil einer Formation ist\nSonst 0. laccess.progress = Fortschritt, von 0 bis 1.\nGibt Produktion, Nachladestatus or Baufortschritt zurück. laccess.speed = Höchstgeschwindigkeit einer Einheit, gemessen in Blöcke/Sekunde. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unbekannt lcategory.unknown.description = Unbekannte Anweisungen @@ -2283,6 +2458,7 @@ graphicstype.poly = Füllt ein gleichmäßiges Polygon. graphicstype.linepoly = Zeichnet den Umriss eines gleichmäßigen Polygons. graphicstype.triangle = Zeichnet ein Dreieck. graphicstype.image = Zeichnet ein Bild von einem englischen Namen.\nz.B. [accent]@router[] oder [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Immer. lenum.idiv = Division mit ganzen Zahlen. @@ -2302,6 +2478,7 @@ lenum.xor = Bitweises XOR. lenum.min = Die Größte von zwei Zahlen. lenum.max = Die Kleinste von zwei Zahlen. lenum.angle = Vektorwinkel in Grad. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Vektorlänge. lenum.sin = Sinus in Grad. @@ -2376,6 +2553,7 @@ lenum.unbind = Logiksteuerung deaktivieren.\nNormale KI übernimmt. lenum.move = Geht zu diese Position. lenum.approach = Geht auf einen Punkt mit einem bestimmten Radius zu. lenum.pathfind = Geht zum gegnerischen Spawnpunkt. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Schießt auf eine Position. lenum.targetp = Schießt auf eine Einheit und sagt deren Position voraus. lenum.itemdrop = Materialien abwerfen. @@ -2386,10 +2564,13 @@ lenum.payenter = Betritt den Fracht-Block, auf dem sich die Einheit befindet. lenum.flag = Zahl, mit der eine Einheit identifiziert werden kann. lenum.mine = Erz von einer Position abbauen. lenum.build = Einen Block bauen. -lenum.getblock = Gibt den Boden- und Blocktyp an den Koordinaten zurück.\nEinheiten müssen nah genug dran sein.\nFeste nicht-Blöcke sind [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Prüft, ob eine Einheit in einem Radius um einen Punkt ist. lenum.boost = Aktiviert / deaktiviert den Boost. - -#Don't translate these yet! -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index ac6d705cd9..6790db4427 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = Mejor valorados schematic = Esquema schematic.add = Guardar esquema... schematics = Esquemas +schematic.search = Buscar esquemas.. schematic.replace = Ya existe un esquema con ese nombre. ¿Quieres reemplazarlo? schematic.exists = Ya existe un esquema con ese nombre. schematic.import = Importar esquema... @@ -69,7 +70,7 @@ schematic.shareworkshop = Compartir en Steam Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Invertir esquema schematic.saved = Esquema guardado. schematic.delete.confirm = Este esquema será absolutamente erradicado. -schematic.rename = Renombrar esquema +schematic.edit = Editar esquema schematic.info = {0}x{1}, {2} bloques schematic.disabled = [scarlet]Esquemas desactivados.[]\nNo está permitido usar esquemas en este [accent]mapa[] o [accent]servidor. schematic.tags = Etiquetas: @@ -78,6 +79,7 @@ schematic.addtag = Añadir etiqueta schematic.texttag = Texto de etiqueta schematic.icontag = Icono de etiqueta schematic.renametag = Renombrar etiqueta +schematic.tagged = {0} etiquetado schematic.tagdelconfirm = ¿Eliminar completamente esta etiqueta? schematic.tagexists = Esa etiqueta ya existe. @@ -156,8 +158,8 @@ mod.outdatedv7.details = Este mod no es compatible con la última versión del j mod.blacklisted.details = Este mod ha sido bloqueado manualmente por causar cierres inesperados, errores u otros problemas en esta versión del juego. Será mejor no usarlo. mod.missingdependencies.details = A este mod le faltan dependencias: {0} mod.erroredcontent.details = La partida causó errores al cargar. Puedes pedir al autor del mod que los arregle. -mod.circulardependencies.details = This mod has dependencies that depends on each other. -mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}. +mod.circulardependencies.details = Este mod tiene dependencias que dependen unas de otras. +mod.incompletedependencies.details = Este mod no se puede cargar debido a dependencias no válidas o faltantes: {0}. mod.requiresversion = Requiere la versión del juego: [red]{0} mod.errors = Ha ocurrido un fallo al cargar el contenido. mod.noerrorplay = [scarlet]Se están ejecutando algunos mods con fallos.[]Debes deshabilitarlos o arreglar los errores antes de jugar. @@ -253,11 +255,19 @@ trace = Rastrear Jugador trace.playername = Nombre del jugador: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Cliente de móvil: [accent]{0} trace.modclient = Cliente personalizado: [accent]{0} trace.times.joined = Se ha unido [accent]{0} []veces trace.times.kicked = Fue expulsado [accent]{0} []veces +trace.ips = IPs: +trace.names = Names: invalidid = ¡ID de cliente no válida! Puedes enviar un informe reportando el error. +player.ban = Ban +player.kick = Expulsar +player.trace = Trace +player.admin = Toggle Admin +player.team = Cambiar equipo server.bans = Vetos server.bans.none = ¡No se ha vetado a ningún usuario! server.admins = Administradores @@ -271,10 +281,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Versión personalizada confirmban = ¿Quieres vetar a "{0}[white]"? confirmkick = ¿Quieres expulsar a "{0}[white]"? -confirmvotekick = ¿Estás a favor de expulsar a "{0}[white]"? confirmunban = ¿Quieres quitar el veto a este jugador? confirmadmin = ¿Quieres hacer administrador a "{0}[white]"? confirmunadmin = ¿Quieres quitarle los permisos de administrador a "{0}[white]"? +votekick.reason = Razón del Voto de Expulsión +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Unirse a una Partida joingame.ip = Dirección IP: disconnect = Desconectado. @@ -292,7 +303,7 @@ server.invalidport = ¡El número de puerto no es valido! server.error = [scarlet]Error alojando el servidor. save.new = Nuevo archivo de guardado save.overwrite = ¿Quieres sobrescribir\neste guardado? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = Los archivos individuales guardados de la campaña no se pueden importar. overwrite = Sobrescribir save.none = ¡No se ha encontrado ningún archivo de guardado! savefail = ¡No se ha podido guardar la partida! @@ -330,12 +341,23 @@ open = Abrir customize = Personalizar reglas cancel = Cancelar command = Comandar +command.queue = [lightgray][Queuing] command.mine = Minar command.repair = Reparar command.rebuild = Reconstruir command.assist = Asistir al jugador command.move = Moverse command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Abrir enlace copylink = Copiar enlace back = Atrás @@ -382,9 +404,9 @@ custom = Personalizado builtin = Incorporado map.delete.confirm = ¿Quieres borrar este mapa? ¡Esta acción no se puede deshacer! map.random = [accent]Mapa aleatorio -map.nospawn = ¡Este mapa no tiene ningún núcleo para que aparezca el jugador! Agrega un núcleo [#{0}]{1}[] al mapa desde el editor. -map.nospawn.pvp = ¡Este mapa no tiene ningún núcleo enemigo donde puedan aparecer otros jugadores! Añade un núcleo[scarlet] de otro color[] a este mapa en el editor. -map.nospawn.attack = ¡Este mapa no tiene ningún núcleo enemigo al que los jugadores deban atacar! Añade núcleos [#{0}]{1}[] a este mapa desde el editor. +map.nospawn = ¡Este mapa no tiene ningún núcleo para que aparezca el jugador! Agrega un núcleo {0} al mapa desde el editor. +map.nospawn.pvp = ¡Este mapa no tiene ningún núcleo enemigo donde puedan aparecer otros jugadores! Añade un núcleo [scarlet]de otro color[] a este mapa en el editor. +map.nospawn.attack = ¡Este mapa no tiene ningún núcleo enemigo al que los jugadores deban atacar! Añade núcleos {0} a este mapa desde el editor. map.invalid = Error cargando el mapa: Archivo de mapa corrupto o no válido. workshop.update = Actualizar artículo workshop.error = Error al obtener detalles del Steam Workshop: {0} @@ -416,6 +438,12 @@ editor.waves = Oleadas: editor.rules = Normas: editor.generation = Generación: editor.objectives = Objetivos +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Editar desde la nave editor.playtest = Probar mapa editor.publish.workshop = Publicar en Steam Workshop @@ -459,7 +487,7 @@ waves.sort.begin = Inicio waves.sort.health = Vida waves.sort.type = Tipo waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Ocultar todo waves.units.show = Mostrar todo @@ -472,6 +500,8 @@ editor.default = [lightgray] details = Detalles... edit = Editar... variables = Variables +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Nombre: editor.spawn = Generar unidad editor.removeunit = Eliminar unidad @@ -483,6 +513,7 @@ editor.errorlegacy = Este mapa es demasiado antiguo y usa un formato obsoleto. editor.errornot = Esto no es un fichero de mapa. editor.errorheader = Este mapa no es válido o está corrupto. editor.errorname = El mapa no tiene un nombre definido. ¿Estás intentando cargar un fichero de guardado? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Actualizar editor.randomize = Aleatorizar editor.moveup = Subir @@ -494,6 +525,7 @@ editor.sectorgenerate = Generación de sector editor.resize = Redimensionar editor.loadmap = Cargar mapa editor.savemap = Guardar mapa +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = ¡Guardado! editor.save.noname = ¡Tu mapa no tiene un nombre! Ponle uno en el menú "Info del Mapa". editor.save.overwrite = ¡Tu mapa sobrescribe uno ya incorporado! Elige un nombre diferente en el menú 'Info del Mapa'. @@ -524,14 +556,16 @@ toolmode.replace = Reemplazar toolmode.replace.description = Dibuja en bloques sólidos. toolmode.replaceall = Reemplazar todo toolmode.replaceall.description = Sustituye todos los bloques del mapa. -toolmode.orthogonal = Perpendicular -toolmode.orthogonal.description = Dibuja líneas perpendiculares. +toolmode.orthogonal = Ortogonal +toolmode.orthogonal.description = Dibuja líneas ortogonales. toolmode.square = Cuadrado toolmode.square.description = Puntero cuadrado. toolmode.eraseores = Borrar minerales toolmode.eraseores.description = Solo borra minerales. toolmode.fillteams = Rellenar equipos toolmode.fillteams.description = Rellena equipos en lugar de bloques. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Dibujar equipos toolmode.drawteams.description = Dibuja equipos en lugar de bloques. #no usados @@ -556,6 +590,7 @@ filter.clear = Despejar filter.option.ignore = Ignorar filter.scatter = Dispersión filter.terrain = Terreno +filter.logic = Logic filter.option.scale = Escala filter.option.chance = Probabilidad @@ -579,6 +614,25 @@ filter.option.floor2 = Terreno secundario filter.option.threshold2 = Umbral secundario filter.option.radius = Radio filter.option.percentile = Percentil +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Ancho: height = Alto: @@ -631,9 +685,12 @@ objective.commandmode.name = Modo comando objective.flag.name = Bandera marker.shapetext.name = Forma del texto -marker.minimap.name = Minimapa +marker.point.name = Point marker.shape.name = Forma marker.text.name = Texto +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Fondo marker.outline = Bordes @@ -662,7 +719,6 @@ resources.max = Max bannedblocks = Bloques prohibidos objectives = Objetivos bannedunits = Unidades prohibidas -rules.hidebannedblocks = Ocultar bloques prohibidos bannedunits.whitelist = Sólo permitir unidades seleccionadas bannedblocks.whitelist = Sólo permitir bloques seleccionados addall = Añadir todo @@ -685,7 +741,7 @@ error.any = Error de red desconocido. error.bloom = Error al cargar el efecto de bloom.\nPuede que tu dispositivo no sea compatible con esta característica. weather.rain.name = Lluvia -weather.snow.name = Nieve +weather.snowing.name = Nieve weather.sandstorm.name = Tormenta de arena weather.sporestorm.name = Tormenta de esporas weather.fog.name = Niebla @@ -721,8 +777,8 @@ sector.curlost = Sector perdido sector.missingresources = [scarlet]Recursos insuficientes en el núcleo sector.attacked = ¡Sector [accent]{0}[white] bajo ataque! sector.lost = ¡Sector [accent]{0}[white] perdido! -#nota: El espacio que falta en la línea inferior (antes de "capturado") es intencional: -sector.captured = ¡Sector [accent]{0}[white]capturado! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Cambiar icono sector.noswitch.title = No se pueden cambiar los sectores sector.noswitch = Tal vez no puedas cambiar de sector mientras se encuentre bajo ataque.\n\nSector: [accent]{0}[] en [accent]{1}[] @@ -935,6 +991,7 @@ stat.abilities = Habilidades stat.canboost = Puede volar stat.flying = Aéreo stat.ammouse = Uso de munición +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Multiplicador de daño stat.healthmultiplier = Multiplicador de vida stat.speedmultiplier = Multiplicador de velocidad @@ -945,14 +1002,46 @@ stat.immunities = Inmune a stat.healing = Curación ability.forcefield = Área de Escudo +ability.forcefield.description = Projecta un campo de fuerza que absorve balas ability.repairfield = Área de Reparación -ability.statusfield = Área de Potenciación {0} -ability.unitspawn = Fábrica de {0} +ability.repairfield.description = Repairs nearby units +ability.statusfield = Área de Potenciación +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Fábrica +ability.unitspawn.description = Constructs units ability.shieldregenfield = Área de Regeneración de Armaduras +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movimiento Relámpago +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Sector de Escudo +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Área de Bloqueo de Regeneración -ability.energyfield = Campo de Energía: [accent]{0}[] daño ~ [accent]{1}[] bloques / [accent]{2}[] objetivos +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Campo de Energía +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneración +ability.regen.description = Regenera su propia salud con el tiempo +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Sólo se permite depositar en el núcleo bar.drilltierreq = Requiere un taladro mejor @@ -992,6 +1081,7 @@ bullet.splashdamage = [stat]{0}[lightgray] daño en área ~[stat] {1}[lightgray] bullet.incendiary = [stat]incendiaria bullet.homing = [stat]rastreadora bullet.armorpierce = [stat]perforación de armadura +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x proyectiles fragmentados: @@ -1027,6 +1117,7 @@ unit.items = objetos unit.thousands = k unit.millions = M unit.billions = B +unit.shots = shots unit.pershot = /disparo category.purpose = Objetivo category.general = General @@ -1047,6 +1138,7 @@ setting.backgroundpause.name = Pausar en segundo plano setting.buildautopause.name = Auto-pausar construcción setting.doubletapmine.name = Doble clic para extraer minerales setting.commandmodehold.name = Mantener para comandar unidades +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Desactivar mods si el juego no puede iniciarse setting.animatedwater.name = Animaciones de terreno setting.animatedshields.name = Animación de escudos @@ -1093,13 +1185,14 @@ setting.position.name = Mostrar posición de jugadores setting.mouseposition.name = Mostrar posición del cursor setting.musicvol.name = Volumen de la música setting.atmosphere.name = Mostrar atmósfera de planetas +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Volumen del ambiente setting.mutemusic.name = Silenciar música setting.sfxvol.name = Volumen del sonido setting.mutesound.name = Silenciar sonido setting.crashreport.name = Enviar registros de errores anónimos setting.savecreate.name = Guardado automático -setting.publichost.name = Visibilidad pública de la partida +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Limite de jugadores setting.chatopacity.name = Opacidad del chat setting.lasersopacity.name = Opacidad de láseres energía @@ -1107,6 +1200,8 @@ setting.bridgeopacity.name = Opacidad de puentes setting.playerchat.name = Mostrar chat de burbuja de jugadores setting.showweather.name = Efectos visuales climáticos setting.hidedisplays.name = Ocultar monitores lógicos +setting.macnotch.name = Adaptar la interfaz para mostrar la muesca +setting.macnotch.description = Es necesario reiniciar para aplicar los cambios steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Recuerda que no puedes crear partidas públicas en las versiones beta del juego. @@ -1117,6 +1212,7 @@ keybind.title = Reasignar controles keybinds.mobile = [scarlet]La mayoría de los controles no están disponibles en versiones móviles. Sólo es compatible con el movimiento básico. category.general.name = General category.view.name = Ver +category.command.name = Unit Command category.multiplayer.name = Multijugador category.blocks.name = Seleccionar bloque placement.blockselectkeys = \n[lightgray]Teclas: [{0}, @@ -1134,6 +1230,24 @@ keybind.mouse_move.name = Seguir al cursor keybind.pan.name = Desplazar la cámara keybind.boost.name = Sobrevolar keybind.command_mode.name = Modo Comando +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Reconstruir región keybind.schematic_select.name = Seleccionar región keybind.schematic_menu.name = Menú de esquemas @@ -1197,17 +1311,25 @@ mode.pvp.description = Combate contra otros jugadores localmente.\n[gray]Requier mode.attack.name = Ataque mode.attack.description = Destruye la base enemiga. \n[gray]Requiere un núcleo rojo en el mapa. mode.custom = Normas personalizadas +rules.invaliddata = Datos del portapeles invalidos. +rules.hidebannedblocks = Ocultar bloques prohibidos rules.infiniteresources = Recursos infinitos rules.onlydepositcore = Sólo permitir depositar recursos en el núcleo +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Explosiones de reactores rules.coreincinerates = Incinerar exceso de recursos en el núcleo rules.disableworldprocessors = Desactivar procesadores estáticos rules.schematic = Permitir esquemas rules.wavetimer = Temporizador de oleadas rules.wavesending = Envío de oleadas +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Oleadas +rules.airUseSpawns = Air units use spawn points rules.attack = Modo de ataque +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = IA enemiga avanzada (RTS AI) rules.rtsminsquadsize = Tamaño mínimo de escuadrón rules.rtsmaxsquadsize = Tamaño máximo de escuadrón @@ -1226,6 +1348,7 @@ rules.unitdamagemultiplier = Multiplicador de daño de unidades rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Multiplicador de energía solar rules.unitcapvariable = Las categorías del núcleo alteran el límite máximo de unidades +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Límite base de unidades rules.limitarea = Limitar área del mapa rules.enemycorebuildradius = Radio de zona anti-construcción del núcleo enemigo:[lightgray] (bloques) @@ -1235,7 +1358,7 @@ rules.buildcostmultiplier = Multiplicador de coste de construcción rules.buildspeedmultiplier = Multiplicador de velocidad de construcción rules.deconstructrefundmultiplier = Multiplicador de devolución de desconstrucción rules.waitForWaveToEnd = Las oleadas esperan a los enemigos -rules.wavelimit = Map Ends After Wave +rules.wavelimit = El mapa termina despues de la oleada rules.dropzoneradius = Radio de zona de aterrizaje:[lightgray] (bloques) rules.unitammo = Las unidades necesitan munición rules.enemyteam = Equipo enemigo @@ -1252,12 +1375,14 @@ rules.lighting = Iluminación rules.fog = Ocultar terreno inexplorado (Fog of War) rules.fire = Fuego rules.anyenv = -rules.explosions = Daño de explosiones a bloques/unidades +rules.explosions = Daño de explosiones a bloques/unidades rules.ambientlight = Iluminación ambiental rules.weather = Clima rules.weather.frequency = Frecuencia: rules.weather.always = Siempre rules.weather.duration = Duracion: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Evita que las unidades depositen materiales en calquiera estructura a excepción del nucleo. content.item.name = Objetos content.liquid.name = Líquidos @@ -1479,6 +1604,7 @@ block.inverted-sorter.name = Clasificador invertido block.message.name = Mensaje block.reinforced-message.name = Mensaje reforzado block.world-message.name = Mensaje estático +block.world-switch.name = World Switch block.illuminator.name = Iluminador block.overflow-gate.name = Compuerta de desborde block.underflow-gate.name = Compuerta de subdesbordamiento @@ -1509,7 +1635,7 @@ block.cultivator.name = Cultivador block.conduit.name = Tubería block.mechanical-pump.name = Bomba mecánica block.item-source.name = Fuente de objetos -block.item-void.name = Vacío de objetos +block.item-void.name = Vacío de objetos block.liquid-source.name = Fuente de líquidos block.liquid-void.name = Vacío de líquidos block.power-void.name = Vacío de energía @@ -1699,7 +1825,7 @@ block.reinforced-liquid-container.name = Contenedor de líquidos reforzado block.reinforced-liquid-tank.name = Tanque de líquidos reforzado block.beam-node.name = Nodo de energía ortogonal block.beam-tower.name = Torre de transmisión de energía -block.beam-link.name = Enlace de energía +block.beam-link.name = Enlace de energía block.turbine-condenser.name = Turbina condensadora block.chemical-combustion-chamber.name = Cámara de combustión química block.pyrolysis-generator.name = Generador pirolítico @@ -1721,7 +1847,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricador block.tank-refabricator.name = Refabricador de tanques block.mech-refabricator.name = Refabricador de mechs block.ship-refabricator.name = Refabricador de aeronaves @@ -1827,10 +1952,10 @@ onset.mine = Haz clic para minar \uf748 [accent]berilio[] de las paredes.\n\nUsa onset.mine.mobile = Toca para minar \uf748 [accent]berilio[] de las paredes. onset.research = Abre el \ue875 menú de investigaciones.\nInvestiga y construye una \uf73e [accent]turbina condensadora[] en la grieta.\nEsto generará [accent]energía[]. onset.bore = Investiga y construye un \uf741 [accent]perforador de plasma[].\nEste minará recursos de las paredes automáticamente. -onset.power = Para [accent]encender[] el perforador de plasma, investiga y coloca un \uf73d [accent]nodo de energía perpendicular[].\nConecta la turbina condensadora al perforador de plasma. +onset.power = Para [accent]encender[] el perforador de plasma, investiga y coloca un \uf73d [accent]nodo de energía ortogonal[].\nConecta la turbina condensadora al perforador de plasma. onset.ducts = Investiga y construye \uf799 [accent]conductos[] para mover los recursos minados desde el perforador de plasma hasta el núcleo.\nArrastra para formar una cadena de transporte con múltiples bloques de conducto.\nUsa la [accent]rueda del ratón[] para cambiar la dirección. onset.ducts.mobile = Investiga y construye \uf799 [accent]conductos[] para mover los recursos minados desde el perforador de plasma hasta el núcleo.\n\nPresiona por un segundo y arrastra para crear múltiples bloques de conducto. -onset.moremine = Expande la operación minera.\nConstruye más perforadores de plasma y usa nodos perpendiculares y conductos para complementarlos.\nExtrae 200 de berilio. +onset.moremine = Expande la operación minera.\nConstruye más perforadores de plasma y usa nodos de energía ortogonales y conductos para complementarlos.\nExtrae 200 de berilio. onset.graphite = Otros bloques más complejos requieren \uf835 [accent]grafito[].\nConstruye perforadores de plasma para extraer grafito. onset.research2 = Empieza a investigar las [accent]fábricas[].\nDesbloquea el \uf74d [accent]triturador de paredes[] y el \uf779 [accent]horno de arco de silicio[]. onset.arcfurnace = El horno de arco necesita \uf834 [accent]arena[] y \uf835 [accent]grafito[] para producir \uf82f [accent]silicio[].\nTambién requiere [accent]energía[] para funcionar. @@ -1841,9 +1966,15 @@ onset.turrets = Las unidades son efectivas, pero las [accent]torretas[] pueden o onset.turretammo = Suministra [accent]munición de berilio[] a la torreta. onset.walls = Los [accent]muros[] pueden evitar que las estructuras reciban daño.\nColoca unos \uf6ee [accent]muros de berilio[] alrededor de la torreta. onset.enemies = Se aproxima un enemigo, prepárate para defenderte. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = El enemigo es ahora vulnerable. Contraataca. onset.cores = Se pueden colocar nuevos núcleos sobre las [accent]zonas de núcleo[].\nLos núcleos adicionales funcionan como bases avanzadas y comparten el inventario de recursos con otros núcleos.\nColoca un \uf725 núcleo. onset.detect = El enemigo te detectará en 2 minutos.\nEstablece sistemas de defensa, minería, y producción. + +#Don't translate these yet! +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Algunos bloques pueden ser recogidos por la unidad del núcleo.\nRecoge este [accent]contenedor[] y suéltalo sobre el [accent]puerto de carga[].\n(Las teclas por defecto son [ para recoger y ] para soltar la carga) split.pickup.mobile = Algunos bloques pueden ser recogidos por la unidad del núcleo.\nRecoge este [accent]contenedor[] y suéltalo sobre el [accent]puerto de carga[].\n(Para recoger o soltar algo, mantenlo pulsado.) split.acquire = Necesitas recolectar tungsteno para construir unidades. @@ -1913,8 +2044,8 @@ block.separator.description = Separa el magma en sus componentes minerales. block.spore-press.description = Comprime vainas de esporas en petróleo. block.pulverizer.description = Prensa chatarra hasta obtener arena. block.coal-centrifuge.description = Solidifica petróleo en trozos de carbón. -block.incinerator.description = Vaporiza cualquier líquido o material que recive. -block.power-void.description = Elimina toda la energía que recive. Solo disponible en el modo Libre. +block.incinerator.description = Vaporiza cualquier líquido o material que recibe. +block.power-void.description = Elimina toda la energía que recibe. Solo disponible en el modo Libre. block.power-source.description = Genera energía infinita. Solo disponible en el modo Libre. block.item-source.description = Genera objetos de forma infinita. Solo disponible en el modo Libre. block.item-void.description = Destruye los objetos que entran en él. Solo disponible en el modo Libre. @@ -2042,7 +2173,6 @@ block.logic-display.description = Muestra gráficos arbitrarios dibujados desde block.large-logic-display.description = Muestra gráficos arbitrarios dibujados desde un procesador lógico. block.interplanetary-accelerator.description = Una torre de proyección electromagnética masiva. Acelera núcleos hasta la velocidad necesaria para escapar del campo gravitatorio del planeta, habilitando el despliegue interplanetario. block.repair-turret.description = Repara continuamente la unidad dañada más cercana dentro de su alcance. Opcionalmente acepta refrigerante. -block.payload-propulsion-tower.description = Estructura que permite transportar otras estructuras a largo alcance. Dispara cargas, tales como unidades o bloques hasta otras torres de propulsión elazadas. # Erekir block.core-bastion.description = Núcleo de la base. Blindado. Una vez destruido, se pierde toda comunicación con el sector. @@ -2080,7 +2210,6 @@ block.impact-drill.description = Si se coloca sobre un mineral, extraerá ráfag block.eruption-drill.description = Un taladro de impacto mejorado, capaz de extraer torio. Requiere hidrógeno. block.reinforced-conduit.description = Mueve fluidos en una dirección. Sus lados no se conectarán con otros tipos de bloques, salvo que también sean tuberías. block.reinforced-liquid-router.description = Distribuye fluidos equitativamente en todas direcciones. -block.reinforced-junction.description = Funciona como un puente para dos tuberías que se cruzan. block.reinforced-liquid-tank.description = Almacena una gran cantidad de fluidos. block.reinforced-liquid-container.description = Almacena una cantidad considerable de fluidos. block.reinforced-bridge-conduit.description = Transporta fluidos sobre el terreno o estructuras. @@ -2107,8 +2236,8 @@ block.surge-conveyor.description = Mueve objetos agrupados en lotes. Se puede ac block.surge-router.description = Extrae objetos de las cintas transportadoras eléctricas, distribuyéndolos en hasta tres direcciones. Se puede acelerar suministrándole energía. Conduce la energía. block.unit-cargo-loader.description = Construye drones de carga. Estos drones distribuyen los objetos automáticamente en los "puntos de descarga" con el mismo filtro. block.unit-cargo-unload-point.description = Puntos de descarga para los drones de carga. Aceptan objetos que coincidan con el filtro seleccionado. -block.beam-node.description = Transmite energía a otros bloques perpendicularmente. Almacena una pequeña cantidad de energía. -block.beam-tower.description = Transmite energía a otros bloques perpendicularmente. Almacena grandes cantidades de energía. Tiene un mayor alcance. +block.beam-node.description = Transmite energía a otros bloques ortogonalmente. Almacena una pequeña cantidad de energía. +block.beam-tower.description = Transmite energía a otros bloques ortogonalmente. Almacena grandes cantidades de energía. Tiene un mayor alcance. block.turbine-condenser.description = Genera energía si se coloca sobre grietas de gases en el terreno. Produce pequeñas cantidades de agua. block.chemical-combustion-chamber.description = Genera energía mediante arquicita y ozono. block.pyrolysis-generator.description = Genera grandes cantidades de energía mediante arquicita y magma. También produce agua. @@ -2202,6 +2331,7 @@ unit.emanate.description = Construye estructuras para defender el núcleo Acropo lst.read = Lee un número desde una unidad de memoria conectada. lst.write = Escribe un número en una unidad de memoria conectada. lst.print = Añade texto a la cola para imprimir texto.\nNo mostrará nada hasta que se use [accent]Print Flush[]. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Añade una operación a la cola para dibujar.\nNo mostrará nada hasta que se use [accent]Draw Flush[]. lst.drawflush = Muestra los datos en cola de operaciones [accent]Draw[] en un monitor gráfico. lst.printflush = Muestra los datos en cola de operaciones de [accent]Print[] en un bloque de mensaje. @@ -2224,6 +2354,8 @@ lst.getblock = Obtiene los datos de un bloque en cualquier lugar. lst.setblock = Cambia los datos de un bloque en cualquier lugar. lst.spawnunit = Crea una unidad en una localización. lst.applystatus = Aplica o elimina un efecto de alteración de estado a una unidad. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simula la aparición de una oleada de enemigos en una localización arbitraria.\nNo incrementará el contador de oleadas. lst.explosion = Crea una explosión en una localización. lst.setrate = Establece la velocidad de ejecución de los procesadores lógicos en formato instrucción/tick. @@ -2235,6 +2367,47 @@ lst.cutscene = Manipula la cámara del jugador. lst.setflag = Establece una etiqueta global que se puede leer desde todos los procesadores. lst.getflag = Comprueba si se ha establecido una etiqueta global. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]No se permite construir bloques de categoría lógica. @@ -2250,6 +2423,7 @@ laccess.dead = Si una unidad/bloque es destruída o inválida. laccess.controlled = Devuelve:\n[accent]@ctrlProcessor[] si el control de la unidad lo tiene un procesador\n[accent]@ctrlPlayer[] si el control de la unidad/bloque lo tiene un jugador\n[accent]@ctrlFormation[] si la unidad está en formación\nDe otra forma, devuelve 0. laccess.progress = Progreso de una acción, 0 a 1.\nDevuelve el valor de una producción, la recarga de una torreta o el progreso de una construcción. laccess.speed = Velocidad máxima de una unidad, en bloques/segundo. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Desconocido lcategory.unknown.description = Instrucciones no clasificadas. @@ -2277,6 +2451,7 @@ graphicstype.poly = Rellena un polígono regular. graphicstype.linepoly = Dibuja las aristas de un polígono regular. graphicstype.triangle = Rellena un triángulo. graphicstype.image = Dibuja una imagen de algún contenido.\nEjemplo: [accent]@router[] o [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Siempre "true". lenum.idiv = División de un número entero. @@ -2296,6 +2471,7 @@ lenum.xor = Comprobación bit a bit XOR. lenum.min = Mínimo de dos números. lenum.max = Máximo de dos números. lenum.angle = Ángulo del vector en grados. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Longitud del vector. lenum.sin = Seno, en grados. @@ -2370,6 +2546,7 @@ lenum.unbind = Desactiva el control externo de la unidad enlazada.\nLa unidad re lenum.move = Moverse a una posición exacta. lenum.approach = Aproximarse al radio establecido de una posición concreta. lenum.pathfind = Establece y sigue una ruta hasta el punto de aterrizaje enemigo. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Dispara a una posición. lenum.targetp = Dispara a un objetivo con predicción de velocidad. lenum.itemdrop = Suelta los objetos en la estructura especificacda. @@ -2380,10 +2557,13 @@ lenum.payenter = Entra/Aterriza en el bloque sobre el que se encuentra la unidad lenum.flag = Etiqueta numérica de la unidad. lenum.mine = Extrae minerales de una posición. lenum.build = Construye una estructura. -lenum.getblock = Obtiene la estructura y su categoría en unas coordenadas específicas.\nLa unidad debe estar en el rango de su posición.\nLos bloques no-construcciones tendrán el tipo [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Comprueba si una unidad se encuentra cerca de una posición. lenum.boost = Iniciar/Detener vuelo. - -#Don't translate these yet! -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index f1c467ca7e..bc6d5d6271 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Sort by stars schematic = Schematic schematic.add = Save Schematic... schematics = Schematics +schematic.search = Search schematics... schematic.replace = A schematic by that name already exists. Replace it? schematic.exists = A schematic by that name already exists. schematic.import = Import Schematic... @@ -68,7 +69,7 @@ schematic.shareworkshop = Share on Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic schematic.saved = Schematic saved. schematic.delete.confirm = This schematic will be utterly eradicated. -schematic.rename = Rename Schematic +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blocks schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.tags = Tags: @@ -77,6 +78,7 @@ schematic.addtag = Add Tag schematic.texttag = Text Tag schematic.icontag = Icon Tag schematic.renametag = Rename Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Delete this tag completely? schematic.tagexists = That tag already exists. stats = Stats @@ -249,11 +251,19 @@ trace = Jälita mängijat trace.playername = Mängija nimi: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Mängija ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobiilne versioon: [accent]{0} trace.modclient = Modifitseeritud versioon: [accent]{0} trace.times.joined = Times Joined: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Kehtetu mängija ID! Saada veateade! +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Keelatud mängijad server.bans.none = Keelatud mängijaid ei leitud! server.admins = Administraatorid @@ -267,10 +277,11 @@ server.version = [lightgray]v{0} {1} server.custombuild = [accent]Kohandatud versioon confirmban = Oled kindel, et soovid keelata sellel mängjal siin mängida? confirmkick = Oled kindel, et soovid selle mängija välja visata? -confirmvotekick = Oled kindel, et soovid selle mängija mängust välja hääletada? confirmunban = Oled kindel, et soovid lubada sellel mängijal siin uuesti mängida? confirmadmin = Oled kindel, et soovid anda sellele mängijale adminstraatori õigused? confirmunadmin = Oled kindel, et soovid sellelt mängijalt adminstraatori õigused ära võtta? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Liitu mänguga joingame.ip = Aadress: disconnect = Ühendus katkestatud. @@ -326,12 +337,23 @@ open = Ava customize = Kohanda reegleid cancel = Tühista command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Ava link copylink = Kopeeri link back = Tagasi @@ -378,9 +400,9 @@ custom = Mängija loodud builtin = Sisse-ehitatud map.delete.confirm = Oled kindel, et soovid maailma kustutada? Seda ei saa tagasi võtta! map.random = [accent]Suvaline maailm -map.nospawn = Selles maailmas ei ole mängijate tuumikuid!\nLisa redaktoris sellele maailmale[accent] oranž[] tuumik. -map.nospawn.pvp = Selles maailmas ei ole piisavalt mängijate tuumikuid!\nLisa redaktoris sellele maailmale[scarlet] mitte-oranže[] tuumikuid. -map.nospawn.attack = Selles maailmas ei ole mängijate poolt rünnatavaid vaenlaste tuumikuid!\nLisa redaktoris sellele maailmale[scarlet] punaseid[] tuumikuid. +map.nospawn = Selles maailmas ei ole mängijate tuumikuid!\nLisa redaktoris sellele maailmale {0} tuumik. +map.nospawn.pvp = Selles maailmas ei ole piisavalt mängijate tuumikuid!\nLisa redaktoris sellele maailmale [scarlet]mitte-oranže[] tuumikuid. +map.nospawn.attack = Selles maailmas ei ole mängijate poolt rünnatavaid vaenlaste tuumikuid!\nLisa redaktoris sellele maailmale {0} tuumikuid. map.invalid = Viga maailma laadimisel: ebasobiv või riknenud fail. workshop.update = Update Item workshop.error = Error fetching workshop details: {0} @@ -412,6 +434,12 @@ editor.waves = Lahingulained: editor.rules = Reeglid: editor.generation = Genereerimine: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Redigeeri mängus editor.playtest = Playtest editor.publish.workshop = Avalda Workshop'is @@ -455,7 +483,7 @@ waves.sort.begin = Begin waves.sort.health = Health waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Hide All waves.units.show = Show All @@ -467,6 +495,8 @@ editor.default = [lightgray] details = Üksikasjad... edit = Muuda... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Nimi: editor.spawn = Tekita väeüksus editor.removeunit = Eemalda väeüksus @@ -478,6 +508,7 @@ editor.errorlegacy = See maailmafail on liiga vana ja kasutab iganenud formaati, editor.errornot = See ei ole maailmafail. editor.errorheader = See maailmafail on ebasobiv või riknenud. editor.errorname = Maailma nime pole täpsustatud. +editor.errorlocales = Error reading invalid locale bundles. editor.update = Uuenda editor.randomize = Juhuslikusta editor.moveup = Move Up @@ -489,6 +520,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Suurus editor.loadmap = Lae maailm editor.savemap = Salvesta +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Salvestatud! editor.save.noname = Su maailmal ei ole nime! Anna maailmale nimi, vajutades menüüs nupule "Üldinfo". editor.save.overwrite = Sinu maailm kirjutaks üle sisse-ehitatud maailma! Anna maailmale teistsugune nimi, vajutades menüüs nupule "Üldinfo". @@ -527,6 +559,8 @@ toolmode.eraseores = Kustuta maake toolmode.eraseores.description = Kustuta ainult maake. toolmode.fillteams = Täida võistkondi toolmode.fillteams.description = Täida blokkide asemel võistkondi. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Joonista võistkondi toolmode.drawteams.description = Joonista blokkide asemel võistkondi. toolmode.underliquid = Under Liquids @@ -549,6 +583,7 @@ filter.clear = Kustutamine filter.option.ignore = Eira filter.scatter = Puistamine filter.terrain = Maastik +filter.logic = Logic filter.option.scale = Ulatus filter.option.chance = Tõenäosus filter.option.mag = Suurusjärk @@ -571,6 +606,25 @@ filter.option.floor2 = Teine põrand filter.option.threshold2 = Teine lävi filter.option.radius = Raadius filter.option.percentile = Protsentiil +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Laius: height = Kõrgus: @@ -621,9 +675,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -643,12 +700,11 @@ objective.command = [accent]Command Units objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ loadout = Loadout -resources = Resources +resources = Resources resources.max = Max bannedblocks = Banned Blocks objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -671,7 +727,7 @@ error.any = Teadmata viga võrgus. error.bloom = Bloom-efekti lähtestamine ebaõnnestus.\nSinu seade ei pruugi seda efekti toetada. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -707,7 +763,8 @@ sector.curlost = Sector Lost sector.missingresources = [scarlet]Insufficient Core Resources sector.attacked = Sector [accent]{0}[white] under attack! sector.lost = Sector [accent]{0}[white] lost! -sector.captured = Sector [accent]{0}[white]captured! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -915,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -925,14 +983,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field -ability.unitspawn = {0} Factory +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Nõuab paremat puuri @@ -972,6 +1063,7 @@ bullet.splashdamage = [stat]{0}[lightgray] hävituspunkti ~[stat] {1}[lightgray] bullet.incendiary = [stat]süttiv bullet.homing = [stat]isesihtiv bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1007,6 +1099,7 @@ unit.items = ressursiühikut unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Üldinfo @@ -1027,6 +1120,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animeeritud vesi setting.animatedshields.name = Animeeritud kilbid @@ -1073,13 +1167,14 @@ setting.position.name = Show Player Position setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Muusika helitugevus setting.atmosphere.name = Show Planet Atmosphere +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Taustahelide tugevus setting.mutemusic.name = Vaigista muusika setting.sfxvol.name = Heliefektide tugevus setting.mutesound.name = Vaigista heli setting.crashreport.name = Saada automaatseid veateateid setting.savecreate.name = Loo automaatseid salvestisi -setting.publichost.name = Avaliku mängu nähtavus +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Player Limit setting.chatopacity.name = Vestlusakna läbipaistmatus setting.lasersopacity.name = Power Laser Opacity @@ -1087,6 +1182,8 @@ setting.bridgeopacity.name = Bridge Opacity setting.playerchat.name = Näita mängusisest vestlusakent setting.showweather.name = Show Weather Graphics setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Kohandage liidest sälku kuvamiseks +setting.macnotch.description = Muudatuste rakendamiseks on vaja taaskäivitada steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Note that beta versions of the game cannot make public lobbies. @@ -1097,6 +1194,7 @@ keybind.title = Muuda juhtnuppe keybinds.mobile = [scarlet]Enamik kuvatud juhtnuppudest ei ole kasutusel mobiilsetel seadmetel. Toetatakse vaid lihtsaid liikumisega seotud juhtnuppe. category.general.name = Mäng category.view.name = Kaamera ja kasutajaliides +category.command.name = Unit Command category.multiplayer.name = Mitmikmäng category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1114,6 +1212,24 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1177,17 +1293,25 @@ mode.pvp.description = Võitle teiste mängijate vastu. mode.attack.name = Rünnak mode.attack.description = Hävita vaenlaste baas. Lahingulaineid ei ole. mode.custom = Reeglid +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Lõputult ressursse rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Kasuta taimerit rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Kasuta lahingulaineid +rules.airUseSpawns = Air units use spawn points rules.attack = Mänguviis "Rünnak" +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1206,6 +1330,7 @@ rules.unitdamagemultiplier = Väeüksuste hävitusvõime kordaja rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Vaenlaste tuumiku ehitistevaba ala raadius:[lightgray] (ühik) @@ -1238,6 +1363,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Ressursid content.liquid.name = Vedelikud @@ -1455,6 +1582,7 @@ block.inverted-sorter.name = Inverted Sorter block.message.name = Sõnum block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Illuminator block.overflow-gate.name = Ülevooluvärav block.underflow-gate.name = Underflow Gate @@ -1695,7 +1823,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1813,9 +1940,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -1930,7 +2061,7 @@ block.pulse-conduit.description = Täiustatud toru, mis transpordib ja hoiustab block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. block.liquid-router.description = Jaotab vedelikke kuni kolmes väljuvas suunas võrdselt. Selle jaoturiga on võimalik teatud koguses ka vedelikku hoiustada. Kasulik olukordades, kus vedelikke on vaja korraga saata mitmesse kohta. block.liquid-container.description = Stores a sizeable amount of liquid. Outputs to all sides, similarly to a liquid router. -block.liquid-tank.description = Hoiustab suures koguses vedelikke. Kasuta puhvrite loomiseks juhul, kui ressursside nõudlus pole püsiv, või ettevaatusabinõuna tähtsate konstruktsioonide jahutussüsteemides. +block.liquid-tank.description = Hoiustab suures koguses vedelikke. Kasuta puhvrite loomiseks juhul, kui ressursside nõudlus pole püsiv, või ettevaatusabinõuna tähtsate konstruktsioonide jahutussüsteemides. block.liquid-junction.description = Toimib kui sild samal tasapinnal ristuvate torude vahel. Kasulik olukordades, kus kaks toru kannavad erinevaid vedelikke erinevatesse kohtadesse. block.bridge-conduit.description = Spetsiaalne toru, mis liigutab vedelikke üle maastiku ja ehitiste kuni 3 bloki ulatuses. block.phase-conduit.description = Täiustatud toru, mis kasutab energiat vedelike teleportimiseks järgmise samasuguse toruni üle mitme bloki. @@ -2009,7 +2140,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2045,7 +2175,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2162,6 +2291,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2184,6 +2314,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2195,6 +2327,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2207,6 +2380,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2232,6 +2406,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2249,6 +2424,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2310,6 +2486,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2320,8 +2497,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 81162be510..2b62fdaf39 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Ordenatu izarren arabera schematic = Eskema schematic.add = Gorde eskema... schematics = Eskemak +schematic.search = Search schematics... schematic.replace = Badago izen bereko eskema bat. Ordeztu nahi duzu? schematic.exists = Badago izen bereko eskema bat. schematic.import = Inportatu eskema... @@ -68,7 +69,7 @@ schematic.shareworkshop = Partekatu tailerrean schematic.flip = [accent][[{0}][]/[accent][[{1}][]: itzulbiratu eskema schematic.saved = Eskema gordeta. schematic.delete.confirm = Eskema hau behin betiko suntsituko da. -schematic.rename = Aldatu izena eskemari +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} bloke schematic.disabled = [scarlet]Eskemak desgaituta[]\nEz duzu eskemak erabiltzeko baimenik [accent]mapa[] edo [accent]zerbitzari[] honetan. schematic.tags = Etiketak: @@ -77,6 +78,7 @@ schematic.addtag = Gehitu etiketa schematic.texttag = Etiketaren testua schematic.icontag = Etiketaren ikonoa schematic.renametag = Aldatu etiketaren izena +schematic.tagged = {0} tagged schematic.tagdelconfirm = Ezabatu etiketa hau erabat? schematic.tagexists = Etiketa badago aurretik. stats = Estatistikak @@ -251,11 +253,19 @@ trace = Trazatu jokalaria trace.playername = Jokalariaren izena: [accent]{0} trace.ip = IP-a: [accent]{0} trace.id = ID bakana: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Bezero mugikorra: [accent]{0} trace.modclient = Bezero pertsonalizatua: [accent]{0} trace.times.joined = Times Joined: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Bezero ID baliogabea! Ireki arazte txosten bat. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Debekuak server.bans.none = Ez da debekatutako jokalaririk aurkitu! server.admins = Administratzaileak @@ -269,10 +279,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Konpilazio pertsonalizatua confirmban = Ziur jokalari hau debekatu nahi duzula? confirmkick = Ziur jokalari hau kanporatu nahi duzula? -confirmvotekick = Ziur hokalari hau botatzearen alde bozkaytu nahi duzula? confirmunban = Ziur jokalari hau debekatzeari utzi nahi nahi diozula? confirmadmin = Ziur jokalari hau admin bihurtu nahi duzula? confirmunadmin = Ziur jokalari honi admin eskubidea kendu nahi diozula? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Batu partidara joingame.ip = Helbidea: disconnect = Deskonektatuta. @@ -328,12 +339,23 @@ open = Ireki customize = Aldatu arauak cancel = Utzi command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Ireki esteka copylink = Kopiatu esteka back = Atzera @@ -380,9 +402,9 @@ custom = Pertsonalizatua builtin = Jolas barnekoa map.delete.confirm = Ziur mapa hau ezabatu nahi duzula? Ekintza hau ezin da desegin! map.random = [accent]Ausazko mapa -map.nospawn = Mapa honek ez du muinik jokalaria sortu dadin! Gehitu muin [accent] laranja[] bat mapa honi editorean. +map.nospawn = Mapa honek ez du muinik jokalaria sortu dadin! Gehitu muin {0} bat mapa honi editorean. map.nospawn.pvp = Mapa honek ez du etsaien muinik jokalaria sortu dadin! Gehitu [scarlet]laranja ez den[] muinen bat edo batzuk mapa honi editorean. -map.nospawn.attack = Mapa honek ez du etsaien muinik jokalariak eraso dezan! Gehitu muin [scarlet]gorriak[] mapa honi editorean. +map.nospawn.attack = Mapa honek ez du etsaien muinik jokalariak eraso dezan! Gehitu muin {0} mapa honi editorean. map.invalid = Errorea mapa kargatzean: Mapa-fitxategi baliogabe edo hondatua. workshop.update = Eguneratu elementua workshop.error = Errorea tailerreko xehetasunak eskuratzean: {0} @@ -414,6 +436,12 @@ editor.waves = Boladak: editor.rules = Arauak: editor.generation = Sorrarazi: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Editatu jolasean editor.playtest = Playtest editor.publish.workshop = Argitaratu lantegian @@ -457,7 +485,7 @@ waves.sort.begin = Begin waves.sort.health = Health waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Hide All waves.units.show = Show All @@ -469,6 +497,8 @@ editor.default = [lightgray] details = Xehetasunak... edit = Editatu... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Izena: editor.spawn = Sortu unitatea editor.removeunit = Kendu unitatea @@ -480,6 +510,7 @@ editor.errorlegacy = Mapa hau zaharregia da, eta jada onartzen ez den formatu za editor.errornot = Hau ez da mapa-fitxategi bat. editor.errorheader = Mapa hau hondatuta dago edo baliogabea da. editor.errorname = Mapak ez du zehaztutako izenik. Gordetako partida bat kargatzen saiatu zara? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Eguneratu editor.randomize = Ausazkoa editor.moveup = Move Up @@ -491,6 +522,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Aldatu neurria editor.loadmap = Kargatu mapa editor.savemap = Gorde mapa +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Gordeta! editor.save.noname = Zure mapak ez du izenik" Jarri baten bat 'Mapa info' menuan. editor.save.overwrite = Zure mapak jolas barneko mapa bat gainidatziko luke! Hautatu beste izen bat 'Mapa info' menuan. @@ -529,6 +561,8 @@ toolmode.eraseores = Ezabatu meak toolmode.eraseores.description = Ezabatu meak soilik. toolmode.fillteams = Bete taldeak toolmode.fillteams.description = Bete taldeak blokeen ordez. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Marraztu taldeak toolmode.drawteams.description = Marraztu taldeak blokeen ordez. toolmode.underliquid = Under Liquids @@ -551,6 +585,7 @@ filter.clear = Garbitu filter.option.ignore = Ezikusi filter.scatter = Sakabanaketa filter.terrain = Lursaila +filter.logic = Logic filter.option.scale = Eskala filter.option.chance = Zoria filter.option.mag = Magnitudea @@ -573,6 +608,25 @@ filter.option.floor2 = Bigarren zorua filter.option.threshold2 = Bigarren atalasea filter.option.radius = Erradioa filter.option.percentile = Pertzentila +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Zabalera: height = Altuera: @@ -623,9 +677,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -645,12 +702,11 @@ objective.command = [accent]Command Units objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ loadout = Loadout -resources = Resources +resources = Resources resources.max = Max bannedblocks = Debekatutako blokeak objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Gehitu denak @@ -673,7 +729,7 @@ error.any = Sareko errore ezezaguna. error.bloom = Ezin izan da distira hasieratu.\nAgian zure gailuak ez du onartzen. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -709,7 +765,8 @@ sector.curlost = Sector Lost sector.missingresources = [scarlet]Insufficient Core Resources sector.attacked = Sector [accent]{0}[white] under attack! sector.lost = Sector [accent]{0}[white] lost! -sector.captured = Sector [accent]{0}[white]captured! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -917,6 +974,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -927,14 +985,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field -ability.unitspawn = {0} Factory +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Zulagailu hobea behar da @@ -974,6 +1065,7 @@ bullet.splashdamage = [stat]{0}[lightgray] ingurune-kaltea ~[stat] {1}[lightgray bullet.incendiary = [stat]su-eragilea bullet.homing = [stat]gidatua bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1009,6 +1101,7 @@ unit.items = elementu unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Orokorra @@ -1029,6 +1122,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animatutako ura setting.animatedshields.name = Animatutako ezkutuak @@ -1075,13 +1169,14 @@ setting.position.name = Erakutsi jokalariaren kokalekua setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Musikaren bolumena setting.atmosphere.name = Show Planet Atmosphere +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Giroaren bolumena setting.mutemusic.name = Isilarazi musika setting.sfxvol.name = Efektuen bolumena setting.mutesound.name = Isilarazi soinua setting.crashreport.name = Bidali kraskatze txosten automatikoak setting.savecreate.name = Gorde automatikoki -setting.publichost.name = Partidaren ikusgaitasun publikoa +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Player Limit setting.chatopacity.name = Txataren opakotasuna setting.lasersopacity.name = Energia laserraren opakutasuna @@ -1089,6 +1184,8 @@ setting.bridgeopacity.name = Bridge Opacity setting.playerchat.name = Erakutsi jolas barneko txata setting.showweather.name = Show Weather Graphics setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Egokitu interfazea bistaratzeko +setting.macnotch.description = Berrabiarazi behar da aldaketak aplikatzeko steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Kontuan izan jolasaren beta bertsioek ezin dituztela jokalarien gela publokoak sortu. @@ -1099,6 +1196,7 @@ keybind.title = Aldatu teklak keybinds.mobile = [scarlet]Tekla konfigurazio gehienak ez dabiltza mugikorrean. Oinarrizko mugimendua onartzen da soilik. category.general.name = Orokorra category.view.name = Bistaratzea +category.command.name = Unit Command category.multiplayer.name = Hainbat jokalari category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1116,6 +1214,24 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Hautatu eskualdea keybind.schematic_menu.name = Eskema menua @@ -1179,17 +1295,25 @@ mode.pvp.description = Borrokatu beste jokalari batzuk lokalean.\n[gray]Gutxiene mode.attack.name = Erasoa mode.attack.description = Suntsitu etsaiaren basea. Boladarik ez.\n[gray]Kono gorria behar da mapan jolasteko. mode.custom = Arau pertsonalizatuak +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Baliabide amaigabeak rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Boladen denboragailua rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Boladak +rules.airUseSpawns = Air units use spawn points rules.attack = Eraso modua +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1208,6 +1332,7 @@ rules.unitdamagemultiplier = Unitateen kalte-biderkatzailea rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Etsaien muinaren ez-eraikitze erradioa:[lightgray] (lauzak) @@ -1240,6 +1365,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Solidoak content.liquid.name = Likidoak @@ -1457,6 +1584,7 @@ block.inverted-sorter.name = Alderantzizko antolatzailea block.message.name = Mezua block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Illuminator block.overflow-gate.name = Gainezkatze atea block.underflow-gate.name = Underflow Gate @@ -1697,7 +1825,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1815,9 +1942,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2011,7 +2142,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2047,7 +2177,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2164,6 +2293,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2186,6 +2316,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2197,6 +2329,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2209,6 +2382,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2234,6 +2408,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2251,6 +2426,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2312,6 +2488,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2322,8 +2499,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index a32f4ad83c..f9b20acc36 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Järjestä tähtien määrän perusteella schematic = Kaavio schematic.add = Tallenna kaavio... schematics = Kaaviot +schematic.search = Search schematics... schematic.replace = Kaavio tällä nimellä on jo olemassa. Haluatko korvata sen? schematic.exists = Kaavio tällä nimellä on jo olemassa. schematic.import = Tuo kaavio... @@ -68,7 +69,7 @@ schematic.shareworkshop = Jaa Workshoppiin schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Käännä Kaavio schematic.saved = Kaavio tallennettu. schematic.delete.confirm = Tämä kaavio poistetaan. -schematic.rename = Nimeä kaavio uudelleen +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} palikkaa schematic.disabled = [scarlet]Kaaviot poistettu käytöstä[]\nEt pysty käyttämään kaavioita tällä [accent]kartalla[] tai [accent]palvelimella. schematic.tags = Tunnisteet: @@ -77,6 +78,7 @@ schematic.addtag = Lisää tunniste schematic.texttag = Tekstitunniste schematic.icontag = Kuvatunniste schematic.renametag = Nimeä tunniste uudelleen +schematic.tagged = {0} tagged schematic.tagdelconfirm = Poista tunniste pysyvästi? schematic.tagexists = Samanlainen tunniste on jo olemassa. stats = Tilastot @@ -249,11 +251,19 @@ trace = Seuraa pelaajaa trace.playername = Pelaajanimi: [accent]{0} trace.ip = IP-osoite: [accent]{0} trace.id = Pelaajakohtainen tunniste: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobiililaite: [accent]{0} trace.modclient = Muokattu asiakasohjelma: [accent]{0} trace.times.joined = Kuinka monta kertaa olet liittynyt: [accent]{0} trace.times.kicked = Kuinka monta kertaa sinut on potkittu ulos: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Kelvoton asiakasohjelman ID! Lähetä bugiraportti. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Porttikiellot server.bans.none = Porttikieltoja saaneita pelaajia ei löytynyt! server.admins = Ylläpitäjät @@ -267,10 +277,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Muokattu koontiversio confirmban = Oletko varma että haluat antaa porttikiellon tälle pelaajalle? confirmkick = Oletko varma että haluat potkia tämän pelaajan? -confirmvotekick = Oletko varma että haluat äänestää tämän pelaajan potkituksi? confirmunban = Oletko varma että haluat päästää tämän pelaajan takaisin? confirmadmin = Oletko varma että haluat antaa pelaajalle hallinto-oikeuksia? confirmunadmin = Oletko varma että haluat poistaa hallinto-oikeudet pelaajalta? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Liity peliin joingame.ip = Osoite: disconnect = Yhteys katkaistu. @@ -326,12 +337,23 @@ open = Avaa customize = Muokkaa sääntöjä cancel = Peruuta command = Komento +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Avaa linkki copylink = Kopioi linkki back = Takaisin @@ -378,9 +400,9 @@ custom = Mukautettu builtin = Sisäänrakennettu map.delete.confirm = Oletko varma että haluat poistaa tämän kartan? Poistoa ei voi peruuttaa! map.random = [accent]Satunnainen kartta -map.nospawn = Tässä kartassa ei ole ytimiä joihin syntyä! Lisää[accent] oranssi[] ydin karttaan editorissa. -map.nospawn.pvp = Tässä kartassa ei ole vihollisytimiä, joihin pelaaja voisi syntyä! Lisää karttaan[scarlet] ei-oransseja[] ytimiä editorissa. -map.nospawn.attack = Tässä kartassa ei ole vihollisytimiä, joihin pelaaja voisi hyökätä! Lisää karttaan[scarlet] punaisia[] ytimiä editorissa. +map.nospawn = Tässä kartassa ei ole ytimiä joihin syntyä! Lisää {0} ydin karttaan editorissa. +map.nospawn.pvp = Tässä kartassa ei ole vihollisytimiä, joihin pelaaja voisi syntyä! Lisää karttaan [scarlet]ei-oransseja[] ytimiä editorissa. +map.nospawn.attack = Tässä kartassa ei ole vihollisytimiä, joihin pelaaja voisi hyökätä! Lisää karttaan {0} ytimiä editorissa. map.invalid = Virhe ladatessa karttaa: korruptoitunut tai väärä karttatiedosto. workshop.update = Päivitä tavara workshop.error = Virhe Workshopin tietoja noudettaessa: {0} @@ -412,6 +434,12 @@ editor.waves = Tasot: editor.rules = Säännöt: editor.generation = Generaatio: editor.objectives = Tehtävät +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Muokka pelin sisällä editor.playtest = Testaa pelin sisällä editor.publish.workshop = Julkaise Workshoppiin @@ -455,7 +483,7 @@ waves.sort.begin = Alkutaso waves.sort.health = Elämäpisteet waves.sort.type = Tyyppi waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Piilota kaikki waves.units.show = Näytä kaikki @@ -467,6 +495,8 @@ editor.default = [lightgray] details = Yksityiskohdat... edit = Muokkaa... variables = Muuttujat +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Nimi: editor.spawn = Luo yksikkö editor.removeunit = Poista yksikkö @@ -478,6 +508,7 @@ editor.errorlegacy = Tämä kartta on liian vanha, ja se käyttää vanhentunutt editor.errornot = Tämä ei ole karttatiedosto. editor.errorheader = Tämä karttatiedosto on joko kelvoton tai turmeltunut. editor.errorname = Kartalla ei ole määritettyä nimeä. Yritätkö ladata tallennusta? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Päivitä editor.randomize = Satunnaista editor.moveup = Liiku yläkansioon @@ -489,6 +520,7 @@ editor.sectorgenerate = Sektorigeneraatio editor.resize = Säädä kokoa editor.loadmap = Lataa kartta editor.savemap = Tallenna kartta +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Tallennettu! editor.save.noname = Kartallasi ei ole nimeä! Aseta sellainen 'Kartan tiedot' valikossa. editor.save.overwrite = Karttasi on ylikirjoittamassa sisäänrakennettua karttaa! Valitse toinen nimi 'Kartan tiedot' -valikossa. @@ -527,6 +559,8 @@ toolmode.eraseores = Poista malmit toolmode.eraseores.description = Poista vain malmit. toolmode.fillteams = Täytä tiimit toolmode.fillteams.description = Täytä joukkueita palikkojen sijaan. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Piirrä joukkueita toolmode.drawteams.description = Piirrä joukkueita palikkojen sijaan. toolmode.underliquid = Pinnanalainen tila @@ -549,6 +583,7 @@ filter.clear = Selkeä filter.option.ignore = Ohitta filter.scatter = Hajauta filter.terrain = Maasto +filter.logic = Logic filter.option.scale = Mittakaava filter.option.chance = Mahdollisuus filter.option.mag = Suuruus @@ -571,6 +606,25 @@ filter.option.floor2 = Toinen lattia filter.option.threshold2 = Toissijainen raja-arvo filter.option.radius = Säde filter.option.percentile = Prosentti +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Leveys: height = Korkeus: @@ -621,9 +675,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Pikkukartta +marker.point.name = Point marker.shape.name = Shape marker.text.name = Teksti +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Tutki:\n[]{0}[lightgray]{1} @@ -648,7 +705,6 @@ resources.max = Max bannedblocks = Kielletyt Palikat objectives = Tehtävät bannedunits = Kielletyt yksiköt -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Lisää kaikki @@ -671,7 +727,7 @@ error.any = Tuntematon verkon virhe. error.bloom = Bloomin initialisointi epäonnistui.\nLaitteesi ei ehkä tue sitä. weather.rain.name = Sade -weather.snow.name = Lumi +weather.snowing.name = Lumi weather.sandstorm.name = Hiekkamyrsky weather.sporestorm.name = Sienimyräkkä weather.fog.name = Sumu @@ -707,7 +763,8 @@ sector.curlost = Sektori menetetty sector.missingresources = [scarlet]Sinulla ei ole tarpeeksi resursseja. sector.attacked = Sektori [accent]{0}[white] on hyökkäyksen kohteena! sector.lost = Sektori [accent]{0}[white] menetetty! -sector.captured = Sektori [accent]{0}[white]vallattu! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Vaihda kuvaketta sector.noswitch.title = Sektoria ei voida vaihtaa sector.noswitch = Et voi vaihtaa sektoria, kun olemassaoleva sektori on hyökkäyksen kohteena.\n\nSektori: [accent]{0}[] planeetalla [accent]{1}[] @@ -914,6 +971,7 @@ stat.abilities = Erikoisvoimat stat.canboost = Voi tehostaa stat.flying = Lentävä stat.ammouse = Ammusten käyttö +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Vahinkokerroin stat.healthmultiplier = Elmäpistekerroin stat.speedmultiplier = Nopeuskerroin @@ -924,14 +982,47 @@ stat.immunities = Immuuni stat.healing = Parantuu ability.forcefield = Voimakenttä +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Korjauskenttä +ability.repairfield.description = Repairs nearby units ability.statusfield = Statuskenttä -ability.unitspawn = {0} Tehdas +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Tehdas +ability.unitspawn.description = Constructs units ability.shieldregenfield = Kilvenvahvistuskenttä +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Salamointi liikkuessa +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Kilpikaari +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energiakenttä: [accent]{0}[] vahinko ~ [accent]{1}[] palikkaa / [accent]{2}[] kohdetta +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energiakenttä +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Sijoittaminen sallittua vain ytimeen bar.drilltierreq = Parempi pora vaadittu @@ -971,6 +1062,7 @@ bullet.splashdamage = [stat]{0}[lightgray] Aluevahinko ~[stat] {1}[lightgray] pa bullet.incendiary = [stat]sytyttävä bullet.homing = [stat]itseohjautuva bullet.armorpierce = [stat]haarniskan läpäisevä +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x sirpaleammuksia: @@ -1006,6 +1098,7 @@ unit.items = esinettä unit.thousands = t unit.millions = milj unit.billions = mrd +unit.shots = shots unit.pershot = /laukaisu category.purpose = Tarkoitus category.general = Yleinen @@ -1026,6 +1119,7 @@ setting.backgroundpause.name = Pysäytä taustalla setting.buildautopause.name = Automaattisest Pysäytä Rakentaessa setting.doubletapmine.name = Kaksoisklikkaa kaivaaksesi setting.commandmodehold.name = Pidä pohjassa komentotilaa varten +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Poista lisäosat käytöstä käynnistyskaatumisissa setting.animatedwater.name = Animoitu vesi setting.animatedshields.name = Animoidut kilvet @@ -1072,13 +1166,14 @@ setting.position.name = Näytä pelaajan sijainti setting.mouseposition.name = Näytä hiiren sijainti setting.musicvol.name = Musiikin äänenvoimakkuus setting.atmosphere.name = Näytä planeetan ilmakehä +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Taustaäänet setting.mutemusic.name = Mykistä musiikki setting.sfxvol.name = SFX-voimakkuus setting.mutesound.name = Mykistä äänet setting.crashreport.name = Lähetä anonyymejä kaatumisilmoituksia setting.savecreate.name = Luo tallenuksia automaattisesti -setting.publichost.name = Julkisen pelin näkyvyys +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Pelaajaraja setting.chatopacity.name = Keskustelun läpinäkymättömyys setting.lasersopacity.name = Energia laserin läpinäkymättömyys @@ -1086,6 +1181,8 @@ setting.bridgeopacity.name = Siltojen läpinäkyvyys setting.playerchat.name = Näytä pelinsisäinen keskustelu setting.showweather.name = Näytä säägrafiikat setting.hidedisplays.name = Piilota logiikkanäytöt +setting.macnotch.name = Mukauta käyttöliittymä näyttämään lovi +setting.macnotch.description = Muutosten toteuttaminen vaatii uudelleenkäynnistyksen steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Huomaa, että pelin betaversiot eivät voi luoda julkisia auloja. @@ -1096,6 +1193,7 @@ keybind.title = Kontrollit keybinds.mobile = [scarlet]Useimmat näppäinkontrollit eivät toimi mobiililaitteilla. Vain yksinkertaista liikettä tuetaan. category.general.name = Yleinen category.view.name = Näytä +category.command.name = Unit Command category.multiplayer.name = Moninpeli category.blocks.name = Palikan Valinta placement.blockselectkeys = \n[lightgray]Näppäin: [{0}, @@ -1113,6 +1211,24 @@ keybind.mouse_move.name = Seuraa Hiirtä keybind.pan.name = Kelaa näkymää keybind.boost.name = Tehosta keybind.command_mode.name = Komentotila +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Valitse alue keybind.schematic_menu.name = Kaavio Valikko @@ -1176,17 +1292,25 @@ mode.pvp.description = Taistele toisia pelaajia vastaan paikallisesti.\n[gray]Pe mode.attack.name = Hyökkäys mode.attack.description = Tuhoa vihollisen tukikohta. Ei tasoja.\n[gray]Pelaaminen vaatii punaisen ytimen kartassa. mode.custom = Muokkaa sääntöjä +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Loputtomat resurssit rules.onlydepositcore = Salli sijoittaminen vain ytimeen +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reaktorien räjähtäminen rules.coreincinerates = Ydin höyrystää ylivuodon rules.disableworldprocessors = Poista maailmaprosessorit käytöstä rules.schematic = Salli kaaviot rules.wavetimer = Tasojen aikaraja rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Tasot +rules.airUseSpawns = Air units use spawn points rules.attack = Hyökkäystila +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min. hyökkäysjoukon koko rules.rtsmaxsquadsize = Max Squad Size @@ -1205,6 +1329,7 @@ rules.unitdamagemultiplier = Yksikköjen vahinkokerroin rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Aurinkovoimakerroin rules.unitcapvariable = Ytimet vaikuttavat yksikkörajaan +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Perusyksikköraja rules.limitarea = Rajoita kartan aluetta rules.enemycorebuildradius = Vihollisytimen rakennuksenestosäde:[lightgray] (laattoina) @@ -1237,6 +1362,8 @@ rules.weather = Sää rules.weather.frequency = Tiheys: rules.weather.always = Aina rules.weather.duration = Kesto: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Tavarat content.liquid.name = Nesteet @@ -1456,6 +1583,7 @@ block.inverted-sorter.name = Käänteinen Lajittelija block.message.name = Viesti block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Lamppu block.overflow-gate.name = Ylivuotoportti block.underflow-gate.name = Alivuotoportti @@ -1697,7 +1825,6 @@ block.disperse.name = Hälvennys block.afflict.name = Aiheuttaja block.lustre.name = Kiilto block.scathe.name = Vahinko -block.fabricator.name = Valmistaja block.tank-refabricator.name = Tankkijälleenrakentaja block.mech-refabricator.name = Robottijälleenrakentaja block.ship-refabricator.name = Ilma-alusjälleenrakentaja @@ -1815,9 +1942,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2012,11 +2143,10 @@ block.logic-display.description = Näyttää mielivaltaista ggrafiikkaa prosesso block.large-logic-display.description = Näyttää mielivaltaista ggrafiikkaa prosessorista. block.interplanetary-accelerator.description = Massiivinen sähkömagneettinen raidetykkitorni. Kiihdyttää ytimiä pakonopeuteen interplanetaarista leviämistä varten. block.repair-turret.description = Korjaa jatkuvasti lähintä vahingoittunutta yksikköä lähellään. Käyttää vaihtoehtoisesti jäähdytysnestettä. -block.payload-propulsion-tower.description = Pitkän kantaman lastinsiirtorakennus. Ampuu lastia muihin yhdistettyihin massakiihdytystorneihin. block.core-bastion.description = Tukikohdan ydin. Panssaroitu. Mikäli tuhottu, sektori on menetetty. block.core-citadel.description = Tukikohdan ydin. Tosi hyvin panssaroitu. Varastoi enemmän tavaraa kuin Linnaydin. block.core-acropolis.description = Tukikohdan ydin. Hemmetin hyvin panssaroitu. Varastoi enemmän tavaraa kuin Sitadelliydin. -block.breach.description = Ampuu läpäisykykyistä beryllium- tai volfhardiammusta vihollista kohti. +block.breach.description = Ampuu läpäisykykyistä beryllium- tai volfhardiammusta vihollista kohti. block.diffuse.description = Purskaisee ammuksia leveässä kartiomuodossa. Työntää vihollisia taaksepäin. block.sublimate.description = Suihkuttaa liekkejä vihollista päin. Läpäisee panssarit. block.titan.description = Ampuu jättimäisen tykistökranaatin maavihollisia kohti. Vaatii vetyä. @@ -2026,14 +2156,14 @@ block.lustre.description = Ampuu hidasta laseria vihollisia kohti. block.scathe.description = Ampuu voimakkaan ohjuksen maavihollisia kohti astetta pidempien matkojen päästä. block.smite.description = Pursketulittaa läpäisykykyisiä ja salamoivia luoteja. block.malign.description = Rumputulittaa itseohjautuvia laserpanoksia vihollista kohti. Tarvitsee laajakantoista lämmitystä. -block.silicon-arc-furnace.description = Jalostaa piitä hiekasta ja grafiitista. +block.silicon-arc-furnace.description = Jalostaa piitä hiekasta ja grafiitista. block.oxidation-chamber.description = Vääntää berylliumista ja otsonista oksidia. Hohkaa lämpöä sivutuotteena. block.electric-heater.description = Lämmittää päinkohdistettuja palikoita. Vaatii hemmetisti virtaa. block.slag-heater.description = Lämmittää päinkohdistettuja palikoita. Vaatii kuonaa. block.phase-heater.description = Lämmittää päinkohdistettuja palikoita. Vaatii kiihtokuitua. block.heat-redirector.description = Vaihtaa kertyneen lämmön suunnan toisiin palikoihin. block.heat-router.description = Spreads accumulated heat in three output directions. -block.electrolyzer.description = Muuttaa veden vedyksi ja otsonikaasuksi. +block.electrolyzer.description = Muuttaa veden vedyksi ja otsonikaasuksi. block.atmospheric-concentrator.description = Kerää typpeä ilmakehästä. Vaatii lämpöä. block.surge-crucible.description = Muodostaa ylijänniteseosta piistä ja kuonasta. Vaatii lämpöä. block.phase-synthesizer.description = Synthesizes phase fabric from thorium, sand, and ozone. Requires heat. @@ -2048,7 +2178,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2165,6 +2294,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Lue numero yhdistetystä muistisolusta. lst.write = Kirjoita numero yhdistettyyn muistisoluun. lst.print = Lisää tekstiä tekstipuskuriin.\nEi näytä mitään, kunnes [accent]Painosyötettä[] käytetään. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Lisää operaation piirtopuskuriin.\nEi näytä mitään, kunnes [accent]Piirtosyötettä[] käytetään. lst.drawflush = Syöttää jonottavat [accent]Piirto[]-operaatiot näyttöön. lst.printflush = Syöttää jonottavat [accent]Paino[]-operaatiot viestipalikkaan. @@ -2187,6 +2317,8 @@ lst.getblock = Selvitä laattadata missä tahansa sijainnissa. lst.setblock = Aseta laattadata missä tahansa sijainnissa. lst.spawnunit = Luo joukko tietyssä sijainnissa. lst.applystatus = Lisää tai poista statusefekti yksiköltä. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simuloi tason syntymistä mielivaltaisessa sijainnissa.\nEi vaikuta tasolaskuriin. lst.explosion = Luo räjähdys tietyssä sijainnissa. lst.setrate = Aseta prosessorin suoritusnopeus ohjeessa/sekunti. @@ -2198,6 +2330,47 @@ lst.cutscene = Hallitse pelaajan kameraa. lst.setflag = Aseta globaali tunniste, jonka kaikki prosessorit voivat lukea. lst.getflag = Tarkista, onko globaali tunniste asetettu. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Logiikan käyttö ei täällä ole sallittu yksikköjen tuottamisessa. lenum.type = Rakennuksen/Yksikön tyyppi.\nEsim. jokaisesta reitittimestä tämä palauttaa [accent]@router[].\nEi ole merkkijono. lenum.shoot = Ammu tiettyä sijaintia. @@ -2210,6 +2383,7 @@ laccess.dead = Selvitä, onko yksikkö/rakennus tuhoutunut tai ei enää kelvoll laccess.controlled = Palauttaa:\n[accent]@ctrlProcessor[], jos yksikön hallitsija on prosessori.\n[accent]@ctrlPlayer[], jos yksikön/rakennuksen hallitsija on pelaaja.\n[accent]@ctrlFormation[], jos yksikkö on muodostelmassa\nMuussa tapauksessa palauttaa 0. laccess.progress = Toiminnon edistys asteikolla nollasta yhteen.\nPalauttaa tuotannon, tykin latauksen tai rakennuksen edistymisen. laccess.speed = Yksikön huippunopeus laattoina/sekunti. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Tuntematon lcategory.unknown.description = Luokittelemattomat ohjeet. lcategory.io = Sisään- ja ulostulo @@ -2235,6 +2409,7 @@ graphicstype.poly = Piirrä säännöllinen monikulmio. graphicstype.linepoly = Piirrä säännöllisen monikulmion ääriviivat. graphicstype.triangle = Piirrä täytetty kolmio. graphicstype.image = Piirrä kuva jostain sisällöstä.\nEsim: [accent]@router[] tai [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Aina tosi. lenum.idiv = Kokonaislukujen osamäärä. lenum.div = Osamäärä.\nPalauttaa arvon [accent]null[] jaettaessa nollalla. @@ -2252,6 +2427,7 @@ lenum.xor = Binäärinen XOR. lenum.min = Vägintään kaksi numeroa. lenum.max = Korkeintaan kaksi numeroa. lenum.angle = Vektorin kulma asteina. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Vektorin pituus. lenum.sin = Sini asteina. lenum.cos = Kosini asteina. @@ -2313,6 +2489,7 @@ lenum.unbind = Poista logiikkahallinta kokonaan.\nAnna hallinta tavalliselle AI: lenum.move = Liiku tarkkaan sijaintiin. lenum.approach = Lähesty sijaintia tietylle säteelle. lenum.pathfind = Etsi polku vihollisen syntypisteelle. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Ammu tiettyä sijaintia. lenum.targetp = Ammu kohdetta nopeudenennustuksen ollessa päällä. lenum.itemdrop = Pudota tavaroita. @@ -2323,8 +2500,13 @@ lenum.payenter = Siirry tai laskeudu lastipalikalle, jonka päällä yksikkö on lenum.flag = Numeerinen yksikkötunniste. lenum.mine = Kaiva tietyssä sijainnissa. lenum.build = Rakenna tietty rakennus. -lenum.getblock = Selvitä rakennus ja sen tyyppi tietyissä koordinaateissa.\nSijainnin täytyy olla yksikön kantamalla.\nKiinteillä ei-rakennuksilla on tyyppi [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Tarkista, onko joukko tietyn sijainnin lähellä. lenum.boost = Aloita tai lopeta tehostus. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index da750d5d40..b4e19c1ef4 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -6,7 +6,7 @@ link.discord.description = Ang opisyal na Mindustry Discord chatroom. link.reddit.description = Ang Mindustry subreddit link.github.description = Source code ng Mindustry link.changelog.description = Listahan ng mga pagbabagong ginawa -link.dev-builds.description = Unstable development builds +link.dev-builds.description = Unstable development builds link.trello.description = Opisyal na Trello board para sa mga nakalatag na features link.itch.io.description = itch.io page na may PC download link.google-play.description = Listing sa Google Play Store @@ -56,6 +56,7 @@ mods.browser.sortstars = Sort by stars schematic = Schematic schematic.add = I-adya ang Schematic... schematics = Mga Schematic +schematic.search = Search schematics... schematic.replace = Ang schematic na ito ay magkaparehas ang pangalan. Gusto mo bang palitan ito? schematic.exists = Ang schematic na ito ay magkaparehas ang pangalan. schematic.import = I-angkat ang Schematic... @@ -68,7 +69,7 @@ schematic.shareworkshop = Ibahagi sa Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Baligtarin ang Schematic schematic.saved = Na-i-adya na ang schematic. schematic.delete.confirm = Ang schematic na'to ay tuluyang mawawala. -schematic.rename = Palitan Ang Pangalan ng Schematic +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blocks schematic.disabled = [scarlet]Ang mga schematics ay pinagbabawalan.[]\nBawal ka gumamit gang schematics sa [accent]mapa[] or [accent]server[] na ito. schematic.tags = Mga Tag: @@ -77,6 +78,7 @@ schematic.addtag = Mag-dagdag ng Tag schematic.texttag = Text Tag schematic.icontag = Icon Tag schematic.renametag = Palitan ang pangalan ng Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = I-delete itong tag? schematic.tagexists = Meron nang tag na ganito. stats = Mga Statistiko @@ -249,11 +251,19 @@ trace = Trace Player trace.playername = Pangalan ng Player: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Unique ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobile Client: [accent]{0} trace.modclient = Custom Client: [accent]{0} trace.times.joined = Times Joined: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Di-wastong client ID! Magsumite ng ulat ng bug. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Bans server.bans.none = walang nahanap na banned players! server.admins = Admins @@ -267,10 +277,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Custom Build confirmban = Sigurado ka bang gusto mong i-ban si "{0}[white]"? confirmkick = Sigurado ka bang gusto mong i-kick si "{0}[white]"? -confirmvotekick = Sigurado ka bang gusto mong i-vote-kick si "{0}[white]"? confirmunban = Sigurado kabang i-unban ang player? confirmadmin = Sigurado ka bang gusto mong gawing admin si "{0}[white]"? confirmunadmin = Sigurado kabang i-remove ang admin mula kay "{0}[white]"? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Sumali sa Laro joingame.ip = Address: disconnect = Disconnected. @@ -326,12 +337,23 @@ open = Open customize = I-customize ang Mga Panuntunan cancel = Cancel command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Open Link copylink = Copy Link back = Back @@ -378,9 +400,9 @@ custom = Custom builtin = Built-In map.delete.confirm = Sigurado ka bang gusto mong tanggalin ang mapang ito? Ang gawaing ito ay hindi pwedeng baguhin! map.random = [accent]Random Map -map.nospawn = Ang mapa na ito ay walang anumang mga core para sa player upang mai-spawn in! Mag-dagdag ng [accent]orange[] core sa editor ng mapa! -map.nospawn.pvp = Ang mapa na ito ay walang anumang mga core ng kaaway para sa player upang i-spawn! Add[scarlet] non-orange[] cores to this map in the editor. -map.nospawn.attack = Ang mapa na ito ay walang anumang mga core ng kaaway para sa pag-atake ng manlalaro! Add[scarlet] red[] cores to this map in the editor. +map.nospawn = Ang mapa na ito ay walang anumang mga core para sa player upang mai-spawn in! Mag-dagdag ng {0} core sa editor ng mapa! +map.nospawn.pvp = Ang mapa na ito ay walang anumang mga core ng kaaway para sa player upang i-spawn! Add [scarlet]non-orange[] cores to this map in the editor. +map.nospawn.attack = Ang mapa na ito ay walang anumang mga core ng kaaway para sa pag-atake ng manlalaro! Add {0} cores to this map in the editor. map.invalid = Error loading map: corrupted o sira na map file. workshop.update = Update Item workshop.error = Error sa pagkuha ng mga detalye ng workshop: {0} @@ -412,6 +434,12 @@ editor.waves = Waves: editor.rules = Rules: editor.generation = Generation: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = I-Publish Sa Workshop @@ -455,7 +483,7 @@ waves.sort.begin = Simula waves.sort.health = Health waves.sort.type = Uri waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Itago lahat waves.units.show = Ipakita lahat @@ -467,6 +495,8 @@ editor.default = [lightgray] details = Details... edit = Edit... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Name: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -478,6 +508,7 @@ editor.errorlegacy = Masyadong luma ang mapang ito, at gumagamit ng legacy na fo editor.errornot = Ito ay hindi isang file ng mapa. editor.errorheader = Ang file ng mapa na ito ay maaaring hindi wasto o sira. editor.errorname = Walang tinukoy na pangalan ang mapa. Sinusubukan mo bang mag-load ng save file? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Update editor.randomize = Randomize editor.moveup = Move Up @@ -489,6 +520,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Resize editor.loadmap = Load Map editor.savemap = Save Map +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Saved! editor.save.noname = Walang pangalan ang iyong mapa! Itakda ang isa sa menu na 'impormasyon ng mapa'. editor.save.overwrite = Ino-overwrite ng iyong mapa ang isang built-in na mapa! Pumili ng ibang pangalan sa menu na 'impormasyon ng mapa'. @@ -527,6 +559,8 @@ toolmode.eraseores = Erase Ores toolmode.eraseores.description = Erase only ores. toolmode.fillteams = Fill Teams toolmode.fillteams.description = Fill teams instead of blocks. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Draw Teams toolmode.drawteams.description = Draw teams instead of blocks. toolmode.underliquid = Under Liquids @@ -549,6 +583,7 @@ filter.clear = Clear filter.option.ignore = Ignore filter.scatter = Scatter filter.terrain = Terrain +filter.logic = Logic filter.option.scale = Scale filter.option.chance = Chance filter.option.mag = Magnitude @@ -571,6 +606,25 @@ filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Width: height = Height: @@ -621,9 +675,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -648,7 +705,6 @@ resources.max = Max bannedblocks = Mga Pinagbabawalan na Blocks objectives = Objectives bannedunits = Mga Pinagbabawalan na Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -671,7 +727,7 @@ error.any = Unknown network error. error.bloom = Nabigong simulan ang bloom.\nMaaaring hindi ito sinusuportahan ng iyong device. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -707,7 +763,8 @@ sector.curlost = Nawala ang sector sector.missingresources = [scarlet]Kulang ang mga Core Resources sector.attacked = Ang sector [accent]{0}[white] ay inaatake! sector.lost = Ang sector [accent]{0}[white] ay nawala! -sector.captured = Ang sector [accent]{0}[white] ay na-capture na! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -914,6 +971,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -924,14 +982,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field -ability.unitspawn = {0} Factory +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Better Drill Required @@ -971,6 +1062,7 @@ bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles bullet.incendiary = [stat]incendiary bullet.homing = [stat]homing bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1006,6 +1098,7 @@ unit.items = items unit.thousands = k unit.millions = mil unit.billions = bil +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = General @@ -1026,6 +1119,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Huwag paganahin ang Mods Sa Startup Crash setting.animatedwater.name = Animated Fluids setting.animatedshields.name = Animated Shields @@ -1072,13 +1166,14 @@ setting.position.name = Show Player Position setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Music Volume setting.atmosphere.name = Ipakita Planet Atmosphere +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Mute Music setting.sfxvol.name = SFX Volume setting.mutesound.name = Mute Sound setting.crashreport.name = Mag-send ng Anonymous Crash Reports setting.savecreate.name = Auto-Create Saves -setting.publichost.name = Public Game Visibility +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Player Limit setting.chatopacity.name = Chat Opacity setting.lasersopacity.name = Power Laser Opacity @@ -1086,6 +1181,8 @@ setting.bridgeopacity.name = Bridge Opacity setting.playerchat.name = Ipakita Player Bubble Chat setting.showweather.name = Show Weather Graphics setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Iangkop ang interface upang ipakita ang bingaw +setting.macnotch.description = Kinakailangan ang pag-restart upang mailapat ang mga pagbabago steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Tandaan na ang mga beta na bersyon ng laro ay hindi maaaring gumawa ng mga pampublikong lobby. @@ -1096,6 +1193,7 @@ keybind.title = Rebind Keys keybinds.mobile = [scarlet]Karamihan sa mga keybinds dito ay hindi gumagana sa mobile. Ang pangunahing paggalaw lamang ang sinusuportahan. category.general.name = General category.view.name = View +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1113,6 +1211,24 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1176,17 +1292,25 @@ mode.pvp.description = Lumaban sa iba pang mga manlalaro nang lokal.\n[gray]Nang mode.attack.name = Attack mode.attack.description = Wasakin ang base ng kalaban. \n[gray]Nangangailangan ng pulang core sa mapa upang maglaro. mode.custom = Custom Rules +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Infinite Resources rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Wave Timer rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Waves +rules.airUseSpawns = Air units use spawn points rules.attack = Attack Mode +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1205,6 +1329,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) @@ -1237,6 +1362,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Items content.liquid.name = Liquids @@ -1454,6 +1581,7 @@ block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Illuminator block.overflow-gate.name = Overflow Gate block.underflow-gate.name = Underflow Gate @@ -1694,7 +1822,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1812,9 +1939,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2008,7 +2139,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2044,7 +2174,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2161,6 +2290,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2183,6 +2313,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2194,6 +2326,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2206,6 +2379,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2231,6 +2405,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2248,6 +2423,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2309,6 +2485,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2319,8 +2496,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index de718442a4..24dab35380 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -35,7 +35,7 @@ load.mod = Mods load.scripts = Scripts be.update = Une nouvelle version expérimentale est disponible: -be.update.confirm = Télécharger et Redémarrer le jeu maintenant ? +be.update.confirm = Télécharger et redémarrer le jeu maintenant ? be.updating = Mise à jour en cours... be.ignore = Ignorer be.noupdates = Aucune mise à jour trouvée. @@ -57,6 +57,7 @@ mods.browser.sortstars = Classer par étoiles schematic = Schéma schematic.add = Enregistrer le Schéma schematics = Schémas +schematic.search = Chercher des schémas... schematic.replace = Un schéma avec ce nom existe déjà. Voulez-vous le remplacer ? schematic.exists = Un schéma avec ce nom existe déjà. schematic.import = Importer un schéma @@ -69,15 +70,16 @@ schematic.shareworkshop = Partager sur le Steam Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Retourner le schéma schematic.saved = Schéma enregistré. schematic.delete.confirm = Ce schéma sera supprimé définitivement ! -schematic.rename = Renommer le schéma +schematic.edit = Editer Schéma 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é à utiliser des schémas sur cette [accent]carte[] ou dans ce [accent]serveur. schematic.tags = Étiquettes : schematic.edittags = Éditer les étiquettes schematic.addtag = Ajouter une étiquette schematic.texttag = Mot schematic.icontag = Icône schematic.renametag = Renommer l'étiquette +schematic.tagged = {0} étiqueté(s) schematic.tagdelconfirm = Voulez-vous supprimer cette étiquette définitivement ? schematic.tagexists = Cette étiquette existe déjà. @@ -127,7 +129,7 @@ committingchanges = Validation des modifications done = Terminé feature.unsupported = Votre appareil ne prend pas en charge cette fonctionnalité. -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.[] +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 plantage, [red]tous les mods ont été désactivés.[] mods = Mods mods.none = [lightgray]Aucun Mod trouvé ! mods.guide = Guide de Modding @@ -187,7 +189,7 @@ noname = Commencez par choisir un[accent] nom[]. search = Recherche : planetmap = Carte de la Planète launchcore = Lancer le Noyau -filename = Nom du fichier : +filename = Nom du fichier : unlocked = Nouveau contenu débloqué ! available = Nouvelle recherche disponible ! unlock.incampaign = < Débloquer dans la campagne pour plus de détails > @@ -243,7 +245,7 @@ hosts.none = [lightgray]Aucune partie en LAN trouvée ! host.invalid = [scarlet]Impossible de se connecter à l'hôte. servers.local = Serveurs locaux -servers.local.steam = Jeux Libres & Serveurs Locaux +servers.local.steam = Parties Libres & Serveurs Locaux servers.remote = Serveurs distants servers.global = Serveurs communautaires @@ -257,11 +259,21 @@ trace = Suivre le joueur trace.playername = Nom du joueur : [accent]{0} trace.ip = IP : [accent]{0} trace.id = ID : [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Client Mobile : [accent]{0} trace.modclient = Client personnalisé : [accent]{0} trace.times.joined = Nombre de connexions : [accent]{0} trace.times.kicked = Nombre d'expulsions : [accent]{0} +trace.ips = IPs: +trace.names = Noms: invalidid = ID du client invalide ! Veuillez soumettre un rapport d'erreur. + +player.ban = Bannir +player.kick = Expulser +player.trace = Tracer +player.admin = Activer Admin +player.team = Changer Équipe + server.bans = Bans server.bans.none = Aucun joueur banni trouvé ! server.admins = Admins @@ -275,10 +287,11 @@ server.version = [gray]Version : {0} {1} server.custombuild = [accent]Version personnalisée confirmban = Êtes-vous sûr de vouloir bannir "{0}[white]" ? confirmkick = Êtes-vous sûr de vouloir expulser "{0}[white]" ? -confirmvotekick = Êtes-vous sûr de vouloir voter l'expulsion de "{0}[white]" ? confirmunban = Êtes-vous sûr de vouloir annuler le ban de ce joueur ? confirmadmin = Êtes-vous sûr de vouloir faire de "{0}[white]" un administrateur ? confirmunadmin = Êtes-vous sûr de vouloir supprimer le statut d'administrateur de "{0}[white]" ? +votekick.reason = Raison du vote d'expulsion +votekick.reason.message = Êtes-vous sûr de vouloir voter l'expulsion de "{0}[white]"?\nSi oui, merci d'entrer la raison : joingame.title = Rejoindre une partie joingame.ip = Adresse IP : disconnect = Déconnecté. @@ -334,19 +347,30 @@ open = Ouvrir customize = Personnaliser cancel = Annuler command = Commander +command.queue = [lightgray][Queuing] command.mine = Miner command.repair = Réparer command.rebuild = Reconstruire command.assist = Assister command.move = Bouger command.boost = Booster +command.enterPayload = Entrer dans Bloc de Transport +command.loadUnits = Transporter Unités +command.loadBlocks = Transporter Blocs +command.unloadPayload = Poser Chargement +stance.stop = Annuler les Ordres +stance.shoot = Ordre: Tirer +stance.holdfire = Ordre: Ne pas Tirer +stance.pursuetarget = Ordre: Poursuivre Cible +stance.patrol = Ordre: Chemins de Contrôle +stance.ram = Ordre: Charger\n[lightgray]Mouvement en ligne droite, sans détection de chemins openlink = Ouvrir le lien copylink = Copier le lien back = Retour max = Max objective = Objectif de la Carte crash.export = Exporter les rapports de bugs -crash.none = Aucun rapport de bug trouvé. +crash.none = Aucun rapport de bugs trouvé. crash.exported = Rapports de bugs exportés. data.export = Exporter les données data.import = Importer des données @@ -386,9 +410,9 @@ custom = Personnalisé builtin = Intégré 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.nospawn = Cette carte n'a aucun noyau pour que les joueurs puissent apparaître !\nAjoutez au moins un Noyau [#{0}]{1}[] sur cette carte dans l'éditeur. +map.nospawn = Cette carte n'a aucun noyau pour que les joueurs puissent apparaître !\nAjoutez au moins un Noyau {0} sur cette carte dans l'éditeur. map.nospawn.pvp = Cette carte n'a aucun noyau ennemi pour que les joueurs ennemis puissent apparaître !\nAjoutez au moins un Noyau [scarlet]non-orange[] dans l'éditeur. -map.nospawn.attack = Cette carte n'a aucun noyau ennemi à attaquer !\nAjouter au moins un Noyau [#{0}]{1}[] sur cette carte dans l'éditeur. +map.nospawn.attack = Cette carte n'a aucun noyau ennemi à attaquer !\nAjouter au moins un Noyau {0} sur cette carte dans l'éditeur. map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide. workshop.update = Mettre à jour workshop.error = Erreur lors de la récupération des détails du Steam Workshop: {0} @@ -407,7 +431,7 @@ steam.error = Échec d'initialisation des services Steam.\nErreur : {0} editor.planet = Planète : editor.sector = Secteur : editor.seed = Graine : -editor.cliffs = Transformer murs en falaises +editor.cliffs = Transformer les murs en falaises editor.brush = Pinceau editor.openin = Ouvrir dans l'éditeur editor.oregen = Génération de minerai @@ -420,6 +444,12 @@ editor.waves = Vagues editor.rules = Règles editor.generation = Génération editor.objectives = Objectifs +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Éditer dans le jeu editor.playtest = Tester editor.publish.workshop = Publier sur le Workshop @@ -463,7 +493,7 @@ waves.sort.begin = Vague waves.sort.health = Santé waves.sort.type = Type waves.search = Rechercher des vagues... -waves.filter.unit = Filtre d'Unité +waves.filter = Filtre d'Unité waves.units.hide = Masquer tout waves.units.show = Afficher tout @@ -476,6 +506,8 @@ editor.default = [lightgray] details = Détails... edit = Modifier... variables = Variables +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Nom : editor.spawn = Ajouter une unité editor.removeunit = Retirer l'unité @@ -487,6 +519,7 @@ editor.errorlegacy = Cette carte est trop ancienne et utilise un format de carte editor.errornot = Ceci n'est pas un fichier de carte. editor.errorheader = Ce fichier de carte est invalide ou corrompu. editor.errorname = La carte n'a pas de nom. Essayez-vous de charger une sauvegarde ? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Mettre à jour editor.randomize = Générer editor.moveup = Monter @@ -498,6 +531,7 @@ editor.sectorgenerate = Générer un Secteur editor.resize = Redimensionner editor.loadmap = Charger la carte editor.savemap = Sauvegarder la carte +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Sauvegardé ! 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 !\nChoisissez un nom différent dans le menu 'Infos de la Carte'. @@ -536,9 +570,11 @@ toolmode.eraseores = Effacer les minerais toolmode.eraseores.description = Efface seulement\nles minerais. toolmode.fillteams = Remplir les équipes toolmode.fillteams.description = Remplit les équipes\nau lieu des blocs. +toolmode.fillerase = Remplir et effacer +toolmode.fillerase.description = Efface les blocs\ndu même type. toolmode.drawteams = Dessiner les équipes toolmode.drawteams.description = Change les équipes\nau lieu de blocs. -#unitilisé +#inutilisé toolmode.underliquid = Sous les liquides toolmode.underliquid.description = Dessiner les sols sous les tuiles de liquides. @@ -560,6 +596,7 @@ filter.clear = Effacer filter.option.ignore = Ignorer filter.scatter = Disperser filter.terrain = Terrain +filter.logic = Logic filter.option.scale = Échelle filter.option.chance = Chance @@ -583,6 +620,25 @@ filter.option.floor2 = Sol secondaire filter.option.threshold2 = Seuil secondaire filter.option.radius = Rayon filter.option.percentile = Pourcentage +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Largeur : height = Hauteur : @@ -596,7 +652,7 @@ ping = Ping: {0}ms tps = TPS: {0} memory = Mem: {0}mb memory2 = Mem:\n {0}mb +\n {1}mb -language.restart = Veuillez redémarrer votre jeu pour que le changement de langue prenne effet. +language.restart = Veuillez redémarrer votre jeu pour que le changement de langue prenne effet. settings = Paramètres tutorial = Tutoriel tutorial.retake = Refaire le Tutoriel @@ -635,9 +691,12 @@ objective.commandmode.name = Mode « Commande » objective.flag.name = Drapeau marker.shapetext.name = Forme de Texte -marker.minimap.name = Minicarte +marker.point.name = Point marker.shape.name = Forme marker.text.name = Texte +marker.line.name = Ligne +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Fond marker.outline = Contour @@ -666,7 +725,6 @@ resources.max = Max bannedblocks = Blocs bannis objectives = Objectifs bannedunits = Unités bannies -rules.hidebannedblocks = Cacher les blocs bannis. bannedunits.whitelist = Unités bannies en tant que liste blanche bannedblocks.whitelist = Blocs bannis en tant que liste blanche addall = Ajouter TOUT @@ -680,8 +738,8 @@ guardian = Gardien connectfail = [scarlet]Échec de la connexion au serveur : \n\n[accent]{0} error.unreachable = Serveur inaccessible.\nEst-ce que l'adresse est écrite correctement? error.invalidaddress = Adresse invalide. -error.timedout = Expiration du délai!\nAssurez-vous que l'ouverture des ports est configurée chez l'hôte, que le serveur est ouvert et que l'adresse est correcte! -error.mismatch = Erreur de paquet :\nPossible incompatibilité de version client/serveur.\nAssurez-vous que l'hôte et vous disposez de la même version de Mindustry ! +error.timedout = Expiration du délai!\nAssurez-vous que l'ouverture des ports est configurée chez l'hôte, que le serveur est ouvert et que l'adresse est correcte! +error.mismatch = Erreur de paquet :\nPossible incompatibilité de version client/serveur.\nAssurez-vous que l'hôte et vous, disposez de la même version de Mindustry ! error.alreadyconnected = Déjà connecté. error.mapnotfound = Fichier de carte introuvable ! error.io = Erreur de Réseau (I/O) @@ -689,7 +747,7 @@ error.any = Erreur de réseau inconnue. error.bloom = Échec de l'initialisation du flou lumineux.\nIl se peut que votre appareil ne le prenne pas en charge. weather.rain.name = Pluie -weather.snow.name = Neige +weather.snowing.name = Neige weather.sandstorm.name = Tempête de sable weather.sporestorm.name = Tempête de spores weather.fog.name = Brouillard @@ -726,12 +784,12 @@ sector.curlost = Secteur perdu sector.missingresources = [scarlet]Ressources du Noyau insuffisantes ! sector.attacked = Secteur [accent]{0}[white] attaqué ! sector.lost = Secteur [accent]{0}[white] perdu ! -#note: the missing space in the line below is intentional -sector.captured = Secteur [accent]{0}[white]capturé ! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Changer l'Icône sector.noswitch.title = Impossible de changer de Secteur sector.noswitch = Vous ne pouvez pas changer de secteur pendant qu’un autre est attaqué.\n\nSecteur: [accent]{0}[] sur [accent]{1}[] -sector.view = Voir le Secteur +sector.view = Voir le secteur threat.low = Faible threat.medium = Normale @@ -771,7 +829,7 @@ sector.craters.description = Ce cratère est une relique d'anciennes guerres. De 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 leurs technologies. sector.stainedMountains.description = Plus loin, à l’intérieur des terres, se trouvent des montagnes qui n'ont pas été 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.tarFields.description = La périphérie d’une zone de production pétrolière, située 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 pétrolière, située 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.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.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. @@ -847,7 +905,7 @@ settings.graphics = Graphismes settings.cleardata = Effacer les données du jeu... settings.clear.confirm = Êtes-vous sûr de vouloir effacer ces données?\nAucun retour en arrière n'est possible ! settings.clearall.confirm = [scarlet]ATTENTION ![]\nCette action effacera toutes les données, y compris les sauvegardes, les cartes, la progression et la configuration des touches.\nUne fois que vous aurez pressé 'OK', le jeu effacera TOUTES les données et se fermera. -settings.clearsaves.confirm = Êtes-vous sûr de vouloir supprimer toutes vos sauvegardes? +settings.clearsaves.confirm = Êtes-vous sûr de vouloir supprimer toutes vos sauvegardes ? settings.clearsaves = Supprimer les Sauvegardes settings.clearresearch = Supprimer la Recherche settings.clearresearch.confirm = Êtes-vous sûr de vouloir supprimer toutes les recherches de la campagne ? @@ -912,7 +970,7 @@ stat.maxunits = Max d'Unités Actives stat.health = Santé stat.armor = Armure stat.buildtime = Durée de construction -stat.maxconsecutive = Max Consécutif +stat.maxconsecutive = Max consécutif stat.buildcost = Coût de construction stat.inaccuracy = Imprécision stat.shots = Tirs @@ -939,6 +997,7 @@ stat.abilities = Habilités stat.canboost = Boost stat.flying = Unité volante stat.ammouse = Utilisation de munitions +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Multiplicateur de dégâts stat.healthmultiplier = Multiplicateur de santé stat.speedmultiplier = Multiplicateur de vitesse @@ -949,14 +1008,46 @@ stat.immunities = Immunités stat.healing = Guérison ability.forcefield = Champ de Force +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Champ de Réparation -ability.statusfield = Champ d'Amélioration {0} -ability.unitspawn = Usine de {0} +ability.repairfield.description = Repairs nearby units +ability.statusfield = Champ d'Amélioration +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Usine +ability.unitspawn.description = Constructs units ability.shieldregenfield = Champ de régénération de bouclier +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Déplacement éclair +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Arc de Bouclier +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Champ de Suppression de Soins -ability.energyfield = Champ d'énergie: [accent]{0}[] dégâts ~ [accent]{1}[] blocs / [accent]{2}[] cibles +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Champ d'énergie +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Régénération +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Seul le dépôt de ressources dans le Noyau est autorisé bar.drilltierreq = Meilleure Foreuse Requise @@ -996,6 +1087,7 @@ bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgra bullet.incendiary = [stat]incendiaire bullet.homing = [stat]autoguidé bullet.armorpierce = [stat]perceur d'armure +bullet.maxdamagefraction = [stat]{0}%[lightgray] limite de dégâts bullet.suppression = [stat]{0} sec[lightgray] suppression de soins ~ [stat]{1}[lightgray] blocs bullet.interval = [stat]{0}/sec[lightgray] Balle secondaire: bullet.frags = [stat]{0}[lightgray]x Balle à fragmentation: @@ -1031,6 +1123,7 @@ unit.items = objets unit.thousands = k unit.millions = M unit.billions = Md +unit.shots = shots unit.pershot = /tirs category.purpose = Description category.general = Caractéristiques @@ -1051,11 +1144,12 @@ setting.backgroundpause.name = Pause en Arrière-plan setting.buildautopause.name = Confirmation avant construction setting.doubletapmine.name = Double-clic pour Miner setting.commandmodehold.name = Retenir pour le Mode « Commande » +setting.distinctcontrolgroups.name = Limiter un groupe de contrôle par unité setting.modcrashdisable.name = Désactiver les mods lors d'un crash au démarrage setting.animatedwater.name = Surfaces Animées setting.animatedshields.name = Boucliers Animés -setting.playerindicators.name = Indicateurs alliés -setting.indicators.name = Indicateurs ennemis +setting.playerindicators.name = Indicateurs d'alliés +setting.indicators.name = Indicateurs d'ennemis setting.autotarget.name = Visée automatique setting.keyboard.name = Contrôles Souris+Clavier setting.touchscreen.name = Commandes d'écran tactile @@ -1086,7 +1180,7 @@ setting.fullscreen.name = Plein Écran setting.borderlesswindow.name = Fenêtré sans bordures setting.borderlesswindow.name.windows = Plein écran sans bordure setting.borderlesswindow.description = Un redémarrage peut être nécessaire pour appliquer les changements. -setting.fps.name = Afficher FPS et Ping +setting.fps.name = Afficher les FPS et le Ping setting.console.name = Activer la Console setting.smoothcamera.name = Lissage de la Caméra setting.vsync.name = Synchronisation Verticale @@ -1096,14 +1190,15 @@ setting.coreitems.name = Afficher les objets du Noyau setting.position.name = Afficher la position du joueur setting.mouseposition.name = Afficher la Position de la Souris setting.musicvol.name = Volume de la Musique -setting.atmosphere.name = Montrer l'Atmosphère de la planète +setting.atmosphere.name = Montrer l'Atmosphère des planètes +setting.drawlight.name = Dessiner les Ombres/Lumières setting.ambientvol.name = Volume Ambiant setting.mutemusic.name = Couper la Musique setting.sfxvol.name = Volume des Sons et Effets setting.mutesound.name = Couper les Sons et Effets setting.crashreport.name = Envoyer des Rapports de crash anonymes setting.savecreate.name = Sauvegardes Automatiques -setting.publichost.name = Visibilité de la Partie publique +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Limite de Joueurs setting.chatopacity.name = Opacité du Chat setting.lasersopacity.name = Opacité des Connexions laser @@ -1111,6 +1206,8 @@ setting.bridgeopacity.name = Opacité des ponts setting.playerchat.name = Montrer les bulles de discussion des joueurs setting.showweather.name = Montrer les Effets météo setting.hidedisplays.name = Cacher les Écrans +setting.macnotch.name = Adapter l'interface pour afficher l'encoche +setting.macnotch.description = Redémarrage du jeu nécessaire pour appliquer les changements steam.friendsonly = Amis seulement steam.friendsonly.tooltip = Indique si seuls les amis Steam peuvent rejoindre votre partie.\nSi vous décochez cette case, votre partie deviendra publique et tout le monde pourra la rejoindre. public.beta = Notez que les versions bêta du jeu ne peuvent pas créer de salons publics. @@ -1121,6 +1218,7 @@ keybind.title = Paramètres des Touches du Clavier keybinds.mobile = [scarlet]La plupart des touches de clavier ne sont pas fonctionnelles sur mobile. Seuls les mouvements basiques sont supportés. category.general.name = Général category.view.name = Vue +category.command.name = Commandes d'Unité category.multiplayer.name = Multijoueur category.blocks.name = Sélection des blocs placement.blockselectkeys = \n[lightgray]Raccourci : [{0}, @@ -1138,6 +1236,26 @@ keybind.mouse_move.name = Suivre la souris keybind.pan.name = Vue Panoramique keybind.boost.name = Boost keybind.command_mode.name = Mode « Commande » +keybind.command_queue.name = File d'attente des Commandes d'Unités +keybind.create_control_group.name = Créer un Groupe de Contrôle +keybind.cancel_orders.name = Annuler les Ordres + +keybind.unit_stance_shoot.name = Ordre: Tirer +keybind.unit_stance_hold_fire.name = Ordre: Ne pas tirer +keybind.unit_stance_pursue_target.name = Ordre: Poursuivre la cible +keybind.unit_stance_patrol.name = Ordre: Patrouille +keybind.unit_stance_ram.name = Ordre: Charger +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload + keybind.rebuild_select.name = Reconstruire la Zone keybind.schematic_select.name = Sélectionner une Région keybind.schematic_menu.name = Menu des schémas @@ -1170,7 +1288,7 @@ keybind.deselect.name = Désélectionner keybind.pickupCargo.name = Prendre un Chargement keybind.dropCargo.name = Lâcher un Chargement keybind.shoot.name = Tirer -keybind.zoom.name = Zoom +keybind.zoom.name = Zoomer keybind.menu.name = Menu keybind.pause.name = Pause keybind.pause_building.name = Pauser/Reprendre la Construction @@ -1188,9 +1306,9 @@ keybind.chat_history_prev.name = Remonter l'Historique du Tchat keybind.chat_history_next.name = Descendre l'Historique du Tchat keybind.chat_scroll.name = Défilement du Tchat keybind.chat_mode.name = Changer le mode du Tchat -keybind.drop_unit.name = Larguer une unité +keybind.drop_unit.name = Larguer une Unité keybind.zoom_minimap.name = Zoomer la Mini-carte -mode.help.title = Description des modes de jeu +mode.help.title = Description des modes de jeux mode.survival.name = Survie mode.survival.description = Le mode normal. Ressources limitées et vagues automatiques.\n[gray]Requiert des points d'apparition ennemis pour pouvoir jouer à ce mode. mode.sandbox.name = Bac à Sable @@ -1202,23 +1320,31 @@ mode.attack.name = Attaque mode.attack.description = Pas forcément de vagues, le but étant de détruire la base ennemie.\n[gray]Requiert un Noyau rouge pour jouer à ce mode. mode.custom = Règles Personnalisées +rules.invaliddata = Données du Presse-Papier Invalides. +rules.hidebannedblocks = Cacher les blocs bannis. rules.infiniteresources = Ressources Infinies -rules.onlydepositcore = Seulement autoriser le Dépôt d'Objets dans le Noyau +rules.onlydepositcore = Seulement autoriser le dépôt d'Objets dans le Noyau +rules.derelictrepair = Autoriser la réparation des structures abandonnées rules.reactorexplosions = Explosion des Réacteurs rules.coreincinerates = Incinération des surplus du Noyau rules.disableworldprocessors = Désactiver les Processeurs Globaux rules.schematic = Schémas autorisés rules.wavetimer = Compte à rebours des vagues rules.wavesending = Déclenchement des Vagues +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Vagues +rules.airUseSpawns = Air units use spawn points rules.attack = Mode « Attaque » +rules.buildai = IA de Construction de Base +rules.buildaitier = Niveau de l'IA de Construction de Base rules.rtsai = IA de RTS [red](WIP) rules.rtsminsquadsize = Taille Minimale d'une Escouade rules.rtsmaxsquadsize = Taille Maximale d'une Escouade rules.rtsminattackweight = Poids Minimum d'une Attaque rules.cleanupdeadteams = Détruire les structures des équipes vaincues (JcJ) rules.corecapture = Capture du Noyau lors de sa Destruction -rules.polygoncoreprotection = Protection Polygonale du Noyau +rules.polygoncoreprotection = Protection polygonale du Noyau rules.placerangecheck = Vérification de la Portée de Placement rules.enemyCheat = Ressources infinies pour l'IA (équipe rouge) rules.blockhealthmultiplier = Multiplicateur de Santé des Blocs @@ -1230,9 +1356,10 @@ rules.unitdamagemultiplier = Multiplicateur de Dégât des Unités rules.unitcrashdamagemultiplier = Multiplicateur de Dégât de chute des Unités rules.solarmultiplier = Multiplicateur de l'Efficacité des Panneaux Solaires rules.unitcapvariable = Les Noyaux contribuent à la limite d'Unités actives -rules.unitcap = Limite d'Unités actives de Base -rules.limitarea = Limite de la Zone de Jeu de la Carte -rules.enemycorebuildradius = Périmètre de Non-Construction autour du Noyau ennemi :[lightgray] (blocs) +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit +rules.unitcap = Limite initiale d'Unités actives +rules.limitarea = Limite de la zone de jeu de la Carte +rules.enemycorebuildradius = Périmètre Non-Constructible autour du Noyau ennemi :[lightgray] (blocs) rules.wavespacing = Temps entre les Vagues :[lightgray] (sec) rules.initialwavespacing = Temps de Vague Initial :[lightgray] (sec) rules.buildcostmultiplier = Multiplicateur du prix de construction @@ -1240,7 +1367,7 @@ rules.buildspeedmultiplier = Multiplicateur du temps de construction rules.deconstructrefundmultiplier = Multiplicateur du remboursement lors de la déconstruction rules.waitForWaveToEnd = Les Vagues attendent la mort des ennemis rules.wavelimit = La Partie termine après la Vague -rules.dropzoneradius = Rayon d'Apparition des ennemis :[lightgray] (blocs) +rules.dropzoneradius = Rayon de la Zone d'Apparition ennemie :[lightgray] (blocs) rules.unitammo = Les Unités nécessitent des munitions rules.enemyteam = Équipe ennemie rules.playerteam = Équipe du joueur @@ -1262,6 +1389,8 @@ rules.weather = Météo rules.weather.frequency = Fréquence : rules.weather.always = Permanent rules.weather.duration = Durée : +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Objets content.liquid.name = Liquides @@ -1483,8 +1612,9 @@ block.inverted-sorter.name = Trieur Inversé block.message.name = Bloc de Message block.reinforced-message.name = Bloc de Message Renforcé block.world-message.name = Bloc de Message Global +block.world-switch.name = World Switch block.illuminator.name = Illuminateur -block.overflow-gate.name = Barrière de Débordement +block.overflow-gate.name = Barrière de Débordement block.underflow-gate.name = Barrière de Refoulement block.silicon-smelter.name = Fonderie de Silicium block.phase-weaver.name = Tisseur à Phase @@ -1593,9 +1723,9 @@ block.large-constructor.description = Fabrique des structures d'une taille maxim block.deconstructor.name = Déconstructeur block.deconstructor.description = Déconstruit les structures et les unités. Retourne 100% du coût de construction. block.payload-loader.name = Chargeur de charge utile -block.payload-loader.description = Chargez les liquides et les articles dans les blocs. +block.payload-loader.description = Charge les liquides et les ressources dans les blocs. block.payload-unloader.name = Déchargeur de charge utile -block.payload-unloader.description = Décharge les liquides et les articles des blocs. +block.payload-unloader.description = Décharge les liquides et les ressources des blocs. block.heat-source.name = Source de Chaleur block.heat-source.description = Produit de grandes quantités de chaleur. Bac à sable uniquement. @@ -1725,7 +1855,6 @@ block.disperse.name = Propagateur block.afflict.name = Éclateur block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricateur block.tank-refabricator.name = Refabricateur de Tanks block.mech-refabricator.name = Refabricateur de Mécas block.ship-refabricator.name = Refabricateur de Vaisseaux @@ -1781,16 +1910,15 @@ hint.blockInfo = Pour afficher les informations relatives à un bloc, il suffit hint.derelict = [accent]Les structures abandonnées[] sont des vestiges brisés d'anciennes bases qui ne fonctionnent plus. Ces structures peuvent être [accent]déconstruites pour obtenir des ressources. 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.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 contrôler. -hint.unitSelectControl = Pour contrôler les unités, entrez en mode [accent]« Commande »[] en pressant [accent]Maj gauche.[]\nEn mode « Commande », cliquez et faites glisser la souris pour sélectionner des unités. Faites un [accent]Clic droit[] à un emplacement ou une cible pour que les unités s'y déplacent. +hint.unitSelectControl = Pour contrôler les unités, entrez en mode [accent]« Commande »[] en pressant [accent]Maj gauche[].\nEn mode « Commande », cliquez et faites glisser la souris pour sélectionner des unités. Faites un [accent]Clic droit[] à un emplacement ou une cible pour que les unités s'y déplacent. hint.unitSelectControl.mobile = Pour contrôler les unités, entrez en mode [accent]« Commande »[] en pressant le bouton de [accent]commande[] en bas à gauche de l'écran.\nEn mode « Commande », pressez longuement et faites glisser pour sélectionner des unités. Tapez un emplacement ou une cible pour que les unités s'y déplacent. 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.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.rebuildSelect = Retenz [accent][[B][] et faites glissez pour selectionner les plans des blocs détruits.\nCela va automatiquement les reconstruire. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. - +hint.schematicSelect = Retenez [accent][[F][] pour sélectionner des blocs dans une zone afin de les copier et les coller.\n\n[accent][[Clic molette][] pour copier un seul type de bloc. +hint.rebuildSelect = Retenez [accent][[B][] et faites glissez pour selectionner les plans des blocs détruits.\nCela va automatiquement les reconstruire. +hint.rebuildSelect.mobile = Selectionnez le \ue874 bouton de copie, ensuite tapez le \ue80f bouton de reconstruction et faites glisser pour sélectionner les plans des blocs détruits.\nCela va les reconstruire 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.boost = Retenez [accent][[Maj-gauche][] pour voler au-dessus des obstacles avec votre unité actuelle.\n\nSeules quelques unités terrestres peuvent voler. @@ -1804,7 +1932,7 @@ hint.guardian = Les [accent]Gardiens[] sont protégés par un bouclier. Les muni hint.coreUpgrade = Les Noyaux peuvent être améliorés [accent]en plaçant un Noyau de plus haut niveau sur eux[].\n\nPlacez un \uf868 Noyau [accent]Fondation[] sur le \uf869 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 lancé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]optionnels[]. hint.presetDifficulty = Ce secteur a un niveau de menace ennemi [scarlet]élevé[].\nIl n'est [accent]pas recommandé[] de se lancer dans de tels secteurs sans la technologie et la préparation appropriées. -hint.coreIncinerate = Lorsqu'un Noyau est rempli 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 y rentrera sera [accent]incinéré[]. hint.factoryControl = Pour régler la [accent]destination[] d'une usine à unités, cliquez sur l'usine en mode « Commande », puis clic-droit sur la destination souhaitée.\nLes unités produites s'y déplaceront automatiquement. hint.factoryControl.mobile = Pour régler la [accent]destination[] d'une usine à unités, tapez sur l'usine en mode « Commande », puis tapez sur la destination souhaitée.\nLes unités produites s'y déplaceront automatiquement. @@ -1821,8 +1949,8 @@ gz.turrets = Recherchez et placez 2 \uf861 [accent]Duos[] pour défendre votre n gz.duoammo = Rechargez vos Duos avec du [accent]cuivre[], en utilisant les convoyeurs. gz.walls = Les [accent]Murs[] peuvent empêcher les attaques ennemies d'atteindre vos constructions.\nPlacez des \uf8ae [accent]murs de cuivre[] autour de vos tourelles. gz.defend = Ennemis en approche, préparez-vous à défendre. -gz.aa = Les unités aériennes ne peuvent pas être facilement repoussées avec des tourelles standard.\n\uf860 Les [accent]Disperseurs[] sont d'excellentes tourelles anti-aériennes, mais requierent du \uf837 [accent]plomb[] en tant que munition. -gz.scatterammo = Approvisionnez le Disperseur avec du [accent]plomb[], en utilisant des convoyeurs. +gz.aa = Les unités aériennes ne peuvent pas être facilement repoussées avec des tourelles standard.\n\uf860 Les [accent]Disperseurs[] sont d'excellentes tourelles anti-aériennes, mais requièrent du \uf837 [accent]plomb[] en tant que munition. +gz.scatterammo = Approvisionnez le Disperseur avec du [accent]plomb[] en utilisant des convoyeurs. gz.supplyturret = [accent]Approvisionnez la tourelle gz.zone1 = Ceci est la zone d'apparition ennemie. gz.zone2 = Tout ce qui est construit dans le rayon est détruit lors du commencement de la vague. @@ -1839,17 +1967,21 @@ onset.ducts.mobile = Recherchez et placez des \uf799 [accent]conduits[] pour dé onset.moremine = Étendez vos exploitations minières.\nPlacez plus de foreuses à plasma et utilisez des transmetteurs à rayons pour les relier.\nMinez 200 minerais de béryllium. onset.graphite = Les blocs plus complexes requièrent du \uf835 [accent]graphite[].\nPlacez quelques foreuses à plasma pour miner du graphite. onset.research2 = Commencez à rechercher des [accent]usines[].\nRecherchez le \uf74d [accent]broyeur de parois[] et le \uf779 [accent]four de silicium[]. -onset.arcfurnace = le four de silicium a besoin de \uf834 [accent]sable[] et de \uf835 [accent]graphite[] pour créer du \uf82f [accent]silicium[].\nDe [accent]l'énergie[] est aussi requise. +onset.arcfurnace = Le four de silicium a besoin de \uf834 [accent]sable[] et de \uf835 [accent]graphite[] pour créer du \uf82f [accent]silicium[].\nDe [accent]l'énergie[] est aussi requise. onset.crusher = Utilisez des \uf74d [accent]broyeurs de parois[] pour miner du sable. -onset.fabricator = Utilisez des [accent]unités[] pour explorer la carte, défendre vos constructions et attaquer l'ennemi. Recherchez et placez un \uf6a2 [accent]fabricateur de tanks[]. +onset.fabricator = Utilisez des [accent]Unités[] pour explorer la carte, défendre vos constructions et attaquer l'ennemi. Recherchez et placez un \uf6a2 [accent]Fabricateur de Tanks[]. onset.makeunit = Produisez une unité.\nUtilisez le bouton "?" pour voir les ressources requises par le fabricateur. onset.turrets = Les unités sont efficaces, mais les [accent]tourelles[] ont de meilleures capacités défensives si elles sont bien utilisées.\nPlacez une tourelle \uf6eb [accent]brèche[].\nLes tourelles requièrent des [accent]munitions[] \uf748. -onset.turretammo = Approvisionnez les tourelles avec du [accent]béryllium.[] +onset.turretammo = Approvisionnez les tourelles avec du [accent]béryllium[]. onset.walls = Les [accent]murs[] peuvent encaisser les dégâts des attaques ennemies avant qu'elles atteignent vos constructions.\nPlacez quelques \uf6ee [accent]murs de béryllium[] autour de la tourelle. onset.enemies = Ennemis en approche, préparez-vous à défendre. -onset.attack = L'ennemi est vulnérable. Contre-attaquez. +onset.defenses = [accent]Set up defenses:[lightgray] {0} +onset.attack = L'ennemi est vulnérable. Contre-attaquez ! onset.cores = Les noyaux peuvent être placés sur des [accent]tuiles de noyau[].\nCes nouveaux noyaux servent à faire avancer votre base et partager vos ressources avec d'autres noyaux.\nPlacez un noyau \uf725. onset.detect = L'ennemi sera capable de vous détecter dans 2 minutes.\nAméliorez vos défenses, vos exploitations minières ainsi que votre production. +onset.commandmode = Retenez [accent]Maj-gauche[] pour entrer en [accent]Mode « Commande »[].\n[accent]Clic-gauche tout en bougeant la souris[] pour sélectionner des unités.\n[accent]Clic-droit[] pour ordonner aux unités sélectionnées de bouger ou attaquer. +onset.commandmode.mobile = Pressez le [accent]bouton de commande[] pour entrer en [accent]Mode « Commande »[].\nRetenez votre doigt, et [accent]bougez-le[] pour sélectionner des unités.\n[accent]Tapez[] pour ordonner aux unités sélectionnées de bouger ou attaquer. +aegis.tungsten = Le tungstène peut être miné en utilisant une [accent]foreuse à impact[].\nCette structure requiert de [accent]l'eau[] et de [accent]l'énergie[]. split.pickup = Certains blocs peuvent être transportés par des unités du noyau.\nTransportez ce [accent]conteneur[] et placez-le sur le [accent]chargeur de charges utiles[].\n(Les touches par défaut sont [[ pour ramasser et ] pour déposer) split.pickup.mobile = Certains blocs peuvent être transportés par des unités du noyau.\nTransportez ce [accent]conteneur[] et placez-le sur le [accent]chargeur de charges utiles[].\n(Pour ramasser ou déposer quelque chose, Pressez longuement dessus.) @@ -1865,7 +1997,7 @@ item.metaglass.description = Un composé de verre super-résistant. Utilisation item.graphite.description = Du carbone minéralisé utilisé pour les munitions et dans les composants électriques. item.sand.description = Un matériau commun, largement utilisé pour la fabrication de matériaux raffinés. 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 les usines. 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ériaux. @@ -2049,10 +2181,9 @@ block.logic-display.description = Affiche des images à partir des instructions 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 permettent un déploiement interplanétaire. block.repair-turret.description = Répare en continu l'unité endommagée la plus proche dans son périmètre. Accepte le liquide de refroidissement en option. -block.payload-propulsion-tower.description = Structure de transport de charges utiles à longue portée. Projette des charges utiles vers d'autres tours de propulsion de charges utiles reliées. #Erekir -block.core-bastion.description = Le cœur de votre base. Blindé. Une fois détruit, le secteur est perdu. +block.core-bastion.description = Le cœur de votre base. Blindé. Une fois détruit, le secteur est perdu. block.core-citadel.description = Le cœur de votre base. Très bien blindé. Stocke plus de ressources qu'un noyau Bastion. block.core-acropolis.description = Le cœur de votre base. Exceptionnellement bien blindé. Stocke plus de ressources qu'un noyau Citadelle. block.breach.description = Tire des munitions perforantes de béryllium ou de tungstène sur les cibles ennemies. @@ -2087,7 +2218,6 @@ block.impact-drill.description = Lorsqu'il est placé sur du minerai, il produit block.eruption-drill.description = Une foreuse à impact améliorée. Capable d'extraire du thorium. Requiert de l'hydrogène. block.reinforced-conduit.description = Déplace les fluides. N'accepte pas les entrées sans conduit sur les côtés. block.reinforced-liquid-router.description = Accepte les fluides depuis une direction et les distribue jusqu'à 3 directions équitablement. -block.reinforced-junction.description = Agit comme un pont entre deux conduits qui se croisent. block.reinforced-liquid-tank.description = Stocke une grande quantité de fluides. block.reinforced-liquid-container.description = Stocke une quantité importante de fluides. block.reinforced-bridge-conduit.description = Transporte les fluides par-dessus les structures et le terrain. @@ -2208,6 +2338,7 @@ unit.emanate.description = Construit des structures pour défendre le Noyau acro lst.read = Lit un nombre depuis un bloc de mémoire relié au processeur. lst.write = Écrit un nombre dans un bloc de mémoire relié au processeur. lst.print = Ajoute du texte dans la mémoire tampon de l'imprimante.\nNe montrera aucun texte tant que [accent]Print Flush[] ne sera pas utilisé. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Ajoute une opération dans la mémoire tampon de dessin.\nNe montrera aucune image tant que [accent]Draw Flush[] ne sera pas utilisé. lst.drawflush = Affiche les opérations [accent]Draw[] en file d'attente vers un écran. lst.printflush = Affiche les opérations [accent]Print[] en file d'attente vers un bloc de message. @@ -2230,21 +2361,64 @@ lst.getblock = Obtient les données d'une tuile à n'importe quel emplacement. lst.setblock = Définit les données d'une tuile à n'importe quel emplacement. lst.spawnunit = Fait apparaître une unité à un emplacement. lst.applystatus = Ajoute ou enlève un effet de statut d'une unité. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simule un déclenchement de vague à n'importe quel emplacement.\nCela n'incrémente pas le compteur de vaugues. lst.explosion = Crée une explosion à un emplacement. lst.setrate = Définit la vitesse d'exécution d'un processeur en instructions/tick. lst.fetch = Cherche les unités, noyaux, joueurs ou constructions par index. Commence à 0 et termine par le nombre retourné. lst.packcolor = Compresse les composants RGBA [0, 1] en un seul nombre pour les opérations de dessins ou les changements de règles. lst.setrule = Change une règle du jeu. -lst.flushmessage = Affiche un message sur l'écran depuis la mémoire tampon de texte.\nLe message apparait après la fin du dernier. +lst.flushmessage = Affiche un message sur l'écran depuis la mémoire tampon de texte.\nAttendra la fin du message précédent avant l'affichage du nouveau. lst.cutscene = Manipule la caméra du joueur. -lst.setflag = Définit un drapeau global qui peut être lu par tous les processeurs. -lst.getflag = Vérifie si un drapeau global est présent. +lst.setflag = Définit une variable globale qui peut être lue par tous les processeurs. +lst.getflag = Vérifie si une variable globale est présente. lst.setprop = Change une propriété d'une unité ou d'un bâtiment. +lst.effect = Crée un effet de particules. +lst.sync = Synchronise une variable dans le réseau.\nLimité à 20 fois par seconde et par variable. +lst.makemarker = Crée un marqueur dans le monde.\nUn ID pour identifier le marqueur doit être donné.\nLes marqueurs sont limités à 20,000 par monde. +lst.setmarker = Change une propriété d'un marqueur.\nL'ID utilisé doit être le même que celui de l'instruction "Make Marker". +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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[]. lenum.shoot = Tire à une position donnée. lenum.shootp = Tire à une unité/bâtiment avec la prédiction de mouvement. lenum.config = La configuration d'un bâtiment. Par exemple, l'objet sélectionné dans un trieur. @@ -2256,6 +2430,7 @@ 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.progress = Progression de l'action, 0 à 1.\nRenvoie la progression de la production, du rechargement de la tourelle ou de la construction. laccess.speed = La vitesse maximale d'une unité, en blocs/sec. +laccess.id = L'ID d'une unité/bloc/ressource/liquide.\nCeci est l'inverse de l'instruction de recherche. lcategory.unknown = Inconnu lcategory.unknown.description = Instructions sans catégorie. @@ -2266,7 +2441,7 @@ lcategory.block.description = Interagit avec les blocs. lcategory.operation = Opérations lcategory.operation.description = Opérations logiques. lcategory.control = Contrôle des Flux -lcategory.control.description = Manipule le flot d'exécution. +lcategory.control.description = Manipule l'ordre d'exécution. lcategory.unit = Contrôle des Unités lcategory.unit.description = Ordonne des commandes aux unités. lcategory.world = Contrôle du Monde @@ -2283,6 +2458,7 @@ graphicstype.poly = Dessine un polygone régulier. graphicstype.linepoly = Dessine le contour d'un polygone régulier. graphicstype.triangle = Dessine un triangle. graphicstype.image = Dessine une image provenant du contenu du jeu.\nexemple: [accent]@router[] ou [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Toujours [accent]true[]. lenum.idiv = Division entière. @@ -2302,6 +2478,7 @@ lenum.xor = Opération binaire XOR. lenum.min = Le minimum des 2 nombres. lenum.max = Le maximum des 2 nombres. lenum.angle = Angle d'un vecteur en degrés. +lenum.anglediff = Distance absolue entre 2 angles en degrés. lenum.len = Longueur d'un vecteur. lenum.sin = Calcule le Sinus, en degrés. @@ -2376,6 +2553,7 @@ lenum.unbind = Désactive complètement le contrôle par processeur.\nL'unité r lenum.move = Bouge vers la position exacte. lenum.approach = Approche une position avec un rayon. lenum.pathfind = Détermine un itinéraire et bouge vers le point d'apparition ennemi. +lenum.autopathfind = Recherche automatiquement le chemin vers le noyau ennemi ou la zone d'apparition ennemie le plus proche.\nCeci est le même que la détection de chemin de la vague ennemie. lenum.target = Tire vers la position donnée. lenum.targetp = Tire sur une cible avec la prédiction de mouvement. lenum.itemdrop = Lâche un objet. @@ -2386,10 +2564,13 @@ lenum.payenter = Entrez/atterrissez sur le bloc de charge utile sur lequel se tr lenum.flag = Drapeau numérique d'une unité. lenum.mine = Mine à une position donnée. 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 = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Vérifie si l'unité est près de la position. lenum.boost = Active/Désactive le boost. - -#Ne pas traduire -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 234fdbcec1..d98723ce02 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -1,83 +1,85 @@ -#A fordításban közreműködött: Vajda Simon, Polgár Sándor, Erdélyi Nimród és Halász Gergő -credits.text = Készítette: [royal]Anuken[] - [sky]anukendev@gmail.com[] -credits = Creditek -contributors = Fordítok és készítők +credits.text = Készítette: [royal]Anuken[] – [sky]anukendev@gmail.com[] +credits = Készítők +contributors = Közreműködők és fordítók discord = Csatlakozz a Mindustry Discord szerverhez! -link.discord.description = Az eredeti Mindustry Discord chatszoba +link.discord.description = Az eredeti Mindustry Discord csevegőszoba link.reddit.description = A Mindustry subreddit link.github.description = A játék forráskódja link.changelog.description = Frissítési változások listája -link.dev-builds.description = Instabil fejlesztői buildek +link.dev-builds.description = Instabil fejlesztői összeállítások link.trello.description = Hivatalos Trello tábla a tervezett funkcióknak -link.itch.io.description = itch.io oldal PC letöltésekkel -link.google-play.description = Google Play áruház listázás -link.f-droid.description = F-Droid katalógus listázás +link.itch.io.description = itch.io oldal PC-s letöltésekkel +link.google-play.description = Listázás a Google Play áruházban +link.f-droid.description = Listázás az F-Droidon link.wiki.description = Hivatalos Mindustry wiki link.suggestions.description = Új funkciók ajánlása -link.bug.description = Találtál szoftver hibá-t? Jelentsd itt -linkopen = Ez a szerber egy linket küldött neked. Biztos vagy benne, hogy megnyitod?\n\n[sky]{0} -linkfail = Nem sikerült megnyitni a linket!\nAz URL a vágólapra lett másolva. +link.bug.description = Találtál egy szoftverhibát? Itt jelentheted +linkopen = Ez a kiszolgáló egy hivatkozást küldött. Biztos vagy benne, hogy megnyitod?\n\n[sky]{0} +linkfail = Nem sikerült megnyitni a hivatkozást!\nA webcím a vágólapra lett másolva. screenshot = Képernyőkép mentve ide: {0} -screenshot.invalid = Túl nagy a map, nincsen elég memória a képernyőképhez. -gameover = Játék vége -gameover.disconnect = Kapcsolat megszakadt -gameover.pvp = A[accent] {0}[] csapat nyert! -gameover.waiting = [accent]Várakozás a következő mapra... +screenshot.invalid = Túl nagy a pálya, nincs elég memória a képernyőképhez. +gameover = A játéknak vége +gameover.disconnect = A kapcsolat megszakadt +gameover.pvp = A(z)[accent] {0}[] csapat nyert! +gameover.waiting = [accent]Várakozás a következő pályára... highscore = [accent]Új rekord! copied = Másolva. -indev.notready = A játéknak ez a része még nincsen kész +indev.notready = A játéknak ez a része még nincs kész load.sound = Hangok -load.map = Mapok +load.map = Pályák load.image = Képek load.content = Tartalom load.system = Rendszer load.mod = Modok load.scripts = Szkriptek -be.update = Új Bleeding Edge build áll rendelkezésre: -be.update.confirm = Letöltöd és újraindítod? +be.update = Új Bleeding Edge verzió áll rendelkezésre: +be.update.confirm = Letöltöd és újraindítod a játékot? be.updating = Frissítés... be.ignore = Most nem -be.noupdates = Nem találtunk frissítést. -be.check = Frissítések keresése. -mods.browser = Mod választó +be.noupdates = Nem található frissítés. +be.check = Frissítések keresése + +mods.browser = Modböngésző mods.browser.selected = Mod kiválasztása mods.browser.add = Letöltés -mods.browser.reinstall = Reinstall +mods.browser.reinstall = Újratelepítés mods.browser.view-releases = Kiadások megtekintése -mods.browser.noreleases = [scarlet]Nincsenek kiadások.\n[accent]Nem lehet kiadásokat találni ehhez a modhoz. Nézd meg a repository-ját, hogy vannak -e kiadásai. -mods.browser.latest = +mods.browser.noreleases = [scarlet]Nem találhatóak a kiadások\n[accent]Nem találhatóak kiadások ehhez a modhoz. Nézd meg a tárolóját, hogy vannak-e kiadásai. +mods.browser.latest = [lightgray][Legújabb] mods.browser.releases = Kiadások -mods.github.open = Megtekintés +mods.github.open = Tároló mods.github.open-release = Kiadások oldala mods.browser.sortdate = Rendezés dátum szerint mods.browser.sortstars = Rendezés értékelés szerint -schematic = Schematic -schematic.add = Schematic mentése... -schematics = Schematic-ok -schematic.replace = Már van ilyen nevű schematic. Lecseréled? -schematic.exists = Már van ilyen nevű schematic. -schematic.import = Schematic importálása... +schematic = Vázlat +schematic.add = Vázlat mentése... +schematics = Vázlatok +schematic.search = Vázlat keresése... +schematic.replace = Már van ilyen nevű vázlat. Lecseréled? +schematic.exists = Már van ilyen nevű vázlat. +schematic.import = Vázlat importálása... schematic.exportfile = Exportálás fájlba -schematic.importfile = Importálás fájlba -schematic.browseworkshop = Workshop megtekintése -schematic.copy = Másolás a vágólapra -schematic.copy.import = Importálás a vágólapról -schematic.shareworkshop = Megosztás a Workshopon -schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Schematic tükrözése -schematic.saved = Schematic mentve. -schematic.delete.confirm = Ez a Schematic törölve lesz. -schematic.rename = Schematic átnevezése +schematic.importfile = Importálás fájlból +schematic.browseworkshop = Steam Műhely megtekintése +schematic.copy = Végólapra másolás +schematic.copy.import = Importálás vágólapról +schematic.shareworkshop = Megosztás a Steam Műhelyben +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Vázlat tükrözése +schematic.saved = Vázlat elmentve. +schematic.delete.confirm = Ez a vázlat törölve lesz. +schematic.edit = Vázlat szerkesztése schematic.info = {0}x{1}, {2} blokk -schematic.disabled = [scarlet]Schematicok letiltva[]\nNem használhat Schematicot ezen a [accent]mapon[] vagy [accent] szerveren. +schematic.disabled = [scarlet]Vázlatok letiltva[]\nNem használhatsz vázlatokat ezen a [accent]pályán[] vagy [accent]kiszolgálón. schematic.tags = Címkék: schematic.edittags = Címkék szerkesztése schematic.addtag = Címke hozzáadása -schematic.texttag = Következő címke -schematic.icontag = Icon címke +schematic.texttag = Szöveg címke +schematic.icontag = Ikon címke schematic.renametag = Címke átnevezése +schematic.tagged = {0} Címkézve schematic.tagdelconfirm = Teljesen törlöd ezt a címkét? schematic.tagexists = Ez a címke már létezik. @@ -88,642 +90,714 @@ stats.enemiesDestroyed = Ellenségek megsemmisítve stats.built = Építmények építve stats.destroyed = Építmények elpusztítva stats.deconstructed = Építmények lebontva -stats.playtime = Játszott idő +stats.playtime = Játékban töltött idő -globalitems = [accent]Összes nyersanyag -map.delete = Biztosan akkarod törlölni a "[accent]{0}[]" mapot? +globalitems = [accent]A bolygó nyersanyagai +map.delete = Biztosan törölni akarod a(z) „[accent]{0}[]” pályát? level.highscore = Legmagasabb pontszám: [accent]{0} level.select = Szint kiválasztása level.mode = Játékmód: -coreattack = < A mag támadás alatt van! > -nearpoint = [[ [scarlet]AZONNAL HAGYD EL A LEDOBÁSI PONTOT[] ]\nveszélyes zóna -database = Mag adatbázis +coreattack = < A támaszpont támadás alatt van! > +nearpoint = [[ [scarlet]AZONNAL HAGYD EL A LEDOBÁSI PONTOT![] ]\nA megsemmisülés fenyeget! +database = Támaszpont adatbázisa database.button = Adatbázis savegame = Játék mentése loadgame = Játék betöltése -joingame = Csatlakozás játékhoz -customgame = Egyedi játék +joingame = Kapcsolódás egy játékhoz +customgame = Egyéni játék newgame = Új játék none = none.found = [lightgray] -none.inmap = [lightgray] -minimap = Minimap +none.inmap = [lightgray] +minimap = Minitérkép position = Pozíció close = Bezárás website = Weboldal quit = Kilépés save.quit = Mentés és kilépés -maps = Mapok -maps.browse = Mapok keresése +maps = Pályák +maps.browse = Pályák böngészése continue = Folytatás -maps.none = [lightgray]Nem találtunk ilyen mapot! +maps.none = [lightgray]Nem található ilyen pálya! invalid = Érvénytelen pickcolor = Válassz színt preparingconfig = Konfiguráció előkészítése preparingcontent = Tartalom előkészítése uploadingcontent = Tartalom feltöltése -uploadingpreviewfile = Előnézet feltöltése -committingchanges = Változások mentése +uploadingpreviewfile = Előnézeti fájl feltöltése +committingchanges = Változások rögzítése done = Kész -feature.unsupported = Az eszköz nem támogatja ezt a funkciót. -mods.initfailed = [red]⚠[] Az előző Mindustry munkamenet nem tudott inícializálódni. Ez valószínű egy rosszúl működő mod miatt történt.\n\nA crash loop elkerülése érdekében, [red]minden mod le lett tiltva.[] +feature.unsupported = Ez az eszköz nem támogatja ezt a funkciót. + +mods.initfailed = [red]⚠[] Az előző Mindustry példány előkészítése nem sikerült. Ezt valószínűleg egy rosszul működő mod okozta.\n\nAz ismételt összeomlások elkerülése érdekében [red]minden mod le lett tiltva.[] mods = Modok -mods.none = [lightgray]Nincsen mod! -mods.guide = Mod készítési útmutató +mods.none = [lightgray]Nem találhatóak modok! +mods.guide = Modkészítési útmutató mods.report = Hiba jelentése -mods.openfolder = Megnyitás mappából +mods.openfolder = Mappa megnyitása mods.viewcontent = Tartalom megtekintése mods.reload = Újratöltés -mods.reloadexit = Indítsd újra a játékot, hogy betöltődjenek a modok. -mod.installed = [[Installed] +mods.reloadexit = A játék most kilép, hogy újratöltse a modokat. +mod.installed = [[Telepítve] mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Aktív -mod.disabled = [scarlet]Inaktív +mod.disabled = [red]Inaktív mod.multiplayer.compatible = [gray]Többjátékos kompatibilis mod.disable = Letiltás mod.content = Tartalom: -mod.delete.error = Nem lehet törölni a Modot. Lehet, hogy egy másik folyamat használja. -mod.incompatiblegame = [red]Elavúlt játék -mod.incompatiblemod = [red]Nem kompatibilis +mod.delete.error = Nem lehet törölni a modot. Lehet, hogy egy másik folyamat használja. + +mod.incompatiblegame = [red]Elavult játék +mod.incompatiblemod = [red]Inkompatibilis mod.blacklisted = [red]Nem támogatott -mod.unmetdependencies = [red]Összeférhetetlen függőségek -mod.erroredcontent = [scarlet]Tartalom hiba +mod.unmetdependencies = [red]Teljesítetlen függőségek +mod.erroredcontent = [red]Hibás tartalom mod.circulardependencies = [red]Körkörös függőségek -mod.incompletedependencies = [red]Befejezetlen függőségek -mod.requiresversion.details = [accent]{0}[] játékverzió szükséges.\nA letöltésed elavúlt. Ez a mod egy újabb verziót kíván (velószínű, egy beta/alpha kiadást) a működéshez. -mod.outdatedv7.details = Ez a mod nem kompatibilis a játék legújabb berziójával. A készítőjének frissítenie kell azt, és hozzá kell adnia a [accent]minGameVersion: 136[] -t a [accent]mod.json[] fájlhoz. -mod.blacklisted.details = Ez a mod manuálisan a feketelistára került, mert a játék összeomlott tőle, vagy más probléma miatt. Ne használd! -mod.missingdependencies.details = Ez a mod hiányol függőségeket: {0} -mod.erroredcontent.details = Ez a játék hibákat okozott betöltésnél. Kérd meg a mod készítőjét hogy kijavítsa őket! -mod.circulardependencies.details = Ennek a modnak egymástól függő föggőségai vannak. -mod.incompletedependencies.details = Ez a mod nem tudott betölteni hiányzó, vagy rossz függőségek miatt: {0}. -mod.requiresversion = [red]{0}[] játékverzió szükséges. +mod.incompletedependencies = [red]Hiányos függőségek + +mod.requiresversion.details = Szükséges játékverzió: [accent]{0}[]\nA játék ezen verziója elavult! A mod működéséhez újabb verzió szükséges (valószínűleg egy béta vagy alfa kiadás). +mod.outdatedv7.details = Ez a mod nem kompatibilis a játék legújabb verziójával! A mod készítőjének frissítenie kell azt és hozzá kell adnia ezt a [accent]mod.json[] fájlhoz: [accent]minGameVersion: 136[]. +mod.blacklisted.details = Ez a mod kézileg feketelistára került, mert a játék összeomlott tőle, vagy más problémát okozott. Ne használd! +mod.missingdependencies.details = Ez a mod függőségeket hiányol: {0} +mod.erroredcontent.details = Ez a mod hibákat okozott a betöltésnél. Kérd meg a mod készítőjét, hogy javítsa őket. +mod.circulardependencies.details = Ennek a modnak egymástól függő függőségei vannak. +mod.incompletedependencies.details = Ez a mod nem tölthető be az érvénytelen vagy hiányzó függőségek miatt: {0}. + +mod.requiresversion = Szükséges játékverzió: [red]{0}[] + mod.errors = Hiba történt a tartalom betöltése közben. -mod.noerrorplay = [scarlet]Vannak hibás Modok.[] Kapcsold ki, vagy javítsd ki őket a játék előtt. -mod.nowdisabled = [scarlet]A '{0}' Modnak nincsen megfelelő függősége:[accent] {1}\n[lightgray]Ezeket előbb le kell tölteni.\nEz a Mod automatikusan törölve lesz. +mod.noerrorplay = [red]Hibákkal rendelkező modjaid vannak.[] Kapcsold ki, vagy javítsd ki őket a játék előtt. +mod.nowdisabled = [red]A(z) „{0}” modnak nincs megfelelő függősége:[accent] {1}\n[lightgray]Ezeket előbb le kell tölteni.\nEz a mod automatikusan ki lesz kapcsolva. mod.enable = Engedélyezés mod.requiresrestart = A játék kilép a módosítások alkalmazásához. -mod.reloadrequired = [scarlet]Újratöltés szükséges +mod.reloadrequired = [red]Újraindítás szükséges mod.import = Mod importálása mod.import.file = Fájl importálása -mod.import.github = GitHub Mod importálása +mod.import.github = Importálás GitHubról mod.jarwarn = [scarlet]A JAR modok eredendően nem biztonságosak.[]\nGyőződj meg arról, hogy ezt a modot megbízható forrásból importálod! -mod.item.remove = Ez az elem része a(z) [accent] '{0}'[] Modnak. A törléshez távolítsd el a Modot. -mod.remove.confirm = Ez a Mod törölve lesz. -mod.author = [LIGHT_GRAY]Készítő:[] {0} -mod.missing = Ez a mentés nemrég törölt vagy frissített Modokat tartalmaz. Elképzelhető, hogy nem fog működni. Biztosan betöltöd?\n[lightgray]Modok:\n{0} -mod.preview.missing = Mielőtt publikálod ezt a modot a workshopra, adj hozzá egy borítóképet.\nKészíts egy[accent] preview.png[] nevű képet a mod mappájába, majd próbáld újra. -mod.folder.missing = Csak mappa formában lehet feltölteni a workshopra.\nHogy átalakítsd, csomagold ki a ZIP-et egy mappába és töröld le a régit, majd indítsd újra a játékot vagy töltsd újra a modot. -mod.scripts.disable = Az eszköz nem támogatja a szkriptekkel rendelkező modokat. \nA játékhoz tiltsd le ezeket a modokat. +mod.item.remove = Ez az elem a(z)[accent] „{0}”[] mod része. A törléséhez távolítsd el a modot. +mod.remove.confirm = Ez a mod törölve lesz. +mod.author = [lightgray]Készítő:[] {0} +mod.missing = Ez a mentés nemrég törölt vagy frissített modokat tartalmaz. Elképzelhető, hogy nem fog működni. Biztosan betöltöd?\n[lightgray]Modok:\n{0} +mod.preview.missing = Mielőtt közzéteszed ezt a modot a Steam Műhelyben, adj hozzá egy borítóképet.\nKészíts egy[accent] preview.png[] nevű képet a Mod mappájába, majd próbáld újra. +mod.folder.missing = Csak mappa formában lehet feltölteni a Steam Műhelybe.\nHogy átalakítsd, bontsd ki a ZIP-fájlt egy mappába és töröld le a régit, majd indítsd újra a játékot, vagy töltsd újra a modokat. +mod.scripts.disable = Ez az eszköz nem támogatja a szkriptekkel rendelkező modokat.\nA játékhoz tiltsd le ezeket a modokat. -about.button = Közreműködők +about.button = Névjegy name = Név: noname = Előbb válassz egy[accent] nevet[]. -search = Search: -planetmap = Bolygó térkép -launchcore = Mag kilövése -filename = Fájl név: -unlocked = Új tartalom kinyitva! -available = Új kutatás áll rendelkezésre! -unlock.incampaign = < Oldd fel kampány módban a részletekért > -campaign.select = Válassz kezdő kampányt! +search = Keresés: +planetmap = Bolygótérkép +launchcore = Támaszpont indítása +filename = Fájlnév: +unlocked = Új tartalom feloldva! +available = Új fejlesztés érhető el! +unlock.incampaign = < Oldd fel a hadjáratban a részletekért > +campaign.select = Válassz kezdő hadjáratot campaign.none = [lightgray]Válassz egy bolygót a kezdéshez.\nEzt bármikor megváltoztathatod. -campaign.erekir = Újabb, csiszoltabb tartalom. Általában lineáris kampány.\n\nMagasabb minőségű mapok és élmények. -campaign.serpulo = Régebbi tartalom. A klasszikus élmények. Nyíltabb végű.\n\nPotenciálisan kiegyensúlyozatlan mapok és kampány. Kevésbé csiszolt. +campaign.erekir = Újabb, csiszoltabb tartalom. Többnyire lineáris játékmenet.\n\nSokkal nehezebb. Magasabb minőségű pályák és élmények. +campaign.serpulo = Régebbi tartalom. A klasszikus élmény. Nyíltabb végű, több tartalommal.\n\nPotenciálisan kiegyensúlyozatlan pályák és hadjárat. Kevésbé csiszolt. completed = [accent]Kész -techtree = Fejlődési fa -techtree.select = Fejlődési fa kiválasztás +techtree = Technológia fa +techtree.select = Technológia fa kiválasztása techtree.serpulo = Serpulo techtree.erekir = Erekir research.load = Betöltés research.discard = Eldobás -research.list = [lightgray]Fedezd fel: -research = Felfedezés -researched = [lightgray]{0} felfedezve. +research.list = [lightgray]Fejleszd ki: +research = Fejlesztés +researched = [lightgray]{0} kifejlesztve. research.progress = {0}% kész players = {0} játékos players.single = {0} játékos -players.search = keresés -players.notfound = [gray]nincsen játékos -server.closing = [accent]Szerver bezárása... -server.kicked.kick = Ki lettél rúgva a szerverről! +players.search = Keresés +players.notfound = [gray]Nem található játékos +server.closing = [accent]Kiszolgáló bezárása... +server.kicked.kick = Ki lettél rúgva a kiszolgálóról! server.kicked.whitelist = Nem vagy a fehérlistán. -server.kicked.serverClose = A szerver be lett zárva. +server.kicked.serverClose = A kiszolgáló be lett zárva. server.kicked.vote = Ki lettél szavazva. Viszlát! -server.kicked.clientOutdated = Elavult verziót használsz! Frissítsd a játékot! -server.kicked.serverOutdated = Elavult a szerver! Kérd meg a tulajdonost, hogy frissítse! -server.kicked.banned = Ki vagy tiltva a szerverről. -server.kicked.typeMismatch = Ez a szerver nem kompatibilis a jelenlegi verzióddal. -server.kicked.playerLimit = Ez a szerver tele van. Várd ki a sorodat. -server.kicked.recentKick = Nemrég ki lettél rúgva.\nVárj egy kicsit. -server.kicked.nameInUse = Már van egy ilyen nevű játékos. +server.kicked.clientOutdated = Elavult játékverziót használsz! Frissítsd a játékot! +server.kicked.serverOutdated = Elavult a kiszolgáló! Kérd meg a tulajdonost, hogy frissítse! +server.kicked.banned = Ki vagy tiltva erről a kiszolgálóról. +server.kicked.typeMismatch = Ez a kiszolgáló nem kompatibilis a jelenlegi játékverzióddal. +server.kicked.playerLimit = Ez a kiszolgáló tele van. Várd ki a sorodat. +server.kicked.recentKick = Nemrég lettél kirúgva.\nVárj egy kicsit az újbóli kapcsolódással. +server.kicked.nameInUse = Már van egy ilyen nevű játékos\nezen a kiszolgálón. server.kicked.nameEmpty = A kiválasztott név érvénytelen. -server.kicked.idInUse = Már csatlakozva vagy erre a szerverre! Nem lehet egyszerre két fiókot használni. -server.kicked.customClient = Ez a szerver nem támogatja a saját készítésű buildeket. Használj egy hivatalos változatot. +server.kicked.idInUse = Már kapcsolódva vagy ehhez a kiszolgálóhoz! Nem lehet egyszerre két fiókot használni. +server.kicked.customClient = Ez a kiszolgáló nem támogatja a saját készítésű játék-összeállításokat. Használj egy hivatalos változatot. server.kicked.gameover = Vége a játéknak! -server.kicked.serverRestarting = Ez a szerver újraindul. -server.versions = Te verziód:[accent] {0}[]\nSzerver verzió:[accent] {1}[] -host.info = A [accent]Hosztolás[] gomb szervert nyit a [scarlet]6567[] porton.\nEzen a [lightgray] wifin vagy a helyi hálózaton [] bárki láthatja a szervert a szerverlistáján.\n\nHa azt szeretnéd, hogy az emberek bárhonnan IP-címmel csatlakozhassanak, [accent] port forwarding [] szükséges.\n\n[lightgray] Megjegyzés: Ha valakinek problémái vannak a LAN-játékhoz való csatlakozással, győződj meg arról, hogy a tűzfal beállításaiban engedélyezted-e a Mindustry hozzáférését a helyi hálózathoz. Ne feledd, hogy a nyilvános hálózatok néha nem teszik lehetővé a szerverek felderítését. -join.info = Itt megadhatsz egy [accent]szerver IP-t[] a csatlakozáshoz, vagy felfedezheted a [accent]helyi hálózatot[] vagy [accent]globális[] szervereket, amelyekhez csatlakozhatsz.\n LAN és WAN multiplayer is támogatott.\n\n[lightgray]Ha IP-vel akarsz csatlakozni valakihez, akkor meg kell tudnod a gazdagép IP-jét, amit megtalálhatsz a "my ip" Google kereséssel. -hostserver = Többjátékos játék hosztolása +server.kicked.serverRestarting = Ez a kiszolgáló újraindul. +server.versions = A te játékverziód:[accent] {0}[]\nA kiszolgáló verziója:[accent] {1}[] +host.info = A [accent]kiszolgáló indítása[] gomb egy kiszolgálót indít a [scarlet]6567-es[] porton.\nEzen a [lightgray]Wi-Fi-n vagy a helyi hálózaton[] bárki láthatja a kiszolgálót a kiszolgálólistán.\n\nHa azt szeretnéd, hogy bárhonnan, IP-címmel kapcsolódhassanak, akkor [accent]porttovábbítás[] szükséges.\n\n[lightgray]Megjegyzés: ha valakinek problémái vannak a LAN-játékhoz való kapcsolódással, győződj meg arról, hogy a tűzfal beállításaiban engedélyezted-e a Mindustry hozzáférését a helyi hálózathoz. Ne feledd, hogy a nyilvános hálózatok néha nem teszik lehetővé a kiszolgálók felderítését. +join.info = Itt megadhatod egy [accent]kiszolgáló IP-címét[] a kapcsolódáshoz, vagy felfedezhetsz [accent]helyi[] vagy [accent]globális[] kiszolgálókat.\nA LAN és WAN többjátékos mód is támogatott.\n\n[lightgray]Ha valakihez IP-cím alapján szeretnél kapcsolódni, akkor meg kell tudnod az IP-címét, amelyet például a „my ip” webes kereséssel találhatsz meg. +hostserver = Többjátékos játék invitefriends = Barátok meghívása -hostserver.mobile = Játék hosztolása -host = Hosztolás -hosting = [accent]Szerver megnyitása... +hostserver.mobile = Többjátékos játék +host = Kiszolgáló nyitása +hosting = [accent]Kiszolgáló megnyitása... hosts.refresh = Frissítés -hosts.discovering = LAN játék keresése -hosts.discovering.any = Játék keresése -server.refreshing = Szerver frissítése -hosts.none = [lightgray]Nincs helyi játék! -host.invalid = [scarlet]Nem sikerült csatlakozni. +hosts.discovering = LAN játékok felderítése +hosts.discovering.any = Játékok felderítése +server.refreshing = Kiszolgáló frissítése +hosts.none = [lightgray]Nem található helyi játék! +host.invalid = [scarlet]Nem sikerült kapcsolódni a kiszolgálóhoz. -servers.local = Helyi Szerverek -servers.local.steam = Nyitott játékok és helyi szerverek -servers.remote = Távoli Szerverek -servers.global = Közösségi szerverek +servers.local = Helyi kiszolgálók +servers.local.steam = Nyitott játékok és helyi kiszolgálók +servers.remote = Távoli kiszolgálók +servers.global = Közösségi kiszolgálók -servers.disclaimer = A közösségi szervereket [accent]nem[] a fejlesztő birtokolja és ellenőrzi.\n\nA szerverek tartalmazhatnak olyan felhasználók által létrehozott tartalmat, amely nem minden korosztály számára megfelelő. -servers.showhidden = Rejtett szerverek megjelenítése +servers.disclaimer = A közösségi kiszolgálókat [accent]nem[] a fejlesztő birtokolja és ellenőrzi.\n\nA kiszolgálók tartalmazhatnak olyan felhasználók által létrehozott tartalmat, amely nem minden korosztály számára megfelelő. +servers.showhidden = Rejtett kiszolgálók megjelenítése server.shown = Látható server.hidden = Rejtett -viewplayer = Viewing Player: [accent]{0} +viewplayer = Játékos figyelése: [accent]{0} trace = Játékos követése trace.playername = Játékos neve: [accent]{0} -trace.ip = IP: [accent]{0} +trace.ip = IP-cím: [accent]{0} trace.id = Azonosító: [accent]{0} +trace.language = Nyelv: [accent]{0} trace.mobile = Mobil kliens: [accent]{0} trace.modclient = Nem hivatalos kliens: [accent]{0} -trace.times.joined = Csatlakotások száma: [accent]{0} +trace.times.joined = Kapcsolódások száma: [accent]{0} trace.times.kicked = Kirúgások száma: [accent]{0} -invalidid = Érvénytelen kliens ID! Küldj hibajelentést. +trace.ips = IP-címek: +trace.names = Nevek: +invalidid = Érvénytelen kliensazonosító (ID)! Küldj hibajelentést. + +player.ban = Kitiltás +player.kick = Kirúgás +player.trace = Követés +player.admin = Admin be/ki +player.team = Csapatváltás + server.bans = Tiltások server.bans.none = Nincsenek tiltott játékosok! server.admins = Adminok -server.admins.none = Nincsen admin! -server.add = Szerver hozzáadása -server.delete = Biztosan törlöd ezt a szervert? -server.edit = Szerver szerkesztése -server.outdated = [crimson]Elavult szerver![] -server.outdated.client = [crimson]Elavult kliens![] +server.admins.none = Nem található admin! +server.add = Kiszolgáló hozzáadása +server.delete = Biztosan törlöd ezt a kiszolgálót? +server.edit = Kiszolgáló szerkesztése +server.outdated = [scarlet]Elavult kiszolgáló![] +server.outdated.client = [scarlet]Elavult kliens![] server.version = [gray]v{0} {1} -server.custombuild = [accent]Saját Build -confirmban = Biztosan tiltod ezt a játékost? -confirmkick = Biztosan kirúgod ezt a játékost? -confirmvotekick = Biztosan ki akarod rúgatni ezt a játékost? +server.custombuild = [accent]Saját összeállítás +confirmban = Biztosan tiltod „{0}[white]” játékost? +confirmkick = Biztosan kirúgod „{0}[white]” játékost? confirmunban = Biztosan újra engedélyezed ezt a játékost? -confirmadmin = Biztosan hozzá akarod adni ezt a játékost az adminokhoz? -confirmunadmin = Biztosan meg akarod szűntetni ennek a játékosnak az adminstátuszát? -joingame.title = Csatlakozás +confirmadmin = Biztosan előlépteted „{0}[white]” játékost adminná? +confirmunadmin = Biztosan meg akarod szüntetni „{0}[white]” játékos adminisztrátori státuszát? +votekick.reason = Kiszavazás oka +votekick.reason.message = Valóban ki akarod szavazni „{0}[white]” játékost?\nHa igen, írd be az okát: +joingame.title = Kapcsolódás a játékhoz joingame.ip = Cím: -disconnect = Leválasztva. -disconnect.error = Csatlakozási hiba. -disconnect.closed = Kapcsolat bontva. +disconnect = Kapcsolat bontva. +disconnect.error = Kapcsolódási hiba. +disconnect.closed = Kapcsolat lezárva. disconnect.timeout = Időtúllépés. -disconnect.data = Nem sikerült betölteni az adatokat! -cantconnect = Nem sikerült csatlakozni a ([accent]{0}[]) játékhoz. -connecting = [accent]Csatlakozás... -reconnecting = [accent]Újracsatlakozás... -connecting.data = [accent]Betöltés... +disconnect.data = Nem sikerült betölteni a világ adatait! +cantconnect = Nem sikerült kapcsolódni a(z) ([accent]{0}[]) játékhoz. +connecting = [accent]Kapcsolódás... +reconnecting = [accent]Újrakapcsolódás... +connecting.data = [accent]Világadatok betöltése... server.port = Port: server.addressinuse = A cím már használatban van! server.invalidport = Érvénytelen port! -server.error = [crimson]Nem sikerült megnyitni a szervert. +server.error = [scarlet]Kiszolgálási hiba. save.new = Új mentés save.overwrite = Biztosan felülírod\nezt a mentést? -save.nocampaign = Nem lehet importálni különálló kampány mentés fájlokat. +save.nocampaign = A hadjáratból származó egyes mentési fájlok nem importálhatóak. overwrite = Felülírás save.none = Nem található mentés! -savefail = Nem sikerült menteni! +savefail = Nem sikerült elmenteni a játékot! save.delete.confirm = Biztosan törlöd ezt a mentést? save.delete = Törlés -save.export = Exportálás +save.export = Mentés exportálása save.import.invalid = [accent]Ez a mentés érvénytelen! -save.import.fail = [crimson]Nem sikerült importálni a [accent]{0}[] mentést -save.export.fail = [crimson]Nem sikerült exportálni a [accent]{0}[] mentést -save.import = Importálás -save.newslot = Név: +save.import.fail = [scarlet]Nem sikerült importálni a(z) [accent]{0}[] mentést +save.export.fail = [scarlet]Nem sikerült exportálni a(z) [accent]{0}[] mentést +save.import = Mentés importálása +save.newslot = Mentés neve: save.rename = Átnevezés save.rename.text = Új név: selectslot = Válassz ki egy mentést. -slot = [accent]Slot {0} +slot = [accent]{0}. hely editmessage = Üzenet szerkesztése -save.corrupted = Érvénytelen fájl! +save.corrupted = A mentési fájl sérült vagy érvénytelen! empty = <üres> on = Be off = Ki save.search = Keresés a mentett játékok között... save.autosave = Automatikus mentés: {0} -save.map = Térkép: {0} +save.map = Pálya: {0} save.wave = Hullám: {0} save.mode = Játékmód: {0} -save.date = Utolsó Mentés: {0} +save.date = Utolsó mentés: {0} save.playtime = Játékidő: {0} warning = Figyelmeztetés. -confirm = Rendben +confirm = Megerősítés delete = Törlés -view.workshop = Megtekintés a Workshopban -workshop.listing = Workshop Listázás szerkesztése +view.workshop = Megtekintés a Steam Műhelyben +workshop.listing = Steam Műhely listázásának szerkesztése ok = OK open = Megnyitás customize = Szabályok módosítása cancel = Mégse command = Parancs +command.queue = Sorba állítás command.mine = Bányászás command.repair = Javítás command.rebuild = Újraépítés -command.assist = Segítség játékosnak +command.assist = Segítség a játékosnak command.move = Mozgás -command.boost = Boost-olás -openlink = Link megnyitása -copylink = Link másolása +command.boost = Erősítés +command.enterPayload = Berakodás a rakományszállítóba +command.loadUnits = Egységek felvétele +command.loadBlocks = Blokkok felvétele +command.unloadPayload = Kirakodás a rakományszállítóból +stance.stop = Parancsok visszavonása +stance.shoot = Viselkedés: lövés +stance.holdfire = Viselkedés: tüzet szüntess +stance.pursuetarget = Viselkedés: célpont követése +stance.patrol = Viselkedés: járőrözési útvonal +stance.ram = Viselkedés: ütközés\n[lightgray]Egyenes vonalú mozgás, útkeresés nélkül +openlink = Hivatkozás megnyitása +copylink = Hivatkozás másolása back = Vissza max = Max -objective = Map célja -crash.export = Összeomlási napló exportálása -crash.none = Nem található összeomlási napló. -crash.exported = Összeomlási napló exportálva. -data.export = Adatok Exportálása -data.import = Adatok Importálása -data.openfolder = Adat mappa megnyitása -data.exported = Adat exportálva. -data.invalid = Érvénytelen adatok. -data.import.confirm = Külső adat importálása felülírja[scarlet] minden[] jelenlegi adatodat.\n[accent]Nem lehet visszavonni![]\n\nAmint kész az importálás, kilép a játék. -quit.confirm = Biztos kilépsz? +objective = A pálya célja +crash.export = Az összeomlási napló exportálása +crash.none = Nem található az összeomlási napló. +crash.exported = Az összeomlási napló exportálva. +data.export = Adatok exportálása +data.import = Adatok importálása +data.openfolder = Adatok mappájának megnyitása +data.exported = Adatok exportálva. +data.invalid = Ezek nem érvényes játékadatok. +data.import.confirm = A külső adatok importálása felülírja[scarlet] minden[] jelenlegi játékadatodat.\n[accent]Nem vonható vissza![]\n\nAmint kész az importálás, a játék azonnal kilép. +quit.confirm = Biztosan kilépsz? loading = [accent]Betöltés... downloading = [accent]Letöltés... saving = [accent]Mentés... -respawn = Nyomd meg a(z) [accent][[{0}][] gombot, hogy újraéledj a magban. -cancelbuilding = Használd a(z) [accent][[{0}][] gombot, hogy töröld a tervrajzot. -selectschematic = Használd a(z) [accent][[{0}][] gombot, hogy kijelölj és másolj. -pausebuilding = Használd a(z) [accent][[{0}][] gombot, hogy megállítsd az építkezést. -resumebuilding = Használd a(z) [scarlet][[{0}][] gombot, hogy folytasd az építkezést. -enablebuilding = [scarlet][[{0}][] to enable building -showui = A kezelőfelület elrejtve.\nNyomd meg a(z) [accent][[{0}][] gombot a megjelenítéséhez. +respawn = [accent][[{0}][] az újraéledéshez +cancelbuilding = [accent][[{0}][] a tervrajz törléséhez +selectschematic = [accent][[{0}][] a kijelöléshez és másoláshoz +pausebuilding = [accent][[{0}][] az építkezés megállításához +resumebuilding = [scarlet][[{0}][] az építkezés folytatásához +enablebuilding = [scarlet][[{0}][] az építkezés jóváhagyásához +showui = A kezelőfelület elrejtve.\nNyomd meg a(z) [accent][[{0}][] gombot a kezelőfelület megjelenítéséhez. commandmode.name = [accent]Parancs mód -commandmode.nounits = [no units] +commandmode.nounits = [nincs egység] wave = [accent]{0}. hullám wave.cap = [accent]{0}./{1} hullám -wave.waiting = [lightgray]Következő hullám {0} +wave.waiting = [lightgray]A következő hullám elkezdődik: {0} mp múlva wave.waveInProgress = [lightgray]Hullám folyamatban waiting = [lightgray]Várakozás... waiting.players = Várakozás a játékosokra... -wave.enemies = [lightgray]{0} Megmaradt ellenség -wave.enemycores = [accent]{0}[lightgray] Ellenséges mag -wave.enemycore = [accent]{0}[lightgray] Ellenséges mag -wave.enemy = [lightgray]{0} Megmaradt ellenség -wave.guardianwarn = Egy őrző érkezik [accent]{0}[] hullám múlva. -wave.guardianwarn.one = Egy őrző érkezik [accent]{0}[] hullám múlva. -loadimage = Fénykép betöltése -saveimage = Fénykép mentése +wave.enemies = [lightgray]{0} ellenség maradt +wave.enemycores = [accent]{0}[lightgray] ellenséges támaszpont +wave.enemycore = [accent]{0}[lightgray] ellenséges támaszpont +wave.enemy = [lightgray]{0} ellenség maradt +wave.guardianwarn = Egy Őrző érkezik [accent]{0}[] hullám múlva. +wave.guardianwarn.one = Egy Őrző érkezik [accent]{0}[] hullám múlva. +loadimage = Kép betöltése +saveimage = Kép mentése unknown = Ismeretlen -custom = Egyedi +custom = Egyéni builtin = Beépített -map.delete.confirm = Biztosan törlöd ezt a mapot? Ez a művelet nem visszavonható! -map.random = [accent]Véletlenszerű Map -map.nospawn = Ez a map nem rendelkezik maggal, amelyen a játékos kezdhet! Adj hozzá egy [accent]narancssárga[] magot ehhez a maphoz a szerkesztőben! -map.nospawn.pvp = Ezen a térképen nincsen ellenséges mag, amelyen a másik csapat kezdhet! Adjon hozzá [scarlet]nem narancssárga[] magot ehhez a maphoz a szerkesztőben! -map.nospawn.attack = Ezen a térképen nincsen ellenséges mag! Adjon hozzá [scarlet]piros[] magot ehhez a maphoz a szerkesztőben! -map.invalid = Hiba történt a map betöltésekor: sérült vagy érvénytelen mapfájl. -workshop.update = Item frissítése -workshop.error = Hiba történt a workshop részleteinek lekérdezésekor: {0} -map.publish.confirm = Biztos, hogy közzéteszed ezt a mapot?\n\n[lightgray] Győződj meg róla, hogy elfogadtad a Workshop EULA-t, különben a mapjaid nem jelennek meg! -workshop.menu = Válaszd ki, mit szeretnél csinálni ezzel az itemmel. -workshop.info = Item Infó -changelog = Változtatási napló (opcionális): +map.delete.confirm = Biztosan törlöd ezt a pályát? Ez a művelet nem vonható vissza! +map.random = [accent]Véletlenszerű pálya +map.nospawn = Ez a pálya nem rendelkezik támaszponttal, amellyel a játékos kezdhetne. Adj hozzá egy {0} támaszpontot a pályához a szerkesztőben. +map.nospawn.pvp = Ezen a pályán nincs ellenséges támaszpont, amellyel egy játékos kezdhet. Adj hozzá egy [scarlet]nem narancssárga[] támaszpontot a pályához a szerkesztőben. +map.nospawn.attack = Ezen a pályán nincs ellenséges támaszpont. Adj hozzá {0} támaszpontot ehhez a pályához a szerkesztőben. +map.invalid = Hiba történt a pálya betöltésekor: sérült vagy érvénytelen fájl. +workshop.update = Elem frissítése +workshop.error = Hiba történt a Steam Műhely részleteinek lekérdezésekor: {0} +map.publish.confirm = Biztos, hogy közzéteszed ezt a pályát?\n\n[lightgray]Győződj meg róla, hogy elfogadtad a Steam Műhely EULA-t, különben a pályáid nem jelennek meg. +workshop.menu = Válaszd ki, hogy mit szeretnél csinálni ezzel az elemmel. +workshop.info = Eleminformációk +changelog = Változásnapló (nem kötelező): updatedesc = Cím és leírás felülírása eula = Steam EULA -missing = Ezt az elemet törölték vagy áthelyezték.\n[lightgray] A workshop adatait automatikusan leválasztották. -publishing = [accent]Publikálás... -publish.confirm = Biztosan közzéteszed?\n\n[lightgray] Győződj meg róla, hogy elfogadtad a Workshop EULA-t, különben az itemjeid nem jelennek meg! -publish.error = Hiba az item publikálásakor: {0} -steam.error = Nem sikerült inicializálni a Steam szolgáltatásokat.\nHiba: {0} +missing = Ezt az elemet törölték vagy áthelyezték.\n[lightgray]A Steam Műhely adatai automatikusan le lettek választva. +publishing = [accent]Közzététel... +publish.confirm = Biztosan közzéteszed?\n\n[lightgray]Győződj meg róla, hogy elfogadtad a Steam Műhely EULA-t, különben az elemeid nem jelennek meg! +publish.error = Hiba az elem közzétételekor: {0} +steam.error = Nem sikerült előkészíteni a Steam szolgáltatásokat.\nHiba: {0} + editor.planet = Bolygó: editor.sector = Szektor: -editor.seed = Seed: +editor.seed = Kiindulóérték: editor.cliffs = Falak sziklákká - editor.brush = Méret editor.openin = Megnyitás a szerkesztőben -editor.oregen = Érc generálás -editor.oregen.info = Érc generálás: -editor.mapinfo = Általános -editor.author = Készítő: +editor.oregen = Ércelőállítás +editor.oregen.info = Ércelőállítás: +editor.mapinfo = Pályainformációk +editor.author = Szerző: editor.description = Leírás: -editor.nodescription = A mapnak rendelkeznie kell egy legalább 4 karakter hosszú leírással, mielőtt megosztod. -editor.waves = Hullámok: -editor.rules = Szabályok: -editor.generation = generálás: +editor.nodescription = A megosztás előtt a pályának rendelkeznie kell egy legalább 4 karakteres leírással. +editor.waves = Hullámok +editor.rules = Szabályok +editor.generation = Előállítás editor.objectives = Célok -editor.ingame = Szerkesztés játékban -editor.playtest = Teszt játékban -editor.publish.workshop = Közzététel workshopon -editor.newmap = Új Map +editor.locales = Helyi csomagok +editor.worldprocessors = Világprocesszorok +editor.worldprocessors.editname = Név szerkesztése +editor.worldprocessors.none = [lightgray]Nem találhatóak világprocesszor blokkok!\nAdj hozzá egyet a pályaszerkesztőben, vagy használd az alábbi \ue813 hozzáadás gombot. +editor.worldprocessors.nospace = Nincs szabad hely egy világprocesszor elhelyezéséhez!\nKitöltötted a pályát struktúrákkal? Miért tetted ezt? +editor.worldprocessors.delete.confirm = Biztos, hogy törölni akarod ezt a világprocesszort?\n\nHa falakkal van körülvéve, akkor egy környezeti fal fog a helyére kerülni. +editor.ingame = Szerkesztés a játékban +editor.playtest = Teszt a játékban +editor.publish.workshop = Közzététel a Steam Műhelyben +editor.newmap = Új pálya editor.center = Ugrás középre -editor.search = Mapok keresése... -editor.filters = Mapok szűrése +editor.search = Pályák keresése... +editor.filters = Pályák szűrése editor.filters.mode = Játékmódok: -editor.filters.type = Map típus: +editor.filters.type = Pályatípus: editor.filters.search = Keresés ebben: -editor.filters.author = Készítő +editor.filters.author = Szerző editor.filters.description = Leírás editor.shiftx = X eltolás editor.shifty = Y eltolás -workshop = Workshop +workshop = Steam Műhely waves.title = Hullámok waves.remove = Eltávolítás waves.every = minden waves.waves = hullámonként waves.health = élet: {0}% -waves.perspawn = per spawn +waves.perspawn = kezdőpontonként waves.shields = pajzs/hullám waves.to = - -waves.spawn = spawn: +waves.spawn = kezdőpont: waves.spawn.all = -waves.spawn.select = Kezdőhely kiválasztása -waves.spawn.none = [scarlet]Nem lehet kezdőhelyet találni -waves.max = max egységek -waves.guardian = őrző +waves.spawn.select = Kezdőpont kiválasztása +waves.spawn.none = [scarlet]nem találhatóak kezdőpontok a pályán +waves.max = egységkorlát +waves.guardian = Őrző waves.preview = Előnézet -waves.edit = Szerksztés... -waves.random = Random +waves.edit = Szerkesztés... +waves.random = Véletlenszerű waves.copy = Másolás a vágólapra -waves.load = Másolás a vágólapról -waves.invalid = Nem lehet beilleszteni a vágólapról. +waves.load = Betöltés a vágólapról +waves.invalid = Érvénytelen hullámok a vágólapon. waves.copied = Hullámok másolva. -waves.none = Nincs ellenség megadva.\nAz üresen hagyott tervek automatikusan lecserélődnek az alapbeállításra. +waves.none = Nincs ellenség megadva.\nVedd figyelembe, hogy az üresen hagyott hullám-elrendezések automatikusan le lesznek cserélve az alapértelmezett elrendezésre. waves.sort = Rendezési szempont waves.sort.reverse = Rendezés visszafelé -waves.sort.begin = Begin +waves.sort.begin = Kezdés waves.sort.health = Élet waves.sort.type = Típus -waves.search = Search waves... -waves.filter.unit = Unit Filter -waves.units.hide = Hide All -waves.units.show = Show All +waves.search = Hullám keresése... +waves.filter = Egységszűrő +waves.units.hide = Összes elrejtése +waves.units.show = Összes megjelenítése #these are intentionally in lower case wavemode.counts = típusokra bontva -wavemode.totals = öszzesítés +wavemode.totals = összesítés wavemode.health = életpontok editor.default = [lightgray] details = Részletek... -edit = Szerkesztés... +edit = Szerkesztés variables = Változók +logic.clear.confirm = Biztos, hogy törölni akarod az összes kódot ebből a processzorból? +logic.globals = Beépített változók + editor.name = Név: -editor.spawn = Egység megidézése +editor.spawn = Egység létrehozása editor.removeunit = Egység eltávolítása editor.teams = Csapatok editor.errorload = Hiba a fájl betöltése közben. editor.errorsave = Hiba a fájl mentése közben. -editor.errorimage = Ez egy kép, nem egy Map.\n\nHa egy 3.5/build 40 Mapot szeretnél betölteni, használd a "Régi map betöltése" gombot a szerkesztőben. -editor.errorlegacy = Ez a Map túl régi, és már nem támogatott formátumot használ. -editor.errornot = Ez nem egy Map fájl. -editor.errorheader = Ez a map fájl vagy érvénytelen vagy sérült. -editor.errorname = A Mapnak nincs neve. Mentést próbálsz betölteni? +editor.errorimage = Ez egy kép, nem pedig egy pálya. +editor.errorlegacy = Ez a pálya túl régi és olyan régi pálya formátumot használ, amely már nem támogatott. +editor.errornot = Ez nem egy pályafájl. +editor.errorheader = Ez a pályafájl érvénytelen vagy sérült. +editor.errorname = A pályának nincs neve. Mentést próbálsz betölteni? +editor.errorlocales = Hiba az érvénytelen helyi csomagok beolvasásakor. editor.update = Frissítés editor.randomize = Véletlenszerű -editor.moveup = Mozgás fel -editor.movedown = Mozgás le +editor.moveup = Mozgás felfelé +editor.movedown = Mozgás lefelé editor.copy = Másolás -editor.apply = Alkalmazás -editor.generate = Haladó funkciók -editor.sectorgenerate = Szektor generálása +editor.apply = Alkalmaz +editor.generate = Előállítás +editor.sectorgenerate = Szektor előállítása editor.resize = Átméretezés -editor.loadmap = Map betöltése -editor.savemap = Mentés +editor.loadmap = Pálya betöltése +editor.savemap = Pálya mentése +editor.savechanges = [scarlet]Nem mentett módosításaid vannak!\n\n[]Szeretnéd elmenteni őket? editor.saved = Mentve! -editor.save.noname = Nem adtál meg nevet! Állíts be egyet az "Általános" menüpont alatt! -editor.save.overwrite = A Mapod felülír egy már létező Mapot! Válassz egy másik nevet az "Általános" menüpont alatt! -editor.import.exists = [scarlet]Nem lehet importálni:[] Már létezik "{0}" nevű Map! -editor.import = Importálás -editor.importmap = Map importálása -editor.importmap.description = Létező Map importálása +editor.save.noname = A pályádnak nincs neve! Állíts be egyet a „pályainformációk” menüben. +editor.save.overwrite = A pályád felülír egy beépített pályát! Válassz egy másik nevet a „pályainformációk” menüben. +editor.import.exists = [scarlet]Nem lehet importálni:[] Már létezik „{0}” nevű beépített pálya! +editor.import = Importálás... +editor.importmap = Pálya importálása +editor.importmap.description = Létező pálya importálása editor.importfile = Fájl importálása -editor.importfile.description = Külső Map fájl importálása +editor.importfile.description = Egy külső pályafájl importálása editor.importimage = Képfájl importálása -editor.importimage.description = Külső Map képfájl importálása -editor.export = Exportálás +editor.importimage.description = Egy külső pályaképfájl importálása +editor.export = Exportálás... editor.exportfile = Fájl exportálása -editor.exportfile.description = Exportálás Map fájlba -editor.exportimage = Domborzat exportálása -editor.exportimage.description = Domborzat exportálása képfájlba +editor.exportfile.description = Exportálás egy pályafájlba +editor.exportimage = Domborzati kép exportálása +editor.exportimage.description = Csak alapvető domborzatot tartalmazó képfájl exportálása editor.loadimage = Domborzat importálása editor.saveimage = Domborzat exportálása -editor.unsaved = Biztos ki akarsz lépni?\n[scarlet]A nem mentett módosításaid elvesznek! -editor.resizemap = Átméretezés -editor.mapname = Map neve: -editor.overwrite = [accent]Vigyázz!\nEzzel felülírsz egy már létező Mapot. -editor.overwrite.confirm = [scarlet]Vigyázz![] Ilyen nevű Map már létezik:\n"[accent]{0}[]"\nBiztosan felülírod? -editor.exists = Ilyen nevű Map már létezik. -editor.selectmap = Válassz ki egy Mapot: +editor.unsaved = Biztos, hogy ki akarsz lépni?\n[scarlet]A nem mentett módosításaid elvesznek. +editor.resizemap = Pálya átméretezése +editor.mapname = Pálya neve: +editor.overwrite = [accent]Vigyázz!\nEzzel felülírsz egy már létező pályát. +editor.overwrite.confirm = [scarlet]Vigyázz![] Ilyen nevű pálya már létezik. Biztosan felülírod?\n„[accent]{0}[]” +editor.exists = Ilyen nevű pálya már létezik. +editor.selectmap = Válassz ki egy pályát a betöltéshez: toolmode.replace = Csere -toolmode.replace.description = Draws only on solid blocks. +toolmode.replace.description = Csak szilárd blokkokra rajzol. toolmode.replaceall = Összes cseréje -toolmode.replaceall.description = Összes cseréje +toolmode.replaceall.description = Az összes blokkot lecseréli a pályán. toolmode.orthogonal = Merőleges toolmode.orthogonal.description = Csak merőleges vonalakat rajzol. toolmode.square = Négyzet -toolmode.square.description = Négyzet ecset +toolmode.square.description = Négyzetes ecset. toolmode.eraseores = Ércradír toolmode.eraseores.description = Csak az érceket törli. -toolmode.fillteams = Fill Teams -toolmode.fillteams.description = Fill teams instead of blocks. -toolmode.drawteams = Draw Teams -toolmode.drawteams.description = Draw teams instead of blocks. +toolmode.fillteams = Csapatok kitöltése +toolmode.fillteams.description = Csapatok kitöltése a blokkok helyett. +toolmode.fillerase = Kitöltés törlése +toolmode.fillerase.description = Az azonos típusú blokkok törlése. +toolmode.drawteams = Csapatok rajzolása +toolmode.drawteams.description = Csapatok rajzolása blokkok helyett. +#unused toolmode.underliquid = Folyadékok alá -toolmode.underliquid.description = Padlók folyadék blokkok alá rajzolása. +toolmode.underliquid.description = Padlók rajzolása a folyadékblokkok alá. -filters.empty = [lightgray]Még nincs filter! Adj hozzá egyet a lenti gombra kattintva! -filter.distort = Distort +filters.empty = [lightgray]Még nincs szűrő! Adj hozzá egyet a lenti gombra kattintva. + +filter.distort = Torzítás filter.noise = Zaj -filter.enemyspawn = Enemy Spawn Select -filter.spawnpath = Path To Spawn -filter.corespawn = Core Select +filter.enemyspawn = Ellenséges kezdőpont kiválasztása +filter.spawnpath = Útvonal a kezdőponthoz +filter.corespawn = Támaszpont kiválasztása filter.median = Medián filter.oremedian = Érc medián -filter.blend = Blend +filter.blend = Vegyes filter.defaultores = Alapértelmezett ércek filter.ore = Érc -filter.rivernoise = Vízfolyás zaj +filter.rivernoise = Vízfolyás zaja filter.mirror = Tükrözés -filter.clear = Blokkok törlése -filter.option.ignore = Ignore -filter.scatter = Scatter +filter.clear = Törlés +filter.option.ignore = Elutasítás +filter.scatter = Szétszórás filter.terrain = Domborzat -filter.option.scale = Méret +filter.logic = Logika + +filter.option.scale = Méretezés filter.option.chance = Gyakoriság -filter.option.mag = Magnitude -filter.option.threshold = Threshold -filter.option.circle-scale = Circle Scale -filter.option.octaves = Octaves -filter.option.falloff = Falloff -filter.option.angle = Angle -filter.option.tilt = Tilt -filter.option.rotate = Rotate +filter.option.mag = Magnitúdó +filter.option.threshold = Küszöbérték +filter.option.circle-scale = Körskála +filter.option.octaves = Oktávok +filter.option.falloff = Esés +filter.option.angle = Szög +filter.option.tilt = Döntés +filter.option.rotate = Forgatás filter.option.amount = Mennyiség -filter.option.block = Block +filter.option.block = Blokk filter.option.floor = Talaj -filter.option.flooronto = Jelenlegi mező -filter.option.target = Jelenlegi mező -filter.option.replacement = Replacement +filter.option.flooronto = Céltalaj +filter.option.target = Cél +filter.option.replacement = Csere filter.option.wall = Fal filter.option.ore = Érc -filter.option.floor2 = Secondary Floor -filter.option.threshold2 = Secondary Threshold +filter.option.floor2 = Másodlagos talaj +filter.option.threshold2 = Másodlagos küszöbérték filter.option.radius = Sugár -filter.option.percentile = Arány +filter.option.percentile = Százalék +filter.option.code = Kód +filter.option.loop = Hurok + +locales.info = Itt adhatsz hozzá különböző nyelvi csomagokat a pályádhoz. A nyelvi csomagokban minden tulajdonságnak van egy neve és egy értéke. Ezeket a tulajdonságokat a világprocesszorok és a célkitűzések is használhatják a saját neveikkel. Támogatják a szövegformázást (a helyőrzőket a tényleges értékükkel helyettesítik).\n\n[cyan]Példa tulajdonság:\n[]name: [accent]időzítő[]\nvalue: [accent]Példa időzítő, hátralévő idő: {0}[]\n\n[cyan]Használat:\n[]Beállítás célkitűzés szövegeként: [accent]@időzítő\n\n[]Írd be egy világprocesszorba:\n[accent]localeprint "időzítő"\nformat time\n[gray](ahol az idő egy külön számított változó) +locales.deletelocale = Biztos, hogy törölni akarod ezt a nyelvi csomagot? +locales.applytoall = Változások alkalmazása az összes nyelvi csomagra +locales.addtoother = Hozzáadás más nyelvi csomagokhoz +locales.rollback = Visszaállítás az utoljára elfogadottra +locales.filter = Tulajdonságszűrő +locales.searchname = Név keresése... +locales.searchvalue = Érték keresése... +locales.searchlocale = Nyelvi csomag keresése... +locales.byname = Név szerint +locales.byvalue = Érték szerint +locales.showcorrect = Azon tulajdonságok megjelenítése, amelyek mindenhol egyedi értékekkel rendelkeznek és jelen vannak minden nyelvi csomagban. +locales.showmissing = Azon tulajdonságok megjelenítése, amelyek hiányoznak egyes nyelvi csomagokból +locales.showsame = Azon tulajdonságok megjelenítése, amelyek azonos értékekkel rendelkeznek különböző nyelvi csomagokban +locales.viewproperty = Megtekintés minden nyelvi csomagban +locales.viewing = A(z) „{0}” tulajdonság megtekintése +locales.addicon = Ikon hozzáadása width = Szélesség: height = Magasság: menu = Menü play = Játék -campaign = Kampány +campaign = Hadjárat load = Betöltés save = Mentés fps = FPS: {0} -ping = Ping: {0}ms +ping = Ping: {0} ms tps = TPS: {0} -memory = Mem: {0}mb -memory2 = Mem:\n {0}mb +\n {1}mb -language.restart = Indítsd újra a játékot, hogy betöltődjenek a nyelvi beállítások! +memory = Mem: {0} MB +memory2 = Mem:\n {0} MB +\n {1} MB +language.restart = Indítsd újra a játékot, hogy a nyelvi beállítások érvénybe lépjenek. settings = Beállítások -tutorial = Bevezető -tutorial.retake = Bevezető újrajátszása +tutorial = Oktatóanyag +tutorial.retake = Oktatóanyag újrajátszása editor = Szerkesztő -mapeditor = Map szerkesztő +mapeditor = Pályaszerkesztő abandon = Feladás -abandon.text = Ez a szektor benne minden nyersanyaggal az ellenség kezére kerül. +abandon.text = Ez a szektor és minden nyersanyaga az ellenség kezére kerül. locked = Lezárva complete = [lightgray]Feltételek: -requirement.wave = Juss el a {0}. hullámig {1} szektorban -requirement.core = Pusztítsd el az ellenséges magot {0} szektorban -requirement.research = Fedezd fel: {0} +requirement.wave = Juss el a(z) {0}. hullámig a(z) {1} szektorban +requirement.core = Pusztítsd el az ellenséges támaszpontot a(z) {0} szektorban +requirement.research = Fejleszd ki: {0} requirement.produce = Gyártsd le: {0} requirement.capture = Foglald el a(z) {0} szektort -requirement.onplanet = Control Sector On {0} -requirement.onsector = Land On Sector: {0} +requirement.onplanet = Szektor elfoglalása a(z) {0} bolygón +requirement.onsector = Landolj a(z) {0} szektorban launch.text = Indítás -research.multiplayer = Csak a host fedezhet fel itemeket. -map.multiplayer = Csak a host tekintheti meg a szektorokat. +research.multiplayer = Csak a kiszolgáló fedezhet fel nyersanyagokat. +map.multiplayer = Csak a kiszolgáló tekintheti meg a szektorokat. uncover = Felfedés configure = Rakomány szerkesztése -objective.research.name = Research -objective.produce.name = Obtain -objective.item.name = Obtain Item -objective.coreitem.name = Core Item -objective.buildcount.name = Build Count -objective.unitcount.name = Unit Count -objective.destroyunits.name = Destroy Units -objective.timer.name = Timer -objective.destroyblock.name = Destroy Block -objective.destroyblocks.name = Destroy Blocks -objective.destroycore.name = Destroy Core -objective.commandmode.name = Command Mode -objective.flag.name = Flag -marker.shapetext.name = Shape Text -marker.minimap.name = Minimap -marker.shape.name = Shape -marker.text.name = Text -marker.background = Background -marker.outline = Outline -objective.research = [accent]Research:\n[]{0}[lightgray]{1} -objective.produce = [accent]Obtain:\n[]{0}[lightgray]{1} -objective.destroyblock = [accent]Destroy:\n[]{0}[lightgray]{1} -objective.destroyblocks = [accent]Destroy: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3} -objective.item = [accent]Obtain: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.coreitem = [accent]Move into Core:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.build = [accent]Build: [][lightgray]{0}[]x\n{1}[lightgray]{2} -objective.buildunit = [accent]Build Unit: [][lightgray]{0}[]x\n{1}[lightgray]{2} -objective.destroyunits = [accent]Destroy: [][lightgray]{0}[]x Units -objective.enemiesapproaching = [accent]Enemies approaching in [lightgray]{0}[] -objective.enemyescelating = [accent]Enemy production escalating in [lightgray]{0}[] -objective.enemyairunits = [accent]Enemy air unit production beginning in [lightgray]{0}[] -objective.destroycore = [accent]Destroy Enemy Core -objective.command = [accent]Command Units -objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} -announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ + +objective.research.name = Fejlesztés +objective.produce.name = Megszerzés +objective.item.name = Nyersanyag megszerzése +objective.coreitem.name = Támaszpont nyersanyaga +objective.buildcount.name = Építésszámláló +objective.unitcount.name = Egységszámláló +objective.destroyunits.name = Egységek megsemmisítése +objective.timer.name = Időzítő +objective.destroyblock.name = Blokk megsemmisítése +objective.destroyblocks.name = Blokkok megsemmisítése +objective.destroycore.name = Támaszpont megsemmisítése +objective.commandmode.name = Parancs mód +objective.flag.name = Jelölő + +marker.shapetext.name = Szövegforma +marker.point.name = Pont +marker.shape.name = Alakzat +marker.text.name = Szöveg +marker.line.name = Vonal +marker.quad.name = Négyzet +marker.texture.name = Textúra + +marker.background = Háttér +marker.outline = Körvonal + +objective.research = [accent]Fejleszd ki:\n[]{0}[lightgray]{1} +objective.produce = [accent]Termelj:\n[]{0}[lightgray]{1} +objective.destroyblock = [accent]Semmisítsd meg:\n[]{0}[lightgray]{1} +objective.destroyblocks = [accent]Semmisítsd meg: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3} +objective.item = [accent]Termelj: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} +objective.coreitem = [accent]Szállítás a támaszpontba:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} +objective.build = [accent]Építs: [][lightgray]{0}[]db\n{1}[lightgray]{2} +objective.buildunit = [accent]Gyárts egységeket: [][lightgray]{0}[]db\n{1}[lightgray]{2} +objective.destroyunits = [accent]Semmisíts meg: [][lightgray]{0}[]db egységet +objective.enemiesapproaching = [accent]Ellenség érkezik: [lightgray]{0}[] mp múlva +objective.enemyescelating = [accent]Az ellenséges gyártás fokozódik: [lightgray]{0}[] mp múlva +objective.enemyairunits = [accent]Az ellenséges légi egységek gyártása elkezdődik: [lightgray]{0}[] mp múlva +objective.destroycore = [accent]Semmisítsd meg az ellenséges támaszpontot +objective.command = [accent]Irányítsd az egységeket +objective.nuclearlaunch = [accent]⚠ Nukleáris kilövés észlelve: [lightgray]{0} + +announce.nuclearstrike = [red]⚠ BEÉRKEZŐ NUKLEÁRIS CSAPÁS ⚠\n[lightgray]Azonnal építs tartalék támaszpontokat! loadout = Rakomány resources = Nyersanyagok -resources.max = Max -bannedblocks = Tiltott blokkok -objectives = Objectives -bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks -bannedunits.whitelist = Banned Units As Whitelist -bannedblocks.whitelist = Banned Blocks As Whitelist +resources.max = Maximum +bannedblocks = Tiltott épületek +objectives = Feladatok +bannedunits = Tiltott egységek +bannedunits.whitelist = Tiltott egységek fehérlistára +bannedblocks.whitelist = Tiltott blokkok fehérlistára addall = Összes hozzáadása -launch.from = Indítás: [accent]{0} -launch.capacity = Launching Item Capacity: [accent]{0} -launch.destination = Irány: {0} +launch.from = Indítás a(z) [accent]{0} szektorból +launch.capacity = Nyersanyag-kapacitás az indításkor: [accent]{0} +launch.destination = Úticél: {0} configure.invalid = A mennyiségnek 0 és {0} között kell lennie. add = Hozzáadás... -guardian = Guardian +guardian = Őrző -connectfail = [scarlet]Csatlakozási hiba:\n\n[accent]{0} -error.unreachable = A szervert nem lehet elérni.\nBiztosan jól írtad be a címet? +connectfail = [scarlet]Kapcsolódási hiba:\n\n[accent]{0} +error.unreachable = A kiszolgálót nem lehet elérni.\nBiztosan jól írtad be a címet? error.invalidaddress = Érvénytelen cím. -error.timedout = Időtúllépés!\nGyőződj meg róla, hogy a port forwarding be van kapcsolva a host gépen és a cím helyes! -error.mismatch = Packet error:\nLehetséges kliens/szerver verzió eltérés.\nGyőződj meg róla, hogy te és a host is a Mindustry legfrissebb verzióját használjátok! -error.alreadyconnected = Már csatlakozva vagy. -error.mapnotfound = A map fájl nem található! +error.timedout = Időtúllépés!\nGyőződj meg róla, hogy a porttovábbítás be van kapcsolva a kiszolgálógépen, és a cím helyes! +error.mismatch = Csomaghiba:\nLehetséges kliens- vagy kiszolgálóverzió-eltérés.\nGyőződj meg róla, hogy te és a kiszolgáló is a Mindustry legfrissebb verzióját használjátok! +error.alreadyconnected = Már kapcsolódva vagy. +error.mapnotfound = A pályafájl nem található! error.io = Internet I/O hiba. -error.any = Ismeretlen internet hiba. -error.bloom = Failed to initialize bloom.\nYour device may not support it. +error.any = Ismeretlen hálózati hiba. +error.bloom = A bloom hatás előkészítése nem sikerült.\nElőfordulhat, hogy az eszköz nem támogatja. weather.rain.name = Eső -weather.snow.name = Hóesés +weather.snowing.name = Hóesés weather.sandstorm.name = Homokvihar weather.sporestorm.name = Spóravihar weather.fog.name = Köd -campaign.playtime = \uf129 [lightgray]Sector Playtime: {0} -campaign.complete = [accent]Congratulations.\n\nThe enemy on {0} has been defeated.\n[lightgray]The final sector has been conquered. -sectorlist = Sectors -sectorlist.attacked = {0} under attack +campaign.playtime = \uf129 [lightgray]Játékidő a szektorban: {0} +campaign.complete = [accent]Gratulálunk.\n\nAz ellenség legyőzve a(z) {0} bolygón.\n[lightgray]Az utolsó szektor meghódítása megtörtént. + +sectorlist = Szektorok +sectorlist.attacked = {0} támadás alatt sectors.unexplored = [lightgray]Felderítetlen sectors.resources = Nyersanyagok: -sectors.production = Gyártás: +sectors.production = Termelés: sectors.export = Export: sectors.import = Import: sectors.time = Idő: sectors.threat = Fenyegetés: -sectors.wave = Hullámok: -sectors.stored = Tárolt: +sectors.wave = Hullám: +sectors.stored = Tárolt nyersanyagok: sectors.resume = Folytatás sectors.launch = Indítás sectors.select = Kiválasztás -sectors.nonelaunch = [lightgray]none (sun) +sectors.nonelaunch = [lightgray]semmi (nap) sectors.rename = Szektor átnevezése sectors.enemybase = [scarlet]Ellenséges bázis sectors.vulnerable = [scarlet]Sebezhető -sectors.underattack = [scarlet]Támadás alatt! [accent]{0}% sérült -sectors.underattack.nodamage = [scarlet]Uncaptured +sectors.underattack = [scarlet]Támadás alatt! [accent]{0}%-ban sérült +sectors.underattack.nodamage = [scarlet]Nincs meghódítva sectors.survives = [accent]Túlél {0} hullámot sectors.go = Utazás -sector.abandon = Abandon -sector.abandon.confirm = This sector's core(s) will self-destruct.\nContinue? -sector.curcapture = Szektor megszerezve +sector.abandon = Elhagyás +sector.abandon.confirm = Ennek a szektornak a támaszpontjai önmegsemmisítésre kerülnek.\nFolytatod? +sector.curcapture = A szektor elfoglalva sector.curlost = A szektor elveszett -sector.missingresources = [scarlet]Nincs elég nyersanyag +sector.missingresources = [scarlet]Nincs elég nyersanyag sector.attacked = A(z) [accent]{0}[white] szektor támadás alatt áll! sector.lost = A(z) [accent]{0}[white] szektor elveszett! -#note: the missing space in the line below is intentional -sector.captured = A(z) [accent]{0}[white] szektor megvédve! -sector.changeicon = Change Icon -sector.noswitch.title = Unable to Switch Sectors -sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] -sector.view = View Sector +sector.capture = A(z) [accent]{0}[white] szektor elfoglalva! +sector.capture.current = A szektor elfoglalva! +sector.changeicon = Ikon módosítása +sector.noswitch.title = A szektorváltás nem lehetséges +sector.noswitch = Nem válthatsz szektort, amíg egy meglévő szektor támadás alatt áll.\n\nSzektor: [accent]{0}[] a(z) [accent]{1}[] bolygón +sector.view = A szektor megtekintése threat.low = Alacsony threat.medium = Közepes threat.high = Magas threat.extreme = Extrém -threat.eradication = Felszámolás +threat.eradication = Irtózatos planets = Bolygók @@ -731,531 +805,607 @@ planet.serpulo.name = Serpulo planet.erekir.name = Erekir planet.sun.name = Nap -sector.impact0078.name = Impact 0078 -sector.groundZero.name = Ground Zero -sector.craters.name = The Craters -sector.frozenForest.name = Frozen Forest -sector.ruinousShores.name = Ruinous Shores -sector.stainedMountains.name = Stained Mountains -sector.desolateRift.name = Desolate Rift -sector.nuclearComplex.name = Nuclear Production Complex -sector.overgrowth.name = Overgrowth -sector.tarFields.name = Tar Fields -sector.saltFlats.name = Salt Flats -sector.fungalPass.name = Fungal Pass -sector.biomassFacility.name = Biomass Synthesis Facility -sector.windsweptIslands.name = Windswept Islands -sector.extractionOutpost.name = Extraction Outpost -sector.planetaryTerminal.name = Planetary Launch Terminal -sector.coastline.name = Coastline -sector.navalFortress.name = Naval Fortress +sector.impact0078.name = 0078-as becsapódás +sector.groundZero.name = Becsapódási pont +sector.craters.name = A kráterek +sector.frozenForest.name = Fagyott erdő +sector.ruinousShores.name = Romos partok +sector.stainedMountains.name = Foltos hegyek +sector.desolateRift.name = Kietlen hasadék +sector.nuclearComplex.name = Nukleáris termelési komplexum +sector.overgrowth.name = Túlburjánzás +sector.tarFields.name = Kátránymezők +sector.saltFlats.name = Sós síkságok +sector.fungalPass.name = Gombahágó +sector.biomassFacility.name = Biomassza szintetizáló létesítmény +sector.windsweptIslands.name = Szélfútta szigetek +sector.extractionOutpost.name = Kivonási helyőrség +sector.planetaryTerminal.name = Bolygó körüli indítóterminál +sector.coastline.name = Partvonal +sector.navalFortress.name = Tengerészeti erőd +sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges fenyegetés. Kevés nyersanyag.\nGyűjts annyi rezet és ólmot, amennyit csak tudsz.\nHaladj tovább. +sector.frozenForest.description = Még itt, a hegyekhez közel is elterjedtek a spórák. A fagypont alatti hőmérséklet nem tudja örökké fogva tartani őket.\n\nFedezd fel az elektromosság erejét! Építs égetőerőműveket! Tanuld meg a foltozók használatát! +sector.saltFlats.description = A sivatag peremén terülnek el a Sós síkságok. Kevés nyersanyag található errefelé.\n\nAz ellenség egy raktárkomplexumot létesített itt. Pusztítsd el a támaszpontjukat! Kő kövön ne maradjon! +sector.craters.description = Víz gyűlt össze ebben a kráterben, amely régi háborúk emlékét őrzi. Szerezd vissza a területet. Gyűjts homokot! Olvassz üveget! Szivattyúzz vizet, hogy lehűtsd a fúróidat és lövegtornyaidat. +sector.ruinousShores.description = A pusztaság mögött a partvonal húzódik. Valaha ezen a helyen egy partvédelmi rendszer állt. Nem sok minden maradt belőle. Csak a legalapvetőbb védelmi szerkezetek maradtak érintetlenül, minden más csak törmelék lett.\nFolytasd a terjeszkedést! Fedezd fel újra a technológiát! +sector.stainedMountains.description = Mélyebben a szárazföldön fekszenek a hegyek, a spóráktól még érintetlenül.\nTermeld ki a bőséges titán készleteket a körzetben. Tanuld meg felhasználni!.\n\nAz ellenség itt nagyobb létszámban van jelen. Ne hagyj nekik időt, hogy a legerősebb egységeiket hadba állíthassák! +sector.overgrowth.description = Ez a terület közelebb esik a spórák forrásához, a spórák már kinőtték.\nAz ellenség egy helyőrséget létesített itt. Építs Mace egységeket! Pusztítsd el a bázist! +sector.tarFields.description = Egy olajtermelő övezet peremvidéke a hegyek és a sivatag között. Egy azon kevés szektorok közül, ahol még hasznosítható kátránykészletek találhatóak.\nBár a terület elhagyatott, veszélyes ellenséges erők fészkelnek a közelben. Ne becsüld alá őket!\n\n[lightgray]Fedezd fel az olajfeldolgozási lehetőségeket, ha tudod! +sector.desolateRift.description = Egy extrém veszélyes zóna. Nyersanyagokban gazdag, de szűkös a hely. Magas a kockázat. Építs szárazföldi és légvédelmet, amint csak tudsz. Ne tévesszen meg a hosszú szünet az ellenség támadásai között. +sector.nuclearComplex.description = Egy néhai tóriumkitermelő és feldolgozó létesítmény, romokban.\n[lightgray]Fedezd fel a tóriumot és a sokrétű felhasználását!\n\nAz ellenség nagy létszámban van jelen, és folyamatosan megfigyelés alatt tartják a környéket. +sector.fungalPass.description = Átmeneti terület a magas hegyek és a mélyebben fekvő, spórák uralta lapály között. Egy kisebb ellenséges megfigyelő állomás található itt.\nSemmisítsd meg!\nHasználj Dagger és Crawler egységeket! Pusztítsd el a két támaszpontot! +sector.biomassFacility.description = A spórák származási helye. Ebben a létesítményben fejlesztették ki őket, és eredetileg itt is gyártották őket.\nFedezd fel az itt található technológiákat. Tenyészd ki a spórákat üzemanyag és műanyagok gyártásához.\n\n[lightgray]A létesítmény pusztulása nyomán a spórák elszabadultak és szétszóródtak a légkörben. A helyi ökoszisztémában semmi sem tudta felvenni a versenyt egy ennyire invazív életformával. +sector.windsweptIslands.description = Távolabb, a partvonalon túl fekszik ez az elszigetelt szigetcsoport. A feljegyzések szerint egykor [accent]műanyagot[] gyártottak itt.\n\nVerd vissza az ellenség vízi egységeit! Állíts fel egy bázist a szigeteken! Fedezd fel az itt talált gyárakat! +sector.extractionOutpost.description = Egy távoli ellenséges támaszpont, amelyet az ellenség azért épített, hogy nyersanyagokat juttasson el más szektorokba.\n\nA szektorok közötti szállítási technológia elengedhetetlen a további hódításhoz. Pusztítsd el a bázist. Fejleszd ki a kilövőállást. +sector.impact0078.description = Itt nyugszanak az ebbe a csillagrendszerbe érkező első csillagközi űrhajó maradványai.\n\nMents ki a romok alól mindent amit csak tudsz. Fedezd fel az épen maradt technológiákat. +sector.planetaryTerminal.description = A végső célpont.\n\nEzen a vízparti bázison egy olyan építmény található, amely képes támaszpontokat kilőni a közeli bolygókra. Rendkívül jól őrzik.\n\nKészíts vízi egységeket! Ártalmatlanítsd az ellenséget, amilyen gyorsan csak tudod! Találd meg a kilövőszerkezetet! +sector.coastline.description = Ezen a helyen egy haditengerészeti egység technológiájának maradványait azonosították. Verd vissza az ellenséges támadásokat, foglald el ezt a szektort, és szerezd meg a technológiát. +sector.navalFortress.description = Az ellenség bázist létesített egy távoli, természetes erődítményes szigeten. Pusztítsd el ezt az előőrsöt. Szerezd meg a fejlett hadihajó-technológiájukat, és fejleszd ki te is. -sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges fenyegetés. Némi nyersanyag.\nGyűjts annyi rezet és ólmot, amennyit csak tudsz.\nHaladj tovább. -sector.frozenForest.description = Még itt, a hegyekhez közel is elterjedtek a spórák. A fagypont alatti hőmérséklet nem tudja örökké fogva tartani őket.\n\nFedezd fel az lelktromosság erejét! Építs combustion generatort! Használj mendert! -sector.saltFlats.description = A sivatag peremén terül el a Salt Flats néven ismert síkság. Kevés nyersanyag található errefelé.\n\nAz ellenség egy raktárkomplexumot létesített itt. Pusztítsd el a magot! Kő kövön ne maradjon! -sector.craters.description = Régen háborúk folytak ezen a helyen és csak egy kráter maradt utánuk. De szerencsédre az évezredek alatt feltöltődött vízzel így letudod hűteni vele a drilljeidet. Persze előtte használd a homokot, hogy legyen üveged! -sector.ruinousShores.description = A romokon túl fekszik a vízpart. Egykor itt állt egy parti védelmi vonal. Mára nem sok maradt belőle. Csak a legegyszerűbb védelmi épületek maradtak sértetlenek, bármi más csak törmelékként van jelen.\nFolytasd a terjeszkedést! Fedezd fel a régi technológiákat! -sector.stainedMountains.description = Mélyebben benn a szárazföldön fekszenek a hegyek, a spóráktól még érintetlenül.\nTermeld ki a bőséges titanium készleteket a körzetben. Tanuld meg felhasználni!.\n\nAz ellenség itt nagyobb létszámban van jelen. Ne hagyj nekik időt, hogy a legerősebb egységeiket hadba állíthassák! -sector.overgrowth.description = Ez a terület közelebb esik a spórák forrásához, a spórák már kinőtték.\nAz ellenség egy helyőrséget létesített itt. Építs Mace egységeket! Pusztítsd el! -sector.tarFields.description = Egy olajtermelő övezet peremvidéke a hegyek és a sivatag között. Egy a kevés térség közül, ahol még hasznosítható kátránykészletek találhatók.\nBár a terület elhagyatott, veszélyes ellenséges erők fészkelnek a közelben. Ne becsüld alá őket!\n\n[lightgray]Fedezd fel az olajfeldolgozási lehetőségeket, ha tudod! -sector.desolateRift.description = Egy extrém veszélyes zóna. Nyersanyagokban gazdag, de szűkös a hely. Magas kockázat. Hagyd el, amint lehet! Ne tévesszen meg a hosszú szünet az ellenség támadásai között! -sector.nuclearComplex.description = Egy néhai létesítmény thorium kitermelésére és feldolgozására, romokban.\n[lightgray] Fedezd fel a thoriumot és sokrétű felhasználását!\n\nAz ellenség nagy létszámban van jelen, és folyamatosan megfigyelés alatt tartják a környéket. -sector.fungalPass.description = Átmenet a magas hegyek és a mélyebben fekvő, spórák uralta lapály között. Egy kisebb ellenséges megfigyelő állomás található itt.\nSemmisítsd meg!.\nHasználj Dagger és Crawler egységeket! Pusztítsd el a két magot! -sector.biomassFacility.description = A spórák származási helye. Ebben a létesítményben fejlesztették ki őket és eredetileg itt került sor a gyártásukra.\nFedezd fel az itt található technológiákat! Használd a spórákat üzemanyag és műanyagok gyártására!\n\n[lightgray]A létesítmény pusztulása nyomán a spórák elszabadultak. A helyi ökoszisztémában semmi sem tudta felvenni a versenyt egy ennyire invazív életformával. -sector.windsweptIslands.description = Távolabb a partvonalon túl fekszik ez az elszigetelt szigetcsoport. Feljegyzések szerint egykor [accent]Plastanium[] gyártása zajlott itt.\n\nVerd vissza az ellenség vízi egységeit! Állíts fel egy bázist a szigeteken! Fedezd fel az itt talált gyárakat! -sector.extractionOutpost.description = Távoli ellenséges támaszpont, fő célja nyersanyagok továbbítása másik szektorokba.\n\n A szektorok közötti szállítás elengedhetetlen a további előrehaladáshoz. Pusztítsd el a bázist! Tanulmányozd a Launch Padot! -sector.impact0078.description = Itt fekszenek a roncsai az első csillagközi űrhajónak, amely a csillagrendszerbe érkezett.\n\nMents ki a romokból amit csak tudsz! Fedezd fel az épen maradt technológiákat. -sector.planetaryTerminal.description = A végső célpont.\n\nEzen a vízparti bázison található egy olyan építmény, amely képes magokat kilőni közeli bolygókra. Folyamatosan őrzik.\n\nKészíts vízi egységeket! Ártalmatlanítsd az ellenséget amilyen gyorsan tudod! Fedezd fel a kilövőszerkezetet! -sector.coastline.description = Remnants of naval unit technology have been detected at this location. Repel the enemy attacks, capture this sector, and acquire the technology. -sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. -sector.onset.name = The Onset -sector.aegis.name = Aegis -sector.lake.name = Lake -sector.intersect.name = Intersect -sector.atlas.name = Atlas -sector.split.name = Split -sector.basin.name = Basin -sector.marsh.name = Marsh -sector.peaks.name = Peaks -sector.ravine.name = Ravine -sector.caldera-erekir.name = Caldera -sector.stronghold.name = Stronghold -sector.crevice.name = Crevice -sector.siege.name = Siege -sector.crossroads.name = Crossroads -sector.karst.name = Karst -sector.origin.name = Origin -sector.onset.description = Commence the conquest of Erekir. Gather resources, produce units, and begin researching technology. +sector.onset.name = A kezdet +sector.aegis.name = Égisz +sector.lake.name = Tó +sector.intersect.name = Metszéspont +sector.atlas.name = Atlasz +sector.split.name = Hasadék +sector.basin.name = Medence +sector.marsh.name = Mocsár +sector.peaks.name = Csúcsok +sector.ravine.name = Szurdok +sector.caldera-erekir.name = Kaldera +sector.stronghold.name = Erődítmény +sector.crevice.name = Repedés +sector.siege.name = Ostrom +sector.crossroads.name = Keresztutak +sector.karst.name = Karszt +sector.origin.name = Eredet -sector.aegis.description = This sector contains deposits of tungsten.\nResearch the [accent]Impact Drill[] to mine this resource, and destroy the enemy base in the area. -sector.lake.description = This sector's slag lake greatly limits viable units. A hover unit is the only option.\nResearch the [accent]ship fabricator[] and produce an [accent]elude[] unit as soon as possible. -sector.intersect.description = Scans suggest that this sector will be attacked from multiple sides soon after landing.\nSet up defenses quickly and expand as soon as possible.\n[accent]Mech[] units will be required for the area's rough terrain. -sector.atlas.description = This sector contains varied terrain and will require a variety of units to attack effectively.\nUpgraded units may also be necessary to get past some of the tougher enemy bases detected here.\nResearch the [accent]Electrolyzer[] and the [accent]Tank Refabricator[]. -sector.split.description = The minimal enemy presence in this sector makes it perfect for testing new transport tech. -sector.basin.description = Large enemy presence detected in this sector.\nBuild units quickly and capture enemy cores to gain a foothold. -sector.marsh.description = This sector has an abundance of arkycite, but has limited vents.\nBuild [accent]Chemical Combustion Chambers[] to generate power. -sector.peaks.description = The mountainous terrain in this sector make most units useless. Flying units will be required.\nBe aware of enemy anti-air installations. It may be possible to disable some of these installations by targeting their supporting buildings. -sector.ravine.description = No enemy cores detected in the sector, although it's an important transportation route for the enemy. Expect variety of enemy forces.\nProduce [accent]surge alloy[]. Construct [accent]Afflict[] turrets. -sector.caldera-erekir.description = The resources detected in this sector are scattered across several islands.\nResearch and deploy drone-based transportation. -sector.stronghold.description = The large enemy encampment in this sector guards significant deposits of [accent]thorium[].\nUse it to develop higher tier units and turrets. -sector.crevice.description = The enemy will send fierce attack forces to take out your base in this sector.\nDeveloping [accent]carbide[] and the [accent]Pyrolysis Generator[] may be imperative for survival. -sector.siege.description = This sector features two parallel canyons that will force a two-pronged attack.\nResearch [accent]cyanogen[] to gain the capability to create even stronger tank units.\nCaution: enemy long-range missiles have been detected. The missiles may be shot down before impact. -sector.crossroads.description = The enemy bases in this sector have been established in varying terrain. Research different units to adapt.\nAdditionally, some bases are protected by shields. Figure out how they are powered. -sector.karst.description = This sector is rich in resources, but will be attacked by the enemy once a new core lands.\nTake advantage of the resources and research [accent]phase fabric[]. -sector.origin.description = The final sector with a significant enemy presence.\nNo probable research opportunities remain - focus solely on destroying all enemy cores. -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.electrified.name = Electrified -status.spore-slowed.name = Spore Slowed -status.tarred.name = Tarred -status.overdrive.name = Overdrive -status.overclock.name = Overclock -status.shocked.name = Shocked -status.blasted.name = Blasted -status.unmoving.name = Unmoving -status.boss.name = Guardian +sector.onset.description = Kezdd meg az Erekir meghódítását. Gyűjts nyersanyagokat, állíts elő egységeket, és kezdd el a technológiai fejlesztéseket. +sector.aegis.description = Ez a szektor volfrám-lelőhelyeket tartalmaz.\nFejleszd ki az [accent]Ütvefúrót[], hogy ki tudd bányászni ezt a nyersanyagot, és pusztítsd el az ellenséges bázist a szektorban. +sector.lake.description = Az ebben a szektorban lévő salakos tó nagymértékben korlátozza a használható egységeket. A lebegőegységek használata az egyetlen lehetőség.\nFejleszd ki a [accent]Repülőgépgyártót[], és állíts elő egy [accent]Elude[] egységet, amilyen hamar csak lehet. +sector.intersect.description = A letapogatások arra utalnak, hogy ezt a szektort a leszállás után hamarosan több oldalról is megtámadják.\nÁllítsd fel gyorsan a védelmedet, és terjeszkedj minél hamarabb.\n[accent]Mech[] egységekre lesz szükség a terület zord terepviszonyai miatt. +sector.atlas.description = Ez a szektor változatos terepet tartalmaz, és az ütőképes támadáshoz többféle egységre lesz szükség.\nAz itt felfedezett ellenséges bázisok némelyikén való átjutáshoz is továbbfejlesztett egységekre lehet szükség.\nFejleszd ki az [accent]Elektrolizátort[] és a [accent]Tankújratervezőt[]. +sector.split.description = A minimális ellenséges jelenlét miatt ez a szektor tökéletes az új nyersanyagszállító technológiák tesztelésére. +sector.basin.description = Jelentős ellenséges jelenlét lett érzékelve ebben a szektorban.\nÉpíts gyorsan egységeket, és foglald el az ellenséges támaszpontokat, hogy megvethesd a lábad. +sector.marsh.description = Ebben a szektorban rengeteg arkicit található, de kevés a kürtő.\nÉpíts [accent]Kémiai égetőkamrát[] az áramfejlesztéshez. +sector.peaks.description = A hegyvidéki terep ebben a szektorban a legtöbb egységet használhatatlanná teszi. Repülő egységekre lesz szükség.\nVigyázz az ellenséges légvédelmi létesítményekkel. Lehetséges, hogy az ilyen létesítményeket hatástalanítani lehet a támogató épületeik célba vételével. +sector.ravine.description = A szektorban nem észlelhető ellenséges támaszpont, de ez egy fontos szállítási útvonal az ellenség számára, így változatos ellenséges erőkkel kell számolni.\nTermelj [accent]elektrometált[]. Építs [accent]Afflict[] lövegtornyokat. +sector.caldera-erekir.description = Ebben a szektorban a feltárható nyersanyagok több szigeten szétszóródva találhatóak.\nFejleszd ki és helyezd üzembe a drónalapú szállítmányozást. +sector.stronghold.description = A nagy ellenséges tábor ebben a szektorban jelentős mennyiségű [accent]tóriumot[] őriz.\nHasználd magasabb szintű egységek és lövegtornyok fejlesztésére. +sector.crevice.description = Ebben a szektorban az ellenség kegyetlen támadóerőket fog mozgósítani, hogy kiiktassa a bázisodat.\nA [accent]karbid[] és a [accent]Pirolízis-erőmű[] kifejlesztése nélkülözhetetlen lehet a túléléshez. +sector.siege.description = Ebben a szektorban két párhuzamos kanyon található, amelyek két irányból érkező támadásokat tesznek lehetővé.\nFejleszd ki a [accent]diciánt[], hogy még erősebb tankegységeket hozhass létre.\nVigyázat: ellenséges, nagy hatótávolságú rakéták észlelve. A rakéták a becsapódásuk előtt megsemmisíthetőek. +sector.crossroads.description = Az ellenséges támaszpontok ebben a szektorban változó terepviszonyok között alakultak ki. Ahhoz, hogy alkalmazkodni tudj, fejlessz ki különböző egységeket.\nEzenkívül egyes bázisokat pajzsok védenek. Találd ki, hogyan táplálják őket. +sector.karst.description = Ez a szektor gazdag a nyersanyagokban, de amint egy új támaszpont leszáll, az ellenség megtámadja azt.\nHasználd ki a nyersanyagokat és fedezd fel a [accent]tóritkvarcot[]. +sector.origin.description = Az utolsó szektor, jelentős ellenséges jelenléttel.\nNem valószínű, hogy maradtak további fejlesztési lehetőségek – koncentrálj az ellenséges támaszpontok elpusztítására. + +status.burning.name = Égő +status.freezing.name = Fagyos +status.wet.name = Nedves +status.muddy.name = Sáros +status.melting.name = Olvadó +status.sapped.name = Kiszáradt +status.electrified.name = Elektromos +status.spore-slowed.name = Spórával lassított +status.tarred.name = Kátrányozott +status.overdrive.name = Túlhajtás +status.overclock.name = Túlhúzás +status.shocked.name = Sokkolt +status.blasted.name = Felrobbant +status.unmoving.name = Mozdulatlan +status.boss.name = Őrző settings.language = Nyelvek -settings.data = Játék adatok +settings.data = Játékadatok settings.reset = Alapértelmezett -settings.rebind = Módosítás -settings.resetKey = Visszaállítás +settings.rebind = Átállítás +settings.resetKey = Vissza-\nállítás settings.controls = Irányítás settings.game = Játék settings.sound = Hangok settings.graphics = Grafika -settings.cleardata = Játék adatok törlése... -settings.clear.confirm = Biztosan törlöd ezeket az adatokat?\n A műveletet nem lehet visszavonni! -settings.clearall.confirm = [scarlet] FIGYELEM! []\n Ez törli az összes adatot, beleértve a mentéseket, Mapokat, felfedezéseket és a billentyű beállításokat.\nAz 'OK' gomb megnyomásával a játék minden adatot töröl és automatikusan kilép. +settings.cleardata = Játékadatok törlése... +settings.clear.confirm = Biztosan törlöd ezeket az adatokat?\nA műveletet nem lehet visszavonni! +settings.clearall.confirm = [scarlet]FIGYELEM![]\nEz törli az összes adatot, beleértve a mentéseket, pályákat, felfedezéseket és a billentyűbeállításokat.\nAz „OK” gomb megnyomásával a játék minden adatot töröl, és automatikusan kilép. settings.clearsaves.confirm = Biztosan törlöd az összes mentést? settings.clearsaves = Mentések törlése -settings.clearresearch = Kutatás törlése -settings.clearresearch.confirm = Biztosan törlöd az összes kutatást? -settings.clearcampaignsaves = Kampány mentések törlése -settings.clearcampaignsaves.confirm = Biztosan törlöd az összes kampány mentést? -paused = [accent]< Megállítva > +settings.clearresearch = Fejlesztések törlése +settings.clearresearch.confirm = Biztosan törlöd az összes fejlesztést? +settings.clearcampaignsaves = Hadjáratmentések törlése +settings.clearcampaignsaves.confirm = Biztosan törlöd az összes hadjáratmentést? +paused = [accent]< Szünet > clear = Törlés banned = [scarlet]Kitiltva -unsupported.environment = [scarlet]Unsupported Environment +unsupported.environment = [scarlet]Nem támogatott környezet yes = Igen no = Nem -info.title = Infó +info.title = Információ error.title = [scarlet]Hiba történt error.crashtitle = Hiba történt unit.nobuild = [scarlet]Az egység nem tud építeni lastaccessed = [lightgray]Utoljára megtekintve: {0} -lastcommanded = [lightgray]Last Commanded: {0} +lastcommanded = [lightgray]Utoljára irányítva: {0} block.unknown = [lightgray]??? -stat.showinmap = -stat.description = Célja +stat.showinmap = +stat.description = Rendeltetés stat.input = Bemenet stat.output = Kimenet -stat.maxefficiency = Max Efficiency -stat.booster = Gyorsító +stat.maxefficiency = Maximális hatékonyság +stat.booster = Erősítő stat.tiles = Szükséges talaj stat.affinities = Módosító körülmények -stat.opposites = Opposites -stat.powercapacity = Elektromos kapacitás -stat.powershot = Áram/Lövés +stat.opposites = Ellentettek +stat.powercapacity = Maximális tárolási kapacitás +stat.powershot = Áram/lövés stat.damage = Sebzés stat.targetsair = Repülő célpontok stat.targetsground = Földi célpontok -stat.itemsmoved = Hozam -stat.launchtime = Kilövések közti idő -stat.shootrange = Hatótáv +stat.itemsmoved = Szállítási sebesség +stat.launchtime = Kilövések közötti idő +stat.shootrange = Hatótávolság stat.size = Méret stat.displaysize = Felbontás -stat.liquidcapacity = Folyadék kapacitás -stat.powerrange = Áram hatótáv -stat.linkrange = Kapcsolat hatótáv -stat.instructions = Műveletek -stat.powerconnections = Max kapcsolat +stat.liquidcapacity = Folyadékkapacitás +stat.powerrange = Hatótávolság +stat.linkrange = Kapcsolat hatótávolsága +stat.instructions = Utasítások +stat.powerconnections = Max. kapcsolatok stat.poweruse = Áramhasználat -stat.powerdamage = Áram/Sebzés -stat.itemcapacity = Item kapacitás -stat.memorycapacity = Memória méret +stat.powerdamage = Áram/sebzés +stat.itemcapacity = Nyersanyag-kapacitás +stat.memorycapacity = Memóriakapacitás stat.basepowergeneration = Alap áramtermelés -stat.productiontime = Gyártás hossza -stat.repairtime = Teljes javítás hossza -stat.repairspeed = Repair Speed +stat.productiontime = Gyártási idő +stat.repairtime = Teljes javítási idő +stat.repairspeed = Javítási sebesség stat.weapons = Fegyverek -stat.bullet = Töltény -stat.moduletier = Module Tier -stat.unittype = Unit Type +stat.bullet = Lövedék +stat.moduletier = Modul szintje +stat.unittype = Egység típusa stat.speedincrease = Gyorsítás -stat.range = Hatótáv -stat.drilltier = Kitermelhető -stat.drillspeed = Alap kitermelési sebesség -stat.boosteffect = Boost hatása -stat.maxunits = Maximális aktív egység +stat.range = Hatótávolság +stat.drilltier = Kitermelhetőek +stat.drillspeed = Alap termelési sebesség +stat.boosteffect = Erősítés hatása +stat.maxunits = Max. aktív egységek stat.health = Életpontok -stat.armor = Armor -stat.buildtime = Építés hossza -stat.maxconsecutive = Maximum egymást követő -stat.buildcost = Építés ára +stat.armor = Páncél +stat.buildtime = Építési időtartam +stat.maxconsecutive = Max. egymást követő +stat.buildcost = Építési költség stat.inaccuracy = Pontatlanság -stat.shots = Lövés -stat.reload = Lövés/Másodperc -stat.ammo = Lövedék -stat.shieldhealth = Pajzs élete -stat.cooldowntime = Újratöltés hossza +stat.shots = Lövések +stat.reload = Tüzelési sebesség +stat.ammo = Lőszer +stat.shieldhealth = Pajzs életereje +stat.cooldowntime = Újratöltés időtartama stat.explosiveness = Robbanékonyság -stat.basedeflectchance = Base Deflect Chance +stat.basedeflectchance = Alap hárítási esély stat.lightningchance = Villámlás esélye stat.lightningdamage = Villámlás sebzése stat.flammability = Éghetőség stat.radioactivity = Radioaktivitás -stat.charge = Charge +stat.charge = Töltés stat.heatcapacity = Hőkapacitás stat.viscosity = Viszkozitás stat.temperature = Hőmérséklet stat.speed = Sebesség stat.buildspeed = Építési sebesség -stat.minespeed = Kitermelési sebesség -stat.minetier = Kitermelési szint -stat.payloadcapacity = Teher kapacitás +stat.minespeed = Termelési sebesség +stat.minetier = Termelési szint +stat.payloadcapacity = Rakománykapacitás stat.abilities = Képességek -stat.canboost = Can Boost +stat.canboost = Erősíthető stat.flying = Repül -stat.ammouse = Lövedék használat -stat.damagemultiplier = Damage Multiplier -stat.healthmultiplier = Health Multiplier -stat.speedmultiplier = Speed Multiplier -stat.reloadmultiplier = Reload Multiplier -stat.buildspeedmultiplier = Build Speed Multiplier -stat.reactive = Reacts -stat.immunities = Immunities -stat.healing = Healing +stat.ammouse = Lőszerhasználat +stat.ammocapacity = Lőszerkapacitás +stat.damagemultiplier = Sebzésszorzó +stat.healthmultiplier = Életerőszorzó +stat.speedmultiplier = Sebességszorzó +stat.reloadmultiplier = Újratöltési szorzó +stat.buildspeedmultiplier = Építési sebességszorzó +stat.reactive = Reakciók +stat.immunities = Immunitások +stat.healing = Gyógyulás ability.forcefield = Erőtér +ability.forcefield.description = Erőteret vetít ki, mely elnyeli a lövedékeket ability.repairfield = Javító mező -ability.statusfield = Status Field -ability.unitspawn = {0} Gyár -ability.shieldregenfield = Pajzsos regeneráló mező -ability.movelightning = Világítás -ability.shieldarc = Shield Arc -ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets -bar.onlycoredeposit = Only Core Depositing Allowed +ability.repairfield.description = Megjavítja a közeli egységeket +ability.statusfield = Állapotmező +ability.statusfield.description = Állapothatást alkalmaz a közeli egységekre +ability.unitspawn = Gyár +ability.unitspawn.description = Egységeket gyárt +ability.shieldregenfield = Pajzsregeneráló mező +ability.shieldregenfield.description = Regenerálja a közeli egységek pajzsát +ability.movelightning = Villámcsapás +ability.movelightning.description = Mozgás közben villámokat bocsát ki +ability.armorplate = Páncéllemez +ability.armorplate.description = Csökkenti a kapott sebzést lövés közben +ability.shieldarc = Pajzs ív +ability.shieldarc.description = Erőteret vetít ki egy ívben, mely elnyeli a lövedékeket +ability.suppressionfield = Javítás elnyomása +ability.suppressionfield.description = Leállítja a közeli javítóépületeket +ability.energyfield = Energiamező +ability.energyfield.description = Megrázza a közeli ellenségeket +ability.energyfield.healdescription = Megrázza a közeli ellenségeket, és gyógyítja a szövetségeseket +ability.regen = Regeneráció +ability.regen.description = Idővel regenerálja a saját életerejét +ability.liquidregen = Folyadékelnyelés +ability.liquidregen.description = Folyadékot nyel el, hogy gyógyítsa magát +ability.spawndeath = Szétesés +ability.spawndeath.description = Megsemmisülésekor egységeket bocsát ki +ability.liquidexplode = Szétömlés +ability.liquidexplode.description = Megsemmisülésekor folyadék ömlik ki belőle -bar.drilltierreq = Erősebb Drill szükséges -bar.noresources = Nincs elég nyersanyag -bar.corereq = Core Base Required -bar.corefloor = Core Zone Tile Required -bar.cargounitcap = Cargo Unit Cap Reached -bar.drillspeed = Kitermelés: {0}/s -bar.pumpspeed = Kitermelés: {0}/s -bar.efficiency = Hatékonyság: {0}% -bar.boost = Boost: +{0}% -bar.powerbalance = Áram: {0}/s -bar.powerstored = Tárolt: {0}/{1} -bar.poweramount = Áram: {0} +ability.stat.firingrate = [stat]{0}/mp[lightgray] tüzelési sebesség +ability.stat.regen = [stat]{0}[lightgray] életerő/mp +ability.stat.shield = [stat]{0}[lightgray] pajzs +ability.stat.repairspeed = [stat]{0}/mp[lightgray] javítási sebesség +ability.stat.slurpheal = [stat]{0}[lightgray] életerő/folyadékegység +ability.stat.cooldown = [stat]{0} mp[lightgray] újratöltődés +ability.stat.maxtargets = [stat]{0}[lightgray] max. célpont +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] javítási mennyiség (azonos típusnál) +ability.stat.damagereduction = [stat]{0}%[lightgray] sebzéscsökkentés +ability.stat.minspeed = [stat]{0} csempe/mp[lightgray] min. sebesség +ability.stat.duration = [stat]{0} mp[lightgray] időtartam +ability.stat.buildtime = [stat]{0} mp[lightgray] építési idő + +bar.onlycoredeposit = Csak a támaszpont elhelyezése megengedett +bar.drilltierreq = Erősebb fúró szükséges +bar.noresources = Hiányzó nyersanyagok +bar.corereq = Támaszpont szükséges +bar.corefloor = Támaszpont zónacsempe szükséges +bar.cargounitcap = A rakományszállító egység teljes kapacitáson +bar.drillspeed = Termelés: {0}/mp +bar.pumpspeed = Termelés: {0}/mp +bar.efficiency = Hatásfok: {0}% +bar.boost = Erősítés: +{0}% +bar.powerbalance = Áram: {0}/mp +bar.powerstored = Eltárolva: {0}/{1} +bar.poweramount = Kapacitás: {0} bar.poweroutput = Áramtermelés: {0} -bar.powerlines = Kapcsolat: {0}/{1} -bar.items = Nyersanyag: {0} +bar.powerlines = Kapcsolatok: {0}/{1} +bar.items = Nyersanyagok: {0} bar.capacity = Tárhely: {0} bar.unitcap = {0} {1}/{2} bar.liquid = Folyadék bar.heat = Hő -bar.instability = Instability -bar.heatamount = Heat: {0} -bar.heatpercent = Heat: {0} ({1}%) +bar.instability = Instabilitás +bar.heatamount = Hő: {0} +bar.heatpercent = Hő: {0} ({1}%) bar.power = Áram bar.progress = Építés állapota -bar.loadprogress = Progress -bar.launchcooldown = Launch Cooldown +bar.loadprogress = Állapot +bar.launchcooldown = Kilövés visszaszámlálása bar.input = Bemenet bar.output = Kimenet -bar.strength = [stat]{0}[lightgray]x strength +bar.strength = [stat]{0}[lightgray]x erő -units.processorcontrol = [lightgray]Processor Controlled +units.processorcontrol = [lightgray]Processzorvezérelt bullet.damage = [stat]{0}[lightgray] sebzés -bullet.splashdamage = [stat]{0}[lightgray] területi sebzés ~[stat] {1}[lightgray] mező +bullet.splashdamage = [stat]{0}[lightgray] területi sebzés ~[stat] {1}[lightgray] csempe bullet.incendiary = [stat]gyújtó bullet.homing = [stat]nyomkövető -bullet.armorpierce = [stat]armor piercing -bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles -bullet.interval = [stat]{0}/sec[lightgray] interval bullets: -bullet.frags = [stat]{0}[lightgray]x frag bullets: -bullet.lightning = [stat]{0}[lightgray]x lightning ~ [stat]{1}[lightgray] damage -bullet.buildingdamage = [stat]{0}%[lightgray] épület sebzés +bullet.armorpierce = [stat]páncéltörő +bullet.maxdamagefraction = [stat]{0}%[lightgray] sebzési határérték +bullet.suppression = [stat]{0} mp[lightgray] javításelnyomás ~[stat]{1}[lightgray] csempe +bullet.interval = [stat]{0}/mp[lightgray] gyakoriságú lövedékek: +bullet.frags = [stat]{0}[lightgray]db repeszlövedék: +bullet.lightning = [stat]{0}[lightgray]db villámcsapás ~[stat]{1}[lightgray] sebzés +bullet.buildingdamage = [stat]{0}%[lightgray] épületsebzés bullet.knockback = [stat]{0}[lightgray] hátralökés -bullet.pierce = [stat]{0}[lightgray]x átütő -bullet.infinitepierce = [stat]átütő -bullet.healpercent = [stat]{0}[lightgray]% gyógyító -bullet.healamount = [stat]{0}[lightgray] direct repair -bullet.multiplier = [stat]{0}[lightgray]x lövedék szorzó -bullet.reload = [stat]{0}[lightgray]x tüzelési sebesség -bullet.range = [stat]{0}[lightgray] tiles range +bullet.pierce = [stat]{0}[lightgray]x átütő erő +bullet.infinitepierce = [stat]átütő erő +bullet.healpercent = [stat]{0}%[lightgray] javítás +bullet.healamount = [stat]{0}[lightgray] közvetlen javítás +bullet.multiplier = [stat]{0}[lightgray] lőszer/nyersanyag +bullet.reload = [stat]{0}%[lightgray] tüzelési sebesség +bullet.range = [stat]{0}[lightgray] csempés hatótávolság unit.blocks = blokk unit.blockssquared = blokk² -unit.powersecond = egység/sec -unit.tilessecond = tiles/second -unit.liquidsecond = egység/sec -unit.itemssecond = item/sec -unit.liquidunits = egység -unit.powerunits = egység -unit.heatunits = heat units +unit.powersecond = áramegység/mp +unit.tilessecond = csempe/mp +unit.liquidsecond = folyadékegység/mp +unit.itemssecond = nyersanyag/mp +unit.liquidunits = folyadékegység +unit.powerunits = áramegység +unit.heatunits = hőegység unit.degrees = fok unit.seconds = másodperc unit.minutes = perc -unit.persecond = /sec -unit.perminute = /min -unit.timesspeed = x speed +unit.persecond = /mp +unit.perminute = /perc +unit.timesspeed = x sebesség unit.percent = % -unit.shieldhealth = shield health -unit.items = item +unit.shieldhealth = pajzs életereje +unit.items = nyersanyag unit.thousands = k unit.millions = mil unit.billions = Mrd +unit.shots = lövés unit.pershot = /lövés -category.purpose = Cél +category.purpose = Rendeltetés category.general = Általános category.power = Áram category.liquids = Folyadékok -category.items = Itemek -category.crafting = Bemenet/Kimenet +category.items = Nyersanyagok +category.crafting = Bemenet/kimenet category.function = Funkció -category.optional = Lehetséges fokozás -setting.skipcoreanimation.name = Skip Core Launch/Land Animation +category.optional = Lehetséges fejlesztések +setting.skipcoreanimation.name = Támaszpont indítási/leszállási animáció kihagyása setting.landscape.name = Fekvő mód zárolása setting.shadows.name = Árnyékok -setting.blockreplace.name = Automatikus blokk javaslatok +setting.blockreplace.name = Automatikus blokkjavaslatok setting.linear.name = Lineáris szűrés -setting.hints.name = Tippek -setting.logichints.name = Logic Hints +setting.hints.name = Tanácsok +setting.logichints.name = Logikai tanácsok setting.backgroundpause.name = Szüneteltetés a háttérben setting.buildautopause.name = Automatikus szünet építéskor -setting.doubletapmine.name = Double-Tap to Mine -setting.commandmodehold.name = Hold For Command Mode -setting.modcrashdisable.name = Disable Mods On Startup Crash -setting.animatedwater.name = Animált víz +setting.doubletapmine.name = Bányászás dupla kattintással/koppintással +setting.commandmodehold.name = Lenyomva tartás a parancs módhoz +setting.distinctcontrolgroups.name = Egységenként legfeljebb egy vezérlőcsoport +setting.modcrashdisable.name = Modok letiltása indításkori összeomláskor +setting.animatedwater.name = Animált felületek setting.animatedshields.name = Animált pajzsok -setting.playerindicators.name = Játékos mutató -setting.indicators.name = Ellenség mutató +setting.playerindicators.name = Játékosjelzők +setting.indicators.name = Ellenségjelzők setting.autotarget.name = Automatikus célzás setting.keyboard.name = Irányítás egérrel és billentyűzettel setting.touchscreen.name = Irányítás érintőképernyővel -setting.fpscap.name = Max FPS +setting.fpscap.name = FPS-korlát setting.fpscap.none = Nincs setting.fpscap.text = {0} FPS -setting.uiscale.name = UI mérete [lightgray] (újraindítás szükséges)[] -setting.uiscale.description = Restart required to apply changes. +setting.uiscale.name = Felület méretezése +setting.uiscale.description = A módosítások alkalmazásához újraindítás szükséges. setting.swapdiagonal.name = Mindig átlós elhelyezés setting.difficulty.training = Kiképzés setting.difficulty.easy = Könnyű -setting.difficulty.normal = Közepes +setting.difficulty.normal = Normál setting.difficulty.hard = Nehéz setting.difficulty.insane = Őrült setting.difficulty.name = Nehézség: setting.screenshake.name = Képernyő rázkódása -setting.bloomintensity.name = Bloom Intensity -setting.bloomblur.name = Bloom Blur -setting.effects.name = Effektek -setting.destroyedblocks.name = Elpusztított épületek megjelenítése -setting.blockstatus.name = Blokk állapotának megjelenítése -setting.conveyorpathfinding.name = Futószalag útvonalkeresés építéskor -setting.sensitivity.name = Controller érzékenység +setting.bloomintensity.name = Bloom intenzitása +setting.bloomblur.name = Bloom elmosása +setting.effects.name = Hatások megjelenítése +setting.destroyedblocks.name = Elpusztított blokkok megjelenítése +setting.blockstatus.name = Blokkok állapotának megjelenítése +setting.conveyorpathfinding.name = Szállítószalag útvonalkeresése építéskor +setting.sensitivity.name = Kontroller érzékenysége setting.saveinterval.name = Mentési időköz setting.seconds = {0} másodperc setting.milliseconds = {0} ezredmásodperc -setting.fullscreen.name = Teljesképernyő -setting.borderlesswindow.name = Keret nélküli ablak[lightgray] (újraindításra lehet szükség) -setting.borderlesswindow.name.windows = Borderless Fullscreen -setting.borderlesswindow.description = Restart may be required to apply changes. -setting.fps.name = FPS és Ping mutatása -setting.console.name = Enable Console -setting.smoothcamera.name = Sima kamera +setting.fullscreen.name = Teljes képernyő +setting.borderlesswindow.name = Keret nélküli ablak +setting.borderlesswindow.name.windows = Keret nélküli teljes képernyő +setting.borderlesswindow.description = A változtatások érvénybe lépéséhez újraindításra lehet szükség. +setting.fps.name = FPS, memóriahasználat és ping megjelenítése +setting.console.name = Konzol engedélyezése +setting.smoothcamera.name = Egyenletes kamera setting.vsync.name = VSync -setting.pixelate.name = Pixeles -setting.minimap.name = Minimap -setting.coreitems.name = Magban lévő nyersanyagok megjelenítése -setting.position.name = A játékos pozíciójának megjelenítése -setting.mouseposition.name = Show Mouse Position -setting.musicvol.name = Zene hangerő -setting.atmosphere.name = Bolygó atmoszféra +setting.pixelate.name = Pixelesítés +setting.minimap.name = Minitérkép megjelenítése +setting.coreitems.name = Támaszpontban lévő nyersanyagok megjelenítése +setting.position.name = Játékos pozíciójának megjelenítése +setting.mouseposition.name = Egér pozíciójának megjelenítése +setting.musicvol.name = Zene hangereje +setting.atmosphere.name = Bolygóatmoszféra megjelenítése +setting.drawlight.name = Sötét/világos fényhatások setting.ambientvol.name = Környezeti hangerő setting.mutemusic.name = Zene némítása -setting.sfxvol.name = SFX hangerő +setting.sfxvol.name = Hanghatások hangereje setting.mutesound.name = Hang némítása -setting.crashreport.name = Névtelen crash jelentések +setting.crashreport.name = Névtelen összeomlási jelentések setting.savecreate.name = Automatikus mentés -setting.publichost.name = Nyilvános játék láthatósága -setting.playerlimit.name = Játékos limit -setting.chatopacity.name = Chat átlátszatlansága -setting.lasersopacity.name = Villanyvezeték álátszatlansága +setting.steampublichost.name = Nyilvános játék láthatósága +setting.playerlimit.name = Játékoskorlát +setting.chatopacity.name = Csevegő átlátszatlansága +setting.lasersopacity.name = Villanyvezeték átlátszatlansága setting.bridgeopacity.name = Híd átlátszatlansága -setting.playerchat.name = Játékos szóbuborékok megjelenítése -setting.showweather.name = Időjárás grafika megjelenítése -setting.hidedisplays.name = Hide Logic Displays -steam.friendsonly = Friends Only -steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. +setting.playerchat.name = Játékosok csevegőbuborékainak megjelenítése +setting.showweather.name = Időjárásgrafika megjelenítése +setting.hidedisplays.name = Logikai kijelzők elrejtése +setting.macnotch.name = A felület igazítása a kijelző bevágásához +setting.macnotch.description = A változtatások érvénybe lépéséhez újraindítás szükséges +steam.friendsonly = Csak barátok +steam.friendsonly.tooltip = Csak a Steam-barátok tudnak kapcsolódni a játékodhoz.\nHa nem jelölöd be ezt a négyzetet, a játékod nyilvános lesz – bárki kapcsolódhat hozzá. public.beta = Ne feledd, hogy a játék béta verziójában nem tudsz nyilvános szobát nyitni. -uiscale.reset = Az UI mérete megváltozott.\nAz "OK" gombbal megerősítheted ezt a méretet.\n[scarlet]Visszavonás és kilépés [accent] {0}[] másodperc múlva... -uiscale.cancel = Mégse és Kilépés +uiscale.reset = A felület mérete megváltozott.\nAz „OK” gombbal megerősítheted ezt a méretet.\n[scarlet]Visszavonás és kilépés [accent] {0}[] másodperc múlva... +uiscale.cancel = Mégse és kilépés setting.bloom.name = Bloom -keybind.title = Gyorsbillentyűk +keybind.title = Billentyűk átállítása keybinds.mobile = [scarlet]A legtöbb billentyűfunkció mobilon nem működik. Csak a mozgás támogatott. category.general.name = Általános category.view.name = Nézet +category.command.name = Egységparancs category.multiplayer.name = Többjátékos -category.blocks.name = Blokk választás -placement.blockselectkeys = \n[lightgray]Key: [{0}, +category.blocks.name = Blokkválasztás +placement.blockselectkeys = \n[lightgray]Kulcs: [{0}, keybind.respawn.name = Újraéledés keybind.control.name = Egység irányítása -keybind.clear_building.name = Építési terv törlése -keybind.press = Nyomj meg egy billentyűt -keybind.press.axis = Press an axis or key... -keybind.screenshot.name = Map képernyőkép +keybind.clear_building.name = Épület törlése +keybind.press = Nyomj meg egy gombot... +keybind.press.axis = Nyomj meg egy kart vagy gombot... +keybind.screenshot.name = Pálya képernyőképe keybind.toggle_power_lines.name = Villanyvezetékek be/ki -keybind.toggle_block_status.name = Blokk státusz be/ki +keybind.toggle_block_status.name = Blokkállapotok be/ki keybind.move_x.name = Mozgás vízszintesen keybind.move_y.name = Mozgás függőlegesen keybind.mouse_move.name = Egér követése keybind.pan.name = Felderítés -keybind.boost.name = Boost -keybind.command_mode.name = Command Mode -keybind.rebuild_select.name = Rebuild Region +keybind.boost.name = Erősítés +keybind.command_mode.name = Parancs mód +keybind.command_queue.name = Egységparancsok sorba állítása +keybind.create_control_group.name = Vezérlőcsoport készítése +keybind.cancel_orders.name = Parancsok visszavonása + +keybind.unit_stance_shoot.name = Egység viselkedése: lövés +keybind.unit_stance_hold_fire.name = Egység viselkedése: tüzet szüntess +keybind.unit_stance_pursue_target.name = Egység viselkedése: célpont követése +keybind.unit_stance_patrol.name = Egység viselkedése: járőrözés +keybind.unit_stance_ram.name = Egység viselkedése: ütközés + +keybind.unit_command_move.name = Egységparancs: mozgás +keybind.unit_command_repair.name = Egységparancs: javítás +keybind.unit_command_rebuild.name = Egységparancs: újjáépítés +keybind.unit_command_assist.name = Egységparancs: támogatás +keybind.unit_command_mine.name = Egységparancs: bányászás +keybind.unit_command_boost.name = Egységparancs: erősítés +keybind.unit_command_load_units.name = Egységparancs: egységek berakodása +keybind.unit_command_load_blocks.name = Egységparancs: blokkok berakodása +keybind.unit_command_unload_payload.name = Egységparancs: kirakodás +keybind.unit_command_enter_payload.name = Egységparancs: berakodás + +keybind.rebuild_select.name = Régió újjáépítése keybind.schematic_select.name = Terület kijelölése -keybind.schematic_menu.name = Schematic menü -keybind.schematic_flip_x.name = Schematic tükrözése vízszintesen -keybind.schematic_flip_y.name = Schematic tükrözése függőlegesen +keybind.schematic_menu.name = Vázlat menü +keybind.schematic_flip_x.name = Vázlat tükrözése vízszintesen +keybind.schematic_flip_y.name = Vázlat tükrözése függőlegesen keybind.category_prev.name = Előző kategória keybind.category_next.name = Következő kategória keybind.block_select_left.name = Blokk váltás balra keybind.block_select_right.name = Blokk váltás jobbra keybind.block_select_up.name = Blokk váltás fel keybind.block_select_down.name = Blokk váltás le -keybind.block_select_01.name = Blokk kategória 1 -keybind.block_select_02.name = Blokk kategória 2 -keybind.block_select_03.name = Blokk kategória 3 -keybind.block_select_04.name = Blokk kategória 4 -keybind.block_select_05.name = Blokk kategória 5 -keybind.block_select_06.name = Blokk kategória 6 -keybind.block_select_07.name = Blokk kategória 7 -keybind.block_select_08.name = Blokk kategória 8 -keybind.block_select_09.name = Blokk kategória 9 -keybind.block_select_10.name = Blokk kategória 10 -keybind.fullscreen.name = Teljesképernyő be/ki -keybind.select.name = Kiválasztás/Lövés +keybind.block_select_01.name = 1. kategória/blokk választása +keybind.block_select_02.name = 2. kategória/blokk választása +keybind.block_select_03.name = 3. kategória/blokk választása +keybind.block_select_04.name = 4. kategória/blokk választása +keybind.block_select_05.name = 5. kategória/blokk választása +keybind.block_select_06.name = 6. kategória/blokk választása +keybind.block_select_07.name = 7. kategória/blokk választása +keybind.block_select_08.name = 8. kategória/blokk választása +keybind.block_select_09.name = 9. kategória/blokk választása +keybind.block_select_10.name = 10. kategória/blokk választása +keybind.fullscreen.name = Teljes képernyő be/ki +keybind.select.name = Kiválasztás/lövés keybind.diagonal_placement.name = Átlós elhelyezés -keybind.pick.name = Blokk másolása +keybind.pick.name = Blokk kiválasztása keybind.break_block.name = Blokk törlése -keybind.select_all_units.name = Select All Units -keybind.select_all_unit_factories.name = Select All Unit Factories -keybind.deselect.name = Blokk választás törlése +keybind.select_all_units.name = Összes egység kijelölése +keybind.select_all_unit_factories.name = Összes egységgyár kijelölése +keybind.deselect.name = Blokkkijelölés törlése keybind.pickupCargo.name = Rakomány felvétele keybind.dropCargo.name = Rakomány lerakása keybind.shoot.name = Lövés -keybind.zoom.name = Zoom +keybind.zoom.name = Nagyítás keybind.menu.name = Menü keybind.pause.name = Szünet keybind.pause_building.name = Építés szüneteltetése/folytatása -keybind.minimap.name = Minimap -keybind.planet_map.name = Bolygó térkép -keybind.research.name = Kutatás -keybind.block_info.name = Block Info -keybind.chat.name = Chat -keybind.player_list.name = Játékos lista +keybind.minimap.name = Minitérkép +keybind.planet_map.name = Bolygótérkép +keybind.research.name = Fejlesztés +keybind.block_info.name = Blokk infó +keybind.chat.name = Csevegés +keybind.player_list.name = Játékosok listája keybind.console.name = Konzol -keybind.rotate.name = Frogatás -keybind.rotateplaced.name = Épület forgatása (tartsd nyomva) -keybind.toggle_menus.name = Toggle Menus -keybind.chat_history_prev.name = Chat görgetés fel -keybind.chat_history_next.name = Chat görgetés le -keybind.chat_scroll.name = Chat görgetés -keybind.chat_mode.name = Chat mód megváltoztatása -keybind.drop_unit.name = Egység elengedése -keybind.zoom_minimap.name = Zoom a Minimapoon +keybind.rotate.name = Forgatás +keybind.rotateplaced.name = Meglévő forgatása (nyomva tartva) +keybind.toggle_menus.name = Menük be/ki +keybind.chat_history_prev.name = Csevegés görgetése felfelé +keybind.chat_history_next.name = Csevegés görgetése lefelé +keybind.chat_scroll.name = Csevegés görgetése +keybind.chat_mode.name = Csevegési mód megváltoztatása +keybind.drop_unit.name = Egység eldobása +keybind.zoom_minimap.name = Nagyítás a minitérképen mode.help.title = Játékmódok leírása -mode.survival.name = Túlélő -mode.survival.description = A normál mód. Korlátozott nyersanyag és automatikusan érkező hullámok.\n[gray]Szükséges hozzá ellenséges spawn a Mapon. -mode.sandbox.name = Szabad játék -mode.sandbox.description = Végtelen erőforrás, nincs időzítés a hullámokhoz. +mode.survival.name = Túlélés +mode.survival.description = A normál mód. Korlátozott nyersanyagok, és automatikusan érkező hullámok.\n[gray]Ellenséges kezdőpont szükséges hozzá a pályán. +mode.sandbox.name = Homokozó +mode.sandbox.description = Végtelen nyersanyagforrás, nincs időzítés a hullámokhoz. mode.editor.name = Szerkesztő mode.pvp.name = PvP -mode.pvp.description = Harcolj másik játékosok ellen.\n[gray]Szükséges hozzá legalább két különböző színű mag a Mapon. +mode.pvp.description = Harcolj más játékosok ellen.\n[gray]Legalább két különböző színű támaszpont szükséges hozzá a pályán. mode.attack.name = Támadás -mode.attack.description = Pusztítsd el az ellenség bázisát. \n[gray]Szükséges hozzá egy piros mag a Mapon. +mode.attack.description = Pusztítsd el az ellenség bázisát. \n[gray]Piros támaszpont szükséges hozzá a pályán. mode.custom = Egyéni szabályok -rules.infiniteresources = Végtelen erőforrás -rules.onlydepositcore = Only Allow Core Depositing -rules.reactorexplosions = Reaktor robbanás -rules.coreincinerates = Túlcsorduló itemek megsemmisítse a magban -rules.disableworldprocessors = Disable World Processors -rules.schematic = Schematicok -rules.wavetimer = Hullám időzítő -rules.wavesending = Wave Sending +rules.invaliddata = Érvénytelen adatok vannak a vágólapon. +rules.hidebannedblocks = Tiltott blokkok elrejtése +rules.infiniteresources = Végtelen nyersanyagforrás +rules.onlydepositcore = Csak a támaszpontok elhelyezése engedélyezett +rules.derelictrepair = Az elhagyatott épületek javításának engedélyezése +rules.reactorexplosions = Reaktorrobbanások +rules.coreincinerates = Többletnyersanyagok megsemmisítése a támaszpontban +rules.disableworldprocessors = Világprocesszorok letiltása +rules.schematic = Vázlatok engedélyezése +rules.wavetimer = Hullámok időzítése +rules.wavesending = Hullámok küldése +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Hullámok -rules.attack = Támadás mód -rules.rtsai = RTS AI -rules.rtsminsquadsize = Min Squad Size -rules.rtsmaxsquadsize = Max Squad Size -rules.rtsminattackweight = Min Attack Weight -rules.cleanupdeadteams = Clean Up Defeated Team Buildings (PvP) -rules.corecapture = Capture Core On Destruction -rules.polygoncoreprotection = Polygonal Core Protection -rules.placerangecheck = Placement Range Check -rules.enemyCheat = Végtelen AI (Piros csapat) Erőforrás -rules.blockhealthmultiplier = Épület életpont szorzó -rules.blockdamagemultiplier = Épület sebzés szorzó -rules.unitbuildspeedmultiplier = Egység gyártási sebesség szorzó -rules.unitcostmultiplier = Unit Cost Multiplier -rules.unithealthmultiplier = Egység életpont szorzó -rules.unitdamagemultiplier = Egység sebzés szorzó -rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier -rules.solarmultiplier = Solar Power Multiplier -rules.unitcapvariable = Cores Contribute To Unit Cap -rules.unitcap = Base Unit Cap -rules.limitarea = Limit Map Area -rules.enemycorebuildradius = Ellenséges mag körüli tiltott zóna sugara:[lightgray] (mező) -rules.wavespacing = Hullám időzítés:[lightgray] (sec) -rules.initialwavespacing = Initial Wave Spacing:[lightgray] (sec) -rules.buildcostmultiplier = Építési költség szorzó -rules.buildspeedmultiplier = Építési sebesség szorzó -rules.deconstructrefundmultiplier = Bontási visszatérítés szorzó -rules.waitForWaveToEnd = Waves Wait for Enemies -rules.wavelimit = Map Ends After Wave -rules.dropzoneradius = Ledobási zóna sugara:[lightgray] (mező) -rules.unitammo = Egységeknek kell lövedék -rules.enemyteam = Enemy Team -rules.playerteam = Player Team +rules.airUseSpawns = A légi egységek használjanak kezdőpontokat +rules.attack = Támadási mód +rules.buildai = Bázisépítő MI +rules.buildaitier = Építő MI szintje +rules.rtsai = RTS MI [red](WIP) +rules.rtsminsquadsize = Minimális osztagméret +rules.rtsmaxsquadsize = Maximális osztagméret +rules.rtsminattackweight = Minimális támadási súly +rules.cleanupdeadteams = Legyőzött csapatok épületeinek törlése (PvP) +rules.corecapture = Támaszpont elfoglalása megsemmisítéskor +rules.polygoncoreprotection = Poligonális támaszpontvédelem +rules.placerangecheck = Elhelyezési tartomány ellenőrzése +rules.enemyCheat = Végtelen ellenséges csapaterőforrások +rules.blockhealthmultiplier = Épület életpontszorzója +rules.blockdamagemultiplier = Épület sebzésszorzója +rules.unitbuildspeedmultiplier = Egységgyártás sebességének szorzója +rules.unitcostmultiplier = Egység költségszorzója +rules.unithealthmultiplier = Egység életpontszorzója +rules.unitdamagemultiplier = Egység sebzésszorzója +rules.unitcrashdamagemultiplier = Egység ütközési sebzésszorzója +rules.solarmultiplier = Napenergia szorzója +rules.unitcapvariable = A támaszpontok befolyásolják a gyártható egységek darabszámát +rules.unitpayloadsexplode = A szállított rakományok az egységgel együtt felrobbannak +rules.unitcap = Alap egységdarabszám +rules.limitarea = Játékterület korlátozása +rules.enemycorebuildradius = Ellenséges támaszpont körüli tiltott zóna sugara:[lightgray] (csempe) +rules.wavespacing = A hullámok közötti szünetek ideje:[lightgray] (mp) +rules.initialwavespacing = Az első hullám előtti szünet ideje:[lightgray] (mp) +rules.buildcostmultiplier = Építési költség szorzója +rules.buildspeedmultiplier = Építési sebesség szorzója +rules.deconstructrefundmultiplier = Bontási visszatérítés szorzója +rules.waitForWaveToEnd = Az ellenség kivárja a korábbi hullám végét +rules.wavelimit = A pálya az utolsó hullám után ér véget +rules.dropzoneradius = A ledobási zóna sugara:[lightgray] (csempe) +rules.unitammo = Az egységeknek lőszer kell [red](törölhető) +rules.enemyteam = Ellenséges csapat +rules.playerteam = Saját csapat rules.title.waves = Hullámok -rules.title.resourcesbuilding = Erőforrások és épületek +rules.title.resourcesbuilding = Nyersanyagforrások és épületek rules.title.enemy = Ellenségek rules.title.unit = Egységek rules.title.experimental = Kísérleti rules.title.environment = Környezet -rules.title.teams = Teams -rules.title.planet = Planet +rules.title.teams = Csapatok +rules.title.planet = Bolygó rules.lighting = Világítás -rules.fog = Fog of War +rules.fog = Köd rules.fire = Tűz -rules.anyenv = -rules.explosions = Épület/Egység robbanás sebzés +rules.anyenv = +rules.explosions = Épület/egység robbanási sebzése rules.ambientlight = Háttérvilágítás rules.weather = Időjárás rules.weather.frequency = Gyakoriság: rules.weather.always = Mindig rules.weather.duration = Időtartam: -content.item.name = Itemek +rules.placerangecheck.info = Megakadályozza, hogy a játékosok lövegtornyokat helyezzenek el az ellenséges épületek közelében. Amikor megpróbálnak egy lövegtornyot elhelyezni, az építési távolság megnő, így a lövegtorony nem fogja elérni az ellenséget. +rules.onlydepositcore.info = Megakadályozza, hogy az egységek nyersanyagokat helyezzenek el a támaszponton kívül más épületekbe. + +content.item.name = Nyersanyagok content.liquid.name = Folyadékok content.unit.name = Egységek content.block.name = Blokkok -content.status.name = Status Effects -content.sector.name = Szektor -content.team.name = Factions -wallore = (Wall) +content.status.name = Állapothatások +content.sector.name = Szektorok +content.team.name = Csapatok + +wallore = (Fal) item.copper.name = Réz item.lead.name = Ólom @@ -1264,32 +1414,33 @@ item.graphite.name = Grafit item.titanium.name = Titán item.thorium.name = Tórium item.silicon.name = Szilícium -item.plastanium.name = Plasztínium -item.phase-fabric.name = Fázisos Szövet -item.surge-alloy.name = Multiötvözet -item.spore-pod.name = Spóratok +item.plastanium.name = Műanyag +item.phase-fabric.name = Tóritkvarc +item.surge-alloy.name = Elektrometál +item.spore-pod.name = Spórakapszula item.sand.name = Homok item.blast-compound.name = Robbanóelegy item.pyratite.name = Piratit item.metaglass.name = Ólomüveg -item.scrap.name = Hulladék -item.fissile-matter.name = Fissile Matter -item.beryllium.name = Beryllium -item.tungsten.name = Tungsten -item.oxide.name = Oxide -item.carbide.name = Carbide -item.dormant-cyst.name = Dormant Cyst +item.scrap.name = Törmelék +item.fissile-matter.name = Hasadóanyag +item.beryllium.name = Berillium +item.tungsten.name = Volfrám +item.oxide.name = Oxid +item.carbide.name = Karbid +item.dormant-cyst.name = Nyugvó ciszta + liquid.water.name = Víz liquid.slag.name = Salak liquid.oil.name = Olaj liquid.cryofluid.name = Hűtőfolyadék -liquid.neoplasm.name = Neoplasm -liquid.arkycite.name = Arkycite +liquid.neoplasm.name = Neoplazma +liquid.arkycite.name = Arkicit liquid.gallium.name = Gallium -liquid.ozone.name = Ozone -liquid.hydrogen.name = Hydrogen -liquid.nitrogen.name = Nitrogen -liquid.cyanogen.name = Cyanogen +liquid.ozone.name = Ózon +liquid.hydrogen.name = Hidrogén +liquid.nitrogen.name = Nitrogén +liquid.cyanogen.name = Dicián unit.dagger.name = Dagger unit.mace.name = Mace @@ -1329,6 +1480,7 @@ unit.scepter.name = Scepter unit.reign.name = Reign unit.vela.name = Vela unit.corvus.name = Corvus + unit.stell.name = Stell unit.locus.name = Locus unit.precept.name = Precept @@ -1348,355 +1500,359 @@ unit.evoke.name = Evoke unit.incite.name = Incite unit.emanate.name = Emanate unit.manifold.name = Manifold -unit.assembly-drone.name = Assembly Drone +unit.assembly-drone.name = Összeszerelő drón unit.latum.name = Latum unit.renale.name = Renale + block.parallax.name = Parallax -block.cliff.name = Cliff -block.sand-boulder.name = Sand Boulder -block.basalt-boulder.name = Basalt Boulder -block.grass.name = Grass -block.molten-slag.name = Slag -block.pooled-cryofluid.name = Cryofluid -block.space.name = Space -block.salt.name = Salt -block.salt-wall.name = Salt Wall -block.pebbles.name = Pebbles -block.tendrils.name = Tendrils -block.sand-wall.name = Sand Wall -block.spore-pine.name = Spore Pine -block.spore-wall.name = Spore Wall -block.boulder.name = Boulder -block.snow-boulder.name = Snow Boulder -block.snow-pine.name = Snow Pine -block.shale.name = Shale -block.shale-boulder.name = Shale Boulder -block.moss.name = Moss -block.shrubs.name = Shrubs -block.spore-moss.name = Spore Moss -block.shale-wall.name = Shale Wall -block.scrap-wall.name = Scrap Wall -block.scrap-wall-large.name = Large Scrap Wall -block.scrap-wall-huge.name = Huge Scrap Wall -block.scrap-wall-gigantic.name = Gigantic Scrap Wall -block.thruster.name = Thruster -block.kiln.name = Kiln -block.graphite-press.name = Graphite Press -block.multi-press.name = Multi-Press -block.constructing = {0} [lightgray](Constructing) -block.spawn.name = Enemy Spawn -block.core-shard.name = Core: Shard -block.core-foundation.name = Core: Foundation -block.core-nucleus.name = Core: Nucleus -block.deep-water.name = Deep Water -block.shallow-water.name = Water -block.tainted-water.name = Tainted Water -block.deep-tainted-water.name = Deep Tainted Water -block.darksand-tainted-water.name = Dark Sand Tainted Water -block.tar.name = Tar -block.stone.name = Stone -block.sand-floor.name = Sand -block.darksand.name = Dark Sand -block.ice.name = Ice -block.snow.name = Snow -block.crater-stone.name = Craters -block.sand-water.name = Sand water -block.darksand-water.name = Dark Sand Water -block.char.name = Char -block.dacite.name = Dacite -block.rhyolite.name = Rhyolite -block.dacite-wall.name = Dacite Wall -block.dacite-boulder.name = Dacite Boulder -block.ice-snow.name = Ice Snow -block.stone-wall.name = Stone Wall -block.ice-wall.name = Ice Wall -block.snow-wall.name = Snow Wall -block.dune-wall.name = Dune Wall -block.pine.name = Pine -block.dirt.name = Dirt -block.dirt-wall.name = Dirt Wall -block.mud.name = Mud -block.white-tree-dead.name = White Tree Dead -block.white-tree.name = White Tree -block.spore-cluster.name = Spore Cluster -block.metal-floor.name = Metal Floor 1 -block.metal-floor-2.name = Metal Floor 2 -block.metal-floor-3.name = Metal Floor 3 -block.metal-floor-4.name = Metal Floor 4 -block.metal-floor-5.name = Metal Floor 4 -block.metal-floor-damaged.name = Metal Floor Damaged -block.dark-panel-1.name = Dark Panel 1 -block.dark-panel-2.name = Dark Panel 2 -block.dark-panel-3.name = Dark Panel 3 -block.dark-panel-4.name = Dark Panel 4 -block.dark-panel-5.name = Dark Panel 5 -block.dark-panel-6.name = Dark Panel 6 -block.dark-metal.name = Dark Metal -block.basalt.name = Basalt -block.hotrock.name = Hot Rock -block.magmarock.name = Magma Rock -block.copper-wall.name = Copper Wall -block.copper-wall-large.name = Large Copper Wall -block.titanium-wall.name = Titanium Wall -block.titanium-wall-large.name = Large Titanium Wall -block.plastanium-wall.name = Plastanium Wall -block.plastanium-wall-large.name = Large Plastanium Wall -block.phase-wall.name = Phase Wall -block.phase-wall-large.name = Large Phase Wall -block.thorium-wall.name = Thorium Wall -block.thorium-wall-large.name = Large Thorium Wall -block.door.name = Door -block.door-large.name = Large Door +block.cliff.name = Szirt +block.sand-boulder.name = Homokszikla +block.basalt-boulder.name = Bazaltszikla +block.grass.name = Fű +block.molten-slag.name = Salak +block.pooled-cryofluid.name = Hűtőfolyadék +block.space.name = Űr +block.salt.name = Só +block.salt-wall.name = Sófal +block.pebbles.name = Kavicsok +block.tendrils.name = Indák +block.sand-wall.name = Homokfal +block.spore-pine.name = Spórafenyő +block.spore-wall.name = Spórafal +block.boulder.name = Szikla +block.snow-boulder.name = Havas szikla +block.snow-pine.name = Havas fenyő +block.shale.name = Pala +block.shale-boulder.name = Palaszikla +block.moss.name = Moha +block.shrubs.name = Cserjék +block.spore-moss.name = Spóramoha +block.shale-wall.name = Palafal +block.scrap-wall.name = Törmelékfal +block.scrap-wall-large.name = Nagy törmelékfal +block.scrap-wall-huge.name = Hatalmas törmelékfal +block.scrap-wall-gigantic.name = Gigantikus törmelékfal +block.thruster.name = Hajtómű +block.kiln.name = Kemence +block.graphite-press.name = Grafitprés +block.multi-press.name = Grafitsajtoló +block.constructing = {0} [lightgray](építés alatt) +block.spawn.name = Ellenséges kezdőpont +block.core-shard.name = Támaszpont: Szilánk +block.core-foundation.name = Támaszpont: Alapítvány +block.core-nucleus.name = Támaszpont: Atommag +block.deep-water.name = Mély víz +block.shallow-water.name = Víz +block.tainted-water.name = Szennyezett víz +block.deep-tainted-water.name = Mély szennyezett víz +block.darksand-tainted-water.name = Sötét homokkal szennyezett víz +block.tar.name = Kátrány +block.stone.name = Kő +block.sand-floor.name = Homok +block.darksand.name = Sötét homok +block.ice.name = Jég +block.snow.name = Hó +block.crater-stone.name = Kráterek +block.sand-water.name = Homokvíz +block.darksand-water.name = Sötét homokvíz +block.char.name = Faszén +block.dacite.name = Dácit +block.rhyolite.name = Riolit +block.dacite-wall.name = Dácitfal +block.dacite-boulder.name = Dácitszikla +block.ice-snow.name = Jéghó +block.stone-wall.name = Kőfal +block.ice-wall.name = Jégfal +block.snow-wall.name = Hófal +block.dune-wall.name = Dűnefal +block.pine.name = Fenyő +block.dirt.name = Sár +block.dirt-wall.name = Sárfal +block.mud.name = Iszap +block.white-tree-dead.name = Kiszáradt fehér fa +block.white-tree.name = Fehér fa +block.spore-cluster.name = Spórafürt +block.metal-floor.name = 1. fémpadló +block.metal-floor-2.name = 2. fémpadló +block.metal-floor-3.name = 3. fémpadló +block.metal-floor-4.name = 4. fémpadló +block.metal-floor-5.name = 5. fémpadló +block.metal-floor-damaged.name = Sérült fémpadló +block.dark-panel-1.name = 1. sötét panel +block.dark-panel-2.name = 2. sötét panel +block.dark-panel-3.name = 3. sötét panel +block.dark-panel-4.name = 4. sötét panel +block.dark-panel-5.name = 5. sötét panel +block.dark-panel-6.name = 6. sötét panel +block.dark-metal.name = Sötét fém +block.basalt.name = Bazalt +block.hotrock.name = Forró kőzet +block.magmarock.name = Magmás kőzet +block.copper-wall.name = Rézfal +block.copper-wall-large.name = Nagy rézfal +block.titanium-wall.name = Titánfal +block.titanium-wall-large.name = Nagy titánfal +block.plastanium-wall.name = Műanyagfal +block.plastanium-wall-large.name = Nagy műanyagfal +block.phase-wall.name = Tóritkvarcfal +block.phase-wall-large.name = Nagy tóritkvarcfal +block.thorium-wall.name = Tóriumfal +block.thorium-wall-large.name = Nagy tóriumfal +block.door.name = Ajtó +block.door-large.name = Nagy ajtó block.duo.name = Duo block.scorch.name = Scorch block.scatter.name = Scatter block.hail.name = Hail block.lancer.name = Lancer -block.conveyor.name = Conveyor -block.titanium-conveyor.name = Titanium Conveyor -block.plastanium-conveyor.name = Plastanium Conveyor -block.armored-conveyor.name = Armored Conveyor -block.junction.name = Junction -block.router.name = Router -block.distributor.name = Distributor -block.sorter.name = Sorter -block.inverted-sorter.name = Inverted Sorter -block.message.name = Message -block.reinforced-message.name = Reinforced Message -block.world-message.name = World Message -block.illuminator.name = Illuminator -block.overflow-gate.name = Overflow Gate -block.underflow-gate.name = Underflow Gate -block.silicon-smelter.name = Silicon Smelter -block.phase-weaver.name = Phase Weaver -block.pulverizer.name = Pulverizer -block.cryofluid-mixer.name = Cryofluid Mixer -block.melter.name = Melter -block.incinerator.name = Incinerator -block.spore-press.name = Spore Press -block.separator.name = Separator -block.coal-centrifuge.name = Coal Centrifuge -block.power-node.name = Power Node -block.power-node-large.name = Large Power Node -block.surge-tower.name = Surge Tower -block.diode.name = Battery Diode -block.battery.name = Battery -block.battery-large.name = Large Battery -block.combustion-generator.name = Combustion Generator -block.steam-generator.name = Steam Generator -block.differential-generator.name = Differential Generator -block.impact-reactor.name = Impact Reactor -block.mechanical-drill.name = Mechanical Drill -block.pneumatic-drill.name = Pneumatic Drill -block.laser-drill.name = Laser Drill -block.water-extractor.name = Water Extractor -block.cultivator.name = Cultivator -block.conduit.name = Conduit -block.mechanical-pump.name = Mechanical Pump -block.item-source.name = Item Source -block.item-void.name = Item Void -block.liquid-source.name = Liquid Source -block.liquid-void.name = Liquid Void -block.power-void.name = Power Void -block.power-source.name = Power Source -block.unloader.name = Unloader -block.vault.name = Vault +block.conveyor.name = Szállítószalag +block.titanium-conveyor.name = Titán szállítószalag +block.plastanium-conveyor.name = Műanyag szállítószalag +block.armored-conveyor.name = Páncélozott szállítószalag +block.junction.name = Átkötés +block.router.name = Elosztó +block.distributor.name = Szétosztó +block.sorter.name = Válogató +block.inverted-sorter.name = Fordított válogató +block.message.name = Üzenet +block.reinforced-message.name = Megerősített üzenet +block.world-message.name = Világüzenet +block.world-switch.name = Világkapcsoló +block.illuminator.name = Világítótest +block.overflow-gate.name = Túlcsorduló kapu +block.underflow-gate.name = Alulcsorduló kapu +block.silicon-smelter.name = Szilícium kohó +block.phase-weaver.name = Tóritkvarcképző +block.pulverizer.name = Porlasztó +block.cryofluid-mixer.name = Hűtőfolyadék-keverő +block.melter.name = Olvasztó +block.incinerator.name = Törmelékégető +block.spore-press.name = Spóraprés +block.separator.name = Leválasztó +block.coal-centrifuge.name = Széncentrifuga +block.power-node.name = Villanyoszlop +block.power-node-large.name = Nagy villanyoszlop +block.surge-tower.name = Villanytorony +block.diode.name = Akkumulátordióda +block.battery.name = Akkumulátor +block.battery-large.name = Nagy akkumulátor +block.combustion-generator.name = Égetőerőmű +block.steam-generator.name = Gőzerőmű +block.differential-generator.name = Differenciál-erőmű +block.impact-reactor.name = Ütközéses erőmű +block.mechanical-drill.name = Mechanikus fúró +block.pneumatic-drill.name = Pneumatikus fúró +block.laser-drill.name = Lézerfúró +block.water-extractor.name = Vízkinyerő +block.cultivator.name = Betakarító +block.conduit.name = Csővezeték +block.mechanical-pump.name = Mechanikus szivattyú +block.item-source.name = Nyersanyagforrás +block.item-void.name = Nyersanyagnyelő +block.liquid-source.name = Folyadékforrás +block.liquid-void.name = Folyadéknyelő +block.power-void.name = Áramnyelő +block.power-source.name = Áramforrás +block.unloader.name = Kirakodó +block.vault.name = Raktár block.wave.name = Wave block.tsunami.name = Tsunami block.swarmer.name = Swarmer block.salvo.name = Salvo block.ripple.name = Ripple -block.phase-conveyor.name = Phase Conveyor -block.bridge-conveyor.name = Bridge Conveyor -block.plastanium-compressor.name = Plastanium Compressor -block.pyratite-mixer.name = Pyratite Mixer -block.blast-mixer.name = Blast Mixer -block.solar-panel.name = Solar Panel -block.solar-panel-large.name = Large Solar Panel -block.oil-extractor.name = Oil Extractor -block.repair-point.name = Repair Point -block.repair-turret.name = Repair Turret -block.pulse-conduit.name = Pulse Conduit -block.plated-conduit.name = Plated Conduit -block.phase-conduit.name = Phase Conduit -block.liquid-router.name = Liquid Router -block.liquid-tank.name = Liquid Tank -block.liquid-container.name = Liquid Container -block.liquid-junction.name = Liquid Junction -block.bridge-conduit.name = Bridge Conduit -block.rotary-pump.name = Rotary Pump -block.thorium-reactor.name = Thorium Reactor -block.mass-driver.name = Mass Driver -block.blast-drill.name = Airblast Drill -block.impulse-pump.name = Thermal Pump -block.thermal-generator.name = Thermal Generator -block.surge-smelter.name = Surge Smelter -block.mender.name = Mender -block.mend-projector.name = Mend Projector -block.surge-wall.name = Surge Wall -block.surge-wall-large.name = Large Surge Wall +block.phase-conveyor.name = Tóritkvarc szállítószalag +block.bridge-conveyor.name = Szállítószalag-híd +block.plastanium-compressor.name = Műanyagsűrítő +block.pyratite-mixer.name = Piratitkeverő +block.blast-mixer.name = Robbanóelegy-keverő +block.solar-panel.name = Napelem +block.solar-panel-large.name = Nagy napelem +block.oil-extractor.name = Olajleválasztó +block.repair-point.name = Javítási pont +block.repair-turret.name = Javítótorony +block.pulse-conduit.name = Impulzus-csővezeték +block.plated-conduit.name = Lemezelt csővezeték +block.phase-conduit.name = Tóritkvarc-csővezeték +block.liquid-router.name = Folyadékelosztó +block.liquid-tank.name = Folyadéktartály +block.liquid-container.name = Folyadéktároló +block.liquid-junction.name = Csővezeték-átkötés +block.bridge-conduit.name = Csővezetékhíd +block.rotary-pump.name = Fogaskerekes szivattyú +block.thorium-reactor.name = Tóriumerőmű +block.mass-driver.name = Tömegmozgató +block.blast-drill.name = Légrobbanásos fúró +block.impulse-pump.name = Impulzusszivattyú +block.thermal-generator.name = Hőerőmű +block.surge-smelter.name = Elektrometál-olvasztó +block.mender.name = Foltozó +block.mend-projector.name = Foltozó projektor +block.surge-wall.name = Elektrometálfal +block.surge-wall-large.name = Nagy elektrometálfal block.cyclone.name = Cyclone block.fuse.name = Fuse -block.shock-mine.name = Shock Mine -block.overdrive-projector.name = Overdrive Projector -block.force-projector.name = Force Projector +block.shock-mine.name = Sokkoló taposóakna +block.overdrive-projector.name = Túlhajtó kivetítő +block.force-projector.name = Erőkivetítő block.arc.name = Arc -block.rtg-generator.name = RTG Generator +block.rtg-generator.name = RTG erőmű block.spectre.name = Spectre block.meltdown.name = Meltdown block.foreshadow.name = Foreshadow -block.container.name = Container -block.launch-pad.name = Launch Pad +block.container.name = Konténer +block.launch-pad.name = Kilövőállás block.segment.name = Segment -block.ground-factory.name = Ground Factory -block.air-factory.name = Air Factory -block.naval-factory.name = Naval Factory -block.additive-reconstructor.name = Additive Reconstructor -block.multiplicative-reconstructor.name = Multiplicative Reconstructor -block.exponential-reconstructor.name = Exponential Reconstructor -block.tetrative-reconstructor.name = Tetrative Reconstructor -block.payload-conveyor.name = Payload Conveyor -block.payload-router.name = Payload Router -block.duct.name = Duct -block.duct-router.name = Duct Router -block.duct-bridge.name = Duct Bridge -block.large-payload-mass-driver.name = Large Payload Mass Driver -block.payload-void.name = Payload Void -block.payload-source.name = Payload Source -block.disassembler.name = Disassembler -block.silicon-crucible.name = Silicon Crucible -block.overdrive-dome.name = Overdrive Dome -block.interplanetary-accelerator.name = Interplanetary Accelerator -block.constructor.name = Constructor -block.constructor.description = Fabricates structures up to 2x2 tiles in size. -block.large-constructor.name = Large Constructor -block.large-constructor.description = Fabricates structures up to 4x4 tiles in size. -block.deconstructor.name = Deconstructor -block.deconstructor.description = Deconstructs structures and units. Returns 100% of build cost. -block.payload-loader.name = Payload Loader -block.payload-loader.description = Load liquids and items into blocks. -block.payload-unloader.name = Payload Unloader -block.payload-unloader.description = Unloads liquids and items from blocks. -block.heat-source.name = Heat Source -block.heat-source.description = A 1x1 block that gives virtualy infinite heat. -block.empty.name = Empty -block.rhyolite-crater.name = Rhyolite Crater -block.rough-rhyolite.name = Rough Rhyolite -block.regolith.name = Regolith -block.yellow-stone.name = Yellow Stone -block.carbon-stone.name = Carbon Stone -block.ferric-stone.name = Ferric Stone -block.ferric-craters.name = Ferric Craters -block.beryllic-stone.name = Beryllic Stone -block.crystalline-stone.name = Crystalline Stone -block.crystal-floor.name = Crystal Floor -block.yellow-stone-plates.name = Yellow Stone Plates -block.red-stone.name = Red Stone -block.dense-red-stone.name = Dense Red Stone -block.red-ice.name = Red Ice -block.arkycite-floor.name = Arkycite Floor -block.arkyic-stone.name = Arkyic Stone -block.rhyolite-vent.name = Rhyolite Vent -block.carbon-vent.name = Carbon Vent -block.arkyic-vent.name = Arkyic Vent -block.yellow-stone-vent.name = Yellow Stone Vent -block.red-stone-vent.name = Red Stone Vent -block.crystalline-vent.name = Crystalline Vent -block.redmat.name = Redmat -block.bluemat.name = Bluemat -block.core-zone.name = Core Zone -block.regolith-wall.name = Regolith Wall -block.yellow-stone-wall.name = Yellow Stone Wall -block.rhyolite-wall.name = Rhyolite Wall -block.carbon-wall.name = Carbon Wall -block.ferric-stone-wall.name = Ferric Stone Wall -block.beryllic-stone-wall.name = Beryllic Stone Wall -block.arkyic-wall.name = Arkyic Wall -block.crystalline-stone-wall.name = Crystalline Stone Wall -block.red-ice-wall.name = Red Ice Wall -block.red-stone-wall.name = Red Stone Wall -block.red-diamond-wall.name = Red Diamond Wall -block.redweed.name = Redweed -block.pur-bush.name = Pur Bush -block.yellowcoral.name = Yellowcoral -block.carbon-boulder.name = Carbon Boulder -block.ferric-boulder.name = Ferric Boulder -block.beryllic-boulder.name = Beryllic Boulder -block.yellow-stone-boulder.name = Yellow Stone Boulder -block.arkyic-boulder.name = Arkyic Boulder -block.crystal-cluster.name = Crystal Cluster -block.vibrant-crystal-cluster.name = Vibrant Crystal Cluster -block.crystal-blocks.name = Crystal Blocks -block.crystal-orbs.name = Crystal Orbs -block.crystalline-boulder.name = Crystalline Boulder -block.red-ice-boulder.name = Red Ice Boulder -block.rhyolite-boulder.name = Rhyolite Boulder -block.red-stone-boulder.name = Red Stone Boulder -block.graphitic-wall.name = Graphitic Wall -block.silicon-arc-furnace.name = Silicon Arc Furnace -block.electrolyzer.name = Electrolyzer -block.atmospheric-concentrator.name = Atmospheric Concentrator -block.oxidation-chamber.name = Oxidation Chamber -block.electric-heater.name = Electric Heater -block.slag-heater.name = Slag Heater -block.phase-heater.name = Phase Heater -block.heat-redirector.name = Heat Redirector -block.heat-router.name = Heat Router -block.slag-incinerator.name = Slag Incinerator -block.carbide-crucible.name = Carbide Crucible -block.slag-centrifuge.name = Slag Centrifuge -block.surge-crucible.name = Surge Crucible -block.cyanogen-synthesizer.name = Cyanogen Synthesizer -block.phase-synthesizer.name = Phase Synthesizer -block.heat-reactor.name = Heat Reactor -block.beryllium-wall.name = Beryllium Wall -block.beryllium-wall-large.name = Large Beryllium Wall -block.tungsten-wall.name = Tungsten Wall -block.tungsten-wall-large.name = Large Tungsten Wall -block.blast-door.name = Blast Door -block.carbide-wall.name = Carbide Wall -block.carbide-wall-large.name = Large Carbide Wall -block.reinforced-surge-wall.name = Reinforced Surge Wall -block.reinforced-surge-wall-large.name = Large Reinforced Surge Wall -block.shielded-wall.name = Shielded Wall +block.ground-factory.name = Földiegységgyár +block.air-factory.name = Repülőgépgyár +block.naval-factory.name = Hadihajógyár +block.additive-reconstructor.name = Additív újratervező +block.multiplicative-reconstructor.name = Multiplikatív újratervező +block.exponential-reconstructor.name = Exponenciális újratervező +block.tetrative-reconstructor.name = Tetratív újratervező +block.payload-conveyor.name = Rakományszállító-szalag +block.payload-router.name = Rakomány-elosztó +block.duct.name = Szállítószalag +block.duct-router.name = Szállítószalag-elosztó +block.duct-bridge.name = Szállítószalaghíd +block.large-payload-mass-driver.name = Nagy rakomány-tömegmozgató +block.payload-void.name = Rakománynyelő +block.payload-source.name = Rakományforrás +block.disassembler.name = Szétszerelő +block.silicon-crucible.name = Szilíciumolvasztó +block.overdrive-dome.name = Túlhajtó búra +block.interplanetary-accelerator.name = Bolygóközi gyorsító +block.constructor.name = Építő +block.constructor.description = Legfeljebb 2×2-es csempeméretű épületeket gyárt. +block.large-constructor.name = Nagy építő +block.large-constructor.description = Akár 4×4-es csempeméretű épületeket is gyárt. +block.deconstructor.name = Lebontó +block.deconstructor.description = Lebontja az épületeket és az egységeket. Visszaadja az építési költség 100%-át. +block.payload-loader.name = Rakománycsomagoló +block.payload-loader.description = A folyadékokat és a nyersanyagokat blokkokba csomagolja. +block.payload-unloader.name = Rakománykibontó +block.payload-unloader.description = Kibontja a folyadékokból és nyersanyagokból álló blokkokat. +block.heat-source.name = Hőforrás +block.heat-source.description = Nagy hőmennyiséget bocsát ki. Csak homokozó módban. + +#Erekir +block.empty.name = Üres +block.rhyolite-crater.name = Riolit kráter +block.rough-rhyolite.name = Durva riolit +block.regolith.name = Regolit +block.yellow-stone.name = Sárga kő +block.carbon-stone.name = Szénkő +block.ferric-stone.name = Vasas kő +block.ferric-craters.name = Vasas kráterek +block.beryllic-stone.name = Berilliumos kő +block.crystalline-stone.name = Kristályos kő +block.crystal-floor.name = Kristálytalaj +block.yellow-stone-plates.name = Sárga kőlemezek +block.red-stone.name = Vörös kő +block.dense-red-stone.name = Sűrű vörös kő +block.red-ice.name = Vörös jég +block.arkycite-floor.name = Arkicit +block.arkyic-stone.name = Arkicites kő +block.rhyolite-vent.name = Riolitkürtő +block.carbon-vent.name = Szénkürtő +block.arkyic-vent.name = Arkicites kürtő +block.yellow-stone-vent.name = Sárgakő-kürtő +block.red-stone-vent.name = Vöröskő-kürtő +block.crystalline-vent.name = Kristályos kürtő +block.redmat.name = Vörös padló +block.bluemat.name = Kék padló +block.core-zone.name = Támaszpontzóna +block.regolith-wall.name = Regolitfal +block.yellow-stone-wall.name = Sárgakő-fal +block.rhyolite-wall.name = Riolit fal +block.carbon-wall.name = Szénfal +block.ferric-stone-wall.name = Vasaskő-fal +block.beryllic-stone-wall.name = Berilliumoskő-fal +block.arkyic-wall.name = Arkicites fal +block.crystalline-stone-wall.name = Kristályos kőFal +block.red-ice-wall.name = Vörösjég-fal +block.red-stone-wall.name = Vöröskő-fal +block.red-diamond-wall.name = Vörösgyémánt-fal +block.redweed.name = Vörös fű +block.pur-bush.name = Lila bokor +block.yellowcoral.name = Sárga korall +block.carbon-boulder.name = Szén szikla +block.ferric-boulder.name = Vasas szikla +block.beryllic-boulder.name = Berilliumos szikla +block.yellow-stone-boulder.name = Sárgakő-szikla +block.arkyic-boulder.name = Arkicites szikla +block.crystal-cluster.name = Kristályfürt +block.vibrant-crystal-cluster.name = Vibráló kristályfürt +block.crystal-blocks.name = Kristályblokkok +block.crystal-orbs.name = Kristálygömbök +block.crystalline-boulder.name = Kristályos szikla +block.red-ice-boulder.name = Vörösjég-szikla +block.rhyolite-boulder.name = Riolit szikla +block.red-stone-boulder.name = Vöröskő-szikla +block.graphitic-wall.name = Grafit fal +block.silicon-arc-furnace.name = Szilícium ívkemence +block.electrolyzer.name = Elektrolizátor +block.atmospheric-concentrator.name = Atmoszferikus sűrítő +block.oxidation-chamber.name = Oxidációs kamra +block.electric-heater.name = Elektromos fűtőtest +block.slag-heater.name = Salakos fűtőtest +block.phase-heater.name = Tóritkvarcos fűtőtest +block.heat-redirector.name = Hőelvezető +block.heat-router.name = Hőelosztó +block.slag-incinerator.name = Salakégető kemence +block.carbide-crucible.name = Karbidolvasztó +block.slag-centrifuge.name = Salakcentrifuga +block.surge-crucible.name = Elektrometál-olvasztó +block.cyanogen-synthesizer.name = Diciánszintetizáló +block.phase-synthesizer.name = Tóritkvarc-szintetizáló +block.heat-reactor.name = Hőerőmű +block.beryllium-wall.name = Berilliumfal +block.beryllium-wall-large.name = Nagy berilliumfal +block.tungsten-wall.name = Volfrámfal +block.tungsten-wall-large.name = Nagy volfrámfal +block.blast-door.name = Robbanásbiztos ajtó +block.carbide-wall.name = Karbidfal +block.carbide-wall-large.name = Nagy karbidfal +block.reinforced-surge-wall.name = Megerősített elektrometálfal +block.reinforced-surge-wall-large.name = Nagy megerősített elektrometálfal +block.shielded-wall.name = Pajzzsal védett fal block.radar.name = Radar -block.build-tower.name = Build Tower -block.regen-projector.name = Regen Projector -block.shockwave-tower.name = Shockwave Tower -block.shield-projector.name = Shield Projector -block.large-shield-projector.name = Large Shield Projector -block.armored-duct.name = Armored Duct -block.overflow-duct.name = Overflow Duct -block.underflow-duct.name = Underflow Duct -block.duct-unloader.name = Duct Unloader -block.surge-conveyor.name = Surge Conveyor -block.surge-router.name = Surge Router -block.unit-cargo-loader.name = Unit Cargo Loader -block.unit-cargo-unload-point.name = Unit Cargo Unload Point -block.reinforced-pump.name = Reinforced Pump -block.reinforced-conduit.name = Reinforced Conduit -block.reinforced-liquid-junction.name = Reinforced Liquid Junction -block.reinforced-bridge-conduit.name = Reinforced Bridge Conduit -block.reinforced-liquid-router.name = Reinforced Liquid Router -block.reinforced-liquid-container.name = Reinforced Liquid Container -block.reinforced-liquid-tank.name = Reinforced Liquid Tank -block.beam-node.name = Beam Node -block.beam-tower.name = Beam Tower -block.beam-link.name = Beam Link -block.turbine-condenser.name = Turbine Condenser -block.chemical-combustion-chamber.name = Chemical Combustion Chamber -block.pyrolysis-generator.name = Pyrolysis Generator -block.vent-condenser.name = Vent Condenser -block.cliff-crusher.name = Cliff Crusher -block.plasma-bore.name = Plasma Bore -block.large-plasma-bore.name = Large Plasma Bore -block.impact-drill.name = Impact Drill -block.eruption-drill.name = Eruption Drill -block.core-bastion.name = Core Bastion -block.core-citadel.name = Core Citadel -block.core-acropolis.name = Core Acropolis -block.reinforced-container.name = Reinforced Container -block.reinforced-vault.name = Reinforced Vault +block.build-tower.name = Építőtorony +block.regen-projector.name = Regeneráló kivetítő +block.shockwave-tower.name = Sokkhullámtorony +block.shield-projector.name = Pajzskivetítő +block.large-shield-projector.name = Nagy pajzskivetítő +block.armored-duct.name = Páncélozott szállítószalag +block.overflow-duct.name = Túlcsorduló szállítószalag +block.underflow-duct.name = Alulcsorduló szállítószalag +block.duct-unloader.name = Szállítószalag-kirakodó +block.surge-conveyor.name = Elektrometál-szállítószalag +block.surge-router.name = Elektrometál-elosztó +block.unit-cargo-loader.name = Egységrakomány-berakodó +block.unit-cargo-unload-point.name = Egységrakomány-kirakodó pont +block.reinforced-pump.name = Megerősített szivattyú +block.reinforced-conduit.name = Megerősített csővezeték +block.reinforced-liquid-junction.name = Megerősített folyadékátkötés +block.reinforced-bridge-conduit.name = Megerősített csővezetékhíd +block.reinforced-liquid-router.name = Megerősített folyadékelosztó +block.reinforced-liquid-container.name = Megerősített folyadékkonténer +block.reinforced-liquid-tank.name = Megerősített folyadéktartály +block.beam-node.name = Sugárcsomópont +block.beam-tower.name = Sugártorony +block.beam-link.name = Sugárhálózat +block.turbine-condenser.name = Kondenzációs turbina +block.chemical-combustion-chamber.name = Kémiai égetőkamra +block.pyrolysis-generator.name = Pirolízis-erőmű +block.vent-condenser.name = Vízleválasztó +block.cliff-crusher.name = Sziklazúzó +block.plasma-bore.name = Plazmafúró +block.large-plasma-bore.name = Nagy plazmafúró +block.impact-drill.name = Ütvefúró +block.eruption-drill.name = Kitöréses fúró +block.core-bastion.name = Bástya +block.core-citadel.name = Citadella +block.core-acropolis.name = Akropolisz +block.reinforced-container.name = Megerősített konténer +block.reinforced-vault.name = Megerősített tároló block.breach.name = Breach block.sublimate.name = Sublimate block.titan.name = Titan @@ -1704,635 +1860,730 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator -block.tank-refabricator.name = Tank Refabricator -block.mech-refabricator.name = Mech Refabricator -block.ship-refabricator.name = Ship Refabricator -block.tank-assembler.name = Tank Assembler -block.ship-assembler.name = Ship Assembler -block.mech-assembler.name = Mech Assembler -block.reinforced-payload-conveyor.name = Reinforced Payload Conveyor -block.reinforced-payload-router.name = Reinforced Payload Router -block.payload-mass-driver.name = Payload Mass Driver -block.small-deconstructor.name = Small Deconstructor -block.canvas.name = Canvas -block.world-processor.name = World Processor -block.world-cell.name = World Cell -block.tank-fabricator.name = Tank Fabricator -block.mech-fabricator.name = Mech Fabricator -block.ship-fabricator.name = Ship Fabricator -block.prime-refabricator.name = Prime Refabricator -block.unit-repair-tower.name = Unit Repair Tower +block.tank-refabricator.name = Tankújratervező +block.mech-refabricator.name = Mechújratervező +block.ship-refabricator.name = Repülőgép-újratervező +block.tank-assembler.name = Tankösszeszerelő +block.ship-assembler.name = Hajó-összeszerelő +block.mech-assembler.name = Mechösszeszerelő +block.reinforced-payload-conveyor.name = Megerősített rakományszállító-szalag +block.reinforced-payload-router.name = Megerősített rakományelosztó +block.payload-mass-driver.name = Rakomány-tömegmozgató +block.small-deconstructor.name = Lebontó +block.canvas.name = Vászon +block.world-processor.name = Világprocesszor +block.world-cell.name = Világcella +block.tank-fabricator.name = Tankgyártó +block.mech-fabricator.name = Mechgyártó +block.ship-fabricator.name = Repülőgépgyártó +block.prime-refabricator.name = Elsődleges újratervező +block.unit-repair-tower.name = Egységjavító torony block.diffuse.name = Diffuse -block.basic-assembler-module.name = Basic Assembler Module +block.basic-assembler-module.name = Alapvető összeszerelő modul block.smite.name = Smite block.malign.name = Malign -block.flux-reactor.name = Flux Reactor -block.neoplasia-reactor.name = Neoplasia Reactor +block.flux-reactor.name = Fluxusreaktor +block.neoplasia-reactor.name = Neopláziareaktor -block.switch.name = Switch -block.micro-processor.name = Micro Processor -block.logic-processor.name = Logic Processor -block.hyper-processor.name = Hyper Processor -block.logic-display.name = Logic Display -block.large-logic-display.name = Large Logic Display -block.memory-cell.name = Memory Cell -block.memory-bank.name = Memory Bank -team.malis.name = Malis -team.crux.name = piros -team.sharded.name = narancssárga -team.derelict.name = elhagyatott -team.green.name = zöld +block.switch.name = Kapcsoló +block.micro-processor.name = Mikroprocesszor +block.logic-processor.name = Logikai processzor +block.hyper-processor.name = Hiperprocesszor +block.logic-display.name = Logikai kijelző +block.large-logic-display.name = Nagy logikai kijelző +block.memory-cell.name = Memóriacella +block.memory-bank.name = Memóriabank -team.blue.name = kék +team.malis.name = Lila +team.crux.name = Piros +team.sharded.name = Narancssárga +team.derelict.name = Szürke +team.green.name = Zöld +team.blue.name = Kék -hint.skip = Átugrás +hint.skip = Kihagyás hint.desktopMove = Használd a [accent][[WASD][] gombokat a mozgáshoz. -hint.zoom = Használd a [accent]görgőt[] a zoomhoz.. +hint.zoom = [accent]Görgess[] a nagyításhoz és kicsinyítéshez. hint.desktopShoot = Használd a [accent]bal egérgombot[] a lövéshez. -hint.depositItems = Az itemeket a hajóról a magra húzva áthelyezheted. -hint.respawn = Hogy hajóként újraéledj, nyomd meg a [accent][[V][] gombot. -hint.respawn.mobile = Átvetted az irányítást egy egység vagy torony felett. Hogy újraéledj hajóként, [accent]érintsd meg az avatárt a bal felső sarokban.[] -hint.desktopPause = Nyomd meg a [accent][[Space][]-t, hogy szüneteltesd vagy folytasd a játékot. -hint.breaking = [accent]Jobb gombot[] nyomva kijelölhetsz lebontandó épületeket. -hint.breaking.mobile = Használd a \ue817 [accent]kalapácsot[] jobb lent és töröld vele az útban lévő épületeket.\n\nTartsd lenyomva az ujjad és húzd, hogy nagyobb területet kijelölj. -hint.blockInfo = View information of a block by selecting it in the [accent]build menu[], then selecting the [accent][[?][] button at the right. -hint.derelict = [accent]Derelict[] structures are broken remnants of old bases that no longer function.\n\nThese structures can be [accent]deconstructed[] for resources. -hint.research = Használd a \ue875 [accent]Kutatás[] gombot, hogy felfedezz új technológiákat. -hint.research.mobile = Használd a \ue875 [accent]Kutatás[] gombot a \ue88c [accent]Menü[]ben, hogy felfedezz új technológiákat. -hint.unitControl = Nyomd le a [accent][[L-ctrl][] billentyőt és [accent]kattints[], hogy átvedd az irányítást szövetséges egységek vagy tornyok felett. -hint.unitControl.mobile = [accent][[Dupla koppintás][]sal átveheted az irányítást szövetséges egységek és tornyok felett. -hint.unitSelectControl = To control units, enter [accent]command mode[] by holding [accent]L-shift.[]\nWhile in command mode, click and drag to select units. [accent]Right-click[] a location or target to command units there. -hint.unitSelectControl.mobile = To control units, enter [accent]command mode[] by pressing the [accent]command[] button in the bottom left.\nWhile in command mode, long-press and drag to select units. Tap a location or target to command units there. -hint.launch = Ha elegendő nyersanyagot gyűjtöttél, [accent]Kilőhetsz[] egy közeli szektorba. Ezt a jobb lent látható \ue827 [accent]Térkép[]en teheted meg. -hint.launch.mobile = Ha elegendő nyersanyagot gyűjtöttél, [accent]Kilőhetsz[] egy közeli szektorba. Ezt a \ue88c [accent]Menü[]ből elérhető \ue827 [accent]Térkép[]en teheted meg. -hint.schematicSelect = Az [accent][[F][] nyomva tartásával kijelölhetsz és másolhastz épületeket.\n\nKattints a [accent][[görgővel][], hogy egy épületet lemásolj. -hint.rebuildSelect = Hold [accent][[B][] and drag to select destroyed block plans.\nThis will rebuild them automatically. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. -hint.conveyorPathfind = Tartsd nyomva a [accent][[L-Ctrl][] billentyűt futószalagok lerakása közben, hogy a játék útvnalat generáljon. -hint.conveyorPathfind.mobile = Enegdélyezd az \ue844 [accent]átlós mód[]ot és tagyél le egyszerre több futószalagot, hogy a játék útvonalat generáljon. -hint.boost = Tartsd nyomva a [accent][[L-Shift][] billentyűt, hogy átrepülj az akadályok felett.\n\nErre nem minden földi egység képes. -hint.payloadPickup = A [accent][[[] gombbal kis épületeket vagy egységeket emelhetsz fel. -hint.payloadPickup.mobile = [accent]Tartsd nyomva az ujjad[] egy kis épületen vagy egségen, hogy felemeld. -hint.payloadDrop = A [accent]][] megnyomásával lerakhatod a terhedet. -hint.payloadDrop.mobile = [accent]Tartsd nyomva az ujjad[] egy üres területen, hogy letedd a terhedet. -hint.waveFire = A [accent]Wave[] tornyok, ha víz van bennük, automatikusan eloltják a közeli tüzeket. -hint.generator = \uf879 A [accent]Combustion Generator[] szenet éget, és átadja az áramot a vele érintkező épületeknek.\n\n Áramot nagyobb távolságra is szállíthatsz \uf87f [accent]Power Node[]-ok segítségével. -hint.guardian = Az [accent]Őrző[]knek páncélja van. A gyenge lövedékeknek, mint a [accent]Copper[] vagy a [accent]Lead[] [scarlet]nincs hatásuk[].\n\nHasználj magasabb szintű tornyokat vagy \uf835 [accent]Graphite[] lövedéket a \uf861Duo/\uf859Salvo tornyokba, hogy leszedd az Őrzőket. -hint.coreUpgrade = A magot fejlesztheted, ha [accent]magasabb sintű magot teszel rá[].\n\nHelyezz egy [accent]Foundation[] magot a [accent]Shard[] magra. Figyelj rá, hogy ne legyenek az új mag területén épületek. -hint.presetLaunch = A szürke [accent]kampány szektorok[]ba, amilyen például a [accent]Frozen Forest[], bárhonnan kilőhetsz. Nem kell szomszédos területtel rendelkezned.\n\nA [accent]számozott szektorok[], mint ez is, [accent]opcionálisak[]. -hint.presetDifficulty = This sector has a [scarlet]high enemy threat level[].\nLaunching to such sectors is [accent]not recommended[] without proper technology and preparation. -hint.coreIncinerate = Ha a magodban egy nyersanyag elérte a maximumot, a beérkező ilyen nyersanyagaid azonnal [accent]megsemmisítésre kerülnek[]. -hint.factoryControl = To set a unit factory's [accent]output destination[], click a factory block while in command mode, then right-click a location.\nUnits produced by it will automatically move there. -hint.factoryControl.mobile = To set a unit factory's [accent]output destination[], tap a factory block while in command mode, then tap a location.\nUnits produced by it will automatically move there. -gz.mine = Move near the \uf8c4 [accent]copper ore[] on the ground and click to begin mining. -gz.mine.mobile = Move near the \uf8c4 [accent]copper ore[] on the ground and tap it to begin mining. -gz.research = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nClick on a copper patch to place it. -gz.research.mobile = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nTap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. -gz.conveyors = Research and place \uf896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. -gz.conveyors.mobile = Research and place \uf896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nHold down your finger for a second and drag to place multiple conveyors. -gz.drills = Expand the mining operation.\nPlace more Mechanical Drills.\nMine 100 copper. -gz.lead = \uf837 [accent]Lead[] is another commonly used resource.\nSet up drills to mine lead. -gz.moveup = \ue804 Move up for further objectives. -gz.turrets = Research and place 2 \uf861 [accent]Duo[] turrets to defend the core.\nDuo turrets require \uf838 [accent]ammo[] from conveyors. -gz.duoammo = Supply the Duo turrets with [accent]copper[], using conveyors. -gz.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace \uf8ae [accent]copper walls[] around the turrets. -gz.defend = Enemy incoming, prepare to defend. -gz.aa = Flying units cannot easily be dispatched with standard turrets.\n\uf860 [accent]Scatter[] turrets provide excellent anti-air, but require \uf837 [accent]lead[] as ammo. -gz.scatterammo = Supply the Scatter turret with [accent]lead[], using conveyors. -gz.supplyturret = [accent]Supply Turret -gz.zone1 = This is the enemy drop zone. -gz.zone2 = Anything built in the radius is destroyed when a wave starts. -gz.zone3 = A wave will begin now.\nGet ready. -gz.finish = Build more turrets, mine more resources,\nand defend against all the waves to [accent]capture the sector[]. -onset.mine = Click to mine \uf748 [accent]beryllium[] from walls.\n\nUse [accent][[WASD] to move. -onset.mine.mobile = Tap to mine \uf748 [accent]beryllium[] from walls. -onset.research = Open the \ue875 tech tree.\nResearch, then place a \uf73e [accent]turbine condenser[] on the vent.\nThis will generate [accent]power[]. -onset.bore = Research and place a \uf741 [accent]plasma bore[].\nThis automatically mines resources from walls. -onset.power = To [accent]power[] the plasma bore, research and place a \uf73d [accent]beam node[].\nConnect the turbine condenser to the plasma bore. -onset.ducts = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\nClick and drag to place multiple ducts.\n[accent]Scroll[] to rotate. -onset.ducts.mobile = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\n\nHold down your finger for a second and drag to place multiple ducts. -onset.moremine = Expand the mining operation.\nPlace more Plasma Bores and use beam nodes and ducts to support them.\nMine 200 beryllium. -onset.graphite = More complex blocks require \uf835 [accent]graphite[].\nSet up plasma bores to mine graphite. -onset.research2 = Begin researching [accent]factories[].\nResearch the \uf74d [accent]cliff crusher[] and \uf779 [accent]silicon arc furnace[]. -onset.arcfurnace = The arc furnace needs \uf834 [accent]sand[] and \uf835 [accent]graphite[] to create \uf82f [accent]silicon[].\n[accent]Power[] is also required. -onset.crusher = Use \uf74d [accent]cliff crushers[] to mine sand. -onset.fabricator = Use [accent]units[] to explore the map, defend buildings, and attack the enemy. Research and place a \uf6a2 [accent]tank fabricator[]. -onset.makeunit = Produce a unit.\nUse the "?" button to see selected factory requirements. -onset.turrets = Units are effective, but [accent]turrets[] provide better defensive capabilities if used effectively.\nPlace a \uf6eb [accent]Breach[] turret.\nTurrets require \uf748 [accent]ammo[]. -onset.turretammo = Supply the turret with [accent]beryllium ammo.[] -onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. -onset.enemies = Enemy incoming, prepare to defend. -onset.attack = The enemy is vulnerable. Counter-attack. -onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. -onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. -split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) -split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) -split.acquire = You must acquire some tungsten to build units. -split.build = Units must be transported to the other side of the wall.\nPlace two [accent]Payload Mass Drivers[], one on each side of the wall.\nSet up the link by pressing one of them, then selecting the other. -split.container = Similar to the container, units can also be transported using a [accent]Payload Mass Driver[].\nPlace a unit fabricator adjacent to a mass driver to load them, then send them across the wall to attack the enemy base. +hint.depositItems = A nyersanyagokat húzással helyezheted át a drónból a támaszpontba. +hint.respawn = Ahhoz, hogy drónként újraéledj, nyomd meg a [accent][[V][] gombot. +hint.respawn.mobile = Átvetted az irányítást egy egység vagy épület felett. Ahhoz, hogy drónként újraéledj, [accent]koppints a profilképre a bal felső sarokban.[] +hint.desktopPause = Nyomd meg a [accent][[Szóközt][] a játék szüneteltetéséhez vagy folytatásához. +hint.breaking = [accent]Jobb egérgombbal[] és húzással lebonthatod a blokkokat. +hint.breaking.mobile = Használd a jobb alsó sarokban lévő \ue817 [accent]kalapács[] gombot a blokkok törléséhez.\n\nTartsd lenyomva az ujjad és húzd, hogy nagyobb területet tudj kijelölni. +hint.blockInfo = Egy blokk információinak megtekintéséhez válaszd ki az épületet az [accent]építési menüben[], majd válaszd a [accent][[?][] gomb jobb oldalt. +hint.derelict = Az [accent]elhagyatott[] szerkezetek régi bázisok maradványai, amelyek már nem működnek.\n\nEzeket az épületeket le lehet [accent]bontani[] nyersanyagokért, vagy meg is lehet javítani őket. +hint.research = Használd a \ue875 [accent]Technológia fa[] gombot, hogy új technológiákat fedezz fel. +hint.research.mobile = Használd a \ue875 [accent]Technológia fa[] gombot a \ue88c [accent]menüben[], hogy új technológiákat fedezz fel. +hint.unitControl = Nyomd le a [accent][[bal Ctrl][] gombot, és kattints [accent]jobb egérgombbal[] a baráti egység vagy lövegtorony irányításához. +hint.unitControl.mobile = [accent][[Dupla koppintással][] a szövetséges egységek vagy lövegtornyok kézileg irányíthatóak. +hint.unitSelectControl = Az egységek irányításához lépj be [accent]parancs módba[] a [accent]bal Shift[] lenyomva tartásával.\nParancs módban az egységek kijelöléséhez kattints, és húzd az egeret. A [accent]jobb egérgombbal[] küldd az egységeket a helyszínre vagy a célponthoz. +hint.unitSelectControl.mobile = Az egységek irányításához lépj be [accent]parancs módba[] a bal alsó sarokban lévő [accent]parancs[] gombbal.\nParancs módban az egységek kiválasztásához érintsd meg a kijelzőt és húzással jelöld ki az egységeket. Koppintással küldd az egységeket a helyszínre vagy a célponthoz. +hint.launch = Ha elegendő nyersanyagot gyűjtöttél össze, akkor [accent]lődd ki[] a támaszpontot a következő szektorba, úgy, hogy megnyitod a \ue827 [accent]Bolygótérképet[] a jobb alsó sarokban, és átforgatod az új helyszínre. +hint.launch.mobile = Ha elegendő nyersanyagot gyűjtöttél össze, akkor [accent]lődd ki[] el a támaszpontot egy közeli szektorba, úgy, hogy kiválasztasz egy szektort a \ue88c [accent]Menüben[] a \ue827 [accent]Bolygótérképről[]. +hint.schematicSelect = Tartsd nyomja az [accent][[F][] gombot több épület kijelöléséhez és másolásához.\n\n[accent][[Középső kattintással][] egy adott blokktípus másolható. +hint.rebuildSelect = Tartsd nyomva a [accent][[B][] gombot és húzással jelöld ki a megsemmisített blokkterveket.\nEz automatikusan újraépíti őket. +hint.rebuildSelect.mobile = Válaszd a \ue874 másolás gombot, majd koppints az \ue80f újjáépítés gombra, és húzd a megsemmisült blokktervek kijelöléséhez.\nEz automatikusan újraépíti őket. +hint.conveyorPathfind = Tartsd nyomva a [accent][[bal Ctrl][] gombot a szállítószalagok lerakása közben, hogy a játék útvonalat állítson elő. +hint.conveyorPathfind.mobile = Engedélyezd az \ue844 [accent]átlós módot[], és tegyél le egyszerre több szállítószalagot, hogy a játék útvonalat állítson elő. +hint.boost = Tartsd nyomva a [accent][[bal Shift][] gombot, hogy átrepülj az akadályok felett.\n\nErre csak néhány földi egység képes. +hint.payloadPickup = Nyomd meg a [accent][[[] gombot a kis blokkok vagy egységek felemeléséhez. +hint.payloadPickup.mobile = [accent]Koppints és tartsd lenyomva az ujjad[] egy kis blokk vagy egység felemeléséhez. +hint.payloadDrop = Nyomd le a [accent]][] gombot a rakomány lerakásához. +hint.payloadDrop.mobile = [accent]Koppints és tartsd lenyomva az ujjad[] egy üres területen a rakomány lerakásához. +hint.waveFire = A vizet lőszerként használó [accent]Wave[] lövegtornyok automatikusan eloltják a közeli tüzeket. +hint.generator = Az \uf879 [accent]égetőerőmű[] szenet éget, és áramot ad át a vele érintkező épületeknek.\n\nAz áramszállítás távolsága [accent]villanyoszlopokkal[] növelhető. +hint.guardian = Az [accent]Őrzők[] páncélozottak. A gyenge lövedékek, mint a [accent]réz[] vagy az [accent]ólom[] [scarlet]nem hatásosak[] az Őrző páncéljával szemben.\n\nHasználj magasabb szintű lövegtornyokat, vagy \uf835 [accent]grafitot[] a Duo/\uf859Salvo lövegtornyokban, hogy leszedd az Őrzőket. +hint.coreUpgrade = A támaszpont úgy fejleszthető, hogy [accent]magasabb szintű támaszpontot teszel rá[].\n\nHelyezz egy \uf868 [accent]Alapítvány[] támaszpontot a \uf869 [accent]Szilánk[] támaszpontra. Figyelj rá, hogy ne legyenek az új támaszpont területén épületek. +hint.presetLaunch = A szürke [accent]landolási zónát tartalmazó szektorokba[], amilyen például a [accent]Fagyott erdő[], bárhonnan kilőhetsz. Nem szükséges hozzá szomszédos területet elfoglalnod.\n\nA [accent]számozott szektorok[], mint ez is, [accent]nem kötelezők[]. +hint.presetDifficulty = Ebben a szektorban [scarlet]magas az ellenséges fenyegetettségi szint[].\nAz ilyen szektorokba való indulás [accent]nem ajánlott[] megfelelő technológia és felkészülés nélkül. +hint.coreIncinerate = Ha a támaszpont egy nyersanyagból elérte a maximumot, a beérkező további nyersanyagok azonnal [accent]megsemmisítésre kerülnek[]. +hint.factoryControl = Egy egységgyár [accent]kimeneti célpontjának[] beállításához kattints parancs módban egy gyárépületre, majd kattints jobb egérgombbal egy helyre.\nAz előállított egységek automatikusan odamennek. +hint.factoryControl.mobile = Egy egységgyár [accent]kimeneti célpontjának[] beállításához koppints parancs módban egy gyárépületre, majd koppints egy helyre.\nAz előállított egységek automatikusan odamennek. -item.copper.description = Széleskörűen felhasználható építkezésre és lövedékként. -item.copper.details = Szokatlanul elterjedt fém a Serpulón. Gyenge szerkezetű, de megerősíthető. -item.lead.description = Folyadékszállításban és elektromos eszközökben használható. -item.lead.details = Sűrű. Közömbös. Széles körben használják elemekben.\nMegjegyzés: Valószínűleg mérgező a biológiai életformákra. Nem mintha sok maradt volna errefelé. -item.metaglass.description = Folyadékok szállítására és tárolására használható. -item.graphite.description = Elektromos alkatrészek alapanyaga és lövedék. -item.sand.description = Egyéb finom nyersanyagok gyártási alapanyaga. -item.coal.description = Tüzelőanyag és gyártási alapanyag. -item.coal.details = Fosszílizálódott növényi anyagnak tűnik, jóval a "seeding event" előttről. -item.titanium.description = Folyadékok szállítására, fúrókban és légi járművekben használható. -item.thorium.description = Strapabíró szerkezetekben használható nukleáris tüzelőanyagként. -item.scrap.description = Olvasztással és porítással finom nyersanyagok nyerhetők ki belőle. +gz.mine = Menj a földön lévő \uf8c4 [accent]rézérc[] közelébe, és kattints a bányászat megkezdéséhez. +gz.mine.mobile = Menj a földön lévő \uf8c4 [accent]rézérc[] közelébe, és koppints a bányászat megkezdéséhez. +gz.research = Nyisd meg a \ue875 Technológia fát.\nFejleszd ki a \uf870 [accent]Mechanikus fúrót[], majd válaszd ki a jobb alsó sarokban lévő menüből.\nKattints egy rézfoltra az elhelyezéséhez. +gz.research.mobile = Nyisd meg a \ue875 Technológia fát.\nFejleszd ki a \uf870 [accent]Mechanikus fúrót[], majd válaszd ki a jobb alsó sarokban lévő menüből.\nKattints egy rézfoltra az elhelyezéséhez.\n\nA megerősítéshez nyomd meg a jobb alsó sarokban lévő \ue800 [accent]pipát[]. +gz.conveyors = Fejleszd ki, és építs \uf896 [accent]Szállítószalagokat[], hogy a kitermelt\nnyersanyagokat eljuttasd a fúróktól a támaszpontba.\n\nKattints és húzd az egeret, hogy több szállítószalagot helyezz el.\nHasználd a [accent]görgőt[] a forgatáshoz. +gz.conveyors.mobile = Fejleszd ki, és építs \uf896 [accent]Szállítószalagokat[], hogy a kitermelt\nnyersanyagokat eljuttasd a fúróktól a támaszpontba.\n\nTartsd lenyomva az ujjad és húzd el, hogy több szállítószalagot helyezz el. +gz.drills = Bővítsd a bányászati kapacitást.\nÉpíts több mechanikus fúrót.\nBányássz 100 rezet. +gz.lead = Az \uf837 [accent]ólom[] egy másik gyakran használt nyersanyag.\nÉpíts fúrókat az ólom kitermelésére. +gz.moveup = \ue804 Menj tovább a további utasításokért. +gz.turrets = Fejleszd ki, és építs két \uf861 [accent]Duo[] lövegtornyot, hogy megvédd a támaszpontot.\nA Duo lövegtornyoknak \uf838 [accent]lőszerre[] van szükségük, mely szállítószalaggal juttatható el hozzájuk. +gz.duoammo = Szállítószalagok segítségével lásd el [accent]rézzel[] a Duo lövegtornyokat. +gz.walls = A [accent]falak[] megakadályozhatják, hogy az épületekben károk keletkezzenek.\nÉpíts \uf8ae [accent]Rézfalakat[] a lövegtornyok köré. +gz.defend = Az ellenség közeledik, készülj fel a védekezésre. +gz.aa = A repülő egységeket nem lehet könnyen elintézni a hagyományos lövegtornyokkal.\nA \uf860 [accent]Scatter[] lövegtornyok kiváló légelhárítást biztosítanak, de lőszerként \uf837 [accent]ólomra[] van szükségük. +gz.scatterammo = Szállítószalagok segítségével lásd el \uf837 [accent]ólommal[] a Scatter lövegtornyokat. +gz.supplyturret = [accent]Lövegtorony ellátása +gz.zone1 = Ez az ellenség leszállóhelye. +gz.zone2 = Bármi, ami a hatósugarában épült, elpusztul, amikor egy hullám elindul. +gz.zone3 = Egy hullám most kezdődik.\nKészülj fel. +gz.finish = Építs több lövegtornyot, bányássz több nyersanyagot,\nés védekezz az ellenséges hullámok ellen, hogy [accent]elfoglald a szektort[]. + +onset.mine = Kattints bal egérgombbal a \uf748 [accent]berillium[] kibányászáshoz a falakból.\n\nA mozgáshoz használd a [accent][[WASD] gombokat. +onset.mine.mobile = Koppints a \uf748 [accent]berillium[] kibányászáshoz a falakból. +onset.research = Nyisd meg a \ue875 Technológia fát.\nFejleszd ki, és építs egy \uf73e [accent]Kondenzációs turbinát[] a kürtőn.\nEz [accent]áramot[] fog termelni. +onset.bore = Fejleszd ki, és építs egy \uf741 [accent]Plazmafúrót[].\nEz automatikusan bányássza ki a nyersanyagokat a falakból. +onset.power = Ahhoz, hogy [accent]árammal[] lásd el a plazmafúrót, fejleszd ki, és helyezz el egy \uf73d [accent]Sugárcsomópontot[].\nSegítségükkel összekötheted a kondenzációs turbinát a plazmafúróval. +onset.ducts = Fejleszd ki, és építs \uf799 [accent]Szállítószalagot[], hogy a kitermelt nyersanyagokat eljuttasd a plazmafúrótól a támaszpontba.\nKattints, és húzd az egeret több szállítószalag elhelyezéséhez.\nHasználd a [accent]görgőt[] a forgatáshoz. +onset.ducts.mobile = Fejleszd ki, és építs \uf799 [accent]Szállítószalagot[], hogy a kitermelt nyersanyagokat eljuttasd a plazmafúrótól a támaszpontba.\n\nTartsd lenyomva az ujjad és húzd el, hogy több szállítószalagot helyezz el. +onset.moremine = Bővítsd a bányászati kapacitást.\nHelyezz el több plazmavágót, és a támogatásukhoz használj sugárcsomópontokat és szállítószalagokat.\nBányássz 200 berilliumot. +onset.graphite = Az összetettebb épületekhez \uf835 [accent]grafit[] szükséges.\nÉpíts plazmavágókat a grafit kibányászásához. +onset.research2 = Kezdd el a [accent]gyárak[] fejlesztését.\nFejleszd ki a \uf74d [accent]Sziklazúzót[] és a \uf779 [accent]Szilícium ívkemencét[]. +onset.arcfurnace = A szilícium ívkemencének \uf834 [accent]homokra[] és \uf835 [accent]grafitra[] van szüksége, hogy \uf82f [accent]szilíciumot[] gyártson.\nTovábbá [accent]áram[] is szükséges a működéséhez. +onset.crusher = Használj \uf74d [accent]Sziklazúzókat[], hogy homokot bányász. +onset.fabricator = Használd az [accent]egységeket[], hogy felfedezd a pályát, megvédd az épületeket, és megtámadhasd velük az ellenséget. Fejleszd ki, és helyezz el egy \uf6a2 [accent]Tankgyártót[]. +onset.makeunit = Állíts elő egy egységet.\nHasználd a „?” gombot, hogy megnézd a kiválasztott gyár követelményeit. +onset.turrets = Az egységek hatékonyak, de hatásosan alkalmazva a [accent]lövegtornyok[] jobb védelmi képességeket biztosítanak.\nHelyezz el egy \uf6eb [accent]Breach[] lövegtornyot.\nA lövegtornyoknak \uf748 [accent]lőszerre[] van szüksége. +onset.turretammo = Szállítótalagok használatával lásd el a lövegtornyokat [accent]berillium[] lőszerrel. +onset.walls = A [accent]falak[] megakadályozhatják, hogy az épületekben károk keletkezzenek.\nÉpíts \uf6ee [accent]Berillium falakat[] a lövegtornyok körül. +onset.enemies = Az ellenség közeledik, készülj fel a védekezésre. +onset.defenses = [accent]Állíts fel védelmet:[lightgray] {0} +onset.attack = Az ellenség most sebezhető. Indítsd ellentámadást. +onset.cores = Új támaszpont csak a [accent]támaszpontcsempére[] helyezhető.\nAz új támaszpontok előretolt bázisként működnek, és megosztják a nyersanyagkészletüket más támaszpontokkal.\nHelyezz el egy \uf725 támaszpontot. +onset.detect = Az ellenség 2 percen belül észrevesz téged.\nÁllíts fel védelmet, bányászatot és termelést. +onset.commandmode = Tartsd nyomva a [accent]Shift[] gombot, hogy [accent]parancs módba[] lépj.\n[accent]Bal egérgombbal és húzással[] lehet egységeket kijelölni.\n[accent]Jobb egérgombbal[] az egységek mozgásra vagy támadásra utasíthatóak. +onset.commandmode.mobile = Nyomd meg a [accent]parancs gombot[], hogy [accent]parancs módba[] lépj.\nTartsd nyomva az ujjad, majd [accent]húzd[] az egységek kiválasztásához.\n[accent]Koppintással[] az egységek mozgásra vagy támadásra utasíthatóak. +aegis.tungsten = Volfrámot [accent]Ütvefúróval[] lehet bányászni.\nEnnek az épületnek [accent]vízre[] és [accent]áramra[] van szüksége. + +split.pickup = Egyes blokkok a támaszpont drónjával is felvehetőek.\nVedd fel ezt a [accent]konténert[] és helyezd egy [accent]rakománycsomagolóba[].\n(A felvétel és lerakás alapértelmezett gombjai: [[ és ].) +split.pickup.mobile = Egyes blokkok a támaszpont drónjával is felvehetőek.\nVedd fel ezt a [accent]konténert[] és helyezd egy [accent]rakománycsomagolóba[].\n(A felvételhez és lerakáshoz nyomd meg hosszan.) +split.acquire = Az egységek építéséhez volfrámot kell szerezned. +split.build = Az egységeket a fal másik oldalára kell eljuttatni.\nÉpíts két [accent]Rakomány-tömegmozgatót[], egyet-egyet a fal mindkét oldalán.\nÁllítsd be a szállítási kapcsolatukat úgy, hogy kiválasztod az egyiket, majd kiválasztod a másikat. +split.container = A konténerekhez hasonlóan, az egységek is szállíthatóak a [accent]Rakomány-tömegmozgatóval[].\nÉpíts egy egységgyárat egy tömegmozgató mellé, hogy feltöltsd őket, majd küldd át őket a falon, hogy megtámadják az ellenséges bázist. + +item.copper.description = Széleskörűen használatos építkezésnél és lőszerként. +item.copper.details = Réz. Szokatlanul bőségesen elterjedt fém a Serpulón. Megerősítés nélkül strukturálisan gyenge. +item.lead.description = Folyadékszállításnál és elektromos eszközökben használatos. +item.lead.details = Sűrű. Közömbös. Széles körben használatos az akkumulátorokban.\nMegjegyzés: Valószínűleg mérgező a biológiai életformákra. Nem mintha sok maradt volna errefelé. +item.metaglass.description = Folyadékszállító és -tárolóépületeknél használatos. +item.graphite.description = Elektromos alkatrészekben és lőszerként használatos. +item.sand.description = Egyéb finomított nyersanyagok gyártása során használatos. +item.coal.description = Tüzelőanyagként és finomított nyersanyagok gyártásához használatos. +item.coal.details = Fosszilizálódott növényi anyagnak tűnik, jóval a „spóra incidens” előttről. +item.titanium.description = Folyadékszállító épületekben, fúrókban és gyárakban használatos. +item.thorium.description = Strapabíró szerkezetekben használatos nukleáris fűtőanyag. +item.scrap.description = Olvasztókban és porítókban használatos már nyersanyagok finomításához. item.scrap.details = Ősi építmények és egységek hátrahagyott maradványai. -item.silicon.description = Napelemek, összetett áramkörök és nyomkövető lövedékek fontos alapanyaga. Sosincs elég. -item.plastanium.description = Fejlett egységek alapanyagaként, hőszigetelésre és repeszes lövedékekhez használható. -item.phase-fabric.description = Fejlett elektromos eszközökben és önjavító szerkezetekben használható. -item.surge-alloy.description = Magas szintű fegyverzetekben és aktív védelemhez használható. -item.spore-pod.description = Átalakítható olajjá vagy robbanószerekké, de használható tüzelőanyagként is. -item.spore-pod.details = Spórák. Egy valószínűleg mesterséges életforma. Más életformák számára halálos gázt bocsátanak ki. Szélsőségesen invazív. Megfelelő körülmények között erősen gyúlékony. -item.blast-compound.description = Bombák és robbanó lövedékek része. -item.pyratite.description = Gyújtó lövedékekben és tüzelőanyag-alapú generátorokban használható. -item.beryllium.description = Used in many types of construction and ammunition on Erekir. -item.tungsten.description = Used in drills, armor and ammunition. Required in the construction of more advanced structures. -item.oxide.description = Used as a heat conductor and insulator for power. -item.carbide.description = Used in advanced structures, heavier units, and ammunition. +item.silicon.description = Napelemekben, összetett áramkörökben és nyomkövető lőszerekben használatos. +item.plastanium.description = Fejlett egységek alapanyagaként, hőszigetelésben és repeszlövedékekben használatos. +item.phase-fabric.description = Fejlett elektromos eszközökben és önjavító épületekben használatos. +item.surge-alloy.description = Fejlett fegyverzetekhez és aktív védelmi épületekhez használatos. +item.spore-pod.description = Olajjá, robbanószerré és tüzelőanyaggá alakításhoz használatos. +item.spore-pod.details = Spórák. Valószínűleg egy mesterséges életforma. Más életformák számára halálos gázt bocsátanak ki. Szélsőségesen invazív. Megfelelő körülmények között erősen gyúlékony. +item.blast-compound.description = Bombákhoz és robbanólövedékekhez használatos. +item.pyratite.description = Gyújtólövedékekben és tüzelőanyag-alapú generátorokban használatos. -liquid.water.description = Gépek hűtésére és hulladékfeldolgozásra használható. -liquid.slag.description = Separatorban finomítva értékes fémek forrása, az ellenségre fröcskölve gyilkos fegyver. -liquid.oil.description = Magas szintű nyersanyagok gyártására vagy gyújtólövedékként használható. -liquid.cryofluid.description = Hűtőfolyadék reaktorok, tornyok és gyárak számára. -liquid.arkycite.description = Used in chemical reactions for power generation and material synthesis. -liquid.ozone.description = Used as an oxidizing agent in material production, and as fuel. Moderately explosive. -liquid.hydrogen.description = Used in resource extraction, unit production and structure repair. Flammable. -liquid.cyanogen.description = Used for ammunition, construction of advanced units, and various reactions in advanced blocks. Highly flammable. -liquid.nitrogen.description = Used in resource extraction, gas creation and unit production. Inert. -liquid.neoplasm.description = A dangerous biological byproduct of the Neoplasia reactor. Quickly spreads to any adjacent water-containing block it touches, damaging them in the process. Viscous. -liquid.neoplasm.details = Neoplasm. An uncontrollable mass of rapidly-dividing synthetic cells with a sludge-like consistency. Heat-resistant. Extremely dangerous to any structures involving water.\n\nToo complex and unstable for standard analysis. Potential applications unknown. Incineration in slag pools is recommended. -block.derelict = \uf77e [lightgray]Derelict -block.armored-conveyor.description = Nyersanyagokat továbbít. Nem fogad el nyersanyagot oldalról. +#Erekir +item.beryllium.description = Sokféle épület- és lőszertípushoz használatos az Erekiren. +item.tungsten.description = Fúrókban, páncélokban és lőszerben használatos. A fejlettebb épületek építéséhez szükséges. +item.oxide.description = Hővezetőként és szigetelőként is használatos az áramtermelésben. +item.carbide.description = Fejlett szerkezetekben, nehezebb egységekhez és lőszerként használatos. + +liquid.water.description = Gépek hűtéséhez és törmelékfeldolgozáshoz használatos. +liquid.slag.description = Leválasztóban alkotófémekre finomítható. Folyadékot használó tornyokban lőszerként használható. +liquid.oil.description = Fejlett nyersanyagok gyártásához és gyújtólövedékhez használatos. +liquid.cryofluid.description = Reaktorokban, lövegtornyokban és gyárakban használatos hűtőfolyadékként. + +#Erekir +liquid.arkycite.description = Kémiai reakciókban használatos energiatermelésre és anyagszintézisre. +liquid.ozone.description = Az anyaggyártásban oxidálószerként, illetve üzemanyagként használatos. Mérsékelten robbanékony. +liquid.hydrogen.description = A nyersanyagok kitermelésében, egységgyártásban és szerkezetjavításban használatos. Gyúlékony. +liquid.cyanogen.description = Lőszerként, fejlett egységek építéséhez és különböző reakciókhoz használatos a fejlett blokkokban. Erősen gyúlékony. +liquid.nitrogen.description = A nyersanyagok kitermelésénél, gáztermelésnél és egységgyártásnál is használatos. Semleges gáz. +liquid.neoplasm.description = A neoplázia reaktor veszélyes biológiai mellékterméke. Gyorsan átterjed minden szomszédos víztartalmú blokkra, amelyhez hozzáér, és közben károsítja azokat. Sűrű folyadék. +liquid.neoplasm.details = Neoplazma. Egy kontrollálhatatlan, gyorsan osztódó, iszap állagú, szintetikus sejtmassza. Hőálló. Rendkívül veszélyes minden vízzel kapcsolatos szerkezetre.\n\nTúl összetett és instabil a szabványos elemzésekhez. Potenciális alkalmazási területe ismeretlen. A salakmedencékben való elégetés ajánlott. + +block.derelict = \uf77e [lightgray]Elhagyatott +block.armored-conveyor.description = Nyersanyagokat szállít. Nem fogad el oldalról nem szállítószalagról érkező nyersanyagot. block.illuminator.description = Világít. -block.message.description = Üzenetet tárol szövetségesek kommunikációjához. -block.reinforced-message.description = Stores a message for communication between allies. -block.world-message.description = A message block for use in mapmaking. Cannot be destroyed. -block.graphite-press.description = Szenet présel grafittá. -block.multi-press.description = Szenet présel grafittá. Hatékonyan dolgozik, de vizet igényel hűtéshez. -block.silicon-smelter.description = Szilíciumot nyer ki homok és szén keverékéből. -block.kiln.description = Ólmomból és homokból olvaszt ólomüveget. -block.plastanium-compressor.description = Plastaniumot gyárt olaj és titán felhasználásával. -block.phase-weaver.description = Phase fabricot szintetizál tórium és homok keverékéből. -block.surge-smelter.description = Titán, ólom, szilícium és réz olvadékából állít elő surge alloy-t. -block.cryofluid-mixer.description = Finom titánport kever vízhez cryofluid előállításához. -block.blast-mixer.description = Piratitból és spóra kapszulákból készít robbanóelegyet. -block.pyratite-mixer.description = Szenet, homokot és ólmot vegyít piratittá. -block.melter.description = Hulladékot olvaszt salakká. -block.separator.description = Szétbontja a salakot ásványi összetevőire. -block.spore-press.description = Nagy nyomáson olajat présel spórákból. -block.pulverizer.description = Finom homokká őrli a hulladékot. -block.coal-centrifuge.description = Szenet nyer ki olajból. +block.message.description = Üzenetet tárol a szövetségesek kommunikációjához. +block.reinforced-message.description = Üzenetet tárol a szövetségesek közötti kommunikációhoz. +block.world-message.description = A pályakészítésben használható üzenetblokk. Nem lehet megsemmisíteni. +block.graphite-press.description = Grafittá préseli a szenet. +block.multi-press.description = Grafittá sajtolja a szenet. Hűtése vizet igényel. +block.silicon-smelter.description = A homokot és a szenet szilíciummá finomítja. +block.kiln.description = Ólomüveget olvaszt az ólomból és a homokból. +block.plastanium-compressor.description = Olaj és titán felhasználásával műanyagot gyárt. +block.phase-weaver.description = Tórium és homok keverékéből tóritkvarcot állít elő. +block.surge-smelter.description = Titán, ólom, szilícium és réz ötvözésével elektrometált állít elő. +block.cryofluid-mixer.description = Finom titánpor vízhez keverésével hűtőfolyadékot állít elő. +block.blast-mixer.description = Robbanóelegyet készít a piratitból és a spórakapszulákból. +block.pyratite-mixer.description = Piratittá vegyíti a szenet, a homokot és az ólmot. +block.melter.description = Salakká olvasztja a törmeléket. +block.separator.description = Ásványi összetevőire bontja a salakot. +block.spore-press.description = Olajat sajtol a spórakapszulából. +block.pulverizer.description = Finom homokká őrli a törmeléket. +block.coal-centrifuge.description = Szénné alakítja az olajat. block.incinerator.description = Megsemmisít minden nyersanyagot és folyadékot. block.power-void.description = Elnyel minden áramot. Csak homokozó módban. block.power-source.description = Végtelen áramot termel. Csak homokozó módban. -block.item-source.description = Végtelen nyersanyagot bocsát ki. Csak homokozó módban. +block.item-source.description = Végtelen nyersanyagot termel. Csak homokozó módban. block.item-void.description = Megsemmisít minden nyersanyagot. Csak homokozó módban. -block.liquid-source.description = Végtelen folyadékot bocsát ki. Csak homokozó módban. +block.liquid-source.description = Végtelen folyadékot termel. Csak homokozó módban. block.liquid-void.description = Megsemmisít minden folyadékot. Csak homokozó módban. -block.payload-source.description = Infinitely outputs payloads. Sandbox only. -block.payload-void.description = Destroys any payloads. Sandbox only. +block.payload-source.description = Végtelen rakományt termel. Csak homokozó módban. +block.payload-void.description = Megsemmisít minden rakományt. Csak homokozó módban. block.copper-wall.description = Megvédi az épületeket az ellenséges lövedékektől. block.copper-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől. block.titanium-wall.description = Megvédi az épületeket az ellenséges lövedékektől. block.titanium-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől. -block.plastanium-wall.description = Megvédi az épületeket az ellenséges lövedékektől. Elnyeli a lézereket és elektromos szikrákat. Gátolja a villanyvezetékek automatikus kapcsolódását. -block.plastanium-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől. Elnyeli a lézereket és elektromos szikrákat. Gátolja a villanyvezetékek automatikus kapcsolódását. +block.plastanium-wall.description = Megvédi az épületeket az ellenséges lövedékektől. Elnyeli a lézereket és az elektromos szikrákat. Gátolja a villanyvezetékek automatikus kapcsolódását. +block.plastanium-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől. Elnyeli a lézereket és az elektromos szikrákat. Gátolja a villanyvezetékek automatikus kapcsolódását. block.thorium-wall.description = Megvédi az épületeket az ellenséges lövedékektől. block.thorium-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől. block.phase-wall.description = Megvédi az épületeket az ellenséges lövedékektől, a legtöbb lövedék visszapattan róla. block.phase-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől, a legtöbb lövedék visszapattan róla. block.surge-wall.description = Megvédi az épületeket az ellenséges lövedékektől, periodikusan elektromos kisüléseket generál, ha hozzáérnek. block.surge-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől, periodikusan elektromos kisüléseket generál, ha hozzáérnek. -block.door.description = Fal, amit nyitni és zárni lehet. -block.door-large.description = Fal, amit nyitni és zárni lehet. De ez nagyobb. -block.mender.description = Javítja az épületeket a hatókörén belül.\nSzilíciummal növelhető a hatósugara és hatékonysága. -block.mend-projector.description = Javítja az épületeket a hatókörén belül.\nSzilíciummal növelhető a hatósugara és hatékonysága. -block.overdrive-projector.description = Növeli a közeli épületek sebességét.\nPhase fabric-kal növelhető a hatósugara és hatékonysága. -block.force-projector.description = Creates a hexagonal force field around itself, protecting buildings and units inside from damage.\nOverheats if too much damage is sustained. Optionally uses coolant to prevent overheating. Phase fabric increases shield size. +block.door.description = Nyitható és zárható fal. +block.door-large.description = Nyitható és zárható fal. +block.mender.description = Időnként javítja a közeli épületeket.\nSzilíciummal növelhető a hatósugara és hatékonysága. +block.mend-projector.description = Javítja a közeli épületeket.\nTóritkvarccal növelhető a hatósugara és hatékonysága. +block.overdrive-projector.description = Növeli a közeli épületek termelési sebességét.\nTóritkvarccal növelhető a hatósugara és hatékonysága. +block.force-projector.description = Hatszögletű erőteret hoz létre maga körül, amely megvédi az épületeket és a benne lévő egységeket a sérüléstől.\nTúlmelegszik, ha túl sok sérülést szenved. Hűtőfolyadékot használva megakadályozható a túlmelegedés. A tóritkvarc növeli a pajzs méretét. block.shock-mine.description = Elektromos kisülést hoz létre, ha ellenséggel érintkezik. -block.conveyor.description = Futószalag. Nyersanyagokat továbbít. -block.titanium-conveyor.description = Nyersanyagokat továbbít. Gyorsabb a sima futószalagnál. -block.plastanium-conveyor.description = Nyersanyagokat szállít tömbösítve. Hátulról fogadja a nyersanyagokat, elöl három irányba szétosztja őket. Több kezdő- és végponttal növelhető az áteresztőképessége. -block.junction.description = Hídként működik két kereszteződő futószalag között. +block.conveyor.description = Nyersanyagokat szállít. +block.titanium-conveyor.description = Nyersanyagokat szállít. Gyorsabb a sima szállítószalagnál. +block.plastanium-conveyor.description = Nyersanyagokat szállít tömbösítve. Hátulról fogadja a nyersanyagokat, elöl három irányba osztja szét őket. Több kezdő- és végponttal növelhető az áteresztőképessége. +block.junction.description = Hídként működik két egymást keresztező szállítószalag között. block.bridge-conveyor.description = Nyersanyagokat szállít épületek és terepakadályok fölött. -block.phase-conveyor.description = Nyersanyagokat szállít épületek és terepakadályok fölött. Nagyobb távolságra ér, mint a sima bridge conveyor, de áramot használ. +block.phase-conveyor.description = Nyersanyagokat szállít épületek és terepakadályok fölött. Nagyobb távolságra ér, mint a sima szállítószalaghíd, de áramot igényel. block.sorter.description = Csak a kiválasztott nyersanyagot engedi tovább egyenesen, minden mást oldalra ad ki. -block.inverted-sorter.description = A kiválasztott nyersanyagot oldalra adja ki, minden mást egyenesen enged tovább. -block.router.description = Háromfelé osztja szét a beérkező nyersanyagokat. -block.router.details = Pokoli masina. Ne tedd közvetlenül gyárak mellé, mert az épületek termékei eltömítik. -block.distributor.description = Hétfelé osztja szét a beérkező nyersanyagokat. -block.overflow-gate.description = Csak akkor ad ki nyersanyagot oldalra, ha előrefelé már nem tud. Nem használható közvetlenül owerflow gate vagy underflow gate mellett. -block.underflow-gate.description = Csak akkor enged tovább nyersanyagokat előre, ha oldalra már nem tudja kiadni őket. Nem használható közvetlenül owerflow gate vagy underflow gate mellett. -block.mass-driver.description = Nagy hatótávolságú nyeranyagszállító. Csomagokban lő át nyersanyagokat egy másik mass drivernek. -block.mechanical-pump.description = Folyadékot szivattyúz. Nem igényel áramot. -block.rotary-pump.description = Folyadékot szivattyúz. Árammal működik. -block.impulse-pump.description = Folyadékot szivattyúz. Sokat termel, sok áramot fogyaszt. -block.conduit.description = Folyadékot továbbít. -block.pulse-conduit.description = Folyadékot továbbít. Gyorsabb és nagyobb tárolókapacitású, mint a sima conduit. -block.plated-conduit.description = Folyadékot továbbít. Nem fogad el folyadékot oldalról. Nem önti ki a folyadékot, ha nincs a végén semmi. -block.liquid-router.description = Háromfelé osztja szét a beérkező folyadékot. Bizonyos mennyiség tárolására is képes. -block.liquid-container.description = Stores a sizeable amount of liquid. Outputs to all sides, similarly to a liquid router. -block.liquid-tank.description = Nagy mennyiségű folyadékot tárol, minden oldalán képes leadni. -block.liquid-junction.description = Hídként működik két kereszteződő conduit között. +block.inverted-sorter.description = Hasonló a szokásos válogatóhoz, de a kiválasztott nyersanyagot oldalra adja ki. +block.router.description = Egyenletesen háromfelé osztja szét a beérkező nyersanyagokat. +block.router.details = Egy szükséges rossz. Nem ajánlott termelőegységek mellett használni, mert a kimenet eltömíti. +block.distributor.description = Egyenletesen hétfelé osztja szét a beérkező nyersanyagokat. +block.overflow-gate.description = Csak akkor ad ki nyersanyagot oldalra, ha előrefelé már nem tud. +block.underflow-gate.description = A túlcsorduló kapu ellentettje. Csak akkor ad ki nyersanyagot előrefelé, ha oldalra már nem tud. +block.mass-driver.description = Nagy hatótávolságú nyersanyagszállító eszköz. Rakományokat gyűjt össze, és átlövi egy másik, hozzákapcsolt tömegmozgatónak. +block.mechanical-pump.description = Folyadékot szivattyúz és ad ki. Nem igényel áramot. +block.rotary-pump.description = Folyadékot szivattyúz és ad ki. Áramot igényel. +block.impulse-pump.description = Folyadékot szivattyúz és ad ki. +block.conduit.description = Folyadékot szállít. Szivattyúkkal és egyéb csővezetékekkel együtt használatos. +block.pulse-conduit.description = Folyadékot szállít. Gyorsabban szállít, és nagyobb tárolókapacitású, mint a szokásos csővezeték. +block.plated-conduit.description = Folyadékot szállít. Nem fogad el folyadékot oldalról. Nem szivárog, ha nincs a végén semmi. +block.liquid-router.description = Egyenletesen háromfelé osztja szét a beérkező folyadékot. Bizonyos mennyiség tárolására is képes. +block.liquid-container.description = Jelentős mennyiségű folyadékot tárol. Minden oldalon kiadja, hasonlóan a folyadékelosztóhoz. +block.liquid-tank.description = Nagy mennyiségű folyadékot tárol. Minden oldalon kiadja, hasonlóan a folyadékelosztóhoz. +block.liquid-junction.description = Hídként működik két egymást keresztező csővezeték között. block.bridge-conduit.description = Folyadékot szállít épületek és terepakadályok fölött. -block.phase-conduit.description = Folyadékot szállít épületek és terepakadályok fölött. Nagyobb távolságr ér, mint a sima bridge conduit, de áramot használ. -block.power-node.description = Áramot továbbít az összekapcsolt épületekhez. Az érintkező épületekkel automatikusan kapcsolatban van. -block.power-node-large.description = Nagyobb power node nagyobb hatótávolsággal. -block.surge-tower.description = Hosszútávú power node, csak kevés kapcsolatra képes. -block.diode.description = Tárolt áramot irányít át egy irányba, de csak ha a fogadó oldalon van kevesebb tárolva. -block.battery.description = Áramot raktároz el, ha túltermelés van. Leadja az áramot, ha hiány van. -block.battery-large.description = Áramot raktároz el, ha túltermelés van. Leadja az áramot, ha hiány van. Nagyobb kapacitású a sima battery-nél. -block.combustion-generator.description = Áramot termel éghető anyagok elégetésével. +block.phase-conduit.description = Folyadékot szállít épületek és terepakadályok fölött. Nagyobb távolságra ér, mint a sima csővezetékhíd, de áramot igényel. +block.power-node.description = Áramot vezet az összekapcsolt csomópontokhoz. A szomszédos blokkokkal automatikusan kapcsolatban van. +block.power-node-large.description = Nagyobb villanyoszlop, nagyobb hatótávolsággal. +block.surge-tower.description = Hosszútávú villanyoszlop, kevesebb elérhető kapcsolattal. +block.diode.description = Az eltárolt áramot irányítja egy irányba továbbítja, de csak akkor, ha a fogadó oldalon kevesebb van tárolva. +block.battery.description = Áramot tárol el, ha túltermelés van. Leadja az áramot, ha hiány van. +block.battery-large.description = Áramot tárol el, ha túltermelés van. Leadja az áramot, ha hiány van. Nagyobb kapacitású a szokásos akkumulátornál. +block.combustion-generator.description = Áramot termel éghető anyagok, például szén, elégetésével. block.thermal-generator.description = Forró környezetben áramot termel. -block.steam-generator.description = Áramot termel éghető anyagok elégetésével és víz gőzzé alakításával. -block.differential-generator.description = Egy lórúgásnyi áramot termel. Hasznosítja a cryofluid és az égő piratit hőmérsékletkülönbségét. -block.rtg-generator.description = A radioaktív bomlás energiáját hasznosítja, hogy lassan de biztosan áramot termeljen. +block.steam-generator.description = Éghető anyagok elégetésével és víz gőzzé alakításával áramot termel. +block.differential-generator.description = Nagy mennyiségű áramot termel. A hűtőfolyadék és az égő piratit hőmérséklet-különbségét használja ki. +block.rtg-generator.description = A radioaktív bomlás energiáját hasznosítja, hogy lassan, de biztosan áramot termeljen. block.solar-panel.description = Napfényből állít elő kevés áramot. -block.solar-panel-large.description = Napfényből állít elő kevés áramot. Hatékonyabb a sima solar panelnél. -block.thorium-reactor.description = Jelentős áramot állít elő tóriumból. Állandó hűtést igényel. Ha túlmelegszik, felrobban. -block.impact-reactor.description = Csúcsra járatva rengeteg áramot termel. Jelentős árambefektetést igényel a reakció beindításához. -block.mechanical-drill.description = Ércre helyezve kis tempóban termeli ki az adott nyersanyagot. Csak alapvető nyersanyagok kitermelésére képes. -block.pneumatic-drill.description = Egy fejlettebb drill, képes titán kitermelésére. Gyorsabban dolgozik a mechanical drillnél. -block.laser-drill.description = Lézerek használatával még gyorsabban tud dolgozni, de áramot használ. Képes tóriumot kitermelni. -block.blast-drill.description = A technológia csúcsa. Rengeteg áramot használ. -block.water-extractor.description = Képes a talajvíz kiszívására. Használd, ha nincs elérhető víz a felszínen. +block.solar-panel-large.description = Napfényből állít elő kevés áramot. Hatékonyabb a szokásos napelemnél. +block.thorium-reactor.description = Jelentős mennyiségű áramot állít elő tóriumból. Állandó hűtést igényel. Ha nincs megfelelően hűtőfolyadékkal ellátva, akkor felrobban. +block.impact-reactor.description = Csúcsra járatva rengeteg áramot termel. A reakció beindítása jelentős árambefektetést igényel. +block.mechanical-drill.description = Ércre helyezve lassú tempóban termeli ki az adott nyersanyagot. Csak alapvető nyersanyagok kitermelésére képes. +block.pneumatic-drill.description = Egy fejlettebb fúró, mely titán kitermelésére is képes. Gyorsabban dolgozik a mechanikus fúrónál. +block.laser-drill.description = Lézerek használatával még gyorsabban tud dolgozni, de áramot igényel. Képes tóriumot kitermelni. +block.blast-drill.description = A technológia csúcsa. Nagy mennyiségű áramot igényel. +block.water-extractor.description = Kiszivattyúzza a talajvizet. Olyan helyeken használatos, ahol nem érhető el felszíni vízforrás. block.cultivator.description = A légkörben szálló spórákat kapszulákba sűríti. -block.cultivator.details = Visszaszerzett technológia. Hatalmas tömegű biomassza gyártására alkalmas a lehető leghatékonyabban. Valószínűleg a Serpulót ma borító spórák kezdeti inkubátora. -block.oil-extractor.description = Nagy mennyiségben használ vizet, homokot és áramot, hogy olajat nyerjen ki a földből. -block.core-shard.description = A bázis magja. Ha elpusztul, a szektor elveszett. -block.core-shard.details = Az első modell. Kompakt. Önsokszorosító. Egyszer használatós gyorsítófúvókákkal van felszerelve, nem bolygóközi utazásra tervezték. -block.core-foundation.description = A bázis magja. Páncélozott. Több nyersanyagot tárol, mint a shard. +block.cultivator.details = Visszaszerzett technológia. Hatalmas tömegű biomassza gyártására alkalmas a lehető leghatékonyabban. Valószínűleg a Serpulo felszínét ma borító spórák kezdeti inkubátora. +block.oil-extractor.description = Nagy mennyiségű áramot, homokot és vizet használ, hogy olajat fúrjon. +block.core-shard.description = Támaszpont. Ha elpusztul, a szektor elveszett. +block.core-shard.details = Az első modell. Kompakt. Önsokszorosító. Egyszer használatos indítórakétákkal van felszerelve, nem bolygóközi utazásra tervezték. +block.core-foundation.description = Támaszpont. Jól páncélozott. Több nyersanyagot tárol, mint a Szilánk. block.core-foundation.details = A második modell. -block.core-nucleus.description = A bázis magja. Megerősített páncélzat. Hatalmas mennyiségek tárolására képes. +block.core-nucleus.description = Támaszpont. Rendkívül jól páncélozott. Hatalmas mennyiségű nyersanyag tárolására képes. block.core-nucleus.details = A harmadik, végső modell. -block.vault.description = Nagy mennyiséget tárol minden nyersanyagtípusból. A tartalma unloader segítségével nyerhető ki. -block.container.description = Kis mennyiséget tárol minden nyersanyagtípusból. A tartalma unloader segítségével nyerhető ki. -block.unloader.description = Kitölti a szomszédos épületekből a kiválasztott nyersanyagot. +block.vault.description = Nagy mennyiséget tárol minden nyersanyagtípusból. Bővíti a raktárat, ha egy támaszpont mellé van helyezve. A tartalma kirakodó segítségével nyerhető ki. +block.container.description = Kis mennyiséget tárol minden nyersanyagtípusból. Bővíti a raktárat, ha egy támaszpont mellé van helyezve. A tartalma kirakodó segítségével nyerhető ki. +block.unloader.description = Kirakodja a szomszédos épületekből a kiválasztott nyersanyagot. block.launch-pad.description = Nyersanyagokat juttat el más szektorokba. -block.launch-pad.details = Sub-orbital system for point-to-point transportation of resources. Payload pods are fragile and incapable of surviving re-entry. +block.launch-pad.details = Szuborbitális rendszer a nyersanyagok szektorok között történő szállítására. A teherkapszulák törékenyek, ezért nem képesek túlélni a légkörbe való visszatérést. block.duo.description = Változatos lövedékekkel lő az ellenségre. -block.scatter.description = Ólom, ólomüveg vagy hulladék darabokkal tüzel az ellenséges légierőre. +block.scatter.description = Ólom-, törmelék- vagy ólomüvegdarabokat lő az ellenséges légijárművekre. block.scorch.description = Megégeti az ellenség közeli földi egységeit. Kis távolságra nagyon hatékony. -block.hail.description = Kis lemezeketFires small shells at ground enemies over long distances. -block.wave.description = Folyadékot önt az ellenségre. Eloltja a tüzet, ha vízzel van feltöltve. +block.hail.description = Kis lövedékeket lő ki nagy távolságokra lévő földi célpontokra. +block.wave.description = Folyadékot önt az ellenségre. Eloltja a tüzeket, ha vízzel van ellátva. block.lancer.description = Erős energiasugarakat lő közeli földi célpontokra. block.arc.description = Elektromos szikrákat kelt földi célpontok között. block.swarmer.description = Nyomkövető rakétákat lő az ellenségre. -block.salvo.description = Kis sorozatokat lő az ellenségre. -block.fuse.description = Három kis hatótávú átütő töltényt lő egyszerre. -block.ripple.description = Lövedékek csoportjával tüzel földi célpontokra nagy távolságra. +block.salvo.description = Gyors sorozatokat lő az ellenségre. +block.fuse.description = Három kis hatótávolságú, átütő erejű lövedéket lő a közeli ellenségre. +block.ripple.description = Lövedékek csoportjával tüzel nagy távolságra lévő földi célpontokra. block.cyclone.description = Robbanó lövedékeket lő közeli ellenségekre. -block.spectre.description = Nagy, a páncélon is áthatoló lövedékekkel tüzel légi és földi célpontokra is. -block.meltdown.description = Feltöltődés után folyamatos lézersugarat lő a közeli ellenségekre. Hűtést igényel. -block.foreshadow.description = Fires a large single-target bolt over long distances. -block.repair-point.description = Folyamatosan gyógyítja a legközelebbi sérült egységet a körzetében. +block.spectre.description = Nagy lövedékekkel tüzel légi és földi célpontokra. +block.meltdown.description = Feltöltődés után folyamatos lézersugarat lő a közeli ellenségekre. A működéséhez hűtőfolyadékot igényel. +block.foreshadow.description = Egy nagy villámot lő ki egy nagy távolságra lévő célpontra. A magasabb maximális életerővel rendelkező ellenségeket részesíti előnyben. +block.repair-point.description = Folyamatosan javítja a legközelebbi sérült egységet a közelében. block.segment.description = Megsemmisíti a beérkező lövedékeket. A lézerrel szemben hatástalan. -block.parallax.description = Vonónyalábot bocsát ki, amivel magához vonzza és sebzi a repülő egységeket. -block.tsunami.description = Erős folyadékhullámokat lő az ellenségre. Eloltja a tüzet, ha vízzel van feltöltve. -block.silicon-crucible.description = Szilíciumot finomít homokból és szénből, piratitot használ kiegészítő hőforrásként. Forró környezetben hatékonyabb. -block.disassembler.description = Ritka ásványi elemeket választ ki salakból. Képes tóriumot kiválasztani. -block.overdrive-dome.description = Megnöveli a környező épületek sebességét. Phase fabricot és szilíciumot igényel. -block.payload-conveyor.description = Képes egységeket továbbítani. -block.payload-router.description = Háromfelé osztja szét a beérkező egységeket. -block.ground-factory.description = Földi egységeket gyárt. A kész egységek használhatók azonnal, vagy reconstructorokban fejleszthetők. -block.air-factory.description = Légi egységeket gyárt. A kész egységek használhatók azonnal, vagy reconstructorokban fejleszthetők. -block.naval-factory.description = Vízi egységeket gyárt. A kész egységek használhatók azonnal, vagy reconstructorokban fejleszthetők. +block.parallax.description = Vonónyalábot bocsát ki, amivel magához vonzza, és közben sebzi a légi egységeket. +block.tsunami.description = Erős folyadékhullámot lő az ellenségre. Eloltja a tüzeket, ha vízzel van ellátva. +block.silicon-crucible.description = Szilíciumot finomít homokból és szénből, piratitot használ kiegészítő hőforrásként. Forró környezetben még hatékonyabb. +block.disassembler.description = Ritka ásványi összetevőket válogat ki a salakból, alacsony hatékonysággal. Képes tóriumot kiválogatni. +block.overdrive-dome.description = Megnöveli a környező épületek termelési sebességét. A működtetése tóritkvarcot és szilíciumot igényel. +block.payload-conveyor.description = Nagy méretű terhet mozgat, például gyárakból érkező egységeket. Mágneses. Használható súlytalanságban. +block.payload-router.description = Háromfelé osztja szét a beérkező terhet. Rendezőként is szolgál, ha van megadva szűrő. Mágneses. Használható súlytalanságban. +block.ground-factory.description = Földi egységeket gyárt. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. +block.air-factory.description = Légi egységeket gyárt. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. +block.naval-factory.description = Vízi egységeket gyárt. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. block.additive-reconstructor.description = Kettes szintre fejleszti a beérkező egységeket. block.multiplicative-reconstructor.description = Hármas szintre fejleszti a beérkező egységeket. block.exponential-reconstructor.description = Négyes szintre fejleszti a beérkező egységeket. -block.tetrative-reconstructor.description = Ötös szintre fejleszti a beérkező egységeket. -block.switch.description = Kétállású kapcsoló. Az állapota leolvasható és módosítható processzorokkal. -block.micro-processor.description = Logikai műveletek sorozatát hajtja végre végtelenítve. Használható egységek vagy épületek irányítására is. -block.logic-processor.description = Logikai műveletek sorozatát hajtja végre végtelenítve. Használható egységek vagy épületek irányítására is. Gyorsabb a micro processornál. -block.hyper-processor.description = Logikai műveletek sorozatát hajtja végre végtelenítve. Használható egységek vagy épületek irányítására is. Gyorsabb a logic processornál. -block.memory-cell.description = Információt tárol processzorok számára. -block.memory-bank.description = Információt tárol processzorok számára. Nagyobb kapacitású. -block.logic-display.description = Ábrák rajzolhatók rá processzorral. -block.large-logic-display.description = Ábrák rajzolhatók rá processzorral. -block.interplanetary-accelerator.description = Hatalmas elektromágneses gyorsítótorony. Képes magokat szökési sebességre gyorsítani bolygóközi bevetéshez. -block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. -block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. -block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. -block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. -block.breach.description = Fires piercing beryllium or tungsten ammunition at enemy targets. -block.diffuse.description = Fires a burst of bullets in a wide cone. Pushes enemy targets back. -block.sublimate.description = Fires a continuous jet of flame at enemy targets. Pierces armor. -block.titan.description = Fires a massive explosive artillery shell at ground targets. Requires hydrogen. -block.afflict.description = Fires a massive charged orb of fragmentary flak. Requires heating. -block.disperse.description = Fires bursts of flak at aerial targets. -block.lustre.description = Fires a slow-moving single-target laser at enemy targets. -block.scathe.description = Launches a powerful missile at ground targets over vast distances. -block.smite.description = Fires bursts of piercing, lightning-emitting bullets. -block.malign.description = Fires a barrage of homing laser charges at enemy targets. Requires extensive heating. -block.silicon-arc-furnace.description = Refines silicon from sand and graphite. -block.oxidation-chamber.description = Converts beryllium and ozone into oxide. Emits heat as a by-product. -block.electric-heater.description = Heats facing blocks. Requires large amounts of power. -block.slag-heater.description = Heats facing blocks. Requires slag. -block.phase-heater.description = Heats facing blocks. Requires phase fabric. -block.heat-redirector.description = Redirects accumulated heat to other blocks. -block.heat-router.description = Spreads accumulated heat in three output directions. -block.electrolyzer.description = Converts water into hydrogen and ozone gas. -block.atmospheric-concentrator.description = Concentrates nitrogen from the atmosphere. Requires heat. -block.surge-crucible.description = Forms surge alloy from slag and silicon. Requires heat. -block.phase-synthesizer.description = Synthesizes phase fabric from thorium, sand, and ozone. Requires heat. -block.carbide-crucible.description = Fuses graphite and tungsten into carbide. Requires heat. -block.cyanogen-synthesizer.description = Synthesizes cyanogen from arkycite and graphite. Requires heat. -block.slag-incinerator.description = Incinerates non-volatile items or liquids. Requires slag. -block.vent-condenser.description = Condenses vent gases into water. Consumes power. -block.plasma-bore.description = When placed facing an ore wall, outputs items indefinitely. Requires small amounts of power. -block.large-plasma-bore.description = A larger plasma bore. Capable of mining tungsten and thorium. Requires hydrogen and power. -block.cliff-crusher.description = Crushes walls, outputting sand indefinitely. Requires power. Efficiency varies based on type of wall. -block.impact-drill.description = When placed on ore, outputs items in bursts indefinitely. Requires power and water. -block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. -block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. -block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. -block.reinforced-liquid-tank.description = Stores a large amount of fluids. -block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. -block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. -block.reinforced-pump.description = Pumps and outputs liquids. Requires hydrogen. -block.beryllium-wall.description = Protects structures from enemy projectiles. -block.beryllium-wall-large.description = Protects structures from enemy projectiles. -block.tungsten-wall.description = Protects structures from enemy projectiles. -block.tungsten-wall-large.description = Protects structures from enemy projectiles. -block.carbide-wall.description = Protects structures from enemy projectiles. -block.carbide-wall-large.description = Protects structures from enemy projectiles. -block.reinforced-surge-wall.description = Protects structures from enemy projectiles, periodically launching electric arcs upon projectile contact. -block.reinforced-surge-wall-large.description = Protects structures from enemy projectiles, periodically launching electric arcs upon projectile contact. -block.shielded-wall.description = Protects structures from enemy projectiles. Deploys a shield that absorbs most projectiles when power is provided. Conducts power. -block.blast-door.description = A wall that opens when allied ground units are in range. Cannot be manually controlled. -block.duct.description = Moves items forward. Only capable of storing a single item. -block.armored-duct.description = Moves items forward. Does not accept non-duct inputs from the sides. -block.duct-router.description = Distributes items equally across three directions. Only accepts items from the back side. Can be configured as an item sorter. -block.overflow-duct.description = Only outputs items to the sides if the front path is blocked. -block.duct-bridge.description = Moves items over structures and terrain. -block.duct-unloader.description = Unloads the selected item from the block behind it. Cannot unload from cores. -block.underflow-duct.description = Opposite of an overflow duct. Outputs to the front if the left and right paths are blocked. -block.reinforced-liquid-junction.description = Acts as a junction between two crossing conduits. -block.surge-conveyor.description = Moves items in batches. Can be sped up with power. Conducts power. -block.surge-router.description = Equally distributes items in three directions from surge conveyors. Can be sped up with power. Conducts power. -block.unit-cargo-loader.description = Constructs cargo drones. Drones automatically distribute items to Cargo Unload Points with a matching filter. -block.unit-cargo-unload-point.description = Acts as an unloading point for cargo drones. Accepts items that match the selected filter. -block.beam-node.description = Transmits power to other blocks orthogonally. Stores a small amount of power. -block.beam-tower.description = Transmits power to other blocks orthogonally. Stores a large amount of power. Long-range. -block.turbine-condenser.description = Generates power when placed on vents. Produces a small amount of water. -block.chemical-combustion-chamber.description = Generates power from arkycite and ozone. -block.pyrolysis-generator.description = Generates large amounts of power from arkycite and slag. Produces water as a byproduct. -block.flux-reactor.description = Generates large amounts of power when heated. Requires cyanogen as a stabilizer. Power output and cyanogen requirements are proportional to heat input.\nExplodes if insufficient cyanogen is provided. -block.neoplasia-reactor.description = Uses arkycite, water and phase fabric to generate large amounts of power. Produces heat and dangerous neoplasm as a byproduct.\nExplodes violently if neoplasm is not removed from the reactor via conduits. -block.build-tower.description = Automatically rebuilds structures in range and assists other units in construction. -block.regen-projector.description = Slowly repairs allied structures in a square perimeter. Requires hydrogen. -block.reinforced-container.description = Stores a small amount of items. Contents can be retrieved via unloaders. Does not increase core storage capacity. -block.reinforced-vault.description = Stores a large amount of items. Contents can be retrieved via unloaders. Does not increase core storage capacity. -block.tank-fabricator.description = Constructs Stell units. Outputted units can be used directly, or moved into refabricators for upgrading. -block.ship-fabricator.description = Constructs Elude units. Outputted units can be used directly, or moved into refabricators for upgrading. -block.mech-fabricator.description = Constructs Merui units. Outputted units can be used directly, or moved into refabricators for upgrading. -block.tank-assembler.description = Assembles large tanks out of inputted blocks and units. Output tier may be increased by adding modules. -block.ship-assembler.description = Assembles large ships out of inputted blocks and units. Output tier may be increased by adding modules. -block.mech-assembler.description = Assembles large mechs out of inputted blocks and units. Output tier may be increased by adding modules. -block.tank-refabricator.description = Upgrades inputted tank units to the second tier. -block.ship-refabricator.description = Upgrades inputted ship units to the second tier. -block.mech-refabricator.description = Upgrades inputted mech units to the second tier. -block.prime-refabricator.description = Upgrades inputted units to the third tier. -block.basic-assembler-module.description = Increases assembler tier when placed next to a construction boundary. Requires power. Can be used as a payload input. -block.small-deconstructor.description = Deconstructs inputted structures and units. Returns 100% of the build cost. -block.reinforced-payload-conveyor.description = Moves payloads forward. -block.reinforced-payload-router.description = Distributes payloads into adjacent blocks. Functions as a sorter when a filter is set. -block.payload-mass-driver.description = Long-range payload transport structure. Shoots received payloads to linked payload mass drivers. -block.large-payload-mass-driver.description = Long-range payload transport structure. Shoots received payloads to linked payload mass drivers. -block.unit-repair-tower.description = Repairs all units in its vicinity. Requires ozone. -block.radar.description = Gradually uncovers terrain and enemy units in a large radius. Requires power. -block.shockwave-tower.description = Damages and destroys enemy projectiles in a radius. Requires cyanogen. -block.canvas.description = Displays a simple image with a pre-defined palette. Editable. +block.tetrative-reconstructor.description = Ötös szintre (a végsőre) fejleszti a beérkező egységeket. +block.switch.description = Kétállású kapcsoló. Az állapota logikai processzorokkal olvasható és vezérelhető. +block.micro-processor.description = Logikai műveletek sorozatát hajtja végre egy ciklusban. Egységek vagy épületek irányítására használható. +block.logic-processor.description = Logikai műveletek sorozatát hajtja végre egy ciklusban. Egységek vagy épületek irányítására használható. Gyorsabb mint a mikroprocesszor. +block.hyper-processor.description = Logikai műveletek sorozatát hajtja végre egy ciklusban. Egységek vagy épületek irányítására használható. Gyorsabb mint a logikai processzor. +block.memory-cell.description = Információt tárol egy logikai processzor számára. +block.memory-bank.description = Információt tárol egy logikai processzor számára. Nagy kapacitású. +block.logic-display.description = Tetszőleges ábrákat jelenít meg egy logikai processzor alapján. +block.large-logic-display.description = Tetszőleges ábrákat jelenít meg egy logikai processzor alapján. +block.interplanetary-accelerator.description = Hatalmas elektromágneses sínágyútorony. Képes a támaszpontokat szökési sebességre gyorsítani a bolygóközi bevetéshez. +block.repair-turret.description = Folyamatosan javítja a közelében lévő legközelebbi sérült egységet. Opcionálisan elfogad hűtőfolyadékot. -unit.dagger.description = Egyszerű töltényeket lő közeli ellenségekre +#Erekir +block.core-bastion.description = Támaszpont. Páncélozott. Ha elpusztul, a szektor elveszett. +block.core-citadel.description = Támaszpont. Nagyon jól páncélozott. Több nyersanyagot tárol, mint a Bástya. +block.core-acropolis.description = Támaszpont. Kivételesen jól páncélozott. Több nyersanyagot tárol, mint a Citadella. +block.breach.description = Átütő erejű berillium- vagy volfrámlövedéket lő az ellenséges célpontokra. +block.diffuse.description = Széles kúpban lő ki lövedékeket. Visszalöki az ellenséges célpontokat. +block.sublimate.description = Folyamatos lángcsóvát lő az ellenséges célpontokra. Átüti a páncélt. +block.titan.description = Hatalmas robbanóanyagú tüzérségi lövedéket lő földi célpontokra. Hidrogént igényel. +block.afflict.description = Hatalmas töltésű repeszlövedék-gömböket lő ki. Hőt igényel. +block.disperse.description = Égő repeszlövedékeket lő légi célpontokra. +block.lustre.description = Lassan mozgó, egyszerre egy célpontra ható lézert lő az ellenséges célpontokra. +block.scathe.description = Nagy erejű rakétát indít jelentős távolságokra lévő földi célpontok ellen. +block.smite.description = Átütő erejű, villámló lövedékeket lő ki. +block.malign.description = Lézertöltetekből álló célzott sortüzet zúdít az ellenséges célpontokra. Jelentős fűtést igényel. +block.silicon-arc-furnace.description = A homokot és a grafitot szilíciummá finomítja. +block.oxidation-chamber.description = A berilliumot és az ózont oxiddá alakítja. Melléktermékként hőt bocsát ki. +block.electric-heater.description = Fűti a vele szemben álló épületeket. Nagy mennyiségű áramot igényel. +block.slag-heater.description = Fűti a vele szemben álló épületeket. Salakot igényel. +block.phase-heater.description = Fűti a vele szemben álló épületeket. Tóritkvarcot igényel. +block.heat-redirector.description = Más blokkokba irányítja a felgyülemlett hőt. +block.heat-router.description = A felgyülemlett hőt három kimeneti irányba osztja. +block.electrolyzer.description = A vizet hidrogénné és ózonná alakítja. A keletkező gázokat két ellentétes irányba adja ki, melyeket a megfelelő színek jelölik. +block.atmospheric-concentrator.description = Koncentrálja a légkörben lévő nitrogént. Hőt igényel. +block.surge-crucible.description = Salakból és szilíciumból elektrometált olvaszt. Hőt igényel. +block.phase-synthesizer.description = Tóriumból, homokból és ózonból tóritkvarcot szintetizál. Hőt igényel. +block.carbide-crucible.description = A grafitot és a volfrámot karbiddá olvasztja. Hőt igényel. +block.cyanogen-synthesizer.description = Arkicitből és grafitból diciánt szintetizál. Hőt igényel. +block.slag-incinerator.description = Elégeti a nem illékony nyersanyagokat vagy folyadékokat. Salakot igényel. +block.vent-condenser.description = A kürtőkből kiáramló gázokat vízzé kondenzálja. Áramot igényel. +block.plasma-bore.description = Ércfallal szemben elhelyezve, korlátlanul termel nyersanyagokat. Kis mennyiségű áramot igényel.\nHidrogén felhasználásával növelhető a hatékonysága. +block.large-plasma-bore.description = Egy nagyobb plazmafúró. Képes a volfrám és a tórium bányászatára. Hidrogént és áramot igényel.\nNitrogén felhasználásával növelhető a hatékonysága. +block.cliff-crusher.description = Felőrli a falakat, és korlátlan mennyiségű homokot termel. Áramot igényel. A hatékonysága a fal típusától függően változik. +block.impact-drill.description = Ha ércre helyezik, korlátlan ideig, sorozatokban termeli ki a nyersanyagokat. Áramot és vizet igényel. +block.eruption-drill.description = Továbbfejlesztett ütvefúró. Képes tóriumot bányászni. Hidrogént igényel. +block.reinforced-conduit.description = Előre szállítja a folyadékokat. Nem fogad nem csővezetékes bemeneteket oldalról. +block.reinforced-liquid-router.description = Egyenletesen osztja el a folyadékokat minden oldalra. +block.reinforced-liquid-tank.description = Nagy mennyiségű folyadékot tárol. +block.reinforced-liquid-container.description = Jelentős mennyiségű folyadékot tárol. +block.reinforced-bridge-conduit.description = Folyadékot szállít épületek és terepakadályok fölött. +block.reinforced-pump.description = Folyadékot szivattyúz és ad ki. Hidrogént igényel. +block.beryllium-wall.description = Megvédi az építményeket az ellenséges lövedékektől. +block.beryllium-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől. +block.tungsten-wall.description = Megvédi az építményeket az ellenséges lövedékektől. +block.tungsten-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől. +block.carbide-wall.description = Megvédi az építményeket az ellenséges lövedékektől. +block.carbide-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől. +block.reinforced-surge-wall.description = Megvédi az építményeket az ellenséges lövedékektől, a lövedékekkel való érintkezésekor időszakosan elektromos íveket bocsát ki. +block.reinforced-surge-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől, a lövedékekkel való érintkezésekor időszakosan elektromos íveket bocsát ki. +block.shielded-wall.description = Megvédi az építményeket az ellenséges lövedékektől. Olyan pajzsot képez, amely a legtöbb lövedéket elnyeli, ha az áramellátás biztosítva van. Vezeti az áramot. +block.blast-door.description = Egy fal, amely kinyílik, ha szövetséges földi egységek vannak a közelében. Kézzel nem irányítható. +block.duct.description = Előre mozgatja a nyersanyagokat. Csak egyetlen nyersanyag tárolására alkalmas. +block.armored-duct.description = Előre mozgatja a nyersanyagokat. Csak szállítószalagos bemeneteket fogad el oldalról. +block.duct-router.description = A nyersanyagokat egyenlően osztja el három irányba. Csak hátulról fogad el nyersanyagokat. Nyersanyagválogatóként is beállítható. +block.overflow-duct.description = Csak akkor ad ki nyersanyagot oldalra, ha előrefelé már nem tud. +block.duct-bridge.description = Nyersanyagokat szállít épületek és terepakadályok fölött. +block.duct-unloader.description = A kiválasztott nyersanyagokat kirakodja a mögötte lévő épületekből. Támaszpontokból nem tud kirakodni. +block.underflow-duct.description = A túlcsorduló szállítószalag ellentettje. Csak akkor ad ki nyersanyagot előrefelé, ha oldalra már nem tud. +block.reinforced-liquid-junction.description = Csomópontként működik két egymást keresztező csővezeték között. +block.surge-conveyor.description = A nyersanyagokat rakományokban mozgatja. Árammal felgyorsítható. Vezeti az áramot. +block.surge-router.description = Egyenletesen osztja el a nyersanyagokat három irányba az elektrometál-szállítószalagról. Árammal felgyorsítható. Vezeti az Áramot. +block.unit-cargo-loader.description = Teherszállító drónokat épít. A drónok automatikusan szétosztják a nyersanyagokat a megfelelő szűrővel rendelkező kirakodási pontokra. +block.unit-cargo-unload-point.description = A teherszállító drónok kirakodási pontjaként működik. Csak a kiválasztott szűrőnek megfelelő nyersanyagokat fogadja be. +block.beam-node.description = Merőlegesen áramot vezet a többi blokkhoz. Kis mennyiségű áramot tárol. +block.beam-tower.description = Merőlegesen áramot vezet a többi blokkhoz. Nagy mennyiségű áramot tárol. Nagy hatótávolságú. +block.turbine-condenser.description = Kürtőkre helyezve áramot termel. Kis mennyiségű vizet termel. +block.chemical-combustion-chamber.description = Áramot termel arkicitből és ózonból. +block.pyrolysis-generator.description = Nagy mennyiségű áramot termel arkicitből és salakból. Melléktermékként vizet termel. +block.flux-reactor.description = Fűtés hatására nagy mennyiségű áramot termel. Stabilizátorként diciánt igényel. Az áramtermelés és a diciánigény arányos a hőbevitellel.\nFelrobban, ha nem áll rendelkezésre elegendő dicián. +block.neoplasia-reactor.description = Arkicit, víz és tóritkvarc felhasználásával nagy mennyiségű áramot termel. Melléktermékként hőt és veszélyes neoplazmát termel.\nFelrobban, ha a neoplazmát nem távolítják el a reaktorból csővezetékeken keresztül. +block.build-tower.description = Automatikusan újjáépíti a hatósugarában lévő építményeket, és segíti a többi egységet az építkezésben. +block.regen-projector.description = Lassan javítja a szövetséges építményeket egy négyzet alakú területen. Hidrogént igényel.\nTóritkvarc felhasználásával növelhető a hatékonysága. +block.reinforced-container.description = Kis mennyiségű nyersanyagot tud tárolni. A tartalma kirakodók segítségével nyerhető ki. Nem növeli a támaszpont tárolókapacitását. +block.reinforced-vault.description = Nagy mennyiségű nyersanyagot tud tárolni. A tartalma kirakodók segítségével nyerhető ki. Nem növeli a támaszpont tárolókapacitását. +block.tank-fabricator.description = Stell egységeket épít. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. +block.ship-fabricator.description = Elude egységeket épít. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. +block.mech-fabricator.description = Merui egységeket épít. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. +block.tank-assembler.description = Nagy méretű tankokat állít össze a beadott blokkokból és egységekből. A kimeneti szint modulok hozzáadásával növelhető. +block.ship-assembler.description = Nagy méretű hajókat állít össze a beadott blokkokból és egységekből. A kimeneti szint modulok hozzáadásával növelhető. +block.mech-assembler.description = Nagy méretű mecheket állít össze a beadott blokkokból és egységekből. A kimeneti szint modulok hozzáadásával növelhető. +block.tank-refabricator.description = Kettes szintre fejleszti a beérkező tank típusú egységeket. +block.ship-refabricator.description = Kettes szintre fejleszti a beérkező hajó típusú egységeket. +block.mech-refabricator.description = Kettes szintre fejleszti a beérkező mech típusú egységeket. +block.prime-refabricator.description = Hármas szintre fejleszti a beérkező tank típusú egységeket. +block.basic-assembler-module.description = Növeli az összeszerelő szintjét, ha annak az építési határvonala mellé helyezik. Áramot igényel. Használható nyersanyagrakomány-bemenetként. +block.small-deconstructor.description = Lebontja a beadott építményeket és egységeket. Visszaadja az építési költség 100%-át. +block.reinforced-payload-conveyor.description = Előre mozgatja a rakományokat. +block.reinforced-payload-router.description = A rakományokat szomszédos a blokkokba osztja szét. Szűrő beállítása esetén válogatóként működik. +block.payload-mass-driver.description = Nagy hatótávolságú rakományszállító épület. A kapott rakományokat egy másik, hozzákapcsolt rakomány-tömegmozgatónak lövi át. +block.large-payload-mass-driver.description = Nagy hatótávolságú rakományszállító épület. A kapott rakományokat egy másik, hozzákapcsolt rakomány-tömegmozgatónak lövi át. +block.unit-repair-tower.description = Javítja a közelében lévő összes egységet. Ózont igényel. +block.radar.description = Fokozatosan feltárja a terepet és az ellenséges egységeket egy nagy sugarú körben. Áramot igényel. +block.shockwave-tower.description = Sérülést okoz és megsemmisíti az ellenséges lövedékeket egy körön belül. Diciánt igényel. +block.canvas.description = Egy egyszerű képet jelenít meg egy előre meghatározott palettával. Szerkeszthető. + +unit.dagger.description = Szokásos lövedékeket lő a közeli ellenségekre. unit.mace.description = Lángnyelveket küld a közeli ellenségek felé. -unit.fortress.description = Nagy hatótávú rakétákat lő földi célpontokra. +unit.fortress.description = Nagy hatótávolságú rakétákat lő földi célpontokra. unit.scepter.description = Töltött lövedékek záporát lövi közeli ellenségekre. -unit.reign.description = Méretes átütő lövedékeket zúdít minden közeli ellenségre. -unit.nova.description = Lézereket lő, amik az ellenséget sebzik, de gyógyítják a szövetségeseket. Repülésre alkalmas. -unit.pulsar.description = Elektromos szikrákat indít, amik az ellenséget sebzik, de gyógyítják a szövetségeseket. Repülésre alkalmas. -unit.quasar.description = Átütő lézersugarakat lő, amik az ellenséget sebzik, de gyógyítják a szövetségeseket. Repülésre alkalmas. Pajzsa van. -unit.vela.description = Folyamatos lézernyalábot bocsát ki, ami sebzi az ellenséget, felgyújtja az épületeiket, de gyógyítja a szövetségeseket. Repülésre alkalmas. -unit.corvus.description = Hatalmas lézersugarat lő, ami ami sebzi az ellenséget, de gyógyítja a szövetségeseket. A legtöbb terepakadályt átlépi. -unit.crawler.description = Az ellenséghez rohan és nagy robbanásban megsemmisíti magát. -unit.atrax.description = Gyengítő salakgolyókat lő a földi célpontokra. A legtöbb terepakadályt átlépi. -unit.spiroct.description = Elszívja az ellenség életerejét, önmagát gyógyítva közben. A legtöbb terepakadályt átlépi. -unit.arkyid.description = Nagy lézernyalábokkal elszívja az ellenség életerejét, önmagát gyógyítva közben. A legtöbb terepakadályt átlépi. -unit.toxopid.description = Nagy elektromos bombákat és átütő lézert lő az ellenségre. A legtöbb terepakadályt átlépi. -unit.flare.description = Egyszerű töltényeket lő közeli földi célpontokra. -unit.horizon.description = Bombákat szór földi célpontokra. +unit.reign.description = Méretes átütő erejű lövedékeket zúdít minden közeli ellenségre. +unit.nova.description = Lézerlövedékeket lő ki, amelyek sebzik az ellenséges célpontokat, és megjavítják a szövetséges épületeket. Repülésre alkalmas. +unit.pulsar.description = Elektromos szikrákat szór, amelyek sebzik az ellenséges célpontokat, és megjavítják a szövetséges épületeket. Repülésre alkalmas. +unit.quasar.description = Átütő erejű lézersugarakat lő, amelyek sebzik az ellenséges célpontokat, és megjavítják a szövetséges épületeket. Repülésre alkalmas. Pajzsa van. +unit.vela.description = Folyamatos lézernyalábot bocsát ki, amelyek sebzik az ellenséges célpontokat, tüzet okoznak, és megjavítják a szövetséges épületeket. Repülésre alkalmas. +unit.corvus.description = Hatalmas lézersugarat lő, amelyek sebzik az ellenséges célpontokat, és megjavítják a szövetséges épületeket. Átlépi a legtöbb terepakadályt. +unit.crawler.description = Az ellenséghez rohan és megsemmisíti önmagát, nagy robbanást okozva. +unit.atrax.description = Bénító salakgolyókat lő a földi célpontokra. A legtöbb terepakadályt átlépi. +unit.spiroct.description = Lézersugarakkal elszívja az ellenséges célpontok életerejét, miközben javítja önmagát. A legtöbb terepakadályt átlépi. +unit.arkyid.description = Nagy lézersugarakkal elszívja az ellenséges célpontok életerejét, miközben javítja önmagát. A legtöbb terepakadályt átlépi. +unit.toxopid.description = Kazettás elektromos bombákat és átütő erejű lézert lő az ellenségre. A legtöbb terepakadályt átlépi. +unit.flare.description = Szokásos lövedékeket lő közeli földi célpontokra. +unit.horizon.description = Kazettás bombákat szór földi célpontokra. unit.zenith.description = Rakétasorozatokat lő közeli ellenségekre. unit.antumbra.description = Lövedékek záporát zúdítja minden közeli ellenségre. -unit.eclipse.description = Két átütő lézersugarat és rengeteg lövedéket zúdít minden közeli ellenségre. -unit.mono.description = Automatikusan bányászik rezet és ólmot a magba juttatva őket. -unit.poly.description = Automatikusan újjáépíti az elpusztult épületeket és segít más egységeknek építkezni. -unit.mega.description = Automatikusan javítja a sérült épületeket. Képes kis épülete és földi egységek szállítására. -unit.quad.description = Nagy bombákat szór földi célpontokra, amik sebzik az ellenséget, de javítják a szövetséges épületeket. Képes közepes méretű földi egységek szállítására. -unit.oct.description = Megvédi a közeli szövetségeseket regeneráló pajzsával. Képes szállítani a legtöbb földi egységet. +unit.eclipse.description = Két átütő erejű lézersugarat és rengeteg lövedéket zúdít minden közeli ellenségre. +unit.mono.description = Automatikusan rezet és ólmot bányászik, a támaszpontba juttatva őket. +unit.poly.description = Automatikusan újjáépíti az elpusztult épületeket és segít más egységeknek az építkezésben. +unit.mega.description = Automatikusan javítja a sérült épületeket. Kis blokkok és földi egységek szállítására képes. +unit.quad.description = Plazmabombákat szór földi célpontokra, amelyek sebzik az ellenséget, de javítják a szövetséges épületeket. Közepes méretű földi egységek szállítására képes. +unit.oct.description = Megvédi a közeli szövetségeseket egy regeneráló pajzssal. A legtöbb földi egység szállítására képes. unit.risso.description = Rakéták és lövedékek záporát zúdítja minden közeli ellenségre. -unit.minke.description = Tüzérségi lövedékeket és egyszerű töltényeket lő közeli föld célpontokra. -unit.bryde.description = Nagytávolságú tüzérségi rakétákat lő az ellenségre. +unit.minke.description = Tüzérségi és szokásos lövedékeket lő közeli földi célpontokra. +unit.bryde.description = Nagy távolságú tüzérségi lövedékeket és rakétákat lő az ellenségre. unit.sei.description = Rakéták és páncéltörő lövedékek záporát zúdítja az ellenségre. -unit.omura.description = Nagy hatótávolságú átütő lövedékeket lő az ellenségre. Flare egységeket gyárt. -unit.alpha.description = Megvédi a Shard core-t az ellenségtől. Épít. -unit.beta.description = Megvédi a Foundation core-t az ellenségtől. Épít. -unit.gamma.description = Megvédi a Nucleus core-t az ellenségtől. Épít. -unit.retusa.description = Fires homing torpedoes at nearby enemies. Repairs allied units. -unit.oxynoe.description = Fires structure-repairing streams of flame at nearby enemies. Targets nearby enemy projectiles with a point defense turret. -unit.cyerce.description = Fires seeking cluster-missiles at enemies. Repairs allied units. -unit.aegires.description = Shocks all enemy units and structures that enter its energy field. Repairs all allies. -unit.navanax.description = Fires explosive EMP projectiles, dealing significant damage to enemy power networks and repairing allied structures. Melts nearby enemies with 4 autonomous laser turrets. -unit.stell.description = Fires standard bullets at enemy targets. -unit.locus.description = Fires alternating bullets at enemy targets. -unit.precept.description = Fires piercing cluster bullets at enemy targets. -unit.vanquish.description = Fires large piercing splitting bullets at enemy targets. -unit.conquer.description = Fires large piercing cascades of bullets at enemy targets. -unit.merui.description = Fires long-range artillery at enemy ground targets. Can step over most terrain. -unit.cleroi.description = Fires dual shells at enemy targets. Targets enemy projectiles with point defense turrets. Can step over most terrain. -unit.anthicus.description = Fires long-range homing missiles at enemy targets. Can step over most terrain. -unit.tecta.description = Fires homing plasma missiles at enemy targets. Protects itself with a directional shield. Can step over most terrain. -unit.collaris.description = Fires long-range fragmenting artillery at enemy targets. Can step over most terrain. -unit.elude.description = Fires pairs of homing bullets at enemy targets. Can float over bodies of liquid. -unit.avert.description = Fires twisting pairs of bullets at enemy targets. -unit.obviate.description = Fires twisting pairs of lightning orbs at enemy targets. -unit.quell.description = Fires long-range homing missiles at enemy targets. Suppresses enemy structure repair blocks. -unit.disrupt.description = Fires long-range homing suppression missiles at enemy targets. Suppresses enemy structure repair blocks. -unit.evoke.description = Builds structures to defend the Bastion core. Repairs structures with a beam. -unit.incite.description = Builds structures to defend the Citadel core. Repairs structures with a beam. -unit.emanate.description = Builds structures to defend the Acropolis core. Repairs structures with beams. -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.wait = Wait a certain number of seconds. -lst.stop = Halt execution of this processor. -lst.lookup = Look up an item/liquid/unit/block type by ID.\nTotal counts of each type can be accessed with:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] -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. -lst.getblock = Get tile data at any location. -lst.setblock = Set tile data at any location. -lst.spawnunit = Spawn unit at a location. -lst.applystatus = Apply or clear a status effect from a uniut. -lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. -lst.explosion = Create an explosion at a location. -lst.setrate = Set processor execution speed in instructions/tick. -lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. -lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. -lst.setrule = Set a game rule. -lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. -lst.cutscene = Manipulate the player camera. -lst.setflag = Set a global flag that can be read by all processors. -lst.getflag = Check if a global flag is set. -lst.setprop = Sets a property of a unit or building. -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.config = 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. -laccess.speed = Top speed of a unit, in tiles/sec. -lcategory.unknown = Unknown -lcategory.unknown.description = Uncategorized instructions. -lcategory.io = Input & Output -lcategory.io.description = Modify contents of memory blocks and processor buffers. -lcategory.block = Block Control -lcategory.block.description = Interact with blocks. -lcategory.operation = Operations -lcategory.operation.description = Logical operations. -lcategory.control = Flow Control -lcategory.control.description = Manage execution order. -lcategory.unit = Unit Control -lcategory.unit.description = Give units commands. -lcategory.world = World -lcategory.world.description = Control how the world behaves. -graphicstype.clear = Fill the display with a color. -graphicstype.color = Set color for next drawing operations. -graphicstype.col = Equivalent to color, but packed.\nPacked colors are written as hex codes with a [accent]%[] prefix.\nExample: [accent]%ff0000[] would be red. -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. +unit.omura.description = Nagy hatótávolságú átütő erejű lövedékeket lő az ellenségre. Flare egységeket gyárt. +unit.alpha.description = Megvédi a Szilánk támaszpontot az ellenségtől. Épületeket épít. +unit.beta.description = Megvédi az Alapítvány támaszpontot az ellenségtől. Épületeket épít. +unit.gamma.description = Megvédi at Atommag támaszpontot az ellenségtől. Épületeket épít. +unit.retusa.description = Célkövető torpedókat lő ki minden közeli ellenségre. Javítja a szövetséges egységeket. +unit.oxynoe.description = Épületjavító lángcsóvát lő az ellenséges célpontokra. Célba veszi az ellenséges lövedékeket egy pontvédelmi toronnyal. +unit.cyerce.description = Célkereső kazettás rakétákat lő ki az ellenségre. Javítja a szövetséges egységeket. +unit.aegires.description = Elektromosan sokkolja az összes ellenséges egységet és építményt, amely az energiamezőjébe lép. Javítja az összes szövetségest. +unit.navanax.description = Robbanékony EMI-lövedékeket lő ki, jelentős károkat okozva az ellenséges energiahálózatokban, és megjavítva a szövetségesek építményeit. Szétolvasztja a közeli ellenséges célpontokat a 4 autonóm lézertornyával. + +#Erekir +unit.stell.description = Szokásos lövedékeket lő ki az ellenséges célpontokra. +unit.locus.description = Változatos lövedékeket lő ki az ellenséges célpontokra. +unit.precept.description = Átütő erejű kazettás lövedékeket lő ki az ellenséges célpontokra. +unit.vanquish.description = Nagy, átütő erejű hasítólövedékeket lő ki az ellenséges célpontokra. +unit.conquer.description = Nagy, átütő erejű golyózáport lő ki az ellenséges célpontokra. +unit.merui.description = Nagy hatótávolságú ágyúkkal lövi az ellenséges szárazföldi célpontokat. A legtöbb terepakadályt átlépi. +unit.cleroi.description = Kettős lövedékeket lő ki az ellenséges célpontokra. Célba veszi az ellenséges lövedékeket a pontvédelmi tornyokkal. A legtöbb terepakadályt átlépi. +unit.anthicus.description = Nagy hatótávolságú célkövető rakétákat lő ki az ellenséges célpontokra. A legtöbb terepakadályt átlépi. +unit.tecta.description = Célkövető plazmarakétákat lő ki az ellenséges célpontokra. Irányított pajzzsal védi magát. A legtöbb terepakadályt átlépi. +unit.collaris.description = Nagy hatótávolságú repeszágyúval lövi az ellenséges célpontokat. A legtöbb terepakadályt átlépi. +unit.elude.description = Célkövető golyópárokat lő ki az ellenséges célpontokra. Lebeg a folyadékfelületeket felett. +unit.avert.description = Forgó lövedékpárokat lő ki az ellenséges célpontokra. +unit.obviate.description = Forgó, páros villámgömböket lő ki az ellenséges célpontokra. +unit.quell.description = Nagy hatótávolságú célkövető rakétát lő ki az ellenséges célpontokra. Elnyomja az ellenséges szerkezetjavító épületeket. Csak földi célpontokat támad. +unit.disrupt.description = Nagy hatótávolságú célkövető elnyomó rakétát lő ki az ellenséges célpontokra. Elnyomja az ellenséges szerkezetjavító épületeket. Csak földi célpontokat támad. +unit.evoke.description = A Bástya védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. 2×2-es épületek szállítására képes. +unit.incite.description = A Citadella védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. 2×2-es épületek szállítására képes. +unit.emanate.description = Az Akropolisz védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. 2×2-es épületek szállítására képes. + +lst.read = Szám kiolvasása egy összekapcsolt memóriacellából. +lst.write = Szám beírása egy összekapcsolt memóriacellába. +lst.print = Szöveg hozzáadása a nyomtatási pufferhez.\nA [accent]Print Flush[] használatáig nem jelenít meg semmit. +lst.format = A szövegpufferben lévő következő helyőrző cseréje egy értékre.\nNem csinál semmit, ha a helyőrzőminta érvénytelen.\nHelyőrzőminta: "{[accent]number 0-9[]}"\nPélda:\n[accent]print "test {0}"\nformat "example" +lst.draw = Művelet hozzáadása a rajzpufferhez.\nA [accent]Draw Flush[] használatáig nem jelenít meg semmit. +lst.drawflush = Sorba állított [accent]Draw[] műveletek megjelenítése a kijelzőn. +lst.printflush = Sorba állított [accent]Print[] műveletek kiírása egy üzenetblokkba. +lst.getlink = A processzor hivatkozásának lekérése index alapján. 0-nál kezdődik. +lst.control = Épület irányítása. +lst.radar = Egységek megkeresése az épület körül egy bizonyos hatótávolságban. +lst.sensor = Adatok lekérése egy épületről vagy egységről. +lst.set = Egy változó beállítása. +lst.operation = Egy művelet elvégzése 1-2 változóval. +lst.end = Ugrás az utasítási verem tetejére. +lst.wait = Várakozás bizonyos számú másodpercig. +lst.stop = A processzor futtatásának leállítása. +lst.lookup = Egy nyersanyag/folyadék/egység/épület típusának keresése azonosító alapján.\nAz egyes típusok összesített száma a következőkkel érhető el:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[]\nA fordított művelethez használd az objektum [accent]@id[] értékét. +lst.jump = Feltételes ugrás egy másik utasításra. +lst.unitbind = Összekapcsolás a következő egységtípussal, és tárolás a következőben: [accent]@unit[]. +lst.unitcontrol = A jelenleg összekapcsolt egység vezérlése. +lst.unitradar = Egységek keresése a jelenleg összekapcsolt egység körül. +lst.unitlocate = Egy adott típusú pozíció/épület keresése bárhol a pályán.\nÖsszekapcsolt egységet igényel. +lst.getblock = Csempeadatok lekérdezése tetszőleges helyen. +lst.setblock = Csempeadatok beállítása tetszőleges helyen. +lst.spawnunit = Egység lerakása az adott helyen. +lst.applystatus = Állapothatás alkalmazása vagy törlése egy egységről. +lst.weathersense = Ellenőrzés, hogy egy bizonyos típusú időjárás aktív-e. +lst.weatherset = Az időjárástípus jelenlegi állapotának megadása. +lst.spawnwave = Egy hullám indítása. +lst.explosion = Robbanás létrehozása az adott helyen. +lst.setrate = A processzor végrehajtási sebességének beállítása utasítás/órajelciklusban. +lst.fetch = Egységek, támaszpontok, játékosok, vagy épületek keresése index szerint.\nAz indexek 0-tól indulnak és a visszaadott számuknál végződnek. +lst.packcolor = Egyetlen számba tömöríti a [0, 1] RGBA komponenseket a rajzoláshoz vagy szabálymeghatározáshoz. +lst.setrule = Játékszabály beállítása. +lst.flushmessage = Üzenet megjelenítése a képernyőn a szövegpufferből.\nMegvárja, amíg az előző üzenet befejeződik. +lst.cutscene = A játékos kamerájának mozgatása. +lst.setflag = Egy globális jelölő beállítása, amely minden processzor által olvasható. +lst.getflag = Ellenőrzés, hogy egy globális jelölő be van-e állítva. +lst.setprop = Beállítja egy egység vagy épület tulajdonságát. +lst.effect = Részecskehatás létrehozása. +lst.sync = Egy változó szinkronizálása a hálózaton keresztül.\nMásodpercenként legfeljebb 20-szor hívható meg. +lst.makemarker = Új logikai jelölő létrehozása a világban.\nMeg kell adni egy azonosítót a jelölő azonosításához.\nA jelölők száma jelenleg világonként 20 000-re van korlátozva. +lst.setmarker = Egy jelölő tulajdonságának beállítása.\nA használt azonosítónak meg kell egyeznie a Make Marker utasításban megadottal.\nA [accent]null []értékek figyelmen kívül lesznek hagyva. +lst.localeprint = Hozzáadja a pálya nyelvi csomagjainak tulajdonságértékét a szövegpufferhez.\nA pálya nyelvi csomagjainak beállításait a térképszerkesztőben ellenőrizheted: [accent]Pályainformációk > Nyelvi csomagok[].\nHa a kliens egy mobileszköz, akkor először próbáld kiíratni a „.mobile” végződésű tulajdonságot. + +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = A pí matematikai állandó (3.141...) +lglobal.@e = Az e matematikai állandó (2.718...) +lglobal.@degToRad = Ezzel a számmal szoroz a fok radiánra való átalakításához +lglobal.@radToDeg = Ezzel a számmal szoroz a radián fokra való átalakításához + +lglobal.@time = A jelenelgi mentés játékideje ezredmásodpercben +lglobal.@tick = Az aktuális mentés játékideje, órajelciklusban (1 másodperc = 60 órajelciklus) +lglobal.@second = A jelenelgi mentés játékideje másodpercben +lglobal.@minute = A jelenelgi mentés játékideje percben +lglobal.@waveNumber = A jelenlegi hullám száma, ha a hullámok engedélyezve vannak +lglobal.@waveTime = Visszaszámláló a hullámokhoz, másodpercben +lglobal.@mapw = A pálya szélessége csempékben +lglobal.@maph = A pálya magassága csempékben + +lglobal.sectionMap = Pálya +lglobal.sectionGeneral = Általános +lglobal.sectionNetwork = Hálózati/kliensoldali [Csak világprocesszor] +lglobal.sectionProcessor = Processzor +lglobal.sectionLookup = Keresés + +lglobal.@this = A kódot végrehajtó logikai blokk +lglobal.@thisx = A kódot végrehajtó blokk X koordinátája +lglobal.@thisy = A kódot végrehajtó blokk Y koordinátája +lglobal.@links = Az ehhez a processzorhoz kapcsolt épületek száma összesen +lglobal.@ipt = A processzor végrehajtási sebessége órajelciklusban (60 órajelciklus = 1 másodperc) + +lglobal.@unitCount = A játékban található egységtípusok száma összesen; a keresés utasítással együtt használatos +lglobal.@blockCount = A játékban található blokktípusok száma összesen; a keresés utasítással együtt használatos +lglobal.@itemCount = A játékban található nyersanyagtípusok száma összesen; a keres utasítással együtt használatos +lglobal.@liquidCount = A játékban található folyadéktípusok száma összesen; a keresés utasítással együtt használatos + +lglobal.@server = Igaz, ha a kód egy kiszolgálón, vagy egyjátékos módban fut, egyébként hamis +lglobal.@client = Igaz, ha a kód egy kiszolgálóhoz kapcsolódott kliensen fut + +lglobal.@clientLocale = A kódot futtató kliens területi beállítása. Például: hu_HU +lglobal.@clientUnit = A kódot futtató kliens egysége +lglobal.@clientName = A kódot futtató kliens játékosneve +lglobal.@clientTeam = A kódot futtató kliens csapatazonosítója +lglobal.@clientMobile = Igaz, ha a kódot futtató kliens egy mobil eszköz, egyébként hamis + +logic.nounitbuild = [red]Az egységépítési logika itt nem megengedett. + +lenum.type = Az épület/egység típusa.\nPéldául bármilyen elosztó esetén a [accent]@router[] értéket adja vissza.\nNem karakterlánc. +lenum.shoot = Lövés egy adott pontra. +lenum.shootp = Lövés egy egységre/épületre sebesség-előrejelzéssel. +lenum.config = Épületkonfiguráció, például nyersanyag-válogató. +lenum.enabled = Engedélyezve van-e a blokk. + +laccess.color = Megvilágítás színe. +laccess.controller = Egységvezérlő. Ha processzor vezérli, akkor a processzort adja vissza.\nKülönben magát az egységet adja vissza. +laccess.dead = Egy épület/egység halott-e, vagy már nem érvényes-e. +laccess.controlled = Ezt adja vissza:\n[accent]@ctrlProcessor[], ha az egységvezérlő egy processzor\n[accent]@ctrlPlayer[], ha az egység/épület vezérlője a játékos\n[accent]@ctrlFormation[], ha az egység formációban van\nKülönben 0. +laccess.progress = Művelet előrehaladása, 0 és 1 között.\nA termelés, a lövegtorony-újratöltés vagy az építés előrehaladását adja vissza. +laccess.speed = Az egység legnagyobb sebessége, csempe/mp-ben. +laccess.id = Egy egység/blokk/nyersanyag/folyadék azonosítója.\nEz a keresési művelet fordítottja. + +lcategory.unknown = Ismeretlen +lcategory.unknown.description = Nem kategorizált utasítások. +lcategory.io = Bemenet és kimenet +lcategory.io.description = A memóriablokkok és processzorpufferek tartalmának módosítása. +lcategory.block = Blokkvezérlés +lcategory.block.description = Interakció a blokkokkal. +lcategory.operation = Műveletek +lcategory.operation.description = Logikai műveletek. +lcategory.control = Folyamatvezérlés +lcategory.control.description = A végrehajtási sorrend kezelése. +lcategory.unit = Egységvezérlés +lcategory.unit.description = Parancsok adása az egységeknek. +lcategory.world = Világ +lcategory.world.description = A világ viselkedésének szabályozása. + +graphicstype.clear = A kijelző kitöltése egy színnel. +graphicstype.color = Szín kiválasztása a következő rajzolási műveletekhez. +graphicstype.col = A színnel egyenértékű, de csomagolva van.\nA csomagolt színeket hexa kódként írja ki egy [accent]%[] előtaggal.\nPéldául: a [accent]%ff0000[] piros lenne. +graphicstype.stroke = Vonalvastagság beállítása. +graphicstype.line = Vonalszakasz rajzolása. +graphicstype.rect = Téglalap kitöltése. +graphicstype.linerect = Téglalap körvonalának rajzolása. +graphicstype.poly = Egy szabályos sokszög kitöltése. +graphicstype.linepoly = Szabályos sokszög körvonalának rajzolása. +graphicstype.triangle = Egy háromszög kitöltése. +graphicstype.image = Kép rajzolása valamilyen tartalomról.\nPéldául: [accent]@router[] vagy [accent]@dagger[]. +graphicstype.print = Szöveget rajzol a kiírási pufferből.\nCsak ASCII karakterek használhatóak.\nTörli a kiírás puffert. + +lenum.always = Mindig igaz. +lenum.idiv = Egész osztás. +lenum.div = Osztás.\nNullával való osztáskor a visszatérési érték [accent]null[]. 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. -lenum.asin = Arc sine, in degrees. -lenum.acos = Arc cosine, in degrees. -lenum.atan = Arc tangent, in degrees. -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.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.unbind = Completely disable logic control.\nResume standard AI. -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.payenter = Enter/land on the payload block the unit is on. -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. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.equal = Egyenlő. Kényszeríti a típusokat.\nA nem null értékű objektumok értéke 1 lesz, egyébként 0. +lenum.notequal = Nem egyenlő. Kényszeríti a típusokat. +lenum.strictequal = Szigorúan egyenlőség. Nem kényszeríti a típusokat.\nA [accent]null[] ellenőrzésére is használható. +lenum.shl = Biteltolás balra. +lenum.shr = Biteltolás jobbra. +lenum.or = Bitenkénti VAGY. +lenum.land = Logikai ÉS. +lenum.and = Bitenkénti ÉS. +lenum.not = Bitenkénti átfordítás. +lenum.xor = Bitenkénti KIZÁRÓ VAGY. + +lenum.min = Két szám minimuma. +lenum.max = Két szám maximuma. +lenum.angle = A vektor szöge fokban. +lenum.anglediff = Két szög abszolút távolsága fokban. +lenum.len = A vektor hossza. + +lenum.sin = Szinusz, fokban. +lenum.cos = Koszinusz, fokban. +lenum.tan = Tangens, fokban. + +lenum.asin = Arkusz szinusz, fokban. +lenum.acos = Arkusz koszinusz, fokban. +lenum.atan = Arkusz tangens, fokban. + +#not a typo, look up 'range notation' +lenum.rand = Véletlenszerű decimális szám a [0, érték) tartományban. +lenum.log = Természetes logaritmus (ln). +lenum.log10 = 10-es alapú logaritmus. +lenum.noise = 2D-s szimplex zaj. +lenum.abs = Abszolút érték. +lenum.sqrt = Négyzetgyök. + +lenum.any = Bármelyik egység. +lenum.ally = Szövetséges egység. +lenum.attacker = Fegyveres egység. +lenum.enemy = Ellenséges egység. +lenum.boss = Őrző egység. +lenum.flying = Repülő egység. +lenum.ground = Földi egység. +lenum.player = Egy játékos által irányított egység. + +lenum.ore = Érclelőhely. +lenum.damaged = Sérült szövetséges épület. +lenum.spawn = Ellenséges kezdőpont.\nLehet támaszpont vagy pozíció. +lenum.building = Épület egy adott csoportban. + +lenum.core = Bármilyen támaszpont. +lenum.storage = Raktárépület, például tároló. +lenum.generator = Energiát termelő épületek. +lenum.factory = Nyersanyagokat feldolgozó épületek. +lenum.repair = Javítási pontok. +lenum.battery = Bármilyen akkumulátor. +lenum.resupply = Utánpótlási pontok.\nCsak akkor van jelentősége, ha az [accent]„egység lőszere”[] engedélyezve van. +lenum.reactor = Ütközéses- vagy tóriumerőmű. +lenum.turret = Bármilyen lövegtorony. + +sensor.in = Az érzékelendő épület/egység. + +radar.from = Az épület, ahonnan érzékelni kell.\nAz érzékelő hatótávolságát az épület hatótávolsága korlátozza. +radar.target = Szűrő az érzékelendő egységekhez. +radar.and = További szűrők. +radar.order = Rendezési sorrend. 0-tól visszafelé. +radar.sort = Az eredmények rendezésének metrikája. +radar.output = Változó, amelybe a kimeneti egységet írja. + +unitradar.target = Érzékelendő egységek szűrése. +unitradar.and = További szűrők. +unitradar.order = Rendezési sorrend. 0-tól visszafelé. +unitradar.sort = Az eredmények rendezésének metrikája. +unitradar.output = Változó, amelybe a kimeneti egységet írja. + +control.of = Irányítandó épület. +control.unit = Megcélozandó egység/épület. +control.shoot = Lőjön-e. + +unitlocate.enemy = Felderítse-e az ellenséges épületeket. +unitlocate.found = Megtalálta-e az objektumot. +unitlocate.building = Kimeneti változó a megtalált épülethez. +unitlocate.outx = Kimenet X koordinátája. +unitlocate.outy = Kimenet Y koordinátája. +unitlocate.group = Keresendő épületcsoport. + +lenum.idle = Ne mozdulj, de folytasd az építkezést/bányászatot.\nAz alapértelmezett állapot. +lenum.stop = Mozgás/bányászat/építés leállítása. +lenum.unbind = A logikai vezérlés teljes kikapcsolása.\nSzokásos mesterséges intelligencia folytatása. +lenum.move = Mozgás a pontos pozícióba. +lenum.approach = Egy pozíció megközelítése egy sugárral. +lenum.pathfind = Útkeresés a megadott pozícióhoz. +lenum.autopathfind = Automatikus útkeresés a legközelebbi ellenséges támaszponthoz vagy ledobási ponthoz.\nEz ugyanaz, mint a normál hullámos ellenséges útkeresés. +lenum.target = Lövés egy pozícióra. +lenum.targetp = Lövés egy célpontra sebesség-előrejelzéssel. +lenum.itemdrop = Egy nyersanyag ledobása. +lenum.itemtake = Egy nyersanyag felvétele egy épületből. +lenum.paydrop = A jelenlegi rakomány ledobása. +lenum.paytake = Rakomány felvétele a jelenlegi helyen. +lenum.payenter = Belépés/leszállás a rakományblokkra, amelyen az egység van. +lenum.flag = Számjegyes egységjelölő. +lenum.mine = Bányászat egy helyen. +lenum.build = Egy épület építése. +lenum.getblock = Az épület-, talaj- és blokktípus lekérdezése a koordinátákon.\nAz egységnek a pozíciótartományon belül kell lennie, különben null értékkel tér vissza. +lenum.within = Ellenőrzés, hogy az egység egy pozíció közelében van-e. +lenum.boost = Erősítés indítása/leállítása. + +lenum.flushtext = Az írási puffer tartalmának ürítése a jelölőre, ha alkalmazható.\nHa a „fetch” igaz, akkor megpróbálja lekérni a tulajdonságokat a pálya nyelvi csomagjából vagy a játék csomagjából. +lenum.texture = A textúra neve közvetlenül a játék textúraatlaszából (ún. kebab-case elnevezési stílus használatával).\nHa a „printFlush” igaz, akkor a szöveges puffer tartalmát használja szöveges argumentumként. +lenum.texturesize = A textúra mérete csempékben. A nulla érték a jelölő szélességét az eredeti textúra méretére skálázza. +lenum.autoscale = Skálázva legyen-e a jelölő a játékos nagyítási szintjének megfelelően. +lenum.posi = Indexelt pozíció, vonal- és négyszögjelzőkhöz használatos, ahol a nulla az első pozíció. +lenum.uvi = A textúra pozíciója nullától egyig, négyzetjelölőkhöz használatos. +lenum.colori = Indexelt szín, vonal- és négyzetjelölőkhöz használatos, ahol a nulla az első szín. diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 7f56827144..700ccf020c 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = Urut berdasarkan bintang schematic = Bagan schematic.add = Menyimpan bagan... schematics = Kumpulan bagan +schematic.search = Search schematics... schematic.replace = Bagan dengan nama tersebut sudah ada. Ganti dengan yang baru? schematic.exists = Sebuah bagan dengan nama tersebut sudah ada. schematic.import = Mengimpor bagan... @@ -69,7 +70,7 @@ schematic.shareworkshop = Bagikan di Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Balik Bagan schematic.saved = Bagan telah disimpan. schematic.delete.confirm = Bagan ini akan benar-benar dihapus. -schematic.rename = Ganti Nama Bagan +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blok schematic.disabled = [scarlet]Bagan dilarang[]\nAnda tidak diperbolehkan untuk menggunakan bagan di [accent]peta[] atau [accent]server ini. schematic.tags = Tanda: @@ -78,6 +79,7 @@ schematic.addtag = Tambah Tanda schematic.texttag = Teks Tanda schematic.icontag = Ikon Tanda schematic.renametag = Ubah Nama Tanda +schematic.tagged = {0} tagged schematic.tagdelconfirm = Hapus tanda ini sepenuhnya? schematic.tagexists = Tanda tersebut sudah ada. @@ -253,11 +255,19 @@ trace = Lacak Pemain trace.playername = Nama pemain: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Client Mobile: [accent]{0} trace.modclient = Client Modifikasi: [accent]{0} trace.times.joined = Total Bergabung: [accent]{0} trace.times.kicked = Total Dikeluarkan: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = ID client tidak valid! Kirimkan laporan bug. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Pemain Dilarang Masuk server.bans.none = Tidak ada pemain yang tidak diberi izin masuk! server.admins = Admin @@ -271,10 +281,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Bentuk Modifikasi confirmban = Anda yakin ingin melarang pemain ini untuk masuk lagi? confirmkick = Anda yakin ingin mengeluarkan pemain ini? -confirmvotekick = Anda yakin ingin memulai pemungutan suara untuk mengeluarkan pemain ini? confirmunban = Anda yakin ingin mengizinkan pemain ini untuk masuk lagi? confirmadmin = Anda yakin ingin membuat pemain ini sebagai admin? confirmunadmin = Anda yakin ingin menghapus status admin dari pemain ini? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Bermain Bersama joingame.ip = Alamat: disconnect = Terputus. @@ -330,12 +341,23 @@ open = Buka customize = Sunting Peraturan cancel = Batal command = Perintah +command.queue = [lightgray][Queuing] command.mine = Tambang command.repair = Perbaiki command.rebuild = Bangun Kembali command.assist = Bantu Pemain command.move = Maju command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Buka Tautan copylink = Salin Tautan back = Kembali @@ -382,9 +404,9 @@ custom = Modifikasi builtin = Terpasang map.delete.confirm = Anda yakin ingin menghapus peta ini? Aksi ini tidak bisa diubah! map.random = [accent]Peta Acak -map.nospawn = Peta ini tidak memiliki inti agar pemain bisa muncul! Tambahkan inti [#{0}]{1}[] ke dalam peta di penyunting. -map.nospawn.pvp = Peta ini tidak memiliki inti agar pemain lawan bisa muncul! Tambahkan inti[scarlet] selain jingga[] ke dalam peta di penyunting. -map.nospawn.attack = Peta ini tidak memiliki inti musuh agar pemain bisa menyerang! Tambahkan inti [#{0}]{1}[] ke dalam peta di penyunting. +map.nospawn = Peta ini tidak memiliki inti agar pemain bisa muncul! Tambahkan inti {0} ke dalam peta di penyunting. +map.nospawn.pvp = Peta ini tidak memiliki inti agar pemain lawan bisa muncul! Tambahkan inti [scarlet]selain jingga[] ke dalam peta di penyunting. +map.nospawn.attack = Peta ini tidak memiliki inti musuh agar pemain bisa menyerang! Tambahkan inti {0} ke dalam peta di penyunting. map.invalid = Terjadi kesalahan saat memuat peta: rusak atau file peta tidak valid. workshop.update = Perbarui Item workshop.error = Terjadi kesalahan saat mengambil detail workshop: {0} @@ -416,6 +438,12 @@ editor.waves = Gelombang: editor.rules = Peraturan: editor.generation = Generasi: editor.objectives = Tujuan +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Sunting dalam Permainan editor.playtest = Tes Bermain editor.publish.workshop = Terbitkan di Workshop @@ -459,7 +487,7 @@ waves.sort.begin = Mulai waves.sort.health = Darah waves.sort.type = Tipe waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Sembunyikan Semua waves.units.show = Lihat Semua @@ -472,6 +500,8 @@ editor.default = [lightgray] details = Detail... edit = Sunting... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Nama: editor.spawn = Munculkan Unit editor.removeunit = Hapus Unit @@ -483,6 +513,7 @@ editor.errorlegacy = Peta ini terlalu tua, dan memakai format peta "legacy" yang editor.errornot = Ini bukan merupakan file peta. editor.errorheader = File peta ini bisa jadi tidak sah atau rusak. editor.errorname = Peta tidak ada nama. Apakah Anda mencoba untuk memuat file simpanan? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Perbaruan editor.randomize = Acak editor.moveup = Pindah Ke Atas @@ -494,6 +525,7 @@ editor.sectorgenerate = Generasi Sektor editor.resize = Ubah Ukuran editor.loadmap = Memuat Peta editor.savemap = Simpan Peta +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Tersimpan! editor.save.noname = Peta Anda tidak ada nama! Tambahkan di menu 'info peta'. editor.save.overwrite = Peta ini menindih peta built-in! Pilih nama yang berbeda di menu 'info peta'. @@ -532,6 +564,8 @@ toolmode.eraseores = Hapus Bijih toolmode.eraseores.description = Hanya menghapus bijih. toolmode.fillteams = Isi Tim toolmode.fillteams.description = Mengisi tim bukannya blok. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Gambar Tim toolmode.drawteams.description = Menggambar tim bukannya blok. #unused @@ -556,6 +590,7 @@ filter.clear = Bersih filter.option.ignore = Biarkan filter.scatter = Penebaran filter.terrain = Lahan +filter.logic = Logic filter.option.scale = Ukuran filter.option.chance = Kemungkinan @@ -579,6 +614,25 @@ filter.option.floor2 = Lantai Sekunder filter.option.threshold2 = Ambang Sekunder filter.option.radius = Radius filter.option.percentile = Perseratus +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Lebar: height = Tinggi: @@ -631,9 +685,12 @@ objective.commandmode.name = Mode Perintah objective.flag.name = Bendera marker.shapetext.name = Teks Berbentuk -marker.minimap.name = Peta Kecil +marker.point.name = Point marker.shape.name = Bentuk marker.text.name = Teks +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Latar Belakang marker.outline = Garis Luar @@ -662,7 +719,6 @@ resources.max = Maks bannedblocks = Balok yang Dilarang objectives = Tujuan bannedunits = Unit yang Dilarang -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Tambah Semua @@ -685,7 +741,7 @@ error.any = Terjadi kesalahan Jaringan tidak diketahui. error.bloom = Gagal untuk menjalankan bloom.\nPerangkat Anda mungkin tidak mendukung fitur ini. weather.rain.name = Hujan -weather.snow.name = Salju +weather.snowing.name = Salju weather.sandstorm.name = Badai Pasir weather.sporestorm.name = Badai Spora weather.fog.name = Kabut @@ -721,8 +777,8 @@ sector.curlost = Sektor Gagal Bertahan sector.missingresources = [scarlet]Sumber Daya Inti Tidak Cukup sector.attacked = Sektor [accent]{0}[white] sedang diserang! sector.lost = Sektor [accent]{0}[white] telah dihancurkan! -#note: the missing space in the line below is intentional -sector.captured = Sektor [accent]{0}[white]ditaklukkan! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Ubah Ikon sector.noswitch.title = Tidak Dapat beralih Sektor sector.noswitch = Andak tidak boleh berpindah sektor jika salah satu sektor terkena serangan.\nSektor: [accent]{0}[] di [accent]{1}[] @@ -935,6 +991,7 @@ stat.abilities = Kemampuan stat.canboost = Dapat Dipercepat stat.flying = Terbang stat.ammouse = Penggunaan Amunisi +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Penggandaan Kekuatan (dmg) stat.healthmultiplier = Penggandaan Darah stat.speedmultiplier = Penggandaan Kecepatan @@ -945,14 +1002,46 @@ stat.immunities = Kekebalan stat.healing = Menyembuhkan ability.forcefield = Bidang Kekuatan +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Bidang Perbaikan -ability.statusfield = {0} Bidang Status -ability.unitspawn = {0} Pabrik +ability.repairfield.description = Repairs nearby units +ability.statusfield = Bidang Status +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Pabrik +ability.unitspawn.description = Constructs units ability.shieldregenfield = Bidang Regenerasi Perisai +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Pergerakan Petir +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Bidang Tenaga: [accent]{0}[] kerusakan ~ [accent]{1}[] blok / [accent]{2}[] target +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Bidang Tenaga +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Hanya Penyetoran Inti yang Diizinkan bar.drilltierreq = Membutuhkan Bor yang Lebih Baik @@ -992,6 +1081,7 @@ bullet.splashdamage = [stat]{0}[lightgray] kekuatan percikan~[stat] {1}[lightgra bullet.incendiary = [stat]membakar bullet.homing = [stat]mengejar bullet.armorpierce = [stat]menembus baju besi +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x pecahan: @@ -1027,6 +1117,7 @@ unit.items = bahan unit.thousands = rb unit.millions = jt unit.billions = m +unit.shots = shots unit.pershot = /tembakan category.purpose = Kegunaan category.general = Umum @@ -1047,6 +1138,7 @@ setting.backgroundpause.name = Jeda di Latar setting.buildautopause.name = Jeda Otomatis saat Membangun setting.doubletapmine.name = Dua-kali Sentuh untuk Menambang setting.commandmodehold.name = Tahan Untuk Mode Perintah +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Matikan Mod Ketika Ada Masalah Saat Memulai Permainan setting.animatedwater.name = Animasi Perairan setting.animatedshields.name = Animasi Perisai @@ -1093,13 +1185,14 @@ setting.position.name = Tunjukkan Posisi Pemain setting.mouseposition.name = Tunjukkan Posisi Tetikus setting.musicvol.name = Volume Musik setting.atmosphere.name = Tunjukkan Atmosfer Planet +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Volume Sekeliling setting.mutemusic.name = Diamkan Musik setting.sfxvol.name = Volume Efek Suara setting.mutesound.name = Diamkan Suara setting.crashreport.name = Laporkan Masalah setting.savecreate.name = Otomatis Menyimpan -setting.publichost.name = Visibilitas Game Publik +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Batas pemain setting.chatopacity.name = Jelas-Beningnya Pesan setting.lasersopacity.name = Jelas-Beningnya Tenaga Laser @@ -1107,6 +1200,8 @@ setting.bridgeopacity.name = Jelas-Beningnya Jembatan setting.playerchat.name = Tunjukkan Pesan dalam Permainan setting.showweather.name = Perlihatkan Cuaca setting.hidedisplays.name = Sembunyikan Tampilan Logika +setting.macnotch.name = Sesuaikan antarmuka untuk menampilkan takik +setting.macnotch.description = Mulai ulang diperlukan untuk menerapkan perubahan steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Ingat bahwa game versi beta tidak dapat membuat lobi publik. @@ -1117,6 +1212,7 @@ keybind.title = Ganti Tombol keybinds.mobile = [scarlet]Mayoritas tombol tidak didukung oleh perangkat ponsel. Hanya gerakan dasar yang didukung. category.general.name = Umum category.view.name = Melihat +category.command.name = Unit Command category.multiplayer.name = Bermain Bersama category.blocks.name = Pilih Blok placement.blockselectkeys = \n[lightgray]Tombol: [{0}, @@ -1134,6 +1230,24 @@ keybind.mouse_move.name = Ikuti Tetikus keybind.pan.name = Tampilan Geser keybind.boost.name = Dorongan keybind.command_mode.name = Mode Perintah +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Pilih Daerah keybind.schematic_menu.name = Menu Skema @@ -1197,17 +1311,25 @@ mode.pvp.description = Melawan pemain lain.\n[gray]Membutuhkan setidaknya 2 inti mode.attack.name = Penyerangan mode.attack.description = Hancurkan markas musuh. Membutuhkan inti merah di dalam peta untuk main. mode.custom = Pengaturan Modifikasi +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Sumber Daya Tak Terbatas rules.onlydepositcore = Hanya Izinkan Penyetoran Inti +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Ledakan Reaktor rules.coreincinerates = Penghangusan Luapan Inti rules.disableworldprocessors = Nonaktifkan Prosesor Dunia rules.schematic = Bagan Diperbolehkan rules.wavetimer = Pengaturan Waktu Gelombang rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Gelombang +rules.airUseSpawns = Air units use spawn points rules.attack = Mode Penyerangan +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = A.I. RTS rules.rtsminsquadsize = Ukuran Regu Minimum rules.rtsmaxsquadsize = Ukuran Regu Maksimum @@ -1226,6 +1348,7 @@ rules.unitdamagemultiplier = Penggandaan Kekuatan Unit rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Penggandaan Tenaga Surya rules.unitcapvariable = Inti Memengaruhi Batas Unit +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Batas Unit Dasar rules.limitarea = Batas Area Peta rules.enemycorebuildradius = Dilarang Membangun Radius Inti Musuh :[lightgray] (blok) @@ -1258,6 +1381,8 @@ rules.weather = Cuaca rules.weather.frequency = Frekuensi: rules.weather.always = Selalu rules.weather.duration = Durasi: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Bahan content.liquid.name = Zat Cair @@ -1479,6 +1604,7 @@ block.inverted-sorter.name = Penyortir Terbalik block.message.name = Pesan block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Lampu block.overflow-gate.name = Gerbang Luap block.underflow-gate.name = Gerbang Luap Terbalik @@ -1721,7 +1847,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabrikator block.tank-refabricator.name = Refabrikator Tank block.mech-refabricator.name = Refabrikator Mech block.ship-refabricator.name = Refabrikator Kapal @@ -1840,9 +1965,15 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. + +#Don't translate these yet! +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2041,7 +2172,6 @@ block.logic-display.description = Menampilkan grafik sembarang dari prosesor. block.large-logic-display.description = Menampilkan grafik sembarang dari prosesor. Lebih besar. block.interplanetary-accelerator.description = Sebuah menara railgun elektromagnetik raksasa. Meluncurkan Inti dengan kecepatan tinggi untuk peluncuran antarplanet. block.repair-turret.description = Memperbaiki unit terdekat yang sekarat dalam jangkauan secara terus-menerus. Dapat menerima pendingin. -block.payload-propulsion-tower.description = Bangunan transportasi muatan jarak jauh. Menembakkan muatan pada menara penggerak muatan lainnya yang terhubung. #Erekir block.core-bastion.description = Inti markas. Terlindungi. Jika hancur, sektor jatuh ke tangan musuh. @@ -2079,7 +2209,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2200,6 +2329,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Membaca angka dari memori sel yang dihubungkan. lst.write = Menulis angka ke memori sel yang dihubungkan. lst.print = Menambahkan teks ke daftar cetak.\nTidak dapat menampilkan apapun sampai [accent]Print Flush[] dipakai. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Menambahkan perintah ke daftar gambar.\nTidak dapat menampilkan apapun sampai [accent]Draw Flush[] dipakai. lst.drawflush = Mengeluarkan perintah [accent]Draw[] dari daftar antrean untuk ditampilkan. lst.printflush = Mengeluarkan perintah [accent]Print[] dari daftar antrean untuk blok pesan. @@ -2222,6 +2352,8 @@ lst.getblock = Mendapatkan data petak di lokasi manapun. lst.setblock = Menentukan data petak di lokasi manapun. lst.spawnunit = Munculkan unit pada tempat yang ditentukan. lst.applystatus = Menerapkan atau menghapus status efek dari sebuah unit. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulasikan adanya gelombang pada lokasi acak.\nTidak akan ditambahkan pada jumlah gelombang keseluruhan. lst.explosion = Membuat sebuah ledakan pada lokasi yang ditentukan. lst.setrate = Menentukan kecepatan eksekusi prosesor dalam instruksi per tick. @@ -2233,6 +2365,47 @@ lst.cutscene = Mengendalikan kamera pemain. lst.setflag = Menentukan global flag yang dapat dibaca oleh semua prosesor. lst.getflag = Periksa apakah ada global flag yang ditentukan. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Logika unit membangun tidak diperbolehkan di sini. @@ -2248,6 +2421,7 @@ laccess.dead = Menentukan apakah unit/bangunan itu hancur atau tidak ada lagi. laccess.controlled = Mengembalikan:\n[accent]@ctrlProcessor[] bila pengendali unit adalah prosesor\n[accent]@ctrlPlayer[] bila pengendali unit/bangunan adalah pemain\n[accent]@ctrlFormation[] bila unit dalam formasi\nSebaliknya, 0. laccess.progress = Memeriksa hasil kemajuan, 0 sampai 1.\nMengembalikan hasil laju produksi, pengisian ulang menara atau pembangunan. laccess.speed = Kecepatan tertinggi dari suatu unit, dalam petak/detik. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Tak Diketahui lcategory.unknown.description = Instruksi tanpa kategori. @@ -2275,6 +2449,7 @@ graphicstype.poly = Mengisi sebuah poligon beraturan. graphicstype.linepoly = Menggambar sebuah garis poligon beraturan. graphicstype.triangle = Mengisi sebuah segitiga. graphicstype.image = Membentuk sebuah gambar dari suatu konten.\nMisal: [accent]@router[] atau [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Selalu benar. lenum.idiv = Pembagian integer. @@ -2294,6 +2469,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum dari dua angka. lenum.max = Maksimum dari dua angka. lenum.angle = Sudut vektor dalam derajat. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Panjang vektor. lenum.sin = Sinus, dalam derajat. @@ -2368,6 +2544,7 @@ lenum.unbind = Mematikan kendali logika.\nLanjutkan A.I. standar. lenum.move = Bergerak ke posisi yang ditentukan. lenum.approach = Mendekati posisi dalam radius. lenum.pathfind = Mencari arah ke tempat munculnya musuh. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Menembak pada posisi. lenum.targetp = Menembak target dengan perkiraan kecepatan. lenum.itemdrop = Menjatuhkan bahan. @@ -2378,10 +2555,13 @@ lenum.payenter = Masuk/mendarat pada blok muatan yang saat ini unit sedang berdi lenum.flag = Tanda numerik unit. lenum.mine = Menambang pada sebuah posisi. lenum.build = Membangun sebuah sttruktur. -lenum.getblock = Mengambil bangunan dan tipenya pada koordinat tertentu.\nUnit harus ada dalam jangkauan tersebut.\nBentuk padat yang bukan merupakan bangunan akan memiliki tipe [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Memeriksa apakah unit di dekat suatu posisi. lenum.boost = Mulai/berhenti mempercepat. - -#Don't translate these yet! -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 0d94d5ba8a..cc3596b04e 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Ordinato per stelle schematic = Schematica schematic.add = Salva Schematica... schematics = Schematiche +schematic.search = Search schematics... schematic.replace = Esiste già una schematica con questo nome. Sostituirla? schematic.exists = Esiste già una schematica con questo nome. schematic.import = Importa schematica @@ -68,7 +69,7 @@ schematic.shareworkshop = Condividi nel Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Ruota Schematica schematic.saved = Schematica salvata. schematic.delete.confirm = Questa schematica sarà cancellata definitivamente. -schematic.rename = Rinomina Schematica +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blocchi schematic.disabled = [scarlet]Schematiche disabilitate[]\nNon hai il permesso di usare schematiche in questa [accent]mappa[] o [accent]server. schematic.tags = Tags: @@ -77,6 +78,7 @@ schematic.addtag = Aggiungi Tag schematic.texttag = Tag di testo schematic.icontag = Tag immagine schematic.renametag = Rinomina Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Eliminare il tag definitivamente? schematic.tagexists = Tag già esistente. @@ -251,11 +253,19 @@ trace = Traccia Giocatore trace.playername = Nome del Giocatore: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID univoco: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Client Mobile: [accent]{0} trace.modclient = Client Personalizzato: [accent]{0} trace.times.joined = Accessi: [accent]{0} trace.times.kicked = Espulsioni: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = ID client non valido! Segnala un bug. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Lista Bans server.bans.none = Nessun giocatore bandito trovato! server.admins = Amministratori @@ -269,10 +279,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Build Personalizzata confirmban = Sei sicuro di voler bandire "{0}[white]"? confirmkick = Sei sicuro di voler espellere "{0}[white]"? -confirmvotekick = Sei sicuro di voler votare per l'espulsione di "{0}[white]"? confirmunban = Sei sicuro di voler riammettere questo giocatore? confirmadmin = Sei sicuro di voler rendere "{0}[white]" un amministratore? confirmunadmin = Sei sicuro di voler rimuovere lo stato di amministratore da "{0}[white]"? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Unisciti alla Partita joingame.ip = Indirizzo: disconnect = Disconnesso. @@ -328,12 +339,23 @@ open = Apri customize = Personalizza cancel = Annulla command = Comando +command.queue = [lightgray][Queuing] command.mine = Mina command.repair = Ripara command.rebuild = Ricostruisci command.assist = Aiuta giocatore command.move = Muovi command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Apri Link copylink = Copia link back = Indietro @@ -414,6 +436,12 @@ editor.waves = Ondate: editor.rules = Regole: editor.generation = Generazione: editor.objectives = Obbiettivi +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Modifica in Gioco editor.playtest = Playtest editor.publish.workshop = Pubblica nel Workshop @@ -457,7 +485,7 @@ waves.sort.begin = Inizia waves.sort.health = Salute waves.sort.type = Tipo waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Nascondi tutto waves.units.show = Mostra tutto @@ -470,6 +498,8 @@ editor.default = [lightgray] details = Dettagli... edit = Modifica... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Nome: editor.spawn = Piazza un'Unità editor.removeunit = Rimuovi un'Unità @@ -481,6 +511,7 @@ editor.errorlegacy = La mappa è troppo vecchia ed usa un formato che non è pi editor.errornot = Questo non è un file mappa. editor.errorheader = Il file di questa mappa non è valido o è corrotto. editor.errorname = Questa mappa è senza nome. Stai cercando di caricare un salvataggio? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Aggiorna editor.randomize = Casualizza editor.moveup = Muovi in alto @@ -492,6 +523,7 @@ editor.sectorgenerate = Genera settore editor.resize = Ridimensiona editor.loadmap = Carica Mappa editor.savemap = Salva Mappa +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Salvato! editor.save.noname = La tua mappa non ha un nome! Impostane uno nel menu 'Info Mappa'. editor.save.overwrite = La tua mappa sovrascrive quelle incluse! Imposta un nome diverso nel menu 'Info Mappa'. @@ -530,6 +562,8 @@ toolmode.eraseores = Rimuovi Minerali toolmode.eraseores.description = Rimuove solo minerali. toolmode.fillteams = Riempi Squadre toolmode.fillteams.description = Riempe squadre al posto di blocchi. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Disegna Squadre toolmode.drawteams.description = Disegna squadre al posto di blocchi. toolmode.underliquid = Under Liquids @@ -552,6 +586,7 @@ filter.clear = Resetta Filtro filter.option.ignore = Ignora filter.scatter = Dispersione filter.terrain = Terreno +filter.logic = Logic filter.option.scale = Scala filter.option.chance = Probabilità filter.option.mag = Magnitudine @@ -574,6 +609,25 @@ filter.option.floor2 = Terreno Secondario filter.option.threshold2 = Soglia Secondaria filter.option.radius = Raggio filter.option.percentile = Percentuale +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Larghezza: height = Altezza: @@ -624,9 +678,12 @@ objective.destroycore.name = Distruggi nuclei objective.commandmode.name = Modalità comando objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimappa +marker.point.name = Point marker.shape.name = Forma marker.text.name = Testo +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Sfondo marker.outline = Outline objective.research = [accent]Ricerca:\n[]{0}[lightgray]{1} @@ -647,12 +704,11 @@ objective.nuclearlaunch = [accent]⚠ Lancio nucleare rilevaato: [lightgray]{0} announce.nuclearstrike = [red]⚠ COLPO NUCLEARE IN ARRIVO ⚠ loadout = Equipaggiamento -resources = Risorse +resources = Risorse resources.max = Max bannedblocks = Blocchi Banditi objectives = Obbiettivi bannedunits = Unità bandite -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Aggiungi Tutti @@ -675,7 +731,7 @@ error.any = Errore di rete sconosciuto. error.bloom = Errore dell'avvio delle shaders.\nIl tuo dispositivo potrebbe non supportarle. weather.rain.name = Pioggia -weather.snow.name = Neve +weather.snowing.name = Neve weather.sandstorm.name = Tempesta di Sabbia weather.sporestorm.name = Tempesta di Spore weather.fog.name = Nebbia @@ -711,8 +767,8 @@ sector.curlost = Settore Perso sector.missingresources = [scarlet]Risorse del Nucleo Insufficienti sector.attacked = Settore [accent]{0}[white] sotto attacco! sector.lost = Settore [accent]{0}[white] perso! -#nota: lo spazio mancante nella linea sotto è intenzionale -sector.captured = Settore [accent]{0}[white]catturato! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Cambia icona sector.noswitch.title = Impossibile cambiare settore sector.noswitch = Non puoi cambiare settore mentre sei sotto attacco.\n\nSectore: [accent]{0}[] on [accent]{1}[] @@ -921,6 +977,7 @@ stat.abilities = Abilità stat.canboost = Capace di Potenziamento stat.flying = Volo stat.ammouse = Consumo di munizioni +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Moltiplicatore danni stat.healthmultiplier = Moltiplicatore salute stat.speedmultiplier = Moltiplicatore velocità @@ -931,14 +988,47 @@ stat.immunities = Immunità stat.healing = Rigenerazione ability.forcefield = Campo di Forza +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Campo Riparativo +ability.repairfield.description = Repairs nearby units ability.statusfield = Campo di Stato -ability.unitspawn = {0} Fabbrica +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Fabbrica +ability.unitspawn.description = Constructs units ability.shieldregenfield = Campo di Rigenerazione Scudo +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movimento Fulminante +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Campo energetico: [accent]{0}[] danno ~ [accent]{1}[] blocchi / [accent]{2}[] obbiettivi +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Campo energetico +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Concesso solo il deposito al nucleo bar.drilltierreq = Miglior Trivella Richiesta @@ -978,6 +1068,7 @@ bullet.splashdamage = [stat]{0}[lightgray] danno ad area ~[stat] {1}[lightgray] bullet.incendiary = [stat]incendiario bullet.homing = [stat]autoguidato bullet.armorpierce = [stat]perforazione alle armature +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frammentazione: @@ -1013,6 +1104,7 @@ unit.items = oggetti unit.thousands = k unit.millions = mln unit.billions = mld +unit.shots = shots unit.pershot = /colpo category.purpose = Scopo category.general = Generali @@ -1033,6 +1125,7 @@ setting.backgroundpause.name = Metti in pausa quando in background setting.buildautopause.name = Pausa Automatica nella Costruzione setting.doubletapmine.name = Doppio click per minare setting.commandmodehold.name = Tieni premuto per comandare +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disabilita le mod dopo un arresto anomalo setting.animatedwater.name = Fluidi Animati setting.animatedshields.name = Scudi Animati @@ -1079,13 +1172,14 @@ setting.position.name = Mostra Posizione Giocatori setting.mouseposition.name = Mostra mouse setting.musicvol.name = Volume Musica setting.atmosphere.name = Mostra Atmosfera Pianeta +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Volume Ambiente setting.mutemusic.name = Silenzia Musica setting.sfxvol.name = Volume Effetti setting.mutesound.name = Silenzia Suoni setting.crashreport.name = Invia rapporti anonimi sugli arresti anomali setting.savecreate.name = Salvataggi Automatici -setting.publichost.name = Gioco Visibile Pubblicamente +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Limite Giocatori setting.chatopacity.name = Opacità Chat setting.lasersopacity.name = Opacità Raggi Energetici @@ -1093,6 +1187,8 @@ setting.bridgeopacity.name = Opacità Nastri e Condotti Sopraelevati setting.playerchat.name = Mostra Chat setting.showweather.name = Mostra grafica del meteo setting.hidedisplays.name = Nascondi display logici +setting.macnotch.name = Adatta l'interfaccia per visualizzare la tacca +setting.macnotch.description = Riavvio necessario per applicare le modifiche steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Nota che le versioni beta del gioco non possono creare lobby pubbliche. @@ -1103,6 +1199,7 @@ keybind.title = Configurazione Tasti keybinds.mobile = [scarlet]La maggior parte dei controlli qui non sono funzionano sui dispositivi mobili. È supportato solo il movimento di base. category.general.name = Generale category.view.name = Visualizzazione +category.command.name = Unit Command category.multiplayer.name = Multigiocatore category.blocks.name = Seleziona Blocco placement.blockselectkeys = \n[lightgray]Tasto: [{0}, @@ -1120,6 +1217,24 @@ keybind.mouse_move.name = Segui il Mouse keybind.pan.name = Vista Panoramica keybind.boost.name = Scatto keybind.command_mode.name = Modalità di comando +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Seleziona Regione keybind.schematic_menu.name = Menu Schematica @@ -1166,7 +1281,7 @@ keybind.console.name = Console keybind.rotate.name = Ruota keybind.rotateplaced.name = Ruota Blocco Esistente (mantenere premuto) keybind.toggle_menus.name = Mostra/Nascondi Menu -keybind.chat_history_prev.name = Scorri Chat verso l'alto +keybind.chat_history_prev.name = Scorri Chat verso l'alto keybind.chat_history_next.name = Scorri Chat verso il basso keybind.chat_scroll.name = Scorri Chat keybind.chat_mode.name = Cambia modalità chat @@ -1183,17 +1298,25 @@ mode.pvp.description = Combatti contro altri giocatori in locale.\n[gray]Per gio mode.attack.name = Schermaglia mode.attack.description = Distruggi la base nemica. \n[gray]Richiede un nucleo rosso nella mappa per essere giocata. mode.custom = Regole Personalizzate +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Risorse Infinite rules.onlydepositcore = Deposito consentito solo al nucleo +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Esplosioni Reattore rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disabilita processori rules.schematic = Schematiche Consentite rules.wavetimer = Timer Ondate rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Ondate +rules.airUseSpawns = Air units use spawn points rules.attack = Modalità Attacco +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Dimensione minima squadra rules.rtsmaxsquadsize = Dimensione massima squadra @@ -1212,6 +1335,7 @@ rules.unitdamagemultiplier = Moltiplicatore Danno Unità rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Moltiplicatore energia solare rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limite dimensioni mappa rules.enemycorebuildradius = Raggio di protezione del Nucleo Nemico dalle costruzioni:[lightgray] (blocchi) @@ -1244,6 +1368,8 @@ rules.weather = Meteo rules.weather.frequency = Frequenza: rules.weather.always = sempre rules.weather.duration = Durata: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Oggetti content.liquid.name = Liquidi @@ -1438,7 +1564,7 @@ block.basalt.name = Basalto block.hotrock.name = Roccia Bollente block.magmarock.name = Roccia Magmatica block.copper-wall.name = Muro di Rame -block.copper-wall-large.name = Muro di Rame Grande +block.copper-wall-large.name = Muro di Rame Grande block.titanium-wall.name = Muro di Titanio block.titanium-wall-large.name = Muro di Titanio Grande block.plastanium-wall.name = Muro di Plastanio @@ -1466,6 +1592,7 @@ block.inverted-sorter.name = Filtro Inverso block.message.name = Messaggio block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Lanterna block.overflow-gate.name = Separatore per Eccesso block.underflow-gate.name = Separatore per Eccesso Inverso @@ -1514,7 +1641,7 @@ block.plastanium-compressor.name = Compressore al Plastanio block.pyratite-mixer.name = Miscelatore di Pirite block.blast-mixer.name = Miscelatore d'Esplosivi block.solar-panel.name = Pannello Solare -block.solar-panel-large.name = Pannello Solare Grande +block.solar-panel-large.name = Pannello Solare Grande block.oil-extractor.name = Estrattore di Petrolio block.repair-point.name = Punto di Riparazione block.repair-turret.name = Repair Turret @@ -1706,7 +1833,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1825,9 +1951,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2021,7 +2151,6 @@ block.logic-display.description = Visualizza la grafica arbitraria elaborata da block.large-logic-display.description = Visualizza la grafica arbitraria elaborata dal processore. block.interplanetary-accelerator.description = Una massiccia torre che utilizza potenti campi elettromagnetici. Accelera nuclei fino alla velocità di fuga per un impiego interplanetario. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2057,7 +2186,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2143,7 +2271,7 @@ unit.quad.description = Rilascia grandi bombe alle unità terrene, riparando le unit.oct.description = Protegge gli alleati nelle vicinanze con lo scudo rigenerante integrato. È in grado di trasportare la maggior parte delle unità terrene. unit.risso.description = Spara una raffica di missili e proiettili ai nemici nelle vicinanze. unit.minke.description = Spara proiettili incendiari e standard alle unità terrene. -unit.bryde.description = Spara proiettili e missili a lungo raggio ai nemici. +unit.bryde.description = Spara proiettili e missili a lungo raggio ai nemici. unit.sei.description = Spara raffiche di missili e proiettili corazzati e perforanti ai nemici. unit.omura.description = Utilizza un bullone sparatato grazie a due binari a scorrimento accelerati da un campo elettromagnetico. Lunga gittata e perforazione estrema. Costruisce unità flare. unit.alpha.description = Difende il nucleo Frammento dai nemici. Costruisce strutture. @@ -2175,6 +2303,7 @@ unit.emanate.description = Costruisce strutture per difendere il nucleo dell'Acr lst.read = Leggi un numero da una cella di memoria collegata. lst.write = Scrivi un numero in una cella di memoria collegata. lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2197,6 +2326,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2208,6 +2339,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2220,6 +2392,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2245,6 +2418,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2262,6 +2436,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2323,6 +2498,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2333,8 +2509,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 8979ea4a25..1f06e7e153 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = お気に入り数で並べる schematic = 設計図 schematic.add = 設計図を保存 schematics = 設計図一覧 +schematic.search = Search schematics... schematic.replace = その名前の設計図は既に存在しています。上書きしますか? schematic.exists = その名前の設計図は既に存在しています。 schematic.import = 設計図をインポート @@ -69,7 +70,7 @@ schematic.shareworkshop = ワークショップで共有する schematic.flip = [accent][[{0}][]/[accent][[{1}][]: 反転 schematic.saved = 設計図を保存しました。 schematic.delete.confirm = この設計図は完全に削除されます。よろしいですか -schematic.rename = 設計図の名前を変更する。 +schematic.edit = Edit Schematic schematic.info = {1}x{0}, {2} ブロック schematic.disabled = [scarlet]設計図使用不可[]\nこの[accent]マップ[]、[accent]サーバー[]では設計図の使用は許可されていません。 schematic.tags = タグ: @@ -78,6 +79,7 @@ schematic.addtag = タグを追加 schematic.texttag = テキストタグ schematic.icontag = アイコンタグ schematic.renametag = タグの名前変更 +schematic.tagged = {0} tagged schematic.tagdelconfirm = このタグをすべて削除しますか? schematic.tagexists = このタグはすでに存在します。 @@ -253,11 +255,19 @@ trace = プレイヤーの記録 trace.playername = プレイヤー名: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = モバイルクライアント: [accent]{0} trace.modclient = カスタムクライアント: [accent]{0} trace.times.joined = 参加回数: [accent]{0} trace.times.kicked = キックされた回数: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = 無効なクライアントIDです! バグ報告してください。 +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Ban server.bans.none = Banされたプレイヤーは見つかりませんでした! server.admins = 管理者 @@ -271,10 +281,11 @@ server.version = [lightgray]バージョン: {0} {1} server.custombuild = [accent]カスタムビルド confirmban = {0} をBanしてもよろしいですか? confirmkick = {0} をキックしてもよろしいですか? -confirmvotekick = {0} を投票キックしてもよろしいですか? confirmunban = このプレイヤーのBanを解除してもよろしいですか? confirmadmin = {0} を管理者にしてもよろしいですか? confirmunadmin = {0} を管理者から削除してもよろしいですか? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = サーバーに参加 joingame.ip = アドレス: disconnect = 接続が切断されました。 @@ -330,12 +341,23 @@ open = 開く customize = カスタマイズ cancel = キャンセル command = コマンド +command.queue = [lightgray][Queuing] command.mine = 採掘 command.repair = 修復 command.rebuild = 再建築 command.assist = プレイヤーをアシスト command.move = 移動 command.boost = ブースト +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = リンクを開く copylink = リンクをコピー back = 戻る @@ -382,9 +404,9 @@ custom = カスタム builtin = 組み込み map.delete.confirm = マップを削除してもよろしいですか? これは元に戻すことができません! map.random = [accent]ランダムマップ -map.nospawn = このマップにはプレイヤーが出現するためのコアがありません! エディターで[#{0}]{1}[]のコアをマップに追加してください。 +map.nospawn = このマップにはプレイヤーが出現するためのコアがありません! エディターで{0}のコアをマップに追加してください。 map.nospawn.pvp = このマップには敵のプレイヤーが出現するためのコアがありません! エディターで[scarlet]オレンジ色ではない[]コアをマップに追加してください。 -map.nospawn.attack = このマップには攻撃するための敵のコアがありません! エディターで[#{0}]{1}[]のコアをマップに追加してください。 +map.nospawn.attack = このマップには攻撃するための敵のコアがありません! エディターで{0}のコアをマップに追加してください。 map.invalid = マップの読み込みエラー: ファイルが無効、または破損しています。 workshop.update = 更新 workshop.error = ワークショップの詳細を取得中にエラーが発生しました: {0} @@ -416,6 +438,12 @@ editor.waves = ウェーブ: editor.rules = ルール: editor.generation = 生成: editor.objectives = オブジェクティブ +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = ゲーム内で編集する editor.playtest = Playtest editor.publish.workshop = ワークショップで公開 @@ -459,7 +487,7 @@ waves.sort.begin = 開始 waves.sort.health = 体力 waves.sort.type = タイプ waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = すべて非表示 waves.units.show = すべて表示 @@ -472,6 +500,8 @@ editor.default = [lightgray]<デフォルト> details = 詳細... edit = 編集... variables = 変数 +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = 名前: editor.spawn = ユニットを出す editor.removeunit = ユニットを消す @@ -483,6 +513,7 @@ editor.errorlegacy = このマップは古いです。今後、古いマップ editor.errornot = これはマップファイルではありません。 editor.errorheader = このマップファイルは無効または破損しています。 editor.errorname = マップに名前が設定されていません。 +editor.errorlocales = Error reading invalid locale bundles. editor.update = 更新 editor.randomize = ランダム editor.moveup = 上に移動 @@ -494,6 +525,7 @@ editor.sectorgenerate = セクターを生成 editor.resize = リサイズ editor.loadmap = マップを読み込む editor.savemap = マップを保存 +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = 保存しました! editor.save.noname = マップに名前が設定されていません! メニューの 'マップ情報' から設定してください。 editor.save.overwrite = 組み込みマップを上書きしようとしています! メニューの 'マップ情報' から異なる名前に設定してください。 @@ -532,6 +564,8 @@ toolmode.eraseores = 鉱石消しゴム toolmode.eraseores.description = 鉱石のみを消します。(敵の出現場所含む) toolmode.fillteams = チームを変更 toolmode.fillteams.description = ブロックの所属チームを上書きします。 +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = チームを変更 toolmode.drawteams.description = ブロックの所属チームを上書きします。 toolmode.underliquid = 液体タイル @@ -555,6 +589,7 @@ filter.clear = クリア filter.option.ignore = 無視 filter.scatter = 分散 filter.terrain = 地形 +filter.logic = Logic filter.option.scale = スケール filter.option.chance = 確率 @@ -578,6 +613,25 @@ filter.option.floor2 = 2番目の地面 filter.option.threshold2 = 2番目の閾値 filter.option.radius = 半径 filter.option.percentile = パーセンタイル +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = 幅: height = 高さ: @@ -628,9 +682,12 @@ objective.destroycore.name = コアを破壊する objective.commandmode.name = コマンドモード objective.flag.name = フラグ marker.shapetext.name = テキストの形 -marker.minimap.name = ミニマップ +marker.point.name = Point marker.shape.name = 図形 marker.text.name = 文章 +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = 背景 marker.outline = 輪郭 objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -656,7 +713,6 @@ resources.max = Max bannedblocks = 禁止ブロック objectives = オブジェクティブ bannedunits = 禁止ユニット -rules.hidebannedblocks = 禁止ブロックを非表示 bannedunits.whitelist = 「禁止ユニット」以外を禁止する(ホワイトリスト) bannedblocks.whitelist = 「禁止ブロック」以外を禁止する(ホワイトリスト) addall = すべて追加 @@ -679,7 +735,7 @@ error.any = 不明なネットワークエラーです。 error.bloom = ブルームの初期化に失敗しました。\n恐らくあなたのデバイスではブルームがサポートされていません。 weather.rain.name = 雨 -weather.snow.name = 雪 +weather.snowing.name = 雪 weather.sandstorm.name = 砂嵐 weather.sporestorm.name = 胞子嵐 weather.fog.name = 霧 @@ -715,8 +771,8 @@ sector.curlost = 失われたセクター sector.missingresources = [scarlet]資源が足りません sector.attacked = セクター [accent]{0}[white] が攻撃を受けています! sector.lost = セクター [accent]{0}[white] 喪失! -#note: the missing space in the line below is intentional = #注: 以下の行の空白は意図的なものです -sector.captured = セクター [accent]{0}[white]制圧! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = アイコンを変更 sector.noswitch.title = セクターを切り替えることができません sector.noswitch = 既存のセクターが攻撃を受けている間は、セクターを切り替えることはできません。\n\nセクター: [accent]{0}[] on [accent]{1}[] @@ -927,6 +983,7 @@ stat.abilities = 能力 stat.canboost = ブースト可能 stat.flying = 飛行 stat.ammouse = 使用弾薬 +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = ダメージ倍率 stat.healthmultiplier = 体力倍率 stat.speedmultiplier = スピード倍率 @@ -937,14 +994,47 @@ stat.immunities = 耐性 stat.healing = 治癒 ability.forcefield = フォースフィールド +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = リペアフィールド -ability.statusfield = {0} ステータスフィールド -ability.unitspawn = {0} 生産 +ability.repairfield.description = Repairs nearby units +ability.statusfield = ステータスフィールド +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = 生産 +ability.unitspawn.description = Constructs units ability.shieldregenfield = シールドリペアフィールド +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = ムーブメントライトニング +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = シールドアーク +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = リジェネ抑制フィールド -ability.energyfield = エネルギー範囲: [accent]{0}[] ダメージ ~ [accent]{1}[] ブロック / [accent]{2}[] ターゲット +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = エネルギー範囲 +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = コアにのみ搬入できます。 bar.drilltierreq = より高性能なドリルを使用してください @@ -984,6 +1074,7 @@ bullet.splashdamage = [stat]{0}[lightgray] 範囲ダメージ 約[stat] {1}[ligh bullet.incendiary = [stat]焼夷弾 bullet.homing = [stat]追尾弾 bullet.armorpierce = [stat]アーマー貫通 +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1019,6 +1110,7 @@ unit.items = アイテム unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /発 category.purpose = 説明 category.general = 一般 @@ -1039,6 +1131,7 @@ setting.backgroundpause.name = バックグラウンド中は一時停止する setting.buildautopause.name = 常に建築一時中断状態にする setting.doubletapmine.name = ダブルタップで採掘する setting.commandmodehold.name = コマンドモードで長押し +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = 起動時にクラッシュした場合にModを無効にする setting.animatedwater.name = 流体のアニメーション setting.animatedshields.name = シールドのアニメーション @@ -1085,13 +1178,14 @@ setting.position.name = プレイヤーの位置表示 setting.mouseposition.name = マウスの位置を表示 setting.musicvol.name = 音楽 音量 setting.atmosphere.name = 惑星の大気を表示 +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = 環境音 音量 setting.mutemusic.name = 音楽をミュート setting.sfxvol.name = 効果音 音量 setting.mutesound.name = 効果音をミュート setting.crashreport.name = 匿名でクラッシュレポートを送信する setting.savecreate.name = 自動保存 -setting.publichost.name = 誰でもゲームに参加できるようにする +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = プレイヤー数制限 setting.chatopacity.name = チャットの透明度 setting.lasersopacity.name = 電線の透明度 @@ -1099,6 +1193,8 @@ setting.bridgeopacity.name = ブリッジの透明度 setting.playerchat.name = ゲーム内にチャットを表示 setting.showweather.name = 天気のグラフィックを表示 setting.hidedisplays.name = 描画されているロジックディスプレイを非表示 +setting.macnotch.name = インターフェイスをノッチ表示に適応させる +setting.macnotch.description = 再起動が必要です。 steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = ベータ版では使用できません。 @@ -1109,6 +1205,7 @@ keybind.title = キーバインドを再設定 keybinds.mobile = [scarlet]モバイルでは多くのキーバインドが機能しません。基本的な動きのみがサポートされています。 category.general.name = 一般 category.view.name = 表示 +category.command.name = Unit Command category.multiplayer.name = マルチプレイ category.blocks.name = ブロックセレクト placement.blockselectkeys = \n[lightgray]キー: [{0}, @@ -1126,6 +1223,24 @@ keybind.mouse_move.name = マウスを追う keybind.pan.name = 視点移動 keybind.boost.name = ブースト keybind.command_mode.name = コマンドモード +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = リージョンの再構築 keybind.schematic_select.name = 範囲選択 keybind.schematic_menu.name = 設計図メニュー @@ -1189,17 +1304,25 @@ mode.pvp.description = エリア内で他のプレイヤーと戦います。\n[ mode.attack.name = アタック mode.attack.description = ウェーブがなく、敵の基地を破壊することを目指します。\n[gray]マップに赤色のコアが必要です。 mode.custom = カスタムルール +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = 禁止ブロックを非表示 rules.infiniteresources = 資源の無限化 rules.onlydepositcore = コアへの搬入のみを許可 +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = リアクターの爆発 rules.coreincinerates = 余剰アイテムの焼却 rules.disableworldprocessors = ワールドプロセッサーを無効にする rules.schematic = 設計図を許可 rules.wavetimer = ウェーブの自動進行 rules.wavesending = ウェーブスキップ +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = ウェーブ +rules.airUseSpawns = Air units use spawn points rules.attack = アタックモード +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = チームの最少人数 rules.rtsmaxsquadsize = チームの最大人数 @@ -1218,6 +1341,7 @@ rules.unitdamagemultiplier = ユニットのダメージ倍率 rules.unitcrashdamagemultiplier = ユニットの衝突ダメージ倍率 rules.solarmultiplier = 太陽光の倍率 rules.unitcapvariable = コア数によってユニット上限を変動 +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = 基礎ユニット上限数 rules.limitarea = マップエリアを制限 rules.enemycorebuildradius = 敵コア周辺の建設禁止区域の半径:[lightgray] (タイル) @@ -1250,6 +1374,8 @@ rules.weather = 気象 rules.weather.frequency = 頻度: rules.weather.always = 常時 rules.weather.duration = 継続時間: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = アイテム content.liquid.name = 液体 @@ -1469,6 +1595,7 @@ block.inverted-sorter.name = 反転ソーター block.message.name = メッセージブロック block.reinforced-message.name = 強化されたメッセージブロック block.world-message.name = ワールドメッセージブロック +block.world-switch.name = World Switch block.illuminator.name = イルミネーター block.overflow-gate.name = オーバーフローゲート block.underflow-gate.name = アンダーフローゲート @@ -1709,13 +1836,12 @@ block.disperse.name = ディスパーズ block.afflict.name = アフリクト block.lustre.name = ラストル block.scathe.name = スケース -block.fabricator.name = ファブリケーター block.tank-refabricator.name = 戦車再加工工場 block.mech-refabricator.name = メカ再加工工場 block.ship-refabricator.name = 戦艦再加工工場 block.tank-assembler.name = 戦車組立工場 -block.ship-assembler.name = メカ組立工場 -block.mech-assembler.name = 戦艦組立工場 +block.ship-assembler.name = 戦艦組立工場 +block.mech-assembler.name = メカ組立工場 block.reinforced-payload-conveyor.name = 強化ペイロードコンベアー block.reinforced-payload-router.name = 強化ペイロードルーター block.payload-mass-driver.name = ペイロードマスドライバー @@ -1828,9 +1954,13 @@ onset.turrets = ユニットは効果的ですが、[accent]タレット[] は onset.turretammo = タレットに[accent]ベリリウム弾[]を供給してください。 onset.walls = [accent]壁[]は建物に対するダメージを防ぐことができます。\n砲台の周囲に \uf6ee [accent]ベリリウムの壁[] をいくつか配置しましょう。 onset.enemies = 敵が迫ってきました、防御する準備をしてください。 +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = 敵は脆弱です。反撃しましょう! onset.cores = 新しいコアは [accent]コアタイル[] に配置できます。\n新しいコアは前線基地として機能し、リソースインベントリを他のコアと共有します。\n\uf725 コアを配置しましょう。 onset.detect = 敵は 2 分以内にあなたを見つけます。\n防御、採掘、生産を用意しましょう。 +onset.commandmode = [accent]shift[] を押しながら [accent]コマンドモード[] に移行します。\n[accent]左クリック&ドラッグ[] でユニットを選択します。\n[accent]右クリック[] をすると、選択したユニットに移動や攻撃などの命令をします。 +onset.commandmode.mobile = [accent]コマンドボタン[] を押して [accent]コマンドモード[] にします。\n長押ししながら [accent]ドラッグ[] でユニットを選択します。\n[accent]タップ[] で選択したユニットに移動や攻撃などの命令をします。 +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = 一部のブロックはコアユニットで拾うことができます。\nこの [accent]コンテナ[] を拾い、[accent]ペイロード搬入機[] に配置します。\n(デフォルトのキーは [ and ] で、拾ったり置いたりできます。) split.pickup.mobile = 一部のブロックはコアユニットで拾うことができます。\nこの[accent]コンテナ[]を拾い、[accent]ペイロード搬入機[]に配置します。\n(何かを拾ったり置いたりするには、長押しします。) split.acquire = ユニットを構築するには、タングステンを入手する必要があります。 @@ -2025,7 +2155,6 @@ block.logic-display.description = プロセッサからの任意のグラフィ block.large-logic-display.description = プロセッサからの任意のグラフィックを表示します。 block.interplanetary-accelerator.description = 巨大な電磁レールガンタワーです。別惑星への展開のためにコアを重力圏脱出可能速度まで加速します。 block.repair-turret.description = 範囲内の損傷したブロックを近い順に継続的に修復します。オプションで冷却液を活用できます。 -block.payload-propulsion-tower.description = 長距離ペイロード輸送構造です。他の接続されたペイロード推進タワーにペイロードを発射します。 block.core-bastion.description = 基本的な堅いコアです。一度破壊されると、セクターを失います。破壊されないようにしましょう。 block.core-citadel.description = バージョンアップしたコアです。 より優れた耐久を持っています。 バスティオンコアよりも多くの資源を格納します。 block.core-acropolis.description = さらにバージョンアップしたコアです。 非常に優れた耐久を持っています。 シタデルコアよりも多くの資源を格納します。 @@ -2061,7 +2190,6 @@ block.impact-drill.description = 鉱石の上に置くと、一定の間隔で block.eruption-drill.description = 改良されたインパクトドリルです。 トリウムの採掘が可能。 電力と水素が必要です。 block.reinforced-conduit.description = 液体または気体を輸送します。 側面からの搬入を受け入れません。 block.reinforced-liquid-router.description = 液体をすべての向きに均等に分配します。 -block.reinforced-junction.description = 交差する 2 つのパイプのブリッジとして機能します。 block.reinforced-liquid-tank.description = 大量の液体を蓄えることができます。 block.reinforced-liquid-container.description = 中量の液体を蓄えることができます。 block.reinforced-bridge-conduit.description = 構造物や地形の上に液体を輸送させることができます。 @@ -2179,6 +2307,7 @@ unit.emanate.description = アクロポリスコアを敵から守ります。\n lst.read = リンクされたメモリセルから数値を読み取ります。 lst.write = リンクされたメモリセルに数値を書き込みます。 lst.print = メッセージブロックにテキストを追加します。[accent]Print Flush[] を使用するまで何も表示しません。 +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = ロジックディスプレイに操作を追加します。[accent]Draw Flush[] を使用するまで何も表示しません。 lst.drawflush = キューに入れられた [accent]Draw[] 操作をディスプレイにフラッシュします。 lst.printflush = キューに入れられた [accent]Print[] 操作をメッセージ ブロックにフラッシュします。 @@ -2201,6 +2330,8 @@ lst.getblock = 任意の座標のタイルの情報を取得します。 lst.setblock = 任意の座標のタイルの情報を変更します。 lst.spawnunit = 任意の座標にユニットをスポーンさせます。 lst.applystatus = ユニットからステータス効果を適用または削除する。 +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = 任意の座標で発生するウェーブをシミュレーションします。\nウェーブを進めません。 lst.explosion = ある場所で爆発を起こします。 lst.setrate = プロセッサーの実行速度を1命令/tickで設定します。 @@ -2212,6 +2343,47 @@ lst.cutscene = プレイヤーのカメラを操作します。 lst.setflag = 全プロセッサーから読み取れるグローバルフラグを設定します。 lst.getflag = グローバルフラグが設定されているかどうかを確認します。 lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]ここではユニット構築ロジックは使用できません。 lenum.type = ユニットや建物の種類を取得します。\n例:任意のルーターに対して、 [accent]@router[] を返します。\n文字列ではありません。 lenum.shoot = 指定した座標に向かって撃ちます。 @@ -2224,6 +2396,7 @@ laccess.dead = ユニットや建物が機能しているかどうか、また laccess.controlled = ユニットや建物がどのように制御されているのかを取得します。\nプロセッサ制御の場合、 [accent]@ctrlProcessor[] を返します。\nプレイヤー制御の場合、 [accent]@ctrlPlayer[] を返します。\n隊列を組んでいる場合、 [accent]@ctrlFormation[] を返します。\nそれ以外は 0 を返します。 laccess.progress = アクションの進行状況を0〜1で取得します。\n生産、リロード、または建設の進捗状況を返します。 laccess.speed = ユニットの最高速度を返します。(単位:タイル/秒) +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = 不明 lcategory.unknown.description = 未分類の指示です。 lcategory.io = 入出力 @@ -2249,6 +2422,7 @@ graphicstype.poly = 塗りつぶされた多角形を描きます。 graphicstype.linepoly = 輪郭だけの多角形を描きます。 graphicstype.triangle = 塗りつぶされた三角形を描きます。 graphicstype.image = 何らかのコンテンツのイメージを描画します。\n例: [accent]@router[] や [accent]@dagger[]など。 +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = 常にtrueを返します。 lenum.idiv = 整数の割り算をします。 lenum.div = 割り算をします。\nゼロ除算で [accent]null[] を返します。 @@ -2266,6 +2440,7 @@ lenum.xor = ビット単位でのXOR演算をします。 lenum.min = 二つの値を比較し、小さいほうを返します。 lenum.max = 二つの値を比較し、大きいほうを返します。 lenum.angle = ベクトルの角度を度で計算します。 +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = ベクトルの長さを計算します。 lenum.sin = sinを度で計算します。 lenum.cos = cosを度で計算します。 @@ -2327,6 +2502,7 @@ lenum.unbind = ロジック制御を完全に無効にします。\n標準的な lenum.move = 正確にある座標に移動します。 lenum.approach = ある座標に近づきます。 lenum.pathfind = 敵のスポーンまでの道を探します。 +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = 指定した座標に向かって撃ちます。 lenum.targetp = 任意のユニットや建物を撃ちます。 lenum.itemdrop = アイテムをドロップします。 @@ -2337,8 +2513,13 @@ lenum.payenter = ユニットが乗っているペイロードブロックに進 lenum.flag = ユニットのフラグです。 lenum.mine = 任意の位置を採掘します。 lenum.build = 建築をします。 -lenum.getblock = 座標から建物とタイプを取得します。\nユニットは範囲内でなければなりません。\n建物以外の物の型は [accent]@solid[] になります。 +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = ユニットが座標の近くにあるかどうかを確認します。 lenum.boost = ブーストの開始、停止をします。 -onset.commandmode = [accent]shift[] を押しながら [accent]コマンドモード[] に移行します。\n[accent]左クリック&ドラッグ[] でユニットを選択します。\n[accent]右クリック[] をすると、選択したユニットに移動や攻撃などの命令をします。 -onset.commandmode.mobile = [accent]コマンドボタン[] を押して [accent]コマンドモード[] にします。\n長押ししながら [accent]ドラッグ[] でユニットを選択します。\n[accent]タップ[] で選択したユニットに移動や攻撃などの命令をします。 +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index a08654d6f0..af8ee33bf3 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = 추천(스타) 수 schematic = 설계도 schematic.add = 설계도 저장하기 schematics = 설계도 +schematic.search = 설계도 검색하기 schematic.replace = 해당 이름의 설계도가 이미 존재합니다. 교체하시겠습니까? schematic.exists = 해당 이름의 설계도가 이미 존재합니다. schematic.import = 설계도 가져오기 @@ -69,15 +70,16 @@ schematic.shareworkshop = 창작마당에 공유 schematic.flip = [accent][[{0}][]/[accent][[{1}][]: 설계도 뒤집기 schematic.saved = 설계도 저장됨 schematic.delete.confirm = 이 설계도는 완전히 삭제될 것입니다. -schematic.rename = 설계도 이름 바꾸기 +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} 블록 schematic.disabled = [scarlet]설계도 비활성화됨[]\n이 [accent]맵[] 또는 [accent]서버[] 에서는 설계도를 사용할 수 없습니다. -schematic.tags = 태그: +schematic.tags = 태그: schematic.edittags = 태그 수정하기 schematic.addtag = 태그 추가하기 schematic.texttag = 텍스트 태그 schematic.icontag = 아이콘 태그 schematic.renametag = 태그 이름바꾸기 +schematic.tagged = {0} tagged schematic.tagdelconfirm = 이 태그를 완전히 삭제하시겠습니까? schematic.tagexists = 이 태그는 이미 존재합니다. @@ -94,7 +96,7 @@ globalitems = [accent]전체 자원 map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까? level.highscore = 최고 점수: [accent]{0} level.select = 맵 선택 -level.mode = 게임 모드: +level.mode = 게임 모드: coreattack = < 코어가 공격을 받고 있습니다! > nearpoint = [[ [scarlet]즉시 적 소환구역에서 떠나세요[] ]\n단계가 시작하는 순간 구역 내의 모든 건물과 기체가 파괴됩니다! database = 코어 데이터베이스 @@ -142,7 +144,7 @@ mod.enabled = [lightgray]활성화됨 mod.disabled = [scarlet]비활성화됨 mod.multiplayer.compatible = [gray]멀티플레이어 호환 가능 mod.disable = 비활성화 -mod.content = 콘텐츠: +mod.content = 콘텐츠: mod.delete.error = 모드를 삭제할 수 없습니다. 파일이 사용 중일 수 있습니다. mod.incompatiblegame = [red]구버전 게임 mod.incompatiblemod = [red]호환되지 않음 @@ -156,7 +158,7 @@ mod.outdatedv7.details = 이 모드는 최신 버전의 게임과 호환되지 mod.blacklisted.details = 이 모드는 이 버전의 게임에서 충돌 또는 기타 문제를 일으키는 것으로 인해 수동으로 블랙리스트에 올라와 있습니다. 사용하지 마세요. mod.missingdependencies.details = 이 모드에는 종속성이 없음: {0} mod.erroredcontent.details = 이 게임은 로딩하는 동안 오류가 발생했습니다. 모드 작성자에게 수정하도록 요청하세요. -mod.circulardependencies.details = 이 모드는 서로 의존하는 의존성을 지니고 있습니다. +mod.circulardependencies.details = 이 모드는 서로 의존하는 의존성을 지니고 있습니다. mod.incompletedependencies.details = 잘못되었거나 누락한 종속성으로 인해 이 모드를 불러올 수 없습니다: {0}. mod.requiresversion = 필요한 게임 버전: [red]{0} mod.errors = 콘텐츠를 불러오는 중에 오류가 발생함 @@ -178,12 +180,12 @@ mod.folder.missing = 창작마당에는 폴더 형태의 모드만 게시할 수 mod.scripts.disable = 이 기기는 스크립트가 있는 모드를 지원하지 않습니다. 게임을 플레이하려면 이 모드를 비활성화해야 합니다. about.button = 정보 -name = 이름 : +name = 이름 : noname = 먼저 [accent]플레이어 이름[]을 설정하세요. -search = 검색: +search = 검색: planetmap = 행성 지도 launchcore = 코어 출격 -filename = 파일 이름: +filename = 파일 이름: unlocked = 새로운 콘텐츠가 해금되었습니다! available = 새로운 콘텐츠 해금이 가능합니다! unlock.incampaign = < 해금 후 상세정보 열람이 가능합니다 > @@ -198,7 +200,7 @@ techtree.serpulo = 세르플로 techtree.erekir = 에르키아 research.load = 불러오기 research.discard = 무시하기 -research.list = [lightgray]연구: +research.list = [lightgray]연구: research = 연구 researched = [lightgray]{0} 연구 완료 research.progress = {0}% 완료됨 @@ -253,11 +255,19 @@ trace = 플레이어 정보 보기 trace.playername = 플레이어 이름: [accent]{0} trace.ip = IP: [accent]{0} trace.id = UUID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = 모바일 클라이언트: [accent]{0} trace.modclient = 사용자 지정 클라이언트: [accent]{0} trace.times.joined = 입장 횟수: [accent]{0} trace.times.kicked = 추방 횟수: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = 잘못된 클라이언트 ID입니다! 버그 보고서를 보내주세요. +player.ban = 플레이어 차단 +player.kick = 플레이어 강퇴 +player.trace = 플레이어 찾기 +player.admin = 관리자 권한 부여 +player.team = 팀 변경하기 server.bans = 차단 목록 server.bans.none = 차단된 플레이어를 찾을 수 없습니다! server.admins = 관리자 @@ -271,12 +281,13 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]사용자 정의 서버 confirmban = 정말로 "{0}[white]" 을(를) 차단하시겠습니까? confirmkick = 정말로 "{0}[white]" 을(를) 추방하시겠습니까? -confirmvotekick = 정말로 "{0}[white]" 을(를) 투표로 추방하시겠습니까? confirmunban = 정말로 이 플레이어를 차단 해제하시겠습니까? confirmadmin = 정말로 "{0}[white]" 을(를) 관리자로 임명하시겠습니까? confirmunadmin = 정말로 "{0}[white]"의 관리자를 박탈하시겠습니까? +votekick.reason = 강퇴 사유 +votekick.reason.message = "{0}[white]" 을(를) 투표 추방하시려면 해당 사유를 적어주세요 : joingame.title = 게임 참가 -joingame.ip = 주소: +joingame.ip = 주소: disconnect = 연결이 끊어졌습니다. disconnect.error = 연결 오류 disconnect.closed = 연결이 종료되었습니다. @@ -330,12 +341,23 @@ open = 열기 customize = 사용자 정의 규칙 cancel = 취소 command = 명령 +command.queue = [lightgray][Queuing] command.mine = 채굴 command.repair = 수리 command.rebuild = 재건 command.assist = 플레이어 지원 command.move = 이동 command.boost = 비행 +command.enterPayload = 화물 블록에 들어가기 +command.loadUnits = 유닛 적재 +command.loadBlocks = 블록 적재 +command.unloadPayload = 화물 내려놓기 +stance.stop = 명령 취소하기 +stance.shoot = 명령: 사격 +stance.holdfire = 명령: 사격 중지 +stance.pursuetarget = 명령: 타겟 추격 +stance.patrol = 명령: 정찰 +stance.ram = 명령 : 돌격\n[lightgray] 유닛이 장애물 여부를 확인하지 않고 일직선으로 이동합니다. openlink = 링크 열기 copylink = 링크 복사 back = 뒤로가기 @@ -382,16 +404,16 @@ custom = 사용자 정의 builtin = 내장 map.delete.confirm = 정말로 이 맵을 삭제하시겠습니까? 이 명령은 취소할 수 없습니다! map.random = [accent]무작위 맵 -map.nospawn = 이 맵에 플레이어가 생성될 코어가 없습니다! 편집기에서 [#{0}]{1}[] 코어를 맵에 추가하세요. -map.nospawn.pvp = 이 맵에는 적 플레이어가 생성될 코어가 없습니다! 편집기에서 [royal]주황색 팀이 아닌[] 코어를 추가하세요. -map.nospawn.attack = 이 맵에는 플레이어가 공격할 수 있는 적 코어가 없습니다! 편집기에서 [#{0}]{1}[] 코어를 맵에 추가하세요. +map.nospawn = 이 맵에 플레이어가 생성될 코어가 없습니다! 편집기에서 {0} 코어를 맵에 추가하세요. +map.nospawn.pvp = 이 맵에는 적 플레이어가 생성될 코어가 없습니다! 편집기에서 [scarlet]주황색 팀이 아닌[] 코어를 추가하세요. +map.nospawn.attack = 이 맵에는 플레이어가 공격할 수 있는 적 코어가 없습니다! 편집기에서 {0} 코어를 맵에 추가하세요. map.invalid = 맵 로드 오류: 맵 파일이 손상되었거나 잘못된 파일입니다. workshop.update = 아이템 업데이트 workshop.error = 창작마당 세부 사항을 가져오는 중 오류가 발생했습니다: {0} map.publish.confirm = 이 맵을 게시하시겠습니까?\n\n[lightgray]창작마당 EULA에 먼저 동의해야 하며, 그렇지 않으면 맵이 표시되지 않습니다! workshop.menu = 이 아이템으로 수행 할 작업을 선택하세요. workshop.info = 아이템 정보 -changelog = 변경점 (선택 사항): +changelog = 변경점 (선택 사항): updatedesc = 제목&설명 덮어쓰기 eula = 스팀 EULA missing = 이 아이템은 삭제되거나 이동되었습니다.\n[lightgray]창작마당 목록이 자동으로 연결 해제되었습니다. @@ -399,22 +421,28 @@ publishing = [accent]게시 중... publish.confirm = 이것을 게시하시겠습니까?[lightgray]창작마당 EULA에 동의해야 합니다. 그렇지 않으면 아이템이 표시되지 않습니다! publish.error = 아이템 게시 오류: {0} steam.error = 스팀 서비스를 초기화하지 못했습니다.\n오류: {0} -editor.planet = 행성: -editor.sector = 구역: -editor.seed = 시드: +editor.planet = 행성: +editor.sector = 구역: +editor.seed = 시드: editor.cliffs = 언덕 전환 editor.brush = 브러쉬 editor.openin = 편집기 열기 editor.oregen = 광물 무작위 생성 -editor.oregen.info = 광물 무작위 생성: +editor.oregen.info = 광물 무작위 생성: editor.mapinfo = 맵 정보 -editor.author = 제작자: -editor.description = 설명: +editor.author = 제작자: +editor.description = 설명: editor.nodescription = 맵을 공유하려면 최소 4자 이상의 설명이 있어야 합니다. editor.waves = 단계 editor.rules = 규칙 editor.generation = 지형 생성 editor.objectives = 목표 +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = 인게임 편집 editor.playtest = 맵 테스트 editor.publish.workshop = 창작마당 게시 @@ -422,9 +450,9 @@ editor.newmap = 맵 만들기 editor.center = 중앙 editor.search = 맵 검색 editor.filters = 맵 필터링 -editor.filters.mode = 게임 모드: -editor.filters.type = 맵 유형: -editor.filters.search = 검색: +editor.filters.mode = 게임 모드: +editor.filters.type = 맵 유형: +editor.filters.search = 검색: editor.filters.author = 제작자 editor.filters.description = 설명 editor.shiftx = X축 밀기 @@ -438,7 +466,7 @@ waves.health = 체력: {0}% waves.perspawn = 기씩 waves.shields = 방어막만큼 소환 waves.to = 부터 -waves.spawn = 소환: +waves.spawn = 소환: waves.spawn.all = <전체> waves.spawn.select = 적 소환지점 선택 waves.spawn.none = [scarlet] 적 소환지점을 찾을 수 없습니다 @@ -458,7 +486,7 @@ waves.sort.begin = 시작 단계 waves.sort.health = 체력 waves.sort.type = 기체 유형 waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = 모두 숨기기 waves.units.show = 모두 보이기 @@ -471,6 +499,8 @@ editor.default = [lightgray]<기본값> details = 설명... edit = 편집... variables = 변수 +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = 이름: editor.spawn = 기체 생성 editor.removeunit = 기체 삭제 @@ -482,6 +512,7 @@ editor.errorlegacy = 이 맵은 너무 오래됐고, 더 이상 지원하지 않 editor.errornot = 맵 파일이 아닙니다. editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다. editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러오려고 시도하는 건가요? +editor.errorlocales = Error reading invalid locale bundles. editor.update = 업데이트 editor.randomize = 무작위 editor.moveup = 위로 이동 @@ -493,6 +524,7 @@ editor.sectorgenerate = 구역 형성 editor.resize = 맵 크기조정 editor.loadmap = 맵 불러오기 editor.savemap = 맵 저장 +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = 저장됨! editor.save.noname = 맵에 이름이 없습니다! '맵 정보' 메뉴에서 설정하세요. editor.save.overwrite = 이 맵은 내장된 맵을 덮어씁니다! '맵 정보' 에서 다른 이름을 선택하세요. @@ -513,11 +545,11 @@ editor.loadimage = 지형 가져오기 editor.saveimage = 지형 내보내기 editor.unsaved = [scarlet]변경사항을 저장하지 않았습니다![]\n정말로 나가시겠습니까? editor.resizemap = 맵 크기 조정 -editor.mapname = 맵 이름: +editor.mapname = 맵 이름: editor.overwrite = [accept]경고!\n이 맵은 기존 맵을 덮어 씁니다. editor.overwrite.confirm = [scarlet]경고![] 이 이름을 가진 맵이 이미 있습니다. 덮어 쓰시겠습니까? editor.exists = 이 이름의 맵이 이미 존재합니다. -editor.selectmap = 불러올 맵을 선택하세요: +editor.selectmap = 불러올 맵을 선택하세요: toolmode.replace = 재배치 toolmode.replace.description = 지형 블록에만 그립니다. @@ -531,6 +563,8 @@ toolmode.eraseores = 자원 초기화 toolmode.eraseores.description = 자원만 초기화합니다. toolmode.fillteams = 팀 채우기 toolmode.fillteams.description = 블록의 팀을 선택한 팀으로 채웁니다. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = 팀 그리기 toolmode.drawteams.description = 블록의 팀을 선택한 팀으로 그립니다. #unused @@ -555,6 +589,7 @@ filter.clear = 초기화 filter.option.ignore = 무시 filter.scatter = 흩뿌리기 filter.terrain = 지형 +filter.logic = Logic filter.option.scale = 크기 filter.option.chance = 배치 빈도 @@ -578,9 +613,28 @@ filter.option.floor2 = 2번째 타일 filter.option.threshold2 = 2번째 경계선 filter.option.radius = 반경 filter.option.percentile = 백분율 +filter.option.code = 코드 +filter.option.loop = 루프 +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon -width = 너비: -height = 높이: +width = 너비: +height = 높이: menu = 메뉴 play = 플레이 campaign = 캠페인 @@ -601,7 +655,7 @@ mapeditor = 맵 편집기 abandon = 포기하기 abandon.text = 이 지역과 모든 자원이 적에게 넘어갑니다. locked = 잠김 -complete = [lightgray]해금 조건: +complete = [lightgray]해금 조건: requirement.wave = {1} 지역에서 {0}단계 달성 requirement.core = {0} 지역에서 적 코어를 파괴 requirement.research = {0} 연구 @@ -628,9 +682,12 @@ objective.destroycore.name = 코어 파괴 objective.commandmode.name = 명령 모드 objective.flag.name = 플래그 marker.shapetext.name = 도형과 문자 -marker.minimap.name = 미니맵 +marker.point.name = Point marker.shape.name = 도형 marker.text.name = 문자 +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = 배경 marker.outline = 외곽선 @@ -657,7 +714,6 @@ resources.max = 최대 bannedblocks = 금지된 블록 objectives = 목표 bannedunits = 금지된 기체 -rules.hidebannedblocks = 금지된 블록 숨기기 bannedunits.whitelist = 금지된 기체만 활성화 bannedblocks.whitelist = 금지된 블록만 활성화 addall = 모두 추가 @@ -680,24 +736,24 @@ error.any = 알 수 없는 네트워크 오류 error.bloom = 블룸 그래픽 효과를 적용하지 못했습니다.\n기기가 이 기능을 지원하지 않는 것일 수도 있습니다. weather.rain.name = 비 -weather.snow.name = 눈 +weather.snowing.name = 눈 weather.sandstorm.name = 모래 폭풍 weather.sporestorm.name = 포자 폭풍 weather.fog.name = 안개 -campaign.playtime = \uf129 [lightgray]Sector Playtime: {0} -campaign.complete = [accent]Congratulations.\n\nThe enemy on {0} has been defeated.\n[lightgray]The final sector has been conquered. +campaign.playtime = \uf129 [lightgray]지역 플레이타임: {0} +campaign.complete = [accent]축하드립니다.\n\n {0} 지역의 적이 패배하였습니다\n[lightgray] 마지막 지역을 점령하였습니다. sectorlist = 지역 목록 sectorlist.attacked = {0} 공격받는 중 sectors.unexplored = [lightgray]미개척지[] -sectors.resources = 자원: -sectors.production = 생산량: -sectors.export = 수출량: -sectors.import = 수입량: -sectors.time = 진행 시간: -sectors.threat = 위험도: +sectors.resources = 자원: +sectors.production = 생산량: +sectors.export = 수출량: +sectors.import = 수입량: +sectors.time = 진행 시간: +sectors.threat = 위험도: sectors.wave = 단계: -sectors.stored = 저장량: +sectors.stored = 저장량: sectors.resume = 재개 sectors.launch = 출격 sectors.select = 선택 @@ -716,8 +772,8 @@ sector.curlost = 지역 잃음 sector.missingresources = [scarlet]코어 자원 부족[] sector.attacked = [accent]{0}[white] 지역이 공격받고 있습니다![] sector.lost = [accent]{0}[white] 지역을 잃었습니다![] -#note: the missing space in the line below is intentional -sector.captured = [accent]{0}[white] 지역을 점령했습니다![] +sector.capture = [accent]{0}[white] 지역을 점령하였습니다! +sector.capture.current = 지역 점령! sector.changeicon = 아이콘 바꾸기 sector.noswitch.title = 지역 전환 불가능 sector.noswitch = 기존 지역이 공격받는 동안은 지역을 전환할 수 없습니다.\n\n지역: [accent]{0}[] 중 [accent]{1}[] @@ -754,24 +810,24 @@ sector.planetaryTerminal.name = 대행성 출격단지 sector.coastline.name = 해안선 sector.navalFortress.name = 해군 요새 -sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지녔습니다. 적은 위협적이지 않으며, 자원이 거의 없습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n이제 출격할 시간입니다! -sector.frozenForest.description = 산과 가까운 이곳에도, 포자가 퍼졌습니다. 혹한의 추위조차 포자가 퍼지는 것을 억누를 수 없습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배우십시오. -sector.saltFlats.description = 사막의 변두리에는 소금으로 이루어진 평원이 있습니다. 이곳에선 매우 적은 자원만 발견되었습니다.\n\n하지만 자원이 희소한 이곳에서도 적들의 요새가 포착되었습니다. 그들을 사막의 모래로 만들어버리십시오. -sector.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 탈환하십시오. 강화 유리를 제련하고, 물을 끌어올려 포탑과 드릴에 공급하십시오. 더 강한 방어선을 구성할 수 있습니다. +sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지녔습니다. 적은 위협적이지 않지만, 자원도 풍부하진 않습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n이제 출격할 시간입니다! +sector.frozenForest.description = 산과 가까운 이곳에도, 포자가 퍼졌습니다. 혹한의 추위조차 포자가 퍼지는 것을 억누를 수 없습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배워야 합니다. +sector.saltFlats.description = 사막의 변두리에는 소금으로 이루어진 평원이 있습니다. 이곳에선 매우 적은 자원만 발견되었습니다.\n\n하지만 자원이 희소한 이곳에서도 적들의 요새가 포착되었습니다. 그들을 사막의 모래로 만들어버리세요! +sector.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 탈환하여 강화 유리를 제련하고, 포탑과 드릴에 물을 공급하여 더 강력한 방어선을 구축하여야 합니다. sector.ruinousShores.description = 폐허를 지나서 나오는 해안선. 한때, 이곳에는 해안 방어기지가 있었습니다.\n많은 부분이 소실되었습니다. 기본적인 방어 시설을 제외한 모든 것이 고철 덩어리가 되었습니다. \n외부로 세력을 확장하기 위한 첫 발걸음으로, 무너진 시설을 재건하고 잃어버린 기술을 다시 회수하십시오. sector.stainedMountains.description = 더 내륙에는 아직 포자에 오염되지 않은 산맥이 있습니다.\n이 지역에서 티타늄을 채굴하고 이것을 어떻게 사용하는지 배우십시오.\n\n이곳은 더 강력한 적이 주둔하고 있습니다. 적이 가장 강력한 기체를 준비할 시간을 주지 마십시오. -sector.overgrowth.description = 이곳은 포자들의 근원과 가까이에 있는 과성장 지대입니다. 적이 이곳에 전초기지를 설립했습니다. 대거를 생산해 적의 코어를 박살 내고 우리가 잃어버린 것을 되찾으십시오! +sector.overgrowth.description = 이곳은 포자들의 근원과 가까이에 있는 과성장 지대입니다. 적이 이곳에 전초기지를 설립했습니다. 대거를 생산해 적의 기지를 박살 내고 우리가 잃어버린 것을 되찾아야 합니다! sector.tarFields.description = 산지와 사막 사이에 있는 석유 생산지의 외곽이며, 사용 가능한 타르가 매장되어 있는 희귀한 지역 중 하나입니다. 버려진 지역이지만 이곳에는 위험한 적군이 있습니다. 그들을 과소평가하지 마십시오.\n\n[lightgray]석유 가공기술을 익히는 것이 도움이 될 것입니다. -sector.desolateRift.description = 극도로 위험한 지역입니다. 자원은 풍부하지만, 사용 가능한 공간은 거의 없습니다. 코어 파괴의 위험성이 높으니 가능한 한 빨리 방어시설을 구축하십시오. 또한, 적의 공격 주기가 길다고 안심하지 마십시오. -sector.nuclearComplex.description = 과거 토륨의 생산, 연구와 처리를 위해 운영되었던 시설입니다. 지금은 그저 폐허로 전락하였지만, 다수의 적이 배치된 지역입니다. 그들은 끊임없이 당신을 공격할 것입니다.\n\n[lightgray]토륨의 다양한 사용법을 연구하고 익히십시오. -sector.fungalPass.description = 포자로 얼룩진 높고 낮은 산이 만나는 곳. 이곳에서 적의 소규모 정찰기지를 발견하였습니다.\n그것들을 파괴하십시오.\n대거와 크롤러 기체를 사용하여 두 개의 코어를 파괴하십시오. +sector.desolateRift.description = 극도로 위험한 지역입니다. 자원은 풍부하지만, 사용 가능한 공간은 거의 없습니다. 적의 공격 주기가 길지만, 기지가 파괴될 위험이 높으니 가능한 한 빨리 방어시설을 구축하여야 합니다. +sector.nuclearComplex.description = 과거 토륨의 생산, 연구와 처리를 위해 운영되었던 시설입니다. 지금은 그저 폐허로 전락하였지만, 다수의 적이 배치된 지역입니다. 그들은 끊임없이 당신을 공격할 것입니다.\n\n[lightgray]토륨의 다양한 사용법을 연구하고 익혀 보세요. +sector.fungalPass.description = 포자로 얼룩진 높고 낮은 산이 만나는 곳. 이곳에서 적의 소규모 정찰기지를 발견하였습니다.\n그것들을 파괴하십시오.\n대거와 크롤러 기체를 사용하여 두 개의 기지를 파괴하여야 합니다. sector.biomassFacility.description = 포자가 탄생한 곳. 이곳은 포자를 연구하고 최초로 생산했던 시설입니다.\n이 시설에 남아있는 기술을 습득하고, 연료와 플라스터늄을 생산하기 위해 포자를 배양하십시오. \n\n[lightgray]이 시설이 붕괴한 후에, 시설 내에 배양되던 대량의 포자가 외부로 방출되었습니다. 이로 인해 생태계 교란종인 포자가 지역 생태계에서 번식하게 되었고, 그 무엇도 이 무자비하고 작은 침략자에게 대항할 수 없었습니다. -sector.windsweptIslands.description = 육지에서 멀리 떨어진 이곳에는 작은 군도가 있습니다. 기록에 따르면 한 때 [accent]플라스터늄[]을 생산하는 시설이 존재했습니다.\n\n몰려오는 적 해군을 막으며, 섬에 기지를 구축하고, 공장들을 연구하십시오. +sector.windsweptIslands.description = 육지에서 멀리 떨어진 이곳에는 작은 군도가 있습니다. 기록에 따르면 한 때 [accent]플라스터늄[]을 생산하는 시설이 존재했습니다.\n\n몰려오는 적 해군을 막으며, 섬에 기지를 구축하고, 공장들을 연구하여야 합니다. sector.extractionOutpost.description = 적이 다른 지역에 자원을 보내기 위한 용도로 건설한 보급기지입니다.\n\n강력한 적들이 지키고 있는 지역을 공격하거나, 적에게 침공당한 지역을 효과적으로 수호하기 위해서는 우리도 이 수송 기술이 필요합니다. 적의 기지를 파괴하고, 그들의 수송 기술을 강탈하십시오. sector.impact0078.description = 이곳에는 태양계에 처음 진입한 우주 수송선의 잔해가 존재합니다.\n\n우주선이 파괴된 잔해에서 최대한 많은 자원을 회수하고, 손상되지 않은 그들의 기술을 획득하십시오. sector.planetaryTerminal.description = 이 행성에서의 마지막 전투를 준비하십시오.\n\n적이 필사의 각오로 지키고 있는 이 해안 기지엔 우주에 코어를 발사할 수 있는 시설이 있습니다.\n\n해군을 생산하여 적을 신속하게 제거하고, 그들의 행성간 이동 기술을 강탈하십시오.\n\n[royal] 건투를 빕니다.[] sector.coastline.description = 이 장소에서 해상 기체 기술의 잔재가 발견되었습니다. 적의 공격을 격퇴하고, 이 지역을 점령하고, 기술을 습득하십시오. -sector.navalFortress.description = 적은 자연적으로 요새화된 외딴 섬에 기지를 세웠습니다. 이 전초기지를 파괴하시오. 적의 발전된 함선 건조 기술을 습득하고 연구하시오. +sector.navalFortress.description = 적은 자연적으로 요새화된 외딴 섬에 기지를 세웠습니다. 이 전초기지를 파괴하여 적의 발전된 함선 건조 기술을 습득하고 연구하십시오. sector.onset.name = 시작 sector.aegis.name = 보호 sector.lake.name = 호수 @@ -789,23 +845,23 @@ sector.siege.name = 포위 sector.crossroads.name = 교차로 sector.karst.name = 카르스트 sector.origin.name = 근원 -sector.onset.description = 튜토리얼 지역. 아직 목표가 만들어지지 않았습니다. 정보를 더 기다리십시오. -sector.aegis.description = 적은 방어막으로 보호받고 있습니다. 이 구역에서 실험적인 방어막 차단기 모듈이 감지되었습니다.\n이 구조물을 찾으십시오. 텅스텐을 공급해 방어막 차단기를 가동하고 적의 기지를 파괴하십시오. -sector.lake.description = 이 지역의 광재 호수는 기체의 활동범위를 크게 제한시킵니다. 호버 유닛이 유일한 선택지입니다.\n[accent]함선 재구성기[]를 연구하고 [accent]일루드[]를 가능한 한 빨리 생산하십시오. -sector.intersect.description = 정찰 결과 이 지역은 착륙 직후 여러 방향에서 공격받을 것으로 예측됩니다.\n방어선을 빠르게 구성하고 가능한 한 빠르게 확장하십시오.\n이 지역의 험난한 지형을 위해서는 [accent]기계[] 기체가 필요할 것입니다. -sector.atlas.description = 이 지역은 각기 다른 지형을 포함하고 있으며, 효과적으로 공격하기 위해서는 다양한 기체가 필요합니다.\n이곳에서 발견된 더 강력한 적의 기지를 통과하기 위해서는 상위 등급의 기체가 필요할 수도 있습니다.\n[accent]전해조[]와 [accent]전차 재조립기[]를 연구하십시오. +sector.onset.description = 튜토리얼 지역. 아직 목표가 정해지지 않았습니다. 추가적인 정보를 제공받기 위해 잠시 대기해 주세요 +sector.aegis.description = 적은 방어막으로 보호받고 있습니다. 이 구역에서 실험적인 방어막 차단기 모듈이 감지되었습니다.\n이 구조물을 찾으. 텅스텐을 공급해 방어막 차단기를 가동하고 적의 기지를 파괴하여야 합니다. +sector.lake.description = 이 지역의 광재 호수는 기체의 활동범위를 크게 제한시킵니다. 호버링 유닛만이 유일한 선택지입니다.\n[accent]함선 재구성기[]를 연구하고 [accent]일루드[]를 가능한 한 빨리 생산하여야 합니다. +sector.intersect.description = 정찰 결과 이 지역은 착륙 직후 여러 방향에서 공격받을 것으로 예측됩니다.\n방어선을 빠르게 구축하고 가능한 한 빠르게 확장하여야 합니다.\n이 지역의 험난한 지형을 위해서는 [accent]기계[] 기체가 필요할 것입니다. +sector.atlas.description = 이 지역은 각기 다른 지형을 포함하고 있으며, 효과적으로 공격하기 위해서는 다양한 기체가 필요합니다.\n이곳에서 발견된 더 강력한 적의 기지를 통과하기 위해서는 상위 등급의 기체가 필요할 수도 있습니다.\n[accent]전해조[]와 [accent]전차 재조립기[]를 연구하세요. sector.split.description = 이 지역에 최소한으로 존재하는 적 주둔군은 새로운 운송 기술을 시험하기에 완벽합니다. -sector.basin.description = {임시}\n\n현재의 마지막 지역. 이 지역은 도전 레벨입니다 - 이후 릴리즈에서 많은 지역이 더 추가될 예정입니다. -sector.marsh.description = 이 지역은 아르키사이트가 풍부하지만 분출구의 수는 한정적입니다.\n[accent]화학적 연소실[]을 건설하여 전력을 생산하시오. +sector.basin.description = 이 지역에는 많은 수의 적이 확인되었습니다. 발판을 마련하기 위해 신속히 유닛을 생산하여 적의 기지를 무력화 해야 합니다. +sector.marsh.description = 이 지역은 아르키사이트가 풍부하지만 분출구의 수는 한정적입니다.\n[accent]화학적 연소실[]을 건설하여 전력을 생산하세요. sector.peaks.description = 이 지역의 산악 지형은 대부분의 기체를 무용지물로 만들었습니다. 비행 가능한 기체가 필요합니다.\n적의 방공망에 유의하십시오. 일부 시설은 지원 건물을 공격하여 무력화시킬 수 있습니다. -sector.ravine.description = 적의 중요한 이동 경로이긴 하지만, 해당 구역에선 적의 코어가 감지되지 않았습니다. 다양한 적군을 맞닥뜨릴 것으로 예상됩니다.\n[accent]설금[]을 생산하십시오. 포탑 [accent]어플릭트[]를 건설하십시오. -sector.caldera-erekir.description = 이 지역에서 탐지된 자원은 여러 섬에 분산되어 있습니다 .\n드론을 기반으로 한 운송수단을 연구하고 활용하시오. +sector.ravine.description = 적의 중요한 이동 경로이긴 하지만, 해당 구역에선 적의 기지가 감지되지 않았습니다. 다양한 적군을 맞닥뜨릴 것으로 예상됩니다.\n[accent]설금[]을 생산하여 포탑 [accent]어플릭트[]를 건설하세요. +sector.caldera-erekir.description = 이 지역에서 탐지된 자원은 여러 섬에 분산되어 있습니다 .\n드론을 기반으로 한 운송수단을 연구하고 활용하세요. sector.stronghold.description = 이 지역의 대규모 적 야영지에는 적들이 지키고 있는 상당한 양의 [accent]토륨[] 매장지가 있습니다.\n더 높은 등급의 기체와 포탑을 연구할 때 사용합니다. sector.crevice.description = 적들은 이 지역에서 당신의 기지를 제거하기 위해 맹렬한 공격부대를 보낼 것입니다.\n[accent]탄화물[]과 [accent]열분해 발전기[]를 연구하는 것은 살아남기 위해 반드시 필요합니다. sector.siege.description = 이 지역은 두 갈래의 공격을 강요하는 두 개의 평행 협곡이 특징입니다.\n더 강력한 전차 기체를 만들기 위한 능력을 얻기 위해 [accent]시아노겐[]을 연구하시오.\n주의: 적의 장거리 발사체가 감지되었습니다. 미사일은 충돌 전에 격추될 수 있습니다. -sector.crossroads.description = 이 지역의 적 기지는 다양한 지형에 설치되어 있습니다. 적응하기 위해 다양한 기체를 연구하시오.\n또한, 일부 기지는 보호막으로 보호되고 있습니다. 그들이 어떻게 전력을 공급받는지 알아보시오. -sector.karst.description = 이 지역은 자원이 풍부하지만, 새로운 코어가 착륙하면 적에게 공격을 받을 것입니다.\n자원의 이점을 활용하고 [accent]메타[]를 연구하시오. -sector.origin.description = 상당한 적이 존재하는 마지막 지역입니다.\n가능한 연구 기회가 남아 있지 않습니다. 오직 모든 적의 코어를 파괴하는 데만 집중하십시오. +sector.crossroads.description = 이 지역의 적 기지는 다양한 지형에 위차하고 있는 것이 확인 되었으며 이로 인해 위해 다양한 기체가 필요합니다. \n또한, 일부 기지는 보호막으로 보호되고 있습니다. 그들이 어떻게 전력을 공급받는지 알아보아야 합니다. +sector.karst.description = 이 지역은 자원이 풍부하지만, 새로운 코어가 착륙하면 적에게 공격을 받을 것입니다.\n자원의 이점을 활용하고 [accent]메타[]를 연구하세요. +sector.origin.description = 상당한 적이 존재하는 마지막 지역입니다.\n 모든 연구를 마쳤으니 오직 모든 적의 코어를 파괴하는 데만 집중하세요. status.burning.name = 발화 status.freezing.name = 빙결 @@ -927,6 +983,7 @@ stat.abilities = 능력 stat.canboost = 이륙 가능 stat.flying = 비행 stat.ammouse = 탄약 사용 +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = 피해량 배수 stat.healthmultiplier = 체력 배수 stat.speedmultiplier = 이동속도 배수 @@ -937,14 +994,46 @@ stat.immunities = 상태이상 면역 stat.healing = 회복량 ability.forcefield = 보호막 필드 +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = 수리 필드 -ability.statusfield = {0} 상태이상 필드 -ability.unitspawn = {0} 공장 +ability.repairfield.description = Repairs nearby units +ability.statusfield = 상태이상 필드 +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = 공장 +ability.unitspawn.description = Constructs units ability.shieldregenfield = 방어막 복구 필드 +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = 가속 전격 +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = 방어막 아크 +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = 재생성 억제 필드 -ability.energyfield = 에너지 필드: [accent]{1}[]타일 내 [accent]{2}[]개 목표물에게 [accent]{0}[]피해량 +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = 에너지 필드 +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = 코어에만 투입할 수 있습니다 bar.drilltierreq = 더 좋은 드릴 필요 @@ -984,6 +1073,7 @@ bullet.splashdamage = [stat]{0}[lightgray] 범위 피해량 ~ [stat]{1}[lightgra bullet.incendiary = [stat]방화[] bullet.homing = [stat]유도[] bullet.armorpierce = [stat]방어 관통 +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] 수리 억제 ~ [stat]{1}[lightgray] 타일 bullet.interval = [stat]{0}/sec[lightgray] 간격 탄환: bullet.frags = [stat]{0}[lightgray]개 파편 탄환:[][] @@ -1019,6 +1109,7 @@ unit.items = 자원 unit.thousands = k unit.millions = m unit.billions = b +unit.shots = shots unit.pershot = /발 category.purpose = 목적 category.general = 일반 @@ -1039,6 +1130,7 @@ setting.backgroundpause.name = 백그라운드에서 일시정지 setting.buildautopause.name = 건설 자동 일시정지 setting.doubletapmine.name = 연속 터치로 채광 setting.commandmodehold.name = 키를 누른 상태로 명령 +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = 로딩 중 충돌 시 모드 비활성화 setting.animatedwater.name = 액체 애니메이션 효과 setting.animatedshields.name = 보호막 애니메이션 효과 @@ -1058,7 +1150,7 @@ setting.difficulty.easy = 쉬움 setting.difficulty.normal = 보통 setting.difficulty.hard = 어려움 setting.difficulty.insane = 박멸 -setting.difficulty.name = 난이도: +setting.difficulty.name = 난이도: setting.screenshake.name = 화면 흔들림 setting.bloomintensity.name = 광원 세기 setting.bloomblur.name = 광원 번짐 @@ -1085,13 +1177,14 @@ setting.position.name = 플레이어 위치 표시 setting.mouseposition.name = 마우스 좌표 표시 setting.musicvol.name = 음악 크기 setting.atmosphere.name = 행성 배경화면 표시 +setting.drawlight.name = 어두움, 광원 표시 setting.ambientvol.name = 배경음 크기 setting.mutemusic.name = 음소거 setting.sfxvol.name = 효과음 크기 setting.mutesound.name = 소리 끄기 setting.crashreport.name = 익명으로 오류 보고서 자동 전송 setting.savecreate.name = 자동 저장 활성화 -setting.publichost.name = 공용 서버로 표시 +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = 플레이어 제한 setting.chatopacity.name = 채팅창 투명도 setting.lasersopacity.name = 전선 투명도 @@ -1099,6 +1192,8 @@ setting.bridgeopacity.name = 터널 투명도 setting.playerchat.name = 채팅 말풍선 표시 setting.showweather.name = 날씨 그래픽 표시 setting.hidedisplays.name = 로직 디스플레이 숨김 +setting.macnotch.name = 노치를 표시하도록 인터페이스 조정 +setting.macnotch.description = 적용하려면 재시작이 필요합니다 steam.friendsonly = 친구 전용 steam.friendsonly.tooltip = 게임에 스팀 친구만 접속할 수 있는가에 대한 여부입니다.체크를 해제하면, 누구나 접속할 수 있습니다. public.beta = 베타 버전의 게임은 공개 서버를 만들 수 없습니다. @@ -1109,6 +1204,7 @@ keybind.title = 조작키 설정 keybinds.mobile = [scarlet]대부분의 조작키 설정은 모바일에서 작동하지 않습니다. 기본 이동만 지원됩니다. category.general.name = 일반 category.view.name = 보기 +category.command.name = Unit Command category.multiplayer.name = 멀티플레이어 category.blocks.name = 블록 선택 placement.blockselectkeys = \n[lightgray]단축키: [{0}, @@ -1126,6 +1222,24 @@ keybind.mouse_move.name = 커서를 따라서 이동 keybind.pan.name = 팬 보기 keybind.boost.name = 이륙 keybind.command_mode.name = 명령 모드 +keybind.command_queue.name = 유닛 명령 Queue +keybind.create_control_group.name = 컨트롤 그룹 만들기 +keybind.cancel_orders.name = 명령 취소 +keybind.unit_stance_shoot.name = 유닛 명령: 사격 +keybind.unit_stance_hold_fire.name = 유닛 명령: 사격 중지 +keybind.unit_stance_pursue_target.name = 유닛 명령: 타겟 추격 +keybind.unit_stance_patrol.name = 유닛 명령: 정찰 +keybind.unit_stance_ram.name = 유닛 명령: 돌격 +keybind.unit_command_move.name = 유닛 제어: 이동 +keybind.unit_command_repair.name = 유닛 제어: 수리 +keybind.unit_command_rebuild.name = 유닛 제어: 재건 +keybind.unit_command_assist.name = 유닛 제어: 플레이어 지원 +keybind.unit_command_mine.name = 유닛 제어: 채굴 +keybind.unit_command_boost.name = 유닛 제어: 비행 +keybind.unit_command_load_units.name = 유닛 제어: 유닛 적재 +keybind.unit_command_load_blocks.name = 유닛 제어: 블록 적재 +keybind.unit_command_unload_payload.name = 유닛 제어: 화물 투하 +keybind.unit_command_enter_payload.name = 유닛 제어: 화물 건물에 착륙/진입 keybind.rebuild_select.name = 지역 재건 keybind.schematic_select.name = 영역 설정 keybind.schematic_menu.name = 설계도 메뉴 @@ -1189,17 +1303,25 @@ mode.pvp.description = 다른 플레이어와 현장에서 싸우세요.\n[gray] mode.attack.name = 공격 mode.attack.description = 적의 기지를 파괴하세요.\n[gray]플레이하려면 맵에 적 코어가 필요합니다. mode.custom = 사용자 정의 규칙 +rules.invaliddata = 잘못된 클립보드 데이터 입니다. +rules.hidebannedblocks = 금지된 블록 숨기기 rules.infiniteresources = 무한 자원 rules.onlydepositcore = 오직 코어에만 투입 가능 +rules.derelictrepair = 잔해 블록 수리 허 rules.reactorexplosions = 원자로 폭발 허용 rules.coreincinerates = 코어 방화 비허용 rules.disableworldprocessors = 월드 프로세서 비활성화 rules.schematic = 설계도 허용 rules.wavetimer = 시간 제한이 있는 단계 rules.wavesending = 단계 넘김 +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = 단계 +rules.airUseSpawns = Air units use spawn points rules.attack = 공격 모드 +rules.buildai = 기지 건설 AI +rules.buildaitier = 건설 AI 등급 rules.rtsai = RTS AI rules.rtsminsquadsize = 최소 부대 규모 rules.rtsmaxsquadsize = 최대 부대 규모 @@ -1218,6 +1340,7 @@ rules.unitdamagemultiplier = 기체 피해량 배수 rules.unitcrashdamagemultiplier = 기체 파손 피해량 배수 rules.solarmultiplier = 태양광 전력 배수 rules.unitcapvariable = 코어 기체수 제한 추가 +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = 기본 기체 제한 rules.limitarea = 맵 영역 제한 rules.enemycorebuildradius = 적 코어 건설금지 범위:[lightgray] (타일) @@ -1247,9 +1370,11 @@ rules.anyenv = <모두> rules.explosions = 블록/기체 폭발 피해 rules.ambientlight = 주변광 rules.weather = 날씨 추가 -rules.weather.frequency = 빈도: +rules.weather.frequency = 빈도: rules.weather.always = 항상 -rules.weather.duration = 지속 시간: +rules.weather.duration = 지속 시간: +rules.placerangecheck.info = 플레이어가 적 건물 근처에 건설 불가 구역을 생성합니다. 만일, 플레이어가 포탑을 건설하고자 할 경우 반경이 증가되어 적 건물이 포탑의 사정거리에 닿지 않게됩니다. +rules.onlydepositcore.info = 코어를 제외한 어떠한 건물에도 자원을 투하할 수 없게 만듭니다. content.item.name = 자원 content.liquid.name = 액체 @@ -1268,8 +1393,8 @@ item.titanium.name = 티타늄 item.thorium.name = 토륨 item.silicon.name = 실리콘 item.plastanium.name = 플라스터늄 -item.phase-fabric.name = 메타 -item.surge-alloy.name = 설금 +item.phase-fabric.name = 위상 섬유 +item.surge-alloy.name = 서지 합금 item.spore-pod.name = 포자 꼬투리 item.sand.name = 모래 item.blast-compound.name = 폭발물 @@ -1446,8 +1571,8 @@ block.titanium-wall.name = 티타늄 벽 block.titanium-wall-large.name = 대형 티타늄 벽 block.plastanium-wall.name = 플라스터늄 벽 block.plastanium-wall-large.name = 대형 플라스터늄 벽 -block.phase-wall.name = 메타 벽 -block.phase-wall-large.name = 대형 메타 벽 +block.phase-wall.name = 위상 벽 +block.phase-wall-large.name = 대형 위상 벽 block.thorium-wall.name = 토륨 벽 block.thorium-wall-large.name = 대형 토륨 벽 block.door.name = 문 @@ -1469,11 +1594,12 @@ block.inverted-sorter.name = 반전 필터 block.message.name = 메모 블록 block.reinforced-message.name = 보강된 메모 블록 block.world-message.name = 월드 메모 블록 +block.world-switch.name = World Switch block.illuminator.name = 조명 block.overflow-gate.name = 포화 필터 block.underflow-gate.name = 불포화 필터 block.silicon-smelter.name = 실리콘 제련소 -block.phase-weaver.name = 메타 제조기 +block.phase-weaver.name = 위상 방직기 block.pulverizer.name = 분쇄기 block.cryofluid-mixer.name = 냉각수 혼합기 block.melter.name = 융해기 @@ -1483,7 +1609,7 @@ block.separator.name = 광재 분리기 block.coal-centrifuge.name = 석탄 정제기 block.power-node.name = 전력 노드 block.power-node-large.name = 대형 전력 노드 -block.surge-tower.name = 설금 타워 +block.surge-tower.name = 서지 타워 block.diode.name = 다이오드 block.battery.name = 배터리 block.battery-large.name = 대형 배터리 @@ -1511,7 +1637,7 @@ block.tsunami.name = 쓰나미 block.swarmer.name = 스웜 block.salvo.name = 살보 block.ripple.name = 립플 -block.phase-conveyor.name = 메타 컨베이어 +block.phase-conveyor.name = 위상 컨베이어 block.bridge-conveyor.name = 다리 컨베이어 block.plastanium-compressor.name = 플라스터늄 압축기 block.pyratite-mixer.name = 파이라타이트 혼합기 @@ -1523,7 +1649,7 @@ block.repair-point.name = 수리 지점 block.repair-turret.name = 수리 포탑 block.pulse-conduit.name = 펄스 파이프 block.plated-conduit.name = 도금된 파이프 -block.phase-conduit.name = 메타 파이프 +block.phase-conduit.name = 위상 파이프 block.liquid-router.name = 액체 분배기 block.liquid-tank.name = 액체 탱크 block.liquid-container.name = 액체 컨테이너 @@ -1535,11 +1661,11 @@ block.mass-driver.name = 매스 드라이버 block.blast-drill.name = 압축 공기분사 드릴 block.impulse-pump.name = 충격 펌프 block.thermal-generator.name = 지열 발전기 -block.surge-smelter.name = 설금 제련소 +block.surge-smelter.name = 서지 제련소 block.mender.name = 멘더 block.mend-projector.name = 수리 프로젝터 -block.surge-wall.name = 설금 벽 -block.surge-wall-large.name = 큰 설금 벽 +block.surge-wall.name = 서지 벽 +block.surge-wall-large.name = 큰 서지 벽 block.cyclone.name = 사이클론 block.fuse.name = 퓨즈 block.shock-mine.name = 전격 지뢰 @@ -1556,10 +1682,10 @@ block.segment.name = 세그먼트 block.ground-factory.name = 지상 공장 block.air-factory.name = 항공 공장 block.naval-factory.name = 해양 공장 -block.additive-reconstructor.name = 재구성기 : Additive -block.multiplicative-reconstructor.name = 재구성기 : Multiplicative -block.exponential-reconstructor.name = 재구성기 : Exponential -block.tetrative-reconstructor.name = 재구성기 : Tetrative +block.additive-reconstructor.name = 덧셈식 재구성기 +block.multiplicative-reconstructor.name = 곱셈식 재구성기 +block.exponential-reconstructor.name = 거듭제곱식 재구성기 +block.tetrative-reconstructor.name = 테트레이션식 재구성기 block.payload-conveyor.name = 화물 컨베이어 block.payload-router.name = 화물 분배기 block.duct.name = 도관 @@ -1644,15 +1770,15 @@ block.atmospheric-concentrator.name = 대기 농축기 block.oxidation-chamber.name = 산화실 block.electric-heater.name = 전기 가열기 block.slag-heater.name = 광재 가열기 -block.phase-heater.name = 메타 가열기 +block.phase-heater.name = 위상 가열기 block.heat-redirector.name = 열 전송기 block.heat-router.name = 열 분배기 block.slag-incinerator.name = 광재 소각로 block.carbide-crucible.name = 탄화물 도가니 block.slag-centrifuge.name = 광재 원심분리기 -block.surge-crucible.name = 설금 도가니 +block.surge-crucible.name = 서지 도가니 block.cyanogen-synthesizer.name = 시아노겐 합성기 -block.phase-synthesizer.name = 메타 합성기 +block.phase-synthesizer.name = 위상 합성기 block.heat-reactor.name = 열 반응로 block.beryllium-wall.name = 베릴륨 벽 block.beryllium-wall-large.name = 대형 베릴륨 벽 @@ -1661,8 +1787,8 @@ block.tungsten-wall-large.name = 대형 텅스텐 벽 block.blast-door.name = 방폭문 block.carbide-wall.name = 탄화물 벽 block.carbide-wall-large.name = 대형 탄화물 벽 -block.reinforced-surge-wall.name = 보강된 설금 벽 -block.reinforced-surge-wall-large.name = 보강된 대형 설금 벽 +block.reinforced-surge-wall.name = 보강된 서지 벽 +block.reinforced-surge-wall-large.name = 보강된 대형 서지 벽 block.shielded-wall.name = 보호된 벽 block.radar.name = 레이더 block.build-tower.name = 건설 타워 @@ -1674,8 +1800,8 @@ block.armored-duct.name = 장갑 도관 block.overflow-duct.name = 포화 도관 block.underflow-duct.name = 불포화 도관 block.duct-unloader.name = 언로더 도관 -block.surge-conveyor.name = 설금 컨베이어 -block.surge-router.name = 설금 분배기 +block.surge-conveyor.name = 서지 컨베이어 +block.surge-router.name = 서지 분배기 block.unit-cargo-loader.name = 기체 화물 적재소 block.unit-cargo-unload-point.name = 기체 화물 하역지점 block.reinforced-pump.name = 보강된 펌프 @@ -1709,7 +1835,6 @@ block.disperse.name = 디스퍼스 block.afflict.name = 어플릭트 block.lustre.name = 러스터 block.scathe.name = 스캐드 -block.fabricator.name = 조립기 block.tank-refabricator.name = 전차 재조립기 block.mech-refabricator.name = 기계 재조립기 block.ship-refabricator.name = 함선 재조립기 @@ -1772,7 +1897,7 @@ hint.launch = 충분한 자원을 모았으면, 오른쪽 아래의 \ue827 [acce hint.launch.mobile = 충분한 자원을 모았으면, 오른쪽 아래의 \ue88c [accent]메뉴[]에 있는 \ue827 [accent]지도[]에서 주변 지역을 선택해서 [accent]출격[]할 수 있습니다. hint.schematicSelect = [accent][[F][]를 누른 채로 끌어서 복사하고 붙여넣을 블록을 선택하십시오. \n\n [accent][[마우스 휠][]을 누르면 한 개의 블록만 복사할 수 있습니다. hint.rebuildSelect = [accent][[B][]를 누르고 끌어서 파괴된 블록 흔적을 선택하세요.\n선택된 블록은 자동으로 복구됩니다. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect.mobile = 복사버튼 \ue874 을 선택하시고, 재건축 버튼 \ue80f 을 탭 하신 뒤, 드래그 하여 블록 흔적을 선택하세요. 선택된 블록은 자동으로 복구됩니다. hint.conveyorPathfind = [accent][[왼쪽 Ctrl][]을 누른 채로 컨베이어를 대각선으로 끌면 길을 자동으로 만들어줍니다. hint.conveyorPathfind.mobile = \ue844 [accent]대각 모드[]를 활성화하고 컨베이어를 대각선으로 끌면 길을 자동으로 찾아줍니다. hint.boost = [accent][[왼쪽 Shift][]를 눌러 탑승한 기체로 장애물을 넘을 수 있습니다. \n\n 일부 지상 기체만 이륙할 수 있습니다. @@ -1827,34 +1952,38 @@ onset.turrets = 기체는 유용하지만, [accent]포탑[]은 사용하기에 onset.turretammo = 포탑에 [accent]베릴륨 탄약[]을 공급하세요. onset.walls = [accent]벽[]은 건물로 날아오는 공격을 막을 수 있습니다. \n포탑 주변에 \uf6ee [accent]베릴륨 벽[]을 배치하세요. onset.enemies = 적이 다가옵니다, 방어 태세를 갖추세요. +onset.defenses = [accent]방어 태세 갖추기:[lightgray] {0} onset.attack = 적은 취약한 상태입니다. 반격하세요. onset.cores = 새로운 코어는 [accent]코어 타일[]위에 배치할 수 있습니다.\n새로운 코어는 전진기지 역할을 하며 다른 코어와 저장된 자원을 공유합니다.\n \uf725 코어를 배치하세요. onset.detect = 적은 2분 이내에 당신을 탐지할 것입니다.\n생산, 채굴, 방어시설을 구성하세요. +onset.commandmode = [accent]shift[]를 눌러 [accent]명령 모드[]를 활성화하세요.\n[accent]좌클릭과 드래그[]로 기체를 선택하세요.\n[accent]우클릭[]으로 선택된 기체들에게 이동 또는 공격 명령을 내리세요. +onset.commandmode.mobile = [accent]명령 버튼[]을 눌러 [accent]명령 모드[]를 활성화하세요.\n손가락을 꾹 누르고, [accent]드래그[]해서 유닛을 선택하세요.\n[accent]눌러서[] 선택된 기체들에게 이동 또는 공격 명령을 내리세요. +aegis.tungsten = 텅스텐을 채굴하려면 [accent]충격드릴[]이 필요합니다.\n 충격 드릴은[accent]물[]과 [accent]전력[]을 필요로 합니다. split.pickup = 일부 블록은 코어 기체로 집어올릴 수 있습니다.\n이 [accent]컨테이너[]를 집어올리고 [accent]화물 로더[] 속에 내려놓으세요.\n(화물을 집어올리거나 내리는 기본 키는 [ 그리고 ]입니다) split.pickup.mobile = 일부 블록은 코어 기체로 집어올릴 수 있습니다.\n이 [accent]컨테이너[]를 집어올리고 [accent]화물 로더[] 속에 내려놓으세요.\n(무언가를 집어올리거나 내려놓으려면, 길게 누르세요.) -split.acquire = 기체를 제조하려면 텅스텐을 습득해야 합니다. +split.acquire = 기체를 제조하려면 텅스텐을 채굴해야 합니다. split.build = 기체를 벽의 반대편으로 운반해야 합니다.\n두 개의 [accent]회물 매스 드라이버[]를 각 벽면에 하나씩 배치하세요.\n둘 중 하나를 누른 다음 다른 하나를 선택하여 연결을 설정합니다. split.container = 컨테이너와 마찬가지로, 기체도 [accent]화물 매스 드라이버[]를 사용하여 운송할 수 있습니다.\n기체 조립대를 매스 드라이버 근처에 배치하여 기체를 적재한 후, 벽을 가로질러 보내 적 기지를 공격합니다. item.copper.description = 모든 종류의 구조물 및 탄약으로 사용하는 기본 자원입니다. -item.copper.details = 평범한 구리. 세르플로에 비정상적으로 많이 분포함. 보강되지 않는 한 구조적으로 약함. +item.copper.details = 평범한 구리. 세르플로에 비정상적으로 많이 분포되어 있습니다. 기본적으로 보강하지 않는 한 구조적으로 약합니다. item.lead.description = 전자 및 액체 수송 블록에서 광범위하게 사용하는 기본 자원입니다. -item.lead.details = 밀도가 높으며 반응성이 적은 자원. 배터리에 주로 사용됨. +item.lead.details = 밀도가 높으며 반응성이 적은 자원. 배터리에 주로 사용됩니다. item.metaglass.description = 액체 분배 및 저장에 광범위하게 사용합니다. item.graphite.description = 탄약 및 전기 부품에 사용되는 무기질 탄소입니다. item.sand.description = 다른 제련된 자원의 생산에 사용됩니다. item.coal.description = 연료 및 자원 생산에 광범위하게 사용됩니다. -item.coal.details = 화석화된 식물 물질. 씨앗이 나오기 훨씬 전에 형성되었음. +item.coal.details = 화석화된 식물 물질. 씨앗이 나오기 훨씬 전에 형성되었습니다. item.titanium.description = 액체 수송 구조물, 드릴 및 공장에서 광범위하게 사용되는 희귀한 초경량 금속입니다. item.thorium.description = 튼튼한 구조물과 핵 연료로 사용되는 고밀도의 방사성 금속입니다. item.scrap.description = 융해기와 분쇄기를 통해 다른 물질로 정제할 수 있습니다. -item.scrap.details = 오래된 구조물과 기체의 잔해. 미량의 다양한 금속들이 포함되어 있음. +item.scrap.details = 오래된 구조물과 기체의 잔해. 미량의 다양한 금속들이 포함되어 있습니다. item.silicon.description = 복잡한 전자 장치나 유도탄에 사용되는 유용한 반도체입니다. item.plastanium.description = 고급 기체, 절연 및 파편화 탄약에 사용됩니다. item.phase-fabric.description = 최첨단 전자 제품과 자가 수리 기술에 사용되는 거의 무중력에 가까운 물질입니다. item.surge-alloy.description = 첨단 무기 및 반작용 방어 구조물에 사용되는 고급 합금입니다. item.spore-pod.description = 석유, 폭발물과 연료로 전환하는 데 사용되는 합성 포자 버섯입니다. -item.spore-pod.details = 포자. 합성 생명체로 판단됨. 타 유기체에 치명적인 독가스를 내뿜음. 매우 빠르게 퍼짐. 특정 조건에서 인화성이 매우 높음. +item.spore-pod.details = 포자, 합성 생명체로 판단됩니다. 타 유기체에 치명적인 독가스를 내뿜으며. 매우 빠르게 퍼집니다. 특정한 조건에서 인화성이 매우 높습니다. item.blast-compound.description = 폭탄과 폭발성 탄약에 사용되는 불안정한 화합물입니다. item.pyratite.description = 방화 무기와 연료를 연소하는 발전기에 사용되는 가연성이 매우 높은 물질입니다. item.beryllium.description = 에르키아의 여러 종류의 건축물과 탄약에 사용됩니다. @@ -1872,7 +2001,7 @@ liquid.hydrogen.description = 자원 추출, 기체 생산 및 구조물 수리 liquid.cyanogen.description = 탄약, 첨단 기체의 구축 및 첨단 블록의 다양한 반응에 사용됩니다. 강한 인화성 물질입니다. liquid.nitrogen.description = 자원 추출, 가스 생성 및 기체 생산에 사용됩니다. 불활성 물질입니다. liquid.neoplasm.description = 신생물 반응로의 위험한 생물학적 부산물. 접촉하는 즉시 인접한 모든 수분 함유 블록으로 빠르게 확산되며, 진행되는 동안 피해를 입힙니다. 점성을 띄는 물질입니다. -liquid.neoplasm.details = 신생물. 진흙과 같은 일관성을 가진 빠르게 분열하는 합성 세포의 통제 불가능한 덩어리. 열 저항. 물과 관련된 구조물에는 매우 위험.\n\n표준 분석에 비해 너무 복잡하고 불안정함. 잠재된 행동 원칙을 알 수 없음. 광재 웅덩이에서 소각하는 것이 바람직함. +liquid.neoplasm.details = 신생물, 진흙과 비슷한 점성을 가졌으며, 통제 불능의 속도로 빠르게 확산되는 합성세포 덩어리 입니다. 고온에 저항력이 있으며, 일반적인 분석으로는 너무나 복잡하고 불안정하여 아직 정확한 행동 양식이나 생태를 확인하지 못 했습니다. 열 저항. 물과 관련된 구조물에는 매우 위험합니다.\n\n 광재 웅덩이에 소각하는 것이 바람직합니다. block.derelict = \ue815 [lightgray]잔해 block.armored-conveyor.description = 자원을 앞으로 운반합니다. 측면에서 자원을 받아들이지 않습니다. @@ -1885,8 +2014,8 @@ block.multi-press.description = 석탄을 흑연으로 압축합니다. 냉각 block.silicon-smelter.description = 석탄과 모래에서 실리콘을 정제합니다. block.kiln.description = 모래와 납을 강화 유리로 제련합니다. block.plastanium-compressor.description = 석유와 티타늄으로 플라스터늄을 생산합니다. -block.phase-weaver.description = 토륨과 모래로 메타를 합성합니다. -block.surge-smelter.description = 티타늄, 납, 실리콘 및 구리를 설금으로 혼합합니다. +block.phase-weaver.description = 토륨과 모래로 위상 섬유를 합성합니다. +block.surge-smelter.description = 티타늄, 납, 실리콘 및 구리를 서지 합금으로 혼합합니다. block.cryofluid-mixer.description = 물과 미세 티타늄 분말을 냉각수로 혼합합니다. block.blast-mixer.description = 파이라타이트와 포자로 폭발물을 생산합니다. block.pyratite-mixer.description = 석탄, 납, 그리고 모래를 파이라타이트로 혼합합니다. @@ -1906,7 +2035,7 @@ block.payload-source.description = 화물을 무한히 출력합니다. 샌드 block.payload-void.description = 화물을 제거합니다. 샌드박스 전용. block.copper-wall.description = 적 발사체로부터 아군 구조물을 보호합니다. block.copper-wall-large.description = 적 발사체로부터 아군 구조물을 보호합니다.\n여러 타일을 차지합니다. -block.titanium-wall.description = 적 발사체로부터 아군 구조물을 보호합니다. +block.titanium-wall.description = 적 발사체로부터 아군 구조물을 보호합니다. block.titanium-wall-large.description = 적 발사체로부터 아군 구조물을 보호합니다.\n여러 타일을 차지합니다. block.plastanium-wall.description = 적 발사체로부터 아군 구조물을 보호합니다. 레이저와 전격을 흡수하고 노드의 자동 전원 연결을 차단합니다. block.plastanium-wall-large.description = 적 발사체로부터 아군 구조물을 보호합니다. 레이저와 전격을 흡수하고 노드의 자동 전원 연결을 차단합니다.\n여러 타일을 차지합니다. @@ -1919,14 +2048,14 @@ block.surge-wall-large.description = 적 발사체로부터 아군 구조물을 block.door.description = 탭하여 열거나 닫을 수 있는 벽입니다. block.door-large.description = 탭하여 열거나 닫을 수 있는 벽입니다.\n여러 타일을 차지합니다. block.mender.description = 주변 블록을 주기적으로 수리합니다.\n선택적으로 실리콘을 사용하여 범위와 효율성을 향상할 수 있습니다. -block.mend-projector.description = 주변의 블록을 수리합니다.\n선택적으로 메타를 사용하여 범위와 효율성을 향상할 수 있습니다. -block.overdrive-projector.description = 주변 건물의 속도를 높입니다.\n선택적으로 메타를 사용하여 범위와 효율성을 향상할 수 있습니다. -block.force-projector.description = 주위에 육각형 역장을 형성하여 내부의 건물과 기체를 공격으로부터 보호합니다. 지속해서 많은 피해를 받을 경우 과열됩니다.\n선택적으로 냉각수를 사용해서 과열 방지를, 메타를 사용해서 보호막 크기를 증가시킬 수 있습니다. +block.mend-projector.description = 주변의 블록을 수리합니다.\n선택적으로 위상 섬유를 사용하여 범위와 효율성을 향상할 수 있습니다. +block.overdrive-projector.description = 주변 건물의 속도를 높입니다.\n선택적으로 위상 섬유를 사용하여 범위와 효율성을 향상할 수 있습니다. +block.force-projector.description = 주위에 육각형 역장을 형성하여 내부의 건물과 기체를 공격으로부터 보호합니다. 지속해서 많은 피해를 받을 경우 과열됩니다.\n선택적으로 냉각수를 사용해서 과열 방지를, 위상 섬유를 사용해서 보호막 크기를 증가시킬 수 있습니다. block.shock-mine.description = 접촉한 적 기체에게 전격 아크를 방출합니다. block.conveyor.description = 자원을 앞으로 운반합니다. 회전하여 방향을 바꿀 수 있습니다. block.titanium-conveyor.description = 자원을 앞으로 운반합니다. 컨베이어보다 더 빠릅니다. block.plastanium-conveyor.description = 자원을 묶어 앞으로 운반합니다. 컨베이에 뒤에서 자원을 받고, 앞에서 세 방향으로 내보냅니다. 최대 처리량을 위해 많은 입출력 지점이 필요합니다. -block.junction.description = 2개의 컨베이어 벨트를 교차하는 다리 역할을 합니다. +block.junction.description = 2개의 컨베이어 벨트를 교차하는 다리 역할을 합니다. block.bridge-conveyor.description = 지형이나 건물을 넘어 자원을 운반합니다. 최대 3칸의 타일을 건너 띌 수 있습니다. block.phase-conveyor.description = 지형이나 건물 너머로 자원을 즉시 운반합니다. 속도가 빠르고 다리 컨베이어보다 길지만, 작동하려면 전력이 필요합니다. block.sorter.description = 입력된 자원이 선택과 일치하면 앞으로 통과하며, 그렇지 않으면 왼쪽과 오른쪽으로 출력합니다. @@ -1964,7 +2093,7 @@ block.solar-panel.description = 태양으로부터 적은 양의 전력을 생 block.solar-panel-large.description = 태양으로부터 적은 양의 전력을 생산합니다. 태양 전지판보다 더 효율적입니다. block.thorium-reactor.description = 토륨으로부터 상당한 양의 전력을 생산합니다. 지속적인 냉각이 필요하며, 냉각수가 충분히 공급되지 않을 경우 크게 폭발합니다. block.impact-reactor.description = 최대 효율로 엄청난 양의 전력을 생성합니다. 완전히 가동하기 위해서 많은 전력이 필요합니다. -block.mechanical-drill.description = 자원 타일 위에 설치하면, 멈추지 않고 자원을 천천히 생산합니다. +block.mechanical-drill.description = 자원 타일 위에 설치하면, 멈추지 않고 자원을 천천히 생산합니다. block.pneumatic-drill.description = 티타늄을 채굴할 수 있는 향상된 드릴. 기계식 드릴보다 더 빠른 속도로 채굴합니다. block.laser-drill.description = 레이저 기술을 통해 훨씬 더 빠르게 채굴할 수 있지만, 작동하려면 전력이 필요합니다. 토륨을 채굴할 수 있습니다. block.blast-drill.description = 최상위 드릴. 작동하려면 많은 양의 전력이 필요합니다. @@ -2004,7 +2133,7 @@ block.parallax.description = 공중 목표물을 끌어오는 견인 광선을 block.tsunami.description = 적을 향해 강력한 액체 줄기를 발사합니다. 물이 공급되면 자동으로 화재를 진압합니다. block.silicon-crucible.description = 파이라타이트를 추가 열원으로 사용하여 모래와 석탄에서 실리콘을 정제합니다. 뜨거운 곳에서 더 효율적입니다. block.disassembler.description = 광재를 낮은 효율로 미량의 희귀한 광물들로 분리합니다. 토륨을 생산할 수 있습니다. -block.overdrive-dome.description = 주변 건물의 속도를 높입니다. 작동하려면 메타와 실리콘이 필요합니다. +block.overdrive-dome.description = 주변 건물의 속도를 높입니다. 작동하려면 위상 섬유와 실리콘이 필요합니다. block.payload-conveyor.description = 공장에서 생산된 기체같은 큰 화물을 운반합니다. block.payload-router.description = 화물을 3가지 방향으로 번갈아 운반합니다. block.ground-factory.description = 지상 기체를 생산합니다. 생산된 기체는 바로 사용하거나 강화를 위해 재구성기로 이동할 수 있습니다. @@ -2024,7 +2153,6 @@ block.logic-display.description = 프로세서를 이용해 임의로 그래픽 block.large-logic-display.description = 프로세서를 이용해 임의로 그래픽을 출력할 수 있습니다. block.interplanetary-accelerator.description = 거대한 전자기 레일건 타워. 행성 간 이동을 위한 탈출 속도까지 코어를 가속합니다. block.repair-turret.description = 피해를 입은 가장 가까운 기체를 지속적으로 수리합니다. 선택적으로 냉각수를 넣을 수 있습니다. -block.payload-propulsion-tower.description = 장거리 화물 운송 구조물. 화물을 연결된 다른 화물 드라이버로 발사합니다. block.core-bastion.description = 기지의 핵심입니다. 튼튼합니다. 한번 파괴되면, 구역을 잃습니다. block.core-citadel.description = 기지의 핵심입니다. 더 튼튼합니다. 코어: 요새보다 더 많은 양의 자원을 저장합니다. block.core-acropolis.description = 기지의 핵심입니다. 매우 튼튼합니다. 코어: 성채보다 더 많은 양의 자원을 저장합니다. @@ -2042,13 +2170,13 @@ block.silicon-arc-furnace.description = 모래와 흑연에서 실리콘을 정 block.oxidation-chamber.description = 베릴륨과 오존을 산화물로 전환합니다. 부산물로 열을 방출합니다. block.electric-heater.description = 블록에 열을 가합니다. 많은 양의 전력이 필요합니다. block.slag-heater.description = 블록에 열을 가합니다. 광재가 필요합니다. -block.phase-heater.description = 블록에 열을 가합니다. 메타가 필요합니다. +block.phase-heater.description = 블록에 열을 가합니다. 위상 섬유가 필요합니다. block.heat-redirector.description = 누적된 열을 다른 블록으로 전달합니다. block.heat-router.description = 축적된 열을 세 가지 출력 방향으로 분산시킵니다. block.electrolyzer.description = 물을 수소와 오존 가스로 변환합니다. block.atmospheric-concentrator.description = 대기에서 질소를 농축합니다. 열이 필요합니다. -block.surge-crucible.description = 광재와 실리콘으로 설금을 형성합니다. 열이 필요합니다. -block.phase-synthesizer.description = 토륨, 모래 및 오존으로부터 메타를 합성합니다. 열이 필요합니다. +block.surge-crucible.description = 광재와 실리콘으로 서지 합금을 형성합니다. 열이 필요합니다. +block.phase-synthesizer.description = 토륨, 모래 및 오존으로부터 위상 섬유를 합성합니다. 열이 필요합니다. block.carbide-crucible.description = 흑연과 텅스텐을 탄화물로 융합합니다. 열이 필요합니다. block.cyanogen-synthesizer.description = 아르키사이트와 흑연으로부터 시아노겐을 합성합니다. 열이 필요합니다. block.slag-incinerator.description = 비휘발성 자원 또는 액체를 소각합니다. 광재가 필요합니다. @@ -2060,7 +2188,6 @@ block.impact-drill.description = 광석에 배치하면 자원을 한번에 몰 block.eruption-drill.description = 개선된 충격 드릴. 토륨을 채굴할 수 있습니다. 수소가 필요합니다. block.reinforced-conduit.description = 유체를 앞으로 이동합니다. 측면에서 파이프가 아닌 입력을 허용하지 않습니다. block.reinforced-liquid-router.description = 유체를 모든 면에 균등하게 분배합니다. -block.reinforced-junction.description = 두 개의 교차 파이프를 위한 다리 역할을 합니다. block.reinforced-liquid-tank.description = 대량의 유체를 저장합니다. block.reinforced-liquid-container.description = 상당량의 유체를 저장합니다. block.reinforced-bridge-conduit.description = 구조물 및 지형 위로 유체를 운반합니다. @@ -2084,7 +2211,7 @@ block.duct-unloader.description = 선택한 자원을 뒤의 블록에서 빼냅 block.underflow-duct.description = 포화 도관의 반대입니다. 왼쪽 및 오른쪽 경로가 차단된 경우 앞쪽으로 출력합니다. block.reinforced-liquid-junction.description = 두 개의 교차 파이프 사이의 다리 역할을 합니다. block.surge-conveyor.description = 자원을 일괄적으로 이동합니다. 전력을 공급하여 가속할 수 있습니다. 인접한 블록에 전원을 공급합니다. -block.surge-router.description = 설금 컨베이어에서 항목을 세 방향으로 균등하게 분배합니다. 전력을 공급하여 가속할 수 있습니다. 인접한 블록에 전원을 공급합니다. +block.surge-router.description = 서지 컨베이어에서 항목을 세 방향으로 균등하게 분배합니다. 전력을 공급하여 가속할 수 있습니다. 인접한 블록에 전원을 공급합니다. block.unit-cargo-loader.description = 화물용 드론을 제작합니다. 드론은 자동으로 자원과 일치하는 필터로 설정된 기체 화물 하역지점으로 분배합니다. block.unit-cargo-unload-point.description = 화물 드론의 하역지점 역할을 합니다. 선택한 필터와 일치하는 자원을 받아들입니다. block.beam-node.description = 전력을 다른 블록에 직선 방향으로 전송합니다. 소량의 전력을 저장합니다. @@ -2093,7 +2220,7 @@ block.turbine-condenser.description = 분출구에 배치할 때 전력을 발 block.chemical-combustion-chamber.description = 아르키사이트와 오존으로 전력을 생산합니다. block.pyrolysis-generator.description = 아르키사이트와 광재로 많은 양의 전력을 생산합니다. 부산물로 물이 발생합니다. block.flux-reactor.description = 가열 시 많은 양의 전력을 발생시킵니다. 안정제로 시아노겐이 필요합니다. 전력 출력 및 시아노겐 요구량은 열 입력에 비례합니다.\n시아노겐이 부족할 경우 폭발합니다. -block.neoplasia-reactor.description = 아르키사이트, 물 및 메타를 사용하여 많은 양의 전력을 생산합니다. 부산물로 열과 위험한 신생물이 발생합니다.\n도관을 통해 반응로에서 신생물이 제거되지 않으면 격렬하게 폭발합니다. +block.neoplasia-reactor.description = 아르키사이트, 물 및 위상 섬유를 사용하여 많은 양의 전력을 생산합니다. 부산물로 열과 위험한 신생물이 발생합니다.\n도관을 통해 반응로에서 신생물이 제거되지 않으면 격렬하게 폭발합니다. block.build-tower.description = 범위 내의 구조물을 자동으로 재구축하고 다른 유닛의 건설을 지원합니다. block.regen-projector.description = 정사각형 둘레의 범위 안에 있는 아군 구조물을 천천히 수리합니다. 수소가 필요합니다. block.reinforced-container.description = 소량의 자원을 저장합니다. 내용물은 언로더를 통해 빼낼 수 있습니다. 코어의 저장 용량은 늘리지 않습니다. @@ -2179,6 +2306,7 @@ unit.emanate.description = 코어: 도심을 지켜내기 위해 구조물을 lst.read = 연결된 메모리 셀에서 숫자 읽음 lst.write = 연결된 메모리 셀에 숫자 작성 lst.print = 프린트 버퍼에 텍스트 추가\n[accent]Print Flush[]가 사용되기 전까진 아무것도 보여주지 않습니다 +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = 드로잉 버퍼에 실행문 추가\n[accent]Draw Flush[]가 사용되기 전까진 아무것도 보여주지 않습니다 lst.drawflush = 대기중인 [accent]Draw[]실행문을 디스플레이에 출력 lst.printflush = 대기중인 [accent]Print[]실행문을 메시지 블록에 출력 @@ -2201,6 +2329,8 @@ lst.getblock = 특정 위치의 타일 정보를 불러옴 lst.setblock = 특정 위치의 타일 정보 설정 lst.spawnunit = 특정 위치에 기체 소환 lst.applystatus = 기체에게 상태이상을 적용하거나 삭제 +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = 특정 위치에 이전 단계를 실행\n실제 단계가 넘어가지 않습니다 lst.explosion = 특정 위치에 폭발 생성 lst.setrate = 프로세서 실행 속도를 틱당 연산량으로 설정 @@ -2212,6 +2342,47 @@ lst.cutscene = 플레이어 카메라 조작 lst.setflag = 모든 프로세서가 읽을 수 있는 전역 플래그 설정 lst.getflag = 전역 플래그가 설정되어 있는지 확인 lst.setprop = 기체 혹은 건물의 속성을 설정합니다. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]기체의 건설 로직은 여기서 허용되지 않습니다. @@ -2227,6 +2398,7 @@ laccess.dead = 기체 또는 건물 사망/무효 여부 laccess.controlled = 만약 기체 제어자가 프로세서라면 [accent]@ctrlProcessor[]를 반환합니다.\n만약 기체/건물 제어자가 플레이어라면 [accent]@ctrlPlayer[]를 반환합니다.\n만약 기체가 다른 기체에 의해 지휘되면(G키)[accent]@ctrlFormation[]를 반환합니다.\n그 외에는 0을 반환합니다. laccess.progress = 작업 진행률, 0 에서 1 로 감.\n포탑 재장전이나 구조물 진행률을 반환합니다. laccess.speed = 기체의 최대 속도, 타일/초 +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = 알 수 없음 lcategory.unknown.description = 분류되지 않은 설명 lcategory.io = 입력 & 출력 @@ -2253,6 +2425,7 @@ graphicstype.poly = 정다각형 채우기 graphicstype.linepoly = 정다각형 외곽선 그리기 graphicstype.triangle = 삼각형 채우기 graphicstype.image = 일부 콘텐츠의 이미지 그리기\n예: [accent]@router[] 또는 [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = 항상 참 lenum.idiv = 정수 나누기 @@ -2272,6 +2445,7 @@ lenum.xor = 비트연산자 XOR lenum.min = 두 수의 최솟값 lenum.max = 두 수의 최댓값 lenum.angle = 벡터의 각(도) +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = 벡터의 길이 lenum.sin = 사인(도) @@ -2346,6 +2520,7 @@ lenum.unbind = 로직 컨트롤 완전 비활성화\n표준 AI를 다시 따릅 lenum.move = 특정 위치로 이동 lenum.approach = 특정 위치로 반지름만큼 접근 lenum.pathfind = 적 스폰 지점으로 길찾기 +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = 특정 위치에 발사 lenum.targetp = 목표물 속도를 예측하여 발사 lenum.itemdrop = 아이템 투하 @@ -2356,8 +2531,13 @@ lenum.payenter = 유닛 아래의 화물 건물에 착륙/진입 lenum.flag = 깃발 수 설정 lenum.mine = 특정 위치에서 채광 lenum.build = 구조물 건설 -lenum.getblock = 특정 좌표의 빌딩과 블록을 반환합니다.\n위치는 기체의 인지 범위 내여야 합니다.\n자연 지형은 [accent]@solid[]의 유형을 가집니다. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = 좌표 주변 기체 발견 여부 lenum.boost = 이륙 시작/중단 -onset.commandmode = [accent]shift[]를 눌러 [accent]명령 모드[]를 활성화하세요.\n[accent]좌클릭과 드래그[]로 기체를 선택하세요.\n[accent]우클릭[]으로 선택된 기체들에게 이동 또는 공격 명령을 내리세요. -onset.commandmode.mobile = [accent]명령 버튼[]을 눌러 [accent]명령 모드[]를 활성화하세요.\n손가락을 꾹 누르고, [accent]드래그[]해서 유닛을 선택하세요.\n[accent]눌러서[] 선택된 기체들에게 이동 또는 공격 명령을 내리세요. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index ac8ece1fcd..3f5466f876 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Sort by stars schematic = Schema schematic.add = Išsaugoti schemą... schematics = Schemos +schematic.search = Search schematics... schematic.replace = Schema šiuo pavadinimu jau egzistuoja. Pakeisti? schematic.exists = Schema šiuo pavadinimu jau egzistuoja. schematic.import = Importuoti schemą... @@ -68,7 +69,7 @@ schematic.shareworkshop = Dalintis Dirbtuvėje schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Apversti schemą schematic.saved = Schema išsaugota. schematic.delete.confirm = Ši schema bus negrįžtamai pašalinta. -schematic.rename = Pervadinti schemą +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blokai schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.tags = Tags: @@ -77,6 +78,7 @@ schematic.addtag = Add Tag schematic.texttag = Text Tag schematic.icontag = Icon Tag schematic.renametag = Rename Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Delete this tag completely? schematic.tagexists = That tag already exists. stats = Stats @@ -249,11 +251,19 @@ trace = Sekti Žaidėją trace.playername = Žaidėjo vardas: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Unikalus ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobilus Klientas: [accent]{0} trace.modclient = Custom Client: [accent]{0} trace.times.joined = Times Joined: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Netaisyklingas kliento ID! Praneškite apie klaidą. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Užblokavimai server.bans.none = Nerasta užblokuotų žaidėjų! server.admins = Administratoriai @@ -267,10 +277,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Custom Build confirmban = Ar esate tikras, jog norite užblokuoti šį žaidėją? confirmkick = Ar esate tikras, jog norite išmesti šį žaidėją? -confirmvotekick = Ar esate tikras, jog norite išbalsuoti šį žaidėją? confirmunban = Ar esate tikras, jog norite atblokuoti šį žaidėją? confirmadmin = Ar esate tikras, jog norite šį žaidėją padaryti administratoriumi? confirmunadmin = Ar esate tikras, jog norite atimti administratoriaus statusą iš šio žaidėjo? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Prisijungti prie žaidimo joingame.ip = IP Adresas: disconnect = Atsijungta. @@ -326,12 +337,23 @@ open = Atidaryti customize = Keisti Taisykles cancel = Atšaukti command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Atidaryti Nuorodą copylink = Kopijuoti Nuorodą back = Sugrįžti @@ -345,7 +367,7 @@ data.import = Importuoti duomenis data.openfolder = Atidaryti duomenų aplanką data.exported = Duomenys Eksportuoti. data.invalid = Tai nėra veikiantys žaidimo duomenys. -data.import.confirm = Importuojant išorinius duomenis bus pašalinti[scarlet] visi esami duomenys[] +data.import.confirm = Importuojant išorinius duomenis bus pašalinti[scarlet] visi esami duomenys[] quit.confirm = Ar tikrai norite išeiti? loading = [accent]Kraunama... downloading = [accent]Downloading... @@ -371,16 +393,16 @@ wave.enemycore = [accent]{0}[lightgray] Enemy Core wave.enemy = [lightgray]{0} Likęs priešas wave.guardianwarn = Guardian approaching in [accent]{0}[] waves. wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave. -loadimage = Užkrauti vaizdą +loadimage = Užkrauti vaizdą saveimage = Išsaugoti vaizdą unknown = Nežinomas custom = Pasirinktinis builtin = Integruotas map.delete.confirm = Ar esate tikras, jog norite išpašalinti šį žemėlapį? Šis veiksmas negali būti atstatytas map.random = [accent]Atsitiktinis žemėlapis -map.nospawn = Šiame žemėlapyje nėra jokio branduolio atsirasti žaidėjui! Įdėkite[accent] oranžinį[] branduolį į žemėlapį redaktoriuje. -map.nospawn.pvp = Šiame žemėlapyje nėra jokio priešų branduolio atsirasti žaidėjui! Įdėkite[scarlet] ne oranžinį[] branduolį į žemėlapį redaktoriuje. -map.nospawn.attack = Šiame žemėlapyje nėra jokio priešo branduolio, kurį reikia sunaikinti žaidėjams! Įdėkite[scarlet] raudoną[] branduolį į žemėlapį redaktoriuje. +map.nospawn = Šiame žemėlapyje nėra jokio branduolio atsirasti žaidėjui! Įdėkite {0} branduolį į žemėlapį redaktoriuje. +map.nospawn.pvp = Šiame žemėlapyje nėra jokio priešų branduolio atsirasti žaidėjui! Įdėkite [scarlet]ne oranžinį[] branduolį į žemėlapį redaktoriuje. +map.nospawn.attack = Šiame žemėlapyje nėra jokio priešo branduolio, kurį reikia sunaikinti žaidėjams! Įdėkite {0} branduolį į žemėlapį redaktoriuje. map.invalid = Įvyko klaida kraunant žemėlapį: sugadintas arba klaidingas žemėlapio failas. workshop.update = Atnaujinti elementą workshop.error = Klaida kraunant Dirbtuvės duomenis: {0} @@ -412,6 +434,12 @@ editor.waves = Bangos: editor.rules = Taisyklės: editor.generation = Generacija: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Redaguoti žaidime editor.playtest = Playtest editor.publish.workshop = Publikuoti Dirbtuvėje @@ -455,7 +483,7 @@ waves.sort.begin = Begin waves.sort.health = Health waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Hide All waves.units.show = Show All @@ -467,6 +495,8 @@ editor.default = [lightgray] details = Detaliau... edit = Redaguoti... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Pavadinimas: editor.spawn = Atradinti vienetą editor.removeunit = Panaikinti vienetą @@ -478,6 +508,7 @@ editor.errorlegacy = Šis žemėlapis yra per senas ir naudoja seną žemėlapi editor.errornot = Tai nėra žemėlapio formatas. editor.errorheader = Šis žemėlapis yra netaisyklingas arba sugadintas. editor.errorname = Šis žemėlapis neturi nustatyto pavadinimo. Ar bandote užkrauti išsaugotą failą? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Atnaujinti editor.randomize = Sumaišyti atsitiktinai editor.moveup = Move Up @@ -489,6 +520,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Pakeisti dydį editor.loadmap = Užkrauti žemėlapį editor.savemap = Išsaugoti žemėlapį +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Išsaugota! editor.save.noname = Jūsų žemėlapis neturi pavadinimo! Nustatykite meniu 'žemėlapio informacija'. editor.save.overwrite = Jūsų žemėlapis perrašo integruotą žemėlapį! Pasirinkite skirtingą pavadinimą 'žemėlapio informacija' meniu. @@ -527,6 +559,8 @@ toolmode.eraseores = Ištrinti rūdas toolmode.eraseores.description = Ištrinti tik rūdas. toolmode.fillteams = Užpildyti komandas toolmode.fillteams.description = Užpildykite komandas, o ne blokus. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Piešti komandas toolmode.drawteams.description = Pieškite komandas, o ne blokus. toolmode.underliquid = Under Liquids @@ -549,6 +583,7 @@ filter.clear = Išvalyti filter.option.ignore = ignoruoti filter.scatter = Išsklaidyti filter.terrain = Reljefas +filter.logic = Logic filter.option.scale = Mastelis filter.option.chance = Tikimybė filter.option.mag = Didumas @@ -571,6 +606,25 @@ filter.option.floor2 = Antrasis sluoksnis filter.option.threshold2 = Antrasis slenkstis filter.option.radius = Spindulys filter.option.percentile = Procentilė +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Plotis: height = Aukštis: @@ -621,9 +675,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -643,12 +700,11 @@ objective.command = [accent]Command Units objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ loadout = Loadout -resources = Resources +resources = Resources resources.max = Max bannedblocks = Uždrausti blokai objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Pridėti visus @@ -662,7 +718,7 @@ guardian = Guardian connectfail = [crimson]Prisijungimo klaida:\n\n[accent]{0} error.unreachable = Serveris nepasiekiamas.\nAr adresas yra parašytas teisingai? error.invalidaddress = Klaidingas adresas. -error.timedout = Baigėsi Laikas!\nĮsitikinkite, jog serverio prievado ekspedijavimas yra sukonfigūruotas ir adresas yra geras. +error.timedout = Baigėsi Laikas!\nĮsitikinkite, jog serverio prievado ekspedijavimas yra sukonfigūruotas ir adresas yra geras. error.mismatch = Paketų klaida:\ngalimas kliento/serverio versijų nesutapimas.\nĮsitikinkite, jog jūs ir serveris turi naujausią Mindustry versiją! error.alreadyconnected = Jau prisijungta. error.mapnotfound = Žemėlapis nerastas! @@ -671,7 +727,7 @@ error.any = Nžinoma tinklo klaida. error.bloom = Nepavyko inicijuoti spindėjimo.\nJūsų įrenginys gali nepalaikyti šios funkcijos. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -707,7 +763,8 @@ sector.curlost = Sector Lost sector.missingresources = [scarlet]Insufficient Core Resources sector.attacked = Sector [accent]{0}[white] under attack! sector.lost = Sector [accent]{0}[white] lost! -sector.captured = Sector [accent]{0}[white]captured! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -849,7 +906,7 @@ stat.input = Įeiga stat.output = Išeiga stat.maxefficiency = Max Efficiency stat.booster = Stiprintuvas -stat.tiles = Privalomi +stat.tiles = Privalomi stat.affinities = Affinities stat.opposites = Opposites stat.powercapacity = Energijos Talpumas @@ -915,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -925,14 +983,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field -ability.unitspawn = {0} Factory +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Privalomas Geresnis Grąžtas @@ -972,6 +1063,7 @@ bullet.splashdamage = [stat]{0}[lightgray] zonos žalos ~[stat] {1}[lightgray] b bullet.incendiary = [stat]uždegantis bullet.homing = [stat]sekimas bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1007,6 +1099,7 @@ unit.items = daiktai unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Bendra @@ -1027,6 +1120,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Automatinis Statybų Sustabdymas setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Vandens Animacija setting.animatedshields.name = Skydų Animacija @@ -1073,13 +1167,14 @@ setting.position.name = Rodyti Žaidėjų Pozicijas setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Muzikos Garsumas setting.atmosphere.name = Show Planet Atmosphere +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Aplinkos Garsas setting.mutemusic.name = Nutildyti Muziką setting.sfxvol.name = SFX Garsumas setting.mutesound.name = Nutildyti Garsus setting.crashreport.name = Siųsti Anoniminius Strigties Pranešimus setting.savecreate.name = Automatiškai Kurti Išsaugojimus -setting.publichost.name = Viešojo Žaidimo Matomumas +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Žaidėjų Limitas setting.chatopacity.name = Pokalbių Lentos Nepermatomumas setting.lasersopacity.name = Elektros Tinklo Nepermatomumas @@ -1087,6 +1182,8 @@ setting.bridgeopacity.name = Tilto Nepermatomumas setting.playerchat.name = Rodyti Pokalbių Teksto Burbulus Virš Žaidėjų setting.showweather.name = Show Weather Graphics setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Pritaikykite sąsają, kad būtų rodoma įpjova +setting.macnotch.description = Norint pritaikyti pakeitimus, reikia paleisti iš naujo steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Įsiminkite, jog beta versijoje negalima sukrti viešų kambarių. @@ -1097,6 +1194,7 @@ keybind.title = Pakeisti Valdymo Mygtukus keybinds.mobile = [scarlet]Dauguma valdymo mygtukų neveikia telefone. Tik paparastas judėjimas yra palaikomas. category.general.name = Bendra category.view.name = Vaizdas +category.command.name = Unit Command category.multiplayer.name = Žaidimas Tinkle category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1114,6 +1212,24 @@ keybind.mouse_move.name = Sekti Pelę keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Pasirinkite Regioną keybind.schematic_menu.name = Schemų Meniu @@ -1177,17 +1293,25 @@ mode.pvp.description = Kovokite su kitais žmonėmsi vietiniame tinkle.\n[gray]N mode.attack.name = Puolimas mode.attack.description = Sunaikinkite priešų branduolį. \n[gray]Norint žaisti žemėlapyje yra reikalingas branduolys su raudona spalva. mode.custom = Pasirinktinės Taisyklės +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Neriboti Resursai rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reaktorių Sprogimai rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Bangų Laikmatis rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Bangos +rules.airUseSpawns = Air units use spawn points rules.attack = Puolimo Režimas +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1206,6 +1330,7 @@ rules.unitdamagemultiplier = Vienetų Žalos Daugiklis rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Nestatymo aplink priešų branduolį spindulys:[lightgray] (blokais) @@ -1238,6 +1363,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Daiktai content.liquid.name = Skysčiai @@ -1455,6 +1582,7 @@ block.inverted-sorter.name = Atbulinis Rūšiuotojas block.message.name = Žinutė block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Šviestuvas block.overflow-gate.name = Perpildymo Užtvara block.underflow-gate.name = Neperpildymo Užtvara @@ -1695,7 +1823,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1813,9 +1940,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -1978,7 +2109,7 @@ block.arc.description = Mažas artimojo nuotolio elektros bokštas. Šaudo elekt block.swarmer.description = Vidutinio didžio raketsvaidis. Puola, tiek žemę, tiek orą. Šaudo taikinius sekančias raketas. block.salvo.description = Didelis, pažangesnė Duo bokšto versija. Šaudo šovinių salvas į priešus. block.fuse.description = Didelis, artimojo nuotolio energijos bokštas. Šaudo tris prasiskverbiančius spindulius. -block.ripple.description = Itin galingas artilerijos bokštas. Dideliais atstumais šaudo būrius artilerijos šovinius į priešus. +block.ripple.description = Itin galingas artilerijos bokštas. Dideliais atstumais šaudo būrius artilerijos šovinius į priešus. block.cyclone.description = Didelis bokštas puolantis, tiek žemę, tiek orą. Šaudo sprogstančius šovinius į priešus. block.spectre.description = Milžiniškas dvivamzdis bokštas. Šaudo didelius, kiaurai per šarvus einančius šovinius į taikinius esančius ant žemės ir ore. block.meltdown.description = Milžiniška lazerinė patranka. Užsikrauna ir šaudo lazerinius spindulius į aplinkinius priešus. Veikimui reikalingas aušinimo skystis. @@ -2009,7 +2140,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2045,7 +2175,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2162,6 +2291,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2184,6 +2314,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2195,6 +2327,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2207,6 +2380,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2232,6 +2406,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2249,6 +2424,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2310,6 +2486,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2320,8 +2497,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 47c16aef5d..d7035c1049 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = Sorteer op sterren schematic = Ontwerp schematic.add = Bewaar ontwerp... schematics = Ontwerpen +schematic.search = Search schematics... schematic.replace = Er bestaat al een ontwerp met die naam. Overschrijven? schematic.exists = Een ontwerp met die naam bestaat al. schematic.import = Importeer ontwerp... @@ -69,7 +70,7 @@ schematic.shareworkshop = Delen op de Werkplaats schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Spiegel ontwerp schematic.saved = Ontwerp bewaard. schematic.delete.confirm = Dit ontwerp zal in een zwart gat verdwijnen. -schematic.rename = Hernoem ontwerp +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blokken schematic.disabled = [scarlet]Ontwerpen uitgeschakeld[]\nJe hebt geen toestemming om ontwerpen te gebruiken op deze [accent]map[] of [accent]server. schematic.tags = Tags: @@ -78,6 +79,7 @@ schematic.addtag = Voeg Tag toe schematic.texttag = Tekst Tag schematic.icontag = Icoon Tag schematic.renametag = Hernoem Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Deze tag compleet verwijderen? schematic.tagexists = Die tag bestaat al. @@ -257,11 +259,19 @@ trace = Traceer Speler trace.playername = Speler naam: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Unieke ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobiel apparaat: [accent]{0} trace.modclient = Unofficie�l: [accent]{0} trace.times.joined = Keren Aangesloten: [accent]{0} trace.times.kicked = Keren uit het spel gezet: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Ongeldige speler ID! Raporteer deze bug. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Verbannen server.bans.none = Geen gedegradeerde spelers gevonden! server.admins = Administrateurs @@ -275,10 +285,11 @@ server.version = [lightgray]Versie: {0} {1} server.custombuild = [accent]Aangespaste Bouw confirmban = Weet je zeker dat je deze speler wilt verbannen? confirmkick = Weet je zeker dat je deze speler uit het spel wilt zetten? -confirmvotekick = Weet je zeker dat je deze speler weg wilt wegstemmen? confirmunban = Weet je zeker dat je deze speler weer wilt toelaten? confirmadmin = Weet je zeker dat je deze speler administrateur wilt geven? confirmunadmin = Weet je zeker dat je de administrateurs status van deze speler wilt intrekken? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Treed toe joingame.ip = Adres: disconnect = Gesloten. @@ -334,12 +345,23 @@ open = Open customize = Aanpassen cancel = Annuleer command = Commando +command.queue = [lightgray][Queuing] command.mine = Mijn command.repair = Repareer command.rebuild = Herbouw command.assist = Assist Speler command.move = Beweeg command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Open Link copylink = Kopieer Link back = Terug @@ -386,9 +408,9 @@ custom = Aangepast builtin = Ingebouwd map.delete.confirm = Weet je zeker dat je deze map wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt! map.random = [accent]Willekeurige map -map.nospawn = Deze map heeft geen cores voor de spelers om in te spawnen! Voeg een[royal] blauwe[] core toe aan de map via de editor. -map.nospawn.pvp = Deze map heeft geen cores voor je vijanden om in te spawnen! Voeg een[scarlet] rode[] core to aan de map via de editor. -map.nospawn.attack = Deze map bevat geen vijandige cores om aan te vallen! Voeg een[scarlet] rode[] core toe aan de map via de editor. +map.nospawn = Deze map heeft geen cores voor de spelers om in te spawnen! Voeg een {0} core toe aan de map via de editor. +map.nospawn.pvp = Deze map heeft geen cores voor je vijanden om in te spawnen! Voeg een [scarlet]rode[] core to aan de map via de editor. +map.nospawn.attack = Deze map bevat geen vijandige cores om aan te vallen! Voeg een {0} core toe aan de map via de editor. map.invalid = Fout tijdens laden van map: Ongeldig map bestand. workshop.update = Bijwerken workshop.error = Fout bij laden workshop info: {0} @@ -420,6 +442,12 @@ editor.waves = Rondes: editor.rules = Regels: editor.generation = Generatie: editor.objectives = Doelen +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Bewerk In-Spel editor.playtest = Speeltest editor.publish.workshop = Publiceer in Werkplaats @@ -463,7 +491,7 @@ waves.sort.begin = Begin waves.sort.health = Levenspunten waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Verberg Alle waves.units.show = Toon Alle @@ -475,6 +503,8 @@ editor.default = [lightgray] details = Details... edit = Bewerk... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Naam: editor.spawn = Voeg Eenheid toe editor.removeunit = Verwijder Eenheid @@ -486,6 +516,7 @@ editor.errorlegacy = Deze kaart is te oud, bestandsformaat word niet meer onders editor.errornot = Dat is geen kaartbestand. editor.errorheader = Dit kaartbestand is ongeldig of corrupt. editor.errorname = Kaart heeft geen naam. +editor.errorlocales = Error reading invalid locale bundles. editor.update = Bijwerken editor.randomize = Willekeurig editor.moveup = Beweeg Omhoog @@ -497,6 +528,7 @@ editor.sectorgenerate = Sector Genereren editor.resize = Verander formaat editor.loadmap = Laad Kaart editor.savemap = Bewaar Kaart +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Bewaard! editor.save.noname = Je kaart heeft geen naam! Stel er ��n in het menu 'kaartinfo'. editor.save.overwrite = De naam van deze kaart is al in gebruik door een van het spel zelf, kies een andere. @@ -535,6 +567,8 @@ toolmode.eraseores = Verwijder grondstoffen toolmode.eraseores.description = Verwijderd enkel grondstoffen. toolmode.fillteams = Vervang Teams toolmode.fillteams.description = Vervang teams in plaats van blokken. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Teken Teams toolmode.drawteams.description = Tekent teams in plaats van blokken. toolmode.underliquid = Onder vloeistoffen @@ -558,6 +592,7 @@ filter.clear = Verwijder filter.option.ignore = Negeer filter.scatter = Verstrooi filter.terrain = Terrein +filter.logic = Logic filter.option.scale = Schaal filter.option.chance = Verander @@ -581,6 +616,25 @@ filter.option.floor2 = Secundaire Vloer filter.option.threshold2 = Secundaire Drempel filter.option.radius = Straal filter.option.percentile = percentiel +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Breedte: height = Hoogte: @@ -632,9 +686,12 @@ objective.destroycore.name = Vernietig Core objective.commandmode.name = Commando Modus objective.flag.name = Vlag marker.shapetext.name = Vorm Tekst -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Vorm marker.text.name = Tekst +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Achtergrond marker.outline = Omtrek objective.research = [accent]Onderzoek:\n[]{0}[lightgray]{1} @@ -659,7 +716,6 @@ resources.max = Max bannedblocks = Verboden Blokken objectives = Doelen bannedunits = Verboden eenheden -rules.hidebannedblocks = Verberg verboden blokken bannedunits.whitelist = Verboden eenheden als whitelist bannedblocks.whitelist = Verboden blokken als whitelist addall = Voeg Alles Toe @@ -682,7 +738,7 @@ error.any = Onbekende netwerk fout. error.bloom = Bloom aanzetten mislukt.\nJe apparaat ondersteunt het waarschijnlijk niet. weather.rain.name = Regen -weather.snow.name = Sneeuw +weather.snowing.name = Sneeuw weather.sandstorm.name = Zandstorm weather.sporestorm.name = Schimmelstorm weather.fog.name = Mist @@ -718,7 +774,8 @@ sector.curlost = Sector Verloren sector.missingresources = [scarlet]Onvoeldoende Materialen in Core sector.attacked = Sector [accent]{0}[white] onder vuur! sector.lost = Sector [accent]{0}[white] verloren! -sector.captured = Sector [accent]{0}[white]veroverd! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Verander icoon sector.noswitch.title = Kan niet van sector wisselen sector.noswitch = Je mag niet van sector wisselen terwijl een bestaande sector wordt aangevallen.\n\nSector: [accent]{0}[] op [accent]{1}[] @@ -927,6 +984,7 @@ stat.abilities = Capaciteiten stat.canboost = Kan Boosten stat.flying = Vliegende stat.ammouse = Ammunitie gebruik +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Schade Vermenigvuldiger stat.healthmultiplier = Levenspunten Vermenigvuldiger stat.speedmultiplier = Snelheids Vermenigvuldiger @@ -937,14 +995,47 @@ stat.immunities = Immuniteiten stat.healing = Genezing ability.forcefield = Krachtveld +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Reparatieveld +ability.repairfield.description = Repairs nearby units ability.statusfield = Statusveld -ability.unitspawn = {0} Fabriek +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Fabriek +ability.unitspawn.description = Constructs units ability.shieldregenfield = Schild Regeneratie Veld +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Beweging Bliksem +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Schild Boog +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regeneratie Onderdrukkingsveld -ability.energyfield = Energieveld: [accent]{0}[] schade ~ [accent]{1}[] blokken / [accent]{2}[] doelen +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energieveld +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Alleen materialen in de Core toegestaan. bar.drilltierreq = Betere boor nodig @@ -984,6 +1075,7 @@ bullet.splashdamage = [stat]{0}[lightgray] gebied scade ~[stat] {1}[lightgray] t bullet.incendiary = [stat]brandstichtend bullet.homing = [stat]doelzoekend bullet.armorpierce = [stat]pantserdoorborend +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x fragment kogels: @@ -1019,6 +1111,7 @@ unit.items = materialen unit.thousands = k unit.millions = mln unit.billions = mjd +unit.shots = shots unit.pershot = /schot category.purpose = Doel category.general = Algemeen @@ -1039,6 +1132,7 @@ setting.backgroundpause.name = Pauzeer in achtergrond setting.buildautopause.name = Pauzeer Bouw Automatisch setting.doubletapmine.name = Dubbelklik om te delven setting.commandmodehold.name = Vasthouden voor commandomodus +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Mods uitschakelen bij crash opstarten setting.animatedwater.name = Animeer Water setting.animatedshields.name = Animeer Schilden @@ -1085,13 +1179,14 @@ setting.position.name = Toon Speler Posities setting.mouseposition.name = Toon Muis Positie setting.musicvol.name = Muziek Volume setting.atmosphere.name = Toon Atmosfeer Planeet +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Achtergrond Volume setting.mutemusic.name = Demp Muziek setting.sfxvol.name = SFX Volume setting.mutesound.name = Demp Geluid setting.crashreport.name = Stuur Anonieme Crashmeldingen setting.savecreate.name = Bewaar Saves Automatisch -setting.publichost.name = Publieke Server Zichtbaarheid +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Spelerslijst setting.chatopacity.name = Chat Transparantie setting.lasersopacity.name = Stroomdraad Transparantie @@ -1099,6 +1194,8 @@ setting.bridgeopacity.name = Brug Transparantie setting.playerchat.name = Toon Chat setting.showweather.name = Toon Weer Graphics setting.hidedisplays.name = Verberg Logische Displays +setting.macnotch.name = Pas de interface aan om de inkeping weer te geven +setting.macnotch.description = Herstart vereist om veranderingen door te voeren steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Onthoud dat b�ta versies geen publieke lobby's kunnen maken. @@ -1109,6 +1206,7 @@ keybind.title = Herbind Toetsen keybinds.mobile = [scarlet]De meeste toetscombinaties werken niet voor mobiele apparaten. Enkel standaard bewegingen zijn ondersteund. category.general.name = Algemeen category.view.name = Toon +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Selecteer Blok placement.blockselectkeys = \n[lightgray]Toets: [{0}, @@ -1126,6 +1224,24 @@ keybind.mouse_move.name = Volg Muis keybind.pan.name = Schuif Weergave keybind.boost.name = Boost keybind.command_mode.name = Commandomodus +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Herbouw Regio keybind.schematic_select.name = Selecteer gebied keybind.schematic_menu.name = Ontwerpmenu @@ -1189,17 +1305,25 @@ mode.pvp.description = Vecht tegen andere spelers.\n[gray]Vereist minstens 2 ver mode.attack.name = Aanvallen mode.attack.description = Geen rondes, maar met als doel de vijandlijke core(s) te vernietigen. mode.custom = Aangepaste Regels +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Verberg verboden blokken rules.infiniteresources = Oneindige Resources rules.onlydepositcore = Alleen spullen in de core doen toestaan. +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Ontploffende Reactors rules.coreincinerates = Core verbrandt overvloed aan materialen. rules.disableworldprocessors = Zet Wereld-Processors Uit. rules.schematic = Ontwerpen Toegestaan rules.wavetimer = Vijandelijke Golven Timer rules.wavesending = Golven Sturen +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Golven +rules.airUseSpawns = Air units use spawn points rules.attack = Aanvalmodus +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Ploeg Grootte rules.rtsmaxsquadsize = Max Ploeg Grootte @@ -1218,6 +1342,7 @@ rules.unitdamagemultiplier = Eenheid Schade Vermenigvuldiger rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Zonne-Energie Vermenigvuldiger rules.unitcapvariable = Cores Dragen Bij Aan Eenheidslimiet +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Bais Eenheidlimiet rules.limitarea = Limiteer Kaart Gebied rules.enemycorebuildradius = Niet-Bouw Bereik Vijandelijke Cores:[lightgray] (tegels) @@ -1250,6 +1375,8 @@ rules.weather = Weer rules.weather.frequency = Frequentie: rules.weather.always = Altijd rules.weather.duration = Duur: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Materialen content.liquid.name = Vloeistoffen @@ -1467,6 +1594,7 @@ block.inverted-sorter.name = Omgekeerder Sorteerder block.message.name = Bericht block.reinforced-message.name = Gepansterd Bericht block.world-message.name = Wereldbericht +block.world-switch.name = World Switch block.illuminator.name = Lamp block.overflow-gate.name = Overstroom Poort block.underflow-gate.name = Onderstroom Poort @@ -1708,7 +1836,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1826,9 +1953,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2022,7 +2153,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2058,7 +2188,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2175,6 +2304,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2197,6 +2327,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2208,6 +2340,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2220,6 +2393,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2245,6 +2419,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2262,6 +2437,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2323,6 +2499,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2333,8 +2510,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 9ac90625cf..ccb5189643 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Sort by stars schematic = Blauwdruk schematic.add = Blauwdruk Opslaan... schematics = Blauwdrukken +schematic.search = Search schematics... schematic.replace = Er bestaat al een blaudruk met deze naam. Vervangen? schematic.exists = A schematic by that name already exists. schematic.import = Importeer Blauwdruk... @@ -68,7 +69,7 @@ schematic.shareworkshop = Deel op Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic schematic.saved = Blauwdruk opgeslagen. schematic.delete.confirm = This schematic will be utterly eradicated. -schematic.rename = Blauwdruk Hernoemen +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blokken schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.tags = Tags: @@ -77,6 +78,7 @@ schematic.addtag = Add Tag schematic.texttag = Text Tag schematic.icontag = Icon Tag schematic.renametag = Rename Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Delete this tag completely? schematic.tagexists = That tag already exists. stats = Stats @@ -221,8 +223,8 @@ server.kicked.customClient = Deze server ondersteunt geen aangepaste versies (mo server.kicked.gameover = Game over! server.kicked.serverRestarting = The server is restarting. server.versions = Jouw versie:[accent] {0}[]\nServerversie:[accent] {1}[] -host.info = Ook de [accent]host[] knop hosts een server op poort [scarlet]6567[]. \nIedereen die verbonden is met dezelfde [lightgray]wifi of lokaal netwerk[] zou je server moeten zien in zijn server lijst.\n\nAls je wil dat personen kunnen verbinden met je server van ergens anders via IP. Dan is [accent]port forwarding[] is nodig.\n\n[lightgray]Nota: Als iemand problemen heeft met het verbinden tot je LAN spel, zorg dan dat mindustry toestemming heeft tot je lokale netwerk in de Firewall instellingen. -join.info = Hier kan je een [accent]server IP[] invullen waarmee je wil verbinden. Je kan hier ook verbinden met servers op je [accent]lokale netwerk[]. LAN en WAN multiplayer wordt ondersteund.\n\n[lightgray]Belangrijk: er is geen automatische globale server lijst; als je met iemand wil verbinden via een IP adres moet je zijn/haar IP adres vragen. +host.info = Ook de [accent]host[] knop hosts een server op poort [scarlet]6567[]. \nIedereen die verbonden is met dezelfde [lightgray]wifi of lokaal netwerk[] zou je server moeten zien in zijn server lijst.\n\nAls je wil dat personen kunnen verbinden met je server van ergens anders via IP. Dan is [accent]port forwarding[] is nodig.\n\n[lightgray]Nota: Als iemand problemen heeft met het verbinden tot je LAN spel, zorg dan dat mindustry toestemming heeft tot je lokale netwerk in de Firewall instellingen. +join.info = Hier kan je een [accent]server IP[] invullen waarmee je wil verbinden. Je kan hier ook verbinden met servers op je [accent]lokale netwerk[]. LAN en WAN multiplayer wordt ondersteund.\n\n[lightgray]Belangrijk: er is geen automatische globale server lijst; als je met iemand wil verbinden via een IP adres moet je zijn/haar IP adres vragen. hostserver = Open server voor LAN invitefriends = Nodig vrienden uit. hostserver.mobile = Open\nServer @@ -249,11 +251,19 @@ trace = Spelersinformatie trace.playername = Naam: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Unieke ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobiele Client: [accent]{0} trace.modclient = Aangepaste Client: [accent]{0} trace.times.joined = Times Joined: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Ongeldige client ID! Verstuur een bug report! +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Verbanningen server.bans.none = Geen verbannen spelers gevonden! server.admins = Administrators @@ -267,10 +277,11 @@ server.version = [lightgray]Versie: {0} {1} server.custombuild = [accent]Aangepaste versie confirmban = Ben je zeker dat je deze speler wilt verbannen? confirmkick = Ben je zeker dat je deze speler van de server wilt gooien? -confirmvotekick = Ben je zeker dat je een stemming wilt starten om deze speler uit de server to gooien? confirmunban = Ben je zeker dat je de verbanning wilt opheffen? confirmadmin = Ben je zeker dat je deze speler administrator wilt maken? confirmunadmin = Ben je zeker dat je de administratorstatus van deze speler wilt intrekken? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Verbinden met server joingame.ip = IP adres: disconnect = Verbinding verbroken. @@ -326,12 +337,23 @@ open = Open customize = Pas aan cancel = Annuleer command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Open Link copylink = Kopiëer Link back = Terug @@ -378,9 +400,9 @@ custom = Aangepast builtin = Ingebouwd map.delete.confirm = Weet je zeker dat je deze kaart wilt verwijderen? Deze actie kan niet ongedaan gemaakt worden! map.random = [accent]Willekeurige Map -map.nospawn = Deze map heeft geen cores voor spelers om te spawnen! Voeg een[royal] blauwe[] core toe in de mapbewerker. -map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Voeg een[scarlet] niet-blauwe[] core toe in de mapbewerker. -map.nospawn.attack = This map does not have any enemy cores for player to attack! Voeg een[scarlet] rode[] core toe in de mapbewerker. +map.nospawn = Deze map heeft geen cores voor spelers om te spawnen! Voeg een {0} core toe in de mapbewerker. +map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Voeg een [scarlet]niet-blauwe[] core toe in de mapbewerker. +map.nospawn.attack = This map does not have any enemy cores for player to attack! Voeg een {0} core toe in de mapbewerker. map.invalid = Fout tijdens het laden van de map: Corrupt of ongeldig mapbestand. workshop.update = Update Item workshop.error = Error fetching workshop details: {0} @@ -412,6 +434,12 @@ editor.waves = Waves: editor.rules = Rules: editor.generation = Generation: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -455,7 +483,7 @@ waves.sort.begin = Begin waves.sort.health = Health waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Hide All waves.units.show = Show All @@ -467,6 +495,8 @@ editor.default = [lightgray] details = Details... edit = Edit... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Name: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -478,6 +508,7 @@ editor.errorlegacy = This map is too old, and uses a legacy map format that is n editor.errornot = This is not a map file. editor.errorheader = This map file is either not valid or corrupt. editor.errorname = Map has no name defined. +editor.errorlocales = Error reading invalid locale bundles. editor.update = Update editor.randomize = Randomize editor.moveup = Move Up @@ -489,6 +520,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Resize editor.loadmap = Load Map editor.savemap = Save Map +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Saved! editor.save.noname = Your map does not have a name! Set one in the 'map info' menu. editor.save.overwrite = Your map overwrites a built-in map! Pick a different name in the 'map info' menu. @@ -527,6 +559,8 @@ toolmode.eraseores = Erase Ores toolmode.eraseores.description = Erase only ores. toolmode.fillteams = Fill Teams toolmode.fillteams.description = Fill teams instead of blocks. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Draw Teams toolmode.drawteams.description = Draw teams instead of blocks. toolmode.underliquid = Under Liquids @@ -549,6 +583,7 @@ filter.clear = Clear filter.option.ignore = Ignore filter.scatter = Scatter filter.terrain = Terrain +filter.logic = Logic filter.option.scale = Scale filter.option.chance = Chance filter.option.mag = Magnitude @@ -571,6 +606,25 @@ filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Width: height = Height: @@ -621,9 +675,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -643,12 +700,11 @@ objective.command = [accent]Command Units objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ loadout = Loadout -resources = Resources +resources = Resources resources.max = Max bannedblocks = Banned Blocks objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -671,7 +727,7 @@ error.any = Unknown network error. error.bloom = Failed to initialize bloom.\nYour device may not support it. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -707,7 +763,8 @@ sector.curlost = Sector Lost sector.missingresources = [scarlet]Insufficient Core Resources sector.attacked = Sector [accent]{0}[white] under attack! sector.lost = Sector [accent]{0}[white] lost! -sector.captured = Sector [accent]{0}[white]captured! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -915,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -925,14 +983,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field -ability.unitspawn = {0} Factory +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Better Drill Required @@ -972,6 +1063,7 @@ bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles bullet.incendiary = [stat]incendiary bullet.homing = [stat]homing bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1007,6 +1099,7 @@ unit.items = items unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = General @@ -1027,6 +1120,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animated Water setting.animatedshields.name = Animated Shields @@ -1073,13 +1167,14 @@ setting.position.name = Show Player Position setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Music Volume setting.atmosphere.name = Show Planet Atmosphere +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Mute Music setting.sfxvol.name = SFX Volume setting.mutesound.name = Mute Sound setting.crashreport.name = Send Anonymous Crash Reports setting.savecreate.name = Auto-Create Saves -setting.publichost.name = Public Game Visibility +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Player Limit setting.chatopacity.name = Chat Opacity setting.lasersopacity.name = Power Laser Opacity @@ -1087,6 +1182,8 @@ setting.bridgeopacity.name = Bridge Opacity setting.playerchat.name = Display In-Game Chat setting.showweather.name = Show Weather Graphics setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Adapt interface to display notch +setting.macnotch.description = Restart required to apply changes steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Note that beta versions of the game cannot make public lobbies. @@ -1097,6 +1194,7 @@ keybind.title = Rebind Keys keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = General category.view.name = View +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1114,6 +1212,24 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1177,17 +1293,25 @@ mode.pvp.description = Fight against other players locally. mode.attack.name = Attack mode.attack.description = No waves, with the goal to destroy the enemy base. mode.custom = Custom Rules +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Infinite Resources rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Wave Timer rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Waves +rules.airUseSpawns = Air units use spawn points rules.attack = Attack Mode +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1206,6 +1330,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) @@ -1238,6 +1363,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Items content.liquid.name = Liquids @@ -1455,6 +1582,7 @@ block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Illuminator block.overflow-gate.name = Overflow Gate block.underflow-gate.name = Underflow Gate @@ -1695,7 +1823,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1813,9 +1940,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2009,7 +2140,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2045,7 +2175,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2162,6 +2291,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2184,6 +2314,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2195,6 +2327,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2207,6 +2380,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2232,6 +2406,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2249,6 +2424,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2310,6 +2486,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2320,8 +2497,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index af70996027..f951e54ae8 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -14,7 +14,7 @@ link.f-droid.description = Pozycja w F-Droid link.wiki.description = Oficjalna Wiki Mindustry link.suggestions.description = Zaproponuj nowe funkcje link.bug.description = Znalazłeś błąd? Zgłoś go tutaj -linkopen = This server has sent you a link. Are you sure you want to open it?\n\n[sky]{0} +linkopen = Serwer wysłał ci link. Czy jesteś pewnien, że chcesz go otworzyć?\n\n[sky]{0} linkfail = Nie udało się otworzyć linku!\nURL został skopiowany. screenshot = Zapisano zrzut ekranu w {0} screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje miejsca w pamięci urządzenia. @@ -57,6 +57,7 @@ mods.browser.sortstars = Sortuj wg gwiazdek schematic = Schemat schematic.add = Zapisz schemat... schematics = Schematy +schematic.search = Wyszukaj schematy... schematic.replace = Schemat o tej nazwie już istnieje. Czy chcesz go zastąpić? schematic.exists = Schemat o tej nazwie już istnieje. schematic.import = Importuj Schemat... @@ -69,7 +70,7 @@ schematic.shareworkshop = Podziel się na Warsztacie schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Odwróć schemat schematic.saved = Schemat zapisany. schematic.delete.confirm = Ten schemat zostanie usunięty. -schematic.rename = Zmień nazwę schematu +schematic.edit = Edytuj Schemat schematic.info = {0}x{1}, {2} bloków schematic.disabled = [scarlet]Schematy są wyłączone[]\nNie możesz używać schematów na tej [accent]mapie[] lub [accent]serwerze. schematic.tags = Tagi: @@ -78,6 +79,7 @@ schematic.addtag = Dodaj Znacznik schematic.texttag = Tekst Znacznika schematic.icontag = Ikona Znacznika schematic.renametag = Zmień Nazwę Znacznika +schematic.tagged = {0} Otagowany schematic.tagdelconfirm = Czy kompletnie usunąć znacznik? schematic.tagexists = Taki znacznik już istnieje. @@ -105,7 +107,7 @@ joingame = Dołącz Do Gry customgame = Własna Gra newgame = Nowa Gra none = -none.found = [lightgray]<żaden znaleziony> +none.found = [lightgray] none.inmap = [lightgray] minimap = Minimapa position = Pozycja @@ -149,16 +151,16 @@ mod.incompatiblemod = [red]Niekompatybilne mod.blacklisted = [red]Niewspierane mod.unmetdependencies = [red]Niespełnione Zależnośći mod.erroredcontent = [scarlet]Błędy Zawartości -mod.circulardependencies = [red]Circular Dependencies -mod.incompletedependencies = [red]Incomplete Dependencies +mod.circulardependencies = [red]Zagnieżdżone zależności +mod.incompletedependencies = [red]Brakujące zależności mod.requiresversion.details = Wymaga wersji gry: [accent]{0}[]\nTwoja gra jest przestarzała. Ten mod potrzebuje nowszej wersji gry (możliwe, że wersji w fazie alfa/beta) aby mógł funkcjonować. mod.outdatedv7.details = Ten mod jest niekompatybilny z najnowszą wersją gry. Autor musi go zaktualizować, i dodać [accent]minGameVersion: 136[] w pliku [accent]mod.json[]. mod.blacklisted.details = Ten mod został ręczenie przeniesiony na czarną listę, ponieważ powodował wyłączenia gry i inne problemy na tej wersji. Nie używaj go. mod.missingdependencies.details = W tym modzie brakuje zależnośći: {0} mod.erroredcontent.details = Ten mod spowodował błędy przy uruchomianu. Poproś autora moda o ich naprawienie. -mod.circulardependencies.details = This mod has dependencies that depends on each other. -mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}. -mod.requiresversion = Requires game version: [red]{0} +mod.circulardependencies.details = Ten mod posiada zależności, które są zależne od innych zależności. +mod.incompletedependencies.details = Moda nie da się załadować z powodu niepoprawnych lub brakujących zależności: {0}. +mod.requiresversion = Wymagana wersja gry: [red]{0} mod.errors = Wystąpił błąd podczas ładowania treści. mod.noerrorplay = [scarlet]Twoje mody zawierają błędy.[] Wyłącz je lub napraw błędy przed rozpoczęciem gry. mod.nowdisabled = [scarlet]Brakuje zależności dla moda '{0}':[accent] {1}\n[lightgray]Najpierw trzeba ściągnąć te mody.\nMod zostanie automatycznie wyłączony. @@ -189,7 +191,7 @@ available = Nowe Odkrycie dostępne unlock.incampaign = < Odblokuj w kampanii dla szczegółów > campaign.select = Wybierz początkową kampanię campaign.none = [lightgray]Wybierz planetę, na której chcesz zacząć.\nMożesz zmienić planetę w każdej chwili. -campaign.erekir = Nowsza, bardziej dopracowana zawartość. Kampania postępuje bardziej liniowo.\n\nWyższej jakości mapy jak doświadczenia z gry. +campaign.erekir = Nowsza, bardziej dopracowana zawartość. Kampania postępuje bardziej liniowo.\n\nWyższej jakości mapy oraz rozgrywka. campaign.serpulo = Starsza zawartość; klasyczne doświadczenia. Bardziej otwarta.\n\nPotencjalnie niezbalansowane mapy i mechaniki. Słabiej dopracowana. completed = [accent]Ukończony techtree = Drzewo Techno-\nlogiczne @@ -253,11 +255,19 @@ trace = Zlokalizuj Gracza trace.playername = Nazwa gracza: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Wyjątkowe ID: [accent]{0} +trace.language = Język: [accent]{0} trace.mobile = Klient Mobilny: [accent]{0} trace.modclient = Zmodowany klient: [accent]{0} trace.times.joined = Dołączył: [accent]{0}[] razy trace.times.kicked = Wyrzucony: [accent]{0}[] razy +trace.ips = Adresy IP: +trace.names = Nazwy: invalidid = Złe ID klienta! Wyślij raport błędu. +player.ban = Zbanuj +player.kick = Wyrzuć +player.trace = Namierz +player.admin = Przyznaj uprawnienia administracyjne +player.team = Zmień Drużynę server.bans = Bany server.bans.none = Nie znaleziono zbanowanych osób! server.admins = Administratorzy @@ -271,12 +281,13 @@ server.version = [gray]Wersja: {0} server.custombuild = [accent]Zmodowany klient confirmban = Jesteś pewny, że chcesz zbanować "{0}[white]"? confirmkick = Jesteś pewny, że chcesz wyrzucić "{0}[white]"? -confirmvotekick = Jesteś pewny, że chcesz głosować za wyrzuceniem "{0}[white]"? confirmunban = Jesteś pewny, że chcesz odbanować tego gracza? confirmadmin = Jesteś pewny, że chcesz dać rangę administratora "{0}[white]"? confirmunadmin = Jesteś pewny, że chcesz zabrać rangę administratora "{0}[white]"? +votekick.reason = Powód głosowania +votekick.reason.message = Czy jesteś pewien, że chcesz głosować za wyrzuceniem "{0}[white]"?\nJeśli tak, proszę podaj powód: joingame.title = Dołącz do gry -joingame.ip = IP: +joingame.ip = Adres IP: disconnect = Rozłączono. disconnect.error = Błąd połączenia. disconnect.closed = Połączenie zostało zamknięte. @@ -292,7 +303,7 @@ server.invalidport = Nieprawidłowy numer portu. server.error = [crimson]Błąd hostowania serwera: [accent]{0} save.new = Nowy zapis save.overwrite = Czy na pewno chcesz nadpisać zapis gry? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = Pojedyńcze zapisy z kampani nie mogą zostać zaimportowane. overwrite = Nadpisz save.none = Nie znaleziono zapisów gry! savefail = Nie udało się zapisać gry! @@ -329,13 +340,24 @@ ok = OK open = Otwórz customize = Dostosuj zasady cancel = Anuluj -command = Komenda +command = Rozkazy +command.queue = [lightgray][Queuing] command.mine = Kop command.repair = Naprawiaj command.rebuild = Odbudowywuj command.assist = Asystuj Graczowi command.move = Przemieść -command.boost = Boost +command.boost = Przyspiesz +command.enterPayload = Enter Payload Block +command.loadUnits = Załaduj Jednostki +command.loadBlocks = Załaduj Bloki +command.unloadPayload = Rozładuj Ładunek +stance.stop = Analuj Rozkazy +stance.shoot = Strzelaj +stance.holdfire = Wstrzymaj Ogień +stance.pursuetarget = Goń Cel +stance.patrol = Patroluj Obszar +stance.ram = Taranuj\n[lightgray]Ruch w prostej linii bez znajdowania drogi openlink = Otwórz Link copylink = Kopiuj Link back = Wróć @@ -361,7 +383,7 @@ pausebuilding = [accent][[{0}][] by wstrzymać budowę resumebuilding = [scarlet][[{0}][] by kontynuować budowę enablebuilding = [scarlet][[{0}][] wznów budowę showui = Interfejs ukryty.\nNaciśnij [accent][[{0}][] by go pokazać. -commandmode.name = [accent]Command Mode +commandmode.name = [accent]Tryb poleceń commandmode.nounits = [no units] wave = [accent]Fala {0} wave.cap = [accent]Fala {0}/{1} @@ -373,8 +395,8 @@ wave.enemies = Pozostało [lightgray]{0} wrogów wave.enemycores = [accent]{0}[lightgray] Rdzeni Wroga wave.enemycore = [accent]{0}[lightgray] Rdzeń Wroga wave.enemy = Pozostał [lightgray]{0} wróg -wave.guardianwarn = Strażnik nadejdzie za [accent]{0}[] fale. -wave.guardianwarn.one = Strażnik nadejdzie za [accent]{0}[] fale. +wave.guardianwarn = Strażnik nadejdzie za [accent]{0}[] fal. +wave.guardianwarn.one = Strażnik nadejdzie za [accent]{0}[] falę. loadimage = Załaduj Obraz saveimage = Zapisz Obraz unknown = Nieznane @@ -382,14 +404,14 @@ custom = Własne builtin = Wbudowane map.delete.confirm = Czy jesteś pewny, że chcesz usunąć tę mapę? Nie będzie można jej przywrócić! map.random = [accent]Losowa Mapa -map.nospawn = Ta mapa nie zawiera żadnego rdzenia! Dodaj [accent]pomarańczowy[] rdzeń do tej mapy w edytorze. -map.nospawn.pvp = Ta mapa nie ma żadnego rdzenia przeciwnika, aby mogli się zrespić przeciwnicy! Dodaj[scarlet] inny niż żółty[] rdzeń do mapy w edytorze. -map.nospawn.attack = Ta mapa nie ma żadnego rdzenia przeciwnika, aby można było go zaatakować! Dodaj[scarlet] czerwony[] rdzeń do mapy w edytorze. +map.nospawn = Ta mapa nie zawiera żadnego rdzenia! Dodaj {0} rdzeń do tej mapy w edytorze. +map.nospawn.pvp = Ta mapa nie ma żadnego rdzenia przeciwnika, aby mogli się zrespić przeciwnicy! Dodaj [scarlet]inny niż żółty[] rdzeń do mapy w edytorze. +map.nospawn.attack = Ta mapa nie ma żadnego rdzenia przeciwnika, aby można było go zaatakować! Dodaj {0} rdzeń do mapy w edytorze. map.invalid = Błąd podczas ładowania mapy: uszkodzony lub niepoprawny plik mapy. workshop.update = Aktualizuj pozycję workshop.error = Błąd podczas wczytywania szczegółów z Warsztatu: {0} map.publish.confirm = Czy jesteś pewien, że chcesz opublikować tę mapę?\n\n[lightgray]Najpierw upewnij się, że zgadzasz się z umową EULA Warsztatu, w przeciwnym razie twoje mapy nie będą widoczne! -workshop.menu = Wybierz co chcesz zrobić z tą pozycją. +workshop.menu = Wybierz, co chcesz zrobić z tą pozycją. workshop.info = Informacja o pozycji changelog = Historia aktualizacji (opcjonalna): updatedesc = Zastąp Tytuł i Opis @@ -402,7 +424,7 @@ steam.error = Nie udało się zainicjować serwisów Steam.\nBłąd: {0} editor.planet = Planeta: editor.sector = Sektor: editor.seed = Ziarno: -editor.cliffs = Ściany w Klify +editor.cliffs = Ściany Na Klify editor.brush = Pędzel editor.openin = Otwórz w Edytorze @@ -411,11 +433,17 @@ editor.oregen.info = Generacja Złóż: editor.mapinfo = Informacje o Mapie editor.author = Autor: editor.description = Opis: -editor.nodescription = Mapa musi posiadać opis o długości co najmniej 4 znaków zanim zostanie opublikowana. +editor.nodescription = Mapa musi posiadać opis o długości co najmniej 4 znaków, zanim zostanie opublikowana. editor.waves = Fale: editor.rules = Zasady: editor.generation = Generacja: editor.objectives = Cele +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edytuj w Grze editor.playtest = Testuj Mapę editor.publish.workshop = Opublikuj w Warsztacie @@ -447,7 +475,7 @@ waves.max = maks. jednostek waves.guardian = Strażnik waves.preview = Podgląd waves.edit = Edytuj... -waves.random = Random +waves.random = Losowe waves.copy = Kopiuj Do Schowka waves.load = Załaduj Ze Schowka waves.invalid = Nieprawidłowe fale w schowku. @@ -458,8 +486,8 @@ waves.sort.reverse = Odwrotne Sortowanie waves.sort.begin = Rozpocznij waves.sort.health = Zdrowie waves.sort.type = Typ -waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.search = Wyszukaj Fale... +waves.filter = Filtr jednostek waves.units.hide = Schowaj Wszystkie waves.units.show = Pokaż Wszystkie @@ -472,6 +500,8 @@ editor.default = [lightgray] details = Detale... edit = Edytuj... variables = Zmienne +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Nazwa: editor.spawn = Stwórz Jednostkę editor.removeunit = Usuń Jednostkę @@ -483,6 +513,7 @@ editor.errorlegacy = Ta mapa jest zbyt stara i używa starszego formatu mapy, kt editor.errornot = To nie jest plik mapy. editor.errorheader = Ten plik mapy jest nieprawidłowy lub uszkodzony. editor.errorname = Mapa nie zawiera nazwy. Czy próbujesz załadować zapis gry? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Aktualizuj editor.randomize = Losuj editor.moveup = Przesuń w górę @@ -494,6 +525,7 @@ editor.sectorgenerate = Generuj Sektor editor.resize = Zmień Rozmiar editor.loadmap = Załaduj Mapę editor.savemap = Zapisz Mapę +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Zapisano! editor.save.noname = Twoja mapa nie ma nazwy! Ustaw ją w 'Informacjach o mapie'. editor.save.overwrite = Ta mapa nadpisze wbudowaną mapę! Ustaw inną nazwę w 'Informacjach o mapie'. @@ -532,6 +564,8 @@ toolmode.eraseores = Wymaż Rudy toolmode.eraseores.description = Usuwa tylko rudy. toolmode.fillteams = Wypełnij Drużyny toolmode.fillteams.description = Wypełnia drużyny zamiast bloków. +toolmode.fillerase = Usuń Typ +toolmode.fillerase.description = Usuwa bloki tego samego typu. toolmode.drawteams = Rysuj Drużyny toolmode.drawteams.description = Rysuje drużyny zamiast bloków. toolmode.underliquid = Pod Cieczami @@ -554,6 +588,7 @@ filter.clear = Oczyść filter.option.ignore = Ignoruj filter.scatter = Rozprosz filter.terrain = Teren +filter.logic = Logic filter.option.scale = Skala filter.option.chance = Szansa filter.option.mag = Wielkość @@ -576,6 +611,25 @@ filter.option.floor2 = Druga Podłoga filter.option.threshold2 = Drugi Próg filter.option.radius = Zasięg filter.option.percentile = Procent +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Szerokość: height = Wysokość: @@ -615,7 +669,7 @@ configure = Skonfiguruj Ładunek objective.research.name = Zbadaj objective.produce.name = Zdobądź objective.item.name = Zdobądź Przedmiot -objective.coreitem.name = Item ze Rdzenia +objective.coreitem.name = Przedmiot z Rdzenia objective.buildcount.name = Liczba Budynków objective.unitcount.name = Liczba Jednostek objective.destroyunits.name = Zniszcz Jednostki @@ -626,9 +680,12 @@ objective.destroycore.name = Zniszcz Rdzeń objective.commandmode.name = Tryb Poleceń objective.flag.name = Oznaczenie marker.shapetext.name = Dostosuj Tekst -marker.minimap.name = Minimapa +marker.point.name = Point marker.shape.name = Figura marker.text.name = Tekst +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Tło marker.outline = Kontur objective.research = [accent]Zbadaj:\n[]{0}[lightgray]{1} @@ -636,7 +693,7 @@ objective.produce = [accent]Zdobądź:\n[]{0}[lightgray]{1} objective.destroyblock = [accent]Zniszcz:\n[]{0}[lightgray]{1} objective.destroyblocks = [accent]Zniszcz: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3} objective.item = [accent]Zdobądź: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.coreitem = [accent]Przenieś się do Rdzenia:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} +objective.coreitem = [accent]Przenieś do Rdzenia:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} objective.build = [accent]Buduj: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.buildunit = [accent]Zbudowane Jednostki: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.destroyunits = [accent]Zniszczono: [][lightgray]{0}[]x Jednostek @@ -649,12 +706,11 @@ objective.nuclearlaunch = [accent]⚠ Wykryto wystrzał nuklearny: [lightgray]{0 announce.nuclearstrike = [red]⚠ NADCHODZI UDERZENIE NUKLEARNE ⚠ loadout = Ładunek -resources = Zasoby +resources = Zasoby resources.max = Maks. bannedblocks = Zabronione bloki objectives = Cele bannedunits = Zabronione jednostki -rules.hidebannedblocks = Ukryj zabronione bloki bannedunits.whitelist = Zablokowane jednostki jako biała lista bannedblocks.whitelist = Zablokowane bloki jako biała lista addall = Dodaj wszystkie @@ -677,7 +733,7 @@ error.any = Nieznany błąd sieci. error.bloom = Nie udało się załadować funkcji bloom.\nTwoje urządzenie może nie wspierać tej funkcji. weather.rain.name = Deszcz -weather.snow.name = Śnieg +weather.snowing.name = Śnieg weather.sandstorm.name = Burza piaskowa weather.sporestorm.name = Burza zarodników weather.fog.name = Mgła @@ -713,8 +769,8 @@ sector.curlost = Sektor Stracony sector.missingresources = [scarlet]Niewystarczające Zasoby Rdzenia sector.attacked = Sektor [accent]{0}[white] jest atakowany! sector.lost = Sektor [accent]{0}[white] został stracony! -#note: the missing space in the line below is intentional -sector.captured = Sektor [accent]{0}[white]został podbity! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Zmień Ikonę sector.noswitch.title = Nie można zmienić sektorów sector.noswitch = Nie możesz zmieniać sektorów, gdy istniejący sektor jest atakowany.\n\nSektor: [accent]{0}[] na [accent]{1}[] @@ -751,17 +807,17 @@ sector.planetaryTerminal.name = Planetarny Terminal Startowy sector.coastline.name = Linia Brzegowa sector.navalFortress.name = Morska Forteca -sector.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz jak najwięcej miedzi i ołowiu, tyle ile jest możliwe.\nPrzejdź do następnej strefy jak najszybciej. -sector.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki rozprzestrzeniły się. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nRozpocznij przygodę od produkucji prądu. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. -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.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz możliwie jak najwięcej miedzi i ołowiu.\nPrzejdź do następnej strefy jak najszybciej. +sector.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki się rozprzestrzeniały. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nZacznij od produkcji prądu. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. +sector.saltFlats.description = Na obrzeżach pustyni są Solne Równiny. Jest tu 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.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 eksplorację. Odkryj pozostawioną tu technologię. 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 pozwól im na wysłanie ich 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ę. Stwórz Nożyki. 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.desolateRift.description = Strefa wyjątkowo niebezpieczna. Obfita w zasoby ale mało miejsca. Wysokie ryzyko zniszczenia. Opuść tę strefę jak najszybciej.\nUwaga: Jak najefektywniej wykorzystaj długie odstępy między atakami wroga. -sector.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zredukowany 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ą używając jednostek takich jak Nożyk i Toczek. Zniszcz oba rdzenie. +sector.overgrowth.description = Obszar ten jest zarośnięty, bliżej źródła zarodników.\nWróg założył tu bazę. Stwórz "Noże". 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 ropy.\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 ropy. +sector.desolateRift.description = Strefa wyjątkowo niebezpieczna. Bogata w zasoby, ale mała. Wysokie ryzyko zniszczenia. Opuść tę strefę jak najszybciej.\nUwaga: Odstępy między falami są dosyć długie, co nie znaczy, że będzie prosto! +sector.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zredukowany do ruin.\n[lightgray]Zbadaj tor i jego zastosowania.\n\nOgromne zagrożenie ze strony wroga. +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ą używając jednostek takich jak "Nóż" czy "Pełzak". Zniszcz oba rdzenie. sector.biomassFacility.description = Miejsce powstania zarodników. Tutaj były badane i początkowo produkowane.\nZbadaj zawartą w nich 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 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. @@ -788,22 +844,22 @@ sector.crossroads.name = Rozdroże sector.karst.name = Kras sector.origin.name = Zalążek sector.onset.description = Samouczkowy sektor. Cel nie został jeszcze ustalony. Oczekuj dalszych informacji. -sector.aegis.description = Wróg jest chroniony przez tarcze. Prototyp Niszczyciela tacz znajduje się na tym sektorze.\n Znajdź go. Wypełnij go wolframem i zniszcz tarcze wrogów. +sector.aegis.description = Wróg jest chroniony przez tarcze. Prototyp Niszczyciela tarcz znajduje się na tym sektorze.\n Znajdź go. Wypełnij go wolframem i zniszcz tarcze wrogów. sector.lake.description = Jezioro żużlu znajdujące się na tym sektorze znacznie ogranicza rodzaje jednostek, jakich można użyć. Statki są jedyną sensowną opcją. Odkryj [accent] Fabrykator Statków[] i wytwórz [accent] Wymykacze[] najszybciej jak się da. -sector.intersect.description = Skany wskazują na możliwe ataki od razu po wylądowanium. Przeciwnik może zaatakować z wielu stron.\nPrzygotuj obronę i infrastrukturę tak szybko jak to możliwe.\n[accent]Mechy[] będą potrzebne aby poruszać się w tak trudnym terenie. +sector.intersect.description = Skany wskazują na możliwe ataki od razu po wylądowaniu. Przeciwnik może zaatakować z wielu stron.\nPrzygotuj obronę i infrastrukturę tak szybko jak to możliwe.\nAby poruszać się w tak trudny terenie potrzebne będą [accent]Mechy[]. sector.atlas.description = Ten sektor zawiera zróżnicowany teren i do skutecznego ataku będzie trzeba użyć różnych jednostek.\nKonieczne może być uzycie ulepszonych jednostek ze względu na silne bazy wroga.\nZbadaj [accent]Elektrolizer[] oraz [accent]Fabrykę Czołgów[]. sector.split.description = Minimalna obecność wroga w tym sektorze czyni go idealnym do testowania nowych technologii transportowych. -sector.basin.description = {Tymczasowe}\n\nPóki co to ostatni sektor. Potraktuj to jako wyzwanie - więcej sektorów zostanie dodana w późniejszych wersjach. -sector.marsh.description = This sector has an abundance of arkycite, but has limited vents.\nBuild [accent]Chemical Combustion Chambers[] to generate power. -sector.peaks.description = The mountainous terrain in this sector make most units useless. Flying units will be required.\nBe aware of enemy anti-air installations. It may be possible to disable some of these installations by targeting their supporting buildings. +sector.basin.description = W sektorze wykryto znaczną liczbę wrogich jednostek.\nWybuduj jednostki jak najszybciej i pozbądź sie wroga. +sector.marsh.description = Ten sektor jest bogaty w atrakycyt, ale ma mało gejzerów .\nZbuduj [accent]Chemiczną komorę spalania[] by generować prąd. +sector.peaks.description = Górzyste ukształtowanie terenu powoduje, że większość jednostek staje się bezużyteczna. Będziesz musiał wyprodukować latające jednostki.\nUważaj na wrogie działka przeciwlotnicze. Możesz unieszkodliwić niektóre działka, poprzez odcięcie im zasobów lub zniszczenie innych budynków. sector.ravine.description = W tym sektorze nie wykryto rdzeni wroga, jednakże jest on ważnym szlakiem transportowym dla wroga. Spodziewaj się różnorodnych przeciwników.\nWyprodukuj [accent]elektrum[]. Zbuduj działka [accent]Cios. -sector.caldera-erekir.description = Tymczasowy opis. -sector.stronghold.description = Trwają prace nad opisem. -sector.crevice.description = Trwają prace nad opisem. -sector.siege.description = Trwają prace nad opisem. -sector.crossroads.description = Trwają prace nad opisem. -sector.karst.description = Trwają prace nad opisem. -sector.origin.description = Trwają prace nad opisem. +sector.caldera-erekir.description = Zasoby wykryte w tym sektorze są rozproszone między kilka wysp.\nZbadaj i wprowadź transport oparty na dronach. +sector.stronghold.description = Wróg postanowił założyć ogromną bazę na tym sektorze. Chroni niewielkie złoża [accent]toru[]..\nWykorzystaj je do rozwoju jednostek i wieżyczek wyższego poziomu. +sector.crevice.description = Przeciwnik będzie zaciekle walczyć by przejąć twoją bazę w tym sektorze.\nWyprodukowanie [accent]karbidu[] i wybudowanie [accent]Generatora Pyrolizy[] może być wymagane do przetrwania. +sector.siege.description = Na tym sektorze znajdują się dwa równoległe kaniony, które zmuszą cię do walki na dwa fronty.\nZbadaj [accent]Cyjan[], aby móc wytwarzać dużo silniejsze czołgi.\nUwaga: Wykryto wrogie rakiety dalekiego. Pociski powinny zostać zestrzelone. +sector.crossroads.description = Wrogie bazy w tym sektorze zostały założone w zróżnicowanym terenie. Zbadaj różne jednostki by się przystosować.\nParę baz jest chronionych przez tarcze. Dowiedz się jak są zasilane i je zniszcz. +sector.karst.description = Ten sektor jest bogaty w surowce. Zostaniesz zaatakowany niemalże od razu\nPrzejmij kontrolę nad surowcami i zbadaj [accent]Włókno Fazowe[]. +sector.origin.description = Finalny sektor, gdzie wróg jest wszędzie.\nBardzo złe warunki do prowadzenia badań - skup się na niszczeniu wszystkich wrogich rdzeni. status.burning.name = Podpalenie status.freezing.name = Zamrożenie @@ -831,14 +887,14 @@ settings.game = Gra settings.sound = Dźwięk settings.graphics = Grafika settings.cleardata = Wyczyść Dane Gry... -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 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.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 zapisami, drzewem technologicznym, mapami, ustawieniami i przypisanymi klawiszami.\nKiedy naciśniesz 'OK', gra usunie wszystkie swoje dane i automatycznie się wyłączy. +settings.clearsaves.confirm = Czy jesteś pewien, że chcesz usunąć wszystkie zapisy? settings.clearsaves = Usuń Zapisy -settings.clearresearch = Usuń Postęp Drzewa Tech. -settings.clearresearch.confirm = Jesteś pewny że chcesz usunąć cały postęp drzewa technologicznego? +settings.clearresearch = Usuń Postęp Drzewa Technologicznego +settings.clearresearch.confirm = Czy jesteś pewny, że chcesz usunąć cały postęp drzewa technologicznego? settings.clearcampaignsaves = Usuń Zapisy Kampanii -settings.clearcampaignsaves.confirm = Jesteś pewny że chcesz usunąć wszystkie zapisy kampanii? +settings.clearcampaignsaves.confirm = Czy jesteś pewny, że chcesz usunąć wszystkie zapisy kampanii? paused = [accent]< Wstrzymano > clear = Wyczyść banned = [scarlet]Zbanowano @@ -888,7 +944,7 @@ stat.repairspeed = Prędkość napraw stat.weapons = Bronie stat.bullet = Pocisk stat.moduletier = Stopień Modułu -stat.unittype = Unit Type +stat.unittype = Typ jednostki stat.speedincrease = Zwiększenie prędkości stat.range = Zasięg stat.drilltier = Co może wykopać @@ -925,6 +981,7 @@ stat.abilities = Umiejętności stat.canboost = Może przyspieszyć stat.flying = Może latać stat.ammouse = Zużycie Amunicji +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Mnożnik Obrażeń stat.healthmultiplier = Mnożnik Zdrowia stat.speedmultiplier = Mnożnik Prędkości @@ -935,14 +992,47 @@ stat.immunities = Odporności stat.healing = Leczy ability.forcefield = Pole Siłowe +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Pole Naprawy +ability.repairfield.description = Repairs nearby units ability.statusfield = Pole Statusu -ability.unitspawn = Fabryka Jednostek {0} +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Fabryka Jednostek +ability.unitspawn.description = Constructs units ability.shieldregenfield = Strefa Tarczy Regenerującej +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Pioruny Poruszania -ability.shieldarc = Shield Arc -ability.suppressionfield = Regen Suppression Field -ability.energyfield = Pole Energii: [accent]{0}[] obrażenia ~ [accent]{1}[] bloki / [accent]{2}[] cele +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting +ability.shieldarc = Łuk Tarczy +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets +ability.suppressionfield = Pole Tłumienia Regeneracji +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Pole Energii +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneracja +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Dozwolone jest tylko przeniesienie z rdzenia bar.drilltierreq = Wymagane Lepsze Wiertło @@ -982,8 +1072,9 @@ bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[ligh bullet.incendiary = [stat]zapalający bullet.homing = [stat]naprowadzający bullet.armorpierce = [stat]przebijający pancerz -bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles -bullet.interval = [stat]{0}/sec[lightgray] interval bullets: +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit +bullet.suppression = [stat]{0} sec[lightgray] wyłączenie naprawy ~ [stat]{1}[lightgray] kratki +bullet.interval = [stat]{0}/sec[lightgray] częstotliwość strzału: bullet.frags = [stat]{0}[lightgray]x pociski odłamkowe: bullet.lightning = [stat]{0}[lightgray]x błyskawice ~ [stat]{1}[lightgray] Obrażenia bullet.buildingdamage = [stat]{0}%[lightgray] obrażeń budynkom @@ -1017,6 +1108,7 @@ unit.items = przedmioty unit.thousands = tys. unit.millions = mln. unit.billions = mld. +unit.shots = shots unit.pershot = /strzał category.purpose = Opis category.general = Główne @@ -1037,6 +1129,7 @@ setting.backgroundpause.name = Wstrzymaj w tle setting.buildautopause.name = Automatycznie zatrzymaj budowanie setting.doubletapmine.name = Kliknij podwójnie, aby wydobywać setting.commandmodehold.name = Przytrzymaj w Trybie Dowodzenia +setting.distinctcontrolgroups.name = Ograniczaj jedną grupę kontrolną na jednostkę setting.modcrashdisable.name = Wyłącz mody w przypadku awarii podczas uruchamiania setting.animatedwater.name = Animowana woda setting.animatedshields.name = Animowana tarcza @@ -1083,13 +1176,14 @@ setting.position.name = Pokazuj położenie gracza setting.mouseposition.name = Pokazuj położenie myszki setting.musicvol.name = Głośność muzyki setting.atmosphere.name = Pokazuj atmosferę planety +setting.drawlight.name = Rysuj Cienie/Światła setting.ambientvol.name = Głośność otoczenia setting.mutemusic.name = Wycisz muzykę setting.sfxvol.name = Głośność dźwięków setting.mutesound.name = Wycisz dźwięki setting.crashreport.name = Wysyłaj anonimowo dane o crashu gry setting.savecreate.name = Automatyczne tworzenie zapisów -setting.publichost.name = Widoczność gry publicznej +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Limit graczy setting.chatopacity.name = Przezroczystość czatu setting.lasersopacity.name = Przezroczystość laserów zasilających @@ -1097,8 +1191,10 @@ setting.bridgeopacity.name = Przezroczystość mostów setting.playerchat.name = Wyświetlaj dymek czatu w grze setting.showweather.name = Pokaż pogodę setting.hidedisplays.name = Ukryj wyświetlacze logiczne -steam.friendsonly = Friends Only -steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. +setting.macnotch.name = Dostosuj interfejs do wyświetlania wycięcia ekranu +setting.macnotch.description = Aby zastosować zmiany, wymagane jest ponowne uruchomienie +steam.friendsonly = Tylko Znajomi +steam.friendsonly.tooltip = Czy tylko Znajomi ze Steam będą mogli dołączyć do twojej gry?\nOdznaczenie tego okienka ustawi twoją grę na publiczną - każdy może dołączyć. 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.cancel = Anuluj i wyjdź @@ -1107,6 +1203,7 @@ keybind.title = Zmień keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w wersji mobilnej. Tylko podstawowe poruszanie się jest wspierane. category.general.name = Ogólne category.view.name = Wyświetl +category.command.name = Zarządzanie Jednostką category.multiplayer.name = Wielu graczy category.blocks.name = Wybierz Blok placement.blockselectkeys = \n[lightgray]Klawisz: [{0}, @@ -1124,6 +1221,24 @@ keybind.mouse_move.name = Podążaj Za Myszą keybind.pan.name = Widok Panoramiczny keybind.boost.name = Przyspiesz keybind.command_mode.name = Tryb Komend +keybind.command_queue.name = Kolejka Rozkazów Jednostki +keybind.create_control_group.name = Stwórz Grupę Kontroli +keybind.cancel_orders.name = Anuluj Rozkazy +keybind.unit_stance_shoot.name = Strzel +keybind.unit_stance_hold_fire.name = Wstrzymaj ogień +keybind.unit_stance_pursue_target.name = Goń Cel +keybind.unit_stance_patrol.name = Patroluj +keybind.unit_stance_ram.name = Taranuj +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Odbuduj Region keybind.schematic_select.name = Wybierz Region keybind.schematic_menu.name = Menu Schematów @@ -1187,20 +1302,28 @@ mode.pvp.description = Walcz przeciwko innym graczom.\n[gray]Wymaga co najmniej mode.attack.name = Atak mode.attack.description = Celem jest zniszczenie bazy przeciwnika.\n[gray]Wymaga czerwonego rdzenia na mapie, aby móc grać w tym trybie. mode.custom = Własny Tryb +rules.invaliddata = Niepoprawne dane ze schowka. +rules.hidebannedblocks = Ukryj zabronione bloki rules.infiniteresources = Nieskończone Zasoby rules.onlydepositcore = Dozwól tylko przenoszenie z rdzenia +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Eksplozje Reaktorów rules.coreincinerates = Rdzeń Spala Nadmiarowe Przedmioty rules.disableworldprocessors = Wyłącz Procesor Świata rules.schematic = Zezwalaj na schematy rules.wavetimer = Zegar Fal rules.wavesending = Wysyłanie Fal +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Fale +rules.airUseSpawns = Air units use spawn points rules.attack = Tryb Ataku -rules.rtsai = RTS SI +rules.buildai = AI Budowania Baz +rules.buildaitier = Poziom Budowania AI +rules.rtsai = RTS AI rules.rtsminsquadsize = Minimalny Rozmiar Składu -rules.rtsmaxsquadsize = Max Squad Size +rules.rtsmaxsquadsize = Maksymalny Rozmiar Składu rules.rtsminattackweight = Minimalna Waga Ataku rules.cleanupdeadteams = Usuń Budynki Pokonanej Drużyny (PvP) rules.corecapture = Przejmij Zniszczony Rdzeń @@ -1210,12 +1333,13 @@ rules.enemyCheat = Nieskończone Zasoby SI (wroga) rules.blockhealthmultiplier = Mnożnik Życia Bloków rules.blockdamagemultiplier = Mnożnik Uszkodzeń Bloków rules.unitbuildspeedmultiplier = Mnożnik Prędkości Tworzenia Jednostek -rules.unitcostmultiplier = Unit Cost Multiplier +rules.unitcostmultiplier = Mnożnik Kosztu Jednostek rules.unithealthmultiplier = Mnożnik Życia Jednostek rules.unitdamagemultiplier = Mnożnik Obrażeń jednostek -rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier -rules.solarmultiplier = Solar Power Multiplier +rules.unitcrashdamagemultiplier = Obrażenia Zadawane Po Zniszczeniu +rules.solarmultiplier = Mnożnik Mocy Paneli Słonecznych rules.unitcapvariable = Rdzenie mają wpływ na limit jednostek +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Podstawowy limit jednostek rules.limitarea = Limit Obszaru Mapy rules.enemycorebuildradius = Zasięg Blokady Budowy Przy Rdzeniu Wroga:[lightgray] (kratki) @@ -1225,7 +1349,7 @@ rules.buildcostmultiplier = Mnożnik Kosztów Budowania rules.buildspeedmultiplier = Mnożnik Prędkości Budowania rules.deconstructrefundmultiplier = Mnożnik Zwrotu Dekonstrukcji rules.waitForWaveToEnd = Fale Czekają Na Przeciwników -rules.wavelimit = Map Ends After Wave +rules.wavelimit = Mapa Konczy się Po Fali rules.dropzoneradius = Zasięg Strefy Zrzutu:[lightgray] (kratki) rules.unitammo = Jednostki Potrzebują Amunicji rules.enemyteam = Drużyna Wroga @@ -1248,6 +1372,8 @@ rules.weather = Pogoda rules.weather.frequency = Częstotliwość: rules.weather.always = Zawsze rules.weather.duration = Czas trwania: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Przedmioty content.liquid.name = Płyny @@ -1278,7 +1404,7 @@ item.fissile-matter.name = Materiał Roszczepialny item.beryllium.name = Beryl item.tungsten.name = Wolfram item.oxide.name = Tlenek Berylu -item.carbide.name = Węglik +item.carbide.name = Karbid item.dormant-cyst.name = Drzemiąca Torbiel liquid.water.name = Woda liquid.slag.name = Żużel @@ -1475,6 +1601,7 @@ block.inverted-sorter.name = Odwrotny Sortownik block.message.name = Wiadomość block.reinforced-message.name = Wzmocniona Wiadomość block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Rozświetlacz block.overflow-gate.name = Brama Przepełnieniowa block.underflow-gate.name = Brama Niedomiaru @@ -1571,7 +1698,7 @@ block.payload-router.name = Rozdzielacz Ładunku block.duct.name = Rura Próżniowa block.duct-router.name = Rozdzielacz Próżniowy block.duct-bridge.name = Most Próżniowy -block.large-payload-mass-driver.name = Large Payload Mass Driver +block.large-payload-mass-driver.name = Duża Katapulta Ładunku block.payload-void.name = Próżnia Ładunku block.payload-source.name = Źródło Ładunku block.disassembler.name = Rozkładacz @@ -1655,7 +1782,7 @@ block.phase-heater.name = Podgrzewacz Fazowy block.heat-redirector.name = Kierownik Ciepła block.heat-router.name = Rozdzielacz Ciepła block.slag-incinerator.name = Spalarnia Żużla -block.carbide-crucible.name = Tygiel Węglowy +block.carbide-crucible.name = Tygiel Karbidu block.slag-centrifuge.name = Wirówka Żużlu block.surge-crucible.name = Tygiel Elektrum block.cyanogen-synthesizer.name = Syntetyzer Cyjanu @@ -1666,8 +1793,8 @@ block.beryllium-wall-large.name = Duży Berylowy Mur block.tungsten-wall.name = Wolframowy Mur block.tungsten-wall-large.name = Duży Wolframowy Mur block.blast-door.name = Dotykowe Wrota -block.carbide-wall.name = Węglowy Mur -block.carbide-wall-large.name = Duży Węglowy Mur +block.carbide-wall.name = Karbidowy Mur +block.carbide-wall-large.name = Duży Karbidowy Mur block.reinforced-surge-wall.name = Wzmocniony Elektrumowy Mur block.reinforced-surge-wall-large.name = Duży Wzmocniony Elektrumowy Mur block.shielded-wall.name = Osłonowy Mur @@ -1716,7 +1843,6 @@ block.disperse.name = Burza block.afflict.name = Cios block.lustre.name = Błysk block.scathe.name = Zamęt -block.fabricator.name = Fabrykator block.tank-refabricator.name = Konstruktor Czołgów block.mech-refabricator.name = Konstruktor Mechów block.ship-refabricator.name = Konstruktor Statków @@ -1735,7 +1861,7 @@ block.mech-fabricator.name = Fabryka Mechów block.ship-fabricator.name = Fabryka Statków block.prime-refabricator.name = Główny Refabrykator block.unit-repair-tower.name = Wieża Napraw -block.diffuse.name = Dystruptor +block.diffuse.name = Rozproszenie block.basic-assembler-module.name = Podstawowy Moduł Montażowy block.smite.name = Karciciel block.malign.name = Malign @@ -1764,28 +1890,28 @@ hint.desktopShoot = Kliknij [accent][[Lewy przycisk myszy][] by strzelać. hint.depositItems = By przenosić przedmioty, przeciągij je ze swojego statku do rdzenia. hint.respawn = By się odrodzić jako statek, kliknij [accent][[V][]. hint.respawn.mobile = Przełączyłeś się na inną jednostkę/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.breaking = Użyj [accent][Prawego przycisku myszy][] i przeciągnij by zniszczyć bloki. hint.breaking.mobile = Aktywuj \ue817 [accent]ikonę młota[] w dolnym prawym rogu by zniszczyć bloki.\n\nPrzytrzymaj swój palec i przeciągnij by wybrać wiele bloków do zniszczenia. hint.blockInfo = Wyświetl informacje o bloku, wybierając go w [accent]menu budowania[], a następnie wybierając [accent][[?][] przycisk po prawej. hint.derelict = [accent]Szare[] struktury są uszkodzonymi pozostałościami starych baz, które już nie funkcjonują.\n\nTe struktury można [accent]zdekonstruować[] dla surowców. -hint.research = Klikij przycisk \ue875 [accent]Badań[] by odkrywać nowe technologie. -hint.research.mobile = Użyj przycisku \ue875 [accent]Badań[] w \ue88c [accent]Menu[] by odkrywać nowe technologie. +hint.research = Klikij przycisk \ue875 [accent]Badań[], 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.mobile = [accent][Kliknij dwukrotnie[] by kontrolować sojusznicze jednostki i działka. hint.unitSelectControl = Żeby kontrolować jednostki wejdź w [accent]tryb komend[] trzymając [accent]Lewy Shift.[]\nW trybie komend, kliknij i przeciągnij, żeby wybrać jednostki. Kliknij [accent]Prawym Przyciskiem Myszy[], żeby wyznaczyc jednostkom cel. -hint.unitSelectControl.mobile = To control units, enter [accent]command mode[] by pressing the [accent]command[] button in the bottom left.\nWhile in command mode, long-press and drag to select units. Tap a location or target to command units there. +hint.unitSelectControl.mobile = Aby kontrolować jednostki, wejdź w [accent]tryb dowodzenia[] poprzez naciśnięcie przcisku [accent]dowodzenia[] w lewym dolnym rogu.\nPodczas gdy jesteś w trybie dowodzenia, naciśnij długo i przeciągnij by wybrać jednostki. Stuknij w miejsce lub cel aby je tam wysłać. 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]Mapę[] w \ue88c [accent]Menu[]. hint.schematicSelect = Przytrzymaj [accent][[F][] by kopiować i wkleić bloki.\n\n[accent][[Środkowy przycisk myszy][] kopiuje pojedynczy blok. -hint.rebuildSelect = Hold [accent][[B][] and drag to select destroyed block plans.\nThis will rebuild them automatically. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect = Przytrzymaj [accent][[B][] i przeciągnij, by zaznaczyć plany zniszczonych bloków.\nTo naprawi je automatycznie. +hint.rebuildSelect.mobile = wybierz \ue874 przycisk kopiowania, wtedy dotnij \ue80f przycisk odbudowy i przeciągnij by zaznaczyć plany zniszczonych bloków.\nTo naprawi je automatycznie. hint.conveyorPathfind = Przeciągij i przytrzymaj [accent][[Lewy CTRL][] w trakcie budowania przenośników aby wygenerować ścieżkę. hint.conveyorPathfind.mobile = Włącz \ue844 [accent]tryb ukośny[] i przeciągnij w trakcie budowania przenośników aby wygenerować ścieżkę. -hint.boost = Przytrzymaj [accent][[Lewy Shift][] by przelecieć ponad przeszkody.\n\nTylko część jednostek lądowych może to zrobić. -hint.payloadPickup = Kliknij [accent][[[] by podnieść małe bloki lub jednostki. +hint.boost = Przytrzymaj [accent][[Lewy Shift][], by przelecieć ponad przeszkody.\n\nTylko część jednostek lądowych może to zrobić. +hint.payloadPickup = Kliknij [accent][[[], by podnieść małe bloki lub jednostki. hint.payloadPickup.mobile = [accent]Kliknij i przytrzymaj[] mały blok by go podnieść. -hint.payloadDrop = Kliknij [accent]][] by opuścić podniesiony towar. +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.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ąc \uf87f [accent]Węzły Prądu[]. @@ -1800,7 +1926,7 @@ gz.mine = Przemieść się w pobliże \uf8c4 [accent]rudy miedzi[] na ziemi i kl gz.mine.mobile = Przemieść się w pobliże \uf8c4 [accent]rudy miedzi[] na ziemi i dotknij, aby zacząć kopać. gz.research = Otwórz \ue875 drzewko technologiczne.\nZbadaj \uf870 [accent]Mechaniczne Wiertło[], Następnie wybierz je z menu w prawym dolnym rogu.\nKliknij na złoże miedzi, aby postawić na nim wiertło. gz.research.mobile = Otwórz \ue875 drzewko technologiczne.\nZbadaj \uf870 [accent]Mechaniczne Wiertło[], Następnie wybierz je z menu w prawym dolnym rogu.\nDotknij złoża miedzi aby postawić na nim wiertło.\n\nKliknij w \ue800 [accent]fajkę[] u dołu ekranu z prawej aby potwierdzić. -gz.conveyors = Zbadaj i postaw \uf896 [accent]przenośniki[], aby przemieścić wykopane surowce\nz wierteł do rdzenia.\n\nNaciśnij i przeciągnij aby postawic wiele przenośników naraz.\n[accent]Użyj kółka myszki[] żeby obrócić. +gz.conveyors = Zbadaj i postaw \uf896 [accent]przenośniki[], aby przemieścić wykopane surowce\nz wierteł do rdzenia.\n\nNaciśnij i przeciągnij aby postawic wiele przenośników naraz.\n[accent]Użyj kółka myszki[], żeby obrócić. gz.conveyors.mobile = Zbadaj i postaw \uf896 [accent]przenośniki[], aby przemieścić wykopane surowce\nz wierteł do rdzenia.\n\nPrzytrzymaj przez sekundę i przeciągnij żeby postawić wiele przenośników naraz. gz.drills = Kontynuuj kopanie.\nStawiaj więcej Mechanicznych Wierteł.\nWydobądź 100 miedzi. gz.lead = \uf837 [accent]Ołów[] jest kolejnym często używanym surowcem.\nPostaw wiertła kopiące ołów. @@ -1809,7 +1935,7 @@ gz.turrets = Zbadaj i postaw 2 \uf861 [accent]Podwójne Działka[] do obrony rdz gz.duoammo = Dostarcz [accent]miedź[], do podwójnych działek przy użyciu przenośników. gz.walls = [accent]Mury[] mogą zapobiec uszkodzeniu budynków.\nPostaw \uf8ae [accent]miedziane mury[] wokół działek. gz.defend = Nadchodzi wróg, przygotuj się do obrony. -gz.aa = Latające jednostki trudno zestrzelić standardowymi działkami.\n\uf860 [accent]Flaki[] zapewniają świetną powietrzną obronę, ale używają \uf837 [accent]ołowiu[] jako amunicji. +gz.aa = Latające jednostki trudno zestrzelić standardowymi działkami.\n\uf860 [accent]Flaki[] zapewniają świetną powietrzną obronę, ale używają \uf837 [accent]ołowiu[] jako amunicji. gz.scatterammo = Dostarcz [accent]ołowiu[]do Flaka używając przenośników. gz.supplyturret = [accent]Załaduj Działko gz.zone1 = To jest strefa zrzutu wroga. @@ -1818,26 +1944,30 @@ gz.zone3 = Teraz zacznie się fala.\nPrzygotuj się. gz.finish = Wybuduj więcej działek, wykop więcej surowców\ni obroń się przed wszystkimi falami żeby [accent]przejąć sektor[]. onset.mine = Naćiśnij żeby wydobywać \uf748 [accent]beryl[] ze ścian.\n\nUżyj [accent][[WASD] aby się poruszać. onset.mine.mobile = Kliknij żeby wydobywać \uf748 [accent]beryl[] ze ścian. -onset.research = Otwórz\ue875 drzewo technologiczne.\nZbadj, a następnie postaw \uf73e [accent]turbinę parową[] na gejzerze.\nTo zacznie generować [accent]prąd[]. +onset.research = Otwórz\ue875 drzewo technologiczne.\nZbadaj, a następnie postaw \uf73e [accent]turbinę parową[] na gejzerze.\nTo zacznie generować [accent]prąd[]. onset.bore = Zbadaj i postaw \uf741 [accent]plazmowe wiertło[].\nPlazmowe wiertło automatycznie wydobywa surowce ze ścian. onset.power = Żeby [accent]zasilić[] plazmowe wiertło, zbadaj i postaw \uf73d [accent]węzeł promieni[].\nPołącz turbinę parową z wiertłem plazmowym. -onset.ducts = Zbadaj i postaw \uf799 [accent]rury próżniowe[] żeby móc przemieścić surowce z wiertła plazmowego do rdzenia.\nKliknij i przeciągnij żeby postawić wiele rur próżniowych naraz.\n[accent]Użyj kółka myszki[] aby obrócić. -onset.ducts.mobile = Zbadaj i postaw \uf799 [accent]rury próżniowe[] żeby móc przemieścić surowce z wiertła plazmowego do rdzenia.\n\nPrzytrzymaj sekundę i przeciągnij, aby postawic wiele rur próżniowych naraz. +onset.ducts = Zbadaj i postaw \uf799 [accent]rury próżniowe[], żeby móc przemieścić surowce z wiertła plazmowego do rdzenia.\nKliknij i przeciągnij żeby postawić wiele rur próżniowych naraz.\n[accent]Użyj kółka myszki[] aby obrócić. +onset.ducts.mobile = Zbadaj i postaw \uf799 [accent]rury próżniowe[], żeby móc przemieścić surowce z wiertła plazmowego do rdzenia.\n\nPrzytrzymaj sekundę i przeciągnij, aby postawic wiele rur próżniowych naraz. onset.moremine = Kontynuuj kopanie.\nStawiaj więcej Wierteł Plazmowych i używaj węzłów promieni oraz rur próżniowych.\nWykop 200 berylu. onset.graphite = Bardziej skomplikowane bloki wymagają \uf835 [accent]grafitu[].\nUstaw wiertła plazmowe tak, żeby wydobywały grafit. onset.research2 = Zacznij badać [accent]fabryki[].\nZbadaj \uf74d [accent]rozkruszacz klifów[] i \uf779 [accent]krzemowy piec łukowy[]. -onset.arcfurnace = Krzemowy piec łukowy potrzebuje \uf834 [accent]piasku[] i \uf835 [accent]grafitu[] żeby produkować \uf82f [accent]krzem[].\n[accent]Prąt[] także jest potrzebny. +onset.arcfurnace = Krzemowy piec łukowy potrzebuje \uf834 [accent]piasku[] i \uf835 [accent]grafitu[], żeby produkować \uf82f [accent]krzem[].\n[accent]Prąt[] także jest potrzebny. onset.crusher = Użyj \uf74d [accent]rozkuruszaczy klifów[], aby wydobyć piasek. -onset.fabricator = Używaj [accent]jednostek[] żeby eksplorować mapę, bron budynki i atakuj wrogów. Zbadaj i postaw \uf6a2 [accent]fabrykę czołgów[]. -onset.makeunit = Wyprodkuj jednostkę.\nUżyj przycisku "?" żeby zobaczyć wymagania potrzebne do wybudowania obecnie wybranej fabryki. +onset.fabricator = Używaj [accent]jednostek[], żeby eksplorować mapę, bron budynki i atakuj wrogów. Zbadaj i postaw \uf6a2 [accent]fabrykę czołgów[]. +onset.makeunit = Wyprodkuj jednostkę.\nUżyj przycisku "?", żeby zobaczyć wymagania potrzebne do wybudowania obecnie wybranej fabryki. onset.turrets = Jednostki są efektywne, ale [accent]działka[] zapewniają lepszą efektywność jeśli chodzi o obronę.\nPostaw \uf6eb [accent]Wyłom[].\nDziałka potrzebują \uf748 [accent]amuncji[]. onset.turretammo = Dostarcz [accent]beryl[] do działka. onset.walls = [accent]Mury[] chronią budynki przed obrażeniami.\nPostaw parę \uf6ee [accent]berylowych murów[] naokoło działka. onset.enemies = Nadchodzi wróg, przygotuj obronę. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = Wróg jest wrażliwy na atak. Przeprowadź kontratak. onset.cores = Nowe rdzenie mogą być postawione tylko w [accent]strefach rdzenia[].\nNowy rdzeń działa tak samo jak każdy poprzedni. Rdzenie współdzielą surowce.\nPostaw nowy \uf725 rdzeń. onset.detect = Wróg wykryje cię za 2 minuty.\nPrzygotuj obronę, wydobywaj surowce i je produkuj. -split.pickup = Niektóre bloki mogą zostać podniesione przez jednostkę rdzeniową.\nPodnieś ten [accent]kontener[] i postaw go w [accent]punkcie załadunkowym[].\n(Domyślne klawisze to [ i ], użyj ich żeby podnieść lub upuścić blok.) +onset.commandmode = Przytrzymaj [accent]shift[] aby wejść do [accent]trybu poleceń[].\n[accent]Kliknij lewy przycisk myszy i przeciągnij[] aby wybrac jednostki.\n[accent]Kliknij prawy przycisk myszy[] aby rozkazać jednostkom się przemieścić lub zaatakować. +onset.commandmode.mobile = Naciśnij [accent]przycisk poleceń[] aby wejść do [accent]trybu poleceń[].\nPrzytrzymaj palec, a następnie [accent]przeciągnij[] aby zaznaczyć jednostki.\n[accent]Kliknij[] aby rozkazać jednostkom się przemieścić lub zaatakować. +aegis.tungsten = Wolfram może być wykopany używając [accent]wiertła udeżeniowego[].\nTa struktura wymaga [accent]wody[] i [accent]zasilania[]. +split.pickup = Niektóre bloki mogą zostać podniesione przez jednostkę rdzeniową.\nPodnieś ten [accent]kontener[] i postaw go w [accent]punkcie załadunkowym[].\n(Domyślne klawisze to [ i ], użyj ich, żeby podnieść lub upuścić blok.) split.pickup.mobile = iektóre bloki mogą zostać podniesione przez jednostkę rdzeniową.\nPodnieś ten [accent]kontener[] i postaw go w [accent]punkcie załadunkowym[].\n(Żeby podnieść lub upuścić jakiś blok, przytrzymaj go przez chwilę.) split.acquire = Żeby wybudować jednostki musisz pozyskać trochę wolframu. split.build = Jednostki trzeba przetransportować na drugą stronę.\nPosaw dwie [accent]Katapulty Ładunku[] po każdej ze stron.\nPołącz je klikając najpierw jedną, a nastepnie drugą. @@ -1846,7 +1976,7 @@ split.container = Podobnie jak kontenery jednostki także da się transportować item.copper.description = Używany we wszystkich rodzajach budowli i uzbrojeń. item.copper.details = Miedź. Niesamowicie obfity metal na Serpulo. Strukturalnie słaby, chyba że zostanie wzmocniony. item.lead.description = Używany w transporcie płynów i strukturach elektrycznych. -item.lead.details = Gęsty, obojętny metal używany w bateriach oraz amunicji fragmentacyjnej.\n\n[lightgray]Uwaga: Prawdopodobnie toksyczny dla biologicznych form życia. Nie żeby zostało ich tu wiele...[] +item.lead.details = Gęsty, obojętny metal używany w bateriach oraz amunicji fragmentacyjnej.\n\n[lightgray]Uwaga: Prawdopodobnie toksyczny dla biologicznych form życia. Nie, żeby zostało ich tu wiele...[] item.metaglass.description = Używane w transporcie i przechowywaniu płynów. item.graphite.description = Wykorzystywany w urządzeniach elektrycznych oraz amunicji. item.sand.description = Zwykły materiał używany pospolicie w przepalaniu, stopach i jako topnik.\n\n[lightgray]Uwaga: Dostanie piaskiem po oczach nie jest przyjemne.[] @@ -1858,8 +1988,8 @@ item.scrap.description = Używany w Przetapiaczach i Rozkruszaczach w celu rafin item.scrap.details = Pozostałości po jednostkach oraz strukturach. Mieszanka wielu surowców. Podobno można z niego zrobić każdy inny surowiec. item.silicon.description = Używany praktycznie wszędzie, od amunicji samonaprowadzającej przez elektronikę aż po konstrukcję jednostek i broni. item.plastanium.description = Lekki i plastyczny materiał używany w amunicji odłamkowej i samolotach. -item.phase-fabric.description = Używane w zaawansowanej elektronice i strukturach przyspieszających i samonaprawiających.\n\n[lightgray]Niesamowicie lekkie włókna torowo-kwarcowe.[] -item.surge-alloy.description = Niesamowicie ciężki stop używany w najsilniejszym uzbrojeniu oraz reaktywnych strukturach obronnych. +item.phase-fabric.description = Używane w zaawansowanej elektronice, strukturach przyspieszających i samonaprawiających.\n\n[lightgray]Niesamowicie lekkie włókna torowo-kwarcowe.[] +item.surge-alloy.description = Niesamowicie ciężki stop używany w najsilniejszym uzbrojeniu oraz reaktywnych strukturach obronnych. item.spore-pod.description = Syntetyczne zarodniki, które mogą być przekształcone na ropę, materiały wybuchowe i paliwo. item.spore-pod.details = Prawdopodobnie syntetyczna forma życia.\nUwaga: Emitują gazy toksyczne dla innych organizmów biologicznych. Wyjątkowo inwazyjne. W pewnych warunkach silnie łatwopalne. item.blast-compound.description = Używany w bombach i amunicji wybuchowej.\n\n[lightgray]Uwaga: Powstaje podczas syntezy z zarodników i innych lotnych substancji. Używanie go jako materiał energetyczny jest niezalecane.[] @@ -1871,7 +2001,7 @@ item.carbide.description = Używany w zaawansowanych strukturach, ciężkich jed 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.\n\nMoże zostać rozdzielony na jego metale składowe lub wystrzelony we wrogie jednostki. -liquid.oil.description = Używany w do produkcji złożonych materiałów.\n\nMoże zostać przetworzony na węgiel, lub wystrzelony we wrogów przez wieżyczkę. +liquid.oil.description = Używany w do produkcji złożonych materiałów.\n\nMoże zostać przetworzony na węgiel lub wystrzelony we wrogów przez wieżyczkę. liquid.cryofluid.description = Obojętna, niekorozyjna ciecz utworzona z wody i tytanu.\n\nUżywana jako chłodziwo w reaktorach, rekonstruktorach i wieżyczkach. liquid.arkycite.description = Stosowany w reakcjach chemicznych. Używany do wytwarzania energii i syntezy materiałów. liquid.ozone.description = Stosowany jako utleniacz w produkcji materiałów oraz jako paliwo. Średnio wybuchowy. @@ -1879,14 +2009,14 @@ liquid.hydrogen.description = Używany do wydobywania surowców, produkcji jedno liquid.cyanogen.description = Używany jako amunicja oraz materiał do produkcji zaawansowanych jednostek czy też jako składnik różnych reakcji w zaawansowanych strukturach. Bardzo łatwopalny. liquid.nitrogen.description = Używany do wydobycia surowców, tworzenia gazów oraz produkcji jednostek. Obojętny. liquid.neoplasm.description = Niebezpieczny biologiczny odpad powstający poprzez działanie reaktora neoplazmowego. Łatwo się rozprzestrzenia na bloki zawierające wodę niszcząc je. Lepki. -liquid.neoplasm.details = Neoplazma. Niekontrolowana masa szybko dzielących się komórek syntetycznych o konsystencji szlamu. Odporna na ciepło. Niesamowicie niebezpieczna dla wszelkich struktur zawierających wodę.\n\nZbyt skomplikowana i niestabilna do standardowej analizy. Potencjalne zastosowania póki co nie znane. Zaleca się spalanie w jeziorach żużlowych. +liquid.neoplasm.details = Neoplazma. Niekontrolowana masa szybko dzielących się komórek syntetycznych o konsystencji szlamu. Odporna na ciepło. Niesamowicie niebezpieczna dla wszelkich struktur zawierających wodę.\n\nZbyt skomplikowana i niestabilna do standardowej analizy. Potencjalne zastosowania, póki co nieznane. Zaleca się spalanie w jeziorach żużlowych. block.derelict = \uf77e [lightgray]Wrak block.armored-conveyor.description = Przesyła przedmioty z taką samą szybkością co Tytanowy Przenośnik, ale jest bardziej odporny. Wejściami bocznymi mogą być tylko inne przenośniki. block.illuminator.description = Małe, kompaktowe i konfigurowalne źródło światła. Wymaga energii do funkcjonowania. block.message.description = Przechowuje wiadomość. Wykorzystywane do komunikacji pomiędzy sojusznikami. -block.reinforced-message.description = Stores a message for communication between allies. -block.world-message.description = A message block for use in mapmaking. Cannot be destroyed. +block.reinforced-message.description = Przechowuje wiadomość. Wykorzystywane do komunikacji pomiędzy sojusznikami. +block.world-message.description = Wiadomość używana przez twórców map. Niezniszczalna. block.graphite-press.description = Kompresuje kawałki węgla w czyste blaszki grafitu. block.multi-press.description = Ulepszona wersja prasy grafitowej. Dodanie wody wytwarza grafit znacznie szybciej i efektywniej. block.silicon-smelter.description = Redukuje piasek za pomocą wysoce czystego węgla w celu wytworzenia krzemu. @@ -1898,10 +2028,10 @@ block.cryofluid-mixer.description = Łączy wodę i tytan w lodociecz, która je block.blast-mixer.description = Kruszy i miesza skupiska zarodników z piratianem, tworząc wybuchowy związek. block.pyratite-mixer.description = Miesza węgiel, ołów i piasek tworząc bardzo łatwopalny piratian. block.melter.description = Przetapia złom na żużel do dalszego przetwarzania lub użycia w wieżyczkach. -block.separator.description = Oddziela użyteczne materiały z mieszaniny jaką jest żużel. +block.separator.description = Oddziela użyteczne materiały z mieszaniny, jaką jest żużel. block.spore-press.description = Kompresuje kapsuły zarodników pod ogromnym ciśnieniem tworząc olej. block.pulverizer.description = Mieli złom w drobny piasek. Przydatne, gdy brakuje naturalnego piasku. -block.coal-centrifuge.description = Zestala olej w kawałki węgla. +block.coal-centrifuge.description = Zestala ropę w kawałki węgla. 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 piaskownicy. block.power-source.description = Wydziela prąd w nieskończoność. Dostępny tylko w trybie piaskownicy. @@ -1923,10 +2053,10 @@ block.phase-wall.description = Mur pokryty specjalną mieszanką opartą o Włó block.phase-wall-large.description = Mur pokryty specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków.\nObejmuje wiele kratek. block.surge-wall.description = Ekstremalnie wytrzymały blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego. block.surge-wall-large.description = Ekstremalnie wytrzymały blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego.\nObejmuje wiele kratek. -block.door.description = Małe drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą strzelać i się przemieszczać przez nie. -block.door-large.description = Duże drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą strzelać i się przemieszczać przez nie.\nObejmuje wiele kratek. -block.mender.description = Co jakiś czas naprawia bloki w zasięgu. Utrzymuje struktury obronne w dobrym stanie.\nOpcjonalnie używa silikonu do zwiększenia zasięgu i szybkości naprawy. -block.mend-projector.description = Ulepszona wersja Naprawiacza. Naprawia bloki w jego otoczeniu.\nMoże wykorzystywać włókno fazowe, aby zwiększyć efektywność budowli. +block.door.description = Małe drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą przez nie strzelać oraz nimi przechodzić. +block.door-large.description = Duże drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą przez nie strzelać oraz nimi przechodzić.\nObejmują wiele kratek. +block.mender.description = Co jakiś czas naprawia bloki w zasięgu. Utrzymuje struktury obronne w dobrym stanie.\nOpcjonalnie używa krzemu do zwiększenia zasięgu i szybkości naprawy. +block.mend-projector.description = Ulepszona wersja Naprawiacza. Naprawia bloki w jego otoczeniu.\nMoże wykorzystywać włókno fazowe, aby zwiększyć efektywność napraw. 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.shock-mine.description = Zadaje obrażenia jednostkom wroga, które wejdą na nią. Ledwo widoczne dla wrogów. @@ -1938,12 +2068,12 @@ block.bridge-conveyor.description = Zaawansowany blok transportujący. Pozwala n 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.sorter.description = Sortuje przedmioty. Jeśli przedmiot pasuje to przechodzi dalej, jeśli nie - to przechodzi na boki. block.inverted-sorter.description = Sortuje przedmioty jak zwykły sortownik, ale odpowiednie surowce wyciągane są na boki. -block.router.description = Akceptuje przedmioty z jednego miejsca i rozdziela je do trzech innych kierunków. Przydatne w rozdzielaniu materiałów z jednego źródła do wielu celów.\n\n[scarlet]Nigdy nie używaj przy punkcje wejścia materiałów produkcyjnych, ponieważ zostaną one zatkane przez materiały wyjściowe.[] +block.router.description = Przyjmuje przedmioty z jednej strony i równo je dystrybuuje na przylegające przenośniki. \n\n[scarlet]Nigdy nie używaj przy wejściu materiałów produkcyjnych, ponieważ zostaną one zatkane przez materiały wyjściowe.[]\n[scarlet]Cześć mu i chwała na wieki! block.router.details = Nieuniknione zło. Nie zaleca się stosowania obok zakładów produkcyjnych, ponieważ zostaną one zatkane. -block.distributor.description = Zaawansowany rozdzielacz, rozdzielający przedmioty do 7 innych kierunków. +block.distributor.description = Zaawansowany rozdzielacz, który jest w stanie dystrybuuować przedmioty na więc block.overflow-gate.description = Rozdzielacz, który przerzuca przedmioty, kiedy główna droga jest przepełniona. -block.underflow-gate.description = Odwrotność bramy przepełnieniowej, który przepuszcza przedmioty główną drogą, gdy boczne drogi są przepełnione. -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.underflow-gate.description = Odwrotność bramy przepełnieniowej, która przepuszcza przedmioty główną drogą, gdy boczne drogi są przepełnione. +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.rotary-pump.description = Zaawansowana pompa. Pompuje więcej cieczy, ale wymaga zasilania. block.impulse-pump.description = Najlepsza pompa. Pompuje ogromne ilości cieczy, ale wymaga zasilania. @@ -1976,8 +2106,8 @@ block.pneumatic-drill.description = Ulepszone wiertło, zdolne do wydobywania ty block.laser-drill.description = Pozwala kopać jeszcze szybciej poprzez technologię laserową, ale wymaga energii. Zdolne do wydobywania toru. block.blast-drill.description = Najlepsze wiertło. Wymaga dużych ilości energii. block.water-extractor.description = Wydobywa wodę z ziemi. Użyj go, gdy w pobliżu brakuje wody. -block.cultivator.description = Uprawia małe skupiska zarodników i umieszcza je w gotowych do dalszego przetwarzania kapsułach. -block.cultivator.details = Odzyskana technologia. Służy do jak najbardziej wydajnej produkcji ogromnych ilości biomasy. Prawdopodobnie początkowy inkubator zarodników pokrywający teraz Serpulo. +block.cultivator.description = Hoduje zarodniki i umieszcza je w gotowych do dalszego przetwarzania kapsułach. +block.cultivator.details = Odzyskana technologia. Służy do jak najbardziej wydajnej produkcji ogromnych ilości biomasy. Prawdopodobnie początkowy inkubator zarodników pokrywających teraz Serpulo. block.oil-extractor.description = Używa bardzo dużych ilości energii do ekstrakcji ropy z piasku. Używaj go w sytuacji kiedy nie ma bezpośredniego źródła ropy w okolicy. block.core-shard.description = Pierwsza wersja rdzenia. Gdy zostaje zniszczony, wszelki kontakt do regionu zostaje utracony. Nie pozwól na to. block.core-shard.details = Pierwsza generacja. Kompaktowy. Samoreplikuje się. Wyposażony w jednorazowe silniki startowe. Nie jest przeznaczony do podróży międzyplanetarnych. @@ -2001,7 +2131,7 @@ block.swarmer.description = Rakietowa wieża artyleryjska, której pociski są z block.salvo.description = Standardowa wieża szturmowa, strzelająca szybkimi salwami pocisków we wrogów. block.fuse.description = Duża wieża obronna, wystrzeliwująca przeszywające wiązki we wrogie jednostki. block.ripple.description = Duża wieża artyleryjska, która strzela jednocześnie kilkoma pociskami posiadającymi różne efekty. -block.cyclone.description = Duża wieża szturmowa, które strzela dużą ilością pocisków posiadających różne efekty. +block.cyclone.description = Duża wieża szturmowa, która strzela dużą ilością pocisków. block.spectre.description = Duże działo szturmowe, które strzela potężnymi pociskami przebijającymi pancerz wrogich jednostek. block.meltdown.description = Duże laserowe działo obronne, które strzela pojedynczą ciągłą podpalającą wiązką. Wymaga chłodzenia. block.foreshadow.description = Duże działo artyleryjskie, które strzela potężnym pociskiem z daleka w pojedyncze jednostki, najpierw eliminując te najsilniejsze. @@ -2010,8 +2140,8 @@ block.segment.description = Specjalna wieża obronna. Nie zadaje obrażeń, lecz block.parallax.description = Laserowa wieża przeciwlotnicza, która strzela ciągłym laserem w jednostki, przyciągając je do siebie. block.tsunami.description = Strumieniowe działo obronne, które automatycznie gasi ogień, gdy jest podłączone do wody. 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.overdrive-dome.description = Zwiększa szybkość budynków w zasięgu. Wymaga włókna fazowego oraz krzemu by działać. +block.disassembler.description = Oddziela egzotyczne materiały z mieszaniny, jaką jest żużel. Nie jest zbyt efektywny. 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.payload-conveyor.description = Przenosi duże ładunki, takie jak jednostki z fabryk. block.payload-router.description = Dzieli wejście z przenośnika masowego w 3 różne strony. block.ground-factory.description = Produkuje jednostki naziemne. Jednostki mogą być do razu wykorzystane lub przeniesione do rekonstruktora aby je ulepszyć. @@ -2031,10 +2161,9 @@ block.logic-display.description = Wyświetla obraz z procesora. block.large-logic-display.description = Wyświetla obraz z procesora. block.interplanetary-accelerator.description = Masywna elektromagnetyczna wieża. Przyspiesza rdzeń do prędkości ucieczki by wylądować na innych planetach. block.repair-turret.description = Na bieżąco naprawia najbliższą uszkodzoną jednostkę w jej sąsiedztwie. Opcjonalnie akceptuje chłodziwo. -block.payload-propulsion-tower.description = Konstrukcja o dużym zasięgu do transportu ładunków. Strzela ładunkami do innych podłączonych wież napędowych ładunku. -block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. -block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. -block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. +block.core-bastion.description = Rdzeń bazy. Uzbrojony. Po zniszczeniu tracisz sektor. +block.core-citadel.description = Rdzeń bazy. Bardzo dobrze uzbrojony. Składuje wiecej zasobów niż rdzeń Bastion. +block.core-acropolis.description = Rdzeń bazy. Wyjątkowo dobrze uzbrojony. Składuje wiecej zasobów niż rdzeń Cytadela. block.breach.description = Strzela przebijającymi kulami z berylu bądź wolframu we wrogie cele. block.diffuse.description = Strzela serią pocisków na szerokim obszarze. Odpycha wrogie cele. block.sublimate.description = Pali wrogie cele ciągłym płomieniem. Przebija pancerz. @@ -2051,32 +2180,31 @@ block.electric-heater.description = Ogrzewa bloki naprzeciw, używając do tego block.slag-heater.description = Ogrzewa bloki naprzeciw, używając do tego żużlu. block.phase-heater.description = Ogrzewa bloki naprzeciw, używając do tego włókna fazowego. block.heat-redirector.description = Przekazuje zebrane ciepło do bloku naprzeciw. -block.heat-router.description = Spreads accumulated heat in three output directions. +block.heat-router.description = Rozprowadza zgromadzone ciepło w trzech różnych kierunkach. block.electrolyzer.description = Poddaje wodę elektrolizie, uzyskując wodór i ozon w postaci gazowej. block.atmospheric-concentrator.description = Koncentruje azot z atmosfery, używając do tego ciepła. block.surge-crucible.description = Odlewa stop elektrum z żużlu i krzemu pobierając ciepło. Dostarczając większe ilości ciepła można zwiększyć wydajność procesu. block.phase-synthesizer.description = Używa toru, piasku i ozonu do wytworzenia włókna fazowego, pobierając jednocześnie ciepło. -block.carbide-crucible.description = Wytwarza węglik z grafitu i wolframu pobierając przy tym ciepło. -block.cyanogen-synthesizer.description = Syntetyzuje cyjan z arkycytu i grafitu używając ciepła. +block.carbide-crucible.description = Wytwarza karbid z grafitu i wolframu pobierając przy tym ciepło. +block.cyanogen-synthesizer.description = Syntezuje cyjan z arkycytu i grafitu używając ciepła. block.slag-incinerator.description = Niszczy przedmioty bądź płyny używając żużlu. Niezalecane wprowadzanie gazów. block.vent-condenser.description = Skrapla parę wodną z gejzeru. block.plasma-bore.description = Wydobywa rudę znajdującą się na ścianach. Wymaga minimalnej ilości prądu. Ilość rudy wydobytej co cykl zależy od ilości bloków rudy naprzeciw wiertła. block.large-plasma-bore.description = Większe wiertło plazmowe. Wydobywa rudę znajdującą się na ścianach. Wymaga większej ilości prądu i dodatkowo wodoru, ale może wydobyć wolfram i tor. Ilość rudy wydobytej co cykl zależy od ilości bloków rudy naprzeciw wiertła. block.cliff-crusher.description = Kruszy ściany, uzyskując w ten sposób piasek. Wydajność zależy od rodzaju ściany. Wymaga prądu. -block.impact-drill.description = Kiedy stoi na rudzie, wydobywa surowce seriami. Wymaga prądu i wody. +block.impact-drill.description = Kiedy stoi na rudzie, wydobywa surowce seriami. Wymaga prądu i wody. block.eruption-drill.description = Ulepszona wersja wiertła wybuchowego. Zdolne do wydobycia toru. Potrzebuje wodoru do działania. block.reinforced-conduit.description = Służy do przemieszczania płynów i gazów. Od boku można podłączyć tylko inne rury. block.reinforced-liquid-router.description = Równo rozdziela płyn do wszystkich podłączonych rur. -block.reinforced-junction.description = Pozwala na przecięcie się dwóch rur, bez mieszania ich zawartości. block.reinforced-liquid-tank.description = Przechowuje duże ilości płynów. block.reinforced-liquid-container.description = Przechowuje umiarkowane ilości płynów. block.reinforced-bridge-conduit.description = Transportuje płyny nad rozmaitymi przeszkodami. block.reinforced-pump.description = Pompuje płyny. Nie wymaga prądu, ale potrzebuje wodoru. block.beryllium-wall.description = Chroni budynki przed wrogimi pociskami. block.beryllium-wall-large.description = Chroni budynki przed wrogimi pociskami. -block.tungsten-wall.description = Chroni budynki przed wrogimi pociskami. -block.tungsten-wall-large.description = Chroni budynki przed wrogimi pociskami. -block.carbide-wall.description = Chroni budynki przed wrogimi pociskami. +block.tungsten-wall.description = Chroni budynki przed wrogimi pociskami. +block.tungsten-wall-large.description = Chroni budynki przed wrogimi pociskami. +block.carbide-wall.description = Chroni budynki przed wrogimi pociskami. block.carbide-wall-large.description = Chroni budynki przed wrogimi pociskami. block.reinforced-surge-wall.description = Chroni budynki przed wrogimi pociskami. Losowo uwalnia błyskawice block.reinforced-surge-wall-large.description = Chroni budynki przed wrogimi pociskami. Losowo uwalnia błyskawice @@ -2088,7 +2216,7 @@ block.duct-router.description = Po równo rozdziela przedmioty w trzech kierunka block.overflow-duct.description = Odprowadza przedmioty na boki, kiedy droga z przodu jest zapełniona. block.duct-bridge.description = Transportuje przedmioty nad różnymi przeszkodami. block.duct-unloader.description = Rozładowuje wybrany przedmiot z bloku z tyłu. Nie może wyjmować przedmiotów ze rdzenia. -block.underflow-duct.description = Odwrotność przepełnieniowej rury próżniowej. Przepuszcza przedmioty do przodu tylko tak boczne wyjścia są zapełnione. +block.underflow-duct.description = Odwrotność przepełnieniowej rury próżniowej. Przepuszcza przedmioty do przodu tylko wtedy, gdy boczne wyjścia są zapełnione. block.reinforced-liquid-junction.description = Pozwala na przecięcie się dwóch rur, bez mieszania ich zawartości. block.surge-conveyor.description = Przenosi przedmioty partiami. Może być przyspieszony przy użyciu prądu. Przewodzi prąd. block.surge-router.description = Równomiernie rozdziela przedmioty w trzy różne strony. Montowany na elektrumowych przenośnikach. Może być przyspieszony przy użyciu prądu. Przewodzi prąd. @@ -2108,7 +2236,7 @@ block.reinforced-vault.description = Przechowuje duże ilości przedmiotów. Zaw block.tank-fabricator.description = Produkuje czołgi Stal. Wytworzone jednostki mogą zostać użyte do walki, bądź przeniesione do konstruktorów w celu ulepszenia. block.ship-fabricator.description = Produkuje statki Elude. Wytworzone jednostki mogą zostać użyte do walki, bądź przeniesione do konstruktorów w celu ulepszenia. block.mech-fabricator.description = Produkuje mechy Merui. Wytworzone jednostki mogą zostać użyte do walki, bądź przeniesione do konstruktorów w celu ulepszenia. -block.tank-assembler.description = Składa duże czołgi z jednostek i bloków. Poziom wyjściowego czołgu może zostać zwiększony poprzez postawienie modułu. +block.tank-assembler.description = Składa duże czołgi z jednostek i bloków. Poziom wyjściowego czołgu może zostać zwiększony poprzez postawienie modułu. block.ship-assembler.description = Składa duże statki z jednostek i bloków. Poziom wyjściowego statku może zostać zwiększony poprzez postawienie modułu. block.mech-assembler.description = Składa duże mechy z jednostek i bloków. Poziom wyjściowego mechu może zostać zwiększony poprzez postawienie modułu. block.tank-refabricator.description = Ulepsza czołgi do drugiego poziomu. @@ -2124,7 +2252,7 @@ block.large-payload-mass-driver.description = Long-range payload transport struc block.unit-repair-tower.description = Naprawia wszystkie jednostki w jego zasięgu, używając ozonu. block.radar.description = Stopniowo odkrywa teren i wrogie jednostki. Wymaga prądu. block.shockwave-tower.description = Uszkadza i niszczy wrogie pociski, używając cyjanu. -block.canvas.description = Displays a simple image with a pre-defined palette. Editable. +block.canvas.description = Wyświetla proste obrazki z predefinowaną paletą. Edytowalne. unit.dagger.description = Lądowa jednostka ofensywna, strzelająca standardowymi pociskami we wrogie jednostki. unit.mace.description = Lądowa jednostka ofensywna, miotająca strumieniami ognia we wrogie jednostki. @@ -2136,13 +2264,13 @@ unit.nova.description = Lądowo-powietrzna jednostka wsparcia, wystrzeliwująca unit.pulsar.description = Lądowo-powietrzna jednostka wsparcia, wystrzeliwująca leczące sojusznicze struktury wiązki energii. Zadaje spore obrażenia wrogom. unit.quasar.description = Lądowo-powietrzna jednostka szturmowa wyposażona w pole siłowe. Naprawia pobliskie struktury oraz skutecznie niszczy wrogów. unit.vela.description = Jednostka krocząca zdolna do lotu. Strzela potężnym laserem podpalającym pobliskich wrogów i ich struktury. Naprawia pobliskie sojusznicze budowle. -unit.corvus.description = Niesamowicie silna jednostka krocząca. Wystrzeliwuje potężny laser niszczący wrogów w sporej odległości. Naprawia sojusznicze struktury. Potrafi pokonac niemalże każdą przeszkodę. +unit.corvus.description = Niesamowicie silna jednostka krocząca. Wystrzeliwuje potężny laser niszczący wrogów w sporej odległości. Naprawia sojusznicze struktury. Potrafi pokonać niemalże każdą przeszkodę. unit.crawler.description = Drobna lądowa jednostka ofensywna, wbiegająca we wrogów dokonując samozniszczenia. unit.atrax.description = Lądowa jednostka ofensywna mogąca pokonać niemalże każdą przeszkodę, strzelająca podpalającymi kulami żużlu. unit.spiroct.description = Pajęcza jednostka mogąca pokonać niemalże każdą przeszkodę. Ponadto, jej ataki mogą ją uleczyć i jednocześnie przyciągnąć wrogów. unit.arkyid.description = Jednostka szturmowa mogąca pokonać niemalże każdą przeszkodę, strzelająca elektrycznymi pociskami oraz leczącymi ją laserami. -unit.toxopid.description = Jednostka pajęcza mogąca pokonać niemalże każdą przeszkodę. Na krótki dystans posługuje się przebijającymi laserami, a dłuższy strzela odłamkowym, uwalniającym błyskawice granatem. +unit.toxopid.description = Jednostka pajęcza mogąca pokonać niemalże każdą przeszkodę. Na krótki dystans posługuje się przebijającymi laserami, a na dłuższy strzela odłamkowym, uwalniającym błyskawice granatem. unit.flare.description = Mała latająca jednostka strzelająca standardowymi pociskami we wrogie struktury. unit.horizon.description = Jednostka latająca zrzucająca bomby kasetowe na cele naziemne. @@ -2160,7 +2288,7 @@ unit.risso.description = Morska jednostka ofensywna, strzelająca sporą ilości unit.minke.description = Morska jednostka ofensywna, strzelająca granatami i wybuchowymi pociskami we wrogie jednostki. unit.bryde.description = Morska jednostka ofensywna, strzelająca dalekosiężnymi pociskami artyleryjskimi i rakietami we wrogie jednostki. unit.sei.description = Morska jednostka szturmowa, strzelająca barażami rakiet oraz salwami przebijających pocisków we wrogie jednostki. -unit.omura.description = Morski okaz szturmowy wyposażony w dwie platformy tworzące Flary, trzelający przebijającym superszybkim pociskiem we wrogie jednostki. +unit.omura.description = Morski okaz szturmowy wyposażony w dwie platformy tworzące Flary, strzelający przebijającym superszybkim pociskiem we wrogie jednostki. unit.alpha.description = Lotnicza jednostka administracyjna, która wykonuje podstawowe instrukcje budownicze i wydobywcze. Broni rdzenia Odłamek. unit.beta.description = Lotnicza jednostka administracyjna, która buduje i wykopuje surowce znacznie szybciej od poprzedniej wersji. Chroni rdzeń Podstawa przed wrogimi jednostkami. @@ -2197,6 +2325,7 @@ unit.emanate.description = Lotnicza jednostka aministracyjna zdolna do wydobycia lst.read = Wczytuje liczbę z połączonej komórki pamięci. lst.write = Zapisuje liczbę do połączonej komórki pamięci. lst.print = Dodaje tekst do buforu drukującego.\nNie wyświetla niczego dopóki [accent]Print Flush[] nie jest użyte. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Dodaje operacje do buforu rysującego.\nNie wyświetla niczego dopóki [accent]Draw Flush[] nie jest użyte. lst.drawflush = Wyświetla oczekujące operacje z funkcji [accent]Draw[] na wyświetlaczu. lst.printflush = Dodaje oczekujące operacje z funkcji [accent]Print[] do bloku wiadomości. @@ -2219,6 +2348,8 @@ lst.getblock = Uzyskaj dane dla dowolnej lokalizacji. lst.setblock = Ustaw dane dla dowolnej lokalizacji. lst.spawnunit = Odródź jednostkę w lokalizacji. lst.applystatus = Zastosuj lub wyczyść efekty statusu jednostki. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Symuluj falę odradzającą się w dowolnym miejscu.\nNie zwiększy licznika fali. lst.explosion = Stwórz eksplozję w lokalizacji. lst.setrate = Ustaw szybkość wykonywania procesora w instrukcjach/tick. @@ -2229,7 +2360,48 @@ lst.flushmessage = Wyświetl wiadomość na ekranie z bufora tekstowego.\nPoczek lst.cutscene = Manipuluj kamerą gracza. lst.setflag = Ustaw globalną flagę, którą mogą odczytać wszystkie procesory. lst.getflag = Sprawdź, czy ustawiona jest flaga globalna. -lst.setprop = Sets a property of a unit or building. +lst.setprop = Ustaw właściwość jednostki lub budynku. +lst.effect = Stwórz efekt cząsteczki. +lst.sync = Synchronizuje zmienną poprzez sieć.\nWywoływane maksymalnie 10 razy na sekundę. +lst.makemarker = Stwórz nowy marker logiki.\nMusisz podać ID, aby móc go później zidentyfikować.\nLimit markerów to 20,000. +lst.setmarker = Ustaw właściwości markera.\nID markera musi być takie samo jak podczas jego tworzenia. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Logika budowania jednostek nie jest tu dozwolona. @@ -2244,7 +2416,8 @@ laccess.controller = Kontroler jednostki. Jeśli jest kontrolowana przez proceso laccess.dead = Sprawdza czy jednostka/budynek jest zniszczony lub już nie istnieje. laccess.controlled = Zwraca:\n[accent]@ctrlProcessor[] jeśli kontrolerem jednostki jest procesor\n[accent]@ctrlPlayer[] jeśli kontrolerem jednostki/budynku jest gracz\n[accent]@ctrlFormation[] jeśli jednostka jest w formacji\nW innym wypadku 0. laccess.progress = Postęp akcji, od 0 do 1.\nZwraca produkcję, przeładowanie wieżyczki lub postęp konstrukcji. -laccess.speed = Top speed of a unit, in tiles/sec. +laccess.speed = Najwyższa prędkość jednostki, w kratkach/sec. +laccess.id = ID jednostki/bloku/przedmiotu/płynu.\nOdwrotnośc operacji wyszukiwania. lcategory.unknown = Inne lcategory.unknown.description = Niezkategoryzowane instrukcje. @@ -2272,6 +2445,7 @@ graphicstype.poly = Wypełnia wielokąt foremny. graphicstype.linepoly = Rysuje obwód wielokąta foremnego. graphicstype.triangle = Wypełnia trójkąt. graphicstype.image = Rysuje ikonę jakiejś treści.\nnp. [accent]@router[] lub [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Zawsze prawda. lenum.idiv = Dzielenie liczb całkowitych. @@ -2291,6 +2465,7 @@ lenum.xor = Bitowe XOR. lenum.min = Minimum dwóch liczb. lenum.max = Maksimum dwóch liczb. lenum.angle = Kąt wektoru w stopniach. +lenum.anglediff = Bezwzględny dystans między dwoma kątami w stopniach. lenum.len = Długość wektoru. lenum.sin = Sinus, w stopniach. @@ -2364,6 +2539,7 @@ lenum.unbind = Kompletnie wyłącza kontrolę za pomocą logiki.\nWznawia domyś lenum.move = Przemieść się do określonej pozycji. lenum.approach = Zbliż się do pozycji w promieniu. lenum.pathfind = Odnajdź ścieżkę do punktu zrzutu przeciwników. +lenum.autopathfind = Automatycznie znajduję drogę do najbliższego rdzenia wroga lub punktu zrzutu.\nDziała tak samo jak normalne znajdowanie drogi. lenum.target = Strzel w określoną pozycję. lenum.targetp = Strzel w jednostkę/budynek z zachowaniem trajektorii. lenum.itemdrop = Upuść przedmiot. @@ -2374,8 +2550,13 @@ lenum.payenter = Wejdź/wyląduj na bloku ładunku, na którym znajduje się jed lenum.flag = Numeryczny znacznik jednostki. lenum.mine = Kop na danej pozycji. lenum.build = Buduj strukturę. -lenum.getblock = Pobierz budynek i typ ze współrzędnych.\nJednostka musi być w zasięgu pozycji.\nSolidne niebudynki będą miały typ [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Sprawdź czy jednostka jest w pobliżu pozycji. lenum.boost = Zacznij/zakończ przyspieszać. -onset.commandmode = Przytrzymaj [accent]shift[] aby wejść do [accent]trybu poleceń[].\n[accent]Kliknij lewy przycisk myszy i przeciągnij[] aby wybrac jednostki.\n[accent]Kliknij prawy przycisk myszy[] aby rozkazać jednostkom się przemieścić lub zaatakować. -onset.commandmode.mobile = Naciśnij [accent]przycisk poleceń[] aby wejść do [accent]trybu poleceń[].\nPrzytrzymaj palec, a następnie [accent]przeciągnij[] aby zaznaczyć jednostki.\n[accent]Kliknij[] aby rozkazać jednostkom się przemieścić lub zaatakować. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index c95837d0ef..45bf134bd6 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -41,22 +41,23 @@ be.ignore = Ignorar be.noupdates = Nenhuma atualização encontrada. be.check = Checar por atualizações -mods.browser = Mod Browser +mods.browser = Navegador de mods mods.browser.selected = Mod selecionado mods.browser.add = Instalar mods.browser.reinstall = Reinstalar -mods.browser.view-releases = View Releases -mods.browser.noreleases = [scarlet]No Releases Found\n[accent]Couldn't find any releases for this mod. Check if the mod's repository has any releases published. -mods.browser.latest = -mods.browser.releases = Releases -mods.github.open = Repo -mods.github.open-release = Release Page +mods.browser.view-releases = Ver versões +mods.browser.noreleases = [scarlet]Nenhuma versão encontrada\n[accent]Não foi possível encontrar nenhuma versão do mod. Veja se o repositório do mod possui alguma versão publicada. +mods.browser.latest = +mods.browser.releases = Versões +mods.github.open = Repositório +mods.github.open-release = Página da versão mods.browser.sortdate = Ordenar por mais recente mods.browser.sortstars = Ordenar por estrelas schematic = Esquema schematic.add = Salvar esquema schematics = Esquemas +schematic.search = Search schematics... schematic.replace = Um esquema com esse nome já existe. Substituí-lo? schematic.exists = Um esquema com esse nome já existe. schematic.import = Importar esquema... @@ -69,7 +70,7 @@ schematic.shareworkshop = Compartilhar na Oficina schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Virar o esquema schematic.saved = Esquema salvo. schematic.delete.confirm = Esse esquema será apagado. Tem certeza? -schematic.rename = Renomear esquema +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blocos schematic.disabled = [scarlet]Esquemas desativados[]\nVocê não tem permissão para usar esquemas nesse [accent]mapa[] ou [accent]servidor. schematic.tags = Tags: @@ -78,6 +79,7 @@ schematic.addtag = Adicionar Tag schematic.texttag = Tag de Texto schematic.icontag = Tag de Ícone schematic.renametag = Renomear Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Deletar essa tag completamente? schematic.tagexists = Essa tag já existe. @@ -144,21 +146,21 @@ mod.multiplayer.compatible = [gray]Compatível com Multiplayer mod.disable = Desati-\nvar mod.content = Conteúdo: mod.delete.error = Incapaz de deletar o mod. O arquivo talvez esteja em uso. -mod.incompatiblegame = [red]Outdated Game -mod.incompatiblemod = [red]Incompatible -mod.blacklisted = [red]Unsupported +mod.incompatiblegame = [red]Jogo desatualizado +mod.incompatiblemod = [red]Incompatível +mod.blacklisted = [red]Não suportado mod.unmetdependencies = [red]Unmet Dependencies mod.erroredcontent = [scarlet]Erros no conteúdo mod.circulardependencies = [red]Circular Dependencies mod.incompletedependencies = [red]Incomplete Dependencies -mod.requiresversion.details = Requires game version: [accent]{0}[]\nYour game is outdated. This mod requires a newer version of the game (possibly a beta/alpha release) to function. -mod.outdatedv7.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 136[] to its [accent]mod.json[] file. -mod.blacklisted.details = This mod has been manually blacklisted for causing crashes or other issues with this version of the game. Do not use it. -mod.missingdependencies.details = This mod is missing dependencies: {0} -mod.erroredcontent.details = This game caused errors when loading. Ask the mod author to fix them. -mod.circulardependencies.details = This mod has dependencies that depends on each other. -mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}. -mod.requiresversion = Requires game version: [red]{0} +mod.requiresversion.details = Requer a versão do jogo: [accent]{0}[]\nSeu jogo está desatualizado. Este mod requer uma versão mais recente do jogo (possivelmente uma versão beta/alfa) para funcionar. +mod.outdatedv7.details = Este mod é incompatível com a versão mais recente do jogo. O autor deve atualizá-lo e adicionar [accent]minGameVersion: 136[] ao seu arquivo [accent]mod.json[]. +mod.blacklisted.details = Este mod foi manualmente colocado na lista negra por causar falhas ou outros problemas com esta versão do jogo. Não use isso. +mod.missingdependencies.details = Este mod está sem dependências: {0} +mod.erroredcontent.details = Este jogo causou erros ao carregar. Peça ao autor do mod para corrigi-los. +mod.circulardependencies.details = Este mod possui dependências que dependem umas das outras. +mod.incompletedependencies.details = Este mod não pode ser carregado devido a dependências inválidas ou ausentes: {0}. +mod.requiresversion = Requer a versão do jogo: [red]{0} mod.errors = Ocorreram erros ao carregar o conteúdo. mod.noerrorplay = [scarlet]Você tem mods com erros.[] Desative os mods afetados ou conserte os erros antes de jogar. mod.nowdisabled = [scarlet]O Mod '{0}' está com dependências ausentes:[accent] {1}\n[lightgray]Esses Mods precisam ser baixados primeiro.\nEsse Mod será desativado automaticamente. @@ -187,10 +189,10 @@ filename = Nome do arquivo: unlocked = Novo bloco desbloqueado! available = Nova pesquisa disponível! unlock.incampaign = < Desbloqueie na campanha para mais detalhes > -campaign.select = Select Starting Campaign -campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. -campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. -campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.select = Selecione a campanha inicial +campaign.none = [lightgray]Selecione um planeta para começar nele.\nVocê pode mudar de planeta a qualquer momento. +campaign.erekir = Novo, conteúdo mais polido. Uma progressão mais linear na campanha.\n\nExperiência geral e mapas de maior qualidade. +campaign.serpulo = Conteúdo antigo; a experiência clássica. Mais aberto.\n\nMapas e mecânicas de campanha potencialmente desbalanceados. Menos polido. completed = [accent]Completado techtree = Árvore Tecnológica techtree.select = Seleção de Árvore Tecnológica @@ -253,11 +255,19 @@ trace = Rastrear jogador trace.playername = Nome do jogador: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Cliente móvel: [accent]{0} trace.modclient = Cliente customizado: [accent]{0} trace.times.joined = Vezes que entrou: [accent]{0} trace.times.kicked = Vezes que foi expulso: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = ID do cliente invalido! Reporte o bug +player.ban = Banir +player.kick = Chutar +player.trace = Rastrear +player.admin = Alternar Admin +player.team = Trocar time server.bans = Banidos server.bans.none = Nenhum jogador banido encontrado! server.admins = Administradores @@ -271,10 +281,11 @@ server.version = [lightgray]Versão: {0} server.custombuild = [accent]Versão customizada confirmban = Certeza que quer banir "{0}[white]"? confirmkick = Certeza que quer expulsar "{0}[white]"? -confirmvotekick = Você tem certeza de que quer votar para expulsar "{0}[white]"? confirmunban = Certeza que quer desbanir este jogador? confirmadmin = Certeza que quer fazer "{0}[white]" um administrador? confirmunadmin = Certeza que quer remover o status de adminstrador do "{0}[white]"? +votekick.reason = Motivo para chutar por voto +votekick.reason.message = Tem certeza de que deseja chutar por voto "{0}[white]"?\nSe sim, digite o motivo: joingame.title = Entrar no jogo joingame.ip = IP: disconnect = Desconectado. @@ -292,7 +303,7 @@ server.invalidport = Numero de port inválido! server.error = [crimson]Erro ao hospedar o servidor: [accent]{0} save.new = Novo save save.overwrite = Você tem certeza que quer sobrescrever este save? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = Arquivos salvos individuais da campanha não podem ser importados. overwrite = Sobrescrever save.none = Nenhum save encontrado! savefail = Falha ao salvar jogo! @@ -330,12 +341,23 @@ open = Abrir customize = Customizar cancel = Cancelar command = Comando +command.queue = [lightgray][Queuing] command.mine = Minerar command.repair = Reparar command.rebuild = Reconstruir command.assist = Assist Player command.move = Mover command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Abrir Link copylink = Copiar link back = Voltar @@ -361,8 +383,8 @@ pausebuilding = [accent][[{0}][] para parar a construção resumebuilding = [scarlet][[{0}][] para continuar a construção enablebuilding = [scarlet][[{0}][] para habilitar construção showui = Interface escondida.\nPressione [accent][[{0}][] para mostrar a interface. -commandmode.name = [accent]Command Mode -commandmode.nounits = [no units] +commandmode.name = [accent]Modo de comando +commandmode.nounits = [nenhuma unidade] wave = [accent]Horda {0} wave.cap = [accent]Horda {0}/{1} wave.waiting = Proxima horda em {0} @@ -382,9 +404,9 @@ custom = Customizado builtin = Padrão map.delete.confirm = Certeza que quer deletar este mapa? Isto não pode ser anulado! map.random = [accent]Mapa aleatório -map.nospawn = Este mapa não possui nenhum núcleo para o jogador nascer! Adicione um núcleo[accent] amarelo[] para este mapa no editor. -map.nospawn.pvp = Esse mapa não tem núcleos inimigos para os jogadores nascerem! Adicione[scarlet] núcleos vermelhos[] no mapa no editor. -map.nospawn.attack = Esse mapa não tem nenhum núcleo inimigo para o jogador atacar! coloque[scarlet] núcleos[] vermelhos no editor. +map.nospawn = Este mapa não possui nenhum núcleo para o jogador nascer! Adicione um núcleo {0} para este mapa no editor. +map.nospawn.pvp = Esse mapa não tem núcleos inimigos para os jogadores nascerem! Adicione [scarlet]núcleos vermelhos[] no mapa no editor. +map.nospawn.attack = Esse mapa não tem nenhum núcleo inimigo para o jogador atacar! coloque {0} vermelhos no editor. map.invalid = Erro ao carregar o mapa: Arquivo de mapa invalido ou corrupto. workshop.update = Atualizar item workshop.error = Erro buscando os detalhes da oficina: {0} @@ -416,6 +438,12 @@ editor.waves = Hordas: editor.rules = Regras: editor.generation = Geração: editor.objectives = Objetivos: +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Editar em jogo editor.playtest = Jogar Teste editor.publish.workshop = Publicar na oficina @@ -459,7 +487,7 @@ waves.sort.begin = Começar waves.sort.health = Vida waves.sort.type = Tipo waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Esconder tudo waves.units.show = Mostrar tudo @@ -472,6 +500,8 @@ editor.default = [lightgray] details = Detalhes... edit = Editar... variables = Variáveis +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Nome: editor.spawn = Spawnar unidade editor.removeunit = Remover unidade @@ -483,6 +513,7 @@ editor.errorlegacy = Esse mapa é velho demais, e usa um formato de mapa legacy editor.errornot = Este não é um arquivo de mapa. editor.errorheader = Este arquivo de mapa não é mais válido ou está corrompido. editor.errorname = O mapa não tem nome definido. +editor.errorlocales = Error reading invalid locale bundles. editor.update = Atualizar editor.randomize = Aleatorizar editor.moveup = Mover para Cima @@ -494,6 +525,7 @@ editor.sectorgenerate = Gerar Setor editor.resize = Redimen-\nsionar editor.loadmap = Carregar\nmapa editor.savemap = Salvar\nmapa +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Salvo! editor.save.noname = Seu mapa não tem um nome! Coloque um no menu de "Informação do mapa" editor.save.overwrite = O seu mapa substitui um mapa já construído! Coloque um nome diferente no menu "Informação do mapa" @@ -532,11 +564,13 @@ toolmode.eraseores = Apagar minérios toolmode.eraseores.description = Apaga apenas minérios. toolmode.fillteams = Preencher times toolmode.fillteams.description = Muda o time do qual todos os blocos pertencem. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Desenhar times toolmode.drawteams.description = Muda o time do qual o bloco pertence. #unused -toolmode.underliquid = Under Liquids -toolmode.underliquid.description = Draw floors under liquid tiles. +toolmode.underliquid = sob líquidos +toolmode.underliquid.description = Desenhe pisos sob ladrilhos líquidos. filters.empty = [lightgray]Sem filtros! Adicione um usando o botão abaixo. @@ -556,6 +590,7 @@ filter.clear = Excluir filter.option.ignore = Ignorar filter.scatter = Dispersão filter.terrain = Terreno +filter.logic = Logic filter.option.scale = Escala filter.option.chance = Chance @@ -579,6 +614,25 @@ filter.option.floor2 = Chão secundário filter.option.threshold2 = Margem secundária filter.option.radius = Raio filter.option.percentile = Percentual +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Largura: height = Altura: @@ -631,9 +685,12 @@ objective.commandmode.name = Modo de Comando objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimapa +marker.point.name = Point marker.shape.name = Shape marker.text.name = Texto +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Fundo marker.outline = Contorno @@ -662,7 +719,6 @@ resources.max = Máximo bannedblocks = Blocos Banidos objectives = Objetivos bannedunits = Unidades Banidas -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Adicionar Todos @@ -685,12 +741,12 @@ error.any = Erro de rede desconhecido. error.bloom = Falha ao inicializar bloom.\nSeu dispositivo talvez não o suporte. weather.rain.name = Chuva -weather.snow.name = Neve +weather.snowing.name = Neve weather.sandstorm.name = Tempestade de Areia weather.sporestorm.name = Tempestade de Esporos weather.fog.name = Névoa campaign.playtime = \uf129 [lightgray]Sector Playtime: {0} -campaign.complete = [accent]Congratulations.\n\nThe enemy on {0} has been defeated.\n[lightgray]The final sector has been conquered. +campaign.complete = [accent]Parabéns.\n\nO inimigo em {0} foi derrotado.\n[lightgray]O setor final foi conquistado. sectorlist = Setores sectorlist.attacked = {0} sob ataque @@ -721,8 +777,8 @@ sector.curlost = Setor Perdido sector.missingresources = [scarlet]Recursos Insuficientes no Núcleo sector.attacked = Setor [accent]{0}[white] sob ataque! sector.lost = Setor [accent]{0}[white] perdido! -#note: the missing space in the line below is intentional -sector.captured = Setor [accent]{0}[white]capturado! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Trocar Ícone sector.noswitch.title = Incapaz de Mudar de Setores sector.noswitch = Você não pode trocar de setor enquanto um setor existente estiver sob ataque.\n\nSetor: [accent]{0}[] em [accent]{1}[] @@ -804,16 +860,16 @@ sector.intersect.description = Scanners sugerem que este setor será atacado de sector.atlas.description = Este setor contém terreno variado e exigirá uma variedade de unidades para atacar de forma eficaz.\nUnidades melhoradas também podem ser necessárias para passar por algumas das bases inimigas mais difíceis detectadas aqui.\nPesquise o [accent]Eletrolisador[] e o [accent]Refrabicador de Tanques[]. sector.split.description = A presença mínima de inimigos neste setor o torna perfeito para testar novas tecnologias de transporte. sector.basin.description = {Temporary}\n\nO último setor por enquanto. Considere isso um nível de desafio - mais setores serão adicionados em novas atualizações. -sector.marsh.description = This sector has an abundance of arkycite, but has limited vents.\nBuild [accent]Chemical Combustion Chambers[] to generate power. -sector.peaks.description = The mountainous terrain in this sector make most units useless. Flying units will be required.\nBe aware of enemy anti-air installations. It may be possible to disable some of these installations by targeting their supporting buildings. +sector.marsh.description = Este setor tem abundância de arquicita, mas tem respiradouros limitados.\nConstrua [accent]Câmaras de Combustão Química[] para gerar energia. +sector.peaks.description = O terreno montanhoso neste setor torna a maioria das unidades inúteis. Unidades voadoras serão necessárias.\nEsteja ciente das instalações antiaéreas inimigas. Pode ser possível desativar algumas dessas instalações visando seus edifícios de apoio. sector.ravine.description = Nenhum núcleo inimigo detectado no setor, embora seja uma importante rota de transporte para o inimigo. Espere uma variedade de forças inimigas.\nProduza [accent]liga de surto[]. Construa torretas [accent]Afflict[]. -sector.caldera-erekir.description = The resources detected in this sector are scattered across several islands.\nResearch and deploy drone-based transportation. -sector.stronghold.description = The large enemy encampment in this sector guards significant deposits of [accent]thorium[].\nUse it to develop higher tier units and turrets. -sector.crevice.description = The enemy will send fierce attack forces to take out your base in this sector.\nDeveloping [accent]carbide[] and the [accent]Pyrolysis Generator[] may be imperative for survival. -sector.siege.description = This sector features two parallel canyons that will force a two-pronged attack.\nResearch [accent]cyanogen[] to gain the capability to create even stronger tank units.\nCaution: enemy long-range missiles have been detected. The missiles may be shot down before impact. -sector.crossroads.description = The enemy bases in this sector have been established in varying terrain. Research different units to adapt.\nAdditionally, some bases are protected by shields. Figure out how they are powered. -sector.karst.description = This sector is rich in resources, but will be attacked by the enemy once a new core lands.\nTake advantage of the resources and research [accent]phase fabric[]. -sector.origin.description = The final sector with a significant enemy presence.\nNo probable research opportunities remain - focus solely on destroying all enemy cores. +sector.caldera-erekir.description = Os recursos detectados neste setor estão espalhados por várias ilhas.\nPesquise e implante transporte baseado em drones. +sector.stronghold.description = O grande acampamento inimigo neste setor guarda depósitos significativos de [accent]tório[].\nUse-o para desenvolver unidades e torres de nível superior. +sector.crevice.description = O inimigo enviará forças de ataque ferozes para destruir sua base neste setor.\nDesenvolver [accent]carbide[] e o [accent]gerador de pirólise[] pode ser imperativo para a sobrevivência. +sector.siege.description = Este setor apresenta dois desfiladeiros paralelos que forçarão um ataque em duas frentes.\nPesquise [accent]cianogênio[] para obter a capacidade de criar unidades de tanques ainda mais fortes.\nCuidado: mísseis inimigos de longo alcance foram detectados. Os mísseis podem ser derrubados antes do impacto. +sector.crossroads.description = As bases inimigas neste setor foram estabelecidas em terrenos variados. Pesquise diferentes unidades para adaptar.\nAlém disso, algumas bases são protegidas por escudos. Descubra como eles são alimentados. +sector.karst.description = Este setor é rico em recursos, mas será atacado pelo inimigo assim que um novo núcleo chegar.\nAproveite os recursos e pesquise [accent]fase de tecido[]. +sector.origin.description = O setor final com uma presença inimiga significativa.\nNenhuma oportunidade de pesquisa provável permanece - concentre-se apenas em destruir todos os núcleos inimigos. status.burning.name = Queimando status.freezing.name = Congelando @@ -936,6 +992,7 @@ stat.abilities = Habilidades stat.canboost = Pode impulsionar stat.flying = Voador stat.ammouse = Consumo de Munição +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Multiplicador de Dano stat.healthmultiplier = Multiplicador de Vida stat.speedmultiplier = Multiplicador de Velocidade @@ -946,14 +1003,46 @@ stat.immunities = Imunidades stat.healing = Reparo ability.forcefield = Campo de Força +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Campo de Reparação -ability.statusfield = Campo de Status {0} -ability.unitspawn = Fábrica de {0} +ability.repairfield.description = Repairs nearby units +ability.statusfield = Campo de Status +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Fábrica +ability.unitspawn.description = Constructs units ability.shieldregenfield = Raio de Regeneração do Escudo +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Raio de Movimento +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Arco do Escudo +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Campo de Energia: dano [accent]{0}[] ~ blocos [accent]{1}[] / alvos [accent]{2}[] +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Campo de Energia +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Somente depósito no núcleo permitido bar.drilltierreq = Broca melhor necessária. @@ -993,6 +1082,7 @@ bullet.splashdamage = [stat]{0}[lightgray] de dano em área ~[stat] {1}[lightgra bullet.incendiary = [stat]Incendiário bullet.homing = [stat]Guiado bullet.armorpierce = [stat]pentração de armadura +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x balas de fragmentação: @@ -1028,6 +1118,7 @@ unit.items = itens unit.thousands = k unit.millions = m unit.billions = b +unit.shots = shots unit.pershot = /disparo category.purpose = Propósito category.general = Geral @@ -1048,6 +1139,7 @@ setting.backgroundpause.name = Pausar em segundo plano setting.buildautopause.name = Pausar Automaticamente Quando for Construir setting.doubletapmine.name = Clique Duplo Para Minerar setting.commandmodehold.name = Segure para o modo de comando +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Desativar Mods em Crash de Começo setting.animatedwater.name = Água animada setting.animatedshields.name = Escudos animados @@ -1085,7 +1177,7 @@ setting.borderlesswindow.name.windows = Tela cheia sem borda setting.borderlesswindow.description = Pode ser necessário reiniciar para aplicar as alterações. setting.fps.name = Mostrar FPS e Ping setting.console.name = Ativar console -setting.smoothcamera.name = Suavizar movimentos da câmera +setting.smoothcamera.name = Suavizar movimentos da câmera setting.vsync.name = VSync setting.pixelate.name = Pixelizado [lightgray](Pode diminuir a performace) setting.minimap.name = Mostrar minimapa @@ -1094,13 +1186,14 @@ setting.position.name = Mostrar a posição do Jogador setting.mouseposition.name = Mostrar posição do mouse setting.musicvol.name = Volume da Música setting.atmosphere.name = Mostrar a atmosfera do planeta +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Volume do Ambiente setting.mutemusic.name = Desligar Música setting.sfxvol.name = Volume de Efeitos setting.mutesound.name = Desligar Som setting.crashreport.name = Enviar denúncias anônimas de erros setting.savecreate.name = Criar salvamentos automaticamente -setting.publichost.name = Visibilidade do jogo público +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Limites de Player setting.chatopacity.name = Opacidade do chat setting.lasersopacity.name = Opacidade do laser @@ -1108,8 +1201,10 @@ setting.bridgeopacity.name = Opacidade da ponte setting.playerchat.name = Mostrar chat em jogo setting.showweather.name = Mostrar Gráficos do Clima setting.hidedisplays.name = Ocultar Displays de Lógicos -steam.friendsonly = Friends Only -steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. +setting.macnotch.name = Adaptar a interface para exibir o entalhe +setting.macnotch.description = Reinicialização necessária para aplicar as alterações +steam.friendsonly = Amigos apenas +steam.friendsonly.tooltip = Se apenas amigos do Steam poderão entrar no seu jogo.\nDesmarcar esta caixa tornará seu jogo público - qualquer pessoa pode entrar. public.beta = Note que as versões beta do jogo não podem fazer salas públicas. uiscale.reset = A escala da interface foi mudada.\nPressione "OK" para confirmar esta escala.\n[scarlet]Revertendo e saindo em[accent] {0}[] segundos... uiscale.cancel = Cancelar e sair @@ -1118,6 +1213,7 @@ keybind.title = Refazer teclas keybinds.mobile = [scarlet]A maior parte das teclas aqui não são funcionais em dispositivos móveis. É unicamente suportado movimento básico. category.general.name = Geral category.view.name = Ver +category.command.name = Unit Command category.multiplayer.name = Multijogador category.blocks.name = Selecionar bloco placement.blockselectkeys = \n[lightgray]Tecla: [{0}, @@ -1135,6 +1231,24 @@ keybind.mouse_move.name = Seguir o Cursor keybind.pan.name = Câmera livre keybind.boost.name = Impulsionar keybind.command_mode.name = Modo de Comando +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selecionar região keybind.schematic_menu.name = Menu de Esquemas @@ -1198,17 +1312,25 @@ mode.pvp.description = Lute contra outros jogadores locais. mode.attack.name = Ataque mode.attack.description = Sem hordas, com o objetivo de destruir a base inimiga. mode.custom = Regras personalizadas +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Recursos infinitos rules.onlydepositcore = Permitir apenas depósito no núcleo +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reatores explodem rules.coreincinerates = Núcleo incinera itens em excesso rules.disableworldprocessors = Desativar processadores mundiais rules.schematic = Permitir Esquemas rules.wavetimer = Tempo de horda rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Hordas +rules.airUseSpawns = Air units use spawn points rules.attack = Modo de ataque +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Tamanho mínimo do esquadrão rules.rtsmaxsquadsize = Tamanho máximo do esquadrão @@ -1227,6 +1349,7 @@ rules.unitdamagemultiplier = Multiplicador de dano de Unidade rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Multiplicador de Energia Solar rules.unitcapvariable = Núcleos contribuem para a capacidade da unidade +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Capacidade base da Unidade rules.limitarea = Limitar área do mapa rules.enemycorebuildradius = Raio de "não-criação" de núcleo inimigo:[lightgray] (blocos) @@ -1234,7 +1357,7 @@ rules.wavespacing = Espaço de tempo entre hordas:[lightgray] (seg) rules.initialwavespacing = Espaçamento de onda inicial:[lightgray] (seg) rules.buildcostmultiplier = Multiplicador de custo de construção rules.buildspeedmultiplier = Multiplicador de velocidade de construção -rules.deconstructrefundmultiplier = Multiplicador de reembolso de desconstrução +rules.deconstructrefundmultiplier = Multiplicador de reembolso de desconstrução rules.waitForWaveToEnd = Hordas esperam inimigos rules.wavelimit = Map Ends After Wave rules.dropzoneradius = Raio da zona de spawn:[lightgray] (blocos) @@ -1259,6 +1382,8 @@ rules.weather = Clima rules.weather.frequency = Frequência: rules.weather.always = Sempre rules.weather.duration = Duração: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Itens content.liquid.name = Líquidos @@ -1476,6 +1601,7 @@ block.inverted-sorter.name = Ordenador invertido block.message.name = Mensagem block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Iluminador block.overflow-gate.name = Portão de Sobrecarga block.underflow-gate.name = Portão de Sobrecarga Invertido @@ -1716,7 +1842,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricador block.tank-refabricator.name = Refabricador de Tanque block.mech-refabricator.name = Refabricador de Mech block.ship-refabricator.name = Refrabricador de Nave @@ -1724,7 +1849,7 @@ block.tank-assembler.name = Montador de Tanque block.ship-assembler.name = Montador de Nave block.mech-assembler.name = Montador de Mech block.reinforced-payload-conveyor.name = Esteira de Carga Reforçada -block.reinforced-payload-router.name = Roteador de Carga Reforçado +block.reinforced-payload-router.name = Roteador de Carga Reforçado block.payload-mass-driver.name = Catapulta de Carga Eletromagnética block.small-deconstructor.name = Desconstrutor Pequeno block.canvas.name = Canvas @@ -1746,9 +1871,9 @@ block.switch.name = Alavanca block.micro-processor.name = Micro Processador block.logic-processor.name = Processador Lógico block.hyper-processor.name = Hiper Processador -block.logic-display.name = Monitor Lógico +block.logic-display.name = Monitor Lógico block.large-logic-display.name = Monitor Lógico Grande -block.memory-cell.name = Célula de Memória +block.memory-cell.name = Célula de Memória block.memory-bank.name = Banco de Memória team.malis.name = Malis @@ -1774,12 +1899,12 @@ hint.research = Use o botão de \ue875 [accent]Pesquisa[] para pesquisar novas t hint.research.mobile = Use o botão de \ue875 [accent]Pesquisa[] no \ue88c [accent]Menu[] para pesquisar novas tecnologias. hint.unitControl = Segure [accent][[L-ctrl][] e [accent]click[] para controlar suas unidades ou torretas. hint.unitControl.mobile = [accent][[Toque duas vezes][] para controlar suas unidades ou torretas. -hint.unitSelectControl = To control units, enter [accent]command mode[] by holding [accent]L-shift.[]\nWhile in command mode, click and drag to select units. [accent]Right-click[] a location or target to command units there. -hint.unitSelectControl.mobile = To control units, enter [accent]command mode[] by pressing the [accent]command[] button in the bottom left.\nWhile in command mode, long-press and drag to select units. Tap a location or target to command units there. +hint.unitSelectControl = Para controlar unidades, entre no [accent]modo de comando[] segurando [accent]Shift esquerdo.[]\nEnquanto no modo de comando, clique e segure pra selecionar unidades. Clique com o [accent]Botão direito[] em um lugar ou alvo para mandar as unidades para lá. +hint.unitSelectControl.mobile = Para controlar unidades, entre no [accent]modo de comando[] segurando o botão de [accent]comando[] no canto inferior esquerdo.\nEnquanto no modo de comando, segure e arraste pra selecionar unidades. Toque em algum lugar ou alvo para mandar as unidades para lá. hint.launch = Quando recursos suficientes forem coletados, você pode [accent]Lançar[] selecionando setores próximos a partir do \ue827 [accent]Mapa[] no canto inferior direito. hint.launch.mobile = Quando recursos suficientes forem coletados, você pode [accent]Lançar[] selecionando setores próximos a partir do \ue827 [accent]Mapa[] no \ue88c [accent]Menu[]. hint.schematicSelect = Segure [accent][[F][] e arraste para selecionar blocos para copiar e colar.\n\n[accent][[Middle Click][] para copiar um bloco só. -hint.rebuildSelect = Hold [accent][[B][] and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect = Segure [accent][[B][] e arraste para selecionar blocos destruídos.\nIsso irá reconstruí-los automaticamente. hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. hint.conveyorPathfind = Segure [accent][[L-Ctrl][] enquanto arrasta as esteiras para gerar automaticamente um caminho. hint.conveyorPathfind.mobile = Ative o \ue844 [accent]modo diagonal[] e arraste as esteiras para gerar automaticamente um caminho. @@ -1797,47 +1922,53 @@ hint.presetDifficulty = Esse setor tem um [scarlet]alto nível de ameaça inimig hint.coreIncinerate = Depois que o núcleo ter recebido até a capacidade máxima de um item, qualquer item do mesmo tipo que ele receber será [accent]incinerado[]. hint.factoryControl = Para definir a [accent]o local de saída[] de uma fábrica de unidades, clique em uma fábrica enquanto estiver no modo de comando, depois clique com o botão direito em um local.\nAs unidades produzidas por ela se moverão automaticamente para lá. hint.factoryControl.mobile = Para definir a [accent]o local de saída[] de uma fábrica de unidades, toque em uma fábrica enquanto estiver no modo de comando, depois toque em um local.\nAs unidades produzidas por ela se moverão automaticamente para lá. -gz.mine = Move near the \uf8c4 [accent]copper ore[] on the ground and click to begin mining. -gz.mine.mobile = Move near the \uf8c4 [accent]copper ore[] on the ground and tap it to begin mining. -gz.research = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nClick on a copper patch to place it. -gz.research.mobile = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nTap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. -gz.conveyors = Research and place \uf896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. -gz.conveyors.mobile = Research and place \uf896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nHold down your finger for a second and drag to place multiple conveyors. -gz.drills = Expand the mining operation.\nPlace more Mechanical Drills.\nMine 100 copper. -gz.lead = \uf837 [accent]Lead[] is another commonly used resource.\nSet up drills to mine lead. -gz.moveup = \ue804 Move up for further objectives. -gz.turrets = Research and place 2 \uf861 [accent]Duo[] turrets to defend the core.\nDuo turrets require \uf838 [accent]ammo[] from conveyors. -gz.duoammo = Supply the Duo turrets with [accent]copper[], using conveyors. -gz.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace \uf8ae [accent]copper walls[] around the turrets. -gz.defend = Enemy incoming, prepare to defend. -gz.aa = Flying units cannot easily be dispatched with standard turrets.\n\uf860 [accent]Scatter[] turrets provide excellent anti-air, but require \uf837 [accent]lead[] as ammo. -gz.scatterammo = Supply the Scatter turret with [accent]lead[], using conveyors. -gz.supplyturret = [accent]Supply Turret -gz.zone1 = This is the enemy drop zone. -gz.zone2 = Anything built in the radius is destroyed when a wave starts. -gz.zone3 = A wave will begin now.\nGet ready. -gz.finish = Build more turrets, mine more resources,\nand defend against all the waves to [accent]capture the sector[]. -onset.mine = Click to mine \uf748 [accent]beryllium[] from walls.\n\nUse [accent][[WASD] to move. -onset.mine.mobile = Tap to mine \uf748 [accent]beryllium[] from walls. -onset.research = Open the \ue875 tech tree.\nResearch, then place a \uf73e [accent]turbine condenser[] on the vent.\nThis will generate [accent]power[]. -onset.bore = Research and place a \uf741 [accent]plasma bore[].\nThis automatically mines resources from walls. -onset.power = To [accent]power[] the plasma bore, research and place a \uf73d [accent]beam node[].\nConnect the turbine condenser to the plasma bore. -onset.ducts = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\nClick and drag to place multiple ducts.\n[accent]Scroll[] to rotate. -onset.ducts.mobile = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\n\nHold down your finger for a second and drag to place multiple ducts. -onset.moremine = Expand the mining operation.\nPlace more Plasma Bores and use beam nodes and ducts to support them.\nMine 200 beryllium. -onset.graphite = More complex blocks require \uf835 [accent]graphite[].\nSet up plasma bores to mine graphite. -onset.research2 = Begin researching [accent]factories[].\nResearch the \uf74d [accent]cliff crusher[] and \uf779 [accent]silicon arc furnace[]. -onset.arcfurnace = The arc furnace needs \uf834 [accent]sand[] and \uf835 [accent]graphite[] to create \uf82f [accent]silicon[].\n[accent]Power[] is also required. -onset.crusher = Use \uf74d [accent]cliff crushers[] to mine sand. -onset.fabricator = Use [accent]units[] to explore the map, defend buildings, and attack the enemy. Research and place a \uf6a2 [accent]tank fabricator[]. -onset.makeunit = Produce a unit.\nUse the "?" button to see selected factory requirements. -onset.turrets = Units are effective, but [accent]turrets[] provide better defensive capabilities if used effectively.\nPlace a \uf6eb [accent]Breach[] turret.\nTurrets require \uf748 [accent]ammo[]. -onset.turretammo = Supply the turret with [accent]beryllium ammo.[] -onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. -onset.enemies = Enemy incoming, prepare to defend. -onset.attack = The enemy is vulnerable. Counter-attack. -onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. -onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +gz.mine = Vá para perto do \uf8c4 [accent]minério de cobre[] no chão e clique para começar a minerar. +gz.mine.mobile = Vá para perto do \uf8c4 [accent]minério de cobre[] no chão e toque nele para começar a minerar. +gz.research = Abra a \ue875 árvore tecnológica.\nPesquise a \uf870 [accent]Broca mecânica[], Depois selecione-a pelo menu no canto inferior direito.\nClique no cobre para coloca-la. +gz.research.mobile = Abra a \ue875 árvore tecnológica.\nPesquise a \uf870 [accent]Broca mecânica[], Depois selecione-a pelo menu no canto inferior direito.\nClique no cobre para colocá-la.\n\nPressione a \ue800 [accent]confirmação[] no canto inferior direito para confirmar. +gz.conveyors = Pesquise e coloque \uf896 [accent]esteiras[] para mover os recursos minerados\ndas brocas para o núcleo.\n\nClique e arraste para pôr multiplas esteiras.\n[accent]Scroll[] para rotacionar. +gz.conveyors.mobile = Pesquise e coloque \uf896 [accent]esteiras[] para mover os recursos minerados\ndas brocas para o núcleo.\n\nSegure por um segundo e arraste para colocar múltiplas esteiras. +gz.drills = Expanda a mineração.\nColoque mais Brocas Mecânicas.\nMinere 100 cobres. +gz.lead = \uf837 [accent]Chumbo[] é outro recurso comumente usado.\nColoque brocas para minerar chumbo. +gz.moveup = \ue804 Vá para cima para outros objetivos. +gz.turrets = Pesquise e coloque 2 torretas \uf861 [accent]Duo[] para defender o núcleo.\ntorretas Duo requerem \uf838 [accent]munição[] de esteiras. +gz.duoammo = Abasteça as torretas Duo com [accent]cobre[], usando esteiras. +gz.walls = [accent]Muros[] podem previnir danos recebidos de atingir as construções.\nColoque \uf8ae [accent]muros de cobre[] em volta das torretas. +gz.defend = Inimigos vindo, prepare-se para defender. +gz.aa = Unidades flutuantes não podem ser destruidas facilmente por torretas comuns.\nTorretas\uf860 [accent]Scatter[] Proveem ótima defesa aérea, mas requerem \uf837 [accent]chumbo[] como munição. +gz.scatterammo = Abasteça a torreta Scatter com [accent]chumbo[], usando esteiras. +gz.supplyturret = [accent]Abasteça a torreta +gz.zone1 = Essa é a zona de spawn inimigo. +gz.zone2 = Qualquer coisa construida nesta área será destruida quando uma horda começar. +gz.zone3 = Uma horda vai começar agora\nSe prepare. +gz.finish = Construa mais torretas, minere mais recursos,\ne se defenda de todas as hordas para [accent]capturar o setor[]. +onset.mine = Clique para minerar \uf748 [accent]berílio[] das paredes.\n\nUse [accent][[WASD] para se mover. +onset.mine.mobile = Toque para minerar \uf748 [accent]berílio[] das paredes. +onset.research = Abra a \ue875 árvore tecnológica.\nPesquise, e então coloque um \uf73e [accent]Condensador de Turbina[] na ventilação.\nIsso vai gerar [accent]energia[]. +onset.bore = Pesquise e coloque uma \uf741 [accent]Mineradora de Plasma[].\nEla minera recursos das paredes automaticamente. +onset.power = Para[accent]alimentar[] a Mineradora de Plasma, pesquise e coloque uma \uf73d [accent]Célula de Feixe[].\nConecte o condensador de turbina ao minerador de plasma. +onset.ducts = Pesquise e coloque \uf799 [accent]dutos[] para mover recursos minerados da mineradora de plasma para o núcleo.\nClique e segure para colocar múltiplos dutos.\n[accent]Scroll[] para rotacionar. +onset.ducts.mobile = Pesquise e coloque \uf799 [accent]dutos[] para mover recursos minerados da mineradora de plasma para o núcleo.\n\nSegure por um segundo e arraste para colocar múltiplos dutos. +onset.moremine = Expanda a mineração.\nColoque mais Mineradoras de Plasma, use as Células de Feixe e dutos para isso.\nMinere 200 berílios. +onset.graphite = Blocos mais complexos requerem \uf835 [accent]grafite[].\nColoque Mineradoras de Plasma para minerar grafite. +onset.research2 = Comece a pesquisar [accent]fábricas[].\nPesquise o \uf74d [accent]Esmagador de Penhasco[] e o \uf779 [accent]silicon arc furnace[]. +onset.arcfurnace = O arc furnace precisa de \uf834 [accent]areia[] e \uf835 [accent]grafite[] para criar \uf82f [accent]silício[].\n[accent]Energia[] também é necessária. +onset.crusher = Use o \uf74d [accent]Esmagador de Areia[] para minerar areia. +onset.fabricator = Use [accent]unidades[] para explorar o mapa, defender construções e atacar o inimigo. Pesquise e coloque um \uf6a2 [accent]Fabricador de Tanques[]. +onset.makeunit = Produza uma unidade.\nUse o botão "?" para ver os requisitos da fábrica selecionada. +onset.turrets = Unidades são efetivas, mas [accent]torretas[] proveem melhores capacidades defensivas se usadas efetivamente.\nColoque uma torreta \uf6eb [accent]Breach[].\nTorretas requerem \uf748 [accent]munição[]. +onset.turretammo = Abasteça a torreta com [accent]munição de berílio.[] +onset.walls = [accent]Muros[] podem previnir danos recebidos de atingir as construções.\nColoque \uf6ee [accent]muros de berílio[] em volta das torretas. + +onset.enemies = Inimigo vindo, se prepare. +onset.defenses = [accent]Set up defenses:[lightgray] {0} +onset.attack = O inimigo está vulnerável. Contra ataque. +onset.cores = Novos núcleos podem ser colocados em [accent]ladrilhos de núcleo[].\nNovos núcleos funcionam como bases avançadas e compartilham seus recursos com outros núcleos.\nColoque um \uf725 núcleo. +onset.detect = O inimigo poderá te detectar em 2 minutos.\nConstrua defesas, mineração e produção. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. + split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -1999,18 +2130,18 @@ block.launch-pad.description = Lança lotes de itens para setores selecionados. block.launch-pad.details = Sistema sub-orbital para transporte ponto-a-ponto de recursos. As cápsulas de carga são frágeis e incapazes de sobreviver à reentrada. block.duo.description = Dispara balas alternadas em inimigos. block.scatter.description = Dispara tiros aglomerados de chumbo, sucata ou metavidro em unidades aéreas. -block.scorch.description = Queima qualquer unidade que estiver próxima. Altamente efetivo se for de perto. +block.scorch.description = Queima qualquer unidade que estiver próxima. Altamente efetivo se for de perto. block.hail.description = Dispara pequenas cápsulas em inimigos terrestres a longas distâncias. block.wave.description = Lança jatos de líquido nos seus inimigos. Automaticamente apaga incêndios se for abastecido com água ou criofluido. -block.lancer.description = Carrega e dispara poderosos feixes de energia. -block.arc.description = Dispara arcos de eletricidade em alvos terrestres. +block.lancer.description = Carrega e dispara poderosos feixes de energia. +block.arc.description = Dispara arcos de eletricidade em alvos terrestres. block.swarmer.description = Dispara misseis teleguiados em inimigos. block.salvo.description = Dispara rápidas rajadas de tiros em inimigos. -block.fuse.description = Dispara três feixes perfurantes em inimigos. +block.fuse.description = Dispara três feixes perfurantes em inimigos. block.ripple.description = Dispara grupos de cápsulas em alvos terrestres a longas distâncias. block.cyclone.description = Dispara aglomerados de fogo antiaéreo explosivos em inimigos próximos. block.spectre.description = Dispara grandes balas em alvos aéreos e terrestres. -block.meltdown.description = Carrega e dispara um poderoso e persistente feixe de laser em inimigos. Requer refrigeradores para operar. +block.meltdown.description = Carrega e dispara um poderoso e persistente feixe de laser em inimigos. Requer refrigeradores para operar. block.foreshadow.description = Dispara um feixe gigante de único alvo a grandes distâncias. Prioriza inimigos com maior vida máxima. block.repair-point.description = Continuamente repara a unidade danificada mais proxima. block.segment.description = Destrói projéteis inimigos que se aproximam. Projéteis a laser não serão detectados. @@ -2038,7 +2169,6 @@ block.logic-display.description = Exibe gráficos arbitrários de um processador block.large-logic-display.description = Exibe gráficos arbitrários de um processador lógico. block.interplanetary-accelerator.description = Uma enorme torre eletromagnética. Acelera a velocidade de fuga dos núcleos para o desdobramento interplanetário. block.repair-turret.description = Conserta continuamente a unidade danificada mais próxima a ela. Opcionalmente, aceita líquido refrigerante. -block.payload-propulsion-tower.description = Estrutura de transporte de carga de longo alcance. Atira cargas para outras torres de propulsão de carga interligadas. #Erekir block.core-bastion.description = O núcleo da base. Blindado. Uma vez destruído, o setor é perdido. @@ -2076,7 +2206,6 @@ block.impact-drill.description = Quando colocados sobre minério, os itens saem block.eruption-drill.description = Uma Broca de Impacto melhorada. Capaz de minerar Tório. Requer Hidrogênio. block.reinforced-conduit.description = Movimenta fluidos para frente. Não aceita entradas de outros blocos, a não ser canos, dos lados. block.reinforced-liquid-router.description = Distribui fluidos igualmente para todos os lados. -block.reinforced-junction.description = Funciona como uma ponte para dois canos se cruzando. block.reinforced-liquid-tank.description = Armazena uma grande quantidade de fluidos. block.reinforced-liquid-container.description = Armazena uma quantidade considerável de fluidos. block.reinforced-bridge-conduit.description = Transporta fluidos sobre estruturas e terrenos. @@ -2192,189 +2321,240 @@ unit.evoke.description = Constrói estruturas para defender o Bastião do Núcle unit.incite.description = Constrói estruturas para defender a Cidadela do Núcleo. Repara estruturas com um feixe. unit.emanate.description = Constrói estruturas para defender o Núcelo Acrópole. Repara estruturas com feixes. -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.wait = Wait a certain number of seconds. -lst.stop = Halt execution of this processor. -lst.lookup = Look up an item/liquid/unit/block type by ID.\nTotal counts of each type can be accessed with:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] -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. -lst.getblock = Get tile data at any location. -lst.setblock = Set tile data at any location. -lst.spawnunit = Spawn unit at a location. -lst.applystatus = Apply or clear a status effect from a unit. -lst.spawnwave = Spawn a wave. -lst.explosion = Create an explosion at a location. -lst.setrate = Set processor execution speed in instructions/tick. -lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. -lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. -lst.setrule = Set a game rule. -lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. -lst.cutscene = Manipulate the player camera. -lst.setflag = Set a global flag that can be read by all processors. -lst.getflag = Check if a global flag is set. -lst.setprop = Sets a property of a unit or building. +lst.read = Ler um número de uma célula de memória vinculada. +lst.write = Escrever um número de uma célula de memória vinculada. +lst.print = Adiciona texto ao buffer de impressão.\nNão exibe nada até [accent]Print Flush[] ser usado. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" +lst.draw = Adicionar uma operação ao buffer de desenho.\nNão exibe nada até [accent]Draw Flush[] ser usado. +lst.drawflush = Liberar operações [accent]Draw[] enfileiradas para um display. +lst.printflush = Liberar operações [accent]Print[] enfileiradas para um bloco de mensagem. +lst.getlink = Obtenha um link de processador por índice. Começa em 0. +lst.control = Controle uma construção. +lst.radar = Localize unidades ao redor de um prédio com alcance. +lst.sensor = Obtenha dados de um edifício ou unidade. +lst.set = Defina uma variável. +lst.operation = Execute uma operação em 1-2 variáveis. +lst.end = Pule para o topo da pilha de instruções. +lst.wait = Aguarde um determinado número de segundos. +lst.stop = Interrompa a execução deste processador. +lst.lookup = Pesquise um tipo de item/líquido/unidade/bloco por ID.\nAs contagens totais de cada tipo podem ser acessadas com:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] +lst.jump = Salte condicionalmente para outra instrução. +lst.unitbind = Vincule à próxima unidade de um tipo e armazene-a em [accent]@unit[]. +lst.unitcontrol = Controle a unidade atualmente vinculada. +lst.unitradar = Localize as unidades ao redor da unidade atualmente vinculada. +lst.unitlocate = Localize um tipo específico de posição/construção em qualquer lugar do mapa.\nRequer uma unidade vinculada. +lst.getblock = Obtenha dados de blocos em qualquer local. +lst.setblock = Defina os dados do bloco em qualquer local. +lst.spawnunit = Gere uma unidade em um local. +lst.applystatus = Aplique ou elimine um efeito de status de uma unidade. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. +lst.spawnwave = Gerar uma onda. +lst.explosion = Crie uma explosão em um local. +lst.setrate = Defina a velocidade de execução do processador em instruções/tick. +lst.fetch = Pesquise unidades, núcleos, jogadores ou edifícios por índice.\nOs índices começam em 0 e terminam na contagem retornada. +lst.packcolor = Empacote [0, 1] componentes RGBA em um único número para desenho ou configuração de regra. +lst.setrule = Defina uma regra do jogo. +lst.flushmessage = Exibe uma mensagem na tela do buffer de texto.\nAguardará até que a mensagem anterior termine. +lst.cutscene = Manipule a câmera do jogador. +lst.setflag = Defina um sinalizador global que possa ser lido por todos os processadores. +lst.getflag = Verifique se um sinalizador global está definido. +lst.setprop = Define uma propriedade de uma unidade ou edifício. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise -logic.nounitbuild = [red]Unit building logic is not allowed here. +logic.nounitbuild = [red]Lógica de construção de unidades não é permitida aqui. -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.config = Building configuration, e.g. sorter item. -lenum.enabled = Whether the block is enabled. +lenum.type = Tipo de edifício/unidade.\ne.g. para qualquer roteador, isso retornará [accent]@router[].\não uma string. +lenum.shoot = Atire em uma posição. +lenum.shootp = Atire em uma unidade/edifício com previsão de velocidade. +lenum.config = Configuração do edifício, por ex. item classificador. +lenum.enabled = Se o bloco está ativado. laccess.color = Cor do iluminador. -laccess.controller = Unit controller. If processor controlled, returns processor.\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]@ctrlCommand[] if unit controller is a player command\nOtherwise, 0. -laccess.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. -laccess.speed = Top speed of a unit, in tiles/sec. +laccess.controller = Controlador de unidade. Se controlado pelo processador, retorna o processador.\nCaso contrário, retorna a própria unidade. +laccess.dead = Se uma unidade/edifício está morta ou não é mais válida. +laccess.controlled = Retorna:\n[accent]@ctrlProcessor[] se o controlador da unidade for o processador\n[accent]@ctrlPlayer[] se o controlador da unidade/edifício for o player\n[accent]@ctrlCommand[] se o controlador da unidade for um comando do player\nCaso contrário , 0. +laccess.progress = Progresso da ação, 0 a 1.\nRetorna a produção, a recarga da torre ou o progresso da construção. +laccess.speed = Velocidade máxima de uma unidade, em ladrilhos/seg. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. -lcategory.unknown = Unknown -lcategory.unknown.description = Uncategorized instructions. -lcategory.io = Input & Output -lcategory.io.description = Modify contents of memory blocks and processor buffers. -lcategory.block = Block Control -lcategory.block.description = Interact with blocks. -lcategory.operation = Operations -lcategory.operation.description = Logical operations. -lcategory.control = Flow Control -lcategory.control.description = Manage execution order. -lcategory.unit = Unit Control -lcategory.unit.description = Give units commands. -lcategory.world = World -lcategory.world.description = Control how the world behaves. +lcategory.unknown = Desconhecido +lcategory.unknown.description = Instruções não categorizadas. +lcategory.io = Entrada e Saída +lcategory.io.description = Modifica o conteúdo dos blocos de memória e buffers do processador. +lcategory.block = Controle de bloco +lcategory.block.description = Interaja com os blocos. +lcategory.operation = Operações +lcategory.operation.description = Operações lógicas. +lcategory.control = Controle de fluxo +lcategory.control.description = Gerencia ordem de execução. +lcategory.unit = Unidade de controle +lcategory.unit.description = Dá comandos às unidades. +lcategory.world = Mundo +lcategory.world.description = Controla como o mundo se comporta. -graphicstype.clear = Fill the display with a color. -graphicstype.color = Set color for next drawing operations. -graphicstype.col = Equivalent to color, but packed.\nPacked colors are written as hex codes with a [accent]%[] prefix.\nExample: [accent]%ff0000[] would be red. -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[]. +graphicstype.clear = Preenche o visor com uma cor. +graphicstype.color = Define a cor para as próximas operações de desenho. +graphicstype.col = Equivalente à cor, mas agrupada.\nAs cores agrupadas são escritas como códigos hexadecimais com um prefixo [accent]%[].\nExemplo: [accent]%ff0000[] seria vermelho. +graphicstype.stroke = Define a largura da linha. +graphicstype.line = Desenha o segmento de linha. +graphicstype.rect = Preenche um retângulo. +graphicstype.linerect = Desenha um contorno retangular. +graphicstype.poly = Preenche um polígono regular. +graphicstype.linepoly = Desenha um contorno de polígono regular. +graphicstype.triangle = Preenche um triângulo. +graphicstype.image = Desenha uma imagem de algum conteúdo.\nex: [accent]@router[] ou [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. -lenum.always = Always true. -lenum.idiv = Integer division. -lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. +lenum.always = Sempre verdade. +lenum.idiv = Divisão inteira. +lenum.div = Divisão.\nRetorna [accent]null[] na divisão por 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.equal = Igual. Coage tipos.\nObjetos não nulos comparados com números tornam-se 1, caso contrário, 0. +lenum.notequal = Não igual. Tipos de coerção. +lenum.strictequal = Igualdade estrita. Não coage tipos.Pode ser usado para verificar [accent]null[]. +lenum.shl = Deslocamento de bit para a esquerda. +lenum.shr = Deslocamento de bits para a direita. +lenum.or = OU bit a bit. +lenum.land = Lógico E. +lenum.and = E bit a bit. +lenum.not = Virar bit a bit. +lenum.xor = XOR bit a bit. +lenum.min = Mínimo de dois números. +lenum.max = Máximo de dois números. +lenum.angle = Ângulo do vetor em graus. +lenum.anglediff = Distância absoluta entre dois ângulos em graus. +lenum.len = Comprimento do vetor. -lenum.sin = Sine, in degrees. -lenum.cos = Cosine, in degrees. -lenum.tan = Tangent, in degrees. +lenum.sin = Seno, em graus. +lenum.cos = Cosseno, em graus. +lenum.tan = Tangente, em graus. -lenum.asin = Arc sine, in degrees. -lenum.acos = Arc cosine, in degrees. -lenum.atan = Arc tangent, in degrees. +lenum.asin = Arco seno, em graus. +lenum.acos = Arco cosseno, em graus. +lenum.atan = Arco tangente, em graus. -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.rand = Decimal aleatório no intervalo [0, valor). +lenum.log = Logaritmo natural (ln). +lenum.log10 = Logaritmo de base 10. +lenum.noise = Ruído simplex 2D. +lenum.abs = Valor absoluto. +lenum.sqrt = Raiz quadrada. -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.any = Qualquer unidade. +lenum.ally = Unidade aliada. +lenum.attacker = Unidade com uma arma. +lenum.enemy = Unidade inimiga. +lenum.boss = Unidade Guardiã. +lenum.flying = Unidade voadora. lenum.ground = Ground unit. -lenum.player = Unit controlled by a player. +lenum.player = Unidade controlada por um jogador. -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.ore = Depósito de minério. +lenum.damaged = Edifício aliado danificado. +lenum.spawn = Ponto de geração do inimigo.\nPode ser um núcleo ou uma posição. +lenum.building = Construção em um grupo específico. -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.battery = Any battery. -lenum.resupply = Resupply points.\nOnly relevant when [accent]"Unit Ammo"[] is enabled. -lenum.reactor = Impact/Thorium reactor. -lenum.turret = Any turret. +lenum.core = Qualquer núcleo. +lenum.storage = Edifício de armazenamento, por ex. Cofre. +lenum.generator = Edifícios que geram energia. +lenum.factory = Edifícios que transformam recursos. +lenum.repair = Pontos de reparo. +lenum.battery = Qualquer bateria. +lenum.resupply = Pontos de reabastecimento.\nRelevante apenas quando [accent]"Unit Ammo"[] está habilitado. +lenum.reactor = Reator de impacto/tório. +lenum.turret = Qualquer torre. -sensor.in = The building/unit to sense. +sensor.in = O edifício/unidade para sentir. -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. +radar.from = Construir para detectar.\nO alcance do sensor é limitado pelo alcance do edifício. +radar.target = Filtre as unidades a serem detectadas. +radar.and = Filtros adicionais. +radar.order = Ordem de classificação. 0 para inverter. +radar.sort = Métrica pela qual classificar os resultados. +radar.output = Variável para gravar a unidade de saída. -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. +unitradar.target = Filtre as unidades a serem detectadas. +unitradar.and = Filtros adicionais. +unitradar.order = Ordem de classificação. 0 para inverter. +unitradar.sort = Métrica pela qual classificar os resultados. +unitradar.output = Variável para gravar a unidade de saída. -control.of = Building to control. -control.unit = Unit/building to aim at. -control.shoot = Whether to shoot. +control.of = Construir para controlar. +control.unit = Unidade/edifício a visar. +control.shoot = Se atirar. -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. +unitlocate.enemy = Se deve localizar edifícios inimigos. +unitlocate.found = Se o objeto foi encontrado. +unitlocate.building = Variável de saída para edifício localizado. +unitlocate.outx = Coordenada X de saída. +unitlocate.outy = Coordenada Y de saída. +unitlocate.group = Grupo de construção para procurar. -lenum.idle = Don't move, but keep building/mining.\nThe default state. -lenum.stop = Stop moving/mining/building. -lenum.unbind = Completely disable logic control.\nResume standard AI. -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.payenter = Enter/land on the payload block the unit is on. -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. - -#Don't translate these yet! -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.idle = Não se mova, mas continue construindo/minerando.\nO estado padrão. +lenum.stop = Pare de mover/mineração/construção. +lenum.unbind = Desabilite completamente o controle lógico.\nRetome AI padrão. +lenum.move = Mover para a posição exata. +lenum.approach = Aproxime-se de uma posição com um raio. +lenum.pathfind = Pathfind para o spawn inimigo. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. +lenum.target = Atire em uma posição. +lenum.targetp = Atire em um alvo com previsão de velocidade. +lenum.itemdrop = Solte um item. +lenum.itemtake = Pegue um item de um edifício. +lenum.paydrop = Solte a carga útil atual. +lenum.paytake = Pegue a carga no local atual. +lenum.payenter = Entre/pouse no bloco de carga em que a unidade está. +lenum.flag = Sinalizador de unidade numérica. +lenum.mine = Mina em uma posição. +lenum.build = Construa uma estrutura. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. +lenum.within = Verifique se a unidade está perto de uma posição. +lenum.boost = Iniciar/parar o reforço. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 806654ccfb..f9dc21bc95 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Sort by stars schematic = Esquema schematic.add = Gravar Esquema... schematics = Esquemas +schematic.search = Search schematics... schematic.replace = Um esquema com esse nome já existe. Deseja substituí-lo? schematic.exists = A schematic by that name already exists. schematic.import = Importar Esquema... @@ -68,7 +69,7 @@ schematic.shareworkshop = Partilhar na Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Rodar Esquema schematic.saved = Esquema gravado. schematic.delete.confirm = Este esquema irá ser completamente apagado. -schematic.rename = Renomear Esquema +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blocos schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.tags = Tags: @@ -77,6 +78,7 @@ schematic.addtag = Add Tag schematic.texttag = Text Tag schematic.icontag = Icon Tag schematic.renametag = Rename Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Delete this tag completely? schematic.tagexists = That tag already exists. stats = Stats @@ -249,11 +251,19 @@ trace = Traçar jogador trace.playername = Nome do jogador: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID unico: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Cliente móvel: [accent]{0} trace.modclient = Cliente Customizado: [accent]{0} trace.times.joined = Times Joined: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = ID do cliente invalido! Reporte o bug. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Banidos server.bans.none = Nenhum jogador banido encontrado! server.admins = Administradores @@ -267,10 +277,11 @@ server.version = [lightgray]Versão: {0} server.custombuild = [accent]Versão customizada confirmban = Certeza que quer banir este jogador? confirmkick = Certeza que quer expulsar o jogador? -confirmvotekick = Você tem certeza de que quer votar para expulsar este jogador? confirmunban = Certeza que quer desbanir este jogador? confirmadmin = Certeza que quer fazer este jogador um administrador? confirmunadmin = Certeza que quer remover o estatus de adminstrador deste jogador? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Entrar no jogo joingame.ip = IP: disconnect = Desconectado. @@ -326,12 +337,23 @@ open = Abrir customize = Customizar cancel = Cancelar command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Abrir Ligação copylink = Copiar ligação back = Voltar @@ -378,9 +400,9 @@ custom = Customizado builtin = Embutido map.delete.confirm = Certeza que quer deletar este mapa? Isto não pode ser desfeito! map.random = [accent]Mapa aleatório -map.nospawn = Este mapa não possui nenhum núcleo para o jogador nascer! Adicione um núcleo[accent] amarelo[] para este mapa no editor. -map.nospawn.pvp = Esse mapa não tem núcleos inimigos para os jogadores nascerem! Adicione[scarlet] Núcleos vermelhos[] no mapa no editor. -map.nospawn.attack = Esse mapa não tem nenhum núcleo inimigo para o jogador atacar! coloque[scarlet] Núcleos[] vermelhos no editor. +map.nospawn = Este mapa não possui nenhum núcleo para o jogador nascer! Adicione um núcleo {0} para este mapa no editor. +map.nospawn.pvp = Esse mapa não tem núcleos inimigos para os jogadores nascerem! Adicione núcleos [scarlet]vermelhos[] no mapa no editor. +map.nospawn.attack = Esse mapa não tem nenhum núcleo inimigo para o jogador atacar! Adicione núcleos {0} no mapa no editor. map.invalid = Erro ao carregar o mapa: Ficheiro de mapa invalido ou corrupto. workshop.update = Atualizar Item workshop.error = Error fetching workshop details: {0} @@ -412,6 +434,12 @@ editor.waves = Hordas: editor.rules = Regras: editor.generation = Geração: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Editar em jogo editor.playtest = Playtest editor.publish.workshop = Publicar na oficina @@ -455,7 +483,7 @@ waves.sort.begin = Begin waves.sort.health = Health waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Hide All waves.units.show = Show All @@ -467,6 +495,8 @@ editor.default = [lightgray] details = Detalhes... edit = Editar... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Nome: editor.spawn = Criar unidade editor.removeunit = Remover unidade @@ -478,6 +508,7 @@ editor.errorlegacy = Esse mapa é velho demais, E usa um formato de mapa legacy editor.errornot = Este não é um ficheiro de mapa. editor.errorheader = Este ficheiro de mapa não é mais válido ou está corrompido. editor.errorname = O mapa não tem nome definido. +editor.errorlocales = Error reading invalid locale bundles. editor.update = Atualizar editor.randomize = Aleatorizar editor.moveup = Move Up @@ -489,6 +520,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Redimen-\nsionar editor.loadmap = Carregar\nmapa editor.savemap = Gravar\nmapa +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Gravado! editor.save.noname = Seu mapa não tem um nome! Coloque um no menu de "Informação do mapa" editor.save.overwrite = O seu mapa substitui um mapa já construído! Coloque um nome diferente no menu "Informação do mapa" @@ -527,6 +559,8 @@ toolmode.eraseores = Apagar minérios toolmode.eraseores.description = Apaga apenas minérios. toolmode.fillteams = Encher times toolmode.fillteams.description = Muda o time do qual todos os blocos pertencem. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Desenhar times toolmode.drawteams.description = Muda o time do qual o bloco pertence. toolmode.underliquid = Under Liquids @@ -549,6 +583,7 @@ filter.clear = Excluir filter.option.ignore = Ignorar filter.scatter = Dispersão filter.terrain = Terreno +filter.logic = Logic filter.option.scale = Escala filter.option.chance = Chance filter.option.mag = Magnitude @@ -571,6 +606,25 @@ filter.option.floor2 = Chão secundário filter.option.threshold2 = Margem secundária filter.option.radius = Raio filter.option.percentile = Percentual +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Largura: height = Altura: @@ -621,9 +675,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -643,12 +700,11 @@ objective.command = [accent]Command Units objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ loadout = Loadout -resources = Resources +resources = Resources resources.max = Max bannedblocks = Blocos banidos objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Adiciona tudo @@ -671,7 +727,7 @@ error.any = Erro de rede desconhecido. error.bloom = Falha ao inicializar bloom.\nSeu aparelho talvez não o suporte. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -707,7 +763,8 @@ sector.curlost = Sector Lost sector.missingresources = [scarlet]Insufficient Core Resources sector.attacked = Sector [accent]{0}[white] under attack! sector.lost = Sector [accent]{0}[white] lost! -sector.captured = Sector [accent]{0}[white]captured! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -915,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -925,14 +983,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field -ability.unitspawn = {0} Factory +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Broca melhor necessária. @@ -972,6 +1063,7 @@ bullet.splashdamage = [stat]{0}[lightgray] Dano em área ~[stat] {1}[lightgray] bullet.incendiary = [stat]Incendiário bullet.homing = [stat]Guiado bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1007,6 +1099,7 @@ unit.items = itens unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Geral @@ -1027,6 +1120,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Água animada setting.animatedshields.name = Escudos animados @@ -1073,13 +1167,14 @@ setting.position.name = Show Player Position setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Volume da Música setting.atmosphere.name = Show Planet Atmosphere +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Volume do ambiente setting.mutemusic.name = Desligar Música setting.sfxvol.name = Volume de Efeitos setting.mutesound.name = Desligar Som setting.crashreport.name = Enviar denuncias de crash anonimas setting.savecreate.name = Criar gravamentos automaticamente -setting.publichost.name = Visibilidade do jogo público +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Limite de Jogadores setting.chatopacity.name = Opacidade do chat setting.lasersopacity.name = Opacidade do Power Laser @@ -1087,6 +1182,8 @@ setting.bridgeopacity.name = Opacidade da Ponte setting.playerchat.name = Mostrar chat em jogo setting.showweather.name = Show Weather Graphics setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Adaptar a interface para exibir o entalhe +setting.macnotch.description = É necessário reiniciar para aplicar as alterações steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Observe que as versões beta do jogo não podem criar lobbies públicos. @@ -1097,6 +1194,7 @@ keybind.title = Refazer teclas keybinds.mobile = [scarlet]A maior parte das teclas aqui não são funcionais em aparelhos móveis. Apenas movimento básico é suportado. category.general.name = Geral category.view.name = Ver +category.command.name = Unit Command category.multiplayer.name = Multijogador category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1114,6 +1212,24 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selecionar região keybind.schematic_menu.name = Menu esquemático @@ -1177,17 +1293,25 @@ mode.pvp.description = Lutar contra outros jogadores locais. mode.attack.name = Ataque mode.attack.description = Sem hordas, com o objetivo de destruir a base inimiga. mode.custom = Regras personalizadas +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Recursos infinitos rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Tempo de horda rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Hordas +rules.airUseSpawns = Air units use spawn points rules.attack = Modo de ataque +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1206,6 +1330,7 @@ rules.unitdamagemultiplier = Multiplicador de dano de Unidade rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Raio de "Não-criação" de core inimigo:[lightgray] (blocos) @@ -1238,6 +1363,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Itens content.liquid.name = Liquidos @@ -1455,6 +1582,7 @@ block.inverted-sorter.name = Inverted Sorter block.message.name = Mensagem block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Illuminator block.overflow-gate.name = Portão Sobrecarregado block.underflow-gate.name = Portão Desobrecarregado @@ -1695,7 +1823,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1813,9 +1940,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2009,7 +2140,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2045,7 +2175,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2162,6 +2291,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2184,6 +2314,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2195,6 +2327,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2207,6 +2380,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2232,6 +2406,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2249,6 +2424,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2310,6 +2486,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2320,8 +2497,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index d8e6fd4d9f..32fd848be3 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -17,7 +17,7 @@ link.bug.description = Ai găsit vreunul? Raportează-l aici linkopen = This server has sent you a link. Are you sure you want to open it?\n\n[sky]{0} linkfail = Linkul nu a putut fi deschis!\nAdresa URL a fost copiată. screenshot = Captură de ecran salvată la {0} -screenshot.invalid = Harta e prea mare. Se poate să nu existe suficientă memorie pentru captura de ecran. +screenshot.invalid = Harta e prea mare. Se poate să nu existe suficientă memorie pentru captura de ecran gameover = Jocul s-a încheiat gameover.disconnect = Deconectare gameover.pvp = Echipa [accent] {0}[] este câștigătoare! @@ -27,9 +27,9 @@ copied = Copiat. indev.notready = Această secțiune a jocului nu este gata încă. load.sound = Sunete -load.map = Hărți +load.map = Hărți load.image = Imagini -load.content = Conținut +load.content = Conținut load.system = Sistem load.mod = Moduri load.scripts = Scripturi @@ -57,6 +57,7 @@ mods.browser.sortstars = Cele mai multe stele schematic = Schemă schematic.add = Salvează Schema... schematics = Scheme +schematic.search = Search schematics... schematic.replace = O schemă cu acel nume există deja. O înlocuiți? schematic.exists = O schemă cu acel nume există deja. schematic.import = Importă Schema... @@ -66,10 +67,10 @@ schematic.browseworkshop = Intră pe Workshop schematic.copy = Copiază în Clipboard schematic.copy.import = Importă din Clipboard schematic.shareworkshop = Partajează pe Workshop -schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Întoarce Schema -schematic.saved = Schemă salvată. +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Întoarce Schema +schematic.saved = Schemă salvată. schematic.delete.confirm = Schema această va fi ștearsă permanent. -schematic.rename = Redenumește Schema +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blocuri schematic.disabled = [scarlet]Schemele sunt dezactivate[]\nNu ai voie să folosești scheme pe această [accent]hartă[] sau [accent]server. schematic.tags = Etichete: @@ -78,6 +79,7 @@ schematic.addtag = Adaugă Etichetă schematic.texttag = Etichetă Text schematic.icontag = Etichetă Iconiță schematic.renametag = Redenumește Eticheta +schematic.tagged = {0} tagged schematic.tagdelconfirm = Vrei să ștergi permanent eticheta? schematic.tagexists = Acea etichetă există deja. @@ -99,7 +101,7 @@ coreattack = < Nucleul este atacat! > nearpoint = [[ [scarlet]PLEACĂ DE LA PUNCTUL DE LANSARE IMEDIAT[] ]\nanihilare imminentă database = Datele Nucleului database.button = Bază de date -savegame = Salvează Jocul +savegame = Salvează Jocul loadgame = Încarcă Jocul joingame = Intră în Joc customgame = Personalizat @@ -109,21 +111,21 @@ none.found = [lightgray] none.inmap = [lightgray] minimap = Minihartă position = Poziție -close = Închide +close = Închide website = Site -quit = Abandonează +quit = Abandonează save.quit = Salvează și Închide maps = Hărți -maps.browse = Selectează Hărți +maps.browse = Selectează Hărți continue = Continuă maps.none = [lightgray]Nu s-au găsit hărți! invalid = Invalid pickcolor = Alege Culoarea -preparingconfig = Se Pregătește Configurația -preparingcontent = Se Pregătește Conținutul -uploadingcontent = Se Încarcă Conținutul -uploadingpreviewfile = Se Încarcă Previzualizarea Fișierului -committingchanges = Se Încarcă Schimbările +preparingconfig = Se Pregătește Configurația +preparingcontent = Se Pregătește Conținutul +uploadingcontent = Se Încarcă Conținutul +uploadingpreviewfile = Se Încarcă Previzualizarea Fișierului +committingchanges = Se Încarcă Schimbările done = Gata feature.unsupported = Dispozitivul tău nu suportă această funcție. @@ -134,7 +136,7 @@ mods.guide = Ghid de Modding mods.report = Raportează Bug mods.openfolder = Deschide Folder mods.viewcontent = Vezi Conținut -mods.reload = Reîncarcă +mods.reload = Reîncarcă mods.reloadexit = Jocul se va opri ca să reîncarce modurile. mod.installed = [[Instalat] mod.display = [gray]Mod:[orange] {0} @@ -199,7 +201,7 @@ techtree.erekir = Erekir research.load = Păstrează Datele research.discard = Renunță research.list = [lightgray]Cercetare: -research = Cercetează +research = Cercetează researched = [lightgray]{0} cercetat. research.progress = {0}% finalizat players = {0} jucători @@ -229,7 +231,7 @@ join.info = Aici poți scrie un [accent]IP de server[] pt a te conecta sau pt a hostserver = Găzduiește Joc Multiplayer invitefriends = Invită Prieteni hostserver.mobile = Găzduiește Joc -host = Găzduiește +host = Găzduiește hosting = [accent]Se deschide serverul... hosts.refresh = Reîncarcă hosts.discovering = Se caută jocur LAN @@ -240,7 +242,7 @@ host.invalid = [scarlet]Nu s-a putut face conectarea la gazdă! servers.local = Servere Locale servers.local.steam = Jocuri Deschise & Servere Locale -servers.remote = Servere de la Distanță +servers.remote = Servere de la Distanță servers.global = Servere ale Comunității servers.disclaimer = Serverele comunității [accent]nu[] sunt deținute sau controlate de către dezvoltator.\n\nServerele pot prezenta conținut generat de utilizatori care nu este potrivit tuturor vârstelor. @@ -253,12 +255,20 @@ trace = Urmărește Jucător trace.playername = Nume jucător: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Client Mobil: [accent]{0} trace.modclient = Client Personalizat: [accent]{0} trace.times.joined = A Intrat: de [accent]{0}[] ori trace.times.kicked = Dat Afară: de [accent]{0}[] ori +trace.ips = IPs: +trace.names = Names: invalidid = ID client invalid! Raportează bugul. -server.bans = Interziși +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team +server.bans = Interziși server.bans.none = Nu s-au găsit jucători intreziși! server.admins = Admini server.admins.none = Nu s-au găsit admini! @@ -268,13 +278,14 @@ server.edit = Editează Server server.outdated = [scarlet]Server Învechit![] server.outdated.client = [scarlet]Client Învechit![] server.version = [gray]v{0} {1} -server.custombuild = [accent]Build Personalizat +server.custombuild = [accent]Build Personalizat confirmban = Sigur vrei să interzici jucătorul "{0}[white]"? confirmkick = Sigur vrei să-l dai afară pe "{0}[white]"? -confirmvotekick = Sigur vrei să-l dai afară pe "{0}[white]"? confirmunban = Sigur vrei ca acest jucător să nu mai fie interzis? confirmadmin = Sigur vrei să-l faci pe "{0}[white]" un admin? confirmunadmin = Sigur vrei ca "{0}[white]" să nu mai fie un admin? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Alătură-te Jocului joingame.ip = Adresă: disconnect = Deconectat. @@ -330,15 +341,26 @@ open = Deschide customize = Personalizează Regulile cancel = Anulare command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Deschide Linkul copylink = Copiază Linkul -back = Înapoi +back = Înapoi max = Maximum objective = Map Objective crash.export = Exportă Crash Logs @@ -366,7 +388,7 @@ commandmode.nounits = [no units] wave = [accent]Valul {0} wave.cap = [accent]Valul {0}/{1} wave.waiting = [lightgray]Val în {0} -wave.waveInProgress = [lightgray]Val în desfășurare +wave.waveInProgress = [lightgray]Val în desfășurare waiting = [lightgray]În așteptare... waiting.players = Se așteaptă jucătorii... wave.enemies = [lightgray]Mai sunt {0} inamici @@ -382,9 +404,9 @@ custom = Personalizată builtin = Prestabilită map.delete.confirm = Ești sigur că vrei să ștergi această hartă? Acțiunea este ireversibilă! map.random = [accent]Hartă Aleatorie -map.nospawn = Harta asta nu are niciun nucleu în care vor apărea jucătorii! Adaugă un nucleu [#{0}]{1}[] acestei hărți în editor. -map.nospawn.pvp = Această hartă nu are niciun nucleu inamic în care să apară jucătorii! Adaugă nuclee[scarlet] care nu sunt portocalii[] acestei hărți în editor. -map.nospawn.attack = Această hartă nu are niciun nucleu inamic pe care să îl atace jucătorii! Adaugă nuclee [#{0}]{1}[] acestei hărți în editor. +map.nospawn = Harta asta nu are niciun nucleu în care vor apărea jucătorii! Adaugă un nucleu {0} acestei hărți în editor. +map.nospawn.pvp = Această hartă nu are niciun nucleu inamic în care să apară jucătorii! Adaugă nuclee [scarlet]care nu sunt portocalii[] acestei hărți în editor. +map.nospawn.attack = Această hartă nu are niciun nucleu inamic pe care să îl atace jucătorii! Adaugă nuclee {0} acestei hărți în editor. map.invalid = Eroare la încărcarea hărții: fișier corupt sau invalid. workshop.update = Fă Update la Item workshop.error = Eroare la preluarea detaliilor din Workshop: {0} @@ -416,10 +438,16 @@ editor.waves = Valuri: editor.rules = Reguli: editor.generation = Generare: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Editează în Joc editor.playtest = Playtest editor.publish.workshop = Publică pe Workshop -editor.newmap = Hartă Nouă +editor.newmap = Hartă Nouă editor.center = Centrează editor.search = Search maps... editor.filters = Filter Maps @@ -459,7 +487,7 @@ waves.sort.begin = Început waves.sort.health = Viață waves.sort.type = Tip waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Ascunde waves.units.show = Vezi Tot @@ -472,6 +500,8 @@ editor.default = [lightgray] details = Detalii... edit = Editează... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Nume: editor.spawn = Adaugă Unitate editor.removeunit = Înlătură Unitate @@ -483,17 +513,19 @@ editor.errorlegacy = Hartă aceasta este prea veche, și folosește un format î editor.errornot = Acesta nu este un fișier cu o hartă. editor.errorheader = Acest fișier de hartă este invalid sau corupf. editor.errorname = Harta nu are un nume definit. Încerci cumva să încarci un fișier cu o salvare de joc? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Update editor.randomize = Aleatoriu editor.moveup = Move Up editor.movedown = Move Down editor.copy = Copy -editor.apply = Aplică +editor.apply = Aplică editor.generate = Generează editor.sectorgenerate = Sector Generate editor.resize = Schimbă Dimensiune editor.loadmap = Încarcă Harta editor.savemap = Salvează Harta +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Salvat! editor.save.noname = Hartă ta nu are un nume! Setează unul în meniul 'Informații despre hartă'. editor.save.overwrite = Hartă ta suprascrie o hartă prestabilită! Alege un nume diferit în meniul 'Informații despre hartă'. @@ -504,12 +536,12 @@ editor.importmap.description = Importă o hartă deja existentă editor.importfile = Importă Fișier editor.importfile.description = Importă un fișier hartă extern editor.importimage = Importă Hartă Veche (Imagine) -editor.importimage.description = Importă o hartă imagine externă +editor.importimage.description = Importă o hartă imagine externă editor.export = Exportă... editor.exportfile = Exportă Fișier -editor.exportfile.description = Exportă un fișier hartă +editor.exportfile.description = Exportă un fișier hartă editor.exportimage = Exportă o Hartă Imagine -editor.exportimage.description = Exportă o hartă imagine conținând doar teren de bază +editor.exportimage.description = Exportă o hartă imagine conținând doar teren de bază editor.loadimage = Importă Hartă Imagine editor.saveimage = Exportă Hartă Imagine editor.unsaved = Sigur vrei să ieși?\n[scarlet]Orice schimbări nesalvate vor fi pierdute. @@ -532,6 +564,8 @@ toolmode.eraseores = Șterge Minereurile toolmode.eraseores.description = Șterge doar minereurile. toolmode.fillteams = Umplere Echipe toolmode.fillteams.description = Umple harta cu echipe în loc de blocuri. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Desenează Echipe toolmode.drawteams.description = Desenează echipe în loc de blocuri. toolmode.underliquid = Under Liquids @@ -549,20 +583,21 @@ filter.oremedian = Mediană Minereu filter.blend = Amestecare filter.defaultores = Minereuri Prestabilite filter.ore = Minereu -filter.rivernoise = Zgomot Vizual Râuri -filter.mirror = Oglindă -filter.clear = Curăță +filter.rivernoise = Zgomot Vizual Râuri +filter.mirror = Oglindă +filter.clear = Curăță filter.option.ignore = Ignoră -filter.scatter = Împrăștie +filter.scatter = Împrăștie filter.terrain = Teren +filter.logic = Logic filter.option.scale = Scară -filter.option.chance = Șansă +filter.option.chance = Șansă filter.option.mag = Magnitudine filter.option.threshold = Cantitate filter.option.circle-scale = Scară circulară filter.option.octaves = Octave -filter.option.falloff = Cădere +filter.option.falloff = Cădere filter.option.angle = Unghi filter.option.tilt = Tilt filter.option.rotate = Rotește @@ -576,13 +611,32 @@ filter.option.wall = Perete filter.option.ore = Minereu filter.option.floor2 = Podea Secundară filter.option.threshold2 = Cantitate Secundară -filter.option.radius = Rază +filter.option.radius = Rază filter.option.percentile = Procent +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Lățime: height = Înălțime: menu = Meniu -play = Joacă +play = Joacă campaign = Campanie load = Încarcă save = Salvează @@ -598,7 +652,7 @@ tutorial.retake = Reia Tutorial editor = Editor mapeditor = Editor Hărți -abandon = Abandonează +abandon = Abandonează abandon.text = Zona aceasta și toate resursele ei vor fi cedate inamicului. locked = Blocat complete = [lightgray]Finalizat: @@ -609,7 +663,7 @@ requirement.produce = Produ {0} requirement.capture = Capturează {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} -launch.text = Lansează +launch.text = Lansează research.multiplayer = Doar gazda poate cerceta noi tehnologii. map.multiplayer = Doar gazda poate vedea harta sectoarelor. uncover = Descoperă @@ -628,9 +682,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -650,13 +707,12 @@ objective.command = [accent]Command Units objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ -loadout = Încărcare +loadout = Încărcare resources = Resurse resources.max = Max bannedblocks = Blocuri Interzise objectives = Objectives bannedunits = Unități Interzise -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Adaugă-le pe toate @@ -679,7 +735,7 @@ error.any = Eroare de rețea necunoscută. error.bloom = Inițializarea strălucirii a eșuat.\nS-ar putea ca dispozitivul tău să nu suporte funcția. weather.rain.name = Ploaie -weather.snow.name = Ninsoare +weather.snowing.name = Ninsoare weather.sandstorm.name = Furtună de nisip weather.sporestorm.name = Furtună de spori weather.fog.name = Ceață @@ -715,8 +771,8 @@ sector.curlost = Sector Pierdut sector.missingresources = [scarlet]Resurse din Nucleu Insuficiente sector.attacked = Sectorul [accent]{0}[white] este atacat! sector.lost = Ai pierdut sectorul [accent]{0}[white]! -#spațiul lipsă de mai jos e intenționat -sector.captured = Ai capturat sectorul [accent]{0}[white]! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Schimbă Iconița sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -827,7 +883,7 @@ settings.language = Limbă settings.data = Datele Jocului settings.reset = Resetează settings.rebind = Reatribuie -settings.resetKey = Resetează +settings.resetKey = Resetează settings.controls = Controale settings.game = Joc settings.sound = Sunet @@ -842,7 +898,7 @@ settings.clearresearch.confirm = Sigur vrei să ștergi toate tehnologiile cerce settings.clearcampaignsaves = Șterge Salvările din Campanie settings.clearcampaignsaves.confirm = Sigur vrei să ștergi toate salvările din campanie? paused = [accent]< Pauză > -clear = Curăță +clear = Curăță banned = [scarlet]Interzis unsupported.environment = [scarlet]Mediu Neacceptat yes = Da @@ -864,7 +920,7 @@ stat.booster = Îmbunătățiri stat.tiles = Teren Necesar stat.affinities = Afinități stat.opposites = Opuși -stat.powercapacity = Capacitate electrică +stat.powercapacity = Capacitate electrică stat.powershot = Electricitate/Glonț stat.damage = Forță stat.targetsair = Lovește Aeronave @@ -875,11 +931,11 @@ stat.shootrange = Rază stat.size = Mărime stat.displaysize = Mărime Monitor Logic stat.liquidcapacity = Capacitate Lichid -stat.powerrange = Rază Electrică +stat.powerrange = Rază Electrică stat.linkrange = Rază Legături -stat.instructions = Instrucțiuni +stat.instructions = Instrucțiuni stat.powerconnections = Maxim Conexiuni -stat.poweruse = Consum Electricitate +stat.poweruse = Consum Electricitate stat.powerdamage = Electricitate/Forța Glonțului stat.itemcapacity = Capacitate Materiale stat.memorycapacity = Capacitate Memorie @@ -891,7 +947,7 @@ stat.weapons = Arme stat.bullet = Glonț stat.moduletier = Module Tier stat.unittype = Unit Type -stat.speedincrease = Creștere Viteză +stat.speedincrease = Creștere Viteză stat.range = Rază stat.drilltier = Minabile stat.drillspeed = Viteză Burghiu (Bază) @@ -927,6 +983,7 @@ stat.abilities = Abilități stat.canboost = Are Propulsor stat.flying = Zboară stat.ammouse = Consum muniție +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Multiplicator Forță stat.healthmultiplier = Multiplicator Viață stat.speedmultiplier = Multiplicator Viteză @@ -937,19 +994,52 @@ stat.immunities = Immunities stat.healing = Reparare ability.forcefield = Câmp de Forță +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Câmp de Reparare -ability.statusfield = {0} Câmp de Stare -ability.unitspawn = Fabrică de {0} +ability.repairfield.description = Repairs nearby units +ability.statusfield = Câmp de Stare +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Fabrică +ability.unitspawn.description = Constructs units ability.shieldregenfield = Câmp Regenerare Scut +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Mișcare Fulger +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Câmp de Energie: [accent]{0}[] forță pe ~ [accent]{1}[] blocuri / [accent]{2}[] ținte +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Câmp de Energie +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Burghiu Mai Bun Necesar -bar.noresources = Resurse lipsă -bar.corereq = Plasare pe Nucleu Necesară +bar.noresources = Resurse lipsă +bar.corereq = Plasare pe Nucleu Necesară bar.corefloor = Core Zone Tile Required bar.cargounitcap = Cargo Unit Cap Reached bar.drillspeed = Viteză Minare: {0}/s @@ -965,15 +1055,15 @@ bar.items = Materiale: {0} bar.capacity = Capacitate: {0} bar.unitcap = {0} {1}/{2} bar.liquid = Lichid -bar.heat = Căldură +bar.heat = Căldură bar.instability = Instability bar.heatamount = Heat: {0} bar.heatpercent = Heat: {0} ({1}%) -bar.power = Electricitate +bar.power = Electricitate bar.progress = Progres bar.loadprogress = Progress bar.launchcooldown = Launch Cooldown -bar.input = Necesită +bar.input = Necesită bar.output = Produce bar.strength = [stat]{0}[lightgray]x putere @@ -984,6 +1074,7 @@ bullet.splashdamage = [stat]{0}[lightgray] forță pe raza ~[stat] {1}[lightgray bullet.incendiary = [stat]incendiar bullet.homing = [stat]cu radar bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x fragmente: @@ -1012,13 +1103,14 @@ unit.seconds = secunde unit.minutes = min unit.persecond = /sec unit.perminute = /min -unit.timesspeed = x viteză +unit.timesspeed = x viteză unit.percent = % unit.shieldhealth = viață scut unit.items = materiale unit.thousands = mii unit.millions = mil unit.billions = mld +unit.shots = shots unit.pershot = /lovitură category.purpose = Utilizare category.general = General @@ -1027,7 +1119,7 @@ category.liquids = Lichide category.items = Materiale category.crafting = Necesită/Produce category.function = Funcționare -category.optional = Îmbunătățiri opționale +category.optional = Îmbunătățiri opționale setting.skipcoreanimation.name = Sari peste Animația de Lansare/Aterizare a Nucleului setting.landscape.name = Blochează Mod Peisaj setting.shadows.name = Umbre @@ -1039,10 +1131,11 @@ setting.backgroundpause.name = Pune Pauză în Fundal setting.buildautopause.name = Autopauză de la Construit setting.doubletapmine.name = Dublu-Click pt a Mina setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Dezactivează Modurile în Cazul unui Crash la Pornire setting.animatedwater.name = Suprafețe Animate setting.animatedshields.name = Scuturi Animate -setting.playerindicators.name = Indicatori Jucător +setting.playerindicators.name = Indicatori Jucător setting.indicators.name = Indicatori Inamic setting.autotarget.name = Auto-Țintire setting.keyboard.name = Controale Mouse+Tastatură @@ -1054,7 +1147,7 @@ setting.uiscale.name = Scară Interfață setting.uiscale.description = Repornire necesară pt a aplica schimbările. setting.swapdiagonal.name = Plasează Mereu Diagonal setting.difficulty.training = Antrenament -setting.difficulty.easy = Ușor +setting.difficulty.easy = Ușor setting.difficulty.normal = Normal setting.difficulty.hard = Greu setting.difficulty.insane = Nebunesc @@ -1084,37 +1177,41 @@ setting.coreitems.name = Vezi Materialele din Nucleu setting.position.name = Vezi Poziția Jucătorului setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Volumul Muzicii -setting.atmosphere.name = Vezi Atmosfera Planetelor +setting.atmosphere.name = Vezi Atmosfera Planetelor +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Volum Ambiental setting.mutemusic.name = Muzica pe Mut setting.sfxvol.name = Volum Efecte Sonore setting.mutesound.name = Sunetul pe Mut setting.crashreport.name = Trimite Rapoarte de Crash anonime setting.savecreate.name = Auto-Creează Salvări -setting.publichost.name = Vizibilitatea Jocurilor Publice -setting.playerlimit.name = Limita Jucătorilor +setting.steampublichost.name = Public Game Visibility +setting.playerlimit.name = Limita Jucătorilor setting.chatopacity.name = Opacitate Chat setting.lasersopacity.name = Opacitate Laser Electric setting.bridgeopacity.name = Opacitate Poduri setting.playerchat.name = Vezi Chat Temporar setting.showweather.name = Vezi Vremea setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Adaptați interfața pentru a afișa notch-ul +setting.macnotch.description = Repornire necesară pt a aplica schimbările. steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = De reținut că versiunile beta ale jocului nu poate face servere publice. uiscale.reset = Scara interfeței a fost schimbată.\nApasă "OK" pt a confirma această scară.\n[scarlet]Revin setările și se iese în [accent] {0}[] secunde... -uiscale.cancel = Anulare și ieșire -setting.bloom.name = Strălucire +uiscale.cancel = Anulare și ieșire +setting.bloom.name = Strălucire keybind.title = Reatribuie Taste keybinds.mobile = [scarlet]Majoritatea tastelor atribuite aici nu funcționează pe mobil. Doar mișcările direcționale de bază sunt suportate. category.general.name = General category.view.name = Privire +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Selectare Bloc placement.blockselectkeys = \n[lightgray]Taste: [{0}, keybind.respawn.name = Regenerare -keybind.control.name = Controlează Unități -keybind.clear_building.name = Șterge Clădirea +keybind.control.name = Controlează Unități +keybind.clear_building.name = Șterge Clădirea keybind.press = Apasă o tastă... keybind.press.axis = Apasă o axă sau o tastă... keybind.screenshot.name = Captură Hartă @@ -1126,6 +1223,24 @@ keybind.mouse_move.name = Urmărește Mouseul keybind.pan.name = Mișcă Harta keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selectează Regiunea keybind.schematic_menu.name = Meniu Scheme @@ -1133,7 +1248,7 @@ keybind.schematic_flip_x.name = Întoarce Schema X keybind.schematic_flip_y.name = Întoarce Schema Y keybind.category_prev.name = Categoria precedentă keybind.category_next.name = Categoria următoare -keybind.block_select_left.name = Selectează Bloc Stânga +keybind.block_select_left.name = Selectează Bloc Stânga keybind.block_select_right.name = Selectează Bloc Dreapta keybind.block_select_up.name = Selectează Bloc Sus keybind.block_select_down.name = Selectează Bloc Jos @@ -1167,9 +1282,9 @@ keybind.planet_map.name = Harta Planetei keybind.research.name = Cercetare keybind.block_info.name = Informațiile Blocului keybind.chat.name = Chat -keybind.player_list.name = Listă Jucători +keybind.player_list.name = Listă Jucători keybind.console.name = Consolă -keybind.rotate.name = Rotește +keybind.rotate.name = Rotește keybind.rotateplaced.name = Rotește Existent (Ține) keybind.toggle_menus.name = Pornește/Oprește Meniuri keybind.chat_history_prev.name = Istoric Chat Înapoi @@ -1189,17 +1304,25 @@ mode.pvp.description = Luptă împotriva altor jucători local.\n[gray]E nevoie mode.attack.name = Atac mode.attack.description = Distruge baza inamicului. \n[gray]E nevoie de un nucleu Agresor (roșu) pe hartă pt a juca. mode.custom = Reguli Personalizate +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Resurse Infinite rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactoarele Explodează rules.coreincinerates = Nucleul Incinerează Resursele în Plus rules.disableworldprocessors = Disable World Processors rules.schematic = Se Pot Folosi Scheme rules.wavetimer = Valuri pe Timp rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Valuri +rules.airUseSpawns = Air units use spawn points rules.attack = Modul Atac +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1218,6 +1341,7 @@ rules.unitdamagemultiplier = Multiplicatorul Deteriorării Unităților rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Nucleele Contribuie la Limita Unităților +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Limita de Bază a Unităților rules.limitarea = Limit Map Area rules.enemycorebuildradius = Interzisă Construirea în Jurul Nucleului Inamic:[lightgray] (pătrate) @@ -1250,6 +1374,8 @@ rules.weather = Vreme rules.weather.frequency = Frevență: rules.weather.always = Încontinuu rules.weather.duration = Durată: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Materiale content.liquid.name = Lichide @@ -1469,6 +1595,7 @@ block.inverted-sorter.name = Sortator Invers block.message.name = Mesaj block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Iluminator block.overflow-gate.name = Poartă de Revărsare block.underflow-gate.name = Poartă de Subversare @@ -1709,7 +1836,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1828,9 +1954,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -1955,7 +2085,7 @@ block.power-node-large.description = Un nod electric avansat cu o rază mare. block.surge-tower.description = Un nod electric cu o rază extrem de mare dar cu mai puține conexiuni disponibile. block.diode.description = Transportă energia din baterii într-o direcție, dar doar dacă partea cealaltă are mai puțină energie stocată. block.battery.description = Stochează electricitatea pt rezerve atunci când există un surplus în rețea. Oferă electricitate atunci când există un deficit. -block.battery-large.description = Stochează electricitatea pt rezerve atunci când există un surplus în rețea. Oferă electricitate atunci când există un deficit. Capacitate mai mare decât cea a bateriei obișnuite. +block.battery-large.description = Stochează electricitatea pt rezerve atunci când există un surplus în rețea. Oferă electricitate atunci când există un deficit. Capacitate mai mare decât cea a bateriei obișnuite. block.combustion-generator.description = Generează electricitate arzând materiale inflamabile, precum cărbunele. block.thermal-generator.description = Generează electricitate atunci când este plasat în locuri calde. block.steam-generator.description = Generează electricitate arzând materiale inflamabile și convertind apa în abur. @@ -1978,7 +2108,7 @@ block.core-shard.details = Prima versiune. Compact. Autoreprodus. Echipat cu pro block.core-foundation.description = Nucleul bazei. Bine armat. Stochează mai multe resurse decât nucleul Shard. block.core-foundation.details = A doua versiune. block.core-nucleus.description = Nucleul bazei. Extrem de bine armat. Stochează cantități masive de resurse. -block.core-nucleus.details = A treia și ultima versiune. +block.core-nucleus.details = A treia și ultima versiune. block.vault.description = Stochează o mare cantitate de materiale de orice tip. Conținutul poate fi recuperat folosind un descărcător. block.container.description = Stochează o mică cantitate de materiale de orice tip. Conținutul poate fi recuperat folosind un descărcător. block.unloader.description = Descarcă materialele din orice bloc din apropiere, mai puțin cele de transport. @@ -2025,7 +2155,6 @@ block.logic-display.description = Afișează grafica transmisă de un procesor l block.large-logic-display.description = Afișează grafica transmisă de un procesor logic. block.interplanetary-accelerator.description = Un turn masiv cu o armă railgun electromagnetică. Accelerează nucleele la viteză cosmică pt lansare interplanetară. block.repair-turret.description = Repară încontinuu cea mai deteriorată unitate din vecinătate. Poate accepta răcitor. -block.payload-propulsion-tower.description = Structură de transport al încărcăturii pe distanțe mari. Lansează încărcătura către un alt turn propulsor conectat. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2061,7 +2190,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2180,6 +2308,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Citește un număr dintr-o celulă de memorie conectată. lst.write = Scrie un număr într-o celulă de memorie conectată. lst.print = Adaugă text în bufferul de tipărire.\nNu tipărește decât când se execută [accent]Print Flush[]. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Adaugă o operație în bufferul de desenare.\nNu afișează decât când se execută [accent]Draw Flush[]. lst.drawflush = Afișează pe un monitor instrucțiunile [accent]Draw[] aflate în așteptare. lst.printflush = Tipărește într-un bloc Mesaj instrucțiunile [accent]Print[] aflate în așteptare. @@ -2202,6 +2331,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2213,6 +2344,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Nu ai voie să construiești cu unitățile folosind procesoare. @@ -2228,6 +2400,7 @@ laccess.dead = Specifică dacă o unitate sau clădire a murit/nu mai e validă. laccess.controlled = Returnează:\n[accent]@ctrlProcessor[] dacă controlorul unității e procesor\n[accent]@ctrlPlayer[] dacă controlorul unității/clădirii e jucător\n[accent]@ctrlFormation[] dacă unitatea e într-o formație\nAltfel dă 0. laccess.progress = Progresul acțiunii, de la 0 la 1.\nReturnează progresul producției, al construcției sau reîncărcarea armelor. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2254,6 +2427,7 @@ graphicstype.poly = Desenează un poligon regulat. graphicstype.linepoly = Desenează conturul unui poligon regulat. graphicstype.triangle = Desenează un triunghi. graphicstype.image = Desenează imaginea unui obiect din joc.\nde ex.: [accent]@router[] sau [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Mereu adevărat. lenum.idiv = Împărțirea naturală a numerelor (int). @@ -2273,6 +2447,7 @@ lenum.xor = XOR/disjuncție exclusivă. Ține cont de biți. lenum.min = Minimul a două numere. lenum.max = Maximul a două numere. lenum.angle = Unghiul unui vector în grade. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Lungimea unui vector. lenum.sin = Sinus în grade. @@ -2347,6 +2522,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Mergi la această poziție. lenum.approach = Apropie-te la o anumită distanță de poziție. lenum.pathfind = Găsește ruta către punctul de lansare inamic. Poate fi un nucleu. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Lovește către o poziție. lenum.targetp = Lovește o țintă. Anticipează viteza țintei și a proiectilului. lenum.itemdrop = Descarcă o bucată de material. @@ -2357,8 +2533,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Oferă o etichetă numerică unității. lenum.mine = Minează din această locație. lenum.build = Construiește o structură. -lenum.getblock = Obține clădirea și tipul clădirii aflate la coordonatele specificate.\nUnitatea trebuie să se afle în raza poziției.\nBlocurile solide care nu sunt clădiri vor avea tipul [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Verifică dacă unitatea se află în apropierea poziției. lenum.boost = Pornește/oprește propulsorul. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 9b82515ed4..51b5b032bd 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -1,4 +1,4 @@ -credits.text = Создатель [royal]Anuken[] — [sky]anukendev@gmail.com[]\n\nЕсть недоработки в переводе или хотите найти союзников для совместной игры?\nПишите в оф. русский [accent]discord-сервер Mindustry[].\n\nРедакторы и переводчики на русский язык:\n[blue]Prosta4ok_ua[green]#[yellow]6336\n[darkgray]XZimur[]\n[#30FF30]Beryllium\n[tan]Félix [slate]Córvus\n[orange]Vanguard\n[#a00000]Slotterleet[]\n[unlaunched]Даркнесс#3729[]\n[white]lucin#0949[] +credits.text = Создатель [royal]Anuken[] — [sky]anukendev@gmail.com[]\n\nЕсть недоработки в переводе или хотите найти союзников для совместной игры?\nПишите в оф. русский [accent]discord-сервер Mindustry[].\n\nРедакторы и переводчики на русский язык:\n[blue]Prosta4ok_ua[green]#[yellow]6336\n[darkgray]XZimur[]\n[lightgray]routerchain\n[tan]Félix [slate]Córvus\n[orange]Vanguard\n[#a00000]Slotterleet[]\n[unlaunched]inflexibledarkness[]\n[white]lucin#0949[] credits = Авторы contributors = Переводчики и помощники discord = Присоединяйтесь к нашему Discord! @@ -57,6 +57,7 @@ mods.browser.sortstars = Сортировка по количеству звёз schematic = Схема schematic.add = Сохранить схему… schematics = Схемы +schematic.search = Поиск схем… schematic.replace = Схема с таким названием уже существует. Заменить её? schematic.exists = Схема с таким названием уже существует. schematic.import = Импортировать схему… @@ -69,7 +70,7 @@ schematic.shareworkshop = Поделиться в Мастерской schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Отразить схему schematic.saved = Схема сохранена. schematic.delete.confirm = Эта схема будет поджарена Испепелителем. -schematic.rename = Переименовать схему +schematic.edit = Редактировать схему schematic.info = {0}x{1}, {2} блоков schematic.disabled = [scarlet]Схемы отключены[]\nНа этой [accent]карте[] или [accent]сервере[] запрещено использование схем. schematic.tags = Теги: @@ -78,6 +79,7 @@ schematic.addtag = Добавить тег schematic.texttag = Текстовый тег schematic.icontag = Символьный тег schematic.renametag = Переименовать тег +schematic.tagged = {0} отмечено schematic.tagdelconfirm = Удалить этот тег навсегда? schematic.tagexists = Такой тег уже существует. @@ -253,11 +255,19 @@ trace = Отслеживать игрока trace.playername = Имя игрока: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Мобильный клиент: [accent]{0} trace.modclient = Пользовательский клиент: [accent]{0} trace.times.joined = Присоединялся раз: [accent]{0} trace.times.kicked = Был выгнан раз: [accent]{0} +trace.ips = Все адреса: +trace.names = Имена: invalidid = Недопустимый ID клиента! Отправьте отчёт об ошибке. +player.ban = Заблокировать +player.kick = Выгнать +player.trace = Статистика +player.admin = Переключить администратора +player.team = Сменить команду server.bans = Блокировки server.bans.none = Заблокированных игроков нет! server.admins = Администраторы @@ -271,12 +281,13 @@ server.version = [gray]Версия: {0} {1} server.custombuild = [accent]Пользовательская сборка confirmban = Вы действительно хотите заблокировать игрока «{0}[white]»? confirmkick = Вы действительно хотите выгнать игрока «{0}[white]»? -confirmvotekick = Вы действительно хотите голосованием выгнать игрока «{0}[white]»? confirmunban = Вы действительно хотите разблокировать этого игрока? confirmadmin = Вы действительно хотите сделать игрока «{0}[white]» администратором? confirmunadmin = Вы действительно хотите убрать игрока «{0}[white]» из администраторов? +votekick.reason = Причина +votekick.reason.message = Вы уверены, что хотите голосованием выгнать "{0}[white]"?\nЕсли да, введите причину: joingame.title = Присоединиться к игре -joingame.ip = Адрес: +joingame.ip = IP: disconnect = Отключено. disconnect.error = Ошибка соединения. disconnect.closed = Соединение закрыто. @@ -330,12 +341,23 @@ open = Открыть customize = Настроить правила cancel = Отмена command = Командовать +command.queue = [lightgray][Queuing] command.mine = Добывать command.repair = Ремонтировать command.rebuild = Восстанавливать command.assist = Помогать игроку command.move = Двигаться command.boost = Лететь +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Открыть ссылку copylink = Скопировать ссылку back = Назад @@ -382,9 +404,9 @@ custom = Пользовательская builtin = Встроенная map.delete.confirm = Вы действительно хотите удалить эту карту? Это действие не может быть отменено! map.random = [accent]Случайная карта -map.nospawn = На этой карте ни одного ядра, в котором игрок может появиться! Добавьте ядро команды [#{0}]{1}[] на эту карту в редакторе. +map.nospawn = На этой карте ни одного ядра, в котором игрок может появиться! Добавьте ядро команды {0} на эту карту в редакторе. map.nospawn.pvp = На этой карте нет вражеских ядер, в которых игрок может появиться! Добавьте [scarlet]вражеское[] ядро на эту карту в редакторе. -map.nospawn.attack = На этой карте нет вражеских ядер для атаки игроком! Добавьте ядро команды [#{0}]{1}[] на эту карту в редакторе. +map.nospawn.attack = На этой карте нет вражеских ядер для атаки игроком! Добавьте ядро команды {0} на эту карту в редакторе. map.invalid = Ошибка загрузки карты: повреждённый или недопустимый файл карты. workshop.update = Обновить содержимое workshop.error = Ошибка загрузки информации из Мастерской: {0} @@ -416,6 +438,12 @@ editor.waves = Волны: editor.rules = Правила: editor.generation = Генерация: editor.objectives = Цели +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Редактировать в игре editor.playtest = Опробовать карту editor.publish.workshop = Опубликовать в Мастерской @@ -458,8 +486,8 @@ waves.sort.reverse = Обратная сортировка waves.sort.begin = Начало waves.sort.health = Здоровье waves.sort.type = Тип -waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.search = Поиск волн... +waves.filter = Фильтр единиц waves.units.hide = Скрыть все waves.units.show = Показать все @@ -472,6 +500,8 @@ editor.default = [lightgray]<По умолчанию> details = Подробности… edit = Редактировать… variables = Переменные +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Название: editor.spawn = Создать боевую единицу editor.removeunit = Удалить боевую единицу @@ -483,6 +513,7 @@ editor.errorlegacy = Эта карта слишком старая и испол editor.errornot = Это не файл карты. editor.errorheader = Этот файл карты недействителен или повреждён. editor.errorname = Карта не имеет имени. Может быть, вы пытаетесь загрузить сохранение? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Обновить editor.randomize = Случайно editor.moveup = Выше @@ -494,6 +525,7 @@ editor.sectorgenerate = Генерация сектора editor.resize = Изменить\nразмер editor.loadmap = Загрузить\nкарту editor.savemap = Сохранить\nкарту +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Сохранено! editor.save.noname = У вашей карты нет имени! Назовите её в меню «Информация о карте». editor.save.overwrite = Ваша карта не может быть записана поверх встроенной карты! Введите другое название в меню «Информация о карте» @@ -532,6 +564,8 @@ toolmode.eraseores = Стереть руды toolmode.eraseores.description = Стереть только руды. toolmode.fillteams = Изменить команду блоков toolmode.fillteams.description = Изменяет принадлежность\nблоков к команде. +toolmode.fillerase = Стереть тип +toolmode.fillerase.description = Стирает все блоки этого типа. toolmode.drawteams = Изменить команду блока toolmode.drawteams.description = Изменяет принадлежность\nблока к команде. toolmode.underliquid = Под жидкостями @@ -555,6 +589,7 @@ filter.clear = Очистить filter.option.ignore = Игнорировать filter.scatter = Сеятель filter.terrain = Ландшафт +filter.logic = Logic filter.option.scale = Масштаб фильтра filter.option.chance = Шанс @@ -578,6 +613,25 @@ filter.option.floor2 = Вторая поверхность filter.option.threshold2 = Вторичный предельный порог filter.option.radius = Радиус filter.option.percentile = Процентиль +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Ширина: height = Высота: @@ -628,9 +682,12 @@ objective.destroycore.name = Уничтожить ядро objective.commandmode.name = Командовать единицей objective.flag.name = Флаг marker.shapetext.name = Фигура с текстом -marker.minimap.name = Миникарта +marker.point.name = Point marker.shape.name = Фигура marker.text.name = Текст +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Фон marker.outline = Контур objective.research = [accent]Исследуйте:\n[]{0}[lightgray]{1} @@ -656,7 +713,6 @@ resources.max = Максимум bannedblocks = Запрещённые блоки objectives = Цели bannedunits = Запрещённые единицы -rules.hidebannedblocks = Скрыть запрещенные блоки bannedunits.whitelist = Запрещенные единицы как белый список bannedblocks.whitelist = Запрещенные блоки как белый список addall = Добавить всё @@ -679,13 +735,13 @@ error.any = Неизвестная сетевая ошибка. error.bloom = Не удалось инициализировать свечение (Bloom).\nВозможно, ваше устройство не поддерживает его. weather.rain.name = Дождь -weather.snow.name = Снегопад +weather.snowing.name = Снегопад weather.sandstorm.name = Песчаная буря weather.sporestorm.name = Споровая буря weather.fog.name = Туман campaign.playtime = \uf129 [lightgray]Общее время игры: {0} -campaign.complete = [accent]Поздравляем.\n\nВражеская фракция на планете {0} была повержена.\n[lightgray]Последний вражеский сектор был захвачен. +campaign.complete = [accent]Поздравляем.\n\nВражеская фракция на планете {0} была повержена.\n[lightgray]Последний вражеский сектор был захвачен. sectorlist = Секторы sectorlist.attacked = {0} под атакой @@ -716,8 +772,8 @@ sector.curlost = Сектор потерян sector.missingresources = [scarlet]Недостаточно ресурсов для высадки sector.attacked = Сектор [accent]{0}[white] атакован! sector.lost = Сектор [accent]{0}[white] потерян! -#note: the missing space in the line below is intentional (недостающий пробел управляется кодом) -sector.captured = Сектор [accent]{0}[white]захвачен! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Изменить иконку sector.noswitch.title = Перемещение между секторами sector.noswitch = Вы не можете переключаться между секторами, пока существующий сектор находится под атакой.\n\nСектор: [accent]{0}[] на [accent]{1}[] @@ -928,6 +984,7 @@ stat.abilities = Способности stat.canboost = Может взлететь stat.flying = Летающий stat.ammouse = Использование боеприпасов +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Множитель урона stat.healthmultiplier = Множитель прочности stat.speedmultiplier = Множитель скорости @@ -938,14 +995,46 @@ stat.immunities = Невосприимчив stat.healing = Ремонт ability.forcefield = Силовое поле +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Ремонтирующее поле -ability.statusfield = {0} Усиливающее поле -ability.unitspawn = Завод единиц «{0}» +ability.repairfield.description = Repairs nearby units +ability.statusfield = Усиливающее поле +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Завод единиц � +ability.unitspawn.description = Constructs units ability.shieldregenfield = Поле восстановления щита +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Молнии при движении +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Дуговой щит +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Поле подавления регенерации -ability.energyfield = Энергетическое поле: [accent]{0}[] урона ~ [accent]{1}[] блоков / [accent]{2}[] целей +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Энергетическое поле +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Доступен перенос только в ядро bar.drilltierreq = Требуется бур получше @@ -985,6 +1074,7 @@ bullet.splashdamage = [stat]{0}[lightgray] урона в радиусе ~[stat] bullet.incendiary = [stat]зажигательный bullet.homing = [stat]самонаводящийся bullet.armorpierce = [stat]бронебойный +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} сек[lightgray] подавления регенерации в радиусе ~ [stat]{1}[lightgray] блоков bullet.interval = [stat]{0}/сек[lightgray] интервальный(ых) снаряд(ов): bullet.frags = [stat]{0}[lightgray]x осколочный(ых) снаряд(ов): @@ -1020,6 +1110,7 @@ unit.items = предметов unit.thousands = к unit.millions = М unit.billions = кM +unit.shots = shots unit.pershot = /выстрел category.purpose = Назначение category.general = Основные @@ -1040,6 +1131,7 @@ setting.backgroundpause.name = Фоновая пауза setting.buildautopause.name = Автоматическая приостановка строительства setting.doubletapmine.name = Добыча руды двойным нажатием setting.commandmodehold.name = Удерживать для командования боевыми единицами +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Отключение модификаций после вылета при запуске setting.animatedwater.name = Анимированные поверхности setting.animatedshields.name = Анимированные щиты @@ -1086,13 +1178,14 @@ setting.position.name = Отображать координаты игрока setting.mouseposition.name = Показывать позицию курсора setting.musicvol.name = Громкость музыки setting.atmosphere.name = Отображать атмосферу планеты +setting.drawlight.name = Отображать тени/освещение setting.ambientvol.name = Громкость окружения setting.mutemusic.name = Заглушить музыку setting.sfxvol.name = Громкость эффектов setting.mutesound.name = Заглушить звук setting.crashreport.name = Отправлять анонимные отчёты о вылетах setting.savecreate.name = Автоматическое создание сохранений -setting.publichost.name = Общедоступность игры +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Ограничение игроков setting.chatopacity.name = Непрозрачность чата setting.lasersopacity.name = Непрозрачность лазеров энергоснабжения @@ -1100,6 +1193,8 @@ setting.bridgeopacity.name = Непрозрачность мостов setting.playerchat.name = Отображать облака чата над игроками setting.showweather.name = Отображать погоду setting.hidedisplays.name = Скрыть логические дисплеи +setting.macnotch.name = Адаптировать интерфейс к вырезу на экране +setting.macnotch.description = Для вступления изменений в силу требуется перезагрузка игры steam.friendsonly = Только друзья steam.friendsonly.tooltip = Только ли друзья из Steam могут присоединяться к вашей игре.\nУбрав эту галочку, вы сделаете вашу игру публичной - присоединиться сможет любой желающий. public.beta = Имейте в виду, что бета-версия игры не может делать игры публичными. @@ -1110,6 +1205,7 @@ keybind.title = Настройка управления keybinds.mobile = [scarlet]Большинство комбинаций клавиш здесь не работает на мобильных устройствах. Поддерживается только базовое движение. category.general.name = Основное category.view.name = Просмотр +category.command.name = Unit Command category.multiplayer.name = Сетевая игра category.blocks.name = Выбор блока placement.blockselectkeys = \n[lightgray]Клавиша: [{0}, @@ -1127,6 +1223,24 @@ keybind.mouse_move.name = Следовать за курсором keybind.pan.name = Панорамирование камеры keybind.boost.name = Полёт/ускорение keybind.command_mode.name = Командование боевыми единицами +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Перестроить в области keybind.schematic_select.name = Выбрать область keybind.schematic_menu.name = Меню схем @@ -1190,16 +1304,24 @@ mode.pvp.description = Сражайтесь против других игрок mode.attack.name = Атака mode.attack.description = Уничтожьте вражескую базу.\n[gray]Для игры требуется вражеское ядро на карте. mode.custom = Пользовательские правила +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Скрыть запрещенные блоки rules.infiniteresources = Бесконечные ресурсы rules.onlydepositcore = Разрешен перенос только в ядро +rules.derelictrepair = Разрешить починку покинутых построек rules.reactorexplosions = Взрывы реакторов rules.coreincinerates = Ядро сжигает избыток ресурсов rules.disableworldprocessors = Отключить мировые процессоры rules.schematic = Разрешить схемы rules.wavetimer = Интервал волн rules.wavesending = Отправка волн +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Волны +rules.airUseSpawns = Air units use spawn points rules.attack = Режим атаки +rules.buildai = ИИ строит базы +rules.buildaitier = Уровень баз ИИ rules.rtsai = ИИ в реальном времени rules.rtsminsquadsize = Минимальный размер отряда rules.rtsmaxsquadsize = Максимальный размер отряда @@ -1208,7 +1330,7 @@ rules.rtsminattackweight = Минимальный вес для атаки rules.cleanupdeadteams = Очистка строений побежденных команд (PvP) rules.corecapture = Захват ядра после уничтожения rules.polygoncoreprotection = Полигональная защита ядер -rules.placerangecheck = Запретить размещение турелей возле вражеских построек +rules.placerangecheck = Запретить размещение построек возле врага rules.enemyCheat = Бесконечные ресурсы ИИ rules.blockhealthmultiplier = Множитель прочности блоков rules.blockdamagemultiplier = Множитель урона блоков @@ -1219,6 +1341,7 @@ rules.unitdamagemultiplier = Множитель урона боев. ед. rules.unitcrashdamagemultiplier = Множитель урона от падения боев. ед. rules.solarmultiplier = Множитель солнечной энергии rules.unitcapvariable = Ядра увеличивают лимит единиц +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Начальный лимит единиц rules.limitarea = Ограничить область карты rules.enemycorebuildradius = Радиус защиты враж. ядер:[lightgray] (блок.) @@ -1228,7 +1351,7 @@ rules.buildcostmultiplier = Множитель затрат на строите rules.buildspeedmultiplier = Множитель скорости строительства rules.deconstructrefundmultiplier = Множитель возврата ресурсов при разборке rules.waitForWaveToEnd = Волны ожидают врагов -rules.wavelimit = Map Ends After Wave +rules.wavelimit = Игра заканчивается после волны rules.dropzoneradius = Радиус зоны высадки врагов:[lightgray] (блоков) rules.unitammo = Боев. ед. требуют боеприпасы rules.enemyteam = Команда Врагов @@ -1251,6 +1374,8 @@ rules.weather = Погода rules.weather.frequency = Периодичность: rules.weather.always = Всегда rules.weather.duration = Длительность: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Предметы content.liquid.name = Жидкости @@ -1470,6 +1595,7 @@ block.inverted-sorter.name = Инвертированный сортировщи block.message.name = Сообщение block.reinforced-message.name = Усиленное сообщение block.world-message.name = Мировое сообщение +block.world-switch.name = World Switch block.illuminator.name = Осветитель block.overflow-gate.name = Избыточный затвор block.underflow-gate.name = Избыточный шлюз @@ -1605,7 +1731,7 @@ block.arkyic-stone.name = Аркический камень block.rhyolite-vent.name = Риолитовое жерло block.carbon-vent.name = Углеродное жерло block.arkyic-vent.name = Аркическое жерло -block.yellow-stone-vent.name = Жёлтокаменное жерло +block.yellow-stone-vent.name = Жёлтокаменное жерло block.red-stone-vent.name = Краснокаменное жерло block.crystalline-vent.name = Кристаллическое жерло block.redmat.name = Красная земля @@ -1686,7 +1812,7 @@ block.reinforced-bridge-conduit.name = Усиленный мостовой тр block.reinforced-liquid-router.name = Усиленный жидкостный маршрутизатор block.reinforced-liquid-container.name = Усиленная жидкостная цистерна block.reinforced-liquid-tank.name = Усиленный жидкостный бак -block.beam-node.name = Лучевой узел +block.beam-node.name = Лучевой узел block.beam-tower.name = Лучевая башня block.beam-link.name = Лучевой соединитель block.turbine-condenser.name = Турбинный конденсатор @@ -1710,7 +1836,6 @@ block.disperse.name = Диапазон block.afflict.name = Бедствие block.lustre.name = Сияние block.scathe.name = Погибель -block.fabricator.name = Фабрикатор block.tank-refabricator.name = Рефабрикатор танков block.mech-refabricator.name = Рефабрикатор мехов block.ship-refabricator.name = Рефабрикатор кораблей @@ -1773,7 +1898,7 @@ hint.launch = Как только будет собрано достаточно hint.launch.mobile = Как только будет собрано достаточно ресурсов, вы сможете осуществить [accent]Запуск[], выбрав близлежащие секторы на \ue827 [accent]Карте[] в \ue88c [accent]Меню[]. hint.schematicSelect = Зажмите [accent][[F][] и переместите, чтобы выбрать блоки для копирования и вставки.\n\nЩелкните [accent][[колёсиком][] по блоку для копирования. hint.rebuildSelect = Удерживайте [accent][[B][] и перетаскивайте, чтобы выбрать уничтоженные блоки.\nОни будут перестроены автоматически. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect.mobile = Выберите кнопку \ue874 копирования, затем нажмите кнопку \ue80f перестройки, и проведите для выбора уничтоженных блоков.\nЭто перестроит их автоматически. hint.conveyorPathfind = Удерживайте [accent][[Л-Ctrl][] при размещении конвейеров для автоматической прокладки пути. hint.conveyorPathfind.mobile = Включите \ue844 [accent]диагональный режим[] и перетащите конвейеры для автоматической прокладки пути. hint.boost = Удерживайте [accent][[Л-Shift][], чтобы пролететь над препятствиями при помощи вашей единицы.\n\nТолько некоторые наземные единицы могут взлетать. @@ -1790,6 +1915,7 @@ hint.presetDifficulty = У этого сектора [scarlet]высокий у hint.coreIncinerate = После того, как ядро будет заполнено предметом до отказа, любые лишние входящие предметы этого типа будут [accent]сожжены[]. hint.factoryControl = Чтобы установить [accent]место вывода единиц[] фабрики, щелкните на блок фабрики в командном режиме, затем щелкните правой кнопкой мыши на соответствующее место.\nЕдиницы, произведенные ею, автоматически переместятся туда. hint.factoryControl.mobile = Чтобы установить [accent]место вывода единиц[] фабрики, нажмите на блок фабрики в командном режиме, затем нажмите на соответствующее место.\nЕдиницы, произведенные ею, будут автоматически перемещены туда. + gz.mine = Приблизьтесь к \uf8c4 [accent]медной руде[] на земле и нажмите на нее, чтобы начать копать. gz.mine.mobile = Приблизьтесь к \uf8c4 [accent]медной руде[] на земле и нажмите на нее, чтобы начать копать. gz.research = Откройте дерево технологий \ue875.\nИсследуйте \uf870 [accent]Механический бур[], затем выберите его в меню в правом нижнем углу.\nНажмите на медную руду, чтобы начать строительство бура. @@ -1810,6 +1936,7 @@ gz.zone1 = Это - вражеская зона высадки. gz.zone2 = Все, что построено в её радиусе, будет уничтожено с началом волны. gz.zone3 = Волна начнётся прямо сейчас.\nПриготовьтесь. gz.finish = Постройте больше турелей, добудьте больше ресурсов,\nи отстойте все волны, чтобы [accent]захватить сектор[]. + onset.mine = Нажмите, чтобы добыть \uf748 [accent]бериллий[] из стен.\n\nИспользуйте [accent][[WASD] для передвижения. onset.mine.mobile = Нажмите, чтобы добыть \uf748 [accent]бериллий[] из стен. onset.research = Откройте \ue875 дерево исследований.\nИсследуйте, затем поставьте \uf73e [accent]турбинный конденсатор[] на жерло.\nОна будет производить [accent]энергию[]. @@ -1828,9 +1955,14 @@ onset.turrets = Боевые единицы эффективны, но [accent] onset.turretammo = Снабдите турель [accent]бериллиевыми боеприпасами.[] onset.walls = [accent]Стены[] могут предотвратить повреждение близлежащих построек.\nПоставьте \uf6ee [accent]бериллиевые стены[] вокруг турели. onset.enemies = Враг на подходе, приготовьтесь защищаться. +onset.defenses = [accent]Приготовьте оборону:[lightgray] {0} onset.attack = Враг уязвим. Начните контратаку. onset.cores = Новые ядра могут быть поставлены на [accent]зоны ядра[].\nНовые ядра функционируют как передовые базы и имеют общий инвентарь между другими ядрами.\nПоставьте \uf725 ядро. onset.detect = Враг обнаружит вас через 2 минуты.\nПриготовьте оборону, добычу и производство. +onset.commandmode = Удерживайте [accent]shift[], чтобы войти в [accent]режим командования[].\n[accent]Щелкните левой кнопкой мыши и выделите область[] для выбора боевых единиц.\n[accent]Щелкните правой кнопкой мыши[], чтобы приказать выбранным единицам двигаться или атаковать. +onset.commandmode.mobile = Нажмите [accent]Командовать[], чтобы войти в [accent]режим командования[].\nЗажмите палец, затем [accent]выделите область[] для выбора боевых единиц.\n[accent]Нажмите[], чтобы приказать выбранным единицам двигаться или атаковать. +aegis.tungsten = Вольфрам может быть добыт [accent]ударной дрелью[].\nЭта постройка требует [accent]воду[] и [accent]энергию[]. + split.pickup = Некоторые блоки можно подобрать боевой единицей ядра.\nВозьмите этот [accent]контейнер[] и поставьте его на [accent]грузовой загрузчик[].\n(Клавиши по умолчанию - [ и ] для поднятия и разгрузки) split.pickup.mobile = Некоторые блоки можно подобрать боевой единицей ядра.\nВозьмите этот [accent]контейнер[] и поставьте его на [accent]грузовой загрузчик[].\n(Чтобы поднять или разгрузить что-либо, удерживайте палец.) split.acquire = Вы должны получить вольфрам для постройки боевых единиц. @@ -1922,7 +2054,7 @@ block.door-large.description = Стена, которую можно откры block.mender.description = Периодически ремонтирует блоки в непосредственной близости.\nОпционально использует кремний для увеличения дальности и эффективности. block.mend-projector.description = Периодически ремонтирует блоки в непосредственной близости.\nОпционально использует фазовую ткань для увеличения дальности и эффективности. block.overdrive-projector.description = Увеличивает скорость близлежащих зданий.\nОпционально использует фазовую ткань для увеличения дальности и эффективности. -block.force-projector.description = Создает вокруг себя шестиугольное силовое поле, защищая здания и боевые единицы внутри от повреждений.\nПерегревается, если нанесено слишком большое количество повреждений. Опционально использует охлаждающую жидкость для предотвращения перегрева. Фазовая ткань увеличивает размера щита. +block.force-projector.description = Создает вокруг себя шестиугольное силовое поле, защищая здания и боевые единицы внутри от повреждений.\nПерегревается, если нанесено слишком большое количество повреждений. Опционально использует охлаждающую жидкость для предотвращения перегрева. Фазовая ткань увеличивает размер щита. block.shock-mine.description = Высвобождает электрический разряд при контакте с вражеской единицей. block.conveyor.description = Перемещает предметы вперёд. block.titanium-conveyor.description = Перемещает предметы вперёд. Быстрее, чем стандартный конвейер. @@ -2025,7 +2157,6 @@ block.logic-display.description = Отображает произвольную block.large-logic-display.description = Отображает произвольную графику из логического процессора. block.interplanetary-accelerator.description = Массивная электромагнитная башня-рельсотрон. Ускоряет ядро, позволяя преодолеть гравитацию для межпланетного развёртывания. block.repair-turret.description = Непрерывно ремонтирует ближайшую поврежденную единицу в своем радиусе. Опционально использует охлаждающую жидкость. -block.payload-propulsion-tower.description = Конструкция для транспортировки больших грузов на большое расстояние. Стреляет грузом в другие грузовые катапульты. block.core-bastion.description = Ядро базы. Бронировано. После уничтожения, весь контакт с регионом теряется. block.core-citadel.description = Ядро базы. Очень хорошо бронировано. Хранит больше ресурсов, чем ядро Бастион. block.core-acropolis.description = Ядро базы. Исключительно хорошо бронировано. Хранит больше ресурсов, чем ядро Цитадель. @@ -2061,7 +2192,6 @@ block.impact-drill.description = При размещении на соответ block.eruption-drill.description = Усовершенствованная ударная дрель. Способна добывать торий. Требует водород для работы. block.reinforced-conduit.description = Перемещает жидкости вперед. Не принимает ввод по бокам. block.reinforced-liquid-router.description = Равномерно распределяет жидкости во все стороны. -block.reinforced-junction.description = Действует как мост для двух пересекающихся трубопроводов. block.reinforced-liquid-tank.description = Хранит большое количество жидкости. block.reinforced-liquid-container.description = Хранит небольшое количество жидкости. block.reinforced-bridge-conduit.description = Перемещает жидкости над любой местностью или зданиями. @@ -2180,12 +2310,13 @@ unit.emanate.description = Защищает ядро «Акрополь» от lst.read = Считывает число из соединённой ячейки памяти. lst.write = Записывает число в соединённую ячейку памяти. lst.print = Добавляет текст в текстовый буфер. Ничего не отображает, пока не будет вызван [accent]Print Flush[]. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Добавляет операцию в буфер отрисовки. Ничего не отображает, пока не будет вызван [accent]Draw Flush[]. lst.drawflush = Сбрасывает буфер [accent]Draw[] операций на дисплей. lst.printflush = Сбрасывает буфер [accent]Print[] операций в блок-сообщение. lst.getlink = Получает соединение процессора по индексу. Начинает с 0. lst.control = Контролирует блок. -lst.radar = Обнаруживает единицы вокруг постройки с заданным радиусом. +lst.radar = Обнаруживает единицы вокруг постройки с заданным радиусом. lst.sensor = Получает данные из постройки или единицы. lst.set = Задаёт значение переменной. lst.operation = Совершает операцию над 1-2 переменными. @@ -2202,6 +2333,8 @@ lst.getblock = Получает данные о плитке в любом ме lst.setblock = Устанавливает плитку в любом месте. lst.spawnunit = Создает боевую единицу на локации. lst.applystatus = Применяет или снимает эффект статуса с боевой единицы. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Имитация волны, создаваемой в произвольном месте.\nСчетчик волн не увеличивается. lst.explosion = Создает взрыв на локации. lst.setrate = Устанавливает скорость выполнения процессора в инструкциях/тиках. @@ -2213,6 +2346,47 @@ lst.cutscene = Управляет камерой игрока. lst.setflag = Устанавливает глобальный флаг, который может быть прочитан всеми процессорами. lst.getflag = Проверяет, установлен ли глобальный флаг. lst.setprop = Устанавливает свойство единицы или постройки. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Строительство с помощью процессоров здесь запрещено. @@ -2228,6 +2402,7 @@ laccess.dead = Является ли единица/постройка нера laccess.controlled = Возвращает:\n[accent]@ctrlProcessor[] если единица управляется процессором\n[accent]@ctrlPlayer[] если единица/постройка управляется игроком\n[accent]@ctrlFormation[] если единица в строю\nВ противном случае — 0. laccess.progress = Прогресс действия от 0 до 1. Возвращает прогресс производства, перезарядку турели или прогресс постройки. laccess.speed = Максимальная скорость единицы, в тайлах/сек. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Неизвестно lcategory.unknown.description = Нет категории. lcategory.io = Ввод и вывод @@ -2254,6 +2429,7 @@ graphicstype.poly = Отрисовка закрашенного правильн graphicstype.linepoly = Отрисовка контура правильного многоугольника. graphicstype.triangle = Отрисовка закрашенного треугольника. graphicstype.image = Отрисовка внутриигровых спрайтов.\nНапример: [accent]@router[] или [accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Всегда истина. lenum.idiv = Целочисленное деление. @@ -2273,6 +2449,7 @@ lenum.xor = Побитовое исключающее ИЛИ. lenum.min = Минимальное из двух чисел. lenum.max = Максимальное из двух чисел. lenum.angle = Угол вектора в градусах. +lenum.anglediff = Абсолютная дистанция между двумя углами, в градусах. lenum.len = Длина вектора. lenum.sin = Синус, в градусах. @@ -2347,6 +2524,7 @@ lenum.unbind = Полностью отключает управление лог lenum.move = Перемещение в определённую позицию. lenum.approach = Приближение к позиции с указанным радиусом. lenum.pathfind = Перемещение к точке появления врагов. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Стрельба в определённую позицию. lenum.targetp = Стрельба в единицу/постройку с расчётом скорости. lenum.itemdrop = Сбрасывание предметов. @@ -2357,8 +2535,13 @@ lenum.payenter = Войти/приземлиться на грузовой бл lenum.flag = Числовой флаг единицы. lenum.mine = Копание в заданной позиции. lenum.build = Строительство блоков. -lenum.getblock = Распознавание блока и его типа на координатах.\nЕдиница должна находиться в пределах досягаемости.\nТвёрдые не-постройки будут иметь тип [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Проверка на нахождение единицы рядом с позицией. lenum.boost = Включение/выключение полёта. -onset.commandmode = Удерживайте [accent]shift[], чтобы войти в [accent]режим командования[].\n[accent]Щелкните левой кнопкой мыши и выделите область[] для выбора боевых единиц.\n[accent]Щелкните правой кнопкой мыши[], чтобы приказать выбранным единицам двигаться или атаковать. -onset.commandmode.mobile = Нажмите [accent]Командовать[], чтобы войти в [accent]режим командования[].\nЗажмите палец, затем [accent]выделите область[] для выбора боевых единиц.\n[accent]Нажмите[], чтобы приказать выбранным единицам двигаться или атаковать. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 0d8b8f7285..25866172cc 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = Sortiraj po broju "zvezdica" schematic = Šeme schematic.add = Snimi šemu schematics = Šeme +schematic.search = Search schematics... schematic.replace = Već postoji šema pod ovim imenom. Zameniti? schematic.exists = Šema sa ovimn imenom već postoji. schematic.import = Uvezi šemu. @@ -69,7 +70,7 @@ schematic.shareworkshop = Podeli na radionici schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Prevrni šemu. schematic.saved = Šema snimljena. schematic.delete.confirm = Šema će biti potpuno uništena. -schematic.rename = Preimenuj šemu +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blokova schematic.disabled = [scarlet]Šema onemogućena.[]\nZabranjena je upotreba šema na ovoj [accent]mapi[] ili na ovom [accent]serveru. schematic.tags = Oznake: @@ -78,6 +79,7 @@ schematic.addtag = Dodaj Oznaku schematic.texttag = Tekstualna Oznaka schematic.icontag = Slikovna Oznaka schematic.renametag = Preimenuj Oznaku +schematic.tagged = {0} tagged schematic.tagdelconfirm = Potpuno izbriši oznaku? schematic.tagexists = Ova oznaka već postoji. @@ -127,7 +129,7 @@ committingchanges = Vršenje izmena done = Gotovo. feature.unsupported = Vaš uređaj ne podržava ovu funkciju -mods.initfailed = [red]⚠[] Mindustry se nije mogao podići prethodni put.. To je verovatno izazvano greškom u vezi modova.\n\nDa bi se sprečilo večno ispadanje, [red]svi modovi su onemogućeni..[] +mods.initfailed = [red]⚠[] Mindustry se nije mogao podići prethodni put.. To je verovatno izazvano greškom u vezi modova.\n\nDa bi se sprečilo večno ispadanje, [red]svi modovi su onemogućeni..[] mods = Modovi mods.none = [lightgray]Modovi nisu pronađeni! mods.guide = Vodič za modovanje @@ -253,11 +255,19 @@ trace = Nadgledaj Igrača trace.playername = Ime igrača: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Telefonski Klijent: [accent]{0} trace.modclient = Svojehodni Klijent: [accent]{0} trace.times.joined = Puta Povezano: [accent]{0} trace.times.kicked = Puta Izbačeno: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Invalid client ID! Submit a bug report. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Bans server.bans.none = No banned players found! server.admins = Administratori @@ -271,10 +281,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Svjojehodna Verzija confirmban = Da li ste sigurni da želite da [scarlet]trajno[] izbacite "{0}[white]"? confirmkick = Da li ste sigurni da želite da izbacite "{0}[white]"? -confirmvotekick = Da li ste sigurni da želite putem glasova da izbacite "{0}[white]"? confirmunban = Are you sure you want to unban this player? confirmadmin = Da li ste sigurni da želite da pretvorite "{0}[white]" u administratora? confirmunadmin = Da li ste sigurni da želite ukloni čin administratora sa "{0}[white]"? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Pridruži Se Igri joingame.ip = Adresa: disconnect = Veza je prekinuta. @@ -330,12 +341,23 @@ open = Otvori customize = Podesi Pravila cancel = Obustavi command = Upravljaj +command.queue = [lightgray][Queuing] command.mine = Iskopavaj command.repair = Popravljaj command.rebuild = Ponovna Gradnja command.assist = Pomoć Igraču command.move = Kretanje command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Otvori Link copylink = Iskopiraj Link back = Nazad @@ -382,9 +404,9 @@ custom = Tkana builtin = Ugrađena map.delete.confirm = Da li ste sigurni da želite obrisati ovu mapu? Ovaj čin je nepovratan! map.random = [accent]Nasumična Mapa -map.nospawn = Ova mapa nema jezgra u kom će se stvoriti igrač! Dodaj [#{0}]{1}[] jezgro ovoj mapi u editor-u. +map.nospawn = Ova mapa nema jezgra u kom će se stvoriti igrač! Dodaj {0} jezgro ovoj mapi u editor-u. map.nospawn.pvp = Ova mapa nema neprijateljskih jezgara u kom će se stvoriti igrač! Dodaj jezgara[scarlet] od drugih timova[] ovoj mapi u editor-u. -map.nospawn.attack = Ova mapa nema neprijateljskih jezgara koje će igrač napadati! Dodaj [#{0}]{1}[] jezgara ovoj mapi u editor-u. +map.nospawn.attack = Ova mapa nema neprijateljskih jezgara koje će igrač napadati! Dodaj {0} jezgara ovoj mapi u editor-u. map.invalid = Greška prilikom učitavanja mape: datoteka mape sadrži nečitljive delove. workshop.update = Update Item workshop.error = Error fetching workshop details: {0} @@ -416,6 +438,12 @@ editor.waves = Talasi: editor.rules = Pravila: editor.generation = Generisanje: editor.objectives = Zadaci +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Izmeni "U Igri" editor.playtest = Testiranje editor.publish.workshop = Objavi u Radionicu @@ -459,7 +487,7 @@ waves.sort.begin = Početak waves.sort.health = Snaga waves.sort.type = Tip waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Sakrij Sve waves.units.show = Pokaži Sve @@ -472,6 +500,8 @@ editor.default = [lightgray] details = Detalji... edit = Izmeni... variables = Varijabla +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Ime: editor.spawn = Prizovi Jedinicu editor.removeunit = Ukloni Jedinicu @@ -483,6 +513,7 @@ editor.errorlegacy = Ova mapa je stara, i koristi format mape koji nije podržan editor.errornot = Ovo nije datoteka mape. editor.errorheader = This map file is either not valid or corrupt. editor.errorname = Mapa nema definisano ime. Da li pokušavate da učitate sačuvanu igru? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Aržuriraj editor.randomize = Nasumično editor.moveup = Pomeri Gore @@ -494,6 +525,7 @@ editor.sectorgenerate = Sektorska Generacija editor.resize = Preuveličaj editor.loadmap = Učitaj Mapu editor.savemap = Sačuvaj Mapu +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Sačuvano! editor.save.noname = Vaša mapa ne sadrži ime! Postavi neko u 'informacije o mapi' meniju. editor.save.overwrite = Vaša mapa prerezuje ugrađenu mapu! Izaberi drugo ime u 'informacije o mapi' meniju. @@ -532,6 +564,8 @@ toolmode.eraseores = Obriši Rude toolmode.eraseores.description = Samo briši rude. toolmode.fillteams = Popuni Timove toolmode.fillteams.description = Popuni timove umesto blokova. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Crtaj Timove toolmode.drawteams.description = Crtaj timove umesto blokova. toolmode.underliquid = Ispod Tečnosti @@ -555,6 +589,7 @@ filter.clear = Očisti filter.option.ignore = Ignoriši filter.scatter = Razbaci filter.terrain = Teren +filter.logic = Logic filter.option.scale = Razmera filter.option.chance = Šansa @@ -578,6 +613,25 @@ filter.option.floor2 = Drugi Pod filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Širina: height = Visina: @@ -628,9 +682,12 @@ objective.destroycore.name = Uništi Jezgro objective.commandmode.name = Upravljački Mod objective.flag.name = Zastava marker.shapetext.name = Tekst i Oblik -marker.minimap.name = Minimapa +marker.point.name = Point marker.shape.name = Oblik marker.text.name = Tekst +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Pozadina marker.outline = Outline objective.research = [accent]Izuči:\n[]{0}[lightgray]{1} @@ -657,7 +714,6 @@ resources.max = Maksimum bannedblocks = Nedozvoljeni Blokovi objectives = Zadaci bannedunits = Nedozvoljene Jedinice -rules.hidebannedblocks = Sakrij Nedozvoljena Sredstva bannedunits.whitelist = Nedozvoljene Jedinice Kao Bela Lista bannedblocks.whitelist = Nedozvoljeni Blokovi Kao Bela Lista addall = Dodaj Sve @@ -680,7 +736,7 @@ error.any = Nepoznata greška u mreži. error.bloom = Failed to initialize bloom.\nYour device may not support it. weather.rain.name = Kiša -weather.snow.name = Sneg +weather.snowing.name = Sneg weather.sandstorm.name = Peščana Oluja weather.sporestorm.name = Sporna Oluja weather.fog.name = Magla @@ -716,8 +772,8 @@ sector.curlost = Sektor Izgubljen sector.missingresources = [scarlet]Nedovoljnema Resursa u Jezgru sector.attacked = Sektor [accent]{0}[white] je napadnut! sector.lost = Sektor [accent]{0}[white] je izgubljen! -#note: the missing space in the line below is intentional -sector.captured = Sektor [accent]{0}[white]je zauzet! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Promeni Ikonicu sector.noswitch.title = Nije Moguće Promeniti Sektor sector.noswitch = Ne možete promeniti sektor dok je drugi napadnut.\n\nSektor: [accent]{0}[] na [accent]{1}[] @@ -826,7 +882,7 @@ status.unmoving.name = Nepokretljiv status.boss.name = Čuvar settings.language = Jezik -settings.data = Podaci +settings.data = Podaci settings.reset = Vrati na podrazumevano settings.rebind = Rebind settings.resetKey = Resetuj @@ -929,6 +985,7 @@ stat.abilities = Spospbnosti stat.canboost = Može lebdeti stat.flying = Leteća jedinica stat.ammouse = Upotreba municije +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Umnožavač štete stat.healthmultiplier = Umnožavač izdržljivosti stat.speedmultiplier = Umnožavač brzine @@ -939,14 +996,47 @@ stat.immunities = Imuniteti stat.healing = Popravlja ability.forcefield = Polje Sile +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Polje Popravke -ability.statusfield = {0} Statusno Polje -ability.unitspawn = {0} Fabrika +ability.repairfield.description = Repairs nearby units +ability.statusfield = Statusno Polje +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Fabrika +ability.unitspawn.description = Constructs units ability.shieldregenfield = Brzina Obnove Štita +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Munje Pri Kretanju +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Elektrolučni Štit +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Polje Prigušivanja Popravki -ability.energyfield = Energetsko Polje: [accent]{0}[] štete ~ [accent]{1}[] polja / [accent]{2}[] maksimalnih meta +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energetsko Polje +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Dozvoljeno Dostavljanje Samo Unutar Jezgra bar.drilltierreq = Bolja Bušilica Potrebna @@ -986,6 +1076,7 @@ bullet.splashdamage = [stat]{0}[lightgray] oblasna šteta ~[stat] {1}[lightgray] bullet.incendiary = [stat]zapaljiv bullet.homing = [stat]samonavođenje bullet.armorpierce = [stat]proboj oklopa +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x šrapnela: @@ -1021,6 +1112,7 @@ unit.items = materijali unit.thousands = hiljade unit.millions = milioni unit.billions = milijarde +unit.shots = shots unit.pershot = /pucnju category.purpose = Namena category.general = Opšte @@ -1041,6 +1133,7 @@ setting.backgroundpause.name = Pauziraj u Pozadini setting.buildautopause.name = Automatski Pauziraj Gradnju setting.doubletapmine.name = Pritisni Dva Puta za Iskopavanje setting.commandmodehold.name = Drži za Upravljački Mod +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Onesposobi Modove Prilikom Ispadanja setting.animatedwater.name = Animirana Površina setting.animatedshields.name = Animirani Štitovi @@ -1087,13 +1180,14 @@ setting.position.name = Prikaži Poziciju Igrača setting.mouseposition.name = Prilaži Poziciju Miša setting.musicvol.name = Jačina Muzike setting.atmosphere.name = Prikaži Atmosferu Planete +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Jačina Zvuka Ambijenta setting.mutemusic.name = Nema Muzike setting.sfxvol.name = Jačina Zvučnih Efekata setting.mutesound.name = Nema Zvuka setting.crashreport.name = Send Anonymous Crash Reports setting.savecreate.name = Automatski Snimaj Igru -setting.publichost.name = Vidljivost Javne Igre +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Limit Igrača setting.chatopacity.name = Prozirnost Četa setting.lasersopacity.name = Prozirnost Energetskih Lasera @@ -1101,6 +1195,8 @@ setting.bridgeopacity.name = Prozirnost Mostova setting.playerchat.name = Prikazuj Čet Mehure Igrača setting.showweather.name = Prikazuj Grafiku Vremena setting.hidedisplays.name = Sakrij Logičke Displeje +setting.macnotch.name = Prilagodi interfejs da prikaže zarez +setting.macnotch.description = Restartovanje je zahtevano da bi se učitale promene steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Note that beta versions of the game cannot make public lobbies. @@ -1111,6 +1207,7 @@ keybind.title = Rebind Keys keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = Generalno category.view.name = Pogled +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Biranje Blokova placement.blockselectkeys = \n[lightgray]Dugme: [{0}, @@ -1128,6 +1225,24 @@ keybind.mouse_move.name = Prati Miš keybind.pan.name = Gledaj sa Daljine keybind.boost.name = Lebdi keybind.command_mode.name = Upravljački Mod +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Ponovo Sagradi Region keybind.schematic_select.name = Izaberi Region keybind.schematic_menu.name = Menu Šema @@ -1191,17 +1306,25 @@ mode.pvp.description = Fight against other players locally.\n[gray]Requires at l mode.attack.name = Napad mode.attack.description = Destroy the enemy's base. \n[gray]Requires a red core in the map to play. mode.custom = Svojevrsna Pravila +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Sakrij Nedozvoljena Sredstva rules.infiniteresources = Bezkonačni Resursi rules.onlydepositcore = Samo Dozvoli Dostavu u Jezgro +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Eksplozije Reaktora rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Onesposobi Svetovne Procesore rules.schematic = Šeme Su Dozvoljene rules.wavetimer = Talasna Štoperica rules.wavesending = Slanje Talasa +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Talasi +rules.airUseSpawns = Air units use spawn points rules.attack = Mod Napada +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI [red](Nedovršeno) rules.rtsminsquadsize = Minimalna Veličina Odreda rules.rtsmaxsquadsize = Maksimalna Veličina Odreda @@ -1220,6 +1343,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Jezgara Povećavaju Maksimalni Broj Jedinica +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Maksimalni Broj Jedinica (ne računajući jezgra) rules.limitarea = Ograniči Prostor Mape rules.enemycorebuildradius = Radius Neprijateljskog jezgra bez gradnje:[lightgray] (polja) @@ -1252,6 +1376,8 @@ rules.weather = Vreme rules.weather.frequency = Učestalost: rules.weather.always = Stalno rules.weather.duration = Dužina: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Materijali content.liquid.name = Tečnosti @@ -1471,6 +1597,7 @@ block.inverted-sorter.name = Naopaki Sorter block.message.name = Poruka block.reinforced-message.name = Armirana Poruka block.world-message.name = Svetovna Poruka +block.world-switch.name = World Switch block.illuminator.name = Svetlo block.overflow-gate.name = Prelivna Kapija block.underflow-gate.name = Podlivna Kapija @@ -1711,7 +1838,6 @@ block.disperse.name = Raspršivač block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabrikator block.tank-refabricator.name = Refabrikator Tenkova block.mech-refabricator.name = Refabrikator Mečana block.ship-refabricator.name = Refabrikator Brodova @@ -1831,9 +1957,13 @@ onset.turrets = Jedinice su efikasne, ali [accent]platforme[] imaju veći odbram onset.turretammo = Snabdevajte platformu sa [accent]berilijumskom municijom.[] onset.walls = [accent]Zidovi[] mogu da spreče da se šteta nanese na građevine.\nPostavite nekoliko \uf6ee [accent]berilijumskih zidova[] oko platformi. onset.enemies = Neprijatelj dolazi, spremite se. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = Nova jezgra se mogu postaviti na [accent]poljima jezgra[].\nNova jezgra funkcionišu kao prednje baze i dele resursni invetar sa ostalim jezgrima.\nPostavi \uf725 jezgro. onset.detect = Neprijatelj će te primetiti za 2 minuta.\nPostavite odbranu, rudu i proizvodnju. +onset.commandmode = Drži [accent]shift[] da bi ušao u [accent]komandni mod[].\n[accent]Levi-klik i vuci[] da izabereš jedinice.\n[accent]Desni-klik[] da bi naredio jedinicama da se kreću ili napadaju. +onset.commandmode.mobile = Pritisni [accent]komandno dugme[] da bi ušao [accent]komandni mod[].\nDrži prstom, pritom [accent]vuci[] da izabereš jedinice.\n[accent]Pritisni[] da bi naredio jedinicama da se kreću ili napadaju. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = Moraš preuzeti nešto volframa da bi proizvodio jedinice. @@ -2028,7 +2158,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Jezgro baze. Oklopljeno. Jednom uništeno gubi se sektor. block.core-citadel.description = Jezgro baze. Izuzetno dobro oklopljeno. Skladišti više resursa od Bastilje jezgra. block.core-acropolis.description = Jezgro baze. Izvrsno dobro oklopljeno. Skladišti više resursa od Citadele jezgra. @@ -2064,7 +2193,6 @@ block.impact-drill.description = Kada je postavljeno na rudi, beskonačno ispuš block.eruption-drill.description = Poboljšana udarna drobilica. Može iskopavati torijum. Zahteva vodonik. block.reinforced-conduit.description = Usmerava tečnosti napred. Ne prihvata unos sa strane od blokova koje nisu cevi. block.reinforced-liquid-router.description = Jednako distribuiše tečnosti u svim pravcima. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Skladišti veliku količinu tečnosti. block.reinforced-liquid-container.description = Skladišti dobru količinu tečnosti. block.reinforced-bridge-conduit.description = Prenosi tečnosti preko terena i građevina. @@ -2183,6 +2311,7 @@ unit.emanate.description = Gradi građevine da odbrani Veliki Grad jezgro. Popra lst.read = Čita broj iz povezane memorijske ćelije. lst.write = Piše broj u povezanu memorijsku ćeliju. lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2205,6 +2334,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Prizovi jedinicu na mestu. lst.applystatus = Dodaj ili ukloni statusni efekat na jedinicu/e. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Izazovi eksploziju na mestu. lst.setrate = Set processor execution speed in instructions/tick. @@ -2216,6 +2347,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. @@ -2231,6 +2403,7 @@ laccess.dead = Da li je građevina/jedinica mrtva, ili više ne radi. 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Maksimalna brzina jedinice, u polja/sekundi. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Nepoznato lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2257,6 +2430,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Uvek Tačno. lenum.idiv = Integer division. @@ -2276,6 +2450,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum dva broja. lenum.max = Maksimum dva broja. lenum.angle = Ugao vektora u stepenima. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Dužina bektora. lenum.sin = Sinus, u stepenima. @@ -2350,6 +2525,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Idi do tačnog mesta. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Pucaj na mesto. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2360,8 +2536,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Drži [accent]shift[] da bi ušao u [accent]komandni mod[].\n[accent]Levi-klik i vuci[] da izabereš jedinice.\n[accent]Desni-klik[] da bi naredio jedinicama da se kreću ili napadaju. -onset.commandmode.mobile = Pritisni [accent]komandno dugme[] da bi ušao [accent]komandni mod[].\nDrži prstom, pritom [accent]vuci[] da izabereš jedinice.\n[accent]Pritisni[] da bi naredio jedinicama da se kreću ili napadaju. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 95332329f7..f675d8f437 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Sortera efter stjärnor schematic = Schematic schematic.add = Spara Schematic... schematics = Schematics +schematic.search = Search schematics... schematic.replace = En schematic med det namnet finns redan. Byt ut den? schematic.exists = En schematic med det namnet finns redan. schematic.import = Importera Schematic... @@ -68,7 +69,7 @@ schematic.shareworkshop = Dela på Workshoppen schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Vänd Schematic schematic.saved = Schematic sparad. schematic.delete.confirm = Den här schematicen kommer bli ytterst borttagen. -schematic.rename = Döp om Schematic +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} block schematic.disabled = [scarlet]Schematics inaktiverade[]\nDu får inte använda schematics på denna [accent]kartan[] eller [accent]servern. schematic.tags = Taggar: @@ -77,6 +78,7 @@ schematic.addtag = Lägg till Taggar schematic.texttag = Text Tagg schematic.icontag = Ikon Tagg schematic.renametag = Döp om Tagg +schematic.tagged = {0} tagged schematic.tagdelconfirm = Radera denna tagg fullständigt? schematic.tagexists = Den taggen finns redan. stats = Statistik @@ -249,11 +251,19 @@ trace = Trace Player trace.playername = Spelarnamn: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Unique ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobile Client: [accent]{0} trace.modclient = Custom Client: [accent]{0} trace.times.joined = Times Joined: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Invalid client ID! Submit a bug report. +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Bans server.bans.none = Inga bannade spelare hittades! server.admins = Administratörer @@ -267,10 +277,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Custom Build confirmban = Are you sure you want to ban this player? confirmkick = Are you sure you want to kick this player? -confirmvotekick = Are you sure you want to vote-kick this player? confirmunban = Are you sure you want to unban this player? confirmadmin = Are you sure you want to make this player an admin? confirmunadmin = Are you sure you want to remove admin status from this player? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Join Game joingame.ip = Adress: disconnect = Frånkopplad. @@ -326,12 +337,23 @@ open = Öppna customize = Customize Rules cancel = Avbryt command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Öppna Länk copylink = Kopiera Länk back = Tillbaka @@ -378,9 +400,9 @@ custom = Anpassad builtin = Inbyggd map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone! map.random = [accent]Random Map -map.nospawn = This map does not have any cores for the player to spawn in! Add a[accent] orange[] core to this map in the editor. -map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[scarlet] non-orange[] cores to this map in the editor. -map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[scarlet] red[] cores to this map in the editor. +map.nospawn = This map does not have any cores for the player to spawn in! Add a {0} core to this map in the editor. +map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add [scarlet]non-orange[] cores to this map in the editor. +map.nospawn.attack = This map does not have any enemy cores for player to attack! Add {0} cores to this map in the editor. map.invalid = Error loading map: corrupted or invalid map file. workshop.update = Update Item workshop.error = Error fetching workshop details: {0} @@ -412,6 +434,12 @@ editor.waves = Vågor: editor.rules = Regler: editor.generation = Generering: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -455,7 +483,7 @@ waves.sort.begin = Begin waves.sort.health = Health waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Hide All waves.units.show = Show All @@ -467,6 +495,8 @@ editor.default = [lightgray] details = Details... edit = Redigera... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Namn: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -478,6 +508,7 @@ editor.errorlegacy = This map is too old, and uses a legacy map format that is n editor.errornot = This is not a map file. editor.errorheader = This map file is either not valid or corrupt. editor.errorname = Map has no name defined. Are you trying to load a save file? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Uppdatera editor.randomize = Slumpa editor.moveup = Move Up @@ -489,6 +520,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Resize editor.loadmap = Load Map editor.savemap = Save Map +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Sparad! editor.save.noname = Your map does not have a name! Set one in the 'map info' menu. editor.save.overwrite = Your map overwrites a built-in map! Pick a different name in the 'map info' menu. @@ -527,6 +559,8 @@ toolmode.eraseores = Erase Ores toolmode.eraseores.description = Erase only ores. toolmode.fillteams = Fyll Lag toolmode.fillteams.description = Fill teams instead of blocks. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Rita Lag toolmode.drawteams.description = Draw teams instead of blocks. toolmode.underliquid = Under Liquids @@ -549,6 +583,7 @@ filter.clear = Rensa filter.option.ignore = Ignorera filter.scatter = Sprid filter.terrain = Terräng +filter.logic = Logic filter.option.scale = Skala filter.option.chance = Chans filter.option.mag = Magnitud @@ -571,6 +606,25 @@ filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radie filter.option.percentile = Percentile +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Bredd: height = Höjd: @@ -621,9 +675,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -643,12 +700,11 @@ objective.command = [accent]Command Units objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ loadout = Loadout -resources = Resources +resources = Resources resources.max = Max bannedblocks = Banned Blocks objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -671,7 +727,7 @@ error.any = Okänt nätverksfel. error.bloom = Failed to initialize bloom.\nYour device may not support it. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -707,7 +763,8 @@ sector.curlost = Sector Lost sector.missingresources = [scarlet]Insufficient Core Resources sector.attacked = Sector [accent]{0}[white] under attack! sector.lost = Sector [accent]{0}[white] lost! -sector.captured = Sector [accent]{0}[white]captured! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -915,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -925,14 +983,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field -ability.unitspawn = {0} Factory +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Bättre Borr Krävs @@ -972,6 +1063,7 @@ bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles bullet.incendiary = [stat]incendiary bullet.homing = [stat]homing bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1007,6 +1099,7 @@ unit.items = föremål unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Allmänt @@ -1027,6 +1120,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animerat Vatten setting.animatedshields.name = Animerade Sköldar @@ -1073,20 +1167,23 @@ setting.position.name = Show Player Position setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Musikvolym setting.atmosphere.name = Show Planet Atmosphere +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Stäng Av Musik setting.sfxvol.name = Ljudeffektvolym setting.mutesound.name = Stäng Av Ljudeffekter setting.crashreport.name = Skicka Anonyma Krashrapporter setting.savecreate.name = Auto-Create Saves -setting.publichost.name = Public Game Visibility +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Player Limit setting.chatopacity.name = Chattgenomskinlighet setting.lasersopacity.name = Power Laser Opacity setting.bridgeopacity.name = Bridge Opacity -setting.playerchat.name = Visa +setting.playerchat.name = Visa setting.showweather.name = Show Weather Graphics setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Anpassa gränssnittet för att visa skåra +setting.macnotch.description = Omstart krävs för att tillämpa ändringar steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Note that beta versions of the game cannot make public lobbies. @@ -1097,6 +1194,7 @@ keybind.title = Rebind Keys keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = General category.view.name = View +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1114,6 +1212,24 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1177,17 +1293,25 @@ mode.pvp.description = Fight against other players locally.\n[gray]Requires at l mode.attack.name = Attack mode.attack.description = Destroy the enemy's base. No waves.\n[gray]Requires a red core in the map to play. mode.custom = Custom Rules +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Infinite Resources rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Vågtimer rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Vågor +rules.airUseSpawns = Air units use spawn points rules.attack = Attack Mode +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1206,6 +1330,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) @@ -1238,6 +1363,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Föremål content.liquid.name = Vätskor @@ -1455,6 +1582,7 @@ block.inverted-sorter.name = Inverted Sorter block.message.name = Meddelande block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Illuminator block.overflow-gate.name = Överflödesgrind block.underflow-gate.name = Underflow Gate @@ -1695,7 +1823,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1813,9 +1940,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2009,7 +2140,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2045,7 +2175,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2162,6 +2291,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2184,6 +2314,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2195,6 +2327,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2207,6 +2380,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2232,6 +2406,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2249,6 +2424,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2310,6 +2486,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2320,8 +2497,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 68f5c818cb..26a7aa1fa7 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = เรียงตามคะแนนดาว schematic = แผนผัง schematic.add = บันทึกแผนผัง... schematics = แผนผัง +schematic.search = ค้นหาแผนผัง... schematic.replace = มีแผนผังที่ใช้ชื่อนี้แล้ว แทนที่เลยไหม? schematic.exists = มีแผนผังในชื่อนั้นอยู่แล้ว schematic.import = นำเข้าแผนผัง... @@ -69,7 +70,7 @@ schematic.shareworkshop = แชร์บนเวิร์กช็อป schematic.flip = [accent][[{0}][]/[accent][[{1}][]: กลับแผนผัง schematic.saved = บันทึกแผนผังแล้ว schematic.delete.confirm = แผนผังนี้จะถูกกำจัดให้หมดสิ้นไม่เหลือซาก -schematic.rename = เปลี่ยนชื่อแผนผัง +schematic.edit = แก้ไขแผนผัง schematic.info = {0}x{1}, {2} บล็อก schematic.disabled = [scarlet]การใช้แผนผังถูกปิดไว้[]\nคุณไม่สามารถใช้แผนผังได้ใน[accent]แมพ[]หรือ[accent]เซิร์ฟเวอร์[]นี้ schematic.tags = แท็ก: @@ -78,6 +79,7 @@ schematic.addtag = เพิ่มแท็ก schematic.texttag = แท็กข้อความ schematic.icontag = แท็กไอคอน schematic.renametag = เปลี่ยนชื่อแท็ก +schematic.tagged = {0} ถูกแท็ก schematic.tagdelconfirm = จะลบแท็กนี้ทั่วทั้งหมดเลยใช่ไหม? schematic.tagexists = แท็กนี้มีอยู่แล้ว @@ -172,7 +174,7 @@ mod.jarwarn = [scarlet]ม็อดไฟล์ JAR นั้นค่อนข mod.item.remove = ไอเท็มนี้เป็นส่วนหนึ่งของม็อด [accent]'{0}'[] หากต้องการนำออก กรุณาถอนการติดตั้งม็อดนั้น mod.remove.confirm = ม็อดนี้จะถูกลบออกไป mod.author = [lightgray]ผู้สร้าง:[] {0} -mod.missing = เซฟนี้มีม็อดที่คุณพึ่งอัปเดตหรือไม่ได้ติดตั้งแล้ว อาจทำให้เซฟเสีย คุณแน่จะหรือว่าจะโหลดเซฟนี้?\n[lightgray]ม็อดที่ใช้:\n{0} +mod.missing = เซฟนี้มีม็อดที่คุณพึ่งอัปเดตหรือไม่ได้ติดตั้งแล้ว อาจทำให้เซฟเสีย คุณแน่ใจหรือว่าจะโหลดเซฟนี้?\n[lightgray]ม็อดที่ใช้:\n{0} mod.preview.missing = ก่อนที่จะนำม็อดไปลงในเวิร์กช็อป คุณต้องใส่รูปพรีวิวก่อน\nใส่รูปชื่อ[accent] preview.png[] ลงในโฟลเดอร์ของม็อดแล้วลองอีกครั้ง mod.folder.missing = ม็อดที่อยู่ในรูปแบบโฟลเดอร์เท่านั้นที่สามารถลงในเวิร์กช็อปได้\nunzip ไฟล์แล้วลบไฟล์ zip เก่า แล้วรีสตาร์ทเกมหรือรีโหลดม็อด mod.scripts.disable = เครื่องของคุณไม่รองรับม็อดที่มีสคริปต์ คุณจำเป็นต้องปิดม็อดเหล่านี้ก่อนจึงจะสามารถเล่นได้ @@ -253,11 +255,19 @@ trace = แกะรอยผู้เล่น trace.playername = ชื่อผู้เล่น: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = ไคลเอนต์โทรศัพท์: [accent]{0} trace.modclient = ไคลเอนต์ปรับแต่ง: [accent]{0} trace.times.joined = ครั้งที่เข้า: [accent]{0} trace.times.kicked = ครั้งที่โดนเตะ: [accent]{0} +trace.ips = IPs: +trace.names = ชื่อ: invalidid = ไคลเอนต์ ID ไม่ถูกต้อง! กรุณารายงานบัคนี้ +player.ban = แบน +player.kick = เตะ +player.trace = แกะรอย +player.admin = ปรับสถานะแอดมิน +player.team = เปลี่ยนทีม server.bans = แบน server.bans.none = ไม่พบผู้เล่นที่ถูกแบน! server.admins = แอดมิน @@ -271,10 +281,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]เวอร์ชั่นปรับแต่ง confirmban = คุณแน่ใจหรือว่าจะแบนผู้เล่นนี้? confirmkick = คุณแน่ใจหรือว่าจะเตะผู้เล่นนี้ออก? -confirmvotekick = คุณแน่ใจหรือว่าจะโหวตเตะผู้เล่นนี้ออก? confirmunban = คุณแน่ใจหรือว่าจะเลิกแบนผู้เล่นนี้? confirmadmin = คุณแน่ใจหรือว่าจะแต่งตั้งผู้เล่นคนนี้เป็นแอดมิน? confirmunadmin = คุณแน่ใจหรือว่าจะลบสถานะการเป็นแอดมินของผู้เล่นนี้? +votekick.reason = เหตุผลการโหวตเตะ +votekick.reason.message = คุณแน่ใจหรือว่าจะโหวตเตะ "{0}[white]"?\nถ้าใช่ โปรดระบุเหตุผล: joingame.title = เข้าร่วมเกม joingame.ip = ที่อยู่: disconnect = ตัดการเชื่อมต่อแล้ว @@ -287,7 +298,7 @@ connecting = [accent]กำลังเชื่อมต่อ... reconnecting = [accent]กำลังเชื่อมต่อใหม่... connecting.data = [accent]กำลังโหลดข้อมูลของโลก ... server.port = พอร์ต: -server.addressinuse = มีคนใช้ที่อยู่นี้แล้ว! +server.addressinuse = มีคนใช้ที่อยู่นี้อยู่แล้ว! server.invalidport = เลขพอร์ตไม่ถูกต้อง! server.error = [crimson]การโฮสต์เซิร์ฟเวอร์ผิดพลาด save.new = เซฟใหม่ @@ -330,12 +341,23 @@ open = เปิด customize = ตั้งค่ากฎ cancel = ยกเลิก command = สั่งการ +command.queue = [lightgray][Queuing] command.mine = ขุด command.repair = ซ่อมแซม command.rebuild = สร้างใหม่ command.assist = ช่วยเหลือผู้เล่น command.move = ขยับ command.boost = บูสต์ +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = เปิดลิ้งค์ copylink = คัดลอกลิ้งค์ back = กลับ @@ -370,7 +392,7 @@ wave.waveInProgress = [lightgray]คลื่นกำลังดำเนิ waiting = [lightgray]กำลังรอ... waiting.players = รอผู้เล่น... wave.enemies = ศัตรูคงเหลือ [lightgray]{0} [accent]ตัว -wave.enemycores = แกนกลางศัตรูเหลือ [accent]{0}[lightgray] แกน +wave.enemycores = [accent]{0}[lightgray] แกนกลางศัตรู wave.enemycore = [accent]{0}[lightgray] แกนกลางศัตรู wave.enemy = ศัตรูคงเหลือ [lightgray]{0} [accent]ตัว wave.guardianwarn = ผู้พิทักษ์จะปรากฏตัวในอีก [accent]{0}[] คลื่น! @@ -382,9 +404,9 @@ custom = กำหนดเอง builtin = ค่าเริ่มต้น map.delete.confirm = คุณแน่ใจหรือว่าจะลบแมพนี้? การกระทำครั้งนี้ไม่สามารถย้อนกลับได้! map.random = [accent]สุ่มแมพ -map.nospawn = แมพนี้ไม่มีแกนกลางให้ผู้เล่นเกิด! กรุณาใส่แกนกลาง[#{0}]{1}[] ลงในตัวแก้ไข +map.nospawn = แมพนี้ไม่มีแกนกลางให้ผู้เล่นเกิด! กรุณาใส่แกนกลาง {0} ลงในตัวแก้ไข map.nospawn.pvp = แมพนี้ไม่มีแกนกลางของศัตรูสำหรับให้ผู้เล่นเกิด! กรุณาใส่แกนกลาง[scarlet]ที่ไม่ใช่สีส้ม[] ลงในตัวแก้ไข -map.nospawn.attack = แมพนี้ไม่มีแกนกลางของศัตรูสำหรับให้ผู้เล่นโจมตี! กรุณาใส่แกนกลาง [#{0}]{1}[] ลงในตัวแก้ไข +map.nospawn.attack = แมพนี้ไม่มีแกนกลางของศัตรูสำหรับให้ผู้เล่นโจมตี! กรุณาใส่แกนกลาง {0} ลงในตัวแก้ไข map.invalid = โหลดแมพผิดพลาด: ไฟล์แมพเสียหายหรือไม่ถูกต้อง workshop.update = อัปเดตไอเท็ม workshop.error = เกิดข้อผิดพลาดในการนำเข้าเวิร์กช็อป รายละเอียดดังนี้: {0} @@ -416,6 +438,12 @@ editor.waves = คลื่น editor.rules = กฎ editor.generation = เจนเนอเรชั่น editor.objectives = เป้าหมาย +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = แก้ไขในเกม editor.playtest = เล่นทดสอบ editor.publish.workshop = เผยแพร่บนเวิร์กช็อป @@ -458,8 +486,8 @@ waves.sort.reverse = เรียงย้อนกลับ waves.sort.begin = เริ่มต้น waves.sort.health = พลังชีวิต waves.sort.type = ชนิด -waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.search = ค้นหาคลื่น... +waves.filter = ตัวกรองยูนิต waves.units.hide = ซ่อนทั้งหมด waves.units.show = แสดงทั้งหมด @@ -472,6 +500,8 @@ editor.default = [lightgray]<ค่าเริ่มต้น> details = รายละเอียด... edit = แก้ไข... variables = ตัวแปร +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = ชื่อ: editor.spawn = สร้างยูนิต editor.removeunit = ลบยูนิต @@ -483,6 +513,7 @@ editor.errorlegacy = แมพนี้เก่าเกินไปและ editor.errornot = นี่ไม่ใช้ไฟล์แมพ editor.errorheader = ไฟล์แมพนี้เสียหรือไม่ถูกต้อง editor.errorname = แมพไม่มีการกำหนดชื่อ คุณกำลังพยายามโหลดไฟล์เซฟอยู่หรือไม่? +editor.errorlocales = Error reading invalid locale bundles. editor.update = อัปเดต editor.randomize = สุ่ม editor.moveup = ขยับขึ้น @@ -494,9 +525,10 @@ editor.sectorgenerate = สร้างเซ็กเตอร์ editor.resize = เปลี่ยนขนาด editor.loadmap = โหลดแมพ editor.savemap = เซฟแมพ +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = เซฟเรียบร้อย! editor.save.noname = แมพของคุณไม่มีชื่อ! สามารถตั้งชื่อได้ในเมนู 'ข้อมูลแมพ' -editor.save.overwrite = แมพของคุณไปทับกับแมพค่าเริ่มต้น! เปลี่ยนชื่อได้ในเมนู 'ข้อมูลแมพ' +editor.save.overwrite = แมพของคุณไปทับซ้อนกับแมพค่าเริ่มต้น! เปลี่ยนชื่อได้ในเมนู 'ข้อมูลแมพ' editor.import.exists = [scarlet]ไม่สามารถนำเข้าได้:[] มีแมพค่าเริ่มต้นที่ชื่อ '{0}' อยู่แล้ว! editor.import = นำเข้า... editor.importmap = นำเข้าแมพ @@ -532,12 +564,14 @@ toolmode.eraseores = ลบแร่ toolmode.eraseores.description = ลบเฉพาะแร่เท่านั้น toolmode.fillteams = เติมทีม toolmode.fillteams.description = เติมทีมแทนที่จะเป็นบล็อก +toolmode.fillerase = เติมลบล้าง +toolmode.fillerase.description = ลบล้างบล็อกชนิดเดียวกัน toolmode.drawteams = วาดทีม toolmode.drawteams.description = วาดทีมแทนที่จะเป็นบล็อก toolmode.underliquid = ใต้พื้นของเหลว toolmode.underliquid.description = วาดพื้นด้านใต้ช่องของเหลว -filters.empty = [lightgray]ไม่มีฟิลเตอร์! เพิ่มด้วยปุ่มด้านล่างนี้ +filters.empty = [lightgray]ไม่มีฟิลเตอร์! เพิ่มฟิลเตอร์ด้วยปุ่มด้านล่างนี้ filter.distort = บิดเบือน filter.noise = นอยส์ @@ -555,6 +589,7 @@ filter.clear = เคลียร์ filter.option.ignore = เพิกเฉย filter.scatter = กระจาย filter.terrain = พื้นผิว +filter.logic = Logic filter.option.scale = มาตราส่วน filter.option.chance = โอกาส @@ -578,6 +613,25 @@ filter.option.floor2 = พื้นชั้นสอง filter.option.threshold2 = เกณฑ์ชั้นสอง filter.option.radius = รัศมี filter.option.percentile = เปอร์เซ็นต์ไทล์ +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = กว้าง: height = สูง: @@ -628,9 +682,12 @@ objective.destroycore.name = ทำลายแกนกลาง objective.commandmode.name = โหมดสั่งการ objective.flag.name = ธง marker.shapetext.name = ข้อความในรูปทรง -marker.minimap.name = มินิแมพ +marker.point.name = Point marker.shape.name = รูปทรง marker.text.name = ข้อความ +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = พื้นหลัง marker.outline = โครงร่าง objective.research = [accent]วิจัย:\n[]{0}[lightgray]{1} @@ -656,7 +713,6 @@ resources.max = เต็ม bannedblocks = บล็อกต้องห้าม objectives = เป้าหมาย bannedunits = ยูนิตต้องห้าม -rules.hidebannedblocks = ซ่อนบล็อกต้องห้าม bannedunits.whitelist = ตั้งยูนิตต้องห้ามเป็นไวท์ลิสต์ bannedblocks.whitelist = ตั้งบล็อกต้องห้ามเป็นไวท์ลิสต์ addall = เพิ่มทั้งหมด @@ -679,7 +735,7 @@ error.any = ข้อผิดพลาด: เครือข่ายที่ error.bloom = ไม่สามารถเริ่มต้นบลูมได้\nอุปกรณ์ของคุณอาจไม่รองรับ weather.rain.name = ฝน -weather.snow.name = หิมะ +weather.snowing.name = หิมะ weather.sandstorm.name = พายุทราย weather.sporestorm.name = พายุสปอร์ weather.fog.name = หมอก @@ -716,8 +772,8 @@ sector.curlost = เราเสียเซ็กเตอร์! sector.missingresources = [scarlet]ขาดทรัพยากรในการลงจอด sector.attacked = เซ็กเตอร์ [accent]{0}[white] ถูกโจมตี! sector.lost = เราเสียเซ็กเตอร์ [accent]{0}[white]! -#note: the missing space in the line below is intentional -sector.captured = เรายึดครองเซ็กเตอร์'[accent]{0}[white]ได้แล้ว! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = เปลี่ยนไอคอน sector.noswitch.title = ไม่สามารถเปลี่ยนเซ็กเตอร์ได้ sector.noswitch = คุณไม่สามารถเปลี่ยนเซ็กเตอร์ได้ระหว่างที่อีกเซ็กเตอร์กำลังถูกโจมตีอยู่\n\nเซ็กเตอร์: [accent]{0}[] บนดาว [accent]{1}[] @@ -768,7 +824,7 @@ sector.fungalPass.description = ทางเปลี่ยนผ่านระ sector.biomassFacility.description = แหล่งต้นกำเนิดของสปอร์ ที่นี่คือฐานวิจัยและผลิตสปอร์เริ่มแรก\nวิจัยเทคโนโลยีที่อยู่ภายในนั้น เพาะชำ[accent]สปอร์[]เพื่อเป็นเชื้อเพลิงและใช้ในการผลิตพลาสติก\n\n[gray]เมื่อสถานแห่งนี้ถึงจุดจบลง สปอร์ก็ถูกปล่อยออกมา ไม่มีสิ่งใดในระบบนิเวศท้องถิ่นที่สามารถแข่งขันกับ\nสิ่งมีชีวิตที่แพร่กระจายในระดับนี้ได้ sector.windsweptIslands.description = เลยแนวชายฝั่งไป จะพบกับหมู่เกาะที่ตั้งอยู่ห่างไกลแห่งนี้ เคยมีบันทึกว่าที่นี่มีโรงงานผลิต[accent]พลาสตาเนี่ยม[]อยู่\n\nทำลายเรือศัตรู สร้างฐานทัพบนเกาะ วิจัยโรงงานพวกนี้ sector.extractionOutpost.description = ด่านที่อยู่ห่างไกล สร้างโดยศัตรูเพื่อใช้ในการส่งทรัพยากรไปยังฐานทัพอื่น\n\nเทคโนโลยีการส่งไอเท็มข้ามเซ็กเตอร์เป็นสิ่งจำเป็นสำหรับการพิชิตถัดๆ ไป ทำลายด่าน วิจัยฐานส่งของ -sector.impact0078.description = ณ ที่แห่งนี้คือเศษซากของเรือขนส่งระหว่างดวงดาวที่เคยเข้ามายังระบบนี้\nเศษเหล็กและหิมะปกคลุมไปทั่วทั้งพื้นที่\n\nกอบกู้ซากยานให้ได้มากที่สุด วิจัยเทคโนโลยีทั้งหมดที่ยังเหลือรอด\n\n\n[gray]อย่าประมาทกับฐานทัพศัตรูที่อยู่ใกล้ๆ โดยอันขาด\nศัตรูจะส่งกองกำลังมาโจมตีเรื่อยๆ จนกว่าคุณจะพ่ายแพ้ +sector.impact0078.description = ณ ที่แห่งนี้คือเศษซากของยานขนส่งระหว่างดวงดาวที่เคยเข้ามายังระบบนี้\nเศษซากเหล็กและหิมะปกคลุมไปทั่วทั้งพื้นที่\n\nกอบกู้ซากยานให้ได้มากที่สุด วิจัยเทคโนโลยีทั้งหมดที่ยังเหลือรอด\n\n\n[gray]อย่าประมาทกับฐานทัพศัตรูที่อยู่ใกล้ๆ โดยอันขาด\nศัตรูจะส่งกองกำลังมาโจมตีเรื่อยๆ จนกว่าคุณจะพ่ายแพ้ sector.planetaryTerminal.description = เป้าหมายสุดท้าย\n\nฐานทัพติดชายหาดนี้มีสิ่งประดิษฐ์ที่สามารถส่งแกนกลางไปยังดาวที่อยู่ใกล้ๆ ได้ ฐานทัพมีการป้องกันที่แน่นหนามาก\n\nผลิตยูนิตเรือ กวาดล้างศัตรูให้เร็วที่สุด วิจัยสิ่งประดิษฐ์นั่น sector.coastline.description = ถัดมาจากที่ราบเกลือ เป็นที่ตั้งของแนวชายฝั่ง พบเศษซากของเทคโนโลยียูนิตเรือที่ล้ำหน้าอยู่ในพื้นที่แห่งนี้\nขับไล่ศัตรูออกไป ยึดพื้นที่นี้มา วิจัยเทคโนโลยีนั้น sector.navalFortress.description = ศัตรูได้ตั้งฐานทัพอยู๋บนเกาะห่างไกลที่มีกำแพงธรรมชาติปกป้องฐานเอาไว้ ทำลายฐานทัพ ยึดและวิจัยเทคโนโลยีเรือรบที่ล้ำหน้านั้นมา @@ -802,7 +858,7 @@ sector.marsh.description = พื้นที่แห่งนี้มีบ sector.peaks.description = ภูมิประเทศแบบขุนเขาในพื้นที่แห่งนี้ทำให้ยูนิตปกติใช้การไม่ได้ จำเป็นจะต้องมียูนิตที่บินได้เพื่อที่จะบุกโจมตี\nควรระวังป้อมปืนต่อต้านอากาศยานของศัตรูให้ดี มีความไปได้ที่จะสามารถตัดกำลังป้อมปืนบางส่วนได้โดยการทำลายสิ่งก่อสร้างที่รองรับพวกมัน sector.ravine.description = ทางเชื่อมขนส่งทรัพยากรที่สำคัญของศัตรู ตรวจไม่พบแกนกลางศัตรูในพื่นที่นี้ แต่ก็ต้องเตรียมตัวรับมือกับกำลังศัตรูที่จะมาในหลากหลายรูปแบบ\nผลิต[accent]เสิร์จอัลลอย[]แล้วสร้างป้อมปืน[accent]อัฟฟลิกต์[]มาป้องกัน sector.caldera-erekir.description = ทรัพยากรที่ถูกตรวจพบในพื้นที่นี้นั้นกระจัดกระจายไปในหลายๆ เกาะ\nวิจัยและพัฒนาเทคโนโลยีการขนส่งด้วยโดรน -sector.stronghold.description = ปราการขนาดใหญ่ของศัตรูนี้กำลังปกป้องแหล่งแร่[accent]ทอเรี่ยม[]จำนวนมหาศาลในพื้นที่แห่งนี้\nจงใช้มันเพื่อนำไปพัฒนาป้อมปืนและยูนิตขึ้นสูงกว่า +sector.stronghold.description = ปราการขนาดใหญ่ของศัตรูนี้กำลังปกป้องแหล่งแร่[accent]ทอเรี่ยม[]จำนวนมหาศาลในพื้นที่แห่งนี้\nจงใช้มันเพื่อนำไปพัฒนาป้อมปืนและยูนิตขั้นสูงกว่า sector.crevice.description = ศัตรูจะส่งกำลังโจมตีที่ดุร้ายและทรงพลังเป็นพิเศษเพื่อที่จะทำลายฐานทัพของคุณในพื้นที่นี้\nวิจัยและพัฒนา[accent]คาร์ไบต์[]กับ[accent]เครื่องกำเนิดไฟฟ้าไพโรไลซิส[]เพื่อเพิ่มโอกาสการอยู่รอดในพื้นที่นี้ sector.siege.description = พื้นที่นี้ประกอบไปด้วยหุบเขาคู่ขนานสองแห่งที่ทำให้ต้องทำการบุกโจมตีทั้งสองฝั่งพร้อมกัน\nวิจัย[accent]ไซยาโนเจน[]เพื่อที่จะสามารถสร้างยูนิตรถถังที่แข็งแกร่งขึ้น\nโปรดระวัง: ตรวจพบขีปนาวุธพิสัยไกลของศัตรู สามารถทำลายหัวรบขีปนาวุธได้ก่อนที่มันจะระเบิด sector.crossroads.description = ฐานทัพศัตรูในพื้นที่นี้ได้ถูกก่อสร้างในพื้นที่ที่หลากหลาย วิจัยยูนิตแต่ละตัวเพื่อปรับใช้ในสถานการณ์ต่างๆ\nเพิ่มเติม: ฐานทัพบางฐานได้รับการปกป้องด้วยโล่พลังงาน จงหาวิธีที่จะตัดพลังงานของโล่ออกให้ได้ @@ -929,6 +985,7 @@ stat.abilities = ทักษะ stat.canboost = บูสต์ได้ stat.flying = บินได้ stat.ammouse = การใช้กระสุน +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = พหุคูณดาเมจ stat.healthmultiplier = พหุคูณพลังชีวิต stat.speedmultiplier = พหุคูณความเร็ว @@ -939,14 +996,46 @@ stat.immunities = ต่อต้านสถานะ stat.healing = การรักษา ability.forcefield = โล่พลังงาน +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = สนามซ่อมแซม -ability.statusfield = {0} สนามเอฟเฟกต์ -ability.unitspawn = โรงงานผลิต [accent]{0} +ability.repairfield.description = Repairs nearby units +ability.statusfield = สนามเอฟเฟกต์ +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = โรงงานผลิต +ability.unitspawn.description = Constructs units ability.shieldregenfield = สนามรักษาโล่ +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = ปล่อยสายฟ้าเมื่อเคลื่อนที่ +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = โล่พลังงานโค้ง +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = สนามระงับการฟื้นฟู -ability.energyfield = สนามพลังงาน: [accent]{0}[] ดาเมจ ~ [accent]{1}[] บล็อก / [accent]{2}[] เป้าหมาย +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = สนามพลังงาน +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = ขนย้ายทรัพยากรลงแกนกลางได้เท่านั้น bar.drilltierreq = ต้องมีเครื่องขุดที่ดีกว่านี้ @@ -986,6 +1075,7 @@ bullet.splashdamage = [stat]{0}[lightgray] ดาเมจกระจาย ~[s bullet.incendiary = [stat]ติดไฟ bullet.homing = [stat]ติดตามตัว bullet.armorpierce = [stat]เจาะเกราะ +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} วิ[lightgray] ระงับการฟื้นฟู ~ [stat]{1}[lightgray] ช่อง bullet.interval = [stat]{0}/วิ[lightgray] กระสุนช่วงระยะ: bullet.frags = [stat]{0}[lightgray]x กระสุนกระจาย: @@ -1021,6 +1111,7 @@ unit.items = ไอเท็ม unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /การยิง category.purpose = วัตถุประสงค์ category.general = ทั่วไป @@ -1041,6 +1132,7 @@ setting.backgroundpause.name = หยุดในพื้นหลัง setting.buildautopause.name = หยุดสร้างชั่วคราวแบบอัตโนมัติ setting.doubletapmine.name = กดสองครั้งเพื่อขุด setting.commandmodehold.name = กดค้างเพื่อสั่งการ +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = ปิดม็อดเมื่อเกมขัดข้อง setting.animatedwater.name = แอนิเมชั่นพื้นและน้ำ setting.animatedshields.name = แอนิเมชั่นโล่พลังงาน @@ -1080,20 +1172,21 @@ setting.fps.name = แสดง FPS และ Ping setting.console.name = เปิดใช้งานคอนโซล setting.smoothcamera.name = กล้องแบบลื่นไหล setting.vsync.name = VSync -setting.pixelate.name = ภาพพิกเซล[lightgray] (ปิดใช้งานแอนิเมชั่น) +setting.pixelate.name = ภาพกราฟิกแบบพิกเซล setting.minimap.name = แสดงมินิแมพ setting.coreitems.name = แสดงไอเท็มในแกนกลาง setting.position.name = แสดงตำแหน่งของผู้เล่น setting.mouseposition.name = แสดงตำแหน่งเม้าส์ setting.musicvol.name = ระดับเสียงเพลง setting.atmosphere.name = แสดงชั้นบรรยากาศของดาว +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = ระดับเสียงแวดล้อม setting.mutemusic.name = ปิดเสียงเพลง setting.sfxvol.name = ระดับเสียง SFX setting.mutesound.name = ปิดเสียง setting.crashreport.name = ส่งรายงานข้อขัดข้องแบบไม่ระบุตัวตน setting.savecreate.name = สร้างเซฟโดยอัตโนมัติ -setting.publichost.name = การมองเห็นเซิร์ฟเวอร์สาธารณะ +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = จำกัดผู้เล่น setting.chatopacity.name = ความโปร่งแสงของแชท setting.lasersopacity.name = ความโปร่งแสงของลำแสงพลังงาน @@ -1101,6 +1194,8 @@ setting.bridgeopacity.name = ความโปร่งแสงของสะ setting.playerchat.name = แสดงกล่องแชทบนผู้เล่น setting.showweather.name = แสดงกราฟิกสภาพอากาศ setting.hidedisplays.name = ซ่อนหน้าจอลอจิก +setting.macnotch.name = ปรับอินเตอร์เฟซให้เข้ากับติ่งหน้าจอ +setting.macnotch.description = อาจจะต้องรีสตาร์ทเพื่อใช้งานการเปลี่ยนแปลง steam.friendsonly = เพื่อนเท่านั้น steam.friendsonly.tooltip = ว่าจะให้แค่เพื่อนเท่านั้นหรือไม่ที่จะสามารถเข้าร่วมเกมของคุณได้\nหากคุณติ๊กช่องนี้ออกนั้นจะทำให้เกมของคุณเปิดเป็นสาธารณะ - ใครๆก็จะสามารถเข้าร่วมเกมของคุณได้ public.beta = เกมเวอร์ชั่นเบต้าไม่สามารถเปิดเซิร์ฟเวอร์สาธารณะได้ @@ -1111,6 +1206,7 @@ keybind.title = ตั้งค่าปุ่ม keybinds.mobile = [scarlet]การตั้งค่าปุ่มส่วนใหญ่ไม่สามารถใช้ในมือถือได้ เฉพาะการเคลื่อนไหวพื้นฐานเท่านั้นที่ใช้ได้ category.general.name = ทั่วไป category.view.name = การมองเห็น +category.command.name = Unit Command category.multiplayer.name = โหมดผู้เล่นหลายคน category.blocks.name = เลือกบล็อก placement.blockselectkeys = \n[lightgray]ปุ่ม: [{0}, @@ -1122,12 +1218,30 @@ keybind.press.axis = กดแกนหรือปุ่มใดก็ได keybind.screenshot.name = ถ่ายรูปแมพ keybind.toggle_power_lines.name = เปิด/ปิด ลำแสงพลังงาน keybind.toggle_block_status.name = เปิด/ปิด สถานะของบล็อก -keybind.move_x.name = เคลื่อนที่ในแกน x -keybind.move_y.name = เคลี่อนที่ในแกน y +keybind.move_x.name = เคลื่อนที่ในแกน X +keybind.move_y.name = เคลี่อนที่ในแกน Y keybind.mouse_move.name = ตามเม้าส์ keybind.pan.name = เคลื่อนการมองเห็น keybind.boost.name = บูสต์ keybind.command_mode.name = โหมดสั่งการ +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = เลือกพื้นที่สร้างใหม่ keybind.schematic_select.name = เลือกพื้นที่ keybind.schematic_menu.name = เมนูแผนผัง @@ -1191,17 +1305,25 @@ mode.pvp.description = สู้กับผู้เล่นอื่น\n[gra mode.attack.name = โจมตี mode.attack.description = ทำลายฐานของศัตรู \n[gray]จำเป็นต้องมีแกนกลางสีแดงเพื่อเล่น mode.custom = กฎแบบกำหนดเอง +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = ซ่อนบล็อกต้องห้าม rules.infiniteresources = ทรัพยากรไม่จำกัด rules.onlydepositcore = ขนย้ายทรัพยากรลงแกนกลางได้เท่านั้น +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = เปิดการระเบิดของเตาปฏิกร rules.coreincinerates = แกนกลางเผาทรัพยากรส่วนเกิน rules.disableworldprocessors = ปิดการทำงานของตัวประมวลผลโลก rules.schematic = อนุญาตให้ใช้แผนผัง rules.wavetimer = นับถอยหลังการปล่อยคลื่น -rules.wavesending = การปล่อยคลื่น +rules.wavesending = กดเพื่อปล่อยคลื่น +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = คลื่น +rules.airUseSpawns = Air units use spawn points rules.attack = โหมดการโจมตี +rules.buildai = AI สร้างฐานทัพ +rules.buildaitier = ระดับการสร้างของ AI rules.rtsai = RTS AI [red](ไม่เสถียร) rules.rtsminsquadsize = ขนาดกองทัพเล็กที่สุด rules.rtsmaxsquadsize = ขนาดกองทัพใหญ่ที่สุด @@ -1220,6 +1342,7 @@ rules.unitdamagemultiplier = พหุคูณพลังโจมตีขอ rules.unitcrashdamagemultiplier = พหูคูณดาเมจการตกของยานยูนิต rules.solarmultiplier = พหูคุณพลังงานแสงอาทิตย์ rules.unitcapvariable = เพิ่มจำนวนยูนิตสูงสุดต่อแกนกลาง +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = ขีดกำจัดยูนิตสูงสุดพื้นฐาน rules.limitarea = จำกัดพื้นที่แมพ rules.enemycorebuildradius = รัศมีห้ามสร้างบริเวณแกนกลางของศัตรู:[lightgray] (ช่อง) @@ -1229,7 +1352,7 @@ rules.buildcostmultiplier = พหุคูณราคาทรัพยาก rules.buildspeedmultiplier = พหุคูณความเร็วการสร้าง rules.deconstructrefundmultiplier = พหุคูณการคืนทรัพยากรเมื่อทำลาย rules.waitForWaveToEnd = คลื่นจะรอศัตรู -rules.wavelimit = Map Ends After Wave +rules.wavelimit = แมพจบหลังคลื่นที่ rules.dropzoneradius = รัศมีจุดเกิดของศัตรู:[lightgray] (ช่อง) rules.unitammo = ยูนิตต้องใช้กระสุน rules.enemyteam = ทีมศัตรู @@ -1252,6 +1375,8 @@ rules.weather = สภาพอากาศ rules.weather.frequency = ความถี่: rules.weather.always = ตลอด rules.weather.duration = ระยะเวลา: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = ไอเท็ม content.liquid.name = ของเหลว @@ -1297,11 +1422,11 @@ liquid.hydrogen.name = ไฮโดรเจน liquid.nitrogen.name = ไนโตรเจน liquid.cyanogen.name = ไซยาโนเจน -# three conditions if you want to cancel transliteration in these names -# 1. no random lame bali sanskrit, sounds weird in futuristic units -# 2. nice naming similarities for each unit tree -# 3. name may not be very similar to the original, but it should at least resemble some of it -# sometimes transliteration are better, so maybe keep some of the unit tree (like spiders or boats) to be transliterated - Translator +# Three suggestions if you would like to change the transliteration in these names. +# 1. Using Bali-Sanskrit language sounds weird in futuristic units, please don't. +# 2. Keep names consistent in each unit tree. +# 3. Name should resemble the unit, or the original english name. +# But sometimes transliteration is better, for instance boats, spiders, so please keep it like that - Translator unit.dagger.name = แด็กเกอร์ unit.mace.name = เมส @@ -1437,7 +1562,7 @@ block.metal-floor-2.name = พื้นโลหะ 2 block.metal-floor-3.name = พื้นโลหะ 3 block.metal-floor-4.name = พื้นโลหะ 4 block.metal-floor-5.name = พื้นโลหะ 5 -block.metal-floor-damaged.name = พื้นเหล็กที่เสียหาย +block.metal-floor-damaged.name = พื้นเหล็กผุพัง block.dark-panel-1.name = แผ่นดำ 1 block.dark-panel-2.name = แผ่นดำ 2 block.dark-panel-3.name = แผ่นดำ 3 @@ -1474,9 +1599,10 @@ block.router.name = เร้าเตอร์ block.distributor.name = เครื่องแจกจ่าย block.sorter.name = เครื่องคัดแยก block.inverted-sorter.name = เครื่องคัดแยกกลับด้าน -block.message.name = ตัวเก็บข้อความ -block.reinforced-message.name = ตัวเก็บข้อความเสริมกำลัง -block.world-message.name = ตัวเก็บข้อความโลก +block.message.name = กล่องข้อความ +block.reinforced-message.name = กล่องข้อความเสริมกำลัง +block.world-message.name = กล่องข้อความโลก +block.world-switch.name = World Switch block.illuminator.name = ตัวเปล่งแสง block.overflow-gate.name = ประตูระบาย block.underflow-gate.name = ประตูระบายข้าง @@ -1717,7 +1843,6 @@ block.disperse.name = ดิสเพิร์ส block.afflict.name = อัฟฟลิกต์ block.lustre.name = ลัสเตอร์ block.scathe.name = สเกซส์ -block.fabricator.name = เครื่องสรรค์สร้าง block.tank-refabricator.name = เครื่องแปลงสภาพรถถัง block.mech-refabricator.name = เครื่องแปลงสภาพจักรกล block.ship-refabricator.name = เครื่องแปลงสภาพยานบิน @@ -1780,8 +1905,8 @@ hint.unitSelectControl.mobile = เพื่อที่จะควบคุม hint.launch = เมื่อเก็บทรัพยากรเยอะพอ คุณสามารถ[accent]ส่งแกนกลาง[]โดยการเลือกเซ็กเตอร์จาก \ue827 [accent]แผนที่[] ตรงขวาล่าง hint.launch.mobile = เมื่อเก็บทรัพยากรเยอะพอ คุณสามารถ[accent]ส่งแกนกลาง[]โดยการเลือกเซ็กเตอร์จาก \ue827 [accent]แผนที่[] ใน \ue88c [accent]เมนู[] hint.schematicSelect = กด [accent][[F][] แล้วลากเพื่อเลือกบล็อกที่จะคัดลอกและวาง\n\n[accent][[คลิ๊กกลาง][] เพื่อคัดลอกบล็อกชนิดเดียว -hint.rebuildSelect = กด [accent][[B][] แล้วลากเพื่อเลือกแปลนบล็อกที่ถูกทำลาย\nแปลนบล็อกที่เลือกจะถูกสร้างใหม้โดยอัตโนมัติ -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect = กด [accent][[B][] แล้วลากเพื่อเลือกแผนบล็อกที่ถูกทำลาย\nแผนบล็อกที่เลือกจะถูกสร้างใหม้โดยอัตโนมัติ +hint.rebuildSelect.mobile = กดปุ่ม \ue874 คัดลอก แล้วกดปุ่ม \ue80f สร้างใหม่แล้วลากเพื่อเลือกแผนบล็อกที่ถูกทำลาย\nแผนบล็อกที่เลือกจะถูกสร้างใหม้โดยอัตโนมัติ hint.conveyorPathfind = กด [accent][[L-Ctrl][] ในขณะที่กำลังลากสายพานเพื่อสร้างเส้นทางแบบอัตโนมัติ hint.conveyorPathfind.mobile = เปิดใช้งาน \ue844 [accent]โหมดแนวทแยง[] แล้วลากสายพานเพื่อสร้างเส้นทางแบบอัตโนมัติ hint.boost = กด [accent][[L-Shift][] เพื่อบูสต์ข้ามสิ่งกีดขวางด้วยยูนิตของคุณ\n\nยูนิตพื้นดินบางประเภทเท่านั้นที่บินได้ @@ -1795,7 +1920,7 @@ hint.guardian = หน่วย[accent]ผู้พิทักษ์[]มีเ hint.coreUpgrade = สามารถอัปเกรดแกนกลางได้โดย[accent]วางแกนกลางที่ใหญ่กว่าทับมัน[]\n\nวาง \uf868 [accent]แกนกลาง: ฟาวน์เดชั่น[]ทับ \uf869 [accent]แกนกลาง: ชาร์ด[] ต้องแน่ใจว่ารอบข้างมีที่ว่างก่อนจะวาง hint.presetLaunch = [accent]เซ็กเตอร์ลงจอด[]สีเทา อย่างเช่น[accent]ป่าหนาวเหน็บ[] สามารถลงจอดจากที่ไหนที่ได้ในแผนที่ พวกนั้นไม่จำเป็นต้องยืดครองเซ็กเตอร์รอบข้างเพื่อส่งแกนกลางไป\n\n[accent]เซ็กเตอร์ที่มีเลข[] อย่างเช่นอันนี้[accent]ไม่จำเป็น[]ต้องยืดครอง hint.presetDifficulty = เซ็กเตอร์นี้มี[scarlet]ระดับภัยคุกคามศัตรูสูง[]\n[accent]ไม่แนะนำ[]ให้ลงจอดไปยังเซ็กเซอร์พวกนั้นหากไม่มีการเตรียมพร้อมและเทคโนโลยี -hint.coreIncinerate = เมื่อแกนกลางมีจำนวนไอเท็มชนิดหนึ่งที่เต็ม ไอเท็มชนิดนั้นที่เข้ามาเพิ่มจะ[accent]ถูกเผา[] +hint.coreIncinerate = เมื่อแกนกลางมีจำนวนไอเท็มชนิดหนึ่งที่กักเก็บไว้เต็ม ไอเท็มชนิดนั้นที่เข้ามาเพิ่มจะ[accent]ถูกเผา[] hint.factoryControl = เพื่อที่จะตั้ง[accent]ตำแหน่งการส่งออก[]ของโรงงานยูนิต ให้กดที่โรงงานยูนิตในระหว่างที่อยู่ในโหมดสั่งการ แล้วกดคลิ๊กขวาที่ตำแหน่งที่ต้องการตั้ง\nยูนิตที่ถูกผลิตจะขยับออกมาที่จุดที่ตั้งโดยอัตโนมัติ hint.factoryControl.mobile = เพื่อที่จะตั้ง[accent]ตำแหน่งการส่งออก[]ของโรงงานยูนิต ให้กดที่โรงงานยูนิตในระหว่างที่อยู่ในโหมดสั่งการ แล้วกดที่ตำแหน่งที่ต้องการตั้ง\nยูนิตที่ถูกผลิตจะขยับออกมาที่จุดที่ตั้งโดยอัตโนมัติ @@ -1816,7 +1941,7 @@ gz.aa = ป้อมปืนมาตรฐานไม่สามารถจ gz.scatterammo = เติมกระสุนให้แก่ป้อมปืนสแก็ตเตอร์ด้วย[accent]ตะกั่ว[] โดยใช้สายพาน gz.supplyturret = [accent]เติมกระสุนป้อมปืน gz.zone1 = นี่คือจุดเกิดของศัตรู -gz.zone2 = สิ่งก่อสร้างทุกอย่างในรัศมีจะถูกทำลายเมื่อมีคลื่นเริ่มขึ้น +gz.zone2 = สิ่งก่อสร้างทุกอย่างในรัศมีจะถูกทำลายเมื่อมีคลื่นใหม่เริ่มขึ้น gz.zone3 = คลื่นกำลังจะเริ่มขึ้นแล้ว\nเตรียมตัวให้พร้อม gz.finish = สร้างป้อมปืนเพิ่ม ขุดทรัพยากรให้ได้มากกว่านี้\nแล้วป้องกันคลื่นทั้งหมดเพื่อ[accent]ยึดครองเซ็กเตอร์[] @@ -1838,10 +1963,16 @@ onset.turrets = ยูนิตนั้นมีประสิทธิภา onset.turretammo = เติมกระสุนให้แก่ป้อมปืนด้วย[accent]กระสุนเบริลเลี่ยม[] onset.walls = [accent]กำแพง[]สามารถป้องกันความเสียหายที่จะมาถึงให้ไม่ไปโดนสิ่งก่อสร้างได้\nวางกำแพง \uf6ee [accent]กำแพงเบริลเลี่ยม[]รอบๆ ป้อมปืน onset.enemies = ศัตรูกำลังจะเข้ามา เตรียมตัวป้องกันให้ดี +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = ศัตรูอ่อนแอลงแล้ว ตอบโต้กลับ onset.cores = แกนกลางใหม่สามารถวางได้บน[accent]โซนแกนกลาง[]\nแกนกลางใหม่จะทำหน้าที่เป็นฐานทัพหน้าด่านและจะแบ่งปันทรัพยากรกับแกนกลางอื่นๆ\nวาง \uf725 แกนกลาง onset.detect = ศัตรูจะสามารถตรวจจับการมีอยู่ของคุณได้ในอีก 2 นาที\nจัดตั้งกองกำลังป้องกัน ปฏิบัติการขุด และการผลิต +#Don't translate these yet! +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. + split.pickup = บล็อกบางชนิดสามารถถูกหยิบขึ้นมาได้ด้วยยูนิตแกนกลาง\nบรรทุก[accent]ที่เก็บของ[]นี้มาแล้วเอาไปวางใน[accent]เครื่องโหลดสิ่งบรรทุก[]\n(ปุ่มค่าเริ่มต้นคือ [ สำหรับหยิบและ ] สำหรับวางบล็อก) split.pickup.mobile = บล็อกบางชนิดสามารถถูกหยิบขึ้นมาได้ด้วยยูนิตแกนกลาง\nบรรทุก[accent]ตู้เก็บของ[]นี้มาแล้วเอาไปวางใน[accent]เครื่องโหลดสิ่งบรรทุก[]\n(เพื่อจะหยิบหรือวางสิ่งใดๆ ให้กดค้างที่ตำแหน่งที่ต้องการหยิบหรือวาง) split.acquire = คุณต้องหาทังสเตนมาเพื่อสร้างยูนิต @@ -1857,12 +1988,12 @@ item.graphite.description = เกิดจากการจัดเรีย item.sand.description = ทรัพยาการที่พบได้ทั่วไป ใช้ในการแปรรูปเป็นวัสดุอื่นๆ หรือนำไปเผาเป็น[accent]กระจกเมต้า[] item.coal.description = ใช้เป็นเชื้อเพลิงและการแปรรูปเป็นวัสดุอื่นๆ item.coal.details = ดูเหมือนจะเป็นซากพืชดึกดำบรรพ์ เกิดขึ้นนานก่อนการแพร่พันธุ์ของสปอร์เสียอีก -item.titanium.description = โลหะเบาซึ่งหายากตามธรรมชาติ ใช้อย่างแพร่หลายในการขนย้ายของเหลว เครื่องขุดเจาะและอากาศยาน +item.titanium.description = ใช้อย่างแพร่หลายในการขนย้ายของเหลว เครื่องขุดเจาะและอากาศยาน item.thorium.description = ใช้ในการเสริมเกราะของสิ่งก่อสร้างต่างๆ หรือนำไปเป็นเป็นเชื้อเพลิงนิวเคลียร์ item.scrap.description = ใช้ในเตาหลอมแร่และเครื่องบดอัดเพื่อเปลี่ยนเป็นทรัพยากรอื่นๆ item.scrap.details = เศษที่เหลือจากสิ่งก่อสร้างและยูนิตเก่า มีร่องรอยของโลหะหลายชนิดอยู่ เกิดจากฐานทัพโบราณในสมัยสงครามเก่าแก่ถูกทำลาย ทำให้วัสดุต่างๆ พังลงมารวมกับ item.silicon.description = วัสดุกึ่งตัวนำที่มีประโยชน์มาก ใช้ในแผงโซล่าเซลล์ อุปกรณ์อิเล็กทรอนิกที่ซับซ้อน\nหรือนำไปเป็นกระสุนติดตามตัวสำหรับป้อมปืน -item.plastanium.description = ใช้ในอากาศยานขั้นสูง เป็นฉนวนกันความร้อนหรือนำไปเป็นกระสุนกระจาย +item.plastanium.description = วัสดุที่เบาและดัดได้ ใช้ในอากาศยานขั้นสูง เป็นฉนวนกันความร้อนหรือนำไปเป็นกระสุนกระจาย item.phase-fabric.description = วัสดุที่เบาจนแทบจะไร้น้ำหนัก ใช้ในอิเล็กทรอนิกส์ขั้นสูงและเทคโนโลยีซ่อมแซมตนเอง item.surge-alloy.description = โลหะผสมขั้นสูงที่มีคุณสมบัติทางไฟฟ้าที่จำเพาะ\nใช้ในอาวุธขั้นสูงและการป้องกันต่างๆ item.spore-pod.description = กระเปาะของสปอร์สังเคราะห์ สังเคราะห์โดยการสกัดสปอร์ที่อยู่ในบรรยากาศ\nใช้ในอุตสาหกรรม ใช้ในการกลั่นเป็นน้ำมัน สารระเบิดและเชื้อเพลิง @@ -1895,7 +2026,7 @@ block.armored-conveyor.description = เลื่อนไอเท็มไป block.illuminator.description = ตัวเปล่งแสงขนาดกะทัดรัด ส่องสว่างในที่มืดได้ดี\nแถมยังกำหนดค่าสีของแสงได้อีกด้วย... เจ๋งใช่มั้ยล่ะ block.message.description = เก็บข้อความ ใช้สื่อสารกับพันธมิตร block.reinforced-message.description = เก็บข้อความ ใช้สื่อสารกับพันธมิตร -block.world-message.description = ตัวเก็บข้อความสำหรับการสร้างแมพ ไม่สามารถทำลายได้ +block.world-message.description = กล่องข้อความสำหรับการสร้างแมพ ไม่สามารถทำลายได้ block.graphite-press.description = อัดก้อนถ่านหินให้เป็นแผ่นกราไฟต์บริสุทธิ์ block.multi-press.description = อัดก้อนถ่านหินให้เป็นแผ่นกราไฟต์บริสุทธิ์ ใช้น้ำและพลังงานในการแปรรูปถ่านหินให้เร็วและมีประสิทธิภาพมากขึ้น block.silicon-smelter.description = ผลิตซิลิกอนจากการหลอมทรายและถ่านหินเข้าด้วยกัน @@ -2040,7 +2171,6 @@ block.logic-display.description = แสดงกราฟิกโดยคว block.large-logic-display.description = แสดงกราฟิกโดยควบคุมจากตัวประมวลผลลอจิก มีขนาดใหญ่กว่า block.interplanetary-accelerator.description = หอคอยเรลกันแม่เหล็กไฟฟ้าขนาดมหึมา เร่งความเร็วแกนกลางเพื่อบินสู่อวกาศไปยังดาวเคราะห์อื่นๆ block.repair-turret.description = ซ่อมแซมยูนิตที่อยู่ในรัศมีของมันอย่างต่อเนื่อง สามารถใช้ของเหลวมาหล่อเย็นเพื่อเพิ่มประสิทธิภาพได้ -block.payload-propulsion-tower.description = บล็อกขนส่งสิ่งบรรทุกทางไกล\nยิงสิ่งบรรทุกไปยังหอเคลื่อนย้ายสิ่งบรรทุกอีกเครื่องที่เชื่อมต่อไว้ #Erekir block.core-bastion.description = ใจกลางของฐานทัพ เสริมเกราะมาอย่างดี เมื่อถูกทำลาย การติดต่อกับพื้นที่นั้นทั้งหมดจะหายไป อย่าให้มันเกิดขึ้น @@ -2078,7 +2208,6 @@ block.impact-drill.description = เมื่อวางบนพื้นแ block.eruption-drill.description = เครื่องขุดแรงกระแทกที่ได้รับการปรับปรุง สามารถขุดทอเรี่ยมได้ จำเป็นต้องใช้ไฮโดรเจน block.reinforced-conduit.description = เคลื่อนย้ายของเหลวไปข้างหน้า ไม่รับของเหลวจากด้านข้างยกเว้นว่าจะเป็นท่อน้ำด้วยกันเอง block.reinforced-liquid-router.description = รับของเหลวจากทางเดียวแล้วส่งออกไปสามทางเท่าๆกัน สามารถเก็บของเหลวได้จำนวนหนึ่ง\nมีประโยชน์สำหรับการส่งของเหลวจากปั้มไปยังหลายที่ -block.reinforced-junction.description = มีหน้าที่เป็นสะพานสำหรับท่อสูญญากาศสองท่อข้ามกัน มีประโยชน์สำหรับเวลาท่อสูญญากาศสองท่อ\nขนไอเท็มสองชนิดไปยังสองสถานที่ block.reinforced-liquid-tank.description = เก็บของเหลวจำนวนมาก ส่งออกไปรอบด้านคล้ายกับเร้าเตอร์ของเหลว\nเหมาะในการใช้เพื่อสร้างกันชนในเวลาที่ของเหลวไม่คงที่\nหรือเวลาที่ใช้ของเหลวเป็นจำนวนมาก block.reinforced-liquid-container.description = เก็บของเหลวจำนวนปานกลาง ส่งออกไปรอบด้านคล้ายกับ\nเร้าเตอร์ของเหลว เหมาะในการใช้กับเครื่องโหลดและถ่ายสิ่งบรรทุกสำหรับ\nการขนส่งของเหลวทางไกล block.reinforced-bridge-conduit.description = เคลื่อนย้ายของเหลวข้ามสิ่งก่อสร้างหรือกำแพง @@ -2199,6 +2328,7 @@ unit.emanate.description = สร้างสิ่งต่างๆ เพื lst.read = อ่านเลขจากเซลล์ความจำที่เชื่อมต่อไว้ lst.write = เขียนเลขไปยังเซลล์ความจำที่เชื่อมต่อไว้ lst.print = เพิ่มข้อความไปยังคิวข้อความ\nข้อความจะยังไม่แสดงจนกว่าจะใช้คำสั่ง [accent]Print Flush[] +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = เพิ่มรูปไปยังคิวการวาด\nภาพจะยังไม่แสดงจนกว่าจะใช้คำสั่ง [accent]Draw Flush[] lst.drawflush = ปล่อยคิว [accent]Draw[] ไปยังหน้าจอลอจิกที่เชื่อมต่อไว้ lst.printflush = ปล่อยคิว [accent]Print[] ไปยังตัวเก็บข้อความที่เชื่อมต่อไว้ @@ -2212,7 +2342,7 @@ lst.end = ย้อนกลับไปยังด้านบนสุดข lst.wait = รอเวลาเป็นวินาที lst.stop = หยุดยั้งการทำงานของตัวประมวลผล lst.lookup = ค้นหาชนิดไอเท็ม/ของเหลว/ยูนิต/บล็อกตาม ID\nสามารถหาจำนวนนับทั้งหมดของแต่ละชนิดได้ด้วย:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] -lst.jump = ข้ามไปยังจุดต่างๆ โดยมีเงื่อนไข +lst.jump = ข้ามไปยังคำสั่งต่างๆ โดยสามารถตั้งเงื่อนไขได้ lst.unitbind = เลือกยูนิตถัดไปเป็นชนิด และเก็บค่าไว้ในตัวแปร [accent]@unit[] lst.unitcontrol = ควบคุมยูนิตที่เลือกไว้ lst.unitradar = ค้นหายูนิตรอบๆ ยูนิตที่เลือกไว้ @@ -2221,17 +2351,60 @@ lst.getblock = รับข้อมูลของช่องที่ตำ lst.setblock = ปรับแต่งข้อมูลของช่องที่ตำแหน่งใดๆ lst.spawnunit = เสกยูนิตมาที่ตำแหน่งที่กำหนดไว้ lst.applystatus = ใส่หรือล้างเอฟเฟกต์สถานะจากยูนิต -lst.spawnwave = จำลองคลื่นที่ตำแหน่งใดๆ\nจะไม่เพิ่มจำนวนคลื่นในสถิติ +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. +lst.spawnwave = จำลองคลื่นที่ตำแหน่งใดๆ lst.explosion = เสกระเบิดที่ตำแหน่ง lst.setrate = ตั้งค่าความเร็วการสั่งเป็นคำสั่งใน คำสั่ง/ติก -lst.fetch = ค้นหายูนิต แกนกลาง ผู้เล่น หรือสิ่งก่อสร้างตามดัชนี\nดัชนีเริ่มที่ 0 และจบที่ค่าที่ส่งกลับ -lst.packcolor = แพ็ค [0, 1] ส่วนประกอบ RGBA มาเป็นเลขบรรทัดเดียวสำหรับการวาดหรือตั้งค่ากฎ +lst.fetch = ค้นหายูนิต แกนกลาง ผู้เล่น หรือสิ่งก่อสร้างตามดัชนี\nดัชนีเริ่มที่ 0 และจบที่ค่าที่จะส่งกลับ +lst.packcolor = แพ็ค [0, 1] ส่วนประกอบ RGBA มาเป็นเลขบรรทัดเดียวสำหรับการวาดหรือการตั้งค่ากฎ lst.setrule = ตั้งค่ากฎของเกม lst.flushmessage = แสดงข้อความบนหน้าจอจากบัฟเฟอร์ข้อความ\nจะรอจนกว่าข้อความก่อนหน้าจะเสร็จสิ้น lst.cutscene = ควบคุมมุมกล้องของผู้เล่น lst.setflag = เซ็ตธงทั่วโลกที่ตัวประมวลผลทุกตัวสามารถอ่านค่าได้ lst.getflag = เช็กว่าธงทั่วโลกนั้นได้ถูกเซ็ตอยู่รึเปล่า lst.setprop = ตั้งค่าคุณสมบัติของยูนิตและสิ่งก่อสร้าง +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]ไม่อนุญาตให้ใช้ลอจิกควบคุมให้ยูนิตสร้างที่นี่ @@ -2244,9 +2417,10 @@ lenum.enabled = ว่าบล็อกเปิดใช้งาน/ทำง laccess.color = สีของตัวเปล่งแสง laccess.controller = ผู้ควบคุมยูนิต ถ้าผู้ควบคุมคือตัวประมวลผล จะส่งกลับค่า processor\nนอกนั้น จะส่งกลับค่าตัวยูนิตเอง laccess.dead = ว่าสิ่งก่อสร้าง/ยูนิตนั้นตายแล้วหรือใช้งานไม่ได้แล้ว -laccess.controlled = จะส่งกลับ:\n[accent]@ctrlProcessor[] ถ้าผู้ควบคุมคือตัวประมวลผลลอจิก\n[accent]@ctrlPlayer[] ถ้าสิ่งก่อสร้าง/ยูนิตถูกควบคุมโดยผู้เล่น\n[accent]@ctrlCommand[] ถ้ายูนิตถูกสั่งการโดยผู้เล่นอยู่\nนอกนั้น 0 +laccess.controlled = จะส่งกลับ:\n[accent]@ctrlProcessor[] ถ้าผู้ควบคุมคือตัวประมวลผลลอจิก\n[accent]@ctrlPlayer[] ถ้าสิ่งก่อสร้าง/ยูนิตถูกควบคุมโดยผู้เล่น\n[accent]@ctrlCommand[] ถ้ายูนิตถูกสั่งการโดยผู้เล่นอยู่\nนอกนั้นจะเป็น 0 laccess.progress = ความคืบหน้าการดำเนินการจาก 0 ถึง 1\nจะส่งกลับค่าการผลิต การรีโหลดของป้อมปืน หรือความคืบหน้าในการสร้างสิ่งก่อสร้าง laccess.speed = ความเร็วสูงสุดของยูนิตในหน่วย ช่อง/วินาที +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = ไม่ทราบ lcategory.unknown.description = คำสั่งที่ไม่อยู่ในหมวดหมู่ใดๆเลย @@ -2274,12 +2448,13 @@ graphicstype.poly = เติมรูปหลายเหลี่ยมปก graphicstype.linepoly = วาดโครงร่างรูปหลายเหลี่ยมปกติ graphicstype.triangle = เติมสามเหลี่ยม graphicstype.image = วาดรูปสิ่งต่างๆ \nตัวอย่างเช่น: [accent]@router[] หรือ [accent]@dagger[] +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = เป็นจริงเสมอ lenum.idiv = หารจำนวนเต็ม lenum.div = หาร\nจะส่งกลับ[accent]ค่าว่าง[] หากหารศูนย์ lenum.mod = โมดูโล่ (หารหาเศษ) -lenum.equal = เท่ากับ แบบบังคับประเภท\nสิ่งที่ไม่ใช่ค่าว่างเมื่อเทียบกับตัวเลขจะให้ค่า 1 นอกนั้นจะให้ค่า 0 +lenum.equal = เท่ากับ แบบบังคับประเภท\nสิ่งที่ไม่ใช่ค่าว่างเมื่อเทียบกับตัวเลขจะส่งกลับค่า 1 นอกนั้นจะส่งกลับค่า 0 lenum.notequal = ไม่เท่ากับ บังคับประเภท lenum.strictequal = เท่ากับที่เข้มงวด ไม่บังคับประเภท\nสามารถใช้ตรวจสอบหา[accent]ค่าว่าง[]ได้ lenum.shl = เลื่อนบิตไปทางซ้าย @@ -2292,7 +2467,8 @@ lenum.xor = แยกเฉพาะ แบบบิต lenum.min = เทียบต่ำสุดของสองหมายเลข lenum.max = เทียบสูงสุดของสองหมายเลข -lenum.angle = มุมของเวกเตอร์ เป็นองศา +lenum.angle = มุมของเวกเตอร์ หน่วยเป็นองศา +lenum.anglediff = ระยะทางสัมบูรณ์ระหว่างมุมสองมุม หน่วยเป็นองศา lenum.len = ความยาวของเวกเตอร์ lenum.sin = ไซน์ หน่วยเป็นองศา @@ -2340,13 +2516,13 @@ sensor.in = สิ่งก่อสร้าง/ยูนิตให้ตร radar.from = สิ่งก่อสร้างที่จะใช้ในการค้นหา\nระยะเซนเซอร์จะขึ้นอยู่กับระยะของสิ่งก่อสร้าง radar.target = ตัวกรองในการหายูนิต radar.and = ตัวกรองเพิ่มเติม -radar.order = เรียงลำดับคำสั่ง\n0 เพื่อเรียงย้อนกลับ +radar.order = เรียงลำดับคำสั่ง\nใส่ค่า 0 เพื่อเรียงย้อนกลับ radar.sort = เมตริกเพื่อจัดเรียงผลลัพย์ตาม radar.output = ตัวแปรของยูนิตที่มองหา unitradar.target = ตัวกรองในการหายูนิต unitradar.and = ตัวกรองเพิ่มเติม -unitradar.order = เรียงลำดับคำสั่ง\n0 เพื่อเรียงย้อนกลับ +unitradar.order = เรียงลำดับคำสั่ง\nใส่ค่า 0 เพื่อเรียงย้อนกลับ unitradar.sort = เมตริกเพื่อจัดเรียงผลลัพธ์ตาม unitradar.output = ตัวแปรของยูนิตที่มองหา @@ -2363,10 +2539,11 @@ unitlocate.group = กลุ่มสิ่งก่อสร้างที่ lenum.idle = หยุดขยับ แต่ยังคงขุด/ก่อสร้าง\nสถานะเริ่มต้นของยูนิต lenum.stop = หยุดขยับ/ขุด/ก่อสร้าง -lenum.unbind = ยกเลิกการควบคุมลอจิกทั้งหมด\nเปลี่ยนเป็น AI ธรรมดาต่อ +lenum.unbind = ยกเลิกการควบคุมลอจิกทั้งหมด\nเปลี่ยนไปใช้ AI ธรรมดาต่อ lenum.move = ขยับไปที่ตำแหน่งที่กำหนดไว้ lenum.approach = เข้าใกล้ตำแหน่งโดยกำหนดระยะห่าง lenum.pathfind = ขยับไปที่ตำแหน่งที่กำหนดไว้ โดยมีการคำนวณเพื่อเลี่ยงสิ่งกีดขวาง +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = ยิงไปที่ตำแหน่งเป้าหมาย lenum.targetp = ยิงไปที่เป้าหมาย โดยมีการคำนวณความเร็ว lenum.itemdrop = ปล่อยไอเท็ม @@ -2377,10 +2554,13 @@ lenum.payenter = เข้าไป/ลงจอดบนบล็อกบร lenum.flag = ปักธงยูนิตเป็นหมายเลข lenum.mine = ขุดที่ตำแหน่งเป้าหมาย lenum.build = สร้างสิ่งก่อสร้าง -lenum.getblock = ดึงข้อมูลสิ่งก่อสร้างและประเภทของสิ่งก่อสร้างที่ตำแหน่งเป้าหมาย\nหน่วยต้องอยู่ในช่วงของตำแหน่ง\nบล็อกตันที่ไม่ใช่สิ่งก่อสร้างจะส่งกลับเป็น [accent]@solid[] -lenum.within = ตรวจสอบว่ายูนิตอยู่ในระยะหรือไม่ +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. +lenum.within = ตรวจสอบว่ายูนิตนั้นอยู่ในระยะหรือไม่ lenum.boost = เริ่ม/หยุดการบูสต์ - -#Don't translate these yet! -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index df6daf11cd..bb8259dd4f 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -56,6 +56,7 @@ mods.browser.sortstars = Sort by stars schematic = Schematic schematic.add = Save Schematic... schematics = Schematics +schematic.search = Search schematics... schematic.replace = A schematic by that name already exists. Replace it? schematic.exists = A schematic by that name already exists. schematic.import = Import Schematic... @@ -68,7 +69,7 @@ schematic.shareworkshop = Share on Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic schematic.saved = Schematic saved. schematic.delete.confirm = This schematic will be utterly eradicated. -schematic.rename = Rename Schematic +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2} blocks schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.tags = Tags: @@ -77,6 +78,7 @@ schematic.addtag = Add Tag schematic.texttag = Text Tag schematic.icontag = Icon Tag schematic.renametag = Rename Tag +schematic.tagged = {0} tagged schematic.tagdelconfirm = Delete this tag completely? schematic.tagexists = That tag already exists. stats = Stats @@ -249,11 +251,19 @@ trace = Oyuncu isaretle trace.playername = Player name: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Unik ID: [accent]{0} +trace.language = Language: [accent]{0} trace.mobile = Mobile Client: [accent]{0} trace.modclient = Ozel islemci Kullanicisi: [accent]{0} trace.times.joined = Times Joined: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = Yanlis islemci Linki! Sorunu bildir +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = Yasaklamalar server.bans.none = Yasaklananlar bulunamadi! server.admins = Yetkililer @@ -267,10 +277,11 @@ server.version = [lightgray]Versiyon: {0} server.custombuild = [accent]ozel yapi confirmban = Bu oyuncuyu kalici olarak atmak istedigine emin misin? confirmkick = Are you sure you want to kick this player? -confirmvotekick = Are you sure you want to vote-kick this player? confirmunban = Bu oyuncunun yasagini geri almak ister misin? confirmadmin = Bu oyuncuyu yetkili yapmak istedigine emin misin? confirmunadmin = Bu oyuncunun yetkisini almak istedigine emin misin? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Oyuna katil joingame.ip = Link: disconnect = Cikildi @@ -326,12 +337,23 @@ open = Ac customize = Customize cancel = iptal command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Linki ac copylink = Linki kopyala back = Geri don @@ -378,9 +400,9 @@ custom = Ozel builtin = Yapilandirilmis map.delete.confirm = Haritayi silmek istedigine emin misin? Bu geri alinamaz! map.random = [accent]Rasgele harita -map.nospawn = Haritada Oyncularin cikmasi icin cekirdek yok! Haritaya[royal]Mavi[] cekirdek ekle. -map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[scarlet] red[] cores to this map in the editor. -map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[scarlet] red[] cores to this map in the editor. +map.nospawn = Haritada Oyncularin cikmasi icin cekirdek yok! Haritaya {0} cekirdek ekle. +map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add [scarlet]non-orange[] cores to this map in the editor. +map.nospawn.attack = This map does not have any enemy cores for player to attack! Add {0} cores to this map in the editor. map.invalid = Harita yuklenemedi. Gecersiz yada bozuk dosya. workshop.update = Update Item workshop.error = Error fetching workshop details: {0} @@ -412,6 +434,12 @@ editor.waves = Waves: editor.rules = Rules: editor.generation = Generation: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -455,7 +483,7 @@ waves.sort.begin = Begin waves.sort.health = Health waves.sort.type = Type waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = Hide All waves.units.show = Show All @@ -467,6 +495,8 @@ editor.default = [lightgray] details = Details... edit = Edit... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = isim: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -478,6 +508,7 @@ editor.errorlegacy = This map is too old, and uses a legacy map format that is n editor.errornot = This is not a map file. editor.errorheader = This map file is either not valid or corrupt. editor.errorname = Map has no name defined. +editor.errorlocales = Error reading invalid locale bundles. editor.update = Update editor.randomize = Randomize editor.moveup = Move Up @@ -489,6 +520,7 @@ editor.sectorgenerate = Sector Generate editor.resize = Boyutunu degistir editor.loadmap = Harita yukle editor.savemap = Haritayi kaydet +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = Kaydedildi! editor.save.noname = Haritanin ismi yok! 'Harita bilgisinden' bi tane ekle editor.save.overwrite = Haritanin ismi varolan bir haritanin ismi ile ayni! 'Harita bilgisinden' degisik bir isim sec @@ -527,6 +559,8 @@ toolmode.eraseores = Erase Ores toolmode.eraseores.description = Erase only ores. toolmode.fillteams = Fill Teams toolmode.fillteams.description = Fill teams instead of blocks. +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = Draw Teams toolmode.drawteams.description = Draw teams instead of blocks. toolmode.underliquid = Under Liquids @@ -549,6 +583,7 @@ filter.clear = Clear filter.option.ignore = Ignore filter.scatter = Scatter filter.terrain = Terrain +filter.logic = Logic filter.option.scale = Scale filter.option.chance = Chance filter.option.mag = Magnitude @@ -571,6 +606,25 @@ filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = Genislik: height = Yukseklik: @@ -621,9 +675,12 @@ objective.destroycore.name = Destroy Core objective.commandmode.name = Command Mode objective.flag.name = Flag marker.shapetext.name = Shape Text -marker.minimap.name = Minimap +marker.point.name = Point marker.shape.name = Shape marker.text.name = Text +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -643,12 +700,11 @@ objective.command = [accent]Command Units objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ loadout = Loadout -resources = Resources +resources = Resources resources.max = Max bannedblocks = Banned Blocks objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -671,7 +727,7 @@ error.any = Unkown network error. error.bloom = Failed to initialize bloom.\nYour device may not support it. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -707,7 +763,8 @@ sector.curlost = Sector Lost sector.missingresources = [scarlet]Insufficient Core Resources sector.attacked = Sector [accent]{0}[white] under attack! sector.lost = Sector [accent]{0}[white] lost! -sector.captured = Sector [accent]{0}[white]captured! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Change Icon sector.noswitch.title = Unable to Switch Sectors sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] @@ -915,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -925,14 +983,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field -ability.unitspawn = {0} Factory +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = Energy Field +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time + bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Better Drill Required @@ -972,6 +1063,7 @@ bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles bullet.incendiary = [stat]incendiary bullet.homing = [stat]homing bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1007,6 +1099,7 @@ unit.items = esya unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = General @@ -1027,6 +1120,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animated Water setting.animatedshields.name = Animated Shields @@ -1073,13 +1167,14 @@ setting.position.name = Show Player Position setting.mouseposition.name = Show Mouse Position setting.musicvol.name = Ses yuksekligi setting.atmosphere.name = Show Planet Atmosphere +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Sesi kapat setting.sfxvol.name = Ses seviyesi setting.mutesound.name = Sesi kapat setting.crashreport.name = Send Anonymous Crash Reports setting.savecreate.name = Auto-Create Saves -setting.publichost.name = Public Game Visibility +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Player Limit setting.chatopacity.name = Chat Opacity setting.lasersopacity.name = Power Laser Opacity @@ -1087,6 +1182,8 @@ setting.bridgeopacity.name = Bridge Opacity setting.playerchat.name = Display In-Game Chat setting.showweather.name = Show Weather Graphics setting.hidedisplays.name = Hide Logic Displays +setting.macnotch.name = Kesgitlemek üçin interfeýsi uýgunlaşdyryň +setting.macnotch.description = Üýtgeşmeleri ulanmak üçin täzeden başlaň steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = Note that beta versions of the game cannot make public lobbies. @@ -1097,6 +1194,7 @@ keybind.title = Tuslari ayarla keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = General category.view.name = Goster +category.command.name = Unit Command category.multiplayer.name = Cok oyunculu category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1114,6 +1212,24 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1177,17 +1293,25 @@ mode.pvp.description = fight against other players locally. mode.attack.name = Attack mode.attack.description = No waves, with the goal to destroy the enemy base. mode.custom = Custom Rules +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Infinite Resources rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Wave Timer rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Waves +rules.airUseSpawns = Air units use spawn points rules.attack = Attack Mode +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size @@ -1206,6 +1330,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) @@ -1238,6 +1363,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Esyalar content.liquid.name = Sivilar @@ -1455,6 +1582,7 @@ block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = Illuminator block.overflow-gate.name = Kapali dagatici block.underflow-gate.name = Underflow Gate @@ -1695,7 +1823,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1813,9 +1940,13 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2009,7 +2140,6 @@ block.logic-display.description = Displays arbitrary graphics from a logic proce block.large-logic-display.description = Displays arbitrary graphics from a logic processor. block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2045,7 +2175,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2162,6 +2291,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai 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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" 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. @@ -2184,6 +2314,8 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a uniut. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. @@ -2195,6 +2327,47 @@ lst.cutscene = Manipulate the player camera. lst.setflag = Set a global flag that can be read by all processors. lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise 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. @@ -2207,6 +2380,7 @@ 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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. laccess.speed = Top speed of a unit, in tiles/sec. +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. lcategory.io = Input & Output @@ -2232,6 +2406,7 @@ 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[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. @@ -2249,6 +2424,7 @@ lenum.xor = Bitwise XOR. lenum.min = Minimum of two numbers. lenum.max = Maximum of two numbers. lenum.angle = Angle of vector in degrees. +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. @@ -2310,6 +2486,7 @@ lenum.unbind = Completely disable logic control.\nResume standard AI. lenum.move = Move to exact position. lenum.approach = Approach a position with a radius. lenum.pathfind = Pathfind to the enemy spawn. +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = Shoot a position. lenum.targetp = Shoot a target with velocity prediction. lenum.itemdrop = Drop an item. @@ -2320,8 +2497,13 @@ lenum.payenter = Enter/land on the payload block the unit is on. 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index f8075573a5..a3677518d5 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -2,30 +2,30 @@ credits.text = [royal]Anuken[] tarafından yapıldı - [sky]anukendev@gmail.com[ credits = Jenerik contributors = Çevirmenler ve Katkıda Bulunanlar discord = Mindustry'nin Discord sunucusuna Katıl! -link.discord.description = Resmi Mindustry Discord sunucusu +link.discord.description = Resmî Mindustry Discord sunucusu link.reddit.description = Mindustry subreddit'i link.github.description = Oyun Kaynak Kodu link.changelog.description = Güncelleme değişikliklerinin listesi link.dev-builds.description = Dengesiz Oyun Sürümleri -link.trello.description = Planlanan özellikler için resmi Trello Sayfası +link.trello.description = Planlanan özellikler için resmî Trello Sayfası link.itch.io.description = itch.io sayfası link.google-play.description = Google Play mağaza sayfası link.f-droid.description = F-Droid kataloğu -link.wiki.description = Resmi Mindustry wikisi +link.wiki.description = Resmî Mindustry wikisi link.suggestions.description = Yeni özellikler öner link.bug.description = Hata mı buldun? Hemen şikayet et! linkopen = Bu Server sana bir link gönderdi. Açmak istediğine emin misin?\n\n[sky]{0} linkfail = Link açılamadı!\nURL kopyalandı. screenshot = Ekran görüntüsü {0} konumuna kaydedildi screenshot.invalid = Harita çok büyük, muhtemelen ekran görüntüsü için yeterli bellek yok. -gameover = Kaybettin +gameover = Oyun Bitti gameover.disconnect = Bağlantı Koptu! gameover.pvp = [accent] {0}[] Takımı kazandı! gameover.waiting = [accent]Sonraki Harita Bekleniyor... highscore = [accent]Yeni rekor! copied = Panoya Kopyalandı. indev.notready = Oyunun bu kısmı henüz hazır değil. - +#Ekozet abimize teşekkür edelim. Baya ekleme yaptı buraya. load.sound = Sesler load.map = Haritalar load.image = Resimler @@ -33,7 +33,7 @@ load.content = İçerik load.system = Sistem load.mod = Modlar load.scripts = Betikler - +#the_pawsy tamam be, update atıyom... -RT be.update = Yeni bir erken erişim sürümü var: be.update.confirm = İndirip yeniden başlatılsın mı? be.updating = Yeni sürüm yükleniyor... @@ -57,6 +57,7 @@ mods.browser.sortstars = Yıldıza göre Sırala schematic = Şema schematic.add = Şemayı Kaydet... schematics = Şemalar +schematic.search = Şema Arat... schematic.replace = Aynı isimde bir şema zaten var. Üzerine yazılsın mı? schematic.exists = Aynı isimde bir şema zaten var. schematic.import = Şemayı İçeri Aktar @@ -69,7 +70,7 @@ schematic.shareworkshop = Atölyede paylaş schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Şemayı döndür schematic.saved = Şema Kaydedildi. schematic.delete.confirm = Bu şema tamamen silinecek. -schematic.rename = Şemayı yeniden adlandır +schematic.edit = Şemayı Düzenle schematic.info = {0}x{1}, {2} blok schematic.disabled = [scarlet]Şema devre dışı bırakıldı[]\nBu şemayı [accent]bu haritada[] veya [accent]server'da kullanma iznin yok. schematic.tags = Etiketler: @@ -78,6 +79,7 @@ schematic.addtag = Etiket Ekle schematic.texttag = Yazı Etiketi schematic.icontag = İkon Etiketi schematic.renametag = Etiketi Yeniden Adlandır +schematic.tagged = {0} etiketli schematic.tagdelconfirm = Bu Etiketi Silmek istediğine emin misin? schematic.tagexists = Böyle bir Etiket zaten var. @@ -110,7 +112,7 @@ none.inmap = [lightgray] minimap = Harita position = Konum close = Kapat -website = Web sitesi +website = Websitesi quit = Çık save.quit = Kaydet & Çık maps = Haritalar @@ -149,16 +151,16 @@ mod.incompatiblemod = [red]Sürüm Uyuşmazlığı mod.blacklisted = [red]Desteklenmeyen Sürüm mod.unmetdependencies = [red]Uyuşmayan Modlar. mod.erroredcontent = [scarlet]İçerik hatası. -mod.circulardependencies = [red]Circular Dependencies -mod.incompletedependencies = [red]Incomplete Dependencies +mod.circulardependencies = [red]Döngüsel Bağımlılıklar +mod.incompletedependencies = [red]Eksik Bağımlılıklar mod.requiresversion.details = [accent]{0}[] oyun sürümü gerekiyor.\nSürümün eski. Bu mod, çalışmak için oyunun daha yeni bir sürümünü gerektiriyor (büyük ihtimal alpha/beta). -mod.outdatedv7.details = Bu mod, oyunun en son sürümüyle uyumsuz. Modun yapmıcısının [accent]mod.json[] dosyasına, [accent]minGameVersion: 136[] eklemesi gerekiyor. +mod.outdatedv7.details = Bu mod, oyunun en son sürümüyle uyumsuz. Modun yapmıcısının [accent]mod.json[] dosyasına, [accent]minGameVersion: 146[] eklemesi gerekiyor. mod.blacklisted.details = Bu mod, oyunun bu sürümüyle hata verdiğinden veya başka sorunlar ötürü kara listeye alınmıştır. [#ff]KULLANMAYINIZ! mod.missingdependencies.details = Bu Mod, şu ek modları gerektiriyor: {0} mod.erroredcontent.details = Bu mod yüklenirken hata veriyor, yapımcıdan hataları düzeltmesini isteyin. -mod.circulardependencies.details = This mod has dependencies that depends on each other. -mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}. -mod.requiresversion = Requires game version: [red]{0} +mod.circulardependencies.details = Bu modun birbirine bağlı bağlılıkları var. +mod.incompletedependencies.details = Eksik veya yanlış bağlılıklardan dolayı mod yüklenemedi: {0}. +mod.requiresversion = Şu oyun sürümü gerekiyor: [red]{0} mod.errors = İçerik yüklenirken bir hata oluştu. mod.noerrorplay = [scarlet]Hatalı modlarınız var.[] Oynamadan önce bu modları devre dışı bırakın veya dosyadaki hataları düzeltin. mod.nowdisabled = [scarlet]'{0}' modunun çalışması için gerekli olan modlardan bazıları bulunamadı:[accent] {1}\n[lightgray]Önce bu modların indirilmesi gerekmektedir.\nBu mod otomatik olarak devre dışı bırakılacaktır. @@ -167,10 +169,10 @@ mod.requiresrestart = Oyun mod değişikliklerini uygulamak için kapatılacak. mod.reloadrequired = [scarlet]Yeniden Yükleme Gerekli mod.import = Mod İçeri Aktar mod.import.file = Dosya İçeri Aktar -mod.import.github = GitHub Modu İçeri Aktar +mod.import.github = GitHub Modu İçeri Aktar mod.jarwarn = [scarlet]Java modları doğası gereği güvenli değildir.[]\nBu modu güvenilir bir kaynaktan içeri aktardığına emin ol! mod.item.remove = Bu eşya[accent] '{0}'[] modunun bir parçası. Kaldırmak için modu silebilirsiniz. -mod.remove.confirm = Bu mod silinecek. +mod.remove.confirm = Bu mod silinecek mod.author = [lightgray]Yayıncı:[] {0} mod.missing = Bu kayıt yakın zamanda güncellediğiniz ya da artık yüklü olmayan modlar içermekte. Kayıt bozulmaları yaşanabilir. Kaydı yüklemek istediğinizden emin misiniz?\n[lightgray]Modlar:\n{0} mod.preview.missing = Bu modu atölyede yayınlamadan önce bir resim önizlemesi eklemelisiniz.\nMod dosyasına [accent]preview.png[] adlı bir resim yerleştirin ve tekrar deneyin. @@ -188,9 +190,9 @@ unlocked = Yeni içerik açıldı! available = Yeni Araştırma Mümkün! unlock.incampaign = < Detaylar için Mücadelede Araştır > campaign.select = Başlangıç Mücadelesi Seç -campaign.none = [lightgray]Başlamak için bir gezegen seç.\nBu herhangi bir zamanda değiştirlebilir. -campaign.erekir = Daha yeni ve cilalanmış içerikler. Genellikle stabil ilerleme.\n\nDaha kaliteli haritalar ve deneyim. -campaign.serpulo = Eski içerik; klasik deneyim. Daha serbest.\n\nDaha dengesiz harita ve deneyim. Cilayı unutmuşlar. +campaign.none = [lightgray]Başlamak için bir gezegen seç.\nBu seçim herhangi bir zamanda değiştirlebilir. +campaign.erekir = Daha yeni ve cilalanmış içerikler. Genellikle kararlı ilerleme.\n\nDaha kaliteli haritalar ve deneyim (herhalde). +campaign.serpulo = Eski içerik; klasik deneyim. Daha serbest.\n\nDaha dengesiz harita ve deneyim. Cilayı unutmuşlar işte... completed = [accent]Tamamlandı techtree = Teknoloji Ağacı techtree.select = Teknoloji Ağacı Seç @@ -220,7 +222,7 @@ server.kicked.recentKick = Yakın bir zamanda bir sunucudan atıldın.\nBağlanm server.kicked.nameInUse = Sunucuda zaten o isimde biri var. server.kicked.nameEmpty = Seçtiğin isim geçersiz. server.kicked.idInUse = Zaten bu sunucudasın! İki hesapla bir sunucuya bağlanamazsın. -server.kicked.customClient = Bu sunucu özel sürümleri kabul etmiyor. Resmi bir sürüm indir. +server.kicked.customClient = Bu sunucu özel sürümleri kabul etmiyor. Resmî bir sürüm indir. server.kicked.gameover = Oyun bitti! server.kicked.serverRestarting = Sunucu yeniden başlatılıyor... server.versions = Kullandığın Sürüm:[accent] {0}[]\nSunucunun Sürümü:[accent] {1}[] @@ -252,12 +254,20 @@ viewplayer = Oyuncu İzleniyor: [accent]{0} trace = Oyuncuyu Takip Et trace.playername = Oyuncu İsmi: [accent]{0} trace.ip = IP: [accent]{0} -trace.id = Özel ID: [accent]{0} +trace.id = Özel Kimlik: [accent]{0} +trace.language = Dil: [accent]{0} trace.mobile = Mobil Sürüm: [accent]{0} trace.modclient = Özel Sürüm: [accent]{0} trace.times.joined = Girme Sayısı: [accent]{0} trace.times.kicked = Atılma Sayısı: [accent]{0} -invalidid = Geçersiz Sürüm ID'si! Bir hata raporu gönder. +trace.ips = IPs: +trace.names = İsimler: +invalidid = Geçersiz Sürüm Kimliği! Bir hata raporu gönder. +player.ban = Yasakla +player.kick = At +player.trace = İzini Sür +player.admin = Admin Aç/Kapa +player.team = Takım Değiştir server.bans = Yasaklılar server.bans.none = Yasaklanmış oyuncu bulunamadı! server.admins = Yöneticiler @@ -271,10 +281,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]Özel Sürüm confirmban = Bu kullanıcıyı yasaklamak istediğine emin misin? confirmkick = Bu kullanıcıyı atmak istediğine emin misin? -confirmvotekick = Bu kullanıcıyı oylayıp atmak istediğinize emin misiniz? confirmunban = Bu kullanıcının yasağını kaldırmak istediğine emin misin? confirmadmin = Bu kullanıcıyı bir yönetici yapmak istediğine emin misin? confirmunadmin = Bu kullanıcının yönetici yetkilerini almak istediğine istediğine emin misin? +votekick.reason = Oylama Sebebi +votekick.reason.message = "{0}[white]" adlı kişiyi oylama ile atmak istediğinize emin misiniz?\nEğer istiyorsanız, lütfen sebebini giriniz: joingame.title = Oyuna Katıl joingame.ip = Adres: disconnect = Bağlantı kesildi. @@ -292,11 +303,11 @@ server.invalidport = Geçersiz port sayısı! server.error = [crimson]Sunucu kurulamadı: [accent]{0} save.new = Yeni kayıt save.overwrite = Bu kaydın üstüne yazmak istediğine\nemin misin? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = Mücadeleden tek bir kayıt yüklenemez. overwrite = Üstüne yaz save.none = Kayıt bulunamadı! savefail = Oyun kaydedilemedi! -save.delete.confirm = Bu kaydı silmek istediğine emin misin? +save.delete.confirm = Bu kaydı silmek istediğine gerçekten emin misin? save.delete = Sil save.export = Kaydı Dışa Aktar save.import.invalid = [accent]Bu kayıt geçersiz! @@ -330,12 +341,23 @@ open = Aç customize = Kuralları Özelleştir cancel = İptal command = Komuta Modu +command.queue = [lightgray][Sıralanıyor] command.mine = Kaz command.repair = Tamir Et command.rebuild = Yeniden İnşaa Et command.assist = Oyuncuya Yardım Et command.move = Hareket Et -command.boost = Boost +command.boost = Gazla +command.enterPayload = Kargo Bloğu Seç +command.loadUnits = Birim Yükle +command.loadBlocks = Blok Yükle +command.unloadPayload = Birim Bırak +stance.stop = Emri İptal Et +stance.shoot = Duruş: Saldırı +stance.holdfire = Duruş: Hazır Ol +stance.pursuetarget = Duruş: Hedefi Takip Et +stance.patrol = Duruş: Devriye Gez +stance.ram = Duruş: Düz\n[lightgray]Düz bir ol halinde ilerle. openlink = Bağlantıyı Aç copylink = Bağlantıyı Kopyala back = Geri @@ -361,18 +383,18 @@ pausebuilding = [accent][[{0}][] İnşaatı durdur resumebuilding = [scarlet][[{0}][] İnşaata devam et enablebuilding = [scarlet][[{0}][] İnşa Etmeyi Başlat showui = Arayüz Kapalı.\nAçmak için [accent][[{0}][] bas. -commandmode.name = [accent]Command Mode -commandmode.nounits = [no units] +commandmode.name = [accent]Komuta Modu +commandmode.nounits = [birim yok] wave = [accent]Dalga {0} wave.cap = [accent]Dalga {0}/{1} wave.waiting = [lightgray]{0} saniye içinde dalga başlayacak wave.waveInProgress = [lightgray]Dalga gerçekleşiyor waiting = [lightgray]Bekleniliyor... waiting.players = Oyuncular bekleniliyor... -wave.enemies = [lightgray]{0} Tane Düşman Kaldı +wave.enemies = [lightgray]{0} tane Düşman Kaldı wave.enemycores = [accent]{0}[lightgray] Düşman Merkezler wave.enemycore = [accent]{0}[lightgray] Düşman Merkez -wave.enemy = [lightgray]{0} Tane Düşman Kaldı +wave.enemy = [lightgray]{0} tane Düşman Kaldı wave.guardianwarn = [accent]{0}[] dalga sonra gardiyan yaklaşıyor. wave.guardianwarn.one = [accent]{0}[] dalga sonra gardiyan yaklaşıyor. loadimage = Resim Aç @@ -382,9 +404,9 @@ custom = Özel builtin = Yerleşik map.delete.confirm = Bu haritayı silmek istediğinizden emin misiniz? Bunu geri alamazsınız! map.random = [accent]Rastgele Harita -map.nospawn = Bu haritada oyuncunun doğacağı hiç bir Merkez yok! Düzenleyiciden bu haritaya[accent] turuncu[] bir Merkez ekleyin. +map.nospawn = Bu haritada oyuncunun doğacağı hiç bir Merkez yok! Düzenleyiciden bu haritaya {0} bir Merkez ekleyin. map.nospawn.pvp = Bu Haritada düşmanın doğacağı hiç Merkez yok! Düzenleyiciden bu haritaya [scarlet]turuncu olmayan[] Merkezler ekleyin. -map.nospawn.attack = Bu haritada oyuncunun saldıracağı hiç düşman çekirdeği yok! Editörden haritaya[scarlet] düşman[] Merkezler ekleyin. +map.nospawn.attack = Bu haritada oyuncunun saldıracağı hiç düşman çekirdeği yok! Editörden haritaya {0} Merkezler ekleyin. map.invalid = Haritayı açarken hata oldu: bozulmuş ya da geçersiz harita dosyası.- workshop.update = Nesneyi Güncelle workshop.error = Atölye ayrıntılarını alırken hata oluştu: {0} @@ -416,6 +438,12 @@ editor.waves = Dalgalar: editor.rules = Kurallar: editor.generation = Oluşum: editor.objectives = Görevler: +editor.locales = Yerel Paketler +editor.worldprocessors = Evrensel İşlemciler +editor.worldprocessors.editname = İsmi Değiştir +editor.worldprocessors.none = [lightgray]Evrensel İşlemci bulunamadı!\nEditörden bu muazzam bloğu ekle veya şu düğmeye bas: \ue813 Ekle +editor.worldprocessors.nospace = Evrensel İşlemci koycak yer yok!\nCidden tüm mapi binalarla mı doldurdun? Oyunun kasmıyor mu? İşsiz misin? Harbi NPC... +editor.worldprocessors.delete.confirm = Bu Evrensel İşlemciyi silmek istediğine emin misin?\n\nEğer etrafında duvar varsa doğal bir duvarla yer değiştiricek. editor.ingame = Oyun içinde düzenle editor.playtest = Test Et editor.publish.workshop = Atölyede Yayınla @@ -447,19 +475,19 @@ waves.max = maks birim waves.guardian = Gardiyan waves.preview = Önizleme waves.edit = Düzenle... -waves.random = Random +waves.random = Rastgele waves.copy = Panodan kopyala waves.load = Panodan yükle waves.invalid = Panoda geçersiz dalga sayısı var. waves.copied = Dalgalar kopyalandı. waves.none = Düşman bulunamadı.\nBoş dalga düzenlerin otomatik olarak varsayılan düzenle değiştirileceğini unutmayın -waves.sort = Sıralama Ölçeği: +waves.sort = Sıralama Ölçeği: waves.sort.reverse = Ters Sırala waves.sort.begin = Başla waves.sort.health = Can waves.sort.type = Tür -waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.search = Dalga ara... +waves.filter = Birim Filtresi waves.units.hide = Hepsini Gizle waves.units.show = Hepsini Göster @@ -472,6 +500,8 @@ editor.default = [lightgray] details = Detaylar... edit = Düzenle... variables = Değişkenler +logic.clear.confirm = Bu işlemcideki tüm kodu silmek istediğine emin misin? +logic.globals = Yerleşik Değişkenler editor.name = İsim: editor.spawn = Birim Oluştur editor.removeunit = Birim Kaldır @@ -483,6 +513,7 @@ editor.errorlegacy = Bu harita çok eski ve artık desteklenmeyen bir legacy har editor.errornot = Bu bir harita dosyası değil. editor.errorheader = Bu harita dosyası geçerli değil ya da bozuk. editor.errorname = Haritanın ismi yok!?! Bir kayıt dosyası mı yüklemeye çalışıyorsunuz? +editor.errorlocales = Yerel Paketleri okurkan hata oluştu. editor.update = Güncelle editor.randomize = Rastgele Yap editor.moveup = Yukarı Kaydır @@ -494,6 +525,7 @@ editor.sectorgenerate = Sektör Oluştur editor.resize = Yeniden Boyutlandır editor.loadmap = Harita Yükle editor.savemap = Haritayı Kaydet +editor.savechanges = [scarlet]Kaydedilmemiş değişiklerin var!\n\n[]Onları kaydetsen mi acaba? editor.saved = Kaydedildi! editor.save.noname = Haritanın bir ismi yok! 'Harita bilgileri' menüsünden bir isim seç. editor.save.overwrite = Haritan bir yerleşik haritayla örtüşüyor! 'Harita bilgileri' menüsünden farklı bir isim seç. @@ -530,14 +562,16 @@ toolmode.square = Kare toolmode.square.description = Kare fırça. toolmode.eraseores = Maden Sil toolmode.eraseores.description = Sadece madenleri siler.. -toolmode.fillteams = Takımları Doldur +toolmode.fillteams = Takımları Doldur toolmode.fillteams.description = Bloklar yerine takımları doldurur. +toolmode.fillerase = Doldurarak Sil +toolmode.fillerase.description = Anyı tip blokları sil. toolmode.drawteams = Takım Çiz toolmode.drawteams.description = Bloklar yerine takımları çizer.. toolmode.underliquid = Sıvı Altı toolmode.underliquid.description = Sıvıların altına zemin koyma. -filters.empty = [lightgray]Hiç filtre yok! Aşağıdaki düğmelerle bir adet ekleyin. +filters.empty = [lightgray]Hiç filtre yok! Aşağıdaki düğmelerle bir adet ekle. filter.distort = Çarpıt filter.noise = Gürültü @@ -555,6 +589,7 @@ filter.clear = Temizle filter.option.ignore = Yoksay filter.scatter = Saç filter.terrain = Arazi +filter.logic = Mantık filter.option.scale = Ölçek filter.option.chance = Şans @@ -578,6 +613,25 @@ filter.option.floor2 = İkincil Duvar filter.option.threshold2 = İkincil Eşik filter.option.radius = Yarıçap filter.option.percentile = Yüzdelik +filter.option.code = Kod +filter.option.loop = Döngü +locales.info = Buraya oyun içi kullanmak için yerel dil paketleri yükleyebilirsin. Yerel dil paketlerinde her değişkenin bir ismi ve değeri var. Bu değişkenler Evrensel İşlemciler ve Görevler tarafından okunabilir. Yazı formatlanabilir.\n\n[cyan]Örnek:\n[]name: [accent]zamanlayıcı[]\ndeğer: [accent]Örnek zamanlayıcı, kalan zaman: {0}[]\n\n[cyan]Kullanım:\n[]Görev yazısı olarak ayarla: [accent]@zamanlayıcı\n\n[]Evrensel İşlemciye yaz:\n[accent]localeprint "zamanlayıcı"\nformat zaman\n[gray](zaman başka hesaplanan bir değişken) +locales.deletelocale = Bu yerel dil paketini silmek istediğine emin misin? +locales.applytoall = Değişiklikleri TÜM yerel paketlere uygula +locales.addtoother = Başka yerel paket ekle +locales.rollback = En sonki değişikliğe geri al +locales.filter = Özellik Filtresi +locales.searchname = İsim arat... +locales.searchvalue = Değer arat... +locales.searchlocale = Yerel Paket arat... +locales.byname = İsme göre +locales.byvalue = Değere göre +locales.showcorrect = Tüm yerel paketlerde bulunan ve her yerde olan değerleri her yerde göster +locales.showmissing = Bazı yerel paketlerde eksik olan değerleri göster +locales.showsame = Başka yerel paketlerde aynı isme sahip değerleri göster +locales.viewproperty = Tüm yerel paketlerde göster +locales.viewing = Görünüm tipi "{0}" +locales.addicon = İkon ekle width = En: height = Boy: @@ -628,11 +682,14 @@ objective.destroycore.name = Merkezi Yok Et objective.commandmode.name = Komuta Et objective.flag.name = Bayrak marker.shapetext.name = Şekilli Yazı -marker.minimap.name = Harita +marker.point.name = Point marker.shape.name = Şekil marker.text.name = Yazı -marker.background = Arkaplan -marker.outline = Anahat +marker.line.name = Hat +marker.quad.name = Dörtlü +marker.texture.name = Doku +marker.background = Arka Plan +marker.outline = Ana Hat objective.research = [accent]Araştır:\n[]{0}[lightgray]{1} objective.produce = [accent]Üret:\n[]{0}[lightgray]{1} objective.destroyblock = [accent]Yok Et:\n[]{0}[lightgray]{1} @@ -656,7 +713,6 @@ resources.max = Maks bannedblocks = Yasaklı Bloklar objectives = Görevler bannedunits = Yasaklı Birimler -rules.hidebannedblocks = Yasaklı Blokları Sakla bannedunits.whitelist = Yasaklı Birimleri Beyazlisteye Ata bannedblocks.whitelist = Yasaklı Binaları Beyazlisteye Ata addall = Hepsini Ekle @@ -670,7 +726,7 @@ guardian = Gardiyan connectfail = [crimson]Bağlantı hatası:\n\n[accent]{0} error.unreachable = Sunucuya ulaşılamıyor.\nAdresin doğru yazıldığına emin misiniz? error.invalidaddress = Geçersiz adres. -error.timedout = Zaman aşımı!\nSunucunun port yönlendirmeyi ayarladığına ve adresin doğru olduğuna emin ol! +error.timedout = Zaman aşımı!\nSunucunun port yönlendirmeyi ayarladığına ve adresin doğru olduğuna emin ol! error.mismatch = Paket hatası:\nSunucu ve alıcı arasında versiyon uyuşmazlığı ihtimali var.\nHem sizde hem de sunucuda Mindustry'nin en son sürümü yüklü olduğuna emin olun! error.alreadyconnected = Zaten bağlanıldı. error.mapnotfound = Harita dosyası bulunamadı! @@ -679,12 +735,12 @@ error.any = Bilinmeyen ağ hatası. error.bloom = Kamaşma başlatılamadı.\nCihazınız bu özelliği desteklemiyor olabilir. weather.rain.name = Yağmur -weather.snow.name = Kar +weather.snowing.name = Kar weather.sandstorm.name = Kum Fırtınası weather.sporestorm.name = Spor Fırtınası weather.fog.name = Sis -campaign.playtime = \uf129 [lightgray]Sector Playtime: {0} -campaign.complete = [accent]Congratulations.\n\nThe enemy on {0} has been defeated.\n[lightgray]The final sector has been conquered. +campaign.playtime = \uf129 [lightgray]Sektörde Oynama Süresi: {0} +campaign.complete = [accent]Tebrikler!.\n\n{0} üzerinde bulunan düşman bozguna uğratılmıştır.\n[lightgray]Son sektör fethedilmiştir. GG! sectorlist = Sektörler sectorlist.attacked = {0} saldırı altında @@ -715,8 +771,8 @@ sector.curlost = Sektör Kaybedildi sector.missingresources = [scarlet]Yetersiz Merkez Kaynakları sector.attacked = Sektör [accent]{0}[white] saldırı altında! sector.lost = Sektör [accent]{0}[white] kaybedildi! -#Çekirdek -> Merkez -RTOmega -sector.captured = Sektör [accent]{0}[white]elegeçirildi! +sector.capture = Sektör [accent]{0}[white]Ele geçirildi! +sector.capture.current = Sektör Ele geçirildi! sector.changeicon = İkon Değiştir sector.noswitch.title = Sektör Değiştirilemiyor sector.noswitch = Bir Sektör saldırı altındayken başka bir sektöre geçemezsin.\n\nSektör: [accent]{1}[] deki [accent]{0}[] @@ -767,23 +823,23 @@ sector.fungalPass.description = Yüksek dağlar ve daha alçak, sporla dolu topr sector.biomassFacility.description = Sporların ana kaynağı. Burası, onların üretim yeri.\nOnların içindeki gücü araştır. Sporları parçala, enerji ve plastik üret..\n\n[lightgray]Bu Fabrika yıkıldığında, sporlar etrafa yayldı. Hiçbir yaşam formu, bu forma üstün gelemedi. sector.windsweptIslands.description = Kıyının hemen yanında, bir adalar topluluğu. Kayıtlar bir zamanlar, [accent]Plastik[]-üreten binalar olduğunu gösteriyor.\n\nDüşman gemilerini batır, bir üs inşa et ve plastik üretmeye başla. sector.extractionOutpost.description = Uzak bir üs, düşman tarafından inşa edildiği düşünülüyor.\n\nSektörler arası aktarım, gelecek için çok önemli bir kademe. Üssü yok et, Fırlatış rampasını aç! -sector.impact0078.description = Burası, eskiden buraya düşmüş bir yıldızlar arası uzay gemisinin kalıntıları.\n\nOlabildiğince çok şeyi araştır. Teknolojiden yaralan. +sector.impact0078.description = Burası, eskiden buraya düşmüş bir yıldızlar arası uzay gemisinin kalıntıları.\n\nOlabildiğince çok şeyi araştır. Teknolojiden yararlan. sector.planetaryTerminal.description = Son aşama.\n\nBu üs, başka gezegenlere gitmeyi sağlayan teknolojiyi barıdırıyor. Aşırı iyi bir şekilde korunuyor.\n\nOlabildiğince hızlı bir şekilde gemi üret ve düşman üssü elegeçir. Gezegenler Arası Hızladırıcıyı aç! -sector.coastline.description = Remnants of naval unit technology have been detected at this location. Repel the enemy attacks, capture this sector, and acquire the technology. -sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. +sector.coastline.description = Bu bölgede denizel birim teknoloji kalıntıları tespit edildi. Düşman saldırılarını püskürt, sektörü ele geçir ve teknolojiyi kurtar. +sector.navalFortress.description = Düşman bu uzak adaya doğal olarak korunan bir üs kurmuş. Bu üssü yok et. Onların gelişmiş savaş gemisi teknolojilerini elde et ve araştır. sector.onset.name = Yeni Başlangıç sector.aegis.name = Siper -sector.lake.name = Göletcik +sector.lake.name = Göletçik sector.intersect.name = Kesişim sector.atlas.name = Atlas sector.split.name = Ayrılım sector.basin.name = Havza -sector.marsh.name = Marsh +sector.marsh.name = Bataklık sector.peaks.name = Doruk Noktası sector.ravine.name = Kanyon sector.caldera-erekir.name = Kaldera sector.stronghold.name = Sığınak -sector.crevice.name = Crevice +sector.crevice.name = Çatlak sector.siege.name = Kuşatma sector.crossroads.name = Kavşak sector.karst.name = Karst @@ -793,17 +849,17 @@ sector.aegis.description = Düşman Kalkanların arkasına Sığınmış Durumda sector.lake.description = Bu Sektörün Cürüf Gölü, birimleri büyük oranda engelliyor. Bir Hovercraft tek seçeneğin.\n[accent]Gemi Fabrikatörünü[] araştır ve [accent]elude[] birimini olabildiğince kısa sürede üret! sector.intersect.description = Taramalar, bu Sektörün farklı yönlerden salıdırya uğrayacağını belirtiyor.\nHızlı bir şekilde savunma kur.\n[accent]Mech[] birimleri bu Sektör için bir olmazssa olmaz! sector.atlas.description = Bu Sektör, farklı tür saldırılar isteyen dengesiz bir araziden oluşuyor.\nDüşman Üssünü yenebilmek için Geliştirilmiş birimler gerekebilir.\n[accent]Elektolizörü[] ve [accent]Tank Yeniden Yapılandırıcı[] yı araştırmadan bu sektör oldukça zor. -sector.split.description = Bu Sektördeki minimal düşman bulunması, bu Sektörü Uşaım Test etmek için oldukça uygun bir yer yapıyor. -sector.basin.description = Burda çok sayıda düşman tespit edildi.\nHızlıca birim üret ve üssü ele geçir! UwU -sector.marsh.description = This sector has an abundance of arkycite, but has limited vents.\nBuild [accent]Chemical Combustion Chambers[] to generate power. -sector.peaks.description = The mountainous terrain in this sector make most units useless. Flying units will be required.\nBe aware of enemy anti-air installations. It may be possible to disable some of these installations by targeting their supporting buildings. -sector.ravine.description = Bu üsde düşman merkezi tespit edilemedi, ancak düşman için önemli bir geçiş rotası. Değişik türde birimler geçebilir.\n[accent]Akı[] üret. [accent]Afflict[] turretleri inşaa et. +sector.split.description = Bu sektörde az düşman oluşu burayı yeni taşıma teknolojisini test etmek için çok uygun bir yer yapıyor. UwU +sector.basin.description = Bu sektörde çok sayıda düşman tespit edildi.\nHızlıca birim üret ve düşman merkezlerini ele geçir. +sector.marsh.description = Bu sektörde bolca arkisit bulunuyor ancak az sayıda baca deliği var.\n[accent]Kimyasal Yanma Odası[] inşa ederek elektrik üret. +sector.peaks.description = Bu sektördeki dağlık arazi çoğu birimi kullanışsız kılıyor. Uçan birimler gerekecektir.\nDüşman hava savunmalarına dikkat et. Hava savunmaların destekçi binalarını hedef alarak bazılarını devre dışı bırakmak mümkün olabilir. +sector.ravine.description = Burada düşman merkezi tespit edilemedi, ancak düşman için önemli bir geçiş rotası. Değişik türde birimler geçebilir.\n[accent]Akı[] üret. [accent]Afflict[] taretleri inşa et. sector.caldera-erekir.description = Bu haritadaki madenler çok sayıda adaya dağılmış durumda.\nDron taşımcılığını aç ve taşıma sistemi kur. -sector.stronghold.description = Bu sektörde düşmanlar senin [accent]torium[] almanı engellemek için ellerinden geleni yapıyor!\nOnların HAİN planlarını boz ve teknolojini geliştir. +sector.stronghold.description = Bu sektörde düşmanlar senin [accent]toryum[] almanı engellemek için ellerinden geleni yapıyor!\nOnların HAİN planlarını boz ve teknolojini geliştir. sector.crevice.description = Düşman senin üssünü ele geçirmek için çok sayıda birim gönderecek.\n[accent]Karbür[] elde et ve [accent]Piroliz Jeneratörü[]'nü aç. Bu hayatta kalmak için tek şansın olabilir! sector.siege.description = Bu sektör, iki farklı kanyon içeriyor. İki tarafdan aynı anda savunmaya hazır ol.\n[accent]Siyanojen[] üret daha da güçlü tankları aç.\nDikkat: Uzun menzilli füzeler tespit edildi! Füzeler hedefe varmadan havada vurulabilir. -sector.crossroads.description = Bu sektördeki üsler farklı seviyelerde inşa edilmiş. Adapte olmak için başka birimleri araştır.\nEk olarak, bağzı üslerin koruma kalkanları bulunmakta. Nasıl çalıştıklarını bulmaya çalış. -sector.karst.description = Bu sektör kaynak bakımından zengin, ancak yeni bir merkez iniş yaptığı anda düşman üzerimize çökücek.\nKaynakları iyi deyerlendir ve [accent]faz[]'ı aç. +sector.crossroads.description = Bu sektördeki üsler farklı seviyelerde inşa edilmiş. Adapte olmak için başka birimleri araştır.\nEk olarak, bazı üslerin koruma kalkanları bulunmakta. Nasıl çalıştıklarını bulmaya çalış. +sector.karst.description = Bu sektör kaynak bakımından zengin, ancak yeni bir merkez iniş yaptığı anda düşman üzerimize çökecek.\nKaynakları iyi deyerlendir ve [accent]faz[]'ı aç. sector.origin.description = Güçlü düşmanları barındıran son sektör.\nDaha fazla uyumlu araştırma kalmadı - tüm gücünle düşmanı yenmeye çalış! status.burning.name = Yanıyor @@ -819,7 +875,7 @@ status.overdrive.name = Yüksek Hızlı status.overclock.name = Hızlandırlımış status.shocked.name = Çarpılmış status.blasted.name = Patlatılmış -status.unmoving.name = Sabit +status.unmoving.name = Sabitlenmiş status.boss.name = Gardiyan settings.language = Dil @@ -831,7 +887,7 @@ settings.controls = Kontroller settings.game = Oyun settings.sound = Ses settings.graphics = Grafikler -settings.cleardata = Tüm Oyun Verisini Sil +settings.cleardata = ⚠ Tüm Oyun Verisini Sil ⚠ settings.clear.confirm = Verileri silmek istediğinizden emin misiniz?\nBu işlemi geri alamazsınız! settings.clearall.confirm = [scarlet]Uyarı![]\nBu işlem kayıtlar, haritalar açılan bloklar ve tuş atamaları dahil bütün verileri silecektir.\n"Tamam" tuşuna bastığınızda bütün verileriniz silinecek ve oyun kapanacaktır. settings.clearsaves.confirm = Tüm kayıtlarınızı silmek istediğinizden emin misiniz? @@ -889,7 +945,7 @@ stat.repairspeed = Tamir Hızı stat.weapons = Silahlar stat.bullet = Mermi stat.moduletier = Modül Seviyesi -stat.unittype = Unit Type +stat.unittype = Birlik Türü stat.speedincrease = Hız Artışı stat.range = Menzil stat.drilltier = Kazılabilenler @@ -915,7 +971,7 @@ stat.flammability = Yanıcılık stat.radioactivity = Radyoaktivite stat.charge = Elektrik Yükü stat.heatcapacity = Isı Kapasitesi -stat.viscosity = Viskosite +stat.viscosity = Viskozite stat.temperature = Sıcaklık stat.speed = Hız stat.buildspeed = İnşa Hızı @@ -923,9 +979,10 @@ stat.minespeed = Kazı Hızı stat.minetier = Kazı Seviyesi stat.payloadcapacity = Yük Kapasitesi stat.abilities = Kabiliyetler -stat.canboost = İstekli Uçabilir +stat.canboost = Gazlayabilir stat.flying = Uçuyor stat.ammouse = Mermi Kullanıyor +stat.ammocapacity = Mermi Kapasitesi stat.damagemultiplier = Hasar Çarpanı stat.healthmultiplier = Can Çarpanı stat.speedmultiplier = Hız Çarpanı @@ -936,14 +993,46 @@ stat.immunities = Bağışıklıklar stat.healing = Tamir Eder ability.forcefield = Güç Kalkanı +ability.forcefield.description = Mermilere karşı bir güç kalkanı açar ability.repairfield = Onarma Alanı +ability.repairfield.description = Etraftaki birimleri tamir eder ability.statusfield = Hızlandırma Alanı -ability.unitspawn = {0} Birliği Fabrikası +ability.statusfield.description = Etraftaki birimlere efekt uygular +ability.unitspawn = Birliği Fabrikası +ability.unitspawn.description = Birim inşaa eder ability.shieldregenfield = Kalkan Yenileme Alanı +ability.shieldregenfield.description = Yakındaki birimlerin kalkanını yeniler ability.movelightning = Hareket Enerjisi -ability.shieldarc = Arc Kalkan +ability.movelightning.description = Hareket ederken yıldırım yardırır +ability.armorplate = Zırh Plakası +ability.armorplate.description = Ateş ederken alınan hasarı azaltır +ability.shieldarc = Ark Kalkanı +ability.shieldarc.description = Mermileri bloklayan bir arc ışını atar ability.suppressionfield = Tamir Engelleme Alanı -ability.energyfield = Güç Kalkanı: [accent]{0}[] hasar ~ [accent]{1}[] blok / [accent]{2}[] hedef +ability.suppressionfield.description = Yakındaki tamircileri durdurur +ability.energyfield = Güç Kalkanı +ability.energyfield.description = Yakındaki düşmanları şoklar +ability.energyfield.healdescription = Yakındaki düşmanları şoklar, dostları tamir eder +ability.regen = Yenilenme +ability.regen.description = Kendi canını zamanla tamir eder +ability.liquidregen = Sıvı Emme +ability.liquidregen.description = Kendini tamir etmek için sıvı emer +ability.spawndeath = Son Bağırış +ability.spawndeath.description = Öldüğünde birim salar +ability.liquidexplode = Son İsyan +ability.liquidexplode.description = Ölürken sıvı fışkırtır +ability.stat.firingrate = [stat]{0}/sn[lightgray] ateş hızı +ability.stat.regen = [stat]{0}[lightgray] can/sn +ability.stat.shield = [stat]{0}[lightgray] kalkan +ability.stat.repairspeed = [stat]{0}/sn[lightgray] tamir hızı +ability.stat.slurpheal = [stat]{0}[lightgray] can/sıvı miktarı +ability.stat.cooldown = [stat]{0} sn[lightgray] bekleme süresi +ability.stat.maxtargets = [stat]{0}[lightgray] maks hedef +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] aynı tamir miktarı +ability.stat.damagereduction = [stat]{0}%[lightgray] hasar indüksiyonu +ability.stat.minspeed = [stat]{0} blok/sn[lightgray] min hız +ability.stat.duration = [stat]{0} sn[lightgray] süre +ability.stat.buildtime = [stat]{0} sn[lightgray] inşa süresi bar.onlycoredeposit = Sadece Merkeze Aktarım Mümkün bar.drilltierreq = Daha Güçlü Matkap Gerekli @@ -983,11 +1072,12 @@ bullet.splashdamage = [stat]{0} [lightgray]alan hasarı ~[stat] {1} [lightgray]k bullet.incendiary = [stat]yakıcı bullet.homing = [stat]güdümlü bullet.armorpierce = [stat]zırh delici -bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles -bullet.interval = [stat]{0}/sec[lightgray] interval bullets: +bullet.maxdamagefraction = [stat]{0}%[lightgray] hasar limiti +bullet.suppression = [stat]{0} sn[lightgray] tamir bastırması ~ [stat]{1}[lightgray] karolar +bullet.interval = [stat]{0}/sn[lightgray] ara mermiler: bullet.frags = [stat]{0}[lightgray]x parçalı mermiler: bullet.lightning = [stat]{0}[lightgray]x elektrik ~ [stat]{1}[lightgray] hasarı -bullet.buildingdamage = [stat]{0}%[lightgray] inşaa hasarı +bullet.buildingdamage = [stat]{0}%[lightgray] inşa hasarı bullet.knockback = [stat]{0} [lightgray]savurma bullet.pierce = [stat]{0}[lightgray]x delme bullet.infinitepierce = [stat]delme @@ -1018,6 +1108,7 @@ unit.items = eşya unit.thousands = k unit.millions = m unit.billions = b +unit.shots = atış unit.pershot = /vuruş category.purpose = Açıklama category.general = Genel @@ -1038,6 +1129,7 @@ setting.backgroundpause.name = Arka Planda Durdur setting.buildautopause.name = İnşa etmeyi otomatik olarak durdur setting.doubletapmine.name = İki Tıklamayla Kaz setting.commandmodehold.name = Komuta Modu için Basılı Tut +setting.distinctcontrolgroups.name = Birim başına bir kontrol grubuna sınırla setting.modcrashdisable.name = Modları Çökmede Kapa setting.animatedwater.name = Animasyonlu Su setting.animatedshields.name = Animasyonlu Kalkanlar @@ -1047,7 +1139,7 @@ setting.autotarget.name = Otomatik Hedef Alma setting.keyboard.name = Fare+Klavye Kontrolleri setting.touchscreen.name = Dokunmatik Ekran Kontrolleri setting.fpscap.name = Maksimum FPS -setting.fpscap.none = Limitsiz +setting.fpscap.none = Limitsiz ∞ setting.fpscap.text = {0} FPS setting.uiscale.name = Arayüz Ölçeği [lightgray](yeniden başlatma gerekebilir)[] setting.uiscale.description = Değişikleri uygulamak için yeniden başlatma gerekli. @@ -1058,16 +1150,16 @@ setting.difficulty.normal = Normal setting.difficulty.hard = Zor setting.difficulty.insane = İmkansız setting.difficulty.name = Zorluk: -setting.screenshake.name = Ekranı Sars +setting.screenshake.name = Ekran Sarsılması setting.bloomintensity.name = Parlaklık Şiddeti setting.bloomblur.name = Parlaklık Bulanıklılığı setting.effects.name = Efektleri Görüntüle setting.destroyedblocks.name = Kırılmış Blokları Göster setting.blockstatus.name = Blok Durumunu Göster setting.conveyorpathfinding.name = Konveyör Yol Bulma -setting.sensitivity.name = Kontrolcü Hassasiyeti +setting.sensitivity.name = Kumanda Hassasiyeti setting.saveinterval.name = Kayıt Aralığı -setting.seconds = {0} Saniye +setting.seconds = {0} saniye setting.milliseconds = {0} milisaniye setting.fullscreen.name = Tam Ekran setting.borderlesswindow.name = Kenarsız Pencere @@ -1084,13 +1176,14 @@ setting.position.name = Oyuncu Noktasını Göster setting.mouseposition.name = Fareyi Göster setting.musicvol.name = Müzik Sesi setting.atmosphere.name = Gezegen Atmosferini Göster +setting.drawlight.name = Karanlığı/Aydınlığı Çiz setting.ambientvol.name = Çevresel Ses setting.mutemusic.name = Müziği Kapat setting.sfxvol.name = Oyun Sesi setting.mutesound.name = Sesi Kapat setting.crashreport.name = Anonim Çökme Raporları Gönder setting.savecreate.name = Otomatik Kayıt Oluştur -setting.publichost.name = Halka Açık Sunucular +setting.steampublichost.name = Herkese Açık Oyun Görünürlüğü setting.playerlimit.name = Oyuncu Limiti setting.chatopacity.name = Mesajlaşma Opaklığı setting.lasersopacity.name = Enerji Lazeri Opaklığı @@ -1098,8 +1191,10 @@ setting.bridgeopacity.name = Köprü Opaklığı setting.playerchat.name = Oyun-içi Konuşmayı Göster setting.showweather.name = Hava Durmu Grafiklerini Göster setting.hidedisplays.name = İşlemci İpuçlarını Gizle -steam.friendsonly = Friends Only -steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. +setting.macnotch.name = Arayüzü çentik gösterecek şekilde uyarlayın +setting.macnotch.description = Değişikleri uygulamak için yeniden başlatma gerekli +steam.friendsonly = Arkadaşlara özel +steam.friendsonly.tooltip = Sadece Steam arkadaşlarının katılıp katılabilemeyeceğini belirler.\nBu kutudan tiki kaldırmak oyununuzu herkese açık yapacaktır. public.beta = Oyunun beta sürümlerinin halka açık lobiler yapamayacağını unutmayın. uiscale.reset = Arayüz ölçeği değiştirildi.\nBu ölçeği onaylamak için "Tamam" butonuna basın.\n[accent] {0}[] [scarlet]saniye içinde eski ayarlara geri dönülüp oyundan çıkılıyor…[] uiscale.cancel = İptal Et ve Çık @@ -1108,6 +1203,7 @@ keybind.title = Tuşları Yeniden Ata keybinds.mobile = [scarlet]Buradaki çoğu tuş ataması mobilde geçerli değildir. Sadece temel hareket desteklenmektedir. category.general.name = Genel category.view.name = Görünüm +category.command.name = Birim Komutu category.multiplayer.name = Çok Oyunculu category.blocks.name = Blok Seçimi placement.blockselectkeys = \n[lightgray]Tuş: [{0}, @@ -1125,10 +1221,28 @@ keybind.mouse_move.name = Fareyi Takip Et keybind.pan.name = Yatay Kaydırma Görünümü keybind.boost.name = Yükselt keybind.command_mode.name = Komuta Modu +keybind.command_queue.name = Birim Komuta Sırası +keybind.create_control_group.name = Komuta Grubu Oluştur +keybind.cancel_orders.name = Emri Hükümsüz Kıl +keybind.unit_stance_shoot.name = Birim Duruşu: Saldır +keybind.unit_stance_hold_fire.name = Birim Duruşu: Hazır Ol +keybind.unit_stance_pursue_target.name = Birim Duruşu: Takip Et +keybind.unit_stance_patrol.name = Birim Duruşu: Devriye Gez +keybind.unit_stance_ram.name = Birim Duruşu: VUR +keybind.unit_command_move.name = Birim Komutu: Git +keybind.unit_command_repair.name = Birim Komutu: Tamir Et +keybind.unit_command_rebuild.name = Birim Komutu: Yeniden İnşaa Et +keybind.unit_command_assist.name = Biirm Komutu: Yardım Et +keybind.unit_command_mine.name = Birim Komutu: Kaz +keybind.unit_command_boost.name = Birim Komutu: Gazla +keybind.unit_command_load_units.name = Birim Komutu: Birim Kargola +keybind.unit_command_load_blocks.name = Birim Komutu: Blok Kargola +keybind.unit_command_unload_payload.name = Birim Komutu: Kargo Boşalt +keybind.unit_command_enter_payload.name = Birim Komutu: Kargoya Gir keybind.rebuild_select.name = Alanı Geri İşaa Et keybind.schematic_select.name = Bölge Seç keybind.schematic_menu.name = Şema Menüsü -keybind.schematic_flip_x.name = Şemayı X ekseninde Döndür +keybind.schematic_flip_x.name = Şemayı X Ekseninde Döndür keybind.schematic_flip_y.name = Şemayı Y Ekseninde Döndür keybind.category_prev.name = Önceki Kategori keybind.category_next.name = Sonraki Kategori @@ -1165,7 +1279,7 @@ keybind.minimap.name = Harita keybind.planet_map.name = Gezegen Haritası keybind.research.name = Araştırma keybind.block_info.name = Blok Bilgisi -keybind.chat.name = Konuş +keybind.chat.name = Yazış keybind.player_list.name = Oyuncu Listesi keybind.console.name = Konsol keybind.rotate.name = Döndür @@ -1177,7 +1291,7 @@ keybind.chat_scroll.name = Sohbet Kaydırma keybind.chat_mode.name = Konuşma Modunu Değiştir keybind.drop_unit.name = Birlik Düşürme keybind.zoom_minimap.name = Haritada Yakınlaştırma/Uzaklaştırma -mode.help.title = Modların açıklamaları +mode.help.title = Oyun Modlarının açıklamaları mode.survival.name = Hayatta Kalma mode.survival.description = Normal oyun oyun modu. Kaynak sınırlı ve dalgalar otomatik olarak gönderilir.\n[gray]Oynamak için haritada düşman doğma noktaları olması gerekir. mode.sandbox.name = Yaratıcı @@ -1186,37 +1300,46 @@ mode.editor.name = Düzenleyici mode.pvp.name = PvP mode.pvp.description = Yerel olarak başkaları ile savaş.\n[gray]Oynamak için haritada en az iki farklı renkli merkez olması gerekir. mode.attack.name = Saldırı -mode.attack.description = Düşman üssünü yok et. Dalga yok.\n[gray]Oynamak için haritada düşman merkez olması gerekir. +mode.attack.description = Düşman üssünü yok et. Dalga yok.\n[gray]Oynamak için haritada düşman merkezi olması gerekir. mode.custom = Özel Kurallar +rules.invaliddata = Hatalı pano verisi. +rules.hidebannedblocks = Yasaklı Blokları Sakla rules.infiniteresources = Sınırsız Kaynaklar rules.onlydepositcore = Sadece Merkeze Aktarmaya İzin Ver +rules.derelictrepair = Kalıntıları Tamir Etmeye İzin Ver rules.reactorexplosions = Reaktör Patlamaları rules.coreincinerates = Merkez Taşanları Eritir rules.disableworldprocessors = Evrensel İşlemcileri Devredışı Bırak rules.schematic = Şema Kullanılabilir rules.wavetimer = Dalga Zamanlayıcısı rules.wavesending = Dalga Gönderiliyor +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Dalgalar +rules.airUseSpawns = Hava Birimleri doğuş bölgelerini kullanır rules.attack = Saldırı Modu -rules.rtsai = RTS AI -rules.rtsminsquadsize = Min Gurup Boyutu -rules.rtsmaxsquadsize = Maks Gurup Boyutu -rules.rtsminattackweight = Min Saldırı Boyutu +rules.buildai = Üs inşa edici YZ +rules.buildaitier = İnşaatçı YZ sınıfı +rules.rtsai = RTS YZ +rules.rtsminsquadsize = Asgari Gurup Boyutu +rules.rtsmaxsquadsize = Azami Gurup Boyutu +rules.rtsminattackweight = Asgari Saldırı Boyutu rules.cleanupdeadteams = Kaybeden Takımın Bloklarını Temizle (PvP) rules.corecapture = Yıkımda Çekirdeği Elegeçir rules.polygoncoreprotection = Çokgenli Merkez Koruması rules.placerangecheck = İnşa Menzilini Doğrula -rules.enemyCheat = Sonsuz AI (Kırmızı Takım) Kaynakları +rules.enemyCheat = Sınırsız AI (Düşman Takım) Kaynakları rules.blockhealthmultiplier = Blok Can Çarpanı rules.blockdamagemultiplier = Blok Hasar Çarpanı rules.unitbuildspeedmultiplier = Birim Üretim Hız Çarpanı rules.unitcostmultiplier = Birim Fiyat Çarpanı rules.unithealthmultiplier = Birim Can Çarpanı rules.unitdamagemultiplier = Birim Hasar Çapanı -rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier +rules.unitcrashdamagemultiplier = Birim Çakılma Hasar Çarpanı rules.solarmultiplier = Güneş Paneli Üretim Çarpanı rules.unitcapvariable = Merkezler Birim Sınırını Etkiler +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Sabit Birim Sınırı rules.limitarea = Haritayı Sınırla rules.enemycorebuildradius = Düşman Merkezi İnşa Yasağı Yarıçapı: [lightgray](kare) @@ -1226,7 +1349,7 @@ rules.buildcostmultiplier = İnşa Ücreti Çarpanı rules.buildspeedmultiplier = İnşa Hızı Çarpanı rules.deconstructrefundmultiplier = Yıkım İade Çarpanı rules.waitForWaveToEnd = Dalgalar Düşmanı Bekler -rules.wavelimit = Map Ends After Wave +rules.wavelimit = Harita .. Dalgadan Sonra Biter rules.dropzoneradius = İniş Noktası Yarıçapı: [lightgray](kare) rules.unitammo = Birlikler Mermi Gerektirir rules.enemyteam = Düşman Takım @@ -1249,6 +1372,8 @@ rules.weather = Hava Durumu rules.weather.frequency = Sıklık: rules.weather.always = Her zaman rules.weather.duration = Süreklilik: +rules.placerangecheck.info = Oyuncuların düşman üssüne yakın inşa etmesini engeller. Bu, silah kurarken daha da fazla. +rules.onlydepositcore.info = Birimlerin Merkez dışında malzeme aktarmasını engeller. content.item.name = Malzemeler content.liquid.name = Sıvılar @@ -1272,7 +1397,7 @@ item.surge-alloy.name = Akı Alaşımı item.spore-pod.name = Spor Kapsülü item.sand.name = Kum item.blast-compound.name = Patlayıcı Bileşik -item.pyratite.name = Pirratit +item.pyratite.name = Piratit item.metaglass.name = Metacam item.scrap.name = Hurda item.fissile-matter.name = Bölünebilir Madde @@ -1280,14 +1405,14 @@ item.beryllium.name = Berilyum item.tungsten.name = Tungsten item.oxide.name = Oksit item.carbide.name = Karbür -item.dormant-cyst.name = Dormant Kist +item.dormant-cyst.name = Etkin Olmayan Kist liquid.water.name = Su liquid.slag.name = Cüruf liquid.oil.name = Petrol liquid.cryofluid.name = Kriyosıvı liquid.neoplasm.name = Neoplazm -liquid.arkycite.name = Arkkit +liquid.arkycite.name = Arkisit liquid.gallium.name = Galyum liquid.ozone.name = Ozon liquid.hydrogen.name = Hidrojen @@ -1361,7 +1486,7 @@ block.sand-boulder.name = Kumlu Kaya Parçaları block.basalt-boulder.name = Bazalt Kaya block.grass.name = Çimen block.molten-slag.name = Cüruf -block.pooled-cryofluid.name = Cryosıvı +block.pooled-cryofluid.name = Kriyosıvı block.space.name = Uzay block.salt.name = Tuz block.salt-wall.name = Tuz Duvar @@ -1371,7 +1496,7 @@ block.sand-wall.name = Kum Duvar block.spore-pine.name = Spor Çamı block.spore-wall.name = Spor Duvar block.boulder.name = Kaya Parçaları -block.snow-boulder.name = Karlı Kaya PArçaları +block.snow-boulder.name = Karlı Kaya Parçaları block.snow-pine.name = Karlı Çam block.shale.name = Şist block.shale-boulder.name = Şist Kayası @@ -1385,10 +1510,10 @@ block.scrap-wall-huge.name = Dev Hurda Duvar block.scrap-wall-gigantic.name = Devasa Hurda Duvar block.thruster.name = İtici block.kiln.name = Fırın -block.graphite-press.name = Grafit Presi -block.multi-press.name = Çoklu-Pres +block.graphite-press.name = Grafit Ezici +block.multi-press.name = Çoklu-Ezici block.constructing = {0} [lightgray](İnşa Ediliyor) -block.spawn.name = Düşman Doğma Noktası +block.spawn.name = Düşman Doğum Noktası block.core-shard.name = Merkez: Parçacık block.core-foundation.name = Merkez: Temel block.core-nucleus.name = Merkez: Çekirdek @@ -1407,10 +1532,10 @@ block.crater-stone.name = Krater block.sand-water.name = Kumlu Su block.darksand-water.name = Kara Kumlu Su block.char.name = Kömür -block.dacite.name = Dakit +block.dacite.name = Daist block.rhyolite.name = Riyolit -block.dacite-wall.name = Dakit Duvar -block.dacite-boulder.name = Dakit Kaya Parçaları +block.dacite-wall.name = Daist Duvar +block.dacite-boulder.name = Daist Kaya Parçaları block.ice-snow.name = Buzlu Kar block.stone-wall.name = Taş Duvar block.ice-wall.name = Buz Duvar @@ -1468,22 +1593,23 @@ block.inverted-sorter.name = Ters Ayıklayıcı block.message.name = Mesaj Bloğu block.reinforced-message.name = Güçlendirilmiş Mesaj Bloğu block.world-message.name = Evrensel Mesaj Bloğu +block.world-switch.name = Evrensel Şalter block.illuminator.name = Aydınlatıcı block.overflow-gate.name = Taşma Geçidi -block.underflow-gate.name = Yana Taşma Geçidi -block.silicon-smelter.name = Silikon Fırını +block.underflow-gate.name = Ters Taşma Geçidi +block.silicon-smelter.name = Silikon Fırını block.phase-weaver.name = Faz Örücü block.pulverizer.name = Ufalayıcı -block.cryofluid-mixer.name = Kriyosıvı Mikseri +block.cryofluid-mixer.name = Kriyosıvı Karıştırıcı block.melter.name = Eritici block.incinerator.name = Yakıcı -block.spore-press.name = Spor Presi +block.spore-press.name = Spor Ezici block.separator.name = Ayırıcı block.coal-centrifuge.name = Kömür Santrifüjü block.power-node.name = Enerji Noktası block.power-node-large.name = Büyük Enerji Noktası block.surge-tower.name = Akı Kulesi -block.diode.name = Batarya Diyotu +block.diode.name = Diyot block.battery.name = Batarya block.battery-large.name = Büyük Batarya block.combustion-generator.name = Termik Jeneratör @@ -1513,7 +1639,7 @@ block.ripple.name = Ripple block.phase-conveyor.name = Faz Konveyörü block.bridge-conveyor.name = Konveyör Köprüsü block.plastanium-compressor.name = Plastanyum Kompresörü -block.pyratite-mixer.name = Pirratit Mikseri +block.pyratite-mixer.name = Piratit Mikseri block.blast-mixer.name = Patlayıcı Bileşik Mikseri block.solar-panel.name = Güneş Paneli block.solar-panel-large.name = Büyük Güneş Paneli @@ -1545,7 +1671,7 @@ block.shock-mine.name = Şok Mayını block.overdrive-projector.name = Hızlandırma Projektörü block.force-projector.name = Enerji Kalkan Projektörü block.arc.name = Arc -block.rtg-generator.name = RTG Jeneratörü +block.rtg-generator.name = RTG Jeneratör block.spectre.name = Spectre block.meltdown.name = Meltdown block.foreshadow.name = Foreshadow @@ -1571,19 +1697,19 @@ block.disassembler.name = Sökücü block.silicon-crucible.name = Silikon Kazanı block.overdrive-dome.name = Hızlandırma Kubbesi block.interplanetary-accelerator.name = Gezegenler Arası Hızlandırıcı -#Düzgün tutun bu TR translatei uğraştırıyonuz beni. -RTOmega +#Düzgün tutun bu TR translatei uğraştırıyonuz beni. -RTOmega (harbi ya XD) block.constructor.name = İnşaatçı -block.constructor.description = 2x2 ve daha küçük blokları inşaa edebilir. +block.constructor.description = 2x2 ve daha küçük blokları inşa edebilir. block.large-constructor.name = Büyük İnşaatçı -block.large-constructor.description = 4x4 ve daha küçük blokları inşaa edebilir. +block.large-constructor.description = 4x4 ve daha küçük blokları inşa edebilir. block.deconstructor.name = Yıkıcı -block.deconstructor.description = Blok ve Birimleri yokeder, 100% iade sağlar. +block.deconstructor.description = Blok ve Birimleri yok eder, 100% iade sağlar. block.payload-loader.name = Kargo Yükleyici block.payload-loader.description = Sıvı ve malzemeleri bloklara yükler. block.payload-unloader.name = Kargo Boşaltıcı block.payload-unloader.description = Sıvı ve Malzemeleri bloklardan boşaltır. block.heat-source.name = Sonsuz Isı Kaynağı -block.heat-source.description = Nerdeyese Sonsuz Isı Veren 1x1 bir blok. +block.heat-source.description = Neredeyese Sonsuz Isı Veren 1x1 bir blok. block.empty.name = Boş block.rhyolite-crater.name = Riyolit Krateri block.rough-rhyolite.name = Kaba Riyolit @@ -1597,8 +1723,8 @@ block.crystalline-stone.name = Kristal Taş block.crystal-floor.name = Kristal Zemin block.yellow-stone-plates.name = Sarı Taş Zemin block.red-stone.name = Kızıl Taş -block.dense-red-stone.name = Yoğun Kızık Kaya -block.red-ice.name = Kızık Buz +block.dense-red-stone.name = Yoğun Kızıl Kaya +block.red-ice.name = Kızıl Buz block.arkycite-floor.name = Arkisit Zemin block.arkyic-stone.name = Arkisit Taş block.rhyolite-vent.name = Riyolit Baca @@ -1606,7 +1732,7 @@ block.carbon-vent.name = Karbon Baca block.arkyic-vent.name = Arkisit Baca block.yellow-stone-vent.name = Sarı Taş Baca block.red-stone-vent.name = Kızıl Taş Baca -block.crystalline-vent.name = Crystalline Vent +block.crystalline-vent.name = Kristal Baca block.redmat.name = KızılMat block.bluemat.name = MaviMat block.core-zone.name = Merkez Alanı @@ -1646,7 +1772,7 @@ block.electric-heater.name = Elektrikli Isıtıcı block.slag-heater.name = Cürüflü Isıtıcı block.phase-heater.name = Faz Isıtıcı block.heat-redirector.name = Isı Aktarıcı -block.heat-router.name = Isı Yönelndirici +block.heat-router.name = Isı Yönlendirici block.slag-incinerator.name = Cürüf Yakıcı block.carbide-crucible.name = Karbür Kazanı block.slag-centrifuge.name = Cürüf Sentrifüjü @@ -1672,7 +1798,7 @@ block.shield-projector.name = Kalkan Projektörü block.large-shield-projector.name = Büyük Kalkan Projektörü block.armored-duct.name = Zırhlı Tüp block.overflow-duct.name = Taşma Tüpü -block.underflow-duct.name = AltTaşma Tüpü +block.underflow-duct.name = Alt-Taşma Tüpü block.duct-unloader.name = Tüp Boşaltıcı block.surge-conveyor.name = Akı Konveyör block.surge-router.name = Akı Yönlendirici @@ -1682,7 +1808,7 @@ block.reinforced-pump.name = Güçlendirilmiş Pompa block.reinforced-conduit.name = Güçlendirilmiş Boru block.reinforced-liquid-junction.name = Güçlendirilmiş Sıvı Kavşağı block.reinforced-bridge-conduit.name = Güçlendirilmiş Köprü Borusu -block.reinforced-liquid-router.name = Güçlendirilmiş Sıvı Yönelndirici +block.reinforced-liquid-router.name = Güçlendirilmiş Sıvı Yönlendirici block.reinforced-liquid-container.name = Güçlendirilmiş Sıvı Konteyneri block.reinforced-liquid-tank.name = Güçlendirilmiş Sıvı Tankı block.beam-node.name = Işın Noktası @@ -1709,7 +1835,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabrikatör block.tank-refabricator.name = Tank Yeniden Yapılandırıcı block.mech-refabricator.name = Robot Yeniden Yapılandırıcı block.ship-refabricator.name = Gemi Yeniden Yapılandırıcı @@ -1747,11 +1872,11 @@ block.memory-bank.name = Bellek Bankası team.malis.name = Malis team.crux.name = Crux team.sharded.name = Sharded -team.derelict.name = Terkedilmiş +team.derelict.name = Kalıntı team.green.name = yeşil #Tüpü bilmem ama yeni çıkan erekir çok iyi değil mi -siyah pulsar team.blue.name = mavi - +#erekir cidden güzelmiş -siyah pulsar hint.skip = Geç hint.desktopMove = [accent][[WASD][] ile hareket et. hint.zoom = [accent]Scroll[] ile Zoom yap. @@ -1773,8 +1898,8 @@ hint.unitSelectControl.mobile = Birim kontrol etmek için [accent]komuta moduna[ hint.launch = Yeterince kaynak topladıktan sonra, üssünüzü başka bir sektöre [accent]fırlatmak[] için sağ alttaki \ue827 [accent]harita[] tuşuna basın. hint.launch.mobile = Yeterince kaynak topladıktan sonra, üssünüzü başka bir sektöre [accent]fırlatmak[] için sağ alttaki \ue88c [accent]menüden[] \ue827 [accent]harita[] tuşuna basın. hint.schematicSelect = İstediğiniz blokları kopyalayıp yapıştırmak için [accent][[F][] tuşunu basılı tutun ve farenizi sürükleyin.\n\n[accent][[Orta Tuş'a (Fare Tekerleği'ne)][] basarak tek bir blok seçebilirsiniz. -hint.rebuildSelect = [accent][[B][] ye basılı tutarak, yok edilmiş blokları seç.\nBu binaları yeniden inşaa etmeni sağlar. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect = [accent][[B][] ye basılı tutarak, yok edilmiş blokları seç.\nBu binaları yeniden inşa etmeni sağlar. +hint.rebuildSelect.mobile = \ue874 kopya tuşunu seç, sonra \ue80f yeniden inşa tuşuna bas ve yok olmuş blok planlarını seçmek için sürükle.\nBu onları otomatik olarak tekrardan inşa edecektir. hint.conveyorPathfind = Konveyörler ile yol yaparken bir noktadan diğer noktaya otomatik yol oluşturmak için [accent][[Sol CTRL][] tuşunu basılı tutun. hint.conveyorPathfind.mobile = Konveyörler ile yol yaparken bir noktadan diğer noktaya otomatik yol oluşturmak için \ue844 [accent]Çapraz Mod'u[] etkinleştirin. hint.boost = Bazı yer birimleri duvarların, taretlerin, diğer birimlerin üstünden uçma özelliği vardır. [accent][[Sol Shift][] tuşunu basılı tutarak bazı yer üniteleri ile uçabilirsiniz. @@ -1794,51 +1919,55 @@ hint.factoryControl.mobile = Bir Birim Fabrikasının [accent]üretim noktasın gz.mine = \uf8c4 [accent]Bakır madeni[]nin yanına giderek üzerine tıklayarak kazmaya başla. gz.mine.mobile = \uf8c4 [accent]Bakır madeni[]nin yanına giderek üzerine tıklayarak kazmaya başla. gz.research = \ue875 Teknoloji Ağacını aç.\n\uf870 [accent]Mekanik Matkap[]'ı aç, ardından sağ alttaki menüden seç.\nBakır madenine tıklayarak üzerine matkapı yerleştir. -gz.research.mobile = \ue875 Teknoloji Ağacını aç.\n\uf870 [accent]Mekanik Matkap[]'ı aç, ardından sağ alttaki menüden seç.\nBakır madenine tıklayarak üzerine matkapı yerleştir.\n\nArdından \ue800 [accent]tik[] tuşuna basarak inşaayı onayla. +gz.research.mobile = \ue875 Teknoloji Ağacını aç.\n\uf870 [accent]Mekanik Matkap[]'ı aç, ardından sağ alttaki menüden seç.\nBakır madenine tıklayarak üzerine matkapı yerleştir.\n\nArdından \ue800 [accent]tik[] tuşuna basarak inşayı onayla. gz.conveyors = \uf896 [accent]Konveyör[]'ü aç ve yerleştirerek madenleri merkeze taşı.\n\nBasılı tutup sürükleyerek birden fazla konveyör koy.\n[accent]Scroll[] ile döndür. gz.conveyors.mobile = \uf896 [accent]Konveyör[]'ü aç ve yerleştirerek madenleri merkeze taşı.\n\nBasılı tutup sürükleyerek birden fazla konveyör koy. gz.drills = Operasyonunu genişlet.\nDaha fazla Mekanik Matkap yerleştir.\n100 Bakır kaz. gz.lead = \uf837 [accent]Kurşun[], kullanılan basit madenlerden biridir.\nKurşun kazmak için matkap kullan. gz.moveup = \ue804 Daha fazla talimat için yukarı ilerle. -gz.turrets = 2 adet\uf861 [accent]Duo[] turreti araştır ve koy.\nDuo turreti bakır\uf838 [accent]mermi[]ye ihtiyaç duyar. +gz.turrets = 2 adet\uf861 [accent]Duo[] tareti araştır ve koy.\nDuo tareti bakır\uf838 [accent]mermi[]ye ihtiyaç duyar. gz.duoammo = Duo'ya konveyörler ile [accent]bakır[] besle. -gz.walls = [accent]Duvarlar[] gelen hasarı engelleyebilir.\nSilahların etrafına, koruma amçlı\uf8ae [accent]Bakır Duvar[] inşaa et. +gz.walls = [accent]Duvarlar[] gelen hasarı engelleyebilir.\nSilahların etrafına, koruma amçlı\uf8ae [accent]Bakır Duvar[] inşa et. gz.defend = DÜŞMAN GELİYO!!! Hazırlan. -gz.aa = Uçan birimler standart turretlerle kolay kolay durdurulamaz..\n\uf860 Onları daha kolay durdurmak için, [accent]Scatter[] turreti kullan, ancak mermi olarak\uf837 [accent]kurşun[] gerektirir. -gz.scatterammo = Scatter turretini [accent]kurşun[] ile besle. -gz.supplyturret = [accent]Turreti Besle +gz.aa = Uçan birimler standart taretlerle kolay kolay durdurulamaz..\n\uf860 Onları daha kolay durdurmak için, [accent]Scatter[] tareti kullan, ancak mermi olarak\uf837 [accent]kurşun[] gerektirir. +gz.scatterammo = Scatter taretini [accent]kurşun[] ile besle. +gz.supplyturret = [accent]Tareti Besle gz.zone1 = Burası düşman iniş noktası. -gz.zone2 = Buraya inşaa edilien her şey otomatik yok edilir! +gz.zone2 = Buraya inşa edilien her şey otomatik yok edilir! gz.zone3 = Dalga başlamak üzere.\nHazır ol. Dikkat! ... Korkma sönmez bu şafak- -gz.finish = Daha fazla turret inşaa et, daha fazla maden kaz\nve tüm dalgaları yenerek [accent]sektörü feth et[]. Bol şans, RTOmega. +gz.finish = Daha fazla taret inşa et, daha fazla maden kaz\nve tüm dalgaları yenerek [accent]sektörü feth et[]. Bol şans, RTOmega. onset.mine = Tıklayarak, duvarlardan\uf748 [accent]berillyum[] kaz.\n\n[accent][[WASD] ile hareket et. onset.mine.mobile = Tıklayarak, duvarlardan\uf748 [accent]berillyum[] kaz. onset.research = \ue875 Teknoloji Ağacını aç.\n\uf73e [accent]Türbin Sıkıştırıcı[]'sını aç ve bir bacanın üstüne yerleştir.\nBu [accent]enerji[] üretecktir. onset.bore = \uf741[accent]Plazma Kayalık Kazıcı[]'yı araştır ve koy.\nBu durvarlardan otomatik kum kazacak. -onset.power = Plazma kazıcıya [accent]enerji[] vermek için\uf73d [accent]Işın Noktası[]'nı araştır ve inşaa et.\nTürbin Sıkıştırıcısı'nı Plazma Kazıcıya bağla. +onset.power = Plazma kazıcıya [accent]enerji[] vermek için\uf73d [accent]Işın Noktası[]'nı araştır ve inşa et.\nTürbin Sıkıştırıcısı'nı Plazma Kazıcıya bağla. onset.ducts = \uf799[accent]Tüp[]'ü aç ve konveyör gibi kullanarak madenleri merkeze taşı.\nTıklayığ basılı tutarak birden fazla tüp koy.\n[accent]Scroll[] ile döndür. onset.ducts.mobile = \uf799[accent]Tüp[]'ü aç ve konveyör gibi kullanarak madenleri merkeze taşı.\nTıklayığ basılı tutarak birden fazla tüp koy. -onset.moremine = Kazı operasyonunu genişlet.\nDaha fazla Plazma Kayalık Kazıcı inşaa et.\n200 Berilyum kaz. -onset.graphite = Daha gelişmiş bloklar\uf835 [accent]grafit[] gerektirir.\nGafit kazmak için Plazma Kayalık Kazıcıları inşaa et. +onset.moremine = Kazı operasyonunu genişlet.\nDaha fazla Plazma Kayalık Kazıcı inşa et.\n200 Berilyum kaz. +onset.graphite = Daha gelişmiş bloklar\uf835 [accent]grafit[] gerektirir.\nGafit kazmak için Plazma Kayalık Kazıcıları inşa et. onset.research2 = [accent]Fabrikaları[] araştırmaya başla.\n\uf74d[accent]Kayalık Delici[] ve\uf779 [accent]Ark Silikon Fırını[]'nı araştır. onset.arcfurnace = Ark Fırın,\uf834 [accent]kum[] ve \uf835 [accent]grafit[]'ten \uf82f [accent]silikon[] üret.\nBu işlem [accent]Enerji[] de gerektirir. onset.crusher = \uf74d [accent]Kayalık Delici[] kullanarak kum kaz. -onset.fabricator = [accent]Birim[] kullanarak haritayı gez, binalarını koru ve düşmanları alt et. \uf6a2 [accent]Tank İnşaatcı[]'sını araştır ve inşaa et. +onset.fabricator = [accent]Birim[] kullanarak haritayı gez, binalarını koru ve düşmanları alt et. \uf6a2 [accent]Tank İnşaatcı[]'sını araştır ve inşa et. onset.makeunit = Bir Birim üret.\n"?" tuşunu kullanarak gereksinimleri görebilirsin. -onset.turrets = Birimler etkili, ancak [accent]turretler[] daha iyi bir savunma sağlar.\n\uf6eb [accent]Breach[] turretini inşaa et.\nTurretler\uf748 [accent]mermi[]ye ihtiyaç duyar. -onset.turretammo = Turreti [accent]berilyum mermi[] ile besle. -onset.walls = [accent]Duvarlar[] gelen hasarı engelleyebilir.\nSilahların etrafına, koruma amçlı\uf8ae [accent]Berilyum Duvar[] inşaa et. +onset.turrets = Birimler etkili, ancak [accent]taretler[] daha iyi bir savunma sağlar.\n\uf6eb [accent]Breach[] taretini inşa et.\nTaretler\uf748 [accent]mermi[]ye ihtiyaç duyar. +onset.turretammo = Tareti [accent]berilyum mermi[] ile besle. +onset.walls = [accent]Duvarlar[] gelen hasarı engelleyebilir.\nSilahların etrafına, koruma amçlı\uf8ae [accent]Berilyum Duvar[] inşa et. onset.enemies = DÜŞMAN GELİYO!!! Hazırlan. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = Düşman zayıf! Hemen geri dal! -onset.cores = [accent]Merkez Zemin[]lerinin üzerine yeni merkezler inşaa edilebilir.\nTüm merkezler birbirleri ile malzemeleri paylaşır.\n\uf725 Bir çekirdek inşaa et. +onset.cores = [accent]Merkez Zemin[]lerinin üzerine yeni merkezler inşa edilebilir.\nTüm merkezler birbirleri ile malzemeleri paylaşır.\n\uf725 Bir merkez inşa et. onset.detect = Düşman seni 2 dakika içinde tespit edicek.\nSavunma, maden ve üretime başla. +onset.commandmode = [accent]Shift[] e basılı tutarak [accent]Komuta Modu[]na geç.\n[accent]Sol Tıklayıp sürekleyerek[] birim seç.\n[accent]Sağ Tıklayarak[] Birimleri Yönlendir veya saldırt. +onset.commandmode.mobile = [accent]Komuta Düğmesine[] basarak [accent]Komuta Moduna[] gir.\nBir Parmağını basılı tut ve değirini [accent]sürükle[]yerek birim seç.\n[accent]Tıkla[]yarak birimleri saldırttırabilir veya yönlendirebilirsin. +aegis.tungsten = Tungsten [accent]darbeli matkap[] kullanılarak kazılabilir.\nBu bina [accent]su[] ve [accent]elektrik[] ister. split.pickup = Bazı bloklar merkez birimi ile taşınabilir.\nBu [accent]Konteyner[]i kaldır ve [accent]Küyle Yükleyici[]ye koy.\n([ ve ] tuşlarını kullan) split.pickup.mobile = Bazı bloklar merkez birimi ile taşınabilir.\nBu [accent]Konteyner[]i kaldır ve [accent]Küyle Yükleyici[]ye koy.\n(Uzun basarak bir şeyi taşı.) split.acquire = Birim üretmek için Tungsten kaz. -split.build = Birimler duvarın öbür tarafına taşınmalı.\nİki adet [accent]Kargo Kütle Sürücü[] inşaa et, duvarın iki farklı tarafında.\nBir tanesine tıklayarak birbirlerine bağla. -split.container = Konteynerler gibi, birimler de [accent]Kargo Kütle Sürücü[] ile taşınabilir.\nKütle Sürücün yanına bir Birim İnşaatcı inşaa et ve birim üreterek düşman üsse saldır. +split.build = Birimler duvarın öbür tarafına taşınmalı.\nİki adet [accent]Kargo Kütle Sürücü[] inşa et, duvarın iki farklı tarafında.\nBir tanesine tıklayarak birbirlerine bağla. +split.container = Konteynerler gibi, birimler de [accent]Kargo Kütle Sürücü[] ile taşınabilir.\nKütle Sürücün yanına bir Birim İnşaatcı inşa et ve birim üreterek düşman üsse saldır. #Yukarıdaki bağzı cümleler Anti Dragon tarafından çevirildi. -item.copper.description = En basit materyal. Her türlü blokda kullanılır. +item.copper.description = En basit materyal. Her türlü blokta kullanılır. item.copper.details = Bakır. En basit materyal. Tüm alt düzey binalarda gerekir. Zayıf ve dayanıksızdır. item.lead.description = Basit bir materyal. Elektronikte ve sıvı taşımada kullanılır. item.lead.details = Yoğun. Durağan. Pillerde yaygın olarak kullanılır.\nNot: Yaşam formlarına toksik. Tabi burda onlardan pek yok... @@ -1869,14 +1998,14 @@ liquid.slag.description = Çeşitli tipte erimiş metallerin birbirine karışı liquid.oil.description = İleri seviye malzeme üretiminde kullanılan bir sıvıdır. Yakıt olarak kömür haline getirilebilir veya püskürtülüp ateşe verilerek bir silah olarak kullanılabilir. liquid.cryofluid.description = Su ve titanyumdan oluşturulan inaktif bir sıvı. Son derece yüksek ısı kapasitesine sahiptir. Soğutucu olarak yaygın olarak kullanılır. liquid.arkycite.description = Sentez ve Kimyasal Reaksiyonlarda kullanılır. -liquid.ozone.description = Oksidasyonda, üretimde ve enerji üretiminde kullanılır. Patlayıcı. +liquid.ozone.description = Oksitlemede, üretimde ve enerji üretiminde kullanılır. Patlayıcı. liquid.hydrogen.description = Maden çıkarmada, birim üretiminde ve taşımada kullanılır. Yanıcı. liquid.cyanogen.description = Mermi olarak, gelişmiş bina ve birimlerde kullanılır. Yüksek derecede Yanıcı. liquid.nitrogen.description = Gaz çıkarmada ve üretimde kullanılır. Durağan. -liquid.neoplasm.description = Neoplasmik Reaktörün tehlikeli bir yan ürünü. Su ile taşınır ve su içerek tüm bloklara zarar verir. +liquid.neoplasm.description = Neoplazmik Reaktörün tehlikeli bir yan ürünü. Su ile taşınır ve su içerek tüm bloklara zarar verir. liquid.neoplasm.details = Neoplazma. Kontrolsüz bölünen kanserli hücre topluluğu. Isıya dayanıklı. Su içerek her binaya karşı aşırı tehlikeli.\n\nAnaliz için fazla dengesiz. Kullanımı bilmiyor. Cürüf göletlerinde eritmeniz öneirlir. [#ff]!SERPULOYA GÖTÜRME! -block.derelict = [lightgray]\ue815 Terkedilmiş +block.derelict = [lightgray]\ue815 Kalıntı block.armored-conveyor.description = Materyalleri titanyum konveyörlerle aynı hızda taşır ama daha fazla zırha sahiptir. Diğer konveyörler dışında yan taraflardan materyal kabul etmez. block.illuminator.description = Küçük, kompakt, yapılandırılabilir bir ışık kaynağı. Çalışması için enerji gerekir. block.message.description = Bir mesajı saklar. Müttefikler arasındaki haberleşmede kullanılır. @@ -1890,8 +2019,8 @@ block.plastanium-compressor.description = Petrol ve titanyumdan plastanyum üret block.phase-weaver.description = Kum ve radyoaktif toryumdan faz örgüsü üretir. Çalışması için çok miktarda enerji gerekir. block.surge-smelter.description = Akı alaşımı üretmek için titanyum, kurşun, silikon ve bakırı birleştirir. block.cryofluid-mixer.description = Su ve titanyum tozunu karıştırıp kriyosıvı üretir. Toryum reaktörü kullanımı için gereklidir. -block.blast-mixer.description = Patlayıcı bileşen üretmek için spor kapsüllerini pirratit ile ezer ve karıştırır. -block.pyratite-mixer.description = Kömür, kurşun ve kumu karıştırıp oldukça yanıcı olan pirratit üretir. +block.blast-mixer.description = Patlayıcı bileşen üretmek için spor kapsüllerini Piratit ile ezer ve karıştırır. +block.pyratite-mixer.description = Kömür, kurşun ve kumu karıştırıp oldukça yanıcı olan Piratit üretir. block.melter.description = Wave taretlerinde kullanılması veya daha çok işlemesi için hurdayı eritip cürufa çevirir. block.separator.description = Cürufu mineral bileşenlerine ayırır. Soğutulmuş bileşenleri çıkarır. block.spore-press.description = Yağ çıkartmak için aşırı basınç altında spor kapsüllerini sıkıştırır. @@ -1960,7 +2089,7 @@ block.battery-large.description = Sıradan bataryadan çok daha fazla enerji dep block.combustion-generator.description = Kömür gibi yanıcı materyalleri yakarak enerji üretir. block.thermal-generator.description = Sıcak bölgelere konulduğunda enerji üretir. block.steam-generator.description = Daha gelişmiş bir termik jeneratör. Daha verimlidir, ama buhar üretebilmek için suya ihtiyaç duyar. -block.differential-generator.description = Çok miktarda enerji üretir. Kriyosıvı ve yanan pirratit arasındaki sıcaklık farkından yararlanır. +block.differential-generator.description = Çok miktarda enerji üretir. Kriyosıvı ve yanan Piratit arasındaki sıcaklık farkından yararlanır. block.rtg-generator.description = Basit, güvenilir bir reaktör. Bozunan radyoaktif materyallerin ısısını kullanır. block.solar-panel.description = Güneşten küçük miktarda enerji üretir. block.solar-panel-large.description = Standart güneş panelinin daha verimli bir versiyonu. @@ -2004,8 +2133,8 @@ block.repair-point.description = Kendisine en yakın hasarlı birimi tamir eder. block.segment.description = Gelen mermilere zarar verir ve onları yok eder. Lazer mermilere etki etmez. block.parallax.description = Çekici bir ışın fırlatarak hava düşmanlarını kendine çeker. Onlara az da olsa zarar verir. block.tsunami.description = Düşmanlara yüksek miktarda sıvı püskürtür. Ateşleri otomatik söndürür. -block.silicon-crucible.description = Kum ve Kömürü, Pirratitle eriterek Silikon üretir. Sıcak ortamda daha iyi çalışır. -block.disassembler.description = Cürüfü aşırı sıcak ortamda seritir. Toryum elde edebilir. +block.silicon-crucible.description = Kum ve Kömürü, Piratitle eriterek Silikon üretir. Sıcak ortamda daha iyi çalışır. +block.disassembler.description = Cürufü aşırı sıcak ortamda seritir. Toryum elde edebilir. block.overdrive-dome.description = Yakındaki binaları hızlandırır. Çalışmak için silikon ve faz gerektirir. block.payload-conveyor.description = Büyük yükleri hareket ettirir. Birimler gibi. block.payload-router.description = Büyük Yükleri 3 Ayrı yöne aktarır. @@ -2026,7 +2155,6 @@ block.logic-display.description = Bir işlemciden bilgi alarak grafik gösteriri block.large-logic-display.description = Bir işlemciden bilgi alarak grafik gösteririr. block.interplanetary-accelerator.description = Gezegenler Arası ulaşım şimdi parmaklarının ucunda... block.repair-turret.description = Sürekli en yakın birimi tamir eder. Soğutucu kullanabilir. -block.payload-propulsion-tower.description = Kütle sürücü gibi bir yerden başka bir yere fırlatır, ancak malzeme yerine yük fırlatmakta kullanılır. block.core-bastion.description = Ana Merkez. Güçlendirilmiş. Yok edildiğinde sektör kaybedilir. block.core-citadel.description = Ana Merkez. Yüksek Seviyede Güçlendirilmiş. Yok edildiğinde sektör kaybedilir. Daha fazla malzeme depolar. block.core-acropolis.description = Ana Merkez. Aşırı Yüksek Seviyede Güçlendirilmiş. Yok edildiğinde sektör kaybedilir. Daha da fazla malzeme depolar. @@ -2036,7 +2164,7 @@ block.sublimate.description = Devamlı alev püskürtür. Zırh deler. block.titan.description = Yer birimlerine devasa füzelerle ateş eder. Hidrojen gerektirir. block.afflict.description = Devasa enerji küreleri fırlatır. Isı gerektirir. block.disperse.description = Parçacıklı hava mermileri ateşler. -block.lustre.description = Fires a slow-moving single-target laser at enemy targets. +block.lustre.description = Düşmanlara yavaş hareket eden ve tek bir birimi hedef alabilen lazer ateşler. block.scathe.description = Uzak yer birimerline çok uzun bir mesafeden füzelerle saldırır. block.smite.description = Delici enerji saçıcı mermiler fırlatır. block.malign.description = Takipçi lazerlerle saldırır. Yüksek mikatrda ısı ister. @@ -2062,7 +2190,6 @@ block.impact-drill.description = Bir madenin üstüne konduğu zaman ara ara mad block.eruption-drill.description = Gelişmiş bir Matkap. Toryum kazabilir. Hidrojen gerektirir. block.reinforced-conduit.description = Sıvıları iletir. Yandan başka borular dışında sıvı almaz. block.reinforced-liquid-router.description = Tüm sıvıları eşit dağıtır. -block.reinforced-junction.description = Kesişen iki sıvı için bir kavşak. block.reinforced-liquid-tank.description = Daha Bol miktarda sıvı depolar. block.reinforced-liquid-container.description = Bol miktarda sıvı depolar. block.reinforced-bridge-conduit.description = Sıvıları bina ve duvarların üzerinden geçirmek için bir köprü. @@ -2087,7 +2214,7 @@ block.underflow-duct.description = Malzemeleri sadece yanlar kapalıysa öne akt block.reinforced-liquid-junction.description = Kesişen iki boru arasında bir kavşak. block.surge-conveyor.description = Malzemeleri toplu taşır. Enerji ile hızlandırılabilir. block.surge-router.description = Malzemeleri üç yöne eşit paylaştırır. Enerji ile hızlandırılabilir. -block.unit-cargo-loader.description = Kargo Dronları üretir. Kargo Dronları otomatik malzemeleri nokatalar arası taşır. +block.unit-cargo-loader.description = Kargo Dronları üretir. Kargo Dronları otomatik malzemeleri noktalar arası taşır. block.unit-cargo-unload-point.description = Kargo Dronları için malzeme bırakma noktası. block.beam-node.description = X ve Y kordinatında enerji aktarır. Az da olsa enerji depolar. block.beam-tower.description = X ve Y kordinatında enerji aktarır. Enerji depolar. Uzun Mesafeli. @@ -2098,8 +2225,8 @@ block.flux-reactor.description = Isıtıldığında bol mikatrda enerji üretir. block.neoplasia-reactor.description = Arkisit, su ve faz ile bol miktarda enerji üretir. Isı ve tehlikeli Neoplazma ortaya çıkarır.\nNeoplazma yok edilmezse patlar! block.build-tower.description = Otomatik kırılan binaları geri işaa eder. Oyuncuya işaatta yardımcı olur. block.regen-projector.description = Hidrojen kullanarak etrafındaki blokları tamir eder. -block.reinforced-container.description = Az da olsa malzeme depolar. Çekirdekle birleşemez. -block.reinforced-vault.description = Malzeme depolar. Çekirdekle birleşemez. +block.reinforced-container.description = Az da olsa malzeme depolar. Merkezle birleşemez. +block.reinforced-vault.description = Malzeme depolar. Merkezle birleşemez. block.tank-fabricator.description = Stell birimleri üretir. Üretilen birimler direk kullanılabilir veya geliştirilebilir. block.ship-fabricator.description = Elude birimleri üretir. Üretilen birimler direk kullanılabilir veya geliştirilebilir. block.mech-fabricator.description = Merui birimleri üretir. Üretilen birimler direk kullanılabilir veya geliştirilebilir. @@ -2119,12 +2246,12 @@ block.large-payload-mass-driver.description = Long-range payload transport struc block.unit-repair-tower.description = Etrafındaki tüm birimleri tamir eder. Ozon gerektirir. block.radar.description = Haritayı tarar. Enerji gerektirir. block.shockwave-tower.description = Düşman mermilerinini parçalar. Siyanojen gerektirir. -block.canvas.description = Displays a simple image with a pre-defined palette. Editable. -#burdan sonraki ve önceki her şeyi benim translate etmem gerekti!!! -RTOmega +block.canvas.description = Önceden tanımlanmış paletle basit bir fotoğraf sergiler. Düzenlenebilir. +#burdan sonraki ve önceki her şeyi benim translate etmem gerekti!!! -RTOmega XD unit.dagger.description = Düşmanlara basit mermilerle ateş eder. -unit.mace.description = Düşmanlara alev atar. -unit.fortress.description = Yer Düşmanlarına uzun menzil gülleler fırlatır. -unit.scepter.description = Düşmanlara süper yüklü mermiler fırlatır. +unit.mace.description = Düşmanlara alev püskürtür. +unit.fortress.description = Düşmanlara uzun menzilli gülleler fırlatır. +unit.scepter.description = Düşmanlara akı yüklü mermiler fırlatır. unit.reign.description = Düşmanlara devasa delici mermilerle ateş eder. unit.nova.description = Minik lazerler atar ve binaları tamir eder. Uçabilir. unit.pulsar.description = Minik elektroşoklar atar ve binaları tamir eder. Uçabilir. @@ -2132,9 +2259,9 @@ unit.quasar.description = Delici lazerlerle ateş eder ve binaları tamir eder. unit.vela.description = Uzun süreli büyük bir lazer ateş eder ve binaları tamir eder. Uçabilir. unit.corvus.description = Çok Yüksek Menzilli devasa bir lazer atar. Her şeyi deler. Binaların üstünden yürüyebilir. unit.crawler.description = Düşmana doğru koşar ve kendini imha eder. -unit.atrax.description = Cürüf topları fırlator. Binaların üstünden yürüyebilir. +unit.atrax.description = Cürüf topları fırlatır. Binaların üstünden yürüyebilir. unit.spiroct.description = Emici lazerler ateş eder, kendini onarır. Binaların üstünden yürüyebilir. -unit.arkyid.description = Emci ilazerler ateş eder ve devasa bir gülle fırlatır. Binaların üstünden yürüyebilir. +unit.arkyid.description = Emici ilazerler ateş eder ve devasa bir gülle fırlatır. Binaların üstünden yürüyebilir. unit.toxopid.description = Devasa bir enerji topu fırlatır. Binaların üstünden yürüyebilir. unit.flare.description = Yakındakilere basit mermi atar. unit.horizon.description = Yakındaki yer düşmanlarına bombarduman yapar. @@ -2142,8 +2269,8 @@ unit.zenith.description = Swarmer-gibi füzeler fırlatır. unit.antumbra.description = Büyük boyutta mermiler fırlatır. unit.eclipse.description = Büyük mermiler fırlatır ve lazer atar. unit.mono.description = Otomatik bir şekilde Bakır ve Kurşun kazar ve çekirdeğe getirir. -unit.poly.description = Otomatik bir şekilde kırılmış binaları geri inşa eder ve oyuncuya inşaatta yardımcı olur. -unit.mega.description = Otomayik bir şekilde hasarlı bolkları onarır. Blokları ve Birimleri taşıyabilir. +unit.poly.description = Otomatik bir şekilde kırılmış binaları geri inşa eder ve oyuncuya inşatta yardımcı olur. +unit.mega.description = Otomatik bir şekilde hasarlı bolkları onarır. Blokları ve Birimleri taşıyabilir. unit.quad.description = Büyük bombalar atar, hasarlı blokları onarır ve düşmanlara zarar verir. Bolkları ve Birimleri taşıyabilir. unit.oct.description = Yakındaki birimleri korur ve tamir eder. Blokları ve Birimleri taşıyabilir. unit.risso.description = Yakındaki düşmanlara Füze atar. @@ -2158,7 +2285,7 @@ unit.retusa.description = Sensörlü mayın döşer. Yakındakileri tamir eder. unit.oxynoe.description = Tamir edici ateş fırlatır. Düşman mermilerini havada vurur. unit.cyerce.description = Takipçi toplu füze atar. Yakındakileri tamir eder. unit.aegires.description = Enerji alanına giren düşmanları şoklar. Yakındakileri tamir eder. -unit.navanax.description = Devasa patlayıcı EMP gülleleri fırlatır, düşman elektir sistemlerini yok eder ve müttefiklerini tamir eder. Yaklaşan düşmanları 4 mini oto-laser turreti ile eritir. +unit.navanax.description = Devasa patlayıcı EMP gülleleri fırlatır, düşman elektir sistemlerini yok eder ve müttefiklerini tamir eder. Yaklaşan düşmanları 4 mini oto-laser tareti ile eritir. unit.stell.description = Hedef Düşmanlara standart mermilerle saldırır. unit.locus.description = Hedef Düşmanlara değişken mermilerle saldırır. unit.precept.description = Hedef Düşmanlara Delici Toplu Mermilerle saldırır. @@ -2174,13 +2301,14 @@ unit.avert.description = Düşman Birimlere Dönen Mermilerle ile saldırır. unit.obviate.description = Düşman Birimlere Dönen Işın Topları ile saldırır. unit.quell.description = Düşman Birimlere Uzun-Mesafe Takipçi Füzelerle saldırır. Düşman Tamir Bloklarını Bloklar. unit.disrupt.description = Düşman Birimlere Uzun-Mesafe Takipçi Bloke-edici Füzelerle saldırır. Düşman Tamir Bloklarını Bloklar. -unit.evoke.description = Sur Merkezini korumak için binalar inşaa eder. Binaları Işınıyla Tamir Eder. -unit.incite.description = Kule Merkezini korumak için binalar inşaa eder. Binaları Işınıyla Tamir Eder. -unit.emanate.description = Akropolis Merkezini korumak için binalar inşaa eder. Binaları Işınıyla Tamir Eder. - +unit.evoke.description = Sur Merkezini korumak için binalar inşa eder. Binaları Işınıyla Tamir Eder. +unit.incite.description = Kale Merkezini korumak için binalar inşa eder. Binaları Işınıyla Tamir Eder. +unit.emanate.description = Akropolis Merkezini korumak için binalar inşa eder. Binaları Işınıyla Tamir Eder. +#inşaa->inşa -ekozet lst.read = Bağlı hafıza kutusundaki numarayı okur. lst.write = Bağlı hafıza kutuaundaki numaraya yazar. lst.print = Yazı yazar. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Ekrana Çizer. lst.drawflush = Ekrana Çizimi Aktarır. lst.printflush = Mesaj bloğuna metnini aktarır, @@ -2203,6 +2331,8 @@ lst.getblock = Herhangi bir yerdeki blok bilgisini al. lst.setblock = Herhangi bir yerdeki blok bilgisini değiştir. lst.spawnunit = Herhangi bir yerde birim var et. lst.applystatus = Bir Birime Durum Etkisi ekle. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Bellir bir noktada dalga başlat.\nDalga Zamanlayıcı Oluşturmaz! lst.explosion = Bir Noktada Patlama oluştur. lst.setrate = İşlemci Hızını Ayarla (işlem/tick) @@ -2213,14 +2343,55 @@ lst.flushmessage = Ekranda bir yazı göster.\nBir önceki yazı kaybolana kadar lst.cutscene = Oyuncu Kamerasını hareket ettir. lst.setflag = Tüm İşlemciler tarafından okunabilen bir Numara İşaretle. lst.getflag = Evrensel İşaretli Numara Oku. -lst.setprop = Sets a property of a unit or building. +lst.setprop = Bir bina veya birime nitelik atar. +lst.effect = Parçacık efekti oluştur. +lst.sync = Ağ boyunca bir değişkeni senkronize et.\nSaniyede en fazla 10 kere yapılabilir. +lst.makemarker = Dünyada yeni bir İşlemci İşareti koy.\nBu İşarete bir Kimlik adamalısın.\nDünya başına 20.000 limit bulunmakta. +lst.setmarker = Bir İşlemci İşareti için bir arazi seç.\nKimlik, İşaret Koyucudaki ile aynı olmalı. +lst.localeprint = Harita yerel paket özellik değerini metin arabelleğine ekleyin.\nHarita düzenleyicide harita yerel ayar paketlerini ayarlamak için şunu işaretleyin: [accent]Harita Bilgisi > Yerel Paketler[].\nİstemci bir mobil cihazsa, önce ".mobile" ile biten bir özelliği yazdırmaya çalışır. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = Matematiksel sabit (π) pi (3.141...) +lglobal.@e = Matematiksel sabit e (2.718...) +lglobal.@degToRad = Bu sayı ile çarparak dereceyi radyana çevir +lglobal.@radToDeg = Bu sayı ile çarparak radyanı dereceye çevir +lglobal.@time = Bu kayıttaki oynama süren, milisaniyesine kadar +lglobal.@tick = Bu kayıttaki oynama süren, tick halinde (1 sn = 60 tick) +lglobal.@second = Bu kayıttaki oynama süren, saniyeler halinde +lglobal.@minute = Bu kayıttaki oynama süren, dakikalar halinde +lglobal.@waveNumber = Şuanki Dalga sayısı +lglobal.@waveTime = Bir sonraki dalga için süre, saniyeyle +lglobal.@mapw = Bloklarla Harita Genişliği +lglobal.@maph = Bloklarla Harita Yüksekliği +lglobal.sectionMap = Harita +lglobal.sectionGeneral = Genel +lglobal.sectionNetwork = Bağlantı/Oyuncu Tarafı [Sadece Evrensel İşlemci] +lglobal.sectionProcessor = İşlemci +lglobal.sectionLookup = Arat +lglobal.@this = Kodu çalıştıran işlemci +lglobal.@thisx = Kodu çalıştıran işlemcinin X kordinatı +lglobal.@thisy = Kodu çalıştıran işlemcinin Y kordinatı +lglobal.@links = Bu işlemciye bağlı toplam blok sayısı +lglobal.@ipt = Tick hızıyla bu işlemcinin işlem hızı (60 tick = 1 sn) +lglobal.@unitCount = Oyundaki toplam birim türü sayısı, Aratla kullan. +lglobal.@blockCount = Oyundaki toplam blok türü sayısı, Aratla kullan. +lglobal.@itemCount = Oyundaki toplam malzeme türü sayısı, Aratla kullan. +lglobal.@liquidCount = Oyundaki toplam sıvı türü sayısı, Aratla kullan. +lglobal.@server = Oyun bir sunucuda veya tek kişilikte ise Doğru, değil ise Yanlış geri dönüt +lglobal.@client = Oyun bir suncuya bağlanmış bir oyuncu tarafından çalıştırılıyorsa Doğru, değil ise Yanlış. +lglobal.@clientLocale = Oyunu çalıştıran oyuncunun yerel dili. Örnek: tr_TR +lglobal.@clientUnit = Oyunu çalıştıran oyuncunun birimi +lglobal.@clientName = Oyunu çalıştıran oyuncunun ismi +lglobal.@clientTeam = Oyunu çalıştıran oyuncunun takım kimliği +lglobal.@clientMobile = Oyuncu mobildeyse Doğru, değil ise Yanlış geri dönüt logic.nounitbuild = [red]Birim İnşası Yasak! lenum.type = Bir bina/birim türü.\nörnek: [accent]@router[]. lenum.shoot = Bir konuma ateş et. lenum.shootp = Belli bir birim veya binaya ateş et. -lenum.config = Bina configurasyonu, örnek: Ayıklayıcı Türü +lenum.config = Bina yapılandırması, örnek: Ayıklayıcı Türü lenum.enabled = Blok aktif mi? laccess.color = Aydınlatıcı Rengi @@ -2229,8 +2400,9 @@ laccess.dead = Bir bina veya birim hala var mı? laccess.controlled = Bir birim ne tarafından kontrol ediliyor? laccess.progress = Bir şeyin oluş aşaması, örnek: bir turetin yeniden doldurma süresindeki aşama. laccess.speed = Bir Birimin Maks hızı, blok/sn. +laccess.id = Bir birim/blok/eşya/sıvı kimliği. \nBu arama operasyonun zıttıdır. lcategory.unknown = ??? -lcategory.unknown.description = Kategorilenmemiş Talimatlar +lcategory.unknown.description = Kategorize edilmemiş talimatlar lcategory.io = Giriş & Çıkış lcategory.io.description = Bir Hafıza biloğunun içeriğini değiştirir. lcategory.block = Blok Kontrol @@ -2255,6 +2427,7 @@ graphicstype.poly = İçi Dolu Çokgen Çiz. graphicstype.linepoly = İçi Boş Çokgen Çiz. graphicstype.triangle = İçi Dolu Üçgen Çiz. graphicstype.image = Bir ikon çiz. \nörnek: [accent]@router[] veya [accent]@dagger[]. +graphicstype.print = Yazdırma arabelleğinden metin çizer.\nYazdırma arabelleğini temizler. lenum.always = Her Zaman Doğru lenum.idiv = Tamsayı Bölme @@ -2274,13 +2447,14 @@ lenum.xor = Çapraz Veya lenum.min = İki sayıdan en küçüğü. lenum.max = İki sayıdan en büyüğü. lenum.angle = İki Işının yaptığı Açı. +lenum.anglediff = İki açı arasındaki derece cinsinden mutlak mesafe. lenum.len = Bir Işının Uzunluğu. lenum.sin = Sinüs lenum.cos = Kosinüs lenum.tan = Tanjant -lenum.asin = Arl Sinüs +lenum.asin = Ark Sinüs lenum.acos = Ark Kosinüs lenum.atan = Ark Tanjant @@ -2320,7 +2494,7 @@ sensor.in = Algılanan Blok/Birim. radar.from = Algı Oluşturulan Blok. radar.target = Algılanan Birimler için Filtre. -radar.and = Extra Filtre. +radar.and = Ekstra Filtre. radar.order = Sıralama Filtresi. radar.sort = Sıralama Sırası. radar.output = Dışarı Aktarılan Değişken. @@ -2344,10 +2518,11 @@ unitlocate.group = Aranan binanın türü. lenum.idle = Hareket etmez ancak kazmaya ve inşa etmeye devam eder. lenum.stop = Dur! -lenum.unbind = Logic Kontrolü tamaman devre dışı bırak.\nNormal AI ı devreye sok. +lenum.unbind = Logic Kontrolü tamaman devre dışı bırak.\nNormal AI'ı devreye sok. lenum.move = Tam konuma git. lenum.approach = Bir Konuma yaklaş. lenum.pathfind = Düşman Doğuş noktasına git. +lenum.autopathfind = Otomatik olarak en yakındaki düşman çekirdeği veya iniş pistine doğru yolunu bulur.\nBu her dalgadaki düşmanların yol bulmasıyla aynıdır. lenum.target = Bir alana ateş et. lenum.targetp = Bir cisme ateş et. lenum.itemdrop = Bir itemi bırak. @@ -2358,8 +2533,13 @@ lenum.payenter = Bir birimi, kargo tutabilen bir bloğa indir. lenum.flag = Numara ile işaretle. lenum.mine = Kaz. lenum.build = Bina inşa et. -lenum.getblock = Bir bloğun verilerini al. +lenum.getblock = Kordinatta bina, blok veya zemin tipi al.\nBirimler kordinata yakın olmalı yoksa boş geri döner. lenum.within = Bir birim menzil alanında mı? -lenum.boost = Boostlamaya başla/dur -onset.commandmode = [accent]Shift[] e basılı tutarak [accent]Komuta Modu[]na geç.\n[accent]Sol Tıklayıp sürekleyerek[] birim seç.\n[accent]Sağ Tıklayarak[] Birimleri Yönlendir veya saldırt. -onset.commandmode.mobile = [accent]Komuta Düğmesine[] basarak [accent]Komuta Moduna[] gir.\nBir Parmağını basılı tut ve değirini [accent]sürükle[]yerek birim seç.\n[accent]Tıkla[]yarak birimleri saldırttırabilir veya yönlendirebilirsin. +lenum.boost = Gazlamaya başla/dur +lenum.flushtext = Varsa, yazdırma arabelleğinin içeriğini işaretleyiciye boşaltın.\nGetirme doğru olarak ayarlanmışsa, harita yerel dil paketinden veya oyun paketinden bilgileri getirmeye çalışır. +lenum.texture = Doğrudan oyunun doku atlasından alınan doku adı (kebab-tarzı isimlendirme XD).\nprintFlush doğru olarak ayarlanırsa metin arabelleği içeriğini metin bağımsız değişkeni olarak kullanır. +lenum.texturesize = Zemindeki doku boyutu. Sıfır değeri, işaretleyici genişliğini orijinal dokunun boyutuna ölçeklendirir. +lenum.autoscale = İşaretçinin oyuncunun yakınlaştırma düzeyine göre ölçeklenip ölçeklenmeyeceği. +lenum.posi = Sıfır indeksinin ilk konum olduğu çizgi ve dörtlü işaretleyiciler için kullanılan indekslenmiş konum. +lenum.uvi = Dokunun sıfırdan bire kadar değişen konumu, dörtlü işaretçiler için kullanılır. +lenum.colori = Sıfır indeksinin ilk renk olduğu çizgi ve dörtlü işaretleyiciler için kullanılan indekslenmiş konum. diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index ae5ab371f2..079a7f9dcd 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = Сортувати за популярністю schematic = Схема schematic.add = Зберегти схему… schematics = Схеми +schematic.search = Шукати схеми... schematic.replace = Схема з такою назвою вже є. Замінити її? schematic.exists = Схема з такою назвою вже є. schematic.import = Імпортувати схему… @@ -69,7 +70,7 @@ schematic.shareworkshop = Поширити в Майстерню schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Обернути схему schematic.saved = Схема збережена. schematic.delete.confirm = Ви справді хочете видалити цю схему? -schematic.rename = Перейменувати схему +schematic.edit = Редагувати схему schematic.info = {0}x{1}, блоків: {2} schematic.disabled = [scarlet]Схеми вимкнено[]\nВам не дозволяється використовувати схеми на цій [accent]мапі[] чи [accent]сервері. schematic.tags = Мітки: @@ -78,6 +79,7 @@ schematic.addtag = Додати мітку schematic.texttag = Текстова мітка schematic.icontag = Мітка із значком schematic.renametag = Перейменувати мітку +schematic.tagged = {0} з міткою schematic.tagdelconfirm = Видалити цю мітку повністю? schematic.tagexists = Схожа мітка вже існує. @@ -157,7 +159,7 @@ mod.requiresversion.details = Необхідна версія гри: [accent]{0 mod.outdatedv7.details = Ця модифікація не сумісна з останньою версією гри. Розробник модифікації має оновити її та додати [accent]minGameVersion: 136[] у свій [accent]mod.json[] файл. mod.blacklisted.details = Цю модифікацію було вручну внесено у чорний список за постійні збої або інші проблеми з цією версією гри. Не використовуйте її. mod.missingdependencies.details = У цій модифікації відсутні наступні залежності: {0} -mod.erroredcontent.details = Ця модифікація спричинила помилки при завантаженні. Попросіть автора виправити їх. +mod.erroredcontent.details = Ця модифікація спричинила помилки під час завантаження. Попросіть автора виправити їх. mod.circulardependencies.details = Цей мод має залежності, які залежать одна від одної. mod.incompletedependencies.details = Цей мод неможливо завантажити через недійсні або відсутні залежності: {0} mod.requiresversion = Необхідна версія гри: [red]{0} @@ -255,11 +257,19 @@ trace = Стежити за гравцем trace.playername = Ім’я гравця: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Ідентифікатор: [accent]{0} +trace.language = Мова: [accent]{0} trace.mobile = Мобільний клієнт: [accent]{0} trace.modclient = Користувацький клієнт: [accent]{0} trace.times.joined = Кількість приєднань: [accent]{0} trace.times.kicked = Кількість вигнань: [accent]{0} +trace.ips = IP: +trace.names = Імена: invalidid = Невірний ідентифікатор клієнта! Надішліть звіт про помилку. +player.ban = Заблокувати +player.kick = Вигнати +player.trace = Відстежити +player.admin = Перемкнути адміністратора +player.team = Змінити команду server.bans = Блокування server.bans.none = Заблокованих гравців немає! server.admins = Адміністратори @@ -273,10 +283,11 @@ server.version = [gray]Версія: {0} {1} server.custombuild = [accent]Користувацька збірка confirmban = Ви дійсно хочете заблокувати «{0}[white]»? confirmkick = Ви дійсно хочете вигнати «{0}[white]»? -confirmvotekick = Ви дійсно хочете вигнати «{0}[white]» за допомогою голосування? confirmunban = Ви дійсно хочете розблокувати цього гравця? confirmadmin = Ви дійсно хочете зробити «{0}[white]» адміністратором? confirmunadmin = Ви дійсно хочете видалити статус адміністратора з «{0}[white]»? +votekick.reason = Причина голосування за вигнання гравця +votekick.reason.message = Ви впевнені, що хочете вигнати голосуванням "{0}[white]"?\nЯкщо так, то, будь ласка, вкажіть причину: joingame.title = Багатоосібна гра joingame.ip = IP: disconnect = Відключено. @@ -332,12 +343,23 @@ open = Відкрити customize = Налаштувати правила cancel = Скасувати command = Командувати +command.queue = [lightgray][У черзі] command.mine = Видобувати command.repair = Ремонтувати command.rebuild = Відбудовувати command.assist = Допомагати гравцеві command.move = Рухатися command.boost = Летіти +command.enterPayload = Увійти до вантажного блока +command.loadUnits = Завантажити одиниці +command.loadBlocks = Завантажити блоки +command.unloadPayload = Вивантажити вантаж +stance.stop = Скасувати накази +stance.shoot = Позиція: стріляти +stance.holdfire = Позиція: припинити вогонь +stance.pursuetarget = Позиція: переслідувати ціль +stance.patrol = Позиція: шлях патрулювання +stance.ram = Позиція: на таран\n[lightgray]Рух по прямій лінії, без пошуку шляху openlink = Перейти за посиланням copylink = Скопіювати посилання back = Назад @@ -384,9 +406,9 @@ custom = Користувацька builtin = Вбудована map.delete.confirm = Ви дійсно хочете видалити цю мапу? Цю дію неможливо буде скасувати! map.random = [accent]Випадкова мапа -map.nospawn = Ця мапа не має жодного ядра для появи гравця! Додайте [accent]помаранчеве[] ядро до цієї мапи в редакторі. -map.nospawn.pvp = У цієї мапи немає ворожих ядер, у яких гравець може з’явитися! Додайте [#{0}]{1}[] ядро до цієї мапи в редакторі. -map.nospawn.attack = У цієї мапи немає ворожих ядер, у яких гравець може з’явитися! Додайте [#{0}]{1}[] ядро до цієї мапи в редакторі. +map.nospawn = Ця мапа не має жодного ядра для появи гравця! Додайте {0} ядро до цієї мапи в редакторі. +map.nospawn.pvp = У цієї мапи немає ворожих ядер, у яких гравець може з’явитися! Додайте [scarlet]вороже[] ядро до цієї мапи в редакторі. +map.nospawn.attack = У цієї мапи немає ворожих ядер для атаки гравцем! Додайте {0} ядро до цієї мапи в редакторі. map.invalid = Помилка завантаження мапи: пошкоджений або невірний файл мапи. workshop.update = Оновити предмет workshop.error = Помилка під час отримання інформації з Майстерні: {0} @@ -418,6 +440,12 @@ editor.waves = Хвилі editor.rules = Правила editor.generation = Генерація editor.objectives = Завдання +editor.locales = Мовні пакети +editor.worldprocessors = Світові процесори +editor.worldprocessors.editname = Редагувати назву +editor.worldprocessors.none = [lightgray]Блоки світового процесора не знайдено!\nДодайте його у редакторі мапи або скористайтеся кнопкою \ue813 «Додати» нижче. +editor.worldprocessors.nospace = Немає вільного місця для розміщення світового процесора! \nВи заповнили карту структурами? Навіщо ви це зробили? +editor.worldprocessors.delete.confirm = Ви справді хочете видалити цей світовий процесор?\n\nЯкщо він оточений стінами, його буде замінено стіною оточення. editor.ingame = Редагувати в грі editor.playtest = Протестувати в грі editor.publish.workshop = Опублікувати в Майстерні Steam @@ -460,8 +488,8 @@ waves.sort.reverse = Зворотне сортування waves.sort.begin = Хвилями waves.sort.health = Здоров’ям waves.sort.type = Типом -waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.search = Шукати хвилі... +waves.filter = Фільтр одиниць waves.units.hide = Сховати все waves.units.show = Показати все @@ -474,6 +502,8 @@ editor.default = [lightgray]<За замовчуванням> details = Подробиці… edit = Змінити… variables = Змінні +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = Ім’я: editor.spawn = Створити бойову одиницю editor.removeunit = Видалити бойову одиницю @@ -485,6 +515,7 @@ editor.errorlegacy = Ця мапа занадто стара і використ editor.errornot = Це не мапа. editor.errorheader = Цей файл мапи недійсний або пошкоджений. editor.errorname = Мапа не має назви. Може, ви намагаєтеся завантажити збереження? +editor.errorlocales = Виникла помилка під час читання мовних пакетів: недійсний мовний пакет. editor.update = Оновити editor.randomize = Випадково editor.moveup = Підняти вище @@ -496,6 +527,7 @@ editor.sectorgenerate = Згенерувати сектор editor.resize = Змінити\nрозмір editor.loadmap = Завантажити мапу editor.savemap = Зберегти мапу +editor.savechanges = [scarlet]У вас є незбережені зміни!\n\n[]Чи хочете ви їх зберегти? editor.saved = Збережено! editor.save.noname = Ваша мапа не має назви! Установіть його в «Інформація про мапу». editor.save.overwrite = Ваша мапа перезаписує вбудовану мапу! Виберіть іншу назву в «Інформація про мапу». @@ -534,6 +566,8 @@ toolmode.eraseores = Видалення руд toolmode.eraseores.description = Видалити тільки руди. toolmode.fillteams = Змінити блок у команді toolmode.fillteams.description = Змінює належність\nблоків до команди. +toolmode.fillerase = Видалити однотипне +toolmode.fillerase.description = Видаляє однотипні блоки. toolmode.drawteams = Змінити команду блока toolmode.drawteams.description = Змінює належність\nблока до команди. #unused @@ -558,6 +592,7 @@ filter.clear = Очистити filter.option.ignore = Ігнорувати filter.scatter = Розсіювач filter.terrain = Ландшафт +filter.logic = Logic filter.option.scale = Масштаб фільтра filter.option.chance = Шанс @@ -581,6 +616,25 @@ filter.option.floor2 = Друга поверхня filter.option.threshold2 = Вторинний граничний поріг filter.option.radius = Радіус filter.option.percentile = Спад +filter.option.code = Код +filter.option.loop = Цикл +locales.info = Тут ви можете додати на мапу мовні пакети для певних мов. У мовних пакетах кожна властивість має назву і значення. Ці властивості можуть бути використані світовими процесорами та завданнями їхніми назвами. Вони підтримують форматування тексту (замінюючи заповнювачі на дійсні значення).\n\n[cyan]Приклад властивості:\n[]name: [accent]timer[]\nvalue: [accent]Приклад таймеру, часу лишилось: @[]\n\n[cyan]Використання:\n[]Установіть його як текст завдання: [accent]@timer\n\n[]Надрукуйте його у світовому процесорі:\n[accent]localeprint "timer"\nformat time\n[gray](де час - окремо обчислена змінна) +locales.deletelocale = Ви справді хочете видалити цей мовний пакет? +locales.applytoall = Застосувати зміни до всіх мовних пакетів +locales.addtoother = Додати до інших мовних пакетів +locales.rollback = Повернення до останньої застосованої зміни +locales.filter = Фільтр властивостей +locales.searchname = Шукати назву... +locales.searchvalue = Шукати значення... +locales.searchlocale = Шукати мовний пакет... +locales.byname = За назвою +locales.byvalue = За значенням +locales.showcorrect = Показати властивості, які присутні в усіх мовних пакетах і мають унікальні значення скрізь +locales.showmissing = Показати властивості, які відсутні в деяких мовних пакетах +locales.showsame = Показати властивості, які мають однакові значення в різних мовних пакетах +locales.viewproperty = Переглянути в усіх мовних пакетах +locales.viewing = Перегляд властивості "{0}" +locales.addicon = Додати значок width = Ширина: height = Висота: @@ -619,23 +673,26 @@ uncover = Розкрити configure = Налаштувати вивантаження objective.research.name = Дослідити -objective.produce.name = Отримайте -objective.item.name = Отримайте предмет +objective.produce.name = Отримати +objective.item.name = Отримати предмет objective.coreitem.name = Предметів у ядрі objective.buildcount.name = Кількість споруд objective.unitcount.name = Кількість одиниць -objective.destroyunits.name = Знищте одиниць +objective.destroyunits.name = Знищити одиниці objective.timer.name = Таймер -objective.destroyblock.name = Знищте блок -objective.destroyblocks.name = Знищте блоки -objective.destroycore.name = Знищте ядро +objective.destroyblock.name = Знищити блок +objective.destroyblocks.name = Знищити блоки +objective.destroycore.name = Знищити ядро objective.commandmode.name = Режим командування objective.flag.name = Прапорець marker.shapetext.name = Форма тексту -marker.minimap.name = Мінімапа +marker.point.name = Point marker.shape.name = Форма marker.text.name = Текст +marker.line.name = Лінія +marker.quad.name = Квад +marker.texture.name = Текстура marker.background = Фон marker.outline = Контур @@ -650,8 +707,8 @@ objective.build = [accent]Збудуйте: [][lightgray]{0}[]x\n{1}[lightgray]{ objective.buildunit = [accent]Сконструюйте одиницю: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.destroyunits = [accent]Знищте: [][lightgray]{0}[]x Units objective.enemiesapproaching = [accent]Вороги наблизяться через [lightgray]{0}[] -objective.enemyescelating = [accent]Enemy production escalating in [lightgray]{0}[] -objective.enemyairunits = [accent]Enemy air unit production beginning in [lightgray]{0}[] +objective.enemyescelating = [accent]Нарощування ворожого виробництва почнеться через [lightgray]{0}[] +objective.enemyairunits = [accent]Виробництво ворожих повітряних одиниць почнеться через [lightgray]{0}[] objective.destroycore = [accent]Знищте вороже ядро objective.command = [accent]Командуйте над одиницями objective.nuclearlaunch = [accent]⚠ Виявлено ядерний запуск: [lightgray]{0} @@ -664,7 +721,6 @@ resources.max = Максимум bannedblocks = Заборонені блоки objectives = Завдання bannedunits = Заборонені одиниці -rules.hidebannedblocks = Приховати заборонені блоки bannedunits.whitelist = Заборонені одиниці як білий список bannedblocks.whitelist = Заборонені блоки як білий список addall = Додати все @@ -687,7 +743,7 @@ error.any = Невідома мережева помилка error.bloom = Не вдалося ініціалізувати світіння.\nВаш пристрій, мабуть, не підтримує це. weather.rain.name = Дощ -weather.snow.name = Сніг +weather.snowing.name = Сніг weather.sandstorm.name = Піщана буря weather.sporestorm.name = Спорова буря weather.fog.name = Туман @@ -724,8 +780,8 @@ sector.curlost = Сектор втрачено sector.missingresources = [scarlet]Недостатньо ресурсів у ядрі sector.attacked = Сектор [accent]{0}[white] під атакою! sector.lost = Сектор [accent]{0}[white] втрачено! -#note: the missing space in the line below is intentional -sector.captured = Сектор [accent]{0}[white]захоплено! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = Змінити значок sector.noswitch.title = Неможливо переключити сектори sector.noswitch = Ви не можете змінювати сектори, поки поточний сектор піддається атаці.\n\nСектор: [accent]{0}[] на [accent]{1}[] @@ -788,7 +844,7 @@ sector.intersect.name = Роздоріжжя sector.atlas.name = Атлант sector.split.name = Розколина sector.basin.name = Ставок -sector.marsh.name = Marsh +sector.marsh.name = Болото sector.peaks.name = Вершини sector.ravine.name = Яр sector.caldera-erekir.name = Кальдера @@ -937,6 +993,7 @@ stat.abilities = Здібності stat.canboost = Можна прискорити stat.flying = Літає stat.ammouse = Патронів використовує +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Множник шкоди stat.healthmultiplier = Множник здоров’я stat.speedmultiplier = Множник швидкості @@ -946,15 +1003,47 @@ stat.reactive = Реактивний stat.immunities = Імунітети stat.healing = Відновлювання -ability.forcefield = Щитове поле +ability.forcefield = Силовий щит +ability.forcefield.description = Створює силове поле, який поглинає кулі ability.repairfield = Ремонтувальне поле -ability.statusfield = {0} Поле підсилення -ability.unitspawn = Завод одиниць «{0}» +ability.repairfield.description = Ремонтує найближчі одиниці +ability.statusfield = Поле підсилення +ability.statusfield.description = Застосовує ефект стану до сусідніх одиниць +ability.unitspawn = Завод одиниць +ability.unitspawn.description = Створює одиниці ability.shieldregenfield = Щитовідновлювальне поле +ability.shieldregenfield.description = Відновлює щити сусідніх одиниць ability.movelightning = Блискавки під час руху +ability.movelightning.description = Випускає блискавки під час руху +ability.armorplate = Бронеплита +ability.armorplate.description = Зменшує шкоду під час стрільби ability.shieldarc = Щитова дуга +ability.shieldarc.description = Проєктує силовий щит у вигляді дуги, що поглинає кулі ability.suppressionfield = Поле пригнічення відновлення -ability.energyfield = Енергетичне поле: [accent]{0}[] шкоди ~ [accent]{1}[] блоків / [accent]{2}[] цілей +ability.suppressionfield.description = Зупиняється поблизу ремонтних будівель +ability.energyfield = Енергетичне поле +ability.energyfield.description = Вражає найближчих ворогів +ability.energyfield.healdescription = Вражає ворогів поблизу та зцілює союзників +ability.regen = Лікування +ability.regen.description = Відновлює власне здоров'я з часом +ability.liquidregen = Поглинання рідини +ability.liquidregen.description = Поглинає рідину для самолікування +ability.spawndeath = Смертельне породження +ability.spawndeath.description = Випускає одиниць після смерті +ability.liquidexplode = Смертельний розлив +ability.liquidexplode.description = Розливає рідину після смерті +ability.stat.firingrate = [lightgray]Швидкість стрільби[stat]{0} за сек. +ability.stat.regen = Відновлення здоров'я: [stat]{0} за сек. +ability.stat.shield = [lightgray]Щит: [stat]{0} +ability.stat.repairspeed = [lightgray]Швидкість відновлення: [stat]{0} за сек. +ability.stat.slurpheal = [lightgray]Здоров'я за одиницю рідини: [stat]{0} +ability.stat.cooldown = [lightgray]Перезаряджання: [stat]{0} за сек. +ability.stat.maxtargets = [lightgray]Максимум цілей: [white]{0} +ability.stat.sametypehealmultiplier = [lightgray]Однотипне відновлення: [white]{0}% +ability.stat.damagereduction = [lightgray]Зменшення шкоди: [stat]{0}% +ability.stat.minspeed = [lightgray]Мінімальна швидкість: [stat]{0} плиток за сек. +ability.stat.duration = [lightgray]Тривалість: [stat]{0} за сек. +ability.stat.buildtime = [lightgray]Час побудови: [stat]{0} за сек. bar.onlycoredeposit = Передача предметів дозволена лише до ядра bar.drilltierreq = Потрібен ліпший бур @@ -994,8 +1083,9 @@ bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat bullet.incendiary = [stat]запальний bullet.homing = [stat]самонаведення bullet.armorpierce = [stat]бронебійність +bullet.maxdamagefraction = [stat]{0}%[lightgray] обмеження шкоди bullet.suppression = [stat]{0}[lightgray] сек. пригнічення відновлення ~ [stat]{1}[lightgray] плит. -bullet.interval = [stat]{0} за сек. [lightgray] період між кулями: +bullet.interval = [stat]{0} за сек. [lightgray] період між кулями: bullet.frags = [stat]{0}[lightgray]x шкода по ділянці від снарядів: bullet.lightning = [stat]{0}[lightgray]x блискавки ~ [stat]{1}[lightgray] шкоди bullet.buildingdamage = [stat]{0}%[lightgray] шкода по будівлях @@ -1029,6 +1119,7 @@ unit.items = предм. unit.thousands = тис unit.millions = млн unit.billions = млрд +unit.shots = shots unit.pershot = за постріл category.purpose = Призначення category.general = Загальне @@ -1044,11 +1135,12 @@ setting.shadows.name = Тіні setting.blockreplace.name = Пропонування щодо автоматичної заміни блоків setting.linear.name = Лінійна фільтрація setting.hints.name = Підказки -setting.logichints.name = Підказки при роботі з логікою +setting.logichints.name = Підказки під час роботи з логікою setting.backgroundpause.name = Пауза в разі згортання setting.buildautopause.name = Автоматичне призупинення будування setting.doubletapmine.name = Подвійне швидке натискання для початку видобутку setting.commandmodehold.name = Утримуйте для переходу в режим командування +setting.distinctcontrolgroups.name = Обмежити одну групу контролю на одиницю setting.modcrashdisable.name = Вимикати модифікації після аварійного запуску setting.animatedwater.name = Анімаційні рідини setting.animatedshields.name = Анімаційні щити @@ -1095,13 +1187,14 @@ setting.position.name = Показувати координати гравця setting.mouseposition.name = Показувати координати курсора setting.musicvol.name = Гучність музики setting.atmosphere.name = Показувати планетарну атмосферу +setting.drawlight.name = Малювати темряву/світло setting.ambientvol.name = Звуки довкілля setting.mutemusic.name = Заглушити музику setting.sfxvol.name = Гучність звукових ефектів setting.mutesound.name = Заглушити звук setting.crashreport.name = Відсилати анонімні звіти про аварійне завершення гри setting.savecreate.name = Автоматичне створення збережень -setting.publichost.name = Загальнодоступність гри +setting.steampublichost.name = Загальнодоступність гри setting.playerlimit.name = Обмеження гравців setting.chatopacity.name = Непрозорість чату setting.lasersopacity.name = Непрозорість лазерів енергопостачання @@ -1109,6 +1202,8 @@ setting.bridgeopacity.name = Непрозорість мостів setting.playerchat.name = Показувати хмару чата над гравцями setting.showweather.name = Показувати погоду setting.hidedisplays.name = Приховувати логічні дисплеї +setting.macnotch.name = Адаптуйте інтерфейс для показу виїмки +setting.macnotch.description = Потрібен перезапуск для застосування змін steam.friendsonly = Лише друзі steam.friendsonly.tooltip = Чи лише друзі Steam зможуть приєднатися до вашої гри.Якщо зняти цей прапорець, ваша гра стане загальнодоступною – будь-хто зможе приєднатися. public.beta = Зауважте, що в бета-версії гри ви не можете робити публічні ігри. @@ -1119,6 +1214,7 @@ keybind.title = Налаштування керування keybinds.mobile = [scarlet]Більшість прив’язаних клавіш не функціональні для мобільних пристроїв. Підтримується лише базовий рух. category.general.name = Загальне category.view.name = Перегляд +category.command.name = Командувати одиницею category.multiplayer.name = Мережева гра category.blocks.name = Вибір блока placement.blockselectkeys = \n[lightgray]Клавіші: [{0}, @@ -1136,6 +1232,24 @@ keybind.mouse_move.name = Рухатися за мишею keybind.pan.name = Політ камери за мишею keybind.boost.name = Прискорення keybind.command_mode.name = Режим командування +keybind.command_queue.name = Черга команд одиниць +keybind.create_control_group.name = Створити контрольну групу +keybind.cancel_orders.name = Скасувати накази +keybind.unit_stance_shoot.name = Позиція одиниці: відкрити воонь +keybind.unit_stance_hold_fire.name = Позиція одиниці: припинити вогонь +keybind.unit_stance_pursue_target.name = Позиція одиниці: переслідувати ціль +keybind.unit_stance_patrol.name = Позиція одиниці: патрулювати +keybind.unit_stance_ram.name = Позиція одиниці: на таран +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Команда одиниці: завантажити вантаж keybind.rebuild_select.name = Відбудувати регіон keybind.schematic_select.name = Вибрати ділянку keybind.schematic_menu.name = Меню схем @@ -1199,17 +1313,25 @@ mode.pvp.description = Боріться проти інших гравців.\n[ mode.attack.name = Наступ mode.attack.description = Зруйнуйте ворожу базу. \n[gray]Потрібно червоне ядро на мапі для гри. mode.custom = Користувацькі правила +rules.invaliddata = Недійсні дані з клавіатури. +rules.hidebannedblocks = Приховати заборонені блоки rules.infiniteresources = Нескінченні ресурси rules.onlydepositcore = Дозволити лише основне розміщення ядер +rules.derelictrepair = Дозволити відновлення блоків Переможених rules.reactorexplosions = Вибухи реактора rules.coreincinerates = Ядро спалює надлишкові предмети rules.disableworldprocessors = Вимкнути світові процесори rules.schematic = Використання схем дозволено rules.wavetimer = Таймер для хвиль rules.wavesending = Ручне надсилання хвиль +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Хвилі +rules.airUseSpawns = Air units use spawn points rules.attack = Режим атаки +rules.buildai = Базовий ШІ-будівельник +rules.buildaitier = Рівень ШІ-будівельника rules.rtsai = ШІ зі стратегій реального часу rules.rtsminsquadsize = Мінімальний розмір загону rules.rtsmaxsquadsize = Максимальний розмір загону @@ -1228,6 +1350,7 @@ rules.unitdamagemultiplier = Множник шкоди бойових одини rules.unitcrashdamagemultiplier = Множник шкоди одиниці при зіткненні одиниць rules.solarmultiplier = Множник сонячної енергії rules.unitcapvariable = Ядра збільшують обмеження на кількість одиниць +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Початкове обмеження одиниць rules.limitarea = Обмежити територію мапи rules.enemycorebuildradius = Радіус оборони для ворожого ядра:[lightgray] (плитки) @@ -1237,7 +1360,7 @@ rules.buildcostmultiplier = Множник затрат на будування rules.buildspeedmultiplier = Множник швидкості будування rules.deconstructrefundmultiplier = Множник відшкодування в разі демонтажу rules.waitForWaveToEnd = Хвилі чекають на завершення попередньої -rules.wavelimit = Map Ends After Wave +rules.wavelimit = Мапа закінчується після хвилі rules.dropzoneradius = Радіус зони висадки:[lightgray] (плитки) rules.unitammo = Бойові одиниці потребують боєприпасів rules.enemyteam = Ворожа команда @@ -1260,6 +1383,8 @@ rules.weather = Погода rules.weather.frequency = Повторюваність: rules.weather.always = Завжди rules.weather.duration = Тривалість: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Предмети content.liquid.name = Рідини @@ -1340,7 +1465,7 @@ unit.navanax.name = Наванакс unit.alpha.name = Альфа unit.beta.name = Бета unit.gamma.name = Гамма -unit.scepter.name = Верховна влада +unit.scepter.name = Скіпетр unit.reign.name = Верховний Порядок unit.vela.name = Пульсар Вітрил unit.corvus.name = Ґава @@ -1481,6 +1606,7 @@ block.inverted-sorter.name = Зворотний сортувальник block.message.name = Повідомлення block.reinforced-message.name = Посилене повідомлення block.world-message.name = Світове повідомлення +block.world-switch.name = World Switch block.illuminator.name = Освітлювач block.overflow-gate.name = Надмірний затвор block.underflow-gate.name = Недостатній затвор @@ -1660,7 +1786,7 @@ block.electric-heater.name = Електричний нагрівач block.slag-heater.name = Шлаковий нагрівач block.phase-heater.name = Фазовий нагрівач block.heat-redirector.name = Перенаправляч тепла -block.heat-router.name = Heat Router +block.heat-router.name = Тепловий маршрутизатор block.slag-incinerator.name = Шлаковий сміттєспалювальний завод block.carbide-crucible.name = Карбідний тигель block.slag-centrifuge.name = Шлакова центрифуга @@ -1723,7 +1849,6 @@ block.disperse.name = Розпорошувач block.afflict.name = Уражач block.lustre.name = Блиск block.scathe.name = Знищувач -block.fabricator.name = Виробник block.tank-refabricator.name = Танковий перебудовний завод block.mech-refabricator.name = Меховий перебудовний завод block.ship-refabricator.name = Корабельний перебудовний завод @@ -1776,18 +1901,18 @@ hint.desktopPause = Натисніть [accent][[Пробіл][], щоби зу hint.breaking = Натисніть [accent]ПКМ[] і тягніть, щоби зруйнувати блоки. hint.breaking.mobile = Активуйте \ue817 [accent]молот[] внизу праворуч і зробіть швидке натискання блоків, щоби їх розібрати.\n\nУтримуйте палець протягом секунди й протягніть, щоби розібрати виділене. hint.blockInfo = Подивіться інформацію про блок. Перейдіть до [accent]меню будівництва[] і натисніть на кнопку [accent][[?][] праворуч. -hint.derelict = Будівлі [accent]Переможених[] є зламаними залишками старих баз, що більше не функціонують.\n\nЇх можна [accent]деконструювати[] для отримання ресурсів. +hint.derelict = Будівлі [accent]Переможених[] є зламаними залишками старих баз, що більше не функціонують.\n\nЇх можна [accent]розібрати[] для отримання ресурсів або відбудувати. hint.research = Використовуйте кнопку \ue875 [accent]Дослідження[] для дослідження нової технології. hint.research.mobile = Використовуйте \ue875 [accent]Дослідження[] в \ue88c [accent]меню[] для дослідження нової технології. hint.unitControl = Утримуйте [accent][[лівий Ctrl][] і [accent]натисніть[] на одиницю чи башту, щоби контролювати її. hint.unitControl.mobile = [accent][Зробіть коротке натискання двічі[], щоби контролювати союзні одиниці чи башти. hint.unitSelectControl = Для керування одиницями увійдіть в [accent]режим командування[], утримуючи [accent]лівий Shift[].\nПеребуваючи в командному режимі, натисніть і протягуйте для вибору одиниць. Натисніть [accent]ПКМ[] на позицію або ціль, щоби віддати наказ одиницям, які там знаходяться. hint.unitSelectControl.mobile = Для керування одиницями увійдіть в [accent]режим командування[], натиснувши кнопку [accent]командувати[] ліворуч знизу.\nПеребуваючи в командному режимі, зробіть довгий натиск і протягуйте для вибору одиниць. Торкніться позиції або цілі, щоби віддати наказ одиницям, які там знаходяться. -hint.launch = Як тільки буде зібрано достатньо ресурсів, ви зможете зробити [accent]Запуск[] за допомогою вибору найближчих секторів \ue827 [accent]мапи[] внизу праворуч. +hint.launch = Як тільки буде зібрано достатньо ресурсів, ви зможете зробити [accent]Запуск[] до наступних секторів \ue827 [accent]мапи[] внизу праворуч і перейти на нову локацію.. hint.launch.mobile = Як тільки буде зібрано достатньо ресурсів, ви зможете зробити [accent]Запуск[] за допомогою вибору найближчих секторів з \ue827 [accent]мапи[] у \ue88c [accent]меню[]. hint.schematicSelect = Утримуйте [accent][[F][] і тягніть, щоби вибрати блоки для їхнього подальшого копіювання і вставлення.\n\nНатисніть [accent][[СКМ][], щоби скопіювати певний тип блоку. -hint.rebuildSelect = Утримуючи [accent][[B][], протягніть, щоби вибрати зруйновані проєкти блоків.\nЦе призведе до їхнього автоматичного відновлення. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect = Утримуючи [accent][[B][], протягніть, щоби вибрати зруйновані проєкти блоків.\nЦе призведе до їхньої автоматичної перебудови. +hint.rebuildSelect.mobile = Натисніть кнопку \ue874 копіювання, потім натисніть кнопку \ue80f перебудови і перетягніть, щоби вибрати знищені проєкти блоків.\nЦе призведе до їхньої автоматичної перебудови. hint.conveyorPathfind = Утримуйте [accent][[лівий Ctrl][], коли тягнете конвеєри, щоб автоматично прокласти шлях. hint.conveyorPathfind.mobile = Увімкніть \ue844 [accent]діагональний режим[] і тягніть конвеєри, щоб автоматично прокласти шлях. @@ -1821,7 +1946,7 @@ gz.walls = [accent]Стіни[] можуть запобігти потрапля gz.defend = Ворог наступає, приготуйтеся до оборони. gz.aa = Повітряні одиниці не можуть бути легко знищені зі стандартними баштами.\n\uf860 Башта [accent]розсіювач[] забезпечує відмінну протиповітряну оборону, але потребує \uf837 [accent]свинець[] як боєприпас. gz.scatterammo = Забезпечте башту розсіювач \uf837 [accent]свинцем[], використовуючи конвеєр. -gz.supplyturret = [accent]Башта постачання +gz.supplyturret = [accent]Постачання до башти gz.zone1 = Це зона висадки ворога. gz.zone2 = Усе, що побудовано в цьому радіусі, знищується, коли починається хвиля. gz.zone3 = Зараз почнеться хвиля.\nПриготуйется @@ -1830,7 +1955,7 @@ gz.finish = Збудуйте більше башт, видобудьте біл onset.mine = Натисніть, щоби видобути \uf748 [accent]берилій[]зі стін.\n\nДля переміщення використовуйте [accent][[WASD]. onset.mine.mobile = Торкніться, щоби видобути \uf748 [accent]берилій[]зі стін. onset.research = Відкрийте \ue875 дерево технологій.\nДослідіть, а потім розмістіть \uf73e [accent]Турбінний кондесатор[] на джерелі (отворі).\nЦе буде генерувати [accent]енергію[]. -onset.bore = Дослідіть і розмістіт \uf741 [accent]плазмовий бурильник[].\nВін автоматично видобуває ресурси зі стін. +onset.bore = Дослідіть і розмістіть \uf741 [accent]плазмовий бурильник[].\nВін автоматично видобуває ресурси зі стін. onset.power = Для підключення [accent]енергії[] до плазмового бурильника, дослідіть і розмістіть \uf73d [accent]променевий вузол[].\nПід’єднайте турбінний коденсатор до плазмового бурильника. onset.ducts = Дослідіть і розмістіть \uf799 [accent]канали[], щоби переміщувати видобуті ресурси від плазмового бурильника до ядра.\nНатисніть і простягніть, щоби розмістити декілька каналів.\n[accent]Прокрутіть[], щоб обернути. onset.ducts.mobile = Дослідіть і розмістіть \uf799 [accent]канали[], щоби переміщувати видобуті ресурси від плазмового бурильника до ядра.\n\nУтримуйте свій палець близько секунди і простягніть, щоби розмістити декілька каналів. @@ -1845,10 +1970,16 @@ onset.turrets = Одиниці ефективні, але [accent]башти[] onset.turretammo = Забезпечте башту [accent]берилієвими боєприпасами[]. onset.walls = [accent]Стіни[] cможе запобігти потраплянню зустрічної шкоди на будівлі.\nРозмістіть декілька \uf6ee [accent]берилієвих стін[] навколо башти. onset.enemies = Ворог наступає, готуйтеся до оборони. +onset.defenses = [accent]Підготуйте захист:[lightgray] {0} onset.attack = Ворог беззахисний. Контратакуйте. onset.cores = Нові ядра можуть бути розміщені на плитках [accent]зони ядра[].\nНові ядра функціонують як передові бази й мають спільний інвентар ресурсів з іншими ядрами.\nРозмістіть \uf725 ядро. onset.detect = Ворог зможе виявити вас за 2 хвилини.\nОрганізуйте оборону, видобуток корисних копалин та виробництво. +#Don't translate these yet! +onset.commandmode = Утримуйте [accent]Shift[], щоб увійти в [accent]режим командування[].\n[accent]Зажміть ЛКМ і потягніть,[] щоб обрати одиниці.\n[accent]Використовуйте ПКМ[], щоби наказати обраним одиницям рухатися чи атакувати. +onset.commandmode.mobile = Натисніть кнопку [accent]Командувати[], щоб увійти [accent]в режим командування[].\nУтримуйте палець і [accent]потягніть[], щоби вибрати одиниці.\n[accent] Зробіть коротке натискання[], щоби наказати обраним одиницям рухатися чи атакувати. +aegis.tungsten = Вольфрам можна видобувати за допомогою [accent]імпульсного буру[].\nЦя будівля потребує [accent]води[] та [accent]енергію[]. + split.pickup = Деякі блоки можуть бути підібрані основною ядровою одиницею.\nПідніміть цей [accent]контейнер[] і помістіть його до [accent]вантажного завантажувача[].\n(Клавіші за замовчуванням - [[ і ] для підняття та скидання) split.pickup.mobile = Деякі блоки можуть бути підібрані основною ядровою одиницею.\nПідніміть цей [accent]контейнер[] і помістіть його до [accent]вантажного завантажувача[].\n(Щоб підняти або скинути щось, довго натискайте на це щось.) split.acquire = Ви повинні дістати трохи вольфраму, щоби побудувати одиниці. @@ -2047,7 +2178,6 @@ block.logic-display.description = Англійська назва: Logic Display block.large-logic-display.description = Англійська назва: Large Logic Display\nПоказує довільну графіку з логічного процесора. block.interplanetary-accelerator.description = Англійська назва: Interplanetary Accelerator\nВелика електромагнітна башта-рейкотрон. Прискорює ядра, щоби подолати планетне тяжіння для міжпланетного розгортання. block.repair-turret.description = Англійська назва: Repair Turret\nБезпервно ремонтує найближчу пошкоджену одиницю. Для прискорення ремонтування можна охолодити. -block.payload-propulsion-tower.description = Англійська назва: Payload Propulsion Tower\nСтруктура транспортування вантажу на великі відстані. Вистрілює вантаж в інші вантажні катапульти. #Erekir block.core-bastion.description = Англійська назва: Core Bastion\nЯдро бази. Броньоване. Після знищення сектор втрачається. @@ -2085,7 +2215,6 @@ block.impact-drill.description = Англійська назва: Impact Drill\n block.eruption-drill.description = Англійська назва: Eruption Drill\nПоліпшений імпульсний бур. Здатний видобувати торій. Потребує водню. block.reinforced-conduit.description = Англійська назва: Reinforced Conduit\nПереміщує рідини вперед. Не приймає нетрубоповідні входи з боків. block.reinforced-liquid-router.description = Англійська назва: Reinforced Liquid Router\nРівномірно розподіляє рідини на всі сторони. -block.reinforced-junction.description = Англійська назва: Reinforced Junction\nВиконує роль моста для двох пересічних водоводів. block.reinforced-liquid-tank.description = Англійська назва: Reinforced Liquid Tank\nЗберігає велику кількість рідини. block.reinforced-liquid-container.description = Англійська назва: Reinforced Liquid Container\nЗберігає значну кількість рідини. block.reinforced-bridge-conduit.description = Англійська назва: Reinforced Bridge Conduit\nТранспортує рідини над спорудами та місцевістю. @@ -2173,7 +2302,7 @@ unit.risso.description = Англійська назва: Risso\nВистріл unit.minke.description = Англійська назва: Minke\nВистрілює запальними снарядами та стандартними кулями по найближчих наземних цілях. unit.bryde.description = Англійська назва: Bryde\nВистрілює у ворогів артилерійськими снарядами та ракетами великої дальності. unit.sei.description = Англійська назва: Sei\nВистрілює у ворогів шквалом ракет і бронебійних куль. -unit.omura.description = Англійська назва: Omura\nВистрілює у ворогів далекобійним болтом, що пробиває броню. Виробляє повітряних Фальшфеєрів. +unit.omura.description = Англійська назва: Omura\nВистрілює у ворогів далекобійним болтом, що пробиває броню. Виробляє повітряних спалахів. unit.alpha.description = Англійська назва: Alpha\nЗахищає ядро «Уламок» від противників. Будує споруди. unit.beta.description = Англійська назва: Beta\nЗахищає ядро «Штаб» від противників. Будує споруди. unit.gamma.description = Англійська назва: Gamma\nЗахищає ядро «Атом» від противників. Будує споруди. @@ -2197,8 +2326,8 @@ unit.collaris.description = Англійська назва: Collaris\nВеде unit.elude.description = Англійська назва: Elude\nСтріляє парами самонавідних куль по ворожих цілях. Може парити над об’єктами з рідиною. unit.avert.description = Англійська назва: Avert\nВеде вогонь по ворожих цілях закрученими парами куль. unit.obviate.description = Англійська назва: Obviate\nСтріляє по ворожих цілях закрученими парами блискавичних куль. -unit.quell.description = Англійська назва: Quell\nВеде вогонь далекобійними самонавідними ракетами по об’єктах противника. Блокує ремонтні пункти супротивника. -unit.disrupt.description = Англійська назва: Disrupt\nВеде вогонь ракетами дальнього радіуса дії з самонаведенням по об’єктах противника. Блокує ремонтні пункти супротивника. +unit.quell.description = Англійська назва: Quell\nВеде вогонь далекобійними самонавідними ракетами по об’єктах противника. Блокує ремонтні пункти супротивника. Атакує тільки наземні цілі. +unit.disrupt.description = Англійська назва: Disrupt\nВеде вогонь ракетами дальнього радіуса дії з самонаведенням по об’єктах противника. Блокує ремонтні пункти супротивника. Атакує тільки наземні цілі. unit.evoke.description = Англійська назва: Evoke\nБудує споруди для захисту ядра «Бастіон». Ремонтує споруди за допомогою променя. unit.incite.description = Англійська назва: Incite\nБудує споруди для захисту ядра «Цитадель». Ремонтує споруди за допомогою променя. unit.emanate.description = Англійська назва: Emanate\nБудує споруди для захисту ядра «Акрополь». Ремонтує споруди за допомогою променя. @@ -2206,6 +2335,7 @@ unit.emanate.description = Англійська назва: Emanate\nБудує lst.read = Зчитує число із з’єднаної комірки пам’яті. lst.write = Записує числу у з’єднану комірку пам’яті. lst.print = Додайте текст до буфера друку.\nНічого не відображає, поки [accent]Print Flush[] використовується. +lst.format = Замінити наступний замінник у текстовому буфері значенням.\nНе робить нічого, якщо шаблон заповнювача є недійсним.\nШаблон заповнювача: "{[accent]number 0-9[]}"\nПриклад:\n[accent]print "test {0}"\nformat "example" lst.draw = Додає операцію до буфера рисунка.\nНічого не відображає, поки [accent]Draw Flush[] використовується. lst.drawflush = Скидає буфер операцій [accent]Draw[] на дисплей. lst.printflush = Скидає буфер операцій [accent]Print[] у блок «Повідомлення». @@ -2218,7 +2348,7 @@ lst.operation = Виконує операцію над 1-2 змінними. lst.end = Перейти до верхньої частини стеку операцій. lst.wait = Чекати певну кількість секунд. lst.stop = Зупиняє виконання процесора. -lst.lookup = Знайти тип предмета, рідини, одиниці чи блоку за ідентифікатором.\nМожна отримати доступ до загальної кількості кожного типу через \n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] +lst.lookup = Знайти тип предмета, рідини, одиниці чи блоку за ідентифікатором.\nМожна отримати доступ до загальної кількості кожного типу через \n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[]\nДля зворотної операції використовуйте [accent]@id[] об'єкта. lst.jump = Умовне переходження до іншої операції. lst.unitbind = Прив’язка до одиниці певного типу та його зберігання в [accent]@unit[]. lst.unitcontrol = Контролювати поточну прив’язану одиницю. @@ -2228,6 +2358,8 @@ lst.getblock = Отримує дані плитки в будь-якому мі lst.setblock = Установлює дані плитки в будь-якому місці. lst.spawnunit = Породжує одиницю на певному місці. lst.applystatus = Застосовує або видаляє ефект стану з одиниці. +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Змодельовує хвилю, що виникає у довільному місці.\nНе збільшує лічильник хвиль. lst.explosion = Створює вибух у певному місці. lst.setrate = Установлює швидкість виконання процесора в інструкціях за такт. @@ -2239,8 +2371,49 @@ lst.cutscene = Керує камерою гравця. lst.setflag = Установлює глобальний прапорець, який можуть прочитати усі процесори. lst.getflag = Перевіряє, чи встановлено глобальний прапорець. lst.setprop = Установлює властивість одиниці чи будівлі. +lst.effect = Створює ефект частинок. +lst.sync = Синхронізувати змінну по мережі.\nВикликається щонайбільше 10 разів за секунду. +lst.makemarker = Створює новий логічний маркер у світі.\nПотрібно надати ідентифікатор для ідентифікації цього маркера.\nНаразі кількість маркерів на світ обмежена 20 тисячами. +lst.setmarker = Установлює властивість для маркера.\nВикористаний ідентифікатор має збігатися з інструкцією «Створити маркер». +lst.localeprint = Додає значення властивості мовного пакету мапи до текстового буфера.\nЩоби встановити мовного пакету мапи в редакторі мапи, перейдіть до [accent]Інформація про мапу > Мовні пакети [].\nЯкщо клієнтом є мобільний пристрій, то спочатку намагається надрукувати властивість, що закінчується на ".mobile". +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = Математична константа пі (3.141...) +lglobal.@e = Математична константа e (2.718...) +lglobal.@degToRad = Помножте на це число, щоб перевести градуси в радіани +lglobal.@radToDeg = Помножте на це число, щоб перевести радіани в градуси +lglobal.@time = Час гри поточного збереження, у мілісекундах +lglobal.@tick = Час гри поточного збереження, in ticks (1 секунда = 60 ticks) +lglobal.@second = Час гри поточного збереження, в секундах +lglobal.@minute = Час гри поточного збереження, у хвилинах +lglobal.@waveNumber = Поточний номер хвилі, якщо хвилі ввімкнено +lglobal.@waveTime = Таймер зворотного відліку для хвиль, в секундах +lglobal.@mapw = Ширина мапи в плитках +lglobal.@maph = Висота мапи в плитках +lglobal.sectionMap = Мапа +lglobal.sectionGeneral = Загальне +lglobal.sectionNetwork = Мережа/Клієнтська частина [Тільки світовий процесор] +lglobal.sectionProcessor = Процесор +lglobal.sectionLookup = Пошук +lglobal.@this = Логічний блок, що виконує код +lglobal.@thisx = X координата блоку, що виконує код +lglobal.@thisy = Y координата блоку, що виконує код +lglobal.@links = Загальна кількість блоків, пов'язаних з цим процесором +lglobal.@ipt = Швидкість виконання процесора в інструкціях за тик (60 ticks = 1 секунда) +lglobal.@unitCount = Загальна кількість типів вмісту одиниць у грі; використовується з інструкцією lookup +lglobal.@blockCount = Загальна кількість типів вмісту блоків у грі; використовується з інструкцією lookup +lglobal.@itemCount = Загальна кількість типів вмісту предметів у грі; використовується з інструкцією lookup +lglobal.@liquidCount = Загальна кількість типів вмісту рідин у грі; використовується з інструкцією lookup +lglobal.@server = Істина, якщо код виконується на сервері або в одноосібній грі, інакше хиба +lglobal.@client = Істина, якщо код виконується на клієнті, підключеному до сервера +lglobal.@clientLocale = Локалізація клієнта, на якому виконується код. Наприклад: en_US чи uk_UA +lglobal.@clientUnit = Одиниця клієнта, що виконує код +lglobal.@clientName = Ім'я гравця клієнта, на якому запущено код +lglobal.@clientTeam = Ідентифікатор команди клієнта, що запускає код +lglobal.@clientMobile = Істина, якщо клієнт, на якому виконується код, є мобільним, інакше хиба -logic.nounitbuild = [red]Будування за допомогою процесорів заборено. +logic.nounitbuild = [red]Будування за допомогою процесорів заборонено. lenum.type = Тип будівлі чи одиниці.\nНаприклад, для будь-якого маршрутизатора (англ. router), функція вертатиме [accent]@router[].\nНе є рядком. lenum.shoot = Стріляти в зазначену позицію. @@ -2254,6 +2427,7 @@ laccess.dead = Чи є одиниця або будівля мертвою аб laccess.controlled = Повертає \n[accent]@ctrlProcessor[] якщо одиниця контролюється процесором;\n[accent]@ctrlPlayer[] якщо одиниця чи будівля контролюєть гравцем\n[accent]@ctrlFormation[] якщо одиниця у загоні (формуванні)\nІнакше — 0. laccess.progress = Прогрес дії, від 0 до 1.\nПовертає виробництво, перезавантаження башти або хід будівництва. laccess.speed = Максимальна швидкість одиниці, у плитках за секунду. +laccess.id = Ідентифікатор одиниці/блоку/предмету/рідини.\nЦе зворотна операція до операції пошуку. lcategory.unknown = Невідома категорія lcategory.unknown.description = Команди без категорії. @@ -2281,6 +2455,7 @@ graphicstype.poly = Залити кольором правильний бага graphicstype.linepoly = Намалювати контур правильного багатокутника. graphicstype.triangle = Залити кольором трикутник. graphicstype.image = Намалювати зображення із деяким вмістом.\nНаприклад: [accent]@router[] чи [accent]@dagger[]. +graphicstype.print = Малює текст з буфера друку.\nОчищає буфер друку. lenum.always = Завжди істинне. lenum.idiv = Ціле ділення. @@ -2300,6 +2475,7 @@ lenum.xor = Виключне АБО (XOR). lenum.min = Мінімум з двох чисел. lenum.max = Максимум з двох чисел. lenum.angle = Кут вектора у градусах. +lenum.anglediff = Абсолютна відстань між двома кутами в градусах. lenum.len = Довжина вектора. lenum.sin = Синус, у градусах. @@ -2373,7 +2549,8 @@ lenum.stop = Зупинити або рух, або видобуток, або lenum.unbind = Повністю вимикає усю логіку.\nПродовжує стандартний ШІ. lenum.move = Перемістити в точне положення. lenum.approach = Наближення до позиції із зазначеним радіусом. -lenum.pathfind = Знайдення шляху до точки появи ворогів. +lenum.pathfind = Знайдення шляху до певної позиції. +lenum.autopathfind = Автоматично прокладає шлях до найближчого ядра або точки скидання ворога.\nЦе те саме, що і стандартне прокладання шляху у ворогів з хвиль. lenum.target = Стрільба в задану позицію. lenum.targetp = Стріляти в ціль із передбаченням швидкості. lenum.itemdrop = Викинути предмет. @@ -2384,10 +2561,13 @@ lenum.payenter = Увійти чи вийти з вантажного блока lenum.flag = Числовий прапорець одиниці. lenum.mine = Видобувати у заданій позиції. lenum.build = Побудувати будівлю. -lenum.getblock = Розпізнавання блока та його типа за координатами.\nОдиниця повинна знаходитися в межах досяжності.\nСуцільні не-будівлі матимуть тип [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Чи знаходиться одиниця біля позиції. lenum.boost = Почати чи зупинити політ. - -#Don't translate these yet! -onset.commandmode = Утримуйте [accent]Shift[], щоб увійти в [accent]режим командування[].\n[accent]Зажміть ЛКМ і потягніть,[] щоб обрати одиниці.\n[accent]Використовуйте ПКМ[], щоби наказати обраним одиницям рухатися чи атакувати. -onset.commandmode.mobile = Натисніть кнопку [accent]Командувати[], щоб увійти [accent]в режим командування[].\nУтримуйте палець і [accent]потягніть[], щоб обрати одиниці.\n[accent] Зробіть коротке натискання[], щоби наказати обраним одиницям рухатися чи атакувати. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 1cfd5262a1..3f5fe3a96e 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -1,19 +1,19 @@ credits.text = Được tạo ra bởi [royal]Anuken[] - [sky]anukendev@gmail.com[] credits = Danh đề contributors = Người dịch và đóng góp -discord = Tham gia Mindustry Discord! -link.discord.description = Mindustry Discord chính thức -link.reddit.description = Mindustry subreddit +discord = Tham gia Discord của Mindustry! +link.discord.description = Discord chính thức của Mindustry +link.reddit.description = Subreddit của Mindustry link.github.description = Mã nguồn trò chơi -link.changelog.description = Danh sách các thay đổi. +link.changelog.description = Danh sách các thay đổi link.dev-builds.description = Các bản dựng phát triển không ổn định -link.trello.description = Official Trello board cho các tính năng được lên kế hoạch -link.itch.io.description = itch.io page với bản tải xuống cho PC -link.google-play.description = Google Play store listing -link.f-droid.description = F-Droid listing -link.wiki.description = Mindustry wiki chính thức +link.trello.description = Bảng Trello chính thức cho các tính năng được lên kế hoạch +link.itch.io.description = Trang itch.io với bản tải xuống cho PC +link.google-play.description = Xem trên Google Play store +link.f-droid.description = Xem trên F-Droid +link.wiki.description = Wiki chính thức của Mindustry link.suggestions.description = Đề xuất các tính năng mới -link.bug.description = Tìm thấy lỗi? Báo cáo nó ở đây +link.bug.description = Tìm thấy lỗi? Báo cáo ở đây linkopen = Máy chủ này đã gửi cho bạn một liên kết. Có chắc muốn mở nó chứ?\n\n[sky]{0} linkfail = Không mở được liên kết!\nURL đã được sao chép vào bộ nhớ tạm. screenshot = Ảnh chụp màn hình được lưu vào {0} @@ -31,23 +31,23 @@ load.map = Bản đồ load.image = Hình ảnh load.content = Nội dung load.system = Hệ thống -load.mod = Mods -load.scripts = Scripts +load.mod = Danh sách mod +load.scripts = Ngữ lệnh -be.update = Đã tìm thấy bản cập nhật mới: +be.update = Đã tìm thấy bản dựng mới của Bleeding Edge: be.update.confirm = Tải xuống và khởi động lại ngay bây giờ? be.updating = Đang cập nhật... -be.ignore = Bỏ qua -be.noupdates = Không tìm thấy bản cập nhật mới. -be.check = Kiểm tra các bản cập nhật. +be.ignore = Phớt lờ +be.noupdates = Không tìm thấy bản cập nhật. +be.check = Kiểm tra các bản cập nhật mods.browser = Duyệt mod -mods.browser.selected = Mod Đã chọn +mods.browser.selected = Mod đã chọn mods.browser.add = Cài đặt mods.browser.reinstall = Cài đặt lại mods.browser.view-releases = Xem các bản phát hành -mods.browser.noreleases = [scarlet]Không Tìm Thấy Bản Phát Hành Nào\n[accent]Không thể tìm thấy bất cứ bản phát hành nào cho mod này. Hãy kiểm tra xem repository của mod đã có bản phát hành nào chưa. -mods.browser.latest = +mods.browser.noreleases = [scarlet]Không Tìm Thấy Bản Phát Hành Nào\n[accent]Không thể tìm thấy bất cứ bản phát hành nào cho mod này. Hãy kiểm tra xem kho lưu trữ (repo) của mod đã có bản phát hành nào chưa. +mods.browser.latest = [lightgray][Mới nhất] mods.browser.releases = Các bản phát hành mods.github.open = Repo mods.github.open-release = Trang phát hành @@ -57,64 +57,66 @@ mods.browser.sortstars = Sắp xếp theo sao schematic = Bản thiết kế schematic.add = Lưu bản thiết kế... schematics = Các bản thiết kế +schematic.search = Tìm kiếm các bản thiết kế... schematic.replace = Bản thiết kế có tên đó đã tồn tại. Thay thế nó? schematic.exists = Bản thiết kế có tên đó đã tồn tại. schematic.import = Nhập Bản thiết kế... schematic.exportfile = Xuất tệp schematic.importfile = Nhập tệp schematic.browseworkshop = Duyệt qua Workshop -schematic.copy = Sao chép vào bộ nhớ tạm -schematic.copy.import = Thêm từ bộ nhớ tạm -schematic.shareworkshop = Chia sẻ từ Workshop +schematic.copy = Sao chép vào Bộ nhớ tạm +schematic.copy.import = Thêm từ Bộ nhớ tạm +schematic.shareworkshop = Chia sẻ lên Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Lật bản thiết kế schematic.saved = Đã lưu bản thiết kế. schematic.delete.confirm = Bản thiết kế này sẽ bị xóa hoàn toàn. -schematic.rename = Đổi tên bản thiết kế +schematic.edit = Chỉnh sửa bản thiết kế schematic.info = {0}x{1}, {2} khối -schematic.disabled = [scarlet]Tính năng bản thiết kế đã bị tắt[]\nBạn không được sử dụng bản thiết kế trong [accent]bản đồ[] hoặc [accent]máy chủ. +schematic.disabled = [scarlet]Bản thiết kế đã bị tắt[]\nBạn không được sử dụng bản thiết kế trong [accent]bản đồ[] hoặc [accent]máy chủ. schematic.tags = Thẻ: schematic.edittags = Chỉnh sửa thẻ schematic.addtag = Thêm thẻ schematic.texttag = Thẻ văn bản -schematic.icontag = Thẻ icon +schematic.icontag = Thẻ biểu tượng schematic.renametag = Đổi tên thẻ -schematic.tagdelconfirm = Xóa thẻ này? -schematic.tagexists = Thẻ đã tồn tại. +schematic.tagged = {0} thẻ đã gắn +schematic.tagdelconfirm = Xóa hoàn toàn thẻ này? +schematic.tagexists = Thẻ đó đã tồn tại. stats = Thống kê stats.wave = Đợt đã vượt qua -stats.unitsCreated = Số quân lính đã tạo +stats.unitsCreated = Số đơn vị đã tạo stats.enemiesDestroyed = Số kẻ địch đã tiêu diệt stats.built = Số công trình đã xây -stats.destroyed = Số công trình bị phá huỷ +stats.destroyed = Số công trình bị phá hủy stats.deconstructed = Số công trình đã phá dỡ stats.playtime = Thời gian chơi -globalitems = [accent]Toàn bộ vật phẩm +globalitems = [accent]Vật phẩm của hành tinh map.delete = Bạn có chắc chắn muốn xóa bản đồ "[accent]{0}[]"? -level.highscore = Điểm cao nhất: [accent]{0} +level.highscore = Điểm cao: [accent]{0} level.select = Chọn cấp độ -level.mode = Chế độ: -coreattack = < Căn cứ đang bị tấn công! > -nearpoint = [[ [scarlet]RỜI KHỎI KHU VỰC ĐÁP NGAY LẬP TỨC[] ]\nsự hủy diệt sắp xảy ra -database = Cơ sở dữ liệu +level.mode = Chế độ chơi: +coreattack = < Lõi đang bị tấn công! > +nearpoint = [[ [scarlet]RỜI KHỎI ĐIỂM ĐÁP NGAY LẬP TỨC[] ]\nsự hủy diệt sắp xảy ra +database = Cơ sở dữ liệu cốt lõi database.button = Cơ sở dữ liệu savegame = Lưu trò chơi loadgame = Tải lại màn chơi joingame = Tham gia trò chơi -customgame = Tùy chỉnh +customgame = Trò chơi tùy chỉnh newgame = Trò chơi mới -none = +none = none.found = [lightgray] none.inmap = [lightgray] minimap = Bản đồ nhỏ position = Vị trí close = Đóng -website = Website +website = Trang web quit = Thoát save.quit = Lưu & Thoát maps = Bản đồ -maps.browse = Chọn bản đồ +maps.browse = Duyệt qua bản đồ continue = Tiếp tục maps.none = [lightgray]Không tìm thấy bản đồ! invalid = Không hợp lệ @@ -123,81 +125,84 @@ preparingconfig = Đang chuẩn bị cấu hình preparingcontent = Đang chuẩn bị nội dung uploadingcontent = Đang tải lên nội dung uploadingpreviewfile = Đang tải lên tệp xem trước -committingchanges = Đang cập nhật các thay đổi +committingchanges = Đang ủy thác các thay đổi done = Hoàn tất feature.unsupported = Thiết bị của bạn không hỗ trợ tính năng này. -mods.initfailed = [red]⚠[] Mindustry không khởi chạy được. Điều này có thể do các mod bị lỗi.\n\nĐể tránh gặp sự cố liên tiếp, [red]tất cả các mod đã bị tắt.[]\n\nĐể tắt tính năng này, vào [accent]Cài đặt->Trò chơi->Tắt các mod khi gặp sự cố trong khởi động[]. -mods = Mods +mods.initfailed = [red]⚠[] Mindustry không khởi chạy được. Điều này có thể do các mod bị lỗi.\n\nĐể tránh gặp sự cố lặp lại, [red]tất cả các mod đã bị tắt.[] +mods = Danh sách mod mods.none = [lightgray]Không tìm thấy mod! mods.guide = Hướng dẫn mod mods.report = Báo lỗi mods.openfolder = Mở thư mục mods.viewcontent = Xem nội dung mods.reload = Tải lại -mods.reloadexit = Trò chơi sẽ đóng để mod được tải. +mods.reloadexit = Trò chơi sẽ đóng để mod được tải lại. mod.installed = [[Đã cài đặt] mod.display = [gray]Mod:[orange] {0} -mod.enabled = [lightgray]Đã Bật -mod.disabled = [scarlet]Đã Tắt +mod.enabled = [lightgray]Đã bật +mod.disabled = [red]Đã tắt mod.multiplayer.compatible = [gray]Tương thích với chế độ nhiều người chơi mod.disable = Tắt mod.content = Nội dung: mod.delete.error = Không thể xóa mod. Tệp có thể đang được sử dụng. -mod.incompatiblegame = [red]Phiên bản trò chơi lỗi thời + +mod.incompatiblegame = [red]Trò chơi lỗi thời mod.incompatiblemod = [red]Không tương thích -mod.blacklisted = [red]Không hổ trợ -mod.unmetdependencies = [red]Thiếu mod phụ thuộc +mod.blacklisted = [red]Không được hỗ trợ +mod.unmetdependencies = [red]Phụ thuộc chưa đáp ứng mod.erroredcontent = [scarlet]Lỗi nội dung mod.circulardependencies = [red]Phụ thuộc tròn -mod.incompletedependencies = [red]Thiếu mod phụ thuộc +mod.incompletedependencies = [red]Phụ thuộc chưa hoàn thiện + mod.requiresversion.details = Yêu cầu phiên bản trò chơi: [accent]{0}[]\nPhiên bản của bạn đã lỗi thời. Mod này yêu cầu phiên bản mới hơn của trò chơi (có thể là các bản phát hành beta/alpha) để hoạt động. mod.outdatedv7.details = Mod này không tương thích với phiên bản mới nhất của trò chơi. Tác giả cần phải cập nhật nó, và thêm [accent]minGameVersion: 136[] vào tệp [accent]mod.json[]. mod.blacklisted.details = Mod này đã bị đưa vào danh sách đen do gây ra các sự cố đối với phiên bản trò chơi này. Đừng sử dụng nó. mod.missingdependencies.details = Mod này thiếu các phụ thuộc: {0} -mod.erroredcontent.details = Đã xãy ra lỗi khi tải trò chơi. Vui lòng yêu cầu tác giả của mod sửa chúng. -mod.circulardependencies.details = Mod này có chứa các phụ thuộc mà chính nó cũng phụ thuộc vào các mod khác. -mod.incompletedependencies.details = Mod này không thể tải được do bị lỗi từ bên trong hoặc thiếu các phụ thuộc: {0}. +mod.erroredcontent.details = Mod này gây lỗi khi tải. Vui lòng yêu cầu tác giả của mod sửa chúng. +mod.circulardependencies.details = Mod này có chứa các phụ thuộc mà chúng phụ thuộc lẫn nhau. +mod.incompletedependencies.details = Mod này không thể tải được do không hợp lệ hoặc thiếu các phụ thuộc: {0}. + +mod.requiresversion = Yêu cầu phiên bản trò chơi: [red]{0} -mod.requiresversion = Yêu cầu phiên bản game: [red]{0} mod.errors = Đã xảy ra lỗi khi tải nội dung. -mod.noerrorplay = [scarlet]Bạn có mod bị lỗi.[]Tắt các mod bị lỗi hoặc sửa các lỗi trước khi chơi. -mod.nowdisabled = [scarlet]Mod '{0}' cần mod này để chạy:[accent] {1}\n[lightgray]Trước tiên bạn cần tải các mod này xuống.\nBản mod này sẽ tự động tắt. +mod.noerrorplay = [red]Bạn có mod bị lỗi.[] Tắt các mod bị ảnh hưởng hoặc sửa các lỗi trước khi chơi. +mod.nowdisabled = [red]Mod '{0}' thiếu phụ thuộc:[accent] {1}\n[lightgray]Bạn cần tải các mod này xuống trước.\nBản mod này sẽ tự động tắt. mod.enable = Bật mod.requiresrestart = Trò chơi sẽ đóng để áp dụng các thay đổi của mod. mod.reloadrequired = [scarlet]Yêu cầu khởi động lại -mod.import = Thêm Mod -mod.import.file = Thêm từ tệp -mod.import.github = Thêm từ GitHub -mod.jarwarn = [scarlet]Các JAR mod vốn dĩ không an toàn.[]\nĐảm bảo rằng bạn đang thêm mod này từ một nguồn đáng tin cậy! -mod.item.remove = Mục này là một phần của[accent] '{0}'[] mod. Để xóa nó, hãy gỡ cài đặt mod này. +mod.import = Nhập Mod +mod.import.file = Nhập từ tệp +mod.import.github = Nhập từ GitHub +mod.jarwarn = [scarlet]Các mod JAR vốn dĩ không an toàn.[]\nĐảm bảo rằng bạn đang thêm mod này từ một nguồn đáng tin cậy! +mod.item.remove = Mục này là một phần của mod[accent] '{0}'[]. Để xóa nó, hãy gỡ cài đặt mod đó. mod.remove.confirm = Mod này sẽ bị xóa. mod.author = [lightgray]Tác giả:[] {0} -mod.missing = Bản lưu này chứa các mod mà bạn đã cập nhật gần đây hoặc không được cài đặt. Có thể gây ra lỗi khi mở. Bạn có chắc muốn mở nó?\n[lightgray]Mods:\n{0} +mod.missing = Bản lưu này chứa các mod mà bạn đã cập nhật gần đây hoặc không được cài đặt. Có thể gây ra lỗi khi mở. Bạn có chắc muốn mở nó?\n[lightgray]Các mod:\n{0} mod.preview.missing = Trước khi đăng bản mod này lên workshop, bạn phải thêm hình ảnh xem trước.\nĐặt một hình ảnh có tên[accent] preview.png[] vào thư mục của mod và thử lại. mod.folder.missing = Chỉ có thể đăng các mod ở dạng thư mục lên workshop.\nĐể chuyển đổi bất kỳ mod nào thành một thư mục, chỉ cần giải nén tệp của nó vào một thư mục và xóa tệp nén cũ, sau đó khởi động lại trò chơi của bạn hoặc tải lại các bản mod của bạn. -mod.scripts.disable = Thiết bị của bạn không hổ trợ mod chứa scripts này. Bạn phải tắt các mod này để chơi trò chơi. +mod.scripts.disable = Thiết bị của bạn không hỗ trợ mod chứa các ngữ lệnh. Bạn phải tắt các mod này để chơi trò chơi. -about.button = Thông tin +about.button = Giới thiệu name = Tên: -noname = Hãy nhập[accent] tên[] trước. +noname = Hãy nhập một[accent] tên người chơi[] trước. search = Tìm kiếm: planetmap = Bản đồ hành tinh -launchcore = Phóng căn cứ +launchcore = Phóng lõi filename = Tên tệp: unlocked = Đã mở khóa nội dung mới! available = Đã có mục nghiên cứu mới! unlock.incampaign = < Mở khóa trong chiến dịch để biết thêm chi tiết > -campaign.select = Chọn nơi bắt đầu chiến dịch +campaign.select = Chọn chiến dịch khởi đầu campaign.none = [lightgray]Chọn một hành tinh để bắt đầu.\nCó thể thay đổi sang hành tinh khác bất cứ lúc nào. -campaign.erekir = Nội dung mới và được trau chuốt. Quá trình chơi liền mạch hơn.\n\nBản đồ chất lượng hơn và trải nghiệm tổng thể tốt hơn. -campaign.serpulo = Nội dung cũ, trải nghiệm cơ bản. Tiến trình mở hơn.\n\nRất có thể vẫn còn bản đồ hoặc hệ thống bị mất cân bằng. Ít được trau chuốt. +campaign.erekir = Nội dung mới và được trau chuốt. Quá trình chiến dịch liền mạch hơn.\n\nKhó hơn. Bản đồ chất lượng hơn và trải nghiệm tổng thể tốt hơn. +campaign.serpulo = Nội dung cũ; trải nghiệm cơ bản. Tiến trình mở hơn, nhiều nội dung hơn.\n\nRất có thể vẫn còn cơ chế bản đồ và chiến dịch bị mất cân bằng. Ít được trau chuốt. completed = [accent]Hoàn tất -techtree = Tiến trình -techtree.select = Chọn nhánh nghiên cứu +techtree = Cây công nghệ +techtree.select = Chọn nhánh công nghệ techtree.serpulo = Serpulo techtree.erekir = Erekir -research.load = Tải +research.load = Nạp research.discard = Bỏ qua research.list = [lightgray]Nghiên cứu: research = Nghiên cứu @@ -208,77 +213,88 @@ players.single = {0} người chơi players.search = tìm kiếm players.notfound = [gray]không tìm thấy người chơi server.closing = [accent]Đang đóng máy chủ... -server.kicked.kick = Bạn đã bị kick khỏi máy chủ! +server.kicked.kick = Bạn đã bị buộc rời khỏi máy chủ! server.kicked.whitelist = Bạn không nằm trong danh sách được vào máy chủ này. server.kicked.serverClose = Máy chủ đã đóng. -server.kicked.vote = Bạn đã bị bỏ phiếu buộc rời phòng. Tạm biệt. -server.kicked.clientOutdated = Phiên bản máy chủ này mới hơn phiên bản trò chơi! Hãy cập nhật trò chơi của bạn! -server.kicked.serverOutdated = Phiên bản máy chủ đã cũ! Hãy yêu cầu máy chủ đó cập nhật! +server.kicked.vote = Bạn đã bị bỏ phiếu buộc rời. Tạm biệt. +server.kicked.clientOutdated = Phiên bản máy khách lỗi thời! Hãy cập nhật trò chơi của bạn! +server.kicked.serverOutdated = Phiên bản máy chủ lỗi thời! Hãy yêu cầu máy chủ đó cập nhật! server.kicked.banned = Bạn đã bị cấm trên máy chủ này. -server.kicked.typeMismatch = Máy chủ này không tương thích với phiên bản của bạn. +server.kicked.typeMismatch = Máy chủ này không tương thích với kiểu bản dựng của bạn. server.kicked.playerLimit = Máy chủ đã đầy. Hãy chờ một chỗ trống. server.kicked.recentKick = Bạn đã bị buộc rời gần đây.\nHãy chờ một lúc sau đó kết nối lại. server.kicked.nameInUse = Có ai đó với cái tên này\nđã ở trong máy chủ. server.kicked.nameEmpty = Tên bạn đã chọn không hợp lệ. server.kicked.idInUse = Bạn đã ở trên máy chủ này! Bạn không được phép kết nối với hai tài khoản. -server.kicked.customClient = Máy chủ này không hổ trợ phiên bản tùy chỉnh. Hãy tải phiên bản chính thức. +server.kicked.customClient = Máy chủ này không hỗ trợ bản dựng tùy chỉnh. Hãy tải phiên bản chính thức. server.kicked.gameover = Trò chơi kết thúc! server.kicked.serverRestarting = Máy chủ đang khởi động lại. server.versions = Phiên bản của bạn:[accent] {0}[]\nPhiên bản máy chủ:[accent] {1}[] -host.info = Nút [accent]Mở máy chủ[] mở máy chủ trên cổng [scarlet]6567[]. \nBất kỳ ai trên cùng [lightgray]wifi hoặc mạng cục bộ[] sẽ có thể thấy máy chủ của bạn trong danh sách máy chủ của họ.\n\nNếu bạn muốn mọi người có thể kết nối từ mọi nơi bằng IP, [accent]port forwarding[] là bắt buộc.\n\n[lightgray]Lưu ý: Nếu ai đó đang gặp sự cố khi kết nối với máy chủ trong mạng LAN của bạn, đảm bảo rằng bạn đã cho phép Mindustry truy cập vào mạng cục bộ của mình trong cài đặt tường lửa. Lưu ý rằng các mạng công cộng đôi khi không cho phép khám phá máy chủ. -join.info = Tại đây, bạn có thể nhập [accent]IP máy chủ[] kết nối , hoặc khám phá [accent]mạng cục bộ[] hay kết nối đến máy chủ [accent]toàn cầu[].\nCả mạng LAN và WAN đều được hỗ trợ.\n\n[lightgray]Nếu bạn muốn kết nối với ai đó bằng IP, bạn sẽ cần phải hỏi IP của họ, có thể được tìm thấy bằng cách kiểm tra IP thiết bị của họ. -hostserver = Mở máy chủ. +host.info = Nút [accent]Mở máy chủ[] mở máy chủ trên cổng [scarlet]6567[]. \nBất kỳ ai trên cùng [lightgray]wifi hoặc mạng cục bộ[] sẽ có thể thấy máy chủ của bạn trong danh sách máy chủ của họ.\n\nNếu bạn muốn mọi người có thể kết nối từ mọi nơi bằng IP, [accent]điều hướng cổng (port forwarding)[] là bắt buộc.\n\n[lightgray]Lưu ý: Nếu ai đó đang gặp sự cố khi kết nối với máy chủ trong mạng LAN của bạn, đảm bảo rằng bạn đã cho phép Mindustry truy cập vào mạng cục bộ của mình trong cài đặt tường lửa. Lưu ý rằng các mạng công cộng đôi khi không cho phép khám phá máy chủ. +join.info = Tại đây, bạn có thể nhập [accent]IP máy chủ[] kết nối, hoặc khám phá [accent]mạng cục bộ[] hay kết nối đến máy chủ [accent]toàn cầu[].\nCả mạng LAN và WAN đều được hỗ trợ.\n\n[lightgray]Nếu bạn muốn kết nối với ai đó bằng IP, bạn sẽ cần phải hỏi IP của họ, có thể được tìm thấy bằng cách tra google với từ khóa "my ip" trên thiết bị của họ. +hostserver = Mở máy chủ nhiều người chơi invitefriends = Mời bạn bè hostserver.mobile = Mở máy chủ host = Mở máy chủ hosting = [accent]Đang mở máy chủ... hosts.refresh = Làm mới -hosts.discovering = Đang tìm máy chủ trong mạng LAN -hosts.discovering.any = Đang tìm máy chủ -server.refreshing = Làm mới máy chủ -hosts.none = [lightgray]Không có máy chủ cục bộ nào được tìm thấy! +hosts.discovering = Đang khám phá trò chơi trong mạng LAN +hosts.discovering.any = Đang khám phá trò chơi +server.refreshing = Đang làm mới máy chủ +hosts.none = [lightgray]Không có trò chơi cục bộ nào được tìm thấy! host.invalid = [scarlet]Không thể kết nối đến máy chủ. servers.local = Máy chủ cục bộ -servers.local.steam = Màn chơi hiện có & Máy chủ cục bộ -servers.remote = Máy chủ tùy chỉnh -servers.global = Máy chủ từ cộng đồng +servers.local.steam = Trò chơi hiện có & Máy chủ cục bộ +servers.remote = Máy chủ từ xa +servers.global = Máy chủ cộng đồng + +servers.disclaimer = Các máy chỉ cộng đồng [accent]không[] được sở hữu và kiểm soát bởi nhà phát triển.\n\nMáy chủ có thể chứa nội dung do người dùng tạo và không phù hợp với mọi lứa tuổi. +servers.showhidden = Hiện máy chủ ẩn +server.shown = Đã hiện +server.hidden = Đã ẩn -servers.disclaimer = Nhà phát triển [accent]không[] sở hữu và kiểm soát máy chủ cộng đồng.\n\nMáy chủ có thể chứa nội dung do người dùng tạo và không phù hợp với mọi lứa tuổi. -servers.showhidden = Hiển thị Máy chủ Ẩn -server.shown = Hiện -server.hidden = Ẩn viewplayer = Đang xem người chơi: [accent]{0} - -trace = Tìm người chơi +trace = Truy vết người chơi trace.playername = Tên người chơi: [accent]{0} trace.ip = IP: [accent]{0} -trace.id = ID: [accent]{0} -trace.mobile = Mobile Client: [accent]{0} -trace.modclient = Client tùy chỉnh: [accent]{0} -trace.times.joined = Số lần tham gia: [accent]{0} +trace.id = Định danh (ID): [accent]{0} +trace.language = Ngôn ngữ: [accent]{0} +trace.mobile = Máy khách di động: [accent]{0} +trace.modclient = Máy khách tùy chỉnh: [accent]{0} +trace.times.joined = Số lần tham gia: [accent]{0} trace.times.kicked = Số lần bị buộc rời: [accent]{0} -invalidid = Client ID không hợp lệ! Vui lòng gửi báo cáo lỗi. +trace.ips = Các IP: +trace.names = Các tên: +invalidid = Định danh máy khách không hợp lệ! Vui lòng gửi báo cáo lỗi. + +player.ban = Cấm +player.kick = Buộc rời +player.trace = Truy vết +player.admin = Hoán đổi quản trị viên +player.team = Đổi đội + server.bans = Cấm -server.bans.none = Không có người chơi nào bị cấm! +server.bans.none = Không tìm thấy người chơi nào bị cấm! server.admins = Quản trị viên -server.admins.none = Không có quản trị viên nào được tìm thấy! +server.admins.none = Không tìm thấy quản trị viên nào! server.add = Thêm máy chủ server.delete = Bạn có chắc chắn muốn xóa máy chủ này không? server.edit = Chỉnh sửa máy chủ server.outdated = [scarlet]Máy chủ lỗi thời![] -server.outdated.client = [scarlet]Trò chơi lỗi thời![] +server.outdated.client = [scarlet]Máy khách lỗi thời![] server.version = [gray]v{0} {1} -server.custombuild = [accent]Phiên bản tùy chỉnh +server.custombuild = [accent]Bản dựng tùy chỉnh confirmban = Bạn có chắc chắn muốn cấm "{0}[white]"? -confirmkick = Bạn có chắc chắn muốn buộc "{0}[white]" rời? -confirmvotekick = Bạn có chắc chắn muốn bỏ phiếu buộc "{0}[white]" rời? +confirmkick = Bạn có chắc chắn muốn buộc "{0}[white]" rời đi? confirmunban = Bạn có chắc chắn muốn gỡ cấm người chơi này? confirmadmin = Bạn có chắc chắn muốn thêm "{0}[white]" làm quản trị viên? -confirmunadmin = Bạn có chắc chắn muốn xóa quyền quản trị viên của "{0}[white]" ? +confirmunadmin = Bạn có chắc chắn muốn xóa quyền quản trị viên của "{0}[white]"? +votekick.reason = Lý do bỏ phiếu buộc rời +votekick.reason.message = Bạn có chắc muốn bỏ phiếu buộc rời cho "{0}[white]"?\nNếu có, xin hãy nhập lý do: joingame.title = Tham gia trò chơi joingame.ip = Địa chỉ: -disconnect = Ngắt kết nối. +disconnect = Đã ngắt kết nối. disconnect.error = Lỗi kết nối. disconnect.closed = Kết nối đã bị đóng. disconnect.timeout = Hết thời gian chờ. @@ -289,14 +305,14 @@ reconnecting = [accent]Đang kết nối lại... connecting.data = [accent]Đang tải dữ liệu thế giới... server.port = Cổng: server.addressinuse = Địa chỉ đang được sử dụng! -server.invalidport = Cổng không hợp lệ! -server.error = [scarlet]Lỗi máy chủ. +server.invalidport = Số cổng không hợp lệ! +server.error = [scarlet]Lỗi tạo máy chủ. save.new = Bản lưu mới save.overwrite = Bạn có chắc muốn ghi đè\nbản lưu này? -save.nocampaign = Các tập tin đơn lẻ từ chiến dịch không thể được nhập. +save.nocampaign = Không thể nhập các tập tin đơn lẻ từ chiến dịch. overwrite = Ghi đè save.none = Không có bản lưu nào được tìm thấy! -savefail = Không thể lưu trò chơi này! +savefail = Không lưu được trò chơi! save.delete.confirm = Bạn có chắc chắn muốn xóa bản lưu này không? save.delete = Xóa save.export = Xuất bản lưu @@ -307,7 +323,7 @@ save.import = Nhập bản lưu save.newslot = Tên bản lưu: save.rename = Đổi tên save.rename.text = Tên mới: -selectslot = Hãy chọn một bản lưu. +selectslot = Chọn một bản lưu. slot = [accent]Vị trí {0} editmessage = Chỉnh sửa lời nhắn save.corrupted = Tệp bản lưu bị hỏng hoặc không hợp lệ! @@ -318,7 +334,7 @@ save.search = Tìm kiếm màn chơi đã lưu... save.autosave = Tự động lưu: {0} save.map = Bản đồ: {0} save.wave = Đợt {0} -save.mode = Chế độ: {0} +save.mode = Chế độ chơi: {0} save.date = Lưu lần cuối: {0} save.playtime = Thời gian chơi: {0} warning = Cảnh báo. @@ -326,36 +342,47 @@ confirm = Xác nhận delete = Xóa view.workshop = Xem trong Workshop workshop.listing = Chỉnh sửa danh sách Workshop -ok = OK +ok = Đồng ý open = Mở -customize = Luật tùy chỉnh +customize = Quy tắc tùy chỉnh cancel = Hủy command = Mệnh lệnh +command.queue = Lệnh tuần tự command.mine = Đào -command.repair = Sửa Chữa -command.rebuild = Xây Dựng -command.assist = Hỗ Trợ Người Chơi +command.repair = Sửa chữa +command.rebuild = Xây lại +command.assist = Hỗ trợ Người chơi command.move = Di Chuyển -command.boost = Tăng Cường -openlink = Mở link -copylink = Sao chép link +command.boost = Tăng cường +command.enterPayload = Nhập Khối hàng vào Công trình +command.loadUnits = Nhận Đơn vị +command.loadBlocks = Nhận Khối công trình +command.unloadPayload = Dỡ Khối hàng +stance.stop = Hủy Mệnh lệnh +stance.shoot = Tư thế: Bắn +stance.holdfire = Tư thế: Ngừng bắn +stance.pursuetarget = Tư thế: Bám đuổi Mục tiêu +stance.patrol = Tư thế: Đường tuần tra +stance.ram = Tư thế: Tông thẳng\n[lightgray]Đi theo đường thẳng, không tìm đường +openlink = Mở liên kết +copylink = Sao chép liên kết back = Quay lại max = Tối đa -objective = Nhiệm vụ -crash.export = Xuất Crash Logs -crash.none = Không có Crash Logs nào được tìm thấy. -crash.exported = Crash logs đã được xuất. +objective = Nhiệm vụ bản đồ +crash.export = Xuất Nhật ký sự cố +crash.none = Không có Nhật ký sự cố nào được tìm thấy. +crash.exported = Nhật ký sự cố đã được xuất. data.export = Xuất dữ liệu data.import = Nhập dữ liệu data.openfolder = Mở thư mục dữ liệu data.exported = Dữ liệu đã được xuất. data.invalid = Đây không phải dữ liệu trò chơi hợp lệ. -data.import.confirm = Nhập dữ liệu bên ngoài sẽ ghi đè[scarlet] tất cả[] dữ liệu trò chơi hiện tại.\n[accent]Điều này không thể hoàn tác![]\n\nSau khi dữ liệu được nhập, trò chơi của bạn sẽ thoát ngay lập tức. +data.import.confirm = Nhập dữ liệu bên ngoài sẽ ghi đè[scarlet] tất cả[] dữ liệu trò chơi hiện tại của bạn.\n[accent]Điều này không thể hoàn tác![]\n\nSau khi dữ liệu được nhập, trò chơi của bạn sẽ thoát ngay lập tức. quit.confirm = Bạn có chắc muốn thoát? loading = [accent]Đang tải... downloading = [accent]Đang tải xuống... saving = [accent]Đang lưu... -respawn = [accent][[{0}][] để hồi sinh tại căn cứ +respawn = [accent][[{0}][] để hồi sinh cancelbuilding = [accent][[{0}][] để hủy xây selectschematic = [accent][[{0}][] để chọn+sao chép pausebuilding = [accent][[{0}][] để tạm dừng xây dựng @@ -363,60 +390,66 @@ resumebuilding = [scarlet][[{0}][] để tiếp tục xây dựng enablebuilding = [scarlet][[{0}][] để bật xây dựng showui = Đã ẩn giao diện.\nNhấn [accent][[{0}][] để hiện lại giao diện. commandmode.name = [accent]Chế độ chỉ huy -commandmode.nounits = [no units] +commandmode.nounits = [không có đơn vị] wave = [accent]Đợt {0} wave.cap = [accent]Đợt {0}/{1} -wave.waiting = [lightgray]Kẻ địch xuất hiện sau {0} -wave.waveInProgress = [lightgray]Địch đang xuất hiện. -waiting = [lightgray]Chờ... -waiting.players = Đang chờ thêm người chơi... +wave.waiting = [lightgray]Đợt kế tiếp sau {0} +wave.waveInProgress = [lightgray]Đợt đang tấn công +waiting = [lightgray]Đang chờ... +waiting.players = Đang chờ người chơi... wave.enemies = [lightgray]{0} Kẻ địch còn lại -wave.enemycores = [accent]{0}[lightgray] Căn cứ địch -wave.enemycore = [accent]{0}[lightgray] Căn cứ địch +wave.enemycores = [accent]{0}[lightgray] Lõi kẻ địch +wave.enemycore = [accent]{0}[lightgray] Lõi kẻ địch wave.enemy = [lightgray]{0} Kẻ địch còn lại -wave.guardianwarn = Boss sẽ xuất hiện sau [accent]{0}[] đợt. -wave.guardianwarn.one = Boss sẽ xuất hiện sau [accent]{0}[] đợt. +wave.guardianwarn = Trùm sẽ xuất hiện sau [accent]{0}[] đợt. +wave.guardianwarn.one = Trùm sẽ xuất hiện sau [accent]{0}[] đợt. loadimage = Tải hình ảnh saveimage = Lưu hình ảnh unknown = Không xác định custom = Tùy chỉnh -builtin = Xây trong +builtin = Có sẵn map.delete.confirm = Bạn có chắc chắn muốn xóa bản đồ này không? Hành động này không thể hoàn tác! map.random = [accent]Bản đồ ngẫu nhiên -map.nospawn = Bản đồ này không có bất kỳ căn cứ nào để người chơi hồi sinh! Thêm một căn cứ [accent] cam[] vào bản đồ ở trình chỉnh sửa. -map.nospawn.pvp = Bản đồ này không có bất kỳ căn cứ kẻ thù nào để người chơi hồi sinh! Thêm một căn cứ khác màu [scarlet]cam [] vào bản đồ ở trình chỉnh sửa. -map.nospawn.attack = Bản đồ này không có bất kỳ căn cứ kẻ thù nào để người chơi tấn công! Thêm một căn cứ màu[scarlet] đỏ[] vào bản đồ ở trình chỉnh sửa. +map.nospawn = Bản đồ này không có bất kỳ lõi nào để người chơi hồi sinh! Thêm một lõi {0} vào bản đồ này ở trình chỉnh sửa. +map.nospawn.pvp = Bản đồ này không có bất kỳ lõi kẻ địch nào để người chơi hồi sinh! Thêm một lõi[scarlet] không phải màu cam[] vào bản đồ này ở trình chỉnh sửa. +map.nospawn.attack = Bản đồ này không có bất kỳ lõi kẻ địch nào để người chơi tấn công! Thêm một lõi {0} vào bản đồ này ở trình chỉnh sửa. map.invalid = Lỗi khi tải bản đồ: tệp bản đồ bị hỏng hoặc không hợp lệ. workshop.update = Cập nhật mục -workshop.error = Lỗi khi tìm nạp thông tin chi tiết ở workshop: {0} -map.publish.confirm = Bạn có chắc chắn muốn xuất bản bản đồ này không?\n\n[lightgray]Đảm bảo rằng bạn đồng ý với Workshop EULA trước, hoặc bản đồ của bạn sẽ không hiển thị! +workshop.error = Lỗi khi tìm lấy chi tiết ở workshop: {0} +map.publish.confirm = Bạn có chắc chắn muốn xuất bản bản đồ này không?\n\n[lightgray]Đảm bảo rằng bạn đồng ý với Thỏa thuận cấp phép người dùng cuối (EULA) của Workshop trước, hoặc bản đồ của bạn sẽ không hiển thị! workshop.menu = Chọn những gì bạn muốn làm với mục này. workshop.info = Thông tin mục -changelog = Danh sách các thay đổi (không bắt buộc): +changelog = Nhật ký thay đổi (tùy chọn): updatedesc = Ghi đè Tiêu đề & Mô tả -eula = Steam EULA +eula = Thỏa thuận cấp phép người dùng cuối (EULA) của Steam missing = Mục này đã bị xóa hoặc di chuyển.\n[lightgray]Danh sách workshop hiện đã được tự động hủy liên kết. publishing = [accent]Đang xuất bản... -publish.confirm = Bạn có chắc chắn muốn xuất bản không?\n\n[lightgray]Đảm bảo rằng bạn đồng ý với Workshop EULA trước, hoặc mục của bạn sẽ không hiển thị! -publish.error = Lỗi khi xuất bản: {0} +publish.confirm = Bạn có chắc chắn muốn xuất bản không?\n\n[lightgray]Đảm bảo rằng bạn đồng ý với Thỏa thuận cấp phép người dùng cuối (EULA) của Workshop trước, hoặc mục của bạn sẽ không hiển thị! +publish.error = Lỗi khi xuất bản mục: {0} steam.error = Không thể khởi chạy dịch vụ Steam.\nLỗi: {0} + editor.planet = Hành tinh: editor.sector = Khu vực: -editor.seed = Hạt giống: - +editor.seed = Mầm: editor.cliffs = Chuyển tường thành vách đá -editor.brush = Kích thước +editor.brush = Cỡ cọ editor.openin = Mở trong trình chỉnh sửa -editor.oregen = Cấu trúc quặng -editor.oregen.info = Cấu trúc quặng: +editor.oregen = Tạo quặng +editor.oregen.info = Tạo quặng: editor.mapinfo = Thông tin bản đồ editor.author = Tác giả: editor.description = Mô tả: editor.nodescription = Bản đồ phải có mô tả ít nhất 4 ký tự trước khi được xuất bản. -editor.waves = Lượt: -editor.rules = Luật: -editor.generation = Cấu trúc: -editor.objectives = Mục tiêu +editor.waves = Đợt +editor.rules = Quy tắc +editor.generation = Tạo ra +editor.objectives = Mục tiêu nhiệm vụ +editor.locales = Gói ngôn ngữ +editor.worldprocessors = Các bộ xử lý thế giới +editor.worldprocessors.editname = Sửa tên +editor.worldprocessors.none = [lightgray]không tìm thấy khối bộ xử lý thế giới nào!\nThêm một bộ trong trình chỉnh sửa bản đồ, hoặc dùng nút \ue813 Thêm ở dưới. +editor.worldprocessors.nospace = Không có không gian trống để đặt một bộ xử lý thế giới!\nCó phải bạn đã điền đầy bản đồ bằng các công trình? Tại sao bạn lại làm vậy? +editor.worldprocessors.delete.confirm = Bạn có muốn xóa bộ xử lý thế giới này?\n\nNếu nó được bao quanh bởi các vách tường, nó sẽ được thay thế bằng vách tường quanh đó. editor.ingame = Chỉnh sửa trong trò chơi editor.playtest = Chơi thử editor.publish.workshop = Xuất bản lên Workshop @@ -424,58 +457,61 @@ editor.newmap = Bản đồ mới editor.center = Trung tâm editor.search = Tìm kiếm bản đồ... editor.filters = Lọc bản đồ -editor.filters.mode = Chế độ: +editor.filters.mode = Chế độ chơi: editor.filters.type = Kiểu bản đồ: editor.filters.search = Tìm kiếm trong: editor.filters.author = Tác giả -editor.filters.description = Miêu tả +editor.filters.description = Mô tả editor.shiftx = Dịch theo X editor.shifty = Dịch theo Y workshop = Workshop waves.title = Đợt -waves.remove = Xóa +waves.remove = Loại bỏ waves.every = mỗi waves.waves = đợt -waves.health = health: {0}% +waves.health = độ bền: {0}% waves.perspawn = mỗi lần xuất hiện waves.shields = khiên/đợt waves.to = đến -waves.spawn = spawn: +waves.spawn = xuất hiện từ: waves.spawn.all = -waves.spawn.select = Spawn Select -waves.spawn.none = [scarlet]no spawns found in map -waves.max = Số lượng quân lính tối đa -waves.guardian = Boss +waves.spawn.select = Chọn điểm xuất hiện +waves.spawn.none = [scarlet]không tìm thấy điểm xuất hiện nào trên bản đồ +waves.max = đơn vị tối đa +waves.guardian = Trùm waves.preview = Xem trước waves.edit = Chỉnh sửa... -waves.random = Random -waves.copy = Sao chép vào bộ nhớ tạm -waves.load = Lấy từ bộ nhớ tạm -waves.invalid = Lượt không hợp lệ trong bộ nhớ tạm. -waves.copied = Đã sao chép lượt. -waves.none = Không có kẻ thù được xác định.\nLưu ý rằng bố cục mỗi đợt trống sẽ tự động được thay thế bằng bố cục mặc định. +waves.random = Ngẫu nhiên +waves.copy = Sao chép vào Bộ nhớ tạm +waves.load = Nạp từ Bộ nhớ tạm +waves.invalid = Đợt không hợp lệ trong bộ nhớ tạm. +waves.copied = Đã sao chép các đợt. +waves.none = Không có kẻ địch được xác định.\nLưu ý rằng bố cục mỗi đợt trống sẽ tự động được thay thế bằng bố cục mặc định. waves.sort = Sắp xếp theo waves.sort.reverse = Đảo ngược sắp xếp waves.sort.begin = Bắt đầu -waves.sort.health = Máu -waves.sort.type = Thể loại -waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.sort.health = Độ bền +waves.sort.type = Loại +waves.search = Tìm kiếm các đợt... +waves.filter = Bộ lọc đơn vị waves.units.hide = Ẩn tất cả waves.units.show = Hiện tất cả #these are intentionally in lower case wavemode.counts = số lượng wavemode.totals = tổng số -wavemode.health = máu +wavemode.health = độ bền editor.default = [lightgray] details = Chi tiết... -edit = Chỉnh sửa... -variables = Thông số +edit = Chỉnh sửa +variables = Biến số +logic.clear.confirm = Bạn có muốn xóa sạch tất cả mã khỏi bộ xử lý này? +logic.globals = Biến số sẵn có + editor.name = Tên: -editor.spawn = Thêm kẻ địch -editor.removeunit = Xóa kẻ địch +editor.spawn = Đơn vị xuất hiện +editor.removeunit = Loại bỏ đơn vị editor.teams = Đội editor.errorload = Lỗi khi tải tệp. editor.errorsave = Lỗi khi lưu tệp. @@ -484,6 +520,7 @@ editor.errorlegacy = Bản đồ này quá cũ, và sử dụng định dạng b editor.errornot = Đây không phải là tệp bản đồ. editor.errorheader = Tệp bản đồ này không hợp lệ hoặc bị hỏng. editor.errorname = Bản đồ không có tên được xác định. Bạn đang cố gắng tải một bản lưu? +editor.errorlocales = Lỗi khi đọc gói ngôn ngữ không hợp lệ. editor.update = Cập nhật editor.randomize = Ngẫu nhiên editor.moveup = Di chuyển lên @@ -493,8 +530,9 @@ editor.apply = Áp dụng editor.generate = Tạo ra editor.sectorgenerate = Tạo ra khu vực editor.resize = Thay đổi kích thước -editor.loadmap = Mở bản đồ +editor.loadmap = Nạp bản đồ editor.savemap = Lưu bản đồ +editor.savechanges = [scarlet]Bạn có thay đổi chưa lưu!\n\n[]Bạn có muốn lưu chúng không? editor.saved = Đã lưu! editor.save.noname = Bản đồ của bạn không có tên! Hãy đặt một cái tên trong 'Thông tin bản đồ'. editor.save.overwrite = Bản đồ của bạn ghi đè lên một bản đồ đã có sẵn! Hãy chọn một cái tên khác trong 'Thông tin bản đồ'. @@ -519,7 +557,7 @@ editor.mapname = Tên bản đồ: editor.overwrite = [accent]Cảnh báo!\nĐiều này có thể ghi đè lên một bản đồ hiện có. editor.overwrite.confirm = [scarlet]Cảnh báo![] Bản đồ có tên này đã tồn tại. Bạn có chắc chắn muốn ghi đè lên nó không?\n"[accent]{0}[]" editor.exists = Bản đồ có tên này đã tồn tại. -editor.selectmap = Chọn bản đồ cần mở: +editor.selectmap = Chọn bản đồ cần nạp: toolmode.replace = Thay thế toolmode.replace.description = Chỉ vẽ trên các khối rắn. @@ -531,46 +569,50 @@ toolmode.square = Vuông toolmode.square.description = Cọ vẽ vuông. toolmode.eraseores = Xóa quặng toolmode.eraseores.description = Chỉ xóa quặng. -toolmode.fillteams = Fill Teams -toolmode.fillteams.description = Fill teams instead of blocks. -toolmode.drawteams = Draw Teams -toolmode.drawteams.description = Draw teams instead of blocks. +toolmode.fillteams = Điền đội +toolmode.fillteams.description = Điền các đội thay cho các khối. +toolmode.fillerase = Điền xóa +toolmode.fillerase.description = Xóa các khối cùng kiểu. +toolmode.drawteams = Vẽ đội +toolmode.drawteams.description = Vẽ các đội thay vì các khối. +#unused toolmode.underliquid = Dưới chất lỏng -toolmode.underliquid.description = Vẽ nền dưới các ô chất lỏng +toolmode.underliquid.description = Vẽ nền dưới các ô chất lỏng. -filters.empty = [lightgray]Không có bộ lọc! Thêm một cái bằng nút bên dưới. +filters.empty = [lightgray]Không có bộ lọc! Thêm một bộ bằng nút bên dưới. filter.distort = Cong vẹo filter.noise = Nhiễu -filter.enemyspawn = Khu vực xuất hiện của kẻ thù -filter.spawnpath = Khu tạo ra -filter.corespawn = Chọn Căn cứ -filter.median = Trung bình -filter.oremedian = Quặng Trung bình +filter.enemyspawn = Chọn điểm xuất hiện của kẻ địch +filter.spawnpath = Đường đến điểm xuất hiện +filter.corespawn = Chọn lõi +filter.median = Trung vị +filter.oremedian = Quặng Trung vị filter.blend = Trộn filter.defaultores = Quặng mặc định filter.ore = Quặng filter.rivernoise = Nhiễu sông filter.mirror = Đối xứng filter.clear = Xóa -filter.option.ignore = Bỏ qua +filter.option.ignore = Phớt lờ filter.scatter = Phân tán filter.terrain = Địa hình +filter.logic = Logic -filter.option.scale = Kích thước -filter.option.chance = Tỷ lệ +filter.option.scale = Quy mô +filter.option.chance = Cơ hội filter.option.mag = Độ lớn filter.option.threshold = Ngưỡng -filter.option.circle-scale = Độ lớn vòng tròn -filter.option.octaves = Octaves -filter.option.falloff = Falloff +filter.option.circle-scale = Quy mô vòng tròn +filter.option.octaves = Bát độ +filter.option.falloff = Suy giảm filter.option.angle = Góc -filter.option.tilt = Tilt -filter.option.rotate = Quay +filter.option.tilt = Nghiêng +filter.option.rotate = Xoay filter.option.amount = Số lượng filter.option.block = Khối filter.option.floor = Nền -filter.option.flooronto = Nền thay thế +filter.option.flooronto = Nền đích filter.option.target = Mục tiêu filter.option.replacement = Thay thế filter.option.wall = Tường @@ -579,111 +621,139 @@ filter.option.floor2 = Nền phụ filter.option.threshold2 = Ngưỡng phụ filter.option.radius = Bán kính filter.option.percentile = Phần trăm +filter.option.code = Mã +filter.option.loop = Lặp + +locales.info = Tại đây, bạn có thể thêm gói ngôn ngữ cho ngôn ngữ cụ thể vào bản đồ của bạn. Trong gói ngôn ngữ, mỗi thuộc tính có tên và giá trị. Những thuộc tính này có thể được sử dụng bởi Bộ xử lý thế giới và Mục tiêu nhiệm vụ bằng tên của chúng. Chúng hỗ trợ định dạng văn bản (thay thế từ giữ chỗ bằng giá trị thực tế).\n\n[cyan]Ví dụ thuộc tính:\n[]tên: [accent]timer[]\ngiá trị: [accent]Bộ đếm thời gian ví dụ, thời gian còn lại: {0}[]\n\n[cyan]Cách dùng:\n[]Đặt làm văn bản cho Mục tiêu nhiệm vụ: [accent]@timer\n\n[]In nó trong Bộ xử lý thế giới:\n[accent]localeprint "timer"\nformat time\n[gray](với time là biến được tính toán riêng biệt) +locales.deletelocale = Bạn có chắc muốn xóa gói ngôn ngữ này? +locales.applytoall = Áp dụng thay đổi cho tất cả gói ngôn ngữ +locales.addtoother = Thêm vào các gói ngôn ngữ khác +locales.rollback = Khôi phục lại lần áp dụng cuối +locales.filter = Bộ lọc thuộc tính +locales.searchname = Tìm tên... +locales.searchvalue = Tìm giá trị... +locales.searchlocale = Tìm ngôn ngữ... +locales.byname = Theo tên +locales.byvalue = Theo giá trị +locales.showcorrect = Hiện thuộc tính có trong tất cả ngôn ngữ và có giá trị riêng biệt mỗi nơi +locales.showmissing = Hiện thuộc tính bị thiếu trong một số ngôn ngữ +locales.showsame = Hiện thuộc tính có giá trị giống nhau trong các ngôn ngữ khác nhau +locales.viewproperty = Xem trong tất cả ngôn ngữ +locales.viewing = Đang xem thuộc tính "{0}" +locales.addicon = Thêm biểu tượng width = Chiều rộng: height = Chiều cao: -menu = Menu +menu = Trình đơn play = Chơi campaign = Chiến dịch -load = Tải +load = Nạp save = Lưu fps = FPS: {0} ping = Ping: {0}ms tps = TPS: {0} -memory = Mem: {0}mb -memory2 = Mem:\n {0}mb +\n {1}mb +memory = Bộ nhớ: {0}mb +memory2 = Bộ nhớ:\n {0}mb +\n {1}mb language.restart = Khởi động lại trò chơi của bạn để cài đặt ngôn ngữ có hiệu lực. settings = Cài đặt tutorial = Hướng dẫn tutorial.retake = Thực hiện lại Hướng dẫn -editor = Chỉnh sửa +editor = Trình chỉnh sửa mapeditor = Trình chỉnh sửa bản đồ -abandon = Bỏ +abandon = Từ bỏ abandon.text = Khu vực này và tất cả tài nguyên của nó sẽ bị mất vào tay kẻ địch. locked = Đã khóa complete = [lightgray]Hoàn thành: requirement.wave = Đạt đến đợt {0} ở {1} -requirement.core = Phá hủy căn cứ địch ở {0} +requirement.core = Phá hủy lõi địch ở {0} requirement.research = Nghiên cứu {0} -requirement.produce = Sản lượng {0} +requirement.produce = Sản xuất {0} requirement.capture = Chiếm {0} -requirement.onplanet = Kiểm Soát Khu Vực {0} -requirement.onsector = Đáp Xuống Khu Vực: {0} +requirement.onplanet = Kiểm soát khu vực {0} +requirement.onsector = Đáp xuống khu vực: {0} launch.text = Phóng research.multiplayer = Chỉ máy chủ mới có thể nghiên cứu các mục. map.multiplayer = Chỉ máy chủ mới có thể xem các khu vực. uncover = Khám phá -configure = Tùy chỉnh vật phẩm +configure = Cấu hình vật phẩm khởi đầu + objective.research.name = Nghiên cứu objective.produce.name = Nhận objective.item.name = Nhận vật phẩm -objective.coreitem.name = Vật phẩm trong căn cứ +objective.coreitem.name = Vật phẩm trong lõi objective.buildcount.name = Xây công trình -objective.unitcount.name = Sản xuất quân lính -objective.destroyunits.name = Tiêu diệt kẻ địch +objective.unitcount.name = Sản xuất đơn vị +objective.destroyunits.name = Tiêu diệt đơn vị objective.timer.name = Hẹn giờ objective.destroyblock.name = Phá huỷ khối objective.destroyblocks.name = Phá huỷ khối -objective.destroycore.name = Phá huỷ căn cứ -objective.commandmode.name = Chế độ ra lệnh +objective.destroycore.name = Phá huỷ lõi +objective.commandmode.name = Chế độ mệnh lệnh objective.flag.name = Cờ + marker.shapetext.name = Hình dạng văn bản -marker.minimap.name = Bản đồ nhỏ +marker.point.name = Điểm marker.shape.name = Hình dạng marker.text.name = Văn bản +marker.line.name = Đường kẻ +marker.quad.name = Tứ giác +marker.texture.name = Kết cấu + marker.background = Nền marker.outline = Đường viền + objective.research = [accent]Nghiên cứu:\n[]{0}[lightgray]{1} objective.produce = [accent]Nhận:\n[]{0}[lightgray]{1} objective.destroyblock = [accent]Phá huỷ:\n[]{0}[lightgray]{1} objective.destroyblocks = [accent]Phá huỷ: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3} objective.item = [accent]Nhận: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.coreitem = [accent]Chuyển vào căn cứ:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} +objective.coreitem = [accent]Chuyển vào lõi:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} objective.build = [accent]Xây: [][lightgray]{0}[]x\n{1}[lightgray]{2} -objective.buildunit = [accent]Tạo quân lính: [][lightgray]{0}[]x\n{1}[lightgray]{2} -objective.destroyunits = [accent]Tiêu diệt: [][lightgray]{0}[]x Quân lính -objective.enemiesapproaching = [accent]Kẻ địch sẽ xuất hiện sau [lightgray]{0}[] -objective.enemyescelating = [accent]Kẻ địch sẽ bắt đầu sản xuất sau [lightgray]{0}[] -objective.enemyairunits = [accent]Kẻ địch sẽ bắt đầu tạo quân lính bay sau [lightgray]{0}[] -objective.destroycore = [accent]Phá huỷ căn cứ đối phương -objective.command = [accent]Ra lệnh -objective.nuclearlaunch = [accent]⚠ Phát hiện tên lửa hạt nhân sắp phóng: [lightgray]{0} -announce.nuclearstrike = [red]⚠ TÊN LỬA HẠT NHÂN SẮP VA CHẠM ⚠ +objective.buildunit = [accent]Tạo đơn vị: [][lightgray]{0}[]x\n{1}[lightgray]{2} +objective.destroyunits = [accent]Tiêu diệt: [][lightgray]{0}[]x Đơn vị +objective.enemiesapproaching = [accent]Kẻ địch đến sau [lightgray]{0}[] +objective.enemyescelating = [accent]Kẻ địch leo thang sản xuất sau [lightgray]{0}[] +objective.enemyairunits = [accent]Kẻ địch bắt đầu sản xuất đơn vị bay sau [lightgray]{0}[] +objective.destroycore = [accent]Phá huỷ lõi kẻ địch +objective.command = [accent]Mệnh lệnh đơn vị +objective.nuclearlaunch = [accent]⚠ Phát hiện việc phóng tên lửa hạt nhân: [lightgray]{0} -loadout = Vật phẩm +announce.nuclearstrike = [red]⚠ TÊN LỬA HẠT NHÂN SẮP VA CHẠM ⚠\nxây lõi dự phòng ngay + +loadout = Vật phẩm khởi đầu resources = Tài nguyên resources.max = Tối đa bannedblocks = Khối bị cấm -objectives = Mục tiêu -bannedunits = Quân lính bị cấm -rules.hidebannedblocks = Ẩn Các Khối Bị Cấm -bannedunits.whitelist = Chỉ cho phép dùng các quân lính bị cấm -bannedblocks.whitelist = Chỉ cho phép dùng các khối bị cấm +objectives = Mục tiêu nhiệm vụ +bannedunits = Đơn vị bị cấm +bannedunits.whitelist = Chỉ dùng các đơn vị bị cấm +bannedblocks.whitelist = Chỉ dùng các khối bị cấm addall = Thêm tất cả launch.from = Đang phóng từ: [accent]{0} -launch.capacity = Lượng vật phẩm tối đa có thể phóng: [accent]{0} +launch.capacity = Sức chứa vật phẩm khi phóng: [accent]{0} launch.destination = Đích đến: {0} configure.invalid = Số lượng phải là số trong khoảng 0 đến {0}. add = Thêm... -guardian = Boss +guardian = Trùm connectfail = [scarlet]Lỗi kết nối:\n\n[accent]{0} -error.unreachable = Không thể truy cập máy chủ.\nKiểm tra lại xem địa chỉ có đúng không? +error.unreachable = Không thể truy cập máy chủ.\nĐịa chỉ liệu có đúng không? error.invalidaddress = Địa chỉ không hợp lệ. -error.timedout = Hết thời gian chờ!\nĐảm bảo máy chủ đã thiết lập port forwarding, và địa chỉ đó là chính xác! -error.mismatch = Lỗi packet:\nphiên bản máy khách / máy chủ có thể không khớp.\nĐảm bảo bạn và máy chủ có phiên bản Mindustry mới nhất! -error.alreadyconnected = Đã kết nối. +error.timedout = Hết thời gian chờ!\nĐảm bảo máy chủ đã thiết lập điều hướng cổng, và địa chỉ đó là chính xác! +error.mismatch = Lỗi gói tin:\nphiên bản máy khách/máy chủ có thể không khớp.\nĐảm bảo bạn và máy chủ có phiên bản Mindustry mới nhất! +error.alreadyconnected = Đã kết nối rồi. error.mapnotfound = Không tìm thấy tệp bản đồ! -error.io = Lỗi Network I/O. +error.io = Lỗi mạng đầu vào/ra. error.any = Lỗi mạng không xác định. error.bloom = Không khởi tạo được hiệu ứng phát sáng.\nThiết bị của bạn có thể không hỗ trợ. weather.rain.name = Mưa -weather.snow.name = Tuyết +weather.snowing.name = Tuyết weather.sandstorm.name = Bão cát weather.sporestorm.name = Bão bào tử weather.fog.name = Sương mù + campaign.playtime = \uf129 [lightgray]Thời gian chơi trên khu vực: {0} campaign.complete = [accent]Chúc mừng.\n\nKẻ địch trên {0} đã bị đánh bại.\n[lightgray]Khu vực cuối cùng đã được chinh phục. @@ -700,8 +770,8 @@ sectors.wave = Đợt: sectors.stored = Lưu trữ: sectors.resume = Tiếp tục sectors.launch = Phóng -sectors.select = Lựa chọn -sectors.nonelaunch = [lightgray]trống (mặt trời) +sectors.select = Chọn +sectors.nonelaunch = [lightgray]không có (mặt trời) sectors.rename = Đổi tên khu vực sectors.enemybase = [scarlet]Căn cứ địch sectors.vulnerable = [scarlet]Dễ bị tổn thất @@ -710,17 +780,17 @@ sectors.underattack.nodamage = [scarlet]Chưa được chiếm sectors.survives = [accent]Vượt qua {0} đợt sectors.go = Đi sector.abandon = Rời bỏ -sector.abandon.confirm = Những căn cứ ở đây sẽ tự huỷ.\nTiếp tục chứ? +sector.abandon.confirm = Những lõi ở đây sẽ tự huỷ.\nTiếp tục chứ? sector.curcapture = Khu vực đã chiếm sector.curlost = Khu vực đã mất -sector.missingresources = [scarlet]Không đủ tài nguyên căn cứ +sector.missingresources = [scarlet]Không đủ tài nguyên lõi sector.attacked = Khu vực [accent]{0}[white] đang bị tấn công! sector.lost = Khu vực [accent]{0}[white] đã mất! -#note: the missing space in the line below is intentional -sector.captured = Khu vực [accent]{0}[white]đã chiếm! -sector.changeicon = Thay đổi icon -sector.noswitch.title = Không thể thay đổi sang khu vực khác -sector.noswitch = Bạn không thể đổi sang khu vực khác khi một khu vực đang bị tấn công.\n\nKhu vực: [accent]{0}[] ở [accent]{1}[] +sector.capture = Khu vực [accent]{0}[white] đã chiếm! +sector.capture.current = Khu vực đã chiếm! +sector.changeicon = Thay đổi biểu tượng +sector.noswitch.title = Không thể đổi khu vực +sector.noswitch = Bạn không thể đổi khu vực khi một khu vực đang bị tấn công.\n\nKhu vực: [accent]{0}[] ở [accent]{1}[] sector.view = Xem khu vực threat.low = Thấp @@ -754,24 +824,25 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress -sector.groundZero.description = Vị trí tối ưu để bắt đầu một lần nữa. Mối đe dọa của kẻ thù thấp nhưng ít tài nguyên.\nThu thập càng nhiều đồng và chì càng tốt.\nTiến lên. -sector.frozenForest.description = Dù ở gần núi cao, các bào tử vẫn bắt đầu phát tán. Nhiệt độ lạnh giá không thể giữ chúng lại mãi.\n\nBắt đầu tạo năng lượng. Hãy chế tạo máy phát điện đốt và học cách sử dụng Máy sửa chữa. -sector.saltFlats.description = Ở vùng rìa sa mạc chính là Salt Flats, có thể tìm thấy một ít tài nguyên ở khu vực này.\n\nKẻ thù đã dựng lên một khu phức hợp lưu trữ tài nguyên ở đây. Hãy loại bỏ hoàn toàn căn cứ này. -sector.craters.description = Nước đã tích tụ trong miệng núi lửa ở đây, vốn là dấu tích của các cuộc chiến tranh cũ. Hãy chiếm lại khu vực. Thu gom cát, metaglass . Bơm nước để làm mát súng và mũi khoan. -sector.ruinousShores.description = Vượt qua những địa hình mấp mô, là bờ biển. Vị trí này từng là nơi đặt một hệ thống phòng thủ ven biển. Không còn lại gì nhiều, chỉ những công trình phòng thủ cơ bản nhất vẫn không bị tổn thương, mọi thứ khác đều trở thành đống sắt vụn.\nTiếp tục mở rộng ra bên ngoài. Khám phá công nghệ có ở đây. -sector.stainedMountains.description = Xa hơn trong đất liền là những ngọn núi, chưa bị bào tử xâm lấn.\nKhai thác titan dồi dào trong khu vực này. Tìm hiểu làm thế nào để sử dụng nó.\n\nSự hiện diện của kẻ thù ở đây lớn hơn. Đừng cho họ thời gian để có quân lính mạnh nhất của họ. -sector.overgrowth.description = Khu vực này cây cối mọc um tùm, gần nguồn bào tử hơn.\nĐịch đã lập tiền đồn ở đây. Chế tạo Mace. Phá hủy căn cứu địch và đòi lại thứ đã mất. +sector.groundZero.description = Vị trí tối ưu để bắt đầu một lần nữa. Mối đe dọa của kẻ địch thấp. Ít tài nguyên.\nThu thập càng nhiều đồng và chì càng tốt.\nTiến lên. +sector.frozenForest.description = Dù ở đây, gần núi cao, các bào tử vẫn bắt đầu phát tán. Nhiệt độ lạnh giá không thể giữ chúng lại mãi.\n\nBắt đầu tạo năng lượng. Hãy xây dựng máy phát điện đốt. Học cách sử dụng máy sửa chữa. +sector.saltFlats.description = Ở vùng rìa sa mạc chính là Salt Flats. Có thể tìm thấy một ít tài nguyên ở khu vực này.\n\nKẻ địch đã dựng lên một khu phức hợp lưu trữ tài nguyên ở đây. Hãy loại bỏ hoàn toàn căn cứ này. +sector.craters.description = Nước đã tích tụ trong miệng núi lửa ở đây, vốn là dấu tích của các cuộc chiến tranh cũ. Hãy chiếm lại khu vực. Thu gom cát. Nung thủy tinh. Bơm nước để làm mát súng và mũi khoan. +sector.ruinousShores.description = Vượt qua những địa hình mấp mô, là bờ biển. Vị trí này từng là nơi đặt một hệ thống phòng thủ ven biển. Không còn lại gì nhiều, chỉ những công trình phòng thủ cơ bản nhất vẫn không bị tổn thương, mọi thứ khác đều trở thành đống sắt vụn.\nTiếp tục mở rộng ra bên ngoài. Khám phá lại công nghệ có ở đây. +sector.stainedMountains.description = Xa hơn trong đất liền là những ngọn núi, chưa bị bào tử xâm lấn.\nKhai thác titan dồi dào trong khu vực này. Tìm hiểu làm thế nào để sử dụng nó.\n\nSự hiện diện của kẻ địch ở đây lớn hơn. Đừng cho chúng thời gian để có đơn vị mạnh nhất của chúng. +sector.overgrowth.description = Khu vực này phát triển quá mức, gần nguồn bào tử hơn.\nĐịch đã lập tiền đồn ở đây. Chế tạo đơn vị Mace. Phá hủy nó. sector.tarFields.description = Vùng ngoại ô của khu sản xuất dầu, nằm giữa núi và sa mạc. Một trong số ít khu vực có trữ lượng dầu có thể sử dụng được.\nMặc dù bị bỏ hoang, khu vực này có một số lực lượng địch nguy hiểm gần đó. Đừng đánh giá thấp chúng.\n\n[lightgray]Nghiên cứu công nghệ chế biến dầu nếu có thể. -sector.desolateRift.description = Một vùng cực kỳ nguy hiểm. Tài nguyên dồi dào, nhưng ít không gian. Nguy cơ thất thủ cao. Hãy rời đi càng sớm càng tốt. Đừng để bị lừa bởi khoảng cách dài giữa các cuộc tấn công của kẻ thù. -sector.nuclearComplex.description = Một cơ sở trước đây để sản xuất và chế biến thorium, đã biến thành đống đổ nát.\n[lightgray]Nghiên cứu thorium và nhiều công dụng của nó.\n\nKẻ thù có mặt ở đây với số lượng rất lớn, liên tục lùng sục những kẻ tấn công. -sector.fungalPass.description = Khu vực chuyển tiếp giữa vùng núi cao và vùng đất thấp hơn, đầy bào tử. Một căn cứ trinh sát nhỏ của địch được đặt tại đây.\nPhá hủy nó.\nSử dụng quân lính Dagger và Crawler. Phá hủy hai căn cứ của địch. +sector.desolateRift.description = Một vùng cực kỳ nguy hiểm. Tài nguyên dồi dào, nhưng ít không gian. Nguy cơ thất thủ cao. Xây dựng phòng thủ trên không và mặt đất sớm nhất có thể. Đừng để bị lừa bởi khoảng cách dài giữa các cuộc tấn công của kẻ địch. +sector.nuclearComplex.description = Một cơ sở từng sản xuất và chế biến thori, đã biến thành đống đổ nát.\n[lightgray]Nghiên cứu thori và nhiều công dụng của nó.\n\nKẻ địch có mặt ở đây với số lượng rất lớn, liên tục lùng sục những kẻ tấn công. +sector.fungalPass.description = Khu vực chuyển tiếp giữa vùng núi cao và vùng đất thấp hơn, đầy bào tử. Một căn cứ trinh sát nhỏ của địch được đặt tại đây.\nPhá hủy nó.\nSử dụng đơn vị Dagger và Crawler. Phá hủy hai lõi của địch. sector.biomassFacility.description = Nguồn gốc của bào tử. Đây là cơ sở mà chúng được nghiên cứu và sản xuất ban đầu.\nNghiên cứu công nghệ có ở đây. Nuôi cấy bào tử để sản xuất nhiên liệu và chất dẻo.\n\n[lightgray]Khi cơ sở này sụp đổ, các bào tử đã được giải phóng. Không có gì trong hệ sinh thái địa phương có thể cạnh tranh với một dạng sống xâm lấn mạnh như vậy. -sector.windsweptIslands.description = Xa hơn đường bờ biển là chuỗi đảo xa xôi này. Hồ sơ cho thấy họ đã từng có công trình sản xuất [accent]Nhựa[] .\n\nChống lại các lực lượng hải quân của kẻ thù. Thiết lập căn cứ trên quần đảo. Nghiên cứu các nhà máy này. -sector.extractionOutpost.description = Một tiền đồn xa, được kẻ thù xây dựng với mục đích phóng nguồn lực sang các khu vực khác.\n\nCông nghệ vận tải qua lại giữa các khu vực rất cần thiết để mở rộng hơn nữa. Phá hủy căn cứ và nghiên cứu bệ phóng của họ. +sector.windsweptIslands.description = Xa hơn đường bờ biển là chuỗi đảo xa xôi này. Hồ sơ cho thấy họ đã từng có công trình sản xuất [accent]Nhựa[].\n\nChống lại các lực lượng hải quân của kẻ địch. Thiết lập căn cứ trên quần đảo. Nghiên cứu các nhà máy này. +sector.extractionOutpost.description = Một tiền đồn xa, được kẻ địch xây dựng với mục đích phóng nguồn lực sang các khu vực khác.\n\nCông nghệ vận chuyển qua lại giữa các khu vực rất cần thiết cho việc mở rộng chinh phục. Phá hủy căn cứ. Nghiên cứu bệ phóng của họ. sector.impact0078.description = Đây là tàn tích của tàu vận chuyển giữa các vì sao đã từng đến được hệ sao này.\n\nLấy càng nhiều càng tốt từ đống đổ nát. Nghiên cứu bất kỳ công nghệ nguyên vẹn nào. -sector.planetaryTerminal.description = Mục tiêu cuối cùng.\n\nCăn cứ ven biển này chứa một cấu trúc có khả năng phóng căn cứ tới các hành tinh lân cận. Nó được bảo vệ cực kỳ cẩn thận.\n\nSản xuất quân lính hải quân. Loại bỏ kẻ thù càng nhanh càng tốt. Nghiên cứu cấu trúc phóng. -sector.coastline.description = Phát hiện tàn dư công nghệ của các quân lính hải quân tại địa điểm này. Chặn các cuộc tấn công của kẻ địch, chiếm khu vực này, và lấy được công nghệ. -sector.navalFortress.description = Kẻ địch đã thiết lập một căn cứ điều kiển từ xa, trên đảo tự nhiên. Phá hủy tiền đồn này. Chiếm công nghệ chế tạo quân lính hải quân tiên tiến của địch và nghiên cứu nó. +sector.planetaryTerminal.description = Mục tiêu cuối cùng.\n\nCăn cứ ven biển này chứa một cấu trúc có khả năng phóng các lõi tới các hành tinh lân cận. Nó được bảo vệ cực kỳ cẩn thận.\n\nSản xuất đơn vị hải quân. Loại bỏ kẻ địch càng nhanh càng tốt. Nghiên cứu cấu trúc phóng. +sector.coastline.description = Phát hiện tàn dư công nghệ của các đơn vị hải quân tại địa điểm này. Đẩy lùi các cuộc tấn công của kẻ địch, chiếm khu vực này, và lấy công nghệ. +sector.navalFortress.description = Kẻ địch đã thiết lập một căn cứ từ xa, trên đảo tự nhiên. Phá hủy tiền đồn này. Chiếm công nghệ chế tạo đơn vị hải quân tiên tiến của địch và nghiên cứu nó. + sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -789,135 +860,133 @@ sector.siege.name = Siege sector.crossroads.name = Crossroads sector.karst.name = Karst sector.origin.name = Origin -sector.onset.description = Bắt đầu hành trình chinh phục Erekir. Thu thập nguồn lực, sản xuất quân lính, và bắt đầu nghiên cứu công nghệ. +sector.onset.description = Bắt đầu hành trình chinh phục Erekir. Thu thập tài nguyên, sản xuất đơn vị, và bắt đầu nghiên cứu công nghệ. sector.aegis.description = Khu vực này chứa các kho lưu trữ của tungsten.\nNghiên cứu [accent]Máy khoan động lực[] để khai thác tài nguyên này này, và phá hủy căn cứ của địch ở khu vực này. -sector.lake.description = Hồ xỉ nóng chảy của khu vực này giới hạn rất nhiều các loại quân lính. Một loại quân lính có thể bay được là sự lựa chọn duy nhất.\nNghiên cứu [accent]Máy chế tạo phi thuyền[] và sản xuất một quân lính [accent]elude[] nhanh nhất có thể. -sector.intersect.description = Các thông tin cho thấy khu vực này sẽ bị tấn công từ nhiều hướng ngay sau khi đáp.\nThiết lập các lớp phòng thủ nhanh chóng và mở rộng nhanh nhất có thể.\n[accent]Lính cơ động[] sẽ là sự lựa chọn tốt nhất cho địa hình khó khăn của khu vực này. -sector.atlas.description = Khu vực này có địa hình phong phú và sẽ cần một loạt các loại quân lính để tấn công hiệu quả.\nCác loại quân lính được nâng cấp cũng có thể cần thiết để vượt qua một số căn cứ của địch ở đây.\nNghiên cứu [accent]Máy điện phân[] và [accent]Máy chế tạo xe tăng[]. -sector.split.description = Sự hiện diện của kẻ địch ở khu vực này rất ít, nên nó là một khu vực tốt để thử nghiệm các công nghệ vận chuyển mới. -sector.basin.description = Sự hiện diện của kẻ địch ở khu vực này rất lớn.\nSản xuất quân lính nhanh chóng và chiếm được các căn cứ của địch để có được một vị trí ổn định. +sector.lake.description = Hồ xỉ nóng chảy của khu vực này giới hạn rất nhiều các loại đơn vị. Một loại đơn vị lướt được là sự lựa chọn duy nhất.\nNghiên cứu [accent]Máy chế tạo phi thuyền[] và sản xuất một đơn vị [accent]elude[] nhanh nhất có thể. +sector.intersect.description = Việc thăm dò cho thấy khu vực này sẽ bị tấn công từ nhiều hướng ngay sau khi đáp.\nThiết lập các lớp phòng thủ nhanh chóng và mở rộng sớm nhất có thể.\n[accent]Máy cơ động[] sẽ là cần thiết cho địa hình khó khăn của khu vực này. +sector.atlas.description = Khu vực này có địa hình phong phú và sẽ cần nhiều loại đơn vị đa dạng để tấn công hiệu quả.\nCác loại đơn vị được nâng cấp cũng có thể cần thiết để vượt qua một số căn cứ của địch được phát hiện ở đây.\nNghiên cứu [accent]Máy điện phân[] và [accent]Máy chế tạo xe tăng[]. +sector.split.description = Sự hiện diện ít ỏi của kẻ địch ở khu vực này làm nó là một khu vực hoàn hảo để thử nghiệm công nghệ vận chuyển mới. +sector.basin.description = Đã phát hiện sự hiện diện lớn mạnh của kẻ địch ở khu vực này.\nSản xuất đơn vị nhanh chóng và chiếm được các lõi của địch để có được một vị thế vững chắc. sector.marsh.description = Khu vực này có trữ lượng lớn arkycite, nhưng có rất ít các lỗ hơi nước.\nXây dựng [accent]Bể điện hóa[] để tạo năng lượng. -sector.peaks.description = Địa hình đồi núi của khu vực này khiến hầu hết các loại quân lính vô dụng. Cần phải có các loại phi thuyền.\nHãy cẩn thận với các công trình phòng thủ trên không của địch. Có thể bị vô hiệu hóa bằng cách tấn công các công trình hỗ trợ. -sector.ravine.description = Không có căn cứ nào của địch được phát hiện ở khu vực này, nhưng nó là một đường vận chuyển quan trọng cho địch. Có thể sẽ có rất nhiều quân lính của địch.\nSản xuất [accent]hợp kim[]. Xây dựng [accent]Afflict[]. - +sector.peaks.description = Địa hình đồi núi của khu vực này khiến hầu hết các loại đơn vị vô dụng. Các loại đơn vị bay trở nên cần thiết.\nHãy cẩn thận với các công trình phòng thủ trên không của địch. Có thể bị vô hiệu hóa bằng cách tấn công các công trình hỗ trợ. +sector.ravine.description = Một tuyến đường vận chuyển quan trọng cho kẻ địch. Không phát hiện lõi nào trong khu vực, nhưng dự đoán sẽ có nhiều loại kẻ địch đa dạng.\nSản xuất [accent]hợp kim[]. Xây dựng bệ súng [accent]Afflict[]. sector.caldera-erekir.description = Các tài nguyên được phát hiện ở khu vực này được phân bố trên nhiều đảo.\nNghiên cứu và triển khai vận chuyển dựa trên máy bay không người lái. -sector.stronghold.description = Các căn cứ của địch ở khu vực này đang bảo vệ một lượng lớn [accent]thorium[].\nSử dụng nó để phát triển các loại quân lính và công trình tốt hơn. +sector.stronghold.description = Các căn cứ của địch ở khu vực này đang bảo vệ một lượng lớn [accent]thori[].\nSử dụng nó để phát triển các loại đơn vị và bệ súng cao cấp hơn. +sector.crevice.description = Địch sẽ gửi các đơn vị tấn công mạnh mẽ để triệt hạ căn cứ của bạn ở khu vực này.\nPhát triển [accent]carbide[] và [accent]Máy nhiệt phân[] là điều cần thiết để sống sót. +sector.siege.description = Khu vực này có hai hẻm núi song song sẽ tạo ra một cuộc tấn công theo hai hướng.\nNghiên cứu [accent]cyano[] để có thể chế tạo những đơn vị xe tăng mạnh hơn.\nChú ý: Phát hiện tên lửa tầm xa của kẻ địch. Các tên lửa có thể bị bắn hạ trước khi va chạm. +sector.crossroads.description = Các căn cứ của địch ở khu vực này được xây dựng trên các địa hình khác nhau. Nghiên cứu các loại đơn vị khác nhau sao cho phù hợp.\nNgoài ra, một số căn cứ được bảo vệ bởi các máy chiếu khiên chắn. Tìm hiểu cách chúng được cung cấp năng lượng. +sector.karst.description = Khu vực này có rất nhiều tài nguyên, nhưng sẽ bị địch tấn công khi một lõi mới đáp xuống.\nTận dụng các tài nguyên và nghiên cứu [accent]sợi lượng tử[]. +sector.origin.description = Khu vực cuối cùng với sự hiện diện của địch rất lớn.\nKhông còn bất cứ thứ gì cần nghiên cứu - tập trung hoàn toàn vào việc tiêu diệt tất cả các lõi của địch. -sector.crevice.description = Địch sẽ gửi các quân lính tấn công mạnh mẽ để tiêu diệt căn cứ của bạn ở khu vực này.\nPhát triển [accent]carbide[] và [accent]Máy nhiệt phân[] là điều cần thiết để sống sót. -sector.siege.description = Khu vực này có hai hẻm núi song song với nhau, kẻ địch sẽ tấn công từ hai phía.\nNghiên cứu [accent]cyanogen[] để có thể chế tạo những xe tank mạnh hơn.\nChú ý: Phát hiện kẻ địch được trang bị tên lửa tầm xa. Các tên lửa có thể bị bắn hạ trước khi va chạm. -sector.crossroads.description = Các căn cứ của địch ở khu vực này được xây dựng trên các địa hình khác nhau. Nghiên cứu các loại quân lính khác nhau sao cho phù hợp.\nNgoài ra, một số căn cứ được bảo vệ bởi các máy chiếu khiên chắn. Tìm hiểu cách chúng được cung cấp năng lượng. -sector.karst.description = Khu vực này có rất nhiều tài nguyên, nhưng sẽ bị địch tấn công khi một căn cứ mới đáp.\nTận dụng các tài nguyên và nghiên cứu [accent]sợi lượng tử[]. -sector.origin.description = Khu vực cuối cùng với sự hiện diện của địch rất lớn.\nKhông còn bất cứ thứ gì cần nghiên cứu - tập trung hoàn toàn vào việc tiêu diệt tất cả các căn cứ của địch. - -status.burning.name = Cháy +status.burning.name = Đốt cháy status.freezing.name = Đóng băng -status.wet.name = Ẩm +status.wet.name = Ẩm ướt status.muddy.name = Sa lầy status.melting.name = Tan chảy status.sapped.name = Ăn mòn status.electrified.name = Nhiễm điện -status.spore-slowed.name = Nhiễm bào tử +status.spore-slowed.name = Nhiễm bào tử chậm status.tarred.name = Nhiễm dầu status.overdrive.name = Tăng cường status.overclock.name = Gia tốc status.shocked.name = Sốc status.blasted.name = Nổ status.unmoving.name = Bất động -status.boss.name = Boss +status.boss.name = Trùm settings.language = Ngôn ngữ settings.data = Dữ liệu trò chơi settings.reset = Khôi phục về mặc định -settings.rebind = Sửa +settings.rebind = Gán lại settings.resetKey = Đặt lại settings.controls = Điều khiển settings.game = Trò chơi settings.sound = Âm thanh settings.graphics = Đồ họa settings.cleardata = Xóa dữ liệu trò chơi... -settings.clear.confirm = Bạn có chắc chắn muốn xóa dữ liệu này không?\nHành động này không thể hoàn tác! -settings.clearall.confirm = [scarlet]CẢNH BÁO![]\nThao tác này sẽ xóa tất cả dữ liệu, bao gồm bản đồ và các cài đặt.\nSau khi bạn nhấn vào 'ok' trò chơi sẽ xóa tất cả dữ liệu và tự động thoát. +settings.clear.confirm = Bạn có chắc chắn muốn xóa dữ liệu này không?\nThực hiện xong không thể hoàn tác! +settings.clearall.confirm = [scarlet]CẢNH BÁO![]\nThao tác này sẽ xóa tất cả dữ liệu, bao gồm các bản lưu, bản đồ, mở khóa và phím đã gán. \nMột khi bạn nhấn vào 'Đồng ý' thì trò chơi sẽ xóa tất cả dữ liệu và tự động thoát. settings.clearsaves.confirm = Bạn có chắc muốn xóa tất cả bản lưu? settings.clearsaves = Xóa bản lưu -settings.clearresearch = Xóa dữ liệu nghiên cứu -settings.clearresearch.confirm = Bạn có chắc muốn xóa tất cả dữ liệu nghiên cứu từ Chiến dịch? -settings.clearcampaignsaves = Xóa dữ liệu Chiến dịch -settings.clearcampaignsaves.confirm = Bạn có chắc muốn xóa toàn bộ dữ liệu Chiến dịch? +settings.clearresearch = Xóa nghiên cứu +settings.clearresearch.confirm = Bạn có chắc muốn xóa tất cả nghiên cứu từ chiến dịch? +settings.clearcampaignsaves = Xóa bản lưu chiến dịch +settings.clearcampaignsaves.confirm = Bạn có chắc muốn xóa toàn bộ bản lưu chiến dịch? paused = [accent]< Tạm dừng > clear = Xóa -banned = [scarlet]Cấm -unsupported.environment = [scarlet]Môi trường không phù hợp -yes = Có +banned = [scarlet]Bị cấm +unsupported.environment = [scarlet]Môi trường không được hỗ trợ +yes = Có no = Không info.title = Thông tin error.title = [scarlet]Đã xảy ra lỗi error.crashtitle = Đã xảy ra lỗi -unit.nobuild = [scarlet]Quân lính/Công trình không thể xây dựng +unit.nobuild = [scarlet]Đơn vị không thể xây dựng lastaccessed = [lightgray]Truy cập lần cuối: {0} -lastcommanded = [lightgray]Được điều khiển lần cuối: {0} +lastcommanded = [lightgray]Được ra lệnh lần cuối: {0} block.unknown = [lightgray]??? -stat.showinmap = -stat.description = Mô tả +stat.showinmap = +stat.description = Mục đích stat.input = Đầu vào -stat.output = Sản phẩm +stat.output = Đầu ra stat.maxefficiency = Hiệu suất tối đa stat.booster = Tăng cường -stat.tiles = Yêu cầu khu vực +stat.tiles = Yêu cầu ô nền stat.affinities = Phù hợp -stat.opposites = Đối diện -stat.powercapacity = Dung lượng pin +stat.opposites = Đối nghịch +stat.powercapacity = Dung lượng điện stat.powershot = Năng lượng/Phát bắn stat.damage = Sát thương stat.targetsair = Mục tiêu trên không stat.targetsground = Mục tiêu mặt đất stat.itemsmoved = Tốc độ dịch chuyển -stat.launchtime = Thời gian giữa các lần phóng. +stat.launchtime = Thời gian giữa các lần phóng stat.shootrange = Phạm vi stat.size = Kích thước -stat.displaysize = Kích thước màn hình +stat.displaysize = Kích thước hiển thị stat.liquidcapacity = Dung tích chất lỏng stat.powerrange = Phạm vi năng lượng -stat.linkrange = Phạm vi kết nối -stat.instructions = Hướng dẫn +stat.linkrange = Phạm vi liên kết +stat.instructions = Chỉ lệnh stat.powerconnections = Số lượng kết nối tối đa stat.poweruse = Năng lượng sử dụng stat.powerdamage = Năng lượng/Sát thương stat.itemcapacity = Sức chứa vật phẩm stat.memorycapacity = Dung lượng bộ nhớ -stat.basepowergeneration = Năng lượng tạo ra (cơ bản) +stat.basepowergeneration = Năng lượng tạo ra cơ bản stat.productiontime = Thời gian sản xuất -stat.repairtime = Thời gian sửa +stat.repairtime = Thời gian hoàn thành sửa chữa stat.repairspeed = Tốc độ sửa stat.weapons = Vũ khí -stat.bullet = Đạn -stat.moduletier = Cấp Module -stat.unittype = Unit Type +stat.bullet = Loại đạn +stat.moduletier = Cấp mô-đun +stat.unittype = Kiểu đơn vị stat.speedincrease = Tăng tốc stat.range = Phạm vi stat.drilltier = Khoan được -stat.drillspeed = Tốc độ khoang cơ bản +stat.drillspeed = Tốc độ khoan cơ bản stat.boosteffect = Hiệu ứng tăng cường -stat.maxunits = Số quân lính hoạt động tối đa +stat.maxunits = Số đơn vị hoạt động tối đa stat.health = Độ bền stat.armor = Giáp stat.buildtime = Thời gian xây -stat.maxconsecutive = Đầu ra tối đa -stat.buildcost = Yêu cầu +stat.maxconsecutive = Nối tiếp tối đa +stat.buildcost = Chi phí xây stat.inaccuracy = Độ lệch stat.shots = Phát bắn -stat.reload = Phát bắn/Giây +stat.reload = Tốc độ bắn stat.ammo = Đạn stat.shieldhealth = Độ bền khiên -stat.cooldowntime = Thời gian chờ +stat.cooldowntime = Thời gian hồi phục stat.explosiveness = Gây nổ stat.basedeflectchance = Tỷ lệ phản đạn stat.lightningchance = Tỷ lệ phóng điện stat.lightningdamage = Sát thương tia điện stat.flammability = Dễ cháy stat.radioactivity = Phóng xạ -stat.charge = Phóng điện +stat.charge = Tích điện stat.heatcapacity = Nhiệt dung stat.viscosity = Độ nhớt stat.temperature = Nhiệt độ @@ -926,34 +995,68 @@ stat.buildspeed = Tốc độ xây stat.minespeed = Tốc độ đào stat.minetier = Cấp độ đào stat.payloadcapacity = Sức chứa khối hàng -stat.abilities = Khả năng -stat.canboost = Nâng cấp +stat.abilities = Khả năng +stat.canboost = Có thể tăng cường stat.flying = Bay stat.ammouse = Sử dụng đạn +stat.ammocapacity = Trữ lượng đạn stat.damagemultiplier = Hệ số sát thương stat.healthmultiplier = Hệ số độ bền stat.speedmultiplier = Hệ số tốc độ -stat.reloadmultiplier = Hệ số tốc độ tấn công +stat.reloadmultiplier = Hệ số hồi đạn stat.buildspeedmultiplier = Hệ số tốc độ xây dựng -stat.reactive = Phản ứng. +stat.reactive = Phản ứng stat.immunities = Miễn nhiễm -stat.healing = Sửa chữa +stat.healing = Hồi phục -ability.forcefield = Tạo khiên -ability.repairfield = Sửa chữa/Xây dựng -ability.statusfield = {0} Vùng gia tốc -ability.unitspawn = Sản xuất {0} -ability.shieldregenfield = Tạo khiên nhỏ -ability.movelightning = Phóng điện khi di chuyển -ability.shieldarc = Khiên Vòng Cung -ability.suppressionfield = Trường sửa chữa -ability.energyfield = Trường điện từ: [accent]{0}[] sát thương ~ [accent]{1}[] khối / [accent]{2}[] mục tiêu -bar.onlycoredeposit = Chỉ có thể đưa vào căn cứ +ability.forcefield = Khiên trường lực +ability.forcefield.description = Phát một khiên trường lực hấp thụ các loại đạn +ability.repairfield = Trường sửa chữa +ability.repairfield.description = Sửa chữa các đơn vị gần đó +ability.statusfield = Trường trạng thái +ability.statusfield.description = Áp dụng hiệu ứng trạng thái vào các đơn vị gần đó +ability.unitspawn = Chế tạo +ability.unitspawn.description = Sản xuất đơn vị +ability.shieldregenfield = Trường hồi khiên +ability.shieldregenfield.description = Hồi phục khiên cho các đơn vị gần đó +ability.movelightning = Di chuyển phóng điện +ability.movelightning.description = Giải phóng tia điện khi di chuyển +ability.armorplate = Mảnh giáp +ability.armorplate.description = Giảm sát thương gánh chịu trong khi bắn +ability.shieldarc = Khiên vòng cung +ability.shieldarc.description = Phát một khiên trường lực vòng cung hấp thụ các loại đạn +ability.suppressionfield = Ngăn chặn sửa chữa +ability.suppressionfield.description = Dừng các công trình sửa chữa gần đó +ability.energyfield = Trường điện từ +ability.energyfield.description = Giật điện các kẻ địch gần đó +ability.energyfield.healdescription = Giật điện các kẻ địch gần đó và hồi phục đồng minh +ability.regen = Tự hồi phục +ability.regen.description = Tự hồi phục độ bền theo thời gian +ability.liquidregen = Hấp thụ chất lỏng +ability.liquidregen.description = Hấp thụ chất lỏng để tự hồi phục +ability.spawndeath = Chết sản sinh +ability.spawndeath.description = Sinh ra đơn vị khi chết +ability.liquidexplode = Chết tràn dịch +ability.liquidexplode.description = Tràn chất lỏng khi chết +ability.stat.firingrate = tốc độ bắn [stat]{0}/giây[lightgray] +ability.stat.regen = [stat]{0}[lightgray] độ bền/giây +ability.stat.shield = [stat]{0}[lightgray] khiên +ability.stat.repairspeed = [stat]{0}/giây[lightgray] tốc độ sửa chữa +ability.stat.slurpheal = [stat]{0}[lightgray] độ bền/đơn vị chất lỏng +ability.stat.cooldown = [stat]{0} giây[lightgray] hồi phục +ability.stat.maxtargets = [stat]{0}[lightgray] mục tiêu tối đa +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] số lượng sửa chữa cùng kiểu +ability.stat.damagereduction = [stat]{0}%[lightgray] giảm sát thương +ability.stat.minspeed = tốc độ tối thiểu [stat]{0} ô/giây[lightgray] +ability.stat.duration = thời hạn [stat]{0} giây[lightgray] +ability.stat.buildtime = thời gian xây [stat]{0} giây[lightgray] + +bar.onlycoredeposit = Chỉ được phép đưa vào lõi bar.drilltierreq = Cần máy khoan tốt hơn bar.noresources = Thiếu tài nguyên -bar.corereq = Yêu cầu căn cứ -bar.corefloor = Cần vùng thích hợp xây căn cứ +bar.corereq = Yêu cầu lõi cơ bản +bar.corefloor = Yêu cầu ô nền lõi bar.cargounitcap = Đã đạt sức chứa khối hàng tối đa bar.drillspeed = Tốc độ khoan: {0}/giây bar.pumpspeed = Tốc độ bơm: {0}/giây @@ -968,48 +1071,49 @@ bar.items = Vật phẩm: {0} bar.capacity = Sức chứa: {0} bar.unitcap = {0} {1}/{2} bar.liquid = Chất lỏng -bar.heat = Nhiệt độ -bar.instability = Mức ổn định -bar.heatamount = Lượng nhiệt: {0} -bar.heatpercent = Lượng nhiệt: {0} ({1}%) +bar.heat = Nhiệt lượng +bar.instability = Bất ổn định +bar.heatamount = Nhiệt lượng: {0} +bar.heatpercent = Nhiệt lượng: {0} ({1}%) bar.power = Năng lượng -bar.progress = Đang xây dựng -bar.loadprogress = Tiến trình -bar.launchcooldown = Chờ phóng +bar.progress = Tiến độ xây dựng +bar.loadprogress = Tiến độ +bar.launchcooldown = Hồi phóng bar.input = Đầu vào -bar.output = Sản phẩm -bar.strength = [stat]{0}[lightgray]x Sức mạnh +bar.output = Đầu ra +bar.strength = [stat]{0}[lightgray]x sức mạnh units.processorcontrol = [lightgray]Điều khiển bởi bộ xử lý bullet.damage = [stat]{0}[lightgray] sát thương bullet.splashdamage = [stat]{0}[lightgray] sát thương diện rộng ~[stat] {1}[lightgray] ô -bullet.incendiary = [stat]cháy +bullet.incendiary = [stat]gây cháy bullet.homing = [stat]truy đuổi -bullet.armorpierce = [stat]Xuyên giáp -bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles -bullet.interval = [stat]{0}/sec[lightgray] interval bullets: -bullet.frags = [stat]phá mảnh -bullet.lightning = [stat]{0}[lightgray]x tia chớp ~ [stat]{1}[lightgray] sát thương -bullet.buildingdamage = [stat]{0}%[lightgray] sát thương khối -bullet.knockback = [stat]{0}[lightgray] bật lùi -bullet.pierce = [stat]{0}[lightgray]x xuyên mục tiêu +bullet.armorpierce = [stat]xuyên giáp +bullet.maxdamagefraction = [stat]{0}%[lightgray] giới hạn sát thương +bullet.suppression = [stat]{0}[lightgray] giây ngăn sửa chữa ~ [stat]{1}[lightgray] ô +bullet.interval = [stat]{0}/giây[lightgray] đạn ngắt quãng: +bullet.frags = [stat]{0}x[lightgray] đạn phá mảnh: +bullet.lightning = [stat]{0}[lightgray]x phóng điện ~ [stat]{1}[lightgray] sát thương +bullet.buildingdamage = [stat]{0}%[lightgray] sát thương công trình +bullet.knockback = [stat]{0}[lightgray] đẩy lùi +bullet.pierce = [stat]{0}[lightgray]x xuyên thấu bullet.infinitepierce = [stat]xuyên thấu -bullet.healpercent = [stat]{0}[lightgray]% sửa chữa -bullet.healamount = [stat]{0}[lightgray] Sửa chữa trực tiếp -bullet.multiplier = [stat]{0}[lightgray]x lượng đạn +bullet.healpercent = [stat]{0}%[lightgray] sửa chữa +bullet.healamount = [stat]{0}[lightgray] sửa chữa trực tiếp +bullet.multiplier = [stat]{0}[lightgray] đạn/vật phẩm bullet.reload = [stat]{0}%[lightgray] tốc độ bắn -bullet.range = [stat]{0}[lightgray] Phạm vi +bullet.range = [stat]{0}[lightgray] ô phạm vi -unit.blocks = Khối -unit.blockssquared = Khối² +unit.blocks = khối +unit.blockssquared = khối² unit.powersecond = đơn vị năng lượng/giây unit.tilessecond = ô/giây unit.liquidsecond = đơn vị chất lỏng/giây unit.itemssecond = vật phẩm/giây unit.liquidunits = đơn vị chất lỏng unit.powerunits = đơn vị năng lượng -unit.heatunits = Đơn vị nhiệt +unit.heatunits = đơn vị nhiệt unit.degrees = độ unit.seconds = giây unit.minutes = phút @@ -1019,21 +1123,22 @@ unit.timesspeed = x tốc độ unit.percent = % unit.shieldhealth = độ bền khiên unit.items = vật phẩm -unit.thousands = k -unit.millions = mil -unit.billions = b +unit.thousands = ng +unit.millions = tr +unit.billions = tỷ +unit.shots = phát bắn unit.pershot = /phát bắn -category.purpose = Mô tả +category.purpose = Mục đích category.general = Chung category.power = Năng lượng category.liquids = Chất lỏng category.items = Vật phẩm -category.crafting = Vào/Sản phẩm +category.crafting = Đầu vào/ra category.function = Chức năng -category.optional = Cải tiến -setting.skipcoreanimation.name = Bỏ qua hiệu ứng phóng/đáp căn cứ +category.optional = Cải tiến tùy chọn +setting.skipcoreanimation.name = Bỏ qua hiệu ứng phóng/đáp lõi setting.landscape.name = Khóa ngang -setting.shadows.name = Bóng đổ +setting.shadows.name = Đổ bóng setting.blockreplace.name = Tự động đề xuất khối setting.linear.name = Lọc tuyến tính setting.hints.name = Gợi ý @@ -1041,85 +1146,90 @@ setting.logichints.name = Gợi ý Logic setting.backgroundpause.name = Tạm dừng trong nền setting.buildautopause.name = Tự động dừng xây dựng setting.doubletapmine.name = Nhấn đúp để Đào -setting.commandmodehold.name = Nhấn giữ để vào chế độ khiển quân +setting.commandmodehold.name = Nhấn giữ để vào chế độ mệnh lệnh +setting.distinctcontrolgroups.name = Giới hạn một nhóm điều khiển cho mỗi đơn vị setting.modcrashdisable.name = Tắt các mod khi gặp sự cố trong khởi động -setting.animatedwater.name = Hiệu ứng nước -setting.animatedshields.name = Hiệu ứng khiên -setting.playerindicators.name = Hướng người chơi -setting.indicators.name = Hướng kẻ địch +setting.animatedwater.name = Chuyển động bề mặt +setting.animatedshields.name = Chuyển động khiên +setting.playerindicators.name = Chỉ hướng người chơi +setting.indicators.name = Chỉ hướng kẻ địch setting.autotarget.name = Tự động nhắm mục tiêu setting.keyboard.name = Điều khiển bằng chuột + bàn phím setting.touchscreen.name = Điều khiển bằng màn hình cảm ứng setting.fpscap.name = FPS tối đa -setting.fpscap.none = Không giới hạn +setting.fpscap.none = Không có setting.fpscap.text = {0} FPS -setting.uiscale.name = Kích thước giao diện -setting.uiscale.description = Trò chơi sẽ khởi động lại để áp dụng các thay đổi. -setting.swapdiagonal.name = Đặt luôn theo đường chéo +setting.uiscale.name = Tỉ lệ giao diện +setting.uiscale.description = Cần khởi động lại để áp dụng các thay đổi. +setting.swapdiagonal.name = Luôn đặt theo đường chéo setting.difficulty.training = Luyện tập setting.difficulty.easy = Dễ setting.difficulty.normal = Vừa setting.difficulty.hard = Khó -setting.difficulty.insane = Rất khó +setting.difficulty.insane = Điên loạn setting.difficulty.name = Độ khó: setting.screenshake.name = Rung chuyển khung hình -setting.bloomintensity.name = Mức độ vụ nổ -setting.bloomblur.name = Xoá mờ vụ nổ +setting.bloomintensity.name = Mức độ phát sáng +setting.bloomblur.name = Xoá mờ phát sáng setting.effects.name = Hiển thị hiệu ứng setting.destroyedblocks.name = Hiển thị khối bị phá setting.blockstatus.name = Hiển thị trạng thái khối -setting.conveyorpathfinding.name = Tìm đường dẫn băng chuyền +setting.conveyorpathfinding.name = Tìm đường dẫn băng chuyền khi đặt setting.sensitivity.name = Độ nhạy điều khiển setting.saveinterval.name = Khoảng thời gian lưu setting.seconds = {0} giây -setting.milliseconds = {0} mili giây +setting.milliseconds = {0} mili-giây setting.fullscreen.name = Toàn màn hình -setting.borderlesswindow.name = Không viền -setting.borderlesswindow.name.windows = Toàn màng hình (không viền) -setting.borderlesswindow.description = Trò chơi có thể sẽ khởi động lại để áp dụng các thay đổi -setting.fps.name = Hiển thị FPS & Ping -setting.console.name = Enable Console -setting.smoothcamera.name = Chế độ mượt mà -setting.vsync.name = VSync +setting.borderlesswindow.name = Cửa sổ không viền +setting.borderlesswindow.name.windows = Toàn màn hình không viền +setting.borderlesswindow.description = Có thể cần khởi động lại để áp dụng các thay đổi. +setting.fps.name = Hiện FPS & Ping +setting.console.name = Bật Bảng điều khiển +setting.smoothcamera.name = Khung quay mượt mà +setting.vsync.name = Đồng bộ dọc (VSync) setting.pixelate.name = Đồ họa pixel -setting.minimap.name = Hiển thị bản đồ mini -setting.coreitems.name = Hiển thị vật phẩm trong căn cứ -setting.position.name = Hiển thị vị trí người chơi +setting.minimap.name = Hiện bản đồ nhỏ +setting.coreitems.name = Hiển thị vật phẩm trong lõi +setting.position.name = Hiện vị trí người chơi setting.mouseposition.name = Hiện vị trí trỏ chuột setting.musicvol.name = Âm lượng nhạc -setting.atmosphere.name = Hiển thị bầu khí quyển hành tinh -setting.ambientvol.name = Âm lượng tổng +setting.atmosphere.name = Hiện bầu khí quyển hành tinh +setting.drawlight.name = Vẽ Bóng tối/Ánh sáng +setting.ambientvol.name = Âm lượng môi trường setting.mutemusic.name = Tắt nhạc -setting.sfxvol.name = Âm lượng SFX -setting.mutesound.name = Tắt tiếng -setting.crashreport.name = Gửi báo cáo sự cố -setting.savecreate.name = Tự động lưu -setting.publichost.name = Hiển thị trò chơi công khai +setting.sfxvol.name = Âm lượng hiệu ứng âm thanh (SFX) +setting.mutesound.name = Tắt âm +setting.crashreport.name = Gửi báo cáo sự cố ẩn danh +setting.savecreate.name = Tự động tạo bản lưu +setting.steampublichost.name = Hiển thị trò chơi công khai setting.playerlimit.name = Giới hạn người chơi setting.chatopacity.name = Độ mờ trò chuyện setting.lasersopacity.name = Độ mờ kết nối năng lượng setting.bridgeopacity.name = Độ mờ cầu setting.playerchat.name = Hiển thị bong bóng trò chuyện của người chơi -setting.showweather.name = Hiển thị đồ họa thời tiết +setting.showweather.name = Hiện đồ họa thời tiết setting.hidedisplays.name = Ẩn hiển thị logic -steam.friendsonly = Friends Only -steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. +setting.macnotch.name = Giao diện phù hợp với hiển thị tai thỏ (notch) +setting.macnotch.description = Cần khởi động lại để áp dụng các thay đổi +steam.friendsonly = Chỉ bạn bè +steam.friendsonly.tooltip = Liệu chỉ bạn bè trên Steam mới có thể tham gia trò chơi của bạn hay không.\nBỏ chọn ô này sẽ làm trò chơi của bạn công khai - mọi người có thể tham gia. public.beta = Lưu ý rằng phiên bản beta của trò chơi không thể tạo sảnh công khai. -uiscale.reset = Kích thước giao diện đã được thay đổi.\nNhấn "OK" để xác nhận.\n[scarlet]Hoàn lại và thoát trong[accent] {0}[] giây... +uiscale.reset = Tỉ lệ giao diện đã được thay đổi.\nNhấn "Đồng ý" để xác nhận tỉ lệ này.\n[scarlet]Hoàn lại và thoát trong[accent] {0}[] giây... uiscale.cancel = Hủy & Thoát setting.bloom.name = Hiệu ứng phát sáng -keybind.title = Sửa phím +keybind.title = Gán lại phím keybinds.mobile = [scarlet]Hầu hết phím ở đây không hoạt động trên thiết bị di động. Chỉ hỗ trợ di chuyển cơ bản. category.general.name = Chung category.view.name = Xem +category.command.name = Mệnh lệnh đơn vị category.multiplayer.name = Nhiều người chơi category.blocks.name = Chọn khối placement.blockselectkeys = \n[lightgray]Phím: [{0}, keybind.respawn.name = Hồi sinh -keybind.control.name = Điều khiển quân lính +keybind.control.name = Điều khiển đơn vị keybind.clear_building.name = Xóa công trình keybind.press = Nhấn một phím... -keybind.press.axis = Nhấn một tổ hợp phím hoặc một phím... +keybind.press.axis = Nhấn một trục xoay hoặc một phím... keybind.screenshot.name = Chụp ảnh bản đồ keybind.toggle_power_lines.name = Ẩn/Hiện đường truyền năng lượng keybind.toggle_block_status.name = Ẩn/Hiện trạng thái khối @@ -1128,10 +1238,31 @@ keybind.move_y.name = Di chuyển Y keybind.mouse_move.name = Theo chuột keybind.pan.name = Di chuyển góc nhìn keybind.boost.name = Tăng tốc -keybind.command_mode.name = Chế độ điều khiển quân -keybind.rebuild_select.name = Chọn khu vực xây dựng lại +keybind.command_mode.name = Chế độ mệnh lệnh +keybind.command_queue.name = Lệnh tuần tự đơn vị +keybind.create_control_group.name = Tạo nhóm điều khiển +keybind.cancel_orders.name = Hủy lệnh + +keybind.unit_stance_shoot.name = Tư thế đơn vị: Bắn +keybind.unit_stance_hold_fire.name = Tư thế đơn vị: Ngừng bắn +keybind.unit_stance_pursue_target.name = Tư thế đơn vị: Bám đuổi mục tiêu +keybind.unit_stance_patrol.name = Tư thế đơn vị: Tuần tra +keybind.unit_stance_ram.name = Tư thế đơn vị: Tông thẳng + +keybind.unit_command_move.name = Mệnh lệnh đơn vị: Di chuyển +keybind.unit_command_repair.name = Mệnh lệnh đơn vị: Sửa chữa +keybind.unit_command_rebuild.name = Mệnh lệnh đơn vị: Xây lại +keybind.unit_command_assist.name = Mệnh lệnh đơn vị: Hỗ trợ +keybind.unit_command_mine.name = Mệnh lệnh đơn vị: Khai thác +keybind.unit_command_boost.name = Mệnh lệnh đơn vị: Tăng cường +keybind.unit_command_load_units.name = Mệnh lệnh đơn vị: Nhập đơn vị +keybind.unit_command_load_blocks.name = Mệnh lệnh đơn vị: Nhập khối công trình +keybind.unit_command_unload_payload.name = Mệnh lệnh đơn vị: Dỡ khối hàng +keybind.unit_command_enter_payload.name = Mệnh lệnh đơn vị: Vào khối hàng + +keybind.rebuild_select.name = Xây dựng lại khu vực keybind.schematic_select.name = Chọn khu vực -keybind.schematic_menu.name = Menu bản thiết kế +keybind.schematic_menu.name = Trình đơn bản thiết kế keybind.schematic_flip_x.name = Lật bản thiết kế X keybind.schematic_flip_y.name = Lật bản thiết kế Y keybind.category_prev.name = Danh mục trước @@ -1140,32 +1271,32 @@ keybind.block_select_left.name = Chọn khối trái keybind.block_select_right.name = Chọn khối phải keybind.block_select_up.name = Chọn khối trên keybind.block_select_down.name = Chọn khối dưới -keybind.block_select_01.name = Danh mục/Khối 1 -keybind.block_select_02.name = Danh mục/Khối 2 -keybind.block_select_03.name = Danh mục/Khối 3 -keybind.block_select_04.name = Danh mục/Khối 4 -keybind.block_select_05.name = Danh mục/Khối 5 -keybind.block_select_06.name = Danh mục/Khối 6 -keybind.block_select_07.name = Danh mục/Khối 7 -keybind.block_select_08.name = Danh mục/Khối 8 -keybind.block_select_09.name = Danh mục/Khối 9 -keybind.block_select_10.name = Danh mục/Khối 10 -keybind.fullscreen.name = Chế độ toàn màn hình +keybind.block_select_01.name = Chọn Danh mục/Khối 1 +keybind.block_select_02.name = Chọn Danh mục/Khối 2 +keybind.block_select_03.name = Chọn Danh mục/Khối 3 +keybind.block_select_04.name = Chọn Danh mục/Khối 4 +keybind.block_select_05.name = Chọn Danh mục/Khối 5 +keybind.block_select_06.name = Chọn Danh mục/Khối 6 +keybind.block_select_07.name = Chọn Danh mục/Khối 7 +keybind.block_select_08.name = Chọn Danh mục/Khối 8 +keybind.block_select_09.name = Chọn Danh mục/Khối 9 +keybind.block_select_10.name = Chọn Danh mục/Khối 10 +keybind.fullscreen.name = Hoán chuyển toàn màn hình keybind.select.name = Chọn/Bắn keybind.diagonal_placement.name = Đặt chéo -keybind.pick.name = Chọn khối +keybind.pick.name = Nhặt khối keybind.break_block.name = Phá khối -keybind.select_all_units.name = Chọn tất cả quân lính -keybind.select_all_unit_factories.name = Chọn tất cả các nhà máy quân lính +keybind.select_all_units.name = Chọn tất cả đơn vị +keybind.select_all_unit_factories.name = Chọn tất cả các nhà máy đơn vị keybind.deselect.name = Bỏ chọn keybind.pickupCargo.name = Nhặt hàng keybind.dropCargo.name = Thả hàng keybind.shoot.name = Bắn keybind.zoom.name = Thu phóng -keybind.menu.name = Menu +keybind.menu.name = Trình đơn keybind.pause.name = Tạm dừng -keybind.pause_building.name = Tạm dừng/Tiếp tục Xây -keybind.minimap.name = Bản đồ mini +keybind.pause_building.name = Tạm dừng/Tiếp tục xây dựng +keybind.minimap.name = Bản đồ nhỏ keybind.planet_map.name = Bản đồ hành tinh keybind.research.name = Nghiên cứu keybind.block_info.name = Thông tin khối @@ -1173,94 +1304,107 @@ keybind.chat.name = Trò chuyện keybind.player_list.name = Danh sách người chơi keybind.console.name = Bảng điều khiển keybind.rotate.name = Xoay -keybind.rotateplaced.name = Xoay khối (Giữ) -keybind.toggle_menus.name = Ẩn/Hiện Menu +keybind.rotateplaced.name = Xoay khối đã có (Giữ) +keybind.toggle_menus.name = Ẩn/Hiện Trình đơn keybind.chat_history_prev.name = Lịch sử trò chuyện trước keybind.chat_history_next.name = Lịch sử trò chuyện sau keybind.chat_scroll.name = Cuộn trò chuyện keybind.chat_mode.name = Thay đổi chế độ trò chuyện -keybind.drop_unit.name = Thả quân -keybind.zoom_minimap.name = Thu phóng bản đồ mini +keybind.drop_unit.name = Thả đơn vị +keybind.zoom_minimap.name = Thu phóng bản đồ nhỏ mode.help.title = Mô tả chế độ mode.survival.name = Sinh tồn -mode.survival.description = Chế độ bình thường. Tài nguyên hạn chế và lượt đến tự động.\n[gray]Yêu cầu nơi xuất hiện kẻ địch trong bản đồ để chơi. +mode.survival.description = Chế độ bình thường. Tài nguyên hạn chế và các đợt đến tự động.\n[gray]Yêu cầu nơi xuất hiện kẻ địch trong bản đồ để chơi. mode.sandbox.name = Tự do mode.sandbox.description = Tài nguyên vô hạn và không có thời gian chờ giữa các đợt. mode.editor.name = Chỉnh sửa mode.pvp.name = PvP -mode.pvp.description = Chiến đấu với những người chơi khác trên cùng một bản đồ.\n[gray]Cần ít nhất hai căn cứ có màu khác nhau để chơi. +mode.pvp.description = Chiến đấu với những người chơi khác trên cùng một bản đồ.\n[gray]Cần ít nhất hai lõi có màu khác nhau để chơi. mode.attack.name = Tấn công -mode.attack.description = Phá hủy căn cứ của kẻ địch. \n[gray]Cần căn cứ màu đỏ trong bản đồ để chơi. -mode.custom = Tùy chỉnh luật +mode.attack.description = Phá hủy căn cứ của kẻ địch. \n[gray]Cần lõi màu đỏ trong bản đồ để chơi. +mode.custom = Tùy chỉnh quy tắc +rules.invaliddata = Dữ liệu bộ nhớ tạm không hợp lệ. +rules.hidebannedblocks = Ẩn các khối bị cấm rules.infiniteresources = Tài nguyên vô hạn -rules.onlydepositcore = Chỉ cho phép đưa tài nguyên vào căn cứ +rules.onlydepositcore = Chỉ cho phép đưa tài nguyên vào lõi +rules.derelictrepair = Cho phép sửa khối bỏ hoang rules.reactorexplosions = Nổ lò phản ứng -rules.coreincinerates = Hủy vật phẩm khi căn cứ đầy +rules.coreincinerates = Hủy vật phẩm khi lõi đầy rules.disableworldprocessors = Vô hiệu hoá bộ xử lý thế giới rules.schematic = Cho phép dùng bản thiết kế rules.wavetimer = Đếm ngược đợt rules.wavesending = Gửi đợt +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Đợt +rules.airUseSpawns = Các đơn vị không quân dùng điểm xuất hiện rules.attack = Chế độ tấn công -rules.rtsai = RTS AI +rules.buildai = AI Xây dựng căn cứ +rules.buildaitier = Cấp độ AI xây dựng +rules.rtsai = AI Chiến thuật [red](WIP - Đang hoàn thiện) rules.rtsminsquadsize = Kích thước đội hình tối thiểu rules.rtsmaxsquadsize = Kích thước đội hình tối đa rules.rtsminattackweight = Sức tấn công tối thiểu -rules.cleanupdeadteams = Xóa công trình của đội bị đánh bại (PvP) -rules.corecapture = Chiếm căn cứ khi phá hủy -rules.polygoncoreprotection = Bảo vệ lõi kiểu đa giác. +rules.cleanupdeadteams = Dọn sạch công trình của đội bị đánh bại (PvP) +rules.corecapture = Chiếm lõi khi phá hủy +rules.polygoncoreprotection = Bảo vệ lõi kiểu đa giác rules.placerangecheck = Kiểm tra phạm vi xây dựng -rules.enemyCheat = Tài nguyên vô hạn (kẻ địch) +rules.enemyCheat = Tài nguyên kẻ địch vô hạn rules.blockhealthmultiplier = Hệ số độ bền khối rules.blockdamagemultiplier = Hệ số sát thương của khối -rules.unitbuildspeedmultiplier = Hệ số tốc độ sản xuất lính -rules.unitcostmultiplier = Hệ số yêu cầu tài nguyên sản xuất quân lính -rules.unithealthmultiplier = Hệ số máu của quân lính -rules.unitdamagemultiplier = Hệ số sát thương của quân lính -rules.unitcrashdamagemultiplier = Hệ số sát thương của quân lính khi bị bắn rơi +rules.unitbuildspeedmultiplier = Hệ số tốc độ sản xuất đơn vị +rules.unitcostmultiplier = Hệ số chi phí sản xuất đơn vị +rules.unithealthmultiplier = Hệ số độ bền của đơn vị +rules.unitdamagemultiplier = Hệ số sát thương của đơn vị +rules.unitcrashdamagemultiplier = Hệ số sát thương của đơn vị khi bị bắn rơi rules.solarmultiplier = Hệ số năng lượng mặt trời -rules.unitcapvariable = Căn cứ tăng giới hạn quân lính -rules.unitcap = Giới hạn quân lính +rules.unitcapvariable = Lõi tăng giới hạn đơn vị +rules.unitpayloadsexplode = Khối hàng mang theo phát nổ cùng đơn vị +rules.unitcap = Giới hạn đơn vị ban đầu rules.limitarea = Giới hạn kích thước bản đồ -rules.enemycorebuildradius = Bán kính không xây dựng trong căn cứ của kẻ địch:[lightgray] (ô) -rules.wavespacing = Thời gian giữa các đợt:[lightgray] (giây) -rules.initialwavespacing = Thời gian giữa các đợt ban đầu:[lightgray] (sec) +rules.enemycorebuildradius = Bán kính không xây dựng từ lõi của kẻ địch:[lightgray] (ô) +rules.wavespacing = Giãn cách đợt:[lightgray] (giây) +rules.initialwavespacing = Giãn cách đợt đầu:[lightgray] (giây) rules.buildcostmultiplier = Hệ số chi phí xây dựng rules.buildspeedmultiplier = Hệ số tốc độ xây dựng -rules.deconstructrefundmultiplier = Hệ số số vật phẩm hoàn lại khi phá công trình +rules.deconstructrefundmultiplier = Hệ số số hoàn trả khi phá dỡ rules.waitForWaveToEnd = Đợt chờ hết kẻ địch -rules.wavelimit = Map Ends After Wave +rules.wavelimit = Bản đồ kết thúc sau đợt rules.dropzoneradius = Bán kính vùng thả:[lightgray] (ô) -rules.unitammo = Quân lính cần đạn -rules.enemyteam = Đội quân địch +rules.unitammo = Đơn vị cần đạn [red](có thể bị loại bỏ) +rules.enemyteam = Đội kẻ địch rules.playerteam = Đội người chơi rules.title.waves = Đợt rules.title.resourcesbuilding = Tài nguyên & Xây dựng rules.title.enemy = Kẻ địch -rules.title.unit = Quân lính +rules.title.unit = Đơn vị rules.title.experimental = Thử nghiệm rules.title.environment = Môi trường rules.title.teams = Đội rules.title.planet = Hành tinh rules.lighting = Ánh sáng -rules.fog = Hạn chế tầm nhìn +rules.fog = Sương mù chiến tranb rules.fire = Lửa -rules.anyenv = -rules.explosions = Sát thương nổ của Khối/Quân lính +rules.anyenv = +rules.explosions = Sát thương nổ của Khối/Đơn vị rules.ambientlight = Ánh sáng môi trường rules.weather = Thời tiết rules.weather.frequency = Tần suất: rules.weather.always = Luôn luôn rules.weather.duration = Thời gian: +rules.placerangecheck.info = Ngăn chặn người chơi khỏi việc đặt bất kỳ thứ gì gần công trình kẻ địch. Khi cố đặt một bệ súng, phạm vi sẽ bị tăng lên, để bệ súng không thể bắn tới kẻ địch. +rules.onlydepositcore.info = Ngăn chặn các đơn vị khỏi việc thả vật phẩm vào bất kỳ công trình nào ngoài lõi. + content.item.name = Vật phẩm content.liquid.name = Chất lỏng -content.unit.name = Quân lính +content.unit.name = Đơn vị content.block.name = Khối -content.status.name = Trạng thái hiệu ứng +content.status.name = Hiệu ứng trạng thái content.sector.name = Khu vực content.team.name = Phe + wallore = (Tường) item.copper.name = Đồng @@ -1268,7 +1412,7 @@ item.lead.name = Chì item.coal.name = Than item.graphite.name = Than chì item.titanium.name = Titan -item.thorium.name = Thorium +item.thorium.name = Thori item.silicon.name = Silicon item.plastanium.name = Nhựa item.phase-fabric.name = Sợi lượng tử @@ -1280,23 +1424,23 @@ item.pyratite.name = Nhiệt thạch item.metaglass.name = Thuỷ tinh item.scrap.name = Phế liệu item.fissile-matter.name = Vật liệu phóng xạ -item.beryllium.name = Beryllium +item.beryllium.name = Beryli item.tungsten.name = Tungsten -item.oxide.name = Oxide +item.oxide.name = Ôxit item.carbide.name = Carbide -item.dormant-cyst.name = Tế bào siêu tân sinh +item.dormant-cyst.name = U nang bất hoạt liquid.water.name = Nước liquid.slag.name = Xỉ nóng chảy liquid.oil.name = Dầu liquid.cryofluid.name = Chất làm lạnh -liquid.neoplasm.name = Neoplasm +liquid.neoplasm.name = Tế bào tân sinh liquid.arkycite.name = Arkycite -liquid.gallium.name = Thuỷ Ngân -liquid.ozone.name = Ozone -liquid.hydrogen.name = Hydrogen -liquid.nitrogen.name = Nitrogen -liquid.cyanogen.name = Cyanogen +liquid.gallium.name = Gali +liquid.ozone.name = Ôzôn +liquid.hydrogen.name = Hydro +liquid.nitrogen.name = Nitro +liquid.cyanogen.name = Cyano unit.dagger.name = Dagger unit.mace.name = Mace @@ -1336,6 +1480,7 @@ unit.scepter.name = Scepter unit.reign.name = Reign unit.vela.name = Vela unit.corvus.name = Corvus + unit.stell.name = Stell unit.locus.name = Locus unit.precept.name = Precept @@ -1354,15 +1499,15 @@ unit.disrupt.name = Disrupt unit.evoke.name = Evoke unit.incite.name = Incite unit.emanate.name = Emanate -unit.manifold.name = Manifold -unit.assembly-drone.name = Assembly Drone +unit.manifold.name = Thiết bị bay vận chuyển +unit.assembly-drone.name = Thiết bị bay lắp ráp unit.latum.name = Latum unit.renale.name = Renale block.parallax.name = Parallax block.cliff.name = Vách đá -block.sand-boulder.name = Tường cát -block.basalt-boulder.name = Tường đá basalt +block.sand-boulder.name = Tảng cát +block.basalt-boulder.name = Tảng đá huyền nhũ block.grass.name = Cỏ block.molten-slag.name = Xỉ nóng chảy block.pooled-cryofluid.name = Chất làm lạnh @@ -1375,7 +1520,7 @@ block.sand-wall.name = Tường cát block.spore-pine.name = Cây thông bào tử block.spore-wall.name = Tường bào tử block.boulder.name = Tảng đá -block.snow-boulder.name = Tảng băng +block.snow-boulder.name = Tảng tuyết block.snow-pine.name = Cây thông tuyết block.shale.name = Đá phiến sét block.shale-boulder.name = Tảng đá phiến sét @@ -1387,19 +1532,19 @@ block.scrap-wall.name = Tường phế liệu block.scrap-wall-large.name = Tường phế liệu lớn block.scrap-wall-huge.name = Tường phế liệu khổng lồ block.scrap-wall-gigantic.name = Tường phế liệu siêu khổng lồ -block.thruster.name = Thruster +block.thruster.name = Máy đẩy block.kiln.name = Lò nung block.graphite-press.name = Máy nén than chì block.multi-press.name = Máy nén than chì lớn block.constructing = {0} [lightgray](Đang xây dựng) -block.spawn.name = Khu vực tạo ra kẻ địch -block.core-shard.name = Căn cứ: Cơ sở -block.core-foundation.name = Căn cứ: Trụ sở -block.core-nucleus.name = Căn cứ: Trung tâm +block.spawn.name = Điểm tạo ra kẻ địch +block.core-shard.name = Lõi: Cơ sở +block.core-foundation.name = Lõi: Trụ sở +block.core-nucleus.name = Lõi: Trung tâm block.deep-water.name = Nước sâu block.shallow-water.name = Nước -block.tainted-water.name = Nước nhiểm bẩn -block.deep-tainted-water.name = Nước nhiểm bẩn sâu +block.tainted-water.name = Nước nhiễm bẩn +block.deep-tainted-water.name = Nước nhiễm bẩn sâu block.darksand-tainted-water.name = Nước nhiễm bẩn cát đen block.tar.name = Dầu block.stone.name = Đá @@ -1407,10 +1552,10 @@ block.sand-floor.name = Cát block.darksand.name = Cát đen block.ice.name = Băng block.snow.name = Tuyết -block.crater-stone.name = Miệng núi lửa +block.crater-stone.name = Đá miệng núi lửa block.sand-water.name = Nước cát block.darksand-water.name = Nước cát đen -block.char.name = Char +block.char.name = Than block.dacite.name = Đá Dacit block.rhyolite.name = Đá Ryolit block.dacite-wall.name = Tường Dacit @@ -1419,7 +1564,7 @@ block.ice-snow.name = Băng tuyết block.stone-wall.name = Tường đá block.ice-wall.name = Tường băng block.snow-wall.name = Tường tuyết -block.dune-wall.name = Dune Wall +block.dune-wall.name = Tường cồn cát block.pine.name = Cây thông block.dirt.name = Đất block.dirt-wall.name = Tường đất @@ -1432,7 +1577,7 @@ block.metal-floor-2.name = Nền kim loại 2 block.metal-floor-3.name = Nền kim loại 3 block.metal-floor-4.name = Nền kim loại 4 block.metal-floor-5.name = Nền kim loại 5 -block.metal-floor-damaged.name = Nền kim loại hư hỏng +block.metal-floor-damaged.name = Nền kim loại bị hỏng block.dark-panel-1.name = Nền tối 1 block.dark-panel-2.name = Nền tối 2 block.dark-panel-3.name = Nền tối 3 @@ -1451,8 +1596,8 @@ block.plastanium-wall.name = Tường Nhựa block.plastanium-wall-large.name = Tường Nhựa lớn block.phase-wall.name = Tường lượng tử block.phase-wall-large.name = Tường lượng tử lớn -block.thorium-wall.name = Tường Thorium -block.thorium-wall-large.name = Tường Thorium lớn +block.thorium-wall.name = Tường Thori +block.thorium-wall-large.name = Tường Thori lớn block.door.name = Cửa block.door-large.name = Cửa lớn block.duo.name = Duo @@ -1472,22 +1617,23 @@ block.inverted-sorter.name = Bộ lọc ngược block.message.name = Thông điệp block.reinforced-message.name = Thông điệp [Gia cố] block.world-message.name = Thông điệp thế giới +block.world-switch.name = Công tắc thế giới block.illuminator.name = Đèn block.overflow-gate.name = Cổng tràn block.underflow-gate.name = Cổng tràn ngược block.silicon-smelter.name = Máy nấu silicon block.phase-weaver.name = Máy dệt lượng tử block.pulverizer.name = Máy nghiền -block.cryofluid-mixer.name = Máy sản xuất chất làm lạnh +block.cryofluid-mixer.name = Máy trộn chất làm lạnh block.melter.name = Lò nung chảy -block.incinerator.name = Máy phân hủy +block.incinerator.name = Máy thiêu hủy block.spore-press.name = Máy nén bào tử block.separator.name = Máy phân tách -block.coal-centrifuge.name = Máy tạo than +block.coal-centrifuge.name = Máy ly tâm than block.power-node.name = Chốt điện block.power-node-large.name = Chốt điện lớn -block.surge-tower.name = Tháp điện -block.diode.name = Diode pin +block.surge-tower.name = Tháp điện hợp kim +block.diode.name = Chuyển dòng pin block.battery.name = Pin block.battery-large.name = Pin lớn block.combustion-generator.name = Máy phát điện đốt cháy @@ -1498,7 +1644,7 @@ block.mechanical-drill.name = Máy khoan cơ khí block.pneumatic-drill.name = Máy khoan khí nén block.laser-drill.name = Máy khoan laser block.water-extractor.name = Máy khoan nước -block.cultivator.name = Máy nuôi cấy bào tử +block.cultivator.name = Máy nuôi cấy block.conduit.name = Ống dẫn block.mechanical-pump.name = Bơm cơ khí block.item-source.name = Nguồn vật phẩm @@ -1508,157 +1654,159 @@ block.liquid-void.name = Hủy chất lỏng block.power-void.name = Hủy năng lượng block.power-source.name = Nguồn năng lượng block.unloader.name = Điểm dỡ hàng -block.vault.name = Nhà kho +block.vault.name = Kho chứa block.wave.name = Wave block.tsunami.name = Tsunami block.swarmer.name = Swarmer block.salvo.name = Salvo block.ripple.name = Ripple block.phase-conveyor.name = Băng chuyền lượng tử -block.bridge-conveyor.name = Cầu dẫn -block.plastanium-compressor.name = Máy sản xuất nhựa +block.bridge-conveyor.name = Cầu dẫn băng chuyền +block.plastanium-compressor.name = Máy nén nhựa block.pyratite-mixer.name = Máy trộn nhiệt thạch block.blast-mixer.name = Máy trộn chất nổ -block.solar-panel.name = Pin mặt trời -block.solar-panel-large.name = Pin mặt trời lớn +block.solar-panel.name = Tấm pin mặt trời +block.solar-panel-large.name = Tấm pin mặt trời lớn block.oil-extractor.name = Máy khoan dầu block.repair-point.name = Điểm sửa chữa block.repair-turret.name = Súng sữa chữa -block.pulse-conduit.name = Ống dẫn titan +block.pulse-conduit.name = Ống dẫn xung mạch block.plated-conduit.name = Ống dẫn bọc giáp block.phase-conduit.name = Ống dẫn lượng tử block.liquid-router.name = Bộ phân phát chất lỏng -block.liquid-tank.name = Thùng chất lỏng -block.liquid-container.name = Bình chất lỏng +block.liquid-tank.name = Bể chứa chất lỏng +block.liquid-container.name = Thùng chứa chất lỏng block.liquid-junction.name = Giao điểm chất lỏng -block.bridge-conduit.name = Cầu dẫn chất lỏng -block.rotary-pump.name = Bơm điện -block.thorium-reactor.name = Lò phản ứng Thorium +block.bridge-conduit.name = Cầu ống dẫn +block.rotary-pump.name = Bơm xoáy +block.thorium-reactor.name = Lò phản ứng Thori block.mass-driver.name = Máy phóng điện từ -block.blast-drill.name = Máy khoan thủy lực -block.impulse-pump.name = Bơm nhiệt +block.blast-drill.name = Máy khoan khí nổ +block.impulse-pump.name = Bơm xung lực block.thermal-generator.name = Máy phát nhiệt điện block.surge-smelter.name = Lò luyện hợp kim block.mender.name = Máy sửa chữa -block.mend-projector.name = Máy sửa lớn +block.mend-projector.name = Máy sửa chữa lớn block.surge-wall.name = Tường hợp kim block.surge-wall-large.name = Tường hợp kim lớn block.cyclone.name = Cyclone block.fuse.name = Fuse block.shock-mine.name = Mìn gây sốc -block.overdrive-projector.name = Máy tăng tốc -block.force-projector.name = Máy chiếu trường lực (Khiên) +block.overdrive-projector.name = Máy chiếu tăng tốc +block.force-projector.name = Máy chiếu trường lực block.arc.name = Arc -block.rtg-generator.name = Máy phát điện RTG +block.rtg-generator.name = Máy phát diện đồng vị phóng xạ block.spectre.name = Spectre block.meltdown.name = Meltdown block.foreshadow.name = Foreshadow -block.container.name = Container +block.container.name = Thùng chứa block.launch-pad.name = Bệ phóng block.segment.name = Segment block.ground-factory.name = Nhà máy Bộ binh block.air-factory.name = Nhà máy Không quân -block.naval-factory.name = Nhà máy Hải quân -block.additive-reconstructor.name = Máy nâng cấp quân lính cấp 2 -block.multiplicative-reconstructor.name = Máy nâng cấp quân lính cấp 3 -block.exponential-reconstructor.name = Máy nâng cấp quân lính cấp 4 -block.tetrative-reconstructor.name = Máy nâng cấp quân lính cấp 5 +block.naval-factory.name = Nhà máy Hải quân +block.additive-reconstructor.name = Máy tái thiết cấp cộng +block.multiplicative-reconstructor.name = Máy tái thiết cấp nhân +block.exponential-reconstructor.name = Máy tái thiết cấp mũ +block.tetrative-reconstructor.name = Máy tái thiết cấp lũy thừa lặp block.payload-conveyor.name = Băng chuyền khối hàng -block.payload-router.name = Bộ định tuyến khối hàng +block.payload-router.name = Bộ phân phát khối hàng block.duct.name = Ống chân không block.duct-router.name = Bộ phân phát chân không block.duct-bridge.name = Cầu dẫn chân không block.large-payload-mass-driver.name = Máy phóng từ trường lớn block.payload-void.name = Huỷ khối hàng block.payload-source.name = Nguồn khối hàng -block.disassembler.name = Máy phân tách lớn +block.disassembler.name = Máy phân rã block.silicon-crucible.name = Máy nấu Silicon lớn -block.overdrive-dome.name = Máy tăng tốc lớn +block.overdrive-dome.name = Máy chiếu tăng tốc lớn block.interplanetary-accelerator.name = Máy gia tốc liên hành tinh block.constructor.name = Máy chế tạo block.constructor.description = Chế tạo các khối có kích thước 2x2 ô. block.large-constructor.name = Máy chế tạo lớn block.large-constructor.description = Chế tạo các khối có kích thước lên đến 4x4 ô. -block.deconstructor.name = Máy tháo dỡ -block.deconstructor.description = Tháo dỡ khối và quân lính, trả lại 100% nguyên liệu. +block.deconstructor.name = Máy tháo dỡ lớn +block.deconstructor.description = Tháo dỡ khối và đơn vị, trả lại 100% nguyên liệu. block.payload-loader.name = Máy nạp vật phẩm block.payload-loader.description = Nạp chất lỏng và vật phẩm vào khối. block.payload-unloader.name = Máy dỡ vật phẩm block.payload-unloader.description = Lấy chất lỏng và vật phẩm từ khối. block.heat-source.name = Nguồn nhiệt -block.heat-source.description = Khối này cho bạn vô hạn nhiệt. +block.heat-source.description = Xuất ra lượng nhiệt lớn. Chỉ chế độ Tự do. + +#Erekir block.empty.name = Trống -block.rhyolite-crater.name = Miệng Núi Lửa Rhyolit -block.rough-rhyolite.name = Rhyolite Thô -block.regolith.name = Lớp Đất Mặt -block.yellow-stone.name = Đá Vàng +block.rhyolite-crater.name = Miệng núi lửa Rhyolit +block.rough-rhyolite.name = Rhyolit thô +block.regolith.name = Lớp đất mặt +block.yellow-stone.name = Đá vàng block.carbon-stone.name = Đá Carbon block.ferric-stone.name = Đá Ferric block.ferric-craters.name = Miệng núi lửa Ferric block.beryllic-stone.name = Đá Beryllic -block.crystalline-stone.name = Đá Pha Lê -block.crystal-floor.name = Nền Pha Lê -block.yellow-stone-plates.name = Tấm Đá Vàng -block.red-stone.name = Đá Đỏ -block.dense-red-stone.name = Đá Đỏ Dày -block.red-ice.name = Băng Đỏ +block.crystalline-stone.name = Đá pha lê +block.crystal-floor.name = Nền pha lê +block.yellow-stone-plates.name = Tấm đá vàng +block.red-stone.name = Đá đỏ +block.dense-red-stone.name = Đá đỏ dày +block.red-ice.name = Băng đỏ block.arkycite-floor.name = Nền Arkycite block.arkyic-stone.name = Đá Arkyic -block.rhyolite-vent.name = Lỗ Thông Hơi Rhyolite -block.carbon-vent.name = Lỗ Thông Hơi Carbon -block.arkyic-vent.name = Lỗ Thông Hơi Arkyic -block.yellow-stone-vent.name = Lỗ Thông Hơi Đá Vàng -block.red-stone-vent.name = Lỗ Thông Hơi Đá Đỏ -block.crystalline-vent.name = Lỗ thông hơi Pha Lê -block.redmat.name = Redmat -block.bluemat.name = Bluemat -block.core-zone.name = Khu Vực Căn Cứ -block.regolith-wall.name = Tường Regolith -block.yellow-stone-wall.name = Tường Đá Vàng -block.rhyolite-wall.name = Tường Rhyolite +block.rhyolite-vent.name = Lỗ hơi nước Rhyolit +block.carbon-vent.name = Lỗ hơi nước Carbon +block.arkyic-vent.name = Lỗ hơi nước Arkyic +block.yellow-stone-vent.name = Lỗ hơi nước đá vàng +block.red-stone-vent.name = Lỗ hơi nước đá đỏ +block.crystalline-vent.name = Lỗ hơi nước pha lê +block.redmat.name = Thảm đỏ +block.bluemat.name = Thảm xanh +block.core-zone.name = Vùng đặt lõi +block.regolith-wall.name = Tường đất mặt +block.yellow-stone-wall.name = Tường đá vàng +block.rhyolite-wall.name = Tường Rhyolit block.carbon-wall.name = Tường Carbon -block.ferric-stone-wall.name = Tường Đá Ferric -block.beryllic-stone-wall.name = Tường Đá Beryllic +block.ferric-stone-wall.name = Tường đá Ferric +block.beryllic-stone-wall.name = Tường đá Beryllic block.arkyic-wall.name = Tường Arkyic -block.crystalline-stone-wall.name = Tường Pha Lê -block.red-ice-wall.name = Tường Băng Đỏ -block.red-stone-wall.name = Tường Đá Đỏ -block.red-diamond-wall.name = Tường Kim Cương Đỏ -block.redweed.name = Rêu Đỏ -block.pur-bush.name = Pur Bush -block.yellowcoral.name = Yellowcoral -block.carbon-boulder.name = Tảng Đá Carbon -block.ferric-boulder.name = Tảng Đá Ferric -block.beryllic-boulder.name = Tảng Đá Beryllic -block.yellow-stone-boulder.name = Tảng Đá Vàng -block.arkyic-boulder.name = Tảng Đá Arkyic -block.crystal-cluster.name = Cụm Pha Lê -block.vibrant-crystal-cluster.name = Cụm Pha Lê Sáng -block.crystal-blocks.name = Khối Pha Lê -block.crystal-orbs.name = Quả Cầu Pha Lê -block.crystalline-boulder.name = Tảng Đá Pha Lê -block.red-ice-boulder.name = Tảng Băng Đỏ -block.rhyolite-boulder.name = Tảng Đá Rhyolite -block.red-stone-boulder.name = Tảng Đá Đỏ -block.graphitic-wall.name = Tường Than Chì +block.crystalline-stone-wall.name = Tường đá pha lê +block.red-ice-wall.name = Tường băng đỏ +block.red-stone-wall.name = Tường đá đỏ +block.red-diamond-wall.name = Tường kim cương đỏ +block.redweed.name = Rêu đỏ +block.pur-bush.name = Bụi cây tím +block.yellowcoral.name = San hô vàng +block.carbon-boulder.name = Tảng đá Carbon +block.ferric-boulder.name = Tảng đá Ferric +block.beryllic-boulder.name = Tảng đá Beryllic +block.yellow-stone-boulder.name = Tảng đá vàng +block.arkyic-boulder.name = Tảng đá Arkyic +block.crystal-cluster.name = Cụm pha lê +block.vibrant-crystal-cluster.name = Cụm pha lê sống động +block.crystal-blocks.name = Khối pha lê +block.crystal-orbs.name = Quả cầu pha lê +block.crystalline-boulder.name = Tảng đá pha lê +block.red-ice-boulder.name = Tảng băng đỏ +block.rhyolite-boulder.name = Tảng đá Rhyolit +block.red-stone-boulder.name = Tảng đá đỏ +block.graphitic-wall.name = Tường than chì block.silicon-arc-furnace.name = Lò tinh luyện Silicon block.electrolyzer.name = Máy điện phân -block.atmospheric-concentrator.name = Máy thu hơi nước -block.oxidation-chamber.name = Bể Oxi hoá -block.electric-heater.name = Máy tạo nhiệt bằng điện -block.slag-heater.name = Máy tạo nhiệt bằng Xỉ -block.phase-heater.name = Máy tạo nhiệt lượng tử +block.atmospheric-concentrator.name = Máy tập trung khí quyển +block.oxidation-chamber.name = Bể Oxy hoá +block.electric-heater.name = Máy nhiệt từ điện +block.slag-heater.name = Máy nhiệt từ xỉ +block.phase-heater.name = Máy nhiệt từ lượng tử block.heat-redirector.name = Khối điều hướng nhiệt -block.heat-router.name = Khối chia nhiệt -block.slag-incinerator.name = Lò nung huỷ vật phẩm -block.carbide-crucible.name = Máy nung Carbide -block.slag-centrifuge.name = Máy nấu Thuỷ ngân -block.surge-crucible.name = Máy tinh chế Hợp kim +block.heat-router.name = Khối phân phát nhiệt +block.slag-incinerator.name = Lò xỉ huỷ vật phẩm +block.carbide-crucible.name = Máy nấu Carbide +block.slag-centrifuge.name = Máy ly tâm xỉ +block.surge-crucible.name = Máy nấu hợp kim block.cyanogen-synthesizer.name = Máy tổng hợp Cyano block.phase-synthesizer.name = Máy tổng hợp lượng tử block.heat-reactor.name = Lò phản ứng nhiệt -block.beryllium-wall.name = Tường Beryllium -block.beryllium-wall-large.name = Tường Beryllium lớn +block.beryllium-wall.name = Tường Beryl +block.beryllium-wall-large.name = Tường Beryl lớn block.tungsten-wall.name = Tường Tungsten block.tungsten-wall-large.name = Tường Tungsten lớn block.blast-door.name = Cửa tự động @@ -1666,45 +1814,45 @@ block.carbide-wall.name = Tường Carbide block.carbide-wall-large.name = Tường Carbide lớn block.reinforced-surge-wall.name = Tường Hợp kim cứng block.reinforced-surge-wall-large.name = Tường Hợp kim cứng lớn -block.shielded-wall.name = Tường khiên trường lực +block.shielded-wall.name = Tường khiên chắn block.radar.name = Máy quét -block.build-tower.name = Máy hỗ trợ xây dựng -block.regen-projector.name = Máy chiếu trường lực hồi phục +block.build-tower.name = Tháp xây dựng +block.regen-projector.name = Máy chiếu hồi phục block.shockwave-tower.name = Máy tạo xung điện block.shield-projector.name = Máy chiếu khiên chắn block.large-shield-projector.name = Máy chiếu khiên chắn lớn block.armored-duct.name = Ống chân không bọc giáp block.overflow-duct.name = Ống tràn chân không block.underflow-duct.name = Ống tràn ngược chân không -block.duct-unloader.name = Điểm dỡ hàng từ ống +block.duct-unloader.name = Điểm dỡ hàng chân không block.surge-conveyor.name = Băng chuyền hợp kim -block.surge-router.name = Máy phân phát hợp kim -block.unit-cargo-loader.name = Unit Cargo Loader -block.unit-cargo-unload-point.name = Unit Cargo Unload Point +block.surge-router.name = Bộ phân phát hợp kim +block.unit-cargo-loader.name = Điểm tải hàng đơn vị +block.unit-cargo-unload-point.name = Điểm thả hàng đơn vị block.reinforced-pump.name = Máy bơm gia cố -block.reinforced-conduit.name = Ống dẫn cứng -block.reinforced-liquid-junction.name = Điểm giao ống dẫn cứng -block.reinforced-bridge-conduit.name = Cầu ống dẫn cứng -block.reinforced-liquid-router.name = Bộ phân phát chất lỏng cứng -block.reinforced-liquid-container.name = Container chất lỏng gia cố +block.reinforced-conduit.name = Ống dẫn gia cố +block.reinforced-liquid-junction.name = Điểm giao chất lỏng gia cố +block.reinforced-bridge-conduit.name = Cầu ống dẫn gia cố +block.reinforced-liquid-router.name = Bộ phân phát chất lỏng gia cố +block.reinforced-liquid-container.name = Thùng chứa chất lỏng gia cố block.reinforced-liquid-tank.name = Bể chứa chất lỏng gia cố block.beam-node.name = Chốt tia điện -block.beam-tower.name = Chốt tia điện lớn -block.beam-link.name = Chốt viễn minh -block.turbine-condenser.name = Turbine điện hơi nước +block.beam-tower.name = Tháp tia điện +block.beam-link.name = Liên kết tia điện +block.turbine-condenser.name = Tua-bin điện hơi nước block.chemical-combustion-chamber.name = Bể điện hoá -block.pyrolysis-generator.name = Máy nhiệt phân +block.pyrolysis-generator.name = Máy phát điện nhiệt phân block.vent-condenser.name = Máy ngưng tụ hơi nước -block.cliff-crusher.name = Máy phá đá +block.cliff-crusher.name = Máy nghiền vách đá block.plasma-bore.name = Khoan plasma block.large-plasma-bore.name = Khoan plasma lớn -block.impact-drill.name = Máy khoan động lực -block.eruption-drill.name = Máy khoan siêu động lực -block.core-bastion.name = Căn cứ: Pháo đài -block.core-citadel.name = Căn cứ: Thủ phủ -block.core-acropolis.name = Căn cứ: Đại đô -block.reinforced-container.name = Container gia cố -block.reinforced-vault.name = Kho gia cố +block.impact-drill.name = Máy khoan thủy lực +block.eruption-drill.name = Máy khoan siêu thủy lực +block.core-bastion.name = Lõi: Pháo đài +block.core-citadel.name = Lõi: Thủ phủ +block.core-acropolis.name = Lõi: Đại đô +block.reinforced-container.name = Thùng chứa gia cố +block.reinforced-vault.name = Kho chứa gia cố block.breach.name = Breach block.sublimate.name = Sublimate block.titan.name = Titan @@ -1712,244 +1860,255 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Máy tạo quân lính -block.tank-refabricator.name = Máy nâng cấp xe tăng -block.mech-refabricator.name = Máy nâng cấp lính cơ động -block.ship-refabricator.name = Máy nâng cấp phi thuyền +block.tank-refabricator.name = Máy tái tạo xe tăng +block.mech-refabricator.name = Máy tái tạo máy cơ động +block.ship-refabricator.name = Máy tái tạo phi thuyền block.tank-assembler.name = Máy lắp ráp xe tăng block.ship-assembler.name = Máy lắp ráp phi thuyền -block.mech-assembler.name = Máy lắp ráp lính cơ động +block.mech-assembler.name = Máy lắp ráp máy cơ động block.reinforced-payload-conveyor.name = Băng chuyền khối hàng gia cố block.reinforced-payload-router.name = Bộ phân phát khối hàng gia cố -block.payload-mass-driver.name = Máy phóng từ trường -block.small-deconstructor.name = Máy tháo dỡ nhỏ +block.payload-mass-driver.name = Máy phóng từ trường khối hàng +block.small-deconstructor.name = Máy tháo dỡ block.canvas.name = Màn hình vẽ block.world-processor.name = Bộ xử lý thế giới block.world-cell.name = Bộ nhớ thế giới block.tank-fabricator.name = Máy chế tạo xe tăng -block.mech-fabricator.name = Máy chế tạo lính cơ động +block.mech-fabricator.name = Máy chế tạo cơ động block.ship-fabricator.name = Máy chế tạo phi thuyền -block.prime-refabricator.name = Máy chuyên biệt hoá quân lính -block.unit-repair-tower.name = Máy sửa chữa quân lính +block.prime-refabricator.name = Máy tái tạo hoàn thiện +block.unit-repair-tower.name = Tháp sửa chữa đơn vị block.diffuse.name = Diffuse -block.basic-assembler-module.name = Module lắp ráp quân lính +block.basic-assembler-module.name = Mô-đun lắp ráp đơn vị block.smite.name = Smite block.malign.name = Malign -block.flux-reactor.name = Lò phản ứng bốc hơi +block.flux-reactor.name = Lò phản ứng thông lượng block.neoplasia-reactor.name = Lò phản ứng siêu tân sinh + block.switch.name = Công tắc -block.micro-processor.name = Bộ xử lí nhỏ -block.logic-processor.name = Bộ xử lý -block.hyper-processor.name = Bộ xử lý lớn -block.logic-display.name = Màn hình -block.large-logic-display.name = Màn hình lớn -block.memory-cell.name = Bộ nhớ -block.memory-bank.name = Bộ nhớ lớn +block.micro-processor.name = Bộ xử lý vi cấp +block.logic-processor.name = Bộ xử lý trung cấp +block.hyper-processor.name = Bộ xử lý siêu cấp +block.logic-display.name = Màn hình hiển thị +block.large-logic-display.name = Màn hình hiển thị lớn +block.memory-cell.name = Ô bộ nhớ +block.memory-bank.name = Khối bộ nhớ team.malis.name = Malis team.crux.name = Crux team.sharded.name = Sharded -team.derelict.name = Không xác định +team.derelict.name = Bỏ hoang team.green.name = Xanh lá cây team.blue.name = Xanh dương hint.skip = Bỏ qua hint.desktopMove = Sử dụng [accent][[WASD][] để di chuyển. hint.zoom = [accent]Cuộn[] để phóng to hoặc thu nhỏ. -hint.desktopShoot = [accent][[chuột trái][] để bắn. -hint.depositItems = Để di chuyển các vật phẩm, hãy kéo từ tàu của bạn đến căn cứ. -hint.respawn = Để hồi sinh như tàu của bạn, nhấn [accent][[V][]. -hint.respawn.mobile = Bạn đã chuyển điều khiển một quân lính/công trình. Để hồi sinh như một con tàu, [accent]nhấn vào hình đại diện ở phía trên cùng bên trái.[] -hint.desktopPause = Nhấn [accent][[Space][] để tạm dừng và tiếp tục trò chơi. -hint.breaking = [accent]Chuột phải[] và kéo để phá vỡ các khối. -hint.breaking.mobile = Kích hoạt \ue817 [accent]Cây búa[] ở phía dưới cùng bên phải và nhấn để phá vỡ các khối.\n\nGiữ ngón tay của bạn trong một giây và kéo để phá khối trong vùng được chọn. -hint.blockInfo = Xem thông tin của một khối bằng cách chọn nó trong [accent]menu xây dựng[], Sau đó chọn nút [accent][[?][] ở bên phải. -hint.derelict = [accent]Không xác định[] là các công trình bị hỏng của các căn cứ cũ mà không còn hoạt động.\n\nCác công trình này có thể [accent]được tháo dỡ[] để nhận được nguyên liệu. +hint.desktopShoot = [accent][[nhấn chuột trái][] để bắn. +hint.depositItems = Để di chuyển các vật phẩm, hãy kéo từ phi thuyền của bạn đến lõi. +hint.respawn = Để hồi sinh dưới dạng phi thuyền, nhấn [accent][[V][]. +hint.respawn.mobile = Bạn đã chuyển điều khiển một đơn vị/công trình. Để hồi sinh dưới dạng phi thuyền, [accent]nhấn vào hình đại diện ở phía trên cùng bên trái.[] +hint.desktopPause = Nhấn [accent][[Phím cách][] để tạm dừng và tiếp tục trò chơi. +hint.breaking = [accent]Nhấn chuột phải[] và kéo để phá vỡ các khối. +hint.breaking.mobile = Kích hoạt \ue817 [accent]cây búa[] ở phía dưới cùng bên phải và nhấn để phá vỡ các khối.\n\nGiữ ngón tay của bạn trong một giây và kéo để phá khối trong vùng được chọn. +hint.blockInfo = Xem thông tin của một khối bằng cách chọn nó trong [accent]trình đơn xây dựng[], Sau đó chọn nút [accent][[?][] ở bên phải. +hint.derelict = [accent]Bỏ hoang[] là các công trình bị hỏng của các căn cứ cũ mà không còn hoạt động.\n\nCác công trình này có thể [accent]được tháo dỡ[] để nhận được tài nguyên hoặc sửa chữa. hint.research = Sử dụng nút \ue875 [accent]Nghiên cứu[] để nghiên cứu công nghệ mới. -hint.research.mobile = Sử dụng nút \ue875 [accent]Nghiên cứu[] trong \ue88c [accent]Menu[] để nghiên cứu công nghệ mới. -hint.unitControl = Giữ [accent][[L-ctrl][] và [accent]click[] để điều khiển quân lính của bạn hoặc súng. -hint.unitControl.mobile = [accent][Double-tap[] để điều khiển quân lính của bạn hoặc súng. -hint.unitSelectControl = Để điều khiển quân lính, hãy nhấn [accent]chế độ ra lệnh[] bằng cách giữ [accent]L-shift.[]\nKhi ở chế độ lệnh, hãy nhấn và kéo để chọn quân lính. [accent]Nhấn chuột phải[] vào một vị trí hoặc mục tiêu để ra lệnh quân lính đó. -hint.unitSelectControl.mobile = Để điều khiển quân lính, hãy nhấn [accent]chế độ ra lệnh[] bằng cách nhấn nút [accent]lệnh[] ở phía dưới cùng bên trái.\nKhi ở chế độ ra lệnh, hãy nhấn và kéo để chọn quân lính. Tap vào một vị trí hoặc mục tiêu để ra lệnh quân lính đó. -hint.launch = Sau khi thu thập đủ tài nguyên, bạn có thể [accent]Phóng[] bằng cách chọn các khu vực lân cận từ \ue827 [accent]Bản đồ[] ở phía dưới cùng bên phải. -hint.launch.mobile = Sau khi thu thập đủ tài nguyên, bạn có thể [accent]Phóng[] bằng cách chọn các khu vực lân cận từ \ue827 [accent]Bản đồ[] trong \ue88c [accent]Menu[]. -hint.schematicSelect = Giữ [accent][[F][] và kéo để chọn các khối để sao chép và dán.\n\n[accent][[Middle Click][] để sao chép một khối. -hint.rebuildSelect = Giữ [accent][[B][] và kéo để chọn các khối bị hỏng.\nChúng sẽ được tự động được xây lại. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. -hint.conveyorPathfind = Giữ [accent][[L-Ctrl][] trong khi kéo băng chuyền để tự động tạo đường dẫn. -hint.conveyorPathfind.mobile = Mở \ue844 [accent]chế độ đường chéo[] và kéo băng chuyền để tự động tạo đường dẫn. -hint.boost = Giữ [accent][[L-Shift][] bay qua các chướng ngại vật với quân lính hiện tại của bạn.\n\nChỉ một số quân lính mặt đất có thể bay được. -hint.payloadPickup = Nhấn [accent][[[] để nhặt một khối nhỏ hoặc một quân lính. -hint.payloadPickup.mobile = [accent]Nhấn và giữ[] một khối nhỏ hoặc một quân lính để nhặt nó. -hint.payloadDrop = Nhấn [accent]][] để thả một vật phẩm. -hint.payloadDrop.mobile = [accent]Nhấn và giữ[] tại một khu vực trống để thả vật phẩm. +hint.research.mobile = Sử dụng nút \ue875 [accent]Nghiên cứu[] trong \ue88c [accent]Trình đơn[] để nghiên cứu công nghệ mới. +hint.unitControl = Giữ [accent][[Ctrl trái][] và [accent]nhấn chuột[] để điều khiển thủ công đơn vị của bạn hoặc súng. +hint.unitControl.mobile = [accent][[Nhấn đúp][] để điều khiển thủ công đơn vị của bạn hoặc súng. +hint.unitSelectControl = Để điều khiển đơn vị, hãy nhấn [accent]chế độ mệnh lệnh[] bằng cách giữ [accent]Shift trái[].\nKhi ở chế độ mệnh lệnh, hãy nhấn và kéo để chọn đơn vị. [accent]Nhấn chuột phải[] vào một vị trí hoặc mục tiêu để ra lệnh đơn vị đến đó. +hint.unitSelectControl.mobile = Để điều khiển đơn vị, hãy nhấn [accent]chế độ mệnh lệnh[] bằng cách nhấn nút [accent]mệnh lệnh[] ở phía dưới cùng bên trái.\nKhi ở chế độ mệnh lệnh, hãy nhấn giữ và kéo để chọn đơn vị. Nhấp vào một vị trí hoặc mục tiêu để ra lệnh đơn vị đến đó. +hint.launch = Một khi thu thập đủ tài nguyên, bạn có thể [accent]Phóng[] bằng cách chọn các khu vực lân cận bằng cách mở \ue827 [accent]Bản đồ[] ở phía dưới cùng bên phải, và lướt chọn vị trí mới. +hint.launch.mobile = Một khi thu thập đủ tài nguyên, bạn có thể [accent]Phóng[] bằng cách chọn các khu vực lân cận từ \ue827 [accent]Bản đồ[] trong \ue88c [accent]Trình đơn[]. +hint.schematicSelect = Giữ [accent][[F][] và kéo để chọn các khối để sao chép và dán.\n\n[accent][[Nhấn chuột giữa][] để sao chép một kiểu khối đơn lẻ. +hint.rebuildSelect = Giữ [accent][[B][] và kéo để chọn các khối đã bị phá hủy.\nChúng sẽ được tự động được xây lại. +hint.rebuildSelect.mobile = Chọn nút \ue874 sao chép, sau đó nhấp nút \ue80f xây lại và kéo để chọn khu vực của các khối đã bị phá hủy.\nViệc này sẽ giúp xây lại chúng một cách tự động. +hint.conveyorPathfind = Giữ [accent][[Ctrl trái][] trong khi kéo băng chuyền để tự động tạo đường dẫn. +hint.conveyorPathfind.mobile = Bật \ue844 [accent]chế độ đường chéo[] và kéo băng chuyền để tự động tạo đường dẫn. +hint.boost = Giữ [accent][[Shift trái][] bay qua các chướng ngại vật với đơn vị hiện tại của bạn.\n\nChỉ một số đơn vị mặt đất có thể bay được. +hint.payloadPickup = Nhấn [accent][[[] để nhặt một khối nhỏ hoặc một đơn vị. +hint.payloadPickup.mobile = [accent]Nhấn và giữ[] một khối nhỏ hoặc một đơn vị để nhặt nó. +hint.payloadDrop = Nhấn [accent]][] để thả một khối hàng. +hint.payloadDrop.mobile = [accent]Nhấn và giữ[] tại một khu vực trống để thả khối hàng tại đó. hint.waveFire = [accent]Wave[] súng có nước làm đạn dược sẽ tự động dập tắt các đám cháy gần đó. hint.generator = \uf879 [accent]Máy phát điện đốt cháy[] đốt than và truyền năng lượng cho các khối liền kề.\n\nPhạm vi truyền tải năng lượng có thể được mở rộng với \uf87f [accent]Chốt điện[]. -hint.guardian = [accent]Boss[] được bọc giáp. Sử dụng loại đạn yếu chẳng hạn như [accent]Đồng[] và [accent]Chì[] là [scarlet]không hiệu quả[].\n\nSử dụng súng tiên tiến hơn hoặc sử dụng \uf835 [accent]Than chì làm đạn [] \uf861Duo/\uf859Salvo đạn dược để hạ gục Boss. -hint.coreUpgrade = Các căn cứ có thể được nâng cấp bằng cách [accent]đặt căn cứ cấp cao hơn trên chúng[].\n\nĐặt một căn cứ \uf868 [accent]Trụ sở[] trên căn cứ \uf869 [accent]Cơ sở[]. Đảm bảo không có vật cản gần đó. -hint.presetLaunch = Khác khu vực đáp [accent] xám[], như [accent]Frozen Forest[], có thể được phóng đến từ bất cứ đâu. Nó không yêu cầu chiếm các khu vực lân cận.\n\n[accent]Các khu vực được đánh số[], chẳng hạn như cái này, là [accent]không bắt buộc[]. -hint.presetDifficulty = Khu vực này có [scarlet]mối đe dọa cao[].\nPhóng đến khu vực như vậy [accent]không được khuyến khích[] nếu không có công nghệ và chuẩn bị phù hợp. -hint.coreIncinerate = Sau khi căn cứ đầy vật phẩm, bất kì vật phẩm vào thuộc loại đó nhận được sẽ bị [accent]tiêu hủy[]. -hint.factoryControl = Để đặt [accent]hướng đầu ra[] của một nhà máy, nhấp vào một khối nhà máy trong chế độ ra lệnh, sau đó nhấp chuột phải vào một vị trí.\nCác quân lính sản xuất bởi nó sẽ tự động di chuyển đến đó. -hint.factoryControl.mobile = Để đặt [accent]hướng đầu ra[] của một nhà máy, tap vào một khối nhà máy trong chế độ ra lệnh, sau đó tap vào một vị trí.\nCác quân lính sản xuất bởi nó sẽ tự động di chuyển đến đó. -gz.mine = Di chuyển gần \uf8c4 [accent]quặng đồng[] trên đất và click vào nó để bắt đầu khai thác. +hint.guardian = [accent]Trùm[] được bọc giáp. Sử dụng loại đạn yếu chẳng hạn như [accent]Đồng[] và [accent]Chì[] là [scarlet]không hiệu quả[].\n\nSử dụng súng tiên tiến hơn hoặc sử dụng \uf835 [accent]Than chì[] làm đạn \uf861Duo/\uf859Salvo đạn dược để hạ gục Trùm. +hint.coreUpgrade = Các lõi có thể được nâng cấp bằng cách [accent]đặt lõi cấp cao hơn trên chúng[].\n\nĐặt một lõi \uf868 [accent]Trụ sở[] trên lõi \uf869 [accent]Cơ sở[]. Đảm bảo không có vật cản gần đó. +hint.presetLaunch = [accent]Khu vực đáp[] xám, như [accent]Frozen Forest[], có thể được phóng đến từ bất cứ đâu. Nó không yêu cầu chiếm các khu vực lân cận.\n\n[accent]Các khu vực được đánh số[], chẳng hạn như cái này, là [accent]không bắt buộc[]. +hint.presetDifficulty = Khu vực này có [scarlet]mối đe dọa thù địch cao[].\nPhóng đến khu vực như vậy [accent]không được khuyến khích[] nếu không có công nghệ và chuẩn bị phù hợp. +hint.coreIncinerate = Sau khi lõi đầy một loại vật phẩm, bất kỳ vật phẩm vào thuộc loại đó nhận được sẽ bị [accent]tiêu hủy[]. +hint.factoryControl = Để đặt [accent]điểm đầu ra[] của một nhà máy, nhấn vào một khối nhà máy trong chế độ ra lệnh, sau đó nhấn chuột phải vào một vị trí.\nCác đơn vị sản xuất bởi nó sẽ tự động di chuyển đến đó. +hint.factoryControl.mobile = Để đặt [accent]điểm đầu ra[] của một nhà máy, nhấp vào một khối nhà máy trong chế độ ra lệnh, sau đó nhấp vào một vị trí.\nCác đơn vị sản xuất bởi nó sẽ tự động di chuyển đến đó. + +gz.mine = Di chuyển gần \uf8c4 [accent]quặng đồng[] trên đất và nhấn vào nó để bắt đầu khai thác. gz.mine.mobile = Di chuyển gần \uf8c4 [accent]quặng đồng[] trên đất và nhấp vào nó để bắt đầu khai thác. -gz.research = Mở \ue875 tiến trình.\nNghiên cứu \uf870 [accent]Máy khoan cơ khí[], sau đó chọn nó từ menu ở góc dưới bên phải.\nNhấp vào một quặng đồng để đặt nó. -gz.research.mobile = Mở \ue875 tiến trình.\nNghiên cứu \uf870 [accent]Máy khoan cơ khí[], sau đó chọn nó từ menu ở góc dưới bên phải.\nNhấp vào một quặng đồng để đặt nó.\n\nNhấp vào \ue800 [accent]dấu tích[] ở góc dưới bên phải để xác nhận. -gz.conveyors = Nghiên cứu và đặt \uf896 [accent]băng chuyền[] để di chuyển các nguyên liệu được khai thác\n từ các máy khoan đến căn cứ.\n\nNhấp và kéo để đặt nhiều băng chuyền.\n[accent]Cuộn[] để xoay. -gz.conveyors.mobile = Nghiên cứu và đặt \uf896 [accent]băng chuyền[] để di chuyển các nguyên liệu được khai thác\n từ các máy khoan đến căn cứ.\n\nGiữ ngón tay một chút và kéo để đặt nhiều băng chuyền. +gz.research = Mở \ue875 cây công nghệ.\nNghiên cứu \uf870 [accent]Máy khoan cơ khí[], sau đó chọn nó từ \ue85e trình đơn ở góc dưới bên phải.\nNhấp vào một khoảng quặng đồng để đặt nó. +gz.research.mobile = Mở \ue875 cây công nghệ.\nNghiên cứu \uf870 [accent]Máy khoan cơ khí[], sau đó chọn nó từ \ue85e trình đơn ở góc dưới bên phải.\nNhấp vào một khoảng quặng đồng để đặt nó.\n\nNhấp vào \ue800 [accent]dấu tích[] ở góc dưới bên phải để xác nhận. +gz.conveyors = Nghiên cứu và đặt \uf896 [accent]băng chuyền[] để di chuyển các tài nguyên được khai thác\ntừ các máy khoan đến lõi.\n\nNhấn và kéo để đặt nhiều băng chuyền.\n[accent]Cuộn[] để xoay. +gz.conveyors.mobile = Nghiên cứu và đặt \uf896 [accent]băng chuyền[] để di chuyển các tài nguyên được khai thác\ntừ các máy khoan đến lõi.\n\nGiữ ngón tay một giây và kéo để đặt nhiều băng chuyền. gz.drills = Mở rộng hoạt động khai thác.\nĐặt thêm Máy khoan cơ khí.\nKhai thác 100 đồng. -gz.lead = \uf837 [accent]Chì[] là một nguyên liệu được sử dụng phổ biến.\nHãy đặt các máy khoan để khai thác chì. +gz.lead = \uf837 [accent]Chì[] là một tài nguyên được sử dụng phổ biến.\nHãy đặt các máy khoan để khai thác chì. gz.moveup = \ue804 Di chuyển lên để xem các nhiệm vụ tiếp theo. -gz.turrets = Nghiên cứu và đặt 2 súng \uf861 [accent]Duo[] để bảo vệ căn cứ. Súng Duo cần \uf838 [accent]đạn[] từ băng chuyền. +gz.turrets = Nghiên cứu và đặt 2 súng \uf861 [accent]Duo[] để bảo vệ lõi.\nSúng Duo cần \uf838 [accent]đạn[] từ băng chuyền. gz.duoammo = Tiếp đạn cho súng Duo bằng [accent]đồng[], sử dụng băng chuyền. gz.walls = [accent]Tường[] có thể ngăn chặn sát thương đến các công trình.\nĐặt \uf8ae [accent]tường đồng[] xung quanh các súng. -gz.defend = Quân địch đang đến, chuẩn bị bảo vệ. -gz.aa = Các quân lính bay không thể dễ dàng bị bắn hạ với các súng tiêu chuẩn.\n\uf860 [accent]Scatter[] cung cấp tốt khả năng phòng không, nhưng cần \uf837 [accent]chì[] là đạn. -gz.scatterammo = Tiếp đạn cho súng Scatter bằng [accent]chì[], sử dụng băng chuyền. -gz.supplyturret = [accent]Súng cung cấp +gz.defend = Quân địch đang đến, hãy chuẩn bị phòng thủ. +gz.aa = Các đơn vị bay không thể dễ dàng bị bắn hạ với các súng tiêu chuẩn.\n\uf860 [accent]Scatter[] cung cấp tốt khả năng phòng không, nhưng cần \uf837 [accent]chì[] là đạn. +gz.scatterammo = Tiếp đạn cho súng Scatter bằng \uf837 [accent]chì[], sử dụng băng chuyền. +gz.supplyturret = [accent]Cấp đạn cho súng gz.zone1 = Đây là khu vực quân địch đáp xuống. gz.zone2 = Bất kỳ thứ gì được xây dựng trong bán kính này sẽ bị phá hủy khi một đợt mới bắt đầu. -gz.zone3 = Đợt tiếp theo sẽ bắt đầu ngay bây giờ.\nHãy chuẩn bị. -gz.finish = Đặt thêm các súng, khai thác thêm nguyên liệu,\nvà vừa bảo vệ căn cứ, vượt qua tất cả các đợt để [accent]chiếm khu vực[]. -onset.mine = Nhấp để khai thác \uf748 [accent]beryllium[] từ tường.\n\nSử dụng [accent][[WASD] để di chuyển. -onset.mine.mobile = Nhấp để khai thác \uf748 [accent]beryllium[] từ tường. -onset.research = Mở \ue875 tiến trình.\nNghiên cứu, sau đó đặt \uf73e [accent]Turbine điện hơi nước[] trên lỗ thông hơi.\nĐiều này sẽ tạo ra [accent]điện[]. -onset.bore = Nghiên cứu và đặt \uf741 [accent]Khoan plasma[].\nĐiều này sẽ tự động khai thác nguyên liệu từ tường. -onset.power = Để nối [accent]điện[] cho khoan plasma, nghiên cứu và đặt \uf73d [accent]Chốt tia điện[].\nKết nối Turbine điện hơi nước với khoan plasma. -onset.ducts = Nghiên cứu và đặt \uf799 [accent]ống chân không[] để di chuyển các nguyên liệu được khai thác từ các máy khoan đến căn cứ.\nNhấp và kéo để đặt nhiều ống chân không.\n[accent]Cuộn[] để xoay. -onset.ducts.mobile = Nghiên cứu và đặt \uf799 [accent]ống chân không[] để di chuyển các nguyên liệu được khai thác từ các máy khoan đến căn cứ.\n\nGiữ ngón tay một chút và kéo để đặt nhiều ống chân không. -onset.moremine = Mở rộng hoạt động khai thác.\nĐặt thêm Máy khoan plasma và sử dụng chốt tia điện và ống chân không để kết nối và vận chuyển.\nKhai thác 200 beryllium. +gz.zone3 = Một đợt sẽ bắt đầu ngay bây giờ.\nHãy chuẩn bị. +gz.finish = Đặt thêm các súng, khai thác thêm nguyên liệu,\nvà vượt qua tất cả các đợt để [accent]chiếm khu vực[]. + +onset.mine = Nhấn để khai thác \uf748 [accent]beryl[] từ tường.\n\nSử dụng [accent][[WASD] để di chuyển. +onset.mine.mobile = Nhấp để khai thác \uf748 [accent]beryl[] từ tường. +onset.research = Mở \ue875 cây công nghệ.\nNghiên cứu, sau đó đặt \uf73e [accent]tua-bin điện tụ nước[] trên lỗ hơi nước.\nĐiều này sẽ tạo ra [accent]điện[]. +onset.bore = Nghiên cứu và đặt \uf741 [accent]khoan plasma[].\nĐiều này sẽ tự động khai thác tài nguyên từ tường. +onset.power = Để nối [accent]điện[] cho khoan plasma, nghiên cứu và đặt \uf73d [accent]Chốt tia điện[].\nKết nối tua-bin điện hơi nước với khoan plasma. +onset.ducts = Nghiên cứu và đặt \uf799 [accent]ống chân không[] để di chuyển các tài nguyên được khai thác từ các máy khoan plasma đến lõi.\nNhấn và kéo để đặt nhiều ống chân không.\n[accent]Cuộn[] để xoay. +onset.ducts.mobile = Nghiên cứu và đặt \uf799 [accent]ống chân không[] để di chuyển các tài nguyên được khai thác từ các máy khoan plasma đến lõi.\n\nGiữ ngón tay một giây và kéo để đặt nhiều ống chân không. +onset.moremine = Mở rộng hoạt động khai thác.\nĐặt thêm Máy khoan plasma và sử dụng chốt tia điện và ống chân không để cùng phụ trợ chúng.\nKhai thác 200 beryl. onset.graphite = Các khối phức tạp hơn cần \uf835 [accent]than chì[].\nĐặt khoan plasma để khai thác than chì. -onset.research2 = Bắt đầu nghiên cứu [accent]nhà máy[].\nNghiên cứu \uf74d [accent]máy phá đá[] và \uf779 [accent]lò tinh luyện silicon[]. +onset.research2 = Bắt đầu nghiên cứu [accent]các nhà máy[].\nNghiên cứu \uf74d [accent]máy phá đá[] và \uf779 [accent]lò tinh luyện silicon[]. onset.arcfurnace = Lò tinh luyện cần \uf834 [accent]cát[] và \uf835 [accent]than chì[] để tạo \uf82f [accent]silicon[].\nYêu cầu có [accent]Điện[]. -onset.crusher = Sử dụng \uf74d [accent]máy phá đá[] để khai thác cát. -onset.fabricator = Sử dụng [accent]quân lính[] để khám phá bản đồ, bảo vệ các công trình và tấn công quân địch.\nNghiên cứu và đặt \uf6a2 [accent]máy chế tạo xe tăng[]. -onset.makeunit = Sản xuất một quân lính.\nSử dụng nút "?" để xem các yêu cầu của máy đã chọn. -onset.turrets = Các quân lính rất tốt, nhưng [accent]súng[] cung cấp khả năng phòng thủ tốt hơn nếu được sử dụng hiệu quả.\nĐặt một \uf6eb [accent]Breach[].\nSúng cần \uf748 [accent]đạn[]. -onset.turretammo = Tiếp đạn cho súng bằng [accent]beryllium[]. -onset.walls = [accent]Tường[] có thể ngăn chặn sát thương đến các công trình.\nĐặt một số \uf6ee [accent]tường beryllium[] xung quanh súng. +onset.crusher = Sử dụng \uf74d [accent]máy nghiền vách đá[] để khai thác cát. +onset.fabricator = Sử dụng [accent]đơn vị[] để khám phá bản đồ, bảo vệ các công trình, và tấn công quân địch.\nNghiên cứu và đặt \uf6a2 [accent]máy chế tạo xe tăng[]. +onset.makeunit = Sản xuất một đơn vị.\nSử dụng nút "?" để xem các yêu cầu của máy đã chọn. +onset.turrets = Các đơn vị rất hiệu quả, nhưng [accent]súng[] cung cấp khả năng phòng thủ tốt hơn nếu được sử dụng hiệu quả.\nĐặt một \uf6eb [accent]Breach[].\nSúng cần \uf748 [accent]đạn[]. +onset.turretammo = Tiếp đạn cho súng bằng [accent]beryl[] dùng ống chân không. +onset.walls = [accent]Tường[] có thể ngăn chặn sát thương đến các công trình.\nĐặt một số \uf6ee [accent]tường beryl[] xung quanh súng. onset.enemies = Quân địch đang đến, hãy chuẩn bị phòng thủ. -onset.attack = Quân địch đã suy yếu.\nHãy phản công. -onset.cores = Các căn cứ có thể được đặt trên [accent]ô căn cứ[].\nCác căn cứ mới có thể được đặt ở bất kỳ đâu trên bản đồ.\nĐặt một \uf725 căn cứ. -onset.detect = Quân địch sẽ phát hiện bạn trong vòng 2 phút.\nHãy chuẩn bị phòng thủ, khai thác và sản xuất. -split.pickup = Một số khối có thể được mang bởi quân lính.\nNhấp vào [accent]container[] và đặt nó lên [accent]máy nạp vật phẩm[].\n(Phím mặc định là [ và ] để mang và thả) -split.pickup.mobile = Một số khối có thể được mang bởi quân lính.\nNhấp vào [accent]container[] và đặt nó lên [accent]máy nạp vật phẩm[].\n(Để mang hoặc thả một khối, ấn giữ nó một chút.) -split.acquire = Bạn cần một số tungsten để sản xuất quân lính. -split.build = Quân lính phải được vận chuyển đến phía bên kia của tường.\nĐặt hai [accent]Máy phóng từ trường[], một ở mỗi bên của tường.\nĐặt liên kết bằng cách nhấp vào một trong số chúng, sau đó chọn cái còn lại. -split.container = Tương tự như container, quân lính cũng có thể được vận chuyển bằng [accent]Máy phóng từ trường[].\nĐặt một máy chế tạo quân lính cạnh máy phóng từ trường để nạp chúng, sau đó gửi chúng qua tường để tấn công căn cứ địch. +onset.defenses = [accent]Thiết lập phòng thủ:[lightgray] {0} +onset.attack = Quân địch đã suy yếu. Hãy phản công. +onset.cores = Các lõi mới có thể được đặt trên [accent]ô đặt lõi[].\nCác lõi mới hoạt động như một tiền cứ và chia sẻ kho tài nguyên với các lõi khác.\nĐặt một \uf725 lõi. +onset.detect = Quân địch sẽ phát hiện bạn trong vòng 2 phút.\nHãy chuẩn bị phòng thủ, khai thác, và sản xuất. +onset.commandmode = Giữ [accent]Shift[] để vào [accent]chế độ mệnh lệnh[].\n[accent]Nhấn chuột trái và kéo[] để chọn các đơn vị.\n[accent]Nhấn chuột phải[] để ra lệnh các đơn vị di chuyển hoặc tấn công. +onset.commandmode.mobile = Nhấn vào [accent]nút mệnh lệnh[] để vào [accent]chế độ mệnh lệnh[].\nGiữ một ngón tay, sau đó [accent]kéo[] để chọn các đơn vị.\n[accent]Nhấp[] để ra lệnh các đơn vị di chuyển hoặc tấn công. +aegis.tungsten = Tungsten có thể khai thác bằng [accent]khoan thủy lực[].\nCông trình này cần có [accent]nước[] và [accent]điện[]. -item.copper.description = Dùng trong tất cả các khu xây dựng và các loại đạn dược. -item.copper.details = Đồng, là kim loại phổ biến trên Serpulo. Có cấu trúc yếu trừ khi được tôi luyện. -item.lead.description = Dùng trong vận chuyển chất lỏng và cấu trúc liên quan đến điện. -item.lead.details = Đặc, trơ. Dùng nhiều trong pin.\nLưu ý: Có thể độc hại đối với các dạng sống sinh học. Không phải vì nó còn nhiều ở xung quanh đây. -item.metaglass.description = Dùng trong cấu trúc phân phối/lưu trữ chất lỏng. -item.graphite.description = Dùng trong các bộ phận điện và đạn dược. -item.sand.description = Dùng để sản xuất các vật liệu tinh chế khác. -item.coal.description = Dùng để sản xuất nhiên liệu và nguyên liệu sản xuất vật liệu tinh chế. +split.pickup = Một số khối có thể được mang theo bởi đơn vị từ lõi.\nNhấn vào [accent]thùng chứa[] và đặt nó lên [accent]máy nạp vật phẩm[].\n(Phím mặc định là [[ và ] để mang theo và thả) +split.pickup.mobile = Một số khối có thể được mang theo bởi đơn vị từ lõi.\nNhấp vào [accent]thùng chứa[] và đặt nó lên [accent]máy nạp vật phẩm[].\n(Để mang theo hoặc thả thứ gì đó, ấn giữ nó một chút.) +split.acquire = Bạn cần một số tungsten để sản xuất đơn vị. +split.build = Đơn vị phải được vận chuyển đến phía bên kia của tường.\nĐặt hai [accent]Máy phóng từ trường khối hàng[], một ở mỗi bên của tường.\nĐặt liên kết bằng cách nhấp vào một trong số chúng, sau đó chọn cái còn lại. +split.container = Tương tự như thùng chứa, đơn vị cũng có thể được vận chuyển bằng [accent]Máy phóng từ trường khối hàng[].\nĐặt một máy chế tạo đơn vị cạnh máy phóng từ trường để nạp chúng, sau đó gửi chúng qua tường để tấn công căn cứ địch. + +item.copper.description = Dùng trong tất cả các loại xây dựng và các loại đạn dược. +item.copper.details = Đồng. Kim loại nhiều bất thường trên Serpulo. Có cấu trúc yếu trừ khi được tôi luyện. +item.lead.description = Được dùng trong vận chuyển chất lỏng và cấu trúc liên quan đến điện. +item.lead.details = Đặc. Trơ. Dùng cực nhiều trong pin.\nLưu ý: Có thể độc hại đối với các dạng sống sinh học. Không phải vì nó còn nhiều ở xung quanh đây. +item.metaglass.description = Được dùng trong cấu trúc phân phối/lưu trữ chất lỏng. +item.graphite.description = Được dùng trong các bộ phận điện và đạn súng. +item.sand.description = Được dùng để sản xuất các vật liệu tinh chế khác. +item.coal.description = Được dùng để sản xuất nhiên liệu và nguyên liệu sản xuất vật liệu tinh chế. item.coal.details = Có vẻ là vật chất hóa thạch của thực vật, hình thành từ rất lâu trước khi được khai thác. -item.titanium.description = Dùng trong cấu trúc vận chuyển chất lỏng, máy khoan và các công trình. -item.thorium.description = Dùng trong các công trình bền vững và có thể dùng làm nhiên liệu hạt nhân. -item.scrap.description = Dùng làm nguyên liệu cho Máy nung phế liệu và Máy nghiền để tinh luyện thành các vật liệu khác. -item.scrap.details = Tàn tích còn lại của các công trình và robot cũ. -item.silicon.description = Dùng trong các tấm pin mặt trời, thiết bị điện tử phức tạp và một số loại đạn dược. -item.plastanium.description = Dùng trong các robot tiên tiến, các cấu trúc cách điện và đạn tự phân mảnh. -item.phase-fabric.description = Dùng trong các thiết bị điện tử tiên tiến và các cấu trúc tự sửa chữa. -item.surge-alloy.description = Dùng trong các vũ khí tiên tiến và các cấu trúc phòng thủ phản ứng. -item.spore-pod.description = Dùng để chuyển đổi thành dầu, chất nổ và nhiên liệu. +item.titanium.description = Được dùng trong cấu trúc vận chuyển chất lỏng, máy khoan và các nhà máy. +item.thorium.description = Được dùng trong các công trình bền vững và có thể dùng làm nhiên liệu hạt nhân. +item.scrap.description = Được dùng trong Máy nung và Máy nghiền để tinh luyện thành các vật liệu khác. +item.scrap.details = Tàn tích còn lại của các công trình và đơn vị cũ. +item.silicon.description = Được dùng trong các tấm pin mặt trời, thiết bị điện tử phức tạp và một số loại đạn truy đuổi. +item.plastanium.description = Được dùng trong các đơn vị tiên tiến, các cấu trúc cách điện và đạn tự phân mảnh. +item.phase-fabric.description = Được dùng trong các thiết bị điện tử tiên tiến và các cấu trúc tự sửa chữa. +item.surge-alloy.description = Được dùng trong các vũ khí tiên tiến và các cấu trúc phòng thủ phản hồi. +item.spore-pod.description = Được dùng để chuyển đổi thành dầu, chất nổ và nhiên liệu. item.spore-pod.details = Bào tử. Có thể là một dạng sống tổng hợp. Phát thải khí độc đối với sinh vật khác. Cực kỳ xâm lấn. Rất dễ cháy trong một số trường hợp nhất định. -item.blast-compound.description = Dùng trong bom hoặc đạn nổ. -item.pyratite.description = Dùng trong vũ khí gây cháy và máy phát điện chạy bằng nhiên liệu đốt. -item.beryllium.description = Được sử dụng trong nhiều loại công trình và đạn dược trên Erekir. -item.tungsten.description = Được sử dụng trong các máy khoan, áo giáp và đạn dược. Yêu cầu trong việc xây dựng các công trình cao cấp hơn. -item.oxide.description = Dùng làm chất dẫn nhiệt và cách điện cho nguồn điện. -item.carbide.description = Được sử dụng trong các công trình tiên tiến, các quân lính mạnh và đạn dược. +item.blast-compound.description = Được dùng trong bom hoặc đạn nổ. +item.pyratite.description = Được dùng trong vũ khí gây cháy và máy phát điện chạy bằng nhiên liệu đốt. -liquid.water.description = Dùng để làm mát máy móc và xử lý chất thải. -liquid.slag.description = Dùng để tách các kim loại, hoặc phun vào kẻ thù như một loại vũ khí. -liquid.oil.description = Dùng trong sản xuất vật liệu tiên tiến và làm đạn gây cháy. -liquid.cryofluid.description = Dùng làm chất làm mát trong lò phản ứng, súng và nhà máy. -liquid.arkycite.description = Được sử dụng trong các phản ứng hóa học để phát điện và tổng hợp vật liệu. -liquid.ozone.description = Được sử dụng như một chất oxy hóa trong sản xuất vật liệu và làm nhiên liệu. Gây nổ vừa phải. -liquid.hydrogen.description = Được sử dụng trong khai thác tài nguyên, sản xuất quân lính và sửa chữa công trình. Dễ cháy. -liquid.cyanogen.description = Được sử dụng cho đạn dược, xây dựng các quân lính tiên tiến và các phản ứng khác nhau trong các khối tiên tiến. Rất dễ cháy. -liquid.nitrogen.description = Được sử dụng trong khai thác tài nguyên, tạo khí và sản xuất quân lính. Trơ. -liquid.neoplasm.description = Một sản phẩm phụ sinh học nguy hiểm của lò phản ứng Neoplasia. Lan nhanh sang bất kì khối chứa nước nào mà nó chạm vào và gây hư hại chúng. Nhớt. -liquid.neoplasm.details = Neoplasm. Một khối lượng các tế bào tổng hợp phân chia nhanh chóng không kiểm soát với độ đặc giống như bùn. Kháng nhiệt. Cực kì nguy hiểm cho bất cứ khối nào có liên quan đến nước.\n\nQuá phức tạp và không ổn định để được phân tích. Chưa rõ được tiềm năng và ứng dụng của nó. Khuyến nghị đốt chúng trong các lò xỉ nóng chảy +#Erekir +item.beryllium.description = Được dùng trong nhiều loại công trình và đạn dược trên Erekir. +item.tungsten.description = Được dùng trong các máy khoan, bọc giáp và đạn dược. Yêu cầu trong việc xây dựng các công trình cao cấp hơn. +item.oxide.description = Được dùng làm chất dẫn nhiệt và cách điện cho nguồn điện. +item.carbide.description = Được dùng trong các công trình tiên tiến, các đơn vị hạng nặng và đạn dược. -block.derelict = \uf77e [lightgray]Không xác định -block.armored-conveyor.description = Vận chuyển vật phẩm về phía trước. Không nhận đầu vào từ phía bên cạnh. +liquid.water.description = Được dùng để làm mát máy móc và xử lý chất thải. +liquid.slag.description = Tinh chế để tách các kim loại thành phần. Dùng trong các loại súng chất lỏng như một loại đạn. +liquid.oil.description = Được dùng trong sản xuất vật liệu tiên tiến và làm đạn gây cháy. +liquid.cryofluid.description = Được dùng như chất làm mát trong lò phản ứng, súng và nhà máy. + +#Erekir +liquid.arkycite.description = Được dùng trong các phản ứng hóa học để phát điện và tổng hợp vật liệu. +liquid.ozone.description = Được sử dụng như một chất ôxy hóa trong sản xuất vật liệu, và làm nhiên liệu. Gây nổ vừa phải. +liquid.hydrogen.description = Được dùng trong khai thác tài nguyên, sản xuất đơn vị và sửa chữa công trình. Dễ cháy. +liquid.cyanogen.description = Được dùng cho đạn dược, xây dựng các đơn vị tiên tiến và các phản ứng khác nhau trong các khối tiên tiến. Rất dễ cháy. +liquid.nitrogen.description = Được dùng trong khai thác tài nguyên, tạo khí và sản xuất đơn vị. Trơ. +liquid.neoplasm.description = Một sản phẩm phụ sinh học nguy hiểm của lò phản ứng Neoplasia. Lan nhanh sang bất kỳ khối chứa nước nào mà nó chạm vào, gây hư hại chúng. Nhớt. +liquid.neoplasm.details = Tế bào tân sinh. Một khối lượng các tế bào tổng hợp phân chia nhanh chóng không kiểm soát với độ đặc giống như bùn. Kháng nhiệt. Cực kỳ nguy hiểm cho bất cứ khối nào có liên quan đến nước.\n\nQuá phức tạp và không ổn định để được phân tích. Chưa rõ được tiềm năng và ứng dụng của nó. Khuyến nghị đốt chúng trong xỉ nóng chảy. + +block.derelict = \uf77e [lightgray]Bỏ hoang +block.armored-conveyor.description = Vận chuyển vật phẩm về phía trước. Không nhận đầu vào không phải băng chuyền từ phía bên cạnh. block.illuminator.description = Phát sáng. -block.message.description = Lưu trữ tin nhắn giao tiếp giữa đồng đội. -block.reinforced-message.description = Lưu trữ một thông điệp để liên lạc giữa các đồng minh. -block.world-message.description = Một khối thông điệp đùng để sử dụng trong việc làm bản đồ. Không thể bị phá hủy. +block.message.description = Lưu trữ thông điệp giao tiếp giữa các đồng đội. +block.reinforced-message.description = Lưu trữ thông điệp giao tiếp giữa các đồng đội. +block.world-message.description = Một khối thông điệp đùng để sử dụng trong việc tạo bản đồ. Không thể bị phá hủy. block.graphite-press.description = Nén than thành than chì. block.multi-press.description = Nén than thành than chì. Cần nước làm mát. block.silicon-smelter.description = Tinh chế silicon từ cát và than. block.kiln.description = Nấu chảy cát và chì thành thuỷ tinh. block.plastanium-compressor.description = Sản xuất nhựa từ dầu và titan. -block.phase-weaver.description = Tổng hợp sợi lượng tử từ thorium và cát. -block.surge-smelter.description = Trộn titan, chì, silicon và đồng thành hợp kim. -block.cryofluid-mixer.description = Trộn nước và titan để sản xuất chất làm mát. +block.phase-weaver.description = Tổng hợp sợi lượng tử từ thori và cát. +block.surge-smelter.description = Hợp nhất titan, chì, silicon và đồng thành hợp kim. +block.cryofluid-mixer.description = Trộn nước và bột titan mịn để sản xuất chất làm mát. block.blast-mixer.description = Tạo ra hợp chất nổ từ nhiệt thạch và vỏ bào tử. block.pyratite-mixer.description = Trộn than, chì và cát thành nhiệt thạch. block.melter.description = Nung phế liệu thành xỉ. block.separator.description = Tách xỉ thành các thành phần khoáng của nó. block.spore-press.description = Nén vỏ bào tử thành dầu. -block.pulverizer.description = Nghiền phế liệu thành cát. -block.coal-centrifuge.description = Biến dầu thành than. +block.pulverizer.description = Nghiền phế liệu thành cát mịn. +block.coal-centrifuge.description = Biến đổi dầu thành than. block.incinerator.description = Tiêu hủy bất kỳ vật phẩm hoặc chất lỏng nào mà nó nhận được. -block.power-void.description = Hủy tất cả năng lượng nhận được. Chỉ có trong chế độ tự do. -block.power-source.description = Tạo ra năng lượng mãi mãi. Chỉ có trong chế độ tự do. -block.item-source.description = Tạo ra vật phẩm mãi mãi. Chỉ có trong chế độ tự do. -block.item-void.description = Hủy mọi vật phẩm. Chỉ có trong chế độ tự do. -block.liquid-source.description = Tạo ra chất lỏng mãi mãi. Chỉ có trong chế độ tự do. -block.liquid-void.description = Loại bỏ mọi chất lỏng. Chỉ có trong chế độ tự do. -block.payload-source.description = Tạo ra bất kì khối hàng nào. Chỉ có trong chế độ tự do. -block.payload-void.description = Phá hủy bất kì khối hàng nào. Chỉ có trong chế độ tự do. -block.copper-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.copper-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù. -block.titanium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.titanium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù. -block.plastanium-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù. Hấp thụ tia laser và tia điện. Chặn kết nối điện tự động. -block.plastanium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù. Hấp thụ tia laser và tia điện. Chặn kết nối điện tự động. -block.thorium-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù. -block.thorium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù. -block.phase-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù, phản hầu hết đạn khi va chạm. -block.phase-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù, phản hầu hết đạn khi va chạm. -block.surge-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù, đôi khi tạo ra tia điện khi bị bắn. -block.surge-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù, đôi khi tạo ra tia điện khi bị bắn. -block.door.description = Một bức tường có thể đóng mở. -block.door-large.description = Một bức tường có thể đóng mở. -block.mender.description = Sửa chữa định kỳ các khối trong vùng lân cận.\nSử dụng Sợi lượng tử để tăng phạm vi và hiệu quả. -block.mend-projector.description = Sửa chữa các khối lân cận.\nSử dụng Sợi lượng tử để tăng phạm vi và hiệu quả. -block.overdrive-projector.description = Tăng tốc độ làm việc của các công trình lân cận.\nSử dụng Sợi lượng tử để tăng phạm vi và hiệu quả. -block.force-projector.description = Tạo ra một trường lực lục giác xung quanh nó, bảo vệ các công trình và quân lính bên trong khỏi bị hư hại.\nQuá nóng nếu chịu quá nhiều sát thương. Sử dụng chất làm mát để giảm nhiệt độ. Sử dụng Sợi lượng tử để tăng kích thước lá chắn. -block.shock-mine.description = Giải phóng tia điện khi tiếp xúc với quân lính đối phương. +block.power-void.description = Hủy tất cả năng lượng nhận được. Chỉ chế độ Tự do. +block.power-source.description = Tạo ra năng lượng vô hạn. Chỉ chế độ Tự do. +block.item-source.description = Tạo ra vật phẩm vô hạn. Chỉ chế độ Tự do. +block.item-void.description = Hủy mọi vật phẩm. Chỉ chế độ Tự do. +block.liquid-source.description = Tạo ra chất lỏng vô hạn. Chỉ chế độ Tự do. +block.liquid-void.description = Loại bỏ mọi chất lỏng. Chỉ chế độ Tự do. +block.payload-source.description = Tạo ra bất kỳ khối hàng nào. Chỉ chế độ Tự do. +block.payload-void.description = Phá hủy bất kỳ khối hàng nào. Chỉ chế độ Tự do. +block.copper-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.copper-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.titanium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.titanium-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.plastanium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. Hấp thụ tia laser và tia điện. Chặn kết nối điện tự động. +block.plastanium-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. Hấp thụ tia laser và tia điện. Chặn kết nối điện tự động. +block.thorium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.thorium-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.phase-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch, phản hầu hết đạn khi va chạm. +block.phase-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch, phản hầu hết đạn khi va chạm. +block.surge-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch, thường phóng ra các tia điện khi đạn va chạm. +block.surge-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch, thường phóng ra các tia điện khi đạn va chạm. +block.door.description = Một bức tường có thể mở và đóng. +block.door-large.description = Một bức tường có thể mở và đóng. +block.mender.description = Sửa chữa định kỳ các khối trong vùng lân cận.\nTùy chọn sử dụng silicon để tăng phạm vi và hiệu quả. +block.mend-projector.description = Sửa chữa các khối lân cận.\nTùy chọn sử dụng sợi lượng tử để tăng phạm vi và hiệu quả. +block.overdrive-projector.description = Tăng tốc độ làm việc của các công trình gần đó.\nTùy chọn sử dụng sợi lượng tử để tăng phạm vi và hiệu quả. +block.force-projector.description = Tạo ra một trường lực lục giác xung quanh nó, bảo vệ các công trình và đơn vị bên trong khỏi bị hư hại.\nQuá nóng nếu chịu quá nhiều sát thương. Tùy chọn sử dụng chất làm mát để chống quá nhiệt. Sử dụng sợi lượng tử để tăng kích thước lá chắn. +block.shock-mine.description = Giải phóng tia điện khi tiếp xúc với đơn vị đối phương. block.conveyor.description = Vận chuyển vật phẩm về phía trước. block.titanium-conveyor.description = Vận chuyển vật phẩm về phía trước. Nhanh hơn băng chuyền tiêu chuẩn. block.plastanium-conveyor.description = Vận chuyển vật phẩm về phía trước theo lô. Nhận các vật phẩm ở phía sau và dỡ chúng theo ba hướng ở phía trước. Yêu cầu nhiều điểm tải và dỡ hàng để có hiệu quả cao nhất. -block.junction.description = Hoạt động như một cầu nối cho hai băng chuyền băng qua. +block.junction.description = Hoạt động như một cầu nối cho hai băng chuyền băng qua nhau. block.bridge-conveyor.description = Vận chuyển vật phẩm qua nhiều loại địa hình hoặc công trình. block.phase-conveyor.description = Vận chuyển tức thời vật phẩm qua địa hình hoặc công trình. Phạm vi dài hơn cầu nối, nhưng cần năng lượng. -block.sorter.description = Nếu vật phẩm giống vật phẩm được chọn sẽ được chuyển đến trước, nếu không sẽ được chuyển qua trái hoặc phải. +block.sorter.description = Nếu vật phẩm giống vật phẩm được chọn, sẽ được chuyển đến trước. Nếu không, sẽ được chuyển qua trái hoặc phải. block.inverted-sorter.description = Giống như bộ lọc, nhưng vật phẩm được chọn sẽ được chuyển qua trái hoặc phải. block.router.description = Phân phối các vật phẩm đầu vào thành 3 hướng đầu ra như nhau. -block.router.details = Không khuyên dùng cạnh đầu vào dây chuyền vì sẽ bị kẹt bởi đầu ra. +block.router.details = Một điều xấu không thể tránh khỏi. Không khuyên dùng cạnh đầu vào sản xuất, vì sẽ bị kẹt bởi đầu ra. block.distributor.description = Phân phối các vật phẩm đầu vào thành 7 hướng đầu ra như nhau. -block.overflow-gate.description = Chỉ đưa vật phẩm ra 2 phía nếu phía trước bị chặn. -block.underflow-gate.description = Ngược với cổng tràn, chỉ đưa vật phẩm đến trước khi hai bên bị chặn. +block.overflow-gate.description = Chỉ đưa vật phẩm ra hai bên nếu phía trước bị chặn. +block.underflow-gate.description = Ngược với cổng tràn, chỉ đưa vật phẩm ra trước khi hai bên bị chặn. block.mass-driver.description = Cấu trúc vận chuyển vật phẩm tầm xa. Thu thập các lô vật phẩm và bắn chúng cho các máy phóng điện từ khác. -block.mechanical-pump.description = Bơm chất lỏng, không yêu cầu năng lượng. -block.rotary-pump.description = Bơm chất lỏng, yêu cầu năng lượng. -block.impulse-pump.description = Bơm chất lỏng. -block.conduit.description = Đẩy chất lỏng đến trước, dùng với bơm và các ống dẫn khác. -block.pulse-conduit.description = Đẩy chất lỏng đến trước, vận chuyển nhanh và trữ nhiều hơn so với ống tiêu chuẩn. -block.plated-conduit.description = Đẩy chất lỏng đến trước, không nhận đầu vào ở bên, không bị rò rỉ. -block.liquid-router.description = Nhận chất lỏng từ một phía và đưa đều ra ba phía còn lại. Có thể trữ một lượng chất lỏng nhất định. +block.mechanical-pump.description = Bơm và cho ra chất lỏng. Không yêu cầu năng lượng. +block.rotary-pump.description = Bơm và cho ra chất lỏng. Yêu cầu năng lượng. +block.impulse-pump.description = Bơm và cho ra chất lỏng. +block.conduit.description = Đẩy chất lỏng đến trước, được dùng để nối với bơm và các ống dẫn khác. +block.pulse-conduit.description = Đẩy chất lỏng đến trước. Vận chuyển nhanh và trữ nhiều hơn so với ống tiêu chuẩn. +block.plated-conduit.description = Đẩy chất lỏng đến trước. Không nhận đầu vào ở bên. Không bị rò rỉ. +block.liquid-router.description = Nhận chất lỏng từ một phía và phân phát đều ra 3 phía còn lại. Có thể trữ một lượng chất lỏng nhất định. block.liquid-container.description = Lưu trữ một lượng vừa phải chất lỏng. Đưa đều ra mọi phía như bộ phân phát chất lỏng. block.liquid-tank.description = Trữ được một lượng lớn chất lỏng. Đưa đều ra mọi phía như bộ phân phát chất lỏng. -block.liquid-junction.description = Chức năng như cầu cho hai ống nước băng chéo nhau. +block.liquid-junction.description = Chức năng như cầu cho hai ống dẫn băng qua nhau. block.bridge-conduit.description = Vận chuyển chất lỏng qua nhiều loại địa hình hoặc công trình. block.phase-conduit.description = Vận chuyển chất lỏng qua địa hình hoặc công trình. Phạm vi dài hơn cầu nối, nhưng cần năng lượng. block.power-node.description = Truyền năng lượng cho các chốt được kết nối. Chốt sẽ nhận năng lượng hoặc cấp năng lượng cho bất kỳ khối nào liền kề. @@ -1958,409 +2117,473 @@ block.surge-tower.description = Một chốt điện tầm xa với ít kết n block.diode.description = Di chuyển năng lượng trong pin theo một hướng, nhưng chỉ khi phía bên kia có ít năng lượng được lưu trữ hơn. block.battery.description = Tích trữ năng lượng khi dư thừa. Xuất năng lượng khi thiếu hụt. block.battery-large.description = Tích trữ năng lượng khi dư thừa. Xuất năng lượng khi thiếu hụt. Dung lượng cao hơn pin thông thường. -block.combustion-generator.description = Tạo ra năng lượng bằng cách đốt các vật liệu dễ cháy như than. +block.combustion-generator.description = Tạo ra năng lượng bằng cách đốt các vật liệu dễ cháy, như than. block.thermal-generator.description = Tạo ra năng lượng khi đặt ở những nơi nóng. block.steam-generator.description = Tạo ra năng lượng bằng cách đốt cháy các vật liệu dễ cháy và chuyển nước thành hơi nước. block.differential-generator.description = Tạo ra một lượng lớn năng lượng. Sử dụng sự chênh lệch nhiệt độ giữa chất làm lạnh và nhiệt thạch đang cháy. block.rtg-generator.description = Sử dụng nhiệt của các hợp chất phóng xạ đang phân hủy để tạo ra năng lượng với tốc độ chậm. block.solar-panel.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời. block.solar-panel-large.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời. Hiệu quả hơn pin mặt trời tiêu chuẩn. -block.thorium-reactor.description = Tạo ra lượng năng lượng lớn từ thorium. Yêu cầu làm mát liên tục. Sẽ phát nổ dữ dội nếu không cung cấp đủ chất làm mát. -block.impact-reactor.description = Tạo ra lượng năng lượng khổng lồ khi đạt hiệu quả cao nhất. Yêu cầu nguồn năng lượng lớn để bắt đầu quá trình. -block.mechanical-drill.description = Khi đặt trên quặng, xuất các vật phẩm với tốc độ chậm. Chỉ có khả năng khai thác các tài nguyên cơ bản. +block.thorium-reactor.description = Tạo ra lượng năng lượng lớn từ thori. Yêu cầu làm mát liên tục. Sẽ phát nổ dữ dội nếu không cung cấp đủ chất làm mát. +block.impact-reactor.description = Tạo ra lượng năng lượng khổng lồ khi đạt hiệu quả cao nhất. Yêu cầu nguồn năng lượng lớn để khởi động quá trình. +block.mechanical-drill.description = Khi đặt trên quặng, xuất vô hạn các vật phẩm với tốc độ chậm. Chỉ có khả năng khai thác các tài nguyên cơ bản. block.pneumatic-drill.description = Máy khoan cải tiến, có khả năng khai thác titan. Khai thác với tốc độ nhanh hơn máy khoan cơ khí. -block.laser-drill.description = Cho phép khoan nhanh hơn nhờ công nghệ laser, nhưng đòi hỏi năng lượng. Có khả năng khai thác thorium. +block.laser-drill.description = Cho phép khoan nhanh hơn nhờ công nghệ laser, nhưng đòi hỏi năng lượng. Có khả năng khai thác thori. block.blast-drill.description = Máy khoan siêu cấp. Yêu cầu lượng năng lượng lớn. -block.water-extractor.description = Khai thác nước ngầm. Được sử dụng ở những nơi không có sẵn nước. -block.cultivator.description = Lọc bào tử có trong không khí và nuôi cấy thành vỏ bào tử. +block.water-extractor.description = Khai thác nước ngầm. Được dùng ở những nơi bề mặt không có sẵn nước. +block.cultivator.description = Lọc bào tử có trong không khí để nuôi cấy thành vỏ bào tử. block.cultivator.details = Công nghệ được phục hồi. Được sử dụng để sản xuất một lượng lớn bào tử. Có thể là nơi ủ ban đầu của các bào tử hiện đang bao phủ Serpulo. -block.oil-extractor.description = Sử dụng lượng năng lượng năng lớn, sử dụng cát và nước để khoan dầu. +block.oil-extractor.description = Sử dụng lượng năng lượng lớn, cát và nước để khoan dầu. block.core-shard.description = Trung tâm của căn cứ. Sau khi bị phá hủy, khu vực này sẽ bị mất. -block.core-shard.details = Căn cứ cấp 1. Gọn nhẹ. Tự thay thế. Được trang bị tên lửa đẩy dùng một lần. Không được thiết kế để di chuyển giữa các hành tinh. -block.core-foundation.description = Trung tâm của căn cứ. Được bọc giáp. Chứa được nhiều tài nguyên hơn Căn cứ: Cơ sỏ. -block.core-foundation.details = Căn cứ cấp 2. -block.core-nucleus.description = Lõi của căn cứ. Bọc giáp chắc chắn. Lưu trữ lượng lớn tài nguyên. -block.core-nucleus.details = Căn cứ cấp 3 và cũng là cấp cao nhất. -block.vault.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với điểm dỡ hàng. -block.container.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với điểm dỡ hàng. -block.unloader.description = Lấy các vật phẩm được chọn từ các ô gần đó. -block.launch-pad.description = Phóng lô vật phẩm vào phân vùng. -block.launch-pad.details = Sub-orbital system for point-to-point transportation of resources. Payload pods are fragile and incapable of surviving re-entry. +block.core-shard.details = Cấp độ thứ nhất. Gọn nhẹ. Tự thay thế. Được trang bị tên lửa đẩy dùng một lần. Không được thiết kế để di chuyển giữa các hành tinh. +block.core-foundation.description = Trung tâm của căn cứ. Được bọc giáp. Chứa được nhiều tài nguyên hơn Lõi: Cơ sở. +block.core-foundation.details = Cấp độ thứ 2. +block.core-nucleus.description = Trung của căn cứ. Bọc giáp chắc chắn. Lưu trữ lượng lớn tài nguyên. +block.core-nucleus.details = Cấp độ thứ 3 và cũng là cấp cuối cùng. +block.vault.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Mở rộng kho lưu trữ khi đặt kế bên một lõi. Nội dung có thể được lấy ra với điểm dỡ hàng. +block.container.description = Lưu trữ lượng nhỏ vật phẩm mỗi loại. Mở rộng kho lưu trữ khi đặt kế bên một lõi. Nội dung có thể được lấy ra với điểm dỡ hàng. +block.unloader.description = Lấy các vật phẩm được chọn từ các khối gần đó. +block.launch-pad.description = Phóng lô vật phẩm vào khu vực được chọn. +block.launch-pad.details = Hệ thống quỹ đạo phụ để vận chuyển tài nguyên từ điểm này sang điểm khác. Các nhóm khối hàng rất dễ vỡ và không có khả năng tồn tại khi tái nhập. block.duo.description = Bắn xen kẽ đạn vào kẻ địch. -block.scatter.description = Bắn chì, phế liệu hoặc thuỷ tinh vào kẻ địch trên không. -block.scorch.description = Đốt mọi kẻ địch trên mặt đất. Hiệu quả cao ở tầm gần. -block.hail.description = Phóng đạn nhỏ vào kẻ địch trên mặt đất ở tầm xa. -block.wave.description = Phóng một tia chất lỏng vào kẻ địch. Tự chữa cháy nếu được cung cấp nước. -block.lancer.description = Tích tụ và phóng tia năng lượng mạnh vào kẻ địch trên mặt đất. -block.arc.description = Phóng tia điện vào kẻ địch trên mặt đất. +block.scatter.description = Bắn khối chì, phế liệu hoặc thuỷ tinh vào kẻ địch trên không. +block.scorch.description = Đốt mọi kẻ địch trên mặt đất ở gần. Hiệu quả cao ở tầm gần. +block.hail.description = Bắn đạn nhỏ vào kẻ địch trên mặt đất ở tầm xa. +block.wave.description = Bắn một tia chất lỏng vào kẻ địch. Tự chữa cháy nếu được cung cấp nước. +block.lancer.description = Tích tụ và bắn tia năng lượng mạnh vào kẻ địch trên mặt đất. +block.arc.description = Bắn tia hồ quang điện vào kẻ địch trên mặt đất. block.swarmer.description = Bắn tên lửa truy đuổi vào kẻ địch. -block.salvo.description = Bắn loạt đạn vào kẻ địch. -block.fuse.description = Bắn ba đạn xuyên giáp tầm gần vào kẻ địch. +block.salvo.description = Bắn loạt đạn nhanh vào kẻ địch. +block.fuse.description = Bắn ba tia đạn xuyên giáp tầm gần vào kẻ địch. block.ripple.description = Bắn cụm đạn vào kẻ địch trên mặt đất ở tầm xa. -block.cyclone.description = Bắn đạn nổ vào kẻ địch ở gần. -block.spectre.description = Bắn đạn xuyên giáp lớn ở kẻ địch trên không và trên mặt đất. -block.meltdown.description = Nạp và bắn một tia laser liên tục vào kẻ địch ở gần. Cần có chất làm mát để hoạt động. +block.cyclone.description = Bắn cụm đạn nổ vào kẻ địch ở gần. +block.spectre.description = Bắn đạn lớn ở kẻ địch trên không và trên mặt đất. +block.meltdown.description = Tích tụ và bắn một tia laser liên tục vào kẻ địch ở gần. Cần có chất làm mát để hoạt động. block.foreshadow.description = Bắn viên một viên đạn tỉa lớn ở tầm xa. Ưu tiên kẻ địch có độ bền tối đa cao nhất. -block.repair-point.description = Liên tục sửa chữa robot ở trong phạm vi hoạt động. -block.segment.description = Gây hư hại và phá hủy đạn đến. Ngoại trừ tia laser. -block.parallax.description = Bắn một tia kéo máy bay địch và làm hư hỏng nó trong quá trình kéo. +block.repair-point.description = Liên tục sửa chữa đơn vị ở trong phạm vi hoạt động. +block.segment.description = Gây hư hại và phá hủy đạn hướng đến. Không nhắm vào tia laser. +block.parallax.description = Bắn một tia kéo mục tiêu trên không và làm hư hỏng nó trong quá trình kéo. block.tsunami.description = Phóng một tia chất lỏng mạnh vào kẻ địch. Tự chữa cháy nếu được cung cấp nước hoặc chất làm mát. block.silicon-crucible.description = Tinh chế silicon từ cát và than, sử dụng nhiệt thạch làm nguồn nhiệt phụ. Có hiệu quả cao hơn khi ở nơi nóng. -block.disassembler.description = Tách xỉ thành các kim loại khác nhau với hiệu suất thấp. Có thể sản xuất thorium. -block.overdrive-dome.description = Tăng tốc độ làm việc của các công trình lân cận. Sử dụng sợi lượng tử and silicon để hoạt động. -block.payload-conveyor.description = Di chuyển những khối hàng lớn, chẳng hạn như các quân lính từ nhà máy. -block.payload-router.description = Tách những khối hàng đầu vào thành 3 hướng đầu ra. -block.ground-factory.description = Sản xuất binh lính bộ binh. Các quân lính đầu ra có thể được sử dụng trực tiếp, hoặc đem nâng cấp. -block.air-factory.description = Sản xuất binh lính không quân. Các quân lính đầu ra có thể được sử dụng trực tiếp, hoặc đem nâng cấp. -block.naval-factory.description = Sản xuất binh lính hải quân. Các quân lính đầu ra có thể được sử dụng trực tiếp, hoặc đem nâng cấp. -block.additive-reconstructor.description = Nâng cấp quân của bạn lên cấp hai. -block.multiplicative-reconstructor.description = Nâng cấp quân của bạn lên cấp ba. -block.exponential-reconstructor.description = Nâng cấp quân của bạn lên cấp bốn. -block.tetrative-reconstructor.description = Nâng cấp quân của bạn nên cấp năm (cuối cùng). -block.switch.description = Công tắc, trạng thái có thể được đọc và điều khiển với vi xử lí logic. -block.micro-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. -block.logic-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn bộ xử lí nhỏ. -block.hyper-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn bộ xử lí. -block.memory-cell.description = Lưu trữ thông tin cho bộ xử lí. -block.memory-bank.description = Lưu trữ thông tin cho bộ xử lí. Dung lượng cao. -block.logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí. -block.large-logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí. -block.interplanetary-accelerator.description = Tòa súng từ trường cỡ lớn. Tăng tốc vật phóng đến vận tốc thoát để di chuyển giữa các hành tinh. -block.repair-turret.description = Sửa chữa những quân lính bị hư hỏng trong khu vực nhất địnhđịnh. Có thể làm mát để tăng hiệu quả. -block.payload-propulsion-tower.description = Cơ cấu vận chuyển các khối hàng tầm xa. Bắn khối hàng cho các tháp đẩy khối hàng kháckhác. -block.core-bastion.description = Trung tâm của căn cứ. Bọc giáp. Khu vực sẽ mất khi bị phá hủy. -block.core-citadel.description = Trung tâm của căn cứ. Bọc giáp tốt hơn. Lưu trữ nhiều vật phẩm hơn căn cứ Pháo đài. -block.core-acropolis.description = Trung tâm của căn cứ. Được bọc giáp rất tốt. Lưu trữ nhiều vật phẩm hơn căn cứ Thủ Phủ. -block.breach.description = Bắn đạn beryllium hoặc tungsten gây cháy vào kẻ địch. -block.diffuse.description = Bắn một loạt đạn gây cháy theo hình nón. Đồng thời đẩy kẻ địch về phía sau. -block.sublimate.description = Thổi tia lửa vào kẻ thù. Có khả năng xuyên giáp. -block.titan.description = Bắn đạn pháo khổng lồ vào các mục tiêu trên mặt đất. Yêu cầu hydrogen. -block.afflict.description = Bắn ra các mảnh vỡ của một quả cầu tích điện khổng lồ. Yêu cầu được làm nóng. -block.disperse.description = Bắng các mảnh gây nổ vào các mục tiêu trên không. -block.lustre.description = Bắn một tia laser vào các mục tiêu của địch. +block.disassembler.description = Tách xỉ thành lượng nhỏ các thành phần khoáng chất lạ với hiệu suất thấp. Có thể sản xuất thori. +block.overdrive-dome.description = Tăng tốc độ làm việc của các công trình lân cận. Sử dụng sợi lượng tử và silicon để hoạt động. +block.payload-conveyor.description = Di chuyển những khối hàng lớn, chẳng hạn như các đơn vị từ nhà máy. Từ tính. Sử dụng ở những môi trường không trọng lực. +block.payload-router.description = Tách những khối hàng đầu vào thành 3 hướng đầu ra. Hoạt động như một bộ lọc khi được thiết lập. Từ tính. Sử dụng ở những môi trường không trọng lực. +block.ground-factory.description = Sản xuất đơn vị bộ binh. Các đơn vị đầu ra có thể được sử dụng trực tiếp, hoặc đưa vào máy tái thiết để nâng cấp. +block.air-factory.description = Sản xuất đơn vị không quân. Các đơn vị đầu ra có thể được sử dụng trực tiếp, hoặc đưa vào máy tái thiết để nâng cấp. +block.naval-factory.description = Sản xuất đơn vị hải quân. Các đơn vị đầu ra có thể được sử dụng trực tiếp, hoặc đưa vào máy tái thiết để nâng cấp. +block.additive-reconstructor.description = Nâng cấp đơn vị đầu vào lên cấp thứ hai. +block.multiplicative-reconstructor.description = Nâng cấp đơn vị đầu vào lên cấp thứ ba. +block.exponential-reconstructor.description = Nâng cấp đơn vị đầu vào lên cấp thứ bốn. +block.tetrative-reconstructor.description = Nâng cấp đơn vị đầu vào lên cấp thứ năm và là cấp cuối cùng. +block.switch.description = Công tắc có thể bật/tắt. Trạng thái có thể được đọc và điều khiển với xử lý logic. +block.micro-processor.description = Chạy tập hợp các chỉ lệnh trong một vòng lặp. Có thể dùng để điều khiển đơn vị và công trình. +block.logic-processor.description = Chạy tập hợp các chỉ lệnh trong một vòng lặp. Có thể dùng để điều khiển đơn vị và công trình. Nhanh hơn bộ xử lý tiểu cấp. +block.hyper-processor.description = Chạy tập hợp các chỉ lệnh trong một vòng lặp. Có thể dùng để điều khiển đơn vị và công trình. Nhanh hơn bộ xử lý trung cấp. +block.memory-cell.description = Lưu trữ thông tin cho bộ xử lý. +block.memory-bank.description = Lưu trữ thông tin cho bộ xử lý. Dung lượng cao. +block.logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lý. +block.large-logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lý. +block.interplanetary-accelerator.description = Tòa tháp súng điện từ cỡ lớn. Tăng tốc vật phóng đến vận tốc thoát để triển khai giữa các hành tinh. +block.repair-turret.description = Sửa chữa những đơn vị bị hư hỏng trong khu vực nhất định. Tùy chọn làm mát để tăng hiệu quả. + +#Erekir +block.core-bastion.description = Trung tâm của căn cứ. Bọc giáp. Một khi bị phá hủy, khu vực sẽ mất. +block.core-citadel.description = Trung tâm của căn cứ. Bọc giáp tốt hơn. Lưu trữ nhiều vật phẩm hơn lõi Pháo đài. +block.core-acropolis.description = Trung tâm của căn cứ. Được bọc giáp rất tốt. Lưu trữ nhiều vật phẩm hơn lõi Thủ Phủ. +block.breach.description = Bắn đạn beryl hoặc tungsten xuyên thấu vào kẻ địch. +block.diffuse.description = Bắn một loạt đạn mảnh theo hình nón. Đẩy kẻ địch về phía sau. +block.sublimate.description = Thổi tia lửa mạnh liên tục vào kẻ địch. Xuyên giáp. +block.titan.description = Bắn đạn pháo nổ khổng lồ vào các mục tiêu trên mặt đất. Yêu cầu hydro. +block.afflict.description = Bắn ra các mảnh vỡ của một quả cầu tích điện khổng lồ. Yêu cầu nhiệt. +block.disperse.description = Bắn các mảnh vỡ vào các mục tiêu trên không. +block.lustre.description = Bắn một tia laser di chuyển chậm một mục tiêu vào các mục tiêu của địch. block.scathe.description = Phóng một tên lửa mạnh vào các mục tiêu trên mặt đất ở khoảng cách lớn. -block.smite.description = Fires bursts of piercing, lightning-emitting bullets. -block.malign.description = Fires a barrage of homing laser charges at enemy targets. Requires extensive heating. +block.smite.description = Bắn viên đạn phát sáng nổ xuyên thấu. +block.malign.description = Bắn chùm hàng loạt những tia laser dẫn đường nhắm thẳng mục tiêu kẻ địch. Yêu cầu lượng nhệt lớn. block.silicon-arc-furnace.description = Tinh chế silicone từ cát và than chì. -block.oxidation-chamber.description = Chuyển đổi beryllium và ozone thành oxide. Tạo ra nhiệt như sản phẩm phụ. -block.electric-heater.description = Làm nóng khối đối diện. Yêu cầu một lượng điện lớn. -block.slag-heater.description = Làm nóng khối đối diện. Yêu cầu xỉ. -block.phase-heater.description = Làm nóng khối đối diện. Yêu cầu sợi lượng tử. +block.oxidation-chamber.description = Chuyển đổi beryl và ôzôn thành ôxit. Tạo ra nhiệt như sản phẩm phụ. +block.electric-heater.description = Làm nóng công trình. Yêu cầu một lượng điện lớn. +block.slag-heater.description = Làm nóng công trinh. Yêu cầu xỉ. +block.phase-heater.description = Làm nóng công trình. Yêu cầu sợi lượng tử. block.heat-redirector.description = Chuyển lượng nhiệt nhận được sang các khối khác. -block.heat-router.description = Chuyển lượng nhiệt nhận được sang ba hướng còn lại. -block.electrolyzer.description = Chuyển đổi nước thành hydrogen và ozone. -block.atmospheric-concentrator.description = Cô đặc nitơ từ khí quyển. Yêu cầu nhiệt. +block.heat-router.description = Phân phát nhiệt nhận được sang ba hướng đầu ra. +block.electrolyzer.description = Chuyển đổi nước thành hydro và ôzôn. Các khí xuất hai hướng đối nhau, được đánh dấu bằng các màu tương ứng. +block.atmospheric-concentrator.description = Cô đặc nitro từ khí quyển. Yêu cầu nhiệt. block.surge-crucible.description = Tinh chế hợp kim từ xỉ và silicon. Yêu cầu nhiệt. -block.phase-synthesizer.description = Tổng hợp sợi lượng tử từ thorium, cát, và ozone. Yêu cầu nhiệt. +block.phase-synthesizer.description = Tổng hợp sợi lượng tử từ thori, cát, và ôzôn. Yêu cầu nhiệt. block.carbide-crucible.description = Kết hợp than chì và tungsten để tạo ra carbide. Yêu cầu nhiệt. -block.cyanogen-synthesizer.description = Tổng hợp cyanogen từ arkycite và than chì. Yêu cầu nhiệt. +block.cyanogen-synthesizer.description = Tổng hợp cyano từ arkycite và than chì. Yêu cầu nhiệt. block.slag-incinerator.description = Đốt các vật phẩm hoặc chất lỏng không bay hơi. Yêu cầu xỉ. -block.vent-condenser.description = Ngưng tụ khí từ lỗ thông hơi để tạo ra nước. Tiêu thụ điện. -block.plasma-bore.description = Khi được đặt đối diện với một bức tường quặng, sản xuất vô hạn vật phẩm. Yêu cầu một lượng điện nhỏ. -block.large-plasma-bore.description = Một máy khoan plasma lớn hơn. Có thể khoan tungsten và thorium. Yêu cầu hydrogen và điện. -block.cliff-crusher.description = Crushes walls, outputting sand indefinitely. Requires power. Efficiency varies based on type of wall. +block.vent-condenser.description = Ngưng tụ khí từ lỗ hơi nước để tạo ra nước. Tiêu thụ điện. +block.plasma-bore.description = Khi được đặt đối diện với một bức tường quặng, sản xuất vô hạn vật phẩm. Yêu cầu một lượng điện nhỏ.\nTùy chọn sử dụng hydro để tăng hiệu suất. +block.large-plasma-bore.description = Một máy khoan plasma lớn hơn. Có thể khoan tungsten và thori. Yêu cầu hydro và điện.\nTùy chọn sử dụng nitro để tăng hiệu suất. +block.cliff-crusher.description = Nghiền vách đá, xuất ra cát vô hạn. Yêu cầu năng lượng. Hiệu quả thay đổi dựa theo loại vách đá. block.impact-drill.description = Khi được đặt lên một loại quặng, sản xuất vô hạn vật phẩm. Yêu cầu điện và nước. -block.eruption-drill.description = Phiên bản cải tiến củ máy khoan động lực. Có thể khoan thorium. Yêu cầu hydrogen. -block.reinforced-conduit.description = Di chuyển chất lỏng về phía trước. Không nhận đầu vào từ các bên. +block.eruption-drill.description = Phiên bản cải tiến của máy khoan động lực. Có thể khoan thori. Yêu cầu hydro. +block.reinforced-conduit.description = Di chuyển chất lỏng về phía trước. Không nhận đầu vào nếu không phải ống dẫn từ các bên. block.reinforced-liquid-router.description = Phân chia chất lỏng đều cho tất cả các bên. -block.reinforced-junction.description = Làm cầu nối cho hai ống dẫn chất lỏng giao nhau. block.reinforced-liquid-tank.description = Lưu trữ một lượng chất lỏng lớn. block.reinforced-liquid-container.description = Lưu trữ một lượng chất lỏng vừa phải. block.reinforced-bridge-conduit.description = Vận chuyển chất lỏng qua các công trình và địa hình. -block.reinforced-pump.description = Bơm chất lỏng lên. Yêu cầu hydrogen. -block.beryllium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.beryllium-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.tungsten-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.tungsten-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.carbide-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.carbide-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.reinforced-surge-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù, phóng ra các tia điện khi gặp đạn đối phương. -block.reinforced-surge-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ thù, phóng ra các tia điện khi gặp đạn đối phương.. -block.shielded-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. Triển khai một cái khiên chống đạn khi được cung cấp điện. Dẫn điện. -block.blast-door.description = Một loại tường tự động mở ra khi quân lính đang ở gần. Không thể điều khiển bằng tay. +block.reinforced-pump.description = Bơm chất lỏng lên. Yêu cầu hydro. +block.beryllium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.beryllium-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.tungsten-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.tungsten-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.carbide-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.carbide-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.reinforced-surge-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch, thường phóng ra các tia điện khi đạn va chạm. +block.reinforced-surge-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch, thường phóng ra các tia điện khi đạn va chạm. +block.shielded-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch, phản hồi hầu hết các loại đạn khi va chạm. Triển khai một lá chắn chống đạn khi được cung cấp điện. Dẫn điện. +block.blast-door.description = Một loại tường tự động mở ra khi đơn vị mặt đất đang ở gần. Không thể điều khiển một cách thủ công. block.duct.description = Di chuyển vật phẩm về phía trước. Chỉ có thể lưu trữ một vật phẩm. -block.armored-duct.description = Di chuyển vật phẩm về phía trước. Không nhận đầu vào từ các bên. +block.armored-duct.description = Di chuyển vật phẩm về phía trước. Không nhận đầu vào nếu không phải ống chân không từ các bên. block.duct-router.description = Phân chia vật phẩm đều cho tất cả các bên. Chỉ nhận đầu vào từ phía sau. Có thể được cấu hình thành một bộ sắp xếp vật phẩm. -block.overflow-duct.description = Chỉ xuất vật phẩm ra các bên nếu đường dẫn phía trước bị chặn. +block.overflow-duct.description = Chỉ xuất vật phẩm ra các bên nếu đường phía trước bị chặn. block.duct-bridge.description = Vận chuyển vật phẩm qua các công trình và địa hình. -block.duct-unloader.description = Lấy ra vật phẩm đã chọn từ khối phía sau nó. Không thể lấy ra từ các căn cứ. -block.underflow-duct.description = Ngược lại với một ống tràn chân không. Xuất ra phía trước nếu các đường dẫn bên trái và phải bị chặn. +block.duct-unloader.description = Lấy ra vật phẩm đã chọn từ khối phía sau nó. Không thể lấy ra từ các lõi. +block.underflow-duct.description = Ngược lại với một ống tràn chân không. Xuất ra phía trước nếu các đường bên trái và phải bị chặn. block.reinforced-liquid-junction.description = Làm cầu nối cho hai ống dẫn chất lỏng giao nhau. block.surge-conveyor.description = Di chuyển vật phẩm theo lô. Có thể được tăng tốc bằng điện. Dẫn điện. block.surge-router.description = Phân chia vật phẩm đều cho tất cả các bên từ các băng chuyền hợp kim. Có thể được tăng tốc bằng điện. Dẫn điện. -block.unit-cargo-loader.description = Constructs cargo drones. Drones automatically distribute items to Cargo Unload Points with a matching filter. -block.unit-cargo-unload-point.description = Acts as an unloading point for cargo drones. Accepts items that match the selected filter. +block.unit-cargo-loader.description = Tạo thiết bị bay chở hàng. Thiết bị bay tự động phân phát các món đồ đến Điểm thả hàng khớp với bộ lọc. +block.unit-cargo-unload-point.description = Hoạt động như một điểm thả hàng cho thiết bị bay chở hàng. Nhận món đồ khớp với bộ lọc đã chọn. block.beam-node.description = Truyền điện cho các khối khác theo hướng thẳng. Lưu trữ một lượng điện nhỏ. block.beam-tower.description = Truyền điện cho các khối khác theo hướng thẳng. Lưu trữ một lượng điện lớn. Có phạm vi rộng. -block.turbine-condenser.description = Tạo ra điện khi được đặt trên các lỗ thông hơi. Tạo ra một lượng nước nhỏ. -block.chemical-combustion-chamber.description = Tạo ra điện từ arkycite và ozone. +block.turbine-condenser.description = Tạo ra điện khi được đặt trên các lỗ hơi nước. Tạo ra một lượng nước nhỏ. +block.chemical-combustion-chamber.description = Tạo ra điện từ arkycite và ôzôn. block.pyrolysis-generator.description = Tạo ra một lượng điện lớn từ arkycite và xỉ nóng chảy. Tạo ra nước như một sản phẩm phụ. -block.flux-reactor.description = Tạo ra một lượng điện lớn khi được làm nóng. Yêu cầu sử dụng cyanogen như một chất làm ổn định. Lượng điện tạo ra và lượng tiêu thụ cyanogen tỷ lệ thuận với lượng nhiệt nhận được.\nPhát nổ nếu không cung cấp đủ cyanogen. -block.neoplasia-reactor.description = Sử dụng arkycite, nước và sợi lượng tử để tạo ra lượng điện khổng lồ. Tạo ra nhiệt và neoplasm như sản phẩm phụ trong quá trình hoạt động.\nPhát nổ dữ dội nếu không được loại bỏ khỏi lò phản ứng. -block.build-tower.description = Tự động xây dựng lại các công trình trong phạm vi và hỗ trợ các quân lính khác trong quá trình xây dựng. -block.regen-projector.description = Sửa chữa các công trình một cách chậm rãi trong phạm vi hình vuông. Yêu cầu hidrogen. -block.reinforced-container.description = Lưu trữ một lượng nhỏ vật phẩm. Vật phẩm có thể được lấy ra thông qua các điểm dỡ hàng. Không làm tăng khả năng lưu trữ của căn cứ. -block.reinforced-vault.description = Lưu trữ một lượng lớn vật phẩm. Vật phẩm có thể được lấy ra thông qua các điểm dỡ hàng. Không làm tăng khả năng lưu trữ của căn cứ. -block.tank-fabricator.description = Chế tạo quân lính Stell. Các quân lính được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy chế tạo khác để được nâng cấp. -block.ship-fabricator.description = Chế tạo quân lính Elude. Các quân lính được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy chế tạo khác để được nâng cấp. -block.mech-fabricator.description = Chế tạo quân lính Merui. Các quân lính được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy chế tạo khác để được nâng cấp. -block.tank-assembler.description = Lắp ráp các xe tăng lớn từ các khối và quân lính. Cấp độ đầu ra có thể được tăng bằng cách thêm các module. -block.ship-assembler.description = Lắp ráp các phi thuyền lớn từ các khối và quân lính. Cấp độ đầu ra có thể được tăng bằng cách thêm các module. -block.mech-assembler.description = Lắp ráp các lính cơ động lớn từ các khối và quân lính. Cấp độ đầu ra có thể được tăng bằng cách thêm các module. -block.tank-refabricator.description = Nâng cấp các xe tăng lên cấp hai. -block.ship-refabricator.description = Nâng cấp các phi thuyền lên cấp hai. -block.mech-refabricator.description = Nâng cấp các quân lính cơ động lên cấp hai. -block.prime-refabricator.description = Nâng cấp các quân lính lên cấp ba. +block.flux-reactor.description = Tạo ra một lượng điện lớn khi được làm nóng. Yêu cầu sử dụng cyano như một chất làm ổn định. Lượng điện tạo ra và lượng tiêu thụ cyano tỷ lệ thuận với lượng nhiệt nhận được.\nPhát nổ nếu không cung cấp đủ cyano. +block.neoplasia-reactor.description = Sử dụng arkycite, nước và sợi lượng tử để tạo ra lượng điện khổng lồ. Tạo ra nhiệt và lượng tế bào tân sinh nguy hiểm như sản phẩm phụ trong quá trình hoạt động.\nPhát nổ dữ dội nếu tế bào tân sinh không được loại bỏ khỏi lò phản ứng. +block.build-tower.description = Tự động xây dựng lại các công trình trong phạm vi và hỗ trợ các đơn vị khác trong quá trình xây dựng. +block.regen-projector.description = Sửa chữa các công trình một cách chậm rãi trong phạm vi hình vuông. Yêu cầu hydro.\nTùy chọn sử dụng sợi lượng tử để tăng hiệu suất. +block.reinforced-container.description = Lưu trữ một lượng nhỏ vật phẩm. Nội dung có thể được lấy ra thông qua các điểm dỡ hàng. Không làm tăng khả năng lưu trữ của lõi. +block.reinforced-vault.description = Lưu trữ một lượng lớn vật phẩm. Nội dung có thể được lấy ra thông qua các điểm dỡ hàng. Không làm tăng khả năng lưu trữ của lõi. +block.tank-fabricator.description = Chế tạo đơn vị Stell. Các đơn vị được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy tái chế tạo khác để được nâng cấp. +block.ship-fabricator.description = Chế tạo đơn vị Elude. Các đơn vị được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy tái chế tạo khác để được nâng cấp. +block.mech-fabricator.description = Chế tạo đơn vị Merui. Các đơn vị được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy tái chế tạo khác để được nâng cấp. +block.tank-assembler.description = Lắp ráp các xe tăng lớn từ các khối và đơn vị. Cấp độ đầu ra có thể được tăng bằng cách thêm các mô-đun. +block.ship-assembler.description = Lắp ráp các phi thuyền lớn từ các khối và đơn vị. Cấp độ đầu ra có thể được tăng bằng cách thêm các mô-đun. +block.mech-assembler.description = Lắp ráp các máy cơ động lớn từ các khối và đơn vị. Cấp độ đầu ra có thể được tăng bằng cách thêm các mô-đun. +block.tank-refabricator.description = Nâng cấp các xe tăng đầu vào lên cấp thứ hai. +block.ship-refabricator.description = Nâng cấp các phi thuyền đầu vào lên cấp thứ hai. +block.mech-refabricator.description = Nâng cấp các máy cơ động đầu vào lên cấp thứ hai. +block.prime-refabricator.description = Nâng cấp các đơn vị đầu vào lên cấp thứ ba. block.basic-assembler-module.description = Tăng cấp lắp ráp khi đặt cạnh một hệ thống lắp ráp. Yêu cầu điện. Có thể sử dụng như nơi nhập các khối hàng. -block.small-deconstructor.description = Tháo dỡ các công trình và quân lính đầu vào. Trả lại 100% chi phí tạo ra. +block.small-deconstructor.description = Tháo dỡ các công trình và đơn vị đầu vào. Trả lại 100% chi phí xây dựng. block.reinforced-payload-conveyor.description = Di chuyển khối hàng tiến về phía trước. -block.reinforced-payload-router.description = Phân chia các khối hàng vào các khối liền kề. Hoạt động như một bộ lọc khi thiết lập bộ lọc. -block.payload-mass-driver.description = Phương pháp vận chuyển khối hàng tầm xa. Bắn các khối hàng nhận được đến các máy phóng từ trường được liên kết. -block.large-payload-mass-driver.description = Phương pháp vận chuyển khối hàng tầm xa. Bắn các khối hàng nhận được đến các máy phóng từ trường được liên kết. -block.unit-repair-tower.description = Sửa chữa tất cả các quân lính trong phạm vi. Yêu cầu ozone. -block.radar.description = Quét một phạm vi lớn để phát hiện các đơn vị kẻ địch và mở rộng bản đồ. Yêu cầu điện. -block.shockwave-tower.description = Phá hủy và tiêu diệt các loại đạn của kẻ địch trong một phạm vi. Yêu cầu cyanogen. +block.reinforced-payload-router.description = Phân chia các khối hàng vào các khối liền kề. Hoạt động như một bộ lọc khi được thiết lập. +block.payload-mass-driver.description = Công trình vận chuyển khối hàng tầm xa. Bắn các khối hàng nhận được đến các máy phóng từ trường được liên kết. +block.large-payload-mass-driver.description = Công trình vận chuyển khối hàng tầm xa. Bắn các khối hàng nhận được đến các máy phóng từ trường được liên kết. +block.unit-repair-tower.description = Sửa chữa tất cả các đơn vị trong phạm vi. Yêu cầu ôzôn. +block.radar.description = Rà soát địa hình và đơn vị kẻ địch một cách từ từ trong môt phạm vi lớn. Yêu cầu điện. +block.shockwave-tower.description = Phá hủy và tiêu diệt các loại đạn của kẻ địch trong một phạm vi. Yêu cầu cyano. block.canvas.description = Hiển thị một hình ảnh đơn giản với một bảng màu được định sẵn. Có thể chỉnh sửa. -unit.dagger.description = Bắn đạn tiêu chuẩn vào tất cả kẻ địch xung quanh. -unit.mace.description = Phun lửa vào tất cả kẻ địch xung quanh. -unit.fortress.description = Bắn pháo tầm xa lên kẻ địch trên mặt đất. -unit.scepter.description = Bắn một chùm đạn vào kẻ địch ở gần. -unit.reign.description = Bắn một chùm đạn xuyên giáp vào kẻ địch ở gần. -unit.nova.description = Bắn tia laser làm tổn hại kẻ địch và sửa chữa các tòa nhà. Có khả năng bay. -unit.pulsar.description = Bắn tia điện làm tổn hại kẻ địch và sửa chữa các tòa nhà. Có khả năng bay. -unit.quasar.description = Bắn tia laser xuyên giáp làm tổn hại kẻ địch và sửa chữa các tòa nhà. Có khả năng bay. Được bọc giáp. -unit.vela.description = Bắn tia laser liên tục xuyên giáp làm tổn hại kẻ địch, gây cháy và sửa chữa các tòa nhà. Có khả năng bay. -unit.corvus.description = Bắn đia laser đánh bật kẻ địch và sửa chữa các tòa nhà. Có thể đi qua đa số địa hình. -unit.crawler.description = Chạy đến kẻ địch và nổ. -unit.atrax.description = Phun xỉ nóng chảy vào kẻ địch trên mặt đất. Có thể đi qua đa số địa hình. -unit.spiroct.description = Bắn tia laser vào kẻ địch trên mặt đất và tự sửa chữa nó. Có thể đi qua đa số địa hình. -unit.arkyid.description = Bắn tia laser lớn vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình. -unit.toxopid.description = Bắn chùm đạn điện và tia laser xuyên giáp vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình. -unit.flare.description = Bắn đạn thường vào kẻ địch tầm gần trên mặt đất. -unit.horizon.description = Thả chùm bom lên kẻ địch trên mặt đất. -unit.zenith.description = Bắn chùm tên lửa vào mọi kẻ địch tầm gần. -unit.antumbra.description = Bắn chùm đạn vào mọi kẻ địch tầm gần. -unit.eclipse.description = Bắn hai tia laser xuyên giáp và chùm flak vào mọi kẻ địch tầm gần. -unit.mono.description = Tự động khai thác đồng và chì, và vận chuyển vào căn cứ. -unit.poly.description = Tự động xây dựng lại các công trình bị hỏng và hỗ trợ các quân lính khác thi công. -unit.mega.description = Tự động sửa chữa các công trình bị hỏng. Có khả năng mang bộ binh nhỏ. -unit.quad.description = Thả bom to lên kẻ địch, sửa chữa các tòa nhà và tổn hại kẻ địch. Có khả năng mang bộ binh vừa. -unit.oct.description = Bảo vệ đồng minh với giáp. Có khả năng mang đa số bộ binh. -unit.risso.description = Bắn chùm tên lửa và đạn lên kẻ địch tầm gần. -unit.minke.description = Bắn đạn và đạn thường lên kẻ địch tầm gần trên mặt đất. -unit.bryde.description = Bắn đạn tầm xa và tên lửa vào kẻ địch. -unit.sei.description = Bắn chùm tên lửa và đạn xuyên giáp vào kẻ địch. -unit.omura.description = Bắn đạn từ trường xuyên giáp tầm xa vào kẻ địch. Tạo nên Flare. -unit.alpha.description = Bảo vệ căn cứ cơ sở khỏi kẻ thù. Có thể xây dựng. -unit.beta.description = Bảo vệ căn cứ trụ sở khỏi kẻ thù. Có thể xây dựng. -unit.gamma.description = Bảo vệ căn cứ trung tâm khỏi kẻ thù. Có thể xây dựng. -unit.retusa.description = Fires homing torpedoes at nearby enemies. Repairs allied units. -unit.oxynoe.description = Fires structure-repairing streams of flame at nearby enemies. Targets nearby enemy projectiles with a point defense turret. -unit.cyerce.description = Fires seeking cluster-missiles at enemies. Repairs allied units. -unit.aegires.description = Shocks all enemy units and structures that enter its energy field. Repairs all allies. -unit.navanax.description = Fires explosive EMP projectiles, dealing significant damage to enemy power networks and repairing allied structures. Melts nearby enemies with 4 autonomous laser turrets. -unit.stell.description = Fires standard bullets at enemy targets. -unit.locus.description = Fires alternating bullets at enemy targets. -unit.precept.description = Fires piercing cluster bullets at enemy targets. -unit.vanquish.description = Fires large piercing splitting bullets at enemy targets. -unit.conquer.description = Fires large piercing cascades of bullets at enemy targets. -unit.merui.description = Fires long-range artillery at enemy ground targets. Can step over most terrain. -unit.cleroi.description = Fires dual shells at enemy targets. Targets enemy projectiles with point defense turrets. Can step over most terrain. -unit.anthicus.description = Fires long-range homing missiles at enemy targets. Can step over most terrain. -unit.tecta.description = Fires homing plasma missiles at enemy targets. Protects itself with a directional shield. Can step over most terrain. -unit.collaris.description = Fires long-range fragmenting artillery at enemy targets. Can step over most terrain. -unit.elude.description = Fires pairs of homing bullets at enemy targets. Can float over bodies of liquid. -unit.avert.description = Fires twisting pairs of bullets at enemy targets. -unit.obviate.description = Fires twisting pairs of lightning orbs at enemy targets. -unit.quell.description = Fires long-range homing missiles at enemy targets. Suppresses enemy structure repair blocks. -unit.disrupt.description = Fires long-range homing suppression missiles at enemy targets. Suppresses enemy structure repair blocks. -unit.evoke.description = Builds structures to defend the Bastion core. Repairs structures with a beam. -unit.incite.description = Builds structures to defend the Citadel core. Repairs structures with a beam. -unit.emanate.description = Builds structures to defend the Acropolis core. Repairs structures with beams. +unit.dagger.description = Bắn các viên đạn tiêu chuẩn vào các mục tiêu kẻ địch. +unit.mace.description = Phun tia lửa vào các mục tiêu kẻ địch. +unit.fortress.description = Bắn pháo tầm xa lên các mục tiêu kẻ địch trên mặt đất. +unit.scepter.description = Bắn một chùm đạn tích tụ vào các mục tiêu kẻ địch. +unit.reign.description = Bắn một chùm đạn xuyên giáp mạnh vào các mục tiêu kẻ địch. +unit.nova.description = Bắn tia laser gây sát thương lên các mục tiêu kẻ địch và sửa chữa các công trình đồng minh. Có khả năng bay. +unit.pulsar.description = Bắn tia điện gây sát thương lên các mục tiêu kẻ địch và sửa chữa các công trình đồng minh. Có khả năng bay. +unit.quasar.description = Bắn tia laser xuyên giáp gây sát thương lên các mục tiêu kẻ địch và sửa chữa các công trình đồng minh. Có khả năng bay. Có lá chắn. +unit.vela.description = Bắn tia laser liên tục xuyên giáp gây sát thương lên các mục tiêu kẻ địch, gây cháy và sửa chữa các công trình đồng minh. Có khả năng bay. +unit.corvus.description = Bắn đia laser cực mạnh gây sát thương lên các mục tiêu kẻ địch và sửa chữa các công trình đồng minh. Có thể đi qua hầu hết loại địa hình. +unit.crawler.description = Chạy thẳng đến kẻ địch và tự hủy, gây ra vụ nổ lớn. +unit.atrax.description = Phun tia xỉ nóng chảy gây suy nhược vào kẻ địch trên mặt đất. Có thể đi qua hầu hết loại địa hình. +unit.spiroct.description = Bắn tia laser gây ăn mòn vào các mục tiêu kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua hầu hết loại địa hình. +unit.arkyid.description = Bắn tia laser lớn gây ăn mòn vào các mục tiêu kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua hầu hết loại địa hình. +unit.toxopid.description = Bắn chùm đạn điện và tia laser xuyên giáp vào các mục tiêu kẻ địch trên mặt đất. Có thể đi qua hầu hết loại địa hình. +unit.flare.description = Bắn đạn tiêu chuẩn vào các mục tiêu kẻ địch trên mặt đất. +unit.horizon.description = Thả chùm bom lên các mục tiêu kẻ địch trên mặt đất. +unit.zenith.description = Bắn chùm tên lửa vào các mục tiêu kẻ địch. +unit.antumbra.description = Bắn chùm đạn vào các mục tiêu kẻ địch. +unit.eclipse.description = Bắn hai tia laser xuyên giáp và pháo chùm vào các mục tiêu kẻ địch. +unit.mono.description = Tự động khai thác đồng và chì, vận chuyển vào lõi. +unit.poly.description = Tự động xây dựng lại các công trình bị phá hủy và hỗ trợ các đơn vị khác thi công. +unit.mega.description = Tự động sửa chữa các công trình bị hỏng. Có khả năng mang theo một số khối và đơn vị bộ binh nhỏ. +unit.quad.description = Thả bom plasma to lên kẻ địch, sửa chữa các công trình và sát thương các mục kẻ địch trên mặt đất. Có khả năng mang theo đơn vị bộ binh cỡ trung. +unit.oct.description = Bảo vệ đồng minh với lá chắn tự hồi phục. Có khả năng mang theo hầu hết các loại đơn vị bộ binh. +unit.risso.description = Bắn chùm tên lửa và đạn vào các mục tiêu kẻ địch. +unit.minke.description = Bắn chùm đạn và đạn tiêu chuẩn vào các mục tiêu kẻ địch trên mặt đất. +unit.bryde.description = Bắn đạn tầm xa và tên lửa vào các mục tiêu kẻ địch. +unit.sei.description = Bắn chùm tên lửa và đạn xuyên giáp vào các mục tiêu kẻ địch. +unit.omura.description = Bắn đạn điện trường xuyên giáp tầm xa vào các mục tiêu kẻ địch. Tạo ra các đơn vị Flare. +unit.alpha.description = Bảo vệ lõi Cơ sở khỏi kẻ địch. Có thể xây dựng. +unit.beta.description = Bảo vệ lõi Trụ sở khỏi kẻ địch. Có thể xây dựng. +unit.gamma.description = Bảo vệ lõi Trung tâm khỏi kẻ địch. Có thể xây dựng. +unit.retusa.description = Bắn ngư lôi dẫn đường vào các mục tiêu kẻ địch. Sửa đơn vị đồng minh. +unit.oxynoe.description = Bắn luồng tia lửa sửa công trình vào các mục tiêu kẻ địch. Nhắm vào viên đạn kẻ địch với bệ súng phòng thủ mũi nhọn. +unit.cyerce.description = Bắn chùm tên lửa dẫn đường vào các mục tiêu kẻ địch. Sửa đơn vị đồng minh. +unit.aegires.description = Gây sốc lên tất cả đơn vị và công trình bên trong trường năng lượng của nó. Sửa chữa tất cả đồng minh. +unit.navanax.description = Bắn tia xung điện từ (EMP) nổ, gây thiệt hại đáng kể lên mạng lưới năng lượng và sửa chữa công trình đồng minh. Nung chảy kẻ địch ở gần với 4 bệ súng laser tự hành. + +#Erekir +unit.stell.description = Bắn các viên đạn tiêu chuẩn vào các mục tiêu kẻ địch. +unit.locus.description = Bắn các viên đạn xen kẽ vào các mục tiêu kẻ địch. +unit.precept.description = Bắn các viên đạn phân cụm xuyên thấu vào các mục tiêu kẻ địch. +unit.vanquish.description = Bắn các viên đạn phân chia xuyên thấu lớn vào các mục tiêu kẻ địch. +unit.conquer.description = Bắn các viên đạn xếp tầng xuyên thấu vào các mục tiêu kẻ địch. +unit.merui.description = Bắn pháo tầm xa vào các mục tiêu kẻ địch trên mặt đất. Có thể đi qua hầu hết loại địa hình. +unit.cleroi.description = Bắn trái phá kép vào các mục tiêu kẻ địch. Nhắm vào viên đạn kẻ địch với các bệ súng phòng thủ mũi nhọn. Có thể đi qua hầu hết loại địa hình. +unit.anthicus.description = Bắn tên lửa dẫn đường tầm xa vào các mục tiêu kẻ địch. Có thể đi qua hầu hết loại địa hình. +unit.tecta.description = Bắn tên lửa plasma dẫn đường vào các mục tiêu kẻ địch. Tự bảo vệ chính nó với khiên định hướng. Có thể đi qua hầu hết loại địa hình. +unit.collaris.description = Bắn pháo phân mảnh tầm xa vào các mục tiêu kẻ địch. Có thể đi qua hầu hết loại địa hình. +unit.elude.description = Bắn một cặp viên đạn dẫn đường vào các mục tiêu kẻ địch. Có thể lướt trên mặt chất lỏng. +unit.avert.description = Bắn một cặp viên đạn xoắn vào các mục tiêu kẻ địch. +unit.obviate.description = Bắn một cặp cầu điện xoắn vào các mục tiêu kẻ địch. +unit.quell.description = Bắn tên lửa dẫn đường tầm xa vào các mục tiêu kẻ địch. Ngăn chặn khối công trình sửa chữa của kẻ địch. Chỉ tấn công mục tiêu mặt đất. +unit.disrupt.description = Bắn tên lửa oanh tạc dẫn đường tầm xa vào các mục tiêu kẻ địch. Ngăn chặn khối công trình sửa chữa của kẻ địch. Chỉ tấn công mục tiêu mặt đất. +unit.evoke.description = Xây công trình để phòng thủ lõi Pháo đài. Sửa các công trình với một tia sáng. Có khả năng mang khối công trình 2x2. +unit.incite.description = Xây công trình để phòng thủ lõi Thủ phủ. Sửa các công trình với một tia sáng. Có khả năng mang khối công trình 2x2. +unit.emanate.description = Xây công trình để phòng thủ lõi Đại đô. Sửa các công trình với chùm tia sáng. Có khả năng mang khối công trình 2x2. lst.read = Đọc một số từ bộ nhớ được liên kết. lst.write = Ghi một số vào bộ nhớ được liên kết. -lst.print = Thêm văn bản vào bộ nhớ in.\nKhông hiển thị gì cho đến khi sử dụng [accent]Print Flush[]. -lst.draw = Thêm một thao tác vào bộ nhớ vẽ.\nKhông hiển thị gì cho đến khi sử dụng [accent]Draw Flush[]. -lst.drawflush = Chuyển các thao tác [accent]Draw[] đến màn hình. -lst.printflush = Chuyển các thao tác [accent]Print[] đến khối tin nhắn. -lst.getlink = Nhận liên kết bộ xử lý theo thứ tự. Bắt đầu từ 0. -lst.control = Điều khiển một khối. -lst.radar = Định vị các quân lính trong phạm vi xung quanh một khối. -lst.sensor = Lấy dữ liệu từ một khối hoặc quân lính. -lst.set = Đặt một biến. -lst.operation = Thực hiện thao tác trên 1-2 biến. -lst.end = Chuyển đến lệnh đầu tiên. -lst.wait = Chờ trong khoảng thời gian nhất định. -lst.stop = Halt execution of this processor. -lst.lookup = Look up an item/liquid/unit/block type by ID.\nTotal counts of each type can be accessed with:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] -lst.jump = Chuyển qua lệnh khác nếu điều kiện đúng. -lst.unitbind = Bind to the next unit of a type, and store it in [accent]@unit[]. -lst.unitcontrol = Control the currently bound unit. -lst.unitradar = Locate units around the currently bound unit. -lst.unitlocate = Locate a specific type of position/building anywhere on the map.\nRequires a bound unit. -lst.getblock = Lấy dữ liệu từ ô từ vị trí bất kì. -lst.setblock = Chỉnh sửa dữ liệu từ ô từ vị trí bất kì. -lst.spawnunit = Tạo ra quân từ vị trí. -lst.applystatus = Apply or clear a status effect from a uniut. -lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. -lst.explosion = Tạo ra một vụ nổ tại vị trí đó. -lst.setrate = Set processor execution speed in instructions/tick. -lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. -lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. -lst.setrule = Set a game rule. -lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. -lst.cutscene = Manipulate the player camera. -lst.setflag = Set a global flag that can be read by all processors. -lst.getflag = Check if a global flag is set. -lst.setprop = Sets a property of a unit or building. +lst.print = Thêm văn bản vào bộ đệm in.\nKhông hiển thị gì cho đến khi [accent]Print Flush[] được sử dụng. +lst.format = Thay thế từ giữ chỗ tiếp theo trong bộ đệm văn bản bằng giá trị.\nKhông làm gì nếu khuôn mẫu từ giữ chỗ không hợp lệ.\nKhuôn mẫu từ giữ chỗ: "{[accent]số 0-9[]}"\nVí dụ:\n[accent]print "ví dụ {0}"\nformat "mẫu" +lst.draw = Thêm một thao tác vào bộ đệm vẽ.\nKhông hiển thị gì cho đến khi [accent]Draw Flush[] được sử dụng. +lst.drawflush = Đẩy các thao tác [accent]Draw[] theo trình tự đến màn hình. +lst.printflush = Đẩy các thao tác [accent]Print[] theo trình tự đến khối thông điệp. +lst.getlink = Nhận liên kết bộ xử lý theo chỉ số. Bắt đầu từ 0. +lst.control = Điều khiển một công trình. +lst.radar = Định vị các đơn vị trong phạm vi xung quanh một công trình. +lst.sensor = Lấy dữ liệu từ một công trình hoặc đơn vị. +lst.set = Thiết đặt một biến. +lst.operation = Thực hiện một thao tác trên 1-2 biến. +lst.end = Nhảy đến chỉ lệnh đầu tiên. +lst.wait = Chờ trong số giây nhất định. +lst.stop = Ngừng thực thi khối xử lý này. +lst.lookup = Tra cứu một kiểu vật phẩm/chất lỏng/đơn vị/khối bởi định danh (ID).\nTổng số đếm của mỗi kiểu có thể truy xuất qua:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[]\nĐể thao tác ngược lại, dùng sense [accent]@id[] của vật thể đó. +lst.jump = Nhảy có điều kiện qua lệnh khác. +lst.unitbind = Gắn kết đơn vị tiếp theo của một kiểu, và lưu nó trong [accent]@unit[]. +lst.unitcontrol = Điều khiển đơn vị đang gắn kết. +lst.unitradar = Xác định đơn vị xung quanh đơn vị đang gắn kết. +lst.unitlocate = Xác định một kiểu cố định của vị trí/công trình bất kỳ đâu trên bản đồ.\nYêu cầu một đơn vị đang gắn kết. +lst.getblock = Lấy dữ liệu của ô tại vị trí bất kỳ. +lst.setblock = Chỉnh sửa dữ liệu của ô tại vị trí bất kỳ. +lst.spawnunit = Tạo ra đơn vị tại một vị trí. +lst.applystatus = Áp dụng hoặc loại bỏ một hiệu ứng trạng thái cho một đơn vị. +lst.weathersense = Kiểm tra kiểu thời tiết có đang hoạt động. +lst.weatherset = Thiết lập trạng thái hiện tại của kiểu thời tiết. +lst.spawnwave = Làm xuất hiện một đợt. +lst.explosion = Tạo ra một vụ nổ tại một vị trí. +lst.setrate = Đặt tốc độ thực thi khối xử lý theo chỉ lệnh/tích-tắc. +lst.fetch = Tra cứu các đơn vị, lõi, người chơi hoặc công trình bằng chỉ số.\nCác chỉ số bắt đầu từ 0 và kết thúc tại số lượng đếm của chúng. +lst.packcolor = Đóng gói màu thành phần RGBA [0, 1] thành một số đơn dùng cho vẽ hoặc thiết lập quy tắc. +lst.setrule = Thiết đặt một quy tắc trò chơi. +lst.flushmessage = Hiển thị một tin nhắn trên màn hình từ bộ đệm văn bản.\nSẽ đợi cho đến khi tin nhắn trước đó hoàn tất. +lst.cutscene = Điều khiển máy quay của người chơi. +lst.setflag = Thiết đặt một cờ toàn cục mà có thể đọc được bởi tất cả khối xử lý. +lst.getflag = Kiểm tra nếu cờ toàn cục được đặt. +lst.setprop = Thiết đặt một thuộc tính của đơn vị hoặc công trình. +lst.effect = Tạo một phần hiệu ứng nhỏ. +lst.sync = Đồng bộ biến số qua mạng.\nChỉ gọi tối đa 20 lần mỗi giây cho mỗi biến. +lst.makemarker = Tạo mới điểm đánh dấu logic trên thế giới.\nMột định danh cho điểm đánh dấu này phải được cung cấp.\nĐiểm đánh dấu hiện tại bị giới hạn 20,000 trên mỗi thế giới. +lst.setmarker = Thiết đặt một thuộc tính cho một điểm đánh dấu.\nĐịnh danh phải giống như định danh ở chỉ lệnh Tạo Điểm đánh dấu (Make Marker).\nGiá trị [accent]null[] sẽ bị phớt lờ. +lst.localeprint = Thêm một giá trị thuộc tính ngôn ngữ của bản đồ vào bộ đệm văn bản.\nĐể thiết đặt gói ngôn ngữ trong trình chỉnh sửa bản đồ, xem qua [accent]Thông tin bản đồ > Gói ngôn ngữ[].\nNếu máy khách là một thiết bị di động, sẽ cố in thuộc tính kết thúc bằng ".mobile" trước tiên. -logic.nounitbuild = [red]Unit building logic is not allowed here. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = Hằng số toán học pi (3.141...) +lglobal.@e = Hằng số toán học e (2.718...) +lglobal.@degToRad = Nhân với số này để chuyển từ độ (deg) sang radian (rad) +lglobal.@radToDeg = Nhân với số này để chuyển từ radian (rad) sang độ (deg) -lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. -lenum.shoot = Bắn vào vị trí xác định. -lenum.shootp = Shoot at a unit/building with velocity prediction. -lenum.config = Building configuration, e.g. sorter item. -lenum.enabled = Bất cứ khi nào khối hoạt động. +lglobal.@time = Thời gian chơi của bản lưu hiện tại, tính bằng mili-giây +lglobal.@tick = Thời gian chơi của bản lưu hiện tại, tính bằng tích-tắc (1 giây = 60 tích-tắc) +lglobal.@second = Thời gian chơi của bản lưu hiện tại, tính bằng giây +lglobal.@minute = Thời gian chơi của bản lưu hiện tại, tính bằng phút +lglobal.@waveNumber = Số đợt hiện tại, nếu chế độ đợt được bật +lglobal.@waveTime = Thời gian đếm ngược của đợt, tính bằng giây +lglobal.@mapw = Độ rộng bản đồ, tính bằng ô +lglobal.@maph = Độ cao bản đồ, tính bằng ô + +lglobal.sectionMap = Bản đồ +lglobal.sectionGeneral = Chung +lglobal.sectionNetwork = Mạng/Máy khách [Chỉ Bộ xử lý thế giới] +lglobal.sectionProcessor = Bộ xử lý +lglobal.sectionLookup = Tra cứu + +lglobal.@this = Khối logic đang thực thi đoạn mã +lglobal.@thisx = Tọa độ x của khối đang thực thi đoạn mã +lglobal.@thisy = Tọa độ y của khối đang thực thi đoạn mã +lglobal.@links = Tổng số khối đã liên kết đến bộ xử lý này +lglobal.@ipt = Tốc độ thực thi của bộ xử lý tính bằng lệnh mỗi tích-tắc (60 tích-tắc = 1 giây) + +lglobal.@unitCount = Tổng số kiểu mẫu đơn vị trong trò chơi; được dùng với lệnh tra cứu (lookup) +lglobal.@blockCount = Tổng số kiểu mẫu khối trong trò chơi; được dùng với lệnh tra cứu (lookup) +lglobal.@itemCount = Tổng số kiểu mẫu vật phẩm trong trò chơi; được dùng với lệnh tra cứu (lookup) +lglobal.@liquidCount = Tổng số kiểu mẫu chất lỏng trong trò chơi; được dùng với lệnh tra cứu (lookup) + +lglobal.@server = True nếu đoạn mã chạy trên máy chủ hoặc chơi đơn, ngược lại là false +lglobal.@client = True nếu đoạn mã chạy trên máy khách được kết nối đến máy chủ + +lglobal.@clientLocale = Ngôn ngữ của máy khách đang chạy đoạn mã. Ví dụ: vi_VN +lglobal.@clientUnit = Đơn vị máy khách đang chạy đoạn mã +lglobal.@clientName = Tên người chơi của máy khách đang chạy đoạn mã +lglobal.@clientTeam = Định danh đội của máy khách đang chạy đoạn mã +lglobal.@clientMobile = True nếu máy khách đang chạy đoạn mã trên thiết bị di động, ngược lại là false + +logic.nounitbuild = [red]Logic xây dựng đơn vị không được phép ở đây. + +lenum.type = Kiểu của công trình/đơn vị.\nVí dụ cho Bộ phân phát (router), nó sẽ trả về [accent]@router[].\nKhông phải một chuỗi. +lenum.shoot = Bắn vào một vị trí. +lenum.shootp = Bắn vào một đơn vị/công trình với tốc độ dự đoán. +lenum.config = Cấu hình công trình, kiểu như vật phẩm của Khối sắp xếp. +lenum.enabled = Khối có đang hoạt động. laccess.color = Màu đèn chiếu sáng. -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.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. -laccess.speed = Tốc độ của quân lính, tính bằng ô/giây. +laccess.controller = Thứ điều khiển đơn vị. Nếu khối xử lý đã điều khiển, trả về khối xử lý.\nNgược lại, trả về chính đơn vị đó. +laccess.dead = Đơn vị/công trình đã chết hoặc không còn hợp lệ hay không. +laccess.controlled = Trả về:\n[accent]@ctrlProcessor[] nếu điều khiển là khối xử lý\n[accent]@ctrlPlayer[] nếu điều khiển đơn vị/công trình là người chơi\n[accent]@ctrlCommand[] nếu điều khiển đơn vị là một mệnh lệnh người chơi\nNgược lại, 0. +laccess.progress = Tiến trình thực hiện, 0 đến 1.\nTrả về tiến trình sản xuất, nạp đạn bệ súng hoặc xây dựng. +laccess.speed = Tốc độ cao nhất của đơn vị, tính bằng ô/giây. +laccess.id = Định danh của một đơn vị/khối/vật phẩm/chất lỏng.\nViệc này làm ngược lại với thao tác tra cứu. + lcategory.unknown = Không xác định -lcategory.unknown.description = Uncategorized instructions. +lcategory.unknown.description = Chỉ lệnh không được phân loại. lcategory.io = Đầu Vào & Ra -lcategory.io.description = Modify contents of memory blocks and processor buffers. +lcategory.io.description = Chỉnh sửa nội dung của khối ô nhớ và bộ đệm khối xử lý. lcategory.block = Điều khiển khối -lcategory.block.description = Tương tác với khối -lcategory.operation = Operations -lcategory.operation.description = Logical operations. -lcategory.control = Flow Control -lcategory.control.description = Manage execution order. -lcategory.unit = Điều khiển quân lính -lcategory.unit.description = Give units commands. -lcategory.world = Thế giới. +lcategory.block.description = Tương tác với khối. +lcategory.operation = Các phép toán +lcategory.operation.description = Các phép toán logic. +lcategory.control = Điều khiển luồng +lcategory.control.description = Quản lý trình tự thực thi. +lcategory.unit = Điều khiển đơn vị +lcategory.unit.description = Ra lệnh cho đơn vị. +lcategory.world = Thế giới lcategory.world.description = Kiểm soát hành vi của thế giới. -graphicstype.clear = Tô màu cho màn hình. -graphicstype.color = Đặt màu cho thao tác vẽ tiếp theo. -graphicstype.col = Equivalent to color, but packed.\nPacked colors are written as hex codes with a [accent]%[] prefix.\nExample: [accent]%ff0000[] would be red. -graphicstype.stroke = Đặt chiều rộng đoạn thẳng. +graphicstype.clear = Tô màu cho toàn màn hình. +graphicstype.color = Thiết đặt màu cho thao tác vẽ tiếp theo. +graphicstype.col = Tương tự màu, nhưng được đóng gói.\nMàu đã đóng gói được viết theo mã thập lục phân với tiền tố [accent]%[].\nVí dụ: [accent]%ff0000[] sẽ là màu đỏ. +graphicstype.stroke = Thiết đặt chiều rộng đoạn thẳng. graphicstype.line = Vẽ đoạn thẳng. graphicstype.rect = Tô một hình chữ nhật. -graphicstype.linerect = Vẽ đường viền hình chữ nhật. -graphicstype.poly = Tô vào đa giác đều. -graphicstype.linepoly = Vẽ đường viền đa giác đều. +graphicstype.linerect = Vẽ đường viền một hình chữ nhật. +graphicstype.poly = Tô một đa giác đều. +graphicstype.linepoly = Vẽ đường viền một đa giác đều. graphicstype.triangle = Tô một hình tam giác. -graphicstype.image = Vẽ hình ảnh một số nội dung.\nVd: [accent]@router[] hoặc [accent]@dagger[]. +graphicstype.image = Vẽ hình ảnh một số nội dung.\nVí dụ: [accent]@router[] hoặc [accent]@dagger[]. +graphicstype.print = Vẽ văn bản từ bộ đệm in.\nChỉ được phép dùng các kí tự ASCII.\nLàm sạch bộ đệm. lenum.always = Luôn đúng. lenum.idiv = Chia lấy phần nguyên. -lenum.div = Phép chia.\nTrả về [accent]null[] khi chia cho 0. +lenum.div = Phép chia.\nTrả về [accent]rỗng (null)[] khi chia cho 0. lenum.mod = Chia lấy phần dư. -lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. -lenum.notequal = Not equal. Coerces types. -lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. -lenum.shl = Bit-shift left. -lenum.shr = Bit-shift right. -lenum.or = Bitwise OR. -lenum.land = Logical AND. -lenum.and = Bitwise AND. -lenum.not = Bitwise flip. -lenum.xor = Bitwise XOR. +lenum.equal = Bằng nhau. Ép kiểu.\nĐối tượng không-rỗng (non-null) so sánh với số sẽ thành 1, ngược lại là 0. +lenum.notequal = Không bằng nhau. Ép kiểu. +lenum.strictequal = Bằng nhau ràng buộc. Không ép kiểu.\nCó thể dùng để kiểm tra [accent]rỗng (null)[]. +lenum.shl = Nhảy bit sang trái. +lenum.shr = Nhảy bit sang phải. +lenum.or = Phép toán bit OR. +lenum.land = Phép toán logic AND. +lenum.and = Phép toán bit AND. +lenum.not = Phép toán lật bit. +lenum.xor = Phép toán bit XOR. lenum.min = Số nhỏ nhất giữa hai số. lenum.max = Số lớn nhất giữa hai số. lenum.angle = Góc của vectơ tính bằng độ. +lenum.anglediff = Khoảng cách tuyệt đối giữa hai góc tính bằng độ. lenum.len = Chiều dài của vectơ. lenum.sin = Sin, tính bằng độ. lenum.cos = Cos, tính bằng độ. lenum.tan = Tan, tính bằng độ. -lenum.asin = Arc sin, tính bằng độ. -lenum.acos = Arc cos, tính bằng độ. -lenum.atan = Arc tan, tính bằng độ. +lenum.asin = Sin nghịch đảo, tính bằng độ. +lenum.acos = Cos nghịch đảo, tính bằng độ. +lenum.atan = Tan nghịch đảo, tính bằng độ. #not a typo, look up 'range notation' lenum.rand = Tạo ra số nguyên ngẫu nhiên trong phạm vi [0, giá trị). lenum.log = Lôgarit tự nhiên (ln). lenum.log10 = Lôgarit cơ số 10. -lenum.noise = 2D simplex noise. +lenum.noise = Nhiễu đơn 2D. lenum.abs = Giá trị tuyệt đối. lenum.sqrt = Căn bậc hai. -lenum.any = Bất kì quân lính. -lenum.ally = Quân lính cùng đội. -lenum.attacker = Quân lính với vũ khí. -lenum.enemy = Quân lính địch. -lenum.boss = Boss. -lenum.flying = Không quân. -lenum.ground = Bộ binh. -lenum.player = Quân lính do người chơi điều khiển. +lenum.any = Đơn vị bất kỳ. +lenum.ally = Đơn vị đồng minh. +lenum.attacker = Đơn vị với vũ khí. +lenum.enemy = Đơn vị kẻ địch. +lenum.boss = Trùm. +lenum.flying = Đơn vị không quân. +lenum.ground = Đơn vị bộ binh. +lenum.player = Đơn vị do người chơi điều khiển. -lenum.ore = Ore deposit. -lenum.damaged = Damaged ally building. -lenum.spawn = Enemy spawn point.\nMay be a core or a position. -lenum.building = Building in a specific group. +lenum.ore = Mỏ quặng. +lenum.damaged = Công trình bị hư tổn của đồng minh. +lenum.spawn = Điểm xuất hiện của kẻ địch.\nCó thể là một lõi hoặc một vị trí. +lenum.building = Công trình trong một nhóm nhất định. -lenum.core = Bất kì căn cứ. -lenum.storage = Khối lưu trữ, Ví dụ Nhà kho. -lenum.generator = Khối có thể tạo ra năng lượng. -lenum.factory = Khối có thể biến đổi vật phẩm. +lenum.core = Bất kỳ lõi nào. +lenum.storage = Khối lưu trữ, ví dụ như Nhà kho. +lenum.generator = Khối tạo ra năng lượng. +lenum.factory = Khối biến đổi vật phẩm. lenum.repair = Điểm sửa chữa. -lenum.battery = Bất kì pin. -lenum.resupply = Điểm tiếp tế.\nChỉ phù hợp khi [accent]"Quân lính cần đạn"[] được bật. -lenum.reactor = Lò phản ứng ThoriumNhiệt hạch. -lenum.turret = Bất kì súng. +lenum.battery = Bất kỳ pin. +lenum.resupply = Điểm tiếp tế.\nChỉ phù hợp khi [accent]"Đơn vị cần đạn"[] được bật. +lenum.reactor = Lò phản ứng Thori/Nhiệt hạch. +lenum.turret = Súng bất kỳ. -sensor.in = The building/unit to sense. +sensor.in = Công trình/Đơn vị để cảm biến. -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 = Sắp xếp theo thứ tự. đặt giá trị 0 để đảo ngược. -radar.sort = Metric to sort results by. -radar.output = Variable to write output unit to. +radar.from = Công trình để cảm biến.\nPhạm vi cảm biến bị giới hạn bởi phạm vi của công trình. +radar.target = Bộ lọc cho các đơn vị được cảm biến. +radar.and = Bộ lọc bổ sung. +radar.order = Sắp xếp theo thứ tự. 0 để đảo ngược. +radar.sort = Số liệu để sắp xếp kết quả theo đó. +radar.output = Biến để ghi đơn vị được xuất ra. -unitradar.target = Filter for units to sense. -unitradar.and = Additional filters. -unitradar.order = Sắp xếp theo thứ tự. đặt giá trị 0 để đảo ngược. -unitradar.sort = Metric to sort results by. -unitradar.output = Variable to write output unit to. +unitradar.target = Bộ lọc cho các đơn vị được cảm biến. +unitradar.and = Bộ lọc bổ sung. +unitradar.order = Sắp xếp theo thứ tự. 0 để đảo ngược. +unitradar.sort = Số liệu để sắp xếp kết quả theo đó. +unitradar.output = Biến để ghi đơn vị được xuất ra. -control.of = Building to control. -control.unit = Unit/building to aim at. -control.shoot = Whether to shoot. +control.of = Công trình được điều khiển. +control.unit = Đơn vị/Công trình để ngắm vào. +control.shoot = Có bắn hay không. -unitlocate.enemy = Whether to locate enemy buildings. -unitlocate.found = Whether the object was found. -unitlocate.building = Output variable for located building. -unitlocate.outx = Cho ra tọa độ X. -unitlocate.outy = Cho ra tọa độ Y. -unitlocate.group = Building group to look for. +unitlocate.enemy = Có định vị công trình kẻ địch hay không. +unitlocate.found = Đối tượng có tìm được hay không. +unitlocate.building = Biến xuất ra cho công trình đã định vị. +unitlocate.outx = Tọa độ X xuất ra. +unitlocate.outy = Tọa độ Y xuất ra. +unitlocate.group = Nhóm công trình để tìm kiếm. lenum.idle = Không di chuyển, nhưng vẫn xây dựng/đào.\nTrạng thái mặc định. -lenum.stop = Dừng di chuyển/Đào/Xây dựng. -lenum.unbind = Completely disable logic control.\nResume standard AI. +lenum.stop = Dừng di chuyển/đào/xây dựng. +lenum.unbind = Vô hiệu hóa hoàn toàn điều khiển logic.\nKhôi phục AI tiêu chuẩn. lenum.move = Di chuyển đến vị trí xác định. -lenum.approach = Approach a position with a radius. -lenum.pathfind = Tìm đường đến nơi tạo ra kẻ địch. -lenum.target = Bắn vào vị trí xác định. -lenum.targetp = Shoot a target with velocity prediction. -lenum.itemdrop = Thả vật phẩm. -lenum.itemtake = Lấy vật phẩm từ khối. +lenum.approach = Tiếp cận một vị trí với bán kính. +lenum.pathfind = Tìm đường đến một vị trí xác định. +lenum.autopathfind = Tự động tìm đường đến lõi hoặc nơi hạ cánh gần nhất của kẻ địch.\nViệc này tương tự như việc tìm đường của kẻ địch trong các đợt. +lenum.target = Bắn vào một vị trí. +lenum.targetp = Bắn vào một mục tiêu với tốc độ dự đoán. +lenum.itemdrop = Thả một vật phẩm. +lenum.itemtake = Lấy một vật phẩm từ một công trình. lenum.paydrop = Thả khối hàng hiện tại. -lenum.paytake = Nhất khối hàng tại vị trí hiện tại. -lenum.payenter = Enter/land on the payload block the unit is on. -lenum.flag = Numeric unit flag. -lenum.mine = Đào tại vị trí. -lenum.build = Xây công trình. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. -lenum.within = Kiểm tra xem quân lính có gần vị trí không. -lenum.boost = Bắt đầu/Dừng tăng tốc. -onset.commandmode = Giữ [accent]shift[] để vào [accent]chế độ điều khiển quân[].\n[accent]Nhấp chuột trái và kéo[] để chọn các quân lính.\n[accent]Chuộc phải[] để điều khiển các quân lính di chuyển hoặc tấn công. -onset.commandmode.mobile = Nhấn vào [accent]nút điều khiển[] để vào [accent]chế độ điều khiển quân[].\nGiữ một ngón tay, sau đó [accent]kéo[] để chọn các quân lính.\n[accent]Tap[] để điều khiển các quân lính di chuyển hoặc tấn công. +lenum.paytake = Nhận khối hàng tại vị trí hiện tại. +lenum.payenter = Vào trong/hạ cánh trên khối hàng mà đơn vị đang ở trên nó. +lenum.flag = Cờ đơn vị kiểu số. +lenum.mine = Đào tại một vị trí. +lenum.build = Xây một công trình. +lenum.getblock = Lấy kiểu công trình, nền và khối tại tọa độ.\nĐơn vị phải nằm trong phạm vi của vị trí, ngược lại null được trả về. +lenum.within = Kiểm tra xem đơn vị có gần một vị trí không. +lenum.boost = Bắt đầu/Dừng tăng tốc. + +lenum.flushtext = Đẩy nội dung của bộ đệm cho điểm đánh dấu, nếu có thể áp dụng.\nNếu [accent]fetch[] đặt là [accent]true[], sẽ cố truy vấn các thuộc tính từ gói ngôn ngữ của bản đồ hoặc trò chơi. +lenum.texture = Tên kết cấu lấy thẳng từ bản khung kết cấu của trò chơi (dùng kiểu tên kebab-case, tên-chữ-thường-chứa-gạch-nối).\nNếu printFlush đặt là true, sẽ sử dụng nội dung bộ đệm văn bản làm tham số văn bản. +lenum.texturesize = Kích thước của kết cấu bằng ô. Giá trị 0 chia tỷ lệ chiều rộng của điểm đánh dấu theo kích thước của kết cấu ban đầu. +lenum.autoscale = Có chia tỷ lệ điểm đánh dấu tương ứng với mức thu phóng của người chơi hay không. +lenum.posi = Vị trí theo chỉ số, dùng cho điểm đánh dấu đường kẻ và tứ giác với 0 là vị trí đầu tiên. +lenum.uvi = Vị trí của kết cấu trong phạm vi từ 0 đến 1, dùng cho đánh dấu tứ giác. +lenum.colori = Màu theo chỉ số, dùng cho điểm đánh dấu đường kẻ và tứ giác với 0 là màu đầu tiên. diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 2711eae6f2..c992777b21 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -15,16 +15,16 @@ link.wiki.description = Mindustry 官方 Wiki link.suggestions.description = 提出新特性的建议 link.bug.description = 发现了 Bug ?在这里报告 linkopen = 这个服务器向您发送了一条链接,你确定想要打开它吗?\n\n[sky]{0} -linkfail = 打开链接失败!\n网址已复制到您的剪贴板。 +linkfail = 打开链接失败!\n网址已复制到您的剪贴板。 screenshot = 屏幕截图已保存到 {0} -screenshot.invalid = 地图太大,可能没有足够的内存用于截图。 +screenshot.invalid = 地图太大,可能没有足够的内存用于截图。 gameover = 游戏结束 gameover.disconnect = 断开连接 gameover.pvp = [accent] {0}[]队获胜! gameover.waiting = [accent]正在更换下一张地图… highscore = [accent]新纪录! copied = 已复制 -indev.notready = 这部分玩法还未开发完成。 +indev.notready = 这部分玩法还未开发完成。 load.sound = 音乐加载中 load.map = 地图加载中 @@ -38,7 +38,7 @@ be.update = 发现游戏最新BE版本: be.update.confirm = 现在下载并重启游戏? be.updating = 更新中… be.ignore = 忽略 -be.noupdates = 未发现更新。 +be.noupdates = 未发现更新。 be.check = 检测更新 mods.browser = 模组浏览器 @@ -57,8 +57,9 @@ mods.browser.sortstars = 按星数排序 schematic = 蓝图 schematic.add = 保存蓝图… schematics = 蓝图 +schematic.search = Search schematics... schematic.replace = 存在同名蓝图,是否覆盖? -schematic.exists = 存在同名蓝图。 +schematic.exists = 存在同名蓝图。 schematic.import = 导入蓝图… schematic.exportfile = 导出文件 schematic.importfile = 从文件导入 @@ -67,19 +68,20 @@ schematic.copy = 复制到剪贴板 schematic.copy.import = 从剪贴板导入 schematic.shareworkshop = 在创意工坊上分享 schematic.flip = [accent][[{0}][]/[accent][[{1}][]:翻转蓝图 -schematic.saved = 蓝图已保存。 +schematic.saved = 蓝图已保存。 schematic.delete.confirm = 确定删除蓝图? -schematic.rename = 重命名蓝图 +schematic.edit = Edit Schematic schematic.info = {0}x{1},{2} 个建筑 -schematic.disabled = [scarlet]蓝图已禁用![]\n您不能在此[accent]地图[]或[accent]服务器[]上使用蓝图。 +schematic.disabled = [scarlet]蓝图已禁用![]\n您不能在此[accent]地图[]或[accent]服务器[]上使用蓝图。 schematic.tags = 标签: schematic.edittags = 编辑标签 schematic.addtag = 添加新标签 schematic.texttag = 文字标签 schematic.icontag = 图标标签 schematic.renametag = 重命名标签 +schematic.tagged = {0} tagged schematic.tagdelconfirm = 确定要完全删除这个标签吗? -schematic.tagexists = 此标签已经存在。 +schematic.tagexists = 此标签已经存在。 stats = 统计资料 stats.wave = 防守波数 @@ -150,39 +152,39 @@ mod.incompatiblemod = [red]不兼容 mod.blacklisted = [red]不支持 mod.unmetdependencies = [red]缺少前置模组 mod.erroredcontent = [scarlet]内容错误 -mod.circulardependencies = [red]Circular Dependencies -mod.incompletedependencies = [red]Incomplete Dependencies +mod.circulardependencies = [red]循环依赖 +mod.incompletedependencies = [red]缺失依赖 -mod.requiresversion.details = 所需的最低游戏版本:[accent]{0}[]\n您的游戏版本过低。 这个模组需要更新的游戏版本(通常是beta/alpha版本)才能工作。 -mod.outdatedv7.details = 这个模组与最新版游戏不兼容。 作者必须更新它,并在[accent]mod.json[]文件中写入[accent]minGameVersion: 136[]。 -mod.blacklisted.details = 这个模组由于造成该版本游戏崩溃或其他原因被手动禁用了。 不要使用它。 +mod.requiresversion.details = 所需的最低游戏版本:[accent]{0}[]\n您的游戏版本过低。 此模组需要更新的游戏版本(通常是beta/alpha版本)才能工作。 +mod.outdatedv7.details = 此模组与最新版游戏不兼容。 作者必须更新它,并在[accent]mod.json[]文件中写入[accent]minGameVersion: 136[]。 +mod.blacklisted.details = 此模组由于造成该版本游戏崩溃或其他原因被手动禁用了。 不要使用它。 mod.missingdependencies.details = 缺少前置模组:{0} -mod.erroredcontent.details = 这个模组在游戏加载时发生了错误。 请通知模组作者修复它。 -mod.circulardependencies.details = This mod has dependencies that depends on each other. -mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}. -mod.requiresversion = Requires game version: [red]{0} +mod.erroredcontent.details = 此模组在游戏加载时发生了错误。 请通知模组作者修复它。 +mod.circulardependencies.details = 此模组与其他模组相互依赖。 +mod.incompletedependencies.details = 由于依赖项无效或缺失,此模组无法加载:{0}. +mod.requiresversion = 需要游戏版本: [red]{0} -mod.errors = 读取内容时发生错误。 -mod.noerrorplay = [scarlet]您的模组发生了错误。 []禁用相关模组或修复错误后才能进入游戏。 -mod.nowdisabled = [scarlet]“{0}”模组缺少依赖的其他模组:[accent]{1}\n[lightgray]需要先下载上述模组。 \n此模组现在将被自动禁用。 +mod.errors = 读取内容时发生错误。 +mod.noerrorplay = [scarlet]您的模组发生了错误。 []禁用相关模组或修复错误后才能进入游戏。 +mod.nowdisabled = [scarlet]“{0}”模组缺少依赖的其他模组:[accent]{1}\n[lightgray]需要先下载上述模组。 \n此模组现在将被自动禁用。 mod.enable = 启用 -mod.requiresrestart = 游戏将退出以应用模组修改。 +mod.requiresrestart = 游戏将退出以应用模组修改。 mod.reloadrequired = [scarlet]需要重启 mod.import = 导入模组 mod.import.file = 导入文件 mod.import.github = 从 GitHub 导入模组 mod.jarwarn = [scarlet]JAR模组存在天然的危险性。 []\n请确保此模组来源安全可靠! -mod.item.remove = 这个物品是[accent]'{0}'[]模组的一部分。 卸载该模组即可删除此物品。 -mod.remove.confirm = 此模组将被删除。 +mod.item.remove = 这个物品是[accent]'{0}'[]模组的一部分。 卸载该模组即可删除此物品。 +mod.remove.confirm = 此模组将被删除。 mod.author = [lightgray]作者:[]{0} mod.missing = 此存档包含您最近更新或者尚未安装的模组,加载可能会导致存档损坏。 确定要加载吗?\n[lightgray]模组:\n{0} -mod.preview.missing = 在创意工坊中发布此模组前,您必须添加一张预览图片。 \n请将名为[accent]preview.png[]的图片放入模组文件夹,然后重试。 -mod.folder.missing = 只有文件夹形式的模组能在创意工坊上发布。 \n要将模组转换为文件夹,只需将其文件解压缩到文件夹中并删除压缩包,然后重新启动游戏或重新加载模组。 -mod.scripts.disable = 您的设备不支持含有脚本的模组,必须禁用相关模组才能进入游戏。 +mod.preview.missing = 在创意工坊中发布此模组前,您必须添加一张预览图片。 \n请将名为[accent]preview.png[]的图片放入模组文件夹,然后重试。 +mod.folder.missing = 只有文件夹形式的模组能在创意工坊上发布。 \n要将模组转换为文件夹,只需将其文件解压缩到文件夹中并删除压缩包,然后重新启动游戏或重新加载模组。 +mod.scripts.disable = 您的设备不支持含有脚本的模组,必须禁用相关模组才能进入游戏。 about.button = 关于 name = 名字: -noname = 先取一个[accent]玩家名称[]。 +noname = 先取一个[accent]玩家名称[]。 search = 搜索: planetmap = 行星地图 launchcore = 发射核心 @@ -203,32 +205,32 @@ research.load = 加载 research.discard = 丢弃 research.list = [lightgray]研究: research = 研究 -researched = [lightgray]{0}己研究。 +researched = [lightgray]{0}己研究。 research.progress = {0}%完成度 players = {0}名玩家在线 players.single = {0}名玩家在线 players.search = 搜索 -players.notfound = [gray]没有找到玩家。 +players.notfound = [gray]没有找到玩家。 server.closing = [accent]关闭服务器… -server.kicked.kick = 您被踢出了服务器。 -server.kicked.whitelist = 您不在服务器的白名单中。 -server.kicked.serverClose = 服务器已关闭。 -server.kicked.vote = 您被投票踢出了服务器。 -server.kicked.clientOutdated = 客户端版本过低,请更新您的游戏。 -server.kicked.serverOutdated = 服务器版本过低,请联系服务器管理员升级服务器。 -server.kicked.banned = 您在这个服务器上被封禁了。 -server.kicked.typeMismatch = 此服务器与您的不稳定测试版不兼容。 -server.kicked.playerLimit = 服务器已满,请等待一个空位。 +server.kicked.kick = 您被踢出了服务器。 +server.kicked.whitelist = 您不在服务器的白名单中。 +server.kicked.serverClose = 服务器已关闭。 +server.kicked.vote = 您被投票踢出了服务器。 +server.kicked.clientOutdated = 客户端版本过低,请更新您的游戏。 +server.kicked.serverOutdated = 服务器版本过低,请联系服务器管理员升级服务器。 +server.kicked.banned = 您在这个服务器上被封禁了。 +server.kicked.typeMismatch = 此服务器与您的不稳定测试版不兼容。 +server.kicked.playerLimit = 服务器已满,请等待一个空位。 server.kicked.recentKick = 您最近被踢出过服务器。 \n请稍后重新连接! -server.kicked.nameInUse = 服务器中有人与您重名了。 -server.kicked.nameEmpty = 玩家名称无效。 -server.kicked.idInUse = 您已经连接了这个服务器!不允许重复连接。 -server.kicked.customClient = 这个服务器不支持自行编译的客户端。 请下载官方版本。 +server.kicked.nameInUse = 服务器中有人与您重名了。 +server.kicked.nameEmpty = 玩家名称无效。 +server.kicked.idInUse = 您已经连接了这个服务器!不允许重复连接。 +server.kicked.customClient = 这个服务器不支持自行编译的客户端。 请下载官方版本。 server.kicked.gameover = 游戏结束! -server.kicked.serverRestarting = 服务器正在重启。 +server.kicked.serverRestarting = 服务器正在重启。 server.versions = 客户端版本:[accent]{0}[]\n服务器版本:[accent]{1}[] -host.info = [accent]创建[]按钮会在[scarlet]6567 []端口启动一个服务器。 []\n同一个[lightgray]Wi-Fi或局域网[]下的玩家,在服务器列表中都应该能看到您的服务器。 \n\n如果您想让别人从任何地方通过IP地址连接,需要设定[accent]端口转发[]。 \n\n[lightgray]注意:如果某人无法连接到您的局域网游戏,请确保在防火墙里设置了允许Mindustry访问本地网络。 注意公有网络有时可能不允许服务器发现。 -join.info = 您可以输入[accent]服务器的IP地址[],也可以寻找[accent]局域网[]或[accent]全局[]中的服务器来连接。 \n支持局域网或广域网的多人游戏。 \n\n[lightgray]如果您想通过IP地址连接某个服务器,需要向服务器建立者询问他的IP地址。 可以在服务器所在的设备上百度“IP地址”来获取。 +host.info = [accent]创建[]按钮会在[scarlet]6567 []端口启动一个服务器。 []\n同一个[lightgray]Wi-Fi或局域网[]下的玩家,在服务器列表中都应该能看到您的服务器。 \n\n如果您想让别人从任何地方通过IP地址连接,需要设定[accent]端口转发[]。 \n\n[lightgray]注意:如果某人无法连接到您的局域网游戏,请确保在防火墙里设置了允许Mindustry访问本地网络。 注意公有网络有时可能不允许服务器发现。 +join.info = 您可以输入[accent]服务器的IP地址[],也可以寻找[accent]局域网[]或[accent]全局[]中的服务器来连接。 \n支持局域网或广域网的多人游戏。 \n\n[lightgray]如果您想通过IP地址连接某个服务器,需要向服务器建立者询问他的IP地址。 可以在服务器所在的设备上百度“IP地址”来获取。 hostserver = 创建多人游戏 invitefriends = 邀请好友 hostserver.mobile = 创建多人游戏 @@ -239,14 +241,14 @@ hosts.discovering = 正在搜索局域网服务器 hosts.discovering.any = 正在搜索服务器 server.refreshing = 正在刷新服务器 hosts.none = [lightgray]未发现局域网服务器! -host.invalid = [scarlet]无法连接服务器。 +host.invalid = [scarlet]无法连接服务器。 servers.local = 本地服务器 servers.local.steam = 公开游戏与本地服务器 servers.remote = 远程服务器 servers.global = 社区服务器 -servers.disclaimer = 社区服务器[accent]并非[]由开发者拥有或管理。 \n\n其中可能有其他玩家制作的,不适合所有年龄段的内容。 +servers.disclaimer = 社区服务器[accent]并非[]由开发者拥有或管理。 \n\n其中可能有其他玩家制作的,不适合所有年龄段的内容。 servers.showhidden = 显示隐藏的服务器 server.shown = 显示 server.hidden = 隐藏 @@ -256,11 +258,19 @@ trace = 跟踪玩家 trace.playername = 玩家名称:[accent]{0} trace.ip = IP地址:[accent]{0} trace.id = 玩家 ID:[accent]{0} +trace.language = 语言: [accent]{0} trace.mobile = 移动客户端:[accent]{0} trace.modclient = 自定义客户端:[accent]{0} trace.times.joined = 进入服务器次数: [accent]{0} trace.times.kicked = 踢出服务器次数: [accent]{0} -invalidid = 无效的客户端ID!提交一个错误报告。 +trace.ips = 曾用IP: +trace.names = 曾用名: +invalidid = 无效的客户端ID!提交一个错误报告。 +player.ban = 封禁 +player.kick = 踢出 +player.trace = 追朔 +player.admin = 切换管理员 +player.team = 改变队伍 server.bans = 黑名单 server.bans.none = 没有被封禁的玩家! server.admins = 管理员 @@ -274,28 +284,29 @@ server.version = [gray]版本:{0} {1} server.custombuild = [accent]自行编译 confirmban = 确定封禁玩家“{0}[white]”? confirmkick = 确定踢出玩家“{0}[white]”? -confirmvotekick = 确定投票踢出玩家“{0}[white]”? confirmunban = 确定解封这名玩家? confirmadmin = 确定给予玩家“{0}[white]”管理员权限? confirmunadmin = 确定收回玩家“{0}[white]”的管理员权限? +votekick.reason = 投票踢出理由 +votekick.reason.message = 确定投票踢出玩家"{0}[white]"?\n如果是,请输入理由: joingame.title = 加入游戏 joingame.ip = 地址: disconnect = 已断开连接 -disconnect.error = 连接错误。 -disconnect.closed = 连接关闭。 -disconnect.timeout = 连接超时。 +disconnect.error = 连接错误。 +disconnect.closed = 连接关闭。 +disconnect.timeout = 连接超时。 disconnect.data = 地图加载失败! -cantconnect = 无法加入游戏([accent]{0}[])。 +cantconnect = 无法加入游戏([accent]{0}[])。 connecting = [accent]连接中… reconnecting = [accent]重新连接中… connecting.data = [accent]地图加载中… server.port = 端口: server.addressinuse = 地址已被占用! server.invalidport = 无效的端口! -server.error = [scarlet]创建服务器错误。 +server.error = [scarlet]创建服务器错误。 save.new = 新存档 save.overwrite = 确定要覆盖这个存档吗? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = 无法导入战役中的单个保存文件。 overwrite = 覆盖 save.none = 没有找到存档! savefail = 保存失败! @@ -309,7 +320,7 @@ save.import = 导入存档 save.newslot = 存档名称: save.rename = 重命名 save.rename.text = 新名称: -selectslot = 选择一个存档。 +selectslot = 选择一个存档。 slot = [accent]存档位{0} editmessage = 编辑消息 save.corrupted = 存档损坏或无效! @@ -333,26 +344,37 @@ open = 打开 customize = 自定义规则 cancel = 取消 command = 指挥 +command.queue = [lightgray][排队中] command.mine = 挖矿 command.repair = 维修 command.rebuild = 重建 command.assist = 协助建造 command.move = 移动 -command.boost = Boost +command.boost = 助推 +command.enterPayload = 进入载荷建筑 +command.loadUnits = 拾取单位 +command.loadBlocks = 拾取建筑 +command.unloadPayload = 卸载载荷 +stance.stop = 取消指令 +stance.shoot = 姿态: 射击 +stance.holdfire = 姿态: 停火 +stance.pursuetarget = 姿态: 追逐目标 +stance.patrol = 姿态: 路径巡逻 +stance.ram = 姿态: 冲锋\n[lightgray]径直移动,不进行寻路。 openlink = 打开链接 copylink = 复制链接 back = 返回 max = 最大值 objective = 任务目标 crash.export = 导出崩溃日志 -crash.none = 未找到崩溃日志。 -crash.exported = 崩溃日志已导出。 +crash.none = 未找到崩溃日志。 +crash.exported = 崩溃日志已导出。 data.export = 导出数据 data.import = 导入数据 data.openfolder = 打开数据文件夹 -data.exported = 数据已导出。 -data.invalid = 游戏数据无效。 -data.import.confirm = 导入外部游戏数据将覆盖本地[scarlet]全部[]的游戏数据。 \n[accent]此操作无法撤销![]\n\n数据导入后将自动退出游戏。 +data.exported = 数据已导出。 +data.invalid = 游戏数据无效。 +data.import.confirm = 导入外部游戏数据将覆盖本地[scarlet]全部[]的游戏数据。 \n[accent]此操作无法撤销![]\n\n数据导入后将自动退出游戏。 quit.confirm = 确定退出? loading = [accent]加载中… downloading = [accent]下载中… @@ -364,8 +386,8 @@ pausebuilding = 按[accent][[{0}][]键暂停建造 resumebuilding = 按[scarlet][[{0}][]键恢复建造 enablebuilding = 按[scarlet][[{0}][]键启用建造 showui = UI已隐藏\n按[accent][[{0}][]键显示UI -commandmode.name = [accent]Command Mode -commandmode.nounits = [no units] +commandmode.name = [accent]指挥模式 +commandmode.nounits = [无单位] wave = [accent]第{0}波 wave.cap = [accent]波次 {0}/{1} wave.waiting = [lightgray]下一波倒计时:{0}秒 @@ -376,8 +398,8 @@ wave.enemies = [lightgray]剩余 {0} 个敌人 wave.enemycores = [accent]{0}[lightgray] 敌方核心 wave.enemycore = [accent]{0}[lightgray] 敌方核心 wave.enemy = [lightgray]剩余 {0} 个敌人 -wave.guardianwarn = Boss 将在[accent]{0}[]波后到来。 -wave.guardianwarn.one = Boss 将在[accent]{0}[]波后到来。 +wave.guardianwarn = Boss 将在[accent]{0}[]波后到来。 +wave.guardianwarn.one = Boss 将在[accent]{0}[]波后到来。 loadimage = 加载图片 saveimage = 保存图片 unknown = 未知 @@ -385,19 +407,19 @@ custom = 自定义 builtin = 内置 map.delete.confirm = 您确定要删除这张地图吗?这个操作无法撤销! map.random = [accent]随机地图 -map.nospawn = 这个地图缺少己方核心!请在地图编辑器中添加一个[#{0}]{1}[]队的核心。 -map.nospawn.pvp = 这个地图缺少对方核心!请在地图编辑器中添加一个[scarlet]除黄队以外[]的核心。 -map.nospawn.attack = 这个地图缺少敌方核心!请在地图编辑器中添加一个[#{0}]{1}[]队的核心。 -map.invalid = 地图载入错误:地图文件可能已经损坏。 +map.nospawn = 这个地图缺少己方核心!请在地图编辑器中添加一个{0}队的核心。 +map.nospawn.pvp = 这个地图缺少对方核心!请在地图编辑器中添加一个[scarlet]除黄队以外[]的核心。 +map.nospawn.attack = 这个地图缺少敌方核心!请在地图编辑器中添加一个{0}队的核心。 +map.invalid = 地图载入错误:地图文件可能已经损坏。 workshop.update = 更新内容 workshop.error = 获取创意工坊详细信息时出错:{0} map.publish.confirm = 确定上传此地图?\n\n[lightgray]确定您同意Steam创意工坊的最终用户许可协议,否则您的地图将无法展示! -workshop.menu = 选择要对此项目进行的操作。 +workshop.menu = 选择要对此项目进行的操作。 workshop.info = 项目信息 changelog = 更新日志(可选): updatedesc = 覆盖标题和描述 eula = Steam最终用户许可协议 -missing = 此项目已被删除或转移。 \n[lightgray]链接已在创意工坊中被删除。 +missing = 此项目已被删除或转移。 \n[lightgray]链接已在创意工坊中被删除。 publishing = [accent]正在发布… publish.confirm = 确定发布?\n\n[lightgray]请确认您同意创意工坊的最终用户许可协议,否则您的项目无法展示! publish.error = 发布项目时出错:{0} @@ -414,11 +436,17 @@ editor.oregen.info = 矿脉的生成: editor.mapinfo = 地图信息 editor.author = 作者: editor.description = 描述: -editor.nodescription = 地图需要至少4个字符的描述才能发布。 +editor.nodescription = 地图需要至少4个字符的描述才能发布。 editor.waves = 波次 editor.rules = 规则 editor.generation = 生成 editor.objectives = 目标 +editor.locales = 本地化语言包 +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = 游戏内编辑 editor.playtest = 游戏内测试 editor.publish.workshop = 上传到创意工坊 @@ -450,23 +478,23 @@ waves.max = 最大单位数 waves.guardian = Boss waves.preview = 预览 waves.edit = 编辑… -waves.random = Random +waves.random = 随机 waves.copy = 复制到剪贴板 waves.load = 从剪贴板读取 -waves.invalid = 剪贴板中的波次信息无效。 -waves.copied = 波次信息已复制。 -waves.none = 没有定义敌人波次。 \n注意,这将自动替换为默认的波次列表。 +waves.invalid = 剪贴板中的波次信息无效。 +waves.copied = 波次信息已复制。 +waves.none = 没有定义敌人波次。 \n注意,这将自动替换为默认的波次列表。 waves.sort = 排序方式 waves.sort.reverse = 反向排序 waves.sort.begin = 出场顺序 waves.sort.health = 生命值 waves.sort.type = 类型 -waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.search = 搜索波次... +waves.filter = 单位过滤器 waves.units.hide = 全部隐藏 waves.units.show = 全部显示 -#these are intentionally in lower case(中文无关) +#these are intentionally in lower case wavemode.counts = 数目 wavemode.totals = 总数 wavemode.health = 生命值 @@ -475,17 +503,20 @@ editor.default = [lightgray]<默认> details = 详情… edit = 编辑… variables = 变量 +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = 内置变量 editor.name = 名称: editor.spawn = 生成单位 editor.removeunit = 移除单位 editor.teams = 队伍 -editor.errorload = 读取文件出错。 -editor.errorsave = 保存文件出错。 -editor.errorimage = 这是一幅图片,而不是地图。 -editor.errorlegacy = 此地图太旧了,旧的地图格式已不再支持。 -editor.errornot = 这不是地图文件。 -editor.errorheader = 此地图文件无效或已损坏。 +editor.errorload = 读取文件出错。 +editor.errorsave = 保存文件出错。 +editor.errorimage = 这是一幅图片,而不是地图。 +editor.errorlegacy = 此地图太旧了,旧的地图格式已不再支持。 +editor.errornot = 这不是地图文件。 +editor.errorheader = 此地图文件无效或已损坏。 editor.errorname = 地图没有定义名称。 加载的可能是存档文件? +editor.errorlocales = 读取无效本地化语言包时出错。 editor.update = 更新 editor.randomize = 重新生成 editor.moveup = 上移 @@ -497,6 +528,7 @@ editor.sectorgenerate = 生成区块 editor.resize = 改变尺寸 editor.loadmap = 载入地图 editor.savemap = 保存地图 +editor.savechanges = [scarlet]您有未保存的更改!\n\n[]您想要保存他们吗? editor.saved = 已保存! editor.save.noname = 您还没有指定地图的名称!在“地图信息”菜单里设置一个名称。 editor.save.overwrite = 您正试图覆盖一张内置地图!在“地图信息”菜单里重新设置一个其他的名称。 @@ -535,6 +567,8 @@ toolmode.eraseores = 擦除矿脉 toolmode.eraseores.description = 仅擦除矿脉,不影响其他物体。 toolmode.fillteams = 填充队伍 toolmode.fillteams.description = 不再填充方块,而是填充队伍颜色。 +toolmode.fillerase = 擦除同类 +toolmode.fillerase.description = 擦除同种种类的方块。 toolmode.drawteams = 绘制队伍 toolmode.drawteams.description = 不再绘制方块,而是绘制队伍颜色。 #未使用 @@ -559,6 +593,7 @@ filter.clear = 替换 filter.option.ignore = 忽略 filter.scatter = 散布 filter.terrain = 地图边界 +filter.logic = Logic filter.option.scale = 缩放 filter.option.chance = 散布数量 @@ -582,6 +617,25 @@ filter.option.floor2 = 内层地形 filter.option.threshold2 = 内层比例 filter.option.radius = 半径 filter.option.percentile = 百分比 +filter.option.code = Code +filter.option.loop = Loop +locales.info = 在这里,您可以为特定语言添加本地化语言包到您的地图中。在本地化语言包中,每个文本属性都有一个名称和一个值。这些文本属性可以由世界处理器和游戏目标使用它们的名称。它们支持文本格式化(用实际值替换占位符)。\n\n[cyan]示例文本属性:\n[]名称: [accent]timer[]值: [accent]示例计时器, 剩余时间: {0}[]\n\n[cyan]用法:\n[]将其设置为目标的文本: [accent]@timer\n\n[]在世界处理器中打印它:\n[accent]localeprint "timer"\n格式化时间\n[gray](时间是一个单独计算的变量) +locales.deletelocale = 您确定要删除该本地化语言包吗? +locales.applytoall = 将更改应用于所有本地化语言包 +locales.addtoother = 添加到其他本地化语言包 +locales.rollback = 回滚到上次应用的状态 +locales.filter = 文本属性过滤器 +locales.searchname = 搜索名称... +locales.searchvalue = 搜索值... +locales.searchlocale = 搜索本地化... +locales.byname = 按名称 +locales.byvalue = 按值 +locales.showcorrect = 显示所有本地化语言包中存在并且在所有地方具有唯一值的文本属性 +locales.showmissing = 显示在某些本地化语言包中缺失的文本属性 +locales.showsame = 显示在不同本地化语言包中具有相同值的文本属性 +locales.viewproperty = 在所有本地化语言包中查看 +locales.viewing = 查看文本属性 "{0}" +locales.addicon = 添加图标 width = 宽度: height = 高度: @@ -595,7 +649,7 @@ ping = 延迟:{0}毫秒 tps = TPS: {0} memory = 内存:{0}MB memory2 = 内存:\n {0}MB +\n {1}MB -language.restart = 重启游戏后语言设置才能生效。 +language.restart = 重启游戏后语言设置才能生效。 settings = 设置 tutorial = 教程 tutorial.retake = 重玩教程 @@ -603,7 +657,7 @@ editor = 地图编辑器 mapeditor = 地图编辑器 abandon = 放弃 -abandon.text = 这个区块及其资源将会落入敌手。 +abandon.text = 这个区块及其资源将会落入敌手。 locked = 锁定 complete = [lightgray]解锁条件: requirement.wave = 在{1}坚持到第{0}波 @@ -614,8 +668,8 @@ requirement.capture = 占领{0} requirement.onplanet = 控制区块{0} requirement.onsector = 着陆区块:{0} launch.text = 发射 -research.multiplayer = 只有服务器创建者能研究科技。 -map.multiplayer = 只有服务器创建者能查看区块。 +research.multiplayer = 只有服务器创建者能研究科技。 +map.multiplayer = 只有服务器创建者能查看区块。 uncover = 已解锁 configure = 设定装运的物资 @@ -634,9 +688,12 @@ objective.commandmode.name = 指挥模式 objective.flag.name = 标签 marker.shapetext.name = 带形状文本 -marker.minimap.name = 小地图 +marker.point.name = 点 marker.shape.name = 形状 marker.text.name = 文本 +marker.line.name = 线 +marker.quad.name = 四边形 +marker.texture.name = Texture marker.background = 背景 marker.outline = 轮廓 @@ -660,12 +717,11 @@ objective.nuclearlaunch = [accent]⚠ 侦测到核打击:[lightgray]{0} announce.nuclearstrike = [red]⚠ 核打击接近中 ⚠\n[lightgray]立刻建造备用核心 loadout = 装运 -resources = 资源 +resources = 资源 resources.max = 最大 bannedblocks = 禁用建筑 objectives = 任务目标 bannedunits = 禁用单位 -rules.hidebannedblocks = 隐藏禁用的建筑 bannedunits.whitelist = 仅启用选中的单位 bannedblocks.whitelist = 仅启用选中的建筑 addall = 全部装运 @@ -688,7 +744,7 @@ error.any = 未知网络错误。 error.bloom = 未能初始化光效。 \n您的设备可能不支持。 weather.rain.name = 降雨 -weather.snow.name = 降雪 +weather.snowing.name = 降雪 weather.sandstorm.name = 沙尘暴 weather.sporestorm.name = 孢子风暴 weather.fog.name = 雾 @@ -725,8 +781,8 @@ sector.curlost = 区块已丢失 sector.missingresources = [scarlet]建造核心所需资源不足 sector.attacked = 区块[accent]{0}[white]受到攻击! sector.lost = 区块[accent]{0}[white]已丢失! -#note: the missing space in the line below is intentional(中文无关) -sector.captured = 区块[accent]{0}[white]已占领! +sector.capture = 区块[accent]{0}[white]已占领! +sector.capture.current = 区块已占领! sector.changeicon = 更改图标 sector.noswitch.title = 无法切换区块 sector.noswitch = 你无法在当前区块遭受攻击时切换区块。\n\n区块:[accent]{0}[]位于[accent]{1}[] @@ -845,7 +901,7 @@ settings.sound = 声音 settings.graphics = 图形 settings.cleardata = 清除游戏数据… settings.clear.confirm = 确定清除此数据?\n此操作无法撤销! -settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据,包括存档、 地图、 解锁进度和按键绑定。\n按“确定”后,游戏将删除所有数据并自动退出。 +settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据,包括存档、 地图、 解锁进度和按键绑定。\n按“确定”后,游戏将删除所有数据并自动退出。 settings.clearsaves.confirm = 确定清除所有存档? settings.clearsaves = 清除存档 settings.clearresearch = 清除研究进度 @@ -901,7 +957,7 @@ stat.repairspeed = 修理速度 stat.weapons = 武器 stat.bullet = 子弹 stat.moduletier = 模块等级 -stat.unittype = Unit Type +stat.unittype = 单位类型 stat.speedincrease = 提速 stat.range = 范围 stat.drilltier = 可钻探矿物 @@ -938,6 +994,7 @@ stat.abilities = 能力 stat.canboost = 可助推 stat.flying = 空中单位 stat.ammouse = 弹药 +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = 伤害倍率 stat.healthmultiplier = 生命值倍率 stat.speedmultiplier = 移动速度倍率 @@ -948,14 +1005,47 @@ stat.immunities = 免疫 stat.healing = 治疗 ability.forcefield = 力墙场 +ability.forcefield.description = 投射一个能吸收子弹的力场护盾 ability.repairfield = 修复场 -ability.statusfield = {0}状态场 -ability.unitspawn = {0}单位工厂 +ability.repairfield.description = 修复附近的单位 +ability.statusfield = 状态场 +ability.statusfield.description = 对附近的单位施加状态效果 +ability.unitspawn = 单位生成 +ability.unitspawn.description = 建造单位 ability.shieldregenfield = 护盾再生场 +ability.shieldregenfield.description = 再生附近单位的护盾 ability.movelightning = 闪电助推器 +ability.movelightning.description = 移动时释放闪电 +ability.armorplate = 装甲板 +ability.armorplate.description = 在射击时减少受到的伤害 ability.shieldarc = 弧形护盾 +ability.shieldarc.description = 投射一个弧形的力场护盾,能吸收子弹 ability.suppressionfield = 修复压制场 -ability.energyfield = 能量场:[accent]{0}[]伤害~[accent]{1}[]格/[accent]{2}[]目标 +ability.suppressionfield.description = 使附近的修复建筑停止工作 +ability.energyfield = 能量场 +ability.energyfield.description = 对附近的敌人释放电击 +ability.energyfield.healdescription = 对附近的敌人释放电击,并治疗友方 +ability.regen = 再生 +ability.regen.description = 随着时间的推移恢复自己的生命值 +ability.liquidregen = 液体吸收 +ability.liquidregen.description = 吸收液体以治疗自身 +ability.spawndeath = 死亡产生单位 +ability.spawndeath.description = 死亡时释放单位 +ability.liquidexplode = 死亡溢液 +ability.liquidexplode.description = 死亡时释放液体 +ability.stat.firingrate = [stat]{0}/秒[lightgray] 射速 +ability.stat.regen = [stat]{0}/秒[lightgray] 生命恢复速度 +ability.stat.shield = [stat]{0}[lightgray] 护盾 +ability.stat.repairspeed = [stat]{0}/秒[lightgray] 修复速度 +ability.stat.slurpheal = [stat]{0}[lightgray] 生命/液体单位 +ability.stat.cooldown = [stat]{0} 秒[lightgray] 冷却时间 +ability.stat.maxtargets = [stat]{0}[lightgray] 最大目标数 +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] 同类型修复量 +ability.stat.damagereduction = [stat]{0}%[lightgray] 伤害减免 +ability.stat.minspeed = [stat]{0} 格/秒[lightgray] 最低速度 +ability.stat.duration = [stat]{0} 秒[lightgray] 持续时间 +ability.stat.buildtime = [stat]{0} 秒[lightgray] 建造时间 + bar.onlycoredeposit = 仅核心可丢入资源 bar.drilltierreq = 需要更高级的钻头 @@ -995,8 +1085,9 @@ bullet.splashdamage = [stat]{0}[lightgray]范围伤害~[stat] {1}[lightgray]格 bullet.incendiary = [stat]燃烧 bullet.homing = [stat]追踪 bullet.armorpierce = [stat]穿甲 -bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles -bullet.interval = [stat]{0}/sec[lightgray] interval bullets: +bullet.maxdamagefraction = [stat]{0}%[lightgray] 伤害上限 +bullet.suppression = [stat]{0}秒[lightgray] 修复压制 ~ [stat]{1}[lightgray] 格 +bullet.interval = [stat]{0}/秒[lightgray] 分裂子弹: bullet.frags = [stat]{0}[lightgray]x分裂子弹: bullet.lightning = [stat]{0}[lightgray]x闪电~[stat]{1}[lightgray]伤害 bullet.buildingdamage = [stat]{0}%[lightgray]对建筑伤害 @@ -1030,6 +1121,7 @@ unit.items = 物品 unit.thousands = K unit.millions = M unit.billions = B +unit.shots = shots unit.pershot = /发 category.purpose = 用途 category.general = 基础 @@ -1050,6 +1142,7 @@ setting.backgroundpause.name = 游戏在后台时自动暂停 setting.buildautopause.name = 自动暂停建造 setting.doubletapmine.name = 双击采矿 setting.commandmodehold.name = 长按保持指挥模式 +setting.distinctcontrolgroups.name = 每单位限制一个编队 setting.modcrashdisable.name = 游戏启动崩溃后禁用模组 setting.animatedwater.name = 动态液体 setting.animatedshields.name = 动态力场 @@ -1096,13 +1189,14 @@ setting.position.name = 显示玩家坐标 setting.mouseposition.name = 显示鼠标坐标 setting.musicvol.name = 音乐音量 setting.atmosphere.name = 显示行星大气层 +setting.drawlight.name = 绘制阴影/光照 setting.ambientvol.name = 环境音量 setting.mutemusic.name = 禁用音乐 setting.sfxvol.name = 音效音量 setting.mutesound.name = 禁用音效 setting.crashreport.name = 发送匿名的崩溃报告 setting.savecreate.name = 自动创建存档 -setting.publichost.name = 游戏公开可见 +setting.steampublichost.name = 公共游戏可见性 setting.playerlimit.name = 玩家数量限制 setting.chatopacity.name = 聊天界面不透明度 setting.lasersopacity.name = 电力连接线不透明度 @@ -1110,8 +1204,10 @@ setting.bridgeopacity.name = 桥梁不透明度 setting.playerchat.name = 显示玩家聊天气泡 setting.showweather.name = 显示天气效果 setting.hidedisplays.name = 不显示逻辑绘图 -steam.friendsonly = Friends Only -steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. +setting.macnotch.name = 立陶宛語 +setting.macnotch.description = 需要重新启动 +steam.friendsonly = 仅限好友 +steam.friendsonly.tooltip = 是否只有 Steam 好友才能加入您的游戏。\n取消选中此选项将使您的游戏公开 - 任何人都可以加入。 public.beta = 请注意,测试版的游戏不能公开可见。 uiscale.reset = UI缩放比例已更改。\n点击“确定”接受更改。\n[accent]{0}[]秒后[scarlet]将自动退出并还原设置。 uiscale.cancel = 取消并退出 @@ -1120,6 +1216,7 @@ keybind.title = 重新绑定按键 keybinds.mobile = [scarlet]除了基本的移动以外,大多数按键绑定在移动设备上无效。 category.general.name = 常规 category.view.name = 视图 +category.command.name = 单位指挥 category.multiplayer.name = 多人游戏 category.blocks.name = 建筑选择 placement.blockselectkeys = \n[lightgray]按键:[{0}, @@ -1137,6 +1234,24 @@ keybind.mouse_move.name = 单位跟随鼠标 keybind.pan.name = 鼠标控制镜头 keybind.boost.name = 启动助推 keybind.command_mode.name = 指挥模式 +keybind.command_queue.name = 单位指挥队列 +keybind.create_control_group.name = 创建操控队伍 +keybind.cancel_orders.name = 取消指令 +keybind.unit_stance_shoot.name = 单位姿态:射击 +keybind.unit_stance_hold_fire.name = 单位姿态:停火 +keybind.unit_stance_pursue_target.name = 单位姿态:追逐目标 +keybind.unit_stance_patrol.name = 单位姿态:巡逻 +keybind.unit_stance_ram.name = 单位姿态:冲锋 +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = 重建建筑 keybind.schematic_select.name = 框选建筑 keybind.schematic_menu.name = 蓝图目录 @@ -1200,17 +1315,25 @@ mode.pvp.description = 与其他玩家对战。 \n[gray]需要地图中有至少 mode.attack.name = 进攻 mode.attack.description = 摧毁敌人的基地。 \n[gray]需要地图中有敌方队伍的核心。 mode.custom = 自定义模式 +rules.invaliddata = 无效剪贴板数据。 +rules.hidebannedblocks = 隐藏禁用的建筑 rules.infiniteresources = 无限资源 rules.onlydepositcore = 仅核心可放入资源 +rules.derelictrepair = 允许修复残骸建筑 rules.reactorexplosions = 反应堆爆炸 rules.coreincinerates = 核心焚烧 rules.disableworldprocessors = 禁用世界处理器 rules.schematic = 允许使用蓝图 rules.wavetimer = 波次计时器 rules.wavesending = 波次可跳波 +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = 波次 +rules.airUseSpawns = Air units use spawn points rules.attack = 进攻模式 +rules.buildai = 基础建筑者 AI +rules.buildaitier = 建筑者 AI 等级 rules.rtsai = RTS AI rules.rtsminsquadsize = 最小部队规模 rules.rtsmaxsquadsize = 最大部队规模 @@ -1226,9 +1349,10 @@ rules.unitbuildspeedmultiplier = 单位生产速度倍率 rules.unitcostmultiplier = 单位生产花费倍率 rules.unithealthmultiplier = 单位生命倍率 rules.unitdamagemultiplier = 单位伤害倍率 -rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier +rules.unitcrashdamagemultiplier = 单位坠毁伤害倍率 rules.solarmultiplier = 太阳能发电倍率 rules.unitcapvariable = 核心可增加单位上限 +rules.unitpayloadsexplode = 单位携带载荷与单位一起爆炸 rules.unitcap = 基础单位上限 rules.limitarea = 限制地图有效区域 rules.enemycorebuildradius = 敌方核心不可建造区域半径:[lightgray](格) @@ -1238,7 +1362,7 @@ rules.buildcostmultiplier = 建造花费倍率 rules.buildspeedmultiplier = 建造速度倍率 rules.deconstructrefundmultiplier = 拆除返还倍率 rules.waitForWaveToEnd = 等待波次结束 -rules.wavelimit = Map Ends After Wave +rules.wavelimit = 地图在有限波次后结束 rules.dropzoneradius = 敌人出生点禁区大小:[lightgray](格) rules.unitammo = 单位有弹药限制 rules.enemyteam = 敌方队伍 @@ -1261,6 +1385,8 @@ rules.weather = 天气 rules.weather.frequency = 周期: rules.weather.always = 永久 rules.weather.duration = 时长: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = 物品 content.liquid.name = 液体 @@ -1482,6 +1608,7 @@ block.inverted-sorter.name = 反向分类器 block.message.name = 信息板 block.reinforced-message.name = 强化信息板 block.world-message.name = 世界信息板 +block.world-switch.name = World Switch block.illuminator.name = 照明器 block.overflow-gate.name = 溢流门 block.underflow-gate.name = 反向溢流门 @@ -1724,7 +1851,6 @@ block.disperse.name = 驱离 block.afflict.name = 劫难 block.lustre.name = 光辉 block.scathe.name = 创伤 -block.fabricator.name = 重构厂 block.tank-refabricator.name = 坦克重构厂 block.mech-refabricator.name = 机甲重构厂 block.ship-refabricator.name = 飞船重构厂 @@ -1788,7 +1914,7 @@ hint.launch = 一旦收集了足够的资源,您就可以通过右下角的\ue hint.launch.mobile = 一旦收集到足够的资源,您就可以通过\ue88c[accent]菜单[]中的\ue827[accent]地图[]选择附近的区块[accent]发射[]核心。 hint.schematicSelect = 按住[accent][[F][]键用鼠标框选建筑以复制粘贴。 \n\n[accent][鼠标中键][]复制单个建筑。 hint.rebuildSelect = 按住[accent][[B][]用鼠标框选被摧毁的建筑以自动重建。 -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect.mobile = 选择\ue874复制按钮,然后点击\ue80f重建按钮并拖动以选中被摧毁的建筑。\n这将自动重建这些建筑。 hint.conveyorPathfind = 按住[accent][[L-Ctrl][]键并拖动传送带,使其自动寻路。 hint.conveyorPathfind.mobile = 启用\ue844[accent]传送带自动寻路[]后,拖动传送带可使其自动寻路。 @@ -1846,11 +1972,15 @@ onset.turrets = 使用单位防御很有效,但合理使用[accent]炮塔[]可 onset.turretammo = 给炮塔供给[accent]铍[]。 onset.walls = [accent]墙[]可以防止建筑受到伤害。\n在炮塔周围放置一些\uf6ee[accent]铍墙[]。 onset.enemies = 敌人来袭,准备防御。 +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = 敌军基地十分脆弱。 发动反攻。 onset.cores = 你可以在[accent]核心地块[]上建造新的核心。\n新核心的功能类似于前沿基地,且与其他核心共享资源仓库。\n放置一个\uf725核心。 onset.detect = 敌军将在2分钟内发现你。\n设立防御,挖掘矿物,并建造生产设施。 +onset.commandmode = 按住[accent]shift[]键进入[accent]指挥模式[]。\n按住[accent]鼠标左键[]框选单位。\n[accent]右键[]指挥所选单位移动或攻击。 +onset.commandmode.mobile = 点击左下角的[accent]指挥[]进入[accent]指挥模式[]。\n按住屏幕,[accent]拖动[]框选单位。\n[accent]点击[]指挥所选单位移动或攻击。 +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. -split.pickup = 核心单位可以拾取一些方块。\n拾取这个[accent]强化容器[]并将其放到[accent]载荷装载器[]中。\n(默认使用[拾取,]放下载荷) +split.pickup = 核心单位可以拾取一些方块。\n拾取这个[accent]强化容器[]并将其放到[accent]载荷装载器[]中。\n(默认使用快捷键“[”拾取载荷,“]“放下载荷) split.pickup.mobile = 核心单位可以拾取一些方块。\n拾取这个[accent]强化容器[]并将其放到[accent]载荷装载器[]中。\n(长按以拾取或放下载荷) split.acquire = 你需要获取钨来生产单位。 split.build = 单位必须被运输到墙的另一侧。\n在墙壁两侧各放置一个[accent]载荷质量驱动器[]。\n点击其中一个,然后点击另一个以连接它们。 @@ -2048,7 +2178,6 @@ block.logic-display.description = 显示处理器中绘制的各种图像。 block.large-logic-display.description = 显示处理器中绘制的各种图像。 block.interplanetary-accelerator.description = 一个巨大的电磁轨道加速器。 将核心加速至逃逸速度以进行星际部署。 block.repair-turret.description = 持续修复范围内受损的单位。 可以用冷却液强化。 -block.payload-propulsion-tower.description = 远距离载荷运送建筑。 向相连的其他载荷驱动器发射载荷。 #埃里克尔 block.core-bastion.description = 基地的核心。 拥有装甲。 一旦被摧毁,此区块就会丢失。 @@ -2086,7 +2215,6 @@ block.impact-drill.description = 放置在矿物上时,以缓慢的速度无 block.eruption-drill.description = 改进过的冲击钻头。 能够开采钍。 需要氢。 block.reinforced-conduit.description = 向前传输流体。 不接受侧面的非导管输入。 block.reinforced-liquid-router.description = 将流体平均分配到所有侧面方向。 -block.reinforced-junction.description = 两条交叉物品管道的桥梁。 block.reinforced-liquid-tank.description = 储存大量的流体。 block.reinforced-liquid-container.description = 储存数量可观的流体。 block.reinforced-bridge-conduit.description = 跨越任意地形或建筑物传输流体。 @@ -2180,9 +2308,9 @@ unit.beta.description = 保护次代核心,可建造建筑。 unit.gamma.description = 保护终代核心,可建造建筑。 unit.retusa.description = 向敌人发射追踪鱼雷,并修复己方单位。 unit.oxynoe.description = 向敌人发射火焰束,并修复己方建筑。 搭载一台单点防御炮塔,能够防御来袭的子弹。 -unit.cyerce.description = 向敌人发射追踪集束导弹,并修复己方单位。 -unit.aegires.description = 产生能量场,使范围内的敌方建筑与单位受到电击,对己方则进行修复。 -unit.navanax.description = 发射大型电磁爆弹,对敌方电网造成显著破坏并修复己方建筑。 搭载4台自动激光炮台,能熔化靠近的敌人。 +unit.cyerce.description = 向敌人发射追踪集束导弹,并修复己方单位。 +unit.aegires.description = 产生能量场,使范围内的敌方建筑与单位受到电击,对己方则进行修复。 +unit.navanax.description = 发射大型电磁爆弹,对敌方电网造成显著破坏并修复己方建筑。 搭载4台自动激光炮台,能熔化靠近的敌人。 #埃里克尔 unit.stell.description = 向敌人发射普通子弹。 @@ -2190,11 +2318,11 @@ unit.locus.description = 向敌人交替发射子弹。 unit.precept.description = 向敌人发射穿透性集束子弹。 unit.vanquish.description = 向敌人发射大型穿透性分裂子弹。 unit.conquer.description = 向敌人发射大量大型穿透性子弹。 -unit.merui.description = 向地面敌人发射远程火炮。 可以跨越大多数地形。 -unit.cleroi.description = 向敌人发射双发炮弹。 搭载一台单点防御炮塔,能够防御来袭的子弹。 可以跨越大多数地形。 -unit.anthicus.description = 向敌人发射远程追踪导弹。 可以跨越大多数地形。 -unit.tecta.description = 向敌人发射等离子追踪导弹。 用它前方的护盾保护自己。 可以跨越大多数地形。 -unit.collaris.description = 向敌人发射远程分裂火炮。 可以跨越大多数地形。 +unit.merui.description = 向地面敌人发射远程火炮。 可以跨越大多数地形。 +unit.cleroi.description = 向敌人发射双发炮弹。 搭载一台单点防御炮塔,能够防御来袭的子弹。 可以跨越大多数地形。 +unit.anthicus.description = 向敌人发射远程追踪导弹。 可以跨越大多数地形。 +unit.tecta.description = 向敌人发射等离子追踪导弹。 用它前方的护盾保护自己。 可以跨越大多数地形。 +unit.collaris.description = 向敌人发射远程分裂火炮。 可以跨越大多数地形。 unit.elude.description = 向敌人发射螺旋状追踪子弹。 可以在液体上悬浮。 unit.avert.description = 向敌人发射螺旋状扭曲子弹。 unit.obviate.description = 向敌人发射螺旋状闪电球。 @@ -2207,6 +2335,7 @@ unit.emanate.description = 保护卫城核心,可建造建筑。 使用一对 lst.read = 从连接的内存读取数字 lst.write = 向连接的内存写入数字 lst.print = 添加文字到打印缓存\n使用[accent]Print Flush[]后才会真正显示 +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = 添加绘图操作到绘图缓存\n使用[accent]Draw Flush[]后才会真正显示 lst.drawflush = 将绘图缓存中的[accent]Draw[]队列刷新到显示屏 lst.printflush = 将打印缓存中的[accent]Print[]队列刷新到信息板 @@ -2229,6 +2358,8 @@ lst.getblock = 获取任意位置的地块数据 lst.setblock = 设置任意位置的地块数据 lst.spawnunit = 在指定位置生成单位 lst.applystatus = 添加或清除单位的一个状态效果 +lst.weathersense = 检查特定种类的天气当前是否启用。 +lst.weatherset = 设置当前状态为特定类型天气。 lst.spawnwave = 在任意位置生成一波敌人\n并不记录在波数计数器中 lst.explosion = 在某个位置生成爆炸 lst.setrate = 在指令/时间刻的时间下设置处理器处理速度 @@ -2237,9 +2368,51 @@ lst.packcolor = 将[0,1]范围内的RGBA分量整合成单个数字,用于绘 lst.setrule = 设置地图规则 lst.flushmessage = 在屏幕中央投影文字缓存区的内容\n会等待上一个文字显示结束 lst.cutscene = 控制玩家游戏视角 -lst.setflag = 设置一个可以被所有处理器读取的全局flag -lst.getflag = 检查是否设置了全局flag -lst.setprop = Sets a property of a unit or building. +lst.setflag = 设置一个可以被所有处理器读取的全局标志。 +lst.getflag = 检查是否设置了全局标志。 +lst.setprop = 设置单位或建筑物的属性。 +lst.effect = 创建一个粒子效果。 +lst.sync = 在网络中同步一个变量。\n最多每秒调用10次。 +lst.makemarker = 在世界中创建一个新的逻辑标记。\n必须提供一个用于标识此标记的ID。\n目前每个世界限制最多20000个标记。 +lst.setmarker = 为标记设置属性。\n使用的ID必须与制作标记指令中的相同。 +lst.localeprint = 将地图本地化文本属性值添加到文本缓冲区中。\n要在地图编辑器中设置地图本地化包,请检查 [accent]地图信息 > 本地化包[]。\n如果客户端是移动设备,则尝试首先打印以 ".mobile" 结尾的属性。 +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = 数学常数 pi (3.141...) +lglobal.@e = 数学常数 e (2.718...) +lglobal.@degToRad = 将角度制转换为弧度制 +lglobal.@radToDeg = 将弧度制转换为角度制 +lglobal.@time = 当前保存的游戏时间,以毫秒为单位 +lglobal.@tick = 当前保存的游戏时间,以tick为单位(1秒 = 60 tick) +lglobal.@second = 当前保存的游戏时间,以秒为单位 +lglobal.@minute = 当前保存的游戏时间,以分钟为单位 +lglobal.@waveNumber = 如果启用了波次,则为当前波次编号 +lglobal.@waveTime = 波次的倒计时计时器,以秒为单位 +lglobal.@mapw = 地图宽度(单位:格) +lglobal.@maph = 地图高度(单位:格) +lglobal.sectionMap = 地图 +lglobal.sectionGeneral = 通用 +lglobal.sectionNetwork = 网络/客户端 [仅限世界处理器] +lglobal.sectionProcessor = 处理器 +lglobal.sectionLookup = 查找 +lglobal.@this = 执行代码的逻辑块 +lglobal.@thisx = 执行代码的逻辑块的 X 坐标 +lglobal.@thisy = 执行代码的逻辑块的 Y 坐标 +lglobal.@links = 连接到此处理器的总块数 +lglobal.@ipt = 处理器每 tick 的执行速度(每秒 60 tick) +lglobal.@unitCount = 游戏中单位内容的类型总数;与查找指令一起使用 +lglobal.@blockCount = 游戏中块内容的类型总数;与查找指令一起使用 +lglobal.@itemCount = 游戏中物品内容的类型总数;与查找指令一起使用 +lglobal.@liquidCount = 游戏中液体内容的类型总数;与查找指令一起使用 +lglobal.@server = 如果代码正在服务器上运行或单人游戏中运行,则为真,否则为假 +lglobal.@client = 如果代码正在连接到服务器的客户端上运行,则为真 +lglobal.@clientLocale = 运行代码的客户端的区域设置。例如:en_US +lglobal.@clientUnit = 运行代码的客户端的单位 +lglobal.@clientName = 运行代码的客户端的玩家名称 +lglobal.@clientTeam = 运行代码的客户端的团队 ID +lglobal.@clientMobile = 如果运行代码的客户端在移动设备上,则为真,否则为假 + logic.nounitbuild = [red]此处不允许处理器操控单位去建设 @@ -2255,6 +2428,7 @@ laccess.dead = 单位或建筑是否已被摧毁或者已失效 laccess.controlled = 若单位的控制方是处理器,返回[accent]@ctrlProcessor[]\n若单位/建筑由玩家控制,返回[accent]@ctrlPlayer[]\n若单位在编队中,返回[accent]@ctrlFormation[]\n其他情况,返回0 laccess.progress = 进度,0到1之间的数值。 \n返回工厂生产、 炮塔装填,或者建筑建造的进度 laccess.speed = 单位的最高速度(格/秒) +laccess.id = 单位/块/物品/液体的ID。\n这是 Lookup 的反向操作。 lcategory.unknown = 未知 lcategory.unknown.description = 未分类的指令 @@ -2282,6 +2456,7 @@ graphicstype.poly = 绘制实心正多边形 graphicstype.linepoly = 绘制正多边形轮廓 graphicstype.triangle = 绘制实心三角形 graphicstype.image = 画出某个游戏内容的图像\n例如[accent]@router[]或者[accent]@dagger[] +graphicstype.print = 从打印缓冲区绘制文本。\n清除打印缓冲区。 lenum.always = 无条件跳转 lenum.idiv = 整数除法,返回不带小数的商 @@ -2301,6 +2476,7 @@ lenum.xor = 按位异或 lenum.min = 取较小值 lenum.max = 取较大值 lenum.angle = 返回向量的辐角(角度制) +lenum.anglediff = 返回两个角度之间的绝对距离(角度制)。 lenum.len = 返回向量的长度 lenum.sin = 正弦(角度制) @@ -2375,6 +2551,7 @@ lenum.unbind = 停用单位的逻辑控制\n恢复常规AI lenum.move = 移动到某个位置 lenum.approach = 靠近某个位置至一定的距离内 lenum.pathfind = 寻路移动至敌人出生点 +lenum.autopathfind = "自动寻找最近的敌方核心或敌人生成点。\n这与波次中的敌人寻路相同。" lenum.target = 向某个位置瞄准/射击 lenum.targetp = 根据提前量向某个目标瞄准/射击 lenum.itemdrop = 将携带的物品放入一座建筑 @@ -2385,8 +2562,13 @@ lenum.payenter = 进入/降落到单位下方的荷载方块中 lenum.flag = 给单位赋予数字形式的标记 lenum.mine = 从某个位置采集矿物 lenum.build = 建造建筑 -lenum.getblock = 获取某个坐标处的建筑及其类型\n坐标需要在单位的感知范围内\n无建筑的地面返回[accent]@air[],墙壁返回[accent]@solid[] +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = 检查单位是否接近了某个位置 lenum.boost = 开始/停止助推 -onset.commandmode = 按住[accent]shift[]键进入[accent]指挥模式[]。\n按住[accent]鼠标左键[]框选单位。\n[accent]右键[]指挥所选单位移动或攻击。 -onset.commandmode.mobile = 点击左下角的[accent]指挥[]进入[accent]指挥模式[]。\n按住屏幕,[accent]拖动[]框选单位。\n[accent]点击[]指挥所选单位移动或攻击。 +lenum.flushtext = 如果适用的话,将打印缓冲区的内容刷新到标记。\n如果 fetch 设置为 true,则尝试从地图本地化包或游戏的包中获取属性。 +lenum.texture = 直接来自游戏纹理图集的纹理名称(使用 kebab-case 命名风格)。\n如果 printFlush 设置为 true,则将文本缓冲区内容作为文本参数消耗。 +lenum.texturesize = 纹理的大小(格)。零值将标记宽度缩放为原始纹理的大小。 +lenum.autoscale = 是否根据玩家的缩放级别缩放标记。 +lenum.posi = 索引位置,用于线和四边形标记,索引零表示第一个位置。 +lenum.uvi = 纹理的位置范围从零到一,用于四边形标记。 +lenum.colori = 索引位置,用于线和四边形标记,索引零表示第一个颜色。 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 08bc2123c5..85241920e8 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -57,6 +57,7 @@ mods.browser.sortstars = 以星數篩選 schematic = 藍圖 schematic.add = 儲存藍圖…… schematics = 藍圖 +schematic.search = Search schematics... schematic.replace = 相同名稱的藍圖已經存在。是否取代它? schematic.exists = 相同名稱的藍圖已經存在。 schematic.import = 匯入藍圖…… @@ -69,7 +70,7 @@ schematic.shareworkshop = 分享到工作坊 schematic.flip = [accent][[{0}][]/[accent][[{1}][]:翻轉藍圖 schematic.saved = 藍圖已儲存。 schematic.delete.confirm = 該藍圖將被完全清除。 -schematic.rename = 重新命名藍圖 +schematic.edit = Edit Schematic schematic.info = {0}x{1}, {2}方塊 schematic.disabled = [scarlet]藍圖被進用[]\n你不能在這個[accent]地圖[] 或 [accent]伺服器中使用藍圖. schematic.tags = 標籤: @@ -78,6 +79,7 @@ schematic.addtag = 新增標籤 schematic.texttag = 文字標籤 schematic.icontag = 圖像標籤 schematic.renametag = 重新命名 +schematic.tagged = {0} tagged schematic.tagdelconfirm = 確認刪除此標籤? schematic.tagexists = 該標籤已存在。 @@ -253,11 +255,19 @@ trace = 追蹤玩家 trace.playername = 玩家名稱:[accent]{0} trace.ip = IP:[accent]{0} trace.id = ID:[accent]{0} +trace.language = Language: [accent]{0} trace.mobile = 行動客戶端:[accent]{0} trace.modclient = 自訂客戶端:[accent]{0} trace.times.joined = 加入次數:[accent]{0} trace.times.kicked = 踢除次數:[accent]{0} +trace.ips = IPs: +trace.names = Names: invalidid = 無效的客戶端 ID!請遞交錯誤回報。 +player.ban = Ban +player.kick = Kick +player.trace = Trace +player.admin = Toggle Admin +player.team = Change Team server.bans = 封鎖 server.bans.none = 沒有玩家被封鎖! server.admins = 管理員 @@ -271,10 +281,11 @@ server.version = [gray]v{0} {1} server.custombuild = [accent]自訂客戶端 confirmban = 您確定要封鎖「[white]{0}[]」嗎? confirmkick = 您確定要踢出「[white]{0}[]」嗎? -confirmvotekick = 您確定要投票踢出「[white]{0}[]」嗎? confirmunban = 您確定要解除封鎖這個玩家嗎? confirmadmin = 您確定要晉升「[white]{0}[]」為管理員嗎? confirmunadmin = 您確定要解除「[white]{0}[]」的管理員嗎? +votekick.reason = Vote-Kick Reason +votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = 加入遊戲 joingame.ip = IP 位置: disconnect = 已中斷連線。 @@ -330,12 +341,23 @@ open = 開啟 customize = 自訂 cancel = 取消 command = 命令 +command.queue = [lightgray][Queuing] command.mine = 挖礦 command.repair = 修復 command.rebuild = 重建 command.assist = 協助玩家 command.move = 移動 command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = 開啟連結 copylink = 複製連結 back = 返回 @@ -382,9 +404,9 @@ custom = 自訂 builtin = 内建 map.delete.confirm = 確認要刪除地圖嗎?此動作無法復原! map.random = [accent]隨機地圖 -map.nospawn = 這個地圖沒有核心!請在編輯器中添加一個[#{0}]{1}[]的核心。 +map.nospawn = 這個地圖沒有核心!請在編輯器中添加一個{0}的核心。 map.nospawn.pvp = 這個地圖沒有敵對核心讓玩家重生!請在編輯器中添加一個[scarlet]不是橘色[]的核心。 -map.nospawn.attack = 這個地圖沒有敵人核心可以攻擊!請在編輯器中添加一個[#{0}]{1}[]的核心。 +map.nospawn.attack = 這個地圖沒有敵人核心可以攻擊!請在編輯器中添加一個{0}的核心。 map.invalid = 地圖載入錯誤:地圖可能已經損毀。 workshop.update = 更新項目 workshop.error = 擷取工作坊詳細資訊時出錯:{0} @@ -416,6 +438,12 @@ editor.waves = 波次: editor.rules = 規則: editor.generation = 自動生成: editor.objectives = Objectives +editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = 在遊戲中編輯 editor.playtest = 測試 editor.publish.workshop = 在工作坊上發佈 @@ -459,7 +487,7 @@ waves.sort.begin = 開始 waves.sort.health = 血量 waves.sort.type = 兵種 waves.search = Search waves... -waves.filter.unit = Unit Filter +waves.filter = Unit Filter waves.units.hide = 全部隱藏 waves.units.show = 全部顯示 @@ -472,6 +500,8 @@ editor.default = [lightgray](預設) details = 詳細資訊…… edit = 編輯…… variables = 變數 +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = Built-in Variables editor.name = 名稱: editor.spawn = 重生單位 editor.removeunit = 移除單位 @@ -483,6 +513,7 @@ editor.errorlegacy = 此地圖太舊,並使用不支援的舊地圖格式。 editor.errornot = 這不是地圖檔。 editor.errorheader = 此地圖檔無效或已損毀。 editor.errorname = 地圖沒有定義名稱。 +editor.errorlocales = Error reading invalid locale bundles. editor.update = 更新 editor.randomize = 隨機化 editor.moveup = Move Up @@ -494,6 +525,7 @@ editor.sectorgenerate = 產生地區 editor.resize = 調整大小 editor.loadmap = 載入地圖 editor.savemap = 儲存地圖 +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? editor.saved = 已儲存! editor.save.noname = 您的地圖沒有名稱!在「地圖資訊」畫面設定一個名稱。 editor.save.overwrite = 您的地圖覆寫了內建的地圖!在「地圖資訊」畫面設定其他名稱。 @@ -532,6 +564,8 @@ toolmode.eraseores = 清除礦物 toolmode.eraseores.description = 僅清除礦物。 toolmode.fillteams = 填充團隊 toolmode.fillteams.description = 填充團隊而非方塊。 +toolmode.fillerase = Fill Erase +toolmode.fillerase.description = Erase blocks of the same type. toolmode.drawteams = 繪製團隊 toolmode.drawteams.description = 繪製團隊而非方塊。 #unused @@ -556,6 +590,7 @@ filter.clear = 清除 filter.option.ignore = 忽略 filter.scatter = 分散 filter.terrain = 地形 +filter.logic = Logic filter.option.scale = 規模 filter.option.chance = 機會 @@ -579,6 +614,25 @@ filter.option.floor2 = 次要地板 filter.option.threshold2 = 次要閾值 filter.option.radius = 半徑 filter.option.percentile = 百分比 +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Are you sure you want to delete this locale bundle? +locales.applytoall = Apply Changes To All Locales +locales.addtoother = Add To Other Locales +locales.rollback = Rollback to last applied +locales.filter = Property filter +locales.searchname = Search name... +locales.searchvalue = Search value... +locales.searchlocale = Search locale... +locales.byname = By name +locales.byvalue = By value +locales.showcorrect = Show properties that are present in all locales and have unique values everywhere +locales.showmissing = Show properties that are missing in some locales +locales.showsame = Show properties that have same values in different locales +locales.viewproperty = View in all locales +locales.viewing = Viewing property "{0}" +locales.addicon = Add Icon width = 寬度: height = 長度: @@ -631,9 +685,12 @@ objective.commandmode.name = 指揮模式 objective.flag.name = 全局Flag marker.shapetext.name = 稜框+文字標示 -marker.minimap.name = 小地圖標示 +marker.point.name = Point marker.shape.name = 稜框標示 marker.text.name = 文字標示 +marker.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = 反黑背景 marker.outline = 描邊 @@ -662,7 +719,6 @@ resources.max = 最大 bannedblocks = 禁用方塊 objectives = 目標 bannedunits = 禁用單位 -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = 全部加入 @@ -685,7 +741,7 @@ error.any = 未知網路錯誤。 error.bloom = 初始化特效失敗。\n您的裝置可能不支援 weather.rain.name = 雨 -weather.snow.name = 雪 +weather.snowing.name = 雪 weather.sandstorm.name = 沙塵暴 weather.sporestorm.name = 孢子風暴 weather.fog.name = 霧 @@ -721,8 +777,8 @@ sector.curlost = 已失去該地區 sector.missingresources = [scarlet]核心資源不足 sector.attacked = 地區 [accent]{0}[white] 遭受攻擊! sector.lost = 地區 [accent]{0}[white] 戰敗! -#note: the missing space in the line below is intentional -sector.captured = 成功佔領地區[accent]{0}[white]! +sector.capture = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! sector.changeicon = 更改圖標 sector.noswitch.title = 無法切換地區 sector.noswitch = 當前地區遭受攻擊時,無法切換地區\n\n地區: [accent]{0}[] 於 [accent]{1}[] @@ -934,6 +990,7 @@ stat.abilities = 能力 stat.canboost = 推進器 stat.flying = 飛行單位 stat.ammouse = 彈藥使用 +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = 傷害加成 stat.healthmultiplier = 血量加成 stat.speedmultiplier = 速度加成 @@ -944,14 +1001,46 @@ stat.immunities = Immunities stat.healing = 治癒 ability.forcefield = 防護罩 +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = 維修力場 -ability.statusfield = {0}狀態力場 -ability.unitspawn = {0}工廠 +ability.repairfield.description = Repairs nearby units +ability.statusfield = 狀態力場 +ability.statusfield.description = Applies a status effect to nearby units +ability.unitspawn = 工廠 +ability.unitspawn.description = Constructs units ability.shieldregenfield = 護盾充能力場 +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = 移動閃電 +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field -ability.energyfield = 能量場: [accent]{0}[] 傷害 ~ [accent]{1}[] 方格 / [accent]{2}[] 目標數 +ability.suppressionfield.description = Stops nearby repair buildings +ability.energyfield = 能量場: +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = 僅允許向核心放置物品 bar.drilltierreq = 需要更好的鑽頭 @@ -991,6 +1080,7 @@ bullet.splashdamage = [stat]{0}[lightgray]範圍傷害 ~[stat] {1}[lightgray]格 bullet.incendiary = [stat]燃燒 bullet.homing = [stat]追蹤 bullet.armorpierce = [stat]穿甲 +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x 集束子彈: @@ -1026,6 +1116,7 @@ unit.items = 物品 unit.thousands = K unit.millions = M unit.billions = B +unit.shots = shots unit.pershot = /發 category.purpose = 用途 category.general = 一般 @@ -1046,6 +1137,7 @@ setting.backgroundpause.name = 背景執行時暫停遊戲 setting.buildautopause.name = 自動暫停建築 setting.doubletapmine.name = 連續點擊以挖礦 setting.commandmodehold.name = 長按進入指揮模式 +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = 閃退後停用模組 setting.animatedwater.name = 顯示液面動畫 setting.animatedshields.name = 顯示護盾動畫 @@ -1092,13 +1184,14 @@ setting.position.name = 顯示玩家位置 setting.mouseposition.name = 顯示滑鼠座標 setting.musicvol.name = 音樂音量 setting.atmosphere.name = 顯示星球大氣層 +setting.drawlight.name = Draw Darkness/Lighting setting.ambientvol.name = 環境音量 setting.mutemusic.name = 靜音 setting.sfxvol.name = 音效音量 setting.mutesound.name = 靜音 setting.crashreport.name = 傳送匿名當機回報 setting.savecreate.name = 自動建立存檔 -setting.publichost.name = 公開遊戲可見度 +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = 玩家數限制 setting.chatopacity.name = 聊天框不透明度 setting.lasersopacity.name = 雷射不透明度 @@ -1106,6 +1199,8 @@ setting.bridgeopacity.name = 橋透明度 setting.playerchat.name = 在遊戲中顯示聊天視窗 setting.showweather.name = 顯示天氣動畫 setting.hidedisplays.name = 隱藏邏輯顯示 +setting.macnotch.name = 使界面適應顯示槽口 +setting.macnotch.description = 需要重新啟動遊戲以更改大小 steam.friendsonly = Friends Only steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. public.beta = 請注意,該遊戲的Beta版本無法公開遊戲大廳。 @@ -1116,6 +1211,7 @@ keybind.title = 重新綁定按鍵 keybinds.mobile = [scarlet]此處的大多數快捷鍵在行動裝置上均無法運作。僅支援基本移動。 category.general.name = 一般 category.view.name = 查看 +category.command.name = Unit Command category.multiplayer.name = 多人 category.blocks.name = 選取方塊 placement.blockselectkeys = \n[lightgray]按鍵:[{0}, @@ -1133,6 +1229,24 @@ keybind.mouse_move.name = 跟隨滑鼠 keybind.pan.name = 平移鏡頭 keybind.boost.name = 加速 keybind.command_mode.name = 指揮模式 +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = 選擇區域 keybind.schematic_menu.name = 藍圖目錄 @@ -1196,17 +1310,25 @@ mode.pvp.description = 和其他玩家競爭、戰鬥。\n[gray]地圖中需要 mode.attack.name = 進攻 mode.attack.description = 目標是摧毀敵人的基地。\n[gray]地圖中需要有一個紅色核心。 mode.custom = 自訂規則 +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = 無限資源 rules.onlydepositcore = 僅允許向核心放置物品 +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = 反應爐爆炸 rules.coreincinerates = 核心銷毀物品 rules.disableworldprocessors = 停用世界處理器 rules.schematic = 允許使用藍圖 rules.wavetimer = 波次時間 rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = 波次 +rules.airUseSpawns = Air units use spawn points rules.attack = 攻擊模式 +rules.buildai = Base Builder AI +rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI rules.rtsminsquadsize = 最小隊伍規模 rules.rtsmaxsquadsize = 最大隊伍規模 @@ -1225,6 +1347,7 @@ rules.unitdamagemultiplier = 單位傷害加成 rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = 太陽能電加成 rules.unitcapvariable = 核心限制單位上限 +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = 基礎單位上限 rules.limitarea = 限制地圖區域 rules.enemycorebuildradius = 敵人核心禁止建設半徑︰[lightgray](格) @@ -1257,6 +1380,8 @@ rules.weather = 天氣 rules.weather.frequency = 頻率: rules.weather.always = 永遠 rules.weather.duration = 持續時間: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = 物品 content.liquid.name = 液體 @@ -1478,6 +1603,7 @@ block.inverted-sorter.name = 反向分類器 block.message.name = 訊息板 block.reinforced-message.name = Reinforced Message block.world-message.name = World Message +block.world-switch.name = World Switch block.illuminator.name = 照明燈 block.overflow-gate.name = 溢流器 block.underflow-gate.name = 反向溢流器 @@ -1720,7 +1846,6 @@ block.disperse.name = 驅離者 block.afflict.name = 折磨 block.lustre.name = 餘光 block.scathe.name = 毀損 -block.fabricator.name = 製造廠 block.tank-refabricator.name = 戰車重塑者 block.mech-refabricator.name = 機甲重塑者 block.ship-refabricator.name = 飛船重塑者 @@ -1839,9 +1964,15 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens onset.turretammo = Supply the turret with [accent]beryllium ammo.[] onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. onset.enemies = Enemy incoming, prepare to defend. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = The enemy is vulnerable. Counter-attack. onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. + +#Don't translate these yet! +onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. +onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2036,7 +2167,6 @@ block.logic-display.description = 顯示由處理器輸出的任意圖像。 block.large-logic-display.description = 顯示由處理器輸出的任意圖像。 block.interplanetary-accelerator.description = 巨大的電磁砲塔。將核心加速至脫離速度以在其他星球部署。 block.repair-turret.description = 持續修復最靠近的受損單位。能使用冷卻劑。 -block.payload-propulsion-tower.description = 遠程原料輸送建築。發射原料至另一個連接的推進塔。 block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. @@ -2072,7 +2202,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2191,6 +2320,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = [accent]讀取[]記憶體中的一項數值 lst.write = [accent]寫入[]一項數值到記憶體中 lst.print = 將文字加入輸出的暫存中,搭配[accent]Print Flush[], [accent]Flush message[]使用 +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = 將圖形加入顯示的暫存中,搭配[accent]Draw Flush[]使用 lst.drawflush = 將所有暫存的[accent]Draw[]指令推到顯示器上 lst.printflush = 將所有暫存的[accent]Print[]指令推到訊息板上 @@ -2213,6 +2343,8 @@ lst.getblock = 由位置取方塊數據 lst.setblock = 由位置設置方塊數據 lst.spawnunit = 在某一位置生成單位 lst.applystatus = 爲單位添加或移除狀態效果 +lst.weathersense = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. lst.spawnwave = 在某一位置生成一波敵人\n不計入波數 lst.explosion = 在某一位置製造爆炸 lst.setrate = 以指令/每時刻設置處理器速度 @@ -2224,6 +2356,47 @@ lst.cutscene = 控制玩家鏡頭 lst.setflag = 設置一個全局flag,可被所有處理器讀取 lst.getflag = 檢查某一全局flag是否存在 lst.setprop = Sets a property of a unit or building. +lst.effect = Create a particle effect. +lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]單位建造邏輯已被禁止。 @@ -2239,6 +2412,7 @@ laccess.dead = 單位或建築是否已死亡或不存在。 laccess.controlled = 將回傳:\n處理器控制:[accent]@ctrlProcessor[]\n玩家控制:[accent]@ctrlPlayer[]\n在隊形中:[accent]@ctrlFormation[]\n其他:[accent]0[]。 laccess.progress = 建造、生產進度。以 0 到 1 表示。以及砲台裝填。 laccess.speed = 單位最快速度(格子/秒) +laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. lcategory.unknown = 未知 lcategory.unknown.description = Uncategorized instructions. @@ -2257,7 +2431,7 @@ lcategory.world.description = Control how the world behaves. graphicstype.clear = 重製版面為指定顏色 graphicstype.color = 為後續所有圖畫指令設定顏色 -graphicstype.col = 整合後的色彩信息\n以十六進制 [accent]%[] 開頭\n例如: 紅色爲 [accent]%ff0000[] +graphicstype.col = 整合後的色彩信息\n以十六進制 [accent]%[] 開頭\n例如: 紅色爲 [accent]%ff0000[] graphicstype.stroke = 為後續所有圖畫指令設定直線寬度 graphicstype.line = 畫一直線 graphicstype.rect = 畫實心長方形 @@ -2266,6 +2440,7 @@ graphicstype.poly = 畫實心正多邊形 graphicstype.linepoly = 畫空心正多邊形 graphicstype.triangle = 畫實心三角形 graphicstype.image = 繪製內建圖畫\n如: [accent]@router[]或[accent]@dagger[]. +graphicstype.print = Draws text from the print buffer.\nClears the print buffer. lenum.always = 永遠 true (直接跳). lenum.idiv = 整數除法,無條件捨去. @@ -2285,6 +2460,7 @@ lenum.xor = 位元 XOR lenum.min = 兩數取小 lenum.max = 兩數取大 lenum.angle = 向量與x軸夾角 +lenum.anglediff = Absolute distance between two angles in degrees. lenum.len = 向量長度 lenum.sin = 度數Sin值 @@ -2359,6 +2535,7 @@ lenum.unbind = 完全停用邏輯控制\n恢復爲原始AI lenum.move = 移動到指定位置 lenum.approach = 移動到距離指定位置一段距離的地方 lenum.pathfind = 由內建AI前往敵方重生點 +lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. lenum.target = 射擊指定區域 lenum.targetp = 帶自瞄射擊指定的目標 lenum.itemdrop = 放下物品 @@ -2369,10 +2546,13 @@ lenum.payenter = 進入/降落到載重方塊 lenum.flag = 單位編號(可異) lenum.mine = 挖指定位置的礦物 lenum.build = 建造一個建築 -lenum.getblock = 獲取指定位置的建築種類和該建築\n必須在單位的範圍內\n實體障礙物,如高山會回傳[accent]@solid[] +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = 單位是否在指定範圍內 lenum.boost = 使用推進器 - -#Don't translate these yet! -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. +lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. +lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. +lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. +lenum.autoscale = Whether to scale marker corresponding to player's zoom level. +lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. +lenum.uvi = Texture's position ranging from zero to one, used for quad markers. +lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. diff --git a/core/assets/contributors b/core/assets/contributors index 4a2aee81aa..a07a13aadc 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -5,6 +5,7 @@ Timmeey86 Epowerj Baltazár Radics Dexapnow +Somka Milinai 키에르 skybldev @@ -156,3 +157,14 @@ JojoFR1 Xasmedy xStaBUx WayZer +SITUVNgcd +Gabriel "red" Fondato +CoCo Snow +summoner +OpalSoPL +BalaM314 +Redstonneur1256 +ApsZoldat +hexagon-recursion +JasonP01 +BlueTheCube diff --git a/core/assets/cursors/repair.png b/core/assets/cursors/repair.png new file mode 100644 index 0000000000..0604903f1d Binary files /dev/null and b/core/assets/cursors/repair.png differ diff --git a/core/assets/fonts/logic.ttf b/core/assets/fonts/logic.ttf new file mode 100644 index 0000000000..0270cdfe3c Binary files /dev/null and b/core/assets/fonts/logic.ttf differ diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 2ff5ccd0bf..64963dd203 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -583,3 +583,8 @@ 63099=large-payload-mass-driver|block-large-payload-mass-driver-ui 63098=reinforced-message|block-reinforced-message-ui 63097=world-message|block-world-message-ui +63096=fast|status-fast-ui +63095=ranai|ranai +63094=cat|cat +63093=world-switch|block-world-switch-ui +63092=dynamic|status-dynamic-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index c5ed10a04e..26e11eb4c2 100644 Binary files a/core/assets/logicids.dat and b/core/assets/logicids.dat differ diff --git a/core/assets/maps/aegis.msav b/core/assets/maps/aegis.msav index eef58e1907..961e30718c 100644 Binary files a/core/assets/maps/aegis.msav and b/core/assets/maps/aegis.msav differ diff --git a/core/assets/maps/basin.msav b/core/assets/maps/basin.msav index 040a44a841..6cd15494fb 100644 Binary files a/core/assets/maps/basin.msav and b/core/assets/maps/basin.msav differ diff --git a/core/assets/maps/craters.msav b/core/assets/maps/craters.msav index c52303c3a1..9eb3d18444 100644 Binary files a/core/assets/maps/craters.msav and b/core/assets/maps/craters.msav differ diff --git a/core/assets/maps/frozenForest.msav b/core/assets/maps/frozenForest.msav index 09f7e2a546..e29d7199cd 100644 Binary files a/core/assets/maps/frozenForest.msav and b/core/assets/maps/frozenForest.msav differ diff --git a/core/assets/maps/glacier.msav b/core/assets/maps/glacier.msav index efe240108d..cdb524a0d4 100644 Binary files a/core/assets/maps/glacier.msav and b/core/assets/maps/glacier.msav differ diff --git a/core/assets/maps/groundZero.msav b/core/assets/maps/groundZero.msav index 29af408f74..9ece04c2ba 100644 Binary files a/core/assets/maps/groundZero.msav and b/core/assets/maps/groundZero.msav differ diff --git a/core/assets/maps/navalFortress.msav b/core/assets/maps/navalFortress.msav index 6d41f2887b..b9e583bb1e 100644 Binary files a/core/assets/maps/navalFortress.msav and b/core/assets/maps/navalFortress.msav differ diff --git a/core/assets/maps/onset.msav b/core/assets/maps/onset.msav index c48193b98e..62d0340842 100644 Binary files a/core/assets/maps/onset.msav and b/core/assets/maps/onset.msav differ diff --git a/core/assets/maps/origin.msav b/core/assets/maps/origin.msav index 3fba9ace40..c04eba0728 100644 Binary files a/core/assets/maps/origin.msav and b/core/assets/maps/origin.msav differ diff --git a/core/assets/maps/passage.msav b/core/assets/maps/passage.msav index e9b8c5b1d1..fb14ff3032 100644 Binary files a/core/assets/maps/passage.msav and b/core/assets/maps/passage.msav differ diff --git a/core/assets/maps/serpuloTest.msav b/core/assets/maps/serpuloTest.msav deleted file mode 100644 index abd6c767cb..0000000000 Binary files a/core/assets/maps/serpuloTest.msav and /dev/null differ diff --git a/core/assets/maps/siege.msav b/core/assets/maps/siege.msav index c6fb26a8bb..0564e38db3 100644 Binary files a/core/assets/maps/siege.msav and b/core/assets/maps/siege.msav differ diff --git a/core/assets/maps/stainedMountains.msav b/core/assets/maps/stainedMountains.msav index e8511641f0..ee28f1dc23 100644 Binary files a/core/assets/maps/stainedMountains.msav and b/core/assets/maps/stainedMountains.msav differ diff --git a/core/assets/maps/veins.msav b/core/assets/maps/veins.msav index 037d3f0b75..ad6a8b5c01 100644 Binary files a/core/assets/maps/veins.msav and b/core/assets/maps/veins.msav differ diff --git a/core/assets/music/coreLaunch.ogg b/core/assets/music/coreLaunch.ogg new file mode 100644 index 0000000000..b4a1b55a68 Binary files /dev/null and b/core/assets/music/coreLaunch.ogg differ diff --git a/core/assets/music/land.ogg b/core/assets/music/land.ogg index 4cfd914673..ef81ccc90a 100644 Binary files a/core/assets/music/land.ogg and b/core/assets/music/land.ogg differ diff --git a/core/assets/shaders/unitarmor.frag b/core/assets/shaders/unitarmor.frag index 10116ff3ac..1e475fda17 100644 --- a/core/assets/shaders/unitarmor.frag +++ b/core/assets/shaders/unitarmor.frag @@ -2,7 +2,6 @@ uniform sampler2D u_texture; uniform float u_time; uniform float u_progress; -uniform vec4 u_color; uniform vec2 u_uv; uniform vec2 u_uv2; uniform vec2 u_texsize; @@ -14,8 +13,7 @@ void main(){ vec2 coords = (v_texCoords - u_uv) / (u_uv2 - u_uv); vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y); - vec4 c = texture2D(u_texture, v_texCoords); - + vec4 c = texture2D(u_texture, v_texCoords); c.a *= u_progress; c.a *= step(abs(sin(coords.y*3.0 + u_time)), 0.9); diff --git a/core/assets/shaders/water.frag b/core/assets/shaders/water.frag index 51c56f26a1..30679b2da5 100644 --- a/core/assets/shaders/water.frag +++ b/core/assets/shaders/water.frag @@ -19,7 +19,8 @@ void main(){ float stime = u_time / 5.0; - vec3 color = texture2D(u_texture, c + vec2(sin(stime/3.0 + coords.y/0.75) * v.x, 0.0)).rgb * vec3(0.9, 0.9, 1); + vec4 sampled = texture2D(u_texture, c + vec2(sin(stime/3.0 + coords.y/0.75) * v.x, 0.0)); + vec3 color = sampled.rgb * vec3(0.9, 0.9, 1); float tester = mod((coords.x + coords.y*1.1 + sin(stime / 8.0 + coords.x/5.0 - coords.y/100.0)*2.0) + sin(stime / 20.0 + coords.y/3.0) * 1.0 + @@ -32,5 +33,5 @@ void main(){ color *= 1.2; } - gl_FragColor = vec4(color.rgb, 1.0); + gl_FragColor = vec4(color.rgb, min(sampled.a * 100.0, 1.0)); } diff --git a/core/src/mindustry/ClientLauncher.java b/core/src/mindustry/ClientLauncher.java index 564edb45fc..2a7b133588 100644 --- a/core/src/mindustry/ClientLauncher.java +++ b/core/src/mindustry/ClientLauncher.java @@ -27,8 +27,9 @@ import static mindustry.Vars.*; public abstract class ClientLauncher extends ApplicationCore implements Platform{ private static final int loadingFPS = 20; - private long lastTime; + private long nextFrame; private long beginTime; + private long lastTargetFps = -1; private boolean finished = false; private LoadRenderer loader; @@ -65,9 +66,10 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform Time.setDeltaProvider(() -> { float result = Core.graphics.getDeltaTime() * 60f; - return (Float.isNaN(result) || Float.isInfinite(result)) ? 1f : Mathf.clamp(result, 0.0001f, 60f / 10f); + return (Float.isNaN(result) || Float.isInfinite(result)) ? 1f : Mathf.clamp(result, 0.0001f, maxDeltaClient); }); + UI.loadColors(); batch = new SortedSpriteBatch(); assets = new AssetManager(); assets.setLoader(Texture.class, "." + mapExtension, new MapPreviewLoader()); @@ -199,6 +201,18 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform @Override public void update(){ + int targetfps = Core.settings.getInt("fpscap", 120); + boolean changed = lastTargetFps != targetfps && lastTargetFps != -1; + boolean limitFps = targetfps > 0 && targetfps <= 240; + + lastTargetFps = targetfps; + + if(limitFps && !changed){ + nextFrame += (1000 * 1000000) / targetfps; + }else{ + nextFrame = Time.nanos(); + } + if(!finished){ if(loader != null){ loader.draw(); @@ -230,17 +244,13 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform asyncCore.end(); } - int targetfps = Core.settings.getInt("fpscap", 120); - - if(targetfps > 0 && targetfps <= 240){ - long target = (1000 * 1000000) / targetfps; //target in nanos - long elapsed = Time.timeSinceNanos(lastTime); - if(elapsed < target){ - Threads.sleep((target - elapsed) / 1000000, (int)((target - elapsed) % 1000000)); + if(limitFps){ + long current = Time.nanos(); + if(nextFrame > current){ + long toSleep = nextFrame - current; + Threads.sleep(toSleep / 1000000, (int)(toSleep % 1000000)); } } - - lastTime = Time.nanos(); } @Override @@ -251,6 +261,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform @Override public void init(){ + nextFrame = Time.nanos(); setup(); } diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index a8e0d9290e..bc4c6a494a 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -28,6 +28,7 @@ import mindustry.net.*; import mindustry.service.*; import mindustry.ui.dialogs.*; import mindustry.world.*; +import mindustry.world.blocks.storage.*; import mindustry.world.meta.*; import java.io.*; @@ -105,14 +106,16 @@ public class Vars implements Loadable{ public static final float invasionGracePeriod = 20; /** min armor fraction damage; e.g. 0.05 = at least 5% damage */ public static final float minArmorDamage = 0.1f; - /** land/launch animation duration */ - public static final float coreLandDuration = 160f; + /** @deprecated see {@link CoreBlock#landDuration} instead! */ + public static final @Deprecated float coreLandDuration = 160f; /** size of tiles in units */ public static final int tilesize = 8; /** size of one tile payload (^2) */ public static final float tilePayload = tilesize * tilesize; /** icon sizes for UI */ public static final float iconXLarge = 8*6f, iconLarge = 8*5f, iconMed = 8*4f, iconSmall = 8*3f; + /** macbook screen notch height */ + public static float macNotchHeight = 32f; /** for map generator dialog */ public static boolean updateEditorOnChange = false; /** all choosable player colors in join/host dialog */ @@ -134,6 +137,13 @@ public class Vars implements Loadable{ Color.valueOf("4b5ef1"), Color.valueOf("2cabfe"), }; + /** Icons available to the user for customization in certain dialogs. */ + public static final String[] accessibleIcons = { + "effect", "power", "logic", "units", "liquid", "production", "defense", "turret", "distribution", "crafting", + "settings", "cancel", "zoom", "ok", "star", "home", "pencil", "up", "down", "left", "right", + "hammer", "warning", "tree", "admin", "map", "modePvp", "terrain", + "modeSurvival", "commandRally", "commandAttack", + }; /** maximum TCP packet size */ public static final int maxTcpSize = 900; /** default server port */ @@ -144,6 +154,8 @@ public class Vars implements Loadable{ public static final int maxModSubtitleLength = 40; /** multicast group for discovery.*/ public static final String multicastGroup = "227.2.7.7"; + /** Maximum delta time. If the actual delta time (*60) between frames is higher than this number, the game will start to slow down. */ + public static float maxDeltaClient = 6f, maxDeltaServer = 10f; /** whether the graphical game client has loaded */ public static boolean clientLoaded = false; /** max GL texture size */ diff --git a/core/src/mindustry/ai/BaseBuilderAI.java b/core/src/mindustry/ai/BaseBuilderAI.java new file mode 100644 index 0000000000..763fd15ee5 --- /dev/null +++ b/core/src/mindustry/ai/BaseBuilderAI.java @@ -0,0 +1,272 @@ +package mindustry.ai; + +import arc.math.*; +import arc.math.geom.*; +import arc.struct.*; +import arc.util.*; +import mindustry.*; +import mindustry.ai.BaseRegistry.*; +import mindustry.content.*; +import mindustry.core.*; +import mindustry.game.*; +import mindustry.game.Schematic.*; +import mindustry.game.Teams.*; +import mindustry.gen.*; +import mindustry.type.*; +import mindustry.world.*; +import mindustry.world.blocks.payloads.*; +import mindustry.world.blocks.production.*; +import mindustry.world.blocks.storage.*; +import mindustry.world.blocks.storage.CoreBlock.*; + +import static mindustry.Vars.*; + +public class BaseBuilderAI{ + private static final Vec2 axis = new Vec2(), rotator = new Vec2(); + private static final int attempts = 6, coreUnitMultiplier = 2; + private static final float emptyChance = 0.01f; + private static final int timerStep = 0, timerSpawn = 1, timerRefreshPath = 2; + private static final float placeIntervalMin = 12f, placeIntervalMax = 2f; + private static final int pathStep = 50; + private static final Seq tmpTiles = new Seq<>(); + + private static int correct = 0, incorrect = 0; + + private int lastX, lastY, lastW, lastH; + private boolean foundPath; + + final TeamData data; + final Interval timer = new Interval(4); + + IntSet path = new IntSet(); + IntSet calcPath = new IntSet(); + @Nullable Tile calcTile; + boolean calculating, startedCalculating; + int calcCount = 0; + int totalCalcs = 0; + + public BaseBuilderAI(TeamData data){ + this.data = data; + } + + public void update(){ + + //fill cores. + if(data.team.cores().size > 0){ + var core = data.team.cores().first(); + for(Item item : content.items()){ + core.items.set(item, core.getMaximumAccepted(item)); + } + } + + if(data.team.rules().aiCoreSpawn && timer.get(timerSpawn, 60 * 6f) && data.hasCore()){ + CoreBlock block = (CoreBlock)data.core().block; + int coreUnits = data.countType(block.unitType); + + //create AI core unit(s) + if(!state.isEditor() && coreUnits < data.cores.size * coreUnitMultiplier){ + Unit unit = block.unitType.create(data.team); + unit.set(data.cores.random()); + unit.add(); + Fx.spawn.at(unit); + } + } + + //refresh path + if(!calculating && (timer.get(timerRefreshPath, 3f * Time.toMinutes) || !startedCalculating) && data.hasCore()){ + calculating = true; + startedCalculating = true; + calcPath.clear(); + } + + //didn't find tile in time + if(calculating && calcCount >= world.width() * world.height()){ + calculating = false; + calcCount = 0; + calcPath.clear(); + totalCalcs ++; + } + + //calculate path for units so schematics are not placed on it + if(calculating){ + if(calcTile == null){ + Vars.spawner.eachGroundSpawn((x, y) -> calcTile = world.tile(x, y)); + if(calcTile == null){ + calculating = false; + } + }else{ + var field = pathfinder.getField(data.team, Pathfinder.costGround, Pathfinder.fieldCore); + + if(field.hasCompleteWeights()){ + int[] weights = field.completeWeights; + for(int i = 0; i < pathStep; i++){ + int minCost = Integer.MAX_VALUE; + int cx = calcTile.x, cy = calcTile.y; + boolean foundAny = false; + for(Point2 p : Geometry.d4){ + int nx = cx + p.x, ny = cy + p.y, packed = world.packArray(nx, ny); + + Tile other = world.tile(nx, ny); + if(other != null && weights[packed] < minCost && weights[packed] != -1){ + minCost = weights[packed]; + calcTile = other; + foundAny = true; + } + } + + //didn't find anything, break out of loop, this will trigger a clear later + if(!foundAny){ + calcCount = Integer.MAX_VALUE; + break; + } + + calcPath.add(calcTile.pos()); + for(Point2 p : Geometry.d8){ + calcPath.add(Point2.pack(p.x + calcTile.x, p.y + calcTile.y)); + } + + //found the end. + if(calcTile.build instanceof CoreBuild b && b.team != data.team){ + //clean up calculations and flush results + calculating = false; + calcCount = 0; + path.clear(); + path.addAll(calcPath); + calcPath.clear(); + calcTile = null; + totalCalcs ++; + foundPath = true; + + break; + } + + calcCount ++; + } + } + } + } + + //only schedule when there's something to build. + if((foundPath || !calculating) && data.plans.isEmpty() && timer.get(timerStep, Mathf.lerp(placeIntervalMin, placeIntervalMax, data.team.rules().buildAiTier))){ + + for(int i = 0; i < attempts; i++){ + int range = 150; + + Position pos = randomPosition(); + + //when there are no random positions, do nothing. + if(pos == null) return; + + Tmp.v1.rnd(Mathf.random(range)); + int wx = (int)(World.toTile(pos.getX()) + Tmp.v1.x), wy = (int)(World.toTile(pos.getY()) + Tmp.v1.y); + Tile tile = world.tiles.getc(wx, wy); + + //try not to block the spawn point + if(spawner.getSpawns().contains(t -> t.within(tile, tilesize * 40f))){ + continue; + } + + Seq parts = null; + + //pick a completely random base part, and place it a random location + //((yes, very intelligent)) + if(tile.drop() != null && Vars.bases.forResource(tile.drop()).any()){ + parts = Vars.bases.forResource(tile.drop()); + }else if(Mathf.chance(emptyChance)){ + parts = Vars.bases.parts; + } + + if(parts != null){ + BasePart part = parts.random(); + if(tryPlace(part, tile.x, tile.y)){ + break; + } + } + } + } + } + + /** @return a random position from which to seed building. */ + private Position randomPosition(){ + if(data.hasCore()){ + return data.cores.random(); + }else if(data.team == state.rules.waveTeam){ + return spawner.getSpawns().random(); + } + return null; + } + + private boolean tryPlace(BasePart part, int x, int y){ + int rotation = Mathf.range(2); + axis.set((int)(part.schematic.width / 2f), (int)(part.schematic.height / 2f)); + Schematic result = Schematics.rotate(part.schematic, rotation); + int rotdeg = rotation*90; + rotator.set(part.centerX, part.centerY).rotateAround(axis, rotdeg); + //bottom left schematic corner + int cx = x - (int)rotator.x; + int cy = y - (int)rotator.y; + + //check valid placeability + for(Stile tile : result.tiles){ + int realX = tile.x + cx, realY = tile.y + cy; + if(!Build.validPlace(tile.block, data.team, realX, realY, tile.rotation)){ + return false; + } + Tile wtile = world.tile(realX, realY); + + if(tile.block instanceof PayloadConveyor || tile.block instanceof PayloadBlock){ + //near a building + for(Point2 point : Edges.getEdges(tile.block.size)){ + var t = world.build(tile.x + point.x, tile.y + point.y); + if(t != null){ + return false; + } + } + } + + //may intersect AI path + tmpTiles.clear(); + if(tile.block.solid && wtile != null && wtile.getLinkedTilesAs(tile.block, tmpTiles).contains(t -> path.contains(t.pos()))){ + return false; + } + } + + //make sure at least X% of resource requirements are met + correct = incorrect = 0; + boolean anyDrills = false; + + if(part.required instanceof Item){ + for(Stile tile : result.tiles){ + if(tile.block instanceof Drill){ + anyDrills = true; + + tile.block.iterateTaken(tile.x + cx, tile.y + cy, (ex, ey) -> { + Tile res = world.rawTile(ex, ey); + if(res.drop() == part.required){ + correct ++; + }else if(res.drop() != null){ + incorrect ++; + } + }); + } + } + } + + //fail if not enough fit requirements + if(anyDrills && (incorrect != 0 || correct == 0)){ + return false; + } + + //queue it + for(Stile tile : result.tiles){ + data.plans.add(new BlockPlan(cx + tile.x, cy + tile.y, tile.rotation, tile.block.id, tile.config)); + } + + lastX = cx - 1; + lastY = cy - 1; + lastW = result.width + 2; + lastH = result.height + 2; + + return true; + } +} \ No newline at end of file diff --git a/core/src/mindustry/ai/BlockIndexer.java b/core/src/mindustry/ai/BlockIndexer.java index 705d2acfd5..7f944a3eb0 100644 --- a/core/src/mindustry/ai/BlockIndexer.java +++ b/core/src/mindustry/ai/BlockIndexer.java @@ -130,13 +130,13 @@ public class BlockIndexer{ data.turretTree.remove(build); } - //is no longer registered - build.wasDamaged = false; - //unregister damaged buildings - if(build.damaged() && damagedTiles[team.id] != null){ + if(build.wasDamaged && damagedTiles[team.id] != null){ damagedTiles[team.id].remove(build); } + + //is no longer registered + build.wasDamaged = false; } } @@ -158,12 +158,13 @@ public class BlockIndexer{ int pos = tile.pos(); var seq = ores[drop.id][qx][qy]; - //when the drop can be mined, record the ore position - if(tile.block() == Blocks.air && !seq.contains(pos)){ - seq.add(pos); - allOres.increment(drop); - }else{ - //otherwise, it likely became blocked, remove it (even if it wasn't there) + if(tile.block() == Blocks.air){ + //add the index if it is a valid new spot to mine at + if(!seq.contains(pos)){ + seq.add(pos); + allOres.increment(drop); + } + }else if(seq.contains(pos)){ //otherwise, it likely became blocked, remove it seq.removeValue(pos); allOres.increment(drop, -1); } @@ -286,7 +287,7 @@ public class BlockIndexer{ //when team data is not initialized, scan through every team. this is terrible if(data.isEmpty()){ for(Team enemy : Team.all){ - if(enemy == team) continue; + if(enemy == team || (enemy == Team.derelict && !state.rules.coreCapture)) continue; var set = getFlagged(enemy)[type.ordinal()]; if(set != null){ breturnArray.addAll(set); @@ -295,7 +296,7 @@ public class BlockIndexer{ }else{ for(int i = 0; i < data.size; i++){ Team enemy = data.items[i].team; - if(enemy == team) continue; + if(enemy == team || (enemy == Team.derelict && !state.rules.coreCapture)) continue; var set = getFlagged(enemy)[type.ordinal()]; if(set != null){ breturnArray.addAll(set); diff --git a/core/src/mindustry/ai/ControlPathfinder.java b/core/src/mindustry/ai/ControlPathfinder.java index 7cbfc5eb19..261d1073b2 100644 --- a/core/src/mindustry/ai/ControlPathfinder.java +++ b/core/src/mindustry/ai/ControlPathfinder.java @@ -7,6 +7,8 @@ import arc.math.*; import arc.math.geom.*; import arc.struct.*; import arc.util.*; +import mindustry.annotations.Annotations.*; +import mindustry.content.*; import mindustry.core.*; import mindustry.game.EventType.*; import mindustry.game.*; @@ -17,12 +19,13 @@ import mindustry.world.*; import static mindustry.Vars.*; import static mindustry.ai.Pathfinder.*; -public class ControlPathfinder{ - //TODO this FPS-based update system could be flawed. - private static final long maxUpdate = Time.millisToNanos(30); - private static final int updateFPS = 60; - private static final int updateInterval = 1000 / updateFPS; +//https://webdocs.cs.ualberta.ca/~mmueller/ps/hpastar.pdf +//https://www.gameaipro.com/GameAIPro/GameAIPro_Chapter23_Crowd_Pathfinding_and_Steering_Using_Flow_Field_Tiles.pdf +public class ControlPathfinder implements Runnable{ private static final int wallImpassableCap = 1_000_000; + private static final int solidCap = 7000; + + public static boolean showDebug; public static final PathCost @@ -51,345 +54,556 @@ public class ControlPathfinder{ costLegs = (team, tile) -> PathTile.legSolid(tile) ? impassable : 1 + (PathTile.deep(tile) ? 6000 : 0) + - (PathTile.nearSolid(tile) || PathTile.solid(tile) ? 3 : 0), + (PathTile.nearLegSolid(tile) ? 3 : 0), costNaval = (team, tile) -> - (PathTile.solid(tile) || !PathTile.liquid(tile) ? impassable : 1) + + //impassable same-team neutral block, or non-liquid + (PathTile.solid(tile) && ((PathTile.team(tile) == team && !PathTile.teamPassable(tile)) || PathTile.team(tile) == 0)) || !PathTile.liquid(tile) ? impassable : + 1 + + //impassable synthetic enemy block + ((PathTile.team(tile) != team && PathTile.team(tile) != 0) && PathTile.solid(tile) ? wallImpassableCap : 0) + (PathTile.nearGround(tile) || PathTile.nearSolid(tile) ? 6 : 0); - public static boolean showDebug = false; + public static final int + costIdGround = 0, + costIdHover = 1, + costIdLegs = 2, + costIdNaval = 3; - //static access probably faster than object access - static int wwidth, wheight; - //increments each tile change - static volatile int worldUpdateId; + public static final Seq costTypes = Seq.with( + costGround, + costHover, + costLegs, + costNaval + ); - /** Current pathfinding threads, contents may be null */ - @Nullable PathfindThread[] threads; - /** for unique target IDs */ - int lastTargetId = 1; - /** requests per-unit */ - ObjectMap requests = new ObjectMap<>(); + private static final long maxUpdate = Time.millisToNanos(12); + private static final int updateStepInterval = 200; + private static final int updateFPS = 30; + private static final int updateInterval = 1000 / updateFPS, invalidateCheckInterval = 1000; + + static final int clusterSize = 12; + + static final int[] offsets = { + 1, 0, //right: bottom to top + 0, 1, //top: left to right + 0, 0, //left: bottom to top + 0, 0 //bottom: left to right + }; + + static final int[] moveDirs = { + 0, 1, + 1, 0, + 0, 1, + 1, 0 + }; + + static final int[] nextOffsets = { + 1, 0, + 0, 1, + -1, 0, + 0, -1 + }; + + //maps team -> pathCost -> flattened array of clusters in 2D + //(what about teams? different path costs?) + Cluster[][][] clusters; + + int cwidth, cheight; + + //temporarily used for resolving connections for intra-edges + IntSet usedEdges = new IntSet(); + //tasks to run on pathfinding thread + TaskQueue queue = new TaskQueue(); + + //individual requests based on unit - MAIN THREAD ONLY + ObjectMap unitRequests = new ObjectMap<>(); + + Seq threadPathRequests = new Seq<>(false); + + //TODO: very dangerous usage; + //TODO - it is accessed from the main thread + //TODO - it is written to on the pathfinding thread + //maps position in world in (x + y * width format) | type (bitpacked to long) to a cache of flow fields + LongMap fields = new LongMap<>(); + //MAIN THREAD ONLY + Seq fieldList = new Seq<>(false); + + //these are for inner edge A* (temporary!) + IntFloatMap innerCosts = new IntFloatMap(); + PathfindQueue innerFrontier = new PathfindQueue(); + + //ONLY modify on pathfinding thread. + IntSet clustersToUpdate = new IntSet(); + IntSet clustersToInnerUpdate = new IntSet(); + + //PATHFINDING THREAD - requests that should be recomputed + ObjectSet invalidRequests = new ObjectSet<>(); + + /** Current pathfinding thread */ + @Nullable Thread thread; + + //path requests are per-unit + static class PathRequest{ + final Unit unit; + final int destination, team, costId; + //resulting path of nodes + final IntSeq resultPath = new IntSeq(); + + //node index -> total cost + @Nullable IntFloatMap costs = new IntFloatMap(); + //node index (NodeIndex struct) -> node it came from TODO merge them, make properties of FieldCache? + @Nullable IntIntMap cameFrom = new IntIntMap(); + //frontier for A* + @Nullable PathfindQueue frontier = new PathfindQueue(); + + //main thread only! + long lastUpdateId = state.updateId; + + //both threads + volatile boolean notFound = false; + volatile boolean invalidated = false; + //old field assigned before everything was recomputed + @Nullable volatile FieldCache oldCache; + + boolean lastRaycastResult = false; + int lastRaycastTile, lastWorldUpdate; + int lastTile; + @Nullable Tile lastTargetTile; + + PathRequest(Unit unit, int team, int costId, int destination){ + this.unit = unit; + this.costId = costId; + this.team = team; + this.destination = destination; + } + } + + static class FieldCache{ + final PathCost cost; + final int costId; + final int team; + final int goalPos; + //frontier for flow fields + final IntQueue frontier = new IntQueue(); + //maps cluster index to field weights; 0 means uninitialized + final IntMap fields = new IntMap<>(); + final long mapKey; + + //main thread only! + long lastUpdateId = state.updateId; + + //TODO: how are the nodes merged? CAN they be merged? + + FieldCache(PathCost cost, int costId, int team, int goalPos){ + this.cost = cost; + this.team = team; + this.goalPos = goalPos; + this.costId = costId; + this.mapKey = Pack.longInt(goalPos, costId); + } + } + + static class Cluster{ + IntSeq[] portals = new IntSeq[4]; + //maps rotation + index of portal to list of IntraEdge objects + LongSeq[][] portalConnections = new LongSeq[4][]; + } public ControlPathfinder(){ + Events.on(ResetEvent.class, event -> stop()); + Events.on(WorldLoadEvent.class, event -> { stop(); - wwidth = world.width(); - wheight = world.height(); + + //TODO: can the pathfinding thread even see these? + unitRequests = new ObjectMap<>(); + fields = new LongMap<>(); + fieldList = new Seq<>(false); + + clusters = new Cluster[256][][]; + cwidth = Mathf.ceil((float)world.width() / clusterSize); + cheight = Mathf.ceil((float)world.height() / clusterSize); + start(); }); - //only update the world when a solid block is removed or placed, everything else doesn't matter - Events.on(TilePreChangeEvent.class, e -> { - if(e.tile.solid()){ - worldUpdateId ++; - } - }); - Events.on(TileChangeEvent.class, e -> { - if(e.tile.solid()){ - worldUpdateId ++; - } - }); - Events.on(ResetEvent.class, event -> stop()); + e.tile.getLinkedTiles(t -> { + int x = t.x, y = t.y, mx = x % clusterSize, my = y % clusterSize, cx = x / clusterSize, cy = y / clusterSize, cluster = cx + cy * cwidth; + + //is at the edge of a cluster; this means the portals may have changed. + if(mx == 0 || my == 0 || mx == clusterSize - 1 || my == clusterSize - 1){ + + if(mx == 0) queueClusterUpdate(cx - 1, cy); //left + if(my == 0) queueClusterUpdate(cx, cy - 1); //bottom + if(mx == clusterSize - 1) queueClusterUpdate(cx + 1, cy); //right + if(my == clusterSize - 1) queueClusterUpdate(cx, cy + 1); //top + + queueClusterUpdate(cx, cy); + //TODO: recompute edge clusters too. + }else{ + //there is no need to recompute portals for block updates that are not on the edge. + queue.post(() -> clustersToInnerUpdate.add(cluster)); + } + }); + + //TODO: recalculate affected flow fields? or just all of them? how to reflow? + }); //invalidate paths Events.run(Trigger.update, () -> { - for(var req : requests.values()){ + for(var req : unitRequests.values()){ //skipped N update -> drop it if(req.lastUpdateId <= state.updateId - 10){ + req.invalidated = true; //concurrent modification! - Core.app.post(() -> requests.remove(req.unit)); - req.thread.queue.post(() -> req.thread.requests.remove(req)); + queue.post(() -> threadPathRequests.remove(req)); + Core.app.post(() -> unitRequests.remove(req.unit)); + } + } + + for(var field : fieldList){ + //skipped N update -> drop it + if(field.lastUpdateId <= state.updateId - 30){ + //make sure it's only modified on the main thread...? but what about calling get() on this thread?? + queue.post(() -> fields.remove(field.mapKey)); + Core.app.post(() -> fieldList.remove(field)); } } }); - Events.run(Trigger.draw, () -> { - if(!showDebug) return; + if(showDebug){ + Events.run(Trigger.draw, () -> { + int team = player.team().id; + int cost = 0; - for(var req : requests.values()){ - if(req.frontier == null) continue; Draw.draw(Layer.overlayUI, () -> { - if(req.done){ - int len = req.result.size; - int rp = req.rayPathIndex; - if(rp < len && rp >= 0){ - Draw.color(Color.royal); - Tile tile = tile(req.result.items[rp]); - Lines.line(req.unit.x, req.unit.y, tile.worldx(), tile.worldy()); - } + Lines.stroke(1f); - for(int i = 0; i < len; i++){ - Draw.color(Tmp.c1.set(Color.white).fromHsv(i / (float)len * 360f, 1f, 0.9f)); - int pos = req.result.items[i]; - Fill.square(pos % wwidth * tilesize, pos / wwidth * tilesize, 3f); + if(clusters[team] != null && clusters[team][cost] != null){ + for(int cx = 0; cx < cwidth; cx++){ + for(int cy = 0; cy < cheight; cy++){ - if(i == req.pathIndex){ - Draw.color(Color.green); - Lines.square(pos % wwidth * tilesize, pos / wwidth * tilesize, 5f); - } - } - }else{ - var view = Core.camera.bounds(Tmp.r1); - int len = req.frontier.size; - float[] weights = req.frontier.weights; - int[] poses = req.frontier.queue; - for(int i = 0; i < Math.min(len, 1000); i++){ - int pos = poses[i]; - if(view.contains(pos % wwidth * tilesize, pos / wwidth * tilesize)){ - Draw.color(Tmp.c1.set(Color.white).fromHsv((weights[i] * 4f) % 360f, 1f, 0.9f)); + var cluster = clusters[team][cost][cy * cwidth + cx]; + if(cluster != null){ + Lines.stroke(0.5f); + Draw.color(Color.gray); + Lines.stroke(1f); - Lines.square(pos % wwidth * tilesize, pos / wwidth * tilesize, 4f); + Lines.rect(cx * clusterSize * tilesize - tilesize/2f, cy * clusterSize * tilesize - tilesize/2f, clusterSize * tilesize, clusterSize * tilesize); + + + for(int d = 0; d < 4; d++){ + IntSeq portals = cluster.portals[d]; + if(portals != null){ + + for(int i = 0; i < portals.size; i++){ + int pos = portals.items[i]; + int from = Point2.x(pos), to = Point2.y(pos); + float width = tilesize * (Math.abs(from - to) + 1), height = tilesize; + + portalToVec(cluster, cx, cy, d, i, Tmp.v1); + + Draw.color(Color.brown); + Lines.ellipse(30, Tmp.v1.x, Tmp.v1.y, width / 2f, height / 2f, d * 90f - 90f); + + LongSeq connections = cluster.portalConnections[d] == null ? null : cluster.portalConnections[d][i]; + + if(connections != null){ + Draw.color(Color.forest); + for(int coni = 0; coni < connections.size; coni ++){ + long con = connections.items[coni]; + + portalToVec(cluster, cx, cy, IntraEdge.dir(con), IntraEdge.portal(con), Tmp.v2); + + float + x1 = Tmp.v1.x, y1 = Tmp.v1.y, + x2 = Tmp.v2.x, y2 = Tmp.v2.y; + Lines.line(x1, y1, x2, y2); + + } + } + } + } + } + } } } } - Draw.reset(); + + for(var fields : fieldList){ + try{ + for(var entry : fields.fields){ + int cx = entry.key % cwidth, cy = entry.key / cwidth; + for(int y = 0; y < clusterSize; y++){ + for(int x = 0; x < clusterSize; x++){ + int value = entry.value[x + y * clusterSize]; + Tmp.c1.a = 1f; + Lines.stroke(0.8f, Tmp.c1.fromHsv(value * 3f, 1f, 1f)); + Draw.alpha(0.5f); + Fill.square((x + cx * clusterSize) * tilesize, (y + cy * clusterSize) * tilesize, tilesize / 2f); + } + } + } + }catch(Exception ignored){} //probably has some concurrency issues when iterating but I don't care, this is for debugging + } }); - } - }); + + Draw.reset(); + }); + } } - - /** @return the next target ID to use as a unique path identifier. */ - public int nextTargetId(){ - return lastTargetId ++; + void queueClusterUpdate(int cx, int cy){ + if(cx >= 0 && cy >= 0 && cx < cwidth && cy < cheight){ + queue.post(() -> clustersToUpdate.add(cx + cy * cwidth)); + } } - /** - * @return whether a path is ready. - * @param pathId a unique ID for this location query, which should change every time the 'destination' vector is modified. - * */ - public boolean getPathPosition(Unit unit, int pathId, Vec2 destination, Vec2 out){ - return getPathPosition(unit, pathId, destination, out, null); + //debugging only! + void portalToVec(Cluster cluster, int cx, int cy, int direction, int portalIndex, Vec2 out){ + int pos = cluster.portals[direction].items[portalIndex]; + int from = Point2.x(pos), to = Point2.y(pos); + int addX = moveDirs[direction * 2], addY = moveDirs[direction * 2 + 1]; + float average = (from + to) / 2f; + + float + x = (addX * average + cx * clusterSize + offsets[direction * 2] * (clusterSize - 1) + nextOffsets[direction * 2] / 2f) * tilesize, + y = (addY * average + cy * clusterSize + offsets[direction * 2 + 1] * (clusterSize - 1) + nextOffsets[direction * 2 + 1] / 2f) * tilesize; + + out.set(x, y); } - /** - * @return whether a path is ready. - * @param pathId a unique ID for this location query, which should change every time the 'destination' vector is modified. - * @param noResultFound extra return value for storing whether no valid path to the destination exists (thanks java!) - * */ - public boolean getPathPosition(Unit unit, int pathId, Vec2 destination, Vec2 out, @Nullable boolean[] noResultFound){ - if(noResultFound != null){ - noResultFound[0] = false; - } - - //uninitialized - if(threads == null || !world.tiles.in(World.toTile(destination.x), World.toTile(destination.y))) return false; - - PathCost costType = unit.type.pathCost; - int team = unit.team.id; - - //if the destination can be trivially reached in a straight line, do that. - if((!requests.containsKey(unit) || requests.get(unit).curId != pathId) && !raycast(team, costType, unit.tileX(), unit.tileY(), World.toTile(destination.x), World.toTile(destination.y))){ - out.set(destination); - return true; - } - - //destination is impassable, can't go there. - if(solid(team, costType, world.packArray(World.toTile(destination.x), World.toTile(destination.y)))){ - return false; - } - - //check for request existence - if(!requests.containsKey(unit)){ - PathfindThread thread = Structs.findMin(threads, t -> t.requestSize); - - var req = new PathRequest(thread); - req.unit = unit; - req.cost = costType; - req.destination.set(destination); - req.curId = pathId; - req.team = team; - req.lastUpdateId = state.updateId; - req.lastPos.set(unit); - req.lastWorldUpdate = worldUpdateId; - //raycast immediately when done - req.raycastTimer = 9999f; - - requests.put(unit, req); - - //add to thread so it gets processed next update - thread.queue.post(() -> thread.requests.add(req)); - }else{ - var req = requests.get(unit); - req.lastUpdateId = state.updateId; - req.team = unit.team.id; - if(req.curId != req.lastId || req.curId != pathId){ - req.pathIndex = 0; - req.rayPathIndex = -1; - req.done = false; - req.foundEnd = false; - } - - req.destination.set(destination); - req.curId = pathId; - - //check for the unit getting stuck every N seconds - if((req.stuckTimer += Time.delta) >= 60f * 2.5f){ - req.stuckTimer = 0f; - //force recalculate - if(req.lastPos.within(unit, 1.5f)){ - req.lastWorldUpdate = -1; - } - req.lastPos.set(unit); - } - - if(req.done){ - int[] items = req.result.items; - int len = req.result.size; - int tileX = unit.tileX(), tileY = unit.tileY(); - float range = 4f; - - float minDst = req.pathIndex < len ? unit.dst2(world.tiles.geti(items[req.pathIndex])) : 0f; - int idx = req.pathIndex; - - //find closest node that is in front of the path index and hittable with raycast - for(int i = len - 1; i >= idx; i--){ - Tile tile = tile(items[i]); - float dst = unit.dst2(tile); - //TODO maybe put this on a timer since raycasts can be expensive? - if(dst < minDst && !permissiveRaycast(team, costType, tileX, tileY, tile.x, tile.y)){ - req.pathIndex = Math.max(dst <= range * range ? i + 1 : i, req.pathIndex); - minDst = Math.min(dst, minDst); - } - } - - if(req.rayPathIndex < 0){ - req.rayPathIndex = req.pathIndex; - } - - if((req.raycastTimer += Time.delta) >= 50f){ - for(int i = len - 1; i > req.pathIndex; i--){ - int val = items[i]; - if(!raycast(team, costType, tileX, tileY, val % wwidth, val / wwidth)){ - req.rayPathIndex = i; - break; - } - } - req.raycastTimer = 0; - } - - if(req.rayPathIndex < len && req.rayPathIndex >= 0){ - Tile tile = tile(items[req.rayPathIndex]); - out.set(tile); - - if(unit.within(tile, range)){ - req.pathIndex = req.rayPathIndex = Math.max(req.pathIndex, req.rayPathIndex + 1); - } - }else{ - //implicit done - out.set(unit); - //end of path, we're done here? reset path? what??? - } - - if(noResultFound != null){ - noResultFound[0] = !req.foundEnd; - } - } - - return req.done; - } - - return false; - } /** Starts or restarts the pathfinding thread. */ private void start(){ stop(); - if(net.client()) return; - //TODO currently capped at 6 threads, might be a good idea to make it more? - threads = new PathfindThread[Mathf.clamp(Runtime.getRuntime().availableProcessors() - 1, 1, 6)]; - for(int i = 0; i < threads.length; i ++){ - threads[i] = new PathfindThread("ControlPathfindThread-" + i); - threads[i].setPriority(Thread.MIN_PRIORITY); - threads[i].setDaemon(true); - threads[i].start(); - } + thread = new Thread(this, "Control Pathfinder"); + thread.setPriority(Thread.MIN_PRIORITY); + thread.setDaemon(true); + thread.start(); } /** Stops the pathfinding thread. */ private void stop(){ - if(threads != null){ - for(var thread : threads){ - thread.interrupt(); - } + if(thread != null){ + thread.interrupt(); + thread = null; } - threads = null; - requests.clear(); + queue.clear(); } - private static boolean raycast(int team, PathCost type, int x1, int y1, int x2, int y2){ - int ww = world.width(), wh = world.height(); - int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; - int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; - int e2, err = dx - dy; + /** @return a cluster at coordinates; can be null if not cluster was created yet*/ + @Nullable Cluster getCluster(int team, int pathCost, int cx, int cy){ + return getCluster(team, pathCost, cx + cy * cwidth); + } - while(x >= 0 && y >= 0 && x < ww && y < wh){ - if(avoid(team, type, x + y * wwidth)) return true; - if(x == x2 && y == y2) return false; + /** @return a cluster at coordinates; can be null if not cluster was created yet*/ + @Nullable Cluster getCluster(int team, int pathCost, int clusterIndex){ + if(clusters == null) return null; - //TODO no diagonals???? is this a good idea? - /* - //no diagonal ver - if(2 * err + dy > dx - 2 * err){ - err -= dy; - x += sx; + Cluster[][] dim1 = clusters[team]; + + if(dim1 == null) return null; + + Cluster[] dim2 = dim1[pathCost]; + + //TODO: how can index out of bounds happen? || clusterIndex >= dim2.length + if(dim2 == null) return null; + + return dim2[clusterIndex]; + } + + /** @return the cluster at specified coordinates; never null. */ + Cluster getCreateCluster(int team, int pathCost, int cx, int cy){ + return getCreateCluster(team, pathCost, cx + cy * cwidth); + } + + /** @return the cluster at specified coordinates; never null. */ + Cluster getCreateCluster(int team, int pathCost, int clusterIndex){ + Cluster result = getCluster(team, pathCost, clusterIndex); + if(result == null){ + return updateCluster(team, pathCost, clusterIndex % cwidth, clusterIndex / cwidth); + }else{ + return result; + } + } + + Cluster updateCluster(int team, int pathCost, int cx, int cy){ + //TODO: what if clusters are null for thread visibility reasons? + + Cluster[][] dim1 = clusters[team]; + + if(dim1 == null){ + dim1 = clusters[team] = new Cluster[Team.all.length][]; + } + + Cluster[] dim2 = dim1[pathCost]; + + if(dim2 == null){ + dim2 = dim1[pathCost] = new Cluster[cwidth * cheight]; + } + + Cluster cluster = dim2[cy * cwidth + cx]; + if(cluster == null){ + cluster = dim2[cy * cwidth + cx] = new Cluster(); + }else{ + //reset data + for(var p : cluster.portals){ + if(p != null){ + p.clear(); + } + } + } + + PathCost cost = idToCost(pathCost); + + for(int direction = 0; direction < 4; direction++){ + int otherX = cx + Geometry.d4x(direction), otherY = cy + Geometry.d4y(direction); + //out of bounds, no portals in this direction + if(otherX < 0 || otherY < 0 || otherX >= cwidth || otherY >= cheight){ + continue; + } + + Cluster other = dim2[otherX + otherY * cwidth]; + IntSeq portals; + + if(other == null){ + //create new portals at direction + portals = cluster.portals[direction] = new IntSeq(4); }else{ - err += dx; - y += sy; - }*/ + //share portals with the other cluster + portals = cluster.portals[direction] = other.portals[(direction + 2) % 4]; - //diagonal ver - e2 = 2 * err; - if(e2 > -dy){ - err -= dy; - x += sx; + //clear the portals, they're being recalculated now + portals.clear(); } - if(e2 < dx){ - err += dx; - y += sy; + int addX = moveDirs[direction * 2], addY = moveDirs[direction * 2 + 1]; + int + baseX = cx * clusterSize + offsets[direction * 2] * (clusterSize - 1), + baseY = cy * clusterSize + offsets[direction * 2 + 1] * (clusterSize - 1), + nextBaseX = baseX + Geometry.d4[direction].x, + nextBaseY = baseY + Geometry.d4[direction].y; + + int lastPortal = -1; + boolean prevSolid = true; + + for(int i = 0; i < clusterSize; i++){ + int x = baseX + addX * i, y = baseY + addY * i; + + //scan for portals + if(solid(team, cost, x, y) || solid(team, cost, nextBaseX + addX * i, nextBaseY + addY * i)){ + int previous = i - 1; + //hit a wall, create portals between the two points + if(!prevSolid && previous >= lastPortal){ + //portals are an inclusive range + portals.add(Point2.pack(previous, lastPortal)); + } + prevSolid = true; + }else{ + //empty area encountered, mark the location of portal start + if(prevSolid){ + lastPortal = i; + } + prevSolid = false; + } } - } - - return true; - } - - private static boolean permissiveRaycast(int team, PathCost type, int x1, int y1, int x2, int y2){ - int ww = world.width(), wh = world.height(); - int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; - int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; - int err = dx - dy; - - while(x >= 0 && y >= 0 && x < ww && y < wh){ - if(solid(team, type, x + y * wwidth)) return true; - if(x == x2 && y == y2) return false; - - //no diagonals - if(2 * err + dy > dx - 2 * err){ - err -= dy; - x += sx; - }else{ - err += dx; - y += sy; + //at the end of the loop, close any un-initialized portals; this is copy pasted code + int previous = clusterSize - 1; + if(!prevSolid && previous >= lastPortal){ + //portals are an inclusive range + portals.add(Point2.pack(previous, lastPortal)); } } - return true; + updateInnerEdges(team, cost, cx, cy, cluster); + + return cluster; } - static boolean cast(int team, PathCost cost, int from, int to){ - return raycast(team, cost, from % wwidth, from / wwidth, to % wwidth, to / wwidth); + void updateInnerEdges(int team, int cost, int cx, int cy, Cluster cluster){ + updateInnerEdges(team, idToCost(cost), cx, cy, cluster); } - private Tile tile(int pos){ - return world.tiles.geti(pos); + void updateInnerEdges(int team, PathCost cost, int cx, int cy, Cluster cluster){ + int minX = cx * clusterSize, minY = cy * clusterSize, maxX = Math.min(minX + clusterSize - 1, wwidth - 1), maxY = Math.min(minY + clusterSize - 1, wheight - 1); + + usedEdges.clear(); + + //clear all connections, since portals changed, they need to be recomputed. + cluster.portalConnections = new LongSeq[4][]; + + for(int direction = 0; direction < 4; direction++){ + var portals = cluster.portals[direction]; + if(portals == null) continue; + + int addX = moveDirs[direction * 2], addY = moveDirs[direction * 2 + 1]; + + for(int i = 0; i < portals.size; i++){ + usedEdges.add(Point2.pack(direction, i)); + + int + portal = portals.items[i], + from = Point2.x(portal), to = Point2.y(portal), + average = (from + to) / 2, + x = (addX * average + cx * clusterSize + offsets[direction * 2] * (clusterSize - 1)), + y = (addY * average + cy * clusterSize + offsets[direction * 2 + 1] * (clusterSize - 1)); + + for(int otherDir = 0; otherDir < 4; otherDir++){ + var otherPortals = cluster.portals[otherDir]; + if(otherPortals == null) continue; + + for(int j = 0; j < otherPortals.size; j++){ + + if(!usedEdges.contains(Point2.pack(otherDir, j))){ + + int + other = otherPortals.items[j], + otherFrom = Point2.x(other), otherTo = Point2.y(other), + otherAverage = (otherFrom + otherTo) / 2, + ox = cx * clusterSize + offsets[otherDir * 2] * (clusterSize - 1), + oy = cy * clusterSize + offsets[otherDir * 2 + 1] * (clusterSize - 1), + otherX = (moveDirs[otherDir * 2] * otherAverage + ox), + otherY = (moveDirs[otherDir * 2 + 1] * otherAverage + oy); + + //duplicate portal; should never happen. + if(Point2.pack(x, y) == Point2.pack(otherX, otherY)){ + continue; + } + + float connectionCost = innerAstar( + team, cost, + minX, minY, maxX, maxY, + x + y * wwidth, + otherX + otherY * wwidth, + (moveDirs[otherDir * 2] * otherFrom + ox), + (moveDirs[otherDir * 2 + 1] * otherFrom + oy), + (moveDirs[otherDir * 2] * otherTo + ox), + (moveDirs[otherDir * 2 + 1] * otherTo + oy) + ); + + if(connectionCost != -1f){ + if(cluster.portalConnections[direction] == null) cluster.portalConnections[direction] = new LongSeq[cluster.portals[direction].size]; + if(cluster.portalConnections[otherDir] == null) cluster.portalConnections[otherDir] = new LongSeq[cluster.portals[otherDir].size]; + if(cluster.portalConnections[direction][i] == null) cluster.portalConnections[direction][i] = new LongSeq(8); + if(cluster.portalConnections[otherDir][j] == null) cluster.portalConnections[otherDir][j] = new LongSeq(8); + + //TODO: can there be duplicate edges?? + cluster.portalConnections[direction][i].add(IntraEdge.get(otherDir, j, connectionCost)); + cluster.portalConnections[otherDir][j].add(IntraEdge.get(direction, i, connectionCost)); + } + } + } + } + } + } } //distance heuristic: manhattan @@ -402,6 +616,815 @@ public class ControlPathfinder{ return cost.getCost(team, pathfinder.tiles[tilePos]); } + private static float tileCost(int team, PathCost type, int a, int b){ + //currently flat cost + return cost(team, type, b); + } + + /** @return -1 if no path was found */ + float innerAstar(int team, PathCost cost, int minX, int minY, int maxX, int maxY, int startPos, int goalPos, int goalX1, int goalY1, int goalX2, int goalY2){ + var frontier = innerFrontier; + var costs = innerCosts; + + frontier.clear(); + costs.clear(); + + //TODO: this can be faster and more memory efficient by making costs a NxN array... probably? + costs.put(startPos, 0); + frontier.add(startPos, 0); + + if(goalX2 < goalX1){ + int tmp = goalX1; + goalX1 = goalX2; + goalX2 = tmp; + } + + if(goalY2 < goalY1){ + int tmp = goalY1; + goalY1 = goalY2; + goalY2 = tmp; + } + + while(frontier.size > 0){ + int current = frontier.poll(); + + int cx = current % wwidth, cy = current / wwidth; + + //found the goal (it's in the portal rectangle) + if((cx >= goalX1 && cy >= goalY1 && cx <= goalX2 && cy <= goalY2) || current == goalPos){ + return costs.get(current); + } + + for(Point2 point : Geometry.d4){ + int newx = cx + point.x, newy = cy + point.y; + int next = newx + wwidth * newy; + + if(newx > maxX || newy > maxY || newx < minX || newy < minY || tcost(team, cost, next) == impassable) continue; + + float add = tileCost(team, cost, current, next); + + if(add < 0) continue; + + float newCost = costs.get(current) + add; + + if(newCost < costs.get(next, Float.POSITIVE_INFINITY)){ + costs.put(next, newCost); + float priority = newCost + heuristic(next, goalPos); + frontier.add(next, priority); + } + } + } + + return -1f; + } + + int makeNodeIndex(int cx, int cy, int dir, int portal){ + //to make sure there's only one way to refer to each node, the direction must be 0 or 1 (referring to portals on the top or right edge) + + //direction can only be 2 if cluster X is 0 (left edge of map) + if(dir == 2 && cx != 0){ + dir = 0; + cx --; + } + + //direction can only be 3 if cluster Y is 0 (bottom edge of map) + if(dir == 3 && cy != 0){ + dir = 1; + cy --; + } + + return NodeIndex.get(cx + cy * cwidth, dir, portal); + } + + //uses A* to find the closest node index to specified coordinates + //this node is used in cluster A* + /** @return MAX_VALUE if no node is found */ + private int findClosestNode(int team, int pathCost, int tileX, int tileY){ + int cx = tileX / clusterSize, cy = tileY / clusterSize; + + if(cx < 0 || cy < 0 || cx >= cwidth || cy >= cheight){ + return Integer.MAX_VALUE; + } + + PathCost cost = idToCost(pathCost); + Cluster cluster = getCreateCluster(team, pathCost, cx, cy); + int minX = cx * clusterSize, minY = cy * clusterSize, maxX = Math.min(minX + clusterSize - 1, wwidth - 1), maxY = Math.min(minY + clusterSize - 1, wheight - 1); + + int bestPortalPair = Integer.MAX_VALUE; + float bestCost = Float.MAX_VALUE; + + //A* to every node, find the best one (I know there's a better algorithm for this, probably dijkstra) + for(int dir = 0; dir < 4; dir++){ + var portals = cluster.portals[dir]; + if(portals == null) continue; + + for(int j = 0; j < portals.size; j++){ + + int + other = portals.items[j], + otherFrom = Point2.x(other), otherTo = Point2.y(other), + otherAverage = (otherFrom + otherTo) / 2, + ox = cx * clusterSize + offsets[dir * 2] * (clusterSize - 1), + oy = cy * clusterSize + offsets[dir * 2 + 1] * (clusterSize - 1), + otherX = (moveDirs[dir * 2] * otherAverage + ox), + otherY = (moveDirs[dir * 2 + 1] * otherAverage + oy); + + float connectionCost = innerAstar( + team, cost, + minX, minY, maxX, maxY, + tileX + tileY * wwidth, + otherX + otherY * wwidth, + (moveDirs[dir * 2] * otherFrom + ox), + (moveDirs[dir * 2 + 1] * otherFrom + oy), + (moveDirs[dir * 2] * otherTo + ox), + (moveDirs[dir * 2 + 1] * otherTo + oy) + ); + + //better cost found, update and return + if(connectionCost != -1f && connectionCost < bestCost){ + bestPortalPair = Point2.pack(dir, j); + bestCost = connectionCost; + } + } + } + + if(bestPortalPair != Integer.MAX_VALUE){ + return makeNodeIndex(cx, cy, Point2.x(bestPortalPair), Point2.y(bestPortalPair)); + } + + + return Integer.MAX_VALUE; + } + + //distance heuristic: manhattan + private float clusterNodeHeuristic(int team, int pathCost, int nodeA, int nodeB){ + int + clusterA = NodeIndex.cluster(nodeA), + dirA = NodeIndex.dir(nodeA), + portalA = NodeIndex.portal(nodeA), + clusterB = NodeIndex.cluster(nodeB), + dirB = NodeIndex.dir(nodeB), + portalB = NodeIndex.portal(nodeB), + rangeA = getCreateCluster(team, pathCost, clusterA).portals[dirA].items[portalA], + rangeB = getCreateCluster(team, pathCost, clusterB).portals[dirB].items[portalB]; + + float + averageA = (Point2.x(rangeA) + Point2.y(rangeA)) / 2f, + x1 = (moveDirs[dirA * 2] * averageA + (clusterA % cwidth) * clusterSize + offsets[dirA * 2] * (clusterSize - 1) + nextOffsets[dirA * 2] / 2f), + y1 = (moveDirs[dirA * 2 + 1] * averageA + (clusterA / cwidth) * clusterSize + offsets[dirA * 2 + 1] * (clusterSize - 1) + nextOffsets[dirA * 2 + 1] / 2f), + + averageB = (Point2.x(rangeB) + Point2.y(rangeB)) / 2f, + x2 = (moveDirs[dirB * 2] * averageB + (clusterB % cwidth) * clusterSize + offsets[dirB * 2] * (clusterSize - 1) + nextOffsets[dirB * 2] / 2f), + y2 = (moveDirs[dirB * 2 + 1] * averageB + (clusterB / cwidth) * clusterSize + offsets[dirB * 2 + 1] * (clusterSize - 1) + nextOffsets[dirB * 2 + 1] / 2f); + + return Math.abs(x1 - x2) + Math.abs(y1 - y2); + } + + @Nullable IntSeq clusterAstar(PathRequest request, int pathCost, int startNodeIndex, int endNodeIndex){ + var result = request.resultPath; + + if(startNodeIndex == endNodeIndex){ + result.clear(); + result.add(startNodeIndex); + return result; + } + + var team = request.team; + + if(request.costs == null) request.costs = new IntFloatMap(); + if(request.cameFrom == null) request.cameFrom = new IntIntMap(); + if(request.frontier == null) request.frontier = new PathfindQueue(); + + //note: these are NOT cleared, it is assumed that this function cleans up after itself at the end + //is this a good idea? don't know, might hammer the GC with unnecessary objects too + var costs = request.costs; + var cameFrom = request.cameFrom; + var frontier = request.frontier; + + cameFrom.put(startNodeIndex, startNodeIndex); + costs.put(startNodeIndex, 0); + frontier.add(startNodeIndex, 0); + + boolean foundEnd = false; + + while(frontier.size > 0){ + int current = frontier.poll(); + + if(current == endNodeIndex){ + foundEnd = true; + break; + } + + int cluster = NodeIndex.cluster(current), dir = NodeIndex.dir(current), portal = NodeIndex.portal(current); + int cx = cluster % cwidth, cy = cluster / cwidth; + + //invalid cluster index (TODO: how?) + if(cx >= cwidth || cy >= cheight || cx < 0 || cy < 0) continue; + + Cluster clust = getCreateCluster(team, pathCost, cluster); + LongSeq innerCons = clust.portalConnections[dir] == null || portal >= clust.portalConnections[dir].length ? null : clust.portalConnections[dir][portal]; + + //edges for the cluster the node is 'in' + if(innerCons != null){ + checkEdges(request, team, pathCost, current, endNodeIndex, cx, cy, innerCons); + } + + //edges that this node 'faces' from the other side + int nextCx = cx + Geometry.d4[dir].x, nextCy = cy + Geometry.d4[dir].y; + if(nextCx >= 0 && nextCy >= 0 && nextCx < cwidth && nextCy < cheight){ + Cluster nextCluster = getCreateCluster(team, pathCost, nextCx, nextCy); + int relativeDir = (dir + 2) % 4; + LongSeq outerCons = nextCluster.portalConnections[relativeDir] == null || nextCluster.portalConnections[relativeDir].length <= portal ? null : nextCluster.portalConnections[relativeDir][portal]; + if(outerCons != null){ + checkEdges(request, team, pathCost, current, endNodeIndex, nextCx, nextCy, outerCons); + } + } + } + + //null them out, so they get GC'ed later + //there's no reason to keep them around and waste memory, since this path may never be recalculated + request.costs = null; + request.cameFrom = null; + request.frontier = null; + + if(foundEnd){ + result.clear(); + + int cur = endNodeIndex; + while(cur != startNodeIndex){ + result.add(cur); + cur = cameFrom.get(cur); + } + + result.reverse(); + + return result; + } + return null; + } + + private void checkEdges(PathRequest request, int team, int pathCost, int current, int goal, int cx, int cy, LongSeq connections){ + for(int i = 0; i < connections.size; i++){ + long con = connections.items[i]; + float cost = IntraEdge.cost(con); + int otherDir = IntraEdge.dir(con), otherPortal = IntraEdge.portal(con); + int next = makeNodeIndex(cx, cy, otherDir, otherPortal); + + float newCost = request.costs.get(current) + cost; + + if(newCost < request.costs.get(next, Float.POSITIVE_INFINITY)){ + request.costs.put(next, newCost); + + request.frontier.add(next, newCost + clusterNodeHeuristic(team, pathCost, next, goal)); + request.cameFrom.put(next, current); + } + } + } + + private void updateFields(FieldCache cache, long nsToRun){ + var frontier = cache.frontier; + var fields = cache.fields; + var goalPos = cache.goalPos; + var pcost = cache.cost; + var team = cache.team; + + long start = Time.nanos(); + int counter = 0; + + //actually do the flow field part + while(frontier.size > 0){ + int tile = frontier.removeLast(); + int baseX = tile % wwidth, baseY = tile / wwidth; + int curWeightIndex = (baseX / clusterSize) + (baseY / clusterSize) * cwidth; + + //TODO: how can this be null??? serious problem! + int[] curWeights = fields.get(curWeightIndex); + if(curWeights == null) continue; + + int cost = curWeights[baseX % clusterSize + ((baseY % clusterSize) * clusterSize)]; + + if(cost != impassable){ + for(Point2 point : Geometry.d4){ + + int + dx = baseX + point.x, dy = baseY + point.y, + clx = dx / clusterSize, cly = dy / clusterSize; + + if(clx < 0 || cly < 0 || dx >= wwidth || dy >= wheight) continue; + + int nextWeightIndex = clx + cly * cwidth; + + int[] weights = nextWeightIndex == curWeightIndex ? curWeights : fields.get(nextWeightIndex); + + //out of bounds; not allowed to move this way because no weights were registered here + if(weights == null) continue; + + int newPos = tile + point.x + point.y * wwidth; + + //can't move back to the goal + if(newPos == goalPos) continue; + + if(dx - clx * clusterSize < 0 || dy - cly * clusterSize < 0) continue; + + int newPosArray = (dx - clx * clusterSize) + (dy - cly * clusterSize) * clusterSize; + + int otherCost = pcost.getCost(team, pathfinder.tiles[newPos]); + int oldCost = weights[newPosArray]; + + //a cost of 0 means uninitialized, OR it means we're at the goal position, but that's handled above + if((oldCost == 0 || oldCost > cost + otherCost) && otherCost != impassable){ + frontier.addFirst(newPos); + weights[newPosArray] = cost + otherCost; + } + } + } + + //every N iterations, check the time spent - this prevents extra calls to nano time, which itself is slow + if(nsToRun >= 0 && (counter++) >= updateStepInterval){ + counter = 0; + if(Time.timeSinceNanos(start) >= nsToRun){ + return; + } + } + } + } + + private void addFlowCluster(FieldCache cache, int cluster, boolean addingFrontier){ + addFlowCluster(cache, cluster % cwidth, cluster / cwidth, addingFrontier); + } + + private void addFlowCluster(FieldCache cache, int cx, int cy, boolean addingFrontier){ + //out of bounds + if(cx < 0 || cy < 0 || cx >= cwidth || cy >= cheight) return; + + var fields = cache.fields; + int key = cx + cy * cwidth; + + if(!fields.containsKey(key)){ + fields.put(key, new int[clusterSize * clusterSize]); + + if(addingFrontier){ + for(int dir = 0; dir < 4; dir++){ + int ox = cx + nextOffsets[dir * 2], oy = cy + nextOffsets[dir * 2 + 1]; + + if(ox < 0 || oy < 0 || ox >= cwidth || oy >= cheight) continue; + + var otherField = fields.get(ox + oy * cwidth); + + if(otherField == null) continue; + + int + relOffset = (dir + 2) % 4, + movex = moveDirs[relOffset * 2], + movey = moveDirs[relOffset * 2 + 1], + otherx1 = offsets[relOffset * 2] * (clusterSize - 1), + othery1 = offsets[relOffset * 2 + 1] * (clusterSize - 1); + + //scan the edge of the cluster + for(int i = 0; i < clusterSize; i++){ + int x = otherx1 + movex * i, y = othery1 + movey * i; + + //check to make sure it's not 0 (uninitialized flowfield data) + if(otherField[x + y * clusterSize] > 0){ + int worldX = x + ox * clusterSize, worldY = y + oy * clusterSize; + + //add the world-relative position to the frontier, so it recalculates + cache.frontier.addFirst(worldX + worldY * wwidth); + + if(showDebug){ + Core.app.post(() -> Fx.placeBlock.at(worldX *tilesize, worldY * tilesize, 1f)); + } + } + } + } + } + } + } + + private void initializePathRequest(PathRequest request, int team, int costId, int unitX, int unitY, int goalX, int goalY){ + PathCost pcost = idToCost(costId); + + int goalPos = (goalX + goalY * wwidth); + + int node = findClosestNode(team, costId, unitX, unitY); + int dest = findClosestNode(team, costId, goalX, goalY); + + if(dest == Integer.MAX_VALUE){ + request.notFound = true; + //no node found (TODO: invalid state??) + return; + } + + var nodePath = clusterAstar(request, costId, node, dest); + + FieldCache cache = fields.get(Pack.longInt(goalPos, costId)); + //if true, extra values are added on the sides of existing field cells that face new cells. + boolean addingFrontier = true; + + //create the cache if it doesn't exist, and initialize it + if(cache == null){ + cache = new FieldCache(pcost, costId, team, goalPos); + fields.put(cache.mapKey, cache); + FieldCache fcache = cache; + //register field in main thread for iteration + Core.app.post(() -> fieldList.add(fcache)); + cache.frontier.addFirst(goalPos); + addingFrontier = false; //when it's a new field, there is no need to add to the frontier to merge the flowfield + } + + if(nodePath != null){ + int cx = unitX / clusterSize, cy = unitY / clusterSize; + + addFlowCluster(cache, cx, cy, addingFrontier); + + for(int i = -1; i < nodePath.size; i++){ + int + current = i == -1 ? node : nodePath.items[i], + cluster = NodeIndex.cluster(current), + dir = NodeIndex.dir(current), + dx = Geometry.d4[dir].x, + dy = Geometry.d4[dir].y, + ox = cluster % cwidth + dx, + oy = cluster / cwidth + dy; + + addFlowCluster(cache, cluster, addingFrontier); + + //store directional/flipped version of cluster + if(ox >= 0 && oy >= 0 && ox < cwidth && oy < cheight){ + int other = ox + oy * cwidth; + + addFlowCluster(cache, other, addingFrontier); + } + } + } + } + + private PathCost idToCost(int costId){ + return ControlPathfinder.costTypes.get(costId); + } + + public static boolean isNearObstacle(Unit unit, int x1, int y1, int x2, int y2){ + return raycast(unit.team().id, unit.type.pathCost, x1, y1, x2, y2); + } + + @Deprecated + public int nextTargetId(){ + return 0; + } + + @Deprecated + public boolean getPathPosition(Unit unit, int pathId, Vec2 destination, Vec2 out){ + return getPathPosition(unit, pathId, destination, out, null); + } + + @Deprecated + public boolean getPathPosition(Unit unit, int pathId, Vec2 destination, Vec2 out, @Nullable boolean[] noResultFound){ + return getPathPosition(unit, destination, destination, out, noResultFound); + } + + public boolean getPathPosition(Unit unit, Vec2 destination, Vec2 out, @Nullable boolean[] noResultFound){ + return getPathPosition(unit, destination, destination, out, noResultFound); + } + + public boolean getPathPosition(Unit unit, Vec2 destination, Vec2 mainDestination, Vec2 out, @Nullable boolean[] noResultFound){ + int costId = unit.type.pathCostId; + PathCost cost = idToCost(costId); + + int + team = unit.team.id, + tileX = unit.tileX(), + tileY = unit.tileY(), + packedPos = world.packArray(tileX, tileY), + destX = World.toTile(mainDestination.x), + destY = World.toTile(mainDestination.y), + actualDestX = World.toTile(destination.x), + actualDestY = World.toTile(destination.y), + actualDestPos = actualDestX + actualDestY * wwidth, + destPos = destX + destY * wwidth; + + PathRequest request = unitRequests.get(unit); + + unit.hitboxTile(Tmp.r3); + //tile rect size has tile size factored in, since the ray cannot have thickness + float tileRectSize = tilesize + Tmp.r3.height; + + int lastRaycastTile = request == null || world.tileChanges != request.lastWorldUpdate ? -1 : request.lastRaycastTile; + boolean raycastResult = request != null && request.lastRaycastResult; + + //cache raycast results to run every time the world updates, and every tile the unit crosses + if(lastRaycastTile != packedPos){ + //near the destination, standard raycasting tends to break down, so use the more permissive 'near' variant that doesn't take into account edges of walls + raycastResult = unit.within(destination, tilesize * 2.5f) ? + !raycastRect(unit.x, unit.y, destination.x, destination.y, team, cost, tileX, tileY, actualDestX, actualDestY, tileRectSize) : + !raycast(team, cost, tileX, tileY, actualDestX, actualDestY); + + if(request != null){ + request.lastRaycastTile = packedPos; + request.lastRaycastResult = raycastResult; + request.lastWorldUpdate = world.tileChanges; + } + } + + //if the destination can be trivially reached in a straight line, do that. + if(raycastResult){ + out.set(destination); + return true; + } + + boolean any = false; + + long fieldKey = Pack.longInt(destPos, costId); + + //use existing request if it exists. + if(request != null && request.destination == destPos){ + request.lastUpdateId = state.updateId; + + Tile tileOn = unit.tileOn(), initialTileOn = tileOn; + //TODO: should fields be accessible from this thread? + FieldCache fieldCache = fields.get(fieldKey); + + if(fieldCache != null && tileOn != null){ + FieldCache old = request.oldCache; + FieldCache targetCache = old != null ? old : fieldCache; + boolean requeue = old == null; + //nullify the old field to be GCed, as it cannot be relevant anymore (this path is complete) + if(fieldCache.frontier.isEmpty() && old != null){ + request.oldCache = null; + } + + fieldCache.lastUpdateId = state.updateId; + int maxIterations = 30; //TODO higher/lower number? is this still too slow? + int i = 0; + boolean recalc = false; + + if(packedPos == actualDestPos){ + request.lastTargetTile = tileOn; + //TODO last pos can change if the flowfield changes. + }else if(initialTileOn.pos() != request.lastTile || request.lastTargetTile == null){ + boolean anyNearSolid = false; + + //find the next tile until one near a solid block is discovered + while(i ++ < maxIterations){ + int value = getCost(targetCache, tileOn.x, tileOn.y, requeue); + + Tile current = null; + int minCost = 0; + for(int dir = 0; dir < 4; dir ++){ + Point2 point = Geometry.d4[dir]; + int dx = tileOn.x + point.x, dy = tileOn.y + point.y; + + Tile other = world.tile(dx, dy); + + if(other == null) continue; + + int packed = world.packArray(dx, dy); + int otherCost = getCost(targetCache, dx, dy, requeue), relCost = otherCost - value; + + if(relCost > 2 || otherCost <= 0){ + anyNearSolid = true; + } + + if((value == 0 || otherCost < value) && otherCost != impassable && ((otherCost != 0 && (current == null || otherCost < minCost)) || packed == actualDestPos || packed == destPos) && passable(unit.team.id, cost, packed)){ + current = other; + minCost = otherCost; + //no need to keep searching. + if(packed == destPos || packed == actualDestPos){ + break; + } + } + } + + //TODO raycast spam = extremely slow + //...flowfield integration spam is also really slow. + if(!(current == null || (costId == costIdGround && current.dangerous() && !tileOn.dangerous()))){ + + //when anyNearSolid is false, no solid tiles have been encountered anywhere so far, so raycasting is a waste of time + if(anyNearSolid && !(tileOn.dangerous() && costId == costIdGround) && raycastRect(unit.x, unit.y, current.x * tilesize, current.y * tilesize, team, cost, initialTileOn.x, initialTileOn.y, current.x, current.y, tileRectSize)){ + + //TODO this may be a mistake + if(tileOn == initialTileOn){ + recalc = true; + any = true; + } + + break; + }else{ + tileOn = current; + any = true; + + int a = current.array(); + + if(a == destPos || a == actualDestPos){ + break; + } + } + + }else{ + break; + } + } + + request.lastTargetTile = any ? tileOn : null; + if(showDebug && tileOn != null && Core.graphics.getFrameId() % 30 == 0){ + Fx.placeBlock.at(tileOn.worldx(), tileOn.worldy(), 1); + } + } + + if(request.lastTargetTile != null){ + if(showDebug && Core.graphics.getFrameId() % 30 == 0){ + Fx.breakBlock.at(request.lastTargetTile.worldx(), request.lastTargetTile.worldy(), 1); + } + out.set(request.lastTargetTile); + request.lastTile = recalc ? -1 : initialTileOn.pos(); + return true; + } + } + }else if(request == null){ + + //queue new request. + unitRequests.put(unit, request = new PathRequest(unit, team, costId, destPos)); + + PathRequest f = request; + + //on the pathfinding thread: initialize the request + queue.post(() -> { + threadPathRequests.add(f); + recalculatePath(f); + }); + + out.set(destination); + + return true; + } + + if(noResultFound != null){ + noResultFound[0] = request.notFound; + } + return false; + } + + private void recalculatePath(PathRequest request){ + initializePathRequest(request, request.team, request.costId, request.unit.tileX(), request.unit.tileY(), request.destination % wwidth, request.destination / wwidth); + } + + private int getCost(FieldCache cache, int x, int y, boolean requeue){ + try{ + int[] field = cache.fields.get(x / clusterSize + (y / clusterSize) * cwidth); + if(field == null){ + if(!requeue) return 0; + //request a new flow cluster if one wasn't found; this may be a spammed a bit, but the function will return early once it's created the first time + queue.post(() -> addFlowCluster(cache, x / clusterSize, y / clusterSize, true)); + return 0; + } + return field[(x % clusterSize) + (y % clusterSize) * clusterSize]; + }catch(ArrayIndexOutOfBoundsException e){ + //TODO: this crashes because the fields are being added while they're accessed. really bad. needs a long-term solution and some way to cache the map lookup results. + //using an array instead of a map would be nice, but that can mean something like 2500 entries in a sparse array, which is pretty terrible... + return 0; + } + } + + private static boolean raycast(int team, PathCost type, int x1, int y1, int x2, int y2){ + int ww = wwidth, wh = wheight; + int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; + int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; + int e2, err = dx - dy; + + while(x >= 0 && y >= 0 && x < ww && y < wh){ + if(avoid(team, type, x + y * wwidth)) return true; + if(x == x2 && y == y2) return false; + + //diagonal ver + e2 = 2 * err; + if(e2 > -dy){ + err -= dy; + x += sx; + } + + if(e2 < dx){ + err += dx; + y += sy; + } + } + + return true; + } + + /** @return 0 if nothing was hit, otherwise the packed coordinates. This is an internal function and will likely be moved - do not use!*/ + public static int raycastFast(int team, PathCost type, int x1, int y1, int x2, int y2){ + int ww = world.width(), wh = world.height(); + int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; + int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; + int err = dx - dy; + + while(x >= 0 && y >= 0 && x < ww && y < wh){ + if(solid(team, type, x + y * wwidth, true)) return Point2.pack(x, y); + if(x == x2 && y == y2) return 0; + + //no diagonals + if(2 * err + dy > dx - 2 * err){ + err -= dy; + x += sx; + }else{ + err += dx; + y += sy; + } + } + + return 0; + } + + /** @return 0 if nothing was hit, otherwise the packed coordinates. This is an internal function and will likely be moved - do not use!*/ + public static int raycastFastAvoid(int team, PathCost type, int x1, int y1, int x2, int y2){ + int ww = world.width(), wh = world.height(); + int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; + int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; + int err = dx - dy; + + while(x >= 0 && y >= 0 && x < ww && y < wh){ + if(avoid(team, type, x + y * wwidth)) return Point2.pack(x, y); + if(x == x2 && y == y2) return 0; + + //no diagonals + if(2 * err + dy > dx - 2 * err){ + err -= dy; + x += sx; + }else{ + err += dx; + y += sy; + } + } + + return 0; + } + + private static boolean overlap(int team, PathCost type, int x, int y, float startX, float startY, float endX, float endY, float rectSize){ + if(x < 0 || y < 0 || x >= wwidth || y >= wheight) return false; + if(!nearPassable(team, type, x + y * wwidth)){ + return Intersector.intersectSegmentRectangleFast(startX, startY, endX, endY, x * tilesize - rectSize/2f, y * tilesize - rectSize/2f, rectSize, rectSize); + } + return false; + } + + private static boolean raycastRect(float startX, float startY, float endX, float endY, int team, PathCost type, int x1, int y1, int x2, int y2, float rectSize){ + int ww = wwidth, wh = wheight; + int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; + int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; + int e2, err = dx - dy; + + while(x >= 0 && y >= 0 && x < ww && y < wh){ + if( + !nearPassable(team, type, x + y * wwidth) || + overlap(team, type, x + 1, y, startX, startY, endX, endY, rectSize) || + overlap(team, type, x - 1, y, startX, startY, endX, endY, rectSize) || + overlap(team, type, x, y + 1, startX, startY, endX, endY, rectSize) || + overlap(team, type, x, y - 1, startX, startY, endX, endY, rectSize) + ) return true; + + if(x == x2 && y == y2) return false; + + //diagonal ver + e2 = 2 * err; + if(e2 > -dy){ + err -= dy; + x += sx; + } + + if(e2 < dx){ + err += dx; + y += sy; + } + } + + return true; + } + + private static boolean avoid(int team, PathCost type, int tilePos){ + int cost = cost(team, type, tilePos); + return cost == impassable || cost >= 2; + } + + private static boolean passable(int team, PathCost cost, int pos){ + int amount = cost.getCost(team, pathfinder.tiles[pos]); + return amount != impassable && amount < solidCap; + } + + private static boolean nearPassable(int team, PathCost cost, int pos){ + int amount = cost.getCost(team, pathfinder.tiles[pos]); + //for standard units: never consider deep water (cost = 6000) passable + //for leg units: consider it passable + return amount != impassable && amount < (cost == costLegs ? solidCap : 50); + } + + private static boolean solid(int team, PathCost type, int x, int y){ + return x < 0 || y < 0 || x >= wwidth || y >= wheight || solid(team, type, x + y * wwidth, true); + } + + private static boolean solid(int team, PathCost type, int tilePos, boolean checkWall){ + int cost = cost(team, type, tilePos); + return cost == impassable || cost >= solidCap; + } + private static int cost(int team, PathCost cost, int tilePos){ if(state.rules.limitMapArea && !Team.get(team).isAI()){ int x = tilePos % wwidth, y = tilePos / wwidth; @@ -412,236 +1435,162 @@ public class ControlPathfinder{ return cost.getCost(team, pathfinder.tiles[tilePos]); } - private static boolean avoid(int team, PathCost type, int tilePos){ - int cost = cost(team, type, tilePos); - return cost == impassable || cost >= 2; - } + private void clusterChanged(int team, int pathCost, int cx, int cy){ + int index = cx + cy * cwidth; - private static boolean solid(int team, PathCost type, int tilePos){ - int cost = cost(team, type, tilePos); - return cost == impassable || cost >= 6000; - } - - private static float tileCost(int team, PathCost type, int a, int b){ - //currently flat cost - return cost(team, type, b); - } - - static class PathfindThread extends Thread{ - /** handles task scheduling on the update thread. */ - TaskQueue queue = new TaskQueue(); - /** pathfinding thread access only! */ - Seq requests = new Seq<>(); - /** volatile for access across threads */ - volatile int requestSize; - - public PathfindThread(String name){ - super(name); + for(var req : threadPathRequests){ + long mapKey = Pack.longInt(req.destination, pathCost); + var field = fields.get(mapKey); + if((field != null && field.fields.containsKey(index)) || req.notFound){ + invalidRequests.add(req); + } } - @Override - public void run(){ - while(true){ - //stop on client, no updating - if(net.client()) return; - try{ - if(state.isPlaying()){ - queue.run(); - requestSize = requests.size; + } - //total update time no longer than maxUpdate - for(var req : requests){ - //TODO this is flawed with many paths - req.update(maxUpdate / requests.size); + private void updateClustersComplete(int clusterIndex){ + for(int team = 0; team < clusters.length; team++){ + var dim1 = clusters[team]; + if(dim1 != null){ + for(int pathCost = 0; pathCost < dim1.length; pathCost++){ + var dim2 = dim1[pathCost]; + if(dim2 != null){ + var cluster = dim2[clusterIndex]; + if(cluster != null){ + updateCluster(team, pathCost, clusterIndex % cwidth, clusterIndex / cwidth); + clusterChanged(team, pathCost, clusterIndex % cwidth, clusterIndex / cwidth); + } + } + } + } + } + } + + private void updateClustersInner(int clusterIndex){ + for(int team = 0; team < clusters.length; team++){ + var dim1 = clusters[team]; + if(dim1 != null){ + for(int pathCost = 0; pathCost < dim1.length; pathCost++){ + var dim2 = dim1[pathCost]; + if(dim2 != null){ + var cluster = dim2[clusterIndex]; + if(cluster != null){ + updateInnerEdges(team, pathCost, clusterIndex % cwidth, clusterIndex / cwidth, cluster); + clusterChanged(team, pathCost, clusterIndex % cwidth, clusterIndex / cwidth); + } + } + } + } + } + } + + @Override + public void run(){ + long lastInvalidCheck = Time.millis() + invalidateCheckInterval; + + while(true){ + if(net.client()) return; + try{ + + + if(state.isPlaying()){ + queue.run(); + + clustersToUpdate.each(cluster -> { + updateClustersComplete(cluster); + + //just in case: don't redundantly update inner clusters after you've recalculated it entirely + clustersToInnerUpdate.remove(cluster); + }); + + clustersToInnerUpdate.each(cluster -> { + //only recompute the inner links + updateClustersInner(cluster); + }); + + clustersToInnerUpdate.clear(); + clustersToUpdate.clear(); + + //periodically check for invalidated paths + if(Time.timeSinceMillis(lastInvalidCheck) > invalidateCheckInterval){ + lastInvalidCheck = Time.millis(); + + var it = invalidRequests.iterator(); + while(it.hasNext()){ + var request = it.next(); + + //invalid request, ignore it + if(request.invalidated){ + it.remove(); + continue; + } + + long mapKey = Pack.longInt(request.destination, request.costId); + + var field = fields.get(mapKey); + + if(field != null){ + //it's only worth recalculating a path when the current frontier has finished; otherwise the unit will be following something incomplete. + if(field.frontier.isEmpty()){ + + //remove the field, to be recalculated next update one recalculatePath is processed + fields.remove(field.mapKey); + Core.app.post(() -> fieldList.remove(field)); + + //once the field is invalidated, make sure that all the requests that have it stored in their 'old' field, so units don't stutter during recalculations + for(var otherRequest : threadPathRequests){ + if(otherRequest.destination == request.destination){ + otherRequest.oldCache = field; + } + } + + //the recalculation is done next update, so multiple path requests in the same batch don't end up removing and recalculating the field multiple times. + queue.post(() -> recalculatePath(request)); + //it has been processed. + it.remove(); + } + }else{ //there's no field, presumably because a previous request already invalidated it. + queue.post(() -> recalculatePath(request)); + it.remove(); + } } } - try{ - Thread.sleep(updateInterval); - }catch(InterruptedException e){ - //stop looping when interrupted externally - return; + //each update time (not total!) no longer than maxUpdate + for(FieldCache cache : fields.values()){ + updateFields(cache, maxUpdate); } - }catch(Throwable e){ - //do not crash the pathfinding thread - Log.err(e); } + + try{ + Thread.sleep(updateInterval); + }catch(InterruptedException e){ + //stop looping when interrupted externally + return; + } + }catch(Throwable e){ + e.printStackTrace(); } } } - static class PathRequest{ - final PathfindThread thread; + @Struct + static class IntraEdgeStruct{ + @StructField(8) + int dir; + @StructField(8) + int portal; - volatile boolean done = false; - volatile boolean foundEnd = false; - volatile Unit unit; - volatile PathCost cost; - volatile int team; - volatile int lastWorldUpdate; + float cost; + } - final Vec2 lastPos = new Vec2(); - float stuckTimer = 0f; - - final Vec2 destination = new Vec2(); - final Vec2 lastDestination = new Vec2(); - - //TODO only access on main thread?? - volatile int pathIndex; - - int rayPathIndex = -1; - IntSeq result = new IntSeq(); - volatile float raycastTimer; - - PathfindQueue frontier = new PathfindQueue(); - //node index -> node it came from - IntIntMap cameFrom = new IntIntMap(); - //node index -> total cost - IntFloatMap costs = new IntFloatMap(); - - int start, goal; - - long lastUpdateId; - long lastTime; - - volatile int lastId, curId; - - public PathRequest(PathfindThread thread){ - this.thread = thread; - } - - void update(long maxUpdateNs){ - if(curId != lastId){ - clear(true); - } - lastId = curId; - - //re-do everything when world updates, but keep the old path around - if(Time.timeSinceMillis(lastTime) > 1000 * 3 && (worldUpdateId != lastWorldUpdate || !destination.epsilonEquals(lastDestination, 2f))){ - lastTime = Time.millis(); - lastWorldUpdate = worldUpdateId; - clear(false); - } - - if(done) return; - - long ns = Time.nanos(); - int counter = 0; - - while(frontier.size > 0){ - int current = frontier.poll(); - - if(current == goal){ - foundEnd = true; - break; - } - - int cx = current % wwidth, cy = current / wwidth; - - for(Point2 point : Geometry.d4){ - int newx = cx + point.x, newy = cy + point.y; - int next = newx + wwidth * newy; - - if(newx >= wwidth || newy >= wheight || newx < 0 || newy < 0) continue; - - //in fallback mode, enemy walls are passable - if(tcost(team, cost, next) == impassable) continue; - - float add = tileCost(team, cost, current, next); - float currentCost = costs.get(current); - - if(add < 0) continue; - - //the cost can include an impassable enemy wall, so cap the cost if so and add the base cost instead - //essentially this means that any path with enemy walls will only count the walls once, preventing strange behavior like avoiding based on wall count - float newCost = currentCost >= wallImpassableCap && add >= wallImpassableCap ? currentCost + add - wallImpassableCap : currentCost + add; - - //a cost of 0 means "not set" - if(!costs.containsKey(next) || newCost < costs.get(next)){ - costs.put(next, newCost); - float priority = newCost + heuristic(next, goal); - frontier.add(next, priority); - cameFrom.put(next, current); - } - } - - //only check every N iterations to prevent nanoTime spam (slow) - if((counter ++) >= 100){ - counter = 0; - - //exit when out of time. - if(Time.timeSinceNanos(ns) > maxUpdateNs){ - return; - } - } - } - - lastTime = Time.millis(); - raycastTimer = 9999f; - result.clear(); - - pathIndex = 0; - rayPathIndex = -1; - - if(foundEnd){ - int cur = goal; - while(cur != start){ - result.add(cur); - cur = cameFrom.get(cur); - } - - result.reverse(); - - smoothPath(); - } - - //don't keep this around in memory, better to dump entirely - using clear() keeps around massive arrays for paths - frontier = new PathfindQueue(); - cameFrom = new IntIntMap(); - costs = new IntFloatMap(); - - done = true; - } - - void smoothPath(){ - int len = result.size; - if(len <= 2) return; - - int output = 1, input = 2; - - while(input < len){ - if(cast(team, cost, result.get(output - 1), result.get(input))){ - result.swap(output, input - 1); - output++; - } - input++; - } - - result.swap(output, input - 1); - result.size = output + 1; - } - - void clear(boolean resetCurrent){ - done = false; - - frontier = new PathfindQueue(20); - cameFrom.clear(); - costs.clear(); - - start = world.packArray(unit.tileX(), unit.tileY()); - goal = world.packArray(World.toTile(destination.x), World.toTile(destination.y)); - - cameFrom.put(start, start); - costs.put(start, 0); - - frontier.add(start, 0); - - foundEnd = false; - lastDestination.set(destination); - - if(resetCurrent){ - result.clear(); - } - } + @Struct + static class NodeIndexStruct{ + @StructField(22) + int cluster; + @StructField(2) + int dir; + @StructField(8) + int portal; } } diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index bffb9031da..19f8a48697 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -6,7 +6,6 @@ import arc.math.geom.*; import arc.struct.*; import arc.util.*; import mindustry.annotations.Annotations.*; -import mindustry.content.*; import mindustry.core.*; import mindustry.game.EventType.*; import mindustry.game.*; @@ -58,7 +57,8 @@ public class Pathfinder implements Runnable{ //water (team, tile) -> - (PathTile.solid(tile) || !PathTile.liquid(tile) ? 6000 : 1) + + (!PathTile.liquid(tile) ? 6000 : 1) + + PathTile.health(tile) * 5 + (PathTile.nearGround(tile) || PathTile.nearSolid(tile) ? 14 : 0) + (PathTile.deep(tile) ? 0 : 1) + (PathTile.damages(tile) ? 35 : 0) @@ -152,18 +152,19 @@ public class Pathfinder implements Runnable{ /** Packs a tile into its internal representation. */ public int packTile(Tile tile){ - boolean nearLiquid = false, nearSolid = false, nearGround = false, solid = tile.solid(), allDeep = tile.floor().isDeep(); + boolean nearLiquid = false, nearSolid = false, nearLegSolid = false, nearGround = false, solid = tile.solid(), allDeep = tile.floor().isDeep(); for(int i = 0; i < 4; i++){ Tile other = tile.nearby(i); if(other != null){ Floor floor = other.floor(); boolean osolid = other.solid(); - if(floor.isLiquid) nearLiquid = true; + if(floor.isLiquid && floor.isDeep()) nearLiquid = true; //TODO potentially strange behavior when teamPassable is false for other teams? if(osolid && !other.block().teamPassable) nearSolid = true; if(!floor.isLiquid) nearGround = true; if(!floor.isDeep()) allDeep = false; + if(other.legSolid()) nearLegSolid = true; //other tile is now near solid if(solid && !tile.block().teamPassable){ @@ -179,10 +180,11 @@ public class Pathfinder implements Runnable{ tid == 0 && tile.build != null && state.rules.coreCapture ? 255 : tid, //use teamid = 255 when core capture is enabled to mark out derelict structures solid, tile.floor().isLiquid, - tile.staticDarkness() >= 2 || (tile.floor().solid && tile.block() == Blocks.air), + tile.legSolid(), nearLiquid, nearGround, nearSolid, + nearLegSolid, tile.floor().isDeep(), tile.floor().damageTaken > 0.00001f, allDeep, @@ -521,13 +523,19 @@ public class Pathfinder implements Runnable{ this.initialized = true; } + public boolean hasCompleteWeights(){ + return hasComplete && completeWeights != null; + } + public void updateTargetPositions(){ targets.clear(); getPositions(targets); } protected boolean passable(int pos){ - return cost.getCost(team.id, pathfinder.tiles[pos]) != impassable; + int amount = cost.getCost(team.id, pathfinder.tiles[pos]); + //edge case: naval reports costs of 6000+ for non-liquids, even though they are not technically passable + return amount != impassable && !(cost == costTypes.get(costNaval) && amount >= 6000); } /** Gets targets to pathfind towards. This must run on the main thread. */ @@ -557,6 +565,8 @@ public class Pathfinder implements Runnable{ boolean nearGround; //whether this block is near a solid object boolean nearSolid; + //whether this block is near a block that is solid for legged units + boolean nearLegSolid; //whether this block is deep / drownable boolean deep; //whether the floor damages diff --git a/core/src/mindustry/ai/RtsAI.java b/core/src/mindustry/ai/RtsAI.java index 6b37777c29..92025da099 100644 --- a/core/src/mindustry/ai/RtsAI.java +++ b/core/src/mindustry/ai/RtsAI.java @@ -77,6 +77,7 @@ public class RtsAI{ } public void update(){ + if(timer.get(timeUpdate, 60f * 2f)){ assignSquads(); checkBuilding(); diff --git a/core/src/mindustry/ai/UnitCommand.java b/core/src/mindustry/ai/UnitCommand.java index 79bf619a77..51a0edfcf8 100644 --- a/core/src/mindustry/ai/UnitCommand.java +++ b/core/src/mindustry/ai/UnitCommand.java @@ -2,40 +2,23 @@ package mindustry.ai; import arc.*; import arc.func.*; +import arc.scene.style.*; import arc.struct.*; +import arc.util.*; import mindustry.ai.types.*; +import mindustry.ctype.*; import mindustry.entities.units.*; import mindustry.gen.*; +import mindustry.input.*; /** Defines a pattern of behavior that an RTS-controlled unit should follow. Shows up in the command UI. */ -public class UnitCommand{ - /** List of all commands by ID. */ +public class UnitCommand extends MappableContent{ + /** @deprecated now a content type, use the methods in Vars.content instead */ + @Deprecated public static final Seq all = new Seq<>(); - public static final UnitCommand + public static UnitCommand moveCommand, repairCommand, rebuildCommand, assistCommand, mineCommand, boostCommand, enterPayloadCommand, loadUnitsCommand, loadBlocksCommand, unloadPayloadCommand; - moveCommand = new UnitCommand("move", "right", u -> null){{ - drawTarget = true; - resetTarget = false; - }}, - repairCommand = new UnitCommand("repair", "modeSurvival", u -> new RepairAI()), - rebuildCommand = new UnitCommand("rebuild", "hammer", u -> new BuilderAI()), - assistCommand = new UnitCommand("assist", "players", u -> { - var ai = new BuilderAI(); - ai.onlyAssist = true; - return ai; - }), - mineCommand = new UnitCommand("mine", "production", u -> new MinerAI()), - boostCommand = new UnitCommand("boost", "up", u -> new BoostAI()){{ - switchToMove = false; - drawTarget = true; - resetTarget = false; - }}; - - /** Unique ID number. */ - public final int id; - /** Named used for tooltip/description. */ - public final String name; /** Name of UI icon (from Icon class). */ public final String icon; /** Controller that this unit will use when this command is used. Return null for "default" behavior. */ @@ -46,22 +29,86 @@ public class UnitCommand{ public boolean drawTarget = false; /** Whether to reset targets when switching to or from this command. */ public boolean resetTarget = true; + /** */ + public boolean exactArrival = false; + /** Key to press for this command. */ + public @Nullable Binding keybind = null; public UnitCommand(String name, String icon, Func controller){ - this.name = name; + super(name); + this.icon = icon; - this.controller = controller; + this.controller = controller == null ? u -> null : controller; - id = all.size; all.add(this); } + public UnitCommand(String name, String icon, Binding keybind, Func controller){ + this(name, icon, controller); + this.keybind = keybind; + } + public String localized(){ return Core.bundle.get("command." + name); } + public TextureRegionDrawable getIcon(){ + return Icon.icons.get(icon, Icon.cancel); + } + + public char getEmoji() { + return (char)Iconc.codes.get(icon, Iconc.cancel); + } + + @Override + public ContentType getContentType(){ + return ContentType.unitCommand; + } + @Override public String toString(){ return "UnitCommand:" + name; } + + public static void loadAll(){ + + moveCommand = new UnitCommand("move", "right", Binding.unit_command_move, null){{ + drawTarget = true; + resetTarget = false; + }}; + repairCommand = new UnitCommand("repair", "modeSurvival", Binding.unit_command_repair, u -> new RepairAI()); + rebuildCommand = new UnitCommand("rebuild", "hammer", Binding.unit_command_rebuild, u -> new BuilderAI()); + assistCommand = new UnitCommand("assist", "players", Binding.unit_command_assist, u -> { + var ai = new BuilderAI(); + ai.onlyAssist = true; + return ai; + }); + mineCommand = new UnitCommand("mine", "production", Binding.unit_command_mine, u -> new MinerAI()); + boostCommand = new UnitCommand("boost", "up", Binding.unit_command_boost, u -> new BoostAI()){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + }}; + enterPayloadCommand = new UnitCommand("enterPayload", "downOpen", Binding.unit_command_enter_payload, null){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + }}; + loadUnitsCommand = new UnitCommand("loadUnits", "upload", Binding.unit_command_load_units, null){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + }}; + loadBlocksCommand = new UnitCommand("loadBlocks", "up", Binding.unit_command_load_blocks, null){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + exactArrival = true; + }}; + unloadPayloadCommand = new UnitCommand("unloadPayload", "download", Binding.unit_command_unload_payload, null){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + }}; + } } diff --git a/core/src/mindustry/ai/UnitGroup.java b/core/src/mindustry/ai/UnitGroup.java new file mode 100644 index 0000000000..8973c3e2fb --- /dev/null +++ b/core/src/mindustry/ai/UnitGroup.java @@ -0,0 +1,186 @@ +package mindustry.ai; + +import arc.*; +import arc.graphics.*; +import arc.math.*; +import arc.math.geom.*; +import arc.struct.*; +import arc.util.*; +import mindustry.*; +import mindustry.ai.Pathfinder.*; +import mindustry.async.*; +import mindustry.content.*; +import mindustry.core.*; +import mindustry.gen.*; + +public class UnitGroup{ + public Seq units = new Seq<>(); + public int collisionLayer; + public volatile float[] positions, originalPositions; + public volatile boolean valid; + + public void calculateFormation(Vec2 dest, int collisionLayer){ + this.collisionLayer = collisionLayer; + + float cx = 0f, cy = 0f; + for(Unit unit : units){ + cx += unit.x; + cy += unit.y; + } + cx /= units.size; + cy /= units.size; + positions = new float[units.size * 2]; + + + //all positions are relative to the center + for(int i = 0; i < units.size; i ++){ + Unit unit = units.get(i); + positions[i * 2] = unit.x - cx; + positions[i * 2 + 1] = unit.y - cy; + unit.command().groupIndex = i; + } + + //run on new thread to prevent stutter + Vars.mainExecutor.submit(() -> { + //unused space between circles that needs to be reached for compression to end + float maxSpaceUsage = 0.7f; + boolean compress = true; + + int compressionIterations = 0; + int physicsIterations = 0; + int totalIterations = 0; + int maxPhysicsIterations = Math.min(1 + (int)(Math.pow(units.size, 0.65) / 10), 6); + + //yep, new allocations, because this is a new thread. + IntQuadTree tree = new IntQuadTree(new Rect(0f, 0f, Vars.world.unitWidth(), Vars.world.unitHeight()), + (index, hitbox) -> hitbox.setCentered(positions[index * 2], positions[index * 2 + 1], units.get(index).hitSize)); + IntSeq tmpseq = new IntSeq(); + Vec2 v1 = new Vec2(); + Vec2 v2 = new Vec2(); + + //this algorithm basically squeezes all the circle colliders together, then proceeds to simulate physics to push them apart across several iterations. + //it's rather slow, but shouldn't be too much of an issue when run in a different thread + while(totalIterations++ < 40 && physicsIterations < maxPhysicsIterations){ + float spaceUsed = 0f; + + if(compress){ + compressionIterations ++; + + float maxDst = 1f, totalArea = 0f; + for(int a = 0; a < units.size; a ++){ + v1.set(positions[a * 2], positions[a * 2 + 1]).lerp(v2.set(0f, 0f), 0.3f); + positions[a * 2] = v1.x; + positions[a * 2 + 1] = v1.y; + + float rad = units.get(a).hitSize/2f; + + maxDst = Math.max(maxDst, v1.dst(0f, 0f) + rad); + totalArea += Mathf.PI * rad * rad; + } + + //total area of bounding circle + float boundingArea = Mathf.PI * maxDst * maxDst; + spaceUsed = totalArea / boundingArea; + + //ex: 60% (0.6) of the total area is used, this will not be enough to satisfy a maxSpaceUsage of 70% (0.7) + compress = spaceUsed <= maxSpaceUsage && compressionIterations < 20; + } + + //uncompress units + if(!compress || spaceUsed > 0.5f){ + physicsIterations++; + + tree.clear(); + + for(int a = 0; a < units.size; a++){ + tree.insert(a); + } + + for(int a = 0; a < units.size; a++){ + Unit unit = units.get(a); + float x = positions[a * 2], y = positions[a * 2 + 1], radius = unit.hitSize/2f; + + tmpseq.clear(); + tree.intersect(x - radius, y - radius, radius * 2f, radius * 2f, tmpseq); + for(int res = 0; res < tmpseq.size; res ++){ + int b = tmpseq.items[res]; + + //simulate collision physics + if(a != b){ + float ox = positions[b * 2], oy = positions[b * 2 + 1]; + Unit other = units.get(b); + + float rs = (radius + other.hitSize/2f) * 1.2f; + float dst = Mathf.dst(x, y, ox, oy); + + if(dst < rs){ + v2.set(x - ox, y - oy).setLength(rs - dst); + float mass1 = unit.hitSize, mass2 = other.hitSize; + float ms = mass1 + mass2; + float m1 = mass2 / ms, m2 = mass1 / ms; + float scl = 1f; + + positions[a * 2] += v2.x * m1 * scl; + positions[a * 2 + 1] += v2.y * m1 * scl; + + positions[b * 2] -= v2.x * m2 * scl; + positions[b * 2 + 1] -= v2.y * m2 * scl; + } + } + } + } + } + } + + originalPositions = positions.clone(); + + //raycast from the destination to the offset to make sure it's reachable + for(int a = 0; a < units.size; a ++){ + updateRaycast(a, dest, v1); + } + + valid = true; + + if(ControlPathfinder.showDebug){ + Core.app.post(() -> { + for(int i = 0; i < units.size; i ++){ + float x = positions[i * 2], y = positions[i * 2 + 1]; + + Fx.placeBlock.at(x + dest.x, y + dest.y, 1f, Color.green); + } + }); + } + }); + } + + public void updateRaycast(int index, Vec2 dest){ + updateRaycast(index, dest, Tmp.v1); + } + + private void updateRaycast(int index, Vec2 dest, Vec2 v1){ + if(collisionLayer != PhysicsProcess.layerFlying){ + + //coordinates in world space + float + x = originalPositions[index * 2] + dest.x, + y = originalPositions[index * 2 + 1] + dest.y; + + Unit unit = units.get(index); + + PathCost cost = unit.type.pathCost; + int res = ControlPathfinder.raycastFastAvoid(unit.team.id, cost, World.toTile(dest.x), World.toTile(dest.y), World.toTile(x), World.toTile(y)); + + //collision found, make the destination the point right before the collision + if(res != 0){ + v1.set(Point2.x(res) * Vars.tilesize - dest.x, Point2.y(res) * Vars.tilesize - dest.y); + v1.setLength(Math.max(v1.len() - Vars.tilesize - 4f, 0)); + positions[index * 2] = v1.x; + positions[index * 2 + 1] = v1.y; + } + + if(ControlPathfinder.showDebug){ + Core.app.post(() -> Fx.debugLine.at(unit.x, unit.y, 0f, Color.green, new Vec2[]{new Vec2(dest.x, dest.y), new Vec2(x, y)})); + } + } + } +} diff --git a/core/src/mindustry/ai/UnitStance.java b/core/src/mindustry/ai/UnitStance.java new file mode 100644 index 0000000000..8d4f59bb2e --- /dev/null +++ b/core/src/mindustry/ai/UnitStance.java @@ -0,0 +1,61 @@ +package mindustry.ai; + +import arc.*; +import arc.scene.style.*; +import arc.struct.*; +import arc.util.*; +import mindustry.ctype.*; +import mindustry.gen.*; +import mindustry.input.*; + +public class UnitStance extends MappableContent{ + /** @deprecated now a content type, use the methods in Vars.content instead */ + @Deprecated + public static final Seq all = new Seq<>(); + + public static UnitStance stop, shoot, holdFire, pursueTarget, patrol, ram; + + /** Name of UI icon (from Icon class). */ + public final String icon; + /** Key to press for this stance. */ + public @Nullable Binding keybind = null; + + public UnitStance(String name, String icon, Binding keybind){ + super(name); + this.icon = icon; + this.keybind = keybind; + + all.add(this); + } + + public String localized(){ + return Core.bundle.get("stance." + name); + } + + public TextureRegionDrawable getIcon(){ + return Icon.icons.get(icon, Icon.cancel); + } + + public char getEmoji() { + return (char) Iconc.codes.get(icon, Iconc.cancel); + } + + @Override + public ContentType getContentType(){ + return ContentType.unitStance; + } + + @Override + public String toString(){ + return "UnitStance:" + name; + } + + public static void loadAll(){ + stop = new UnitStance("stop", "cancel", Binding.cancel_orders); + shoot = new UnitStance("shoot", "commandAttack", Binding.unit_stance_shoot); + holdFire = new UnitStance("holdfire", "none", Binding.unit_stance_hold_fire); + pursueTarget = new UnitStance("pursuetarget", "right", Binding.unit_stance_pursue_target); + patrol = new UnitStance("patrol", "refresh", Binding.unit_stance_patrol); + ram = new UnitStance("ram", "rightOpen", Binding.unit_stance_ram); + } +} diff --git a/core/src/mindustry/ai/WaveSpawner.java b/core/src/mindustry/ai/WaveSpawner.java index 1fd4b73521..e23dbbff5e 100644 --- a/core/src/mindustry/ai/WaveSpawner.java +++ b/core/src/mindustry/ai/WaveSpawner.java @@ -152,14 +152,21 @@ public class WaveSpawner{ } private void eachFlyerSpawn(int filterPos, Floatc2 cons){ + boolean airUseSpawns = state.rules.airUseSpawns; + for(Tile tile : spawns){ if(filterPos != -1 && filterPos != tile.pos()) continue; - float angle = Angles.angle(world.width() / 2f, world.height() / 2f, tile.x, tile.y); - float trns = Math.max(world.width(), world.height()) * Mathf.sqrt2 * tilesize; - float spawnX = Mathf.clamp(world.width() * tilesize / 2f + Angles.trnsx(angle, trns), -margin, world.width() * tilesize + margin); - float spawnY = Mathf.clamp(world.height() * tilesize / 2f + Angles.trnsy(angle, trns), -margin, world.height() * tilesize + margin); - cons.get(spawnX, spawnY); + if(!airUseSpawns){ + + float angle = Angles.angle(world.width() / 2f, world.height() / 2f, tile.x, tile.y); + float trns = Math.max(world.width(), world.height()) * Mathf.sqrt2 * tilesize; + float spawnX = Mathf.clamp(world.width() * tilesize / 2f + Angles.trnsx(angle, trns), -margin, world.width() * tilesize + margin); + float spawnY = Mathf.clamp(world.height() * tilesize / 2f + Angles.trnsy(angle, trns), -margin, world.height() * tilesize + margin); + cons.get(spawnX, spawnY); + }else{ + cons.get(tile.worldx(), tile.worldy()); + } } if(state.rules.attackMode && state.teams.isActive(state.rules.waveTeam)){ diff --git a/core/src/mindustry/ai/types/BuilderAI.java b/core/src/mindustry/ai/types/BuilderAI.java index 6c71f5f934..ff57627c33 100644 --- a/core/src/mindustry/ai/types/BuilderAI.java +++ b/core/src/mindustry/ai/types/BuilderAI.java @@ -12,14 +12,14 @@ import mindustry.world.blocks.ConstructBlock.*; import static mindustry.Vars.*; public class BuilderAI extends AIController{ - public static float buildRadius = 1500, retreatDst = 110f, retreatDelay = Time.toSeconds * 2f; + public static float buildRadius = 1500, retreatDst = 110f, retreatDelay = Time.toSeconds * 2f, defaultRebuildPeriod = 60f * 2f; public @Nullable Unit assistFollowing; public @Nullable Unit following; public @Nullable Teamc enemy; public @Nullable BlockPlan lastPlan; - public float fleeRange = 370f, rebuildPeriod = 60f * 2f; + public float fleeRange = 370f, rebuildPeriod = defaultRebuildPeriod; public boolean alwaysFlee; public boolean onlyAssist; @@ -34,11 +34,21 @@ public class BuilderAI extends AIController{ public BuilderAI(){ } + @Override + public void init(){ + //rebuild much faster with buildAI; there are usually few builder units so this is fine + if(rebuildPeriod == defaultRebuildPeriod && unit.team.rules().buildAi){ + rebuildPeriod = 10f; + } + } + @Override public void updateMovement(){ if(target != null && shouldShoot()){ unit.lookAt(target); + }else if(!unit.type.flying){ + unit.lookAt(unit.prefRotation()); } unit.updateBuilding = true; @@ -47,6 +57,8 @@ public class BuilderAI extends AIController{ following = assistFollowing; } + boolean moving = false; + if(following != null){ retreatTimer = 0f; //try to follow and mimic someone @@ -75,6 +87,7 @@ public class BuilderAI extends AIController{ var core = unit.closestCore(); if(core != null && !unit.within(core, retreatDst)){ moveTo(core, retreatDst); + moving = true; } } } @@ -106,7 +119,8 @@ public class BuilderAI extends AIController{ if(valid){ //move toward the plan - moveTo(req.tile(), unit.type.buildRange - 20f); + moveTo(req.tile(), unit.type.buildRange - 20f, 20f); + moving = !unit.within(req.tile(), unit.type.buildRange - 10f); }else{ //discard invalid plan unit.plans.removeFirst(); @@ -116,6 +130,7 @@ public class BuilderAI extends AIController{ if(assistFollowing != null){ moveTo(assistFollowing, assistFollowing.type.hitSize + unit.type.hitSize/2f + 60f); + moving = !unit.within(assistFollowing, assistFollowing.type.hitSize + unit.type.hitSize/2f + 65f); } //follow someone and help them build @@ -178,6 +193,10 @@ public class BuilderAI extends AIController{ } } } + + if(!unit.type.flying){ + unit.updateBoosting(moving || unit.floorOn().isDuct || unit.floorOn().damageTaken > 0f); + } } protected boolean nearEnemy(int x, int y){ diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index fc4b455c14..763916539a 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -4,32 +4,43 @@ import arc.math.*; import arc.math.geom.*; import arc.struct.*; import arc.util.*; -import mindustry.*; import mindustry.ai.*; import mindustry.core.*; import mindustry.entities.*; import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.world.*; +import mindustry.world.blocks.payloads.*; +import mindustry.world.meta.*; + +import static mindustry.Vars.*; public class CommandAI extends AIController{ - protected static final float localInterval = 40f; - protected static final Vec2 vecOut = new Vec2(), flockVec = new Vec2(), separation = new Vec2(), cohesion = new Vec2(), massCenter = new Vec2(); + protected static final int maxCommandQueueSize = 50, avoidInterval = 10; + protected static final Vec2 vecOut = new Vec2(), vecMovePos = new Vec2(); protected static final boolean[] noFound = {false}; + protected static final UnitPayload tmpPayload = new UnitPayload(null); + public Seq commandQueue = new Seq<>(5); public @Nullable Vec2 targetPos; public @Nullable Teamc attackTarget; + /** Group of units that were all commanded to reach the same point.. */ + public @Nullable UnitGroup group; + public int groupIndex = 0; /** All encountered unreachable buildings of this AI. Why a sequence? Because contains() is very rarely called on it. */ public IntSeq unreachableBuildings = new IntSeq(8); + /** ID of unit read as target. This is set up after reading. Do not access! */ + public int readAttackTarget = -1; protected boolean stopAtTarget, stopWhenInRange; protected Vec2 lastTargetPos; - protected int pathId = -1; - protected Seq local = new Seq<>(false); - protected boolean flocked; + protected boolean blockingUnit; + protected float timeSpentBlocked; + /** Stance, usually related to firing mode. */ + public UnitStance stance = UnitStance.shoot; /** Current command this unit is following. */ - public @Nullable UnitCommand command; + public UnitCommand command = UnitCommand.moveCommand; /** Current controller instance based on command. */ protected @Nullable AIController commandController; /** Last command type assigned. Used for detecting command changes. */ @@ -60,6 +71,18 @@ public class CommandAI extends AIController{ @Override public void updateUnit(){ + //this should not be possible + if(stance == UnitStance.stop) stance = UnitStance.shoot; + + //pursue the target if relevant + if(stance == UnitStance.pursueTarget && target != null && attackTarget == null && targetPos == null){ + commandTarget(target, false); + } + + //remove invalid targets + if(commandQueue.any()){ + commandQueue.removeAll(e -> e instanceof Healthc h && !h.isValid()); + } //assign defaults if(command == null && unit.type.commands.length > 0){ @@ -84,8 +107,54 @@ public class CommandAI extends AIController{ } } + public void clearCommands(){ + commandQueue.clear(); + targetPos = null; + attackTarget = null; + } + public void defaultBehavior(){ + if(!net.client() && unit instanceof Payloadc pay){ + //auto-drop everything + if(command == UnitCommand.unloadPayloadCommand && pay.hasPayload()){ + Call.payloadDropped(unit, unit.x, unit.y); + } + + //try to pick up what's under it + if(command == UnitCommand.loadUnitsCommand){ + Unit target = Units.closest(unit.team, unit.x, unit.y, unit.type.hitSize * 2f, u -> u.isAI() && u != unit && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize)); + if(target != null){ + Call.pickedUnitPayload(unit, target); + } + } + + //try to pick up a block + if(command == UnitCommand.loadBlocksCommand && (targetPos == null || unit.within(targetPos, 1f))){ + Building build = world.buildWorld(unit.x, unit.y); + + if(build != null && state.teams.canInteract(unit.team, build.team)){ + //pick up block's payload + Payload current = build.getPayload(); + if(current != null && pay.canPickupPayload(current)){ + Call.pickedBuildPayload(unit, build, false); + //pick up whole building directly + }else if(build.block.buildVisibility != BuildVisibility.hidden && build.canPickup() && pay.canPickup(build)){ + Call.pickedBuildPayload(unit, build, true); + } + } + } + } + + if(!net.client() && command == UnitCommand.enterPayloadCommand && unit.buildOn() != null && (targetPos == null || (world.buildWorld(targetPos.x, targetPos.y) != null && world.buildWorld(targetPos.x, targetPos.y) == unit.buildOn()))){ + var build = unit.buildOn(); + tmpPayload.unit = unit; + if(build.team == unit.team && build.acceptPayload(build, tmpPayload)){ + Call.unitEnteredPayload(unit, build); + return; //no use updating after this, the unit is gone! + } + } + //acquiring naval targets isn't supported yet, so use the fallback dumb AI if(unit.team.isAI() && unit.team.rules().rtsAi && unit.type.naval){ if(fallback == null) fallback = new GroundAI(); @@ -114,22 +183,9 @@ public class CommandAI extends AIController{ targetPos = null; } - if(targetPos != null){ - if(timer.get(timerTarget3, localInterval) || !flocked){ - if(!flocked){ - //make sure updates are staggered randomly - timer.reset(timerTarget3, Mathf.random(localInterval)); - } - - local.clear(); - //TODO experiment with 2/3/4 - float size = unit.hitSize * 3f; - unit.team.data().tree().intersect(unit.x - size / 2f, unit.y - size/2f, size, size, local); - local.remove(unit); - flocked = true; - } - }else{ - flocked = false; + //move on to the next target + if(attackTarget == null && targetPos == null){ + finishPath(); } if(attackTarget != null){ @@ -139,7 +195,7 @@ public class CommandAI extends AIController{ } targetPos.set(attackTarget); - if(unit.isGrounded() && attackTarget instanceof Building build && build.tile.solid() && unit.pathType() != Pathfinder.costLegs){ + if(unit.isGrounded() && attackTarget instanceof Building build && build.tile.solid() && unit.pathType() != Pathfinder.costLegs && stance != UnitStance.ram){ Tile best = build.findClosestEdge(unit, Tile::solid); if(best != null){ targetPos.set(best); @@ -147,36 +203,93 @@ public class CommandAI extends AIController{ } } - if(targetPos != null){ - boolean move = true; - vecOut.set(targetPos); + boolean alwaysArrive = false; - if(unit.isGrounded()){ - move = Vars.controlPath.getPathPosition(unit, pathId, targetPos, vecOut, noFound); + float engageRange = unit.type.range - 10f; + boolean withinAttackRange = attackTarget != null && unit.within(attackTarget, engageRange) && stance != UnitStance.ram; + + if(targetPos != null){ + boolean move = true, isFinalPoint = commandQueue.size == 0; + vecOut.set(targetPos); + vecMovePos.set(targetPos); + + //the enter payload command requires an exact position + if(group != null && group.valid && groupIndex < group.units.size && command != UnitCommand.enterPayloadCommand){ + vecMovePos.add(group.positions[groupIndex * 2], group.positions[groupIndex * 2 + 1]); + } + + //TODO: should the unit stop when it finds a target? + if(stance == UnitStance.patrol && target != null && unit.within(target, unit.type.range - 2f) && !unit.type.circleTarget){ + move = false; + } + + if(unit.isGrounded() && stance != UnitStance.ram){ + //TODO: blocking enable or disable? + if(timer.get(timerTarget3, avoidInterval)){ + Vec2 dstPos = Tmp.v1.trns(unit.rotation, unit.hitSize/2f); + float max = unit.hitSize/2f; + float radius = Math.max(7f, max); + float margin = 4f; + blockingUnit = Units.nearbyCheck(unit.x + dstPos.x - radius/2f, unit.y + dstPos.y - radius/2f, radius, radius, + u -> u != unit && u.within(unit, u.hitSize/2f + unit.hitSize/2f + margin) && u.controller() instanceof CommandAI ai && ai.targetPos != null && + //stop for other unit only if it's closer to the target + (ai.targetPos.equals(targetPos) && u.dst2(targetPos) < unit.dst2(targetPos)) && + //don't stop if they're facing the same way + !Angles.within(unit.rotation, u.rotation, 15f) && + //must be near an obstacle, stopping in open ground is pointless + ControlPathfinder.isNearObstacle(unit, unit.tileX(), unit.tileY(), u.tileX(), u.tileY())); + } + + float maxBlockTime = 60f * 5f; + + if(blockingUnit){ + timeSpentBlocked += Time.delta; + + if(timeSpentBlocked >= maxBlockTime*2f){ + timeSpentBlocked = 0f; + } + }else{ + timeSpentBlocked = 0f; + } + + //if the unit is next to the target, stop asking the pathfinder how to get there, it's a waste of CPU + //TODO maybe stop moving too? + if(withinAttackRange){ + move = true; + noFound[0] = false; + vecOut.set(vecMovePos); + }else{ + move = controlPath.getPathPosition(unit, vecMovePos, targetPos, vecOut, noFound) && (!blockingUnit || timeSpentBlocked > maxBlockTime); + } + + //rare case where unit must be perfectly aligned (happens with 1-tile gaps) + alwaysArrive = vecOut.epsilonEquals(unit.tileX() * tilesize, unit.tileY() * tilesize); + //we've reached the final point if the returned coordinate is equal to the supplied input + isFinalPoint &= vecMovePos.epsilonEquals(vecOut, 4.1f); //if the path is invalid, stop trying and record the end as unreachable - if(unit.team.isAI() && (noFound[0] || unit.isPathImpassable(World.toTile(targetPos.x), World.toTile(targetPos.y)) )){ + if(unit.team.isAI() && (noFound[0] || unit.isPathImpassable(World.toTile(vecMovePos.x), World.toTile(vecMovePos.y)))){ if(attackTarget instanceof Building build){ unreachableBuildings.addUnique(build.pos()); } attackTarget = null; - targetPos = null; + finishPath(); return; } + }else{ + vecOut.set(vecMovePos); } - float engageRange = unit.type.range - 10f; - if(move){ if(unit.type.circleTarget && attackTarget != null){ target = attackTarget; circleAttack(80f); }else{ moveTo(vecOut, - attackTarget != null && unit.within(attackTarget, engageRange) ? engageRange : + withinAttackRange ? engageRange : unit.isGrounded() ? 0f : - attackTarget != null ? engageRange : - 0f, unit.isFlying() ? 40f : 100f, false, null, targetPos.epsilonEquals(vecOut, 4.1f)); + attackTarget != null && stance != UnitStance.ram ? engageRange : 0f, + unit.isFlying() ? 40f : 100f, false, null, isFinalPoint || alwaysArrive); } } @@ -185,33 +298,19 @@ public class CommandAI extends AIController{ attackTarget = null; } - if(unit.isFlying()){ - unit.lookAt(targetPos); + if(unit.isFlying() && move && (attackTarget == null || !unit.within(attackTarget, unit.type.range))){ + unit.lookAt(vecMovePos); }else{ faceTarget(); } - if(attackTarget == null){ - if(unit.within(targetPos, Math.max(5f, unit.hitSize / 2f))){ - targetPos = null; - }else if(local.size > 1){ - int count = 0; - for(var near : local){ - //has arrived - no current command, but last one is equal - if(near.isCommandable() && !near.command().hasCommand() && targetPos.epsilonEquals(near.command().lastTargetPos, 0.001f)){ - count ++; - } - } - - //others have arrived at destination, so this one will too - if(count >= Math.max(3, local.size / 2)){ - targetPos = null; - } - } + //reached destination, end pathfinding + if(attackTarget == null && unit.within(vecMovePos, command.exactArrival && commandQueue.size == 0 ? 1f : Math.max(5f, unit.hitSize / 2f))){ + finishPath(); } - if(stopWhenInRange && targetPos != null && unit.within(targetPos, engageRange * 0.9f)){ - targetPos = null; + if(stopWhenInRange && targetPos != null && unit.within(vecMovePos, engageRange * 0.9f)){ + finishPath(); stopWhenInRange = false; } @@ -220,6 +319,63 @@ public class CommandAI extends AIController{ } } + void finishPath(){ + //the enter payload command never finishes until they are actually accepted + if(command == UnitCommand.enterPayloadCommand && commandQueue.size == 0 && targetPos != null && world.buildWorld(targetPos.x, targetPos.y) != null && world.buildWorld(targetPos.x, targetPos.y).block.acceptsPayloads){ + return; + } + + Vec2 prev = targetPos; + targetPos = null; + + if(commandQueue.size > 0){ + var next = commandQueue.remove(0); + if(next instanceof Teamc target){ + commandTarget(target, this.stopAtTarget); + }else if(next instanceof Vec2 position){ + commandPosition(position); + } + + if(prev != null && stance == UnitStance.patrol){ + commandQueue.add(prev.cpy()); + } + + //make sure spot in formation is reachable + if(group != null){ + group.updateRaycast(groupIndex, next instanceof Vec2 position ? position : Tmp.v3.set(next)); + } + }else{ + if(group != null){ + group = null; + } + } + } + + public void commandQueue(Position location){ + if(targetPos == null && attackTarget == null){ + if(location instanceof Teamc target){ + commandTarget(target, this.stopAtTarget); + }else if(location instanceof Vec2 position){ + commandPosition(position); + } + }else if(commandQueue.size < maxCommandQueueSize && !commandQueue.contains(location)){ + commandQueue.add(location); + } + } + + @Override + public void afterRead(Unit unit){ + if(readAttackTarget != -1){ + attackTarget = Groups.unit.getByID(readAttackTarget); + readAttackTarget = -1; + } + } + + @Override + public boolean shouldFire(){ + return stance != UnitStance.holdFire; + } + @Override public void hit(Bullet bullet){ if(unit.team.isAI() && bullet.owner instanceof Teamc teamc && teamc.team() != unit.team && attackTarget == null && @@ -259,6 +415,8 @@ public class CommandAI extends AIController{ @Override public void commandPosition(Vec2 pos){ + if(pos == null) return; + commandPosition(pos, false); if(commandController != null){ commandController.commandPosition(pos); @@ -266,10 +424,11 @@ public class CommandAI extends AIController{ } public void commandPosition(Vec2 pos, boolean stopWhenInRange){ - targetPos = pos; - lastTargetPos = pos; + if(pos == null) return; + + //this is an allocation, but it's relatively rarely called anyway, and outside mutations must be prevented + targetPos = lastTargetPos = pos.cpy(); attackTarget = null; - pathId = Vars.controlPath.nextTargetId(); this.stopWhenInRange = stopWhenInRange; } @@ -284,7 +443,6 @@ public class CommandAI extends AIController{ public void commandTarget(Teamc moveTo, boolean stopAtTarget){ attackTarget = moveTo; this.stopAtTarget = stopAtTarget; - pathId = Vars.controlPath.nextTargetId(); } /* diff --git a/core/src/mindustry/ai/types/FlyingFollowAI.java b/core/src/mindustry/ai/types/FlyingFollowAI.java index 111c9f632c..f870f136f3 100644 --- a/core/src/mindustry/ai/types/FlyingFollowAI.java +++ b/core/src/mindustry/ai/types/FlyingFollowAI.java @@ -39,7 +39,7 @@ public class FlyingFollowAI extends FlyingAI{ @Override public void updateVisuals(){ if(unit.isFlying()){ - unit.wobble(); + if(unit.type.wobble) unit.wobble(); if(!shouldFaceTarget()){ unit.lookAt(unit.prefRotation()); diff --git a/core/src/mindustry/ai/types/LogicAI.java b/core/src/mindustry/ai/types/LogicAI.java index 5987dc2bc7..f6be1965b3 100644 --- a/core/src/mindustry/ai/types/LogicAI.java +++ b/core/src/mindustry/ai/types/LogicAI.java @@ -3,10 +3,13 @@ package mindustry.ai.types; import arc.math.*; import arc.struct.*; import arc.util.*; -import mindustry.*; +import mindustry.ai.*; import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.logic.*; +import mindustry.world.*; + +import static mindustry.Vars.*; public class LogicAI extends AIController{ /** Minimum delay between item transfers. */ @@ -37,19 +40,15 @@ public class LogicAI extends AIController{ public PosTeam posTarget = PosTeam.create(); private ObjectSet radars = new ObjectSet<>(); - private float lastMoveX, lastMoveY; - private int lastPathId = 0; + + // LogicAI state should not be reset after reading. + @Override + public boolean keepState(){ + return true; + } @Override public void updateMovement(){ - if(control == LUnitControl.pathfind){ - if(!Mathf.equal(moveX, lastMoveX, 0.1f) || !Mathf.equal(moveY, lastMoveY, 0.1f)){ - lastPathId ++; - lastMoveX = moveX; - lastMoveY = moveY; - } - } - if(targetTimer > 0f){ targetTimer -= Time.delta; }else{ @@ -76,11 +75,35 @@ public class LogicAI extends AIController{ if(unit.isFlying()){ moveTo(Tmp.v1.set(moveX, moveY), 1f, 30f); }else{ - if(Vars.controlPath.getPathPosition(unit, lastPathId, Tmp.v2.set(moveX, moveY), Tmp.v1, null)){ + if(controlPath.getPathPosition(unit, Tmp.v2.set(moveX, moveY), Tmp.v2, Tmp.v1, null)){ moveTo(Tmp.v1, 1f, Tmp.v2.epsilonEquals(Tmp.v1, 4.1f) ? 30f : 0f); } } } + case autoPathfind -> { + Building core = unit.closestEnemyCore(); + + if((core == null || !unit.within(core, unit.range() * 0.5f))){ + boolean move = true; + Tile spawner = null; + + if(state.rules.waves && unit.team == state.rules.defaultTeam){ + spawner = getClosestSpawner(); + if(spawner != null && unit.within(spawner, state.rules.dropZoneRadius + 120f)) move = false; + } + + if(move){ + if(unit.isFlying()){ + var target = core == null ? spawner : core; + if(target != null){ + moveTo(target, unit.range() * 0.5f); + } + }else{ + pathfind(Pathfinder.fieldCore); + } + } + } + } case stop -> { unit.clearBuilding(); } diff --git a/core/src/mindustry/ai/types/MinerAI.java b/core/src/mindustry/ai/types/MinerAI.java index 0c71d98cdc..eb4307021b 100644 --- a/core/src/mindustry/ai/types/MinerAI.java +++ b/core/src/mindustry/ai/types/MinerAI.java @@ -19,7 +19,7 @@ public class MinerAI extends AIController{ if(!(unit.canMine()) || core == null) return; - if(unit.mineTile != null && !unit.mineTile.within(unit, unit.type.mineRange)){ + if(!unit.validMine(unit.mineTile)){ unit.mineTile(null); } diff --git a/core/src/mindustry/ai/types/MissileAI.java b/core/src/mindustry/ai/types/MissileAI.java index b5d8271975..4dafbd6156 100644 --- a/core/src/mindustry/ai/types/MissileAI.java +++ b/core/src/mindustry/ai/types/MissileAI.java @@ -2,6 +2,8 @@ package mindustry.ai.types; import arc.math.*; import arc.util.*; +import mindustry.*; +import mindustry.entities.*; import mindustry.entities.units.*; import mindustry.gen.*; @@ -14,7 +16,7 @@ public class MissileAI extends AIController{ float time = unit instanceof TimedKillc t ? t.time() : 1000000f; - if(time >= unit.type.homingDelay && shooter != null){ + if(time >= unit.type.homingDelay && shooter != null && !shooter.dead()){ unit.lookAt(shooter.aimX, shooter.aimY); } @@ -29,6 +31,11 @@ public class MissileAI extends AIController{ } } + @Override + public Teamc target(float x, float y, float range, boolean air, boolean ground){ + return Units.closestTarget(unit.team, x, y, range, u -> u.checkTarget(air, ground), t -> ground && (!t.block.underBullets || (shooter != null && t == Vars.world.buildWorld(shooter.aimX, shooter.aimY)))); + } + @Override public boolean retarget(){ //more frequent retarget due to high speed. TODO won't this lag? diff --git a/core/src/mindustry/async/PhysicsProcess.java b/core/src/mindustry/async/PhysicsProcess.java index f9d0ab9405..183d126217 100644 --- a/core/src/mindustry/async/PhysicsProcess.java +++ b/core/src/mindustry/async/PhysicsProcess.java @@ -10,11 +10,11 @@ import mindustry.entities.*; import mindustry.gen.*; public class PhysicsProcess implements AsyncProcess{ - private static final int - layers = 3, - layerGround = 0, - layerLegs = 1, - layerFlying = 2; + public static final int + layers = 3, + layerGround = 0, + layerLegs = 1, + layerFlying = 2; private PhysicsWorld physics; private Seq refs = new Seq<>(false); @@ -58,9 +58,7 @@ public class PhysicsProcess implements AsyncProcess{ //save last position PhysicRef ref = entity.physref; - ref.body.layer = - entity.type.allowLegStep && entity.type.legPhysicsLayer ? layerLegs : - entity.isGrounded() ? layerGround : layerFlying; + ref.body.layer = entity.collisionLayer(); ref.x = entity.x; ref.y = entity.y; ref.body.local = local || entity.isLocal(); diff --git a/core/src/mindustry/audio/SoundControl.java b/core/src/mindustry/audio/SoundControl.java index 93f8fda115..b003ebec94 100644 --- a/core/src/mindustry/audio/SoundControl.java +++ b/core/src/mindustry/audio/SoundControl.java @@ -17,7 +17,7 @@ import static mindustry.Vars.*; /** Controls playback of multiple audio tracks.*/ public class SoundControl{ - public float finTime = 120f, foutTime = 120f, musicInterval = 3f * Time.toMinutes, musicChance = 0.6f, musicWaveChance = 0.46f; + public float finTime = 120f, foutTime = 120f, musicInterval = 3f * Time.toMinutes, musicChance = 0.8f, musicWaveChance = 0.46f; /** normal, ambient music, plays at any time */ public Seq ambientMusic = Seq.with(); @@ -28,6 +28,7 @@ public class SoundControl{ protected Music lastRandomPlayed; protected Interval timer = new Interval(4); + protected long lastPlayed; protected @Nullable Music current; protected float fade; protected boolean silenced; @@ -55,6 +56,10 @@ public class SoundControl{ })); setupFilters(); + + Events.on(ResetEvent.class, e -> { + lastPlayed = Time.millis(); + }); } protected void setupFilters(){ @@ -146,7 +151,7 @@ public class SoundControl{ if(state.isMenu()){ silenced = false; if(ui.planet.isShown()){ - play(Musics.launch); + play(ui.planet.state.planet.launchMusic); }else if(ui.editor.isShown()){ play(Musics.editor); }else{ @@ -160,9 +165,10 @@ public class SoundControl{ silence(); //play music at intervals - if(timer.get(musicInterval)){ + if(Time.timeSinceMillis(lastPlayed) > 1000 * musicInterval / 60f){ //chance to play it per interval if(Mathf.chance(musicChance)){ + lastPlayed = Time.millis(); playRandom(); } } @@ -207,7 +213,9 @@ public class SoundControl{ /** Plays a random track.*/ public void playRandom(){ - if(isDark()){ + if(state.boss() != null){ + playOnce(bossMusic.random(lastRandomPlayed)); + }else if(isDark()){ playOnce(darkMusic.random(lastRandomPlayed)); }else{ playOnce(ambientMusic.random(lastRandomPlayed)); diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 1e3de17595..969090e462 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -160,7 +160,7 @@ public class Blocks{ //logic message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank, canvas, reinforcedMessage, - worldProcessor, worldCell, worldMessage, + worldProcessor, worldCell, worldMessage, worldSwitch, //campaign launchPad, interplanetaryAccelerator @@ -570,7 +570,7 @@ public class Blocks{ snowWall = new StaticWall("snow-wall"); duneWall = new StaticWall("dune-wall"){{ - basalt.asFloor().wall = darksandWater.asFloor().wall = darksandTaintedWater.asFloor().wall = this; + hotrock.asFloor().wall = magmarock.asFloor().wall = basalt.asFloor().wall = darksandWater.asFloor().wall = darksandTaintedWater.asFloor().wall = this; attributes.set(Attribute.sand, 2f); }}; @@ -1181,6 +1181,7 @@ public class Blocks{ rotate = true; invertFlip = true; group = BlockGroup.liquids; + itemCapacity = 0; liquidCapacity = 50f; @@ -1231,6 +1232,7 @@ public class Blocks{ }}); researchCostMultiplier = 1.1f; + itemCapacity = 0; liquidCapacity = 40f; consumePower(2f); ambientSound = Sounds.extractLoop; @@ -1315,6 +1317,7 @@ public class Blocks{ researchCostMultiplier = 10f; + group = BlockGroup.heat; size = 3; drawer = new DrawMulti(new DrawDefault(), new DrawHeatOutput(), new DrawHeatInput("-heat")); regionRotated1 = 1; @@ -1325,6 +1328,7 @@ public class Blocks{ researchCostMultiplier = 10f; + group = BlockGroup.heat; size = 3; drawer = new DrawMulti(new DrawDefault(), new DrawHeatOutput(-1, false), new DrawHeatOutput(), new DrawHeatOutput(1, false), new DrawHeatInput("-heat")); regionRotated1 = 1; @@ -2406,7 +2410,7 @@ public class Blocks{ largeSolarPanel = new SolarGenerator("solar-panel-large"){{ requirements(Category.power, with(Items.lead, 80, Items.silicon, 110, Items.phaseFabric, 15)); size = 3; - powerProduction = 1.3f; + powerProduction = 1.6f; }}; thoriumReactor = new NuclearReactor("thorium-reactor"){{ @@ -2431,6 +2435,7 @@ public class Blocks{ itemDuration = 140f; ambientSound = Sounds.pulse; ambientSoundVolume = 0.07f; + liquidCapacity = 60f; consumePower(25f); consumeItem(Items.blastCompound); @@ -2456,6 +2461,7 @@ public class Blocks{ consumesPower = outputsPower = true; range = 23; scaledHealth = 90; + fogRadius = 2; consumePowerBuffered(40000f); }}; @@ -2778,6 +2784,7 @@ public class Blocks{ ambientSoundVolume = 0.06f; hasLiquids = true; boostScale = 1f / 9f; + itemCapacity = 0; outputLiquid = new LiquidStack(Liquids.water, 30f / 60f); consumePower(0.5f); liquidCapacity = 60f; @@ -2934,6 +2941,7 @@ public class Blocks{ armor = 5f; alwaysUnlocked = true; incinerateNonBuildable = true; + requiresCoreZone = true; //TODO should this be higher? buildCostMultiplier = 0.7f; @@ -2953,6 +2961,7 @@ public class Blocks{ armor = 10f; incinerateNonBuildable = true; buildCostMultiplier = 0.7f; + requiresCoreZone = true; unitCapModifier = 15; researchCostMultipliers.put(Items.silicon, 0.5f); @@ -2970,6 +2979,7 @@ public class Blocks{ armor = 15f; incinerateNonBuildable = true; buildCostMultiplier = 0.7f; + requiresCoreZone = true; unitCapModifier = 15; researchCostMultipliers.put(Items.silicon, 0.4f); @@ -3123,8 +3133,8 @@ public class Blocks{ drawer = new DrawTurret(){{ parts.add(new RegionPart("-mid"){{ progress = PartProgress.recoil; - under = true; - moveY = -1f; + under = false; + moveY = -1.25f; }}); }}; @@ -3184,6 +3194,7 @@ public class Blocks{ reload = 6f; coolantMultiplier = 1.5f; range = 60f; + shootY = 3; shootCone = 50f; targetAir = false; ammoUseEffect = Fx.none; @@ -3413,15 +3424,18 @@ public class Blocks{ lightningLength = 10; }} ); - - shoot = new ShootAlternate(){{ + + shoot = new ShootBarrel(){{ + barrels = new float[]{ + -4, -1.25f, 0, + 0, 0, 0, + 4, -1.25f, 0 + }; shots = 4; - barrels = 3; - spread = 3.5f; shotDelay = 5f; }}; - shootY = 7f; + shootY = 4.5f; reload = 30f; inaccuracy = 10f; range = 240f; @@ -3486,11 +3500,16 @@ public class Blocks{ ); drawer = new DrawTurret(){{ - parts.add(new RegionPart("-barrel"){{ - progress = PartProgress.recoil.delay(0.5f); //Since recoil is 1-0, cut from the start instead of the end. - under = true; - turretHeatLayer = Layer.turret - 0.0001f; - moveY = -1.5f; + parts.add(new RegionPart("-side"){{ + progress = PartProgress.warmup; + moveX = 0.6f; + moveRot = -15f; + mirror = true; + layerOffset = 0.001f; + moves.add(new PartMove(PartProgress.recoil, 0.5f, -0.5f, -8f)); + }}, new RegionPart("-barrel"){{ + progress = PartProgress.recoil; + moveY = -2.5f; }}); }}; @@ -3499,7 +3518,7 @@ public class Blocks{ reload = 31f; consumeAmmoOnce = false; ammoEjectBack = 3f; - recoil = 2f; + recoil = 0f; shake = 1f; shoot.shots = 4; shoot.shotDelay = 3f; @@ -3834,16 +3853,19 @@ public class Blocks{ requirements(Category.turret, with(Items.copper, 1000, Items.metaglass, 600, Items.surgeAlloy, 300, Items.plastanium, 200, Items.silicon, 600)); ammo( - Items.surgeAlloy, new PointBulletType(){{ + Items.surgeAlloy, new RailBulletType(){{ shootEffect = Fx.instShoot; hitEffect = Fx.instHit; + pierceEffect = Fx.railHit; smokeEffect = Fx.smokeCloud; - trailEffect = Fx.instTrail; + pointEffect = Fx.instTrail; despawnEffect = Fx.instBomb; - trailSpacing = 20f; + pointEffectSpace = 20f; damage = 1350; buildingDamageMultiplier = 0.2f; - speed = brange; + maxDamageFraction = 0.6f; + pierceDamageFactor = 1f; + length = brange; hitShake = 6f; ammoMultiplier = 1f; }} @@ -3950,6 +3972,7 @@ public class Blocks{ hitColor = Pal.meltdownHit; status = StatusEffects.melting; drawSize = 420f; + timescaleDamage = true; incendChance = 0.4f; incendSpread = 5f; @@ -4026,7 +4049,7 @@ public class Blocks{ researchCostMultiplier = 0.05f; coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f)); - limitRange(); + limitRange(12f); }}; diffuse = new ItemTurret("diffuse"){{ @@ -4085,7 +4108,7 @@ public class Blocks{ rotateSpeed = 3f; coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f)); - limitRange(); + limitRange(25f); }}; sublimate = new ContinuousLiquidTurret("sublimate"){{ @@ -4129,6 +4152,7 @@ public class Blocks{ liquidConsumed = 10f / 60f; targetInterval = 5f; + newTargetInterval = 30f; targetUnderBlocks = false; float r = range = 130f; @@ -4219,6 +4243,8 @@ public class Blocks{ shootY = 7f; rotateSpeed = 1.4f; minWarmup = 0.85f; + + newTargetInterval = 40f; shootWarmupSpeed = 0.07f; coolant = consume(new ConsumeLiquid(Liquids.water, 30f / 60f)); @@ -4335,7 +4361,7 @@ public class Blocks{ coolant = consume(new ConsumeLiquid(Liquids.water, 20f / 60f)); coolantMultiplier = 2.5f; - limitRange(-5f); + limitRange(5f); }}; afflict = new PowerTurret("afflict"){{ @@ -4439,6 +4465,8 @@ public class Blocks{ heatRequirement = 10f; maxHeatEfficiency = 2f; + newTargetInterval = 40f; + inaccuracy = 1f; shake = 2f; shootY = 4; @@ -4522,7 +4550,7 @@ public class Blocks{ }}; scathe = new ItemTurret("scathe"){{ - requirements(Category.turret, with(Items.silicon, 450, Items.graphite, 400, Items.tungsten, 500, Items.carbide, 300)); + requirements(Category.turret, with(Items.silicon, 450, Items.graphite, 400, Items.tungsten, 500, Items.oxide, 100, Items.carbide, 200)); ammo( Items.carbide, new BasicBulletType(0f, 1){{ @@ -4547,6 +4575,7 @@ public class Blocks{ loopSoundVolume = 0.6f; deathSound = Sounds.largeExplosion; targetAir = false; + targetUnderBlocks = false; fogRadius = 6f; @@ -4559,7 +4588,7 @@ public class Blocks{ deathExplosionEffect = Fx.massiveExplosion; shootOnDeath = true; shake = 10f; - bullet = new ExplosionBulletType(640f, 65f){{ + bullet = new ExplosionBulletType(1500f, 65f){{ hitColor = Pal.redLight; shootEffect = new MultiEffect(Fx.massiveExplosion, Fx.scatheExplosion, Fx.scatheLight, new WaveEffect(){{ lifetime = 10f; @@ -4568,7 +4597,7 @@ public class Blocks{ }}); collidesAir = false; - buildingDamageMultiplier = 0.3f; + buildingDamageMultiplier = 0.25f; ammoMultiplier = 1f; fragLifeMin = 0.1f; @@ -4583,7 +4612,7 @@ public class Blocks{ width = height = 18f; collidesTiles = false; splashDamageRadius = 40f; - splashDamage = 80f; + splashDamage = 160f; backColor = trailColor = hitColor = Pal.redLight; frontColor = Color.white; smokeEffect = Fx.shootBigSmoke2; @@ -4655,17 +4684,19 @@ public class Blocks{ recoil = 0.5f; - fogRadiusMultiuplier = 0.4f; + fogRadiusMultiplier = 0.4f; coolantMultiplier = 6f; shootSound = Sounds.missileLaunch; minWarmup = 0.94f; + newTargetInterval = 40f; + unitSort = UnitSorts.strongest; shootWarmupSpeed = 0.03f; targetAir = false; targetUnderBlocks = false; shake = 6f; - ammoPerShot = 20; + ammoPerShot = 15; maxAmmo = 30; shootY = -1; outlineColor = Pal.darkOutline; @@ -5481,23 +5512,6 @@ public class Blocks{ ); }}; - mechRefabricator = new Reconstructor("mech-refabricator"){{ - requirements(Category.units, with(Items.beryllium, 250, Items.tungsten, 120, Items.silicon, 150)); - regionSuffix = "-dark"; - - size = 3; - consumePower(2.5f); - consumeLiquid(Liquids.hydrogen, 3f / 60f); - consumeItems(with(Items.silicon, 50, Items.tungsten, 40)); - - constructTime = 60f * 45f; - researchCostMultiplier = 0.75f; - - upgrades.addAll( - new UnitType[]{UnitTypes.merui, UnitTypes.cleroi} - ); - }}; - shipRefabricator = new Reconstructor("ship-refabricator"){{ requirements(Category.units, with(Items.beryllium, 200, Items.tungsten, 100, Items.silicon, 150, Items.oxide, 40)); regionSuffix = "-dark"; @@ -5516,6 +5530,23 @@ public class Blocks{ researchCost = with(Items.beryllium, 500, Items.tungsten, 200, Items.silicon, 300, Items.oxide, 80); }}; + mechRefabricator = new Reconstructor("mech-refabricator"){{ + requirements(Category.units, with(Items.beryllium, 250, Items.tungsten, 120, Items.silicon, 150)); + regionSuffix = "-dark"; + + size = 3; + consumePower(2.5f); + consumeLiquid(Liquids.hydrogen, 3f / 60f); + consumeItems(with(Items.silicon, 50, Items.tungsten, 40)); + + constructTime = 60f * 45f; + researchCostMultiplier = 0.75f; + + upgrades.addAll( + new UnitType[]{UnitTypes.merui, UnitTypes.cleroi} + ); + }}; + //yes very silly name primeRefabricator = new Reconstructor("prime-refabricator"){{ requirements(Category.units, with(Items.thorium, 250, Items.oxide, 200, Items.tungsten, 200, Items.silicon, 400)); @@ -5770,6 +5801,8 @@ public class Blocks{ heatOutput = 1000f; warmupRate = 1000f; regionRotated1 = 1; + itemCapacity = 0; + alwaysUnlocked = true; ambientSound = Sounds.none; }}; @@ -5811,7 +5844,7 @@ public class Blocks{ }}; interplanetaryAccelerator = new Accelerator("interplanetary-accelerator"){{ - requirements(Category.effect, BuildVisibility.campaignOnly, with(Items.copper, 16000, Items.silicon, 11000, Items.thorium, 13000, Items.titanium, 12000, Items.surgeAlloy, 6000, Items.phaseFabric, 5000)); + requirements(Category.effect, BuildVisibility.hidden, with(Items.copper, 16000, Items.silicon, 11000, Items.thorium, 13000, Items.titanium, 12000, Items.surgeAlloy, 6000, Items.phaseFabric, 5000)); researchCostMultiplier = 0.1f; size = 7; hasPower = true; @@ -5887,7 +5920,7 @@ public class Blocks{ }}; canvas = new CanvasBlock("canvas"){{ - requirements(Category.logic, BuildVisibility.shown, with(Items.silicon, 30, Items.beryllium, 10)); + requirements(Category.logic, BuildVisibility.shown, with(Items.silicon, 10, Items.beryllium, 10)); canvasSize = 12; padding = 7f / 4f * 2f; @@ -5909,7 +5942,7 @@ public class Blocks{ forceDark = true; privileged = true; size = 1; - maxInstructionsPerTick = 500; + maxInstructionsPerTick = 1000; range = Float.MAX_VALUE; }}; @@ -5929,6 +5962,13 @@ public class Blocks{ privileged = true; }}; + worldSwitch = new SwitchBlock("world-switch"){{ + requirements(Category.logic, BuildVisibility.editorOnly, with()); + + targetable = false; + privileged = true; + }}; + //endregion } } diff --git a/core/src/mindustry/content/Bullets.java b/core/src/mindustry/content/Bullets.java index 0a42bda43d..ea10110ae8 100644 --- a/core/src/mindustry/content/Bullets.java +++ b/core/src/mindustry/content/Bullets.java @@ -37,7 +37,9 @@ public class Bullets{ damageLightningGround = damageLightning.copy(); damageLightningGround.collidesAir = false; - fireball = new FireBulletType(1f, 4); + fireball = new FireBulletType(1f, 4){{ + hittable = false; + }}; spaceLiquid = new SpaceLiquidBulletType(){{ knockback = 0.7f; diff --git a/core/src/mindustry/content/ErekirTechTree.java b/core/src/mindustry/content/ErekirTechTree.java index 89f128ae72..6c4571a43a 100644 --- a/core/src/mindustry/content/ErekirTechTree.java +++ b/core/src/mindustry/content/ErekirTechTree.java @@ -447,11 +447,11 @@ public class ErekirTechTree{ //nodeProduce(Liquids.gallium, () -> {}); }); + }); - nodeProduce(Items.surgeAlloy, () -> { - nodeProduce(Items.phaseFabric, () -> { + nodeProduce(Items.surgeAlloy, () -> { + nodeProduce(Items.phaseFabric, () -> { - }); }); }); }); diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index 90de9a73f2..1e8579f4b7 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -29,11 +29,11 @@ public class Fx{ none = new Effect(0, 0f, e -> {}), - blockCrash = new Effect(100f, e -> { + blockCrash = new Effect(90f, e -> { if(!(e.data instanceof Block block)) return; alpha(e.fin() + 0.5f); - float offset = Mathf.lerp(0f, 200f, e.fout()); + float offset = Mathf.lerp(0f, 180f, e.fout()); color(0f, 0f, 0f, 0.44f); rect(block.fullIcon, e.x - offset * 4f, e.y, (float)block.size * 8f, (float)block.size * 8f); color(Color.white); @@ -417,6 +417,20 @@ public class Fx{ Lines.spikes(e.x, e.y, 1f + e.fin() * 6f, e.fout() * 4f, 6); }), + sparkExplosion = new Effect(30f, 160f, e -> { + color(e.color); + stroke(e.fout() * 3f); + float circleRad = 6f + e.finpow() * e.rotation; + Lines.circle(e.x, e.y, circleRad); + + rand.setSeed(e.id); + for(int i = 0; i < 16; i++){ + float angle = rand.random(360f); + float lenRand = rand.random(0.5f, 1f); + Lines.lineAngle(e.x, e.y, angle, e.foutpow() * e.rotation * 0.8f * rand.random(1f, 0.6f) + 2f, e.finpow() * e.rotation * 1.2f * lenRand + 6f); + } + }), + titanExplosion = new Effect(30f, 160f, e -> { color(e.color); stroke(e.fout() * 3f); @@ -609,6 +623,12 @@ public class Fx{ Lines.circle(e.x, e.y, 2f + e.finpow() * 7f); }), + dynamicWave = new Effect(22, e -> { + color(e.color, 0.7f); + stroke(e.fout() * 2f); + Lines.circle(e.x, e.y, 4f + e.finpow() * e.rotation); + }), + shieldWave = new Effect(22, e -> { color(e.color, 0.7f); stroke(e.fout() * 2f); @@ -1517,6 +1537,15 @@ public class Fx{ }); }), + smokePuff = new Effect(30, e -> { + color(e.color); + + randLenVectors(e.id, 6, 4f + 30f * e.finpow(), (x, y) -> { + Fill.circle(e.x + x, e.y + y, e.fout() * 3f); + Fill.circle(e.x + x / 2f, e.y + y / 2f, e.fout()); + }); + }), + shootSmall = new Effect(8, e -> { color(Pal.lighterOrange, Pal.lightOrange, e.fin()); float w = 1f + 5 * e.fout(); @@ -1681,7 +1710,7 @@ public class Fx{ }), regenSuppressParticle = new Effect(35f, e -> { - color(Pal.sapBullet, e.color, e.fin()); + color(e.color, Color.white, e.fin()); stroke(e.fout() * 1.4f + 0.5f); randLenVectors(e.id, 4, 17f * e.fin(), (x, y) -> { @@ -1700,7 +1729,7 @@ public class Fx{ Tmp.bz2.valueAt(Tmp.v4, e.fout()); - color(Pal.sapBullet); + color(e.color); Fill.circle(Tmp.v4.x, Tmp.v4.y, e.fslope() * 2f + 0.1f); }).followParent(false).rotWithParent(false), @@ -2405,17 +2434,34 @@ public class Fx{ shieldBreak = new Effect(40, e -> { color(e.color); stroke(3f * e.fout()); - if(e.data instanceof Unit u){ - var ab = (ForceFieldAbility)Structs.find(u.abilities, a -> a instanceof ForceFieldAbility); - if(ab != null){ - Lines.poly(e.x, e.y, ab.sides, e.rotation + e.fin(), ab.rotation); - return; - } + if(e.data instanceof ForceFieldAbility ab){ + Lines.poly(e.x, e.y, ab.sides, e.rotation + e.fin(), ab.rotation); + return; } Lines.poly(e.x, e.y, 6, e.rotation + e.fin()); }).followParent(true), + arcShieldBreak = new Effect(40, e -> { + Lines.stroke(3 * e.fout(), e.color); + if(e.data instanceof Unit u){ + ShieldArcAbility ab = (ShieldArcAbility) Structs.find(u.abilities, a -> a instanceof ShieldArcAbility); + if(ab != null){ + Vec2 pos = Tmp.v1.set(ab.x, ab.y).rotate(u.rotation - 90f).add(u); + Lines.arc(pos.x, pos.y, ab.radius + ab.width/2, ab.angle / 360f, u.rotation + ab.angleOffset - ab.angle / 2f); + Lines.arc(pos.x, pos.y, ab.radius - ab.width/2, ab.angle / 360f, u.rotation + ab.angleOffset - ab.angle / 2f); + for(int i : Mathf.signs){ + float + px = pos.x + Angles.trnsx(u.rotation + ab.angleOffset - ab.angle / 2f * i, ab.radius + ab.width / 2), + py = pos.y + Angles.trnsy(u.rotation + ab.angleOffset - ab.angle / 2f * i, ab.radius + ab.width / 2), + px1 = pos.x + Angles.trnsx(u.rotation + ab.angleOffset - ab.angle / 2f * i, ab.radius - ab.width / 2), + py1 = pos.y + Angles.trnsy(u.rotation + ab.angleOffset - ab.angle / 2f * i, ab.radius - ab.width / 2); + Lines.line(px, py, px1, py1); + } + } + } + }).followParent(true), + coreLandDust = new Effect(100f, e -> { color(e.color, e.fout(0.1f)); rand.setSeed(e.id); @@ -2529,5 +2575,33 @@ public class Fx{ stroke(data.region.height * scl); line(data.region, data.a.x + ox, data.a.y + oy, data.b.x + ox, data.b.y + oy, false); - }).layer(Layer.groundUnit + 5f); + }).layer(Layer.groundUnit + 5f), + + debugLine = new Effect(90f, 1000000000000f, e -> { + if(!(e.data instanceof Vec2[] vec)) return; + + Draw.color(e.color); + Lines.stroke(2f); + + if(vec.length == 2){ + Lines.line(vec[0].x, vec[0].y, vec[1].x, vec[1].y); + }else{ + Lines.beginLine(); + for(Vec2 v : vec) + Lines.linePoint(v.x, v.y); + Lines.endLine(); + } + + Draw.reset(); + }), + debugRect = new Effect(90f, 1000000000000f, e -> { + if(!(e.data instanceof Rect rect)) return; + + Draw.color(e.color); + Lines.stroke(2f); + + Lines.rect(rect); + + Draw.reset(); + }); } diff --git a/core/src/mindustry/content/Liquids.java b/core/src/mindustry/content/Liquids.java index 0f95a02685..432b4463cc 100644 --- a/core/src/mindustry/content/Liquids.java +++ b/core/src/mindustry/content/Liquids.java @@ -54,7 +54,7 @@ public class Liquids{ capPuddles = false; spreadTarget = Liquids.water; moveThroughBlocks = true; - incinerable = true; + incinerable = false; blockReactive = false; canStayOn.addAll(water, oil, cryofluid); diff --git a/core/src/mindustry/content/StatusEffects.java b/core/src/mindustry/content/StatusEffects.java index a2a2e47816..ff3dcf43df 100644 --- a/core/src/mindustry/content/StatusEffects.java +++ b/core/src/mindustry/content/StatusEffects.java @@ -11,7 +11,7 @@ import mindustry.type.*; import static mindustry.Vars.*; public class StatusEffects{ - public static StatusEffect none, burning, freezing, unmoving, slow, wet, muddy, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss, sporeSlowed, disarmed, electrified, invincible; + public static StatusEffect none, burning, freezing, unmoving, slow, fast, wet, muddy, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss, sporeSlowed, disarmed, electrified, invincible, dynamic; public static void load(){ @@ -60,6 +60,15 @@ public class StatusEffects{ slow = new StatusEffect("slow"){{ color = Pal.lightishGray; speedMultiplier = 0.4f; + + init(() -> opposite(fast)); + }}; + + fast = new StatusEffect("fast"){{ + color = Pal.boostTo; + speedMultiplier = 1.6f; + + init(() -> opposite(slow)); }}; wet = new StatusEffect("wet"){{ @@ -71,7 +80,8 @@ public class StatusEffects{ init(() -> { affinity(shocked, (unit, result, time) -> { - unit.damagePierce(transitionDamage); + unit.damage(transitionDamage); + if(unit.team == state.rules.waveTeam){ Events.fire(Trigger.shock); } @@ -193,5 +203,11 @@ public class StatusEffects{ invincible = new StatusEffect("invincible"){{ healthMultiplier = Float.POSITIVE_INFINITY; }}; + + dynamic = new StatusEffect("dynamic"){{ + show = false; + dynamic = true; + permanent = true; + }}; } } diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index 933f0e6c45..b782b8204d 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -127,6 +127,7 @@ public class TechTree{ }); content.techNode = this; + content.techNodes.add(this); all.add(this); } diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index ffd418a857..ab6b1942f2 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -197,6 +197,8 @@ public class UnitTypes{ singleTarget = true; drownTimeMultiplier = 4f; + abilities.add(new ShieldRegenFieldAbility(25f, 250f, 60f * 1, 60f)); + BulletType smallBullet = new BasicBulletType(3f, 10){{ width = 7f; height = 9f; @@ -219,10 +221,10 @@ public class UnitTypes{ shoot.shots = 3; shoot.shotDelay = 4f; - bullet = new BasicBulletType(7f, 50){{ + bullet = new BasicBulletType(8f, 80){{ width = 11f; height = 20f; - lifetime = 25f; + lifetime = 27f; shootEffect = Fx.shootBig; lightning = 2; lightningLength = 6; @@ -252,11 +254,11 @@ public class UnitTypes{ }}; reign = new UnitType("reign"){{ - speed = 0.35f; + speed = 0.4f; hitSize = 26f; rotateSpeed = 1.65f; health = 24000; - armor = 14f; + armor = 18f; mechStepParticles = true; stepShake = 0.75f; drownTimeMultiplier = 6f; @@ -320,7 +322,7 @@ public class UnitTypes{ speed = 0.55f; hitSize = 8f; health = 120f; - buildSpeed = 0.8f; + buildSpeed = 0.35f; armor = 1f; abilities.add(new RepairFieldAbility(10f, 60f * 4, 60f)); @@ -352,7 +354,7 @@ public class UnitTypes{ speed = 0.7f; hitSize = 11f; health = 320f; - buildSpeed = 0.9f; + buildSpeed = 0.5f; armor = 4f; riseSpeed = 0.07f; @@ -406,7 +408,7 @@ public class UnitTypes{ mineTier = 3; boostMultiplier = 2f; health = 640f; - buildSpeed = 1.7f; + buildSpeed = 1.1f; canBoost = true; armor = 9f; mechLandShake = 2f; @@ -1285,7 +1287,6 @@ public class UnitTypes{ lowAltitude = true; ammoType = new PowerAmmoType(900); - mineTier = 2; mineSpeed = 3.5f; @@ -1317,6 +1318,7 @@ public class UnitTypes{ healPercent = 5.5f; collidesTeam = true; + reflectable = false; backColor = Pal.heal; trailColor = Pal.heal; }}; @@ -1844,6 +1846,7 @@ public class UnitTypes{ armor = 3f; buildSpeed = 1.5f; + rotateToBuilding = false; weapons.add(new RepairBeamWeapon("repair-beam-weapon-center"){{ x = 0f; @@ -1934,6 +1937,7 @@ public class UnitTypes{ abilities.add(new StatusFieldAbility(StatusEffects.overclock, 60f * 6, 60f * 6f, 60f)); buildSpeed = 2f; + rotateToBuilding = false; weapons.add(new Weapon("plasma-mount-weapon"){{ @@ -2008,6 +2012,7 @@ public class UnitTypes{ trailScl = 2f; buildSpeed = 2f; + rotateToBuilding = false; weapons.add(new RepairBeamWeapon("repair-beam-weapon-center"){{ x = 11f; @@ -2149,17 +2154,20 @@ public class UnitTypes{ trailScl = 3.2f; buildSpeed = 3f; + rotateToBuilding = false; abilities.add(new EnergyFieldAbility(40f, 65f, 180f){{ statusDuration = 60f * 6f; maxTargets = 25; + healPercent = 1.5f; + sameTypeHealMult = 0.5f; }}); for(float mountY : new float[]{-18f, 14}){ weapons.add(new PointDefenseWeapon("point-defense-mount"){{ x = 12.5f; y = mountY; - reload = 6f; + reload = 4f; targetInterval = 8f; targetSwitchInterval = 8f; @@ -2167,7 +2175,7 @@ public class UnitTypes{ shootEffect = Fx.sparkShoot; hitEffect = Fx.pointHit; maxRange = 180f; - damage = 25f; + damage = 30f; }}; }}); } @@ -2190,6 +2198,7 @@ public class UnitTypes{ trailScl = 3.5f; buildSpeed = 3.5f; + rotateToBuilding = false; for(float mountY : new float[]{-117/4f, 50/4f}){ for(float sign : Mathf.signs){ @@ -2241,7 +2250,13 @@ public class UnitTypes{ }}); } } - + abilities.add(new SuppressionFieldAbility(){{ + orbRadius = 5; + particleSize = 3; + y = -10f; + particles = 10; + color = particleColor = effectColor = Pal.heal; + }}); weapons.add(new Weapon("emp-cannon-mount"){{ rotate = true; @@ -2343,6 +2358,7 @@ public class UnitTypes{ speed = 3f; rotateSpeed = 15f; accel = 0.1f; + fogRadius = 0f; itemCapacity = 30; health = 150f; engineOffset = 6f; @@ -2379,6 +2395,7 @@ public class UnitTypes{ speed = 3.3f; rotateSpeed = 17f; accel = 0.1f; + fogRadius = 0f; itemCapacity = 50; health = 170f; engineOffset = 6f; @@ -2420,6 +2437,7 @@ public class UnitTypes{ speed = 3.55f; rotateSpeed = 19f; accel = 0.11f; + fogRadius = 0f; itemCapacity = 70; health = 220f; engineOffset = 6f; @@ -2628,7 +2646,10 @@ public class UnitTypes{ width = 5f; height = 7f; lifetime = 15f; - hitSize = 4f; + hitSize = 4f; + pierceCap = 3; + pierce = true; + pierceBuilding = true; hitColor = backColor = trailColor = Color.valueOf("feb380"); frontColor = Color.white; trailWidth = 1.7f; @@ -3258,7 +3279,7 @@ public class UnitTypes{ drag = 0.1f; speed = 0.6f; hitSize = 23f; - health = 6700; + health = 7300; armor = 5f; lockLegBase = true; @@ -3271,13 +3292,14 @@ public class UnitTypes{ abilities.add(new ShieldArcAbility(){{ region = "tecta-shield"; - radius = 34f; + radius = 36f; angle = 82f; regen = 0.6f; cooldown = 60f * 8f; - max = 1500f; + max = 2000f; y = -20f; width = 6f; + whenShooting = false; }}); rotateSpeed = 2.1f; @@ -3319,14 +3341,14 @@ public class UnitTypes{ velocityRnd = 0.33f; heatColor = Color.red; - bullet = new MissileBulletType(4.2f, 47){{ + bullet = new MissileBulletType(4.2f, 60){{ homingPower = 0.2f; weaveMag = 4; weaveScale = 4; lifetime = 55f; shootEffect = Fx.shootBig2; smokeEffect = Fx.shootSmokeTitan; - splashDamage = 60f; + splashDamage = 70f; splashDamageRadius = 30f; frontColor = Color.white; hitSound = Sounds.none; @@ -3873,7 +3895,7 @@ public class UnitTypes{ x = 43f * i / 4f; particles = parts; //visual only, the middle one does the actual suppressing - display = active = false; + active = false; }}); } @@ -4042,6 +4064,8 @@ public class UnitTypes{ isEnemy = false; envDisabled = 0; + range = 60f; + faceTarget = true; targetPriority = -2; lowAltitude = false; mineWalls = true; @@ -4106,8 +4130,10 @@ public class UnitTypes{ isEnemy = false; envDisabled = 0; + range = 60f; targetPriority = -2; lowAltitude = false; + faceTarget = true; mineWalls = true; mineFloor = false; mineHardnessScaling = false; @@ -4183,6 +4209,8 @@ public class UnitTypes{ isEnemy = false; envDisabled = 0; + range = 65f; + faceTarget = true; targetPriority = -2; lowAltitude = false; mineWalls = true; diff --git a/core/src/mindustry/content/Weathers.java b/core/src/mindustry/content/Weathers.java index f0ee71d4ea..d69a6b4b43 100644 --- a/core/src/mindustry/content/Weathers.java +++ b/core/src/mindustry/content/Weathers.java @@ -17,7 +17,7 @@ public class Weathers{ suspendParticles; public static void load(){ - snow = new ParticleWeather("snow"){{ + snow = new ParticleWeather("snowing"){{ particleRegion = "particle"; sizeMax = 13f; sizeMin = 2.6f; diff --git a/core/src/mindustry/core/ContentLoader.java b/core/src/mindustry/core/ContentLoader.java index 0fabcc5ce8..7abaf35f29 100644 --- a/core/src/mindustry/core/ContentLoader.java +++ b/core/src/mindustry/core/ContentLoader.java @@ -6,6 +6,7 @@ import arc.func.*; import arc.graphics.*; import arc.struct.*; import arc.util.*; +import mindustry.ai.*; import mindustry.content.*; import mindustry.ctype.*; import mindustry.entities.bullet.*; @@ -40,6 +41,8 @@ public class ContentLoader{ /** Creates all base types. */ public void createBaseContent(){ + UnitCommand.loadAll(); + UnitStance.loadAll(); TeamEntries.load(); Items.load(); StatusEffects.load(); @@ -310,4 +313,36 @@ public class ContentLoader{ public Planet planet(String name){ return getByName(ContentType.planet, name); } + + public Seq weathers(){ + return getBy(ContentType.weather); + } + + public Weather weather(String name){ + return getByName(ContentType.weather, name); + } + + public Seq unitStances(){ + return getBy(ContentType.unitStance); + } + + public UnitStance unitStance(int id){ + return getByID(ContentType.unitStance, id); + } + + public UnitStance unitStance(String name){ + return getByName(ContentType.unitStance, name); + } + + public Seq unitCommands(){ + return getBy(ContentType.unitCommand); + } + + public UnitCommand unitCommand(int id){ + return getByID(ContentType.unitCommand, id); + } + + public UnitCommand unitCommand(String name){ + return getByName(ContentType.unitCommand, name); + } } diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 9d6a699bde..bc730c44c4 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -30,6 +30,7 @@ import mindustry.net.*; import mindustry.type.*; import mindustry.ui.dialogs.*; import mindustry.world.*; +import mindustry.world.blocks.storage.*; import mindustry.world.blocks.storage.CoreBlock.*; import java.io.*; @@ -53,7 +54,7 @@ public class Control implements ApplicationListener, Loadable{ private Interval timer = new Interval(2); private boolean hiscore = false; - private boolean wasPaused = false; + private boolean wasPaused = false, backgroundPaused = false; private Seq toBePlaced = new Seq<>(false); public Control(){ @@ -191,43 +192,29 @@ public class Control implements ApplicationListener, Loadable{ Events.run(Trigger.newGame, () -> { var core = player.bestCore(); - if(core == null) return; camera.position.set(core); player.set(core); float coreDelay = 0f; - if(!settings.getBool("skipcoreanimation") && !state.rules.pvp){ - coreDelay = coreLandDuration; + coreDelay = core.landDuration(); //delay player respawn so animation can play. - player.deathTimer = Player.deathDelay - coreLandDuration; + player.deathTimer = Player.deathDelay - core.landDuration(); //TODO this sounds pretty bad due to conflict if(settings.getInt("musicvol") > 0){ - Musics.land.stop(); - Musics.land.play(); - Musics.land.setVolume(settings.getInt("musicvol") / 100f); + //TODO what to do if another core with different music is already playing? + Music music = core.landMusic(); + music.stop(); + music.play(); + music.setVolume(settings.getInt("musicvol") / 100f); } - app.post(() -> ui.hudfrag.showLand()); - renderer.showLanding(); - - Time.run(coreLandDuration, () -> { - Fx.launch.at(core); - Effect.shake(5f, 5f, core); - core.thrusterTime = 1f; - - if(state.isCampaign() && Vars.showSectorLandInfo && (state.rules.sector.preset == null || state.rules.sector.preset.showSectorLandInfo)){ - ui.announce("[accent]" + state.rules.sector.name() + "\n" + - (state.rules.sector.info.resources.any() ? "[lightgray]" + bundle.get("sectors.resources") + "[white] " + - state.rules.sector.info.resources.toString(" ", u -> u.emoji()) : ""), 5); - } - }); + renderer.showLanding(core); } if(state.isCampaign()){ - //don't run when hosting, that doesn't really work. if(state.rules.sector.planet.prebuildBase){ toBePlaced.clear(); @@ -332,6 +319,13 @@ public class Control implements ApplicationListener, Loadable{ void createPlayer(){ player = Player.create(); player.name = Core.settings.getString("name"); + + String locale = Core.settings.getString("locale"); + if(locale.equals("default")){ + locale = Locale.getDefault().toString(); + } + player.locale = locale; + player.color.set(Core.settings.getInt("color-0")); if(mobile){ @@ -551,6 +545,7 @@ public class Control implements ApplicationListener, Loadable{ @Override public void pause(){ if(settings.getBool("backgroundpause", true) && !net.active()){ + backgroundPaused = true; wasPaused = state.is(State.paused); if(state.is(State.playing)) state.set(State.paused); } @@ -561,6 +556,7 @@ public class Control implements ApplicationListener, Loadable{ if(state.is(State.paused) && !wasPaused && settings.getBool("backgroundpause", true) && !net.active()){ state.set(State.playing); } + backgroundPaused = false; } @Override @@ -652,6 +648,10 @@ public class Control implements ApplicationListener, Loadable{ core.items.each((i, a) -> i.unlock()); } + if(backgroundPaused && settings.getBool("backgroundpause") && !net.active()){ + state.set(State.paused); + } + //cannot launch while paused if(state.isPaused() && renderer.isCutscene()){ state.set(State.playing); diff --git a/core/src/mindustry/core/GameState.java b/core/src/mindustry/core/GameState.java index 0e7e06436e..17d3b3bfe9 100644 --- a/core/src/mindustry/core/GameState.java +++ b/core/src/mindustry/core/GameState.java @@ -32,6 +32,10 @@ public class GameState{ public Rules rules = new Rules(); /** Statistics for this save/game. Displayed after game over. */ public GameStats stats = new GameStats(); + /** Markers not linked to objectives. Controlled by world processors. */ + public MapMarkers markers = new MapMarkers(); + /** Locale-specific string bundles of current map */ + public MapLocales mapLocales = new MapLocales(); /** Global attributes of the environment, calculated by weather. */ public Attributes envAttrs = new Attributes(); /** Team data. Gets reset every new game. */ @@ -82,11 +86,12 @@ public class GameState{ } public boolean isPaused(){ - return is(State.paused); + return state == State.paused; } + /** @return whether there is an unpaused game in progress. */ public boolean isPlaying(){ - return (state == State.playing) || (state == State.paused && !isPaused()); + return state == State.playing; } /** @return whether the current state is *not* the menu. */ diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index bde8089da8..6af657678f 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -357,7 +357,8 @@ public class Logic implements ApplicationListener{ //map is over, no more world processor objective stuff state.rules.disableWorldProcessors = true; - state.rules.objectives.clear(); + + Call.clearObjectives(); //save, just in case if(!headless && !net.client()){ @@ -445,6 +446,12 @@ public class Logic implements ApplicationListener{ updateWeather(); for(TeamData data : state.teams.getActive()){ + //does not work on PvP so built-in attack maps can have it on by default without issues + if(data.team.rules().buildAi && !state.rules.pvp){ + if(data.buildAi == null) data.buildAi = new BaseBuilderAI(data); + data.buildAi.update(); + } + if(data.team.rules().rtsAi){ if(data.rtsAi == null) data.rtsAi = new RtsAI(data); data.rtsAi.update(); @@ -452,12 +459,8 @@ public class Logic implements ApplicationListener{ } } - //TODO objectives clientside??? if(!state.isEditor()){ state.rules.objectives.update(); - if(state.rules.objectives.checkChanged() && net.server()){ - Call.setObjectives(state.rules.objectives); - } } if(state.rules.waves && state.rules.waveTimer && !state.gameOver){ diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index 99608a6168..8171a89797 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -165,14 +165,14 @@ public class NetClient implements ApplicationListener{ public static void sound(Sound sound, float volume, float pitch, float pan){ if(sound == null || headless) return; - sound.play(Mathf.clamp(volume, 0, 8f) * Core.settings.getInt("sfxvol") / 100f, pitch, pan, false, false); + sound.play(Mathf.clamp(volume, 0, 8f) * Core.settings.getInt("sfxvol") / 100f, Mathf.clamp(pitch, 0f, 20f), pan, false, false); } @Remote(variants = Variant.both, unreliable = true, called = Loc.server) public static void soundAt(Sound sound, float x, float y, float volume, float pitch){ if(sound == null || headless) return; - sound.at(x, y, pitch, Mathf.clamp(volume, 0, 4f)); + sound.at(x, y, Mathf.clamp(pitch, 0f, 20f), Mathf.clamp(volume, 0, 4f)); } @Remote(variants = Variant.both, unreliable = true) @@ -233,6 +233,8 @@ public class NetClient implements ApplicationListener{ return; } + if(message == null) return; + if(message.length() > maxTextLength){ throw new ValidateException(player, "Player has sent a message above the text limit."); } @@ -338,21 +340,25 @@ public class NetClient implements ApplicationListener{ state.rules = rules; } + //NOTE: avoid using this, runs into packet/buffer size limitations @Remote(variants = Variant.both) public static void setObjectives(MapObjectives executor){ - //clear old markers - for(var objective : state.rules.objectives){ - for(var marker : objective.markers){ - if(marker.wasAdded){ - marker.removed(); - marker.wasAdded = false; - } - } - } - state.rules.objectives = executor; } + @Remote(variants = Variant.both, called = Loc.server) + public static void clearObjectives(){ + state.rules.objectives.clear(); + } + + @Remote(variants = Variant.both, called = Loc.server) + public static void completeObjective(int index){ + var obj = state.rules.objectives.get(index); + if(obj != null){ + obj.done(); + } + } + @Remote(variants = Variant.both) public static void worldDataBegin(){ Groups.clear(); @@ -406,7 +412,7 @@ public class NetClient implements ApplicationListener{ //entity must not be added yet, so create it if(entity == null){ - entity = (Syncc)EntityMapping.map(typeID).get(); + entity = (Syncc)EntityMapping.map(typeID & 0xFF).get(); entity.id(id); if(!netClient.isEntityUsed(entity.id())){ add = true; diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index 1436c3c1e4..b80f828362 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -98,6 +98,15 @@ public class NetServer implements ApplicationListener{ private boolean closing = false, pvpAutoPaused = true; private Interval timer = new Interval(10); private IntSet buildHealthChanged = new IntSet(); + + /** Current kick session. */ + public @Nullable VoteSession currentlyKicking = null; + /** Duration of a kick in seconds. */ + public static int kickDuration = 60 * 60; + /** Voting round duration in seconds. */ + public static float voteDuration = 0.5f * 60; + /** Cooldown between votes in seconds. */ + public static int voteCooldown = 60 * 5; private ReusableByteOutStream writeBuffer = new ReusableByteOutStream(127); private Writes outputBuffer = new Writes(new DataOutputStream(writeBuffer)); @@ -108,6 +117,8 @@ public class NetServer implements ApplicationListener{ private DataOutputStream dataStream = new DataOutputStream(syncStream); /** Packet handlers for custom types of messages. */ private ObjectMap>> customPacketHandlers = new ObjectMap<>(); + /** Packet handlers for logic client data */ + private ObjectMap>> logicClientDataHandlers = new ObjectMap<>(); public NetServer(){ @@ -138,7 +149,7 @@ public class NetServer implements ApplicationListener{ String uuid = packet.uuid; - if(admins.isIPBanned(con.address) || admins.isSubnetBanned(con.address)) return; + if(admins.isIPBanned(con.address) || admins.isSubnetBanned(con.address) || con.kicked || !con.isConnected()) return; if(con.hasBegunConnecting){ con.kick(KickReason.idInUse); @@ -340,60 +351,10 @@ public class NetServer implements ApplicationListener{ Groups.player.each(Player::admin, a -> a.sendMessage(raw, player, args[0])); }); - //duration of a kick in seconds - int kickDuration = 60 * 60; - //voting round duration in seconds - float voteDuration = 0.5f * 60; - //cooldown between votes in seconds - int voteCooldown = 60 * 5; - - class VoteSession{ - Player target; - ObjectSet voted = new ObjectSet<>(); - VoteSession[] map; - Timer.Task task; - int votes; - - public VoteSession(VoteSession[] map, Player target){ - this.target = target; - this.map = map; - this.task = Timer.schedule(() -> { - if(!checkPass()){ - Call.sendMessage(Strings.format("[lightgray]Vote failed. Not enough votes to kick[orange] @[lightgray].", target.name)); - map[0] = null; - task.cancel(); - } - }, voteDuration); - } - - void vote(Player player, int d){ - votes += d; - voted.addAll(player.uuid(), admins.getInfo(player.uuid()).lastIP); - - Call.sendMessage(Strings.format("[lightgray]@[lightgray] has voted on kicking[orange] @[lightgray].[accent] (@/@)\n[lightgray]Type[orange] /vote [] to agree.", - player.name, target.name, votes, votesRequired())); - - checkPass(); - } - - boolean checkPass(){ - if(votes >= votesRequired()){ - Call.sendMessage(Strings.format("[orange]Vote passed.[scarlet] @[orange] will be banned from the server for @ minutes.", target.name, (kickDuration / 60))); - Groups.player.each(p -> p.uuid().equals(target.uuid()), p -> p.kick(KickReason.vote, kickDuration * 1000)); - map[0] = null; - task.cancel(); - return true; - } - return false; - } - } - //cooldowns per player ObjectMap cooldowns = new ObjectMap<>(); - //current kick sessions - VoteSession[] currentlyKicking = {null}; - clientCommands.register("votekick", "[player...]", "Vote to kick a player.", (args, player) -> { + clientCommands.register("votekick", "[player] [reason...]", "Vote to kick a player with a valid reason.", (args, player) -> { if(!Config.enableVotekick.bool()){ player.sendMessage("[scarlet]Vote-kick is disabled on this server."); return; @@ -409,7 +370,7 @@ public class NetServer implements ApplicationListener{ return; } - if(currentlyKicking[0] != null){ + if(currentlyKicking != null){ player.sendMessage("[scarlet]A vote is already in progress."); return; } @@ -422,6 +383,8 @@ public class NetServer implements ApplicationListener{ builder.append("[lightgray] ").append(p.name).append("[accent] (#").append(p.id()).append(")\n"); }); player.sendMessage(builder.toString()); + }else if(args.length == 1){ + player.sendMessage("[orange]You need a valid reason to kick the player. Add a reason after the player name."); }else{ Player found; if(args[0].length() > 1 && args[0].startsWith("#") && Strings.canParseInt(args[0].substring(1))){ @@ -448,10 +411,11 @@ public class NetServer implements ApplicationListener{ return; } - VoteSession session = new VoteSession(currentlyKicking, found); + VoteSession session = new VoteSession(found); session.vote(player, 1); + Call.sendMessage(Strings.format("[lightgray]Reason:[orange] @[lightgray].", args[1])); vtime.reset(); - currentlyKicking[0] = session; + currentlyKicking = session; } }else{ player.sendMessage("[scarlet]No player [orange]'" + args[0] + "'[scarlet] found."); @@ -459,43 +423,50 @@ public class NetServer implements ApplicationListener{ } }); - clientCommands.register("vote", "", "Vote to kick the current player.", (arg, player) -> { - if(currentlyKicking[0] == null){ + clientCommands.register("vote", "", "Vote to kick the current player. Admin can cancel the voting with 'c'.", (arg, player) -> { + if(currentlyKicking == null){ player.sendMessage("[scarlet]Nobody is being voted on."); }else{ + if(player.admin && arg[0].equalsIgnoreCase("c")){ + Call.sendMessage(Strings.format("[lightgray]Vote canceled by admin[orange] @[lightgray].", player.name)); + currentlyKicking.task.cancel(); + currentlyKicking = null; + return; + } + if(player.isLocal()){ player.sendMessage("[scarlet]Local players can't vote. Kick the player yourself instead."); return; } - //hosts can vote all they want - if((currentlyKicking[0].voted.contains(player.uuid()) || currentlyKicking[0].voted.contains(admins.getInfo(player.uuid()).lastIP))){ - player.sendMessage("[scarlet]You've already voted. Sit down."); - return; - } - - if(currentlyKicking[0].target == player){ - player.sendMessage("[scarlet]You can't vote on your own trial."); - return; - } - - if(currentlyKicking[0].target.team() != player.team()){ - player.sendMessage("[scarlet]You can't vote for other teams."); - return; - } - int sign = switch(arg[0].toLowerCase()){ case "y", "yes" -> 1; case "n", "no" -> -1; default -> 0; }; + //hosts can vote all they want + if((currentlyKicking.voted.get(player.uuid(), 2) == sign || currentlyKicking.voted.get(admins.getInfo(player.uuid()).lastIP, 2) == sign)){ + player.sendMessage(Strings.format("[scarlet]You've already voted @. Sit down.", arg[0].toLowerCase())); + return; + } + + if(currentlyKicking.target == player){ + player.sendMessage("[scarlet]You can't vote on your own trial."); + return; + } + + if(currentlyKicking.target.team() != player.team()){ + player.sendMessage("[scarlet]You can't vote for other teams."); + return; + } + if(sign == 0){ player.sendMessage("[scarlet]Vote either 'y' (yes) or 'n' (no)."); return; } - currentlyKicking[0].vote(player, sign); + currentlyKicking.vote(player, sign); } }); @@ -546,6 +517,10 @@ public class NetServer implements ApplicationListener{ return customPacketHandlers.get(type, Seq::new); } + public void addLogicDataHandler(String type, Cons2 handler){ + logicClientDataHandlers.get(type, Seq::new).add(handler); + } + public static void onDisconnect(Player player, String reason){ //singleplayer multiplayer weirdness if(player.con == null){ @@ -614,6 +589,21 @@ public class NetServer implements ApplicationListener{ serverPacketReliable(player, type, contents); } + @Remote(targets = Loc.client) + public static void clientLogicDataReliable(Player player, String channel, Object value){ + Seq> handlers = netServer.logicClientDataHandlers.get(channel); + if(handlers != null){ + for(Cons2 handler : handlers){ + handler.get(player, value); + } + } + } + + @Remote(targets = Loc.client, unreliable = true) + public static void clientLogicDataUnreliable(Player player, String channel, Object value){ + clientLogicDataReliable(player, channel, value); + } + private static boolean invalid(float f){ return Float.isInfinite(f) || Float.isNaN(f); } @@ -727,7 +717,6 @@ public class NetServer implements ApplicationListener{ vector.limit(maxMove); float prevx = unit.x, prevy = unit.y; - //unit.set(con.lastPosition); if(!unit.isFlying()){ unit.move(vector.x, vector.y); }else{ @@ -770,7 +759,7 @@ public class NetServer implements ApplicationListener{ } @Remote(targets = Loc.client, called = Loc.server) - public static void adminRequest(Player player, Player other, AdminAction action){ + public static void adminRequest(Player player, Player other, AdminAction action, Object params){ if(!player.admin && !player.isLocal()){ warn("ACCESS DENIED: Player @ / @ attempted to perform admin action '@' on '@' without proper security access.", player.plainName(), player.con == null ? "null" : player.con.address, action.name(), other == null ? null : other.plainName()); @@ -784,28 +773,37 @@ public class NetServer implements ApplicationListener{ Events.fire(new EventType.AdminRequestEvent(player, other, action)); - if(action == AdminAction.wave){ - //no verification is done, so admins can hypothetically spam waves - //not a real issue, because server owners may want to do just that - logic.skipWave(); - info("&lc@ &fi&lk[&lb@&fi&lk]&fb has skipped the wave.", player.plainName(), player.uuid()); - }else if(action == AdminAction.ban){ - netServer.admins.banPlayerID(other.con.uuid); - netServer.admins.banPlayerIP(other.con.address); - other.kick(KickReason.banned); - info("&lc@ &fi&lk[&lb@&fi&lk]&fb has banned @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid()); - }else if(action == AdminAction.kick){ - other.kick(KickReason.kick); - info("&lc@ &fi&lk[&lb@&fi&lk]&fb has kicked @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid()); - }else if(action == AdminAction.trace){ - PlayerInfo stats = netServer.admins.getInfo(other.uuid()); - TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile, stats.timesJoined, stats.timesKicked); - if(player.con != null){ - Call.traceInfo(player.con, other, info); - }else{ - NetClient.traceInfo(other, info); + switch(action){ + case wave -> { + //no verification is done, so admins can hypothetically spam waves + //not a real issue, because server owners may want to do just that + logic.skipWave(); + info("&lc@ &fi&lk[&lb@&fi&lk]&fb has skipped the wave.", player.plainName(), player.uuid()); + } + case ban -> { + netServer.admins.banPlayerID(other.con.uuid); + netServer.admins.banPlayerIP(other.con.address); + other.kick(KickReason.banned); + info("&lc@ &fi&lk[&lb@&fi&lk]&fb has banned @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid()); + } + case kick -> { + other.kick(KickReason.kick); + info("&lc@ &fi&lk[&lb@&fi&lk]&fb has kicked @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid()); + } + case trace -> { + PlayerInfo stats = netServer.admins.getInfo(other.uuid()); + TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile, stats.timesJoined, stats.timesKicked, stats.ips.toArray(String.class), stats.names.toArray(String.class)); + if(player.con != null){ + Call.traceInfo(player.con, other, info); + }else{ + NetClient.traceInfo(other, info); + } + } + case switchTeam -> { + if(params instanceof Team team){ + other.team(team); + } } - info("&lc@ &fi&lk[&lb@&fi&lk]&fb has requested trace info of @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid()); } } @@ -968,7 +966,7 @@ public class NetServer implements ApplicationListener{ //write all entities now dataStream.writeInt(entity.id()); //write id - dataStream.writeByte(entity.classId()); //write type ID + dataStream.writeByte(entity.classId() & 0xFF); //write type ID entity.writeSync(Writes.get(dataStream)); //write entity sent++; @@ -1101,6 +1099,49 @@ public class NetServer implements ApplicationListener{ } } + public class VoteSession{ + Player target; + ObjectIntMap voted = new ObjectIntMap<>(); + Timer.Task task; + int votes; + + public VoteSession(Player target){ + this.target = target; + this.task = Timer.schedule(() -> { + if(!checkPass()){ + Call.sendMessage(Strings.format("[lightgray]Vote failed. Not enough votes to kick[orange] @[lightgray].", target.name)); + currentlyKicking = null; + task.cancel(); + } + }, voteDuration); + } + + void vote(Player player, int d){ + int lastVote = voted.get(player.uuid(), 0) | voted.get(admins.getInfo(player.uuid()).lastIP, 0); + votes -= lastVote; + + votes += d; + voted.put(player.uuid(), d); + voted.put(admins.getInfo(player.uuid()).lastIP, d); + + Call.sendMessage(Strings.format("[lightgray]@[lightgray] has voted on kicking[orange] @[lightgray].[accent] (@/@)\n[lightgray]Type[orange] /vote [] to agree.", + player.name, target.name, votes, votesRequired())); + + checkPass(); + } + + boolean checkPass(){ + if(votes >= votesRequired()){ + Call.sendMessage(Strings.format("[orange]Vote passed.[scarlet] @[orange] will be banned from the server for @ minutes.", target.name, (kickDuration / 60))); + Groups.player.each(p -> p.uuid().equals(target.uuid()), p -> p.kick(KickReason.vote, kickDuration * 1000)); + currentlyKicking = null; + task.cancel(); + return true; + } + return false; + } + } + public interface TeamAssigner{ Team assign(Player player, Iterable players); } diff --git a/core/src/mindustry/core/Platform.java b/core/src/mindustry/core/Platform.java index 60d938f084..e395d82412 100644 --- a/core/src/mindustry/core/Platform.java +++ b/core/src/mindustry/core/Platform.java @@ -1,6 +1,7 @@ package mindustry.core; import arc.*; +import arc.filedialogs.*; import arc.files.*; import arc.func.*; import arc.math.*; @@ -14,6 +15,7 @@ import mindustry.type.*; import mindustry.ui.dialogs.*; import rhino.*; +import java.io.*; import java.net.*; import static mindustry.Vars.*; @@ -140,6 +142,69 @@ public interface Platform{ * @param title The title of the native dialog */ default void showFileChooser(boolean open, String title, String extension, Cons cons){ + if(OS.isWindows || OS.isMac){ + showNativeFileChooser(open, title, cons, extension); + }else if(OS.isLinux && !OS.isAndroid){ + showZenity(open, title, new String[]{extension}, cons, () -> defaultFileDialog(open, title, extension, cons)); + }else{ + defaultFileDialog(open, title, extension, cons); + } + } + + /** attempt to use the native file picker with zenity, or runs the fallback Runnable if the operation fails */ + static void showZenity(boolean open, String title, String[] extensions, Cons cons, Runnable fallback){ + Threads.daemon(() -> { + try{ + String formatted = (title.startsWith("@") ? Core.bundle.get(title.substring(1)) : title).replaceAll("\"", "'"); + + String last = FileChooser.getLastDirectory().absolutePath(); + if(!last.endsWith("/")) last += "/"; + + //zenity doesn't support filtering by extension + Seq args = Seq.with("zenity", + "--file-selection", + "--title=" + formatted, + "--filename=" + last, + "--confirm-overwrite", + "--file-filter=" + Seq.with(extensions).toString(" ", s -> "*." + s), + "--file-filter=All files | *" //allow anything if the user wants + ); + + if(!open){ + args.add("--save"); + } + + String result = OS.exec(args.toArray(String.class)); + //first line. + if(result.length() > 1 && result.contains("\n")){ + result = result.split("\n")[0]; + } + + //cancelled selection, ignore result + if(result.isEmpty() || result.equals("\n")) return; + + if(result.endsWith("\n")) result = result.substring(0, result.length() - 1); + if(result.contains("\n")) throw new IOException("invalid input: \"" + result + "\""); + + Fi file = Core.files.absolute(result); + Core.app.post(() -> { + FileChooser.setLastDirectory(file.isDirectory() ? file : file.parent()); + + if(!open){ + cons.get(file.parent().child(file.nameWithoutExtension() + "." + extensions[0])); + }else{ + cons.get(file); + } + }); + }catch(Exception e){ + Log.err(e); + Log.warn("zenity not found, using non-native file dialog. Consider installing `zenity` for native file dialogs."); + Core.app.post(fallback); + } + }); + } + + static void defaultFileDialog(boolean open, String title, String extension, Cons cons){ new FileChooser(title, file -> file.extEquals(extension), open, file -> { if(!open){ cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension)); @@ -161,11 +226,81 @@ public interface Platform{ default void showMultiFileChooser(Cons cons, String... extensions){ if(mobile){ showFileChooser(true, extensions[0], cons); + }else if(OS.isWindows || OS.isMac){ + showNativeFileChooser(true, "@open", cons, extensions); + }else if(OS.isLinux && !OS.isAndroid){ + showZenity(true, "@open", extensions, cons, () -> defaultMultiFileChooser(cons, extensions)); }else{ - new FileChooser("@open", file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show(); + defaultMultiFileChooser(cons, extensions); } } + static void defaultMultiFileChooser(Cons cons, String... extensions){ + new FileChooser("@open", file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show(); + } + + default void showNativeFileChooser(boolean open, String title, Cons cons, String... shownExtensions){ + String formatted = (title.startsWith("@") ? Core.bundle.get(title.substring(1)) : title).replaceAll("\"", "'"); + + //this should never happen unless someone is being dumb with the parameters + String[] ext = shownExtensions == null || shownExtensions.length == 0 ? new String[]{""} : shownExtensions; + + //native file dialog + Threads.daemon(() -> { + try{ + FileDialogs.loadNatives(); + + String result; + String[] patterns = new String[ext.length]; + for(int i = 0; i < ext.length; i++){ + patterns[i] = "*." + ext[i]; + } + + //on MacOS, .msav is not properly recognized until I put garbage into the array? + if(patterns.length == 1 && OS.isMac && open){ + patterns = new String[]{"", "*." + ext[0]}; + } + + if(open){ + result = FileDialogs.openFileDialog(formatted, FileChooser.getLastDirectory().absolutePath(), patterns, "." + ext[0] + " files", false); + }else{ + result = FileDialogs.saveFileDialog(formatted, FileChooser.getLastDirectory().child("file." + ext[0]).absolutePath(), patterns, "." + ext[0] + " files"); + } + + if(result == null) return; + + if(result.length() > 1 && result.contains("\n")){ + result = result.split("\n")[0]; + } + + //cancelled selection, ignore result + if(result.isEmpty() || result.equals("\n")) return; + if(result.endsWith("\n")) result = result.substring(0, result.length() - 1); + if(result.contains("\n")) throw new IOException("invalid input: \"" + result + "\""); + + Fi file = Core.files.absolute(result); + Core.app.post(() -> { + FileChooser.setLastDirectory(file.isDirectory() ? file : file.parent()); + + if(!open){ + cons.get(file.parent().child(file.nameWithoutExtension() + "." + ext[0])); + }else{ + cons.get(file); + } + }); + }catch(Throwable error){ + Log.err("Failure to execute native file chooser", error); + Core.app.post(() -> { + if(ext.length > 1){ + defaultMultiFileChooser(cons, ext); + }else{ + defaultFileDialog(open, title, ext[0], cons); + } + }); + } + }); + } + /** Hide the app. Android only. */ default void hide(){ } diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index 1eb37957f2..ae3ae07e38 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -2,6 +2,7 @@ package mindustry.core; import arc.*; import arc.assets.loaders.TextureLoader.*; +import arc.audio.*; import arc.files.*; import arc.graphics.*; import arc.graphics.Texture.*; @@ -13,11 +14,11 @@ import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; import mindustry.*; -import mindustry.content.*; import mindustry.game.EventType.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.graphics.g3d.*; +import mindustry.maps.*; import mindustry.type.*; import mindustry.world.blocks.storage.*; import mindustry.world.blocks.storage.CoreBlock.*; @@ -29,11 +30,6 @@ public class Renderer implements ApplicationListener{ /** These are global variables, for headless access. Cached. */ public static float laserOpacity = 0.5f, bridgeOpacity = 0.75f; - private static final float cloudScaling = 1700f, cfinScl = -2f, cfinOffset = 0.3f, calphaFinOffset = 0.25f; - private static final float[] cloudAlphas = {0, 0.5f, 1f, 0.1f, 0, 0f}; - private static final float cloudAlpha = 0.81f; - private static final Interp landInterp = Interp.pow3; - public final BlockRenderer blocks = new BlockRenderer(); public final FogRenderer fog = new FogRenderer(); public final MinimapRenderer minimap = new MinimapRenderer(); @@ -45,7 +41,7 @@ public class Renderer implements ApplicationListener{ public @Nullable Bloom bloom; public @Nullable FrameBuffer backgroundBuffer; public FrameBuffer effectBuffer = new FrameBuffer(); - public boolean animateShields, drawWeather = true, drawStatus, enableEffects, drawDisplays = true; + public boolean animateShields, drawWeather = true, drawStatus, enableEffects, drawDisplays = true, drawLight = true, pixelate = false; public float weatherAlpha; /** minZoom = zooming out, maxZoom = zooming in */ public float minZoom = 1.5f, maxZoom = 6f; @@ -54,18 +50,15 @@ public class Renderer implements ApplicationListener{ public TextureRegion[] bubbles = new TextureRegion[16], splashes = new TextureRegion[12]; public TextureRegion[][] fluidFrames; + //currently landing core, null if there are no cores or it has finished landing. private @Nullable CoreBuild landCore; private @Nullable CoreBlock launchCoreType; private Color clearColor = new Color(0f, 0f, 0f, 1f); private float - //seed for cloud visuals, 0-1 - cloudSeed = 0f, //target camera scale that is lerp-ed to targetscale = Scl.scl(4), //current actual camera scale camerascale = targetscale, - //minimum camera zoom value for landing/launching; constant TODO make larger? - minZoomScl = Scl.scl(0.02f), //starts at coreLandDuration, ends at 0. if positive, core is landing. landTime, //timer for core landing particles @@ -112,10 +105,6 @@ public class Renderer implements ApplicationListener{ setupBloom(); } - Events.run(Trigger.newGame, () -> { - landCore = player.bestCore(); - }); - EnvRenderers.init(); for(int i = 0; i < bubbles.length; i++) bubbles[i] = atlas.find("bubble-" + i); for(int i = 0; i < splashes.length; i++) splashes[i] = atlas.find("splash-" + i); @@ -179,29 +168,27 @@ public class Renderer implements ApplicationListener{ drawStatus = settings.getBool("blockstatus"); enableEffects = settings.getBool("effects"); drawDisplays = !settings.getBool("hidedisplays"); + drawLight = settings.getBool("drawlight", true); + pixelate = settings.getBool("pixelate"); + //don't bother drawing landing animation if core is null + if(landCore == null) landTime = 0f; if(landTime > 0){ - if(!state.isPaused()){ - CoreBuild build = landCore == null ? player.bestCore() : landCore; - build.updateLandParticles(); - } + if(!state.isPaused()) landCore.updateLaunching(); - if(!state.isPaused()){ - landTime -= Time.delta; - } - float fin = landTime / coreLandDuration; - if(!launching) fin = 1f - fin; - camerascale = landInterp.apply(minZoomScl, Scl.scl(4f), fin); weatherAlpha = 0f; + camerascale = landCore.zoomLaunching(); - //snap camera to cutscene core regardless of player input - if(landCore != null){ - camera.position.set(landCore); - } + if(!state.isPaused()) landTime -= Time.delta; }else{ weatherAlpha = Mathf.lerpDelta(weatherAlpha, 1f, 0.08f); } + if(landCore != null && landTime <= 0f){ + landCore.endLaunch(); + landCore = null; + } + camera.width = graphics.getWidth() / camerascale; camera.height = graphics.getHeight() / camerascale; @@ -209,6 +196,8 @@ public class Renderer implements ApplicationListener{ landTime = 0f; graphics.clear(Color.black); }else{ + minimap.update(); + if(shakeTime > 0){ float intensity = shakeIntensity * (settings.getInt("screenshake", 4) / 4f) * 0.75f; camShakeOffset.setToRandomDirection().scl(Mathf.random(intensity)); @@ -221,7 +210,7 @@ public class Renderer implements ApplicationListener{ shakeIntensity = 0f; } - if(pixelator.enabled()){ + if(renderer.pixelate){ pixelator.drawPixelate(); }else{ draw(); @@ -286,6 +275,7 @@ public class Renderer implements ApplicationListener{ public void draw(){ Events.fire(Trigger.preDraw); + MapPreviewLoader.checkPreviews(); camera.update(); @@ -296,7 +286,7 @@ public class Renderer implements ApplicationListener{ graphics.clear(clearColor); Draw.reset(); - if(Core.settings.getBool("animatedwater") || animateShields){ + if(settings.getBool("animatedwater") || animateShields){ effectBuffer.resize(graphics.getWidth(), graphics.getHeight()); } @@ -309,8 +299,9 @@ public class Renderer implements ApplicationListener{ Draw.sort(true); Events.fire(Trigger.draw); + MapPreviewLoader.checkPreviews(); - if(pixelator.enabled()){ + if(renderer.pixelate){ pixelator.register(); } @@ -332,7 +323,7 @@ public class Renderer implements ApplicationListener{ } } - if(state.rules.lighting){ + if(state.rules.lighting && drawLight){ Draw.draw(Layer.light, lights::draw); } @@ -342,7 +333,7 @@ public class Renderer implements ApplicationListener{ if(bloom != null){ bloom.resize(graphics.getWidth(), graphics.getHeight()); - bloom.setBloomIntesity(settings.getInt("bloomintensity", 6) / 4f + 1f); + bloom.setBloomIntensity(settings.getInt("bloomintensity", 6) / 4f + 1f); bloom.blurPasses = settings.getInt("bloomblur", 1); Draw.draw(Layer.bullet - 0.02f, bloom::capture); Draw.draw(Layer.effect + 0.02f, bloom::render); @@ -363,9 +354,31 @@ public class Renderer implements ApplicationListener{ }); } + float scaleFactor = 4f / renderer.getDisplayScale(); + + //draw objective markers + state.rules.objectives.eachRunning(obj -> { + for(var marker : obj.markers){ + if(marker.world){ + marker.draw(marker.autoscale ? scaleFactor : 1); + } + } + }); + + for(var marker : state.markers){ + if(marker.world){ + marker.draw(marker.autoscale ? scaleFactor : 1); + } + } + + Draw.reset(); + Draw.draw(Layer.overlayUI, overlays::drawTop); if(state.rules.fog) Draw.draw(Layer.fogOfWar, fog::drawFog); - Draw.draw(Layer.space, this::drawLanding); + Draw.draw(Layer.space, () -> { + if(landCore == null || landTime <= 0f) return; + landCore.drawLanding(launching && launchCoreType != null ? launchCoreType : (CoreBlock)landCore.block); + }); Events.fire(Trigger.drawOver); blocks.drawBlocks(); @@ -453,61 +466,6 @@ public class Renderer implements ApplicationListener{ if(state.rules.customBackgroundCallback != null && customBackgrounds.containsKey(state.rules.customBackgroundCallback)){ customBackgrounds.get(state.rules.customBackgroundCallback).run(); } - - } - - void drawLanding(){ - CoreBuild build = landCore == null ? player.bestCore() : landCore; - var clouds = assets.get("sprites/clouds.png", Texture.class); - if(landTime > 0 && build != null){ - float fout = landTime / coreLandDuration; - if(launching) fout = 1f - fout; - float fin = 1f - fout; - float scl = Scl.scl(4f) / camerascale; - float pfin = Interp.pow3Out.apply(fin), pf = Interp.pow2In.apply(fout); - - //draw particles - Draw.color(Pal.lightTrail); - Angles.randLenVectors(1, pfin, 100, 800f * scl * pfin, (ax, ay, ffin, ffout) -> { - Lines.stroke(scl * ffin * pf * 3f); - Lines.lineAngle(build.x + ax, build.y + ay, Mathf.angle(ax, ay), (ffin * 20 + 1f) * scl); - }); - Draw.color(); - - CoreBlock block = launching && launchCoreType != null ? launchCoreType : (CoreBlock)build.block; - block.drawLanding(build, build.x, build.y); - - Draw.color(); - Draw.mixcol(Color.white, Interp.pow5In.apply(fout)); - - //accent tint indicating that the core was just constructed - if(launching){ - float f = Mathf.clamp(1f - fout * 12f); - if(f > 0.001f){ - Draw.mixcol(Pal.accent, f); - } - } - - //draw clouds - if(state.rules.cloudColor.a > 0.0001f){ - float scaling = cloudScaling; - float sscl = Math.max(1f + Mathf.clamp(fin + cfinOffset)* cfinScl, 0f) * camerascale; - - Tmp.tr1.set(clouds); - Tmp.tr1.set( - (camera.position.x - camera.width/2f * sscl) / scaling, - (camera.position.y - camera.height/2f * sscl) / scaling, - (camera.position.x + camera.width/2f * sscl) / scaling, - (camera.position.y + camera.height/2f * sscl) / scaling); - - Tmp.tr1.scroll(10f * cloudSeed, 10f * cloudSeed); - - Draw.alpha(Mathf.sample(cloudAlphas, fin + calphaFinOffset) * cloudAlpha); - Draw.mixcol(state.rules.cloudColor, state.rules.cloudColor.a); - Draw.rect(Tmp.tr1, camera.position.x, camera.position.y, camera.width, camera.height); - Draw.reset(); - } - } } public void scaleCamera(float amount){ @@ -552,6 +510,13 @@ public class Renderer implements ApplicationListener{ return landTime; } + public float getLandTimeIn(){ + if(landCore == null) return 0f; + float fin = landTime / landCore.landDuration(); + if(!launching) fin = 1f - fin; + return fin; + } + public float getLandPTimer(){ return landPTimer; } @@ -560,25 +525,42 @@ public class Renderer implements ApplicationListener{ this.landPTimer = landPTimer; } + @Deprecated public void showLanding(){ - launching = false; - camerascale = minZoomScl; - landTime = coreLandDuration; - cloudSeed = Mathf.random(1f); + var core = player.bestCore(); + if(core != null) showLanding(core); } + public void showLanding(CoreBuild landCore){ + this.landCore = landCore; + launching = false; + landTime = landCore.landDuration(); + + landCore.beginLaunch(null); + camerascale = landCore.zoomLaunching(); + } + + @Deprecated public void showLaunch(CoreBlock coreType){ - Vars.ui.hudfrag.showLaunch(); - Vars.control.input.config.hideConfig(); - Vars.control.input.inv.hide(); - launchCoreType = coreType; + var core = player.team().core(); + if(core != null) showLaunch(core, coreType); + } + + public void showLaunch(CoreBuild landCore, CoreBlock coreType){ + control.input.config.hideConfig(); + control.input.inv.hide(); + + this.landCore = landCore; launching = true; - landCore = player.team().core(); - cloudSeed = Mathf.random(1f); - landTime = coreLandDuration; - if(landCore != null){ - Fx.coreLaunchConstruct.at(landCore.x, landCore.y, coreType.size); - } + landTime = landCore.landDuration(); + launchCoreType = coreType; + + Music music = landCore.launchMusic(); + music.stop(); + music.play(); + music.setVolume(settings.getInt("musicvol") / 100f); + + landCore.beginLaunch(coreType); } public void takeMapScreenshot(){ @@ -620,7 +602,7 @@ public class Renderer implements ApplicationListener{ Fi file = screenshotDirectory.child("screenshot-" + Time.millis() + ".png"); PixmapIO.writePng(file, fullPixmap); fullPixmap.dispose(); - app.post(() -> ui.showInfoFade(Core.bundle.format("screenshot", file.toString()))); + app.post(() -> ui.showInfoFade(bundle.format("screenshot", file.toString()))); }); } diff --git a/core/src/mindustry/core/UI.java b/core/src/mindustry/core/UI.java index 8a0f81610f..d634e122b5 100644 --- a/core/src/mindustry/core/UI.java +++ b/core/src/mindustry/core/UI.java @@ -71,13 +71,14 @@ public class UI implements ApplicationListener, Loadable{ public SchematicsDialog schematics; public ModsDialog mods; public ColorPicker picker; + public EffectsDialog effects; public LogicDialog logic; public FullTextDialog fullText; public CampaignCompleteDialog campaignComplete; public IntMap followUpMenus; - public Cursor drillCursor, unloadCursor, targetCursor; + public Cursor drillCursor, unloadCursor, targetCursor, repairCursor; private @Nullable Element lastAnnouncement; @@ -100,8 +101,6 @@ public class UI implements ApplicationListener, Loadable{ @Override public void loadSync(){ - loadColors(); - Fonts.outline.getData().markupEnabled = true; Fonts.def.getData().markupEnabled = true; Fonts.def.setOwnsTexture(false); @@ -127,6 +126,9 @@ public class UI implements ApplicationListener, Loadable{ Tooltips.getInstance().animations = false; Tooltips.getInstance().textProvider = text -> new Tooltip(t -> t.background(Styles.black6).margin(4f).add(text)); + if(mobile){ + Tooltips.getInstance().offsetY += Scl.scl(60f); + } Core.settings.setErrorHandler(e -> { Log.err(e); @@ -138,6 +140,7 @@ public class UI implements ApplicationListener, Loadable{ drillCursor = Core.graphics.newCursor("drill", Fonts.cursorScale()); unloadCursor = Core.graphics.newCursor("unload", Fonts.cursorScale()); targetCursor = Core.graphics.newCursor("target", Fonts.cursorScale()); + repairCursor = Core.graphics.newCursor("repair", Fonts.cursorScale()); } @Override @@ -183,6 +186,7 @@ public class UI implements ApplicationListener, Loadable{ consolefrag = new ConsoleFragment(); picker = new ColorPicker(); + effects = new EffectsDialog(); editor = new MapEditorDialog(); controls = new KeybindDialog(); restart = new GameOverDialog(); @@ -268,15 +272,24 @@ public class UI implements ApplicationListener, Loadable{ }); } - public void showTextInput(String titleText, String text, int textLength, String def, boolean numbers, Cons confirmed, Runnable closed){ + + public void showTextInput(String titleText, String text, int textLength, String def, boolean numbers, Cons confirmed, Runnable closed) { + showTextInput(titleText, text, textLength, def, numbers, false, confirmed, closed); + } + + public void showTextInput(String titleText, String text, int textLength, String def, boolean numbers, boolean allowEmpty, Cons confirmed, Runnable closed){ if(mobile){ + var description = (text.startsWith("@") ? Core.bundle.get(text.substring(1)) : text); + var empty = allowEmpty; Core.input.getTextInput(new TextInput(){{ this.title = (titleText.startsWith("@") ? Core.bundle.get(titleText.substring(1)) : titleText); this.text = def; this.numeric = numbers; this.maxLength = textLength; this.accepted = confirmed; - this.allowEmpty = false; + this.canceled = closed; + this.allowEmpty = empty; + this.message = description; }}); }else{ new Dialog(titleText){{ @@ -293,11 +306,11 @@ public class UI implements ApplicationListener, Loadable{ buttons.button("@ok", () -> { confirmed.get(field.getText()); hide(); - }).disabled(b -> field.getText().isEmpty()); + }).disabled(b -> !allowEmpty && field.getText().isEmpty()); keyDown(KeyCode.enter, () -> { String text = field.getText(); - if(!text.isEmpty()){ + if(allowEmpty || !text.isEmpty()){ confirmed.get(text); hide(); } diff --git a/core/src/mindustry/core/World.java b/core/src/mindustry/core/World.java index c08c186b2b..92e3e46a8c 100644 --- a/core/src/mindustry/core/World.java +++ b/core/src/mindustry/core/World.java @@ -320,6 +320,7 @@ public class World{ state.rules.cloudColor = sector.planet.landCloudColor; state.rules.env = sector.planet.defaultEnv; + state.rules.planet = sector.planet; state.rules.hiddenBuildItems.clear(); state.rules.hiddenBuildItems.addAll(sector.planet.hiddenItems); sector.planet.applyRules(state.rules); @@ -365,8 +366,8 @@ public class World{ if(!headless){ if(state.teams.cores(checkRules.defaultTeam).size == 0 && !checkRules.pvp){ - ui.showErrorMessage(Core.bundle.format("map.nospawn", checkRules.defaultTeam.color, checkRules.defaultTeam.localized())); invalidMap = true; + ui.showErrorMessage(Core.bundle.format("map.nospawn", checkRules.defaultTeam.coloredName())); }else if(checkRules.pvp){ //pvp maps need two cores to be valid if(state.teams.getActive().count(TeamData::hasCore) < 2){ invalidMap = true; @@ -375,7 +376,7 @@ public class World{ }else if(checkRules.attackMode){ //attack maps need two cores to be valid invalidMap = state.rules.waveTeam.data().noCores(); if(invalidMap){ - ui.showErrorMessage(Core.bundle.format("map.nospawn.attack", checkRules.waveTeam.color, checkRules.waveTeam.localized())); + ui.showErrorMessage(Core.bundle.format("map.nospawn.attack", checkRules.waveTeam.coloredName())); } } }else{ diff --git a/core/src/mindustry/ctype/Content.java b/core/src/mindustry/ctype/Content.java index 46767ca25a..58a75b4dc8 100644 --- a/core/src/mindustry/ctype/Content.java +++ b/core/src/mindustry/ctype/Content.java @@ -44,6 +44,11 @@ public abstract class Content implements Comparable{ return minfo.mod == null; } + /** @return whether this content is from a mod. */ + public boolean isModded(){ + return !isVanilla(); + } + @Override public int compareTo(Content c){ return Integer.compare(id, c.id); diff --git a/core/src/mindustry/ctype/ContentType.java b/core/src/mindustry/ctype/ContentType.java index eb67a52003..136e5257e0 100644 --- a/core/src/mindustry/ctype/ContentType.java +++ b/core/src/mindustry/ctype/ContentType.java @@ -1,6 +1,7 @@ package mindustry.ctype; import arc.util.*; +import mindustry.ai.*; import mindustry.entities.bullet.*; import mindustry.type.*; import mindustry.world.*; @@ -22,7 +23,9 @@ public enum ContentType{ error(null), planet(Planet.class), ammo_UNUSED(null), - team(TeamEntry.class); + team(TeamEntry.class), + unitCommand(UnitCommand.class), + unitStance(UnitStance.class); public static final ContentType[] all = values(); diff --git a/core/src/mindustry/ctype/UnlockableContent.java b/core/src/mindustry/ctype/UnlockableContent.java index 566b625205..2692c28a94 100644 --- a/core/src/mindustry/ctype/UnlockableContent.java +++ b/core/src/mindustry/ctype/UnlockableContent.java @@ -6,6 +6,7 @@ import arc.graphics.*; import arc.graphics.g2d.*; import arc.graphics.g2d.TextureAtlas.*; import arc.scene.ui.layout.*; +import arc.struct.*; import arc.util.*; import mindustry.annotations.Annotations.*; import mindustry.content.TechTree.*; @@ -42,8 +43,12 @@ public abstract class UnlockableContent extends MappableContent{ public TextureRegion uiIcon; /** Icon of the full content. Unscaled.*/ public TextureRegion fullIcon; + /** Override for the full icon. Useful for mod content with duplicate icons. Overrides any other full icon.*/ + public String fullOverride = ""; /** The tech tree node for this content, if applicable. Null if not part of a tech tree. */ public @Nullable TechNode techNode; + /** Tech nodes for all trees that this content is part of. */ + public Seq techNodes = new Seq<>(); /** Unlock state. Loaded from settings. Do not modify outside of the constructor. */ protected boolean unlocked; @@ -59,17 +64,22 @@ public abstract class UnlockableContent extends MappableContent{ @Override public void loadIcon(){ fullIcon = + Core.atlas.find(fullOverride, Core.atlas.find(getContentType().name() + "-" + name + "-full", Core.atlas.find(name + "-full", Core.atlas.find(name, Core.atlas.find(getContentType().name() + "-" + name, - Core.atlas.find(name + "1"))))); + Core.atlas.find(name + "1")))))); uiIcon = Core.atlas.find(getContentType().name() + "-" + name + "-ui", fullIcon); } + public int getLogicId(){ + return logicVars.lookupLogicId(this); + } + public String displayDescription(){ - return minfo.mod == null ? description : description + "\n" + Core.bundle.format("mod.display", minfo.mod.meta.displayName()); + return minfo.mod == null ? description : description + "\n" + Core.bundle.format("mod.display", minfo.mod.meta.displayName); } /** Checks stat initialization state. Call before displaying stats. */ @@ -108,6 +118,7 @@ public abstract class UnlockableContent extends MappableContent{ var result = Pixmaps.outline(base, outlineColor, outlineRadius); Drawf.checkBleed(result); packer.add(page, regName, result); + result.dispose(); } } } @@ -119,6 +130,7 @@ public abstract class UnlockableContent extends MappableContent{ var result = Pixmaps.outline(base, outlineColor, outlineRadius); Drawf.checkBleed(result); packer.add(PageType.main, name, result); + result.dispose(); } } @@ -135,6 +147,11 @@ public abstract class UnlockableContent extends MappableContent{ return Fonts.getUnicodeStr(name); } + public int emojiChar(){ + return Fonts.getUnicode(name); + } + + public boolean hasEmoji(){ return Fonts.hasUnicodeStr(name); } diff --git a/core/src/mindustry/editor/DrawOperation.java b/core/src/mindustry/editor/DrawOperation.java index 8681c679ff..a49b09525e 100755 --- a/core/src/mindustry/editor/DrawOperation.java +++ b/core/src/mindustry/editor/DrawOperation.java @@ -56,7 +56,9 @@ public class DrawOperation{ void setTile(Tile tile, byte type, short to){ editor.load(() -> { if(type == OpType.floor.ordinal()){ - tile.setFloor((Floor)content.block(to)); + if(content.block(to) instanceof Floor floor){ + tile.setFloor(floor); + } }else if(type == OpType.block.ordinal()){ tile.getLinkedTiles(t -> editor.renderer.updatePoint(t.x, t.y)); diff --git a/core/src/mindustry/editor/EditorTool.java b/core/src/mindustry/editor/EditorTool.java index 1ea88bd7ac..50c7a2aca9 100644 --- a/core/src/mindustry/editor/EditorTool.java +++ b/core/src/mindustry/editor/EditorTool.java @@ -92,7 +92,7 @@ public enum EditorTool{ }); } }, - fill(KeyCode.g, "replaceall", "fillteams"){ + fill(KeyCode.g, "replaceall", "fillteams", "fillerase"){ { edit = true; } @@ -104,13 +104,15 @@ public enum EditorTool{ if(!Structs.inBounds(x, y, editor.width(), editor.height())) return; Tile tile = editor.tile(x, y); - if(editor.drawBlock.isMultiblock()){ + if(tile == null) return; + + if(editor.drawBlock.isMultiblock() && (mode == 0 || mode == -1)){ //don't fill multiblocks, thanks pencil.touched(x, y); return; } - //mode 0 or 1, fill everything with the floor/tile or replace it + //mode 0 or standard, fill everything with the floor/tile or replace it if(mode == 0 || mode == -1){ //can't fill parts or multiblocks if(tile.block().isMultiblock()){ @@ -147,6 +149,27 @@ public enum EditorTool{ if(dest == editor.drawTeam) return; fill(x, y, true, t -> t.getTeamID() == dest.id && t.synthetic(), t -> t.setTeam(editor.drawTeam)); } + }else if(mode == 2){ //erase mode + Boolf tester; + Cons setter; + + if(tile.block() != Blocks.air){ + Block dest = tile.block(); + tester = t -> t.block() == dest; + setter = t -> t.setBlock(Blocks.air); + }else if(tile.overlay() != Blocks.air){ + Block dest = tile.overlay(); + tester = t -> t.overlay() == dest; + setter = t -> t.setOverlay(Blocks.air); + }else{ + //trying to erase floor (no) + tester = null; + setter = null; + } + + if(setter != null){ + fill(x, y, false, tester, setter); + } } } diff --git a/core/src/mindustry/editor/MapEditor.java b/core/src/mindustry/editor/MapEditor.java index 96418def2f..38839e6108 100644 --- a/core/src/mindustry/editor/MapEditor.java +++ b/core/src/mindustry/editor/MapEditor.java @@ -74,7 +74,7 @@ public class MapEditor{ for(int i = 0; i < tiles.width * tiles.height; i++){ Tile tile = tiles.geti(i); var build = tile.build; - if(build != null){ + if(build != null && tile.isCenter()){ builds.add(build); } tiles.seti(i, new EditorTile(tile.x, tile.y, tile.floorID(), tile.overlayID(), build == null ? tile.blockID() : 0)); @@ -301,6 +301,14 @@ public class MapEditor{ if(previous.in(px, py)){ tiles.set(x, y, previous.getn(px, py)); Tile tile = tiles.getn(x, y); + + Object config = null; + + //fetch the old config first, configs can be relative to block position (tileX/tileY) before those are reassigned + if(tile.build != null && tile.isCenter()){ + config = tile.build.config(); + } + tile.x = (short)x; tile.y = (short)y; @@ -309,9 +317,12 @@ public class MapEditor{ tile.build.y = y * tilesize + tile.block().offset; //shift links to account for map resize - Object config = tile.build.config(); if(config != null){ - Object out = BuildPlan.pointConfig(tile.block(), config, p -> p.sub(offsetX, offsetY)); + Object out = BuildPlan.pointConfig(tile.block(), config, p -> { + if(!tile.build.block.ignoreResizeConfig){ + p.sub(offsetX, offsetY); + } + }); if(out != config){ tile.build.configureAny(out); } diff --git a/core/src/mindustry/editor/MapEditorDialog.java b/core/src/mindustry/editor/MapEditorDialog.java index 1d30d18d82..a4c2de9dc3 100644 --- a/core/src/mindustry/editor/MapEditorDialog.java +++ b/core/src/mindustry/editor/MapEditorDialog.java @@ -211,11 +211,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ margin(0); update(() -> { - if(Core.scene.getKeyboardFocus() instanceof Dialog && Core.scene.getKeyboardFocus() != this){ - return; - } - - if(Core.scene != null && Core.scene.getKeyboardFocus() == this){ + if(hasKeyboard()){ doInput(); } }); @@ -803,7 +799,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ } if(i == 0){ - blockSelection.add("@none.found").color(Color.lightGray).padLeft(54f).padTop(10f); + blockSelection.add("@none.found").padLeft(54f).padTop(10f); } } } diff --git a/core/src/mindustry/editor/MapInfoDialog.java b/core/src/mindustry/editor/MapInfoDialog.java index 2c7e4e46ab..ebc1f0b300 100644 --- a/core/src/mindustry/editor/MapInfoDialog.java +++ b/core/src/mindustry/editor/MapInfoDialog.java @@ -7,21 +7,22 @@ import mindustry.game.*; import mindustry.gen.*; import mindustry.io.*; import mindustry.maps.filters.*; +import mindustry.type.*; import mindustry.ui.*; import mindustry.ui.dialogs.*; import static mindustry.Vars.*; public class MapInfoDialog extends BaseDialog{ - private final WaveInfoDialog waveInfo; - private final MapGenerateDialog generate; - private final CustomRulesDialog ruleInfo = new CustomRulesDialog(); - private final MapObjectivesDialog objectives = new MapObjectivesDialog(); + private WaveInfoDialog waveInfo = new WaveInfoDialog(); + private MapGenerateDialog generate = new MapGenerateDialog(false); + private CustomRulesDialog ruleInfo = new CustomRulesDialog(); + private MapObjectivesDialog objectives = new MapObjectivesDialog(); + private MapLocalesDialog locales = new MapLocalesDialog(); + private MapProcessorsDialog processors = new MapProcessorsDialog(); public MapInfoDialog(){ super("@editor.mapinfo"); - this.waveInfo = new WaveInfoDialog(); - this.generate = new MapGenerateDialog(false); addCloseButton(); @@ -94,6 +95,24 @@ public class MapInfoDialog extends BaseDialog{ }); hide(); }).marginLeft(10f); + + r.row(); + + r.button("@editor.locales", Icon.fileText, style, () -> { + try{ + MapLocales res = JsonIO.read(MapLocales.class, editor.tags.get("locales", "{}")); + locales.show(res); + }catch(Throwable e){ + locales.show(new MapLocales()); + ui.showException(e); + } + hide(); + }).marginLeft(10f); + + r.button("@editor.worldprocessors", Icon.logic, style, () -> { + hide(); + processors.show(); + }).marginLeft(10f); }).colspan(2).center(); name.change(); diff --git a/core/src/mindustry/editor/MapLoadDialog.java b/core/src/mindustry/editor/MapLoadDialog.java index 1217c87020..69acd8ed00 100644 --- a/core/src/mindustry/editor/MapLoadDialog.java +++ b/core/src/mindustry/editor/MapLoadDialog.java @@ -1,9 +1,11 @@ package mindustry.editor; +import arc.*; import arc.func.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; import arc.util.*; +import mindustry.gen.*; import mindustry.maps.*; import mindustry.ui.*; import mindustry.ui.dialogs.*; @@ -11,65 +13,60 @@ import mindustry.ui.dialogs.*; import static mindustry.Vars.*; public class MapLoadDialog extends BaseDialog{ - private Map selected = null; + private @Nullable Map selected = null; public MapLoadDialog(Cons loader){ super("@editor.loadmap"); shown(this::rebuild); + hidden(() -> selected = null); + onResize(this::rebuild); - TextButton button = new TextButton("@load"); - button.setDisabled(() -> selected == null); - button.clicked(() -> { + buttons.defaults().size(210f, 64f); + buttons.button("@cancel", Icon.cancel, this::hide); + buttons.button("@load", Icon.ok, () -> { if(selected != null){ loader.get(selected); hide(); } - }); - - buttons.defaults().size(200f, 50f); - buttons.button("@cancel", this::hide); - buttons.add(button); + }).disabled(b -> selected == null); addCloseListener(); + makeButtonOverlay(); } public void rebuild(){ cont.clear(); - if(maps.all().size > 0){ - selected = maps.all().first(); - } - - ButtonGroup group = new ButtonGroup<>(); - - int maxcol = 3; + ButtonGroup