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..6d4dbbea84 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -33,6 +33,7 @@ jobs: ./gradlew updateBundles if [ -n "$(git status --porcelain)" ]; then + git config --global user.name "Github Actions" git add core/assets/bundles/* git commit -m "Automatic bundle update" git push @@ -52,8 +53,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 2afe0b887e..f18655ff14 100644 --- a/SERVERLIST.md +++ b/SERVERLIST.md @@ -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_v7.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/src/mindustry/android/AndroidLauncher.java b/android/src/mindustry/android/AndroidLauncher.java index da3944fe06..7febad64a7 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)); } } diff --git a/build.gradle b/build.gradle index 4ad56f59ff..d051101a24 100644 --- a/build.gradle +++ b/build.gradle @@ -106,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 = { @@ -185,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 @@ -326,7 +326,7 @@ project(":core"){ annotationProcessor 'com.github.Anuken:jabel:0.9.0' compileOnly project(":annotations") - kapt project(":annotations") + if(!project.hasProperty("noKapt")) kapt project(":annotations") } afterEvaluate{ @@ -381,6 +381,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" } 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/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/bundles/bundle.properties b/core/assets/bundles/bundle.properties index f9d668db70..cbf4f022d1 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -444,6 +444,7 @@ editor.waves = Waves editor.rules = Rules editor.generation = Generation editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -500,6 +501,7 @@ editor.default = [lightgray] details = Details... edit = Edit variables = Vars +logic.globals = Built-in Variables editor.name = Name: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -511,6 +513,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 @@ -522,6 +525,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. @@ -610,6 +614,24 @@ filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +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: menu = Menu @@ -661,10 +683,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 @@ -715,7 +739,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 @@ -752,8 +776,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}[] @@ -975,17 +999,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.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 = Repair Suppression +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +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 @@ -1028,15 +1082,15 @@ 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}x[lightgray] ammo multiplier bullet.reload = [stat]{0}%[lightgray] fire rate bullet.range = [stat]{0}[lightgray] tiles range @@ -1135,7 +1189,7 @@ 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 @@ -1183,15 +1237,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1290,6 +1345,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) @@ -1323,6 +1379,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 @@ -1543,6 +1602,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 @@ -1785,7 +1845,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 @@ -1845,7 +1904,7 @@ hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to manually cont 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. @@ -1906,6 +1965,7 @@ onset.turrets = Units are effective, but [accent]turrets[] provide better defens 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. @@ -2111,7 +2171,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. @@ -2149,7 +2208,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. @@ -2270,6 +2328,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. @@ -2292,6 +2351,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. @@ -2306,7 +2367,51 @@ 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. +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. @@ -2350,6 +2455,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. @@ -2458,3 +2564,11 @@ 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.within = Check if unit is near a position. lenum.boost = Start/stop boosting. + +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 344fadea63..b1a94fc891 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -433,6 +433,7 @@ editor.waves = Хвалі: editor.rules = Правілы: editor.generation = Генерацыя: editor.objectives = Мэты +editor.locales = Locale Bundles editor.ingame = Рэдагаваць ў гульні editor.playtest = Тэставаць editor.publish.workshop = Апублікаваць у майстэрні @@ -488,6 +489,7 @@ editor.default = [lightgray]<Па змаўчанні> details = Падрабязнасці... edit = Рэдагаваць... variables = Пераменныя +logic.globals = Built-in Variables editor.name = Назва: editor.spawn = Стварыць баявую адзінку editor.removeunit = Выдаліць баявую адзінку @@ -499,6 +501,7 @@ editor.errorlegacy = Гэтая карта занадта старая і вык editor.errornot = Гэта не файл карты. editor.errorheader = Гэты файл карты ня дзейнічае або пашкоджаны. editor.errorname = Карта не мае імя. Можа быць, Вы спрабуеце загрузіць захаванне? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Абнавіць editor.randomize = Выпадкова editor.moveup = Рухацца Уверх @@ -510,6 +513,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 = Ваша карта не можа быць запісана па-над убудаванай карты! Калі ласка, увядзіце іншую назву ў меню «Інфармацыя аб карце» @@ -594,6 +598,23 @@ filter.option.floor2 = Другая паверхню filter.option.threshold2 = Другасны гранічны парог filter.option.radius = Радыус filter.option.percentile = Процентль +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 = Вышыня: @@ -644,10 +665,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} @@ -694,7 +717,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 = Туман @@ -730,7 +753,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}[] @@ -948,17 +972,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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Энэргетычнае Поле -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 = Патрабуецца свідар лепей @@ -1108,7 +1161,7 @@ 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 = Непразрыстасць лазераў энергазабеспячэння @@ -1154,15 +1207,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = Меню Схем @@ -1260,6 +1314,7 @@ rules.unitdamagemultiplier = Множнік страт баяв. адз. rules.unitcrashdamagemultiplier = Множнік Падрыўнога Пашкоджання Юніта rules.solarmultiplier = Множнік Сонечнай Энергіі rules.unitcapvariable = Ядра Спрыяюць Колькасці Юнітаў +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Асноўная Колькасць Юнітаў rules.limitarea = Абмежаваць Вобласць Мапы rules.enemycorebuildradius = Радыус абароны варожае. ядраў: [lightgray] (блок.) @@ -1292,6 +1347,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 = Вадкасці @@ -1509,6 +1566,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 шлюз @@ -1749,7 +1807,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 = Рэфабрыкатар Суднаў @@ -1867,6 +1924,7 @@ 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. @@ -2066,7 +2124,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. @@ -2102,7 +2159,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. @@ -2219,6 +2275,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. @@ -2241,6 +2298,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. @@ -2256,6 +2315,43 @@ 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. @@ -2294,6 +2390,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. @@ -2387,3 +2484,10 @@ lenum.build = Пабудаваць структуру. lenum.getblock = Атрымаць будынак і яго тып у каардынатах.\nАдзінка павінна быць у дыяпазоне ад каардынат.\nЦвердыя не будынкі павінны мець тып [accent]@solid[]. lenum.within = Правярае калі адзінка знаходзіцца каля каардынат. lenum.boost = Пачаць/перастаць узлятаць. +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 83acf8215c..eafedcdd6b 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -438,6 +438,7 @@ editor.waves = Вълни: editor.rules = Правила: editor.generation = Генериране: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Редактирай в игра editor.playtest = Playtest editor.publish.workshop = Публикувай в Работилницата @@ -494,6 +495,7 @@ editor.default = [lightgray]<Стандартно> details = Детайли... edit = Редактирай... variables = Vars +logic.globals = Built-in Variables editor.name = Име: editor.spawn = Създай Единица editor.removeunit = Премахни Единица @@ -505,6 +507,7 @@ editor.errorlegacy = Тази карта е твърде стара, играт editor.errornot = Този файл не е карта. editor.errorheader = Този файл с карта е повреден или невалиден. editor.errorname = Картата няма зададено име. Да не се опитвате да заредите игра? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Обнови editor.randomize = Случайно editor.moveup = Move Up @@ -516,6 +519,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 = Съществува стандартна карта с такова име! Изберете различно име от 'Информация за картата' от менюто. @@ -600,6 +604,23 @@ filter.option.floor2 = Втори под filter.option.threshold2 = Втори праг filter.option.radius = Радиус filter.option.percentile = Перцентил +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 = Височина: @@ -650,10 +671,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} @@ -701,7 +724,7 @@ error.any = Неизвестна мрежова грешка. error.bloom = Неуспешно инициализиране на Сияния.\nВашето устройство може да не поддържа този ефект. weather.rain.name = Дъжд -weather.snow.name = Сняг +weather.snowing.name = Сняг weather.sandstorm.name = Пясъчна буря weather.sporestorm.name = Спорова буря weather.fog.name = Мъгла @@ -737,8 +760,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}[] @@ -959,17 +982,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1120,7 +1172,7 @@ 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 = Плътност на Енергийните Лазери @@ -1166,15 +1218,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = Меню със Схеми @@ -1272,6 +1325,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] (полета) @@ -1304,6 +1358,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 = Течности @@ -1521,6 +1577,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 = Обратна Преливаща Порта @@ -1761,7 +1818,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 @@ -1880,6 +1936,7 @@ 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. @@ -2079,7 +2136,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. @@ -2115,7 +2171,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. @@ -2234,6 +2289,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[] върху посочен блок за съобщение. @@ -2256,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. @@ -2271,6 +2329,43 @@ 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]Действия за строене на единици не са позволени тук. @@ -2313,6 +2408,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 = Деление с цели числа. @@ -2418,3 +2514,10 @@ lenum.build = Построй структура. lenum.getblock = Преверете типът на постройката на дадени координати.\nПозицията трябва да е в обхвата на единицата.\nСолидни не-сгради ще имат типа [accent]@solid[]. lenum.within = Проверете дали дадена позиция е в обхват на единицата. lenum.boost = Започни/Спри ускорението. +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 98a4fc40ef..149756ce51 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -438,6 +438,7 @@ editor.waves = Onades editor.rules = Regles editor.generation = Generació editor.objectives = Objectius +editor.locales = Locale Bundles editor.ingame = Edita des de la partida editor.playtest = Prova el mapa editor.publish.workshop = Publica al Workshop @@ -494,6 +495,7 @@ editor.default = [lightgray] details = Detalls edit = Edita variables = Variables +logic.globals = Built-in Variables editor.name = Nom: editor.spawn = Genera una unitat editor.removeunit = Treu una unitat @@ -505,6 +507,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 = Error reading invalid locale bundles. editor.update = Actualitza editor.randomize = Assigna a l’atzar editor.moveup = Mou amunt @@ -516,6 +519,7 @@ editor.sectorgenerate = Generació del sector editor.resize = Canvia la mida editor.loadmap = Carrega un mapa editor.savemap = Desa el mapa +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? 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». @@ -603,6 +607,23 @@ filter.option.floor2 = Terra secundari filter.option.threshold2 = Llindar secundari filter.option.radius = Radi filter.option.percentile = Percentil +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 = Amplada: height = Alçada: @@ -653,10 +674,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 = Texture marker.background = Fons marker.outline = Contorn @@ -705,7 +728,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 @@ -741,8 +764,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}[] @@ -963,17 +986,46 @@ stat.immunities = Immunitats stat.healing = Reparador ability.forcefield = Camp de força +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repara el camp de força +ability.repairfield.description = Repairs nearby units ability.statusfield = Estat del camp +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Fàbrica +ability.unitspawn.description = Constructs units ability.shieldregenfield = Regenerador de camps de força +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Moviment llampec +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Escut de descàrregues +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Camp de força -ability.energyfield.sametypehealmultiplier = [lightgray]Mateix tipus de guarició: [white]{0} % -ability.energyfield.maxtargets = [lightgray]Objectius màx.: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneració +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 = Només es permet depositar al nucli. bar.drilltierreq = Cal una perforadora millor. @@ -1123,7 +1175,7 @@ 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 @@ -1169,15 +1221,16 @@ 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 = Comportament: Mou -keybind.unit_command_repair = Comportament: Repara -keybind.unit_command_rebuild = Comportament: Reconstrueix -keybind.unit_command_assist = Comportament: Assisteix -keybind.unit_command_mine = Comportament: Extrau -keybind.unit_command_boost = Comportament: Sobrevola -keybind.unit_command_load_units = Comportament: Carrega unitats -keybind.unit_command_load_blocks = Comportament: Carrega blocs -keybind.unit_command_unload_payload = Comportament: Descarrega +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 = Reconstrueix la regió keybind.schematic_select.name = Selecciona una regió keybind.schematic_menu.name = Menú de plànols @@ -1275,6 +1328,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 = Carried Payloads Explode With The Unit rules.unitcap = Capacitat base d’unitats rules.limitarea = Limita l’àrea del mapa rules.enemycorebuildradius = Radi de no construcció del nucli enemic:[lightgray] (caselles) @@ -1307,6 +1361,8 @@ rules.weather = Estat meteorològic rules.weather.frequency = Freqüència: rules.weather.always = Sempre rules.weather.duration = Durada: +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 = Elements content.liquid.name = Fluids @@ -1528,6 +1584,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 @@ -1770,7 +1827,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 @@ -1889,6 +1945,7 @@ 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ó. @@ -2089,7 +2146,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. @@ -2125,7 +2181,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. @@ -2244,6 +2299,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 = 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 = 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. @@ -2266,6 +2322,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 = Check if a type of weather is active. +lst.weatherset = Set the current state of a type of weather. 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. @@ -2281,6 +2339,43 @@ lst.effect = Crea un efecte de particula. 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 = 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]Aquí no es permet construir blocs de tipus lògic. @@ -2323,6 +2418,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 = Draws text from the print buffer.\nClears the print buffer. lenum.always = Sempre cert. lenum.idiv = Divisió entera. @@ -2431,3 +2527,10 @@ 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.within = Comprova si la unitat està a prop d’una posició. lenum.boost = Inicia/Detén el vol. +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 b6b77cb5de..60ea6f6682 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -153,12 +153,12 @@ mod.unmetdependencies = [red]Nesplněné Dependencies mod.erroredcontent = [scarlet]V obsahu jsou chyby[] mod.circulardependencies = [red]Kruhové Dependencies mod.incompletedependencies = [red]Nedokončené 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.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. @@ -261,13 +261,13 @@ 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 = Names: +trace.names = Jména: invalidid = Neplatná adresa IP klienta! Zašli prosím zprávu o chybě. player.ban = Ban -player.kick = Kick +player.kick = Vyhodit player.trace = Trace -player.admin = Toggle Admin -player.team = Change Team +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 @@ -340,13 +340,14 @@ ok = OK open = Otevřít customize = Přizpůsobit pravidla cancel = Zrušit -command = Command -command.queue = [lightgray][Queuing] -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 @@ -362,7 +363,7 @@ 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. @@ -383,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}[] @@ -438,6 +439,7 @@ editor.waves = Vln: editor.rules = Pravidla: editor.generation = Generace: editor.objectives = Úkoly: +editor.locales = Locale Bundles editor.ingame = Upravit ve hře editor.playtest = Playtest editor.publish.workshop = Publikovat do Workshopu na Steamu @@ -494,6 +496,7 @@ editor.default = [lightgray][] details = Podrobnosti... edit = Upravit... variables = Hodnoty +logic.globals = Built-in Variables editor.name = Jméno: editor.spawn = Zrodit jednotku editor.removeunit = Odstranit jednotku @@ -505,6 +508,7 @@ editor.errorlegacy = Tato mapa je příliš stará a používá formát mapy, kt 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 = Pohyb Nahoru @@ -516,6 +520,7 @@ 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ě". @@ -601,6 +606,23 @@ filter.option.floor2 = Druhotný povrch filter.option.threshold2 = Druhotný práh filter.option.radius = Poloměr filter.option.percentile = Percentil +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: @@ -651,10 +673,12 @@ 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 = Minimapa +marker.point.name = Point marker.shape.name = Tvar marker.text.name = Text 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} @@ -684,7 +708,7 @@ 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... @@ -702,7 +726,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 @@ -714,8 +738,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: @@ -738,8 +762,8 @@ 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 = 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}[] @@ -792,43 +816,43 @@ sector.windsweptIslands.description = Vzdálen od pevniny je tento řetízek ost 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 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í @@ -960,17 +984,46 @@ 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.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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energetické pole -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1121,7 +1174,7 @@ 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 @@ -1167,15 +1220,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1273,6 +1327,7 @@ rules.unitdamagemultiplier = Násobek poškození jednotkami 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)[] @@ -1305,6 +1360,8 @@ 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 @@ -1524,6 +1581,7 @@ block.inverted-sorter.name = Obrácená třídička block.message.name = Zpráva 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 @@ -1764,7 +1822,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabrikátor block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator block.ship-refabricator.name = Ship Refabricator @@ -1883,6 +1940,7 @@ 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. @@ -2083,7 +2141,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. @@ -2119,7 +2176,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. @@ -2238,6 +2294,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. @@ -2260,6 +2317,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. @@ -2275,6 +2334,43 @@ 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é. @@ -2317,6 +2413,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í. @@ -2425,3 +2522,10 @@ 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.within = Zkontrolovat, jestli jednotka je blízko dané pozice. lenum.boost = Začít/Přestat posilovat. +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 2bdc8da595..cb118a0b54 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -434,6 +434,7 @@ editor.waves = Bølge: editor.rules = Regler: editor.generation = Generering: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Ændr i spil editor.playtest = Playtest editor.publish.workshop = Publicer på Workshop @@ -489,6 +490,7 @@ editor.default = [lightgray] details = Detaljer... edit = Rediger... variables = Vars +logic.globals = Built-in Variables editor.name = Navn: editor.spawn = Påkald enhed editor.removeunit = Fjern enhed @@ -500,6 +502,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 @@ -511,6 +514,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. @@ -595,6 +599,23 @@ filter.option.floor2 = Sekundært gulv filter.option.threshold2 = Sekundær terskel filter.option.radius = Radius filter.option.percentile = Percentil +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: @@ -645,10 +666,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} @@ -695,7 +718,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 @@ -731,7 +754,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}[] @@ -949,17 +973,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1110,7 +1163,7 @@ 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 @@ -1156,15 +1209,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1262,6 +1316,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) @@ -1294,6 +1349,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 @@ -1511,6 +1568,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 @@ -1751,7 +1809,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 @@ -1869,6 +1926,7 @@ 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. @@ -2066,7 +2124,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. @@ -2102,7 +2159,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. @@ -2219,6 +2275,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. @@ -2241,6 +2298,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. @@ -2256,6 +2315,43 @@ 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. @@ -2294,6 +2390,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. @@ -2387,3 +2484,10 @@ 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. +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 e87333434a..4713fb1e5a 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -441,6 +441,7 @@ editor.waves = Wellen editor.rules = Regeln editor.generation = Generator editor.objectives = Ziele +editor.locales = Locale Bundles editor.ingame = Im Spiel bearbeiten editor.playtest = Playtest editor.publish.workshop = Im Workshop veröffentlichen @@ -497,6 +498,7 @@ editor.default = [lightgray] details = Details edit = Bearbeiten variables = Variablen +logic.globals = Built-in Variables editor.name = Name: editor.spawn = Spawnbereich editor.removeunit = Bereich entfernen @@ -508,6 +510,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 @@ -519,6 +522,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ü. @@ -606,6 +610,23 @@ filter.option.floor2 = Sekundärer Boden filter.option.threshold2 = Sekundärer Grenzwert filter.option.radius = Radius filter.option.percentile = Perzentil +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: @@ -658,10 +679,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 @@ -712,7 +735,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 @@ -749,8 +772,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}[] @@ -972,17 +995,46 @@ stat.immunities = Immunitäten stat.healing = Heilung ability.forcefield = Kraftfeld +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Heilungsfeld +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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energiefeld -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1133,7 +1185,7 @@ 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 @@ -1179,15 +1231,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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ü @@ -1285,6 +1338,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) @@ -1317,6 +1371,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 @@ -1538,6 +1594,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 @@ -1780,7 +1837,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 @@ -1903,6 +1959,7 @@ 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. @@ -2110,7 +2167,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. @@ -2148,7 +2204,6 @@ block.impact-drill.description = Baut unbefristet Erze in Schüben aus dem Boden 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. @@ -2269,6 +2324,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. @@ -2291,6 +2347,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. @@ -2306,6 +2364,43 @@ 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. @@ -2349,6 +2444,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. @@ -2457,3 +2553,10 @@ 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.within = Prüft, ob eine Einheit in einem Radius um einen Punkt ist. lenum.boost = Aktiviert / deaktiviert den Boost. +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 4c34ddbde4..ce0c335822 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -438,6 +438,7 @@ editor.waves = Oleadas: editor.rules = Normas: editor.generation = Generación: editor.objectives = Objetivos +editor.locales = Locale Bundles editor.ingame = Editar desde la nave editor.playtest = Probar mapa editor.publish.workshop = Publicar en Steam Workshop @@ -494,6 +495,7 @@ editor.default = [lightgray] details = Detalles... edit = Editar... variables = Variables +logic.globals = Built-in Variables editor.name = Nombre: editor.spawn = Generar unidad editor.removeunit = Eliminar unidad @@ -505,6 +507,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 @@ -516,6 +519,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'. @@ -603,6 +607,23 @@ filter.option.floor2 = Terreno secundario filter.option.threshold2 = Umbral secundario filter.option.radius = Radio filter.option.percentile = Percentil +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: @@ -655,10 +676,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 @@ -709,7 +732,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 @@ -745,8 +768,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}[] @@ -969,17 +992,46 @@ stat.immunities = Inmune a stat.healing = Curación ability.forcefield = Área de Escudo +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Área de Reparación +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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Campo de Energía -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 = Sólo se permite depositar en el núcleo bar.drilltierreq = Requiere un taladro mejor @@ -1129,7 +1181,7 @@ 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 @@ -1175,15 +1227,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1281,6 +1334,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) @@ -1313,6 +1367,8 @@ 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 = Prevents units from depositing items into any buildings except cores. content.item.name = Objetos content.liquid.name = Líquidos @@ -1534,6 +1590,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 @@ -1776,7 +1833,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 @@ -1896,6 +1952,7 @@ 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. @@ -2102,7 +2159,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. @@ -2140,7 +2196,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. @@ -2262,6 +2317,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. @@ -2284,6 +2340,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. @@ -2299,6 +2357,43 @@ 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. @@ -2342,6 +2437,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. @@ -2450,3 +2546,10 @@ 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.within = Comprueba si una unidad se encuentra cerca de una posición. lenum.boost = Iniciar/Detener vuelo. +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 3b9c3781fb..6e5dc5c842 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -434,6 +434,7 @@ editor.waves = Lahingulained: editor.rules = Reeglid: editor.generation = Genereerimine: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Redigeeri mängus editor.playtest = Playtest editor.publish.workshop = Avalda Workshop'is @@ -489,6 +490,7 @@ editor.default = [lightgray] details = Üksikasjad... edit = Muuda... variables = Vars +logic.globals = Built-in Variables editor.name = Nimi: editor.spawn = Tekita väeüksus editor.removeunit = Eemalda väeüksus @@ -500,6 +502,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 @@ -511,6 +514,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". @@ -595,6 +599,23 @@ filter.option.floor2 = Teine põrand filter.option.threshold2 = Teine lävi filter.option.radius = Raadius filter.option.percentile = Protsentiil +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: @@ -645,10 +666,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} @@ -695,7 +718,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 @@ -731,7 +754,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}[] @@ -949,17 +973,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1110,7 +1163,7 @@ 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 @@ -1156,15 +1209,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1262,6 +1316,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) @@ -1294,6 +1349,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 @@ -1511,6 +1568,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 @@ -1751,7 +1809,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 @@ -1869,6 +1926,7 @@ 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. @@ -2068,7 +2126,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. @@ -2104,7 +2161,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. @@ -2221,6 +2277,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. @@ -2243,6 +2300,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. @@ -2258,6 +2317,43 @@ 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. @@ -2296,6 +2392,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. @@ -2389,3 +2486,10 @@ 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. +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 e8d9787f85..20dcfa9f68 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -436,6 +436,7 @@ editor.waves = Boladak: editor.rules = Arauak: editor.generation = Sorrarazi: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Editatu jolasean editor.playtest = Playtest editor.publish.workshop = Argitaratu lantegian @@ -491,6 +492,7 @@ editor.default = [lightgray] details = Xehetasunak... edit = Editatu... variables = Vars +logic.globals = Built-in Variables editor.name = Izena: editor.spawn = Sortu unitatea editor.removeunit = Kendu unitatea @@ -502,6 +504,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 @@ -513,6 +516,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. @@ -597,6 +601,23 @@ filter.option.floor2 = Bigarren zorua filter.option.threshold2 = Bigarren atalasea filter.option.radius = Erradioa filter.option.percentile = Pertzentila +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: @@ -647,10 +668,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} @@ -697,7 +720,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 @@ -733,7 +756,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}[] @@ -951,17 +975,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1112,7 +1165,7 @@ 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 @@ -1158,15 +1211,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1264,6 +1318,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) @@ -1296,6 +1351,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 @@ -1513,6 +1570,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 @@ -1753,7 +1811,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 @@ -1871,6 +1928,7 @@ 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. @@ -2070,7 +2128,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. @@ -2106,7 +2163,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. @@ -2223,6 +2279,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. @@ -2245,6 +2302,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. @@ -2260,6 +2319,43 @@ 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. @@ -2298,6 +2394,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. @@ -2391,3 +2488,10 @@ 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. +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 f8dc7f471d..b81ad76e72 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -434,6 +434,7 @@ editor.waves = Tasot: editor.rules = Säännöt: editor.generation = Generaatio: editor.objectives = Tehtävät +editor.locales = Locale Bundles editor.ingame = Muokka pelin sisällä editor.playtest = Testaa pelin sisällä editor.publish.workshop = Julkaise Workshoppiin @@ -489,6 +490,7 @@ editor.default = [lightgray] details = Yksityiskohdat... edit = Muokkaa... variables = Muuttujat +logic.globals = Built-in Variables editor.name = Nimi: editor.spawn = Luo yksikkö editor.removeunit = Poista yksikkö @@ -500,6 +502,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 @@ -511,6 +514,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. @@ -595,6 +599,23 @@ filter.option.floor2 = Toinen lattia filter.option.threshold2 = Toissijainen raja-arvo filter.option.radius = Säde filter.option.percentile = Prosentti +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: @@ -645,10 +666,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} @@ -695,7 +718,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 @@ -731,7 +754,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}[] @@ -948,17 +972,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energiakenttä -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1109,7 +1162,7 @@ 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 @@ -1155,15 +1208,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1261,6 +1315,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) @@ -1293,6 +1348,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 @@ -1512,6 +1569,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 @@ -1753,7 +1811,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 @@ -1871,6 +1928,7 @@ 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. @@ -2071,7 +2129,6 @@ 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. @@ -2107,7 +2164,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. @@ -2224,6 +2280,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. @@ -2246,6 +2303,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. @@ -2261,6 +2320,43 @@ 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. @@ -2299,6 +2395,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. @@ -2392,3 +2489,10 @@ 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.within = Tarkista, onko joukko tietyn sijainnin lähellä. lenum.boost = Aloita tai lopeta tehostus. +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 0920a69b5e..18b9fd2aab 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -434,6 +434,7 @@ editor.waves = Waves: editor.rules = Rules: editor.generation = Generation: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = I-Publish Sa Workshop @@ -489,6 +490,7 @@ editor.default = [lightgray] details = Details... edit = Edit... variables = Vars +logic.globals = Built-in Variables editor.name = Name: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -500,6 +502,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 @@ -511,6 +514,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'. @@ -595,6 +599,23 @@ filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +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: @@ -645,10 +666,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} @@ -695,7 +718,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 @@ -731,7 +754,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}[] @@ -948,17 +972,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1109,7 +1162,7 @@ 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 @@ -1155,15 +1208,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1261,6 +1315,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) @@ -1293,6 +1348,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 @@ -1510,6 +1567,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 @@ -1750,7 +1808,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 @@ -1868,6 +1925,7 @@ 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. @@ -2067,7 +2125,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. @@ -2103,7 +2160,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. @@ -2220,6 +2276,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. @@ -2242,6 +2299,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. @@ -2257,6 +2316,43 @@ 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. @@ -2295,6 +2391,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. @@ -2388,3 +2485,10 @@ 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. +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 6c4629d828..3ff26c05c4 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -444,6 +444,7 @@ editor.waves = Vagues editor.rules = Règles editor.generation = Génération editor.objectives = Objectifs +editor.locales = Locale Bundles editor.ingame = Éditer dans le jeu editor.playtest = Tester editor.publish.workshop = Publier sur le Workshop @@ -500,6 +501,7 @@ editor.default = [lightgray] details = Détails... edit = Modifier... variables = Variables +logic.globals = Built-in Variables editor.name = Nom : editor.spawn = Ajouter une unité editor.removeunit = Retirer l'unité @@ -511,6 +513,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 @@ -522,6 +525,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'. @@ -609,6 +613,23 @@ filter.option.floor2 = Sol secondaire filter.option.threshold2 = Seuil secondaire filter.option.radius = Rayon filter.option.percentile = Pourcentage +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 : @@ -661,10 +682,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 @@ -715,7 +738,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 @@ -752,8 +775,8 @@ 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: l'espace manquant dans la ligne ci-dessous est intentionnel -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}[] @@ -975,17 +998,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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Champ d'énergie -ability.energyfield.sametypehealmultiplier = [lightgray]Soins des Unités du Même Type: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Cibles Maximales: [white]{0} +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 @@ -1135,7 +1187,7 @@ 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 @@ -1182,16 +1234,16 @@ 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 = Commande: Bouger -keybind.unit_command_repair = Commande: Réparer -keybind.unit_command_rebuild = Commande: Reconstruire -keybind.unit_command_assist = Commande: Assister -keybind.unit_command_mine = Commande: Miner -keybind.unit_command_boost = Commande: Boost -keybind.unit_command_load_units = Commande: Transporter unités -keybind.unit_command_load_blocks = Commande: Transporter blocs -keybind.unit_command_unload_payload = Commande: Poser chargement +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 @@ -1290,6 +1342,7 @@ 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.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) @@ -1322,6 +1375,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 @@ -1543,6 +1598,7 @@ 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.underflow-gate.name = Barrière de Refoulement @@ -1785,7 +1841,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 @@ -1906,6 +1961,7 @@ onset.turrets = Les unités sont efficaces, mais les [accent]tourelles[] ont de 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.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. @@ -2111,7 +2167,6 @@ 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. @@ -2149,7 +2204,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. @@ -2270,6 +2324,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. @@ -2292,6 +2347,8 @@ 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. @@ -2307,6 +2364,43 @@ 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. @@ -2350,6 +2444,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. @@ -2458,3 +2553,10 @@ 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.within = Vérifie si l'unité est près de la position. lenum.boost = Active/Désactive le boost. +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 3aa426f974..b04b225ac8 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -1,6 +1,6 @@ -credits.text = Készítette: [royal]Anuken[] - [sky]anukendev@gmail.com[] +credits.text = Készítette: [royal]Anuken[] – [sky]anukendev@gmail.com[] credits = Készítők -contributors = Fordítók és 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 csevegőszoba link.reddit.description = A Mindustry subreddit @@ -8,19 +8,19 @@ 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 ö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 egy szoftver hibát? Itt jelentheted. -linkopen = Ez a szerver 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 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[accent] {0}[] csapat nyert! +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. @@ -35,21 +35,21 @@ load.mod = Modok load.scripts = Szkriptek be.update = Új Bleeding Edge verzió áll rendelkezésre: -be.update.confirm = Letöltöd és újraindítod? +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. +be.noupdates = Nem található frissítés. +be.check = Frissítések keresése -mods.browser = Mod választó +mods.browser = Modböngésző mods.browser.selected = Mod kiválasztása mods.browser.add = Letöltés mods.browser.reinstall = Újratelepítés mods.browser.view-releases = Kiadások megtekintése -mods.browser.noreleases = [scarlet]Nem találhatóak a kiadások.\n[accent]Nem lehet kiadásokat találni ehhez a modhoz. Nézd meg a tároló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ók 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 @@ -62,21 +62,21 @@ 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.importfile = Importálás fájlból schematic.browseworkshop = Steam Műhely megtekintése -schematic.copy = Másolás a vágólapra -schematic.copy.import = Importálás a vágólapról +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]Vázlatok letiltva[]\nNem használhatsz vázlatokat ezen a [accent]pályán[], vagy [accent]szerveren. -schematic.tags = Vázlat Címkék: +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.texttag = Szöveg címke schematic.icontag = Ikon címke schematic.renametag = Címke átnevezése schematic.tagged = {0} Címkézve @@ -90,21 +90,21 @@ 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 törölni akarod a "[accent]{0}[]" pályát? +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! > +coreattack = < A támaszpont támadás alatt van! > nearpoint = [[ [scarlet]AZONNAL HAGYD EL A LEDOBÁSI PONTOT![] ]\nA megsemmisülés fenyeget! -database = Mag Adatbázis +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] @@ -116,28 +116,28 @@ website = Weboldal quit = Kilépés save.quit = Mentés és kilépés maps = Pályák -maps.browse = Pályák keresése +maps.browse = Pályák böngészése continue = Folytatás -maps.none = [lightgray]Nem találtunk ilyen pályát! +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. +feature.unsupported = Ez az eszköz nem támogatja ezt a funkciót. -mods.initfailed = [red]⚠[] Az előző Mindustry munkamenet nem tudott inicializálódni. Ez valószínű egy rosszúl működő mod miatt történt.\n\nAz "összeomlások" elkerülése érdekében, [red]minden mod le lett tiltva.[] +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]Nem találhatóak modok! -mods.guide = Mod készítési útmutató +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 = A játék újraindul, hogy betöltődjenek a modok. +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 @@ -145,188 +145,188 @@ 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.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]A mod nem kompatibilis ezzel a játékverzióval +mod.incompatiblemod = [red]Inkompatibilis mod.blacklisted = [red]Nem támogatott -mod.unmetdependencies = [red]Összeférhetetlen függőségek -mod.erroredcontent = [red]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.incompletedependencies = [red]Hiányos függőségek -mod.requiresversion.details = [accent]{0}[] játékverzió szükséges.\nA letöltésed elavult. 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 verzió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.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 betöltésnél. Kérd meg a mod készítőjét hogy javítsa ki őket. +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 tudott betölteni hiányzó, vagy rossz függőségek miatt: {0}. +mod.incompletedependencies.details = Ez a mod nem tölthető be az érvénytelen vagy hiányzó függőségek miatt: {0}. -mod.requiresversion = [red]{0}[] játékverzió szükséges. +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 = [red]Vannak hibás Modok.[] Kapcsold ki, vagy javítsd ki őket a játék előtt. -mod.nowdisabled = [red]A '{0}' Modnak nincs 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 = [red]Ú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 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, csomagold 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 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 = Rólunk +about.button = Névjegy name = Név: noname = Előbb válassz egy[accent] nevet[]. search = Keresés: -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! +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ű pályák és élmények. -campaign.serpulo = Régebbi tartalom. A klasszikus élmények. Nyíltabb végű.\n\nPotenciálisan kiegyensúlyozatlan pályák é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 = Fejlesztési fa +techtree.select = Fejlesztési 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ési fa +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]Nem található játékos -server.closing = [accent]Szerver bezárása... -server.kicked.kick = Ki lettél rúgva a szerverről! +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ű játékösszzeállításokat. 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 továbbítás [] 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[]-címet a csatlakozáshoz, vagy felfedezhetsz [accent]helyi hálózati[], vagy [accent]globális[] szervereket a csatlakozáshoz.\nA LAN és WAN többjátékos mód is támogatott.\n\n[lightgray]Ha valakihez IP alapján szeretnél csatlakozni, akkor meg kell tudnod a partnered IP címét. Az IP-címeteket az interneten a "mi az IP-címem?" szövegre való kereséssel is megtaláljátok. -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álhat 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 = 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 = Csatlakozá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} -trace.ips = IPs: +trace.ips = IP-címek: trace.names = Nevek: -invalidid = Érvénytelen kliens azonosító (ID)! Küldj hibajelentést. +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 választás -player.team = Csapat váltá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 = [scarlet]Elavult szerver![] +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? +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 adminisztrátori státuszát? +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 kiakarod szavazni "{0}[white]"-t?\nHa igen, írd le miért: -joingame.title = Csatlakozás +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 = [scarlet]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ók. 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 = [scarlet]Nem sikerült importálni a [accent]{0}[] mentést -save.export.fail = [scarlet]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]Rekesz {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 @@ -335,23 +335,23 @@ save.autosave = Automatikus mentés: {0} save.map = Térkép: {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 Steam Műhelyben -workshop.listing = Steam Műhely listázás szerkesztése +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 +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 = Erősítés command.enterPayload = Berakodás a rakományszállítóba @@ -359,102 +359,103 @@ 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 = Magatartás: Lövés -stance.holdfire = Magatartás: Tüzet szüntess -stance.pursuetarget = Magatartás: Célpont követése -stance.patrol = Magatartás: Járőrözési útvonal -stance.ram = Magatartás: Ütközés\n[lightgray]Egyenes vonalú mozgás, nincs útkeresés -openlink = Link megnyitása -copylink = Link másolá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 = A pálya 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. +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 = Használd a(z) [scarlet][[{0}][] gombot, hogy jóváhagyd az építést. -showui = A kezelőfelület elrejtve.\nNyomd meg a(z) [accent][[{0}][] gombot a megjelenítéséhez. -commandmode.name = [accent]Parancs Mód +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 = [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 Magok -wave.enemycore = [accent]{0}[lightgray] Ellenséges Mag -wave.enemy = [lightgray]{0} Megmaradt ellenség +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 = Fénykép betöltése -saveimage = Fénykép mentése +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 pályát? Ez a művelet nem visszavonható! +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 Maggal, amelyen a játékos kezdhet! Adj hozzá egy {0} Magot ehhez a pályához a szerkesztőben! -map.nospawn.pvp = Ezen a pályán nincs ellenséges Mag, amelyen a másik csapat kezdhet! Adj hozzá egy [scarlet]nem narancssárga[] Magot ehhez a pályához a szerkesztőben! -map.nospawn.attack = Ezen a pályán nincs ellenséges Mag! Adj hozzá egy {0} Magot ehhez a pályához a szerkesztőben! +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! +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 = Elem infó -changelog = Változtatási napló (opcionális): +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 Steam Műhely adatait automatikusan leválasztották. -publishing = [accent]Publikálás... +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 publikálásakor: {0} -steam.error = Nem sikerült inicializálni a Steam szolgáltatásokat.\nHiba: {0} +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 pályának 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.locales = Helyi csomagok editor.ingame = Szerkesztés a játékban -editor.playtest = Teszt játékban -editor.publish.workshop = Közzététel Steam Műhelyben -editor.newmap = Új Pálya +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 = Pályák keresése... editor.filters = Pályák szűrése editor.filters.mode = Játékmódok: -editor.filters.type = Pálya 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 @@ -464,130 +465,133 @@ waves.remove = Eltávolítás waves.every = minden waves.waves = hullámonként waves.health = élet: {0}% -waves.perspawn = per kezdőpont +waves.perspawn = kezdőpontonként waves.shields = pajzs/hullám waves.to = - -waves.spawn = Kezdőpont: +waves.spawn = kezdőpont: waves.spawn.all = waves.spawn.select = Kezdőpont kiválasztása -waves.spawn.none = [scarlet]Nem találhatóak kezdőpontok a pályán -waves.max = max egységek +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 = Szerkesztés... -waves.random = Véletlen +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 = Indul +waves.sort.begin = Kezdés waves.sort.health = Élet waves.sort.type = Típus waves.search = Hullám keresése... -waves.filter = Egység szűrő -waves.units.hide = Mindent elrejt -waves.units.show = Mindent mutat +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 = Összesítés -wavemode.health = Életpontok +wavemode.counts = típusokra bontva +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.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 pálya.\n\nHa egy 3.5/build 40 Pályát szeretnél betölteni, használd a "Régi pálya betöltése" gombot a szerkesztőben. -editor.errorlegacy = Ez a pálya túl régi, és már nem támogatott formátumot használ. -editor.errornot = Ez nem egy pálya fájl. -editor.errorheader = Ez a pálya fájl vagy érvénytelen vagy sérült. +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 = pálya 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 pályád felülír egy már létező pályát! 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ű pálya! -editor.import = Importálás +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ő pálya 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ő pálya 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 pálya 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.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:\n"[accent]{0}[]"\nBiztosan felülírod? +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: +editor.selectmap = Válassz ki egy pályát a betöltéshez: toolmode.replace = Csere -toolmode.replace.description = Csak szilárd tömbökre rajzol. +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 = Csoportok kitöltése -toolmode.fillteams.description = Töltse ki a csoportokat a tömbök helyett. +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 = Törölje az azonos típusú tömböket. -toolmode.drawteams = Csoportok rajzolása -toolmode.drawteams.description = Csoportok rajzolása tömbök helyett. +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 rajzolása a folyadék blokkok alá. +toolmode.underliquid.description = Padlók rajzolása a folyadékblokkok alá. -filters.empty = [lightgray]Még nincs szűrő! Adj hozzá egyet a lenti gombra kattintva! +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 = Ellenséges kezdőpont Kiválasztása +filter.enemyspawn = Ellenséges kezdőpont kiválasztása filter.spawnpath = Útvonal a kezdőponthoz -filter.corespawn = Mag kezdőpont kiválasztása +filter.corespawn = Támaszpont kiválasztása filter.median = Medián filter.oremedian = Érc medián 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 = Tömbök törlése -filter.option.ignore = Elutasít -filter.scatter = Szórás +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.option.scale = Méretezés filter.option.chance = Gyakoriság filter.option.mag = Magnitúdó filter.option.threshold = Küszöbérték @@ -598,142 +602,162 @@ filter.option.angle = Szög filter.option.tilt = Döntés filter.option.rotate = Forgatás filter.option.amount = Mennyiség -filter.option.block = Tömb +filter.option.block = Blokk filter.option.floor = Talaj -filter.option.flooronto = Jelenlegi mező -filter.option.target = Jelenlegi mező +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 = Másodlagos Szint -filter.option.threshold2 = Másodlagos Küszöbérték +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 + +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ágfeldolgozók é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ágfeldolgozóba:\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 = Pálya szerkesztő +mapeditor = Pályaszerkesztő abandon = Feladás 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 a {1} szektorban -requirement.core = Pusztítsd el az ellenséges Magot a {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 = Szektor elfoglalása a(z) {0}-n -requirement.onsector = Landolj a szektorban: {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 hoszt fedezhet fel nyersanyagokat. -map.multiplayer = Csak a hoszt 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 = Kutatás +objective.research.name = Fejlesztés objective.produce.name = Megszerzés objective.item.name = Nyersanyag megszerzése -objective.coreitem.name = Mag nyersanyag -objective.buildcount.name = Építés számláló -objective.unitcount.name = Egység számláló -objective.destroyunits.name = Egység megsemmisíté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 = Mag megsemmisítése -objective.commandmode.name = Parancs Mód +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.minimap.name = Minitérkép +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 = Texture marker.background = Háttér marker.outline = Körvonal -objective.research = [accent]Kutatás:\n[]{0}[lightgray]{1} -objective.produce = [accent]Megszerzés:\n[]{0}[lightgray]{1} -objective.destroyblock = [accent]Gyártás:\n[]{0}[lightgray]{1} -objective.destroyblocks = [accent]Megsemmisítés: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3} -objective.item = [accent]Megszerzés: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.coreitem = [accent]Szállítás a Magba:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.build = [accent]Építés: [][lightgray]{0}[]x\n{1}[lightgray]{2} -objective.buildunit = [accent]Egység Építés: [][lightgray]{0}[]x\n{1}[lightgray]{2} -objective.destroyunits = [accent]Megsemmisítés: [][lightgray]{0}[]x Units -objective.enemiesapproaching = [accent]Ellenség érkezik: [lightgray]{0}[] -objective.enemyescelating = [accent]Az ellenséges termelés fokozódik: [lightgray]{0}[] -objective.enemyairunits = [accent]Az ellenséges légi egységek termelése elkezdődik: [lightgray]{0}[] -objective.destroycore = [accent]Ellenséges Mag Megsemmisítése -objective.command = [accent]Egységek irányítása +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}[]\n{1}[lightgray]{2} +objective.buildunit = [accent]Gyárts egységeket: [][lightgray]{0}[]\n{1}[lightgray]{2} +objective.destroyunits = [accent]Semmisíts meg: [][lightgray]{0}[] 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]Építs azonnal tartalék Magokat! +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 = Maximum -bannedblocks = Tiltott blokkok -objectives = Célok +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 = Nyersanyag kapacitás az indításhoz: [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 = Ő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 hoszt gépen és a cím helyes! -error.mismatch = Csomaghiba:\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 pálya 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 = Nem sikerült inicializálni a bloom-ot.\nElőfordulhat, hogy a készülék nem támogatja. +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]Szektor Játékidő: {0} -campaign.complete = [accent]Gratuláció.\n\nAz ellenség a {0}-n legyőzve.\n[lightgray]Az utolsó szektor meghódítása megtörtént. +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 @@ -741,23 +765,23 @@ 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]Nincs megszerezve +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 = Elhagy -sector.abandon.confirm = Ennek a szektornak a Magja(i) önmegsemmisítésre kerülnek.\nFolytatod? -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.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.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}[] on [accent]{1}[] -sector.view = Szektor megtekintése +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 @@ -771,45 +795,45 @@ planet.serpulo.name = Serpulo planet.erekir.name = Erekir planet.sun.name = Nap -sector.impact0078.name = Ütközet 0078 -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ánzott +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.saltFlats.name = Sós síkságok sector.fungalPass.name = Gombahágó -sector.biomassFacility.name = Biomassza Szintézis Létesítmény -sector.windsweptIslands.name = Szélfútta Szigetek -sector.extractionOutpost.name = Kivonási Pont -sector.planetaryTerminal.name = Bolygó Körüli Indító Terminál +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.navalFortress.name = Tengerészeti erőd -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 elektromosság erejét! Építs Belső Égetésű Erőművet! Használj Foltozót! -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 Fúróidat és Lövegeidet. 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 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! -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 Tórium kitermelésére és feldolgozására, romokban.\n[lightgray]Fedezd fel a Tóriumot é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.\nFejlszd ki 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]Műanyag[] gyártása zajlott itt.\n\nVerd vissza az ellenség vízi egységeit! Állíts fel egy bázist a szigeteken! Fejleszd ki 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. Fedezd fel a Kilövő Állást. -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 = Ezen a helyen egy haditengerészeti egység technológiájának maradványait fedezték fel. 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észetesen-megerősített szigeten. Pusztítsd el ezt az előőrsöt. Szerezd meg a fejlett hadihajó-technológiájukat, és fedezd fel. +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űjt ö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! Pumpálj 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ó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 a kockázat. Építsd 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.onset.name = A Kezdet +sector.onset.name = A kezdet sector.aegis.name = Égisz sector.lake.name = Tó sector.intersect.name = Metszéspont @@ -827,32 +851,32 @@ sector.crossroads.name = Keresztutak sector.karst.name = Karszt sector.origin.name = Eredet -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 kutatásokat. -sector.aegis.description = Ez a szektor Volfrám lelőhelyeket tartalmaz.\nFedezd fel az [accent]Ütve Fúró[]t, hogy ki tudd bányászni ezt a nyersanyagot, és elpusztítani az ellenséges bázist a szektorban. -sector.lake.description = Az Ebben a szektorban lévő Salakos tó nagymértékben korlátozza az ütőképes egységek használatát. A lebegőegységek az egyetlen lehetőség.\nFedezd fel a [accent]Repülőgép Gyár[]at é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 s 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 nehezebb ellenséges bázisok némelyikén való átjutáshoz is szükség lehet továbbfejlesztett egységekre.\nFedezd fel az [accent]Elektrolizátor[]t és a [accent]Tank Újratervező[]t. +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árat[], é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 foglalj el ellenséges Magokat, hogy megvethesd a lábad. -sector.marsh.description = Ebben a szektorban rengeteg Arkycit található, de kevés a Víznyelő.\nÉpíts [accent]Kémiai Égető Kamra[]t az áramfejlesztéshez. +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 nincs észlelve ellenséges Mag, bár ez egy fontos szállítási útvonal az ellenség számára. Várhatóan változatos ellenséges erőkkel kell számolni.Gyárts [accent]Elektrometál[]t. É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ók.\nFedezd fel é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 [accent]Tórium[] készleteket őriz.\nHasználd magasabb szintű egységek és lövegtornyok fejlesztésére. -sector.crevice.description = Az ellenség kegyetlen támadóerőket fog küldeni, hogy kiiktassa a bázisodat ebben a szektorban.\nGyűjts [accent]Karbid[]ot, majd fedezd fel és építs [accent]Pirolízis Erőmű[]vet mert lehet, hogy nélkülözhetetlenek a túléléshez. -sector.siege.description = Ebben a szektorban két párhuzamos kanyon található, amelyek kétirányú támadást kényszerítenek ki.\nFedezd fel a [accent]Cianogén[]t, 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ők. -sector.crossroads.description = Az ellenséges támaszpontok ebben a szektorban változó terepviszonyok között alakultak ki. Ahhoz, hogy alkalmazkodni tudj kutass különböző egységek után.\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 Mag leszáll, az ellenség megtámadja azt.\nHasználd ki az nyersanyagokat és fedezd fel a [accent]Tóritkvarc[]ot. -sector.origin.description = Az utolsó szektor, jelentős ellenséges jelenléttel.\nNem valószínű, hogy maradt további kutatási vagy fejlesztési lehetőség - koncentrálj az ellenséges Magok elpusztítására. +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ők. +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 = Fagyasztó +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óra Lassított +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 @@ -862,30 +886,30 @@ 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.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.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]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 @@ -894,57 +918,57 @@ lastcommanded = [lightgray]Utoljára irányítva: {0} block.unknown = [lightgray]??? stat.showinmap = -stat.description = Célja +stat.description = Rendeltetés stat.input = Bemenet stat.output = Kimenet 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 = Eltérések -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.itemsmoved = Haladási sebesség stat.launchtime = Kilövések közti idő stat.shootrange = Hatótáv 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 = Maximális kapcsolat +stat.liquidcapacity = Folyadékkapacitás +stat.powerrange = Áram hatótávja +stat.linkrange = Kapcsolat hatótávja +stat.instructions = Utasítások +stat.powerconnections = Max. kapcsolatok stat.poweruse = Áramhasználat -stat.powerdamage = Áram/Sebzés -stat.itemcapacity = Nyersanyag 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.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.bullet = Lövedék stat.moduletier = Modul szintje -stat.unittype = Egység típus +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.drilltier = Kitermelhetők +stat.drillspeed = Alap termelési sebesség stat.boosteffect = Erősítés hatása -stat.maxunits = Maximális aktív egység +stat.maxunits = Max. aktív egységek stat.health = Életpontok stat.armor = Páncél -stat.buildtime = Építés időtartama -stat.maxconsecutive = Maximum egymást követő -stat.buildcost = Építés ára +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/sec +stat.shots = Lövések +stat.reload = Tüzelési sebesség stat.ammo = Lőszer -stat.shieldhealth = Pajzs élete +stat.shieldhealth = Pajzs életereje stat.cooldowntime = Újratöltés időtartama stat.explosiveness = Robbanékonyság stat.basedeflectchance = Alap hárítási esély @@ -958,48 +982,77 @@ 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 = Rakomány 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 = Erősíthető stat.flying = Repül -stat.ammouse = Lőszer használat -stat.damagemultiplier = Sebzés szorzó -stat.healthmultiplier = Életerő szorzó -stat.speedmultiplier = Sebesség szorzó -stat.reloadmultiplier = Újratöltés szorzó -stat.buildspeedmultiplier = Építési sebesség szorzó +stat.ammouse = Lőszerhasználat +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.repairfield = Javító Mező -ability.statusfield = Állapot Mező +ability.forcefield.description = Erőteret vetít ki, mely elnyeli a lövedékeket +ability.repairfield = Javító mező +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.shieldregenfield = Pajzs Regeneráló Mező +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.shieldarc = Pajzs Ív -ability.suppressionfield = Javítás Elnyomás -ability.energyfield = Energia Mező -ability.energyfield.sametypehealmultiplier = [lightgray]Azonos típusú gyógyítás: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Célpontok Maximális Száma: [white]{0} +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 +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 Mag Elhelyezése Megengedett -bar.drilltierreq = Erősebb Fúró/Vágó szükséges -bar.noresources = Nincs elég nyersanyag -bar.corereq = Mag szükséges -bar.corefloor = Mag zónacsempe szükséges +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ési Sebesség: {0}/s -bar.pumpspeed = Termelési Sebesség: {0}/s +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}/s -bar.powerstored = Tárolt: {0}/{1} -bar.poweramount = Áram Kimenet: {0} +bar.powerbalance = Áram: {0}/mp +bar.powerstored = Eltárolva: {0}/{1} +bar.poweramount = Kapacitás: {0} bar.poweroutput = Áramtermelés: {0} bar.powerlines = Kapcsolatok: {0}/{1} bar.items = Nyersanyagok: {0} @@ -1013,50 +1066,50 @@ bar.heatpercent = Hő: {0} ({1}%) bar.power = Áram bar.progress = Építés állapota bar.loadprogress = Állapot -bar.launchcooldown = Lehűlés indítása +bar.launchcooldown = Kilövés visszaszámlálása bar.input = Bemenet bar.output = Kimenet bar.strength = [stat]{0}[lightgray]x erő -units.processorcontrol = [lightgray]Processzor vezérelt +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]páncéltörő -bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit -bullet.suppression = [stat]{0} sec[lightgray] javítás elnyomás ~ [stat]{1}[lightgray] csempe -bullet.interval = [stat]{0}/sec[lightgray] időszakos töltények: -bullet.frags = [stat]{0}[lightgray]x repesz lövedékek: -bullet.lightning = [stat]{0}[lightgray]x villámcsapás ~ [stat]{1}[lightgray] sebzés -bullet.buildingdamage = [stat]{0}%[lightgray] épület sebzés +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] lövedékek időköze: +bullet.frags = [stat]{0}[lightgray]x repeszlövedék: +bullet.lightning = [stat]{0}[lightgray]x 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ő erő bullet.infinitepierce = [stat]átütő erő -bullet.healpercent = [stat]{0}[lightgray]% gyógyító -bullet.healamount = [stat]{0}[lightgray] közvetlen javító -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] csempe tartomány +bullet.healpercent = [stat]{0}%[lightgray] javítás +bullet.healamount = [stat]{0}[lightgray] közvetlen javítás +bullet.multiplier = [stat]{0}[lightgray]x lőszerszorzó +bullet.reload = [stat]{0}%[lightgray] tüzelési sebesség +bullet.range = [stat]{0}[lightgray] csempés hatótáv unit.blocks = blokk unit.blockssquared = blokk² -unit.powersecond = áram egység/sec -unit.tilessecond = csempe/sec -unit.liquidsecond = folyadék egység/sec -unit.itemssecond = nyersanyag/sec -unit.liquidunits = folyadék egység -unit.powerunits = áram egység -unit.heatunits = hő egység +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.persecond = /mp +unit.perminute = /perc unit.timesspeed = x sebesség unit.percent = % -unit.shieldhealth = pajzs állapot +unit.shieldhealth = pajzs életereje unit.items = nyersanyag unit.thousands = k unit.millions = mil @@ -1067,33 +1120,33 @@ category.general = Általános category.power = Áram category.liquids = Folyadékok category.items = Nyersanyagok -category.crafting = Bemenet/Kimenet +category.crafting = Bemenet/kimenet category.function = Funkció -category.optional = Lehetséges erősítés -setting.skipcoreanimation.name = Mag Indítás/Leszállás Animáció Kihagyása +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 = 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 = Bányászás dupla-koppintással -setting.commandmodehold.name = Tartsd lenyomva a parancs módhoz -setting.distinctcontrolgroups.name = Egységenként legfeljebb egy ellenőrző csoport -setting.modcrashdisable.name = Modok letiltása indítási összeomláskor +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 +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 @@ -1103,95 +1156,95 @@ 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 Intenzitás -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 = Szállítószalag útvonalkeresés építéskor -setting.sensitivity.name = Kontroller é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 = 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áltozások alkalmazásához újraindításra lehet szükség. -setting.fps.name = FPS és Ping mutatása +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 = Minitérkép mutatása -setting.coreitems.name = A Magban lévő nyersanyagok megjelenítése -setting.position.name = A 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 hangerő -setting.atmosphere.name = Mutassa a bolygó atmoszférát -setting.drawlight.name = Sötét/Világos fényhatások +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 ö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.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.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 bevágás megjelenítéséhez -setting.macnotch.description = A változtatások alkalmazásához újra kell indítani -steam.friendsonly = Csak Barátok -steam.friendsonly.tooltip = Csak a Steam-barátok tudnak csatlakozni a játékodhoz.\nHa nem jelölöd be ezt a négyzetet, a játékod nyilvános lesz - bárki csatlakozhat hozzá. +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ég Parancs +category.command.name = Egységparancs category.multiplayer.name = Többjátékos -category.blocks.name = Blokk választás +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.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ép +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 állapot 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 = Erősítés -keybind.command_mode.name = Parancs Mód -keybind.command_queue.name = Egység parancsok sorba állítása -keybind.create_control_group.name = Vezérlő csoport készítése +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 Magatartása: Lövés -keybind.unit_stance_hold_fire.name = Egység Magatartása: Tüzet Szüntess -keybind.unit_stance_pursue_target.name = Egység Magatartása: Célpont Követése -keybind.unit_stance_patrol.name = Egység Magatartása: Járőrözés -keybind.unit_stance_ram.name = Egység Magatartása: Ütközés - -keybind.unit_command_move = Egység Parancs: Mozgás -keybind.unit_command_repair = Egység Parancs: Javítás -keybind.unit_command_rebuild = Egység Parancs: Újraépítés -keybind.unit_command_assist = Egység Parancs: Támogatás -keybind.unit_command_mine = Egység Parancs: Bányászás -keybind.unit_command_boost = Egység Parancs: Erősítés -keybind.unit_command_load_units = Egység Parancs: Egységek bepakolása a rakományszállítóba -keybind.unit_command_load_blocks = Egység Parancs: Blokkok bepakolása a rakományszállítóba -keybind.unit_command_unload_payload = Egység Parancs: Kirakodás a rakományszállítóból +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 = 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 = Régió újjáépítése keybind.schematic_select.name = Terület kijelölése @@ -1204,24 +1257,24 @@ 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.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.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 = Minden egység kijelölése -keybind.select_all_unit_factories.name = Minden egységgyár kijelölése -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 @@ -1230,79 +1283,80 @@ keybind.menu.name = Menü keybind.pause.name = Szünet keybind.pause_building.name = Építés szüneteltetése/folytatása keybind.minimap.name = Minitérkép -keybind.planet_map.name = Bolygó térkép -keybind.research.name = Kutatás -keybind.block_info.name = Blokk Információ +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ékos lista +keybind.player_list.name = Játékosok listája keybind.console.name = Konzol keybind.rotate.name = Forgatás -keybind.rotateplaced.name = Épület forgatása (tartsd nyomva) -keybind.toggle_menus.name = Menük Váltása -keybind.chat_history_prev.name = Csevegés görgetés fel -keybind.chat_history_next.name = Csevegés görgetés le -keybind.chat_scroll.name = Csevegés görgetés -keybind.chat_mode.name = Csevegés mód megváltoztatása -keybind.drop_unit.name = Egység elengedése -keybind.zoom_minimap.name = Zoom a Minitérképen +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 kezdőpont a pályán. +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ás játékosok ellen.\n[gray]Szükséges hozzá legalább két különböző színű Mag a Pályán. +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 pályán. +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.invaliddata = Érvénytelen adatok a vágólapon. +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 Magok elhelyezése engedélyezett -rules.derelictrepair = Az Elhagyatott blokkok javításának engedélyezése -rules.reactorexplosions = Reaktor robbanás -rules.coreincinerates = Többlet nyersanyagok megsemmisítése a Magban +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 -rules.wavetimer = Hullám időzítő -rules.wavesending = Hullám küldése +rules.schematic = Vázlatok engedélyezése +rules.wavetimer = Hullámok időzítése +rules.wavesending = Hullámok küldése rules.waves = Hullámok -rules.attack = Támadás mód -rules.buildai = Épületalkotó intelligencia -rules.buildaitier = Épületalkotó intelligencia szintje -rules.rtsai = Stratégia alkotó Intelligencia -rules.rtsminsquadsize = Minimális osztag méret -rules.rtsmaxsquadsize = Maximális osztag méret -rules.rtsminattackweight = Minimális támadási "lépéselőny" -rules.cleanupdeadteams = A legyőzött csapatépületek törlése (PvP) -rules.corecapture = Mag elfoglalása megsemmisítéskor -rules.polygoncoreprotection = Poligonális Mag védelem +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 AI (Piros csapat) nyersanyagforrás -rules.blockhealthmultiplier = Épület életpont szorzó -rules.blockdamagemultiplier = Épület sebzés szorzó -rules.unitbuildspeedmultiplier = Egység yyártási sebesség szorzó -rules.unitcostmultiplier = Egységköltség szorzó -rules.unithealthmultiplier = Egység életpont szorzó -rules.unitdamagemultiplier = Egység sebzés szorzó -rules.unitcrashdamagemultiplier = Egység ütközési sebzés szorzó -rules.solarmultiplier = Napenergia szorzó -rules.unitcapvariable = A Magok befolyásolják a legyártható egységek darabszámát -rules.unitcap = Alap egység-darabszám -rules.limitarea = Játékterület korlátozása a pályán -rules.enemycorebuildradius = Ellenséges Mag körüli tiltott zóna sugara:[lightgray] (mező) -rules.wavespacing = Hullámok közötti szünet időzítés:[lightgray] (sec) -rules.initialwavespacing = Az első hullám előtti szünet időrtama:[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.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 = Az utolsó hullám után legyen vége a játéknak -rules.dropzoneradius = Ledobási zóna sugara:[lightgray] (mező) -rules.unitammo = Az egységeknek lőszer kell -rules.enemyteam = Elenséges csapat +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 = Nyersanyagforrások és épületek @@ -1316,19 +1370,21 @@ rules.lighting = Világítás rules.fog = Köd rules.fire = Tűz rules.anyenv = -rules.explosions = Épület/Egység robbanás sebzés +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: +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 = Nyersanyagok content.liquid.name = Folyadékok content.unit.name = Egységek content.block.name = Blokkok content.status.name = Állapothatások -content.sector.name = Szektor +content.sector.name = Szektorok content.team.name = Csapatok wallore = (Fal) @@ -1343,7 +1399,7 @@ item.silicon.name = Szilícium item.plastanium.name = Műanyag item.phase-fabric.name = Tóritkvarc item.surge-alloy.name = Elektrometál -item.spore-pod.name = Spóra Kapszula +item.spore-pod.name = Spórakapszula item.sand.name = Homok item.blast-compound.name = Robbanóelegy item.pyratite.name = Piratit @@ -1354,19 +1410,19 @@ item.beryllium.name = Berillium item.tungsten.name = Volfrám item.oxide.name = Oxid item.carbide.name = Karbid -item.dormant-cyst.name = Nyugvó-Ciszta +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 = Neoplazma -liquid.arkycite.name = Arkycite +liquid.arkycite.name = Arkicit liquid.gallium.name = Gallium liquid.ozone.name = Ózon liquid.hydrogen.name = Hidrogén liquid.nitrogen.name = Nitrogén -liquid.cyanogen.name = Cianogén +liquid.cyanogen.name = Dicián unit.dagger.name = Dagger unit.mace.name = Mace @@ -1426,158 +1482,159 @@ 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 = Szirt -block.sand-boulder.name = Homok Szikla -block.basalt-boulder.name = Bazalt Szikla +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 Medence +block.pooled-cryofluid.name = Hűtőfolyadék block.space.name = Űr block.salt.name = Só -block.salt-wall.name = Só Fal +block.salt-wall.name = Sófal block.pebbles.name = Kavicsok block.tendrils.name = Indák -block.sand-wall.name = Homok Fal -block.spore-pine.name = Spóra Fenyő -block.spore-wall.name = Spóra Fal +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 = Hó Szikla -block.snow-pine.name = Havas Fenyő +block.snow-boulder.name = Havas szikla +block.snow-pine.name = Havas fenyő block.shale.name = Pala -block.shale-boulder.name = Pala Szikla +block.shale-boulder.name = Palaszikla block.moss.name = Moha block.shrubs.name = Cserjék -block.spore-moss.name = Spóra Moha -block.shale-wall.name = Pala Fal -block.scrap-wall.name = Törmelék Fal -block.scrap-wall-large.name = Nagy Törmelék Fal -block.scrap-wall-huge.name = Hatalmas Törmelék Fal -block.scrap-wall-gigantic.name = Gigantikus Törmelék Fal +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 = Grafit Sajtoló -block.multi-press.name = Multi Sajtoló -block.constructing = {0} [lightgray](Építés) -block.spawn.name = Ellenséges Kezdőpont -block.core-shard.name = Szilánk -block.core-foundation.name = Alapítvány -block.core-nucleus.name = Magnum -block.deep-water.name = Mélyvíz +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.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.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.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ácit Fal -block.dacite-boulder.name = Dácit Szikla +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ég Fal -block.snow-wall.name = Hó Fal -block.dune-wall.name = Dűne Fal +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ár Fal +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óra Fürt -block.metal-floor.name = Fém Padló 1 -block.metal-floor-2.name = Fém Padló 2 -block.metal-floor-3.name = Fém Padló 3 -block.metal-floor-4.name = Fém Padló 4 -block.metal-floor-5.name = Fém Padló 5 -block.metal-floor-damaged.name = Sérült Fém Padló -block.dark-panel-1.name = Sötét Panel 1 -block.dark-panel-2.name = Sötét Panel 2 -block.dark-panel-3.name = Sötét Panel 3 -block.dark-panel-4.name = Sötét Panel 4 -block.dark-panel-5.name = Sötét Panel 5 -block.dark-panel-6.name = Sötét Panel 6 -block.dark-metal.name = Sötét Fém +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éz Fal -block.copper-wall-large.name = Nagy Réz Fal -block.titanium-wall.name = Titán Fal -block.titanium-wall-large.name = Nagy Titán Fal -block.plastanium-wall.name = Műanyag Fal -block.plastanium-wall-large.name = Nagy Műanyag Fal -block.phase-wall.name = Tóritkvarc Fal -block.phase-wall-large.name = Nagy Tóritkvarc Fal -block.thorium-wall.name = Tórium Fal -block.thorium-wall-large.name = Nagy Tórium Fal +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.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 = 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 = Elágazás +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 = Terjesztő +block.distributor.name = Szétosztó block.sorter.name = Válogató -block.inverted-sorter.name = Inverz 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.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 = Alulfolyó Kapu -block.underflow-gate.name = Túlfolyó Kapu -block.silicon-smelter.name = Szilícium Kohó +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.cryofluid-mixer.name = Hűtőfolyadék-keverő block.melter.name = Olvasztó block.incinerator.name = Törmelékégető -block.spore-press.name = Spóra Sajtoló +block.spore-press.name = Spóraprés block.separator.name = Leválasztó -block.coal-centrifuge.name = Szén Centrifuga +block.coal-centrifuge.name = Széncentrifuga block.power-node.name = Villanyoszlop -block.power-node-large.name = Nagy Villanyoszlop +block.power-node-large.name = Nagy villanyoszlop block.surge-tower.name = Villanytorony -block.diode.name = Akkumulátor Dióda +block.diode.name = Akkumulátordióda block.battery.name = Akkumulátor -block.battery-large.name = Nagy Akkumulátor -block.combustion-generator.name = Belső-égetésű Erőmű +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ézer Vágó -block.water-extractor.name = Vízkiválasztó +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 = Nyersanyag Forrás -block.item-void.name = Nyersanyag Hiány -block.liquid-source.name = Folyadék Forrás -block.liquid-void.name = Folyadék Hiány -block.power-void.name = Áram Hiány -block.power-source.name = Áram Forrás +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 @@ -1585,199 +1642,199 @@ block.tsunami.name = Tsunami block.swarmer.name = Swarmer block.salvo.name = Salvo block.ripple.name = Ripple -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űanyag Sűrítő -block.pyratite-mixer.name = Piratit Keverő -block.blast-mixer.name = Robbanóelegy Keverő +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.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ó Löveg -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ék Elosztó -block.liquid-tank.name = Folyadék Tartály -block.liquid-container.name = Folyadék Tároló -block.liquid-junction.name = Csővezeték Átkötés -block.bridge-conduit.name = Csővezeték Híd -block.rotary-pump.name = Fogaskerék Szivattyú -block.thorium-reactor.name = Tórium Erőmű +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 = Impulzus Szivattyú +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.surge-smelter.name = Elektrometál-olvasztó block.mender.name = Foltozó -block.mend-projector.name = Foltozó Projektor -block.surge-wall.name = Elektrometál Fal -block.surge-wall-large.name = Nagy Elektrometál Fal +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 = Sokkoló Taposóakna -block.overdrive-projector.name = Túlhajtó Projektor -block.force-projector.name = Erő Projektor +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 Erőmű +block.rtg-generator.name = RTG erőmű block.spectre.name = Spectre block.meltdown.name = Meltdown block.foreshadow.name = Foreshadow block.container.name = Konténer -block.launch-pad.name = Kilövő Állás +block.launch-pad.name = Kilövőállás block.segment.name = Segment -block.ground-factory.name = Szárazföldi-Egység Gyár -block.air-factory.name = Repülőgép Gyá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ány Szállítószalag -block.payload-router.name = Rakomány Elosztó +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ószalag Híd -block.large-payload-mass-driver.name = Nagy Rakomány Tömegmozgató -block.payload-void.name = Rakomány Megsemmisítő -block.payload-source.name = Rakomány Készítő -block.disassembler.name = Szétválasztó -block.silicon-crucible.name = Szilícium Olvasztó -block.overdrive-dome.name = Túlhajtó Búra -block.interplanetary-accelerator.name = Bolygóközi Gyorsító +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 = Akár 2x2 csempe méretű szerkezeteket is gyárt. -block.large-constructor.name = Nagy Építő -block.large-constructor.description = Akár 4x4 csempe méretű szerkezeteket is gyárt. +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 a szerkezeteket és az egységeket. Visszaadja az építési költség 100%-át. -block.payload-loader.name = Rakomány Csomagoló -block.payload-loader.description = A folyadékokat és a nyersanyagokat csomagolja nagyobb blokkokba. -block.payload-unloader.name = Rakomány Kicsomagoló -block.payload-unloader.description = A folyadékokból és nyersanyagokból álló blokkokat csomagolja ki. -block.heat-source.name = Hő Forrás -block.heat-source.description = Egy 1x1-es blokk, amely gyakorlatilag végtelen Hőt ad. +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.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én Kő -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ály Talaj -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 = Arkycite -block.arkyic-stone.name = Arkycites Kő -block.rhyolite-vent.name = Riolit Kürtő -block.carbon-vent.name = Szén Kürtő -block.arkyic-vent.name = Arkycites Kürtő -block.yellow-stone-vent.name = Sárga Kő Kürtő -block.red-stone-vent.name = Vörös Kő 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 = Mag Zóna -block.regolith-wall.name = Regolit Fal -block.yellow-stone-wall.name = Sárga Kő Fal -block.rhyolite-wall.name = Riolit Fal -block.carbon-wall.name = Szén Fal -block.ferric-stone-wall.name = Vasas-Kő Fal -block.beryllic-stone-wall.name = Berilliumos-Kő Fal -block.arkyic-wall.name = Arkycit Fal -block.crystalline-stone-wall.name = Kristályos-Kő Fal -block.red-ice-wall.name = Vörös-Jég Fal -block.red-stone-wall.name = Vörös-Kő Fal -block.red-diamond-wall.name = Vörös Gyé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árga Kő Szikla -block.arkyic-boulder.name = Arkycites Szikla -block.crystal-cluster.name = Kristály Fürt -block.vibrant-crystal-cluster.name = Vibráló Kristály Fürt -block.crystal-blocks.name = Kristály Blokkok -block.crystal-orbs.name = Kristály Gömbök -block.crystalline-boulder.name = Kristályos Szikla -block.red-ice-boulder.name = Vörös Jég Szikla -block.rhyolite-boulder.name = Riolit Szikla -block.red-stone-boulder.name = Vörös Kő Szikla -block.graphitic-wall.name = Grafit Fal -block.silicon-arc-furnace.name = Szilícium Ívkemence +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 = Karbid Olvasztó -block.slag-centrifuge.name = Salak Centrifuga -block.surge-crucible.name = Elektrometál Olvasztó -block.cyanogen-synthesizer.name = Cianogén Szintetizáló -block.phase-synthesizer.name = Tóritkvarc Szintetizáló +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 = Berillium Fal -block.beryllium-wall-large.name = Nagy Berillium Fal -block.tungsten-wall.name = Volfrám Fal -block.tungsten-wall-large.name = Nagy Volfrám Fal -block.blast-door.name = Robbanásbiztos Ajtó -block.carbide-wall.name = Karbid Fal -block.carbide-wall-large.name = Nagy Karbid Fal -block.reinforced-surge-wall.name = Megerősített Elektrometál Fal -block.reinforced-surge-wall-large.name = Nagy Megerősített Elektrometál Fal -block.shielded-wall.name = Álcázott Fal +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 = Építő Torony -block.regen-projector.name = Épület Regenerátor -block.shockwave-tower.name = Sokkhullám Torony -block.shield-projector.name = Pajzs Generátor -block.large-shield-projector.name = Nagy Pajzs Generátor -block.armored-duct.name = Páncélozott Szállítószalag -block.overflow-duct.name = Túlfolyó Szállítószalag -block.underflow-duct.name = Alulfolyó Szállítószalag -block.duct-unloader.name = Kirakodó Szállítószalag -block.surge-conveyor.name = Tóritkvarc Szállítószalag -block.surge-router.name = Tóritkvarc Elosztó -block.unit-cargo-loader.name = Egység Rakomány Berakodó -block.unit-cargo-unload-point.name = Egység Rakomá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ék Híd -block.reinforced-liquid-router.name = Megerősített Folyadék Elosztó -block.reinforced-liquid-container.name = Megerősített Folyadék Konténer -block.reinforced-liquid-tank.name = Megerősített Folyadék Tartály -block.beam-node.name = Sugár Csomópont -block.beam-tower.name = Sugár Torony -block.beam-link.name = Sugár Há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.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íziserőmű block.vent-condenser.name = Vízleválasztó block.cliff-crusher.name = Sziklazúzó -block.plasma-bore.name = Plazma Vágó -block.large-plasma-bore.name = Nagy Plazma Vágó -block.impact-drill.name = Ütve Fúró -block.eruption-drill.name = Erupciós Fúró +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ési 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.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 @@ -1785,375 +1842,373 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabrikátor -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 = Repülőgép Összeszerelő -block.mech-assembler.name = Mech Összeszerelő -block.reinforced-payload-conveyor.name = Megerősített Rakomány Szállítószalag -block.reinforced-payload-router.name = Megerősített Rakomány Elosztó -block.payload-mass-driver.name = Rakomány Tömegmozgató -block.small-deconstructor.name = Kis Lebontó -block.canvas.name = Vászon Kijelző -block.world-processor.name = Világ Processzor -block.world-cell.name = Világ Cella -block.tank-fabricator.name = Tank Gyár -block.mech-fabricator.name = Mech Gyár -block.ship-fabricator.name = Repülőgép Gyár -block.prime-refabricator.name = Elsődleges Újratervező -block.unit-repair-tower.name = Egység Javító Torony +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 = Alap Összeszerelő Modul +block.basic-assembler-module.name = Alapvető összeszerelő modul block.smite.name = Smite block.malign.name = Malign -block.flux-reactor.name = Fluxus Reaktor -block.neoplasia-reactor.name = Neoplázia Reaktor +block.flux-reactor.name = Fluxusreaktor +block.neoplasia-reactor.name = Neopláziareaktor block.switch.name = Kapcsoló block.micro-processor.name = Mikroprocesszor -block.logic-processor.name = Logikai Processzor -block.hyper-processor.name = Hiper Processzor -block.logic-display.name = Logikai Kijelző -block.large-logic-display.name = Nagy Logikai Kijelző -block.memory-cell.name = Memória Cella -block.memory-bank.name = Memória Bank +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.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 +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 = A nyersanyagokat áthelyezheted húzással a hajóról a Magba. -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 lövegtorony 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 = Egy blokk információinak megtekintéséhez válaszd ki a blokkot az [accent]Építés menüben[], majd válaszd a [accent][[?][] gombot a jobb oldalon. -hint.derelict = Az [accent]Elhagyatott[] szerkezetek régi bázisok maradványai, amelyek már nem működnek.\n\nEzeket a maradványokat le lehet [accent]bontani[] nyersanyagokért, vagy megjavítani őket. -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][] gombot és [accent]kattints[], hogy átvedd az irányítást szövetséges egységek vagy lövegtornyok felett. -hint.unitControl.mobile = [accent][[Dupla koppintás][]sal átveheted az irányítást szövetséges egységek és lövegtornyok felett. -hint.unitSelectControl = Az egységek irányításához lépj be a [accent]Parancs Mód[]ba, nyomd hosszan a [accent]L-shift.[]el\nParancs Módban az egységek kiválasztásához kattints és húzd az egeret. [accent]Jobb-Klikk[] az egységek mozgatásához egy helyszínre, vagy az ellenséges célpontra. -hint.unitSelectControl.mobile = Az egységek irányításához lépj be a [accent]Parancs Mód[]ba, nyomd meg a [accent]Parancs Mód[] gombot a bal alsó sarokban.\nParancsn módban az egységek kiválasztásához érintsd meg a kijelzőt és húzással jelöld ki az egységeket. Koppints az egységek mozgatásához egy helyszínre, vagy ellenséges az célpontra. -hint.launch = Ha elegendő nyersanyagot gyűjtöttél, [accent]Kilőhetsz[] egy közeli szektorba. Ezt lent a jobb oldalon 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ásolhatsz épületeket.\n\nKattints a [accent][[görgővel][], hogy egy épületet lemásolj. -hint.rebuildSelect = Tartsd nyomva a [accent][[B][] é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 \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][[L-Ctrl][] gombot a szállítószalagok lerakása közben, hogy a játék útvnalat generáljon. -hint.conveyorPathfind.mobile = Engedélyezd az \ue844 [accent]átlós mód[]ot és tegyél le egyszerre több szállítószalagot, hogy a játék útvonalat generáljon. -hint.boost = Tartsd nyomva a [accent][[L-Shift][] gombot, 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 egységen, hogy felemeld. -hint.payloadDrop = A [accent]][] megnyomásával lerakhatod a rakományodat. -hint.payloadDrop.mobile = [accent]Tartsd hosszan az ujjad[] egy üres területen, hogy letedd a rakományodat. -hint.waveFire = A [accent]Wave[] lövegtornyok, ha Víz van bennük, automatikusan eloltják a közeli tüzeket. -hint.generator = \uf879 A [accent]Belső-égetésű Erőmű[] Szenet éget, és átadja az Áramot a vele érintkező épületeknek.\n\nÁramot nagyobb távolságra is szállíthatsz \uf87f [accent]Villanyoszlop[]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ű lövegtornyokat vagy \uf835 [accent]Grafit[] lövedéket a \uf861Duo/\uf859Salvo tornyokba, hogy leszedd az Őrzőket. -hint.coreUpgrade = A Magot fejlesztheted, ha [accent]magasabb szintű Magot teszel rá[].\n\nHelyezz egy [accent]Alapítvány[] Magot a [accent]Szilánk[] 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]Fagyott Erdő[], bárhonnan kilőhetsz. Nem kell szomszédos területtel rendelkezned.\n\nA [accent]számozott szektorok[], mint ez is, [accent]opcionálisak[]. +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]Fejlesztési fa[] gombot, hogy új technológiákat fedezz fel. +hint.research.mobile = Használd a \ue875 [accent]Fejlesztési 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][] irányíthatók kézileg a szövetséges egységek vagy lövegtornyok. +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 Magodban egy nyersanyag elérte a maximumot, a beérkező ilyen nyersanyagaid azonnal [accent]megsemmisítésre kerülnek[]. -hint.factoryControl = Egy egységgyár [accent]kimeneti célpontjának[] beállításához Parancs Módban kattintson egy gyárblokkra, majd kattintson a jobb gombbal 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 parancs módban koppints egy gyárblokkra, majd koppintson egy helyre.\nAz előállított egységek automatikusan odamennek. +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. -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 Fejlődési Fát.\nFedezd fel a \uf870 [accent]Mechanikus Fúró[]t, majd válaszd ki a jobb alsó sarokban lévő menüből.\nKattints egy Rézfoltra, hogy elhelyezd. -gz.research.mobile = Nyisd meg a \ue875 Fejlődési Fát.\nFedezd fel a \uf870 [akcentus]Mechanikus Fúró[]t, majd válaszd ki a jobb alsó sarokban lévő menüből.\nKattints egy Rézfoltra, hogy elhelyezd.\n\nNyomd meg a \ue800 [accent]Pipa[]t a jobb alsó sarokban a megerősítéshez. -gz.conveyors = Fedezd fel és építs \uf896 [accent]Szállítószalag[]ot, hogy a kitermelt nyersanyagokat\neljuttasd a fúróktól a Magba.\n\nKattints és húzd az egeret bármely irányba, hogy hosszabb Szállítószalagot készíthess.\n[accent]Görgővel[] a szállítás irányát tudod megváltoztatni. -gz.conveyors.mobile = Fedezd fel és építs \uf896 [accent]Szállítószalag[]ot, hogy a kitermelt nyersanyagokat\neljuttasd a fúróktól/vágóktól a Magba.\n\nTartsd rajta az ujjad egy másodpercig, és húzd bármely irányba, hogy hosszabb Szállítószalagot készíthess. -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 = \uf837 [accent]Ólom[] egy másik gyakran használt nyersanyag.\nÉpíts fúrókat az Ólom kitermelésére. -gz.moveup = \ue804 Lépj tovább a többi feladatért. -gz.turrets = Fedezd fel és építs 2 darab \uf861 [accent]Duo[] lövegtornyot, hogy védd a Magot.\nA Duo lövegtornyoknak szükségük van \uf838 [accent]lőszer[]re, amelyeket Szállítószalaggal juttahatsz el hozzájuk. -gz.duoammo = Lásd el a Duo lövegtornyokat [accent]Rézzel[]. Használj Szállítószalagot. -gz.walls = A [accent]Falak[] megakadályozhatják, hogy az épületekben károk keletkezzenek.\nÉpíts \uf8ae [accent]Réz Fal[]akat a lövegtornyok körül. +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 Fejlesztési 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 Fejlesztési 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 2 \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 szükségük van \uf837 [accent]Ólom[] lőszerre. -gz.scatterammo = Lásd el a Scatter lövegtornyokat [accent]Ólom[] lőszerrel. Használj Szállítószalagot. -gz.supplyturret = [accent]Lövegtorony ellátmány +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[]. +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 a \uf748 [accent]Berillium[] kibányászásához a falakból.\n\nHasználd a [accent][[WASD] gombokat a mozgáshoz. -onset.mine.mobile = Koppints a \uf748 [accent]Berillium[] kibányászásához a falakból. -onset.research = Nyisd meg a \ue875 fejlődési fát.\nFedezd fel és építs egy \uf73e [accent]Kondenzációs Turbina[]t a kürtőn.\nEz [accent]Áram[]ot fog generálni. -onset.bore = Fedezd fel és építs \uf741 [accent]Plazma Vágó[]t.\nEz automatikusan bányássza ki a nyersanyagokat a falakból. -onset.power = Ahhoz, hogy [accent]Áram[]mal lásd el a Plazma Fúrót, Fedezd fel és építs \uf73d [accent]Sugár Csomópont[]okat.\nSegítségükkel összekötheted a Kondenzációs Turbinát a Plazma Vágóval. -onset.ducts = Fedezd fel és építs \uf799 [accent]Szállítószalag[]ot, hogy a kitermelt nyersanyagokat eljuttasd a fúróktól/vágóktól a Magba\nKattints és húzd az egeret bármely irányba, hogy hosszabb Szállítószalagot készíthess.\n[accent]Görgővel[] a szállítás irányát tudod megváltoztatni. -onset.ducts.mobile = Fedezd fel és építs \uf799 [accent]Szállítószalag[]ot, hogy a kitermelt nyersanyagokat\neljuttasd a fúróktól/vágóktól a Magba.\n\nTartsd rajta az ujjad egy másodpercig, és húzd bármely irányba, hogy hosszabb Szállítószalagot készíthess. -onset.moremine = Bővítsd a bányászati kapacitást.\nÉpíts több Plazma Vágót, használj Sugár Csomópontokat és Szállítószalagokat.\nBányássz 200 Berilliumot. -onset.graphite = Az összetettebb blokkokhoz szükség van \uf835 [accent]Grafit[]ra.\nÉpíts Plazma Vágókat, a Grafit kibányászásához. -onset.research2 = Kezdd el a [accent]Gyárak[] fejlesztését.\nFedezd fel a \uf74d [accent]Sziklazúzó[]t és a \uf779 [accent]Szilícium Ívkemence[]t. -onset.arcfurnace = A Szilícium Ívkemencének szüksége lesz \uf834 [accent]Homok[]ra és \uf835 [accent]Grafit[]ra, hogy \uf82f [accent]Szilícium[]t gyártson.\nTovábbá [accent]Áram[] is szükséges a működéséhez. -onset.crusher = Használj \uf74d [accent]Sziklazúzó[]t, hogy Homokot bányászhass. -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. Fedezd fel és építs \uf6a2 [accent]Tank Gyár[]at. -onset.makeunit = Állíts elő egy egységet.\nHasználd a "?" gombot, hogy megnézd a gyártási követelményeit. -onset.turrets = Az egységek hatékonyak, de a [accent]lövegtornyok[] jobb védelmi képességeket biztosítanak, ha hatékonyan használják őket.\nÉpíts egy \uf6eb [accent]Breach[] lövegtornyot.\nA lövegtornyoknak szüksége van \uf748 [accent]lőszer[]re. -onset.turretammo = 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 Fal[]akat a lövegtornyok körül. +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 fejlesztési 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árat[]. +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.attack = Az ellenség most sebezhető. Ellentámadásra fel. -onset.cores = Új Mag csak a [accent]Mag Csempé[]re építhető.\nAz új Magok előretolt bázisként működnek, és megosztják a nyersanyagkészletüket más Magokkal.\nÉpíts egy új \uf725 Magot. -onset.detect = Az ellenség 2 percen belül észrevesz téged.\nÁllíts fel védelmet, bányássz és termelj. -onset.commandmode = Tartsd nyomva a [accent]shift[] gombot, hogy belépj a [accent]Parancs Mód[]ba.\n[accent]Bal egérgomb lenyomásával és húzással[] tudod kijelölni az egységeket.\nKattints [accent]Jobb egérgomb[]al egy pontra, vagy ellenségre, hogy a kiválasztott egységeket mozgásra, vagy támadásra utasítsd. -onset.commandmode.mobile = Nyomd meg a [accent]Parancs[] gombot, hogy belépj a [accent]Parancs Mód[]ba.\nTartsd a kijelzőn az újjad, majd [accent]húzd[] azt az egységek kiválasztásához.\n[accent]Koppints[] egy pontra, vagy ellenségre, hogy a kiválasztott egységeket mozgásra, vagy támadásra utasítsd. -aegis.tungsten = Volfrámot [accent]Ütve Fúró[]val tudsz bányászni.\nEnnek az épületnek szüksége van [accent]Víz[]re és [accent]Áram[]ra. +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[] utasíthatók az egységek mozgásra vagy támadásra. +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[] utasíthatók az egységek mozgásra vagy támadásra. +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 Mag Drónjával felvehetőek.\nVegyél fel egy [accent]Konténer[]t és helyezd bele egy [accent]Rakomány Csomagoló[]ba.\n(Az alapértelmezett gombok [ és ] a felvételhez és a lerakáshoz.) -split.pickup.mobile = Egyes blokkok a Mag Drónjával felvehetőek.\nVegyél fel egy [accent]Konténer[]t és helyezd bele egy [accent]Rakomány Csomagoló[]ba.\nAhhoz felfegyél, vagy lerakj valamit koppints rá 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 2 [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 = Hasonlít a Konténerre, csak egységek szállítására is alkalmas 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. +split.pickup = Egyes blokkok a támaszpont drónjával is felvehetők.\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ők.\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ók 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 felhasználható építkezésre és lövedékként. -item.copper.details = Szokatlanul elterjedt fém a Serpulo-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 = Fosszilizá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. +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éges 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.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. #Erekir -item.beryllium.description = Sokféle építési és lőszertípushoz használják Erekiren. -item.tungsten.description = Fúrókban/vágókban, páncélokban és lőszerekben használatos. A fejlettebb szerkezetek építéséhez szükséges. -item.oxide.description = Hővezetőként és Áramszigetelőként használják. -item.carbide.description = Korszerű szerkezetekben, nehezebb egységekben és lőszerekben használatos. +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ére és Törmelékfeldolgozásra használható. -liquid.slag.description = Leválasztóban 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 az erőművek, reaktorok, lövegtornyok és gyárak számára. +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álják energiatermelésre és anyagszintézisre. -liquid.ozone.description = Oxidálószerként használják az anyaggyártásban és üzemanyagként. Mérsékelten robbanékony. +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őszerekhez, fejlett egységek építéséhez és különböző reakciókhoz használják a fejlett blokkokban. Erősen gyúlékony. -liquid.nitrogen.description = A nyersanyagok kitermelésében, gáztermelésnél és egységgyártásnál használják. Semleges gáz. -liquid.neoplasm.description = A Neoplazma 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. Ajánlott a Salak medencékben való elégetése. +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 nyersanyagot oldalról. +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.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 = Szenet présel Grafittá. -block.multi-press.description = Szenet sajtol 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 = Ólomból és Homokból olvaszt Ólomüveget. -block.plastanium-compressor.description = Műanyagot gyárt Olaj és Titán felhasználásával. -block.phase-weaver.description = Tóritkvarcot képez 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ő Elektrometált. -block.cryofluid-mixer.description = Finom Titánport kever Vízhez a Hűtőfolyadék 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 = Törmeléket olvaszt Salakká. -block.separator.description = Szétbontja a Salakot ásványi összetevőire. -block.spore-press.description = Nagy nyomáson Olajat sajtol a Spóra Kapszulából. -block.pulverizer.description = Finom Homokká őrli a Törmeléket. -block.coal-centrifuge.description = Szenet nyer ki Olajból. +block.graphite-press.description = Grafittá préseli a szenet. +block.multi-press.description = Grafittá préseli a szenet. Hűtése vizet igényel. +block.silicon-smelter.description = A homokot és 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, homokot és ó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óban.) -block.power-source.description = Végtelen Áramot termel. (Csak homokozóban.) -block.item-source.description = Végtelen nyersanyagot bocsát ki. (Csak homokozóban.) -block.item-void.description = Megsemmisít minden nyersanyagot. (Csak homokozóban.) -block.liquid-source.description = Végtelen folyadékot bocsát ki. (Csak homokozóban.) -block.liquid-void.description = Megsemmisít minden folyadékot. (Csak homokozóban.) -block.payload-source.description = Végtelenül sok rakomány. (Csak homokozóban.) -block.payload-void.description = Minden rakomány megsemmisítése. (Csak homokozóban.) +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 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 termel. Csak homokozó módban. +block.liquid-void.description = Megsemmisít minden folyadékot. Csak homokozó módban. +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.\nTóritkvarccal növelhető a hatósugara és hatékonysága. -block.overdrive-projector.description = Növeli a közeli épületek 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. Opcionálisan Hűtőfolyadékot használ a túlmelegedés megakadályozására. A Tóritkvarc növeli a pajzs méretét. +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 = Szállítószalag. 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 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 egymást keresztező Szállító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 Szállítószalag Híd, 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 nyersanyagai 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 Túlfolyó Kapu, vagy Alulfolyó Kapu 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 Túlfolyó Kapu, vagy Alulfolyó Kapu mellett. -block.mass-driver.description = Nagy hatótávolságú nyersanyagszállító eszköz. Rakományokban lő át nyersanyagokat egy másik Tömegmozgatónak. -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 szállít. -block.pulse-conduit.description = Folyadékot szállít. Gyorsabb és nagyobb tárolókapacitású, mint a sima Csővezeték. -block.plated-conduit.description = Folyadékot szállí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 = Jelentős mennyiségű folyadékot tárol. Minden oldalon kijuttatja a folyadékot, hasonlóan a Folyadék Elosztóhoz. -block.liquid-tank.description = Nagy mennyiségű folyadékot tárol és minden oldalán képes azt kijuttatni. +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. Pumpá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 Csővezeték Híd, de Áramot használ. -block.power-node.description = Áramot vezet az összekapcsolt épületekhez. Az érintkező épületekkel automatikusan kapcsolatban van. -block.power-node-large.description = Nagyobb Villanyoszlop nagyobb hatótávolsággal. -block.surge-tower.description = Hosszútávú Villanyoszlop, csak kevés kapcsolatra képes. -block.diode.description = Tárolt Áramot irányít át egy irányba, de csak akkor, 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 Akkumulátornál. -block.combustion-generator.description = Áramot termel éghető anyagok 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 Hűtőfolyadék é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.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 Napelemné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 fúró, képes Titán kitermelésére. Gyorsabban dolgozik a Mechanikus Fúróná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.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 = É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 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 Serpulot 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 = Mag. Ha elpusztul, a szektor elveszett. -block.core-shard.details = Az első modell. Kompakt. Önsokszorosító. Egyszer használatos gyorsítófúvókákkal van felszerelve, nem bolygóközi utazásra tervezték. -block.core-foundation.description = Mag. Páncélozott. Több nyersanyagot tárol, mint a Szilánk. +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 = Mag. Megerősített páncélzattal. Hatalmas mennyiségű nyersanyag 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 kirakodó segítségével nyerhető ki. -block.container.description = Kis mennyiséget tárol minden nyersanyagtípusból. A tartalma kirakodó segítségével nyerhető ki. +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 = Szub-orbitá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 visszatérést. +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 Törmelékdarabokkal 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 lövedékeket lő ki a nagy távolságokra lévő földi célpontokra. -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ő erejű 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ávú, á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 = Nagy méretű villámot lő ki nagy távolságokra egyszerre egyetlen célpontra. -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ő gyárak termelési sebességét. Tóritkvarcot és Szilíciumot igényel. -block.payload-conveyor.description = Képes egységeket szállí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 azonnal hadrafoghatóak, vagy Újratervezőkben tovább fejleszthetőek. -block.air-factory.description = Légi egységeket gyárt. A kész egységek azonnal hadra foghatóak, vagy Újratervezőkben tovább fejleszthetőek. -block.naval-factory.description = Vízi egységeket gyárt. A kész egységek azonnal hadra foghatóak, vagy Újratervezőkben tovább fejleszthetőek. +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 mennyiségű terhet mozgatni, például gyárakból érkező nyersanyagokat. 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. A kész egységek azonnal hadra foghatók, vagy újratervezőkben továbbfejleszthetők. +block.air-factory.description = Légi egységeket gyárt. A kész egységek azonnal hadra foghatók, vagy újratervezőkben továbbfejleszthetők. +block.naval-factory.description = Vízi egységeket gyárt. A kész egységek azonnal hadra foghatók, vagy újratervezőkben továbbfejleszthetők. 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 mint a mikroprocesszor. -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 mint a logikai processzor. -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 = Folyamatosan javítja a környezetében lévő legközelebbi sérült egységet. Opcionálisan elfogadja a Hűtőfolyadékot. -block.payload-propulsion-tower.description = Nagy hatótávolságú rakományszállító szerkezet. Kilövi a rakományt a vele összekapcsolt tornyokba. +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. #Erekir -block.core-bastion.description = Mag. Páncélozott. Ha elpusztul, a szektor elveszett. -block.core-citadel.description = Mag. Nagyon jól páncélozott. Több nyersanyagot tárol, mint a Bástya. -block.core-acropolis.description = Mag. 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ékeket lő ki az ellenséges célpontokra. -block.diffuse.description = Széles kúpban lövi ki a lövedékeket. Visszalöki az ellenséges célpontokat. -block.sublimate.description = Folyamatos lángcsóvát lő ki az ellenséges célpontokra. Átüti a páncélt. -block.titan.description = Hatalmas robbanó ágyúlövedéket lő ki földi célpontokra. Hidrogént igényel. -block.afflict.description = Hatalmas töltésű repeszlövedék gömböket lő ki. Fűtést igényel. -block.disperse.description = Égő repeszlövedékeket lő ki légi célpontokra. -block.lustre.description = Lassan mozgó, egyszerre egy célpontra ható lézert lő ki az ellenséges célpontokra. +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ézer töltetekből álló célzott sortüzet zúdít az ellenséges célpontokra. Nagymértékű fűtést igényel. -block.silicon-arc-furnace.description = Szilíciumot finomít Homokból és Grafitból. -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ó blokkokat. Nagy mennyiségű energiát igényel. -block.slag-heater.description = Fűti a vele szemben álló blokkokat. Salakot igényel. -block.phase-heater.description = Fűti a vele szemben álló blokkokat. Tóritkvarcot igényel. -block.heat-redirector.description = Átirányítja a felgyülemlett Hőt más blokkokba. -block.heat-router.description = A felgyülemlett Hőt három kimeneti irányba terjeszti. -block.electrolyzer.description = A Vizet Hidrogén- és Ózongázzá alakítja. -block.atmospheric-concentrator.description = Koncentrálja a Nitrogént a légkörből. Hőt igényel. -block.surge-crucible.description = A Salakból és a Szilíciumból Elektrometált képez. 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 = Grafitot és Volfrámot Karbiddá olvaszt. Hőt igényel. -block.cyanogen-synthesizer.description = Cianogént szintetizál Arkycitből és Grafitból. Hőt igényel. -block.slag-incinerator.description = Elégeti a nem illékony tárgyakat 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 termeli ki a nyersanyagokat. Kis mennyiségű Áramot igényel. -block.large-plasma-bore.description = Egy nagyobb plazma vágó. Képes a Volfrám és a Tórium bányászatára. Hidrogént és Áramot igényel. -block.cliff-crusher.description = Felőrli a Homokfalakat és korlátlan ideig 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, sorozatban 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 fogadja el a nem csővezetékes bemeneteket oldalról. +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 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-junction.description = Hídként működik két egymást keresztező csővezeték között. 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ékok szállítása szerkezeteken és terepen keresztül. -block.reinforced-pump.description = Folyadékokat szivattyúz és ad ki. Hidrogént igényel. +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. @@ -2162,165 +2217,212 @@ block.carbide-wall.description = Megvédi az építményeket az ellenséges löv 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 Áramot kap. Vezeti az Áramot. -block.blast-door.description = Egy fal, amely kinyílik, ha a szövetséges földi egységek hatótávolságon belül vannak. Kézzel nem irányítható. +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. Nem fogad el nem-szállító szalagos bemeneteket oldalról. -block.duct-router.description = A nyersanyagokat egyenlően osztja el három irányba. Csak a hátsó oldalról fogadja be a tárgyakat. Nyersanyag Válogatóként is konfigurálható. -block.overflow-duct.description = Csak akkor adja ki az nyersanyagokat oldalra, ha az elülső útvonal el van zárva. -block.duct-bridge.description = Szerkezeteken és a terepen keresztül szállítja a nyersanyagokat. -block.duct-unloader.description = A kiválasztott nyersanyagokat kirakodja a mögötte lévő blokkból. Magokból nem lehet kirakodni. -block.underflow-duct.description = A túlfolyó ellentéte. Előre távozik a nyersanyag, ha a bal és a jobb oldali útvonal el van zárva. -block.reinforced-liquid-junction.description = Két egymást keresztező vezeték közötti csomópontként működik. -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 a Szállítószalagról. Árammal felgyorsítható. Vezeti az Áramot. -block.unit-cargo-loader.description = Teherhordó drónokat épít. A drónok automatikusan szétosztják a nyersanyagokat a megfelelő szűrővel rendelkező kirakodási pontokra. +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 = Az Áramot merőlegesen vezeti a többi blokkhoz. Kis mennyiségű energiát tárol. -block.beam-tower.description = Az Áramot merőlegesen vezeti a többi blokkhoz. Nagy mennyiségű energiát tárol. Nagy hatótávolságú. -block.turbine-condenser.description = A kürtőkből kiáramló gázokból Áramot termel. Kis mennyiségű Vizet termel. -block.chemical-combustion-chamber.description = Arkycitből és Ózonból termel Áramot. -block.pyrolysis-generator.description = Nagy mennyiségű energiát termel Arkycitből és Salakból. Melléktermékként Vizet termel. -block.flux-reactor.description = Nagy mennyiségű energiát termel Hő hatására. Stabilizátorként Cianogént igényel. Az Áramtermelés és a Cianogén igény arányos a Hőbevitellel.\nFelrobban, ha nem áll rendelkezésre elegendő Cianogén. -block.neoplasia-reactor.description = Arkycit, 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.\nHevesen robban, ha a Neoplazmát nem távolítják el a reaktorból a csővezetékeken keresztül. +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ú kerületben. Hidrogént igényel. -block.reinforced-container.description = Kis mennyiségű nyersanyagot tud tárolni. A tartalma kirakodók segítsével nyerhető ki. Nem növeli a Mag tárolókapacitását. -block.reinforced-vault.description = Nagy mennyiségű nyersanyagot tud tárolni. A tartalma kirakodók segítsével nyerhető ki. Nem növeli a Mag tárolókapacitását. -block.tank-fabricator.description = Stell egységeket épít. A kimeneti egységek közvetlenül felhasználhatók, vagy átvihetők újrafeldolgozókba fejlesztésre. -block.ship-fabricator.description = Elude egységeket épít. A kimeneti egységek közvetlenül felhasználhatók, vagy átvihetők újrafeldolgozókba fejlesztésre. -block.mech-fabricator.description = Merui egységeket épít. A kimeneti egységek közvetlenül felhasználhatók, vagy átvihetők újrafeldolgozókba fejlesztésre. +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. A kimeneti egységek közvetlenül használhatók, vagy fejlesztésre újratervezőkbe küldhetők. +block.ship-fabricator.description = Elude egységeket épít. A kimeneti egységek közvetlenül használhatók, vagy fejlesztésre újratervezőkbe küldhetők. +block.mech-fabricator.description = Merui egységeket épít. A kimeneti egységek közvetlenül használhatók, vagy fejlesztésre újratervezőkbe küldhetők. 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ű Mech-eket á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 = Felfejleszti a bejuttatott tank egységeket a második szintre. -block.ship-refabricator.description = Felfejleszti a bejuttatott repülő egységeket a második szintre. -block.mech-refabricator.description = Felfejleszti a bejuttatott mech egységeket a második szintre. -block.prime-refabricator.description = A bejuttatott egységeket a harmadik szintre fejleszti. -block.basic-assembler-module.description = Növeli az összeszerelő szintjét, ha egy építési határvonal mellé helyezik. Áramot igényel. Használható nyersanyag-rakomány bemenetként. -block.small-deconstructor.description = Lebontja a bevitt építményeket és egységeket. Visszaadja az építési költség 100%-át. +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 is funkcionál. -block.payload-mass-driver.description = Nagy hatótávolságú rakományszállító szerkezet. A fogadott rakományokat a hozzákapcsolt másik Tömegmozgatóra lövi. -block.large-payload-mass-driver.description = Nagy hatótávolságú rakományszállító szerkezet. A fogadott rakományokat a hozzákapcsolt másik Tömegmozgatóra lövi. +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 egységsugárú körön belül. Cianogént 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 = Egyszerű töltényeket lő közeli ellenségekre +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.scepter.description = Töltött lövedékek záporát lövi közeli ellenségekre. unit.reign.description = Méretes átütő erejű lövedékeket zúdít minden közeli ellenségre. -unit.nova.description = Lézereket lő, amelyek 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, amelyek az ellenséget sebzik, de gyógyítják a szövetségeseket. Repülésre alkalmas. -unit.quasar.description = Átütő erejű lézersugarakat lő, amelyek 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ő erejű 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.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ő erejű 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ületek és földi egységek szállítására. -unit.quad.description = Nagy bombákat szór földi célpontokra, amelyek 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.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öldi célpontokra. -unit.bryde.description = Nagy tá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ő erejű lövedékeket lő az ellenségre. Flare egységeket gyárt. -unit.alpha.description = Megvédi a Bástyát az ellenségtől. Épít. -unit.beta.description = Megvédi az Alapítványt az ellenségtől. Épít. -unit.gamma.description = Megvédi a Magnumot az ellenségtől. Épít. +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 = Plazma 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élpont kereső kazettás rakétákat lő ki az 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 EMP 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. Megolvasztja a közeli ellenséget 4 autonóm lézertoronnyal. +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 = Normál lövedékeket lő ki az ellenséges célpontokra. +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ési képességű, hasítólövedékeket lő ki az ellenséges célpontokra. -unit.conquer.description = Nagy átütési képességű 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 terepfelületen képes átlépni. -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 terepfelületen képes átlépni. -unit.anthicus.description = Nagy hatótávolságú célkövető rakétákat lő ki az ellenséges célpontokra. A legtöbb tereptárgyon át tud lépni. -unit.tecta.description = Célkövető plazma rakétákat lő ki az ellenséges célpontokra. Irányított pajzzsal védi magát. A legtöbb terepfelületen képes átlépni. -unit.collaris.description = Nagy hatótávolságú repesz-ágyúval lövi az ellenséges célpontokat. A legtöbb terepfelületen képes átlépni. -unit.elude.description = Célkövető golyópárokat lő ki az ellenséges célpontokra. Képes folyadéktestek felett lebegni. +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ákat lő ki az ellenséges célpontokra. Elnyomja az ellenséges szerkezetjavító blokkokat. -unit.disrupt.description = Nagy hatótávolságú célkövető elnyomó rakétákat lő ki az ellenséges célpontokra. Elnyomja az ellenséges szerkezetjavító blokkokat. -unit.evoke.description = A Bástya védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. -unit.incite.description = A Citadella védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. -unit.emanate.description = Az Akropolisz védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. +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 = Írj egy számot egy összekapcsolt memóriacellába. -lst.print = Szöveg hozzáadása a nyomtatási pufferhez.\nNem jelenít meg semmit, amíg a [accent]Kiírási Művelet[] használatban van. -lst.draw = Művelet hozzáadása a rajzpufferhez.\nNem jelenít meg semmit, amíg a [accent]Rajzolási Művelet[] használatban van. -lst.drawflush = Sorba állított [accent]rajz[]műveletek megjelenítése a kijelzőn. -lst.printflush = Sorba állított [accent]kiírási[] műveletek kiírása egy üzenetblokkba. -lst.getlink = A processzor linkjének lekérdezése index szerint. 0-nál kezdődik. +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 = Beméri az egységeket az épület körül egy bizonyos hatótávolságban. +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 = Végezzen ely egy műveletet 1-2 változóval. +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árjon bizonyos számú másodpercet. -lst.stop = A processzor program futtatásának leállítása. -lst.lookup = Egy nyersanyag/folyadék/egység/blokk típus 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[] +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árolja a(z) [accent]@unit[]ban. -lst.unitcontrol = Az aktuálisan összekapcsolt egység vezérlése. -lst.unitradar = Egységek keresése az aktuálisan összekapcsolt egység körül. +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 egy 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.spawnwave = Egy tetszőleges helyen keletkező hullám szimulálása.\nNem növeli a hullámszámlálót. -lst.explosion = Robbanás létrehozása egy helyen. -lst.setrate = A processzor végrehajtási sebességének beállítása utasítás/ütemben. -lst.fetch = Egységek, Magok, játékosok, vagy épületek keresése index szerint.\nAz indexek 0-nál kezdődnek és a visszaadott számuknál végződnek. -lst.packcolor = Tömöríti [0, 1] az RGBA komponenseket egyetlen számba a rajzoláshoz, vagy szabálymeghatározáshoz. -lst.setrule = Állíts be egy játékszabályt. +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 = Manipulálja a játékos kameráját. +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őrzi, hogy egy globális jelölő be van-e állítva. -lst.setprop = Egy egység vagy épület tulajdonságát állítja be. -lst.effect = Létrehoz egy részecske-effektet. -lst.sync = Egy változó szinkronizálása a hálózaton keresztül.\nMásodpercenként legfeljebb 10 alkalommal hívható meg. -lst.makemarker = Új logikai jelölő létrehozása a világban.\nEgy azonosítót kell megadni 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 Jelölő Készítő utasításban megadottal. +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ében ez a [accent]@router[] értéket adja vissza.\nNem karakterlánc. -lenum.shoot = Lőj egy pontra. -lenum.shootp = Lőj egy egységre/épületre sebesség előrejelzéssel. -lenum.config = Épületkonfiguráció, például nyersanyag Válogató. -lenum.enabled = Attól, hogy a blokk engedélyezve van-e. +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 a processzor vezérli, akkor a processzort adja vissza.\nHa formációban van, akkor a vezérlőjét adja vissza.\nMáskülönben magát az egységet adja vissza. -laccess.dead = Attól, hogy egy egység/épület halott-e, vagy már nem érvényes. -laccess.controlled = Visszatér:\n[accent]@ctrlProcessor[]l, ha az egységvezérlő egy processzor\n[accent]@ctrlPlayer[]l, ha az egység/épület vezérlője a játékos\n[accent]@ctrlFormation[]l, ha az egység formációban van\nMáskülönben 0. -laccess.progress = Akció előrehaladása, 0 és 1. között.\nVisszatér a termeléssel, a lövegtorony újratöltésével, vagy az építés előrehaladásával. +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. @@ -2328,46 +2430,47 @@ 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 = Blokk vezérlés +lcategory.block = Blokkvezérlés lcategory.block.description = Interakció a blokkokkal. lcategory.operation = Műveletek lcategory.operation.description = Logikai műveletek. -lcategory.control = Áramlásszabályozás +lcategory.control = Folyamatvezérlés lcategory.control.description = A végrehajtási sorrend kezelése. lcategory.unit = Egységvezérlés -lcategory.unit.description = Adj parancsokat az egységeknek. +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.\nA csomagolt színeket HEX kódként írják ki egy [accent]%[] előtaggal.\nPéldául: [accent]%ff0000[] piros lenne. -graphicstype.stroke = Vonalszélesség beállítása. -graphicstype.line = Rajzolj vonalszakaszt. +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 = Rajzolj egy téglalap alakú körvonalat. +graphicstype.linerect = Téglalap körvonalának rajzolása. graphicstype.poly = Egy szabályos sokszög kitöltése. -graphicstype.linepoly = Rajzolj egy szabályos sokszög körvonalat. -graphicstype.triangle = Töltsön ki egy háromszöget. -graphicstype.image = Rajzolj egy képet valamilyen tartalomról.\nex: [accent]@router[] vagy [accent]@dagger[]. +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ók.\nTörli a kiírás puffert. lenum.always = Mindig igaz. -lenum.idiv = Egész számok osztása. -lenum.div = Osztás.\nVisszatér [accent]null[]val a nullával való osztásnál. -lenum.mod = Moduló. -lenum.equal = Egyenlő. Kényszeríti a típusokat.\nA nem nulla értékű objektumok értéke 1 lesz, egyébként 0. +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 = 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ő. Nem kényszeríti a típusokat.\nA(z) [accent]null[] ellenőrzésére használható. +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.xor = Bitenkénti KIZÁRÓ VAGY. -lenum.min = Legalább két szám. -lenum.max = Legfeljebb két szám. +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. @@ -2376,15 +2479,15 @@ lenum.sin = Szinusz, fokban. lenum.cos = Koszinusz, fokban. lenum.tan = Tangens, fokban. -lenum.asin = ARC-szinusz, fokban. -lenum.acos = ARC-koszinusz, fokban. -lenum.atan = ARC-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életlen decimális szám a [0, érték] tartományban. +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 szimplex zaj. +lenum.noise = 2D-s szimplex zaj. lenum.abs = Abszolút érték. lenum.sqrt = Négyzetgyök. @@ -2399,62 +2502,70 @@ 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 egy Mag vagy egy pozíció. +lenum.spawn = Ellenséges kezdőpont.\nLehet támaszpont vagy pozíció. lenum.building = Épület egy adott csoportban. -lenum.core = Bármilyen Mag. -lenum.storage = Raktárépület, pl. Vault. +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 releváns, ha az [accent]"Egység Lőszer"[] engedélyezve van. -lenum.reactor = Ütközéses/Tórium Erőmű. +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 épület/egység, amelyet érzékelni kell. +sensor.in = Az érzékelendő épület/egység. -radar.from = É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ékelhető egységekhez. +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 = Szűrő az érzékelhető egységekhez. +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 = Épület az irányításhoz. +control.of = Irányítandó épület. control.unit = Megcélozandó egység/épület. -control.shoot = Akár lőni is lehet. +control.shoot = Lőjön-e. -unitlocate.enemy = Akár az ellenséges épületek felkutatása. -unitlocate.found = Függetlenül attól, hogy a tárgy meglett-e találva. +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 = Kimeneti X koordináta. -unitlocate.outy = Kimeneti Y koordináta. +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ászás/építés leállítása. -lenum.unbind = A logikai vezérlés teljes kikapcsolása.\nSzokásos mesterséges intelligencia visszaállítása. +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 = Közelítsen meg egy pozíciót egy sugárral. -lenum.pathfind = Útkeresés az ellenséges kezdőponthoz. -lenum.autopathfind = Automatikus útkeresés a legközelebbi ellenséges Maghoz vagy ledobási ponthoz.\nEz ugyanaz, mint a normál hullámos ellenséges útkeresés. -lenum.target = Lőj egy helyet. -lenum.targetp = Lőj egy célpontra sebesség-előrejelzéssel. -lenum.itemdrop = Dobj le egy nyersanyagot. -lenum.itemtake = Vegyél fel egy nyersanyagot egy épületből. -lenum.paydrop = Dobd le az aktuális rakományt. -lenum.paytake = A rakomány felvétele az aktuális helyen. -lenum.payenter = Lépj be/szállj le arra a rakomány blokkra, amelyen az egység van. +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ánya egy helyen. -lenum.build = Építs egy szerkezetet. -lenum.getblock = Egy épület és a koordinátái típusának lekérdezése. \nAz egységnek a pozíciótartományon belül kell lennie.\nA nem szilárd épületek [accent]@solid[] típusúak lesznek. -lenum.within = Ellenőrizze, hogy az egység egy pozíció közelében van-e. -lenum.boost = Erősítés indítás/leállítás. +lenum.mine = Bányászat egy helyen. +lenum.build = Egy épület építése. +lenum.getblock = Az épület, talaj és típus lekérdezése a koordinátákon.\nAz egységnek a pozíciótartományon belül kell lennie.\nA szilárd dolgok, melyek nem épületek, [accent]@solid[] típusúak lesznek. +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 e30ba5a9dd..e42084a3a7 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -438,6 +438,7 @@ editor.waves = Gelombang: editor.rules = Peraturan: editor.generation = Generasi: editor.objectives = Tujuan +editor.locales = Locale Bundles editor.ingame = Sunting dalam Permainan editor.playtest = Tes Bermain editor.publish.workshop = Terbitkan di Workshop @@ -494,6 +495,7 @@ editor.default = [lightgray] details = Detail... edit = Sunting... variables = Vars +logic.globals = Built-in Variables editor.name = Nama: editor.spawn = Munculkan Unit editor.removeunit = Hapus Unit @@ -505,6 +507,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 @@ -516,6 +519,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'. @@ -603,6 +607,23 @@ filter.option.floor2 = Lantai Sekunder filter.option.threshold2 = Ambang Sekunder filter.option.radius = Radius filter.option.percentile = Perseratus +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: @@ -655,10 +676,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 @@ -709,7 +732,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 @@ -745,8 +768,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}[] @@ -969,17 +992,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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Bidang Tenaga -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1129,7 +1181,7 @@ 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 @@ -1175,15 +1227,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1281,6 +1334,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) @@ -1313,6 +1367,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 @@ -1534,6 +1590,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 @@ -1776,7 +1833,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 @@ -1895,6 +1951,7 @@ 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. @@ -2101,7 +2158,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. @@ -2139,7 +2195,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. @@ -2260,6 +2315,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. @@ -2282,6 +2338,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. @@ -2297,6 +2355,43 @@ 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. @@ -2340,6 +2435,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. @@ -2448,3 +2544,10 @@ 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.within = Memeriksa apakah unit di dekat suatu posisi. lenum.boost = Mulai/berhenti mempercepat. +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 9d2723d67b..6383c512ca 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -436,6 +436,7 @@ editor.waves = Ondate: editor.rules = Regole: editor.generation = Generazione: editor.objectives = Obbiettivi +editor.locales = Locale Bundles editor.ingame = Modifica in Gioco editor.playtest = Playtest editor.publish.workshop = Pubblica nel Workshop @@ -492,6 +493,7 @@ editor.default = [lightgray] details = Dettagli... edit = Modifica... variables = Vars +logic.globals = Built-in Variables editor.name = Nome: editor.spawn = Piazza un'Unità editor.removeunit = Rimuovi un'Unità @@ -503,6 +505,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 @@ -514,6 +517,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'. @@ -598,6 +602,23 @@ filter.option.floor2 = Terreno Secondario filter.option.threshold2 = Soglia Secondaria filter.option.radius = Raggio filter.option.percentile = Percentuale +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: @@ -648,10 +669,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} @@ -699,7 +722,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 @@ -735,8 +758,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}[] @@ -955,17 +978,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Campo energetico -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1116,7 +1168,7 @@ 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 @@ -1162,15 +1214,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1268,6 +1321,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) @@ -1300,6 +1354,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 @@ -1522,6 +1578,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 @@ -1762,7 +1819,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 @@ -1881,6 +1937,7 @@ 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. @@ -2080,7 +2137,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. @@ -2116,7 +2172,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. @@ -2234,6 +2289,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. @@ -2256,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. @@ -2271,6 +2329,43 @@ 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. @@ -2309,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. @@ -2402,3 +2498,10 @@ 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. +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 8f89ae608d..ed0dc7cc69 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -438,6 +438,7 @@ editor.waves = ウェーブ: editor.rules = ルール: editor.generation = 生成: editor.objectives = オブジェクティブ +editor.locales = Locale Bundles editor.ingame = ゲーム内で編集する editor.playtest = Playtest editor.publish.workshop = ワークショップで公開 @@ -494,6 +495,7 @@ editor.default = [lightgray]<デフォルト> details = 詳細... edit = 編集... variables = 変数 +logic.globals = Built-in Variables editor.name = 名前: editor.spawn = ユニットを出す editor.removeunit = ユニットを消す @@ -505,6 +507,7 @@ editor.errorlegacy = このマップは古いです。今後、古いマップ editor.errornot = これはマップファイルではありません。 editor.errorheader = このマップファイルは無効または破損しています。 editor.errorname = マップに名前が設定されていません。 +editor.errorlocales = Error reading invalid locale bundles. editor.update = 更新 editor.randomize = ランダム editor.moveup = 上に移動 @@ -516,6 +519,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 = 組み込みマップを上書きしようとしています! メニューの 'マップ情報' から異なる名前に設定してください。 @@ -602,6 +606,23 @@ filter.option.floor2 = 2番目の地面 filter.option.threshold2 = 2番目の閾値 filter.option.radius = 半径 filter.option.percentile = パーセンタイル +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 = 高さ: @@ -652,10 +673,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} @@ -703,7 +726,7 @@ error.any = 不明なネットワークエラーです。 error.bloom = ブルームの初期化に失敗しました。\n恐らくあなたのデバイスではブルームがサポートされていません。 weather.rain.name = 雨 -weather.snow.name = 雪 +weather.snowing.name = 雪 weather.sandstorm.name = 砂嵐 weather.sporestorm.name = 胞子嵐 weather.fog.name = 霧 @@ -739,8 +762,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}[] @@ -961,17 +984,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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = エネルギー範囲 -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 = コアにのみ搬入できます。 @@ -1122,7 +1174,7 @@ 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 = 電線の透明度 @@ -1168,15 +1220,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = 設計図メニュー @@ -1274,6 +1327,7 @@ rules.unitdamagemultiplier = ユニットのダメージ倍率 rules.unitcrashdamagemultiplier = ユニットの衝突ダメージ倍率 rules.solarmultiplier = 太陽光の倍率 rules.unitcapvariable = コア数によってユニット上限を変動 +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = 基礎ユニット上限数 rules.limitarea = マップエリアを制限 rules.enemycorebuildradius = 敵コア周辺の建設禁止区域の半径:[lightgray] (タイル) @@ -1306,6 +1360,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 = 液体 @@ -1525,6 +1581,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 = アンダーフローゲート @@ -1765,7 +1822,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 = 戦艦再加工工場 @@ -1884,6 +1940,7 @@ 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防御、採掘、生産を用意しましょう。 @@ -2084,7 +2141,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 = さらにバージョンアップしたコアです。 非常に優れた耐久を持っています。 シタデルコアよりも多くの資源を格納します。 @@ -2120,7 +2176,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 = 構造物や地形の上に液体を輸送させることができます。 @@ -2238,6 +2293,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[] 操作をメッセージ ブロックにフラッシュします。 @@ -2260,6 +2316,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で設定します。 @@ -2275,6 +2333,43 @@ 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 = 指定した座標に向かって撃ちます。 @@ -2313,6 +2408,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[] を返します。 @@ -2406,3 +2502,10 @@ lenum.build = 建築をします。 lenum.getblock = 座標から建物とタイプを取得します。\nユニットは範囲内でなければなりません。\n建物以外の物の型は [accent]@solid[] になります。 lenum.within = ユニットが座標の近くにあるかどうかを確認します。 lenum.boost = ブーストの開始、停止をします。 +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 ad67c57a15..2ec87a4548 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -437,6 +437,7 @@ editor.waves = 단계 editor.rules = 규칙 editor.generation = 지형 생성 editor.objectives = 목표 +editor.locales = Locale Bundles editor.ingame = 인게임 편집 editor.playtest = 맵 테스트 editor.publish.workshop = 창작마당 게시 @@ -493,6 +494,7 @@ editor.default = [lightgray]<기본값> details = 설명... edit = 편집... variables = 변수 +logic.globals = Built-in Variables editor.name = 이름: editor.spawn = 기체 생성 editor.removeunit = 기체 삭제 @@ -504,6 +506,7 @@ editor.errorlegacy = 이 맵은 너무 오래됐고, 더 이상 지원하지 않 editor.errornot = 맵 파일이 아닙니다. editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다. editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러오려고 시도하는 건가요? +editor.errorlocales = Error reading invalid locale bundles. editor.update = 업데이트 editor.randomize = 무작위 editor.moveup = 위로 이동 @@ -515,6 +518,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 = 이 맵은 내장된 맵을 덮어씁니다! '맵 정보' 에서 다른 이름을 선택하세요. @@ -602,6 +606,23 @@ filter.option.floor2 = 2번째 타일 filter.option.threshold2 = 2번째 경계선 filter.option.radius = 반경 filter.option.percentile = 백분율 +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 = 높이: @@ -652,10 +673,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 = 외곽선 @@ -704,7 +727,7 @@ error.any = 알 수 없는 네트워크 오류 error.bloom = 블룸 그래픽 효과를 적용하지 못했습니다.\n기기가 이 기능을 지원하지 않는 것일 수도 있습니다. weather.rain.name = 비 -weather.snow.name = 눈 +weather.snowing.name = 눈 weather.sandstorm.name = 모래 폭풍 weather.sporestorm.name = 포자 폭풍 weather.fog.name = 안개 @@ -740,8 +763,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}[] @@ -961,17 +984,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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = 에너지 필드 -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 = 더 좋은 드릴 필요 @@ -1121,7 +1173,7 @@ 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 = 전선 투명도 @@ -1167,15 +1219,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = 설계도 메뉴 @@ -1273,6 +1326,7 @@ rules.unitdamagemultiplier = 기체 피해량 배수 rules.unitcrashdamagemultiplier = 기체 파손 피해량 배수 rules.solarmultiplier = 태양광 전력 배수 rules.unitcapvariable = 코어 기체수 제한 추가 +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = 기본 기체 제한 rules.limitarea = 맵 영역 제한 rules.enemycorebuildradius = 적 코어 건설금지 범위:[lightgray] (타일) @@ -1305,6 +1359,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 = 액체 @@ -1524,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 = 포화 필터 block.underflow-gate.name = 불포화 필터 @@ -1764,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 = 함선 재조립기 @@ -1882,6 +1938,7 @@ 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생산, 채굴, 방어시설을 구성하세요. @@ -2082,7 +2139,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 = 기지의 핵심입니다. 매우 튼튼합니다. 코어: 성채보다 더 많은 양의 자원을 저장합니다. @@ -2118,7 +2174,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 = 구조물 및 지형 위로 유체를 운반합니다. @@ -2237,6 +2292,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[]실행문을 메시지 블록에 출력 @@ -2259,6 +2315,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 = 프로세서 실행 속도를 틱당 연산량으로 설정 @@ -2274,6 +2332,43 @@ 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]기체의 건설 로직은 여기서 허용되지 않습니다. @@ -2316,6 +2411,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 = 정수 나누기 @@ -2424,3 +2520,10 @@ lenum.build = 구조물 건설 lenum.getblock = 특정 좌표의 빌딩과 블록을 반환합니다.\n위치는 기체의 인지 범위 내여야 합니다.\n자연 지형은 [accent]@solid[]의 유형을 가집니다. lenum.within = 좌표 주변 기체 발견 여부 lenum.boost = 이륙 시작/중단 +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 6a3f6578de..90cb6efbf4 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -434,6 +434,7 @@ editor.waves = Bangos: editor.rules = Taisyklės: editor.generation = Generacija: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Redaguoti žaidime editor.playtest = Playtest editor.publish.workshop = Publikuoti Dirbtuvėje @@ -489,6 +490,7 @@ editor.default = [lightgray] details = Detaliau... edit = Redaguoti... variables = Vars +logic.globals = Built-in Variables editor.name = Pavadinimas: editor.spawn = Atradinti vienetą editor.removeunit = Panaikinti vienetą @@ -500,6 +502,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 @@ -511,6 +514,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. @@ -595,6 +599,23 @@ filter.option.floor2 = Antrasis sluoksnis filter.option.threshold2 = Antrasis slenkstis filter.option.radius = Spindulys filter.option.percentile = Procentilė +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: @@ -645,10 +666,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} @@ -695,7 +718,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 @@ -731,7 +754,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}[] @@ -949,17 +973,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1110,7 +1163,7 @@ 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 @@ -1156,15 +1209,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1262,6 +1316,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) @@ -1294,6 +1349,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 @@ -1511,6 +1568,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 @@ -1751,7 +1809,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 @@ -1869,6 +1926,7 @@ 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. @@ -2068,7 +2126,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. @@ -2104,7 +2161,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. @@ -2221,6 +2277,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. @@ -2243,6 +2300,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. @@ -2258,6 +2317,43 @@ 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. @@ -2296,6 +2392,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. @@ -2389,3 +2486,10 @@ 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. +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 5907749572..fb69dc8371 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -442,6 +442,7 @@ editor.waves = Rondes: editor.rules = Regels: editor.generation = Generatie: editor.objectives = Doelen +editor.locales = Locale Bundles editor.ingame = Bewerk In-Spel editor.playtest = Speeltest editor.publish.workshop = Publiceer in Werkplaats @@ -497,6 +498,7 @@ editor.default = [lightgray] details = Details... edit = Bewerk... variables = Vars +logic.globals = Built-in Variables editor.name = Naam: editor.spawn = Voeg Eenheid toe editor.removeunit = Verwijder Eenheid @@ -508,6 +510,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 @@ -519,6 +522,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. @@ -605,6 +609,23 @@ filter.option.floor2 = Secundaire Vloer filter.option.threshold2 = Secundaire Drempel filter.option.radius = Straal filter.option.percentile = percentiel +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: @@ -656,10 +677,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} @@ -706,7 +729,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 @@ -742,7 +765,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}[] @@ -961,17 +985,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energieveld -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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. @@ -1122,7 +1175,7 @@ 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 @@ -1168,15 +1221,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1274,6 +1328,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) @@ -1306,6 +1361,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 @@ -1523,6 +1580,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 @@ -1764,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 @@ -1882,6 +1939,7 @@ 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. @@ -2081,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. @@ -2117,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. @@ -2234,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. @@ -2256,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. @@ -2271,6 +2330,43 @@ 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. @@ -2309,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. @@ -2402,3 +2499,10 @@ 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. +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 2be8645e35..1f345b97e0 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -434,6 +434,7 @@ editor.waves = Waves: editor.rules = Rules: editor.generation = Generation: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -489,6 +490,7 @@ editor.default = [lightgray] details = Details... edit = Edit... variables = Vars +logic.globals = Built-in Variables editor.name = Name: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -500,6 +502,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 @@ -511,6 +514,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. @@ -595,6 +599,23 @@ filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +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: @@ -645,10 +666,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} @@ -695,7 +718,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 @@ -731,7 +754,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}[] @@ -949,17 +973,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1110,7 +1163,7 @@ 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 @@ -1156,15 +1209,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1262,6 +1316,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) @@ -1294,6 +1349,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 @@ -1511,6 +1568,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 @@ -1751,7 +1809,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 @@ -1869,6 +1926,7 @@ 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. @@ -2068,7 +2126,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. @@ -2104,7 +2161,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. @@ -2221,6 +2277,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. @@ -2243,6 +2300,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. @@ -2258,6 +2317,43 @@ 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. @@ -2296,6 +2392,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. @@ -2389,3 +2486,10 @@ 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. +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 b5623f6987..53e9cf4317 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -438,6 +438,7 @@ editor.waves = Fale: editor.rules = Zasady: editor.generation = Generacja: editor.objectives = Cele +editor.locales = Locale Bundles editor.ingame = Edytuj w Grze editor.playtest = Testuj Mapę editor.publish.workshop = Opublikuj w Warsztacie @@ -494,6 +495,7 @@ editor.default = [lightgray] details = Detale... edit = Edytuj... variables = Zmienne +logic.globals = Built-in Variables editor.name = Nazwa: editor.spawn = Stwórz Jednostkę editor.removeunit = Usuń Jednostkę @@ -505,6 +507,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ę @@ -516,6 +519,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'. @@ -600,6 +604,23 @@ filter.option.floor2 = Druga Podłoga filter.option.threshold2 = Drugi Próg filter.option.radius = Zasięg filter.option.percentile = Procent +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ść: @@ -650,10 +671,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} @@ -701,7 +724,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 @@ -737,8 +760,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}[] @@ -959,17 +982,46 @@ 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.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.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.sametypehealmultiplier = [lightgray]Ten sam typ leczenia: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Maksymalne cele: [white]{0} +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 @@ -1120,7 +1172,7 @@ 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 @@ -1166,15 +1218,16 @@ 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 = Porusz -keybind.unit_command_repair = Naprawiaj -keybind.unit_command_rebuild = Odbudowywuj -keybind.unit_command_assist = Asystuj -keybind.unit_command_mine = Kop -keybind.unit_command_boost = Przyspieszaj -keybind.unit_command_load_units = Załaduj jednostki -keybind.unit_command_load_blocks = Załaduj Bloki -keybind.unit_command_unload_payload = Rozładuj Ładunek +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 @@ -1272,6 +1325,7 @@ rules.unitdamagemultiplier = Mnożnik Obrażeń jednostek 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) @@ -1304,6 +1358,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 @@ -1531,6 +1587,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 @@ -1772,7 +1829,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 @@ -1890,6 +1946,7 @@ onset.turrets = Jednostki są efektywne, ale [accent]działka[] zapewniają leps 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. @@ -2090,7 +2147,6 @@ 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 = 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. @@ -2126,7 +2182,6 @@ block.impact-drill.description = Kiedy stoi na rudzie, wydobywa surowce seriami. 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. @@ -2256,6 +2311,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. @@ -2278,6 +2334,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. @@ -2293,6 +2351,43 @@ 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. @@ -2336,6 +2431,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. @@ -2443,3 +2539,10 @@ 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.within = Sprawdź czy jednostka jest w pobliżu pozycji. lenum.boost = Zacznij/zakończ przyspieszać. +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 3ebb454423..4ba31c527b 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -41,16 +41,16 @@ 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]Nenhum lançamento encontrado\n[accent]Não foi possível encontrar nenhum lançamento para este mod. Verifique se o repositório do mod tem algum lançamento publicado. -mods.browser.latest = -mods.browser.releases = Releases +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 = Release Page +mods.github.open-release = Página da versão mods.browser.sortdate = Ordenar por mais recente mods.browser.sortstars = Ordenar por estrelas @@ -146,9 +146,9 @@ 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 @@ -190,9 +190,9 @@ unlocked = Novo bloco desbloqueado! available = Nova pesquisa disponível! unlock.incampaign = < Desbloqueie na campanha para mais detalhes > campaign.select = Selecione a campanha inicial -campaign.none = [lightgray]Selecione um planeta para começar.\nEle pode ser alterado a qualquer momento. -campaign.erekir = Conteúdo mais novo e mais polido. Progressão de campanha principalmente linear.\n\nMapas de maior qualidade e experiência geral. -campaign.serpulo = Conteúdo mais antigo; a experiência clássica. Mais aberto.\n\nMapas e mecânicas de campanha potencialmente desbalanceados. Menos polido. +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 @@ -383,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} @@ -438,6 +438,7 @@ editor.waves = Hordas: editor.rules = Regras: editor.generation = Geração: editor.objectives = Objetivos: +editor.locales = Locale Bundles editor.ingame = Editar em jogo editor.playtest = Jogar Teste editor.publish.workshop = Publicar na oficina @@ -494,6 +495,7 @@ editor.default = [lightgray] details = Detalhes... edit = Editar... variables = Variáveis +logic.globals = Built-in Variables editor.name = Nome: editor.spawn = Spawnar unidade editor.removeunit = Remover unidade @@ -505,6 +507,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 @@ -516,6 +519,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" @@ -603,6 +607,23 @@ filter.option.floor2 = Chão secundário filter.option.threshold2 = Margem secundária filter.option.radius = Raio filter.option.percentile = Percentual +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: @@ -655,10 +676,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 @@ -709,7 +732,7 @@ 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 @@ -745,8 +768,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}[] @@ -970,17 +993,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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Campo de Energia -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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. @@ -1130,7 +1182,7 @@ 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 @@ -1176,15 +1228,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1282,6 +1335,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) @@ -1314,6 +1368,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 @@ -1531,6 +1587,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 @@ -1771,7 +1828,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 @@ -1829,12 +1885,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. @@ -1852,52 +1908,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. -#Don't translate these yet! +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. @@ -2098,7 +2155,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. @@ -2136,7 +2192,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. @@ -2255,6 +2310,7 @@ unit.emanate.description = Constrói estruturas para defender o Núcelo Acrópol 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. @@ -2277,6 +2333,8 @@ 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. @@ -2292,6 +2350,43 @@ 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]Lógica de construção de unidades não é permitida aqui. @@ -2335,6 +2430,7 @@ 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 = Sempre verdade. lenum.idiv = Divisão inteira. @@ -2441,3 +2537,10 @@ lenum.build = Construa uma estrutura. lenum.getblock = Busque uma construção e digite nas coordenadas.\nA unidade deve estar no intervalo de posição.\nConstruções sólidas não construídas terão o tipo [accent]@solid[]. 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 39af5a41ae..1780792fe3 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -434,6 +434,7 @@ editor.waves = Hordas: editor.rules = Regras: editor.generation = Geração: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Editar em jogo editor.playtest = Playtest editor.publish.workshop = Publicar na oficina @@ -489,6 +490,7 @@ editor.default = [lightgray] details = Detalhes... edit = Editar... variables = Vars +logic.globals = Built-in Variables editor.name = Nome: editor.spawn = Criar unidade editor.removeunit = Remover unidade @@ -500,6 +502,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 @@ -511,6 +514,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" @@ -595,6 +599,23 @@ filter.option.floor2 = Chão secundário filter.option.threshold2 = Margem secundária filter.option.radius = Raio filter.option.percentile = Percentual +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: @@ -645,10 +666,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} @@ -695,7 +718,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 @@ -731,7 +754,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}[] @@ -949,17 +973,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1110,7 +1163,7 @@ 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 @@ -1156,15 +1209,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1262,6 +1316,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) @@ -1294,6 +1349,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 @@ -1511,6 +1568,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 @@ -1751,7 +1809,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 @@ -1869,6 +1926,7 @@ 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. @@ -2068,7 +2126,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. @@ -2104,7 +2161,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. @@ -2221,6 +2277,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. @@ -2243,6 +2300,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. @@ -2258,6 +2317,43 @@ 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. @@ -2296,6 +2392,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. @@ -2389,3 +2486,10 @@ 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. +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 4f5cdae374..b2db9b66cd 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -438,6 +438,7 @@ editor.waves = Valuri: editor.rules = Reguli: editor.generation = Generare: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Editează în Joc editor.playtest = Playtest editor.publish.workshop = Publică pe Workshop @@ -494,6 +495,7 @@ editor.default = [lightgray] details = Detalii... edit = Editează... variables = Vars +logic.globals = Built-in Variables editor.name = Nume: editor.spawn = Adaugă Unitate editor.removeunit = Înlătură Unitate @@ -505,6 +507,7 @@ 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 @@ -516,6 +519,7 @@ 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ă'. @@ -602,6 +606,23 @@ filter.option.floor2 = Podea Secundară filter.option.threshold2 = Cantitate Secundară filter.option.radius = Rază filter.option.percentile = Procent +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: @@ -652,10 +673,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} @@ -703,7 +726,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ță @@ -739,8 +762,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}[] @@ -961,17 +984,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Câmp de Energie -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1122,7 +1174,7 @@ 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.steampublichost.name = Public Game Visibility setting.playerlimit.name = Limita Jucătorilor setting.chatopacity.name = Opacitate Chat setting.lasersopacity.name = Opacitate Laser Electric @@ -1168,15 +1220,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1274,6 +1327,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) @@ -1306,6 +1360,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 @@ -1525,6 +1581,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 @@ -1765,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 @@ -1884,6 +1940,7 @@ 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. @@ -2084,7 +2141,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. @@ -2120,7 +2176,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. @@ -2239,6 +2294,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. @@ -2261,6 +2317,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. @@ -2276,6 +2334,43 @@ 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. @@ -2318,6 +2413,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). @@ -2426,3 +2522,10 @@ 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.within = Verifică dacă unitatea se află în apropierea poziției. lenum.boost = Pornește/oprește propulsorul. +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 4485a18f9a..ae8defc92e 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -438,6 +438,7 @@ editor.waves = Волны: editor.rules = Правила: editor.generation = Генерация: editor.objectives = Цели +editor.locales = Locale Bundles editor.ingame = Редактировать в игре editor.playtest = Опробовать карту editor.publish.workshop = Опубликовать в Мастерской @@ -494,6 +495,7 @@ editor.default = [lightgray]<По умолчанию> details = Подробности… edit = Редактировать… variables = Переменные +logic.globals = Built-in Variables editor.name = Название: editor.spawn = Создать боевую единицу editor.removeunit = Удалить боевую единицу @@ -505,6 +507,7 @@ editor.errorlegacy = Эта карта слишком старая и испол editor.errornot = Это не файл карты. editor.errorheader = Этот файл карты недействителен или повреждён. editor.errorname = Карта не имеет имени. Может быть, вы пытаетесь загрузить сохранение? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Обновить editor.randomize = Случайно editor.moveup = Выше @@ -516,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 = Ваша карта не может быть записана поверх встроенной карты! Введите другое название в меню «Информация о карте» @@ -602,6 +606,23 @@ filter.option.floor2 = Вторая поверхность filter.option.threshold2 = Вторичный предельный порог filter.option.radius = Радиус filter.option.percentile = Процентиль +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 = Высота: @@ -652,10 +673,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} @@ -703,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 = Туман @@ -740,8 +763,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}[] @@ -962,17 +985,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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Энергетическое поле -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 = Требуется бур получше @@ -1122,7 +1174,7 @@ 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 = Непрозрачность лазеров энергоснабжения @@ -1168,15 +1220,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = Меню схем @@ -1244,7 +1297,7 @@ rules.invaliddata = Invalid clipboard data. rules.hidebannedblocks = Скрыть запрещенные блоки rules.infiniteresources = Бесконечные ресурсы rules.onlydepositcore = Разрешен перенос только в ядро -rules.derelictrepair = Allow Derelict Block Repair +rules.derelictrepair = Разрешить починку покинутых построек rules.reactorexplosions = Взрывы реакторов rules.coreincinerates = Ядро сжигает избыток ресурсов rules.disableworldprocessors = Отключить мировые процессоры @@ -1274,6 +1327,7 @@ rules.unitdamagemultiplier = Множитель урона боев. ед. rules.unitcrashdamagemultiplier = Множитель урона от падения боев. ед. rules.solarmultiplier = Множитель солнечной энергии rules.unitcapvariable = Ядра увеличивают лимит единиц +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Начальный лимит единиц rules.limitarea = Ограничить область карты rules.enemycorebuildradius = Радиус защиты враж. ядер:[lightgray] (блок.) @@ -1306,6 +1360,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 = Жидкости @@ -1525,6 +1581,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 = Избыточный шлюз @@ -1765,7 +1822,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 = Рефабрикатор кораблей @@ -1885,12 +1941,13 @@ 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 = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. +aegis.tungsten = Вольфрам может быть добыт [accent]ударной дрелью[].\nЭта постройка требует [accent]воду[] и [accent]энергию[]. split.pickup = Некоторые блоки можно подобрать боевой единицей ядра.\nВозьмите этот [accent]контейнер[] и поставьте его на [accent]грузовой загрузчик[].\n(Клавиши по умолчанию - [ и ] для поднятия и разгрузки) split.pickup.mobile = Некоторые блоки можно подобрать боевой единицей ядра.\nВозьмите этот [accent]контейнер[] и поставьте его на [accent]грузовой загрузчик[].\n(Чтобы поднять или разгрузить что-либо, удерживайте палец.) @@ -1983,7 +2040,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 = Перемещает предметы вперёд. Быстрее, чем стандартный конвейер. @@ -2086,7 +2143,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 = Ядро базы. Исключительно хорошо бронировано. Хранит больше ресурсов, чем ядро Цитадель. @@ -2122,7 +2178,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 = Перемещает жидкости над любой местностью или зданиями. @@ -2241,6 +2296,7 @@ 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[] операций в блок-сообщение. @@ -2263,6 +2319,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 = Устанавливает скорость выполнения процессора в инструкциях/тиках. @@ -2278,6 +2336,43 @@ 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]Строительство с помощью процессоров здесь запрещено. @@ -2320,6 +2415,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 = Целочисленное деление. @@ -2428,3 +2524,10 @@ lenum.build = Строительство блоков. lenum.getblock = Распознавание блока и его типа на координатах.\nЕдиница должна находиться в пределах досягаемости.\nТвёрдые не-постройки будут иметь тип [accent]@solid[]. lenum.within = Проверка на нахождение единицы рядом с позицией. lenum.boost = Включение/выключение полёта. +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 06dd54f0ba..57e10040b7 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -438,6 +438,7 @@ editor.waves = Talasi: editor.rules = Pravila: editor.generation = Generisanje: editor.objectives = Zadaci +editor.locales = Locale Bundles editor.ingame = Izmeni "U Igri" editor.playtest = Testiranje editor.publish.workshop = Objavi u Radionicu @@ -494,6 +495,7 @@ editor.default = [lightgray] details = Detalji... edit = Izmeni... variables = Varijabla +logic.globals = Built-in Variables editor.name = Ime: editor.spawn = Prizovi Jedinicu editor.removeunit = Ukloni Jedinicu @@ -505,6 +507,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 @@ -516,6 +519,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. @@ -602,6 +606,23 @@ filter.option.floor2 = Drugi Pod filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +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: @@ -652,10 +673,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} @@ -704,7 +727,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 @@ -740,8 +763,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}[] @@ -963,17 +986,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energetsko Polje -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1124,7 +1176,7 @@ 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 @@ -1170,15 +1222,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1276,6 +1329,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) @@ -1308,6 +1362,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 @@ -1527,6 +1583,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 @@ -1767,7 +1824,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 @@ -1887,6 +1943,7 @@ 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. @@ -2087,7 +2144,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. @@ -2123,7 +2179,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. @@ -2242,6 +2297,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. @@ -2264,6 +2320,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. @@ -2279,6 +2337,43 @@ 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. @@ -2321,6 +2416,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. @@ -2429,3 +2525,10 @@ 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. +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 4691464208..2268e25ca8 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -434,6 +434,7 @@ editor.waves = Vågor: editor.rules = Regler: editor.generation = Generering: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -489,6 +490,7 @@ editor.default = [lightgray] details = Details... edit = Redigera... variables = Vars +logic.globals = Built-in Variables editor.name = Namn: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -500,6 +502,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 @@ -511,6 +514,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. @@ -595,6 +599,23 @@ filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radie filter.option.percentile = Percentile +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: @@ -645,10 +666,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} @@ -695,7 +718,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 @@ -731,7 +754,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}[] @@ -949,17 +973,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1110,7 +1163,7 @@ 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 @@ -1156,15 +1209,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1262,6 +1316,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) @@ -1294,6 +1349,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 @@ -1511,6 +1568,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 @@ -1751,7 +1809,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 @@ -1869,6 +1926,7 @@ 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. @@ -2068,7 +2126,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. @@ -2104,7 +2161,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. @@ -2221,6 +2277,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. @@ -2243,6 +2300,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. @@ -2258,6 +2317,43 @@ 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. @@ -2296,6 +2392,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. @@ -2389,3 +2486,10 @@ 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. +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 84c75c6585..91573f01ba 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -438,6 +438,7 @@ editor.waves = คลื่น editor.rules = กฎ editor.generation = เจนเนอเรชั่น editor.objectives = เป้าหมาย +editor.locales = Locale Bundles editor.ingame = แก้ไขในเกม editor.playtest = เล่นทดสอบ editor.publish.workshop = เผยแพร่บนเวิร์กช็อป @@ -494,6 +495,7 @@ editor.default = [lightgray]<ค่าเริ่มต้น> details = รายละเอียด... edit = แก้ไข... variables = ตัวแปร +logic.globals = Built-in Variables editor.name = ชื่อ: editor.spawn = สร้างยูนิต editor.removeunit = ลบยูนิต @@ -505,6 +507,7 @@ editor.errorlegacy = แมพนี้เก่าเกินไปและ editor.errornot = นี่ไม่ใช้ไฟล์แมพ editor.errorheader = ไฟล์แมพนี้เสียหรือไม่ถูกต้อง editor.errorname = แมพไม่มีการกำหนดชื่อ คุณกำลังพยายามโหลดไฟล์เซฟอยู่หรือไม่? +editor.errorlocales = Error reading invalid locale bundles. editor.update = อัปเดต editor.randomize = สุ่ม editor.moveup = ขยับขึ้น @@ -516,6 +519,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 = แมพของคุณไปทับซ้อนกับแมพค่าเริ่มต้น! เปลี่ยนชื่อได้ในเมนู 'ข้อมูลแมพ' @@ -602,6 +606,23 @@ filter.option.floor2 = พื้นชั้นสอง filter.option.threshold2 = เกณฑ์ชั้นสอง filter.option.radius = รัศมี filter.option.percentile = เปอร์เซ็นต์ไทล์ +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 = สูง: @@ -652,10 +673,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} @@ -703,7 +726,7 @@ error.any = ข้อผิดพลาด: เครือข่ายที่ error.bloom = ไม่สามารถเริ่มต้นบลูมได้\nอุปกรณ์ของคุณอาจไม่รองรับ weather.rain.name = ฝน -weather.snow.name = หิมะ +weather.snowing.name = หิมะ weather.sandstorm.name = พายุทราย weather.sporestorm.name = พายุสปอร์ weather.fog.name = หมอก @@ -740,8 +763,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}[] @@ -963,17 +986,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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = สนามพลังงาน -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 = ต้องมีเครื่องขุดที่ดีกว่านี้ @@ -1123,7 +1175,7 @@ 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 = ความโปร่งแสงของลำแสงพลังงาน @@ -1169,15 +1221,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = เมนูแผนผัง @@ -1275,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] (ช่อง) @@ -1307,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 = ของเหลว @@ -1532,6 +1588,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 = ประตูระบายข้าง @@ -1772,7 +1829,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 = เครื่องแปลงสภาพยานบิน @@ -1893,6 +1949,7 @@ 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จัดตั้งกองกำลังป้องกัน ปฏิบัติการขุด และการผลิต @@ -2100,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 = บล็อกขนส่งสิ่งบรรทุกทางไกล\nยิงสิ่งบรรทุกไปยังหอเคลื่อนย้ายสิ่งบรรทุกอีกเครื่องที่เชื่อมต่อไว้ #Erekir block.core-bastion.description = ใจกลางของฐานทัพ เสริมเกราะมาอย่างดี เมื่อถูกทำลาย การติดต่อกับพื้นที่นั้นทั้งหมดจะหายไป อย่าให้มันเกิดขึ้น @@ -2138,7 +2194,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 = เคลื่อนย้ายของเหลวข้ามสิ่งก่อสร้างหรือกำแพง @@ -2259,6 +2314,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[] ไปยังตัวเก็บข้อความที่เชื่อมต่อไว้ @@ -2281,6 +2337,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 = จำลองคลื่นที่ตำแหน่งใดๆ lst.explosion = เสกระเบิดที่ตำแหน่ง lst.setrate = ตั้งค่าความเร็วการสั่งเป็นคำสั่งใน คำสั่ง/ติก @@ -2296,6 +2354,43 @@ 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]ไม่อนุญาตให้ใช้ลอจิกควบคุมให้ยูนิตสร้างที่นี่ @@ -2339,6 +2434,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 = หารจำนวนเต็ม @@ -2447,3 +2543,10 @@ lenum.build = สร้างสิ่งก่อสร้าง lenum.getblock = ดึงข้อมูลสิ่งก่อสร้างและประเภทของสิ่งก่อสร้างที่ตำแหน่งเป้าหมาย\nยูนิตต้องอยู่ในระยะของตำแหน่ง\nบล็อกตันที่ไม่ใช่สิ่งก่อสร้างจะมีชนิดเป็น [accent]@solid[] lenum.within = ตรวจสอบว่ายูนิตนั้นอยู่ในระยะหรือไม่ lenum.boost = เริ่ม/หยุดการบูสต์ +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 cbeed1ebb2..f2922470e8 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -434,6 +434,7 @@ editor.waves = Waves: editor.rules = Rules: editor.generation = Generation: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -489,6 +490,7 @@ editor.default = [lightgray] details = Details... edit = Edit... variables = Vars +logic.globals = Built-in Variables editor.name = isim: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -500,6 +502,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 @@ -511,6 +514,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 @@ -595,6 +599,23 @@ filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +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: @@ -645,10 +666,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} @@ -695,7 +718,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 @@ -731,7 +754,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}[] @@ -949,17 +973,46 @@ 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 @@ -1110,7 +1163,7 @@ 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 @@ -1156,15 +1209,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 @@ -1262,6 +1316,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) @@ -1294,6 +1349,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 @@ -1511,6 +1568,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 @@ -1751,7 +1809,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 @@ -1869,6 +1926,7 @@ 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. @@ -2068,7 +2126,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. @@ -2104,7 +2161,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. @@ -2221,6 +2277,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. @@ -2243,6 +2300,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. @@ -2258,6 +2317,43 @@ 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. @@ -2296,6 +2392,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. @@ -2389,3 +2486,10 @@ 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. +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 baa14ac99e..9a9ecead53 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -438,6 +438,7 @@ editor.waves = Dalgalar: editor.rules = Kurallar: editor.generation = Oluşum: editor.objectives = Görevler: +editor.locales = Locale Bundles editor.ingame = Oyun içinde düzenle editor.playtest = Test Et editor.publish.workshop = Atölyede Yayınla @@ -494,6 +495,7 @@ editor.default = [lightgray] details = Detaylar... edit = Düzenle... variables = Değişkenler +logic.globals = Built-in Variables editor.name = İsim: editor.spawn = Birim Oluştur editor.removeunit = Birim Kaldır @@ -505,6 +507,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 = Error reading invalid locale bundles. editor.update = Güncelle editor.randomize = Rastgele Yap editor.moveup = Yukarı Kaydır @@ -516,6 +519,7 @@ editor.sectorgenerate = Sektör Oluştur editor.resize = Yeniden Boyutlandır editor.loadmap = Harita Yükle editor.savemap = Haritayı Kaydet +editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? 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ç. @@ -602,6 +606,23 @@ filter.option.floor2 = İkincil Duvar filter.option.threshold2 = İkincil Eşik filter.option.radius = Yarıçap filter.option.percentile = Yüzdelik +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 = En: height = Boy: @@ -652,10 +673,12 @@ 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.line.name = Line +marker.quad.name = Quad +marker.texture.name = Texture marker.background = Arkaplan marker.outline = Anahat objective.research = [accent]Araştır:\n[]{0}[lightgray]{1} @@ -703,7 +726,7 @@ 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 @@ -739,8 +762,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 = Sector [accent]{0}[white]Captured! +sector.capture.current = Sector Captured! 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}[] @@ -960,17 +983,46 @@ stat.immunities = Bağışıklıklar stat.healing = Tamir Eder ability.forcefield = Güç Kalkanı +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Onarma Alanı +ability.repairfield.description = Repairs nearby units ability.statusfield = Hızlandırma Alanı +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Birliği Fabrikası +ability.unitspawn.description = Constructs units ability.shieldregenfield = Kalkan Yenileme Alanı +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Hareket Enerjisi +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Ark Kalkanı +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Tamir Engelleme Alanı +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Güç Kalkanı -ability.energyfield.sametypehealmultiplier = [lightgray]Aynı Türden İyileştirme: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Azami Hedefler: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Yenilenme +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 = Sadece Merkeze Aktarım Mümkün bar.drilltierreq = Daha Güçlü Matkap Gerekli @@ -1120,7 +1172,7 @@ 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 = Public Game Visibility setting.playerlimit.name = Oyuncu Limiti setting.chatopacity.name = Mesajlaşma Opaklığı setting.lasersopacity.name = Enerji Lazeri Opaklığı @@ -1166,15 +1218,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = Alanı Geri İşaa Et keybind.schematic_select.name = Bölge Seç keybind.schematic_menu.name = Şema Menüsü @@ -1272,6 +1325,7 @@ rules.unitdamagemultiplier = Birim Hasar Çapanı 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) @@ -1304,6 +1358,8 @@ rules.weather = Hava Durumu rules.weather.frequency = Sıklık: rules.weather.always = Her zaman rules.weather.duration = Süreklilik: +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 = Malzemeler content.liquid.name = Sıvılar @@ -1523,6 +1579,7 @@ 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 = World Switch block.illuminator.name = Aydınlatıcı block.overflow-gate.name = Taşma Geçidi block.underflow-gate.name = Yana Taşma Geçidi @@ -1764,7 +1821,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ı @@ -1884,6 +1940,7 @@ onset.turrets = Birimler etkili, ancak [accent]taretler[] daha iyi bir savunma s 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ş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. @@ -2084,7 +2141,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. @@ -2120,7 +2176,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ü. @@ -2239,6 +2294,7 @@ unit.emanate.description = Akropolis Merkezini korumak için binalar inşa eder. 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, @@ -2261,6 +2317,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) @@ -2276,6 +2334,43 @@ 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 = 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]Birim İnşası Yasak! @@ -2318,6 +2413,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 = Draws text from the print buffer.\nClears the print buffer. lenum.always = Her Zaman Doğru lenum.idiv = Tamsayı Bölme @@ -2426,3 +2522,10 @@ lenum.build = Bina inşa et. lenum.getblock = Bir bloğun verilerini al. lenum.within = Bir birim menzil alanında mı? lenum.boost = Boostlamaya başla/dur +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_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 9e8557f0e7..24a8cf4738 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -440,6 +440,7 @@ editor.waves = Хвилі editor.rules = Правила editor.generation = Генерація editor.objectives = Завдання +editor.locales = Locale Bundles editor.ingame = Редагувати в грі editor.playtest = Протестувати в грі editor.publish.workshop = Опублікувати в Майстерні Steam @@ -496,6 +497,7 @@ editor.default = [lightgray]<За замовчуванням> details = Подробиці… edit = Змінити… variables = Змінні +logic.globals = Built-in Variables editor.name = Ім’я: editor.spawn = Створити бойову одиницю editor.removeunit = Видалити бойову одиницю @@ -507,6 +509,7 @@ editor.errorlegacy = Ця мапа занадто стара і використ editor.errornot = Це не мапа. editor.errorheader = Цей файл мапи недійсний або пошкоджений. editor.errorname = Мапа не має назви. Може, ви намагаєтеся завантажити збереження? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Оновити editor.randomize = Випадково editor.moveup = Підняти вище @@ -518,6 +521,7 @@ editor.sectorgenerate = Згенерувати сектор editor.resize = Змінити\nрозмір 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 = Ваша мапа перезаписує вбудовану мапу! Виберіть іншу назву в «Інформація про мапу». @@ -605,6 +609,23 @@ filter.option.floor2 = Друга поверхня filter.option.threshold2 = Вторинний граничний поріг filter.option.radius = Радіус filter.option.percentile = Спад +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 = Висота: @@ -657,10 +678,12 @@ 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 = Контур @@ -711,7 +734,7 @@ error.any = Невідома мережева помилка error.bloom = Не вдалося ініціалізувати світіння.\nВаш пристрій, мабуть, не підтримує це. weather.rain.name = Дощ -weather.snow.name = Сніг +weather.snowing.name = Сніг weather.sandstorm.name = Піщана буря weather.sporestorm.name = Спорова буря weather.fog.name = Туман @@ -748,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}[] на [accent]{1}[] @@ -971,17 +994,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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Енергетичне поле -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 = Потрібен ліпший бур @@ -1131,7 +1183,7 @@ 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 = Непрозорість лазерів енергопостачання @@ -1177,15 +1229,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = Меню схем @@ -1283,6 +1336,7 @@ rules.unitdamagemultiplier = Множник шкоди бойових одини rules.unitcrashdamagemultiplier = Множник шкоди одиниці при зіткненні одиниць rules.solarmultiplier = Множник сонячної енергії rules.unitcapvariable = Ядра збільшують обмеження на кількість одиниць +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Початкове обмеження одиниць rules.limitarea = Обмежити територію мапи rules.enemycorebuildradius = Радіус оборони для ворожого ядра:[lightgray] (плитки) @@ -1315,6 +1369,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 = Рідини @@ -1536,6 +1592,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 = Недостатній затвор @@ -1778,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 = Корабельний перебудовний завод @@ -1900,6 +1956,7 @@ onset.turrets = Одиниці ефективні, але [accent]башти[] onset.turretammo = Забезпечте башту [accent]берилієвими боєприпасами[]. onset.walls = [accent]Стіни[] cможе запобігти потраплянню зустрічної шкоди на будівлі.\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Організуйте оборону, видобуток корисних копалин та виробництво. @@ -2107,7 +2164,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Ядро бази. Броньоване. Після знищення сектор втрачається. @@ -2145,7 +2201,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Транспортує рідини над спорудами та місцевістю. @@ -2266,6 +2321,7 @@ unit.emanate.description = Англійська назва: Emanate\nБудує 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[] у блок «Повідомлення». @@ -2288,6 +2344,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 = Установлює швидкість виконання процесора в інструкціях за такт. @@ -2303,6 +2361,43 @@ 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]Будування за допомогою процесорів заборено. @@ -2346,6 +2441,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 = Ціле ділення. @@ -2454,3 +2550,10 @@ lenum.build = Побудувати будівлю. lenum.getblock = Розпізнавання блока та його типа за координатами.\nОдиниця повинна знаходитися в межах досяжності.\nСуцільні не-будівлі матимуть тип [accent]@solid[]. lenum.within = Чи знаходиться одиниця біля позиції. lenum.boost = Почати чи зупинити політ. +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 1cf937b88c..7856f9339e 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -8,7 +8,7 @@ link.github.description = Mã nguồn trò chơ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 = Bảng Trello chính thức 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.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 = Mindustry wiki chính thức @@ -31,13 +31,13 @@ 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 = Bản 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.ignore = Phớt lờ 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. @@ -46,8 +46,8 @@ 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 @@ -77,9 +77,9 @@ 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.tagged = {0} đã gắn thẻ +schematic.tagged = {0} thẻ đã gắn schematic.tagdelconfirm = Xóa thẻ này? schematic.tagexists = Thẻ đã tồn tại. @@ -92,11 +92,11 @@ 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.select = Chọn cấp độ -level.mode = Chế độ: +level.mode = Chế độ chơi: 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 @@ -104,9 +104,9 @@ 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ỏ @@ -116,7 +116,7 @@ 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ệ @@ -130,7 +130,7 @@ 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 = 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 @@ -141,18 +141,20 @@ mods.reloadexit = Trò chơi sẽ đóng để mod được tải. mod.installed = [[Đã cài đặt] mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Đã Bật -mod.disabled = [scarlet]Đã Tắ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.blacklisted = [red]Không hỗ trợ mod.unmetdependencies = [red]Thiếu mod phụ thuộc 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.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ó. @@ -161,10 +163,11 @@ mod.erroredcontent.details = Đã xãy ra lỗi khi tải trò chơi. Vui lò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.requiresversion = Yêu cầu phiên bản game: [red]{0} +mod.requiresversion = Yêu cầu phiên bản trò chơi: [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ị lỗi hoặc sửa các lỗi trước khi chơi. +mod.nowdisabled = [red]Mod '{0}' cần mod này để chạy:[accent] {1}\n[lightgray]Trước tiên bạn cần tải các mod này xuống.\nBản mod này sẽ tự động tắt. mod.enable = Bật mod.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 @@ -172,13 +175,13 @@ 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.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 đó. 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 này. Bạn phải tắt các mod này để chơi trò chơi. about.button = Thông tin name = Tên: @@ -195,8 +198,8 @@ campaign.none = [lightgray]Chọn một hành tinh để bắt đầu.\nCó th 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. 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 @@ -210,25 +213,25 @@ 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ị đá 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.clientOutdated = Phiên bản máy khách đã cũ! 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.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ọ. +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ủ. invitefriends = Mời bạn bè hostserver.mobile = Mở máy chủ @@ -243,20 +246,20 @@ 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.remote = Máy chủ từ xa +servers.global = Máy chủ cộng đồng servers.disclaimer = Nhà phát triển [accent]không[] sở hữu và kiểm soát máy chủ cộng đồng.\n\nMáy chủ có thể chứa nội dung do người dùng tạo và không phù hợp với mọi lứa tuổi. servers.showhidden = Hiển thị Máy chủ Ẩn server.shown = Hiện server.hidden = Ẩn -viewplayer = Đang xem người chơi: [accent]{0} -trace = Tìm người chơi +viewplayer = Đang xem người chơi: [accent]{0} +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.language = Language: [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} @@ -264,11 +267,13 @@ trace.times.kicked = Số lần bị buộc rời: [accent]{0} 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 = Đá +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.admins = Quản trị viên @@ -277,19 +282,19 @@ 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]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? +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]"? -votekick.reason = Lý do bỏ phiếu đá -votekick.reason.message = Bạn có chắc muốn bỏ phiếu đá "{0}[white]"?\nNếu có, xin hãy nhập lý do: +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ờ. @@ -300,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.invalidport = Số cổng không hợp lệ! server.error = [scarlet]Lỗi 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. 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 thể lưu 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 @@ -329,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. @@ -339,26 +344,26 @@ view.workshop = Xem trong Workshop workshop.listing = Chỉnh sửa danh sách Workshop ok = Đồng ý open = Mở -customize = Luật tùy chỉnh +customize = Quy luật tùy chỉnh cancel = Hủy command = Mệnh lệnh -command.queue = [lightgray][Queuing] +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 -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 +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 @@ -385,11 +390,11 @@ 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. +wave.waveInProgress = [lightgray]Đợt đang tấn công waiting = [lightgray]Đang chờ... waiting.players = Đang chờ thêm người chơi... wave.enemies = [lightgray]{0} Kẻ địch còn lại @@ -402,7 +407,7 @@ 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ứ {0} vào bản đồ ở trình chỉnh sửa. @@ -411,34 +416,35 @@ map.nospawn.attack = Bản đồ này không có bất kỳ căn cứ kẻ thù 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ị! +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): 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.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: {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.cliffs = Chuyển tường thành vách đá editor.brush = Kích thướ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.waves = Lượt +editor.rules = Quy luật +editor.generation = Tạo ra editor.objectives = Mục tiêu +editor.locales = Gói ngôn ngữ 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 @@ -446,11 +452,11 @@ 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 @@ -458,15 +464,15 @@ waves.title = Đợt waves.remove = Xóa 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 = sinh ra: +waves.spawn = xuất hiện từ: waves.spawn.all = 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 = Số lượng đơn vị tối đa +waves.max = đơn vị tối đa waves.guardian = Trùm waves.preview = Xem trước waves.edit = Chỉnh sửa... @@ -479,8 +485,8 @@ waves.none = Không có kẻ thù được xác định.\nLưu ý rằng bố c 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.sort.health = Độ bền +waves.sort.type = Kiểu loại waves.search = Tìm kiếm các lượt... waves.filter = Bộ lọc đơn vị waves.units.hide = Ẩn tất cả @@ -489,15 +495,16 @@ 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... +edit = Chỉnh sửa variables = Thông số +logic.globals = Thông 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. @@ -506,6 +513,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 đọ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 @@ -517,6 +525,7 @@ editor.sectorgenerate = Tạo ra khu vực editor.resize = Thay đổi kích thước editor.loadmap = Mở 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 đồ'. @@ -559,6 +568,7 @@ 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 cho 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. @@ -566,9 +576,9 @@ filters.empty = [lightgray]Không có bộ lọc! Thêm một cái bằng nút b 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.enemyspawn = Chọn điểm xuất hiện của kẻ thù +filter.spawnpath = Đường đến điểm xuất hiện +filter.corespawn = Chọn Lõi filter.median = Trung bình filter.oremedian = Quặng Trung bình filter.blend = Trộn @@ -577,7 +587,7 @@ 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 @@ -586,8 +596,8 @@ filter.option.chance = Tỷ lệ 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.octaves = Rời rạc +filter.option.falloff = Phân tán filter.option.angle = Góc filter.option.tilt = Nghiêng filter.option.rotate = Quay @@ -604,6 +614,24 @@ filter.option.threshold2 = Ngưỡng phụ filter.option.radius = Bán kính filter.option.percentile = Phần trăm +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ế kí tự giữ chỗ bằng giá trị thực tế).\n\n[cyan]Ví dụ thuộc tính:\n[]tên: [accent]timer[]\nvalue: [accent]Bộ đếm thời gian ví dụ, thời gian còn lại: @[]\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ầ áp dụng cuối +locales.filter = 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ị mất 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 = Trình đơn @@ -620,17 +648,17 @@ language.restart = Khởi động lại trò chơi của bạn để cài đặt 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.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} @@ -638,7 +666,8 @@ 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 @@ -650,15 +679,20 @@ 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.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 = Line +marker.line.name = Đường kẻ +marker.quad.name = Bốn điểm +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} @@ -672,11 +706,12 @@ objective.enemiesapproaching = [accent]Kẻ địch sẽ xuất hiện sau [ligh 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 đơn vị bay sau [lightgray]{0}[] objective.destroycore = [accent]Phá huỷ căn cứ đối phương -objective.command = [accent]Ra lệnh +objective.command = [accent]Mệnh lệnh đơn vị 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 ⚠ -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 @@ -696,18 +731,19 @@ 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.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 điều hướng cổng, 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.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. 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. @@ -734,14 +770,14 @@ 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.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ể 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}[] @@ -779,23 +815,24 @@ 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.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 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ẻ 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. 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á 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ó đơn vị 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.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. 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.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ẻ 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 đơn vị Dagger và Crawler. Phá hủy hai căn cứ của địch. +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.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.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 đơn vị 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.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ẻ 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 đơn vị 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 đơ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 @@ -813,35 +850,33 @@ 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 đơn vị, 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 nguồn lực, 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 đơn vị. Một loại đơn vị 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 đơn vị [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.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ị có thể 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 = 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]Đơn vị 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 đơn vị để 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 ở đâ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 đơn vị nhanh chóng và chiếm được các căn cứ của địch để có được một vị trí ổn định. +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 đơn vị nhanh chóng và chiếm được các lõi của địch để có được một vị trí ổn định. 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 đơn vị 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 đơn vị của địch.\nSản xuất [accent]hợp kim[]. Xây dựng [accent]Afflict[]. - +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 đơn vị của địch.\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 đơn vị và công trình tốt hơn. - sector.crevice.description = Địch sẽ gửi các đơn vị 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.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 đơn vị xe tăng 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 đơ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 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.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 @@ -853,7 +888,7 @@ 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 @@ -861,7 +896,7 @@ 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.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 'Đồng ý' 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 @@ -870,7 +905,7 @@ 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? paused = [accent]< Tạm dừng > clear = Xóa -banned = [scarlet]Cấm +banned = [scarlet]Bị cấm unsupported.environment = [scarlet]Môi trường không phù hợp yes = Có no = Không @@ -882,15 +917,15 @@ lastaccessed = [lightgray]Truy cập lần cuối: {0} lastcommanded = [lightgray]Được điều khiển 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.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.opposites = Đối nghịch stat.powercapacity = Dung lượng pin stat.powershot = Năng lượng/Phát bắn stat.damage = Sát thương @@ -903,21 +938,21 @@ stat.size = Kích thước stat.displaysize = Kích thước màn hình 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.linkrange = Phạm vi liên kết stat.instructions = Hướng dẫn 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.repairspeed = Tốc độ sửa stat.weapons = Vũ khí stat.bullet = Đạn stat.moduletier = Cấp Module -stat.unittype = Unit Type +stat.unittype = Kiểu đơn vị stat.speedincrease = Tăng tốc stat.range = Phạm vi stat.drilltier = Khoan được @@ -928,13 +963,13 @@ 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.buildcost = Chi phi 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 @@ -951,36 +986,66 @@ 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.canboost = Có thê tăng cường stat.flying = Bay stat.ammouse = Sử dụ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.immunities = Miễn nhiễm -stat.healing = Sửa chữa +stat.healing = Hồi phục ability.forcefield = Tạo khiên +ability.forcefield.description = Phát một khiên trường lực hấp thụ các loại đạn ability.repairfield = Sửa chữa/Xây dựng -ability.statusfield = Vùng gia tốc +ability.repairfield.description = Sửa chữa các đơn vị gần đó +ability.statusfield = Vù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 = Sản xuất +ability.unitspawn.description = Sản xuất đơn vị ability.shieldregenfield = Tạo khiên nhỏ +ability.shieldregenfield.description = Tạo khiên cho các đơn vị gần đó 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.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 = Ngăn chặn các công trình sửa chữa ability.energyfield = Trường điện từ -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration -bar.onlycoredeposit = Chỉ có thể đưa vào căn cứ +ability.energyfield.description = Giật điện các kẻ thù gần đó +ability.energyfield.healdescription = Giật điện các kẻ thù 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 chiêu +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ó thể đư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 +bar.corefloor = Cần vùng thích hợp xây 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 @@ -996,15 +1061,15 @@ 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.instability = Độ ổn định bar.heatamount = Lượng nhiệt: {0} bar.heatpercent = Lượng nhiệt: {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.launchcooldown = Hồi phóng bar.input = Đầu vào -bar.output = Sản phẩm +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ý @@ -1014,30 +1079,30 @@ bullet.splashdamage = [stat]{0}[lightgray] sát thương diện rộng ~[stat] { bullet.incendiary = [stat]cháy bullet.homing = [stat]truy đuổi bullet.armorpierce = [stat]xuyên giáp -bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit +bullet.maxdamagefraction = [stat]{0}%[lightgray] giới hạn sát thương bullet.suppression = [stat]{0} giây[lightgray] ngăn sửa chữa ~ [stat]{1}[lightgray] ô -bullet.interval = [stat]{0}/giây[lightgray] interval bullets: +bullet.interval = [stat]{0}/giây[lightgray] đạn ngắt quãng: 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.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.healamount = [stat]{0}[lightgray] sửa chữa trực tiếp bullet.multiplier = [stat]{0}[lightgray]x lượng đạn 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 @@ -1051,15 +1116,15 @@ unit.thousands = ng unit.millions = tr unit.billions = tỷ 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.blockreplace.name = Tự động đề xuất khối @@ -1069,31 +1134,31 @@ 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.distinctcontrolgroups.name = Limit One Control Group Per Unit +setting.commandmodehold.name = Nhấn giữ để vào chế độ khiển đơn vị +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.text = {0} FPS -setting.uiscale.name = Kích thước giao diện +setting.uiscale.name = Tỉ lệ 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.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 sang 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 @@ -1103,28 +1168,28 @@ setting.saveinterval.name = Khoảng thời gian lưu setting.seconds = {0} 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àn hình (không viền) +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 = 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 = Bật Bảng điều khiển -setting.smoothcamera.name = Chế độ mượt mà +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.minimap.name = Hiển thị bản đồ nhỏ +setting.coreitems.name = Hiển thị vật phẩm trong lõi setting.position.name = Hiển thị 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.drawlight.name = Draw Darkness/Lighting +setting.drawlight.name = Vẽ Bóng tối/Ánh sáng setting.ambientvol.name = Âm lượng tổng setting.mutemusic.name = Tắt nhạc -setting.sfxvol.name = Âm lượng SFX +setting.sfxvol.name = Âm lượng hiệu ứng âm thanh (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.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 @@ -1137,14 +1202,14 @@ setting.macnotch.description = Trò chơi sẽ khởi động lại để áp d 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 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.\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 = Unit Command +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}, @@ -1152,7 +1217,7 @@ keybind.respawn.name = Hồi sinh 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 @@ -1161,27 +1226,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.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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = Chọn khu vực xây dựng lại 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 @@ -1200,7 +1269,7 @@ 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.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 @@ -1212,10 +1281,10 @@ 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.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 @@ -1224,13 +1293,13 @@ 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.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. @@ -1242,14 +1311,14 @@ mode.pvp.description = Chiến đấu với những người chơi khác trên c 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 -rules.invaliddata = Invalid clipboard data. -rules.hidebannedblocks = Ẩn Các Khối Bị Cấm +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.derelictrepair = Allow Derelict Block Repair +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 @@ -1258,32 +1327,33 @@ rules.waves = Đợt rules.attack = Chế độ tấn công 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 +rules.rtsai = AI Chiến thuật (WIP - Đang thực hiệ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.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.unitbuildspeedmultiplier = Hệ số tốc độ sản xuất đơn vị rules.unitcostmultiplier = Hệ số yêu cầu tài nguyên sản xuất đơn vị -rules.unithealthmultiplier = Hệ số máu của đơ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 đơn vị -rules.unitcap = Giới hạn đơn vị +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.enemycorebuildradius = Bán kính không xây dựng từ lõi 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.initialwavespacing = Thời gian giữa các đợt ban đầ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ố vật phẩm hoàn lại khi phá dỡ công trình rules.waitForWaveToEnd = Đợt chờ hết kẻ địch rules.wavelimit = Bản đồ kết thúc sau lượt rules.dropzoneradius = Bán kính vùng thả:[lightgray] (ô) @@ -1299,9 +1369,9 @@ 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.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 @@ -1309,6 +1379,9 @@ 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ẻ thù. 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 = Đơn vị @@ -1316,6 +1389,7 @@ content.block.name = Khối content.status.name = Trạng thái hiệu ứng content.sector.name = Khu vực content.team.name = Phe + wallore = (Tường) item.copper.name = Đồng @@ -1391,6 +1465,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 @@ -1442,7 +1517,7 @@ 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 @@ -1465,7 +1540,7 @@ block.snow.name = Tuyết 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 @@ -1527,6 +1602,7 @@ 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 @@ -1563,9 +1639,9 @@ 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 = Sóng thần +block.tsunami.name = Tsunami block.swarmer.name = Swarmer block.salvo.name = Salvo block.ripple.name = Ripple @@ -1583,8 +1659,8 @@ block.pulse-conduit.name = Ống dẫn titan 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 @@ -1608,16 +1684,16 @@ block.rtg-generator.name = Máy phát điện RTG block.spectre.name = Spectre block.meltdown.name = Meltdown block.foreshadow.name = Foreshadow -block.container.name = Kho chứa +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 đơn vị cấp 2 -block.multiplicative-reconstructor.name = Máy nâng cấp đơn vị cấp 3 -block.exponential-reconstructor.name = Máy nâng cấp đơn vị cấp 4 -block.tetrative-reconstructor.name = Máy nâng cấp đơn vị cấp 5 +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.duct.name = Ống chân không @@ -1642,6 +1718,8 @@ 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. + +#Erekir block.empty.name = Trống block.rhyolite-crater.name = Miệng Núi Lửa Rhyolit block.rough-rhyolite.name = Rhyolite Thô @@ -1665,8 +1743,8 @@ 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.redmat.name = Thảm đỏ +block.bluemat.name = Thảm xanh 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 @@ -1680,8 +1758,8 @@ 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.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 @@ -1741,7 +1819,7 @@ 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-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 @@ -1758,8 +1836,8 @@ 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.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 @@ -1767,7 +1845,6 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Máy tạo đơn vị 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 @@ -1790,8 +1867,9 @@ block.diffuse.name = Diffuse block.basic-assembler-module.name = Module 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ý @@ -1804,7 +1882,7 @@ block.memory-bank.name = Bộ nhớ lớn 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 @@ -1812,14 +1890,14 @@ 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.depositItems = Để di chuyển các vật phẩm, hãy kéo từ tàu của bạn đến lõi. 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 đơn vị/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.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]Trình đơn[] để nghiên cứu công nghệ mới. hint.unitControl = Giữ [accent][[L-ctrl][] và [accent]nhấp chuột[] để điều khiển đơn vị của bạn hoặc súng. @@ -1827,8 +1905,8 @@ hint.unitControl.mobile = [accent]Nhấp đúp[] để điều khiển đơn v hint.unitSelectControl = Để điều khiển đơn vị, 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 đơ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ị đó. hint.unitSelectControl.mobile = Để điều khiển đơn vị, 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 đơn vị. Tap vào một vị trí hoặc mục tiêu để ra lệnh đơn vị đó. 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.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]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ấp chuột giữa][] để 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 = 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][[L-Ctrl][] trong khi kéo băng chuyền để tự động tạo đường dẫn. @@ -1845,16 +1923,17 @@ hint.coreUpgrade = Các căn cứ có thể được nâng cấp bằng cách [a 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 đơn vị 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 đơ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à click vào nó để bắt đầu khai thác. +hint.factoryControl = Để đặ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 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ấp 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.research = Mở \ue875 tiến trình.\nNghiên cứu \uf870 [accent]Máy khoan cơ khí[], sau đó chọn nó từ trình đơn ở 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ừ trình đơn ở 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.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.duoammo = Tiếp đạn cho súng Duo bằng [accent]đồng[], sử dụng băng chuyền. @@ -1862,18 +1941,19 @@ gz.walls = [accent]Tường[] có thể ngăn chặn sát thương đến các c gz.defend = Quân địch đang đến, chuẩn bị bảo vệ. 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 [accent]chì[], sử dụng băng chuyền. -gz.supplyturret = [accent]Súng cung cấp +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.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 lõi.\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 lõi.\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. 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[]. @@ -1882,20 +1962,22 @@ onset.crusher = Sử dụng \uf74d [accent]máy phá đá[] để khai thác cá 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 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.turretammo = Tiếp đạn cho súng bằng [accent]beryllium[] 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 beryllium[] xung quanh súng. onset.enemies = Quân địch đang đến, hãy chuẩn bị phòng thủ. +onset.defenses = [accent]Thiết lập phòng thủ:[lightgray] {0} 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.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ế độ điều khiển quân[].\n[accent]Nhấp chuột trái và kéo[] để chọn các đơn vị.\n[accent]Chuộc phải[] để điều khiển các đơn vị 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 đơn vị.\n[accent]Nhấp[] để điều khiển các đơn vị di chuyển hoặc tấn công. -aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. -split.pickup = Một số khối có thể được mang bởi đơn vị.\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 đơn vị.\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.) +onset.commandmode = Giữ [accent]Shift[] để vào [accent]chế độ điều khiển đơn vị[].\n[accent]Nhấp chuột trái và kéo[] để chọn các đơn vị.\n[accent]Chuột phải[] để điều khiển 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ế độ điều khiển đơn vị[].\nGiữ một ngón tay, sau đó [accent]kéo[] để chọn các đơn vị.\n[accent]Nhấp[] để điều khiển 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[]. + +split.pickup = Một số khối có thể được mang theo bởi đơn vị.\nNhấp 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ị.\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ả 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 đơ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[], 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, đơn vị 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 đơ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. +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[].\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 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. @@ -1909,38 +1991,42 @@ item.coal.details = Có vẻ là vật chất hóa thạch của thực vật, h 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.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 = 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 truy đuổi. +item.plastanium.description = 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 = 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.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. + +#Erekir 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 đơn vị mạnh và đạn dược. +item.carbide.description = Được sử 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. 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.slag.description = Dùng để tách các kim loại. Dùng trong các loại súng chất lỏng nhưng một loại đạn. 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. + +#Erekir 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 đơn vị 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 đơ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 sử 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 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 xỉ nóng chảy +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]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. +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.reinforced-message.description = Lưu trữ tin nhắn giao tiếp giữa đồng đội. +block.world-message.description = Một khối tin nhắn đù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. @@ -1954,14 +2040,14 @@ block.pyratite-mixer.description = Trộn than, chì và cát thành nhiệt th 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.power-source.description = Tạo ra năng lượng vô hạn. Chỉ có trong chế độ tự do. +block.item-source.description = Tạo ra vật phẩm vô hạn. 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-source.description = Tạo ra chất lỏng vô hạn. 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. @@ -1975,19 +2061,19 @@ block.thorium-wall.description = Bảo vệ công trình khỏi đạn của k 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.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 đạn va chạm. +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 đạn va chạm. block.door.description = Một bức tường có thể đóng mở. block.door-large.description = Một bức tường có thể đóng mở. block.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à đơ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. 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.overdrive-projector.description = Tăng tốc độ làm việc của các công trình gầ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à đơ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. @@ -2007,7 +2093,7 @@ block.plated-conduit.description = Đẩy chất lỏng đến trước, không 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.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 nước 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ề. @@ -2025,77 +2111,78 @@ block.solar-panel.description = Cung cấp một lượng nhỏ năng lượng t 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.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.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.water-extractor.description = Khai thác nước ngầm. Được sử 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í và 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.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-shard.details = Lõi 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 = Lõi 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.core-nucleus.details = Lõi 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.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 ô gần đó. -block.launch-pad.description = Phóng lô vật phẩm vào phân vùng. +block.launch-pad.description = Phóng lô vật phẩm vào khu vực. 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 tải trọ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 đ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.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.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 đến. Ngoại trừ tia laser. -block.parallax.description = Bắn một tia kéo máy bay địch và làm hư hỏng nó trong quá trình kéo. +block.parallax.description = Bắn một tia kéo mụ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 đơn vị từ nhà máy. +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. -block.ground-factory.description = Sản xuất binh lính bộ binh. Các đơn vị đầ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 đơn vị đầ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 đơn vị đầu ra có thể được sử dụng trực tiếp, hoặc đem nâng cấp. +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 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 lê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.tetrative-reconstructor.description = Nâng cấp quân của bạn lên cấp năm và là cấp cuối cùng. +block.switch.description = Công tắc 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ý nhỏ. +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ý. 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 đơn vị bị hư hỏng trong khu vực nhất đị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ác. + +#Erekir 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.breach.description = Bắn đạn beryllium 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. Đồng thời đẩy kẻ địch về phía sau. +block.sublimate.description = Thổi tia lửa vào kẻ thù. 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.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ắ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.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 = 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. @@ -2106,7 +2193,7 @@ 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.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.electrolyzer.description = Chuyển đổi nước thành hydrogen và ozone. Các khi hóa lỏng được 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 nitơ 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. @@ -2114,14 +2201,13 @@ block.carbide-crucible.description = Kết hợp than chì và tungsten để t block.cyanogen-synthesizer.description = Tổng hợp cyanogen 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.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 hydrogen để 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à thorium. Yêu cầu hydrogen và điện.\nTùy chọn sử dụng nitrogen để 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.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. @@ -2132,16 +2218,16 @@ block.tungsten-wall.description = Bảo vệ các công trình khỏi đạn c 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 đơn vị đang ở gần. Không thể điều khiển bằng tay. +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 đạ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ẻ thù, 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ẻ thù. Phản 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.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.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 dẫn 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. @@ -2154,21 +2240,21 @@ block.turbine-condenser.description = Tạo ra điện khi được đặt trên block.chemical-combustion-chamber.description = Tạo ra điện từ arkycite và ozone. 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.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 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 đơ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 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 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 chế tạo khác để được nâng cấp. +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 hydrogen.\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. 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 lõi. +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 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 module. 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 module. -block.mech-assembler.description = Lắp ráp các lính 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 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 đơn vị cơ động lên cấp hai. -block.prime-refabricator.description = Nâng cấp các đơn vị lên cấp ba. +block.mech-assembler.description = Lắp ráp các đơn vị 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 module. +block.tank-refabricator.description = Nâng cấp các xe tăng đầu vào lên cấp hai. +block.ship-refabricator.description = Nâng cấp các phi thuyền đầu vào lên cấp hai. +block.mech-refabricator.description = Nâng cấp các đơn vị cơ động đầu vào lên cấp hai. +block.prime-refabricator.description = Nâng cấp các đơn vị đầu vào lên cấp 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à đơn vị đầu vào. Trả lại 100% chi phí tạo ra. block.reinforced-payload-conveyor.description = Di chuyển khối hàng tiến về phía trước. @@ -2183,41 +2269,43 @@ block.canvas.description = Hiển thị một hình ảnh đơn giản với m 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.scepter.description = Bắn một chùm đạn tích tụ vào kẻ địch ở gần. +unit.reign.description = Bắn một chùm đạn xuyên giáp mạnh vào kẻ địch ở gần. +unit.nova.description = Bắn tia laser gây sát thương 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 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 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 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 kẻ địch và sửa chữa các công trình đồng minh. Có thể đi qua đa số đị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 đa số địa hình. +unit.spiroct.description = Bắn tia laser lớn gây ăn mòn 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 gây ăn mò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. Có thể đi qua đa số địa hình. +unit.flare.description = Bắn đạn tiêu chuẩn vào kẻ địch 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.zenith.description = Bắn chùm tên lửa vào mọi kẻ địch. +unit.antumbra.description = Bắn chùm đạn vào mọi kẻ địch. +unit.eclipse.description = Bắn hai tia laser xuyên giáp và pháo chùm vào mọi kẻ địch. +unit.mono.description = Tự động khai thác đồng và chì, và 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ị hỏng 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 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.mega.description = Tự động sửa chữa các công trình bị hỏng. Có khả năng mang một số khối 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 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.risso.description = Bắn chùm tên lửa và đạn lên kẻ địch. +unit.minke.description = Bắn chùm đạn và đạn tiêu chuẩn lên kẻ địch 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.omura.description = Bắn đạn từ trường xuyên giáp tầm xa vào kẻ địch. Tạo ra Flare. +unit.alpha.description = Bảo vệ lõi Cơ sở khỏi kẻ thù. Có thể xây dựng. +unit.beta.description = Bảo vệ lõi Trụ sở khỏi kẻ thù. Có thể xây dựng. +unit.gamma.description = Bảo vệ lõi Trung tâm khỏi kẻ thù. Có thể xây dựng. unit.retusa.description = Bắn ngư lôi dẫn đường vào kẻ thù gần đó. Sửa đơn vị đồng minh. unit.oxynoe.description = Bắn luồng tia lửa sửa công trình vào kẻ địch gần đó. Nhắm vào viên đạn kẻ địch với các bệ súng phòng thủ mũi nhọn. unit.cyerce.description = Bắn chùm tên lửa dẫn đường lên kẻ thù. 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 mục tiêu kẻ thù. unit.locus.description = Bắn các viên đạn xen kẽ vào mục tiêu kẻ thù. unit.precept.description = Bắn các viên đạn phân cụm xuyêm thấu vào mục tiêu kẻ thù. @@ -2231,76 +2319,124 @@ unit.collaris.description = Bắn pháo phân mảnh tầm xa vào mục tiêu k unit.elude.description = Bắn một cặp viên đạn dẫn đường vào mục tiêu kẻ thù. 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 mục tiêu kẻ thù. unit.obviate.description = Bắn một cặp cầu điện xoắn vào mục tiêu kẻ thù. -unit.quell.description = Bắn tên lửa tầm xa vào mục tiêu kẻ thù. Ngăn chặn khối công trình sửa chữa kẻ địch. -unit.disrupt.description = Bắn tên lửa oanh tạc tầm xa vào mục tiêu kẻ thù. Ngăn chặn khối công trình sửa chữa kẻ địch. -unit.evoke.description = Xây công trình để phòng thủ lõi Bastion. Sửa các công trình với chùm tia sáng. -unit.incite.description = Xây công trình để phòng thủ lõi Citadel. Sửa các công trình với chùm tia sáng. -unit.emanate.description = Xây công trình để phòng thủ lõi Acropolis. Sửa các công trình với chùm tia sáng. +unit.quell.description = Bắn tên lửa dẫn đường tầm xa vào mục tiêu kẻ thù. Ngăn chặn khối công trình sửa chữa kẻ địch. +unit.disrupt.description = Bắn tên lửa oanh tạc dẫn đường tầm xa vào mục tiêu kẻ thù. Ngăn chặn khối công trình sửa chữa kẻ địch. +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 chùm tia sáng. Có khả năng nâng 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 chùm tia sáng. Có khả năng nâng 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 nâng 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.print = Thêm văn bản vào bộ đệm in.\nKhông hiển thị gì cho đến khi sử dụng [accent]Print Flush[]. +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 "test {0}"\nformat "example" +lst.draw = Thêm một thao tác vào bộ đệm 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.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 khối. lst.sensor = Lấy dữ liệu từ một khối hoặc đơn vị. 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.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 món đồ/chất lỏng/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[] +lst.lookup = Tra cứu một kiểu món đồ/chất lỏng/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 = Chuyển qua lệnh khác nếu điều kiện đúng. -lst.unitbind = Ràng buộc đơ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 ràng buộc. -lst.unitradar = Xác định đơn vị xung quanh đơn bị đang ràng buộc. -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 ràng buộc. -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.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 bị đ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 quân 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.spawnwave = Mô phỏng một lượt xuất hiện ở vị trí tùy ý.\nSẽ không tăng số đếm lượt. +lst.weathersense = Kiểm tra kiểu thời tiết đ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 lượt tấn công. lst.explosion = Tạo ra một vụ nổ tại vị trí đó. -lst.setrate = Đặt tốc độ thực thi khối xử lý theo chỉ thị/tíc-tắc. +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ởi 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 = Đặt một quy tắc của 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ẽ đợt cho đến khi tin nhắn trước đó hoàn tất. +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 góc máy quay của người chơi. lst.setflag = Đặ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 = Đặ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ộ giá trị biến qua mạng.\nChỉ gọi tối đa 10 lần mỗi giây. -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.sync = Đồng bộ giá trị biến 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.\n Mộ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 = Lập 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]Lô-gíc xây dựng đơn vị không được phép ở đây. +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) + +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ố lượt hiện tại, nếu chế độ lượt được bật +lglobal.@waveTime = Thời gian đếm ngược của lượ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 +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 +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 +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 + +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ị.\n Ví 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 vị trí xác định. +lenum.shoot = Bắn 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 trinh, kiểu như đồ của Khối sắp xếp. -lenum.enabled = Bất cứ khi nào khối hoạt động. +lenum.enabled = Khối có đang hoạt động. laccess.color = Màu đèn chiếu sáng. -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ý.\nNếu trong đội hình, trả về đơn vị dẫn đầu.\nNgược lại, trả về chính đơn vị đó. +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 người điều khiển đơn vị/công trình là người chơi\n[accent]@ctrlFormation[] nếu đơn vị trọng đội hình\nNgược lại, 0. +laccess.controlled = Trả về:\n[accent]@ctrlProcessor[] nếu điều khiển là khối xử lý\n[accent]@ctrlPlayer[] nếu người điều khiển đơn vị/công trình là người chơi\n[accent]@ctrlCommand[] nếu đơn vị được điều khiển qua mệnh lệnh của người chơi\nNgược lại, 0. laccess.progress = Tiến trình thực hiện, 0 đến 1.\n Trả 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 độ của đơn vị, tính bằng ô/giây. +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 = Chỉ thị không được phân loại. + +lcategory.unknown = Không rõ +lcategory.unknown.description = Chỉ lệnh không được phân loại. lcategory.io = Đầu Vào & Ra 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 = Các phép toán -lcategory.operation.description = Các phép toán lô-gíc. +lcategory.operation.description = Các phép toán logic. lcategory.control = Điều khiển luồng thực thi lcategory.control.description = Quản lý trình tự thực thi. lcategory.unit = Điều khiển đơn vị @@ -2308,7 +2444,7 @@ 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.clear = Tô màu cho toàn màn hình. graphicstype.color = Đặ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 = Đặt chiều rộng đoạn thẳng. @@ -2319,6 +2455,7 @@ graphicstype.poly = Tô vào đa giác đều. graphicstype.linepoly = Vẽ đường viền đa giác đều. graphicstype.triangle = Tô một hình tam giác. graphicstype.image = Vẽ hình ảnh một số nội dung.\nVí dụ: [accent]@router[] hoặc [accent]@dagger[]. +graphicstype.print = Vẽ văn bản từ bộ đệm in ra.\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. @@ -2330,10 +2467,10 @@ lenum.strictequal = Bằng nhau ràng buộc. Không ép kiểu.\nCó thể dùn 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 = Lô-gíc AND. +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 XOR. +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ố. @@ -2371,7 +2508,7 @@ 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 nhóm nhất định. -lenum.core = Bất kì căn cứ. +lenum.core = Bất kỳ lõi nào. 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. @@ -2386,13 +2523,13 @@ sensor.in = Công trình/Đơn vị để cảm biến. 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ự. đặt giá trị 0 để đảo ngược. +radar.order = Sắp xếp theo thứ tự. 0 để đảo ngược. radar.sort = Số liệu để kết quả sắp xếp theo. radar.output = Biến để ghi đơn vị được xuất ra. 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ự. đặt giá trị 0 để đảo ngược. +unitradar.order = Sắp xếp theo thứ tự. 0 để đảo ngược. unitradar.sort = Số liệu để kết quả sắp xếp theo. unitradar.output = Biến để ghi đơn vị được xuất ra. @@ -2409,10 +2546,10 @@ 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 = Vô hiệu hóa hoàn toàn điều khiển lô-gíc.\n Khôi phục AI tiêu chuẩn. +lenum.unbind = Vô hiệu hóa hoàn toàn điều khiển logic.\n Khôi phục AI tiêu chuẩn. lenum.move = Di chuyển đến vị trí xác định. lenum.approach = Tiếp cận một vị trí với bán kính. -lenum.pathfind = Tìm đường đến nơi tạo ra kẻ địch. +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.\n Việc này tương tự như việc tìm đường của kẻ địch trong các lượt. lenum.target = Bắn vào vị trí xác định. lenum.targetp = Bắn vào một mục tiêu với tốc độ dự đoán @@ -2427,3 +2564,11 @@ lenum.build = Xây công trình. lenum.getblock = Lấy một cấu trúc và kiểu tại một tọa độ.\nĐơn vị phải nằm trong tầm của vị trí.\nKhối rắn không phải công trình có kiểu [accent]@solid[]. lenum.within = Kiểm tra xem đơn vị có gần vị trí không. lenum.boost = Bắt đầu/Dừng tăng tốc. + +lenum.flushtext = Lấp đầy nội dung của bộ đệm cho điểm đánh dấu, nếu có thể áp dụng.\n Nế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ẻ (line) và bốn điểm (quad) 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 bốn điểm (quad). +lenum.colori = Màu theo chỉ số, dùng cho điểm đánh dấu đường kẻ (line) và bốn điểm (quad) 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 eb6231ae48..a908d005a5 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -152,17 +152,17 @@ 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]您的模组发生了错误。 []禁用相关模组或修复错误后才能进入游戏。 @@ -258,19 +258,19 @@ trace = 跟踪玩家 trace.playername = 玩家名称:[accent]{0} trace.ip = IP地址:[accent]{0} trace.id = 玩家 ID:[accent]{0} -trace.language = Language: [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 = IPs: -trace.names = Names: +trace.ips = 曾用IP: +trace.names = 曾用名: invalidid = 无效的客户端ID!提交一个错误报告。 -player.ban = Ban -player.kick = Kick -player.trace = Trace -player.admin = Toggle Admin -player.team = Change Team +player.ban = 封禁 +player.kick = 踢出 +player.trace = 追朔 +player.admin = 切换管理员 +player.team = 改变队伍 server.bans = 黑名单 server.bans.none = 没有被封禁的玩家! server.admins = 管理员 @@ -287,8 +287,8 @@ confirmkick = 确定踢出玩家“{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: +votekick.reason = 投票踢出理由 +votekick.reason.message = 确定投票踢出玩家"{0}[white]"?\n如果是,请输入理由: joingame.title = 加入游戏 joingame.ip = 地址: disconnect = 已断开连接 @@ -306,7 +306,7 @@ server.invalidport = 无效的端口! server.error = [scarlet]创建服务器错误。 save.new = 新存档 save.overwrite = 确定要覆盖这个存档吗? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = 无法导入战役中的单个保存文件。 overwrite = 覆盖 save.none = 没有找到存档! savefail = 保存失败! @@ -344,23 +344,23 @@ open = 打开 customize = 自定义规则 cancel = 取消 command = 指挥 -command.queue = [lightgray][Queuing] +command.queue = [lightgray][排队中] 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 +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 = 返回 @@ -386,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}秒 @@ -441,6 +441,7 @@ editor.waves = 波次 editor.rules = 规则 editor.generation = 生成 editor.objectives = 目标 +editor.locales = 本地化语言包 editor.ingame = 游戏内编辑 editor.playtest = 游戏内测试 editor.publish.workshop = 上传到创意工坊 @@ -472,7 +473,7 @@ waves.max = 最大单位数 waves.guardian = Boss waves.preview = 预览 waves.edit = 编辑… -waves.random = Random +waves.random = 随机 waves.copy = 复制到剪贴板 waves.load = 从剪贴板读取 waves.invalid = 剪贴板中的波次信息无效。 @@ -483,12 +484,12 @@ waves.sort.reverse = 反向排序 waves.sort.begin = 出场顺序 waves.sort.health = 生命值 waves.sort.type = 类型 -waves.search = Search waves... -waves.filter = 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 = 生命值 @@ -497,6 +498,7 @@ editor.default = [lightgray]<默认> details = 详情… edit = 编辑… variables = 变量 +logic.globals = 内置变量 editor.name = 名称: editor.spawn = 生成单位 editor.removeunit = 移除单位 @@ -508,6 +510,7 @@ editor.errorlegacy = 此地图太旧了,旧的地图格式已不再支持。 editor.errornot = 这不是地图文件。 editor.errorheader = 此地图文件无效或已损坏。 editor.errorname = 地图没有定义名称。 加载的可能是存档文件? +editor.errorlocales = 读取无效本地化语言包时出错。 editor.update = 更新 editor.randomize = 重新生成 editor.moveup = 上移 @@ -519,6 +522,7 @@ editor.sectorgenerate = 生成区块 editor.resize = 改变尺寸 editor.loadmap = 载入地图 editor.savemap = 保存地图 +editor.savechanges = [scarlet]您有未保存的更改!\n\n[]您想要保存他们吗? editor.saved = 已保存! editor.save.noname = 您还没有指定地图的名称!在“地图信息”菜单里设置一个名称。 editor.save.overwrite = 您正试图覆盖一张内置地图!在“地图信息”菜单里重新设置一个其他的名称。 @@ -557,8 +561,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.fillerase = 擦除同类 +toolmode.fillerase.description = 擦除同种种类的方块。 toolmode.drawteams = 绘制队伍 toolmode.drawteams.description = 不再绘制方块,而是绘制队伍颜色。 #未使用 @@ -606,6 +610,23 @@ filter.option.floor2 = 内层地形 filter.option.threshold2 = 内层比例 filter.option.radius = 半径 filter.option.percentile = 百分比 +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 = 高度: @@ -658,10 +679,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 = Line +marker.line.name = 线 +marker.quad.name = 四边形 +marker.texture.name = Texture marker.background = 背景 marker.outline = 轮廓 @@ -712,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 = 雾 @@ -749,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}[] @@ -925,7 +948,7 @@ stat.repairspeed = 修理速度 stat.weapons = 武器 stat.bullet = 子弹 stat.moduletier = 模块等级 -stat.unittype = Unit Type +stat.unittype = 单位类型 stat.speedincrease = 提速 stat.range = 范围 stat.drilltier = 可钻探矿物 @@ -972,17 +995,47 @@ stat.immunities = 免疫 stat.healing = 治疗 ability.forcefield = 力墙场 +ability.forcefield.description = 投射一个能吸收子弹的力场护盾 ability.repairfield = 修复场 +ability.repairfield.description = 修复附近的单位 ability.statusfield = 状态场 -ability.unitspawn = 单位工厂 +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 = 能量场: -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +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 = 需要更高级的钻头 @@ -1022,9 +1075,9 @@ 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.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]对建筑伤害 @@ -1078,7 +1131,7 @@ setting.backgroundpause.name = 游戏在后台时自动暂停 setting.buildautopause.name = 自动暂停建造 setting.doubletapmine.name = 双击采矿 setting.commandmodehold.name = 长按保持指挥模式 -setting.distinctcontrolgroups.name = Limit One Control Group Per Unit +setting.distinctcontrolgroups.name = 每单位限制一个编队 setting.modcrashdisable.name = 游戏启动崩溃后禁用模组 setting.animatedwater.name = 动态液体 setting.animatedshields.name = 动态力场 @@ -1125,14 +1178,14 @@ setting.position.name = 显示玩家坐标 setting.mouseposition.name = 显示鼠标坐标 setting.musicvol.name = 音乐音量 setting.atmosphere.name = 显示行星大气层 -setting.drawlight.name = Draw Darkness/Lighting +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 = 电力连接线不透明度 @@ -1142,8 +1195,8 @@ 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. +steam.friendsonly = 仅限好友 +steam.friendsonly.tooltip = 是否只有 Steam 好友才能加入您的游戏。\n取消选中此选项将使您的游戏公开 - 任何人都可以加入。 public.beta = 请注意,测试版的游戏不能公开可见。 uiscale.reset = UI缩放比例已更改。\n点击“确定”接受更改。\n[accent]{0}[]秒后[scarlet]将自动退出并还原设置。 uiscale.cancel = 取消并退出 @@ -1152,7 +1205,7 @@ keybind.title = 重新绑定按键 keybinds.mobile = [scarlet]除了基本的移动以外,大多数按键绑定在移动设备上无效。 category.general.name = 常规 category.view.name = 视图 -category.command.name = Unit Command +category.command.name = 单位指挥 category.multiplayer.name = 多人游戏 category.blocks.name = 建筑选择 placement.blockselectkeys = \n[lightgray]按键:[{0}, @@ -1170,23 +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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = 蓝图目录 @@ -1250,12 +1304,12 @@ mode.pvp.description = 与其他玩家对战。 \n[gray]需要地图中有至少 mode.attack.name = 进攻 mode.attack.description = 摧毁敌人的基地。 \n[gray]需要地图中有敌方队伍的核心。 mode.custom = 自定义模式 -rules.invaliddata = Invalid clipboard data. +rules.invaliddata = 无效剪贴板数据。 rules.hidebannedblocks = 隐藏禁用的建筑 rules.infiniteresources = 无限资源 rules.onlydepositcore = 仅核心可放入资源 -rules.derelictrepair = Allow Derelict Block Repair +rules.derelictrepair = 允许修复残骸建筑 rules.reactorexplosions = 反应堆爆炸 rules.coreincinerates = 核心焚烧 rules.disableworldprocessors = 禁用世界处理器 @@ -1264,8 +1318,8 @@ rules.wavetimer = 波次计时器 rules.wavesending = 波次可跳波 rules.waves = 波次 rules.attack = 进攻模式 -rules.buildai = Base Builder AI -rules.buildaitier = Builder AI Tier +rules.buildai = 基础建筑者 AI +rules.buildaitier = 建筑者 AI 等级 rules.rtsai = RTS AI rules.rtsminsquadsize = 最小部队规模 rules.rtsmaxsquadsize = 最大部队规模 @@ -1281,9 +1335,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](格) @@ -1293,7 +1348,7 @@ rules.buildcostmultiplier = 建造花费倍率 rules.buildspeedmultiplier = 建造速度倍率 rules.deconstructrefundmultiplier = 拆除返还倍率 rules.waitForWaveToEnd = 等待波次结束 -rules.wavelimit = Map Ends After Wave +rules.wavelimit = 地图在有限波次后结束 rules.dropzoneradius = 敌人出生点禁区大小:[lightgray](格) rules.unitammo = 单位有弹药限制 rules.enemyteam = 敌方队伍 @@ -1316,6 +1371,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 = 液体 @@ -1537,6 +1594,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 = 反向溢流门 @@ -1779,7 +1837,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 = 飞船重构厂 @@ -1901,6 +1958,7 @@ 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设立防御,挖掘矿物,并建造生产设施。 @@ -1908,7 +1966,7 @@ onset.commandmode = 按住[accent]shift[]键进入[accent]指挥模式[]。\n按 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点击其中一个,然后点击另一个以连接它们。 @@ -2106,7 +2164,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 = 基地的核心。 拥有装甲。 一旦被摧毁,此区块就会丢失。 @@ -2144,7 +2201,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 = 跨越任意地形或建筑物传输流体。 @@ -2265,6 +2321,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[]队列刷新到信息板 @@ -2287,6 +2344,8 @@ lst.getblock = 获取任意位置的地块数据 lst.setblock = 设置任意位置的地块数据 lst.spawnunit = 在指定位置生成单位 lst.applystatus = 添加或清除单位的一个状态效果 +lst.weathersense = 检查特定种类的天气当前是否启用。 +lst.weatherset = 设置当前状态为特定类型天气。 lst.spawnwave = 在任意位置生成一波敌人\n并不记录在波数计数器中 lst.explosion = 在某个位置生成爆炸 lst.setrate = 在指令/时间刻的时间下设置处理器处理速度 @@ -2295,13 +2354,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.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.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]此处不允许处理器操控单位去建设 @@ -2317,7 +2414,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 of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. +laccess.id = 单位/块/物品/液体的ID。\n这是 Lookup 的反向操作。 lcategory.unknown = 未知 lcategory.unknown.description = 未分类的指令 @@ -2345,6 +2442,7 @@ graphicstype.poly = 绘制实心正多边形 graphicstype.linepoly = 绘制正多边形轮廓 graphicstype.triangle = 绘制实心三角形 graphicstype.image = 画出某个游戏内容的图像\n例如[accent]@router[]或者[accent]@dagger[] +graphicstype.print = 从打印缓冲区绘制文本。\n清除打印缓冲区。 lenum.always = 无条件跳转 lenum.idiv = 整数除法,返回不带小数的商 @@ -2364,7 +2462,7 @@ lenum.xor = 按位异或 lenum.min = 取较小值 lenum.max = 取较大值 lenum.angle = 返回向量的辐角(角度制) -lenum.anglediff = Absolute distance between two angles in degrees. +lenum.anglediff = 返回两个角度之间的绝对距离(角度制)。 lenum.len = 返回向量的长度 lenum.sin = 正弦(角度制) @@ -2439,7 +2537,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.autopathfind = "自动寻找最近的敌方核心或敌人生成点。\n这与波次中的敌人寻路相同。" lenum.target = 向某个位置瞄准/射击 lenum.targetp = 根据提前量向某个目标瞄准/射击 lenum.itemdrop = 将携带的物品放入一座建筑 @@ -2453,3 +2551,10 @@ lenum.build = 建造建筑 lenum.getblock = 获取某个坐标处的建筑及其类型\n坐标需要在单位的感知范围内\n无建筑的地面返回[accent]@air[],墙壁返回[accent]@solid[] lenum.within = 检查单位是否接近了某个位置 lenum.boost = 开始/停止助推 +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 968ce5cbcc..049f543412 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -438,6 +438,7 @@ editor.waves = 波次: editor.rules = 規則: editor.generation = 自動生成: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = 在遊戲中編輯 editor.playtest = 測試 editor.publish.workshop = 在工作坊上發佈 @@ -494,6 +495,7 @@ editor.default = [lightgray](預設) details = 詳細資訊…… edit = 編輯…… variables = 變數 +logic.globals = Built-in Variables editor.name = 名稱: editor.spawn = 重生單位 editor.removeunit = 移除單位 @@ -505,6 +507,7 @@ editor.errorlegacy = 此地圖太舊,並使用不支援的舊地圖格式。 editor.errornot = 這不是地圖檔。 editor.errorheader = 此地圖檔無效或已損毀。 editor.errorname = 地圖沒有定義名稱。 +editor.errorlocales = Error reading invalid locale bundles. editor.update = 更新 editor.randomize = 隨機化 editor.moveup = Move Up @@ -516,6 +519,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 = 您的地圖覆寫了內建的地圖!在「地圖資訊」畫面設定其他名稱。 @@ -603,6 +607,23 @@ filter.option.floor2 = 次要地板 filter.option.threshold2 = 次要閾值 filter.option.radius = 半徑 filter.option.percentile = 百分比 +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 = 長度: @@ -655,10 +676,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 = 描邊 @@ -709,7 +732,7 @@ error.any = 未知網路錯誤。 error.bloom = 初始化特效失敗。\n您的裝置可能不支援 weather.rain.name = 雨 -weather.snow.name = 雪 +weather.snowing.name = 雪 weather.sandstorm.name = 沙塵暴 weather.sporestorm.name = 孢子風暴 weather.fog.name = 霧 @@ -745,8 +768,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}[] @@ -968,17 +991,46 @@ stat.immunities = 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.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.suppressionfield.description = Stops nearby repair buildings ability.energyfield = 能量場: -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +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 = 需要更好的鑽頭 @@ -1128,7 +1180,7 @@ 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 = 雷射不透明度 @@ -1174,15 +1226,16 @@ 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 = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +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 = 藍圖目錄 @@ -1280,6 +1333,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](格) @@ -1312,6 +1366,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 = 液體 @@ -1533,6 +1589,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 = 反向溢流器 @@ -1775,7 +1832,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 = 飛船重塑者 @@ -1894,6 +1950,7 @@ 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. @@ -2096,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 = 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. @@ -2132,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. @@ -2251,6 +2306,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[]指令推到訊息板上 @@ -2273,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 = 以指令/每時刻設置處理器速度 @@ -2288,6 +2346,43 @@ 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]單位建造邏輯已被禁止。 @@ -2331,6 +2426,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 = 整數除法,無條件捨去. @@ -2439,3 +2535,10 @@ lenum.build = 建造一個建築 lenum.getblock = 獲取指定位置的建築種類和該建築\n必須在單位的範圍內\n實體障礙物,如高山會回傳[accent]@solid[] lenum.within = 單位是否在指定範圍內 lenum.boost = 使用推進器 +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 fcd191dc38..3b3153b7ee 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -160,4 +160,8 @@ WayZer SITUVNgcd Gabriel "red" Fondato Yoru Kitsune +summoner OpalSoPL +BalaM314 +Redstonneur1256 +ApsZoldat 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 d72941dee9..64963dd203 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -587,3 +587,4 @@ 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..1a821f841a 100644 Binary files a/core/assets/logicids.dat and b/core/assets/logicids.dat differ diff --git a/core/assets/maps/basin.msav b/core/assets/maps/basin.msav index dc75e5bf11..6cd15494fb 100644 Binary files a/core/assets/maps/basin.msav and b/core/assets/maps/basin.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/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/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/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/src/mindustry/ClientLauncher.java b/core/src/mindustry/ClientLauncher.java index ad77dd6bcc..ae8aae4ab3 100644 --- a/core/src/mindustry/ClientLauncher.java +++ b/core/src/mindustry/ClientLauncher.java @@ -29,6 +29,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform private long nextFrame; private long beginTime; + private long lastTargetFps = -1; private boolean finished = false; private LoadRenderer loader; @@ -68,6 +69,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform return (Float.isNaN(result) || Float.isInfinite(result)) ? 1f : Mathf.clamp(result, 0.0001f, 60f / 10f); }); + UI.loadColors(); batch = new SortedSpriteBatch(); assets = new AssetManager(); assets.setLoader(Texture.class, "." + mapExtension, new MapPreviewLoader()); @@ -200,9 +202,12 @@ 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; - if(limitFps){ + lastTargetFps = targetfps; + + if(limitFps && !changed){ nextFrame += (1000 * 1000000) / targetfps; }else{ nextFrame = Time.nanos(); diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 755a9d63bb..6d4006b074 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,8 +106,8 @@ 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) */ diff --git a/core/src/mindustry/ai/UnitGroup.java b/core/src/mindustry/ai/UnitGroup.java index 7ccddcad50..c712885846 100644 --- a/core/src/mindustry/ai/UnitGroup.java +++ b/core/src/mindustry/ai/UnitGroup.java @@ -12,14 +12,12 @@ import mindustry.async.*; import mindustry.content.*; import mindustry.core.*; import mindustry.gen.*; -import mindustry.world.blocks.environment.*; public class UnitGroup{ public Seq units = new Seq<>(); public int collisionLayer; public volatile float[] positions, originalPositions; public volatile boolean valid; - public float minSpeed = 999999f; public void calculateFormation(Vec2 dest, int collisionLayer){ this.collisionLayer = collisionLayer; @@ -33,20 +31,15 @@ public class UnitGroup{ 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; - - //don't factor in the floor speed multiplier - Floor on = unit.isFlying() ? Blocks.air.asFloor() : unit.floorOn(); - minSpeed = Math.min(unit.speed() / on.speedMultiplier, minSpeed); } - if(Float.isInfinite(minSpeed) || Float.isNaN(minSpeed)) minSpeed = 999999f; - //run on new thread to prevent stutter Vars.mainExecutor.submit(() -> { //unused space between circles that needs to be reached for compression to end diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index 80860d5f5d..3be38e515a 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -30,6 +30,8 @@ public class CommandAI extends AIController{ 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; @@ -214,7 +216,7 @@ public class CommandAI extends AIController{ } //TODO: should the unit stop when it finds a target? - if(stance == UnitStance.patrol && target != null && unit.within(target, unit.type.range - 2f)){ + if(stance == UnitStance.patrol && target != null && unit.within(target, unit.type.range - 2f) && !unit.type.circleTarget){ move = false; } @@ -285,7 +287,7 @@ public class CommandAI extends AIController{ attackTarget = null; } - if(unit.isFlying() && move){ + if(unit.isFlying() && move && (attackTarget == null || !unit.within(attackTarget, unit.type.range))){ unit.lookAt(vecMovePos); }else{ faceTarget(); @@ -351,8 +353,11 @@ public class CommandAI extends AIController{ } @Override - public float prefSpeed(){ - return group == null ? super.prefSpeed() : Math.min(group.minSpeed, unit.speed()); + public void afterRead(Unit unit){ + if(readAttackTarget != -1){ + attackTarget = Groups.unit.getByID(readAttackTarget); + readAttackTarget = -1; + } } @Override diff --git a/core/src/mindustry/ai/types/MissileAI.java b/core/src/mindustry/ai/types/MissileAI.java index dc941df8a7..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.*; @@ -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/audio/SoundControl.java b/core/src/mindustry/audio/SoundControl.java index 93f8fda115..980166227a 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(); } } diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 1275b3b169..36dfb1ee3d 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -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; @@ -2433,6 +2435,7 @@ public class Blocks{ itemDuration = 140f; ambientSound = Sounds.pulse; ambientSoundVolume = 0.07f; + liquidCapacity = 60f; consumePower(25f); consumeItem(Items.blastCompound); @@ -2781,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; @@ -4045,7 +4049,7 @@ public class Blocks{ researchCostMultiplier = 0.05f; coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f)); - limitRange(); + limitRange(12f); }}; diffuse = new ItemTurret("diffuse"){{ @@ -4104,7 +4108,7 @@ public class Blocks{ rotateSpeed = 3f; coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f)); - limitRange(); + limitRange(16f); }}; sublimate = new ContinuousLiquidTurret("sublimate"){{ @@ -4354,7 +4358,7 @@ public class Blocks{ coolant = consume(new ConsumeLiquid(Liquids.water, 20f / 60f)); coolantMultiplier = 2.5f; - limitRange(-5f); + limitRange(5f); }}; afflict = new PowerTurret("afflict"){{ @@ -4566,6 +4570,7 @@ public class Blocks{ loopSoundVolume = 0.6f; deathSound = Sounds.largeExplosion; targetAir = false; + targetUnderBlocks = false; fogRadius = 6f; @@ -5500,23 +5505,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"; @@ -5535,6 +5523,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)); @@ -5789,6 +5794,8 @@ public class Blocks{ heatOutput = 1000f; warmupRate = 1000f; regionRotated1 = 1; + itemCapacity = 0; + alwaysUnlocked = true; ambientSound = Sounds.none; }}; 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/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index bcb04b2fda..015b069c9f 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1318,6 +1318,7 @@ public class UnitTypes{ healPercent = 5.5f; collidesTeam = true; + reflectable = false; backColor = Pal.heal; trailColor = Pal.heal; }}; @@ -1845,6 +1846,7 @@ public class UnitTypes{ armor = 3f; buildSpeed = 1.5f; + rotateToBuilding = false; weapons.add(new RepairBeamWeapon("repair-beam-weapon-center"){{ x = 0f; @@ -1935,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"){{ @@ -2009,6 +2012,7 @@ public class UnitTypes{ trailScl = 2f; buildSpeed = 2f; + rotateToBuilding = false; weapons.add(new RepairBeamWeapon("repair-beam-weapon-center"){{ x = 11f; @@ -2150,6 +2154,7 @@ public class UnitTypes{ trailScl = 3.2f; buildSpeed = 3f; + rotateToBuilding = false; abilities.add(new EnergyFieldAbility(40f, 65f, 180f){{ statusDuration = 60f * 6f; @@ -2193,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){ @@ -3889,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; }}); } @@ -4058,6 +4064,8 @@ public class UnitTypes{ isEnemy = false; envDisabled = 0; + range = 60f; + faceTarget = true; targetPriority = -2; lowAltitude = false; mineWalls = true; @@ -4122,8 +4130,10 @@ public class UnitTypes{ isEnemy = false; envDisabled = 0; + range = 60f; targetPriority = -2; lowAltitude = false; + faceTarget = true; mineWalls = true; mineFloor = false; mineHardnessScaling = false; @@ -4199,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 91e9c80824..7abaf35f29 100644 --- a/core/src/mindustry/core/ContentLoader.java +++ b/core/src/mindustry/core/ContentLoader.java @@ -314,6 +314,14 @@ public class ContentLoader{ 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); } 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 abad7d3899..17d3b3bfe9 100644 --- a/core/src/mindustry/core/GameState.java +++ b/core/src/mindustry/core/GameState.java @@ -1,11 +1,9 @@ package mindustry.core; import arc.*; -import arc.struct.*; import arc.util.*; import mindustry.game.EventType.*; import mindustry.game.*; -import mindustry.game.MapObjectives.*; import mindustry.gen.*; import mindustry.maps.*; import mindustry.type.*; @@ -35,7 +33,9 @@ public class GameState{ /** Statistics for this save/game. Displayed after game over. */ public GameStats stats = new GameStats(); /** Markers not linked to objectives. Controlled by world processors. */ - public IntMap markers = new IntMap<>(); + 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. */ @@ -86,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 e722afb8f1..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()){ @@ -460,9 +461,6 @@ public class Logic implements ApplicationListener{ 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 9f6a8bf922..8171a89797 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -340,25 +340,23 @@ 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(called = Loc.server) - public static void objectiveCompleted(String[] flagsRemoved, String[] flagsAdded){ - state.rules.objectiveFlags.removeAll(flagsRemoved); - state.rules.objectiveFlags.addAll(flagsAdded); + @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) diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index fb0b36b085..5de465d1be 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -777,7 +777,6 @@ public class NetServer implements ApplicationListener{ }else{ NetClient.traceInfo(other, info); } - 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()); } case switchTeam -> { if(params instanceof Team team){ diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index f78a9da907..3eb3b169b0 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -13,7 +13,6 @@ 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.*; @@ -30,11 +29,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(); @@ -46,7 +40,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, drawLight = 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; @@ -55,18 +49,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 @@ -113,10 +104,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); @@ -181,31 +168,26 @@ public class Renderer implements ApplicationListener{ 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; - if(build != null){ - 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; @@ -227,7 +209,7 @@ public class Renderer implements ApplicationListener{ shakeIntensity = 0f; } - if(pixelator.enabled()){ + if(renderer.pixelate){ pixelator.drawPixelate(); }else{ draw(); @@ -303,7 +285,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()); } @@ -318,7 +300,7 @@ public class Renderer implements ApplicationListener{ Events.fire(Trigger.draw); MapPreviewLoader.checkPreviews(); - if(pixelator.enabled()){ + if(renderer.pixelate){ pixelator.register(); } @@ -371,9 +353,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(); @@ -461,61 +465,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){ @@ -560,6 +509,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; } @@ -568,25 +524,37 @@ 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; + + landCore.beginLaunch(coreType); } public void takeMapScreenshot(){ @@ -628,7 +596,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 1b6b550461..d634e122b5 100644 --- a/core/src/mindustry/core/UI.java +++ b/core/src/mindustry/core/UI.java @@ -101,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); @@ -281,7 +279,7 @@ public class UI implements ApplicationListener, Loadable{ public void showTextInput(String titleText, String text, int textLength, String def, boolean numbers, boolean allowEmpty, Cons confirmed, Runnable closed){ if(mobile){ - var description = text; + 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); diff --git a/core/src/mindustry/ctype/UnlockableContent.java b/core/src/mindustry/ctype/UnlockableContent.java index faf53c8363..434be84c4f 100644 --- a/core/src/mindustry/ctype/UnlockableContent.java +++ b/core/src/mindustry/ctype/UnlockableContent.java @@ -43,6 +43,8 @@ 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. */ @@ -62,11 +64,12 @@ 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); } @@ -115,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(); } } } @@ -126,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(); } } 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 0010346f9a..56ce52d8e1 100644 --- a/core/src/mindustry/editor/MapEditorDialog.java +++ b/core/src/mindustry/editor/MapEditorDialog.java @@ -24,6 +24,7 @@ import mindustry.gen.*; import mindustry.graphics.*; import mindustry.io.*; import mindustry.maps.*; +import mindustry.type.*; import mindustry.ui.*; import mindustry.ui.dialogs.*; import mindustry.world.*; diff --git a/core/src/mindustry/editor/MapInfoDialog.java b/core/src/mindustry/editor/MapInfoDialog.java index 2c7e4e46ab..86a217e82e 100644 --- a/core/src/mindustry/editor/MapInfoDialog.java +++ b/core/src/mindustry/editor/MapInfoDialog.java @@ -7,6 +7,7 @@ import mindustry.game.*; import mindustry.gen.*; import mindustry.io.*; import mindustry.maps.filters.*; +import mindustry.type.*; import mindustry.ui.*; import mindustry.ui.dialogs.*; @@ -17,6 +18,7 @@ public class MapInfoDialog extends BaseDialog{ private final MapGenerateDialog generate; private final CustomRulesDialog ruleInfo = new CustomRulesDialog(); private final MapObjectivesDialog objectives = new MapObjectivesDialog(); + private final MapLocalesDialog locales = new MapLocalesDialog(); public MapInfoDialog(){ super("@editor.mapinfo"); @@ -94,6 +96,19 @@ 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).width(0f).colspan(2).center().growX(); }).colspan(2).center(); name.change(); diff --git a/core/src/mindustry/editor/MapLocalesDialog.java b/core/src/mindustry/editor/MapLocalesDialog.java new file mode 100644 index 0000000000..47d902639c --- /dev/null +++ b/core/src/mindustry/editor/MapLocalesDialog.java @@ -0,0 +1,774 @@ +package mindustry.editor; + +import arc.Core; +import arc.func.*; +import arc.graphics.*; +import arc.scene.style.*; +import arc.scene.ui.*; +import arc.scene.ui.TextButton.*; +import arc.scene.ui.layout.*; +import arc.scene.utils.*; +import arc.struct.*; +import mindustry.*; +import mindustry.ctype.*; +import mindustry.game.*; +import mindustry.gen.*; +import mindustry.graphics.*; +import mindustry.io.*; +import mindustry.type.*; +import mindustry.ui.*; +import mindustry.ui.dialogs.*; + +import static mindustry.Vars.*; + +public class MapLocalesDialog extends BaseDialog{ + /** Width of UI property card. */ + private static final float cardWidth = 400f; + /** Style for filter options buttons */ + private static final TextButtonStyle filterStyle = new TextButtonStyle(){{ + up = down = checked = over = Tex.whitePane; + font = Fonts.outline; + fontColor = Color.lightGray; + overFontColor = Pal.accent; + disabledFontColor = Color.gray; + disabled = Styles.black; + }}; + /** Icons for use in map locales dialog. */ + private static final ContentType[] contentIcons = {ContentType.item, ContentType.block, ContentType.liquid, ContentType.status, ContentType.unit}; + + private MapLocales locales; + private MapLocales lastSaved; + private boolean saved = true; + private Table langs; + private Table main; + private Table propView; + private String selectedLocale; + + private boolean applytoall = true; + private boolean collapsed = false; + private String searchString = ""; + private boolean searchByValue = false; + private boolean showCorrect = true; + private boolean showMissing = true; + private boolean showSame = true; + + public MapLocalesDialog(){ + super("@editor.locales"); + + selectedLocale = MapLocales.currentLocale(); + + langs = new Table(Tex.button); + main = new Table(); + propView = new Table(); + + buttons.add("").uniform(); + + buttons.table(t -> { + t.defaults().pad(3).center(); + + t.button("@back", Icon.left, () -> { + if(!saved) ui.showConfirm("@editor.locales", "@editor.savechanges", () -> { + editor.tags.put("locales", JsonIO.write(locales)); + state.mapLocales = locales; + }); + hide(); + }).size(210f, 64f); + closeOnBack(() -> { + if(!saved) ui.showConfirm("@editor.locales", "@editor.savechanges", () -> { + editor.tags.put("locales", JsonIO.write(locales)); + state.mapLocales = locales; + }); + }); + + t.button("@editor.apply", Icon.ok, () -> { + editor.tags.put("locales", JsonIO.write(locales)); + state.mapLocales = locales; + lastSaved = locales.copy(); + saved = true; + }).size(210f, 64f).disabled(b -> saved); + + t.button("@edit", Icon.edit, this::editDialog).size(210f, 64f); + }).growX(); + + resized(this::buildMain); + + buttons.button("?", () -> ui.showInfo("@locales.info")).size(60f, 64f).uniform(); + + shown(this::setup); + } + + public void show(MapLocales locales){ + this.locales = locales; + lastSaved = locales.copy(); + saved = true; + show(); + } + + private void setup(){ + cont.clear(); + + buildTables(); + + cont.add(langs).left(); + + cont.table(t -> { + // search/collapse all/filter + t.table(a -> { + a.button(Icon.downOpen, Styles.emptyTogglei, () -> { + collapsed = !collapsed; + buildMain(); + }).update(b -> { + b.replaceImage(new Image(collapsed ? Icon.upOpen : Icon.downOpen)); + b.setChecked(collapsed); + }).size(35f); + + a.button(Icon.filter, Styles.emptyi, () -> filterDialog(this::buildMain)).padLeft(10f).size(35f); + + var field = a.field("", v -> { + searchString = v; + buildMain(); + }).update(f -> f.setText(searchString)).maxTextLength(64).padLeft(10f).width(250f).update(f -> f.setMessageText(searchByValue ? "@locales.searchvalue": "@locales.searchname")).get(); + + a.button(Icon.cancel, Styles.emptyi, () -> { + searchString = ""; + field.setText(""); + buildMain(); + }).padLeft(10f).size(35f); + }).row(); + + t.check("@locales.applytoall", applytoall, b -> applytoall = b).pad(10f).row(); + + t.add(main).center().grow().row(); + }).pad(10f).grow(); + + // property addition + cont.table(Tex.button, t -> { + TextField name = t.field("name", s -> {}).maxTextLength(64).fillX().padTop(10f).get(); + t.row(); + TextField value = t.area("text", s -> {}).maxTextLength(1000).fillX().height(140f).get(); + t.row(); + + t.button("@add", Icon.add, () -> { + if(applytoall){ + for(var locale : locales.values()){ + locale.put(name.getText(), value.getText()); + } + }else{ + locales.get(selectedLocale).put(name.getText(), value.getText()); + } + + saved = false; + buildMain(); + }).padTop(10f).size(cardWidth, 50f).fillX().row(); + }).right(); + } + + private void buildTables(){ + if(!locales.containsKey(selectedLocale)){ + locales.put(selectedLocale, new StringMap()); + } + + buildLocalesTable(); + buildMain(); + } + + private void buildLocalesTable(){ + langs.clear(); + + langs.pane(p -> { + for(var loc : Vars.locales){ + String name = loc.toString(); + + if(locales.containsKey(name)){ + p.button(loc.getDisplayName(Core.bundle.getLocale()), Styles.flatTogglet, () -> { + if(name.equals(selectedLocale)) return; + + selectedLocale = name; + buildTables(); + }).update(b -> b.setChecked(selectedLocale.equals(name))).width(200f).minHeight(50f); + p.button(Icon.edit, Styles.flati, () -> localeEditDialog(name)).size(50f); + p.button(Icon.trash, Styles.flati, () -> ui.showConfirm("@confirm", "@locales.deletelocale", () -> { + locales.remove(name); + + selectedLocale = (locales.size != 0 ? locales.keys().next() : Core.settings.getString("locale")); + saved = false; + buildTables(); + })).size(50f).row(); + } + } + }).row(); + langs.button("@add", Icon.add, this::addLocaleDialog).padTop(10f).width(250f); + } + + private void buildMain(){ + main.clear(); + + StringMap props = locales.get(selectedLocale); + + main.image().color(Pal.gray).height(3f).growX().expandY().top().row(); + main.pane(p -> { + int cols = Math.max(1, (int)((Core.graphics.getWidth() / Scl.scl() - 410f) / cardWidth) - 1); + if(props.size == 0){ + main.add("@empty").center().row(); + return; + } + p.defaults().top(); + + Table[] colTables = new Table[cols]; + for(var i = 0; i < cols; i++){ + colTables[i] = new Table(); + } + int i = 0; + + // To sort properties in alphabetic order + Seq keys = props.keys().toSeq().sort(); + + for(var key : keys){ + var comparsionString = (searchByValue ? props.get(key).toLowerCase() : key.toLowerCase()); + if(!searchString.isEmpty() && !comparsionString.contains(searchString.toLowerCase())) continue; + + PropertyStatus status = getPropertyStatus(key, props.get(key), selectedLocale, false); + if(status == PropertyStatus.correct && !showCorrect) continue; + if(status == PropertyStatus.missing && !showMissing) continue; + if(status == PropertyStatus.same && !showSame) continue; + + colTables[i].table(Tex.whitePane, t -> { + boolean[] shown = {!collapsed}; + String[] propKey = {key}; + String[] propValue = {props.get(key)}; + + // collapse button + t.button(Icon.downOpen, Styles.emptyTogglei, () -> shown[0] = !shown[0]).update(b -> { + b.replaceImage(new Image(shown[0] ? Icon.upOpen : Icon.downOpen)); + b.setChecked(shown[0]); + }).size(35f); + + // property name field + t.field(propKey[0], (f, c) -> c != '=' && c != ':', v -> { + if(props.containsKey(v)){ + t.setColor(Color.valueOf("f25555")); + return; + } + + if(applytoall){ + for(var bundle : locales.values()){ + if(!bundle.containsKey(v)){ + String value = bundle.get(propKey[0]); + if(value == null) continue; + + bundle.remove(propKey[0]); + bundle.put(v, value); + } + } + }else{ + if(!props.containsKey(v)){ + props.remove(propKey[0]); + props.put(v, propValue[0]); + } + } + + propKey[0] = v; + updateCard(t, v, propValue[0]); + saved = false; + }).maxTextLength(64).width(cardWidth - 125f); + + // remove button + t.button(Icon.trash, Styles.emptyi, () -> { + if(applytoall){ + for(var bundle : locales.values()){ + bundle.remove(propKey[0]); + } + }else{ + props.remove(propKey[0]); + } + saved = false; + buildMain(); + }).size(35f); + + // more actions + t.button(Icon.edit, Styles.emptyi, () -> propEditDialog(t, propKey[0], propValue[0])).size(35f).row(); + + // property value area + t.collapser(c -> c.area(propValue[0], v -> { + props.put(propKey[0], v); + updateCard(t, propKey[0], v); + saved = false; + }).maxTextLength(1000).height(140f).update(a -> { + propValue[0] = props.get(propKey[0]); + a.setText(props.get(propKey[0])); + }).growX(), () -> shown[0]).colspan(4).growX(); + + updateCard(t, propKey[0], propValue[0]); + }).top().width(cardWidth).pad(5f).row(); + + i = ++i % cols; + } + + if(!colTables[0].hasChildren()){ + main.add("@empty").center().row(); + }else{ + p.add(colTables); + } + }).growX().row(); + main.image().color(Pal.gray).height(3f).growX().expandY().bottom().row(); + } + + private void updateCard(Table table, String propKey, String propValue){ + updateCard(table, propKey, propValue, selectedLocale, false); + } + + private void updateCard(Table table, String propKey, String propValue, String locale, boolean viewCard){ + switch(getPropertyStatus(propKey, propValue, locale, viewCard)){ + case missing -> table.setColor(Pal.accent); + case same -> table.setColor(Pal.techBlue); + case correct -> table.setColor(Pal.gray); + } + } + + // Property statuses for main dialog and property view dialog are a bit different + private PropertyStatus getPropertyStatus(String propKey, String propValue, String locale, boolean forView){ + if(forView && propValue == null) return PropertyStatus.missing; + + for(var bundle : locales.entries()){ + if(!forView && bundle.key.equals(selectedLocale)) continue; + if(forView && bundle.key.equals(locale)) continue; + + StringMap props = bundle.value; + + if(!props.containsKey(propKey)){ + if(!forView) return PropertyStatus.missing; + }else{ + if(props.get(propKey).equals(propValue)){ + return PropertyStatus.same; + } + } + } + + return PropertyStatus.correct; + } + + private void addLocaleDialog(){ + BaseDialog dialog = new BaseDialog("@add"); + + dialog.cont.pane(t -> { + for(var loc : Vars.locales){ + String name = loc.toString(); + + if(!locales.containsKey(name)){ + t.button(loc.getDisplayName(Core.bundle.getLocale()), Styles.flatTogglet, () -> { + if(name.equals(selectedLocale)) return; + + locales.put(name, new StringMap()); + + selectedLocale = name; + saved = false; + buildTables(); + dialog.hide(); + }).update(b -> b.setChecked(selectedLocale.equals(name))).size(400f, 50f).row(); + } + } + }); + + dialog.addCloseButton(); + dialog.show(); + } + + private void propEditDialog(Table card, String key, String value){ + BaseDialog dialog = new BaseDialog("@edit"); + + dialog.cont.pane(p -> { + p.margin(10f); + p.table(Tex.button, t -> { + t.defaults().size(450f, 60f).left(); + + t.button("@locales.addtoother", Icon.add, Styles.flatt, () -> { + for(var bundle : locales.values()){ + if(!bundle.containsKey(key)){ + bundle.put(key, value); + } + } + + saved = false; + updateCard(card, key, value); + dialog.hide(); + }).marginLeft(12f).row(); + + t.button("@locales.viewproperty", Icon.zoom, Styles.flatt, () -> { + viewPropertyDialog(key); + dialog.hide(); + }).marginLeft(12f).row(); + + t.button("@locales.addicon", Icon.image, Styles.flatt, () -> { + addIconDialog(res -> { + locales.get(selectedLocale).put(key, value + res); + saved = false; + }); + dialog.hide(); + }).marginLeft(12f).row(); + + t.button("@locales.rollback", Icon.undo, Styles.flatt, () -> { + locales.get(selectedLocale).put(key, lastSaved.get(selectedLocale).get(key)); + buildTables(); + dialog.hide(); + }).disabled(b -> { + if(!lastSaved.containsKey(selectedLocale)) return true; + StringMap savedMap = lastSaved.get(selectedLocale); + return !savedMap.containsKey(key) || savedMap.get(key).equals(locales.get(selectedLocale).get(key)); + }).marginLeft(12f).row(); + }); + }); + + dialog.addCloseButton(); + dialog.show(); + } + + private void localeEditDialog(String locale){ + BaseDialog dialog = new BaseDialog("@edit"); + + dialog.cont.pane(p -> { + p.margin(10f); + p.table(Tex.button, t -> { + t.defaults().size(350f, 60f).left(); + + t.button("@waves.copy", Icon.copy, Styles.flatt, () -> { + Core.app.setClipboardText(writeLocale(locale)); + ui.showInfoFade("@copied"); + dialog.hide(); + }).marginLeft(12f).row(); + t.button("@waves.load", Icon.download, Styles.flatt, () -> { + locales.put(locale, readLocale(Core.app.getClipboardText())); + buildTables(); + saved = false; + dialog.hide(); + }).disabled(Core.app.getClipboardText() == null).marginLeft(12f).row(); + }); + }); + + dialog.addCloseButton(); + dialog.show(); + } + + private void editDialog(){ + BaseDialog dialog = new BaseDialog("@edit"); + + dialog.cont.pane(p -> { + p.margin(10f); + p.table(Tex.button, t -> { + t.defaults().size(450f, 60f).left(); + + t.button("@waves.copy", Icon.copy, Styles.flatt, () -> { + Core.app.setClipboardText(writeBundles()); + ui.showInfoFade("@copied"); + dialog.hide(); + }).marginLeft(12f).row(); + t.button("@waves.load", Icon.download, Styles.flatt, () -> { + locales = readBundles(Core.app.getClipboardText()); + buildTables(); + saved = false; + dialog.hide(); + }).disabled(Core.app.getClipboardText() == null).marginLeft(12f).row(); + t.button("@locales.rollback", Icon.undo, Styles.flatt, () -> { + locales = lastSaved.copy(); + saved = true; + buildTables(); + dialog.hide(); + }).disabled(b -> saved).marginLeft(12f).row(); + }); + }); + + dialog.addCloseButton(); + dialog.show(); + } + + private void viewPropertyDialog(String key){ + BaseDialog dialog = new BaseDialog(Core.bundle.format("locales.viewing", key)); + + dialog.cont.table(t -> { + t.button(Icon.filter, Styles.emptyi, () -> filterDialog(() -> buildPropView(key))).size(35f); + + var field = t.field(searchString, v -> { + searchString = v; + buildPropView(key); + }).update(f -> f.setText(searchString)).maxTextLength(64).padLeft(10f).width(250f).update(f -> f.setMessageText(searchByValue ? "@locales.searchvalue" : "@locales.searchlocale")).get(); + + t.button(Icon.cancel, Styles.emptyi, () -> { + searchString = ""; + field.setText(""); + buildPropView(key); + }).padLeft(10f).size(35f); + }).row(); + + buildPropView(key); + dialog.cont.add(propView).grow().center().row(); + + dialog.addCloseButton(); + dialog.closeOnBack(); + dialog.hidden(this::buildMain); + + dialog.show(); + } + + private void buildPropView(String key){ + propView.clear(); + + propView.image().color(Pal.gray).height(3f).fillX().top().row(); + propView.pane(p -> { + int cols = Math.max(1, (int)((Core.graphics.getWidth() / Scl.scl() - 100f) / cardWidth)); + if(cols == 0){ + propView.add("@empty").center().row(); + return; + } + p.defaults().top(); + + Table[] colTables = new Table[cols]; + for(var i = 0; i < cols; i++){ + colTables[i] = new Table(); + } + int i = 0; + + for(var loc : Vars.locales){ + String name = loc.toString(); + if(!locales.containsKey(name)) continue; + + PropertyStatus status = getPropertyStatus(key, locales.get(name).get(key), name, true); + if(status == PropertyStatus.correct && !showCorrect) continue; + if(status == PropertyStatus.missing && !showMissing) continue; + if(status == PropertyStatus.same && !showSame) continue; + + if(status != PropertyStatus.missing){ + var comparsionString = (searchByValue ? locales.get(name).get(key).toLowerCase() : loc.getDisplayName(Core.bundle.getLocale()).toLowerCase()); + if(!searchString.isEmpty() && !comparsionString.contains(searchString.toLowerCase())) continue; + } + + colTables[i].table(Tex.whitePane, t -> { + t.add(loc.getDisplayName(Core.bundle.getLocale())).left().color(Pal.accent).row(); + t.image().color(Pal.accent).fillX().row(); + + if(status == PropertyStatus.missing){ + t.table(b -> + b.button("@add", Icon.add, () -> { + locales.get(name).put(key, "moai"); + + t.getCells().get(2).clearElement(); + t.getCells().remove(2); + + t.area(locales.get(name).get(key), v -> { + locales.get(name).put(key, v); + saved = false; + }).maxTextLength(1000).height(140f).growX().row(); + }).size(160f, 50f)).height(140f).growX().row(); + }else{ + t.area(locales.get(name).get(key), v -> { + locales.get(name).put(key, v); + saved = false; + }).maxTextLength(1000).height(140f).growX().row(); + } + }).update(t -> updateCard(t, key, locales.get(name).get(key), name, true)).top().width(cardWidth).pad(5f).row(); + + i = ++i % cols; + } + + if(!colTables[0].hasChildren()){ + propView.add("@empty").center().row(); + }else{ + p.add(colTables); + } + }).grow().row(); + propView.image().color(Pal.gray).height(3f).fillX().bottom().row(); + } + + private void filterDialog(Runnable hidden){ + BaseDialog dialog = new BaseDialog("@locales.filter"); + + dialog.cont.table(t -> { + t.add("@search").row(); + t.table(b -> { + b.button("@locales.byname", Styles.togglet, () -> searchByValue = false).size(300f, 50f).checked(v -> !searchByValue); + b.button("@locales.byvalue", Styles.togglet, () -> searchByValue = true).padLeft(10f).size(300f, 50f).checked(v -> searchByValue); + }).padTop(5f); + }).row(); + + dialog.cont.button("@locales.showcorrect", Icon.ok, filterStyle, () -> showCorrect = !showCorrect).update(b -> { + ((Image)b.getChildren().get(1)).setDrawable(showCorrect ? Icon.ok : Icon.cancel); + b.setChecked(showCorrect); + }).size(450f, 100f).color(Pal.gray).padTop(65f); + + dialog.cont.row(); + + dialog.cont.button("@locales.showmissing", Icon.ok, filterStyle, () -> showMissing = !showMissing).update(b -> { + ((Image)b.getChildren().get(1)).setDrawable(showMissing ? Icon.ok : Icon.cancel); + b.setChecked(showMissing); + }).size(450f, 100f).color(Pal.accent).padTop(65f); + + dialog.cont.row(); + + dialog.cont.button("@locales.showsame", Icon.ok, filterStyle, () -> showSame = !showSame).update(b -> { + ((Image)b.getChildren().get(1)).setDrawable(showSame ? Icon.ok : Icon.cancel); + b.setChecked(showSame); + }).size(450f, 100f).color(Pal.techBlue).padTop(65f); + + dialog.buttons.button("@back", Icon.left, () -> { + hidden.run(); + dialog.hide(); + }).size(210f, 64f); + dialog.closeOnBack(hidden); + + dialog.show(); + } + + private void addIconDialog(Cons cons){ + BaseDialog dialog = new BaseDialog("@locales.addicon"); + + Table icons = new Table(); + TextField search = Elem.newField("", v -> iconsTable(icons, v.replace(" ", "").toLowerCase(), dialog, cons)); + search.setMessageText("@search"); + + dialog.cont.table(t -> { + t.add(search).maxTextLength(64).padLeft(10f).width(250f); + + t.button(Icon.cancel, Styles.emptyi, () -> { + search.setText(""); + iconsTable(icons, "", dialog, cons); + }).padLeft(10f).size(35f); + }).row(); + + dialog.cont.pane(icons).scrollX(false); + dialog.resized(true, () -> iconsTable(icons, search.getText().replace(" ", "").toLowerCase(), dialog, cons)); + + dialog.addCloseButton(); + dialog.closeOnBack(); + dialog.setFillParent(true); + dialog.show(); + } + + private void iconsTable(Table table, String search, Dialog dialog, Cons cons){ + table.clear(); + + table.marginRight(19f).marginLeft(12f); + table.defaults().size(48f); + + int cols = (int)Math.min(20, Core.graphics.getWidth() / Scl.scl(52f)); + + int i = 0; + + var codes = new ObjectIntMap<>(Iconc.codes); + + for(var name : codes.keys()){ + if(!name.toLowerCase().contains(search)) codes.remove(name); + } + + if(codes.size > 0) table.image().colspan(cols).growX().width(-1f).height(3f).color(Pal.accent).row(); + + for(var icon : codes){ + String res = (char)icon.value + ""; + + table.button(Icon.icons.get(icon.key), Styles.flati, iconMed, () -> { + cons.get(res); + dialog.hide(); + }).tooltip(icon.key); + + if(++i % cols == 0) table.row(); + } + + for(ContentType ctype : contentIcons){ + var all = content.getBy(ctype).as().select(u -> u.localizedName.replace(" ", "").toLowerCase().contains(search) && u.uiIcon.found()); + + table.row(); + if(all.size > 0) table.image().colspan(cols).growX().width(-1f).height(3f).color(Pal.accent).row(); + + i = 0; + for(UnlockableContent u : all){ + table.button(new TextureRegionDrawable(u.uiIcon), Styles.flati, iconMed, () -> { + cons.get(u.emoji() + ""); + dialog.hide(); + }).tooltip(u.localizedName); + + if(++i % cols == 0) table.row(); + } + } + + var teams = new Seq<>(Team.baseTeams); + teams = teams.select(u -> u.localized().toLowerCase().contains(search) && Core.atlas.has("team-" + u.name)); + + table.row(); + if(teams.size > 0) table.image().colspan(cols).growX().width(-1f).height(3f).color(Pal.accent).row(); + + for(Team team : teams){ + var region = Core.atlas.find("team-" + team.name); + + table.button(new TextureRegionDrawable(region), Styles.flati, iconMed, () -> { + cons.get(team.emoji); + dialog.hide(); + }).tooltip(team.localized()); + + if(++i % cols == 0) table.row(); + } + } + + private String writeBundles(){ + StringBuilder data = new StringBuilder(); + + for(var locale : locales.keys()){ + data.append(locale).append(":\n").append(writeLocale(locale)); + } + + return data.toString(); + } + + private String writeLocale(String key){ + StringBuilder data = new StringBuilder(); + + if(!locales.containsKey(key)) return ""; + + for(var prop : locales.get(key).entries()){ + // Convert \n in plain text to \\n, then convert newlines to \n + data.append(prop.key).append(" = ").append(prop.value + .replace("\\n", "\\\\n").replace("\n", "\\n")).append("\n"); + } + + return data.toString(); + } + + private MapLocales readBundles(String data){ + MapLocales bundles = new MapLocales(); + + String currentLocale = ""; + + for(var line : data.split("\\r?\\n|\\r")){ + if(line.endsWith(":") && !line.contains("=")){ + currentLocale = line.substring(0, line.length() - 1); + bundles.put(currentLocale, new StringMap()); + }else{ + int sepIndex = line.indexOf(" = "); + if(sepIndex != -1 && !currentLocale.isEmpty()){ + // Convert \n in file to newlines in text, then revert newlines with escape characters + bundles.get(currentLocale).put(line.substring(0, sepIndex), line.substring(sepIndex + 3) + .replace("\\n", "\n").replace("\\\n", "\\n")); + } + } + } + + return bundles; + } + + private StringMap readLocale(String data){ + StringMap map = new StringMap(); + + for(var line : data.split("\\r?\\n|\\r")){ + int sepIndex = line.indexOf(" = "); + if(sepIndex != -1){ + // Convert \n in file to newlines in text, then revert newlines with escape characters + map.put(line.substring(0, sepIndex), line.substring(sepIndex + 3) + .replace("\\n", "\n").replace("\\\n", "\\n")); + } + } + + return map; + } + + private enum PropertyStatus{ + correct, + missing, + same + } +} diff --git a/core/src/mindustry/editor/MapObjectivesDialog.java b/core/src/mindustry/editor/MapObjectivesDialog.java index 5e354a84ae..ecdc53e01e 100644 --- a/core/src/mindustry/editor/MapObjectivesDialog.java +++ b/core/src/mindustry/editor/MapObjectivesDialog.java @@ -246,6 +246,38 @@ public class MapObjectivesDialog extends BaseDialog{ show(); }}); + setInterpreter(Vertices.class, float[].class, (cont, name, type, field, remover, indexer, get, set) -> cont.table(main -> { + float[] data = get.get(); + + name(cont, name, remover, indexer); + cont.table(t -> { + t.left().defaults().left(); + + String[] names = {"x", "y", "color", "u", "v"}; + int stride = 6; + int vertices = data.length / stride; + + for(int i = 0; i < vertices; i++){ + int offset = i * stride; + + t.table(row -> { + for(int j = 0; j < names.length; j++){ + int index = offset + j; + + if("color".equals(names[j])) { + getInterpreter(Color.class).build(row, names[j], new TypeInfo(Color.class), null, null, null, () -> new Color().abgr8888(data[index]), value -> data[index] = value.toFloatBits()); + }else{ + float scale = j <= 1 ? tilesize : 1; + getInterpreter(float.class).build(row, names[j], new TypeInfo(float.class), null, null, null, () -> data[index] / scale, value -> data[index] = value * scale); + } + + row.add().pad(4); + } + }).row(); + } + }); + })); + // Types that use the default interpreter. It would be nice if all types could use it, but I don't know how to reliably prevent classes like [? extends Content] from using it. for(var obj : MapObjectives.allObjectiveTypes) setInterpreter(obj.get().getClass(), defaultInterpreter()); for(var mark : MapObjectives.allMarkerTypes) setInterpreter(mark.get().getClass(), defaultInterpreter()); @@ -290,10 +322,12 @@ public class MapObjectivesDialog extends BaseDialog{ t.button(Icon.downOpen, Styles.emptyi, () -> indexer.get(false)).fill().padRight(4f); } - t.button(Icon.add, Styles.emptyi, () -> getProvider(type.element.raw).get(type.element, res -> { - arr.add(res); - rebuild[0].run(); - })).fill(); + if(!field.isAnnotationPresent(Immutable.class)) { + t.button(Icon.add, Styles.emptyi, () -> getProvider(type.element.raw).get(type.element, res -> { + arr.add(res); + rebuild[0].run(); + })).fill(); + } }).growX().height(46f).pad(0f, -10f, 0f, -10f).get(); main.row().table(Tex.button, t -> rebuild[0] = () -> { @@ -312,10 +346,10 @@ public class MapObjectivesDialog extends BaseDialog{ getInterpreter((Class)arr.get(index).getClass()).build( t, "", new TypeInfo(arr.get(index).getClass()), - field, () -> { + field, field == null || !field.isAnnotationPresent(Immutable.class) ? () -> { arr.remove(index); rebuild[0].run(); - }, field == null || !field.isAnnotationPresent(Unordered.class) ? in -> { + } : null, field == null || !field.isAnnotationPresent(Unordered.class) ? in -> { if(in && index > 0){ arr.swap(index, index - 1); rebuild[0].run(); diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index 2c2426deba..158cba605b 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -293,7 +293,6 @@ public class Damage{ collided.each(c -> { if(hitter.damage > 0 && (pierceCap <= 0 || collideCount[0] < pierceCap)){ if(c.target instanceof Unit u){ - effect.at(c.x, c.y); u.collision(hitter, c.x, c.y); hitter.collision(u, c.x, c.y); collideCount[0]++; @@ -344,7 +343,6 @@ public class Damage{ Units.nearbyEnemies(team, rect.setCentered(x, y, 1f), u -> { if(u.checkTarget(hitter.type.collidesAir, hitter.type.collidesGround) && u.hittable()){ - effect.at(x, y); u.collision(hitter, x, y); hitter.collision(u, x, y); } diff --git a/core/src/mindustry/entities/Fires.java b/core/src/mindustry/entities/Fires.java index b22e39eb4f..e3601e3e31 100644 --- a/core/src/mindustry/entities/Fires.java +++ b/core/src/mindustry/entities/Fires.java @@ -1,8 +1,6 @@ package mindustry.entities; import arc.*; -import arc.math.geom.*; -import arc.struct.*; import arc.util.*; import mindustry.content.*; import mindustry.game.EventType.*; @@ -14,13 +12,12 @@ import static mindustry.Vars.*; public class Fires{ private static final float baseLifetime = 1000f; - private static final IntMap map = new IntMap<>(); /** Start a fire on the tile. If there already is a fire there, refreshes its lifetime. */ public static void create(Tile tile){ if(net.client() || tile == null || !state.rules.fire || !state.rules.hasEnv(Env.oxygen)) return; //not clientside. - Fire fire = map.get(tile.pos()); + Fire fire = get(tile); if(fire == null){ fire = Fire.create(); @@ -28,48 +25,58 @@ public class Fires{ fire.lifetime = baseLifetime; fire.set(tile.worldx(), tile.worldy()); fire.add(); - map.put(tile.pos(), fire); + set(tile, fire); }else{ fire.lifetime = baseLifetime; fire.time = 0f; } } - public static Fire get(int x, int y){ - return map.get(Point2.pack(x, y)); + public static @Nullable Fire get(Tile tile){ + return tile == null ? null : world.tiles.getFire(tile.array()); + } + + public static @Nullable Fire get(int x, int y){ + return Structs.inBounds(x, y, world.width(), world.height()) ? world.tiles.getFire(world.packArray(x, y)) : null; + } + + private static void set(Tile tile, Fire fire){ + world.tiles.setFire(tile.array(), fire); } public static boolean has(int x, int y){ - if(!Structs.inBounds(x, y, world.width(), world.height()) || !map.containsKey(Point2.pack(x, y))){ + if(!Structs.inBounds(x, y, world.width(), world.height())){ return false; } - Fire fire = map.get(Point2.pack(x, y)); - return fire.isAdded() && fire.fin() < 1f && fire.tile() != null && fire.tile().x == x && fire.tile().y == y; + Fire fire = get(x, y); + return fire != null && fire.isAdded() && fire.fin() < 1f && fire.tile != null && fire.tile.x == x && fire.tile.y == y; } /** * Attempts to extinguish a fire by shortening its life. If there is no fire here, does nothing. */ public static void extinguish(Tile tile, float intensity){ - if(tile != null && map.containsKey(tile.pos())){ - Fire fire = map.get(tile.pos()); - fire.time(fire.time + intensity * Time.delta); - Fx.steam.at(fire); - if(fire.time >= fire.lifetime){ - Events.fire(Trigger.fireExtinguish); + if(tile != null){ + Fire fire = get(tile); + if(fire != null){ + fire.time(fire.time + intensity * Time.delta); + Fx.steam.at(fire); + if(fire.time >= fire.lifetime){ + Events.fire(Trigger.fireExtinguish); + } } } } public static void remove(Tile tile){ if(tile != null){ - map.remove(tile.pos()); + set(tile, null); } } public static void register(Fire fire){ if(fire.tile != null){ - map.put(fire.tile.pos(), fire); + set(fire.tile, fire); } } } diff --git a/core/src/mindustry/entities/Puddles.java b/core/src/mindustry/entities/Puddles.java index aa7e5bde8d..7c3a555154 100644 --- a/core/src/mindustry/entities/Puddles.java +++ b/core/src/mindustry/entities/Puddles.java @@ -26,8 +26,8 @@ public class Puddles{ } /** Returns the Puddle on the specified tile. May return null. */ - public static Puddle get(Tile tile){ - return world.tiles.puddle(tile.array()); + public static @Nullable Puddle get(Tile tile){ + return tile == null ? null : world.tiles.getPuddle(tile.array()); } public static void deposit(Tile tile, Tile source, Liquid liquid, float amount, boolean initial){ @@ -74,7 +74,7 @@ public class Puddles{ Puddle puddle = Puddle.create(); puddle.tile = tile; puddle.liquid = liquid; - puddle.amount = amount; + puddle.amount = Math.min(amount, maxLiquid); puddle.set(ax, ay); register(puddle); puddle.add(); diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index 998c2c05f3..659112d57a 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -192,8 +192,18 @@ public class Units{ /** Returns the nearest enemy tile in a range. */ public static Building findEnemyTile(Team team, float x, float y, float range, Boolf pred){ + return findEnemyTile(team, x, y, range, false, pred); + } + + /** Returns the nearest enemy tile in a range. */ + public static Building findEnemyTile(Team team, float x, float y, float range, boolean checkUnder, Boolf pred){ if(team == Team.derelict) return null; + if(checkUnder){ + Building target = indexer.findEnemyTile(team, x, y, range, build -> !build.block.underBullets && pred.get(build)); + if(target != null) return target; + } + return indexer.findEnemyTile(team, x, y, range, pred); } @@ -214,7 +224,10 @@ public class Units{ } }); - return buildResult; + var result = buildResult; + buildResult = null; + + return result; } /** Iterates through all buildings in a range. */ @@ -240,7 +253,7 @@ public class Units{ if(unit != null){ return unit; }else{ - return findEnemyTile(team, x, y, range, tilePred); + return findEnemyTile(team, x, y, range, true, tilePred); } } @@ -252,7 +265,7 @@ public class Units{ if(unit != null){ return unit; }else{ - return findEnemyTile(team, x, y, range, tilePred); + return findEnemyTile(team, x, y, range, true, tilePred); } } diff --git a/core/src/mindustry/entities/abilities/Ability.java b/core/src/mindustry/entities/abilities/Ability.java index 5a6b025417..42a31d6312 100644 --- a/core/src/mindustry/entities/abilities/Ability.java +++ b/core/src/mindustry/entities/abilities/Ability.java @@ -6,6 +6,7 @@ import mindustry.gen.*; import mindustry.type.*; public abstract class Ability implements Cloneable{ + protected static final float descriptionWidth = 350f; /** If false, this ability does not show in unit stats. */ public boolean display = true; //the one and only data variable that is synced. @@ -16,7 +17,16 @@ public abstract class Ability implements Cloneable{ public void death(Unit unit){} public void init(UnitType type){} public void displayBars(Unit unit, Table bars){} - public void addStats(Table t){} + public void addStats(Table t){ + if(Core.bundle.has(getBundle() + ".description")){ + t.add(Core.bundle.get(getBundle() + ".description")).wrap().width(descriptionWidth); + t.row(); + } + } + + public String abilityStat(String stat, Object... values){ + return Core.bundle.format("ability.stat." + stat, values); + } public Ability copy(){ try{ @@ -29,7 +39,11 @@ public abstract class Ability implements Cloneable{ /** @return localized ability name; mods should override this. */ public String localized(){ + return Core.bundle.get(getBundle()); + } + + public String getBundle(){ var type = getClass(); - return Core.bundle.get("ability." + (type.isAnonymousClass() ? type.getSuperclass() : type).getSimpleName().replace("Ability", "").toLowerCase()); + return "ability." + (type.isAnonymousClass() ? type.getSuperclass() : type).getSimpleName().replace("Ability", "").toLowerCase(); } } diff --git a/core/src/mindustry/entities/abilities/ArmorPlateAbility.java b/core/src/mindustry/entities/abilities/ArmorPlateAbility.java index bfe776d737..d417e01735 100644 --- a/core/src/mindustry/entities/abilities/ArmorPlateAbility.java +++ b/core/src/mindustry/entities/abilities/ArmorPlateAbility.java @@ -4,18 +4,27 @@ import arc.*; import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; -import arc.scene.ui.layout.Table; +import arc.scene.ui.layout.*; import arc.util.*; import mindustry.gen.*; import mindustry.graphics.*; -import mindustry.world.meta.*; public class ArmorPlateAbility extends Ability{ public TextureRegion plateRegion; - public Color color = Color.valueOf("d1efff"); + public TextureRegion shineRegion; + public String plateSuffix = "-armor"; + public String shineSuffix = "-shine"; + /** Color of the shine. If null, uses team color. */ + public @Nullable Color color = null; + public float shineSpeed = 1f; + public float z = -1; + + /** Whether to draw the plate region. */ + public boolean drawPlate = true; + /** Whether to draw the shine over the plate region. */ + public boolean drawShine = true; public float healthMultiplier = 0.2f; - public float z = Layer.effect; protected float warmup; @@ -29,29 +38,45 @@ public class ArmorPlateAbility extends Ability{ @Override public void addStats(Table t){ - t.add("[lightgray]" + Stat.healthMultiplier.localized() + ": [white]" + Math.round(healthMultiplier * 100f) + 100 + "%"); + super.addStats(t); + t.add(abilityStat("damagereduction", Strings.autoFixed(-healthMultiplier * 100f, 1))); } @Override public void draw(Unit unit){ + if(!drawPlate && !drawShine) return; + if(warmup > 0.001f){ if(plateRegion == null){ - plateRegion = Core.atlas.find(unit.type.name + "-armor", unit.type.region); + plateRegion = Core.atlas.find(unit.type.name + plateSuffix, unit.type.region); + shineRegion = Core.atlas.find(unit.type.name + shineSuffix, plateRegion); } - Draw.draw(z <= 0 ? Draw.z() : z, () -> { - Shaders.armor.region = plateRegion; - Shaders.armor.progress = warmup; - Shaders.armor.time = -Time.time / 20f; + float pz = Draw.z(); + if(z > 0) Draw.z(z); - Draw.rect(Shaders.armor.region, unit.x, unit.y, unit.rotation - 90f); - Draw.color(color); - Draw.shader(Shaders.armor); - Draw.rect(Shaders.armor.region, unit.x, unit.y, unit.rotation - 90f); - Draw.shader(); + if(drawPlate){ + Draw.alpha(warmup); + Draw.rect(plateRegion, unit.x, unit.y, unit.rotation - 90f); + Draw.alpha(1f); + } - Draw.reset(); - }); + if(drawShine){ + Draw.draw(Draw.z(), () -> { + Shaders.armor.region = shineRegion; + Shaders.armor.progress = warmup; + Shaders.armor.time = -Time.time / 20f * shineSpeed; + + Draw.color(color == null ? unit.team.color : color); + Draw.shader(Shaders.armor); + Draw.rect(shineRegion, unit.x, unit.y, unit.rotation - 90f); + Draw.shader(); + + Draw.reset(); + }); + } + + Draw.z(pz); } } } diff --git a/core/src/mindustry/entities/abilities/EnergyFieldAbility.java b/core/src/mindustry/entities/abilities/EnergyFieldAbility.java index acd47475bc..8c041087c0 100644 --- a/core/src/mindustry/entities/abilities/EnergyFieldAbility.java +++ b/core/src/mindustry/entities/abilities/EnergyFieldAbility.java @@ -14,7 +14,6 @@ import mindustry.game.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; -import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -53,23 +52,29 @@ public class EnergyFieldAbility extends Ability{ @Override public void addStats(Table t){ - t.add(Core.bundle.format("bullet.damage", damage)); + if(displayHeal){ + t.add(Core.bundle.get(getBundle() + ".healdescription")).wrap().width(descriptionWidth); + }else{ + t.add(Core.bundle.get(getBundle() + ".description")).wrap().width(descriptionWidth); + } t.row(); - t.add("[lightgray]" + Stat.reload.localized() + ": [white]" + Strings.autoFixed(60f / reload, 2) + " " + StatUnit.perSecond.localized()); - t.row(); - t.add("[lightgray]" + Stat.shootRange.localized() + ": [white]" + Strings.autoFixed(range / tilesize, 2) + " " + StatUnit.blocks.localized()); - t.row(); - t.add(Core.bundle.format("ability.energyfield.maxtargets", maxTargets)); + t.add(Core.bundle.format("bullet.range", Strings.autoFixed(range / tilesize, 2))); + t.row(); + t.add(abilityStat("firingrate", Strings.autoFixed(60f / reload, 2))); + t.row(); + t.add(abilityStat("maxtargets", maxTargets)); + t.row(); + t.add(Core.bundle.format("bullet.damage", damage)); + if(status != StatusEffects.none){ + t.row(); + t.add((status.hasEmoji() ? status.emoji() : "") + "[stat]" + status.localizedName); + } if(displayHeal){ t.row(); t.add(Core.bundle.format("bullet.healpercent", Strings.autoFixed(healPercent, 2))); t.row(); - t.add(Core.bundle.format("ability.energyfield.sametypehealmultiplier", Math.round(sameTypeHealMult * 100f))); - } - if(status != StatusEffects.none){ - t.row(); - t.add(status.emoji() + " " + status.localizedName); + t.add(abilityStat("sametypehealmultiplier", (sameTypeHealMult < 1f ? "[negstat]" : "") + Strings.autoFixed(sameTypeHealMult * 100f, 2))); } } diff --git a/core/src/mindustry/entities/abilities/ForceFieldAbility.java b/core/src/mindustry/entities/abilities/ForceFieldAbility.java index 81264ac05c..f391156adb 100644 --- a/core/src/mindustry/entities/abilities/ForceFieldAbility.java +++ b/core/src/mindustry/entities/abilities/ForceFieldAbility.java @@ -1,5 +1,6 @@ package mindustry.entities.abilities; +import arc.*; import arc.func.*; import arc.graphics.*; import arc.graphics.g2d.*; @@ -12,7 +13,6 @@ import mindustry.content.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.ui.*; -import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -73,14 +73,14 @@ public class ForceFieldAbility extends Ability{ @Override public void addStats(Table t){ - t.add("[lightgray]" + Stat.health.localized() + ": [white]" + Math.round(max)); + super.addStats(t); + t.add(Core.bundle.format("bullet.range", Strings.autoFixed(radius / tilesize, 2))); t.row(); - t.add("[lightgray]" + Stat.shootRange.localized() + ": [white]" + Strings.autoFixed(radius / tilesize, 2) + " " + StatUnit.blocks.localized()); + t.add(abilityStat("shield", Strings.autoFixed(max, 2))); t.row(); - t.add("[lightgray]" + Stat.repairSpeed.localized() + ": [white]" + Strings.autoFixed(regen * 60f, 2) + StatUnit.perSecond.localized()); - t.row(); - t.add("[lightgray]" + Stat.cooldownTime.localized() + ": [white]" + Strings.autoFixed(cooldown / 60f, 2) + " " + StatUnit.seconds.localized()); + t.add(abilityStat("repairspeed", Strings.autoFixed(regen * 60f, 2))); t.row(); + t.add(abilityStat("cooldown", Strings.autoFixed(cooldown / 60f, 2))); } @Override diff --git a/core/src/mindustry/entities/abilities/LiquidExplodeAbility.java b/core/src/mindustry/entities/abilities/LiquidExplodeAbility.java index 57b6100f66..cf6b16f6e8 100644 --- a/core/src/mindustry/entities/abilities/LiquidExplodeAbility.java +++ b/core/src/mindustry/entities/abilities/LiquidExplodeAbility.java @@ -1,6 +1,7 @@ package mindustry.entities.abilities; import arc.math.*; +import arc.scene.ui.layout.*; import arc.util.noise.*; import mindustry.content.*; import mindustry.entities.*; @@ -16,6 +17,12 @@ public class LiquidExplodeAbility extends Ability{ public float radAmountScale = 5f, radScale = 1f; public float noiseMag = 6.5f, noiseScl = 5f; + @Override + public void addStats(Table t){ + super.addStats(t); + t.add((liquid.hasEmoji() ? liquid.emoji() : "") + "[stat]" + liquid.localizedName); + } + @Override public void death(Unit unit){ //TODO what if noise is radial, so it looks like a splat? diff --git a/core/src/mindustry/entities/abilities/LiquidRegenAbility.java b/core/src/mindustry/entities/abilities/LiquidRegenAbility.java index 7f7d827f95..6f864035ce 100644 --- a/core/src/mindustry/entities/abilities/LiquidRegenAbility.java +++ b/core/src/mindustry/entities/abilities/LiquidRegenAbility.java @@ -1,6 +1,7 @@ package mindustry.entities.abilities; import arc.math.*; +import arc.scene.ui.layout.*; import arc.util.*; import mindustry.content.*; import mindustry.entities.*; @@ -17,6 +18,14 @@ public class LiquidRegenAbility extends Ability{ public float slurpEffectChance = 0.4f; public Effect slurpEffect = Fx.heal; + @Override + public void addStats(Table t){ + super.addStats(t); + t.add((liquid.hasEmoji() ? liquid.emoji() : "") + "[stat]" + liquid.localizedName); + t.row(); + t.add(abilityStat("slurpheal", Strings.autoFixed(regenPerSlurp, 2))); + } + @Override public void update(Unit unit){ //TODO timer? diff --git a/core/src/mindustry/entities/abilities/MoveLightningAbility.java b/core/src/mindustry/entities/abilities/MoveLightningAbility.java index ab70313df4..c55849690b 100644 --- a/core/src/mindustry/entities/abilities/MoveLightningAbility.java +++ b/core/src/mindustry/entities/abilities/MoveLightningAbility.java @@ -5,12 +5,15 @@ import arc.audio.*; import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; +import arc.scene.ui.layout.*; import arc.util.*; import mindustry.content.*; import mindustry.entities.*; import mindustry.entities.bullet.*; import mindustry.gen.*; +import static mindustry.Vars.*; + public class MoveLightningAbility extends Ability{ /** Lightning damage */ public float damage = 35f; @@ -63,7 +66,15 @@ public class MoveLightningAbility extends Ability{ this.maxSpeed = maxSpeed; this.color = color; } - + + @Override + public void addStats(Table t){ + super.addStats(t); + t.add(abilityStat("minspeed", Strings.autoFixed(minSpeed * 60f / tilesize, 2))); + t.row(); + t.add(Core.bundle.format("bullet.damage", damage)); + } + @Override public void update(Unit unit){ float scl = Mathf.clamp((unit.vel().len() - minSpeed) / (maxSpeed - minSpeed)); diff --git a/core/src/mindustry/entities/abilities/RegenAbility.java b/core/src/mindustry/entities/abilities/RegenAbility.java index 0a7bca80c9..ffcfe50e9d 100644 --- a/core/src/mindustry/entities/abilities/RegenAbility.java +++ b/core/src/mindustry/entities/abilities/RegenAbility.java @@ -1,10 +1,8 @@ package mindustry.entities.abilities; -import arc.Core; import arc.scene.ui.layout.*; import arc.util.*; import mindustry.gen.*; -import mindustry.world.meta.*; public class RegenAbility extends Ability{ /** Amount healed as percent per tick. */ @@ -14,13 +12,16 @@ public class RegenAbility extends Ability{ @Override public void addStats(Table t){ - if(amount > 0.01f){ - t.add("[lightgray]" + Stat.repairSpeed.localized() + ": [white]" + Strings.autoFixed(amount * 60f, 2) + StatUnit.perSecond.localized()); - t.row(); - } + super.addStats(t); - if(percentAmount > 0.01f){ - t.add(Core.bundle.format("bullet.healpercent", Strings.autoFixed(percentAmount * 60f, 2)) + StatUnit.perSecond.localized()); //stupid but works + boolean flat = amount >= 0.001f; + boolean percent = percentAmount >= 0.001f; + + if(flat || percent){ + t.add(abilityStat("regen", + (flat ? Strings.autoFixed(amount * 60f, 2) + (percent ? " [lightgray]+[stat] " : "") : "") + + (percent ? Strings.autoFixed(percentAmount * 60f, 2) + "%" : "") + )); } } diff --git a/core/src/mindustry/entities/abilities/RepairFieldAbility.java b/core/src/mindustry/entities/abilities/RepairFieldAbility.java index fb42cc7018..7c871978cc 100644 --- a/core/src/mindustry/entities/abilities/RepairFieldAbility.java +++ b/core/src/mindustry/entities/abilities/RepairFieldAbility.java @@ -1,13 +1,13 @@ package mindustry.entities.abilities; +import arc.*; import arc.scene.ui.layout.*; import arc.util.*; import mindustry.content.*; import mindustry.entities.*; import mindustry.gen.*; -import mindustry.world.meta.*; -import static mindustry.Vars.tilesize; +import static mindustry.Vars.*; public class RepairFieldAbility extends Ability{ public float amount = 1, reload = 100, range = 60; @@ -28,9 +28,10 @@ public class RepairFieldAbility extends Ability{ @Override public void addStats(Table t){ - t.add("[lightgray]" + Stat.repairSpeed.localized() + ": [white]" + Strings.autoFixed(amount * 60f / reload, 2) + StatUnit.perSecond.localized()); + super.addStats(t); + t.add(Core.bundle.format("bullet.range", Strings.autoFixed(range / tilesize, 2))); t.row(); - t.add("[lightgray]" + Stat.shootRange.localized() + ": [white]" + Strings.autoFixed(range / tilesize, 2) + " " + StatUnit.blocks.localized()); + t.add(abilityStat("repairspeed", Strings.autoFixed(amount * 60f / reload, 2))); } @Override diff --git a/core/src/mindustry/entities/abilities/ShieldArcAbility.java b/core/src/mindustry/entities/abilities/ShieldArcAbility.java index b63a88bf1e..a7d41cdaf7 100644 --- a/core/src/mindustry/entities/abilities/ShieldArcAbility.java +++ b/core/src/mindustry/entities/abilities/ShieldArcAbility.java @@ -13,7 +13,6 @@ import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; import mindustry.ui.*; -import mindustry.world.meta.*; public class ShieldArcAbility extends Ability{ private static Unit paramUnit; @@ -69,12 +68,12 @@ public class ShieldArcAbility extends Ability{ @Override public void addStats(Table t){ - t.add("[lightgray]" + Stat.health.localized() + ": [white]" + Math.round(max)); + super.addStats(t); + t.add(abilityStat("shield", Strings.autoFixed(max, 2))); t.row(); - t.add("[lightgray]" + Stat.repairSpeed.localized() + ": [white]" + Strings.autoFixed(regen * 60f, 2) + StatUnit.perSecond.localized()); - t.row(); - t.add("[lightgray]" + Stat.cooldownTime.localized() + ": [white]" + Strings.autoFixed(cooldown / 60f, 2) + " " + StatUnit.seconds.localized()); + t.add(abilityStat("repairspeed", Strings.autoFixed(regen * 60f, 2))); t.row(); + t.add(abilityStat("cooldown", Strings.autoFixed(cooldown / 60f, 2))); } @Override diff --git a/core/src/mindustry/entities/abilities/ShieldRegenFieldAbility.java b/core/src/mindustry/entities/abilities/ShieldRegenFieldAbility.java index 51d1f79175..c34ce359ce 100644 --- a/core/src/mindustry/entities/abilities/ShieldRegenFieldAbility.java +++ b/core/src/mindustry/entities/abilities/ShieldRegenFieldAbility.java @@ -1,14 +1,13 @@ package mindustry.entities.abilities; -import arc.Core; +import arc.*; import arc.scene.ui.layout.*; import arc.util.*; import mindustry.content.*; import mindustry.entities.*; import mindustry.gen.*; -import mindustry.world.meta.*; -import static mindustry.Vars.tilesize; +import static mindustry.Vars.*; public class ShieldRegenFieldAbility extends Ability{ public float amount = 1, max = 100f, reload = 100, range = 60; @@ -30,12 +29,12 @@ public class ShieldRegenFieldAbility extends Ability{ @Override public void addStats(Table t){ - t.add("[lightgray]" + Core.bundle.get("waves.shields") + ": [white]" + Math.round(max)); //extremely stupid usage + super.addStats(t); + t.add(Core.bundle.format("bullet.range", Strings.autoFixed(range / tilesize, 2))); t.row(); - t.add("[lightgray]" + Stat.shootRange.localized() + ": [white]" + Strings.autoFixed(range / tilesize, 2) + " " + StatUnit.blocks.localized()); - t.row(); - t.add("[lightgray]" + Stat.reload.localized() + ": [white]" + Strings.autoFixed(60f / reload, 2) + " " + StatUnit.perSecond.localized()); + t.add(abilityStat("firingrate", Strings.autoFixed(60f / reload, 2))); t.row(); + t.add(abilityStat("shield", Strings.autoFixed(max, 2))); } @Override diff --git a/core/src/mindustry/entities/abilities/SpawnDeathAbility.java b/core/src/mindustry/entities/abilities/SpawnDeathAbility.java index 8aac58776a..6bc5b0a49d 100644 --- a/core/src/mindustry/entities/abilities/SpawnDeathAbility.java +++ b/core/src/mindustry/entities/abilities/SpawnDeathAbility.java @@ -27,7 +27,8 @@ public class SpawnDeathAbility extends Ability{ @Override public void addStats(Table t){ - t.add((randAmount > 0 ? amount + "-" + (amount + randAmount) : amount) + " " + unit.emoji() + " " + unit.localizedName); + super.addStats(t); + t.add("[stat]" + (randAmount > 0 ? amount + "x-" + (amount + randAmount) : amount) + "x[] " + (unit.hasEmoji() ? unit.emoji() : "") + "[stat]" + unit.localizedName); } @Override diff --git a/core/src/mindustry/entities/abilities/StatusFieldAbility.java b/core/src/mindustry/entities/abilities/StatusFieldAbility.java index 7bc7bcb375..c0ca12d381 100644 --- a/core/src/mindustry/entities/abilities/StatusFieldAbility.java +++ b/core/src/mindustry/entities/abilities/StatusFieldAbility.java @@ -1,15 +1,15 @@ package mindustry.entities.abilities; +import arc.*; import arc.math.*; -import arc.scene.ui.layout.Table; +import arc.scene.ui.layout.*; import arc.util.*; import mindustry.content.*; import mindustry.entities.*; import mindustry.gen.*; import mindustry.type.*; -import mindustry.world.meta.*; -import static mindustry.Vars.tilesize; +import static mindustry.Vars.*; public class StatusFieldAbility extends Ability{ public StatusEffect effect; @@ -33,11 +33,12 @@ public class StatusFieldAbility extends Ability{ @Override public void addStats(Table t){ - t.add("[lightgray]" + Stat.reload.localized() + ": [white]" + Strings.autoFixed(60f / reload, 2) + " " + StatUnit.perSecond.localized()); + super.addStats(t); + t.add(Core.bundle.format("bullet.range", Strings.autoFixed(range / tilesize, 2))); t.row(); - t.add("[lightgray]" + Stat.shootRange.localized() + ": [white]" + Strings.autoFixed(range / tilesize, 2) + " " + StatUnit.blocks.localized()); + t.add(abilityStat("firingrate", Strings.autoFixed(60f / reload, 2))); t.row(); - t.add(effect.emoji() + " " + effect.localizedName); + t.add((effect.hasEmoji() ? effect.emoji() : "") + "[stat]" + effect.localizedName); } @Override diff --git a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java index d421ebf848..be69a45797 100644 --- a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java +++ b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java @@ -1,12 +1,17 @@ package mindustry.entities.abilities; +import arc.*; import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; +import arc.scene.ui.layout.*; import arc.util.*; import mindustry.entities.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.type.*; + +import static mindustry.Vars.*; public class SuppressionFieldAbility extends Ability{ protected static Rand rand = new Rand(); @@ -33,6 +38,19 @@ public class SuppressionFieldAbility extends Ability{ protected float timer; + @Override + public void init(UnitType type){ + if(!active) display = false; + } + + @Override + public void addStats(Table t){ + super.addStats(t); + t.add(Core.bundle.format("bullet.range", Strings.autoFixed(range / tilesize, 2))); + t.row(); + t.add(abilityStat("duration", Strings.autoFixed(reload / 60f, 2))); + } + @Override public void update(Unit unit){ if(!active) return; diff --git a/core/src/mindustry/entities/abilities/UnitSpawnAbility.java b/core/src/mindustry/entities/abilities/UnitSpawnAbility.java index f4e0f5ecb0..f7ab3667f4 100644 --- a/core/src/mindustry/entities/abilities/UnitSpawnAbility.java +++ b/core/src/mindustry/entities/abilities/UnitSpawnAbility.java @@ -12,7 +12,6 @@ import mindustry.game.EventType.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; -import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -36,9 +35,10 @@ public class UnitSpawnAbility extends Ability{ @Override public void addStats(Table t){ - t.add("[lightgray]" + Stat.buildTime.localized() + ": [white]" + Strings.autoFixed(spawnTime / 60f, 2) + " " + StatUnit.seconds.localized()); + super.addStats(t); + t.add(abilityStat("buildtime", Strings.autoFixed(spawnTime / 60f, 2))); t.row(); - t.add(unit.emoji() + " " + unit.localizedName); + t.add((unit.hasEmoji() ? unit.emoji() : "") + "[stat]" + unit.localizedName); } @Override diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 4ab4c929a4..85bd903395 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -174,6 +174,10 @@ public class BulletType extends Content implements Cloneable{ public float fragVelocityMin = 0.2f, fragVelocityMax = 1f; /** Random range of frag lifetime as a multiplier. */ public float fragLifeMin = 1f, fragLifeMax = 1f; + /** Random offset of frag bullets from the parent bullet. */ + public float fragOffsetMin = 1f, fragOffsetMax = 7f; + /** How many times this bullet can release frag bullets, if pierce = true. */ + public int pierceFragCap = -1; /** Bullet that is created at a fixed interval. */ public @Nullable BulletType intervalBullet; @@ -387,14 +391,14 @@ public class BulletType extends Content implements Cloneable{ if(entity instanceof Healthc h){ float damage = b.damage; + float shield = entity instanceof Shieldc s ? Math.max(s.shield(), 0f) : 0f; if(maxDamageFraction > 0){ - float cap = h.maxHealth() * maxDamageFraction; - if(entity instanceof Shieldc s){ - cap += Math.max(s.shield(), 0f); - } + float cap = h.maxHealth() * maxDamageFraction + shield; damage = Math.min(damage, cap); //cap health to effective health for handlePierce to handle it properly health = Math.min(health, cap); + }else{ + health += shield; } if(pierceArmor){ h.damagePierce(damage); @@ -507,12 +511,13 @@ public class BulletType extends Content implements Cloneable{ } public void createFrags(Bullet b, float x, float y){ - if(fragBullet != null && (fragOnAbsorb || !b.absorbed)){ + if(fragBullet != null && (fragOnAbsorb || !b.absorbed) && !(b.frags >= pierceFragCap && pierceFragCap > 0)){ for(int i = 0; i < fragBullets; i++){ - float len = Mathf.random(1f, 7f); + float len = Mathf.random(fragOffsetMin, fragOffsetMax); float a = b.rotation() + Mathf.range(fragRandomSpread / 2) + fragAngle + ((i - fragBullets/2) * fragSpread); fragBullet.create(b, x + Angles.trnsx(a, len), y + Angles.trnsy(a, len), a, Mathf.random(fragVelocityMin, fragVelocityMax), Mathf.random(fragLifeMin, fragLifeMax)); } + b.frags++; } } diff --git a/core/src/mindustry/entities/bullet/ContinuousFlameBulletType.java b/core/src/mindustry/entities/bullet/ContinuousFlameBulletType.java index 4d67083cec..30dd5011fb 100644 --- a/core/src/mindustry/entities/bullet/ContinuousFlameBulletType.java +++ b/core/src/mindustry/entities/bullet/ContinuousFlameBulletType.java @@ -49,6 +49,7 @@ public class ContinuousFlameBulletType extends ContinuousBulletType{ lifetime = 16f; hitColor = colors[1].cpy().a(1f); lightColor = hitColor; + lightOpacity = 0.7f; laserAbsorb = false; ammoMultiplier = 1f; pierceArmor = true; @@ -87,7 +88,7 @@ public class ContinuousFlameBulletType extends ContinuousBulletType{ } Tmp.v1.trns(b.rotation(), realLength * 1.1f); - Drawf.light(b.x, b.y, b.x + Tmp.v1.x, b.y + Tmp.v1.y, lightStroke, lightColor, 0.7f); + Drawf.light(b.x, b.y, b.x + Tmp.v1.x, b.y + Tmp.v1.y, lightStroke, lightColor, lightOpacity); Draw.reset(); } diff --git a/core/src/mindustry/entities/bullet/RailBulletType.java b/core/src/mindustry/entities/bullet/RailBulletType.java index 276a428e4e..dfa41520f4 100644 --- a/core/src/mindustry/entities/bullet/RailBulletType.java +++ b/core/src/mindustry/entities/bullet/RailBulletType.java @@ -43,8 +43,6 @@ public class RailBulletType extends BulletType{ if(b.damage > 0){ pierceEffect.at(x, y, b.rotation()); - - hitEffect.at(x, y); } //subtract health from each consecutive pierce diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index 64e9e155fa..0c5070febb 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -86,9 +86,9 @@ abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{ buildAlpha = Mathf.lerpDelta(buildAlpha, activelyBuilding() ? 1f : 0f, 0.15f); } - //validate regardless of whether building is enabled. + validatePlans(); + if(!updateBuilding || !canBuild()){ - validatePlans(); return; } @@ -99,19 +99,18 @@ abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{ if(Float.isNaN(buildCounter) || Float.isInfinite(buildCounter)) buildCounter = 0f; buildCounter = Math.min(buildCounter, 10f); + boolean instant = state.rules.instantBuild && state.rules.infiniteResources; + //random attempt to fix a freeze that only occurs on Android - int maxPerFrame = 10, count = 0; + int maxPerFrame = instant ? plans.size : 10, count = 0; - while(buildCounter >= 1 && count++ < maxPerFrame){ + var core = core(); + + if((core == null && !infinite)) return; + + while((buildCounter >= 1 || instant) && count++ < maxPerFrame && plans.size > 0){ buildCounter -= 1f; - validatePlans(); - - var core = core(); - - //nothing to build. - if(buildPlan() == null) return; - //find the next build plan if(plans.size > 1){ int total = 0; @@ -163,7 +162,7 @@ abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{ } //if there is no core to build with or no build entity, stop building! - if((core == null && !infinite) || !(tile.build instanceof ConstructBuild entity)){ + if(!(tile.build instanceof ConstructBuild entity)){ continue; } diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 7eb9288c3b..f7c114ab6d 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -1310,7 +1310,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, if(value instanceof UnitType) type = UnitType.class; if(builder != null && builder.isPlayer()){ - lastAccessed = builder.getPlayer().coloredName(); + updateLastAccess(builder.getPlayer()); } if(block.configurations.containsKey(type)){ @@ -1324,6 +1324,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, } } + public void updateLastAccess(Player player){ + lastAccessed = player.coloredName(); + } + /** Called when the block is tapped by the local player. */ public void tapped(){ @@ -1344,6 +1348,15 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return block.itemCapacity; } + /** Called when a block begins (not finishes!) deconstruction. The building is still present at this point. */ + public void onDeconstructed(@Nullable Unit builder){ + //deposit non-incinerable liquid on ground + if(liquids != null && liquids.currentAmount() > 0 && (!liquids.current().incinerable || block.deconstructDropAllLiquid)){ + float perCell = liquids.currentAmount() / (block.size * block.size) * 2f; + tile.getLinkedTiles(other -> Puddles.deposit(other, liquids.current(), perCell)); + } + } + /** Called when the block is destroyed. The tile is still intact at this stage. */ public void onDestroyed(){ float explosiveness = block.baseExplosiveness; diff --git a/core/src/mindustry/entities/comp/BulletComp.java b/core/src/mindustry/entities/comp/BulletComp.java index 7483d66496..d9c3aef000 100644 --- a/core/src/mindustry/entities/comp/BulletComp.java +++ b/core/src/mindustry/entities/comp/BulletComp.java @@ -45,6 +45,7 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw transient @Nullable Mover mover; transient boolean absorbed, hit; transient @Nullable Trail trail; + transient int frags; @Override public void getCollisions(Cons consumer){ diff --git a/core/src/mindustry/entities/comp/ChildComp.java b/core/src/mindustry/entities/comp/ChildComp.java index f34a9198c9..2ae553480f 100644 --- a/core/src/mindustry/entities/comp/ChildComp.java +++ b/core/src/mindustry/entities/comp/ChildComp.java @@ -4,6 +4,7 @@ import arc.math.*; import arc.util.*; import mindustry.annotations.Annotations.*; import mindustry.gen.*; +import mindustry.world.blocks.*; @Component abstract class ChildComp implements Posc, Rotc{ @@ -18,9 +19,14 @@ abstract class ChildComp implements Posc, Rotc{ if(parent != null){ offsetX = x - parent.getX(); offsetY = y - parent.getY(); - if(rotWithParent && parent instanceof Rotc r){ - offsetPos = -r.rotation(); - offsetRot = rotation - r.rotation(); + if(rotWithParent){ + if(parent instanceof Rotc r){ + offsetPos = -r.rotation(); + offsetRot = rotation - r.rotation(); + }else if(parent instanceof RotBlock rot){ + offsetPos = -rot.buildRotation(); + offsetRot = rotation - rot.buildRotation(); + } } } } @@ -28,10 +34,16 @@ abstract class ChildComp implements Posc, Rotc{ @Override public void update(){ if(parent != null){ - if(rotWithParent && parent instanceof Rotc r){ - x = parent.getX() + Angles.trnsx(r.rotation() + offsetPos, offsetX, offsetY); - y = parent.getY() + Angles.trnsy(r.rotation() + offsetPos, offsetX, offsetY); - rotation = r.rotation() + offsetRot; + if(rotWithParent){ + if(parent instanceof Rotc r){ + x = parent.getX() + Angles.trnsx(r.rotation() + offsetPos, offsetX, offsetY); + y = parent.getY() + Angles.trnsy(r.rotation() + offsetPos, offsetX, offsetY); + rotation = r.rotation() + offsetRot; + }else if(parent instanceof RotBlock rot){ + x = parent.getX() + Angles.trnsx(rot.buildRotation() + offsetPos, offsetX, offsetY); + y = parent.getY() + Angles.trnsy(rot.buildRotation() + offsetPos, offsetX, offsetY); + rotation = rot.buildRotation() + offsetRot; + } }else{ x = parent.getX() + offsetX; y = parent.getY() + offsetY; diff --git a/core/src/mindustry/entities/comp/EntityComp.java b/core/src/mindustry/entities/comp/EntityComp.java index aaacdc521b..fdba35a737 100644 --- a/core/src/mindustry/entities/comp/EntityComp.java +++ b/core/src/mindustry/entities/comp/EntityComp.java @@ -66,4 +66,9 @@ abstract class EntityComp{ void afterRead(){ } + + /** Called after *all* entities are read. */ + void afterAllRead(){ + + } } diff --git a/core/src/mindustry/entities/comp/PayloadComp.java b/core/src/mindustry/entities/comp/PayloadComp.java index d1f7518e65..9b9d6e6405 100644 --- a/core/src/mindustry/entities/comp/PayloadComp.java +++ b/core/src/mindustry/entities/comp/PayloadComp.java @@ -60,6 +60,11 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{ } } + @Override + public void destroy(){ + if(Vars.state.rules.unitPayloadsExplode) payloads.each(Payload::destroyed); + } + float payloadUsed(){ return payloads.sumf(p -> p.size() * p.size()); } diff --git a/core/src/mindustry/entities/comp/PlayerComp.java b/core/src/mindustry/entities/comp/PlayerComp.java index c995d3d9f0..fe787a8336 100644 --- a/core/src/mindustry/entities/comp/PlayerComp.java +++ b/core/src/mindustry/entities/comp/PlayerComp.java @@ -183,6 +183,9 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra if(!unit.isNull()){ clearUnit(); } + + lastReadUnit = Nulls.unit; + justSwitchTo = justSwitchFrom = null; } public void team(Team team){ diff --git a/core/src/mindustry/entities/comp/PuddleComp.java b/core/src/mindustry/entities/comp/PuddleComp.java index 090a881060..a46bf01c32 100644 --- a/core/src/mindustry/entities/comp/PuddleComp.java +++ b/core/src/mindustry/entities/comp/PuddleComp.java @@ -59,6 +59,7 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc, Syncc{ amount -= Time.delta * (1f - liquid.viscosity) / (5f + addSpeed); amount += accepting; + amount = Math.min(amount, maxLiquid); accepting = 0f; if(amount >= maxLiquid / 1.5f){ diff --git a/core/src/mindustry/entities/comp/StatusComp.java b/core/src/mindustry/entities/comp/StatusComp.java index 2df716253a..56b7559455 100644 --- a/core/src/mindustry/entities/comp/StatusComp.java +++ b/core/src/mindustry/entities/comp/StatusComp.java @@ -127,10 +127,10 @@ abstract class StatusComp implements Posc, Flyingc{ return entry; } - /** Uses a dynamic status effect to override speed. */ + /** Uses a dynamic status effect to override speed (in tiles/second). */ public void statusSpeed(float speed){ //type.speed should never be 0 - applyDynamicStatus().speedMultiplier = speed / type.speed; + applyDynamicStatus().speedMultiplier = speed / (type.speed * 60f / tilesize); } /** Uses a dynamic status effect to change damage. */ diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index d6483f8f25..8a4e85374d 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -92,7 +92,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I moveAt(Tmp.v2.trns(rotation, vec.len())); if(!vec.isZero()){ - rotation = Angles.moveToward(rotation, vec.angle(), type.rotateSpeed * Time.delta); + rotation = Angles.moveToward(rotation, vec.angle(), type.rotateSpeed * Time.delta * speedMultiplier); } } @@ -110,7 +110,6 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I return !type.flying && world.tiles.in(tileX, tileY) && type.pathCost.getCost(team.id, pathfinder.get(tileX, tileY)) == -1; } - /** @return approx. square size of the physical hitbox for physics */ public float physicSize(){ return hitSize * 0.7f; @@ -490,6 +489,11 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I } } + @Override + public void afterAllRead(){ + controller.afterRead(self()); + } + @Override public void add(){ team.data().updateCount(type, 1); @@ -730,7 +734,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I /** @return name of direct or indirect player controller. */ @Override public @Nullable String getControllerName(){ - if(isPlayer()) return getPlayer().name; + if(isPlayer()) return getPlayer().coloredName(); if(controller instanceof LogicAI ai && ai.controller != null) return ai.controller.lastAccessed; return null; } diff --git a/core/src/mindustry/entities/effect/SoundEffect.java b/core/src/mindustry/entities/effect/SoundEffect.java index 8ed0f74a20..c3d320d527 100644 --- a/core/src/mindustry/entities/effect/SoundEffect.java +++ b/core/src/mindustry/entities/effect/SoundEffect.java @@ -21,18 +21,32 @@ public class SoundEffect extends Effect{ public Effect effect; public SoundEffect(){ + startDelay = -1; } public SoundEffect(Sound sound, Effect effect){ + this(); this.sound = sound; this.effect = effect; } + @Override + public void init(){ + if(startDelay < 0){ + startDelay = effect.startDelay; + } + } + @Override public void create(float x, float y, float rotation, Color color, Object data){ if(!shouldCreate()) return; - sound.at(x, y, Mathf.random(minPitch, maxPitch), Mathf.random(minVolume, maxVolume)); + if(startDelay > 0){ + Time.run(startDelay, () -> sound.at(x, y, Mathf.random(minPitch, maxPitch), Mathf.random(minVolume, maxVolume))); + }else{ + sound.at(x, y, Mathf.random(minPitch, maxPitch), Mathf.random(minVolume, maxVolume)); + } + effect.create(x, y, rotation, color, data); } } diff --git a/core/src/mindustry/entities/part/DrawPart.java b/core/src/mindustry/entities/part/DrawPart.java index f3ebfc6ceb..a8642fe6d4 100644 --- a/core/src/mindustry/entities/part/DrawPart.java +++ b/core/src/mindustry/entities/part/DrawPart.java @@ -85,8 +85,10 @@ public abstract class DrawPart{ /** Weapon heat, 1 when just fired, 0, when it has cooled down (duration depends on weapon) */ heat = p -> p.heat, /** Lifetime fraction, 0 to 1. Only for missiles. */ - life = p -> p.life; - + life = p -> p.life, + /** Current unscaled value of Time.time. */ + time = p -> Time.time; + float get(PartParams p); static PartProgress constant(float value){ @@ -167,6 +169,14 @@ public abstract class DrawPart{ default PartProgress absin(float scl, float mag){ return p -> get(p) + Mathf.absin(scl, mag); } + + default PartProgress mod(float amount){ + return p -> Mathf.mod(get(p), amount); + } + + default PartProgress loop(float time){ + return p -> Mathf.mod(get(p)/time, 1); + } default PartProgress apply(PartProgress other, PartFunc func){ return p -> func.get(get(p), other.get(p)); diff --git a/core/src/mindustry/entities/units/AIController.java b/core/src/mindustry/entities/units/AIController.java index 6b688eb60a..009e56d6ad 100644 --- a/core/src/mindustry/entities/units/AIController.java +++ b/core/src/mindustry/entities/units/AIController.java @@ -55,6 +55,11 @@ public class AIController implements UnitController{ return false; } + @Override + public void afterRead(Unit unit){ + + } + @Override public boolean isLogicControllable(){ return true; @@ -222,7 +227,7 @@ public class AIController implements UnitController{ } 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); + return Units.closestTarget(unit.team, x, y, range, u -> u.checkTarget(air, ground), t -> ground && (unit.type.targetUnderBlocks || !t.block.underBullets)); } public boolean retarget(){ @@ -272,7 +277,7 @@ public class AIController implements UnitController{ vec.setLength(prefSpeed()); - unit.moveAt(vec); + unit.movePref(vec); } public void circle(Position target, float circleLength){ @@ -290,7 +295,7 @@ public class AIController implements UnitController{ vec.setLength(speed); - unit.moveAt(vec); + unit.movePref(vec); } public void moveTo(Position target, float circleLength){ diff --git a/core/src/mindustry/entities/units/UnitController.java b/core/src/mindustry/entities/units/UnitController.java index ff861b805d..b77a857a2f 100644 --- a/core/src/mindustry/entities/units/UnitController.java +++ b/core/src/mindustry/entities/units/UnitController.java @@ -27,6 +27,10 @@ public interface UnitController{ } + default void afterRead(Unit unit){ + + } + default boolean isBeingControlled(Unit player){ return false; } diff --git a/core/src/mindustry/entities/units/WeaponMount.java b/core/src/mindustry/entities/units/WeaponMount.java index 752b3fd071..5cc1567533 100644 --- a/core/src/mindustry/entities/units/WeaponMount.java +++ b/core/src/mindustry/entities/units/WeaponMount.java @@ -40,6 +40,8 @@ public class WeaponMount{ public int totalShots; /** counter for which barrel bullets have been fired from; used for alternating patterns */ public int barrelCounter; + /** Last aim length of weapon. Only used for point lasers. */ + public float lastLength; /** current bullet for continuous weapons */ public @Nullable Bullet bullet; /** sound loop for continuous weapons */ diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index e7118db61c..39333fdf96 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -39,6 +39,7 @@ public class EventType{ socketConfigChanged, update, unitCommandChange, + unitCommandPosition, unitCommandAttack, importMod, draw, diff --git a/core/src/mindustry/game/Gamemode.java b/core/src/mindustry/game/Gamemode.java index d48bc956fd..86e94966fa 100644 --- a/core/src/mindustry/game/Gamemode.java +++ b/core/src/mindustry/game/Gamemode.java @@ -35,6 +35,7 @@ public enum Gamemode{ }, map -> map.teams.size > 1), editor(true, rules -> { rules.infiniteResources = true; + rules.instantBuild = true; rules.editor = true; rules.waves = false; rules.waveTimer = false; diff --git a/core/src/mindustry/game/MapMarkers.java b/core/src/mindustry/game/MapMarkers.java new file mode 100644 index 0000000000..3afb6895ee --- /dev/null +++ b/core/src/mindustry/game/MapMarkers.java @@ -0,0 +1,72 @@ +package mindustry.game; + +import arc.struct.*; +import arc.util.*; +import mindustry.game.MapObjectives.*; +import mindustry.io.*; + +import java.io.*; +import java.util.*; + +public class MapMarkers implements Iterable{ + /** Maps marker unique ID to marker. */ + private IntMap map = new IntMap<>(); + /** Sequential list of markers. This allows for faster iteration than a map. */ + private Seq all = new Seq<>(false); + + public void add(int id, ObjectiveMarker marker){ + if(marker == null) return; + + var prev = map.put(id, marker); + if(prev != null){ + all.set(prev.arrayIndex, marker); + }else{ + all.add(marker); + marker.arrayIndex = all.size - 1; + } + } + + public void remove(int id){ + var prev = map.remove(id); + if(prev != null){ + if(all.size > prev.arrayIndex + 1){ //there needs to be something above the index to replace it with + all.remove(prev.arrayIndex); + //update its index + all.get(prev.arrayIndex).arrayIndex = prev.arrayIndex; + }else{ + //no sense updating the index of the replaced element when it was not replaced + all.remove(prev.arrayIndex); + } + } + } + + public @Nullable ObjectiveMarker get(int id){ + return map.get(id); + } + + public boolean has(int id){ + return get(id) != null; + } + + public int size(){ + return all.size; + } + + public void write(DataOutput stream) throws IOException{ + JsonIO.writeBytes(map, ObjectiveMarker.class, (DataOutputStream)stream); + } + + public void read(DataInput stream) throws IOException{ + all.clear(); + map = JsonIO.readBytes(IntMap.class, ObjectiveMarker.class, (DataInputStream)stream); + for(var entry : map.entries()){ + all.add(entry.value); + entry.value.arrayIndex = all.size - 1; + } + } + + @Override + public Iterator iterator(){ + return all.iterator(); + } +} diff --git a/core/src/mindustry/game/MapObjectives.java b/core/src/mindustry/game/MapObjectives.java index cef72e7971..d1ba8ffbc6 100644 --- a/core/src/mindustry/game/MapObjectives.java +++ b/core/src/mindustry/game/MapObjectives.java @@ -39,8 +39,6 @@ public class MapObjectives implements Iterable, Eachable all = new Seq<>(4); - /** @see #checkChanged() */ - protected transient boolean changed; static{ registerObjective( @@ -61,11 +59,15 @@ public class MapObjectives implements Iterable, Eachable, Eachable prov) { + Class type = prov.get().getClass(); + + markerNameToType.put(name, prov); + markerNameToType.put(Strings.camelize(name), prov); + JsonIO.classTag(Strings.camelize(name), type); + JsonIO.classTag(name, type); + } + /** Adds all given objectives to the executor as root objectives. */ public void add(MapObjective... objectives){ for(var objective : objectives) flatten(objective); @@ -111,36 +122,15 @@ public class MapObjectives implements Iterable, Eachable { - for(var marker : obj.markers){ - if(!marker.wasAdded){ - marker.wasAdded = true; - marker.added(); - } - } - //objectives cannot get completed on the client, but they do try to update for timers and such if(obj.update() && !net.client()){ - obj.completed = true; - obj.done(); - for(var marker : obj.markers){ - if(marker.wasAdded){ - marker.removed(); - marker.wasAdded = false; - } - } + Call.completeObjective(all.indexOf(obj)); } - - changed |= obj.changed; - obj.changed = false; }); } - /** @return True if map rules should be synced. Reserved for {@link Vars#logic}; do not invoke directly! */ - public boolean checkChanged(){ - boolean has = changed; - changed = false; - - return has; + public @Nullable MapObjective get(int index){ + return index < 0 || index >= all.size ? null : all.get(index); } /** @return Whether there are any qualified objectives at all. */ @@ -149,7 +139,6 @@ public class MapObjectives implements Iterable, Eachable 0) changed = true; all.clear(); } @@ -191,7 +180,7 @@ public class MapObjectives implements Iterable, Eachable, Eachable, Eachable, Eachable, Eachable