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/pr.yml b/.github/workflows/pr.yml index 4cc2f6d88f..5bb8637f56 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 clean cleanTest test --stacktrace - 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..d1194129d5 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,7 +53,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 cd ../Mindustry - name: Run unit tests 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/build.gradle b/android/build.gradle index d84755b718..f7f1ce377b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -119,8 +119,8 @@ dependencies{ implementation arcModule("backends:backend-android") implementation 'com.jakewharton.android.repackaged:dalvik-dx:9.0.0_r3' - natives "com.github.Anuken.Arc:natives-android:${getArcHash()}" - natives "com.github.Anuken.Arc:natives-freetype-android:${getArcHash()}" + natives "com.github.Anuken.Arc:natives-android:$arcHash" + natives "com.github.Anuken.Arc:natives-freetype-android:$arcHash" def version; def highestVersion; diff --git a/annotations/src/main/java/mindustry/annotations/Annotations.java b/annotations/src/main/java/mindustry/annotations/Annotations.java index 24b00c5f76..88811afca5 100644 --- a/annotations/src/main/java/mindustry/annotations/Annotations.java +++ b/annotations/src/main/java/mindustry/annotations/Annotations.java @@ -8,14 +8,12 @@ public class Annotations{ /** Indicates that a method overrides other methods. */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.SOURCE) - public @interface Replace{ - } + public @interface Replace{} /** Indicates that a method should be final in all implementing classes. */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.SOURCE) - public @interface Final{ - } + public @interface Final{} /** Indicates that a field will be interpolated when synced. */ @Target({ElementType.FIELD}) @@ -30,23 +28,18 @@ public class Annotations{ /** Indicates that a field will not be read from the server when syncing the local player state. */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.SOURCE) - public @interface SyncLocal{ - - } + public @interface SyncLocal{} /** Indicates that a field should not be synced to clients (but may still be non-transient) */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.SOURCE) - public @interface NoSync{ - - } + public @interface NoSync{} /** Indicates that a component field is imported from other components. This means it doesn't actually exist. */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.SOURCE) - public @interface Import{ - } + public @interface Import{} /** Indicates that a component field is read-only. */ @Target({ElementType.FIELD, ElementType.METHOD}) @@ -113,8 +106,7 @@ public class Annotations{ /** Indicates an internal interface for entity components. */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) - public @interface EntityInterface{ - } + public @interface EntityInterface{} //endregion //region misc. utility @@ -153,15 +145,12 @@ public class Annotations{ /** Indicates that a method should always call its super version. */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) - public @interface CallSuper{ - - } + public @interface CallSuper{} /** Annotation that allows overriding CallSuper annotation. To be used on method that overrides method with CallSuper annotation from parent class. */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) - public @interface OverrideCallSuper{ - } + public @interface OverrideCallSuper{} //endregion //region struct @@ -169,9 +158,7 @@ public class Annotations{ /** Marks a class as a special value type struct. Class name must end in 'Struct'. */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) - public @interface Struct{ - - } + public @interface Struct{} /** Marks a field of a struct. Optional. */ @Target(ElementType.FIELD) @@ -259,8 +246,7 @@ public class Annotations{ @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) - public @interface TypeIOHandler{ - } + public @interface TypeIOHandler{ } //endregion } diff --git a/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java b/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java index a21717e227..4d9ce94869 100644 --- a/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java +++ b/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java @@ -227,7 +227,7 @@ public class EntityIO{ if(BaseProcessor.isPrimitive(type)){ s(type.equals("boolean") ? "bool" : type.charAt(0) + "", field); - }else if(instanceOf(type, "mindustry.ctype.Content")){ + }else if(instanceOf(type, "mindustry.ctype.Content") && !type.equals("mindustry.ai.UnitStance") && !type.equals("mindustry.ai.UnitCommand")){ if(write){ s("s", field + ".id"); }else{ diff --git a/build.gradle b/build.gradle index 84cfbefca7..d051101a24 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,14 @@ buildscript{ ext{ - getArcHash = { - return new Properties().with{ p -> p.load(file('gradle.properties').newReader()); return p }["archash"] - } + arcHash = property("archash") - arcHash = getArcHash() + localArc = !project.hasProperty("release") && new File(rootDir.parent, 'Arc').exists() && !project.hasProperty("noLocalArc") + + arcModule = { String name -> + //skip to last submodule + name = name.substring(name.lastIndexOf(':') + 1) + return "com.github.Anuken${localArc ? "" : ".Arc"}:$name:$arcHash" + } } repositories{ @@ -16,8 +20,8 @@ buildscript{ } dependencies{ - classpath "com.github.Anuken.Arc:packer:$arcHash" - classpath "com.github.Anuken.Arc:arc-core:$arcHash" + classpath arcModule(":extensions:packer") + classpath arcModule(":arc-core") } } @@ -48,20 +52,6 @@ allprojects{ return new File(projectDir.parent, '../Mindustry-Debug').exists() && !project.hasProperty("release") && project.hasProperty("args") } - localArc = { - return !project.hasProperty("release") && !project.hasProperty("noLocalArc") && new File(projectDir.parent, '../Arc').exists() - } - - arcModule = { String name -> - if(localArc()){ - return project(":Arc:$name") - }else{ - //skip to last submodule - if(name.contains(':')) name = name.split(':').last() - return "com.github.Anuken.Arc:$name:${getArcHash()}" - } - } - generateDeployName = { String platform -> if(platform == "windows"){ platform += "64" @@ -116,12 +106,12 @@ allprojects{ generateLocales = { def output = 'en\n' def bundles = new File(project(':core').projectDir, 'assets/bundles/') - bundles.listFiles().each{ other -> - if(other.name == "bundle.properties") return - output += other.name.substring("bundle".length() + 1, other.name.lastIndexOf('.')) + "\n" + bundles.list().sort().each{ name -> + if(name == "bundle.properties") return + output += name.substring("bundle".length() + 1, name.lastIndexOf('.')) + "\n" } new File(project(':core').projectDir, 'assets/locales').text = output - new File(project(':core').projectDir, 'assets/basepartnames').text = new File(project(':core').projectDir, 'assets/baseparts/').list().join("\n") + new File(project(':core').projectDir, 'assets/basepartnames').text = new File(project(':core').projectDir, 'assets/baseparts/').list().sort().join("\n") } writeVersion = { @@ -195,7 +185,7 @@ allprojects{ tasks.withType(JavaCompile){ targetCompatibility = 8 - sourceCompatibility = JavaVersion.VERSION_16 + sourceCompatibility = JavaVersion.VERSION_17 options.encoding = "UTF-8" options.compilerArgs += ["-Xlint:deprecation"] dependsOn clearCache @@ -331,12 +321,12 @@ project(":core"){ api arcModule("extensions:fx") api arcModule("extensions:arcnet") api "com.github.Anuken:rhino:$rhinoVersion" - if(localArc() && debugged()) api arcModule("extensions:recorder") - if(localArc()) api arcModule(":extensions:packer") + if(localArc && debugged()) api arcModule("extensions:recorder") + if(localArc) api arcModule(":extensions:packer") annotationProcessor 'com.github.Anuken:jabel:0.9.0' compileOnly project(":annotations") - kapt project(":annotations") + if(!project.hasProperty("noKapt")) kapt project(":annotations") } afterEvaluate{ @@ -391,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" } @@ -423,7 +414,7 @@ project(":annotations"){ dependencies{ implementation 'com.squareup:javapoet:1.12.1' - implementation "com.github.Anuken.Arc:arc-core:$arcHash" + implementation arcModule("arc-core") } } diff --git a/core/assets-raw/sprites/blocks/logic/world-switch-on.png b/core/assets-raw/sprites/blocks/logic/world-switch-on.png new file mode 100644 index 0000000000..54f03c820c Binary files /dev/null and b/core/assets-raw/sprites/blocks/logic/world-switch-on.png differ diff --git a/core/assets-raw/sprites/blocks/logic/world-switch.png b/core/assets-raw/sprites/blocks/logic/world-switch.png new file mode 100644 index 0000000000..b7c65601a9 Binary files /dev/null and b/core/assets-raw/sprites/blocks/logic/world-switch.png differ diff --git a/core/assets-raw/sprites/ui/cat.png b/core/assets-raw/sprites/ui/cat.png new file mode 100755 index 0000000000..cdc94db9f9 Binary files /dev/null and b/core/assets-raw/sprites/ui/cat.png differ diff --git a/core/assets-raw/sprites/ui/ranai.png b/core/assets-raw/sprites/ui/ranai.png new file mode 100644 index 0000000000..e6fc9b930c Binary files /dev/null and b/core/assets-raw/sprites/ui/ranai.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 0eda6f78f2..f9cbaa5622 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -347,12 +347,23 @@ open = Open customize = Customize Rules cancel = Cancel command = Command +command.queue = Queue command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Open Link copylink = Copy Link back = Back @@ -433,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 @@ -489,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 @@ -500,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 @@ -511,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. @@ -599,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 @@ -650,9 +683,11 @@ 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.background = Background marker.outline = Outline @@ -681,7 +716,6 @@ resources.max = Max bannedblocks = Banned Blocks objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -742,7 +776,7 @@ 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.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}[] @@ -1014,6 +1048,7 @@ bullet.splashdamage = [stat]{0}[lightgray] area dmg ~ [stat]{1}[lightgray] tiles bullet.incendiary = [stat]incendiary bullet.homing = [stat]homing bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0}[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: @@ -1069,6 +1104,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animated Surfaces setting.animatedshields.name = Animated Shields @@ -1122,7 +1158,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 @@ -1142,6 +1178,7 @@ keybind.title = Rebind Keys keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = General category.view.name = View +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1159,6 +1196,26 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Queue Unit Command +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders + +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram + +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1223,8 +1280,11 @@ mode.attack.name = Attack mode.attack.description = Destroy the enemy's base. \n[gray]Requires a red core in the map to play. mode.custom = Custom Rules +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Infinite Resources rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors @@ -1748,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 @@ -1801,14 +1860,14 @@ hint.desktopPause = Press [accent][[Space][] to pause and unpause the game. hint.breaking = [accent]Right-click[] and drag to break blocks. hint.breaking.mobile = Activate the \uE817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. hint.blockInfo = View information of a block by selecting it in the [accent]build menu[], then selecting the [accent][[?][] button at the right. -hint.derelict = [accent]Derelict[] structures are broken remnants of old bases that no longer function.\n\nThese structures can be [accent]deconstructed[] for resources. +hint.derelict = [accent]Derelict[] structures are broken remnants of old bases that no longer function.\n\nThese structures can be [accent]deconstructed[] for resources, or repaired. hint.research = Use the \uE875 [accent]Research[] button to research new technology. hint.research.mobile = Use the \uE875 [accent]Research[] button in the \uE88C [accent]Menu[] to research new technology. hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to manually control friendly units or turrets. hint.unitControl.mobile = [accent][[Double-tap][] to manually control friendly units or turrets. hint.unitSelectControl = To control units, enter [accent]command mode[] by holding [accent]L-shift.[]\nWhile in command mode, click and drag to select units. [accent]Right-click[] a location or target to command units there. hint.unitSelectControl.mobile = To control units, enter [accent]command mode[] by pressing the [accent]command[] button in the bottom left.\nWhile in command mode, long-press and drag to select units. Tap a location or target to command units there. -hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \uE827 [accent]Map[] in the bottom right. +hint.launch = Once enough resources are collected, you can [accent]Launch[] to the next sector by opening the \uE827 [accent]Map[] in the bottom right, and panning over to the new location. hint.launch.mobile = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \uE827 [accent]Map[] in the \uE88C [accent]Menu[]. hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. hint.rebuildSelect = Hold [accent][[B][] and drag to select destroyed block plans.\nThis will rebuild them automatically. @@ -1869,6 +1928,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. @@ -2074,7 +2134,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. @@ -2112,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 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. @@ -2233,6 +2291,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Read a number from a linked memory cell. lst.write = Write a number to a linked memory cell. lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Add an operation to the drawing buffer.\nDoes not display anything until [accent]Draw Flush[] is used. lst.drawflush = Flush queued [accent]Draw[] operations to a display. lst.printflush = Flush queued [accent]Print[] operations to a message block. @@ -2268,6 +2327,52 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nLimited to 20 times a second per variable. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.\n[accent]null []values are ignored. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. + +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees + +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles + +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup + +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) + +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction + +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server + +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. @@ -2311,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.\nOnly ASCII characters are allowed.\nClears the print buffer. lenum.always = Always true. lenum.idiv = Integer division. @@ -2419,3 +2525,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 position, 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 e783aecf6d..a6c4c953a2 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -336,12 +336,23 @@ open = Адкрыць customize = наладзіць правілы cancel = адмена command = Камандаваць +command.queue = [lightgray][Queuing] command.mine = Дабываць command.repair = Рамантаваць command.rebuild = Перабудоўваць command.assist = Следаваць За Гульцом command.move = Рухацца command.boost = Узляцець +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = адкрыць спасылку copylink = скапіяваць спасылку back = Назад @@ -422,6 +433,7 @@ editor.waves = Хвалі: editor.rules = Правілы: editor.generation = Генерацыя: editor.objectives = Мэты +editor.locales = Locale Bundles editor.ingame = Рэдагаваць ў гульні editor.playtest = Тэставаць editor.publish.workshop = Апублікаваць у майстэрні @@ -477,6 +489,7 @@ editor.default = [lightgray]<Па змаўчанні> details = Падрабязнасці... edit = Рэдагаваць... variables = Пераменныя +logic.globals = Built-in Variables editor.name = Назва: editor.spawn = Стварыць баявую адзінку editor.removeunit = Выдаліць баявую адзінку @@ -488,6 +501,7 @@ editor.errorlegacy = Гэтая карта занадта старая і вык editor.errornot = Гэта не файл карты. editor.errorheader = Гэты файл карты ня дзейнічае або пашкоджаны. editor.errorname = Карта не мае імя. Можа быць, Вы спрабуеце загрузіць захаванне? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Абнавіць editor.randomize = Выпадкова editor.moveup = Рухацца Уверх @@ -499,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 = Ваша карта не можа быць запісана па-над убудаванай карты! Калі ласка, увядзіце іншую назву ў меню «Інфармацыя аб карце» @@ -583,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: @[]\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 = Вышыня: @@ -633,9 +665,11 @@ 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.background = Задні Фон marker.outline = Контур objective.research = [accent]Даследаваць:\n[]{0}[lightgray]{1} @@ -660,7 +694,6 @@ resources.max = Максімум Рэсурсаў bannedblocks = Забароненыя блокі objectives = Мэты bannedunits = Забароненыя Адзінкі -rules.hidebannedblocks = Схаваць Забароненыя Блокі bannedunits.whitelist = Забароненыя Адзінкі Ў Белым Спісе bannedblocks.whitelist = Забароненыя Блокі Ў Белым Спісе addall = Дадаць всё @@ -719,7 +752,7 @@ 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.changeicon = Змяніць Іконку sector.noswitch.title = Немагчыма Пераключыцца на Сектар sector.noswitch = Вы не можаце пераключацца на сектары калі гэты сектар атакуецца.\n\nСектар: [accent]{0}[] у [accent]{1}[] @@ -987,6 +1020,7 @@ bullet.splashdamage = [stat] {0} [lightgray]страты ў радыусе ~ [st bullet.incendiary = [stat] запальны bullet.homing = [stat] саманаводных bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1042,6 +1076,7 @@ setting.backgroundpause.name = Паўза Калі Ў Фоне setting.buildautopause.name = Аўтаматычная прыпыненне будаўніцтва setting.doubletapmine.name = Двайныая Пстрычка каб дабываць setting.commandmodehold.name = Утрымаць Для Рэжыму Загадаў +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Адключыць Мадыфікацыі Пры Памылковым Запуску setting.animatedwater.name = Аніміраваныя вада setting.animatedshields.name = Аніміраваныя шчыты @@ -1095,7 +1130,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 = Непразрыстасць лазераў энергазабеспячэння @@ -1115,6 +1150,7 @@ keybind.title = Кіраванне keybinds.mobile = [scarlet] Большасць камбінацый клавіш тут не працуюць на мабільных прыладах. Падтрымліваецца толькі базавы рух. category.general.name = Асноўнае category.view.name = Прагляд +category.command.name = Unit Command category.multiplayer.name = Сеткавая гульня category.blocks.name = Выбар Блока placement.blockselectkeys = \n[lightgray]Клавіша: [{0}, @@ -1132,6 +1168,23 @@ 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.rebuild_select.name = Перабудаваць Рэгіён keybind.schematic_select.name = Абраць Вобласць keybind.schematic_menu.name = Меню Схем @@ -1195,9 +1248,12 @@ mode.pvp.description = Змагайцеся супраць іншых гульц mode.attack.name = Атака mode.attack.description = Знішчыце варожую базу. \n[gray]Для гульні патрабуецца чырвонае ядро ​​на карце. mode.custom = Карыстальніцкія правілы +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Схаваць Забароненыя Блокі rules.infiniteresources = Бясконцыя рэсурсы (Гулец) rules.onlydepositcore = Дазволіць Толькі Дэплананне Ядра +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Выбухі рэактараў rules.coreincinerates = Ядро Спальвае Рэсурсы rules.disableworldprocessors = Адключыць Працэсары Свету @@ -1715,7 +1771,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 = Рэфабрыкатар Суднаў @@ -1833,6 +1888,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. @@ -2032,7 +2088,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. @@ -2068,7 +2123,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. @@ -2185,6 +2239,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2220,6 +2275,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2258,6 +2352,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. @@ -2351,3 +2446,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 3a914ff3e9..2eefb3e206 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -341,12 +341,23 @@ open = Отвори customize = Персонализирай правилата cancel = Отказ command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Отвори Линк copylink = Копирай Линк back = Назад @@ -427,6 +438,7 @@ editor.waves = Вълни: editor.rules = Правила: editor.generation = Генериране: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = Редактирай в игра editor.playtest = Playtest editor.publish.workshop = Публикувай в Работилницата @@ -483,6 +495,7 @@ editor.default = [lightgray]<Стандартно> details = Детайли... edit = Редактирай... variables = Vars +logic.globals = Built-in Variables editor.name = Име: editor.spawn = Създай Единица editor.removeunit = Премахни Единица @@ -494,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 @@ -505,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 = Съществува стандартна карта с такова име! Изберете различно име от 'Информация за картата' от менюто. @@ -589,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: @[]\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 = Височина: @@ -639,9 +671,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -667,7 +701,6 @@ resources.max = Max bannedblocks = Забранени блокове objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Добави Всички @@ -726,8 +759,7 @@ 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.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}[] @@ -999,6 +1031,7 @@ bullet.splashdamage = [stat]{0}[lightgray] щети на площ ~[stat] {1}[li bullet.incendiary = [stat]Подпалване bullet.homing = [stat]Самонасочване bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1054,6 +1087,7 @@ setting.backgroundpause.name = Пауза при загуба на фокус setting.buildautopause.name = Автоматична Пауза на Изграждането setting.doubletapmine.name = Двоен Клик за Добив на Ресурс setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Забрани Модовете При Стартиране След Срив setting.animatedwater.name = Анимирани Повърхности setting.animatedshields.name = Анимирани Щитове @@ -1107,7 +1141,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 = Плътност на Енергийните Лазери @@ -1127,6 +1161,7 @@ keybind.title = Промени Клавишите keybinds.mobile = [scarlet]Повечето клавиши тук не са използваеми за мобилната версия. Само основните движения се поддържат. category.general.name = Основни настройки category.view.name = Изглед +category.command.name = Unit Command category.multiplayer.name = Мрежова игра category.blocks.name = Избор на блок placement.blockselectkeys = \n[lightgray]Клавиш: [{0}, @@ -1144,6 +1179,23 @@ keybind.mouse_move.name = Следвай Мишката keybind.pan.name = Панорамен Изглед keybind.boost.name = Ускорение keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Избери Регион keybind.schematic_menu.name = Меню със Схеми @@ -1207,9 +1259,12 @@ mode.pvp.description = Играйте срещу други играчи в ло mode.attack.name = Нападение mode.attack.description = Унищожете вражеската база. \n[gray]Картата трябва да съдържа червено ядро. mode.custom = Персонализирани Правила +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Безкрайни Ресурси rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Експлозиращи Реактори rules.coreincinerates = Унищожаване на Ресурси при Преливане rules.disableworldprocessors = Disable World Processors @@ -1727,7 +1782,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 @@ -1846,6 +1900,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. @@ -2045,7 +2100,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. @@ -2081,7 +2135,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2200,6 +2253,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" lst.draw = Добавя операция в буфера за изображение.\nНе показва нищо докато не използвате [accent]Draw Flush[]. lst.drawflush = Изпълнява операции, поискани с команда [accent]Draw[] върху посочен дисплей. lst.printflush = Извежда текст натрупан с [accent]Print[] върху посочен блок за съобщение. @@ -2235,6 +2289,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Действия за строене на единици не са позволени тук. @@ -2277,6 +2370,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 = Деление с цели числа. @@ -2382,3 +2476,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 d85d35c09d..ec4c6affcc 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -341,12 +341,23 @@ open = Obre customize = Personalitza les regles cancel = Cancel·la command = Ordre +command.queue = [lightgray][Queuing] command.mine = Extreu recursos command.repair = Repara command.rebuild = Reconstrueix command.assist = Assisteix al jugador command.move = Mou command.boost = Sobrevola +command.enterPayload = Enter Payload Block +command.loadUnits = Carrega unitats +command.loadBlocks = Carrega blocs +command.unloadPayload = Descarrega +stance.stop = Cancel·la les ordres +stance.shoot = Comportament: Dispara +stance.holdfire = Comportament: Mantén el foc +stance.pursuetarget = Comportament: Persegueix l’objectiu +stance.patrol = Comportament: Patrulla el camí +stance.ram = Comportament: Senzill\n[lightgray]Mou-te en línia recta, sense encaminador openlink = Obre l’enllaç copylink = Copia l’enllaç back = Enrere @@ -427,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 @@ -483,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 @@ -494,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 @@ -505,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». @@ -592,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: @[]\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: @@ -642,9 +674,11 @@ 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 = Point marker.shape.name = Forma marker.text.name = Text +marker.line.name = Línia +marker.quad.name = Quad marker.background = Fons marker.outline = Contorn @@ -671,7 +705,6 @@ resources.max = Màx. bannedblocks = Blocs no permesos objectives = Objectius bannedunits = Unitats no permeses -rules.hidebannedblocks = Amaga els blocs no permesos bannedunits.whitelist = Unitats no permeses com a llista blanca bannedblocks.whitelist = Blocs no permesos com a llista blanca addall = Afegeix-ho tot @@ -730,8 +763,7 @@ 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 = Sector [accent]{0}[white]Captured! 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}[] @@ -960,9 +992,9 @@ ability.movelightning = Moviment llampec ability.shieldarc = Escut de descàrregues ability.suppressionfield = Regen Suppression Field ability.energyfield = Camp de força -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +ability.energyfield.sametypehealmultiplier = [lightgray]Mateix tipus de guarició: [white]{0} % +ability.energyfield.maxtargets = [lightgray]Objectius màx.: [white]{0} +ability.regen = Regeneració bar.onlycoredeposit = Només es permet depositar al nucli. bar.drilltierreq = Cal una perforadora millor. @@ -1002,6 +1034,7 @@ bullet.splashdamage = [stat]{0}[lightgray] de dany a l’àrea ~[stat] {1}[light bullet.incendiary = [stat]incendiari bullet.homing = [stat]munició guiada bullet.armorpierce = [stat]perforador d’armadures +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]Supressió de reparacions cada {0} s[lightgray] ~ [stat]{1}[lightgray] caselles bullet.interval = [stat]Interval de bales de {0}/s[lightgray]: bullet.frags = [stat]{0}[lightgray]× de bales de fragmentació: @@ -1057,6 +1090,7 @@ setting.backgroundpause.name = Pausa automàtica quan s’estigui en segon pla setting.buildautopause.name = Pausa automàtica quan es construeixi setting.doubletapmine.name = Dos tocs/clics per a extreure recursos setting.commandmodehold.name = Mantén per al mode de comandament +setting.distinctcontrolgroups.name = Limita a un grup de control per unitat setting.modcrashdisable.name = Desactiva els mods quan no es pugui iniciar el joc setting.animatedwater.name = Animacions del terreny setting.animatedshields.name = Animacions dels escuts @@ -1103,14 +1137,14 @@ setting.position.name = Mostra la posició del jugador setting.mouseposition.name = Mostra la posició del ratolí setting.musicvol.name = Volum de la música setting.atmosphere.name = Mostra l’atmosfera del planeta -setting.drawlight.name = Draw Darkness/Lighting +setting.drawlight.name = Dibuixa la foscor/llum setting.ambientvol.name = Volum del so ambiental setting.mutemusic.name = Silencia la música setting.sfxvol.name = Volums dels efectes de so setting.mutesound.name = Silencia el so setting.crashreport.name = Envia informes d’error anònims setting.savecreate.name = Desa automàticament la partida -setting.publichost.name = Visibilitat de la partida pública +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Límit de jugadors setting.chatopacity.name = Opacitat del xat setting.lasersopacity.name = Opacitat dels làsers d’energia @@ -1130,6 +1164,7 @@ keybind.title = Personalització dels controls keybinds.mobile = [scarlet]La majoria de dreceres no estan disponibles en les versions per a pantalles tàctils. Només està inclòs el moviment bàsic. category.general.name = General category.view.name = Control de la vista i altres +category.command.name = Ordre d’unitat category.multiplayer.name = Multijugador category.blocks.name = Selecció d’estructures per construir placement.blockselectkeys = \n[lightgray]Tecles: [{0}, @@ -1147,6 +1182,23 @@ keybind.mouse_move.name = Segueix el ratolí keybind.pan.name = Desplaça la vista keybind.boost.name = Sobrevola keybind.command_mode.name = Mode de comandament +keybind.command_queue.name = Cua d’ordres d’unitat +keybind.create_control_group.name = Crea un grup de control +keybind.cancel_orders.name = Cancel·la les ordres +keybind.unit_stance_shoot.name = Comportament: Dispara +keybind.unit_stance_hold_fire.name = Comportament: Mantén el foc +keybind.unit_stance_pursue_target.name = Comportament: Persegueix l’objectiu +keybind.unit_stance_patrol.name = Comportament: Patrulla +keybind.unit_stance_ram.name = Comportament: Senzill +keybind.unit_command_move = 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.rebuild_select.name = Reconstrueix la regió keybind.schematic_select.name = Selecciona una regió keybind.schematic_menu.name = Menú de plànols @@ -1210,9 +1262,12 @@ mode.pvp.description = Lluiteu contra altres jugadors localment.\n[gray]Cal que mode.attack.name = Atac mode.attack.description = Destruïu la base enemiga. \n[gray]Cal que al mapa hi hagi un nucli vermell. mode.custom = Regles personalitzades +rules.invaliddata = Dades del porta-retalls no vàlides. +rules.hidebannedblocks = Amaga els blocs no permesos rules.infiniteresources = Recursos infinits rules.onlydepositcore = Al nucli només es poden dipositar recursos +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Explosions als reactors rules.coreincinerates = El nucli incinera els excedents rules.disableworldprocessors = Desactiva els processadors integrats @@ -1736,7 +1791,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 @@ -1855,6 +1909,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]Set up 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ó. @@ -2055,7 +2110,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. @@ -2091,7 +2145,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. @@ -2210,6 +2263,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2243,8 +2297,47 @@ lst.cutscene = Manipula la càmera del jugador. lst.setflag = Estableix un senyal global que es podrà llegir en tots els processadors. lst.getflag = Obtén un senyal global. lst.setprop = Estableix una propietat d’una unitat o estructura. -lst.effect = Create a particle effect. -lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +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. @@ -2287,6 +2380,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. @@ -2395,3 +2489,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 = 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_cs.properties b/core/assets/bundles/bundle_cs.properties index 282cf4958c..c03d8d735c 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -341,12 +341,23 @@ 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.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Otevřít odkaz copylink = Zkopírovat odkaz back = Zpět @@ -427,6 +438,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 @@ -483,6 +495,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 @@ -494,6 +507,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 @@ -505,6 +519,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ě". @@ -590,6 +605,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: @[]\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: @@ -640,9 +672,11 @@ 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.background = Pozadí marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -668,7 +702,6 @@ resources.max = Max bannedblocks = Zakázané bloky objectives = Úkoly bannedunits = Zakázané jednotky -rules.hidebannedblocks = Schovat Zakázané Kostky bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Přidat vše @@ -727,8 +760,7 @@ 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.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}[] @@ -1000,6 +1032,7 @@ bullet.splashdamage = [stat]{0}[lightgray] plošného poškození ~[stat] {1}[li bullet.incendiary = [stat]zápalný bullet.homing = [stat]samonaváděcí bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] kostek bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag střel: @@ -1055,6 +1088,7 @@ setting.backgroundpause.name = Pozastavit v pozadí setting.buildautopause.name = Automaticky pozastavit stavění setting.doubletapmine.name = Dvojklik pro Těžbu setting.commandmodehold.name = Držet pro Příkazový Režim +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Vypnout Modifikace Při Pádovém Spuštění setting.animatedwater.name = Animované povrchy setting.animatedshields.name = Animované štíty @@ -1108,7 +1142,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 @@ -1128,6 +1162,7 @@ keybind.title = Změnit klávesy keybinds.mobile = [scarlet]Většina kláves nefunguje v mobilní verzi hry. Je podporován jen základní pohyb.[] category.general.name = Všeobecné category.view.name = Pohled +category.command.name = Unit Command category.multiplayer.name = Hra více hráčů category.blocks.name = Výběr bloků placement.blockselectkeys = \n[lightgray]Klávesa:[] [{0}, @@ -1145,6 +1180,23 @@ keybind.mouse_move.name = Následovat myš keybind.pan.name = Následovat kameru keybind.boost.name = Posílení keybind.command_mode.name = Příkazový Režim +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Přestavět Region keybind.schematic_select.name = Vybrat oblast keybind.schematic_menu.name = Nabídka šablon @@ -1208,9 +1260,12 @@ mode.pvp.description = Bojuj proti ostatním hráčům v lokální síti.\n[gray mode.attack.name = Útok mode.attack.description = Znič nepřátelskou základnu.\n[gray]Vyžaduje přítomnost červeného jádra na mapě.[] mode.custom = Vlastní pravidla +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Schovat Zakázané Kostky rules.infiniteresources = Neomezeně surovin rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Výbuch reaktoru rules.coreincinerates = Jádro Spaluje Nadbytečné Suroviny rules.disableworldprocessors = Zakázat Světové Procesory @@ -1730,7 +1785,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 @@ -1849,6 +1903,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. @@ -2049,7 +2104,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. @@ -2085,7 +2139,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. @@ -2204,6 +2257,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2239,6 +2293,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Stavba budov pomoci jednotek kontrolované procesorem neni povolené. @@ -2281,6 +2374,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í. @@ -2389,3 +2483,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 bb9dd699ed..db8c9259e5 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -337,12 +337,23 @@ open = Åben customize = Customize Rules cancel = Afblæs command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Åben Link copylink = Kopier Link back = Tilbage @@ -423,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 @@ -478,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 @@ -489,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 @@ -500,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. @@ -584,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: @[]\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: @@ -634,9 +666,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -661,7 +695,6 @@ resources.max = Max bannedblocks = Banlyste blokke objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Tilføj alle @@ -720,7 +753,7 @@ 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.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}[] @@ -989,6 +1022,7 @@ bullet.splashdamage = [stat]{0}[lightgray] områdeskade ~[stat] {1}[lightgray] f bullet.incendiary = [stat]brændfarlig bullet.homing = [stat]målsøgende bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1044,6 +1078,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-pause af bygning setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animeret vand setting.animatedshields.name = Animeret skjold @@ -1097,7 +1132,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 @@ -1117,6 +1152,7 @@ keybind.title = Rekonfigurer taster keybinds.mobile = [scarlet]De fleste taster er ikke relevante for mobil. Kun basal bevægelse er understøttet. category.general.name = Generel category.view.name = Billede +category.command.name = Unit Command category.multiplayer.name = Spil med andre category.blocks.name = Blokvalg placement.blockselectkeys = \n[lightgray]Tast: [{0}, @@ -1134,6 +1170,23 @@ keybind.mouse_move.name = Følg musen keybind.pan.name = Panorer billede keybind.boost.name = Forstærk keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Vælg region keybind.schematic_menu.name = Skabelon-visning @@ -1197,9 +1250,12 @@ mode.pvp.description = Spil mod andre spillere lokalt.\n[gray]Kræver mindst to mode.attack.name = Angrib mode.attack.description = Destruer fjendens base. \n[gray]Kræver en rød kerne i banen, for at spille. mode.custom = Brugerdefinerede regler +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Uendelig resurser rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reaktor-eksplosioner rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors @@ -1717,7 +1773,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 @@ -1835,6 +1890,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. @@ -2032,7 +2088,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. @@ -2068,7 +2123,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. @@ -2185,6 +2239,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2220,6 +2275,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2258,6 +2352,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. @@ -2351,3 +2446,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 b911939275..52f385530f 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -344,12 +344,23 @@ open = Öffnen customize = Anpassen cancel = Abbruch command = Befehl +command.queue = [lightgray][Queuing] command.mine = Abbauen command.repair = Reparieren command.rebuild = Wiederaufbauen command.assist = Spieler unterstützen command.move = Bewegen command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Link öffnen copylink = Link kopieren back = Zurück @@ -430,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 @@ -486,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 @@ -497,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 @@ -508,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ü. @@ -595,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: @[]\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: @@ -647,9 +679,11 @@ 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.background = Hintergrund marker.outline = Umriss @@ -678,7 +712,6 @@ resources.max = Max bannedblocks = Gesperrte Blöcke objectives = Ziele bannedunits = Gesperrte Einheiten -rules.hidebannedblocks = Gesperrte Blöcke verstecken bannedunits.whitelist = Gesperrte Einheiten als Whitelist bannedblocks.whitelist = Gesperrte Blöcke als Whitelist addall = Alle hinzufügen @@ -738,8 +771,7 @@ 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.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}[] @@ -1012,6 +1044,7 @@ bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray bullet.incendiary = [stat]entzündend bullet.homing = [stat]zielsuchend bullet.armorpierce = [stat]panzerbrechend +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] Heilungsunterdrückung ~ [stat]{1}[lightgray] Kacheln bullet.interval = [stat]{0}/sec[lightgray] Intervallgeschosse: bullet.frags = [stat]{0}[lightgray]x Splittergeschosse: @@ -1067,6 +1100,7 @@ setting.backgroundpause.name = Im Hintergrund pausieren setting.buildautopause.name = Bauen automatisch pausieren setting.doubletapmine.name = Doppeltippen zum Abbauen setting.commandmodehold.name = Halten für Steuerungsmodus +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Mods bei Absturz deaktivieren setting.animatedwater.name = Animierte Oberflächen setting.animatedshields.name = Animierte Schilde @@ -1120,7 +1154,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 @@ -1140,6 +1174,7 @@ keybind.title = Tasten zuweisen keybinds.mobile = [scarlet]Die meisten Tastenzuweisungen hier funktionieren auf mobilen Geräten nicht. Nur grundlegende Bewegung wird unterstützt. category.general.name = Allgemein category.view.name = Ansicht +category.command.name = Unit Command category.multiplayer.name = Mehrspieler category.blocks.name = Blockauswahl placement.blockselectkeys = \n[lightgray]Taste: [{0}, @@ -1157,6 +1192,23 @@ keybind.mouse_move.name = Der Maus folgen keybind.pan.name = Kamera alleine bewegen keybind.boost.name = Boost keybind.command_mode.name = Steuerungsmodus +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Region wiederaufbauen keybind.schematic_select.name = Bereich auswählen keybind.schematic_menu.name = Entwurfsmenü @@ -1220,9 +1272,12 @@ mode.pvp.description = Kämpfe lokal gegen andere Spieler.\n[gray]Benötigt mind mode.attack.name = Angriff mode.attack.description = Keine Wellen, das Ziel ist es, die gegnerische Basis zu zerstören.\n[gray]Benötigt einen roten Kern auf der Karte. mode.custom = Angepasste Regeln +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Gesperrte Blöcke verstecken rules.infiniteresources = Unbegrenzte Ressourcen rules.onlydepositcore = Nur in den Kern ablegen +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reaktor-Explosionen rules.coreincinerates = Kern verbrennt überflüssige Materialien rules.disableworldprocessors = Deaktiviere Weltprozessoren @@ -1746,7 +1801,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 @@ -1869,6 +1923,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. @@ -2076,7 +2131,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. @@ -2114,7 +2168,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. @@ -2235,6 +2288,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2270,6 +2324,45 @@ lst.getflag = Überprüfe, ob eine Flag gesetzt ist. lst.setprop = Setzt eine Eigenschaft einer Einheit oder eines Blockes. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Logik, die Blöcke baut, ist hier nicht erlaubt. @@ -2313,6 +2406,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. @@ -2421,3 +2515,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 004f3f8746..1867c98505 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -79,7 +79,7 @@ schematic.addtag = Añadir etiqueta schematic.texttag = Texto de etiqueta schematic.icontag = Icono de etiqueta schematic.renametag = Renombrar etiqueta -schematic.tagged = {0} tagged +schematic.tagged = {0} etiquetado schematic.tagdelconfirm = ¿Eliminar completamente esta etiqueta? schematic.tagexists = Esa etiqueta ya existe. @@ -158,8 +158,8 @@ mod.outdatedv7.details = Este mod no es compatible con la última versión del j mod.blacklisted.details = Este mod ha sido bloqueado manualmente por causar cierres inesperados, errores u otros problemas en esta versión del juego. Será mejor no usarlo. mod.missingdependencies.details = A este mod le faltan dependencias: {0} mod.erroredcontent.details = La partida causó errores al cargar. Puedes pedir al autor del mod que los arregle. -mod.circulardependencies.details = This mod has dependencies that depends on each other. -mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}. +mod.circulardependencies.details = Este mod tiene dependencias que dependen unas de otras. +mod.incompletedependencies.details = Este mod no se puede cargar debido a dependencias no válidas o faltantes: {0}. mod.requiresversion = Requiere la versión del juego: [red]{0} mod.errors = Ha ocurrido un fallo al cargar el contenido. mod.noerrorplay = [scarlet]Se están ejecutando algunos mods con fallos.[]Debes deshabilitarlos o arreglar los errores antes de jugar. @@ -264,10 +264,10 @@ trace.ips = IPs: trace.names = Names: invalidid = ¡ID de cliente no válida! Puedes enviar un informe reportando el error. player.ban = Ban -player.kick = Kick +player.kick = Expulsar player.trace = Trace player.admin = Toggle Admin -player.team = Change Team +player.team = Cambiar equipo server.bans = Vetos server.bans.none = ¡No se ha vetado a ningún usuario! server.admins = Administradores @@ -284,7 +284,7 @@ confirmkick = ¿Quieres expulsar a "{0}[white]"? confirmunban = ¿Quieres quitar el veto a este jugador? confirmadmin = ¿Quieres hacer administrador a "{0}[white]"? confirmunadmin = ¿Quieres quitarle los permisos de administrador a "{0}[white]"? -votekick.reason = Vote-Kick Reason +votekick.reason = Razón del Voto de Expulsión votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: joingame.title = Unirse a una Partida joingame.ip = Dirección IP: @@ -303,7 +303,7 @@ server.invalidport = ¡El número de puerto no es valido! server.error = [scarlet]Error alojando el servidor. save.new = Nuevo archivo de guardado save.overwrite = ¿Quieres sobrescribir\neste guardado? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = Los archivos individuales guardados de la campaña no se pueden importar. overwrite = Sobrescribir save.none = ¡No se ha encontrado ningún archivo de guardado! savefail = ¡No se ha podido guardar la partida! @@ -341,12 +341,23 @@ open = Abrir customize = Personalizar reglas cancel = Cancelar command = Comandar +command.queue = [lightgray][Queuing] command.mine = Minar command.repair = Reparar command.rebuild = Reconstruir command.assist = Asistir al jugador command.move = Moverse command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Abrir enlace copylink = Copiar enlace back = Atrás @@ -427,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 @@ -483,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 @@ -494,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 @@ -505,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'. @@ -535,8 +550,8 @@ toolmode.replace = Reemplazar toolmode.replace.description = Dibuja en bloques sólidos. toolmode.replaceall = Reemplazar todo toolmode.replaceall.description = Sustituye todos los bloques del mapa. -toolmode.orthogonal = Perpendicular -toolmode.orthogonal.description = Dibuja líneas perpendiculares. +toolmode.orthogonal = Ortogonal +toolmode.orthogonal.description = Dibuja líneas ortogonales. toolmode.square = Cuadrado toolmode.square.description = Puntero cuadrado. toolmode.eraseores = Borrar minerales @@ -592,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: @[]\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: @@ -644,9 +676,11 @@ 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.background = Fondo marker.outline = Bordes @@ -675,7 +709,6 @@ resources.max = Max bannedblocks = Bloques prohibidos objectives = Objetivos bannedunits = Unidades prohibidas -rules.hidebannedblocks = Ocultar bloques prohibidos bannedunits.whitelist = Sólo permitir unidades seleccionadas bannedblocks.whitelist = Sólo permitir bloques seleccionados addall = Añadir todo @@ -734,8 +767,7 @@ 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.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}[] @@ -1008,6 +1040,7 @@ bullet.splashdamage = [stat]{0}[lightgray] daño en área ~[stat] {1}[lightgray] bullet.incendiary = [stat]incendiaria bullet.homing = [stat]rastreadora bullet.armorpierce = [stat]perforación de armadura +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x proyectiles fragmentados: @@ -1063,6 +1096,7 @@ setting.backgroundpause.name = Pausar en segundo plano setting.buildautopause.name = Auto-pausar construcción setting.doubletapmine.name = Doble clic para extraer minerales setting.commandmodehold.name = Mantener para comandar unidades +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Desactivar mods si el juego no puede iniciarse setting.animatedwater.name = Animaciones de terreno setting.animatedshields.name = Animación de escudos @@ -1116,7 +1150,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 @@ -1136,6 +1170,7 @@ keybind.title = Reasignar controles keybinds.mobile = [scarlet]La mayoría de los controles no están disponibles en versiones móviles. Sólo es compatible con el movimiento básico. category.general.name = General category.view.name = Ver +category.command.name = Unit Command category.multiplayer.name = Multijugador category.blocks.name = Seleccionar bloque placement.blockselectkeys = \n[lightgray]Teclas: [{0}, @@ -1153,6 +1188,23 @@ keybind.mouse_move.name = Seguir al cursor keybind.pan.name = Desplazar la cámara keybind.boost.name = Sobrevolar keybind.command_mode.name = Modo Comando +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Reconstruir región keybind.schematic_select.name = Seleccionar región keybind.schematic_menu.name = Menú de esquemas @@ -1216,9 +1268,12 @@ mode.pvp.description = Combate contra otros jugadores localmente.\n[gray]Requier mode.attack.name = Ataque mode.attack.description = Destruye la base enemiga. \n[gray]Requiere un núcleo rojo en el mapa. mode.custom = Normas personalizadas +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Ocultar bloques prohibidos rules.infiniteresources = Recursos infinitos rules.onlydepositcore = Sólo permitir depositar recursos en el núcleo +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Explosiones de reactores rules.coreincinerates = Incinerar exceso de recursos en el núcleo rules.disableworldprocessors = Desactivar procesadores estáticos @@ -1742,7 +1797,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 @@ -1848,10 +1902,10 @@ onset.mine = Haz clic para minar \uf748 [accent]berilio[] de las paredes.\n\nUsa onset.mine.mobile = Toca para minar \uf748 [accent]berilio[] de las paredes. onset.research = Abre el \ue875 menú de investigaciones.\nInvestiga y construye una \uf73e [accent]turbina condensadora[] en la grieta.\nEsto generará [accent]energía[]. onset.bore = Investiga y construye un \uf741 [accent]perforador de plasma[].\nEste minará recursos de las paredes automáticamente. -onset.power = Para [accent]encender[] el perforador de plasma, investiga y coloca un \uf73d [accent]nodo de energía perpendicular[].\nConecta la turbina condensadora al perforador de plasma. +onset.power = Para [accent]encender[] el perforador de plasma, investiga y coloca un \uf73d [accent]nodo de energía ortogonal[].\nConecta la turbina condensadora al perforador de plasma. onset.ducts = Investiga y construye \uf799 [accent]conductos[] para mover los recursos minados desde el perforador de plasma hasta el núcleo.\nArrastra para formar una cadena de transporte con múltiples bloques de conducto.\nUsa la [accent]rueda del ratón[] para cambiar la dirección. onset.ducts.mobile = Investiga y construye \uf799 [accent]conductos[] para mover los recursos minados desde el perforador de plasma hasta el núcleo.\n\nPresiona por un segundo y arrastra para crear múltiples bloques de conducto. -onset.moremine = Expande la operación minera.\nConstruye más perforadores de plasma y usa nodos perpendiculares y conductos para complementarlos.\nExtrae 200 de berilio. +onset.moremine = Expande la operación minera.\nConstruye más perforadores de plasma y usa nodos de energía ortogonales y conductos para complementarlos.\nExtrae 200 de berilio. onset.graphite = Otros bloques más complejos requieren \uf835 [accent]grafito[].\nConstruye perforadores de plasma para extraer grafito. onset.research2 = Empieza a investigar las [accent]fábricas[].\nDesbloquea el \uf74d [accent]triturador de paredes[] y el \uf779 [accent]horno de arco de silicio[]. onset.arcfurnace = El horno de arco necesita \uf834 [accent]arena[] y \uf835 [accent]grafito[] para producir \uf82f [accent]silicio[].\nTambién requiere [accent]energía[] para funcionar. @@ -1862,6 +1916,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. @@ -2068,7 +2123,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. @@ -2106,7 +2160,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. @@ -2133,8 +2186,8 @@ block.surge-conveyor.description = Mueve objetos agrupados en lotes. Se puede ac block.surge-router.description = Extrae objetos de las cintas transportadoras eléctricas, distribuyéndolos en hasta tres direcciones. Se puede acelerar suministrándole energía. Conduce la energía. block.unit-cargo-loader.description = Construye drones de carga. Estos drones distribuyen los objetos automáticamente en los "puntos de descarga" con el mismo filtro. block.unit-cargo-unload-point.description = Puntos de descarga para los drones de carga. Aceptan objetos que coincidan con el filtro seleccionado. -block.beam-node.description = Transmite energía a otros bloques perpendicularmente. Almacena una pequeña cantidad de energía. -block.beam-tower.description = Transmite energía a otros bloques perpendicularmente. Almacena grandes cantidades de energía. Tiene un mayor alcance. +block.beam-node.description = Transmite energía a otros bloques ortogonalmente. Almacena una pequeña cantidad de energía. +block.beam-tower.description = Transmite energía a otros bloques ortogonalmente. Almacena grandes cantidades de energía. Tiene un mayor alcance. block.turbine-condenser.description = Genera energía si se coloca sobre grietas de gases en el terreno. Produce pequeñas cantidades de agua. block.chemical-combustion-chamber.description = Genera energía mediante arquicita y ozono. block.pyrolysis-generator.description = Genera grandes cantidades de energía mediante arquicita y magma. También produce agua. @@ -2228,6 +2281,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2263,6 +2317,45 @@ lst.getflag = Comprueba si se ha establecido una etiqueta global. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]No se permite construir bloques de categoría lógica. @@ -2306,6 +2399,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. @@ -2414,3 +2508,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 c84dab5fef..0a715e1895 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -337,12 +337,23 @@ open = Ava customize = Kohanda reegleid cancel = Tühista command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Ava link copylink = Kopeeri link back = Tagasi @@ -423,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 @@ -478,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 @@ -489,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 @@ -500,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". @@ -584,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: @[]\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: @@ -634,9 +666,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -661,7 +695,6 @@ resources.max = Max bannedblocks = Banned Blocks objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -720,7 +753,7 @@ 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.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}[] @@ -989,6 +1022,7 @@ bullet.splashdamage = [stat]{0}[lightgray] hävituspunkti ~[stat] {1}[lightgray] bullet.incendiary = [stat]süttiv bullet.homing = [stat]isesihtiv bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1044,6 +1078,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animeeritud vesi setting.animatedshields.name = Animeeritud kilbid @@ -1097,7 +1132,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 @@ -1117,6 +1152,7 @@ keybind.title = Muuda juhtnuppe keybinds.mobile = [scarlet]Enamik kuvatud juhtnuppudest ei ole kasutusel mobiilsetel seadmetel. Toetatakse vaid lihtsaid liikumisega seotud juhtnuppe. category.general.name = Mäng category.view.name = Kaamera ja kasutajaliides +category.command.name = Unit Command category.multiplayer.name = Mitmikmäng category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1134,6 +1170,23 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1197,9 +1250,12 @@ mode.pvp.description = Võitle teiste mängijate vastu. mode.attack.name = Rünnak mode.attack.description = Hävita vaenlaste baas. Lahingulaineid ei ole. mode.custom = Reeglid +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Lõputult ressursse rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors @@ -1717,7 +1773,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 @@ -1835,6 +1890,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. @@ -2034,7 +2090,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. @@ -2070,7 +2125,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. @@ -2187,6 +2241,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2222,6 +2277,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2260,6 +2354,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. @@ -2353,3 +2448,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 f35dbdae08..0baea59b79 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -339,12 +339,23 @@ open = Ireki customize = Aldatu arauak cancel = Utzi command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Ireki esteka copylink = Kopiatu esteka back = Atzera @@ -425,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 @@ -480,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 @@ -491,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 @@ -502,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. @@ -586,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: @[]\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: @@ -636,9 +668,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -663,7 +697,6 @@ resources.max = Max bannedblocks = Debekatutako blokeak objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Gehitu denak @@ -722,7 +755,7 @@ 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.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}[] @@ -991,6 +1024,7 @@ bullet.splashdamage = [stat]{0}[lightgray] ingurune-kaltea ~[stat] {1}[lightgray bullet.incendiary = [stat]su-eragilea bullet.homing = [stat]gidatua bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1046,6 +1080,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animatutako ura setting.animatedshields.name = Animatutako ezkutuak @@ -1099,7 +1134,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 @@ -1119,6 +1154,7 @@ keybind.title = Aldatu teklak keybinds.mobile = [scarlet]Tekla konfigurazio gehienak ez dabiltza mugikorrean. Oinarrizko mugimendua onartzen da soilik. category.general.name = Orokorra category.view.name = Bistaratzea +category.command.name = Unit Command category.multiplayer.name = Hainbat jokalari category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1136,6 +1172,23 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Hautatu eskualdea keybind.schematic_menu.name = Eskema menua @@ -1199,9 +1252,12 @@ mode.pvp.description = Borrokatu beste jokalari batzuk lokalean.\n[gray]Gutxiene mode.attack.name = Erasoa mode.attack.description = Suntsitu etsaiaren basea. Boladarik ez.\n[gray]Kono gorria behar da mapan jolasteko. mode.custom = Arau pertsonalizatuak +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Baliabide amaigabeak rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors @@ -1719,7 +1775,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 @@ -1837,6 +1892,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. @@ -2036,7 +2092,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. @@ -2072,7 +2127,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. @@ -2189,6 +2243,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2224,6 +2279,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2262,6 +2356,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. @@ -2355,3 +2450,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 9b54fb0d7a..55fbc04374 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -337,12 +337,23 @@ open = Avaa customize = Muokkaa sääntöjä cancel = Peruuta command = Komento +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Avaa linkki copylink = Kopioi linkki back = Takaisin @@ -423,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 @@ -478,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ö @@ -489,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 @@ -500,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. @@ -584,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: @[]\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: @@ -634,9 +666,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Tutki:\n[]{0}[lightgray]{1} @@ -661,7 +695,6 @@ resources.max = Max bannedblocks = Kielletyt Palikat objectives = Tehtävät bannedunits = Kielletyt yksiköt -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Lisää kaikki @@ -720,7 +753,7 @@ 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.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}[] @@ -988,6 +1021,7 @@ bullet.splashdamage = [stat]{0}[lightgray] Aluevahinko ~[stat] {1}[lightgray] pa bullet.incendiary = [stat]sytyttävä bullet.homing = [stat]itseohjautuva bullet.armorpierce = [stat]haarniskan läpäisevä +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x sirpaleammuksia: @@ -1043,6 +1077,7 @@ setting.backgroundpause.name = Pysäytä taustalla setting.buildautopause.name = Automaattisest Pysäytä Rakentaessa setting.doubletapmine.name = Kaksoisklikkaa kaivaaksesi setting.commandmodehold.name = Pidä pohjassa komentotilaa varten +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Poista lisäosat käytöstä käynnistyskaatumisissa setting.animatedwater.name = Animoitu vesi setting.animatedshields.name = Animoidut kilvet @@ -1096,7 +1131,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 @@ -1116,6 +1151,7 @@ keybind.title = Kontrollit keybinds.mobile = [scarlet]Useimmat näppäinkontrollit eivät toimi mobiililaitteilla. Vain yksinkertaista liikettä tuetaan. category.general.name = Yleinen category.view.name = Näytä +category.command.name = Unit Command category.multiplayer.name = Moninpeli category.blocks.name = Palikan Valinta placement.blockselectkeys = \n[lightgray]Näppäin: [{0}, @@ -1133,6 +1169,23 @@ keybind.mouse_move.name = Seuraa Hiirtä keybind.pan.name = Kelaa näkymää keybind.boost.name = Tehosta keybind.command_mode.name = Komentotila +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Valitse alue keybind.schematic_menu.name = Kaavio Valikko @@ -1196,9 +1249,12 @@ mode.pvp.description = Taistele toisia pelaajia vastaan paikallisesti.\n[gray]Pe mode.attack.name = Hyökkäys mode.attack.description = Tuhoa vihollisen tukikohta. Ei tasoja.\n[gray]Pelaaminen vaatii punaisen ytimen kartassa. mode.custom = Muokkaa sääntöjä +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Loputtomat resurssit rules.onlydepositcore = Salli sijoittaminen vain ytimeen +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reaktorien räjähtäminen rules.coreincinerates = Ydin höyrystää ylivuodon rules.disableworldprocessors = Poista maailmaprosessorit käytöstä @@ -1719,7 +1775,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 @@ -1837,6 +1892,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. @@ -2037,7 +2093,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. @@ -2073,7 +2128,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. @@ -2190,6 +2244,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2225,6 +2280,45 @@ lst.getflag = Tarkista, onko globaali tunniste asetettu. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Logiikan käyttö ei täällä ole sallittu yksikköjen tuottamisessa. lenum.type = Rakennuksen/Yksikön tyyppi.\nEsim. jokaisesta reitittimestä tämä palauttaa [accent]@router[].\nEi ole merkkijono. lenum.shoot = Ammu tiettyä sijaintia. @@ -2263,6 +2357,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. @@ -2356,3 +2451,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 02b08c3686..e66f954eb3 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -337,12 +337,23 @@ open = Open customize = I-customize ang Mga Panuntunan cancel = Cancel command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Open Link copylink = Copy Link back = Back @@ -423,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 @@ -478,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 @@ -489,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 @@ -500,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'. @@ -584,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: @[]\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: @@ -634,9 +666,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -661,7 +695,6 @@ resources.max = Max bannedblocks = Mga Pinagbabawalan na Blocks objectives = Objectives bannedunits = Mga Pinagbabawalan na Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -720,7 +753,7 @@ 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.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}[] @@ -988,6 +1021,7 @@ bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles bullet.incendiary = [stat]incendiary bullet.homing = [stat]homing bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1043,6 +1077,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Huwag paganahin ang Mods Sa Startup Crash setting.animatedwater.name = Animated Fluids setting.animatedshields.name = Animated Shields @@ -1096,7 +1131,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 @@ -1116,6 +1151,7 @@ keybind.title = Rebind Keys keybinds.mobile = [scarlet]Karamihan sa mga keybinds dito ay hindi gumagana sa mobile. Ang pangunahing paggalaw lamang ang sinusuportahan. category.general.name = General category.view.name = View +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1133,6 +1169,23 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1196,9 +1249,12 @@ mode.pvp.description = Lumaban sa iba pang mga manlalaro nang lokal.\n[gray]Nang mode.attack.name = Attack mode.attack.description = Wasakin ang base ng kalaban. \n[gray]Nangangailangan ng pulang core sa mapa upang maglaro. mode.custom = Custom Rules +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Infinite Resources rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors @@ -1716,7 +1772,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 @@ -1834,6 +1889,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. @@ -2033,7 +2089,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. @@ -2069,7 +2124,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. @@ -2186,6 +2240,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2221,6 +2276,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2259,6 +2353,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. @@ -2352,3 +2447,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 5ec1888f99..141ebaa102 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -35,7 +35,7 @@ load.mod = Mods load.scripts = Scripts be.update = Une nouvelle version expérimentale est disponible: -be.update.confirm = Télécharger et Redémarrer le jeu maintenant ? +be.update.confirm = Télécharger et redémarrer le jeu maintenant ? be.updating = Mise à jour en cours... be.ignore = Ignorer be.noupdates = Aucune mise à jour trouvée. @@ -72,7 +72,7 @@ schematic.saved = Schéma enregistré. schematic.delete.confirm = Ce schéma sera supprimé définitivement ! schematic.edit = Editer Schéma schematic.info = {0}x{1}, {2} blocs -schematic.disabled = [scarlet]Schémas désactivés ![]\nVous n'êtes pas autorisés à utiliser des schémas sur cette [accent]carte[] ou dans ce [accent]serveur. +schematic.disabled = [scarlet]Schémas désactivés ![]\nVous n'êtes pas autorisé à utiliser des schémas sur cette [accent]carte[] ou dans ce [accent]serveur. schematic.tags = Étiquettes : schematic.edittags = Éditer les étiquettes schematic.addtag = Ajouter une étiquette @@ -129,7 +129,7 @@ committingchanges = Validation des modifications done = Terminé feature.unsupported = Votre appareil ne prend pas en charge cette fonctionnalité. -mods.initfailed = [red]⚠[] L'instance précédente de Mindustry n’a pas pu s’initialiser. Cela a probablement été causé par des mods.\n\nPour éviter une boucle de crash, [red]tous les mods ont été désactivés.[] +mods.initfailed = [red]⚠[] L'instance précédente de Mindustry n’a pas pu s’initialiser. Cela a probablement été causé par des mods.\n\nPour éviter une boucle de plantage, [red]tous les mods ont été désactivés.[] mods = Mods mods.none = [lightgray]Aucun Mod trouvé ! mods.guide = Guide de Modding @@ -245,7 +245,7 @@ hosts.none = [lightgray]Aucune partie en LAN trouvée ! host.invalid = [scarlet]Impossible de se connecter à l'hôte. servers.local = Serveurs locaux -servers.local.steam = Jeux Libres & Serveurs Locaux +servers.local.steam = Parties Libres & Serveurs Locaux servers.remote = Serveurs distants servers.global = Serveurs communautaires @@ -291,7 +291,7 @@ confirmunban = Êtes-vous sûr de vouloir annuler le ban de ce joueur ? confirmadmin = Êtes-vous sûr de vouloir faire de "{0}[white]" un administrateur ? confirmunadmin = Êtes-vous sûr de vouloir supprimer le statut d'administrateur de "{0}[white]" ? votekick.reason = Raison du vote d'expulsion -votekick.reason.message = Êtes-vous sûr de vouloir voter l'expulsion de "{0}[white]"?Si oui, merci d'entrer la raison : +votekick.reason.message = Êtes-vous sûr de vouloir voter l'expulsion de "{0}[white]"?\nSi oui, merci d'entrer la raison : joingame.title = Rejoindre une partie joingame.ip = Adresse IP : disconnect = Déconnecté. @@ -347,19 +347,30 @@ open = Ouvrir customize = Personnaliser cancel = Annuler command = Commander +command.queue = [lightgray][Queuing] command.mine = Miner command.repair = Réparer command.rebuild = Reconstruire command.assist = Assister command.move = Bouger command.boost = Booster +command.enterPayload = Entrer dans Bloc de Transport +command.loadUnits = Transporter Unités +command.loadBlocks = Transporter Blocs +command.unloadPayload = Poser Chargement +stance.stop = Annuler les Ordres +stance.shoot = Ordre: Tirer +stance.holdfire = Ordre: Ne pas Tirer +stance.pursuetarget = Ordre: Poursuivre Cible +stance.patrol = Ordre: Chemins de Contrôle +stance.ram = Ordre: Charger\n[lightgray]Mouvement en ligne droite, sans détection de chemins openlink = Ouvrir le lien copylink = Copier le lien back = Retour max = Max objective = Objectif de la Carte crash.export = Exporter les rapports de bugs -crash.none = Aucun rapport de bug trouvé. +crash.none = Aucun rapport de bugs trouvé. crash.exported = Rapports de bugs exportés. data.export = Exporter les données data.import = Importer des données @@ -420,7 +431,7 @@ steam.error = Échec d'initialisation des services Steam.\nErreur : {0} editor.planet = Planète : editor.sector = Secteur : editor.seed = Graine : -editor.cliffs = Transformer murs en falaises +editor.cliffs = Transformer les murs en falaises editor.brush = Pinceau editor.openin = Ouvrir dans l'éditeur editor.oregen = Génération de minerai @@ -433,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 @@ -489,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é @@ -500,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 @@ -511,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'. @@ -553,7 +568,7 @@ toolmode.fillerase = Remplir et effacer toolmode.fillerase.description = Efface les blocs\ndu même type. toolmode.drawteams = Dessiner les équipes toolmode.drawteams.description = Change les équipes\nau lieu de blocs. -#unitilisé +#inutilisé toolmode.underliquid = Sous les liquides toolmode.underliquid.description = Dessiner les sols sous les tuiles de liquides. @@ -598,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: @[]\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 : @@ -650,9 +682,11 @@ 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.background = Fond marker.outline = Contour @@ -681,7 +715,6 @@ resources.max = Max bannedblocks = Blocs bannis objectives = Objectifs bannedunits = Unités bannies -rules.hidebannedblocks = Cacher les blocs bannis. bannedunits.whitelist = Unités bannies en tant que liste blanche bannedblocks.whitelist = Blocs bannis en tant que liste blanche addall = Ajouter TOUT @@ -696,7 +729,7 @@ connectfail = [scarlet]Échec de la connexion au serveur : \n\n[accent]{0} error.unreachable = Serveur inaccessible.\nEst-ce que l'adresse est écrite correctement? error.invalidaddress = Adresse invalide. error.timedout = Expiration du délai!\nAssurez-vous que l'ouverture des ports est configurée chez l'hôte, que le serveur est ouvert et que l'adresse est correcte! -error.mismatch = Erreur de paquet :\nPossible incompatibilité de version client/serveur.\nAssurez-vous que l'hôte et vous disposez de la même version de Mindustry ! +error.mismatch = Erreur de paquet :\nPossible incompatibilité de version client/serveur.\nAssurez-vous que l'hôte et vous, disposez de la même version de Mindustry ! error.alreadyconnected = Déjà connecté. error.mapnotfound = Fichier de carte introuvable ! error.io = Erreur de Réseau (I/O) @@ -741,12 +774,11 @@ sector.curlost = Secteur perdu sector.missingresources = [scarlet]Ressources du Noyau insuffisantes ! sector.attacked = Secteur [accent]{0}[white] attaqué ! sector.lost = Secteur [accent]{0}[white] perdu ! -#note: the missing space in the line below is intentional -sector.captured = Secteur [accent]{0}[white]capturé ! +sector.capture = Sector [accent]{0}[white]Captured! sector.changeicon = Changer l'Icône sector.noswitch.title = Impossible de changer de Secteur sector.noswitch = Vous ne pouvez pas changer de secteur pendant qu’un autre est attaqué.\n\nSecteur: [accent]{0}[] sur [accent]{1}[] -sector.view = Voir le Secteur +sector.view = Voir le secteur threat.low = Faible threat.medium = Normale @@ -862,7 +894,7 @@ settings.graphics = Graphismes settings.cleardata = Effacer les données du jeu... settings.clear.confirm = Êtes-vous sûr de vouloir effacer ces données?\nAucun retour en arrière n'est possible ! settings.clearall.confirm = [scarlet]ATTENTION ![]\nCette action effacera toutes les données, y compris les sauvegardes, les cartes, la progression et la configuration des touches.\nUne fois que vous aurez pressé 'OK', le jeu effacera TOUTES les données et se fermera. -settings.clearsaves.confirm = Êtes-vous sûr de vouloir supprimer toutes vos sauvegardes? +settings.clearsaves.confirm = Êtes-vous sûr de vouloir supprimer toutes vos sauvegardes ? settings.clearsaves = Supprimer les Sauvegardes settings.clearresearch = Supprimer la Recherche settings.clearresearch.confirm = Êtes-vous sûr de vouloir supprimer toutes les recherches de la campagne ? @@ -927,7 +959,7 @@ stat.maxunits = Max d'Unités Actives stat.health = Santé stat.armor = Armure stat.buildtime = Durée de construction -stat.maxconsecutive = Max Consécutif +stat.maxconsecutive = Max consécutif stat.buildcost = Coût de construction stat.inaccuracy = Imprécision stat.shots = Tirs @@ -972,9 +1004,9 @@ ability.movelightning = Déplacement éclair ability.shieldarc = Arc de Bouclier ability.suppressionfield = Champ de Suppression de Soins ability.energyfield = Champ d'énergie -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +ability.energyfield.sametypehealmultiplier = [lightgray]Soins des Unités du Même Type: [white]{0}% +ability.energyfield.maxtargets = [lightgray]Cibles Maximales: [white]{0} +ability.regen = Régénération bar.onlycoredeposit = Seul le dépôt de ressources dans le Noyau est autorisé bar.drilltierreq = Meilleure Foreuse Requise @@ -1014,6 +1046,7 @@ bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgra bullet.incendiary = [stat]incendiaire bullet.homing = [stat]autoguidé bullet.armorpierce = [stat]perceur d'armure +bullet.maxdamagefraction = [stat]{0}%[lightgray] limite de dégâts bullet.suppression = [stat]{0} sec[lightgray] suppression de soins ~ [stat]{1}[lightgray] blocs bullet.interval = [stat]{0}/sec[lightgray] Balle secondaire: bullet.frags = [stat]{0}[lightgray]x Balle à fragmentation: @@ -1069,11 +1102,12 @@ setting.backgroundpause.name = Pause en Arrière-plan setting.buildautopause.name = Confirmation avant construction setting.doubletapmine.name = Double-clic pour Miner setting.commandmodehold.name = Retenir pour le Mode « Commande » +setting.distinctcontrolgroups.name = Limiter un groupe de contrôle par unité setting.modcrashdisable.name = Désactiver les mods lors d'un crash au démarrage setting.animatedwater.name = Surfaces Animées setting.animatedshields.name = Boucliers Animés -setting.playerindicators.name = Indicateurs alliés -setting.indicators.name = Indicateurs ennemis +setting.playerindicators.name = Indicateurs d'alliés +setting.indicators.name = Indicateurs d'ennemis setting.autotarget.name = Visée automatique setting.keyboard.name = Contrôles Souris+Clavier setting.touchscreen.name = Commandes d'écran tactile @@ -1104,7 +1138,7 @@ setting.fullscreen.name = Plein Écran setting.borderlesswindow.name = Fenêtré sans bordures setting.borderlesswindow.name.windows = Plein écran sans bordure setting.borderlesswindow.description = Un redémarrage peut être nécessaire pour appliquer les changements. -setting.fps.name = Afficher FPS et Ping +setting.fps.name = Afficher les FPS et le Ping setting.console.name = Activer la Console setting.smoothcamera.name = Lissage de la Caméra setting.vsync.name = Synchronisation Verticale @@ -1114,15 +1148,15 @@ setting.coreitems.name = Afficher les objets du Noyau setting.position.name = Afficher la position du joueur setting.mouseposition.name = Afficher la Position de la Souris setting.musicvol.name = Volume de la Musique -setting.atmosphere.name = Montrer l'Atmosphère de la planète -setting.drawlight.name = Draw Darkness/Lighting +setting.atmosphere.name = Montrer l'Atmosphère des planètes +setting.drawlight.name = Dessiner les Ombres/Lumières setting.ambientvol.name = Volume Ambiant setting.mutemusic.name = Couper la Musique setting.sfxvol.name = Volume des Sons et Effets setting.mutesound.name = Couper les Sons et Effets setting.crashreport.name = Envoyer des Rapports de crash anonymes setting.savecreate.name = Sauvegardes Automatiques -setting.publichost.name = Visibilité de la Partie publique +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Limite de Joueurs setting.chatopacity.name = Opacité du Chat setting.lasersopacity.name = Opacité des Connexions laser @@ -1142,6 +1176,7 @@ keybind.title = Paramètres des Touches du Clavier keybinds.mobile = [scarlet]La plupart des touches de clavier ne sont pas fonctionnelles sur mobile. Seuls les mouvements basiques sont supportés. category.general.name = Général category.view.name = Vue +category.command.name = Commandes d'Unité category.multiplayer.name = Multijoueur category.blocks.name = Sélection des blocs placement.blockselectkeys = \n[lightgray]Raccourci : [{0}, @@ -1159,6 +1194,26 @@ keybind.mouse_move.name = Suivre la souris keybind.pan.name = Vue Panoramique keybind.boost.name = Boost keybind.command_mode.name = Mode « Commande » +keybind.command_queue.name = File d'attente des Commandes d'Unités +keybind.create_control_group.name = Créer un Groupe de Contrôle +keybind.cancel_orders.name = Annuler les Ordres + +keybind.unit_stance_shoot.name = Ordre: Tirer +keybind.unit_stance_hold_fire.name = Ordre: Ne pas tirer +keybind.unit_stance_pursue_target.name = Ordre: Poursuivre la cible +keybind.unit_stance_patrol.name = Ordre: Patrouille +keybind.unit_stance_ram.name = Ordre: Charger + +keybind.unit_command_move = 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.rebuild_select.name = Reconstruire la Zone keybind.schematic_select.name = Sélectionner une Région keybind.schematic_menu.name = Menu des schémas @@ -1191,7 +1246,7 @@ keybind.deselect.name = Désélectionner keybind.pickupCargo.name = Prendre un Chargement keybind.dropCargo.name = Lâcher un Chargement keybind.shoot.name = Tirer -keybind.zoom.name = Zoom +keybind.zoom.name = Zoomer keybind.menu.name = Menu keybind.pause.name = Pause keybind.pause_building.name = Pauser/Reprendre la Construction @@ -1209,9 +1264,9 @@ keybind.chat_history_prev.name = Remonter l'Historique du Tchat keybind.chat_history_next.name = Descendre l'Historique du Tchat keybind.chat_scroll.name = Défilement du Tchat keybind.chat_mode.name = Changer le mode du Tchat -keybind.drop_unit.name = Larguer une unité +keybind.drop_unit.name = Larguer une Unité keybind.zoom_minimap.name = Zoomer la Mini-carte -mode.help.title = Description des modes de jeu +mode.help.title = Description des modes de jeux mode.survival.name = Survie mode.survival.description = Le mode normal. Ressources limitées et vagues automatiques.\n[gray]Requiert des points d'apparition ennemis pour pouvoir jouer à ce mode. mode.sandbox.name = Bac à Sable @@ -1223,8 +1278,11 @@ mode.attack.name = Attaque mode.attack.description = Pas forcément de vagues, le but étant de détruire la base ennemie.\n[gray]Requiert un Noyau rouge pour jouer à ce mode. mode.custom = Règles Personnalisées +rules.invaliddata = Données du Presse-Papier Invalides. +rules.hidebannedblocks = Cacher les blocs bannis. rules.infiniteresources = Ressources Infinies -rules.onlydepositcore = Seulement autoriser le Dépôt d'Objets dans le Noyau +rules.onlydepositcore = Seulement autoriser le dépôt d'Objets dans le Noyau +rules.derelictrepair = Autoriser la réparation des structures abandonnées rules.reactorexplosions = Explosion des Réacteurs rules.coreincinerates = Incinération des surplus du Noyau rules.disableworldprocessors = Désactiver les Processeurs Globaux @@ -1241,7 +1299,7 @@ rules.rtsmaxsquadsize = Taille Maximale d'une Escouade rules.rtsminattackweight = Poids Minimum d'une Attaque rules.cleanupdeadteams = Détruire les structures des équipes vaincues (JcJ) rules.corecapture = Capture du Noyau lors de sa Destruction -rules.polygoncoreprotection = Protection Polygonale du Noyau +rules.polygoncoreprotection = Protection polygonale du Noyau rules.placerangecheck = Vérification de la Portée de Placement rules.enemyCheat = Ressources infinies pour l'IA (équipe rouge) rules.blockhealthmultiplier = Multiplicateur de Santé des Blocs @@ -1253,9 +1311,9 @@ rules.unitdamagemultiplier = Multiplicateur de Dégât des Unités rules.unitcrashdamagemultiplier = Multiplicateur de Dégât de chute des Unités rules.solarmultiplier = Multiplicateur de l'Efficacité des Panneaux Solaires rules.unitcapvariable = Les Noyaux contribuent à la limite d'Unités actives -rules.unitcap = Limite d'Unités actives de Base -rules.limitarea = Limite de la Zone de Jeu de la Carte -rules.enemycorebuildradius = Périmètre de Non-Construction autour du Noyau ennemi :[lightgray] (blocs) +rules.unitcap = Limite initiale d'Unités actives +rules.limitarea = Limite de la zone de jeu de la Carte +rules.enemycorebuildradius = Périmètre Non-Constructible autour du Noyau ennemi :[lightgray] (blocs) rules.wavespacing = Temps entre les Vagues :[lightgray] (sec) rules.initialwavespacing = Temps de Vague Initial :[lightgray] (sec) rules.buildcostmultiplier = Multiplicateur du prix de construction @@ -1263,7 +1321,7 @@ rules.buildspeedmultiplier = Multiplicateur du temps de construction rules.deconstructrefundmultiplier = Multiplicateur du remboursement lors de la déconstruction rules.waitForWaveToEnd = Les Vagues attendent la mort des ennemis rules.wavelimit = La Partie termine après la Vague -rules.dropzoneradius = Rayon d'Apparition des ennemis :[lightgray] (blocs) +rules.dropzoneradius = Rayon de la Zone d'Apparition ennemie :[lightgray] (blocs) rules.unitammo = Les Unités nécessitent des munitions rules.enemyteam = Équipe ennemie rules.playerteam = Équipe du joueur @@ -1616,9 +1674,9 @@ block.large-constructor.description = Fabrique des structures d'une taille maxim block.deconstructor.name = Déconstructeur block.deconstructor.description = Déconstruit les structures et les unités. Retourne 100% du coût de construction. block.payload-loader.name = Chargeur de charge utile -block.payload-loader.description = Chargez les liquides et les articles dans les blocs. +block.payload-loader.description = Charge les liquides et les ressources dans les blocs. block.payload-unloader.name = Déchargeur de charge utile -block.payload-unloader.description = Décharge les liquides et les articles des blocs. +block.payload-unloader.description = Décharge les liquides et les ressources des blocs. block.heat-source.name = Source de Chaleur block.heat-source.description = Produit de grandes quantités de chaleur. Bac à sable uniquement. @@ -1748,7 +1806,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 @@ -1806,11 +1863,11 @@ hint.research = Utilisez le bouton \ue875 [accent]Recherche[] pour rechercher de hint.research.mobile = Utilisez le bouton \ue875 [accent]Recherche[] dans le \ue88c [accent]Menu[] pour rechercher de nouvelles technologies. hint.unitControl = Retenez [accent][[Ctrl-gauche][] et [accent]cliquez[] pour contrôler une tourelle ou une unité alliée. hint.unitControl.mobile = [accent][[Tapez][] 2 fois une tourelle ou une unité alliée pour la contrôler. -hint.unitSelectControl = Pour contrôler les unités, entrez en mode [accent]« Commande »[] en pressant [accent]Maj gauche.[]\nEn mode « Commande », cliquez et faites glisser la souris pour sélectionner des unités. Faites un [accent]Clic droit[] à un emplacement ou une cible pour que les unités s'y déplacent. +hint.unitSelectControl = Pour contrôler les unités, entrez en mode [accent]« Commande »[] en pressant [accent]Maj gauche[].\nEn mode « Commande », cliquez et faites glisser la souris pour sélectionner des unités. Faites un [accent]Clic droit[] à un emplacement ou une cible pour que les unités s'y déplacent. hint.unitSelectControl.mobile = Pour contrôler les unités, entrez en mode [accent]« Commande »[] en pressant le bouton de [accent]commande[] en bas à gauche de l'écran.\nEn mode « Commande », pressez longuement et faites glisser pour sélectionner des unités. Tapez un emplacement ou une cible pour que les unités s'y déplacent. hint.launch = Une fois que vous avez collecté assez de ressources, vous pouvez [accent]Lancer[] votre Noyau en sélectionnant un secteur depuis la \ue827 [accent]Carte[] en bas à droite. hint.launch.mobile = Une fois que vous avez collecté assez de ressources, vous pouvez [accent]Lancer[] votre Noyau en sélectionnant un secteur depuis la \ue827 [accent]Carte[] dans le \ue88c [accent]Menu[]. -hint.schematicSelect = Retenez [accent][[F][] pour sélectionner des blocs dans une zone afin de les copier et les coller.\n\n[accent][[Clic du milieu][] pour copier un seul type de bloc. +hint.schematicSelect = Retenez [accent][[F][] pour sélectionner des blocs dans une zone afin de les copier et les coller.\n\n[accent][[Clic molette][] pour copier un seul type de bloc. hint.rebuildSelect = Retenez [accent][[B][] et faites glissez pour selectionner les plans des blocs détruits.\nCela va automatiquement les reconstruire. hint.rebuildSelect.mobile = Selectionnez le \ue874 bouton de copie, ensuite tapez le \ue80f bouton de reconstruction et faites glisser pour sélectionner les plans des blocs détruits.\nCela va les reconstruire automatiquement. hint.conveyorPathfind = Retenez [accent][[Ctrl-gauche][] pendant que vous placez des convoyeurs, afin de générer un chemin automatiquement. @@ -1826,7 +1883,7 @@ hint.guardian = Les [accent]Gardiens[] sont protégés par un bouclier. Les muni hint.coreUpgrade = Les Noyaux peuvent être améliorés [accent]en plaçant un Noyau de plus haut niveau sur eux[].\n\nPlacez un \uf868 Noyau [accent]Fondation[] sur le \uf869 Noyau [accent]Fragment[]. Soyez sûrs que rien n'obstrue la construction. hint.presetLaunch = Les [accent]secteurs[] gris, tels que [accent]Frozen Forest[], peuvent être lancés de n'importe où. Ils ne requièrent pas la capture d'un secteur adjacent.\n\n[accent]Il y a beaucoup de secteurs[] comme celui-ci, qui sont [accent]optionnels[]. hint.presetDifficulty = Ce secteur a un niveau de menace ennemi [scarlet]élevé[].\nIl n'est [accent]pas recommandé[] de se lancer dans de tels secteurs sans la technologie et la préparation appropriées. -hint.coreIncinerate = Lorsqu'un Noyau est rempli d'une ressource en particulier, le surplus qui rentrera dans celui-ci sera [accent]incinéré[]. +hint.coreIncinerate = Lorsqu'un Noyau est rempli d'une ressource en particulier, le surplus qui y rentrera sera [accent]incinéré[]. hint.factoryControl = Pour régler la [accent]destination[] d'une usine à unités, cliquez sur l'usine en mode « Commande », puis clic-droit sur la destination souhaitée.\nLes unités produites s'y déplaceront automatiquement. hint.factoryControl.mobile = Pour régler la [accent]destination[] d'une usine à unités, tapez sur l'usine en mode « Commande », puis tapez sur la destination souhaitée.\nLes unités produites s'y déplaceront automatiquement. @@ -1843,8 +1900,8 @@ gz.turrets = Recherchez et placez 2 \uf861 [accent]Duos[] pour défendre votre n gz.duoammo = Rechargez vos Duos avec du [accent]cuivre[], en utilisant les convoyeurs. gz.walls = Les [accent]Murs[] peuvent empêcher les attaques ennemies d'atteindre vos constructions.\nPlacez des \uf8ae [accent]murs de cuivre[] autour de vos tourelles. gz.defend = Ennemis en approche, préparez-vous à défendre. -gz.aa = Les unités aériennes ne peuvent pas être facilement repoussées avec des tourelles standard.\n\uf860 Les [accent]Disperseurs[] sont d'excellentes tourelles anti-aériennes, mais requierent du \uf837 [accent]plomb[] en tant que munition. -gz.scatterammo = Approvisionnez le Disperseur avec du [accent]plomb[], en utilisant des convoyeurs. +gz.aa = Les unités aériennes ne peuvent pas être facilement repoussées avec des tourelles standard.\n\uf860 Les [accent]Disperseurs[] sont d'excellentes tourelles anti-aériennes, mais requièrent du \uf837 [accent]plomb[] en tant que munition. +gz.scatterammo = Approvisionnez le Disperseur avec du [accent]plomb[] en utilisant des convoyeurs. gz.supplyturret = [accent]Approvisionnez la tourelle gz.zone1 = Ceci est la zone d'apparition ennemie. gz.zone2 = Tout ce qui est construit dans le rayon est détruit lors du commencement de la vague. @@ -1861,22 +1918,21 @@ onset.ducts.mobile = Recherchez et placez des \uf799 [accent]conduits[] pour dé onset.moremine = Étendez vos exploitations minières.\nPlacez plus de foreuses à plasma et utilisez des transmetteurs à rayons pour les relier.\nMinez 200 minerais de béryllium. onset.graphite = Les blocs plus complexes requièrent du \uf835 [accent]graphite[].\nPlacez quelques foreuses à plasma pour miner du graphite. onset.research2 = Commencez à rechercher des [accent]usines[].\nRecherchez le \uf74d [accent]broyeur de parois[] et le \uf779 [accent]four de silicium[]. -onset.arcfurnace = le four de silicium a besoin de \uf834 [accent]sable[] et de \uf835 [accent]graphite[] pour créer du \uf82f [accent]silicium[].\nDe [accent]l'énergie[] est aussi requise. +onset.arcfurnace = Le four de silicium a besoin de \uf834 [accent]sable[] et de \uf835 [accent]graphite[] pour créer du \uf82f [accent]silicium[].\nDe [accent]l'énergie[] est aussi requise. onset.crusher = Utilisez des \uf74d [accent]broyeurs de parois[] pour miner du sable. -onset.fabricator = Utilisez des [accent]unités[] pour explorer la carte, défendre vos constructions et attaquer l'ennemi. Recherchez et placez un \uf6a2 [accent]fabricateur de tanks[]. +onset.fabricator = Utilisez des [accent]Unités[] pour explorer la carte, défendre vos constructions et attaquer l'ennemi. Recherchez et placez un \uf6a2 [accent]Fabricateur de Tanks[]. onset.makeunit = Produisez une unité.\nUtilisez le bouton "?" pour voir les ressources requises par le fabricateur. onset.turrets = Les unités sont efficaces, mais les [accent]tourelles[] ont de meilleures capacités défensives si elles sont bien utilisées.\nPlacez une tourelle \uf6eb [accent]brèche[].\nLes tourelles requièrent des [accent]munitions[] \uf748. -onset.turretammo = Approvisionnez les tourelles avec du [accent]béryllium.[] +onset.turretammo = Approvisionnez les tourelles avec du [accent]béryllium[]. onset.walls = Les [accent]murs[] peuvent encaisser les dégâts des attaques ennemies avant qu'elles atteignent vos constructions.\nPlacez quelques \uf6ee [accent]murs de béryllium[] autour de la tourelle. onset.enemies = Ennemis en approche, préparez-vous à défendre. -onset.attack = L'ennemi est vulnérable. Contre-attaquez. +onset.defenses = [accent]Set up defenses:[lightgray] {0} +onset.attack = L'ennemi est vulnérable. Contre-attaquez ! onset.cores = Les noyaux peuvent être placés sur des [accent]tuiles de noyau[].\nCes nouveaux noyaux servent à faire avancer votre base et partager vos ressources avec d'autres noyaux.\nPlacez un noyau \uf725. onset.detect = L'ennemi sera capable de vous détecter dans 2 minutes.\nAméliorez vos défenses, vos exploitations minières ainsi que votre production. - -#Ne pas traduire -onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. -onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. -aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. +onset.commandmode = Retenez [accent]Maj-gauche[] pour entrer en [accent]Mode « Commande »[].\n[accent]Clic-gauche tout en bougeant la souris[] pour sélectionner des unités.\n[accent]Clic-droit[] pour ordonner aux unités sélectionnées de bouger ou attaquer. +onset.commandmode.mobile = Pressez le [accent]bouton de commande[] pour entrer en [accent]Mode « Commande »[].\nRetenez votre doigt, et [accent]bougez-le[] pour sélectionner des unités.\n[accent]Tapez[] pour ordonner aux unités sélectionnées de bouger ou attaquer. +aegis.tungsten = Le tungstène peut être miné en utilisant une [accent]foreuse à impact[].\nCette structure requiert de [accent]l'eau[] et de [accent]l'énergie[]. split.pickup = Certains blocs peuvent être transportés par des unités du noyau.\nTransportez ce [accent]conteneur[] et placez-le sur le [accent]chargeur de charges utiles[].\n(Les touches par défaut sont [[ pour ramasser et ] pour déposer) split.pickup.mobile = Certains blocs peuvent être transportés par des unités du noyau.\nTransportez ce [accent]conteneur[] et placez-le sur le [accent]chargeur de charges utiles[].\n(Pour ramasser ou déposer quelque chose, Pressez longuement dessus.) @@ -1892,7 +1948,7 @@ item.metaglass.description = Un composé de verre super-résistant. Utilisation item.graphite.description = Du carbone minéralisé utilisé pour les munitions et dans les composants électriques. item.sand.description = Un matériau commun, largement utilisé pour la fabrication de matériaux raffinés. item.coal.description = Un carburant commun et facile à obtenir. -item.coal.details = De la matière végétale fossilisée, formée bien avant l’ensemencement de ce monde. Utilisation très répandue pour la production de carburant et de ressources. +item.coal.details = De la matière végétale fossilisée, formée bien avant l’ensemencement de ce monde. Utilisation très répandue pour la production de carburant et de ressources. item.titanium.description = Un métal rare et super-léger, largement utilisé dans le transport de liquides, dans les foreuses de haut niveau et dans les usines. item.thorium.description = Un métal dense et radioactif, utilisé comme support structurel et comme carburant nucléaire. item.scrap.description = Il est utilisé dans les fours à fusion et les pulvériseurs, pour être raffiné en d'autres matériaux. @@ -2076,10 +2132,9 @@ block.logic-display.description = Affiche des images à partir des instructions block.large-logic-display.description = Affiche des images à partir des instructions d'un processeur logique. Possède une plus grande résolution qu'un écran. block.interplanetary-accelerator.description = Un énorme canon électromagnétique à rails. Accélère les Noyaux pour qu'ils échappent à la gravité de leur planète et leur permettent un déploiement interplanétaire. block.repair-turret.description = Répare en continu l'unité endommagée la plus proche dans son périmètre. Accepte le liquide de refroidissement en option. -block.payload-propulsion-tower.description = Structure de transport de charges utiles à longue portée. Projette des charges utiles vers d'autres tours de propulsion de charges utiles reliées. #Erekir -block.core-bastion.description = Le cœur de votre base. Blindé. Une fois détruit, le secteur est perdu. +block.core-bastion.description = Le cœur de votre base. Blindé. Une fois détruit, le secteur est perdu. block.core-citadel.description = Le cœur de votre base. Très bien blindé. Stocke plus de ressources qu'un noyau Bastion. block.core-acropolis.description = Le cœur de votre base. Exceptionnellement bien blindé. Stocke plus de ressources qu'un noyau Citadelle. block.breach.description = Tire des munitions perforantes de béryllium ou de tungstène sur les cibles ennemies. @@ -2114,7 +2169,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. @@ -2235,6 +2289,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2263,17 +2318,56 @@ lst.setrate = Définit la vitesse d'exécution d'un processeur en instructions/t lst.fetch = Cherche les unités, noyaux, joueurs ou constructions par index. Commence à 0 et termine par le nombre retourné. lst.packcolor = Compresse les composants RGBA [0, 1] en un seul nombre pour les opérations de dessins ou les changements de règles. lst.setrule = Change une règle du jeu. -lst.flushmessage = Affiche un message sur l'écran depuis la mémoire tampon de texte.\nLe message apparait après la fin du dernier. +lst.flushmessage = Affiche un message sur l'écran depuis la mémoire tampon de texte.\nAttendra la fin du message précédent avant l'affichage du nouveau. lst.cutscene = Manipule la caméra du joueur. -lst.setflag = Définit un drapeau global qui peut être lu par tous les processeurs. -lst.getflag = Vérifie si un drapeau global est présent. +lst.setflag = Définit une variable globale qui peut être lue par tous les processeurs. +lst.getflag = Vérifie si une variable globale est présente. lst.setprop = Change une propriété d'une unité ou d'un bâtiment. -lst.effect = Create a particle effect. -lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.effect = Crée un effet de particules. +lst.sync = Synchronise une variable dans le réseau.\nLimité à 20 fois par seconde et par variable. +lst.makemarker = Crée un marqueur dans le monde.\nUn ID pour identifier le marqueur doit être donné.\nLes marqueurs sont limités à 20,000 par monde. +lst.setmarker = Change une propriété d'un marqueur.\nL'ID utilisé doit être le même que celui de l'instruction "Make Marker". +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Les unités contrôlées par des processeurs ne peuvent pas construire ici. -lenum.type = Type de bâtiment/unité.\nPar exemple, pour tout routeur, cela retournera [accent]@router[].\nPas en texte. +lenum.type = Type de bâtiment/unité.\nPar exemple, pour tout routeur, cela retournera [accent]@router[]. lenum.shoot = Tire à une position donnée. lenum.shootp = Tire à une unité/bâtiment avec la prédiction de mouvement. lenum.config = La configuration d'un bâtiment. Par exemple, l'objet sélectionné dans un trieur. @@ -2285,7 +2379,7 @@ laccess.dead = Retourne si l'Unité/Bâtiment est morte/détruit ou plus valide. laccess.controlled = Retourne:\n[accent]@ctrlProcessor[] si le contrôleur de l'Unité est un processeur\n[accent]@ctrlPlayer[] si l'Unité/Bâtiment est contrôlé par un joueur\n[accent]@ctrlFormation[] si l'Unité est en formation\nSinon, retourne 0. laccess.progress = Progression de l'action, 0 à 1.\nRenvoie la progression de la production, du rechargement de la tourelle ou de la construction. laccess.speed = La vitesse maximale d'une unité, en blocs/sec. -laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. +laccess.id = L'ID d'une unité/bloc/ressource/liquide.\nCeci est l'inverse de l'instruction de recherche. lcategory.unknown = Inconnu lcategory.unknown.description = Instructions sans catégorie. @@ -2296,7 +2390,7 @@ lcategory.block.description = Interagit avec les blocs. lcategory.operation = Opérations lcategory.operation.description = Opérations logiques. lcategory.control = Contrôle des Flux -lcategory.control.description = Manipule le flot d'exécution. +lcategory.control.description = Manipule l'ordre d'exécution. lcategory.unit = Contrôle des Unités lcategory.unit.description = Ordonne des commandes aux unités. lcategory.world = Contrôle du Monde @@ -2313,6 +2407,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. @@ -2407,7 +2502,7 @@ lenum.unbind = Désactive complètement le contrôle par processeur.\nL'unité r lenum.move = Bouge vers la position exacte. lenum.approach = Approche une position avec un rayon. lenum.pathfind = Détermine un itinéraire et bouge vers le point d'apparition ennemi. -lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. +lenum.autopathfind = Recherche automatiquement le chemin vers le noyau ennemi ou la zone d'apparition ennemie le plus proche.\nCeci est le même que la détection de chemin de la vague ennemie. lenum.target = Tire vers la position donnée. lenum.targetp = Tire sur une cible avec la prédiction de mouvement. lenum.itemdrop = Lâche un objet. @@ -2421,3 +2516,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 00e8c73260..e6cd547ea2 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -1,594 +1,637 @@ -#A fordításban közreműködött: Vajda Simon, Polgár Sándor, Erdélyi Nimród és Halász Gergő credits.text = Készítette: [royal]Anuken[] - [sky]anukendev@gmail.com[] -credits = Creditek -contributors = Fordítok és készítők +credits = Készítők +contributors = Közreműködők És Fordítók discord = Csatlakozz a Mindustry Discord szerverhez! -link.discord.description = Az eredeti Mindustry Discord chatszoba +link.discord.description = Az eredeti Mindustry Discord csevegőszoba link.reddit.description = A Mindustry subreddit link.github.description = A játék forráskódja link.changelog.description = Frissítési változások listája -link.dev-builds.description = Instabil fejlesztői buildek +link.dev-builds.description = Instabil fejlesztői összeállítások link.trello.description = Hivatalos Trello tábla a tervezett funkcióknak link.itch.io.description = itch.io oldal PC letöltésekkel link.google-play.description = Google Play áruház listázás link.f-droid.description = F-Droid katalógus listázás link.wiki.description = Hivatalos Mindustry wiki link.suggestions.description = Új funkciók ajánlása -link.bug.description = Találtál szoftver hibá-t? Jelentsd itt -linkopen = Ez a szerber egy linket küldött neked. Biztos vagy benne, hogy megnyitod?\n\n[sky]{0} +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. screenshot = Képernyőkép mentve ide: {0} -screenshot.invalid = Túl nagy a map, nincsen elég memória a képernyőképhez. -gameover = Játék vége -gameover.disconnect = Kapcsolat megszakadt +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.waiting = [accent]Várakozás a következő mapra... +gameover.waiting = [accent]Várakozás a következő pályára... highscore = [accent]Új rekord! copied = Másolva. -indev.notready = A játéknak ez a része még nincsen kész +indev.notready = A játéknak ez a része még nincs kész load.sound = Hangok -load.map = Mapok +load.map = Pályák load.image = Képek load.content = Tartalom load.system = Rendszer load.mod = Modok load.scripts = Szkriptek -be.update = Új Bleeding Edge build áll rendelkezésre: +be.update = Új Bleeding Edge verzió áll rendelkezésre: be.update.confirm = Letöltöd és újraindítod? 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.selected = Mod kiválasztása mods.browser.add = Letöltés -mods.browser.reinstall = Reinstall +mods.browser.reinstall = Újratelepítés mods.browser.view-releases = Kiadások megtekintése -mods.browser.noreleases = [scarlet]Nincsenek kiadások.\n[accent]Nem lehet kiadásokat találni ehhez a modhoz. Nézd meg a repository-ját, hogy vannak -e kiadásai. -mods.browser.latest = +mods.browser.noreleases = [scarlet]Nem találhatóak a kiadások\n[accent]Nem lehet kiadásokat találni 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-release = Kiadások oldala +mods.github.open = Tároló +mods.github.open-release = Kiadások Oldala mods.browser.sortdate = Rendezés dátum szerint mods.browser.sortstars = Rendezés értékelés szerint -schematic = Schematic -schematic.add = Schematic mentése... -schematics = Schematic-ok -schematic.search = Search schematics... -schematic.replace = Már van ilyen nevű schematic. Lecseréled? -schematic.exists = Már van ilyen nevű schematic. -schematic.import = Schematic importálása... +schematic = Vázlat +schematic.add = Vázlat mentése... +schematics = Vázlatok +schematic.search = Vázlat keresése... +schematic.replace = Már van ilyen nevű vázlat. Lecseréled? +schematic.exists = Már van ilyen nevű vázlat. +schematic.import = Vázlat importálása... schematic.exportfile = Exportálás fájlba -schematic.importfile = Importálás fájlba -schematic.browseworkshop = Workshop megtekintése +schematic.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.shareworkshop = Megosztás a Workshopon -schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Schematic tükrözése -schematic.saved = Schematic mentve. -schematic.delete.confirm = Ez a Schematic törölve lesz. -schematic.edit = Edit Schematic +schematic.shareworkshop = Megosztás a Steam Műhelyben +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Vázlat tükrözése +schematic.saved = Vázlat elmentve. +schematic.delete.confirm = Ez a vázlat törölve lesz. +schematic.edit = Vázlat szerkesztése schematic.info = {0}x{1}, {2} blokk -schematic.disabled = [scarlet]Schematicok letiltva[]\nNem használhat Schematicot ezen a [accent]mapon[] vagy [accent] szerveren. +schematic.disabled = [scarlet]Vázlatok letiltva[]\nNem használhatsz vázlatokat ezen a [accent]pályán[], vagy [accent]szerveren. schematic.tags = Címkék: -schematic.edittags = Címkék szerkesztése -schematic.addtag = Címke hozzáadása -schematic.texttag = Következő címke -schematic.icontag = Icon címke -schematic.renametag = Címke átnevezése -schematic.tagged = {0} tagged +schematic.edittags = Címkék Szerkesztése +schematic.addtag = Címke Hozzáadása +schematic.texttag = Szöveg Címke +schematic.icontag = Ikon címke +schematic.renametag = Címke Átnevezése +schematic.tagged = {0} Címkézve schematic.tagdelconfirm = Teljesen törlöd ezt a címkét? schematic.tagexists = Ez a címke már létezik. stats = Statisztika -stats.wave = Hullámok legyőzve -stats.unitsCreated = Egységek létrehozva -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.wave = Hullámok Legyőzve +stats.unitsCreated = Egységek Létrehozva +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ő -globalitems = [accent]Összes nyersanyag -map.delete = Biztosan akkarod törlölni a "[accent]{0}[]" mapot? -level.highscore = Legmagasabb pontszám: [accent]{0} -level.select = Szint kiválasztása +globalitems = [accent]Bolygó Nyersanyagai +map.delete = Biztosan törölni akarod a "[accent]{0}[]" pályát? +level.highscore = Legmagasabb Pontszám: [accent]{0} +level.select = Szint Kiválasztása level.mode = Játékmód: -coreattack = < A mag támadás alatt van! > -nearpoint = [[ [scarlet]AZONNAL HAGYD EL A LEDOBÁSI PONTOT[] ]\nveszélyes zóna -database = Mag adatbázis +coreattack = < A Mag támadás alatt van! > +nearpoint = [[ [scarlet]AZONNAL HAGYD EL A LEDOBÁSI PONTOT![] ]\nA megsemmisülés fenyeget! +database = Mag Adatbázis 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 -newgame = Új játék +savegame = Játék Mentése +loadgame = Játék Betöltése +joingame = Csatlakozás Egy Játékhoz +customgame = Egyedi Játék +newgame = Új Játék none = none.found = [lightgray] -none.inmap = [lightgray] -minimap = Minimap +none.inmap = [lightgray] +minimap = Minitérkép position = Pozíció close = Bezárás website = Weboldal quit = Kilépés -save.quit = Mentés és kilépés -maps = Mapok -maps.browse = Mapok keresése +save.quit = Mentés & Kilépés +maps = Pályák +maps.browse = Pályák Böngészése continue = Folytatás -maps.none = [lightgray]Nem találtunk ilyen mapot! +maps.none = [lightgray]Nem található ilyen pálya! invalid = Érvénytelen -pickcolor = Válassz színt -preparingconfig = Konfiguráció előkészítése -preparingcontent = Tartalom előkészítése -uploadingcontent = Tartalom feltöltése -uploadingpreviewfile = Előnézet feltöltése -committingchanges = Változások mentése +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ézeti Fájl Feltöltése +committingchanges = Változások Rögzítése done = Kész -feature.unsupported = Az eszköz nem támogatja ezt a funkciót. -mods.initfailed = [red]⚠[] Az előző Mindustry munkamenet nem tudott inícializálódni. Ez valószínű egy rosszúl működő mod miatt történt.\n\nA crash loop elkerülése érdekében, [red]minden mod le lett tiltva.[] +feature.unsupported = Ez az eszköz nem támogatja ezt a funkciót. + +mods.initfailed = [red]⚠[] Az előző Mindustry 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 = Modok -mods.none = [lightgray]Nincsen mod! -mods.guide = Mod készítési útmutató -mods.report = Hiba jelentése -mods.openfolder = Megnyitás mappából -mods.viewcontent = Tartalom megtekintése +mods.none = [lightgray]Nem találhatóak Modok! +mods.guide = Mod Készítési Útmutató +mods.report = Hiba Jelentése +mods.openfolder = Mappa Megnyitása +mods.viewcontent = Tartalom Megtekintése mods.reload = Újratöltés -mods.reloadexit = Indítsd újra a játékot, hogy betöltődjenek a modok. -mod.installed = [[Installed] +mods.reloadexit = A játék újraindul, hogy betöltődjenek a Modok. +mod.installed = [[Telepítve] mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Aktív -mod.disabled = [scarlet]Inaktív -mod.multiplayer.compatible = [gray]Többjátékos kompatibilis +mod.disabled = [red]Inaktív +mod.multiplayer.compatible = [gray]Többjátékos Kompatibilis mod.disable = Letiltás mod.content = Tartalom: mod.delete.error = Nem lehet törölni a Modot. Lehet, hogy egy másik folyamat használja. -mod.incompatiblegame = [red]Elavúlt játék -mod.incompatiblemod = [red]Nem kompatibilis -mod.blacklisted = [red]Nem támogatott -mod.unmetdependencies = [red]Összeférhetetlen függőségek -mod.erroredcontent = [scarlet]Tartalom hiba -mod.circulardependencies = [red]Körkörös függőségek -mod.incompletedependencies = [red]Befejezetlen függőségek -mod.requiresversion.details = [accent]{0}[] játékverzió szükséges.\nA letöltésed elavúlt. Ez a mod egy újabb verziót kíván (velószínű, egy beta/alpha kiadást) a működéshez. -mod.outdatedv7.details = Ez a mod nem kompatibilis a játék legújabb berziójával. A készítőjének frissítenie kell azt, és hozzá kell adnia a [accent]minGameVersion: 136[] -t a [accent]mod.json[] fájlhoz. -mod.blacklisted.details = Ez a mod manuálisan a feketelistára került, mert a játék összeomlott tőle, vagy más probléma miatt. Ne használd! -mod.missingdependencies.details = Ez a mod hiányol függőségeket: {0} -mod.erroredcontent.details = Ez a játék hibákat okozott betöltésnél. Kérd meg a mod készítőjét hogy kijavítsa őket! -mod.circulardependencies.details = Ennek a modnak egymástól függő föggőségai vannak. -mod.incompletedependencies.details = Ez a mod nem tudott betölteni hiányzó, vagy rossz függőségek miatt: {0}. -mod.requiresversion = [red]{0}[] játékverzió szükséges. + +mod.incompatiblegame = [red]Elavult Játék +mod.incompatiblemod = [red]Inkompatibilis +mod.blacklisted = [red]Nem Támogatott +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]Hiányos Függőségek + +mod.requiresversion.details = Szükséges játékverzió: [accent]{0}[]\nA játék ezen verziója elavult! Ez a Mod egy újabb verziót kíván (valószínűleg egy Béta, vagy egy Alfa 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 Mod készítőjének frissítenie kell azt és hozzá kell adnia a [accent]minGameVersion: 136[]-t a [accent]mod.json[] fájlhoz. +mod.blacklisted.details = Ez a Mod manuálisan a feketelistára került, mert a játék összeomlott tőle, vagy más probléma miatt. Ne használd! +mod.missingdependencies.details = Ez a Mod függőségeket hiányol: {0} +mod.erroredcontent.details = Ez a Mod hibákat okozott a betöltésnél. Kérd meg a Mod készítőjét, hogy javítsa ki a hibákat. +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 a hiányzó, vagy a rossz függőségek miatt: {0}. + +mod.requiresversion = Szükséges játékverzió: [red]{0}[] + mod.errors = Hiba történt a tartalom betöltése közben. -mod.noerrorplay = [scarlet]Vannak hibás Modok.[] Kapcsold ki, vagy javítsd ki őket a játék előtt. -mod.nowdisabled = [scarlet]A '{0}' Modnak nincsen megfelelő függősége:[accent] {1}\n[lightgray]Ezeket előbb le kell tölteni.\nEz a Mod automatikusan törölve lesz. +mod.noerrorplay = [red]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.enable = Engedélyezés mod.requiresrestart = A játék kilép a módosítások alkalmazásához. -mod.reloadrequired = [scarlet]Újratöltés szükséges -mod.import = Mod importálása -mod.import.file = Fájl importálása -mod.import.github = GitHub Mod importálása -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.reloadrequired = [red]Újratöltés Szükséges +mod.import = Mod Importálása +mod.import.file = Fájl Importálása +mod.import.github = Importálás GitHub-ról +mod.jarwarn = [scarlet]A JAR Modok eredendően nem biztonságosak.[]\nGyőződj meg arról, hogy ezt a Modot megbízható forrásból importálod! mod.item.remove = Ez az elem része a(z) [accent] '{0}'[] Modnak. A törléshez távolítsd el a Modot. mod.remove.confirm = Ez a Mod törölve lesz. -mod.author = [LIGHT_GRAY]Készítő:[] {0} -mod.missing = Ez a mentés nemrég törölt vagy frissített Modokat tartalmaz. Elképzelhető, hogy nem fog működni. Biztosan betöltöd?\n[lightgray]Modok:\n{0} -mod.preview.missing = Mielőtt publikálod ezt a modot a workshopra, adj hozzá egy borítóképet.\nKészíts egy[accent] preview.png[] nevű képet a mod mappájába, majd próbáld újra. -mod.folder.missing = Csak mappa formában lehet feltölteni a workshopra.\nHogy átalakítsd, csomagold ki a ZIP-et egy mappába és töröld le a régit, majd indítsd újra a játékot vagy töltsd újra a modot. -mod.scripts.disable = Az eszköz nem támogatja a szkriptekkel rendelkező modokat. \nA játékhoz tiltsd le ezeket a modokat. +mod.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 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 = Ez az eszköz nem támogatja a szkriptekkel rendelkező Modokat.\nA játékhoz tiltsd le ezeket a Modokat. -about.button = Közreműködők +about.button = Rólunk name = Név: noname = Előbb válassz egy[accent] nevet[]. -search = Search: -planetmap = Bolygó térkép -launchcore = Mag kilövése -filename = Fájl név: +search = Keresés: +planetmap = Bolygó Térkép +launchcore = Mag Indítása +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! +unlock.incampaign = < Oldd fel a kampányban a részletekért > +campaign.select = Válassz Kezdő Kampányt campaign.none = [lightgray]Válassz egy bolygót a kezdéshez.\nEzt bármikor megváltoztathatod. -campaign.erekir = Újabb, csiszoltabb tartalom. Általában lineáris kampány.\n\nMagasabb minőségű mapok és élmények. -campaign.serpulo = Régebbi tartalom. A klasszikus élmények. Nyíltabb végű.\n\nPotenciálisan kiegyensúlyozatlan mapok és kampány. Kevésbé csiszolt. +campaign.erekir = Újabb, csiszoltabb tartalom. Általában lineáris kampány.\n\nSokkal bonyolultabb. Magasabb 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. completed = [accent]Kész -techtree = Fejlődési fa -techtree.select = Fejlődési fa kiválasztás +techtree = Fejlődési Fa +techtree.select = Fejlődési Fa Kiválasztás techtree.serpulo = Serpulo techtree.erekir = Erekir research.load = Betöltés research.discard = Eldobás -research.list = [lightgray]Fedezd fel: +research.list = [lightgray]Fedezd Fel: research = Felfedezés researched = [lightgray]{0} felfedezve. research.progress = {0}% kész players = {0} játékos players.single = {0} játékos -players.search = keresés -players.notfound = [gray]nincsen játékos +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.kicked.whitelist = Nem vagy a fehérlistán. server.kicked.serverClose = A szerver 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.clientOutdated = Elavult játékverzió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.banned = Ki vagy tiltva erről a szerverről. +server.kicked.typeMismatch = Ez a szerver nem kompatibilis a jelenlegi játékverzió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.recentKick = Nemrég lettél kirúgva.\nVárj egy kicsit az újbóli csatlakozáshoz. +server.kicked.nameInUse = Már van egy ilyen nevű játékos\nezen a szerveren. server.kicked.nameEmpty = A kiválasztott név érvénytelen. -server.kicked.idInUse = Már csatlakozva vagy erre a szerverre! Nem lehet egyszerre két fiókot használni. -server.kicked.customClient = Ez a szerver nem támogatja a saját készítésű buildeket. Használj egy hivatalos változatot. +server.kicked.idInUse = Már csatlakozva vagy ehhez a szerverhez! 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-összeállításokat. Használj egy hivatalos változatot. server.kicked.gameover = Vége a játéknak! server.kicked.serverRestarting = Ez a szerver újraindul. -server.versions = Te verziód:[accent] {0}[]\nSzerver verzió:[accent] {1}[] -host.info = A [accent]Hosztolás[] gomb szervert nyit a [scarlet]6567[] porton.\nEzen a [lightgray] wifin vagy a helyi hálózaton [] bárki láthatja a szervert a szerverlistáján.\n\nHa azt szeretnéd, hogy az emberek bárhonnan IP-címmel csatlakozhassanak, [accent] port forwarding [] szükséges.\n\n[lightgray] Megjegyzés: Ha valakinek problémái vannak a LAN-játékhoz való csatlakozással, győződj meg arról, hogy a tűzfal beállításaiban engedélyezted-e a Mindustry hozzáférését a helyi hálózathoz. Ne feledd, hogy a nyilvános hálózatok néha nem teszik lehetővé a szerverek felderítését. -join.info = Itt megadhatsz egy [accent]szerver IP-t[] a csatlakozáshoz, vagy felfedezheted a [accent]helyi hálózatot[] vagy [accent]globális[] szervereket, amelyekhez csatlakozhatsz.\n LAN és WAN multiplayer is támogatott.\n\n[lightgray]Ha IP-vel akarsz csatlakozni valakihez, akkor meg kell tudnod a gazdagép IP-jét, amit megtalálhatsz a "my ip" Google kereséssel. -hostserver = Többjátékos játék hosztolása -invitefriends = Barátok meghívása -hostserver.mobile = Játék hosztolása +server.versions = A te játékverziód:[accent] {0}[]\nA szerver verziója:[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álhatjátok. +hostserver = Többjátékos Játék Hosztolása +invitefriends = Barátok Meghívása +hostserver.mobile = Játék Hosztolása host = Hosztolás hosting = [accent]Szerver megnyitása... hosts.refresh = Frissítés -hosts.discovering = LAN játék keresése -hosts.discovering.any = Játék keresése +hosts.discovering = LAN játékok felderítése +hosts.discovering.any = Játékok felderítése server.refreshing = Szerver frissítése -hosts.none = [lightgray]Nincs helyi játék! -host.invalid = [scarlet]Nem sikerült csatlakozni. +hosts.none = [lightgray]Nem található helyi játék! +host.invalid = [scarlet]Nem sikerült csatlakozni a hoszthoz. servers.local = Helyi Szerverek -servers.local.steam = Nyitott játékok és helyi szerverek +servers.local.steam = Nyitott Játékok & Helyi Szerverek servers.remote = Távoli Szerverek -servers.global = Közösségi szerverek +servers.global = Közösségi Szerverek 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.showhidden = Rejtett Szerverek Megjelenítése server.shown = Látható server.hidden = Rejtett -viewplayer = Viewing Player: [accent]{0} -trace = Játékos követése +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.id = Azonosító: [accent]{0} -trace.language = Language: [accent]{0} -trace.mobile = Mobil kliens: [accent]{0} -trace.modclient = Nem hivatalos kliens: [accent]{0} -trace.times.joined = Csatlakotások száma: [accent]{0} -trace.times.kicked = Kirúgások száma: [accent]{0} -trace.ips = IPs: -trace.names = Names: -invalidid = Érvénytelen kliens ID! Küldj hibajelentést. -player.ban = Ban -player.kick = Kick -player.trace = Trace -player.admin = Toggle Admin -player.team = Change Team +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.kicked = Kirúgások Száma: [accent]{0} +trace.ips = IP-k: +trace.names = Nevek: +invalidid = Érvénytelen kliens azonosí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 + 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.admins.none = Nem található admin! +server.add = Szerver Hozzáadása server.delete = Biztosan törlöd ezt a szervert? -server.edit = Szerver szerkesztése -server.outdated = [crimson]Elavult szerver![] -server.outdated.client = [crimson]Elavult kliens![] +server.edit = Szerver Szerkesztése +server.outdated = [scarlet]Elavult Szerver![] +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 adminstátuszát? -votekick.reason = Vote-Kick Reason -votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: -joingame.title = Csatlakozás +confirmadmin = Biztosan előlépteted "{0}[white]" játékost adminná? +confirmunadmin = Biztosan meg akarod szüntetni "{0}[white]" játékosnak az 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 A Játékhoz joingame.ip = Cím: -disconnect = Leválasztva. +disconnect = Lecsatlakozva. disconnect.error = Csatlakozási hiba. disconnect.closed = Kapcsolat bontva. 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. +disconnect.data = Nem sikerült betölteni a világ adatot! +cantconnect = Nem sikerült csatlakozni a(z) ([accent]{0}[]) játékhoz. connecting = [accent]Csatlakozás... reconnecting = [accent]Újracsatlakozás... -connecting.data = [accent]Betöltés... +connecting.data = [accent]Világ Adat Betöltése... server.port = Port: server.addressinuse = A cím már használatban van! server.invalidport = Érvénytelen port! -server.error = [crimson]Nem sikerült megnyitni a szervert. -save.new = Új mentés +server.error = [scarlet]Hosztolási szerver 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 kampánybó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 = [crimson]Nem sikerült importálni a [accent]{0}[] mentést -save.export.fail = [crimson]Nem sikerült exportálni a [accent]{0}[] mentést -save.import = Importálás -save.newslot = Név: +save.import.fail = [scarlet]Nem sikerült importálni a(z) [accent]{0}[] mentést +save.export.fail = [scarlet]Nem sikerült exportálni a(z) [accent]{0}[] mentést +save.import = Mentés Importálása +save.newslot = Mentés neve: save.rename = Átnevezés save.rename.text = Új név: selectslot = Válassz ki egy mentést. -slot = [accent]Slot {0} -editmessage = Üzenet szerkesztése -save.corrupted = Érvénytelen fájl! +slot = [accent]Rekesz {0} +editmessage = Üzenet Szerkesztése +save.corrupted = A mentési fájl sérült vagy érvénytelen! empty = <üres> on = Be off = Ki save.search = Keresés a mentett játékok között... -save.autosave = Automatikus mentés: {0} +save.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.playtime = Játékidő: {0} warning = Figyelmeztetés. -confirm = Rendben +confirm = Megerősítés delete = Törlés -view.workshop = Megtekintés a Workshopban -workshop.listing = Workshop Listázás szerkesztése +view.workshop = Megtekintés a Steam Műhelyben +workshop.listing = Steam Műhely listázás szerkesztése ok = OK open = Megnyitás -customize = Szabályok módosítása +customize = Szabályok Módosítása cancel = Mégse command = Parancs +command.queue = Sorbaállít 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 Játékosnak command.move = Mozgás -command.boost = Boost-olás +command.boost = Erősítés +command.enterPayload = Berakodás Rakományszállítóba +command.loadUnits = Egységek Felvétele +command.loadBlocks = Blokkok Felvétele +command.unloadPayload = Kirakodás 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 back = Vissza max = Max -objective = Map célja +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.export = Adat Exportálása +data.import = Adat Importálása +data.openfolder = Adat Mappa Megnyitása data.exported = Adat exportálva. -data.invalid = Érvénytelen adatok. -data.import.confirm = Külső adat importálása felülírja[scarlet] minden[] jelenlegi adatodat.\n[accent]Nem lehet visszavonni![]\n\nAmint kész az importálás, kilép a játék. -quit.confirm = Biztos kilépsz? +data.invalid = Ez nem egy érvényes játékadat. +data.import.confirm = Külső adat 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. +respawn = Nyomd meg a(z) [accent][[{0}][] gombot, hogy újraéledj a Magban. cancelbuilding = Használd a(z) [accent][[{0}][] gombot, hogy töröld a tervrajzot. selectschematic = Használd a(z) [accent][[{0}][] gombot, hogy kijelölj és másolj. pausebuilding = Használd a(z) [accent][[{0}][] gombot, hogy megállítsd az építkezést. resumebuilding = Használd a(z) [scarlet][[{0}][] gombot, hogy folytasd az építkezést. -enablebuilding = [scarlet][[{0}][] to enable building -showui = A kezelőfelület elrejtve.\nNyomd meg a(z) [accent][[{0}][] gombot a megjelenítéséhez. -commandmode.name = [accent]Parancs mód -commandmode.nounits = [no units] -wave = [accent]{0}. hullám -wave.cap = [accent]{0}./{1} hullám +enablebuilding = Használd a(z) [scarlet][[{0}][] gombot, hogy jóváhagyd az építkezést. +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.waveInProgress = [lightgray]Hullám folyamatban waiting = [lightgray]Várakozás... waiting.players = Várakozás a játékosokra... -wave.enemies = [lightgray]{0} Megmaradt ellenség -wave.enemycores = [accent]{0}[lightgray] Ellenséges mag -wave.enemycore = [accent]{0}[lightgray] Ellenséges mag -wave.enemy = [lightgray]{0} Megmaradt ellenség -wave.guardianwarn = Egy őrző érkezik [accent]{0}[] hullám múlva. -wave.guardianwarn.one = Egy őrző érkezik [accent]{0}[] hullám múlva. -loadimage = Fénykép betöltése -saveimage = Fénykép mentése +wave.enemies = [lightgray]{0} Megmaradt Ellenség +wave.enemycores = [accent]{0}[lightgray] Ellenséges Mag +wave.enemycore = [accent]{0}[lightgray] Ellenséges Mag +wave.enemy = [lightgray]{0} Megmaradt Ellenség +wave.guardianwarn = Egy Őrző érkezik [accent]{0}[] hullám múlva. +wave.guardianwarn.one = Egy Őrző érkezik [accent]{0}[] hullám múlva. +loadimage = Kép Betöltése +saveimage = Kép Mentése unknown = Ismeretlen custom = Egyedi builtin = Beépített -map.delete.confirm = Biztosan törlöd ezt a mapot? Ez a művelet nem visszavonható! -map.random = [accent]Véletlenszerű Map -map.nospawn = Ez a map nem rendelkezik maggal, amelyen a játékos kezdhet! Adj hozzá egy {0} magot ehhez a maphoz a szerkesztőben! -map.nospawn.pvp = Ezen a térképen nincsen ellenséges mag, amelyen a másik csapat kezdhet! Adjon hozzá [scarlet]nem narancssárga[] magot ehhez a maphoz a szerkesztőben! -map.nospawn.attack = Ezen a térképen nincsen ellenséges mag! Adjon hozzá {0} magot ehhez a maphoz a szerkesztőben! -map.invalid = Hiba történt a map betöltésekor: sérült vagy érvénytelen mapfájl. -workshop.update = Item frissítése -workshop.error = Hiba történt a workshop részleteinek lekérdezésekor: {0} -map.publish.confirm = Biztos, hogy közzéteszed ezt a mapot?\n\n[lightgray] Győződj meg róla, hogy elfogadtad a Workshop EULA-t, különben a mapjaid nem jelennek meg! -workshop.menu = Válaszd ki, mit szeretnél csinálni ezzel az itemmel. -workshop.info = Item Infó -changelog = Változtatási napló (opcionális): -updatedesc = Cím és leírás felülírása +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, amellyel 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, amellyel 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.invalid = Hiba történt a pálya betöltésekor: sérült vagy érvénytelen fájl. +workshop.update = Elem Frissítése +workshop.error = Hiba történt a Steam Műhely részleteinek lekérdezésekor: {0} +map.publish.confirm = Biztos, hogy közzéteszed ezt a pályát?\n\n[lightgray]Győződj meg róla, hogy elfogadtad a Steam Műhely EULA-t, különben a pályáid nem jelennek meg! +workshop.menu = Válaszd ki, hogy mit szeretnél csinálni ezzel az elemmel. +workshop.info = Elem Infó +changelog = Változásnapló (opcionális): +updatedesc = Cím & Leírás Felülírása eula = Steam EULA -missing = Ezt az elemet törölték vagy áthelyezték.\n[lightgray] A workshop adatait automatikusan leválasztották. +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... -publish.confirm = Biztosan közzéteszed?\n\n[lightgray] Győződj meg róla, hogy elfogadtad a Workshop EULA-t, különben az itemjeid nem jelennek meg! -publish.error = Hiba az item publikálásakor: {0} +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} + editor.planet = Bolygó: editor.sector = Szektor: editor.seed = Seed: -editor.cliffs = Falak sziklákká - +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.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.description = Leírás: -editor.nodescription = A mapnak rendelkeznie kell egy legalább 4 karakter hosszú leírással, mielőtt megosztod. +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.generation = Generálás: editor.objectives = Célok -editor.ingame = Szerkesztés játékban -editor.playtest = Teszt játékban -editor.publish.workshop = Közzététel workshopon -editor.newmap = Új Map +editor.locales = Helyi Csomagok +editor.ingame = Szerkesztés A Játékban +editor.playtest = Teszt A Játékban +editor.publish.workshop = Közzététel A Steam Műhelyben +editor.newmap = Új Pálya editor.center = Ugrás középre -editor.search = Mapok keresése... -editor.filters = Mapok szűrése +editor.search = Pályák keresése... +editor.filters = Pályák Szűrése editor.filters.mode = Játékmódok: -editor.filters.type = Map típus: -editor.filters.search = Keresés ebben: +editor.filters.type = Pálya Típus: +editor.filters.search = Keresés Ebben: editor.filters.author = Készítő editor.filters.description = Leírás editor.shiftx = X eltolás editor.shifty = Y eltolás -workshop = Workshop +workshop = Steam Műhely waves.title = Hullámok waves.remove = Eltávolítás waves.every = minden waves.waves = hullámonként waves.health = élet: {0}% -waves.perspawn = per spawn +waves.perspawn = kezdőpontonként waves.shields = pajzs/hullám waves.to = - -waves.spawn = spawn: +waves.spawn = Kezdőpont: waves.spawn.all = -waves.spawn.select = Kezdőhely kiválasztása -waves.spawn.none = [scarlet]Nem lehet kezdőhelyet találni +waves.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.guardian = őrző +waves.guardian = Őrző waves.preview = Előnézet -waves.edit = Szerksztés... -waves.random = Random +waves.edit = Szerkesztés... +waves.random = Véletlen 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.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.sort = Rendezési szempont -waves.sort.reverse = Rendezés visszafelé -waves.sort.begin = Begin +waves.none = Nincs ellenség megadva.\nVedd figyelembe, hogy az üresen hagyott hullám elrendezések automatikusan lecserélődnek az alapértelmezett elrendezésre. +waves.sort = Rendezési Szempont +waves.sort.reverse = Rendezés Visszafelé +waves.sort.begin = Indul waves.sort.health = Élet waves.sort.type = Típus -waves.search = Search waves... -waves.filter = Unit Filter -waves.units.hide = Hide All -waves.units.show = Show All +waves.search = Hullám keresése... +waves.filter = Egység Szűrő +waves.units.hide = Mindent Elrejt +waves.units.show = Mindent Mutat #these are intentionally in lower case wavemode.counts = típusokra bontva -wavemode.totals = öszzesítés +wavemode.totals = összesítés wavemode.health = életpontok editor.default = [lightgray] details = Részletek... edit = Szerkesztés... variables = Változók +logic.globals = Beépített Változók editor.name = Név: -editor.spawn = Egység megidézése -editor.removeunit = Egység eltávolítása +editor.spawn = Egység Megidézése +editor.removeunit = Egység Eltávolítása editor.teams = Csapatok editor.errorload = Hiba a fájl betöltése közben. editor.errorsave = Hiba a fájl mentése közben. -editor.errorimage = Ez egy kép, nem egy Map.\n\nHa egy 3.5/build 40 Mapot szeretnél betölteni, használd a "Régi map betöltése" gombot a szerkesztőben. -editor.errorlegacy = Ez a Map túl régi, és már nem támogatott formátumot használ. -editor.errornot = Ez nem egy Map fájl. -editor.errorheader = Ez a map fájl vagy érvénytelen vagy sérült. -editor.errorname = A Mapnak nincs neve. Mentést próbálsz betölteni? +editor.errorimage = Ez egy kép, nem pedig egy pálya. +editor.errorlegacy = Ez a pálya túl régi és olyan régi pálya formátumot használ, amely már nem támogatott. +editor.errornot = Ez nem egy pálya-fájl. +editor.errorheader = Ez a pálya-fájl vagy é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 Fel +editor.movedown = Mozgás Le editor.copy = Másolás editor.apply = Alkalmazás -editor.generate = Haladó funkciók -editor.sectorgenerate = Szektor generálása +editor.generate = Generálás +editor.sectorgenerate = Szektor Generálása editor.resize = Átméretezés -editor.loadmap = Map betöltése -editor.savemap = Mentés +editor.loadmap = Pálya Betöltése +editor.savemap = Pálya Mentése +editor.savechanges = [scarlet]Nem mentett módosításaid vannak!\n\n[]Szeretnéd elmenteni őket? editor.saved = Mentve! -editor.save.noname = Nem adtál meg nevet! Állíts be egyet az "Általános" menüpont alatt! -editor.save.overwrite = A Mapod felülír egy már létező Mapot! Válassz egy másik nevet az "Általános" menüpont alatt! -editor.import.exists = [scarlet]Nem lehet importálni:[] Már létezik "{0}" nevű Map! -editor.import = Importálás -editor.importmap = Map importálása -editor.importmap.description = Létező Map importálása -editor.importfile = Fájl importálása -editor.importfile.description = Külső Map fájl importálása -editor.importimage = Képfájl importálása -editor.importimage.description = Külső Map képfájl importálása -editor.export = Exportálás -editor.exportfile = Fájl exportálása -editor.exportfile.description = Exportálás Map fájlba -editor.exportimage = Domborzat exportálása -editor.exportimage.description = Domborzat exportálása képfájlba -editor.loadimage = Domborzat importálása -editor.saveimage = Domborzat exportálása +editor.save.noname = A pályádnak nincs neve! Állíts be egyet a 'pálya infó' 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 az 'pálya infó' 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 = Egy külső pálya fájl importálása +editor.importimage = Képfájl Importálása +editor.importimage.description = Egy külső pálya képfájl importálása +editor.export = Exportálás... +editor.exportfile = Fájl Exportálása +editor.exportfile.description = Exportálás egy pálya fájlba +editor.exportimage = Domborzat Kép Exportálása +editor.exportimage.description = Csak alapvető domborzatot tartalmazó képfájl exportálása +editor.loadimage = Domborzat Importálása +editor.saveimage = Domborzat Exportálása editor.unsaved = Biztos ki akarsz lépni?\n[scarlet]A nem mentett módosításaid elvesznek! -editor.resizemap = Átméretezés -editor.mapname = Map neve: -editor.overwrite = [accent]Vigyázz!\nEzzel felülírsz egy már létező Mapot. -editor.overwrite.confirm = [scarlet]Vigyázz![] Ilyen nevű Map már létezik:\n"[accent]{0}[]"\nBiztosan felülírod? -editor.exists = Ilyen nevű Map már létezik. -editor.selectmap = Válassz ki egy Mapot: +editor.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.exists = Ilyen nevű pálya már létezik. +editor.selectmap = Válassz ki egy pályát a betöltéshez: toolmode.replace = Csere -toolmode.replace.description = Draws only on solid blocks. -toolmode.replaceall = Összes cseréje -toolmode.replaceall.description = Összes cseréje +toolmode.replace.description = Csak szilárd blokkokra rajzol. +toolmode.replaceall = Ö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.eraseores = Ércradír toolmode.eraseores.description = Csak az érceket törli. -toolmode.fillteams = Fill Teams -toolmode.fillteams.description = Fill teams instead of blocks. -toolmode.fillerase = Fill Erase -toolmode.fillerase.description = Erase blocks of the same type. -toolmode.drawteams = Draw Teams -toolmode.drawteams.description = Draw teams instead of blocks. -toolmode.underliquid = Folyadékok alá -toolmode.underliquid.description = Padlók folyadék blokkok alá rajzolása. +toolmode.fillteams = Csoportok Kitöltése +toolmode.fillteams.description = Töltse ki a csoportokat a blokkok helyett. +toolmode.fillerase = Kitöltés Törlése +toolmode.fillerase.description = Törölje az azonos típusú blokkokat. +toolmode.drawteams = Csoportok Rajzolása +toolmode.drawteams.description = Csoportok rajzolása blokkok helyett. +#unused +toolmode.underliquid = Folyadékok Alá +toolmode.underliquid.description = Padlók rajzolása a folyadék blokkok alá. -filters.empty = [lightgray]Még nincs filter! Adj hozzá egyet a lenti gombra kattintva! -filter.distort = Distort +filters.empty = [lightgray]Még nincs szűrő! Adj hozzá egyet a lenti gombra kattintva! + +filter.distort = Torzítás filter.noise = Zaj -filter.enemyspawn = Enemy Spawn Select -filter.spawnpath = Path To Spawn -filter.corespawn = Core Select +filter.enemyspawn = Ellenséges Kezdőpont Kiválasztása +filter.spawnpath = Útvonal A Kezdőponthoz +filter.corespawn = Mag Kiválasztása filter.median = Medián -filter.oremedian = Érc medián -filter.blend = Blend -filter.defaultores = Alapértelmezett ércek +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 Zaj filter.mirror = Tükrözés -filter.clear = Blokkok törlése -filter.option.ignore = Ignore -filter.scatter = Scatter +filter.clear = Blokkok Törlése +filter.option.ignore = Elutasít +filter.scatter = Szórás filter.terrain = Domborzat + filter.option.scale = Méret filter.option.chance = Gyakoriság -filter.option.mag = Magnitude -filter.option.threshold = Threshold -filter.option.circle-scale = Circle Scale -filter.option.octaves = Octaves -filter.option.falloff = Falloff -filter.option.angle = Angle -filter.option.tilt = Tilt -filter.option.rotate = Rotate +filter.option.mag = Magnitúdó +filter.option.threshold = Küszöbérték +filter.option.circle-scale = Körskála +filter.option.octaves = Oktávok +filter.option.falloff = Esés +filter.option.angle = Szög +filter.option.tilt = Döntés +filter.option.rotate = Forgatás filter.option.amount = Mennyiség -filter.option.block = Block +filter.option.block = Blokk filter.option.floor = Talaj -filter.option.flooronto = Jelenlegi mező -filter.option.target = Jelenlegi mező -filter.option.replacement = Replacement +filter.option.flooronto = Cél Talaj +filter.option.target = Cél +filter.option.replacement = Csere filter.option.wall = Fal filter.option.ore = Érc -filter.option.floor2 = Secondary Floor -filter.option.threshold2 = Secondary Threshold +filter.option.floor2 = Másodlagos Talaj +filter.option.threshold2 = Másodlagos Küszöbérték filter.option.radius = Sugár filter.option.percentile = Arány +locales.info = Itt adhatsz hozzá különböző Helyi Csomagokat a térképedhez. A Helyi Csomagok minden tulajdonságának van egy neve és egy értéke. Ezeket a tulajdonságokat a Világ Processzorok és a Célkitűzések azok neveivel használhatják. Támogatják a szövegformázást (a helyőrzőket az aktuális é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[]Írja be egy Világ Processzorba:\n[accent]localeprint "időzítő"\nformat time\n[gray](ahol az idő egy külön kiszámított változó) +locales.deletelocale = Biztos, hogy törölni akarod ezt a Helyi Csomagot? +locales.applytoall = Változások alkalmazása az összes Helyi Csomagra +locales.addtoother = Hozzáadás más Helyi Csomaghoz +locales.rollback = Visszaállítás az utoljára elfogadottra +locales.filter = Tulajdonság szűrő +locales.searchname = Név keresés... +locales.searchvalue = Érték keresés... +locales.searchlocale = Helyi Csomag keresés... +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 Helyi Csomagban. +locales.showmissing = Azon tulajdonságok megjelenítése, amelyek hiányoznak Bizonyos Helyi Csomagokból +locales.showsame = Azon tulajdonságok megjelenítése, amelyek azonos értékekkel rendelkeznek bizonyos Helyi Csomagokban +locales.viewproperty = Megtekintés minden Helyi Csomagban +locales.viewing = "{0}" tulajdonság megtekintése +locales.addicon = Ikon Hozzáadása + width = Szélesség: height = Magasság: menu = Menü @@ -599,108 +642,115 @@ save = Mentés fps = FPS: {0} ping = Ping: {0}ms tps = TPS: {0} -memory = Mem: {0}mb -memory2 = Mem:\n {0}mb +\n {1}mb +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! settings = Beállítások -tutorial = Bevezető -tutorial.retake = Bevezető újrajátszása +tutorial = Oktatóanyag +tutorial.retake = Oktatóanyag újrajátszása editor = Szerkesztő -mapeditor = Map szerkesztő +mapeditor = Pálya Szerkesztő abandon = Feladás -abandon.text = Ez a szektor benne minden nyersanyaggal az ellenség kezére kerül. +abandon.text = Ez a szektor és minden nyersanyaga az ellenség kezére kerül. locked = Lezárva complete = [lightgray]Feltételek: -requirement.wave = Juss el a {0}. hullámig {1} szektorban -requirement.core = Pusztítsd el az ellenséges magot {0} szektorban -requirement.research = Fedezd fel: {0} -requirement.produce = Gyártsd le: {0} +requirement.wave = Juss el a {0}. hullámig a(z) {1} szektorban +requirement.core = Pusztítsd el az ellenséges Magot a(z) {0} szektorban +requirement.research = Fedezd Fel: {0} +requirement.produce = Gyártsd Le: {0} requirement.capture = Foglald el a(z) {0} szektort -requirement.onplanet = Control Sector On {0} -requirement.onsector = Land On Sector: {0} +requirement.onplanet = Szektor elfoglalása a(z) {0}-n +requirement.onsector = Landolj a(z) {0} szektorban launch.text = Indítás -research.multiplayer = Csak a host fedezhet fel itemeket. -map.multiplayer = Csak a host tekintheti meg a szektorokat. +research.multiplayer = Csak a hoszt fedezhet fel nyersanyagokat. +map.multiplayer = Csak a hoszt tekintheti meg a szektorokat. uncover = Felfedés -configure = Rakomány szerkesztése -objective.research.name = Research -objective.produce.name = Obtain -objective.item.name = Obtain Item -objective.coreitem.name = Core Item -objective.buildcount.name = Build Count -objective.unitcount.name = Unit Count -objective.destroyunits.name = Destroy Units -objective.timer.name = Timer -objective.destroyblock.name = Destroy Block -objective.destroyblocks.name = Destroy Blocks -objective.destroycore.name = Destroy Core -objective.commandmode.name = Command Mode -objective.flag.name = Flag -marker.shapetext.name = Shape Text -marker.minimap.name = Minimap -marker.shape.name = Shape -marker.text.name = Text -marker.background = Background -marker.outline = Outline -objective.research = [accent]Research:\n[]{0}[lightgray]{1} -objective.produce = [accent]Obtain:\n[]{0}[lightgray]{1} -objective.destroyblock = [accent]Destroy:\n[]{0}[lightgray]{1} -objective.destroyblocks = [accent]Destroy: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3} -objective.item = [accent]Obtain: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.coreitem = [accent]Move into Core:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.build = [accent]Build: [][lightgray]{0}[]x\n{1}[lightgray]{2} -objective.buildunit = [accent]Build Unit: [][lightgray]{0}[]x\n{1}[lightgray]{2} -objective.destroyunits = [accent]Destroy: [][lightgray]{0}[]x Units -objective.enemiesapproaching = [accent]Enemies approaching in [lightgray]{0}[] -objective.enemyescelating = [accent]Enemy production escalating in [lightgray]{0}[] -objective.enemyairunits = [accent]Enemy air unit production beginning in [lightgray]{0}[] -objective.destroycore = [accent]Destroy Enemy Core -objective.command = [accent]Command Units -objective.nuclearlaunch = [accent]⚠ Nuclear launch detected: [lightgray]{0} -announce.nuclearstrike = [red]⚠ NUCLEAR STRIKE INBOUND ⚠ +configure = Rakomány Szerkesztése + +objective.research.name = Kutatá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.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.flag.name = Jelölő + +marker.shapetext.name = Szövegforma +marker.point.name = Pont +marker.shape.name = Alakzat +marker.text.name = Szöveg +marker.line.name = Vonal +marker.quad.name = Négyzet + +marker.background = Háttér +marker.outline = Körvonal + +objective.research = [accent]Fejleszd ki:\n[]{0}[lightgray]{1} +objective.produce = [accent]Termelj:\n[]{0}[lightgray]{1} +objective.destroyblock = [accent]Semmisítsd Meg:\n[]{0}[lightgray]{1} +objective.destroyblocks = [accent]Semmisítsd Meg: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3} +objective.item = [accent]Termelj: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} +objective.coreitem = [accent]Szállítás A Magba:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} +objective.build = [accent]Építs: [][lightgray]{0}[]db\n{1}[lightgray]{2} +objective.buildunit = [accent]Gyárts Egységeket: [][lightgray]{0}[]db\n{1}[lightgray]{2} +objective.destroyunits = [accent]Semmisíts Meg: [][lightgray]{0}[]db Egységet +objective.enemiesapproaching = [accent]Ellenség érkezik: [lightgray]{0}[] múlva +objective.enemyescelating = [accent]Az ellenséges gyártás fokozódik: [lightgray]{0}[] múlva +objective.enemyairunits = [accent]Az ellenséges légi egységek gyártása elkezdődik: [lightgray]{0}[] múlva +objective.destroycore = [accent]Semmisítsd Meg Az Ellenséges Magot +objective.command = [accent]Irányítsd Az Egységeket +objective.nuclearlaunch = [accent]⚠ Nukleáris kilövés észlelve: [lightgray]{0} + +announce.nuclearstrike = [red]⚠ BEÉRKEZŐ NUKLEÁRIS CSAPÁS ⚠\n[lightgray]Azonnal építs tartalék Magokat! loadout = Rakomány resources = Nyersanyagok -resources.max = Max -bannedblocks = Tiltott blokkok -objectives = Objectives -bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks -bannedunits.whitelist = Banned Units As Whitelist -bannedblocks.whitelist = Banned Blocks As Whitelist -addall = Összes hozzáadása -launch.from = Indítás: [accent]{0} -launch.capacity = Launching Item Capacity: [accent]{0} -launch.destination = Irány: {0} +resources.max = Maximum +bannedblocks = Tiltott Blokkok +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 a(z) [accent]{0} szektorból +launch.capacity = Nyersanyag Kapacitás Az Indításhoz: [accent]{0} +launch.destination = Úticél: {0} configure.invalid = A mennyiségnek 0 és {0} között kell lennie. add = Hozzáadás... -guardian = Guardian +guardian = Őrző connectfail = [scarlet]Csatlakozási hiba:\n\n[accent]{0} error.unreachable = A szervert nem lehet elérni.\nBiztosan jól írtad be a címet? error.invalidaddress = Érvénytelen cím. -error.timedout = Időtúllépés!\nGyőződj meg róla, hogy a port forwarding be van kapcsolva a host gépen és a cím helyes! -error.mismatch = Packet error:\nLehetséges kliens/szerver verzió eltérés.\nGyőződj meg róla, hogy te és a host is a Mindustry legfrissebb verzióját használjátok! +error.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 hoszt is a Mindustry legfrissebb verzióját használjátok! error.alreadyconnected = Már csatlakozva vagy. -error.mapnotfound = A map fájl nem található! +error.mapnotfound = A pálya fájl nem található! error.io = Internet I/O hiba. error.any = Ismeretlen internet hiba. -error.bloom = Failed to initialize bloom.\nYour device may not support it. +error.bloom = Nem sikerült inicializálni a bloom-ot.\nElőfordulhat, hogy a készülék nem támogatja. weather.rain.name = Eső weather.snow.name = Hóesés weather.sandstorm.name = Homokvihar weather.sporestorm.name = Spóravihar weather.fog.name = Köd -campaign.playtime = \uf129 [lightgray]Sector Playtime: {0} -campaign.complete = [accent]Congratulations.\n\nThe enemy on {0} has been defeated.\n[lightgray]The final sector has been conquered. -sectorlist = Sectors -sectorlist.attacked = {0} under attack +campaign.playtime = \uf129 [lightgray]Szektor Játékidő: {0} +campaign.complete = [accent]Gratuláció.\n\nAz ellenség a(z) {0}-n legyőzve.\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ő: @@ -710,33 +760,33 @@ sectors.stored = Tárolt: sectors.resume = Folytatás sectors.launch = Indítás sectors.select = Kiválasztás -sectors.nonelaunch = [lightgray]none (sun) -sectors.rename = Szektor átnevezése -sectors.enemybase = [scarlet]Ellenséges bázis +sectors.nonelaunch = [lightgray]semmi (nap) +sectors.rename = Szektor Átnevezése +sectors.enemybase = [scarlet]Ellenséges Bázis sectors.vulnerable = [scarlet]Sebezhető sectors.underattack = [scarlet]Támadás alatt! [accent]{0}% sérült -sectors.underattack.nodamage = [scarlet]Uncaptured +sectors.underattack.nodamage = [scarlet]Nincs meghódítva sectors.survives = [accent]Túlél {0} hullámot sectors.go = Utazás -sector.abandon = Abandon -sector.abandon.confirm = This sector's core(s) will self-destruct.\nContinue? -sector.curcapture = Szektor megszerezve -sector.curlost = A szektor elveszett +sector.abandon = Elhagy +sector.abandon.confirm = Ennek a szektornak a Magja(i) ö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.changeicon = Change Icon -sector.noswitch.title = Unable to Switch Sectors -sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[] -sector.view = View Sector +sector.capture = A(z) [accent]{0}[white]Szektor Elfoglalva! +sector.changeicon = Ikon Módosítása +sector.noswitch.title = A szektorváltás Nem Lehetséges +sector.noswitch = Nem válthatsz szektort, amíg egy meglévő szektor támadás alatt áll.\n\nSzektor: [accent]{0}[] a(z) [accent]{1}[]-n +sector.view = Szektor Megtekintése threat.low = Alacsony threat.medium = Közepes threat.high = Magas threat.extreme = Extrém -threat.eradication = Felszámolás +threat.eradication = Irtózatos planets = Bolygók @@ -744,117 +794,118 @@ planet.serpulo.name = Serpulo planet.erekir.name = Erekir planet.sun.name = Nap -sector.impact0078.name = Impact 0078 -sector.groundZero.name = Ground Zero -sector.craters.name = The Craters -sector.frozenForest.name = Frozen Forest -sector.ruinousShores.name = Ruinous Shores -sector.stainedMountains.name = Stained Mountains -sector.desolateRift.name = Desolate Rift -sector.nuclearComplex.name = Nuclear Production Complex -sector.overgrowth.name = Overgrowth -sector.tarFields.name = Tar Fields -sector.saltFlats.name = Salt Flats -sector.fungalPass.name = Fungal Pass -sector.biomassFacility.name = Biomass Synthesis Facility -sector.windsweptIslands.name = Windswept Islands -sector.extractionOutpost.name = Extraction Outpost -sector.planetaryTerminal.name = Planetary Launch Terminal -sector.coastline.name = Coastline -sector.navalFortress.name = Naval Fortress +sector.impact0078.name = Ü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.tarFields.name = Kátránymezők +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.coastline.name = Partvonal +sector.navalFortress.name = Tengerészeti Erőd - -sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges fenyegetés. Némi nyersanyag.\nGyűjts annyi rezet és ólmot, amennyit csak tudsz.\nHaladj tovább. -sector.frozenForest.description = Még itt, a hegyekhez közel is elterjedtek a spórák. A fagypont alatti hőmérséklet nem tudja örökké fogva tartani őket.\n\nFedezd fel az lelktromosság erejét! Építs combustion generatort! Használj mendert! -sector.saltFlats.description = A sivatag peremén terül el a Salt Flats néven ismert síkság. Kevés nyersanyag található errefelé.\n\nAz ellenség egy raktárkomplexumot létesített itt. Pusztítsd el a magot! Kő kövön ne maradjon! -sector.craters.description = Régen háborúk folytak ezen a helyen és csak egy kráter maradt utánuk. De szerencsédre az évezredek alatt feltöltődött vízzel így letudod hűteni vele a drilljeidet. Persze előtte használd a homokot, hogy legyen üveged! +sector.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 Sós Síkságok 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 titanium készleteket a körzetben. Tanuld meg felhasználni!.\n\nAz ellenség itt nagyobb létszámban van jelen. Ne hagyj nekik időt, hogy a legerősebb egységeiket hadba állíthassák! -sector.overgrowth.description = Ez a terület közelebb esik a spórák forrásához, a spórák már kinőtték.\nAz ellenség egy helyőrséget létesített itt. Építs Mace egységeket! Pusztítsd el! -sector.tarFields.description = Egy olajtermelő övezet peremvidéke a hegyek és a sivatag között. Egy a kevés térség közül, ahol még hasznosítható kátránykészletek találhatók.\nBár a terület elhagyatott, veszélyes ellenséges erők fészkelnek a közelben. Ne becsüld alá őket!\n\n[lightgray]Fedezd fel az olajfeldolgozási lehetőségeket, ha tudod! +sector.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 a bázist! +sector.tarFields.description = Egy Olajtermelő övezet peremvidéke a hegyek és a sivatag között. Egy azon kevés szektorok közül, ahol még hasznosítható kátránykészletek találhatóak.\nBár a terület elhagyatott, veszélyes ellenséges erők fészkelnek a közelben. Ne becsüld alá őket!\n\n[lightgray]Fedezd fel az Olajfeldolgozási lehetőségeket, ha tudod! sector.desolateRift.description = Egy extrém veszélyes zóna. Nyersanyagokban gazdag, de szűkös a hely. Magas kockázat. Hagyd el, amint lehet! Ne tévesszen meg a hosszú szünet az ellenség támadásai között! -sector.nuclearComplex.description = Egy néhai létesítmény thorium kitermelésére és feldolgozására, romokban.\n[lightgray] Fedezd fel a thoriumot és sokrétű felhasználását!\n\nAz ellenség nagy létszámban van jelen, és folyamatosan megfigyelés alatt tartják a környéket. -sector.fungalPass.description = Átmenet a magas hegyek és a mélyebben fekvő, spórák uralta lapály között. Egy kisebb ellenséges megfigyelő állomás található itt.\nSemmisítsd meg!.\nHasználj Dagger és Crawler egységeket! Pusztítsd el a két magot! -sector.biomassFacility.description = A spórák származási helye. Ebben a létesítményben fejlesztették ki őket és eredetileg itt került sor a gyártásukra.\nFedezd fel az itt található technológiákat! Használd a spórákat üzemanyag és műanyagok gyártására!\n\n[lightgray]A létesítmény pusztulása nyomán a spórák elszabadultak. A helyi ökoszisztémában semmi sem tudta felvenni a versenyt egy ennyire invazív életformával. -sector.windsweptIslands.description = Távolabb a partvonalon túl fekszik ez az elszigetelt szigetcsoport. Feljegyzések szerint egykor [accent]Plastanium[] gyártása zajlott itt.\n\nVerd vissza az ellenség vízi egységeit! Állíts fel egy bázist a szigeteken! Fedezd fel az itt talált gyárakat! -sector.extractionOutpost.description = Távoli ellenséges támaszpont, fő célja nyersanyagok továbbítása másik szektorokba.\n\n A szektorok közötti szállítás elengedhetetlen a további előrehaladáshoz. Pusztítsd el a bázist! Tanulmányozd a Launch Padot! +sector.nuclearComplex.description = Egy néhai létesítmény a 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 = Remnants of naval unit technology have been detected at this location. Repel the enemy attacks, capture this sector, and acquire the technology. -sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. -sector.onset.name = The Onset -sector.aegis.name = Aegis -sector.lake.name = Lake -sector.intersect.name = Intersect -sector.atlas.name = Atlas -sector.split.name = Split -sector.basin.name = Basin -sector.marsh.name = Marsh -sector.peaks.name = Peaks -sector.ravine.name = Ravine -sector.caldera-erekir.name = Caldera -sector.stronghold.name = Stronghold -sector.crevice.name = Crevice -sector.siege.name = Siege -sector.crossroads.name = Crossroads -sector.karst.name = Karst -sector.origin.name = Origin -sector.onset.description = Commence the conquest of Erekir. Gather resources, produce units, and begin researching technology. +sector.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 csak 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.aegis.description = This sector contains deposits of tungsten.\nResearch the [accent]Impact Drill[] to mine this resource, and destroy the enemy base in the area. -sector.lake.description = This sector's slag lake greatly limits viable units. A hover unit is the only option.\nResearch the [accent]ship fabricator[] and produce an [accent]elude[] unit as soon as possible. -sector.intersect.description = Scans suggest that this sector will be attacked from multiple sides soon after landing.\nSet up defenses quickly and expand as soon as possible.\n[accent]Mech[] units will be required for the area's rough terrain. -sector.atlas.description = This sector contains varied terrain and will require a variety of units to attack effectively.\nUpgraded units may also be necessary to get past some of the tougher enemy bases detected here.\nResearch the [accent]Electrolyzer[] and the [accent]Tank Refabricator[]. -sector.split.description = The minimal enemy presence in this sector makes it perfect for testing new transport tech. -sector.basin.description = Large enemy presence detected in this sector.\nBuild units quickly and capture enemy cores to gain a foothold. -sector.marsh.description = This sector has an abundance of arkycite, but has limited vents.\nBuild [accent]Chemical Combustion Chambers[] to generate power. -sector.peaks.description = The mountainous terrain in this sector make most units useless. Flying units will be required.\nBe aware of enemy anti-air installations. It may be possible to disable some of these installations by targeting their supporting buildings. -sector.ravine.description = No enemy cores detected in the sector, although it's an important transportation route for the enemy. Expect variety of enemy forces.\nProduce [accent]surge alloy[]. Construct [accent]Afflict[] turrets. -sector.caldera-erekir.description = The resources detected in this sector are scattered across several islands.\nResearch and deploy drone-based transportation. -sector.stronghold.description = The large enemy encampment in this sector guards significant deposits of [accent]thorium[].\nUse it to develop higher tier units and turrets. -sector.crevice.description = The enemy will send fierce attack forces to take out your base in this sector.\nDeveloping [accent]carbide[] and the [accent]Pyrolysis Generator[] may be imperative for survival. -sector.siege.description = This sector features two parallel canyons that will force a two-pronged attack.\nResearch [accent]cyanogen[] to gain the capability to create even stronger tank units.\nCaution: enemy long-range missiles have been detected. The missiles may be shot down before impact. -sector.crossroads.description = The enemy bases in this sector have been established in varying terrain. Research different units to adapt.\nAdditionally, some bases are protected by shields. Figure out how they are powered. -sector.karst.description = This sector is rich in resources, but will be attacked by the enemy once a new core lands.\nTake advantage of the resources and research [accent]phase fabric[]. -sector.origin.description = The final sector with a significant enemy presence.\nNo probable research opportunities remain - focus solely on destroying all enemy cores. -status.burning.name = Burning -status.freezing.name = Freezing -status.wet.name = Wet -status.muddy.name = Muddy -status.melting.name = Melting -status.sapped.name = Sapped -status.electrified.name = Electrified -status.spore-slowed.name = Spore Slowed -status.tarred.name = Tarred -status.overdrive.name = Overdrive -status.overclock.name = Overclock -status.shocked.name = Shocked -status.blasted.name = Blasted -status.unmoving.name = Unmoving -status.boss.name = Guardian +sector.onset.name = A Kezdet +sector.aegis.name = Égisz +sector.lake.name = Tó +sector.intersect.name = Metszéspont +sector.atlas.name = Atlasz +sector.split.name = Hasadék +sector.basin.name = Medence +sector.marsh.name = Mocsár +sector.peaks.name = Csúcsok +sector.ravine.name = Szurdok +sector.caldera-erekir.name = Kaldera +sector.stronghold.name = Erődítmény +sector.crevice.name = Repedés +sector.siege.name = Ostrom +sector.crossroads.name = Keresztutak +sector.karst.name = Karszt +sector.origin.name = Eredet + +sector.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 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 szükség lehet továbbfejlesztett egységekre.\nFedezd fel az [accent]Elektrolizátor[]t é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.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óak.\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ét irányból érkező támadásokat tesznek lehetővé.\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 a 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. + +status.burning.name = Égő +status.freezing.name = Fagyasztó +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.tarred.name = Kátrányozott +status.overdrive.name = Túlhajtás +status.overclock.name = Túlhúzás +status.shocked.name = Sokkolt +status.blasted.name = Felrobbant +status.unmoving.name = Mozdulatlan +status.boss.name = Őrző settings.language = Nyelvek -settings.data = Játék adatok +settings.data = Játék Adatok settings.reset = Alapértelmezett -settings.rebind = Módosítás +settings.rebind = Újrakötés settings.resetKey = Visszaállítás settings.controls = Irányítás settings.game = Játék settings.sound = Hangok settings.graphics = Grafika -settings.cleardata = Játék adatok törlése... -settings.clear.confirm = Biztosan törlöd ezeket az adatokat?\n A műveletet nem lehet visszavonni! -settings.clearall.confirm = [scarlet] FIGYELEM! []\n Ez törli az összes adatot, beleértve a mentéseket, Mapokat, felfedezéseket és a billentyű beállításokat.\nAz 'OK' gomb megnyomásával a játék minden adatot töröl és automatikusan kilép. +settings.cleardata = Játék Adatok Törlése... +settings.clear.confirm = Biztosan törlöd ezeket az adatokat?\nA műveletet nem lehet visszavonni! +settings.clearall.confirm = [scarlet] FIGYELEM! []\nEz törli az összes adatot, beleértve a mentéseket, pályákat, felfedezéseket és a billentyű beállításokat.\nAz 'OK' gomb megnyomásával a játék minden adatot töröl és automatikusan kilép. settings.clearsaves.confirm = Biztosan törlöd az összes mentést? -settings.clearsaves = Mentések törlése -settings.clearresearch = Kutatás törlése +settings.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 = 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 > clear = Törlés banned = [scarlet]Kitiltva -unsupported.environment = [scarlet]Unsupported Environment +unsupported.environment = [scarlet]Nem támogatott környezet yes = Igen no = Nem info.title = Infó @@ -862,69 +913,69 @@ error.title = [scarlet]Hiba történt error.crashtitle = Hiba történt unit.nobuild = [scarlet]Az egység nem tud építeni lastaccessed = [lightgray]Utoljára megtekintve: {0} -lastcommanded = [lightgray]Last Commanded: {0} +lastcommanded = [lightgray]Utoljára irányítva: {0} block.unknown = [lightgray]??? -stat.showinmap = -stat.description = Célja +stat.showinmap = +stat.description = Rendeltetés stat.input = Bemenet stat.output = Kimenet -stat.maxefficiency = Max Efficiency -stat.booster = Gyorsító -stat.tiles = Szükséges talaj -stat.affinities = Módosító körülmények -stat.opposites = Opposites -stat.powercapacity = Elektromos kapacitás +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.damage = Sebzés -stat.targetsair = Repülő célpontok -stat.targetsground = Földi célpontok -stat.itemsmoved = Hozam -stat.launchtime = Kilövések közti idő +stat.targetsair = Repülő Célpontok +stat.targetsground = Földi Célpontok +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 = Max kapcsolat +stat.liquidcapacity = Folyadék Kapacitás +stat.powerrange = Áram Hatótáv +stat.linkrange = Kapcsolat Hatótáv +stat.instructions = Instrukciók +stat.powerconnections = Maximális Kapcsolat stat.poweruse = Áramhasználat stat.powerdamage = Áram/Sebzés -stat.itemcapacity = Item kapacitás -stat.memorycapacity = Memória méret -stat.basepowergeneration = Alap áramtermelés -stat.productiontime = Gyártás hossza -stat.repairtime = Teljes javítás hossza -stat.repairspeed = Repair Speed +stat.itemcapacity = Nyersanyag Kapacitás +stat.memorycapacity = Memória Méret +stat.basepowergeneration = Alap Áramtermelés +stat.productiontime = Gyártás Hossza +stat.repairtime = Teljes Javítás Hossza +stat.repairspeed = Javítási Sebesség stat.weapons = Fegyverek stat.bullet = Töltény -stat.moduletier = Module Tier -stat.unittype = Unit Type +stat.moduletier = Modul Szintje +stat.unittype = Egység Típus stat.speedincrease = Gyorsítás stat.range = Hatótáv stat.drilltier = Kitermelhető -stat.drillspeed = Alap kitermelési sebesség -stat.boosteffect = Boost hatása -stat.maxunits = Maximális aktív egység +stat.drillspeed = Alap Kitermelési Sebesség +stat.boosteffect = Erősítés Hatása +stat.maxunits = Maximális Aktív Egység stat.health = Életpontok -stat.armor = Armor -stat.buildtime = Építés hossza -stat.maxconsecutive = Maximum egymást követő -stat.buildcost = Építés ára +stat.armor = Páncél +stat.buildtime = Építés Időtartama +stat.maxconsecutive = Maximum Egymást Követő +stat.buildcost = Építés Ára stat.inaccuracy = Pontatlanság -stat.shots = Lövés -stat.reload = Lövés/Másodperc -stat.ammo = Lövedék -stat.shieldhealth = Pajzs élete -stat.cooldowntime = Újratöltés hossza +stat.shots = Lövések +stat.reload = Tüzelési Ráta +stat.ammo = Lőszer +stat.shieldhealth = Pajzs Élete +stat.cooldowntime = Újratöltés Időtartama stat.explosiveness = Robbanékonyság -stat.basedeflectchance = Base Deflect Chance -stat.lightningchance = Villámlás esélye -stat.lightningdamage = Villámlás sebzése +stat.basedeflectchance = Alap Hárítási Esély +stat.lightningchance = Villámlás Esélye +stat.lightningdamage = Villámlás Sebzése stat.flammability = Éghetőség stat.radioactivity = Radioaktivitás -stat.charge = Charge +stat.charge = Töltés stat.heatcapacity = Hőkapacitás stat.viscosity = Viszkozitás stat.temperature = Hőmérséklet @@ -932,352 +983,378 @@ stat.speed = Sebesség stat.buildspeed = Építési sebesség stat.minespeed = Kitermelési sebesség stat.minetier = Kitermelési szint -stat.payloadcapacity = Teher kapacitás +stat.payloadcapacity = Rakomány kapacitás stat.abilities = Képességek -stat.canboost = Can Boost +stat.canboost = Erősíthető stat.flying = Repül -stat.ammouse = Lövedék használat -stat.damagemultiplier = Damage Multiplier -stat.healthmultiplier = Health Multiplier -stat.speedmultiplier = Speed Multiplier -stat.reloadmultiplier = Reload Multiplier -stat.buildspeedmultiplier = Build Speed Multiplier -stat.reactive = Reacts -stat.immunities = Immunities -stat.healing = Healing +stat.ammouse = Lő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.reactive = Reakciók +stat.immunities = Immunitások +stat.healing = Gyógyulás ability.forcefield = Erőtér -ability.repairfield = Javító mező -ability.statusfield = Status Field +ability.repairfield = Javító Mező +ability.statusfield = Állapot Mező ability.unitspawn = Gyár -ability.shieldregenfield = Pajzsos regeneráló mező -ability.movelightning = Világítás -ability.shieldarc = Shield Arc -ability.suppressionfield = Regen Suppression Field -ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +ability.shieldregenfield = Pajzs Regeneráló Mező +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.regen = Regeneráció -bar.onlycoredeposit = Only Core Depositing Allowed - -bar.drilltierreq = Erősebb Drill szükséges -bar.noresources = Nincs elég nyersanyag -bar.corereq = Core Base Required -bar.corefloor = Core Zone Tile Required -bar.cargounitcap = Cargo Unit Cap Reached -bar.drillspeed = Kitermelés: {0}/s -bar.pumpspeed = Kitermelés: {0}/s -bar.efficiency = Hatékonyság: {0}% -bar.boost = Boost: +{0}% +bar.onlycoredeposit = Csak A Mag Elhelyezése Megengedett +bar.drilltierreq = Erősebb Fúró/Vágó Szükséges +bar.noresources = Hiányzó Nyersanyagok +bar.corereq = Mag Szükséges +bar.corefloor = Mag 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.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: {0} +bar.poweramount = Áram Kimenet: {0} bar.poweroutput = Áramtermelés: {0} -bar.powerlines = Kapcsolat: {0}/{1} -bar.items = Nyersanyag: {0} +bar.powerlines = Kapcsolatok: {0}/{1} +bar.items = Nyersanyagok: {0} bar.capacity = Tárhely: {0} bar.unitcap = {0} {1}/{2} bar.liquid = Folyadék bar.heat = Hő -bar.instability = Instability -bar.heatamount = Heat: {0} -bar.heatpercent = Heat: {0} ({1}%) +bar.instability = Instabilitás +bar.heatamount = Hő: {0} +bar.heatpercent = Hő: {0} ({1}%) bar.power = Áram bar.progress = Építés állapota -bar.loadprogress = Progress -bar.launchcooldown = Launch Cooldown +bar.loadprogress = Állapot +bar.launchcooldown = Lehűlés Indítása bar.input = Bemenet bar.output = Kimenet -bar.strength = [stat]{0}[lightgray]x strength +bar.strength = [stat]{0}[lightgray]x erő -units.processorcontrol = [lightgray]Processor Controlled +units.processorcontrol = [lightgray]Processzor Vezérelt bullet.damage = [stat]{0}[lightgray] sebzés bullet.splashdamage = [stat]{0}[lightgray] területi sebzés ~[stat] {1}[lightgray] mező bullet.incendiary = [stat]gyújtó bullet.homing = [stat]nyomkövető -bullet.armorpierce = [stat]armor piercing -bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles -bullet.interval = [stat]{0}/sec[lightgray] interval bullets: -bullet.frags = [stat]{0}[lightgray]x frag bullets: -bullet.lightning = [stat]{0}[lightgray]x lightning ~ [stat]{1}[lightgray] damage +bullet.armorpierce = [stat]páncéltörő +bullet.maxdamagefraction = [stat]{0}%[lightgray] sebzés határérték +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.knockback = [stat]{0}[lightgray] hátralökés -bullet.pierce = [stat]{0}[lightgray]x átütő -bullet.infinitepierce = [stat]átütő +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] direct repair +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] tiles range +bullet.range = [stat]{0}[lightgray] csempe tartomány unit.blocks = blokk unit.blockssquared = blokk² -unit.powersecond = egység/sec -unit.tilessecond = tiles/second -unit.liquidsecond = egység/sec -unit.itemssecond = item/sec -unit.liquidunits = egység -unit.powerunits = egység -unit.heatunits = heat units +unit.powersecond = á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.degrees = fok unit.seconds = másodperc unit.minutes = perc unit.persecond = /sec unit.perminute = /min -unit.timesspeed = x speed +unit.timesspeed = x sebesség unit.percent = % -unit.shieldhealth = shield health -unit.items = item +unit.shieldhealth = pajzs állapot +unit.items = nyersanyag unit.thousands = k -unit.millions = mil +unit.millions = Mil unit.billions = Mrd unit.pershot = /lövés category.purpose = Cél category.general = Általános category.power = Áram category.liquids = Folyadékok -category.items = Itemek +category.items = Nyersanyagok category.crafting = Bemenet/Kimenet category.function = Funkció -category.optional = Lehetséges fokozás -setting.skipcoreanimation.name = Skip Core Launch/Land Animation -setting.landscape.name = Fekvő mód zárolása +category.optional = Lehetséges Erősítés +setting.skipcoreanimation.name = Mag Indítás/Leszállás 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.linear.name = Lineáris szűrés -setting.hints.name = Tippek -setting.logichints.name = Logic Hints -setting.backgroundpause.name = Szüneteltetés a háttérben -setting.buildautopause.name = Automatikus szünet építéskor -setting.doubletapmine.name = Double-Tap to Mine -setting.commandmodehold.name = Hold For Command Mode -setting.modcrashdisable.name = Disable Mods On Startup Crash -setting.animatedwater.name = Animált víz -setting.animatedshields.name = Animált pajzsok -setting.playerindicators.name = Játékos mutató -setting.indicators.name = Ellenség mutató -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.blockreplace.name = Automatikus Blokk Javaslatok +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.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.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.none = Nincs setting.fpscap.text = {0} FPS -setting.uiscale.name = UI mérete [lightgray] (újraindítás szükséges)[] -setting.uiscale.description = Restart required to apply changes. -setting.swapdiagonal.name = Mindig átlós elhelyezés +setting.uiscale.name = UI Méretezése +setting.uiscale.description = A módosítások alkalmazásához újraindítás szükséges. +setting.swapdiagonal.name = Mindig Átlós Elhelyezés setting.difficulty.training = Kiképzés setting.difficulty.easy = Könnyű -setting.difficulty.normal = Közepes +setting.difficulty.normal = Normál setting.difficulty.hard = Nehéz setting.difficulty.insane = Őrült setting.difficulty.name = Nehézség: -setting.screenshake.name = Képernyő rázkódása -setting.bloomintensity.name = Bloom Intensity +setting.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 = Futószalag útvonalkeresés építéskor -setting.sensitivity.name = Controller érzékenység -setting.saveinterval.name = Mentési időköz +setting.effects.name = Effektek Megjelenítése +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.saveinterval.name = Mentési Időköz setting.seconds = {0} másodperc setting.milliseconds = {0} ezredmásodperc -setting.fullscreen.name = Teljesképernyő -setting.borderlesswindow.name = Keret nélküli ablak[lightgray] (újraindításra lehet szükség) -setting.borderlesswindow.name.windows = Borderless Fullscreen -setting.borderlesswindow.description = Restart may be required to apply changes. -setting.fps.name = FPS és Ping mutatása -setting.console.name = Enable Console -setting.smoothcamera.name = Sima kamera +setting.fullscreen.name = Teljes Képernyő +setting.borderlesswindow.name = Keret Nélküli Ablak +setting.borderlesswindow.name.windows = Keret Nélküli Teljes Képernyő +setting.borderlesswindow.description = A változások alkalmazásához újraindításra lehet szükség. +setting.fps.name = FPS & Ping mutatása +setting.console.name = Konzol Engedélyezése +setting.smoothcamera.name = Egyenletes Kamera setting.vsync.name = VSync setting.pixelate.name = Pixeles -setting.minimap.name = Minimap -setting.coreitems.name = Magban lévő nyersanyagok megjelenítése -setting.position.name = A játékos pozíciójának megjelenítése -setting.mouseposition.name = Show Mouse Position -setting.musicvol.name = Zene hangerő -setting.atmosphere.name = Bolygó atmoszféra -setting.drawlight.name = Draw Darkness/Lighting -setting.ambientvol.name = Környezeti hangerő -setting.mutemusic.name = Zene némítása -setting.sfxvol.name = SFX hangerő -setting.mutesound.name = Hang némítása -setting.crashreport.name = Névtelen crash jelentések -setting.savecreate.name = Automatikus mentés -setting.publichost.name = Nyilvános játék láthatósága -setting.playerlimit.name = Játékos limit -setting.chatopacity.name = Chat átlátszatlansága -setting.lasersopacity.name = Villanyvezeték álátszatlansága -setting.bridgeopacity.name = Híd átlátszatlansága -setting.playerchat.name = Játékos szóbuborékok megjelenítése -setting.showweather.name = Időjárás grafika megjelenítése -setting.hidedisplays.name = Hide Logic Displays +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.ambientvol.name = Környezeti Hangerő +setting.mutemusic.name = Zene Némítása +setting.sfxvol.name = SFX Hangerő +setting.mutesound.name = Hang Némítása +setting.crashreport.name = Névtelen Összeomlási Jelentések +setting.savecreate.name = Automatikus Mentés +setting.steampublichost.name = Nyilvános Játék Láthatósága +setting.playerlimit.name = Játékos Limit +setting.chatopacity.name = Csevegő Átlátszatlansága +setting.lasersopacity.name = Villanyvezeték Átlátszatlansága +setting.bridgeopacity.name = Híd Átlátszatlansága +setting.playerchat.name = Játékos Szóbuborékok Megjelenítése +setting.showweather.name = Időjárás Grafika Megjelenítése +setting.hidedisplays.name = 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 = 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 = 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á. 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.cancel = Mégse & Kilépés setting.bloom.name = Bloom keybind.title = Gyorsbillentyűk 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.multiplayer.name = Többjátékos -category.blocks.name = Blokk választás -placement.blockselectkeys = \n[lightgray]Key: [{0}, +category.blocks.name = Blokk Választás +placement.blockselectkeys = \n[lightgray]Kulcs: [{0}, keybind.respawn.name = Újraéledés -keybind.control.name = Egység irányítása -keybind.clear_building.name = Építési terv törlése -keybind.press = Nyomj meg egy billentyűt -keybind.press.axis = Press an axis or key... -keybind.screenshot.name = Map képernyőkép +keybind.control.name = Egység Irányítása +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.toggle_power_lines.name = Villanyvezetékek be/ki -keybind.toggle_block_status.name = Blokk státusz be/ki +keybind.toggle_block_status.name = Blokk állapot 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.mouse_move.name = Egér Követése keybind.pan.name = Felderítés -keybind.boost.name = Boost -keybind.command_mode.name = Command Mode -keybind.rebuild_select.name = Rebuild Region -keybind.schematic_select.name = Terület kijelölése -keybind.schematic_menu.name = Schematic menü -keybind.schematic_flip_x.name = Schematic tükrözése vízszintesen -keybind.schematic_flip_y.name = Schematic tükrözése függőlegesen -keybind.category_prev.name = Előző kategória -keybind.category_next.name = Következő kategória -keybind.block_select_left.name = Blokk váltás balra -keybind.block_select_right.name = Blokk váltás jobbra -keybind.block_select_up.name = Blokk váltás fel -keybind.block_select_down.name = Blokk váltás le -keybind.block_select_01.name = Blokk kategória 1 -keybind.block_select_02.name = Blokk kategória 2 -keybind.block_select_03.name = Blokk kategória 3 -keybind.block_select_04.name = Blokk kategória 4 -keybind.block_select_05.name = Blokk kategória 5 -keybind.block_select_06.name = Blokk kategória 6 -keybind.block_select_07.name = Blokk kategória 7 -keybind.block_select_08.name = Blokk kategória 8 -keybind.block_select_09.name = Blokk kategória 9 -keybind.block_select_10.name = Blokk kategória 10 -keybind.fullscreen.name = Teljesképernyő be/ki +keybind.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.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 Berakodása +keybind.unit_command_load_blocks = Egység Parancs: Blokkok Berakodása +keybind.unit_command_unload_payload = Egység Parancs: Kirakodás A Rakományszállítóból + +keybind.rebuild_select.name = Régió Újjáépítése +keybind.schematic_select.name = Terület Kijelölése +keybind.schematic_menu.name = Vázlat Menü +keybind.schematic_flip_x.name = Vázlat Tükrözése Vízszintesen +keybind.schematic_flip_y.name = Vázlat Tükrözése Függőlegesen +keybind.category_prev.name = Előző Kategória +keybind.category_next.name = Következő Kategória +keybind.block_select_left.name = Blokk Váltás Balra +keybind.block_select_right.name = Blokk Váltás Jobbra +keybind.block_select_up.name = Blokk Váltás Fel +keybind.block_select_down.name = Blokk Váltás Le +keybind.block_select_01.name = Kategória/Blokk Választás 1 +keybind.block_select_02.name = Kategória/Blokk Választás 2 +keybind.block_select_03.name = Kategória/Blokk Választás 3 +keybind.block_select_04.name = Kategória/Blokk Választás 4 +keybind.block_select_05.name = Kategória/Blokk Választás 5 +keybind.block_select_06.name = Kategória/Blokk Választás 6 +keybind.block_select_07.name = Kategória/Blokk Választás 7 +keybind.block_select_08.name = Kategória/Blokk Választás 8 +keybind.block_select_09.name = Kategória/Blokk Választás 9 +keybind.block_select_10.name = Kategória/Blokk Választás 10 +keybind.fullscreen.name = Teljes Képernyő be/ki keybind.select.name = Kiválasztás/Lövés -keybind.diagonal_placement.name = Átlós elhelyezés -keybind.pick.name = Blokk másolása -keybind.break_block.name = Blokk törlése -keybind.select_all_units.name = Select All Units -keybind.select_all_unit_factories.name = Select All Unit Factories -keybind.deselect.name = Blokk választás törlése -keybind.pickupCargo.name = Rakomány felvétele -keybind.dropCargo.name = Rakomány lerakása +keybind.diagonal_placement.name = Átlós Élhelyezés +keybind.pick.name = Blokk Másolá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.pickupCargo.name = Rakomány Felvétele +keybind.dropCargo.name = Rakomány Lerakása keybind.shoot.name = Lövés -keybind.zoom.name = Zoom +keybind.zoom.name = Nagyítás keybind.menu.name = Menü keybind.pause.name = Szünet -keybind.pause_building.name = Építés szüneteltetése/folytatása -keybind.minimap.name = Minimap -keybind.planet_map.name = Bolygó térkép +keybind.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 = Block Info -keybind.chat.name = Chat -keybind.player_list.name = Játékos lista +keybind.block_info.name = Blokk Infó +keybind.chat.name = Csevegés +keybind.player_list.name = Játékos Lista keybind.console.name = Konzol -keybind.rotate.name = Frogatás -keybind.rotateplaced.name = Épület forgatása (tartsd nyomva) -keybind.toggle_menus.name = Toggle Menus -keybind.chat_history_prev.name = Chat görgetés fel -keybind.chat_history_next.name = Chat görgetés le -keybind.chat_scroll.name = Chat görgetés -keybind.chat_mode.name = Chat mód megváltoztatása -keybind.drop_unit.name = Egység elengedése -keybind.zoom_minimap.name = Zoom a Minimapoon -mode.help.title = Játékmódok leírása +keybind.rotate.name = Forgatás +keybind.rotateplaced.name = Meglévő Forgatása (Tartsd Nyomva) +keybind.toggle_menus.name = Menük Váltása +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és +keybind.chat_mode.name = Csevegés Mód Megváltoztatása +keybind.drop_unit.name = Egység Eldobása +keybind.zoom_minimap.name = Zoom A Minitérképen +mode.help.title = Játékmódok Leírása mode.survival.name = Túlélő -mode.survival.description = A normál mód. Korlátozott nyersanyag és automatikusan érkező hullámok.\n[gray]Szükséges hozzá ellenséges spawn a Mapon. -mode.sandbox.name = Szabad játék -mode.sandbox.description = Végtelen erőforrás, nincs időzítés a hullámokhoz. +mode.survival.description = A normál mód. Korlátozott nyersanyag és automatikusan érkező hullámok.\n[gray]Szükséges hozzá egy ellenséges kezdőpont a pályán. +mode.sandbox.name = Homokozó +mode.sandbox.description = Végtelen nyersanyagforrás, nincs időzítés a hullámokhoz. mode.editor.name = Szerkesztő mode.pvp.name = PvP -mode.pvp.description = Harcolj másik játékosok ellen.\n[gray]Szükséges hozzá legalább két különböző színű mag a Mapon. +mode.pvp.description = Harcolj más játékosok ellen.\n[gray]Szükséges hozzá legalább két különböző színű Mag a pályán. mode.attack.name = Támadás -mode.attack.description = Pusztítsd el az ellenség bázisát. \n[gray]Szükséges hozzá egy piros mag a Mapon. -mode.custom = Egyéni szabályok +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.custom = Egyéni Szabályok -rules.infiniteresources = Végtelen erőforrás -rules.onlydepositcore = Only Allow Core Depositing -rules.reactorexplosions = Reaktor robbanás -rules.coreincinerates = Túlcsorduló itemek megsemmisítse a magban -rules.disableworldprocessors = Disable World Processors -rules.schematic = Schematicok -rules.wavetimer = Hullám időzítő -rules.wavesending = Wave Sending +rules.invaliddata = Érvénytelen adatok 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.disableworldprocessors = Világprocesszorok Letiltása +rules.schematic = Vázlatok Engedélyezése +rules.wavetimer = Hullám Időzítő +rules.wavesending = Hullám Küldése rules.waves = Hullámok -rules.attack = Támadás mód -rules.buildai = Base Builder AI -rules.buildaitier = Builder AI Tier -rules.rtsai = RTS AI -rules.rtsminsquadsize = Min Squad Size -rules.rtsmaxsquadsize = Max Squad Size -rules.rtsminattackweight = Min Attack Weight -rules.cleanupdeadteams = Clean Up Defeated Team Buildings (PvP) -rules.corecapture = Capture Core On Destruction -rules.polygoncoreprotection = Polygonal Core Protection -rules.placerangecheck = Placement Range Check -rules.enemyCheat = Végtelen AI (Piros csapat) Erőforrás -rules.blockhealthmultiplier = Épület életpont szorzó -rules.blockdamagemultiplier = Épület sebzés szorzó -rules.unitbuildspeedmultiplier = Egység gyártási sebesség szorzó -rules.unitcostmultiplier = Unit Cost Multiplier -rules.unithealthmultiplier = Egység életpont szorzó -rules.unitdamagemultiplier = Egység sebzés szorzó -rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier -rules.solarmultiplier = Solar Power Multiplier -rules.unitcapvariable = Cores Contribute To Unit Cap -rules.unitcap = Base Unit Cap -rules.limitarea = Limit Map Area -rules.enemycorebuildradius = Ellenséges mag körüli tiltott zóna sugara:[lightgray] (mező) -rules.wavespacing = Hullám időzítés:[lightgray] (sec) -rules.initialwavespacing = Initial Wave Spacing:[lightgray] (sec) -rules.buildcostmultiplier = Építési költség szorzó -rules.buildspeedmultiplier = Építési sebesség szorzó -rules.deconstructrefundmultiplier = Bontási visszatérítés szorzó -rules.waitForWaveToEnd = Waves Wait for Enemies -rules.wavelimit = Map Ends After Wave -rules.dropzoneradius = Ledobási zóna sugara:[lightgray] (mező) -rules.unitammo = Egységeknek kell lövedék -rules.enemyteam = Enemy Team -rules.playerteam = Player Team +rules.attack = Támadás Mód +rules.buildai = Épületalkotó AI +rules.buildaitier = Épületalkotó AI Szintje +rules.rtsai = RTS AI [red](WIP) +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.placerangecheck = Elhelyezési Tartomány Ellenőrzése +rules.enemyCheat = Végtelen Ellenséges Csapat Erőforrások +rules.blockhealthmultiplier = Épület Életpont Szorzó +rules.blockdamagemultiplier = Épület Sebzés Szorzó +rules.unitbuildspeedmultiplier = Egység Gyártási Sebesség Szorzó +rules.unitcostmultiplier = 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] (mp) +rules.initialwavespacing = Az Első Hullám Előtti Szünet Időrtama:[lightgray] (mp) +rules.buildcostmultiplier = Építési Költség Szorzó +rules.buildspeedmultiplier = Építési Sebesség Szorzó +rules.deconstructrefundmultiplier = Bontási Visszatérítés Szorzó +rules.waitForWaveToEnd = 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 [red](törölhető) +rules.enemyteam = Elenséges Csapat +rules.playerteam = Saját Csapat rules.title.waves = Hullámok -rules.title.resourcesbuilding = Erőforrások és épületek +rules.title.resourcesbuilding = Nyersanyagforrások & Épületek rules.title.enemy = Ellenségek rules.title.unit = Egységek rules.title.experimental = Kísérleti rules.title.environment = Környezet -rules.title.teams = Teams -rules.title.planet = Planet +rules.title.teams = Csapatok +rules.title.planet = Bolygó rules.lighting = Világítás -rules.fog = Fog of War +rules.fog = Köd rules.fire = Tűz -rules.anyenv = -rules.explosions = Épület/Egység robbanás sebzés +rules.anyenv = +rules.explosions = Épület/Egység Robbanás Sebzés rules.ambientlight = Háttérvilágítás rules.weather = Időjárás rules.weather.frequency = Gyakoriság: rules.weather.always = Mindig rules.weather.duration = Időtartam: -content.item.name = Itemek +content.item.name = Nyersanyagok content.liquid.name = Folyadékok content.unit.name = Egységek content.block.name = Blokkok -content.status.name = Status Effects +content.status.name = Állapothatások content.sector.name = Szektor -content.team.name = Factions -wallore = (Wall) +content.team.name = Csapatok + +wallore = (Fal) item.copper.name = Réz item.lead.name = Ólom @@ -1286,32 +1363,33 @@ item.graphite.name = Grafit item.titanium.name = Titán item.thorium.name = Tórium item.silicon.name = Szilícium -item.plastanium.name = Plasztínium -item.phase-fabric.name = Fázisos Szövet -item.surge-alloy.name = Multiötvözet -item.spore-pod.name = Spóratok +item.plastanium.name = Műanyag +item.phase-fabric.name = Tóritkvarc +item.surge-alloy.name = Elektrometál +item.spore-pod.name = Spóra Kapszula item.sand.name = Homok item.blast-compound.name = Robbanóelegy item.pyratite.name = Piratit item.metaglass.name = Ólomüveg -item.scrap.name = Hulladék -item.fissile-matter.name = Fissile Matter -item.beryllium.name = Beryllium -item.tungsten.name = Tungsten -item.oxide.name = Oxide -item.carbide.name = Carbide -item.dormant-cyst.name = Dormant Cyst +item.scrap.name = Törmelék +item.fissile-matter.name = Hasadóanyag +item.beryllium.name = Berillium +item.tungsten.name = Volfrám +item.oxide.name = Oxid +item.carbide.name = Karbid +item.dormant-cyst.name = Nyugvó-Ciszta + liquid.water.name = Víz liquid.slag.name = Salak liquid.oil.name = Olaj liquid.cryofluid.name = Hűtőfolyadék -liquid.neoplasm.name = Neoplasm -liquid.arkycite.name = Arkycite +liquid.neoplasm.name = Neoplazma +liquid.arkycite.name = Arkycit liquid.gallium.name = Gallium -liquid.ozone.name = Ozone -liquid.hydrogen.name = Hydrogen -liquid.nitrogen.name = Nitrogen -liquid.cyanogen.name = Cyanogen +liquid.ozone.name = Ózon +liquid.hydrogen.name = Hidrogén +liquid.nitrogen.name = Nitrogén +liquid.cyanogen.name = Cianogén unit.dagger.name = Dagger unit.mace.name = Mace @@ -1351,6 +1429,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 @@ -1373,352 +1452,355 @@ unit.manifold.name = Manifold unit.assembly-drone.name = Assembly Drone unit.latum.name = Latum unit.renale.name = Renale + block.parallax.name = Parallax -block.cliff.name = Cliff -block.sand-boulder.name = Sand Boulder -block.basalt-boulder.name = Basalt Boulder -block.grass.name = Grass -block.molten-slag.name = Slag -block.pooled-cryofluid.name = Cryofluid -block.space.name = Space -block.salt.name = Salt -block.salt-wall.name = Salt Wall -block.pebbles.name = Pebbles -block.tendrils.name = Tendrils -block.sand-wall.name = Sand Wall -block.spore-pine.name = Spore Pine -block.spore-wall.name = Spore Wall -block.boulder.name = Boulder -block.snow-boulder.name = Snow Boulder -block.snow-pine.name = Snow Pine -block.shale.name = Shale -block.shale-boulder.name = Shale Boulder -block.moss.name = Moss -block.shrubs.name = Shrubs -block.spore-moss.name = Spore Moss -block.shale-wall.name = Shale Wall -block.scrap-wall.name = Scrap Wall -block.scrap-wall-large.name = Large Scrap Wall -block.scrap-wall-huge.name = Huge Scrap Wall -block.scrap-wall-gigantic.name = Gigantic Scrap Wall -block.thruster.name = Thruster -block.kiln.name = Kiln -block.graphite-press.name = Graphite Press -block.multi-press.name = Multi-Press -block.constructing = {0} [lightgray](Constructing) -block.spawn.name = Enemy Spawn -block.core-shard.name = Core: Shard -block.core-foundation.name = Core: Foundation -block.core-nucleus.name = Core: Nucleus -block.deep-water.name = Deep Water -block.shallow-water.name = Water -block.tainted-water.name = Tainted Water -block.deep-tainted-water.name = Deep Tainted Water -block.darksand-tainted-water.name = Dark Sand Tainted Water -block.tar.name = Tar -block.stone.name = Stone -block.sand-floor.name = Sand -block.darksand.name = Dark Sand -block.ice.name = Ice -block.snow.name = Snow -block.crater-stone.name = Craters -block.sand-water.name = Sand water -block.darksand-water.name = Dark Sand Water -block.char.name = Char -block.dacite.name = Dacite -block.rhyolite.name = Rhyolite -block.dacite-wall.name = Dacite Wall -block.dacite-boulder.name = Dacite Boulder -block.ice-snow.name = Ice Snow -block.stone-wall.name = Stone Wall -block.ice-wall.name = Ice Wall -block.snow-wall.name = Snow Wall -block.dune-wall.name = Dune Wall -block.pine.name = Pine -block.dirt.name = Dirt -block.dirt-wall.name = Dirt Wall -block.mud.name = Mud -block.white-tree-dead.name = White Tree Dead -block.white-tree.name = White Tree -block.spore-cluster.name = Spore Cluster -block.metal-floor.name = Metal Floor 1 -block.metal-floor-2.name = Metal Floor 2 -block.metal-floor-3.name = Metal Floor 3 -block.metal-floor-4.name = Metal Floor 4 -block.metal-floor-5.name = Metal Floor 4 -block.metal-floor-damaged.name = Metal Floor Damaged -block.dark-panel-1.name = Dark Panel 1 -block.dark-panel-2.name = Dark Panel 2 -block.dark-panel-3.name = Dark Panel 3 -block.dark-panel-4.name = Dark Panel 4 -block.dark-panel-5.name = Dark Panel 5 -block.dark-panel-6.name = Dark Panel 6 -block.dark-metal.name = Dark Metal -block.basalt.name = Basalt -block.hotrock.name = Hot Rock -block.magmarock.name = Magma Rock -block.copper-wall.name = Copper Wall -block.copper-wall-large.name = Large Copper Wall -block.titanium-wall.name = Titanium Wall -block.titanium-wall-large.name = Large Titanium Wall -block.plastanium-wall.name = Plastanium Wall -block.plastanium-wall-large.name = Large Plastanium Wall -block.phase-wall.name = Phase Wall -block.phase-wall-large.name = Large Phase Wall -block.thorium-wall.name = Thorium Wall -block.thorium-wall-large.name = Large Thorium Wall -block.door.name = Door -block.door-large.name = Large Door +block.cliff.name = Szirt +block.sand-boulder.name = Homok Szikla +block.basalt-boulder.name = Bazalt Szikla +block.grass.name = Fű +block.molten-slag.name = Salak +block.pooled-cryofluid.name = Hűtőfolyadék Medence +block.space.name = Űr +block.salt.name = Só +block.salt-wall.name = Só Fal +block.pebbles.name = Kavicsok +block.tendrils.name = Indák +block.sand-wall.name = Homok Fal +block.spore-pine.name = Spóra Fenyő +block.spore-wall.name = Spóra Fal +block.boulder.name = Szikla +block.snow-boulder.name = Hó Szikla +block.snow-pine.name = Havas Fenyő +block.shale.name = Pala +block.shale-boulder.name = Pala Szikla +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.thruster.name = Hajtómű +block.kiln.name = Kemence +block.graphite-press.name = Grafit Préselő +block.multi-press.name = Grafit 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ély Víz +block.shallow-water.name = Víz +block.tainted-water.name = Szennyezett Víz +block.deep-tainted-water.name = Mély Szennyezett Víz +block.darksand-tainted-water.name = Sötét Homokkal Szennyezett Víz +block.tar.name = Kátrány +block.stone.name = Kő +block.sand-floor.name = Homok +block.darksand.name = Sötét Homok +block.ice.name = Jég +block.snow.name = Hó +block.crater-stone.name = Kráterek +block.sand-water.name = Homokvíz +block.darksand-water.name = Sötét Homokvíz +block.char.name = Faszén +block.dacite.name = Dácit +block.rhyolite.name = Riolit +block.dacite-wall.name = Dácit Fal +block.dacite-boulder.name = Dácit Szikla +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.pine.name = Fenyő +block.dirt.name = Sár +block.dirt-wall.name = Sár Fal +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.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.door.name = Ajtó +block.door-large.name = Nagy Ajtó block.duo.name = Duo block.scorch.name = Scorch block.scatter.name = Scatter block.hail.name = Hail block.lancer.name = Lancer -block.conveyor.name = Conveyor -block.titanium-conveyor.name = Titanium Conveyor -block.plastanium-conveyor.name = Plastanium Conveyor -block.armored-conveyor.name = Armored Conveyor -block.junction.name = Junction -block.router.name = Router -block.distributor.name = Distributor -block.sorter.name = Sorter -block.inverted-sorter.name = Inverted Sorter -block.message.name = Message -block.reinforced-message.name = Reinforced Message -block.world-message.name = World Message -block.illuminator.name = Illuminator -block.overflow-gate.name = Overflow Gate -block.underflow-gate.name = Underflow Gate -block.silicon-smelter.name = Silicon Smelter -block.phase-weaver.name = Phase Weaver -block.pulverizer.name = Pulverizer -block.cryofluid-mixer.name = Cryofluid Mixer -block.melter.name = Melter -block.incinerator.name = Incinerator -block.spore-press.name = Spore Press -block.separator.name = Separator -block.coal-centrifuge.name = Coal Centrifuge -block.power-node.name = Power Node -block.power-node-large.name = Large Power Node -block.surge-tower.name = Surge Tower -block.diode.name = Battery Diode -block.battery.name = Battery -block.battery-large.name = Large Battery -block.combustion-generator.name = Combustion Generator -block.steam-generator.name = Steam Generator -block.differential-generator.name = Differential Generator -block.impact-reactor.name = Impact Reactor -block.mechanical-drill.name = Mechanical Drill -block.pneumatic-drill.name = Pneumatic Drill -block.laser-drill.name = Laser Drill -block.water-extractor.name = Water Extractor -block.cultivator.name = Cultivator -block.conduit.name = Conduit -block.mechanical-pump.name = Mechanical Pump -block.item-source.name = Item Source -block.item-void.name = Item Void -block.liquid-source.name = Liquid Source -block.liquid-void.name = Liquid Void -block.power-void.name = Power Void -block.power-source.name = Power Source -block.unloader.name = Unloader -block.vault.name = Vault +block.conveyor.name = Szállítószalag +block.titanium-conveyor.name = Titán Szállítószalag +block.plastanium-conveyor.name = Műanyag Szállítószalag +block.armored-conveyor.name = Páncélozott Szállítószalag +block.junction.name = Elágazás +block.router.name = Elosztó +block.distributor.name = Terjesztő +block.sorter.name = Válogató +block.inverted-sorter.name = Inverz Válogató +block.message.name = Üzenet +block.reinforced-message.name = Megerősített Üzenet +block.world-message.name = Világ Üzenet +block.illuminator.name = Világítótest +block.overflow-gate.name = Alul-folyó Kapu +block.underflow-gate.name = Túlfolyó Kapu +block.silicon-smelter.name = Szilícium Kohó +block.phase-weaver.name = Tóritkvarcképző +block.pulverizer.name = Porlasztó +block.cryofluid-mixer.name = Hűtőfolyadék Keverő +block.melter.name = Olvasztó +block.incinerator.name = Törmelékégető +block.spore-press.name = Spóra Sajtoló +block.separator.name = Leválasztó +block.coal-centrifuge.name = Szén Centrifuga +block.power-node.name = Villanyoszlop +block.power-node-large.name = Nagy Villanyoszlop +block.surge-tower.name = Villanytorony +block.diode.name = Akkumulátor Dióda +block.battery.name = Akkumulátor +block.battery-large.name = Nagy Akkumulátor +block.combustion-generator.name = Belső-égetésű 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.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.unloader.name = Kirakodó +block.vault.name = Raktár block.wave.name = Wave block.tsunami.name = Tsunami block.swarmer.name = Swarmer block.salvo.name = Salvo block.ripple.name = Ripple -block.phase-conveyor.name = Phase Conveyor -block.bridge-conveyor.name = Bridge Conveyor -block.plastanium-compressor.name = Plastanium Compressor -block.pyratite-mixer.name = Pyratite Mixer -block.blast-mixer.name = Blast Mixer -block.solar-panel.name = Solar Panel -block.solar-panel-large.name = Large Solar Panel -block.oil-extractor.name = Oil Extractor -block.repair-point.name = Repair Point -block.repair-turret.name = Repair Turret -block.pulse-conduit.name = Pulse Conduit -block.plated-conduit.name = Plated Conduit -block.phase-conduit.name = Phase Conduit -block.liquid-router.name = Liquid Router -block.liquid-tank.name = Liquid Tank -block.liquid-container.name = Liquid Container -block.liquid-junction.name = Liquid Junction -block.bridge-conduit.name = Bridge Conduit -block.rotary-pump.name = Rotary Pump -block.thorium-reactor.name = Thorium Reactor -block.mass-driver.name = Mass Driver -block.blast-drill.name = Airblast Drill -block.impulse-pump.name = Thermal Pump -block.thermal-generator.name = Thermal Generator -block.surge-smelter.name = Surge Smelter -block.mender.name = Mender -block.mend-projector.name = Mend Projector -block.surge-wall.name = Surge Wall -block.surge-wall-large.name = Large Surge Wall +block.phase-conveyor.name = Tóritkvarc Szállítószalag Híd +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.solar-panel.name = Napelem +block.solar-panel-large.name = Nagy Napelem +block.oil-extractor.name = Olajleválasztó +block.repair-point.name = Javítási Pont +block.repair-turret.name = Javító 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 Híd +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.mass-driver.name = Tömegmozgató +block.blast-drill.name = Légrobbanásos Fúró +block.impulse-pump.name = Impulzus Szivattyú +block.thermal-generator.name = Hőerőmű +block.surge-smelter.name = Elektrometál Olvasztó +block.mender.name = Foltozó +block.mend-projector.name = Foltozó Projektor +block.surge-wall.name = Elektrometál Fal +block.surge-wall-large.name = Nagy Elektrometál Fal block.cyclone.name = Cyclone block.fuse.name = Fuse -block.shock-mine.name = Shock Mine -block.overdrive-projector.name = Overdrive Projector -block.force-projector.name = Force Projector +block.shock-mine.name = Sokkoló Taposóakna +block.overdrive-projector.name = Túlhajtó Projektor +block.force-projector.name = Erő Projektor block.arc.name = Arc -block.rtg-generator.name = RTG Generator +block.rtg-generator.name = RTG Erőmű block.spectre.name = Spectre block.meltdown.name = Meltdown block.foreshadow.name = Foreshadow -block.container.name = Container -block.launch-pad.name = Launch Pad +block.container.name = Konténer +block.launch-pad.name = Kilövő Állás block.segment.name = Segment -block.ground-factory.name = Ground Factory -block.air-factory.name = Air Factory -block.naval-factory.name = Naval Factory -block.additive-reconstructor.name = Additive Reconstructor -block.multiplicative-reconstructor.name = Multiplicative Reconstructor -block.exponential-reconstructor.name = Exponential Reconstructor -block.tetrative-reconstructor.name = Tetrative Reconstructor -block.payload-conveyor.name = Payload Conveyor -block.payload-router.name = Payload Router -block.duct.name = Duct -block.duct-router.name = Duct Router -block.duct-bridge.name = Duct Bridge -block.large-payload-mass-driver.name = Large Payload Mass Driver -block.payload-void.name = Payload Void -block.payload-source.name = Payload Source -block.disassembler.name = Disassembler -block.silicon-crucible.name = Silicon Crucible -block.overdrive-dome.name = Overdrive Dome -block.interplanetary-accelerator.name = Interplanetary Accelerator -block.constructor.name = Constructor -block.constructor.description = Fabricates structures up to 2x2 tiles in size. -block.large-constructor.name = Large Constructor -block.large-constructor.description = Fabricates structures up to 4x4 tiles in size. -block.deconstructor.name = Deconstructor -block.deconstructor.description = Deconstructs structures and units. Returns 100% of build cost. -block.payload-loader.name = Payload Loader -block.payload-loader.description = Load liquids and items into blocks. -block.payload-unloader.name = Payload Unloader -block.payload-unloader.description = Unloads liquids and items from blocks. -block.heat-source.name = Heat Source -block.heat-source.description = A 1x1 block that gives virtualy infinite heat. -block.empty.name = Empty -block.rhyolite-crater.name = Rhyolite Crater -block.rough-rhyolite.name = Rough Rhyolite -block.regolith.name = Regolith -block.yellow-stone.name = Yellow Stone -block.carbon-stone.name = Carbon Stone -block.ferric-stone.name = Ferric Stone -block.ferric-craters.name = Ferric Craters -block.beryllic-stone.name = Beryllic Stone -block.crystalline-stone.name = Crystalline Stone -block.crystal-floor.name = Crystal Floor -block.yellow-stone-plates.name = Yellow Stone Plates -block.red-stone.name = Red Stone -block.dense-red-stone.name = Dense Red Stone -block.red-ice.name = Red Ice -block.arkycite-floor.name = Arkycite Floor -block.arkyic-stone.name = Arkyic Stone -block.rhyolite-vent.name = Rhyolite Vent -block.carbon-vent.name = Carbon Vent -block.arkyic-vent.name = Arkyic Vent -block.yellow-stone-vent.name = Yellow Stone Vent -block.red-stone-vent.name = Red Stone Vent -block.crystalline-vent.name = Crystalline Vent -block.redmat.name = Redmat -block.bluemat.name = Bluemat -block.core-zone.name = Core Zone -block.regolith-wall.name = Regolith Wall -block.yellow-stone-wall.name = Yellow Stone Wall -block.rhyolite-wall.name = Rhyolite Wall -block.carbon-wall.name = Carbon Wall -block.ferric-stone-wall.name = Ferric Stone Wall -block.beryllic-stone-wall.name = Beryllic Stone Wall -block.arkyic-wall.name = Arkyic Wall -block.crystalline-stone-wall.name = Crystalline Stone Wall -block.red-ice-wall.name = Red Ice Wall -block.red-stone-wall.name = Red Stone Wall -block.red-diamond-wall.name = Red Diamond Wall -block.redweed.name = Redweed -block.pur-bush.name = Pur Bush -block.yellowcoral.name = Yellowcoral -block.carbon-boulder.name = Carbon Boulder -block.ferric-boulder.name = Ferric Boulder -block.beryllic-boulder.name = Beryllic Boulder -block.yellow-stone-boulder.name = Yellow Stone Boulder -block.arkyic-boulder.name = Arkyic Boulder -block.crystal-cluster.name = Crystal Cluster -block.vibrant-crystal-cluster.name = Vibrant Crystal Cluster -block.crystal-blocks.name = Crystal Blocks -block.crystal-orbs.name = Crystal Orbs -block.crystalline-boulder.name = Crystalline Boulder -block.red-ice-boulder.name = Red Ice Boulder -block.rhyolite-boulder.name = Rhyolite Boulder -block.red-stone-boulder.name = Red Stone Boulder -block.graphitic-wall.name = Graphitic Wall -block.silicon-arc-furnace.name = Silicon Arc Furnace -block.electrolyzer.name = Electrolyzer -block.atmospheric-concentrator.name = Atmospheric Concentrator -block.oxidation-chamber.name = Oxidation Chamber -block.electric-heater.name = Electric Heater -block.slag-heater.name = Slag Heater -block.phase-heater.name = Phase Heater -block.heat-redirector.name = Heat Redirector -block.heat-router.name = Heat Router -block.slag-incinerator.name = Slag Incinerator -block.carbide-crucible.name = Carbide Crucible -block.slag-centrifuge.name = Slag Centrifuge -block.surge-crucible.name = Surge Crucible -block.cyanogen-synthesizer.name = Cyanogen Synthesizer -block.phase-synthesizer.name = Phase Synthesizer -block.heat-reactor.name = Heat Reactor -block.beryllium-wall.name = Beryllium Wall -block.beryllium-wall-large.name = Large Beryllium Wall -block.tungsten-wall.name = Tungsten Wall -block.tungsten-wall-large.name = Large Tungsten Wall -block.blast-door.name = Blast Door -block.carbide-wall.name = Carbide Wall -block.carbide-wall-large.name = Large Carbide Wall -block.reinforced-surge-wall.name = Reinforced Surge Wall -block.reinforced-surge-wall-large.name = Large Reinforced Surge Wall -block.shielded-wall.name = Shielded Wall +block.ground-factory.name = 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.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.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.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. + +#Erekir +block.empty.name = Üres +block.rhyolite-crater.name = Riolit Kráter +block.rough-rhyolite.name = Durva Riolit +block.regolith.name = Regolit +block.yellow-stone.name = Sárga Kő +block.carbon-stone.name = Szé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 = Arkycit +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.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.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.radar.name = Radar -block.build-tower.name = Build Tower -block.regen-projector.name = Regen Projector -block.shockwave-tower.name = Shockwave Tower -block.shield-projector.name = Shield Projector -block.large-shield-projector.name = Large Shield Projector -block.armored-duct.name = Armored Duct -block.overflow-duct.name = Overflow Duct -block.underflow-duct.name = Underflow Duct -block.duct-unloader.name = Duct Unloader -block.surge-conveyor.name = Surge Conveyor -block.surge-router.name = Surge Router -block.unit-cargo-loader.name = Unit Cargo Loader -block.unit-cargo-unload-point.name = Unit Cargo Unload Point -block.reinforced-pump.name = Reinforced Pump -block.reinforced-conduit.name = Reinforced Conduit -block.reinforced-liquid-junction.name = Reinforced Liquid Junction -block.reinforced-bridge-conduit.name = Reinforced Bridge Conduit -block.reinforced-liquid-router.name = Reinforced Liquid Router -block.reinforced-liquid-container.name = Reinforced Liquid Container -block.reinforced-liquid-tank.name = Reinforced Liquid Tank -block.beam-node.name = Beam Node -block.beam-tower.name = Beam Tower -block.beam-link.name = Beam Link -block.turbine-condenser.name = Turbine Condenser -block.chemical-combustion-chamber.name = Chemical Combustion Chamber -block.pyrolysis-generator.name = Pyrolysis Generator -block.vent-condenser.name = Vent Condenser -block.cliff-crusher.name = Cliff Crusher -block.plasma-bore.name = Plasma Bore -block.large-plasma-bore.name = Large Plasma Bore -block.impact-drill.name = Impact Drill -block.eruption-drill.name = Eruption Drill -block.core-bastion.name = Core Bastion -block.core-citadel.name = Core Citadel -block.core-acropolis.name = Core Acropolis -block.reinforced-container.name = Reinforced Container -block.reinforced-vault.name = Reinforced Vault +block.build-tower.name = Építő Torony +block.regen-projector.name = É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 = Alul-folyó Szállítószalag +block.duct-unloader.name = Kirakodó Szállítószalag +block.surge-conveyor.name = Elektrometál Szállítószalag +block.surge-router.name = Elektrometál 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.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.core-bastion.name = Bástya +block.core-citadel.name = Citadella +block.core-acropolis.name = Akropolisz +block.reinforced-container.name = Megerősített Konténer +block.reinforced-vault.name = Megerősített Tároló block.breach.name = Breach block.sublimate.name = Sublimate block.titan.name = Titan @@ -1726,210 +1808,218 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.fabricator.name = Fabricator -block.tank-refabricator.name = Tank Refabricator -block.mech-refabricator.name = Mech Refabricator -block.ship-refabricator.name = Ship Refabricator -block.tank-assembler.name = Tank Assembler -block.ship-assembler.name = Ship Assembler -block.mech-assembler.name = Mech Assembler -block.reinforced-payload-conveyor.name = Reinforced Payload Conveyor -block.reinforced-payload-router.name = Reinforced Payload Router -block.payload-mass-driver.name = Payload Mass Driver -block.small-deconstructor.name = Small Deconstructor -block.canvas.name = Canvas -block.world-processor.name = World Processor -block.world-cell.name = World Cell -block.tank-fabricator.name = Tank Fabricator -block.mech-fabricator.name = Mech Fabricator -block.ship-fabricator.name = Ship Fabricator -block.prime-refabricator.name = Prime Refabricator -block.unit-repair-tower.name = Unit Repair Tower +block.tank-refabricator.name = Tank Újratervező +block.mech-refabricator.name = Mech Újratervező +block.ship-refabricator.name = Repülőgép Újratervező +block.tank-assembler.name = Tank Összeszerelő +block.ship-assembler.name = 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.diffuse.name = Diffuse -block.basic-assembler-module.name = Basic Assembler Module +block.basic-assembler-module.name = Alap Összeszerelő Modul block.smite.name = Smite block.malign.name = Malign -block.flux-reactor.name = Flux Reactor -block.neoplasia-reactor.name = Neoplasia Reactor +block.flux-reactor.name = Fluxus Reaktor +block.neoplasia-reactor.name = Neoplázia Reaktor -block.switch.name = Switch -block.micro-processor.name = Micro Processor -block.logic-processor.name = Logic Processor -block.hyper-processor.name = Hyper Processor -block.logic-display.name = Logic Display -block.large-logic-display.name = Large Logic Display -block.memory-cell.name = Memory Cell -block.memory-bank.name = Memory Bank -team.malis.name = Malis -team.crux.name = piros -team.sharded.name = narancssárga -team.derelict.name = elhagyatott -team.green.name = zöld +block.switch.name = Kapcsoló +block.micro-processor.name = Mikroprocesszor +block.logic-processor.name = Logikaiprocesszor +block.hyper-processor.name = Hiperprocesszor +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 -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.desktopShoot = Használd a [accent]bal egérgombot[] a lövéshez. -hint.depositItems = Az itemeket a hajóról a magra húzva áthelyezheted. -hint.respawn = Hogy hajóként újraéledj, nyomd meg a [accent][[V][] gombot. -hint.respawn.mobile = Átvetted az irányítást egy egység vagy torony felett. Hogy újraéledj hajóként, [accent]érintsd meg az avatárt a bal felső sarokban.[] -hint.desktopPause = Nyomd meg a [accent][[Space][]-t, hogy szüneteltesd vagy folytasd a játékot. -hint.breaking = [accent]Jobb gombot[] nyomva kijelölhetsz lebontandó épületeket. -hint.breaking.mobile = Használd a \ue817 [accent]kalapácsot[] jobb lent és töröld vele az útban lévő épületeket.\n\nTartsd lenyomva az ujjad és húzd, hogy nagyobb területet kijelölj. -hint.blockInfo = View information of a block by selecting it in the [accent]build menu[], then selecting the [accent][[?][] button at the right. -hint.derelict = [accent]Derelict[] structures are broken remnants of old bases that no longer function.\n\nThese structures can be [accent]deconstructed[] for resources. -hint.research = Használd a \ue875 [accent]Kutatás[] gombot, hogy felfedezz új technológiákat. -hint.research.mobile = Használd a \ue875 [accent]Kutatás[] gombot a \ue88c [accent]Menü[]ben, hogy felfedezz új technológiákat. -hint.unitControl = Nyomd le a [accent][[L-ctrl][] billentyőt és [accent]kattints[], hogy átvedd az irányítást szövetséges egységek vagy tornyok felett. -hint.unitControl.mobile = [accent][[Dupla koppintás][]sal átveheted az irányítást szövetséges egységek és tornyok felett. -hint.unitSelectControl = To control units, enter [accent]command mode[] by holding [accent]L-shift.[]\nWhile in command mode, click and drag to select units. [accent]Right-click[] a location or target to command units there. -hint.unitSelectControl.mobile = To control units, enter [accent]command mode[] by pressing the [accent]command[] button in the bottom left.\nWhile in command mode, long-press and drag to select units. Tap a location or target to command units there. -hint.launch = Ha elegendő nyersanyagot gyűjtöttél, [accent]Kilőhetsz[] egy közeli szektorba. Ezt a jobb lent látható \ue827 [accent]Térkép[]en teheted meg. -hint.launch.mobile = Ha elegendő nyersanyagot gyűjtöttél, [accent]Kilőhetsz[] egy közeli szektorba. Ezt a \ue88c [accent]Menü[]ből elérhető \ue827 [accent]Térkép[]en teheted meg. -hint.schematicSelect = Az [accent][[F][] nyomva tartásával kijelölhetsz és másolhastz épületeket.\n\nKattints a [accent][[görgővel][], hogy egy épületet lemásolj. -hint.rebuildSelect = Hold [accent][[B][] and drag to select destroyed block plans.\nThis will rebuild them automatically. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. -hint.conveyorPathfind = Tartsd nyomva a [accent][[L-Ctrl][] billentyűt futószalagok lerakása közben, hogy a játék útvnalat generáljon. -hint.conveyorPathfind.mobile = Enegdélyezd az \ue844 [accent]átlós mód[]ot és tagyél le egyszerre több futószalagot, hogy a játék útvonalat generáljon. -hint.boost = Tartsd nyomva a [accent][[L-Shift][] billentyűt, hogy átrepülj az akadályok felett.\n\nErre nem minden földi egység képes. +hint.zoom = Használd az egér [accent]Görgőjét[] a zoomhoz.. +hint.desktopShoot = Használd a [accent]Bal-Egérgomb[]ot a lövéshez. +hint.depositItems = A nyersanyagokat áthelyezheted húzással a drónból a Magba. +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 lövegtorony felett. Ahhoz, hogy drónként újraéledj, [accent]érintsd meg az avatárt a bal felső sarokban.[] +hint.desktopPause = Nyomd meg a [accent][[Szóköz][]t, hogy szüneteltesd, vagy folytasd a játékot. +hint.breaking = [accent]Jobb-Egérgomb[]ot nyomva kijelölheted az útban lévő épületeket a lebontásukhoz. +hint.breaking.mobile = Használd a \ue817 [accent]Kalapács[] gombot 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 tudj kijelölni. +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]Fejlődési Fa[] gombot, hogy felfedezz új technológiákat. +hint.research.mobile = Használd a \ue875 [accent]Fejlődési Fa[] gombot a \ue88c [accent]Menü[]ben, hogy felfedezz új technológiákat. +hint.unitControl = Nyomd le a [accent][[Bal-CTRL][] gombot és kattints [accent]Jobb-Egérgomb[]al az irányítani kívánt szövetséges egységre, vagy -lövegtoronyra, hogy átvedd fölötte az irányítást. +hint.unitControl.mobile = [accent][[Dupla koppintás][]sal átveheted az irányítást szövetséges egységek, vagy -lövegtornyok felett. +hint.unitSelectControl = Az egységek irányításához lépj be a [accent]Parancs Mód[]ba, úgy, hogy nyomd hosszan a [accent]Bal-SHIFT[] gombot.\nParancs Módban az egységek kijelöléséhez kattints és húzd az egeret. [accent]Jobb-Egérgomb[]-al kattints 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, úgy, hogy nyomd meg a [accent]Parancs Mód[] gombot a bal alsó sarokban.\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. 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 össze, akkor [accent]Indítsd[] el a Magot a következő szektorba, úgy, hogy megnyitod a \ue827 [accent]Térkép[]et a jobb alsó sarokban, és átpásztázol az új helyszínre. +hint.launch.mobile = Ha elegendő nyersanyagot gyűjtöttél össze, akkor [accent]Indítsd[] el a Magot egy közeli szektorba, úgy, hogy kiválasztasz egy szektort a \ue88c [accent]Menü[]ben a \ue827 [accent]Térkép[]ről. +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][[Bal-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][[Bal-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 egségen, hogy felemeld. -hint.payloadDrop = A [accent]][] megnyomásával lerakhatod a terhedet. -hint.payloadDrop.mobile = [accent]Tartsd nyomva az ujjad[] egy üres területen, hogy letedd a terhedet. -hint.waveFire = A [accent]Wave[] tornyok, ha víz van bennük, automatikusan eloltják a közeli tüzeket. -hint.generator = \uf879 A [accent]Combustion Generator[] szenet éget, és átadja az áramot a vele érintkező épületeknek.\n\n Áramot nagyobb távolságra is szállíthatsz \uf87f [accent]Power Node[]-ok segítségével. -hint.guardian = Az [accent]Őrző[]knek páncélja van. A gyenge lövedékeknek, mint a [accent]Copper[] vagy a [accent]Lead[] [scarlet]nincs hatásuk[].\n\nHasználj magasabb szintű tornyokat vagy \uf835 [accent]Graphite[] lövedéket a \uf861Duo/\uf859Salvo tornyokba, hogy leszedd az Őrzőket. -hint.coreUpgrade = A magot fejlesztheted, ha [accent]magasabb sintű magot teszel rá[].\n\nHelyezz egy [accent]Foundation[] magot a [accent]Shard[] magra. Figyelj rá, hogy ne legyenek az új mag területén épületek. -hint.presetLaunch = A szürke [accent]kampány szektorok[]ba, amilyen például a [accent]Frozen Forest[], bárhonnan kilőhetsz. Nem kell szomszédos területtel rendelkezned.\n\nA [accent]számozott szektorok[], mint ez is, [accent]opcionálisak[]. -hint.presetDifficulty = This sector has a [scarlet]high enemy threat level[].\nLaunching to such sectors is [accent]not recommended[] without proper technology and preparation. -hint.coreIncinerate = Ha a magodban egy nyersanyag elérte a maximumot, a beérkező ilyen nyersanyagaid azonnal [accent]megsemmisítésre kerülnek[]. -hint.factoryControl = To set a unit factory's [accent]output destination[], click a factory block while in command mode, then right-click a location.\nUnits produced by it will automatically move there. -hint.factoryControl.mobile = To set a unit factory's [accent]output destination[], tap a factory block while in command mode, then tap a location.\nUnits produced by it will automatically move there. -gz.mine = Move near the \uf8c4 [accent]copper ore[] on the ground and click to begin mining. -gz.mine.mobile = Move near the \uf8c4 [accent]copper ore[] on the ground and tap it to begin mining. -gz.research = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nClick on a copper patch to place it. -gz.research.mobile = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nTap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. -gz.conveyors = Research and place \uf896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. -gz.conveyors.mobile = Research and place \uf896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nHold down your finger for a second and drag to place multiple conveyors. -gz.drills = Expand the mining operation.\nPlace more Mechanical Drills.\nMine 100 copper. -gz.lead = \uf837 [accent]Lead[] is another commonly used resource.\nSet up drills to mine lead. -gz.moveup = \ue804 Move up for further objectives. -gz.turrets = Research and place 2 \uf861 [accent]Duo[] turrets to defend the core.\nDuo turrets require \uf838 [accent]ammo[] from conveyors. -gz.duoammo = Supply the Duo turrets with [accent]copper[], using conveyors. -gz.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace \uf8ae [accent]copper walls[] around the turrets. -gz.defend = Enemy incoming, prepare to defend. -gz.aa = Flying units cannot easily be dispatched with standard turrets.\n\uf860 [accent]Scatter[] turrets provide excellent anti-air, but require \uf837 [accent]lead[] as ammo. -gz.scatterammo = Supply the Scatter turret with [accent]lead[], using conveyors. -gz.supplyturret = [accent]Supply Turret -gz.zone1 = This is the enemy drop zone. -gz.zone2 = Anything built in the radius is destroyed when a wave starts. -gz.zone3 = A wave will begin now.\nGet ready. -gz.finish = Build more turrets, mine more resources,\nand defend against all the waves to [accent]capture the sector[]. -onset.mine = Click to mine \uf748 [accent]beryllium[] from walls.\n\nUse [accent][[WASD] to move. -onset.mine.mobile = Tap to mine \uf748 [accent]beryllium[] from walls. -onset.research = Open the \ue875 tech tree.\nResearch, then place a \uf73e [accent]turbine condenser[] on the vent.\nThis will generate [accent]power[]. -onset.bore = Research and place a \uf741 [accent]plasma bore[].\nThis automatically mines resources from walls. -onset.power = To [accent]power[] the plasma bore, research and place a \uf73d [accent]beam node[].\nConnect the turbine condenser to the plasma bore. -onset.ducts = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\nClick and drag to place multiple ducts.\n[accent]Scroll[] to rotate. -onset.ducts.mobile = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\n\nHold down your finger for a second and drag to place multiple ducts. -onset.moremine = Expand the mining operation.\nPlace more Plasma Bores and use beam nodes and ducts to support them.\nMine 200 beryllium. -onset.graphite = More complex blocks require \uf835 [accent]graphite[].\nSet up plasma bores to mine graphite. -onset.research2 = Begin researching [accent]factories[].\nResearch the \uf74d [accent]cliff crusher[] and \uf779 [accent]silicon arc furnace[]. -onset.arcfurnace = The arc furnace needs \uf834 [accent]sand[] and \uf835 [accent]graphite[] to create \uf82f [accent]silicon[].\n[accent]Power[] is also required. -onset.crusher = Use \uf74d [accent]cliff crushers[] to mine sand. -onset.fabricator = Use [accent]units[] to explore the map, defend buildings, and attack the enemy. Research and place a \uf6a2 [accent]tank fabricator[]. -onset.makeunit = Produce a unit.\nUse the "?" button to see selected factory requirements. -onset.turrets = Units are effective, but [accent]turrets[] provide better defensive capabilities if used effectively.\nPlace a \uf6eb [accent]Breach[] turret.\nTurrets require \uf748 [accent]ammo[]. -onset.turretammo = Supply the turret with [accent]beryllium ammo.[] -onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. -onset.enemies = Enemy incoming, prepare to defend. -onset.attack = The enemy is vulnerable. Counter-attack. -onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core. -onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production. -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. -split.build = Units must be transported to the other side of the wall.\nPlace two [accent]Payload Mass Drivers[], one on each side of the wall.\nSet up the link by pressing one of them, then selecting the other. -split.container = Similar to the container, units can also be transported using a [accent]Payload Mass Driver[].\nPlace a unit fabricator adjacent to a mass driver to load them, then send them across the wall to attack the enemy base. +hint.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]Réz[], vagy az [accent]Ólom[] [scarlet]nincs hatásuk[] az Őrző páncéljára.\n\nHasználj magasabb szintű lövegtornyokat, vagy \uf835 [accent]Grafit[] lövedéket a \uf861Duo/\uf859Salvo lövegtornyokban, 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.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 kattints egy gyárblokkra, majd kattints a 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 Parancs Módban koppints egy gyárblokkra, 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/vágó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.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.zone1 = Ez az ellenség leszállóhelye. +gz.zone2 = Bármi, ami a hatósugarában épült, elpusztul, amikor egy hullám elindul. +gz.zone3 = Egy hullám most kezdődik.\nKészülj fel. +gz.finish = Építs több lövegtornyot, bányássz több nyersanyagot\nés védekezz az ellenséges hullámok ellen, hogy [accent]elfoglald a szektort[]. + +onset.mine = Kattints Bal-Egérgommbal a \uf748 [accent]Berillium[]ra, hogy kibányászd a falakból.\n\nHasználd a [accent][[WASD] gombokat a mozgáshoz. +onset.mine.mobile = Koppints a \uf748 [accent]Berillium[]ra, hogy kibányászd 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.enemies = Az ellenség közeledik, készülj fel a védekezésre. +onset.defenses = [accent]Állíts fel védelmet:[lightgray] {0} +onset.attack = Az ellenség most sebezhető. 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 ujjad, 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. + +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 felvegyé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. item.copper.description = Széleskörűen felhasználható építkezésre és lövedékként. -item.copper.details = Szokatlanul elterjedt fém a Serpulón. Gyenge szerkezetű, de megerősíthető. +item.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 = Fosszílizálódott növényi anyagnak tűnik, jóval a "seeding event" előttről. +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.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.silicon.description = Napelemek, összetett áramkörök és nyomkövető lövedékek fontos alapanyaga. Sosincs belőle 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.description = Átalakítható Olajjá vagy robbanószerekké, de használható tüzelőanyagként is. item.spore-pod.details = Spórák. Egy valószínűleg mesterséges életforma. Más életformák számára halálos gázt bocsátanak ki. Szélsőségesen invazív. Megfelelő körülmények között erősen gyúlékony. item.blast-compound.description = Bombák és robbanó lövedékek része. item.pyratite.description = Gyújtó lövedékekben és tüzelőanyag-alapú generátorokban használható. -item.beryllium.description = Used in many types of construction and ammunition on Erekir. -item.tungsten.description = Used in drills, armor and ammunition. Required in the construction of more advanced structures. -item.oxide.description = Used as a heat conductor and insulator for power. -item.carbide.description = Used in advanced structures, heavier units, and ammunition. -liquid.water.description = Gépek hűtésére és hulladékfeldolgozásra használható. -liquid.slag.description = Separatorban finomítva értékes fémek forrása, az ellenségre fröcskölve gyilkos fegyver. +#Erekir +item.beryllium.description = Sokféle épület- é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. + +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 reaktorok, tornyok és gyárak számára. -liquid.arkycite.description = Used in chemical reactions for power generation and material synthesis. -liquid.ozone.description = Used as an oxidizing agent in material production, and as fuel. Moderately explosive. -liquid.hydrogen.description = Used in resource extraction, unit production and structure repair. Flammable. -liquid.cyanogen.description = Used for ammunition, construction of advanced units, and various reactions in advanced blocks. Highly flammable. -liquid.nitrogen.description = Used in resource extraction, gas creation and unit production. Inert. -liquid.neoplasm.description = A dangerous biological byproduct of the Neoplasia reactor. Quickly spreads to any adjacent water-containing block it touches, damaging them in the process. Viscous. -liquid.neoplasm.details = Neoplasm. An uncontrollable mass of rapidly-dividing synthetic cells with a sludge-like consistency. Heat-resistant. Extremely dangerous to any structures involving water.\n\nToo complex and unstable for standard analysis. Potential applications unknown. Incineration in slag pools is recommended. -block.derelict = \uf77e [lightgray]Derelict -block.armored-conveyor.description = Nyersanyagokat továbbít. Nem fogad el nyersanyagot oldalról. +liquid.cryofluid.description = Hűtőfolyadék az erőművek, reaktorok, lövegtornyok és gyárak számára. + +#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.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 épületekben. 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ú épületre, 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. + +block.derelict = \uf77e [lightgray]Elhagyatott +block.armored-conveyor.description = Nyersanyagokat szállít. Nem fogad el nyersanyagot oldalról. block.illuminator.description = Világít. block.message.description = Üzenetet tárol szövetségesek kommunikációjához. -block.reinforced-message.description = Stores a message for communication between allies. -block.world-message.description = A message block for use in mapmaking. Cannot be destroyed. -block.graphite-press.description = Szenet présel grafittá. -block.multi-press.description = Szenet présel grafittá. Hatékonyan dolgozik, de vizet igényel hűtéshez. -block.silicon-smelter.description = Szilíciumot nyer ki homok és szén keverékéből. -block.kiln.description = Ólmomból és homokból olvaszt ólomüveget. -block.plastanium-compressor.description = Plastaniumot gyárt olaj és titán felhasználásával. -block.phase-weaver.description = Phase fabricot szintetizál tórium és homok keverékéből. -block.surge-smelter.description = Titán, ólom, szilícium és réz olvadékából állít elő surge alloy-t. -block.cryofluid-mixer.description = Finom titánport kever vízhez cryofluid előállításához. -block.blast-mixer.description = Piratitból és spóra kapszulákból készít robbanóelegyet. -block.pyratite-mixer.description = Szenet, homokot és ólmot vegyít piratittá. -block.melter.description = Hulladékot olvaszt salakká. -block.separator.description = Szétbontja a salakot ásványi összetevőire. -block.spore-press.description = Nagy nyomáson olajat présel spórákból. -block.pulverizer.description = Finom homokká őrli a hulladékot. -block.coal-centrifuge.description = Szenet nyer ki olajból. +block.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.incinerator.description = Megsemmisít minden nyersanyagot és folyadékot. -block.power-void.description = Elnyel minden áramot. Csak homokozó módban. -block.power-source.description = Végtelen áramot termel. Csak homokozó módban. -block.item-source.description = Végtelen nyersanyagot bocsát ki. Csak homokozó módban. -block.item-void.description = Megsemmisít minden nyersanyagot. Csak homokozó módban. -block.liquid-source.description = Végtelen folyadékot bocsát ki. Csak homokozó módban. -block.liquid-void.description = Megsemmisít minden folyadékot. Csak homokozó módban. -block.payload-source.description = Infinitely outputs payloads. Sandbox only. -block.payload-void.description = Destroys any payloads. Sandbox only. +block.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.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. @@ -1939,428 +2029,507 @@ block.surge-wall-large.description = Megvédi az épületeket az ellenséges lö block.door.description = Fal, amit nyitni és zárni lehet. block.door-large.description = Fal, amit nyitni és zárni lehet. De ez nagyobb. block.mender.description = Javítja az épületeket a hatókörén belül.\nSzilíciummal növelhető a hatósugara és hatékonysága. -block.mend-projector.description = Javítja az épületeket a hatókörén belül.\nSzilíciummal növelhető a hatósugara és hatékonysága. -block.overdrive-projector.description = Növeli a közeli épületek sebességét.\nPhase fabric-kal növelhető a hatósugara és hatékonysága. -block.force-projector.description = Creates a hexagonal force field around itself, protecting buildings and units inside from damage.\nOverheats if too much damage is sustained. Optionally uses coolant to prevent overheating. Phase fabric increases shield size. +block.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 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. 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.shock-mine.description = Elektromos kisülést hoz létre, ha ellenséggel érintkezik. -block.conveyor.description = Futószalag. Nyersanyagokat továbbít. -block.titanium-conveyor.description = Nyersanyagokat továbbít. Gyorsabb a sima futószalagnál. +block.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 kereszteződő futószalag között. +block.junction.description = Hídként működik két egymást keresztező Szállítószalag között. block.bridge-conveyor.description = Nyersanyagokat szállít épületek és terepakadályok fölött. -block.phase-conveyor.description = Nyersanyagokat szállít épületek és terepakadályok fölött. Nagyobb távolságra ér, mint a sima bridge conveyor, de áramot használ. +block.phase-conveyor.description = Nyersanyagokat szállít épületek és terepakadályok fölött. Nagyobb távolságra ér, mint a sima Szállítószalag Híd, de Áramot használ. block.sorter.description = Csak a kiválasztott nyersanyagot engedi tovább egyenesen, minden mást oldalra ad ki. block.inverted-sorter.description = A kiválasztott nyersanyagot oldalra adja ki, minden mást egyenesen enged tovább. block.router.description = Háromfelé osztja szét a beérkező nyersanyagokat. -block.router.details = Pokoli masina. Ne tedd közvetlenül gyárak mellé, mert az épületek termékei eltömítik. +block.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 owerflow gate vagy underflow gate mellett. -block.underflow-gate.description = Csak akkor enged tovább nyersanyagokat előre, ha oldalra már nem tudja kiadni őket. Nem használható közvetlenül owerflow gate vagy underflow gate mellett. -block.mass-driver.description = Nagy hatótávolságú nyeranyagszállító. Csomagokban lő át nyersanyagokat egy másik mass drivernek. -block.mechanical-pump.description = Folyadékot szivattyúz. Nem igényel áramot. +block.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 Alul-folyó 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 Alul-folyó Kapu mellett. +block.mass-driver.description = Nagy hatótávolságú nyersanyagszállító eszköz. Rakományokban lő át nyersanyagokat egy másik, hozzákapcsolt 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 továbbít. -block.pulse-conduit.description = Folyadékot továbbít. Gyorsabb és nagyobb tárolókapacitású, mint a sima conduit. -block.plated-conduit.description = Folyadékot továbbít. Nem fogad el folyadékot oldalról. Nem önti ki a folyadékot, ha nincs a végén semmi. +block.impulse-pump.description = Folyadékot szivattyúz. Sokat termel, de 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 = Stores a sizeable amount of liquid. Outputs to all sides, similarly to a liquid router. -block.liquid-tank.description = Nagy mennyiségű folyadékot tárol, minden oldalán képes leadni. -block.liquid-junction.description = Hídként működik két kereszteződő conduit között. +block.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.liquid-junction.description = Hídként működik két egymást keresztező csővezeték között. block.bridge-conduit.description = Folyadékot szállít épületek és terepakadályok fölött. -block.phase-conduit.description = Folyadékot szállít épületek és terepakadályok fölött. Nagyobb távolságr ér, mint a sima bridge conduit, de áramot használ. -block.power-node.description = Áramot továbbít az összekapcsolt épületekhez. Az érintkező épületekkel automatikusan kapcsolatban van. -block.power-node-large.description = Nagyobb power node nagyobb hatótávolsággal. -block.surge-tower.description = Hosszútávú power node, csak kevés kapcsolatra képes. -block.diode.description = Tárolt áramot irányít át egy irányba, de csak ha a fogadó oldalon van kevesebb tárolva. -block.battery.description = Áramot raktároz el, ha túltermelés van. Leadja az áramot, ha hiány van. -block.battery-large.description = Áramot raktároz el, ha túltermelés van. Leadja az áramot, ha hiány van. Nagyobb kapacitású a sima battery-nél. +block.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é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 cryofluid és az égő piratit hőmérsékletkülönbségét. -block.rtg-generator.description = A radioaktív bomlás energiáját hasznosítja, hogy lassan de biztosan áramot termeljen. -block.solar-panel.description = Napfényből állít elő kevés áramot. -block.solar-panel-large.description = Napfényből állít elő kevés áramot. Hatékonyabb a sima solar panelnél. -block.thorium-reactor.description = Jelentős áramot állít elő tóriumból. Állandó hűtést igényel. Ha túlmelegszik, felrobban. -block.impact-reactor.description = Csúcsra járatva rengeteg áramot termel. Jelentős árambefektetést igényel a reakció beindításához. +block.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éklet kü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, akkor felrobban. +block.impact-reactor.description = Csúcsra járatva rengeteg Áramot termel. Jelentős Árambefektetést igényel a reakció beindítása. block.mechanical-drill.description = Ércre helyezve kis tempóban termeli ki az adott nyersanyagot. Csak alapvető nyersanyagok kitermelésére képes. -block.pneumatic-drill.description = Egy fejlettebb drill, képes titán kitermelésére. Gyorsabban dolgozik a mechanical drillnél. -block.laser-drill.description = Lézerek használatával még gyorsabban tud dolgozni, de áramot használ. Képes tóriumot kitermelni. -block.blast-drill.description = A technológia csúcsa. Rengeteg áramot használ. -block.water-extractor.description = Képes a talajvíz kiszívására. Használd, ha nincs elérhető víz a felszínen. +block.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 kiszivattyúzására. Akkor használd, ha nincs elérhető Víz a felszínen. block.cultivator.description = A légkörben szálló spórákat kapszulákba sűríti. -block.cultivator.details = Visszaszerzett technológia. Hatalmas tömegű biomassza gyártására alkalmas a lehető leghatékonyabban. Valószínűleg a Serpulót ma borító spórák kezdeti inkubátora. -block.oil-extractor.description = Nagy mennyiségben használ vizet, homokot és áramot, hogy olajat nyerjen ki a földből. -block.core-shard.description = A bázis magja. Ha elpusztul, a szektor elveszett. -block.core-shard.details = Az első modell. Kompakt. Önsokszorosító. Egyszer használatós gyorsítófúvókákkal van felszerelve, nem bolygóközi utazásra tervezték. -block.core-foundation.description = A bázis magja. Páncélozott. Több nyersanyagot tárol, mint a shard. +block.cultivator.details = Visszaszerzett technológia. Hatalmas tömegű biomassza gyártására alkalmas a lehető leghatékonyabban. Valószínűleg a 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.core-foundation.details = A második modell. -block.core-nucleus.description = A bázis magja. Megerősített páncélzat. Hatalmas mennyiségek tárolására képes. +block.core-nucleus.description = Mag. Megerősített páncélzattal. Hatalmas mennyiségű nyersanyag tárolására képes. block.core-nucleus.details = A harmadik, végső modell. -block.vault.description = Nagy mennyiséget tárol minden nyersanyagtípusból. A tartalma unloader segítségével nyerhető ki. -block.container.description = Kis mennyiséget tárol minden nyersanyagtípusból. A tartalma unloader segítségével nyerhető ki. -block.unloader.description = Kitölti a szomszédos épületekből a kiválasztott nyersanyagot. +block.vault.description = Nagy mennyiséget tárol minden nyersanyagtípusból. 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.unloader.description = Kirakodja a szomszédos épületekből a kiválasztott nyersanyagot. block.launch-pad.description = Nyersanyagokat juttat el más szektorokba. -block.launch-pad.details = Sub-orbital system for point-to-point transportation of resources. Payload pods are fragile and incapable of surviving re-entry. +block.launch-pad.details = 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.duo.description = Változatos lövedékekkel lő az ellenségre. -block.scatter.description = Ólom, ólomüveg vagy hulladék darabokkal tüzel az ellenséges légierőre. +block.scatter.description = Ólom-, Ólomüveg-, vagy Törmelékdarabokkal tüzel az ellenséges légierőre. block.scorch.description = Megégeti az ellenség közeli földi egységeit. Kis távolságra nagyon hatékony. -block.hail.description = Kis lemezeketFires small shells at ground enemies over long distances. -block.wave.description = Folyadékot önt az ellenségre. Eloltja a tüzet, ha vízzel van feltöltve. +block.hail.description = Kis lövedékeket lő ki 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.lancer.description = Erős energiasugarakat lő közeli földi célpontokra. block.arc.description = Elektromos szikrákat kelt földi célpontok között. block.swarmer.description = Nyomkövető rakétákat lő az ellenségre. block.salvo.description = Kis sorozatokat lő az ellenségre. -block.fuse.description = Három kis hatótávú átütő töltényt lő egyszerre. +block.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.cyclone.description = Robbanó lövedékeket lő közeli ellenségekre. block.spectre.description = Nagy, a páncélon is áthatoló lövedékekkel tüzel légi és földi célpontokra is. block.meltdown.description = Feltöltődés után folyamatos lézersugarat lő a közeli ellenségekre. Hűtést igényel. -block.foreshadow.description = Fires a large single-target bolt over long distances. -block.repair-point.description = Folyamatosan gyógyítja a legközelebbi sérült egységet a körzetében. +block.foreshadow.description = Nagy méretű villámot lő ki nagy távolságokra, de egyszerre csak egyetlen célpontra. +block.repair-point.description = Folyamatosan gyógyítja a legközelebbi sérült egységet a közelében. block.segment.description = Megsemmisíti a beérkező lövedékeket. A lézerrel szemben hatástalan. block.parallax.description = Vonónyalábot bocsát ki, amivel magához vonzza és sebzi a repülő egységeket. -block.tsunami.description = Erős folyadékhullámokat lő az ellenségre. Eloltja a tüzet, ha vízzel van feltöltve. -block.silicon-crucible.description = Szilíciumot finomít homokból és szénből, piratitot használ kiegészítő hőforrásként. Forró környezetben hatékonyabb. -block.disassembler.description = Ritka ásványi elemeket választ ki salakból. Képes tóriumot kiválasztani. -block.overdrive-dome.description = Megnöveli a környező épületek sebességét. Phase fabricot és szilíciumot igényel. -block.payload-conveyor.description = Képes egységeket továbbítani. +block.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 használhatók azonnal, vagy reconstructorokban fejleszthetők. -block.air-factory.description = Légi egységeket gyárt. A kész egységek használhatók azonnal, vagy reconstructorokban fejleszthetők. -block.naval-factory.description = Vízi egységeket gyárt. A kész egységek használhatók azonnal, vagy reconstructorokban fejleszthetők. +block.ground-factory.description = Földi egységeket gyárt. A kész egységek azonnal hadra-fogható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.additive-reconstructor.description = Kettes szintre fejleszti a beérkező egységeket. block.multiplicative-reconstructor.description = Hármas szintre fejleszti a beérkező egységeket. block.exponential-reconstructor.description = Négyes szintre fejleszti a beérkező egységeket. block.tetrative-reconstructor.description = Ötös szintre fejleszti a beérkező egységeket. block.switch.description = Kétállású kapcsoló. Az állapota leolvasható és módosítható processzorokkal. -block.micro-processor.description = Logikai műveletek sorozatát hajtja végre végtelenítve. Használható egységek vagy épületek irányítására is. -block.logic-processor.description = Logikai műveletek sorozatát hajtja végre végtelenítve. Használható egységek vagy épületek irányítására is. Gyorsabb a micro processornál. -block.hyper-processor.description = Logikai műveletek sorozatát hajtja végre végtelenítve. Használható egységek vagy épületek irányítására is. Gyorsabb a logic processornál. +block.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 = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. -block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. -block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. -block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. -block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. -block.breach.description = Fires piercing beryllium or tungsten ammunition at enemy targets. -block.diffuse.description = Fires a burst of bullets in a wide cone. Pushes enemy targets back. -block.sublimate.description = Fires a continuous jet of flame at enemy targets. Pierces armor. -block.titan.description = Fires a massive explosive artillery shell at ground targets. Requires hydrogen. -block.afflict.description = Fires a massive charged orb of fragmentary flak. Requires heating. -block.disperse.description = Fires bursts of flak at aerial targets. -block.lustre.description = Fires a slow-moving single-target laser at enemy targets. -block.scathe.description = Launches a powerful missile at ground targets over vast distances. -block.smite.description = Fires bursts of piercing, lightning-emitting bullets. -block.malign.description = Fires a barrage of homing laser charges at enemy targets. Requires extensive heating. -block.silicon-arc-furnace.description = Refines silicon from sand and graphite. -block.oxidation-chamber.description = Converts beryllium and ozone into oxide. Emits heat as a by-product. -block.electric-heater.description = Heats facing blocks. Requires large amounts of power. -block.slag-heater.description = Heats facing blocks. Requires slag. -block.phase-heater.description = Heats facing blocks. Requires phase fabric. -block.heat-redirector.description = Redirects accumulated heat to other blocks. -block.heat-router.description = Spreads accumulated heat in three output directions. -block.electrolyzer.description = Converts water into hydrogen and ozone gas. -block.atmospheric-concentrator.description = Concentrates nitrogen from the atmosphere. Requires heat. -block.surge-crucible.description = Forms surge alloy from slag and silicon. Requires heat. -block.phase-synthesizer.description = Synthesizes phase fabric from thorium, sand, and ozone. Requires heat. -block.carbide-crucible.description = Fuses graphite and tungsten into carbide. Requires heat. -block.cyanogen-synthesizer.description = Synthesizes cyanogen from arkycite and graphite. Requires heat. -block.slag-incinerator.description = Incinerates non-volatile items or liquids. Requires slag. -block.vent-condenser.description = Condenses vent gases into water. Consumes power. -block.plasma-bore.description = When placed facing an ore wall, outputs items indefinitely. Requires small amounts of power. -block.large-plasma-bore.description = A larger plasma bore. Capable of mining tungsten and thorium. Requires hydrogen and power. -block.cliff-crusher.description = Crushes walls, outputting sand indefinitely. Requires power. Efficiency varies based on type of wall. -block.impact-drill.description = When placed on ore, outputs items in bursts indefinitely. Requires power and water. -block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. -block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. -block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. -block.reinforced-liquid-tank.description = Stores a large amount of fluids. -block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. -block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. -block.reinforced-pump.description = Pumps and outputs liquids. Requires hydrogen. -block.beryllium-wall.description = Protects structures from enemy projectiles. -block.beryllium-wall-large.description = Protects structures from enemy projectiles. -block.tungsten-wall.description = Protects structures from enemy projectiles. -block.tungsten-wall-large.description = Protects structures from enemy projectiles. -block.carbide-wall.description = Protects structures from enemy projectiles. -block.carbide-wall-large.description = Protects structures from enemy projectiles. -block.reinforced-surge-wall.description = Protects structures from enemy projectiles, periodically launching electric arcs upon projectile contact. -block.reinforced-surge-wall-large.description = Protects structures from enemy projectiles, periodically launching electric arcs upon projectile contact. -block.shielded-wall.description = Protects structures from enemy projectiles. Deploys a shield that absorbs most projectiles when power is provided. Conducts power. -block.blast-door.description = A wall that opens when allied ground units are in range. Cannot be manually controlled. -block.duct.description = Moves items forward. Only capable of storing a single item. -block.armored-duct.description = Moves items forward. Does not accept non-duct inputs from the sides. -block.duct-router.description = Distributes items equally across three directions. Only accepts items from the back side. Can be configured as an item sorter. -block.overflow-duct.description = Only outputs items to the sides if the front path is blocked. -block.duct-bridge.description = Moves items over structures and terrain. -block.duct-unloader.description = Unloads the selected item from the block behind it. Cannot unload from cores. -block.underflow-duct.description = Opposite of an overflow duct. Outputs to the front if the left and right paths are blocked. -block.reinforced-liquid-junction.description = Acts as a junction between two crossing conduits. -block.surge-conveyor.description = Moves items in batches. Can be sped up with power. Conducts power. -block.surge-router.description = Equally distributes items in three directions from surge conveyors. Can be sped up with power. Conducts power. -block.unit-cargo-loader.description = Constructs cargo drones. Drones automatically distribute items to Cargo Unload Points with a matching filter. -block.unit-cargo-unload-point.description = Acts as an unloading point for cargo drones. Accepts items that match the selected filter. -block.beam-node.description = Transmits power to other blocks orthogonally. Stores a small amount of power. -block.beam-tower.description = Transmits power to other blocks orthogonally. Stores a large amount of power. Long-range. -block.turbine-condenser.description = Generates power when placed on vents. Produces a small amount of water. -block.chemical-combustion-chamber.description = Generates power from arkycite and ozone. -block.pyrolysis-generator.description = Generates large amounts of power from arkycite and slag. Produces water as a byproduct. -block.flux-reactor.description = Generates large amounts of power when heated. Requires cyanogen as a stabilizer. Power output and cyanogen requirements are proportional to heat input.\nExplodes if insufficient cyanogen is provided. -block.neoplasia-reactor.description = Uses arkycite, water and phase fabric to generate large amounts of power. Produces heat and dangerous neoplasm as a byproduct.\nExplodes violently if neoplasm is not removed from the reactor via conduits. -block.build-tower.description = Automatically rebuilds structures in range and assists other units in construction. -block.regen-projector.description = Slowly repairs allied structures in a square perimeter. Requires hydrogen. -block.reinforced-container.description = Stores a small amount of items. Contents can be retrieved via unloaders. Does not increase core storage capacity. -block.reinforced-vault.description = Stores a large amount of items. Contents can be retrieved via unloaders. Does not increase core storage capacity. -block.tank-fabricator.description = Constructs Stell units. Outputted units can be used directly, or moved into refabricators for upgrading. -block.ship-fabricator.description = Constructs Elude units. Outputted units can be used directly, or moved into refabricators for upgrading. -block.mech-fabricator.description = Constructs Merui units. Outputted units can be used directly, or moved into refabricators for upgrading. -block.tank-assembler.description = Assembles large tanks out of inputted blocks and units. Output tier may be increased by adding modules. -block.ship-assembler.description = Assembles large ships out of inputted blocks and units. Output tier may be increased by adding modules. -block.mech-assembler.description = Assembles large mechs out of inputted blocks and units. Output tier may be increased by adding modules. -block.tank-refabricator.description = Upgrades inputted tank units to the second tier. -block.ship-refabricator.description = Upgrades inputted ship units to the second tier. -block.mech-refabricator.description = Upgrades inputted mech units to the second tier. -block.prime-refabricator.description = Upgrades inputted units to the third tier. -block.basic-assembler-module.description = Increases assembler tier when placed next to a construction boundary. Requires power. Can be used as a payload input. -block.small-deconstructor.description = Deconstructs inputted structures and units. Returns 100% of the build cost. -block.reinforced-payload-conveyor.description = Moves payloads forward. -block.reinforced-payload-router.description = Distributes payloads into adjacent blocks. Functions as a sorter when a filter is set. -block.payload-mass-driver.description = Long-range payload transport structure. Shoots received payloads to linked payload mass drivers. -block.large-payload-mass-driver.description = Long-range payload transport structure. Shoots received payloads to linked payload mass drivers. -block.unit-repair-tower.description = Repairs all units in its vicinity. Requires ozone. -block.radar.description = Gradually uncovers terrain and enemy units in a large radius. Requires power. -block.shockwave-tower.description = Damages and destroys enemy projectiles in a radius. Requires cyanogen. -block.canvas.description = Displays a simple image with a pre-defined palette. Editable. +block.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özelében lévő legközelebbi sérült egységet. Opcionálisan elfogadja a 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.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. Nagy mennyiségű Hőt 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ű Áramot 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 = Kondenzá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 = A Grafitot és a Volfrámot Karbiddá olvasztja. 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, 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 fogadja el a nem csővezetékes bemeneteket oldalról. +block.reinforced-liquid-router.description = Egyenletesen osztja el a folyadékokat minden oldalra. +block.reinforced-liquid-tank.description = Nagy mennyiségű folyadékot tárol. +block.reinforced-liquid-container.description = Jelentős mennyiségű folyadékot tárol. +block.reinforced-bridge-conduit.description = Folyadékok szállítására alkalmas épületek és terepakadályok fölött. +block.reinforced-pump.description = Folyadékokat szivattyúz és ad ki. Hidrogént igényel. +block.beryllium-wall.description = Megvédi az építményeket az ellenséges lövedékektől. +block.beryllium-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől. +block.tungsten-wall.description = Megvédi az építményeket az ellenséges lövedékektől. +block.tungsten-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől. +block.carbide-wall.description = Megvédi az építményeket az ellenséges lövedékektől. +block.carbide-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől. +block.reinforced-surge-wall.description = Megvédi az építményeket az ellenséges lövedékektől, a lövedékekkel való érintkezésekor időszakosan elektromos íveket bocsát ki. +block.reinforced-surge-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől, a lövedékekkel való érintkezésekor időszakosan elektromos íveket bocsát ki. +block.shielded-wall.description = Megvédi az építményeket az ellenséges lövedékektől. Olyan pajzsot képez, amely a legtöbb lövedéket elnyeli, ha Áramot kap. Vezeti az Áramot. +block.blast-door.description = Egy fal, amely kinyílik, ha a 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 ad ki nyersanyagot oldalra, ha előrefelé már nem tud. Nem használható közvetlenül Túlfolyó Kapu, vagy Alul-folyó Kapu mellett. +block.duct-bridge.description = Nyersanyagok szállítására alkalmas épületek és terepakadályok fölött. +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 = 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 Alul-folyó Kapu mellett. +block.reinforced-liquid-junction.description = Két egymást keresztező cső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.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ű Áramot termel Arkycitből és Salakból. Melléktermékként Vizet termel. +block.flux-reactor.description = Nagy mennyiségű Áramot 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.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égé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égé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óak, vagy átvihetőek Tank Újratervezőbe fejlesztésre. +block.ship-fabricator.description = Elude egységeket épít. A kimeneti egységek közvetlenül felhasználhatóak, vagy átvihetőek Repülőgép Újratervezőbe fejlesztésre. +block.mech-fabricator.description = Merui egységeket épít. A kimeneti egységek közvetlenül felhasználhatóak, vagy átvihetőek Mech Újratervezőbe fejlesztésre. +block.tank-assembler.description = Nagy méretű tankokat állít össze a beadott blokkokból és egységekből. A kimeneti szint Összeszerelő 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 Összeszerelő 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 Összeszerelő Modulok hozzáadásával növelhető. +block.tank-refabricator.description = Felfejleszti a bejuttatott tank típusú egységeket a második szintre. +block.ship-refabricator.description = Felfejleszti a bejuttatott repülőgép típusú egységeket a második szintre. +block.mech-refabricator.description = Felfejleszti a bejuttatott mech típusú egységeket a második szintre. +block.prime-refabricator.description = A bejuttatott tank-/repülőgép-/mech típusú egységeket a harmadik szintre fejleszti. +block.basic-assembler-module.description = Növeli a Tank-/Repülgép-/Mech Összeszerelő szintjét, ha annak az építési határvonala 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.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ú nyersanyagszállító eszköz. Rakományokban lő át nyersanyagokat egy másik, hozzákapcsolt Tömegmozgatónak. +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.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égsugarú körön belül. Cianogé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.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ő lövedékeket zúdít minden közeli ellenségre. -unit.nova.description = Lézereket lő, amik az ellenséget sebzik, de gyógyítják a szövetségeseket. Repülésre alkalmas. -unit.pulsar.description = Elektromos szikrákat indít, amik az ellenséget sebzik, de gyógyítják a szövetségeseket. Repülésre alkalmas. -unit.quasar.description = Átütő lézersugarakat lő, amik az ellenséget sebzik, de gyógyítják a szövetségeseket. Repülésre alkalmas. Pajzsa van. +unit.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 szór, 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.corvus.description = Hatalmas lézersugarat lő, amelyek sebzik az ellenséget, de gyógyítják a szövetségeseket. A legtöbb terepakadályt átlépi. +unit.crawler.description = Az ellenséghez rohan és egy nagy robbanásban megsemmisíti önmagát, így sebezve az ellenséget. +unit.atrax.description = Gyengítő Salakgolyókat lő a földi célpontokra. A legtöbb terepakadályt átlépi. unit.spiroct.description = Elszívja az ellenség életerejét, önmagát gyógyítva közben. A legtöbb terepakadályt átlépi. unit.arkyid.description = Nagy lézernyalábokkal elszívja az ellenség életerejét, önmagát gyógyítva közben. A legtöbb terepakadályt átlépi. -unit.toxopid.description = Nagy elektromos bombákat és átütő lézert lő az ellenségre. A legtöbb terepakadályt átlépi. +unit.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.zenith.description = Rakétasorozatokat lő közeli ellenségekre. unit.antumbra.description = Lövedékek záporát zúdítja minden közeli ellenségre. -unit.eclipse.description = Két átütő lézersugarat és rengeteg lövedéket zúdít minden közeli ellenségre. -unit.mono.description = Automatikusan bányászik rezet és ólmot a magba juttatva őket. +unit.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ülete és földi egységek szállítására. -unit.quad.description = Nagy bombákat szór földi célpontokra, amik sebzik az ellenséget, de javítják a szövetséges épületeket. Képes közepes méretű földi egységek szállítására. +unit.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.risso.description = Rakéták és lövedékek záporát zúdítja minden közeli ellenségre. -unit.minke.description = Tüzérségi lövedékeket és egyszerű töltényeket lő közeli föld célpontokra. -unit.bryde.description = Nagytávolságú tüzérségi rakétákat lő az ellenségre. +unit.minke.description = Tüzérségi 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.sei.description = Rakéták és páncéltörő lövedékek záporát zúdítja az ellenségre. -unit.omura.description = Nagy hatótávolságú átütő lövedékeket lő az ellenségre. Flare egységeket gyárt. -unit.alpha.description = Megvédi a Shard core-t az ellenségtől. Épít. -unit.beta.description = Megvédi a Foundation core-t az ellenségtől. Épít. -unit.gamma.description = Megvédi a Nucleus core-t az ellenségtől. Épít. -unit.retusa.description = Fires homing torpedoes at nearby enemies. Repairs allied units. -unit.oxynoe.description = Fires structure-repairing streams of flame at nearby enemies. Targets nearby enemy projectiles with a point defense turret. -unit.cyerce.description = Fires seeking cluster-missiles at enemies. Repairs allied units. -unit.aegires.description = Shocks all enemy units and structures that enter its energy field. Repairs all allies. -unit.navanax.description = Fires explosive EMP projectiles, dealing significant damage to enemy power networks and repairing allied structures. Melts nearby enemies with 4 autonomous laser turrets. -unit.stell.description = Fires standard bullets at enemy targets. -unit.locus.description = Fires alternating bullets at enemy targets. -unit.precept.description = Fires piercing cluster bullets at enemy targets. -unit.vanquish.description = Fires large piercing splitting bullets at enemy targets. -unit.conquer.description = Fires large piercing cascades of bullets at enemy targets. -unit.merui.description = Fires long-range artillery at enemy ground targets. Can step over most terrain. -unit.cleroi.description = Fires dual shells at enemy targets. Targets enemy projectiles with point defense turrets. Can step over most terrain. -unit.anthicus.description = Fires long-range homing missiles at enemy targets. Can step over most terrain. -unit.tecta.description = Fires homing plasma missiles at enemy targets. Protects itself with a directional shield. Can step over most terrain. -unit.collaris.description = Fires long-range fragmenting artillery at enemy targets. Can step over most terrain. -unit.elude.description = Fires pairs of homing bullets at enemy targets. Can float over bodies of liquid. -unit.avert.description = Fires twisting pairs of bullets at enemy targets. -unit.obviate.description = Fires twisting pairs of lightning orbs at enemy targets. -unit.quell.description = Fires long-range homing missiles at enemy targets. Suppresses enemy structure repair blocks. -unit.disrupt.description = Fires long-range homing suppression missiles at enemy targets. Suppresses enemy structure repair blocks. -unit.evoke.description = Builds structures to defend the Bastion core. Repairs structures with a beam. -unit.incite.description = Builds structures to defend the Citadel core. Repairs structures with a beam. -unit.emanate.description = Builds structures to defend the Acropolis core. Repairs structures with beams. -lst.read = Read a number from a linked memory cell. -lst.write = Write a number to a linked memory cell. -lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. -lst.draw = Add an operation to the drawing buffer.\nDoes not display anything until [accent]Draw Flush[] is used. -lst.drawflush = Flush queued [accent]Draw[] operations to a display. -lst.printflush = Flush queued [accent]Print[] operations to a message block. -lst.getlink = Get a processor link by index. Starts at 0. -lst.control = Control a building. -lst.radar = Locate units around a building with range. -lst.sensor = Get data from a building or unit. -lst.set = Set a variable. -lst.operation = Perform an operation on 1-2 variables. -lst.end = Jump to the top of the instruction stack. -lst.wait = Wait a certain number of seconds. -lst.stop = Halt execution of this processor. -lst.lookup = Look up an item/liquid/unit/block type by ID.\nTotal counts of each type can be accessed with:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] -lst.jump = Conditionally jump to another statement. -lst.unitbind = Bind to the next unit of a type, and store it in [accent]@unit[]. -lst.unitcontrol = Control the currently bound unit. -lst.unitradar = Locate units around the currently bound unit. -lst.unitlocate = Locate a specific type of position/building anywhere on the map.\nRequires a bound unit. -lst.getblock = Get tile data at any location. -lst.setblock = Set tile data at any location. -lst.spawnunit = Spawn unit at a location. -lst.applystatus = Apply or clear a status effect from a uniut. -lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. -lst.explosion = Create an explosion at a location. -lst.setrate = Set processor execution speed in instructions/tick. -lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. -lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. -lst.setrule = Set a game rule. -lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. -lst.cutscene = Manipulate the player camera. -lst.setflag = Set a global flag that can be read by all processors. -lst.getflag = Check if a global flag is set. -lst.setprop = Sets a property of a unit or building. -lst.effect = Create a particle effect. -lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. -logic.nounitbuild = [red]Unit building logic is not allowed here. -lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. -lenum.shoot = Shoot at a position. -lenum.shootp = Shoot at a unit/building with velocity prediction. -lenum.config = Building configuration, e.g. sorter item. -lenum.enabled = Whether the block is enabled. -laccess.color = Illuminator color. -laccess.controller = Unit controller. If processor controlled, returns processor.\nIf in a formation, returns leader.\nOtherwise, returns the unit itself. -laccess.dead = Whether a unit/building is dead or no longer valid. -laccess.controlled = Returns:\n[accent]@ctrlProcessor[] if unit controller is processor\n[accent]@ctrlPlayer[] if unit/building controller is player\n[accent]@ctrlFormation[] if unit is in formation\nOtherwise, 0. -laccess.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. -laccess.speed = Top speed of a unit, in tiles/sec. -laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. -lcategory.unknown = Unknown -lcategory.unknown.description = Uncategorized instructions. -lcategory.io = Input & Output -lcategory.io.description = Modify contents of memory blocks and processor buffers. -lcategory.block = Block Control -lcategory.block.description = Interact with blocks. -lcategory.operation = Operations -lcategory.operation.description = Logical operations. -lcategory.control = Flow Control -lcategory.control.description = Manage execution order. -lcategory.unit = Unit Control -lcategory.unit.description = Give units commands. -lcategory.world = World -lcategory.world.description = Control how the world behaves. -graphicstype.clear = Fill the display with a color. -graphicstype.color = Set color for next drawing operations. -graphicstype.col = Equivalent to color, but packed.\nPacked colors are written as hex codes with a [accent]%[] prefix.\nExample: [accent]%ff0000[] would be red. -graphicstype.stroke = Set line width. -graphicstype.line = Draw line segment. -graphicstype.rect = Fill a rectangle. -graphicstype.linerect = Draw a rectangle outline. -graphicstype.poly = Fill a regular polygon. -graphicstype.linepoly = Draw a regular polygon outline. -graphicstype.triangle = Fill a triangle. -graphicstype.image = Draw an image of some content.\nex: [accent]@router[] or [accent]@dagger[]. -lenum.always = Always true. -lenum.idiv = Integer division. -lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. -lenum.mod = Modulo. -lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. -lenum.notequal = Not equal. Coerces types. -lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. -lenum.shl = Bit-shift left. -lenum.shr = Bit-shift right. -lenum.or = Bitwise OR. -lenum.land = Logical AND. -lenum.and = Bitwise AND. -lenum.not = Bitwise flip. -lenum.xor = Bitwise XOR. -lenum.min = Minimum of two numbers. -lenum.max = Maximum of two numbers. -lenum.angle = Angle of vector in degrees. -lenum.anglediff = Absolute distance between two angles in degrees. -lenum.len = Length of vector. -lenum.sin = Sine, in degrees. -lenum.cos = Cosine, in degrees. -lenum.tan = Tangent, in degrees. -lenum.asin = Arc sine, in degrees. -lenum.acos = Arc cosine, in degrees. -lenum.atan = Arc tangent, in degrees. -lenum.rand = Random decimal in range [0, value). -lenum.log = Natural logarithm (ln). -lenum.log10 = Base 10 logarithm. -lenum.noise = 2D simplex noise. -lenum.abs = Absolute value. -lenum.sqrt = Square root. -lenum.any = Any unit. -lenum.ally = Ally unit. -lenum.attacker = Unit with a weapon. -lenum.enemy = Enemy unit. -lenum.boss = Guardian unit. -lenum.flying = Flying unit. -lenum.ground = Ground unit. -lenum.player = Unit controlled by a player. -lenum.ore = Ore deposit. -lenum.damaged = Damaged ally building. -lenum.spawn = Enemy spawn point.\nMay be a core or a position. -lenum.building = Building in a specific group. -lenum.core = Any core. -lenum.storage = Storage building, e.g. Vault. -lenum.generator = Buildings that generate power. -lenum.factory = Buildings that transform resources. -lenum.repair = Repair points. -lenum.battery = Any battery. -lenum.resupply = Resupply points.\nOnly relevant when [accent]"Unit Ammo"[] is enabled. -lenum.reactor = Impact/Thorium reactor. -lenum.turret = Any turret. -sensor.in = The building/unit to sense. -radar.from = Building to sense from.\nSensor range is limited by building range. -radar.target = Filter for units to sense. -radar.and = Additional filters. -radar.order = Sorting order. 0 to reverse. -radar.sort = Metric to sort results by. -radar.output = Variable to write output unit to. -unitradar.target = Filter for units to sense. -unitradar.and = Additional filters. -unitradar.order = Sorting order. 0 to reverse. -unitradar.sort = Metric to sort results by. -unitradar.output = Variable to write output unit to. -control.of = Building to control. -control.unit = Unit/building to aim at. -control.shoot = Whether to shoot. -unitlocate.enemy = Whether to locate enemy buildings. -unitlocate.found = Whether the object was found. -unitlocate.building = Output variable for located building. -unitlocate.outx = Output X coordinate. -unitlocate.outy = Output Y coordinate. -unitlocate.group = Building group to look for. -lenum.idle = Don't move, but keep building/mining.\nThe default state. -lenum.stop = Stop moving/mining/building. -lenum.unbind = Completely disable logic control.\nResume standard AI. -lenum.move = Move to exact position. -lenum.approach = Approach a position with a radius. -lenum.pathfind = Pathfind to the enemy spawn. -lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. -lenum.target = Shoot a position. -lenum.targetp = Shoot a target with velocity prediction. -lenum.itemdrop = Drop an item. -lenum.itemtake = Take an item from a building. -lenum.paydrop = Drop current payload. -lenum.paytake = Pick up payload at current location. -lenum.payenter = Enter/land on the payload block the unit is on. -lenum.flag = Numeric unit flag. -lenum.mine = Mine at a position. -lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. -lenum.within = Check if unit is near a position. -lenum.boost = Start/stop boosting. +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.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.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. + +#Erekir +unit.stell.description = Normál 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 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ő plazma raké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. Képes folyadéktestek felett lebegni. +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 = Kettő darab, nagy hatótávolságú célkövető rakétát lő ki egyszerre az ellenséges célpontokra. Elnyomja az ellenséges szerkezetjavító blokkokat. +unit.disrupt.description = Három darab, nagy hatótávolságú célkövető rakétát lő ki egyszerre 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. + +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.format = A szövegpufferben lévő következő helyőrzőt egy értékkel helyettesíti.\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.\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.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.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 el egy műveletet 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.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/-ben. +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.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.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.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.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 Make Marker utasításban megadottal.\n[accent]null []értékek figyelmen kívül lesznek hagyva. +lst.localeprint = Hozzáadja a pálya Helyi Csomagjainak tulajdonság értékét a szövegpufferhez.\nA pálya Helyi Csomagjainak beállításait a térképszerkesztőben ellenőrizheted [accent]Pálya Infó > Helyi 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 = nulla +lglobal.@pi = A pi matematikai állandó (3.141...) +lglobal.@e = Az e matematikai állandó (2.718...) +lglobal.@degToRad = Szorozza meg ezt a számot a fokok radiánra való konvertálásához +lglobal.@radToDeg = Szorozza meg ezt a számot a radiánok fokokká konvertálásához + +lglobal.@time = Az aktuális mentés játék-ideje, milliszekundumban +lglobal.@tick = Az aktuális mentés játék-ideje, tick-ben (1 másodperc = 60 tick) +lglobal.@second = Az aktuális mentés játék-ideje, másodpercben +lglobal.@minute = Az aktuális mentés játék-ideje, percben +lglobal.@waveNumber = Az aktuális 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 + +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 blokkok összesített száma +lglobal.@ipt = A processzor utasítás végrehajtási sebessége tick-ben (60 tick = 1 másodperc) + +lglobal.@unitCount = A játékban található egységek típusainak összesített száma; a Keres utasítással együtt használjuk +lglobal.@blockCount = A játékban található blokkok típusainak összesített száma; a Keres utasítással együtt használjuk +lglobal.@itemCount = A játékban található nyersanyagok típusainak összesített száma; a Keres utasítással együtt használjuk +lglobal.@liquidCount = A játékban található folyadékok típusainak összesített száma; a Keres utasítással együtt használjuk + +lglobal.@server = Igaz, ha a kód szerveren, vagy egyjátékos módban fut, egyébként hamis +lglobal.@client = Igaz, ha a kód egy szerverhez csatlakoztatott kliensen fut + +lglobal.@clientLocale = A kódot futtató kliens nyelvi 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ékos neve +lglobal.@clientTeam = A kódot futtató kliens csapat azonosí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 függ, hogy a blokk engedélyezve van-e. + +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 függ, 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.speed = Az egység legnagyobb sebessége, csempe/mp-ben. +laccess.id = Egy egység/blokk/nyersanyag/folyadék azonosítója.\nEz a keresési művelet fordítottja. + +lcategory.unknown = Ismeretlen +lcategory.unknown.description = Nem kategorizált utasítások. +lcategory.io = Bemenet és kimenet +lcategory.io.description = A memóriablokkok és processzorpufferek tartalmának módosítása. +lcategory.block = Blokk vezé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.description = A végrehajtási sorrend kezelése. +lcategory.unit = Egységvezérlés +lcategory.unit.description = Adj parancsokat 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 írja 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.rect = Téglalap kitöltése. +graphicstype.linerect = Rajzolj egy téglalap alakú körvonalat. +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.\nPédául: [accent]@router[], vagy [accent]@dagger[]. +graphicstype.print = Szöveget rajzol a kiírási pufferből.\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[]-al/-el 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.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.shl = Biteltolás balra. +lenum.shr = Biteltolás jobbra. +lenum.or = Bitenkénti VAGY. +lenum.land = Logikai ÉS. +lenum.and = Bitenkénti ÉS. +lenum.not = Bitenkénti átfordítás. +lenum.xor = Bitenkénti KIZÁRÓ-VAGY. + +lenum.min = Legalább két szám. +lenum.max = Legfeljebb két szám. +lenum.angle = A vektor szöge fokban. +lenum.anglediff = Két szög abszolút távolsága fokban. +lenum.len = A vektor hossza. + +lenum.sin = Szinusz, fokban. +lenum.cos = Koszinusz, fokban. +lenum.tan = Tangens, fokban. + +lenum.asin = ARC-szinusz, fokban. +lenum.acos = ARC-koszinusz, fokban. +lenum.atan = ARC-tangens, fokban. + +#not a typo, look up 'range notation' +lenum.rand = Véletlen 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.abs = Abszolút érték. +lenum.sqrt = Négyzetgyök. + +lenum.any = Bármelyik egység. +lenum.ally = Szövetséges egység. +lenum.attacker = Fegyveres egység. +lenum.enemy = Ellenséges egység. +lenum.boss = Őrző egység. +lenum.flying = Repülő egység. +lenum.ground = Földi egység. +lenum.player = Egy játékos által irányított egység. + +lenum.ore = Érclelőhely. +lenum.damaged = Sérült szövetséges épület. +lenum.spawn = Ellenséges kezdőpont.\nLehet egy Mag vagy egy pozíció. +lenum.building = Épület egy adott csoportban. + +lenum.core = Bármilyen Mag. +lenum.storage = Raktárépület, pl. Vault. +lenum.generator = Energiát termelő épületek. +lenum.factory = Nyersanyagokat feldolgozó épületek. +lenum.repair = Javítási pontok. +lenum.battery = Bármilyen akkumulátor. +lenum.resupply = Utánpótlási pontok.\nCsak akkor van jelentősége, ha az [accent]"Egység Lőszer"[] engedélyezve van. +lenum.reactor = Ütközéses/Tórium Erőmű. +lenum.turret = Bármilyen lövegtorony. + +sensor.in = Az épület/egység, amelyet érzékelni kell. + +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.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.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.unit = Megcélozandó egység/épület. +control.shoot = Akár lőni is lehet. + +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.building = Kimeneti változó a megtalált épülethez. +unitlocate.outx = Kimeneti X koordináta. +unitlocate.outy = Kimeneti Y koordináta. +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.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.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.flushtext = A nyomtatási puffer tartalmának ürítése a jelölőre, ha alkalmazható.\nHa a fetch értéke igaz, megpróbálja lehívni a tulajdonságokat a pálya Helyi 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úra-atlaszából (kebab-case elnevezési stílus használatával).\nHa a printFlush értéke 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 = A jelölő skálázása 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 index az első pozíció. +lenum.uvi = A textúra pozíciója nullától egyig, négyzet jelölőkhöz használatos. +lenum.colori = Indexelt pozíció, vonal- és négyzet jelölőkhöz használatos, ahol a nulla index az első szín. diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 836a50965b..7a7b796120 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -341,12 +341,23 @@ open = Buka customize = Sunting Peraturan cancel = Batal command = Perintah +command.queue = [lightgray][Queuing] command.mine = Tambang command.repair = Perbaiki command.rebuild = Bangun Kembali command.assist = Bantu Pemain command.move = Maju command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Buka Tautan copylink = Salin Tautan back = Kembali @@ -427,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 @@ -483,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 @@ -494,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 @@ -505,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'. @@ -592,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: @[]\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: @@ -644,9 +676,11 @@ 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.background = Latar Belakang marker.outline = Garis Luar @@ -675,7 +709,6 @@ resources.max = Maks bannedblocks = Balok yang Dilarang objectives = Tujuan bannedunits = Unit yang Dilarang -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Tambah Semua @@ -734,8 +767,7 @@ 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.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}[] @@ -1008,6 +1040,7 @@ bullet.splashdamage = [stat]{0}[lightgray] kekuatan percikan~[stat] {1}[lightgra bullet.incendiary = [stat]membakar bullet.homing = [stat]mengejar bullet.armorpierce = [stat]menembus baju besi +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x pecahan: @@ -1063,6 +1096,7 @@ setting.backgroundpause.name = Jeda di Latar setting.buildautopause.name = Jeda Otomatis saat Membangun setting.doubletapmine.name = Dua-kali Sentuh untuk Menambang setting.commandmodehold.name = Tahan Untuk Mode Perintah +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Matikan Mod Ketika Ada Masalah Saat Memulai Permainan setting.animatedwater.name = Animasi Perairan setting.animatedshields.name = Animasi Perisai @@ -1116,7 +1150,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 @@ -1136,6 +1170,7 @@ keybind.title = Ganti Tombol keybinds.mobile = [scarlet]Mayoritas tombol tidak didukung oleh perangkat ponsel. Hanya gerakan dasar yang didukung. category.general.name = Umum category.view.name = Melihat +category.command.name = Unit Command category.multiplayer.name = Bermain Bersama category.blocks.name = Pilih Blok placement.blockselectkeys = \n[lightgray]Tombol: [{0}, @@ -1153,6 +1188,23 @@ keybind.mouse_move.name = Ikuti Tetikus keybind.pan.name = Tampilan Geser keybind.boost.name = Dorongan keybind.command_mode.name = Mode Perintah +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Pilih Daerah keybind.schematic_menu.name = Menu Skema @@ -1216,9 +1268,12 @@ mode.pvp.description = Melawan pemain lain.\n[gray]Membutuhkan setidaknya 2 inti mode.attack.name = Penyerangan mode.attack.description = Hancurkan markas musuh. Membutuhkan inti merah di dalam peta untuk main. mode.custom = Pengaturan Modifikasi +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Sumber Daya Tak Terbatas rules.onlydepositcore = Hanya Izinkan Penyetoran Inti +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Ledakan Reaktor rules.coreincinerates = Penghangusan Luapan Inti rules.disableworldprocessors = Nonaktifkan Prosesor Dunia @@ -1742,7 +1797,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 @@ -1861,6 +1915,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 +2122,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. @@ -2105,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. @@ -2226,6 +2279,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2261,6 +2315,45 @@ lst.getflag = Periksa apakah ada global flag yang ditentukan. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Logika unit membangun tidak diperbolehkan di sini. @@ -2304,6 +2397,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. @@ -2412,3 +2506,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 fd883240dd..0c23dce129 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -339,12 +339,23 @@ open = Apri customize = Personalizza cancel = Annulla command = Comando +command.queue = [lightgray][Queuing] command.mine = Mina command.repair = Ripara command.rebuild = Ricostruisci command.assist = Aiuta giocatore command.move = Muovi command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Apri Link copylink = Copia link back = Indietro @@ -425,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 @@ -481,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à @@ -492,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 @@ -503,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'. @@ -587,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: @[]\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: @@ -637,9 +669,11 @@ 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.background = Sfondo marker.outline = Outline objective.research = [accent]Ricerca:\n[]{0}[lightgray]{1} @@ -665,7 +699,6 @@ resources.max = Max bannedblocks = Blocchi Banditi objectives = Obbiettivi bannedunits = Unità bandite -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Aggiungi Tutti @@ -724,8 +757,7 @@ 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.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}[] @@ -995,6 +1027,7 @@ bullet.splashdamage = [stat]{0}[lightgray] danno ad area ~[stat] {1}[lightgray] bullet.incendiary = [stat]incendiario bullet.homing = [stat]autoguidato bullet.armorpierce = [stat]perforazione alle armature +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frammentazione: @@ -1050,6 +1083,7 @@ setting.backgroundpause.name = Metti in pausa quando in background setting.buildautopause.name = Pausa Automatica nella Costruzione setting.doubletapmine.name = Doppio click per minare setting.commandmodehold.name = Tieni premuto per comandare +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disabilita le mod dopo un arresto anomalo setting.animatedwater.name = Fluidi Animati setting.animatedshields.name = Scudi Animati @@ -1103,7 +1137,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 @@ -1123,6 +1157,7 @@ keybind.title = Configurazione Tasti keybinds.mobile = [scarlet]La maggior parte dei controlli qui non sono funzionano sui dispositivi mobili. È supportato solo il movimento di base. category.general.name = Generale category.view.name = Visualizzazione +category.command.name = Unit Command category.multiplayer.name = Multigiocatore category.blocks.name = Seleziona Blocco placement.blockselectkeys = \n[lightgray]Tasto: [{0}, @@ -1140,6 +1175,23 @@ keybind.mouse_move.name = Segui il Mouse keybind.pan.name = Vista Panoramica keybind.boost.name = Scatto keybind.command_mode.name = Modalità di comando +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Seleziona Regione keybind.schematic_menu.name = Menu Schematica @@ -1203,9 +1255,12 @@ mode.pvp.description = Combatti contro altri giocatori in locale.\n[gray]Per gio mode.attack.name = Schermaglia mode.attack.description = Distruggi la base nemica. \n[gray]Richiede un nucleo rosso nella mappa per essere giocata. mode.custom = Regole Personalizzate +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Risorse Infinite rules.onlydepositcore = Deposito consentito solo al nucleo +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Esplosioni Reattore rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disabilita processori @@ -1728,7 +1783,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 @@ -1847,6 +1901,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. @@ -2046,7 +2101,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. @@ -2082,7 +2136,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2200,6 +2253,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2235,6 +2289,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2273,6 +2366,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. @@ -2366,3 +2460,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 dc51297c8d..2eac0ca92f 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -341,12 +341,23 @@ open = 開く customize = カスタマイズ cancel = キャンセル command = コマンド +command.queue = [lightgray][Queuing] command.mine = 採掘 command.repair = 修復 command.rebuild = 再建築 command.assist = プレイヤーをアシスト command.move = 移動 command.boost = ブースト +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = リンクを開く copylink = リンクをコピー back = 戻る @@ -427,6 +438,7 @@ editor.waves = ウェーブ: editor.rules = ルール: editor.generation = 生成: editor.objectives = オブジェクティブ +editor.locales = Locale Bundles editor.ingame = ゲーム内で編集する editor.playtest = Playtest editor.publish.workshop = ワークショップで公開 @@ -483,6 +495,7 @@ editor.default = [lightgray]<デフォルト> details = 詳細... edit = 編集... variables = 変数 +logic.globals = Built-in Variables editor.name = 名前: editor.spawn = ユニットを出す editor.removeunit = ユニットを消す @@ -494,6 +507,7 @@ editor.errorlegacy = このマップは古いです。今後、古いマップ editor.errornot = これはマップファイルではありません。 editor.errorheader = このマップファイルは無効または破損しています。 editor.errorname = マップに名前が設定されていません。 +editor.errorlocales = Error reading invalid locale bundles. editor.update = 更新 editor.randomize = ランダム editor.moveup = 上に移動 @@ -505,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 = 組み込みマップを上書きしようとしています! メニューの 'マップ情報' から異なる名前に設定してください。 @@ -591,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: @[]\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 = 高さ: @@ -641,9 +673,11 @@ 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.background = 背景 marker.outline = 輪郭 objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -669,7 +703,6 @@ resources.max = Max bannedblocks = 禁止ブロック objectives = オブジェクティブ bannedunits = 禁止ユニット -rules.hidebannedblocks = 禁止ブロックを非表示 bannedunits.whitelist = 「禁止ユニット」以外を禁止する(ホワイトリスト) bannedblocks.whitelist = 「禁止ブロック」以外を禁止する(ホワイトリスト) addall = すべて追加 @@ -728,8 +761,7 @@ 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.changeicon = アイコンを変更 sector.noswitch.title = セクターを切り替えることができません sector.noswitch = 既存のセクターが攻撃を受けている間は、セクターを切り替えることはできません。\n\nセクター: [accent]{0}[] on [accent]{1}[] @@ -1001,6 +1033,7 @@ bullet.splashdamage = [stat]{0}[lightgray] 範囲ダメージ 約[stat] {1}[ligh bullet.incendiary = [stat]焼夷弾 bullet.homing = [stat]追尾弾 bullet.armorpierce = [stat]アーマー貫通 +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1056,6 +1089,7 @@ setting.backgroundpause.name = バックグラウンド中は一時停止する setting.buildautopause.name = 常に建築一時中断状態にする setting.doubletapmine.name = ダブルタップで採掘する setting.commandmodehold.name = コマンドモードで長押し +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = 起動時にクラッシュした場合にModを無効にする setting.animatedwater.name = 流体のアニメーション setting.animatedshields.name = シールドのアニメーション @@ -1109,7 +1143,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 = 電線の透明度 @@ -1129,6 +1163,7 @@ keybind.title = キーバインドを再設定 keybinds.mobile = [scarlet]モバイルでは多くのキーバインドが機能しません。基本的な動きのみがサポートされています。 category.general.name = 一般 category.view.name = 表示 +category.command.name = Unit Command category.multiplayer.name = マルチプレイ category.blocks.name = ブロックセレクト placement.blockselectkeys = \n[lightgray]キー: [{0}, @@ -1146,6 +1181,23 @@ 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.rebuild_select.name = リージョンの再構築 keybind.schematic_select.name = 範囲選択 keybind.schematic_menu.name = 設計図メニュー @@ -1209,9 +1261,12 @@ mode.pvp.description = エリア内で他のプレイヤーと戦います。\n[ mode.attack.name = アタック mode.attack.description = ウェーブがなく、敵の基地を破壊することを目指します。\n[gray]マップに赤色のコアが必要です。 mode.custom = カスタムルール +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = 禁止ブロックを非表示 rules.infiniteresources = 資源の無限化 rules.onlydepositcore = コアへの搬入のみを許可 +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = リアクターの爆発 rules.coreincinerates = 余剰アイテムの焼却 rules.disableworldprocessors = ワールドプロセッサーを無効にする @@ -1731,7 +1786,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 = 戦艦再加工工場 @@ -1850,6 +1904,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防御、採掘、生産を用意しましょう。 @@ -2050,7 +2105,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 = さらにバージョンアップしたコアです。 非常に優れた耐久を持っています。 シタデルコアよりも多くの資源を格納します。 @@ -2086,7 +2140,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 = 構造物や地形の上に液体を輸送させることができます。 @@ -2204,6 +2257,7 @@ unit.emanate.description = アクロポリスコアを敵から守ります。\n lst.read = リンクされたメモリセルから数値を読み取ります。 lst.write = リンクされたメモリセルに数値を書き込みます。 lst.print = メッセージブロックにテキストを追加します。[accent]Print Flush[] を使用するまで何も表示しません。 +lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" lst.draw = ロジックディスプレイに操作を追加します。[accent]Draw Flush[] を使用するまで何も表示しません。 lst.drawflush = キューに入れられた [accent]Draw[] 操作をディスプレイにフラッシュします。 lst.printflush = キューに入れられた [accent]Print[] 操作をメッセージ ブロックにフラッシュします。 @@ -2239,6 +2293,45 @@ lst.getflag = グローバルフラグが設定されているかどうかを確 lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]ここではユニット構築ロジックは使用できません。 lenum.type = ユニットや建物の種類を取得します。\n例:任意のルーターに対して、 [accent]@router[] を返します。\n文字列ではありません。 lenum.shoot = 指定した座標に向かって撃ちます。 @@ -2277,6 +2370,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[] を返します。 @@ -2370,3 +2464,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 1feedc8786..14fa6c5d0c 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -341,12 +341,23 @@ open = 열기 customize = 사용자 정의 규칙 cancel = 취소 command = 명령 +command.queue = [lightgray][Queuing] command.mine = 채굴 command.repair = 수리 command.rebuild = 재건 command.assist = 플레이어 지원 command.move = 이동 command.boost = 비행 +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = 링크 열기 copylink = 링크 복사 back = 뒤로가기 @@ -426,6 +437,7 @@ editor.waves = 단계 editor.rules = 규칙 editor.generation = 지형 생성 editor.objectives = 목표 +editor.locales = Locale Bundles editor.ingame = 인게임 편집 editor.playtest = 맵 테스트 editor.publish.workshop = 창작마당 게시 @@ -482,6 +494,7 @@ editor.default = [lightgray]<기본값> details = 설명... edit = 편집... variables = 변수 +logic.globals = Built-in Variables editor.name = 이름: editor.spawn = 기체 생성 editor.removeunit = 기체 삭제 @@ -493,6 +506,7 @@ editor.errorlegacy = 이 맵은 너무 오래됐고, 더 이상 지원하지 않 editor.errornot = 맵 파일이 아닙니다. editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다. editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러오려고 시도하는 건가요? +editor.errorlocales = Error reading invalid locale bundles. editor.update = 업데이트 editor.randomize = 무작위 editor.moveup = 위로 이동 @@ -504,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 = 이 맵은 내장된 맵을 덮어씁니다! '맵 정보' 에서 다른 이름을 선택하세요. @@ -591,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: @[]\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 = 높이: @@ -641,9 +673,11 @@ 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.background = 배경 marker.outline = 외곽선 @@ -670,7 +704,6 @@ resources.max = 최대 bannedblocks = 금지된 블록 objectives = 목표 bannedunits = 금지된 기체 -rules.hidebannedblocks = 금지된 블록 숨기기 bannedunits.whitelist = 금지된 기체만 활성화 bannedblocks.whitelist = 금지된 블록만 활성화 addall = 모두 추가 @@ -729,8 +762,7 @@ 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.changeicon = 아이콘 바꾸기 sector.noswitch.title = 지역 전환 불가능 sector.noswitch = 기존 지역이 공격받는 동안은 지역을 전환할 수 없습니다.\n\n지역: [accent]{0}[] 중 [accent]{1}[] @@ -1000,6 +1032,7 @@ bullet.splashdamage = [stat]{0}[lightgray] 범위 피해량 ~ [stat]{1}[lightgra bullet.incendiary = [stat]방화[] bullet.homing = [stat]유도[] bullet.armorpierce = [stat]방어 관통 +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] 수리 억제 ~ [stat]{1}[lightgray] 타일 bullet.interval = [stat]{0}/sec[lightgray] 간격 탄환: bullet.frags = [stat]{0}[lightgray]개 파편 탄환:[][] @@ -1055,6 +1088,7 @@ setting.backgroundpause.name = 백그라운드에서 일시정지 setting.buildautopause.name = 건설 자동 일시정지 setting.doubletapmine.name = 연속 터치로 채광 setting.commandmodehold.name = 키를 누른 상태로 명령 +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = 로딩 중 충돌 시 모드 비활성화 setting.animatedwater.name = 액체 애니메이션 효과 setting.animatedshields.name = 보호막 애니메이션 효과 @@ -1108,7 +1142,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 = 전선 투명도 @@ -1128,6 +1162,7 @@ keybind.title = 조작키 설정 keybinds.mobile = [scarlet]대부분의 조작키 설정은 모바일에서 작동하지 않습니다. 기본 이동만 지원됩니다. category.general.name = 일반 category.view.name = 보기 +category.command.name = Unit Command category.multiplayer.name = 멀티플레이어 category.blocks.name = 블록 선택 placement.blockselectkeys = \n[lightgray]단축키: [{0}, @@ -1145,6 +1180,23 @@ 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.rebuild_select.name = 지역 재건 keybind.schematic_select.name = 영역 설정 keybind.schematic_menu.name = 설계도 메뉴 @@ -1208,9 +1260,12 @@ mode.pvp.description = 다른 플레이어와 현장에서 싸우세요.\n[gray] mode.attack.name = 공격 mode.attack.description = 적의 기지를 파괴하세요.\n[gray]플레이하려면 맵에 적 코어가 필요합니다. mode.custom = 사용자 정의 규칙 +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = 금지된 블록 숨기기 rules.infiniteresources = 무한 자원 rules.onlydepositcore = 오직 코어에만 투입 가능 +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = 원자로 폭발 허용 rules.coreincinerates = 코어 방화 비허용 rules.disableworldprocessors = 월드 프로세서 비활성화 @@ -1730,7 +1785,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 = 함선 재조립기 @@ -1848,6 +1902,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생산, 채굴, 방어시설을 구성하세요. @@ -2048,7 +2103,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 = 기지의 핵심입니다. 매우 튼튼합니다. 코어: 성채보다 더 많은 양의 자원을 저장합니다. @@ -2084,7 +2138,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 = 구조물 및 지형 위로 유체를 운반합니다. @@ -2203,6 +2256,7 @@ unit.emanate.description = 코어: 도심을 지켜내기 위해 구조물을 lst.read = 연결된 메모리 셀에서 숫자 읽음 lst.write = 연결된 메모리 셀에 숫자 작성 lst.print = 프린트 버퍼에 텍스트 추가\n[accent]Print Flush[]가 사용되기 전까진 아무것도 보여주지 않습니다 +lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" lst.draw = 드로잉 버퍼에 실행문 추가\n[accent]Draw Flush[]가 사용되기 전까진 아무것도 보여주지 않습니다 lst.drawflush = 대기중인 [accent]Draw[]실행문을 디스플레이에 출력 lst.printflush = 대기중인 [accent]Print[]실행문을 메시지 블록에 출력 @@ -2238,6 +2292,45 @@ lst.getflag = 전역 플래그가 설정되어 있는지 확인 lst.setprop = 기체 혹은 건물의 속성을 설정합니다. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]기체의 건설 로직은 여기서 허용되지 않습니다. @@ -2280,6 +2373,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 = 정수 나누기 @@ -2388,3 +2482,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 bd7fa2486d..058578ed3c 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -337,12 +337,23 @@ open = Atidaryti customize = Keisti Taisykles cancel = Atšaukti command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Atidaryti Nuorodą copylink = Kopijuoti Nuorodą back = Sugrįžti @@ -423,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 @@ -478,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ą @@ -489,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 @@ -500,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. @@ -584,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: @[]\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: @@ -634,9 +666,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -661,7 +695,6 @@ resources.max = Max bannedblocks = Uždrausti blokai objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Pridėti visus @@ -720,7 +753,7 @@ 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.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}[] @@ -989,6 +1022,7 @@ bullet.splashdamage = [stat]{0}[lightgray] zonos žalos ~[stat] {1}[lightgray] b bullet.incendiary = [stat]uždegantis bullet.homing = [stat]sekimas bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1044,6 +1078,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Automatinis Statybų Sustabdymas setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Vandens Animacija setting.animatedshields.name = Skydų Animacija @@ -1097,7 +1132,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 @@ -1117,6 +1152,7 @@ keybind.title = Pakeisti Valdymo Mygtukus keybinds.mobile = [scarlet]Dauguma valdymo mygtukų neveikia telefone. Tik paparastas judėjimas yra palaikomas. category.general.name = Bendra category.view.name = Vaizdas +category.command.name = Unit Command category.multiplayer.name = Žaidimas Tinkle category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1134,6 +1170,23 @@ keybind.mouse_move.name = Sekti Pelę keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Pasirinkite Regioną keybind.schematic_menu.name = Schemų Meniu @@ -1197,9 +1250,12 @@ mode.pvp.description = Kovokite su kitais žmonėmsi vietiniame tinkle.\n[gray]N mode.attack.name = Puolimas mode.attack.description = Sunaikinkite priešų branduolį. \n[gray]Norint žaisti žemėlapyje yra reikalingas branduolys su raudona spalva. mode.custom = Pasirinktinės Taisyklės +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Neriboti Resursai rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reaktorių Sprogimai rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors @@ -1717,7 +1773,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 @@ -1835,6 +1890,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. @@ -2034,7 +2090,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. @@ -2070,7 +2125,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. @@ -2187,6 +2241,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2222,6 +2277,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2260,6 +2354,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. @@ -2353,3 +2448,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 c35957b156..b0eff98f45 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -345,12 +345,23 @@ open = Open customize = Aanpassen cancel = Annuleer command = Commando +command.queue = [lightgray][Queuing] command.mine = Mijn command.repair = Repareer command.rebuild = Herbouw command.assist = Assist Speler command.move = Beweeg command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Open Link copylink = Kopieer Link back = Terug @@ -431,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 @@ -486,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 @@ -497,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 @@ -508,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. @@ -594,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: @[]\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: @@ -645,9 +677,11 @@ 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.background = Achtergrond marker.outline = Omtrek objective.research = [accent]Onderzoek:\n[]{0}[lightgray]{1} @@ -672,7 +706,6 @@ resources.max = Max bannedblocks = Verboden Blokken objectives = Doelen bannedunits = Verboden eenheden -rules.hidebannedblocks = Verberg verboden blokken bannedunits.whitelist = Verboden eenheden als whitelist bannedblocks.whitelist = Verboden blokken als whitelist addall = Voeg Alles Toe @@ -731,7 +764,7 @@ 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.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}[] @@ -1001,6 +1034,7 @@ bullet.splashdamage = [stat]{0}[lightgray] gebied scade ~[stat] {1}[lightgray] t bullet.incendiary = [stat]brandstichtend bullet.homing = [stat]doelzoekend bullet.armorpierce = [stat]pantserdoorborend +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x fragment kogels: @@ -1056,6 +1090,7 @@ setting.backgroundpause.name = Pauzeer in achtergrond setting.buildautopause.name = Pauzeer Bouw Automatisch setting.doubletapmine.name = Dubbelklik om te delven setting.commandmodehold.name = Vasthouden voor commandomodus +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Mods uitschakelen bij crash opstarten setting.animatedwater.name = Animeer Water setting.animatedshields.name = Animeer Schilden @@ -1109,7 +1144,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 @@ -1129,6 +1164,7 @@ keybind.title = Herbind Toetsen keybinds.mobile = [scarlet]De meeste toetscombinaties werken niet voor mobiele apparaten. Enkel standaard bewegingen zijn ondersteund. category.general.name = Algemeen category.view.name = Toon +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Selecteer Blok placement.blockselectkeys = \n[lightgray]Toets: [{0}, @@ -1146,6 +1182,23 @@ keybind.mouse_move.name = Volg Muis keybind.pan.name = Schuif Weergave keybind.boost.name = Boost keybind.command_mode.name = Commandomodus +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Herbouw Regio keybind.schematic_select.name = Selecteer gebied keybind.schematic_menu.name = Ontwerpmenu @@ -1209,9 +1262,12 @@ mode.pvp.description = Vecht tegen andere spelers.\n[gray]Vereist minstens 2 ver mode.attack.name = Aanvallen mode.attack.description = Geen rondes, maar met als doel de vijandlijke core(s) te vernietigen. mode.custom = Aangepaste Regels +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Verberg verboden blokken rules.infiniteresources = Oneindige Resources rules.onlydepositcore = Alleen spullen in de core doen toestaan. +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Ontploffende Reactors rules.coreincinerates = Core verbrandt overvloed aan materialen. rules.disableworldprocessors = Zet Wereld-Processors Uit. @@ -1730,7 +1786,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 @@ -1848,6 +1903,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. @@ -2047,7 +2103,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. @@ -2083,7 +2138,6 @@ block.impact-drill.description = When placed on ore, outputs items in bursts ind block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. -block.reinforced-junction.description = Acts as a bridge for two crossing conduits. block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. @@ -2200,6 +2254,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2235,6 +2290,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2273,6 +2367,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. @@ -2366,3 +2461,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 77fed0e672..7ce6dfecd9 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -337,12 +337,23 @@ open = Open customize = Pas aan cancel = Annuleer command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Open Link copylink = Kopiëer Link back = Terug @@ -423,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 @@ -478,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 @@ -489,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 @@ -500,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. @@ -584,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: @[]\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: @@ -634,9 +666,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -661,7 +695,6 @@ resources.max = Max bannedblocks = Banned Blocks objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -720,7 +753,7 @@ 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.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}[] @@ -989,6 +1022,7 @@ bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles bullet.incendiary = [stat]incendiary bullet.homing = [stat]homing bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1044,6 +1078,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animated Water setting.animatedshields.name = Animated Shields @@ -1097,7 +1132,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 @@ -1117,6 +1152,7 @@ keybind.title = Rebind Keys keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = General category.view.name = View +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1134,6 +1170,23 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1197,9 +1250,12 @@ mode.pvp.description = Fight against other players locally. mode.attack.name = Attack mode.attack.description = No waves, with the goal to destroy the enemy base. mode.custom = Custom Rules +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Infinite Resources rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors @@ -1717,7 +1773,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 @@ -1835,6 +1890,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. @@ -2034,7 +2090,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. @@ -2070,7 +2125,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. @@ -2187,6 +2241,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2222,6 +2277,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2260,6 +2354,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. @@ -2353,3 +2448,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 d51443ef2c..58b1074efb 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -14,7 +14,7 @@ link.f-droid.description = Pozycja w F-Droid link.wiki.description = Oficjalna Wiki Mindustry link.suggestions.description = Zaproponuj nowe funkcje link.bug.description = Znalazłeś błąd? Zgłoś go tutaj -linkopen = This server has sent you a link. Are you sure you want to open it?\n\n[sky]{0} +linkopen = Serwer wysłał ci link. Czy jesteś pewnien, że chcesz go otworzyć?\n\n[sky]{0} linkfail = Nie udało się otworzyć linku!\nURL został skopiowany. screenshot = Zapisano zrzut ekranu w {0} screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje miejsca w pamięci urządzenia. @@ -57,7 +57,7 @@ mods.browser.sortstars = Sortuj wg gwiazdek schematic = Schemat schematic.add = Zapisz schemat... schematics = Schematy -schematic.search = Search schematics... +schematic.search = Wyszukaj schematy... schematic.replace = Schemat o tej nazwie już istnieje. Czy chcesz go zastąpić? schematic.exists = Schemat o tej nazwie już istnieje. schematic.import = Importuj Schemat... @@ -70,7 +70,7 @@ schematic.shareworkshop = Podziel się na Warsztacie schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Odwróć schemat schematic.saved = Schemat zapisany. schematic.delete.confirm = Ten schemat zostanie usunięty. -schematic.edit = Edit Schematic +schematic.edit = Edytuj Schemat schematic.info = {0}x{1}, {2} bloków schematic.disabled = [scarlet]Schematy są wyłączone[]\nNie możesz używać schematów na tej [accent]mapie[] lub [accent]serwerze. schematic.tags = Tagi: @@ -79,7 +79,7 @@ schematic.addtag = Dodaj Znacznik schematic.texttag = Tekst Znacznika schematic.icontag = Ikona Znacznika schematic.renametag = Zmień Nazwę Znacznika -schematic.tagged = {0} tagged +schematic.tagged = {0} Otagowany schematic.tagdelconfirm = Czy kompletnie usunąć znacznik? schematic.tagexists = Taki znacznik już istnieje. @@ -107,7 +107,7 @@ joingame = Dołącz Do Gry customgame = Własna Gra newgame = Nowa Gra none = -none.found = [lightgray]<żaden znaleziony> +none.found = [lightgray] none.inmap = [lightgray] minimap = Minimapa position = Pozycja @@ -151,16 +151,16 @@ mod.incompatiblemod = [red]Niekompatybilne mod.blacklisted = [red]Niewspierane mod.unmetdependencies = [red]Niespełnione Zależnośći mod.erroredcontent = [scarlet]Błędy Zawartości -mod.circulardependencies = [red]Circular Dependencies -mod.incompletedependencies = [red]Incomplete Dependencies +mod.circulardependencies = [red]Zagnieżdżone zależności +mod.incompletedependencies = [red]Brakujące zależności mod.requiresversion.details = Wymaga wersji gry: [accent]{0}[]\nTwoja gra jest przestarzała. Ten mod potrzebuje nowszej wersji gry (możliwe, że wersji w fazie alfa/beta) aby mógł funkcjonować. mod.outdatedv7.details = Ten mod jest niekompatybilny z najnowszą wersją gry. Autor musi go zaktualizować, i dodać [accent]minGameVersion: 136[] w pliku [accent]mod.json[]. mod.blacklisted.details = Ten mod został ręczenie przeniesiony na czarną listę, ponieważ powodował wyłączenia gry i inne problemy na tej wersji. Nie używaj go. mod.missingdependencies.details = W tym modzie brakuje zależnośći: {0} mod.erroredcontent.details = Ten mod spowodował błędy przy uruchomianu. Poproś autora moda o ich naprawienie. -mod.circulardependencies.details = This mod has dependencies that depends on each other. -mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}. -mod.requiresversion = Requires game version: [red]{0} +mod.circulardependencies.details = Ten mod posiada zależności, które są zależne od innych zależności. +mod.incompletedependencies.details = Moda nie da się załadować z powodu niepoprawnych lub brakujących zależności: {0}. +mod.requiresversion = Wymagana wersja gry: [red]{0} mod.errors = Wystąpił błąd podczas ładowania treści. mod.noerrorplay = [scarlet]Twoje mody zawierają błędy.[] Wyłącz je lub napraw błędy przed rozpoczęciem gry. mod.nowdisabled = [scarlet]Brakuje zależności dla moda '{0}':[accent] {1}\n[lightgray]Najpierw trzeba ściągnąć te mody.\nMod zostanie automatycznie wyłączony. @@ -191,7 +191,7 @@ available = Nowe Odkrycie dostępne unlock.incampaign = < Odblokuj w kampanii dla szczegółów > campaign.select = Wybierz początkową kampanię campaign.none = [lightgray]Wybierz planetę, na której chcesz zacząć.\nMożesz zmienić planetę w każdej chwili. -campaign.erekir = Nowsza, bardziej dopracowana zawartość. Kampania postępuje bardziej liniowo.\n\nWyższej jakości mapy jak doświadczenia z gry. +campaign.erekir = Nowsza, bardziej dopracowana zawartość. Kampania postępuje bardziej liniowo.\n\nWyższej jakości mapy oraz rozgrywka. campaign.serpulo = Starsza zawartość; klasyczne doświadczenia. Bardziej otwarta.\n\nPotencjalnie niezbalansowane mapy i mechaniki. Słabiej dopracowana. completed = [accent]Ukończony techtree = Drzewo Techno-\nlogiczne @@ -255,19 +255,19 @@ trace = Zlokalizuj Gracza trace.playername = Nazwa gracza: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Wyjątkowe ID: [accent]{0} -trace.language = Language: [accent]{0} +trace.language = Język: [accent]{0} trace.mobile = Klient Mobilny: [accent]{0} trace.modclient = Zmodowany klient: [accent]{0} trace.times.joined = Dołączył: [accent]{0}[] razy trace.times.kicked = Wyrzucony: [accent]{0}[] razy -trace.ips = IPs: -trace.names = Names: +trace.ips = Adresy IP: +trace.names = Nazwy: invalidid = Złe ID klienta! Wyślij raport błędu. -player.ban = Ban -player.kick = Kick -player.trace = Trace -player.admin = Toggle Admin -player.team = Change Team +player.ban = Zbanuj +player.kick = Wyrzuć +player.trace = Namierz +player.admin = Przyznaj uprawnienia administracyjne +player.team = Zmień Drużynę server.bans = Bany server.bans.none = Nie znaleziono zbanowanych osób! server.admins = Administratorzy @@ -284,10 +284,10 @@ confirmkick = Jesteś pewny, że chcesz wyrzucić "{0}[white]"? confirmunban = Jesteś pewny, że chcesz odbanować tego gracza? confirmadmin = Jesteś pewny, że chcesz dać rangę administratora "{0}[white]"? confirmunadmin = Jesteś pewny, że chcesz zabrać rangę administratora "{0}[white]"? -votekick.reason = Vote-Kick Reason -votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: +votekick.reason = Powód głosowania +votekick.reason.message = Czy jesteś pewien, że chcesz głosować za wyrzuceniem "{0}[white]"?\nJeśli tak, proszę podaj powód: joingame.title = Dołącz do gry -joingame.ip = IP: +joingame.ip = Adres IP: disconnect = Rozłączono. disconnect.error = Błąd połączenia. disconnect.closed = Połączenie zostało zamknięte. @@ -303,7 +303,7 @@ server.invalidport = Nieprawidłowy numer portu. server.error = [crimson]Błąd hostowania serwera: [accent]{0} save.new = Nowy zapis save.overwrite = Czy na pewno chcesz nadpisać zapis gry? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = Pojedyńcze zapisy z kampani nie mogą zostać zaimportowane. overwrite = Nadpisz save.none = Nie znaleziono zapisów gry! savefail = Nie udało się zapisać gry! @@ -340,13 +340,24 @@ ok = OK open = Otwórz customize = Dostosuj zasady cancel = Anuluj -command = Komenda +command = Rozkazy +command.queue = [lightgray][Queuing] command.mine = Kop command.repair = Naprawiaj command.rebuild = Odbudowywuj command.assist = Asystuj Graczowi command.move = Przemieść -command.boost = Boost +command.boost = Przyspiesz +command.enterPayload = Enter Payload Block +command.loadUnits = Załaduj Jednostki +command.loadBlocks = Załaduj Bloki +command.unloadPayload = Rozładuj Ładunek +stance.stop = Analuj Rozkazy +stance.shoot = Strzelaj +stance.holdfire = Wstrzymaj Ogień +stance.pursuetarget = Goń Cel +stance.patrol = Patroluj Obszar +stance.ram = Taranuj\n[lightgray]Ruch w prostej linii bez znajdowania drogi openlink = Otwórz Link copylink = Kopiuj Link back = Wróć @@ -372,7 +383,7 @@ pausebuilding = [accent][[{0}][] by wstrzymać budowę resumebuilding = [scarlet][[{0}][] by kontynuować budowę enablebuilding = [scarlet][[{0}][] wznów budowę showui = Interfejs ukryty.\nNaciśnij [accent][[{0}][] by go pokazać. -commandmode.name = [accent]Command Mode +commandmode.name = [accent]Tryb poleceń commandmode.nounits = [no units] wave = [accent]Fala {0} wave.cap = [accent]Fala {0}/{1} @@ -384,8 +395,8 @@ wave.enemies = Pozostało [lightgray]{0} wrogów wave.enemycores = [accent]{0}[lightgray] Rdzeni Wroga wave.enemycore = [accent]{0}[lightgray] Rdzeń Wroga wave.enemy = Pozostał [lightgray]{0} wróg -wave.guardianwarn = Strażnik nadejdzie za [accent]{0}[] fale. -wave.guardianwarn.one = Strażnik nadejdzie za [accent]{0}[] fale. +wave.guardianwarn = Strażnik nadejdzie za [accent]{0}[] fal. +wave.guardianwarn.one = Strażnik nadejdzie za [accent]{0}[] falę. loadimage = Załaduj Obraz saveimage = Zapisz Obraz unknown = Nieznane @@ -400,7 +411,7 @@ map.invalid = Błąd podczas ładowania mapy: uszkodzony lub niepoprawny plik ma workshop.update = Aktualizuj pozycję workshop.error = Błąd podczas wczytywania szczegółów z Warsztatu: {0} map.publish.confirm = Czy jesteś pewien, że chcesz opublikować tę mapę?\n\n[lightgray]Najpierw upewnij się, że zgadzasz się z umową EULA Warsztatu, w przeciwnym razie twoje mapy nie będą widoczne! -workshop.menu = Wybierz co chcesz zrobić z tą pozycją. +workshop.menu = Wybierz, co chcesz zrobić z tą pozycją. workshop.info = Informacja o pozycji changelog = Historia aktualizacji (opcjonalna): updatedesc = Zastąp Tytuł i Opis @@ -413,7 +424,7 @@ steam.error = Nie udało się zainicjować serwisów Steam.\nBłąd: {0} editor.planet = Planeta: editor.sector = Sektor: editor.seed = Ziarno: -editor.cliffs = Ściany w Klify +editor.cliffs = Ściany Na Klify editor.brush = Pędzel editor.openin = Otwórz w Edytorze @@ -422,11 +433,12 @@ editor.oregen.info = Generacja Złóż: editor.mapinfo = Informacje o Mapie editor.author = Autor: editor.description = Opis: -editor.nodescription = Mapa musi posiadać opis o długości co najmniej 4 znaków zanim zostanie opublikowana. +editor.nodescription = Mapa musi posiadać opis o długości co najmniej 4 znaków, zanim zostanie opublikowana. editor.waves = Fale: editor.rules = Zasady: editor.generation = Generacja: editor.objectives = Cele +editor.locales = Locale Bundles editor.ingame = Edytuj w Grze editor.playtest = Testuj Mapę editor.publish.workshop = Opublikuj w Warsztacie @@ -458,7 +470,7 @@ waves.max = maks. jednostek waves.guardian = Strażnik waves.preview = Podgląd waves.edit = Edytuj... -waves.random = Random +waves.random = Losowe waves.copy = Kopiuj Do Schowka waves.load = Załaduj Ze Schowka waves.invalid = Nieprawidłowe fale w schowku. @@ -469,8 +481,8 @@ waves.sort.reverse = Odwrotne Sortowanie waves.sort.begin = Rozpocznij waves.sort.health = Zdrowie waves.sort.type = Typ -waves.search = Search waves... -waves.filter = Unit Filter +waves.search = Wyszukaj Fale... +waves.filter = Filtr jednostek waves.units.hide = Schowaj Wszystkie waves.units.show = Pokaż Wszystkie @@ -483,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ę @@ -494,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ę @@ -505,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'. @@ -543,8 +558,8 @@ toolmode.eraseores = Wymaż Rudy toolmode.eraseores.description = Usuwa tylko rudy. toolmode.fillteams = Wypełnij Drużyny toolmode.fillteams.description = Wypełnia drużyny zamiast bloków. -toolmode.fillerase = Fill Erase -toolmode.fillerase.description = Erase blocks of the same type. +toolmode.fillerase = Usuń Typ +toolmode.fillerase.description = Usuwa bloki tego samego typu. toolmode.drawteams = Rysuj Drużyny toolmode.drawteams.description = Rysuje drużyny zamiast bloków. toolmode.underliquid = Pod Cieczami @@ -589,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: @[]\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ść: @@ -628,7 +660,7 @@ configure = Skonfiguruj Ładunek objective.research.name = Zbadaj objective.produce.name = Zdobądź objective.item.name = Zdobądź Przedmiot -objective.coreitem.name = Item ze Rdzenia +objective.coreitem.name = Przedmiot z Rdzenia objective.buildcount.name = Liczba Budynków objective.unitcount.name = Liczba Jednostek objective.destroyunits.name = Zniszcz Jednostki @@ -639,9 +671,11 @@ 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.background = Tło marker.outline = Kontur objective.research = [accent]Zbadaj:\n[]{0}[lightgray]{1} @@ -649,7 +683,7 @@ objective.produce = [accent]Zdobądź:\n[]{0}[lightgray]{1} objective.destroyblock = [accent]Zniszcz:\n[]{0}[lightgray]{1} objective.destroyblocks = [accent]Zniszcz: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3} objective.item = [accent]Zdobądź: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.coreitem = [accent]Przenieś się do Rdzenia:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} +objective.coreitem = [accent]Przenieś do Rdzenia:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} objective.build = [accent]Buduj: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.buildunit = [accent]Zbudowane Jednostki: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.destroyunits = [accent]Zniszczono: [][lightgray]{0}[]x Jednostek @@ -667,7 +701,6 @@ resources.max = Maks. bannedblocks = Zabronione bloki objectives = Cele bannedunits = Zabronione jednostki -rules.hidebannedblocks = Ukryj zabronione bloki bannedunits.whitelist = Zablokowane jednostki jako biała lista bannedblocks.whitelist = Zablokowane bloki jako biała lista addall = Dodaj wszystkie @@ -726,8 +759,7 @@ 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.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}[] @@ -764,17 +796,17 @@ sector.planetaryTerminal.name = Planetarny Terminal Startowy sector.coastline.name = Linia Brzegowa sector.navalFortress.name = Morska Forteca -sector.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz jak najwięcej miedzi i ołowiu, tyle ile jest możliwe.\nPrzejdź do następnej strefy jak najszybciej. -sector.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki rozprzestrzeniły się. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nRozpocznij przygodę od produkucji prądu. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. -sector.saltFlats.description = Na obrzeżach pustyni spoczywają Solne Równiny. Można tu znaleźć niewiele surowców.\n\nWrogowie zbudowali tu bazę składującą surowce. Zniszcz ich rdzeń. Zniszcz wszystko co stanie ci na drodze. +sector.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz możliwie jak najwięcej miedzi i ołowiu.\nPrzejdź do następnej strefy jak najszybciej. +sector.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki się rozprzestrzeniały. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nZacznij od produkcji prądu. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. +sector.saltFlats.description = Na obrzeżach pustyni są Solne Równiny. Jest tu niewiele surowców.\n\nWrogowie zbudowali tu bazę składującą surowce. Zniszcz ich rdzeń. Zniszcz wszystko co stanie ci na drodze. sector.craters.description = W tym kraterze zebrała się woda. Pozostałość dawnych wojen. Odzyskaj ten teren. Wykop piasek. Wytop metaszkło. Pompuj wodę do działek obronnych i wierteł by je schłodzić sector.ruinousShores.description = Za pustkowiami ciągnie się linia brzegowa. Kiedyś znajdowała się tu przybrzeżna linia obronna. Niewiele z niej zostało. Ostały się tylko podstawowe struktury obronne, z reszty został tylko złom.\nKontynuuj eksplorację. Odkryj pozostawioną tu technologię. sector.stainedMountains.description = W głębi lądu leżą góry, jeszcze nieskażone przez zarodniki.\nWydobądź bogate złoża tytanu w tym obszarze. Dowiedz się, jak z niego korzystać.\n\nObecność wroga jest tutaj większa. Nie pozwól im na wysłanie ich najsilniejszych jednostek. -sector.overgrowth.description = Obszar ten jest zarośnięty, bliżej źródła zarodników.\nWróg założył tu placówkę. Stwórz Nożyki. Zniszcz to. Odzyskaj to, co nam odebrano. -sector.tarFields.description = Obrzeża strefy produkcji ropy, między górami a pustynią. Jeden z niewielu obszarów z rezerwami użytecznej smoły.\nMimo że ta strefa jest opuszczona, w pobliżu znajdują się niebezpieczne siły wroga. Nie lekceważ ich.\n\n[lightgray]Jeśli to możliwe, zbadaj technologię przetwarzania oleju. -sector.desolateRift.description = Strefa wyjątkowo niebezpieczna. Obfita w zasoby ale mało miejsca. Wysokie ryzyko zniszczenia. Opuść tę strefę jak najszybciej.\nUwaga: Jak najefektywniej wykorzystaj długie odstępy między atakami wroga. -sector.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zredukowany do ruin.\n[lightgray]Zbadaj tor i jego zastosowania.\n\nWróg jest tutaj obecny w dużej ilości, nieustannie poszukuje napastników. -sector.fungalPass.description = Przejściowy obszar pomiędzy wysokimi górami a nisko znajdującymi się, ogarniętymi przez zarodniki, równinami. Znajduje się tu mała, postawiona przez wrogów baza zwiadowcza.\nZniszcz ją używając jednostek takich jak Nożyk i Toczek. Zniszcz oba rdzenie. +sector.overgrowth.description = Obszar ten jest zarośnięty, bliżej źródła zarodników.\nWróg założył tu bazę. Stwórz "Noże". Odzyskaj to, co nam odebrano. +sector.tarFields.description = Obrzeża strefy produkcji ropy, między górami a pustynią. Jeden z niewielu obszarów z rezerwami użytecznej ropy.\nMimo że ta strefa jest opuszczona, w pobliżu znajdują się niebezpieczne siły wroga. Nie lekceważ ich.\n\n[lightgray]Jeśli to możliwe, zbadaj technologię przetwarzania ropy. +sector.desolateRift.description = Strefa wyjątkowo niebezpieczna. Bogata w zasoby, ale mała. Wysokie ryzyko zniszczenia. Opuść tę strefę jak najszybciej.\nUwaga: Odstępy między falami są dosyć długie, co nie znaczy, że będzie prosto! +sector.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zredukowany do ruin.\n[lightgray]Zbadaj tor i jego zastosowania.\n\nOgromne zagrożenie ze strony wroga. +sector.fungalPass.description = Przejściowy obszar pomiędzy wysokimi górami a nisko znajdującymi się, ogarniętymi przez zarodniki, równinami. Znajduje się tu mała, postawiona przez wrogów baza zwiadowcza.\nZniszcz ją używając jednostek takich jak "Nóż" czy "Pełzak". Zniszcz oba rdzenie. sector.biomassFacility.description = Miejsce powstania zarodników. Tutaj były badane i początkowo produkowane.\nZbadaj zawartą w nich technologię. Hoduj zarodniki dla paliwa i tworzyw sztucznych.\n\n[lightgray]Po upadku tej placówki zarodniki zostały uwolnione. Nic w lokalnym ekosystemie nie mogło konkurować z tak inwazyjnym organizmem. sector.windsweptIslands.description = Dalej za linią brzegową znajduje się ten odległy łańcuch wysp. Zapisy wykazują, że były tu struktury produkujące [accent]Plastan[].\n\nOdeprzyj morskie jednostki wroga. Załóż bazę na wyspach. Odkryj te fabryki. sector.extractionOutpost.description = Odległa placówka zbudowana przez wroga w celu wystrzeliwania zasobów do innych sektorów.\n\nDo dalszych podbojów niezbędna jest międzysektorowa technologia transportu. Zniszcz bazę. Zbadaj ich Wyrzutnie. @@ -801,22 +833,22 @@ sector.crossroads.name = Rozdroże sector.karst.name = Kras sector.origin.name = Zalążek sector.onset.description = Samouczkowy sektor. Cel nie został jeszcze ustalony. Oczekuj dalszych informacji. -sector.aegis.description = Wróg jest chroniony przez tarcze. Prototyp Niszczyciela tacz znajduje się na tym sektorze.\n Znajdź go. Wypełnij go wolframem i zniszcz tarcze wrogów. +sector.aegis.description = Wróg jest chroniony przez tarcze. Prototyp Niszczyciela tarcz znajduje się na tym sektorze.\n Znajdź go. Wypełnij go wolframem i zniszcz tarcze wrogów. sector.lake.description = Jezioro żużlu znajdujące się na tym sektorze znacznie ogranicza rodzaje jednostek, jakich można użyć. Statki są jedyną sensowną opcją. Odkryj [accent] Fabrykator Statków[] i wytwórz [accent] Wymykacze[] najszybciej jak się da. -sector.intersect.description = Skany wskazują na możliwe ataki od razu po wylądowanium. Przeciwnik może zaatakować z wielu stron.\nPrzygotuj obronę i infrastrukturę tak szybko jak to możliwe.\n[accent]Mechy[] będą potrzebne aby poruszać się w tak trudnym terenie. +sector.intersect.description = Skany wskazują na możliwe ataki od razu po wylądowaniu. Przeciwnik może zaatakować z wielu stron.\nPrzygotuj obronę i infrastrukturę tak szybko jak to możliwe.\nAby poruszać się w tak trudny terenie potrzebne będą [accent]Mechy[]. sector.atlas.description = Ten sektor zawiera zróżnicowany teren i do skutecznego ataku będzie trzeba użyć różnych jednostek.\nKonieczne może być uzycie ulepszonych jednostek ze względu na silne bazy wroga.\nZbadaj [accent]Elektrolizer[] oraz [accent]Fabrykę Czołgów[]. sector.split.description = Minimalna obecność wroga w tym sektorze czyni go idealnym do testowania nowych technologii transportowych. -sector.basin.description = {Tymczasowe}\n\nPóki co to ostatni sektor. Potraktuj to jako wyzwanie - więcej sektorów zostanie dodana w późniejszych wersjach. -sector.marsh.description = This sector has an abundance of arkycite, but has limited vents.\nBuild [accent]Chemical Combustion Chambers[] to generate power. -sector.peaks.description = The mountainous terrain in this sector make most units useless. Flying units will be required.\nBe aware of enemy anti-air installations. It may be possible to disable some of these installations by targeting their supporting buildings. +sector.basin.description = W sektorze wykryto znaczną liczbę wrogich jednostek.\nWybuduj jednostki jak najszybciej i pozbądź sie wroga. +sector.marsh.description = Ten sektor jest bogaty w atrakycyt, ale ma mało gejzerów .\nZbuduj [accent]Chemiczną komorę spalania[] by generować prąd. +sector.peaks.description = Górzyste ukształtowanie terenu powoduje, że większość jednostek staje się bezużyteczna. Będziesz musiał wyprodukować latające jednostki.\nUważaj na wrogie działka przeciwlotnicze. Możesz unieszkodliwić niektóre działka, poprzez odcięcie im zasobów lub zniszczenie innych budynków. sector.ravine.description = W tym sektorze nie wykryto rdzeni wroga, jednakże jest on ważnym szlakiem transportowym dla wroga. Spodziewaj się różnorodnych przeciwników.\nWyprodukuj [accent]elektrum[]. Zbuduj działka [accent]Cios. -sector.caldera-erekir.description = Tymczasowy opis. -sector.stronghold.description = Trwają prace nad opisem. -sector.crevice.description = Trwają prace nad opisem. -sector.siege.description = Trwają prace nad opisem. -sector.crossroads.description = Trwają prace nad opisem. -sector.karst.description = Trwają prace nad opisem. -sector.origin.description = Trwają prace nad opisem. +sector.caldera-erekir.description = Zasoby wykryte w tym sektorze są rozproszone między kilka wysp.\nZbadaj i wprowadź transport oparty na dronach. +sector.stronghold.description = Wróg postanowił założyć ogromną bazę na tym sektorze. Chroni niewielkie złoża [accent]toru[]..\nWykorzystaj je do rozwoju jednostek i wieżyczek wyższego poziomu. +sector.crevice.description = Przeciwnik będzie zaciekle walczyć by przejąć twoją bazę w tym sektorze.\nWyprodukowanie [accent]karbidu[] i wybudowanie [accent]Generatora Pyrolizy[] może być wymagane do przetrwania. +sector.siege.description = Na tym sektorze znajdują się dwa równoległe kaniony, które zmuszą cię do walki na dwa fronty.\nZbadaj [accent]Cyjan[], aby móc wytwarzać dużo silniejsze czołgi.\nUwaga: Wykryto wrogie rakiety dalekiego. Pociski powinny zostać zestrzelone. +sector.crossroads.description = Wrogie bazy w tym sektorze zostały założone w zróżnicowanym terenie. Zbadaj różne jednostki by się przystosować.\nParę baz jest chronionych przez tarcze. Dowiedz się jak są zasilane i je zniszcz. +sector.karst.description = Ten sektor jest bogaty w surowce. Zostaniesz zaatakowany niemalże od razu\nPrzejmij kontrolę nad surowcami i zbadaj [accent]Włókno Fazowe[]. +sector.origin.description = Finalny sektor, gdzie wróg jest wszędzie.\nBardzo złe warunki do prowadzenia badań - skup się na niszczeniu wszystkich wrogich rdzeni. status.burning.name = Podpalenie status.freezing.name = Zamrożenie @@ -844,14 +876,14 @@ settings.game = Gra settings.sound = Dźwięk settings.graphics = Grafika settings.cleardata = Wyczyść Dane Gry... -settings.clear.confirm = Czy jesteś pewien że chcesz usunąć te dane?\nPo tym nie ma powrotu! -settings.clearall.confirm = [scarlet]UWAGA![]\nTo wykasuje wszystkie dane, włącznie z zapisami, drzewem technologicznym, mapami, ustawieniami i przypisanymi klawiszami.\nKiedy naciśniesz 'OK', gra usunie wszystkie swoje dane i automatycznie wyłączy się. -settings.clearsaves.confirm = Jesteś pewny że chcesz usunąć wszystkie zapisy? +settings.clear.confirm = Czy jesteś pewien, że chcesz usunąć te dane?\nPo tym nie ma powrotu! +settings.clearall.confirm = [scarlet]UWAGA![]\nTo wykasuje wszystkie dane, włącznie z zapisami, drzewem technologicznym, mapami, ustawieniami i przypisanymi klawiszami.\nKiedy naciśniesz 'OK', gra usunie wszystkie swoje dane i automatycznie się wyłączy. +settings.clearsaves.confirm = Czy jesteś pewien, że chcesz usunąć wszystkie zapisy? settings.clearsaves = Usuń Zapisy -settings.clearresearch = Usuń Postęp Drzewa Tech. -settings.clearresearch.confirm = Jesteś pewny że chcesz usunąć cały postęp drzewa technologicznego? +settings.clearresearch = Usuń Postęp Drzewa Technologicznego +settings.clearresearch.confirm = Czy jesteś pewny, że chcesz usunąć cały postęp drzewa technologicznego? settings.clearcampaignsaves = Usuń Zapisy Kampanii -settings.clearcampaignsaves.confirm = Jesteś pewny że chcesz usunąć wszystkie zapisy kampanii? +settings.clearcampaignsaves.confirm = Czy jesteś pewny, że chcesz usunąć wszystkie zapisy kampanii? paused = [accent]< Wstrzymano > clear = Wyczyść banned = [scarlet]Zbanowano @@ -901,7 +933,7 @@ stat.repairspeed = Prędkość napraw stat.weapons = Bronie stat.bullet = Pocisk stat.moduletier = Stopień Modułu -stat.unittype = Unit Type +stat.unittype = Typ jednostki stat.speedincrease = Zwiększenie prędkości stat.range = Zasięg stat.drilltier = Co może wykopać @@ -953,12 +985,12 @@ ability.statusfield = Pole Statusu ability.unitspawn = Fabryka Jednostek ability.shieldregenfield = Strefa Tarczy Regenerującej ability.movelightning = Pioruny Poruszania -ability.shieldarc = Shield Arc -ability.suppressionfield = Regen Suppression Field +ability.shieldarc = Łuk Tarczy +ability.suppressionfield = Pole Tłumienia Regeneracji ability.energyfield = Pole Energii -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +ability.energyfield.sametypehealmultiplier = [lightgray]Ten sam typ leczenia: [white]{0}% +ability.energyfield.maxtargets = [lightgray]Maksymalne cele: [white]{0} +ability.regen = Regeneracja bar.onlycoredeposit = Dozwolone jest tylko przeniesienie z rdzenia @@ -999,8 +1031,9 @@ bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[ligh bullet.incendiary = [stat]zapalający bullet.homing = [stat]naprowadzający bullet.armorpierce = [stat]przebijający pancerz -bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles -bullet.interval = [stat]{0}/sec[lightgray] interval bullets: +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit +bullet.suppression = [stat]{0} sec[lightgray] wyłączenie naprawy ~ [stat]{1}[lightgray] kratki +bullet.interval = [stat]{0}/sec[lightgray] częstotliwość strzału: bullet.frags = [stat]{0}[lightgray]x pociski odłamkowe: bullet.lightning = [stat]{0}[lightgray]x błyskawice ~ [stat]{1}[lightgray] Obrażenia bullet.buildingdamage = [stat]{0}%[lightgray] obrażeń budynkom @@ -1054,6 +1087,7 @@ setting.backgroundpause.name = Wstrzymaj w tle setting.buildautopause.name = Automatycznie zatrzymaj budowanie setting.doubletapmine.name = Kliknij podwójnie, aby wydobywać setting.commandmodehold.name = Przytrzymaj w Trybie Dowodzenia +setting.distinctcontrolgroups.name = Ograniczaj jedną grupę kontrolną na jednostkę setting.modcrashdisable.name = Wyłącz mody w przypadku awarii podczas uruchamiania setting.animatedwater.name = Animowana woda setting.animatedshields.name = Animowana tarcza @@ -1100,14 +1134,14 @@ setting.position.name = Pokazuj położenie gracza setting.mouseposition.name = Pokazuj położenie myszki setting.musicvol.name = Głośność muzyki setting.atmosphere.name = Pokazuj atmosferę planety -setting.drawlight.name = Draw Darkness/Lighting +setting.drawlight.name = Rysuj Cienie/Światła setting.ambientvol.name = Głośność otoczenia setting.mutemusic.name = Wycisz muzykę setting.sfxvol.name = Głośność dźwięków setting.mutesound.name = Wycisz dźwięki setting.crashreport.name = Wysyłaj anonimowo dane o crashu gry setting.savecreate.name = Automatyczne tworzenie zapisów -setting.publichost.name = Widoczność gry publicznej +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Limit graczy setting.chatopacity.name = Przezroczystość czatu setting.lasersopacity.name = Przezroczystość laserów zasilających @@ -1115,10 +1149,10 @@ setting.bridgeopacity.name = Przezroczystość mostów setting.playerchat.name = Wyświetlaj dymek czatu w grze setting.showweather.name = Pokaż pogodę setting.hidedisplays.name = Ukryj wyświetlacze logiczne -setting.macnotch.name = Dostosuj interfejs do wyświetlania wycięcia +setting.macnotch.name = Dostosuj interfejs do wyświetlania wycięcia ekranu setting.macnotch.description = Aby zastosować zmiany, wymagane jest ponowne uruchomienie -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 = Tylko Znajomi +steam.friendsonly.tooltip = Czy tylko Znajomi ze Steam będą mogli dołączyć do twojej gry?\nOdznaczenie tego okienka ustawi twoją grę na publiczną - każdy może dołączyć. public.beta = Wersje beta gry nie mogą tworzyć publicznych pokoi. uiscale.reset = Skala interfejsu uległa zmianie.\nNaciśnij "OK" by potwierdzić zmiany.\n[scarlet]Cofanie zmian i wyjście z gry za[accent] {0}[] uiscale.cancel = Anuluj i wyjdź @@ -1127,6 +1161,7 @@ keybind.title = Zmień keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w wersji mobilnej. Tylko podstawowe poruszanie się jest wspierane. category.general.name = Ogólne category.view.name = Wyświetl +category.command.name = Zarządzanie Jednostką category.multiplayer.name = Wielu graczy category.blocks.name = Wybierz Blok placement.blockselectkeys = \n[lightgray]Klawisz: [{0}, @@ -1144,6 +1179,23 @@ keybind.mouse_move.name = Podążaj Za Myszą keybind.pan.name = Widok Panoramiczny keybind.boost.name = Przyspiesz keybind.command_mode.name = Tryb Komend +keybind.command_queue.name = Kolejka Rozkazów Jednostki +keybind.create_control_group.name = Stwórz Grupę Kontroli +keybind.cancel_orders.name = Anuluj Rozkazy +keybind.unit_stance_shoot.name = Strzel +keybind.unit_stance_hold_fire.name = Wstrzymaj ogień +keybind.unit_stance_pursue_target.name = Goń Cel +keybind.unit_stance_patrol.name = Patroluj +keybind.unit_stance_ram.name = Taranuj +keybind.unit_command_move = 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.rebuild_select.name = Odbuduj Region keybind.schematic_select.name = Wybierz Region keybind.schematic_menu.name = Menu Schematów @@ -1207,9 +1259,12 @@ mode.pvp.description = Walcz przeciwko innym graczom.\n[gray]Wymaga co najmniej mode.attack.name = Atak mode.attack.description = Celem jest zniszczenie bazy przeciwnika.\n[gray]Wymaga czerwonego rdzenia na mapie, aby móc grać w tym trybie. mode.custom = Własny Tryb +rules.invaliddata = Niepoprawne dane ze schowka. +rules.hidebannedblocks = Ukryj zabronione bloki rules.infiniteresources = Nieskończone Zasoby rules.onlydepositcore = Dozwól tylko przenoszenie z rdzenia +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Eksplozje Reaktorów rules.coreincinerates = Rdzeń Spala Nadmiarowe Przedmioty rules.disableworldprocessors = Wyłącz Procesor Świata @@ -1218,11 +1273,11 @@ rules.wavetimer = Zegar Fal rules.wavesending = Wysyłanie Fal rules.waves = Fale rules.attack = Tryb Ataku -rules.buildai = Base Builder AI -rules.buildaitier = Builder AI Tier -rules.rtsai = RTS SI +rules.buildai = AI Budowania Baz +rules.buildaitier = Poziom Budowania AI +rules.rtsai = RTS AI rules.rtsminsquadsize = Minimalny Rozmiar Składu -rules.rtsmaxsquadsize = Max Squad Size +rules.rtsmaxsquadsize = Maksymalny Rozmiar Składu rules.rtsminattackweight = Minimalna Waga Ataku rules.cleanupdeadteams = Usuń Budynki Pokonanej Drużyny (PvP) rules.corecapture = Przejmij Zniszczony Rdzeń @@ -1232,11 +1287,11 @@ rules.enemyCheat = Nieskończone Zasoby SI (wroga) rules.blockhealthmultiplier = Mnożnik Życia Bloków rules.blockdamagemultiplier = Mnożnik Uszkodzeń Bloków rules.unitbuildspeedmultiplier = Mnożnik Prędkości Tworzenia Jednostek -rules.unitcostmultiplier = Unit Cost Multiplier +rules.unitcostmultiplier = Mnożnik Kosztu Jednostek rules.unithealthmultiplier = Mnożnik Życia Jednostek rules.unitdamagemultiplier = Mnożnik Obrażeń jednostek -rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier -rules.solarmultiplier = Solar Power Multiplier +rules.unitcrashdamagemultiplier = Obrażenia Zadawane Po Zniszczeniu +rules.solarmultiplier = Mnożnik Mocy Paneli Słonecznych rules.unitcapvariable = Rdzenie mają wpływ na limit jednostek rules.unitcap = Podstawowy limit jednostek rules.limitarea = Limit Obszaru Mapy @@ -1247,7 +1302,7 @@ rules.buildcostmultiplier = Mnożnik Kosztów Budowania rules.buildspeedmultiplier = Mnożnik Prędkości Budowania rules.deconstructrefundmultiplier = Mnożnik Zwrotu Dekonstrukcji rules.waitForWaveToEnd = Fale Czekają Na Przeciwników -rules.wavelimit = Map Ends After Wave +rules.wavelimit = Mapa Konczy się Po Fali rules.dropzoneradius = Zasięg Strefy Zrzutu:[lightgray] (kratki) rules.unitammo = Jednostki Potrzebują Amunicji rules.enemyteam = Drużyna Wroga @@ -1300,7 +1355,7 @@ item.fissile-matter.name = Materiał Roszczepialny item.beryllium.name = Beryl item.tungsten.name = Wolfram item.oxide.name = Tlenek Berylu -item.carbide.name = Węglik +item.carbide.name = Karbid item.dormant-cyst.name = Drzemiąca Torbiel liquid.water.name = Woda liquid.slag.name = Żużel @@ -1593,7 +1648,7 @@ block.payload-router.name = Rozdzielacz Ładunku block.duct.name = Rura Próżniowa block.duct-router.name = Rozdzielacz Próżniowy block.duct-bridge.name = Most Próżniowy -block.large-payload-mass-driver.name = Large Payload Mass Driver +block.large-payload-mass-driver.name = Duża Katapulta Ładunku block.payload-void.name = Próżnia Ładunku block.payload-source.name = Źródło Ładunku block.disassembler.name = Rozkładacz @@ -1677,7 +1732,7 @@ block.phase-heater.name = Podgrzewacz Fazowy block.heat-redirector.name = Kierownik Ciepła block.heat-router.name = Rozdzielacz Ciepła block.slag-incinerator.name = Spalarnia Żużla -block.carbide-crucible.name = Tygiel Węglowy +block.carbide-crucible.name = Tygiel Karbidu block.slag-centrifuge.name = Wirówka Żużlu block.surge-crucible.name = Tygiel Elektrum block.cyanogen-synthesizer.name = Syntetyzer Cyjanu @@ -1688,8 +1743,8 @@ block.beryllium-wall-large.name = Duży Berylowy Mur block.tungsten-wall.name = Wolframowy Mur block.tungsten-wall-large.name = Duży Wolframowy Mur block.blast-door.name = Dotykowe Wrota -block.carbide-wall.name = Węglowy Mur -block.carbide-wall-large.name = Duży Węglowy Mur +block.carbide-wall.name = Karbidowy Mur +block.carbide-wall-large.name = Duży Karbidowy Mur block.reinforced-surge-wall.name = Wzmocniony Elektrumowy Mur block.reinforced-surge-wall-large.name = Duży Wzmocniony Elektrumowy Mur block.shielded-wall.name = Osłonowy Mur @@ -1738,7 +1793,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 @@ -1757,7 +1811,7 @@ block.mech-fabricator.name = Fabryka Mechów block.ship-fabricator.name = Fabryka Statków block.prime-refabricator.name = Główny Refabrykator block.unit-repair-tower.name = Wieża Napraw -block.diffuse.name = Dystruptor +block.diffuse.name = Rozproszenie block.basic-assembler-module.name = Podstawowy Moduł Montażowy block.smite.name = Karciciel block.malign.name = Malign @@ -1786,28 +1840,28 @@ hint.desktopShoot = Kliknij [accent][[Lewy przycisk myszy][] by strzelać. hint.depositItems = By przenosić przedmioty, przeciągij je ze swojego statku do rdzenia. hint.respawn = By się odrodzić jako statek, kliknij [accent][[V][]. hint.respawn.mobile = Przełączyłeś się na inną jednostkę/strukturę. By odrodzić się jako statek, [accent]kliknij w awatar w lewym górnym rogu.[] -hint.desktopPause = Naciśnij [accent][[Spację][] by zatrzymać lub wznowić grę. +hint.desktopPause = Naciśnij [accent][[Spację][], by zatrzymać lub wznowić grę. hint.breaking = Użyj [accent][Prawego przycisku myszy][] i przeciągnij by zniszczyć bloki. hint.breaking.mobile = Aktywuj \ue817 [accent]ikonę młota[] w dolnym prawym rogu by zniszczyć bloki.\n\nPrzytrzymaj swój palec i przeciągnij by wybrać wiele bloków do zniszczenia. hint.blockInfo = Wyświetl informacje o bloku, wybierając go w [accent]menu budowania[], a następnie wybierając [accent][[?][] przycisk po prawej. hint.derelict = [accent]Szare[] struktury są uszkodzonymi pozostałościami starych baz, które już nie funkcjonują.\n\nTe struktury można [accent]zdekonstruować[] dla surowców. -hint.research = Klikij przycisk \ue875 [accent]Badań[] by odkrywać nowe technologie. -hint.research.mobile = Użyj przycisku \ue875 [accent]Badań[] w \ue88c [accent]Menu[] by odkrywać nowe technologie. +hint.research = Klikij przycisk \ue875 [accent]Badań[], by odkrywać nowe technologie. +hint.research.mobile = Użyj przycisku \ue875 [accent]Badań[] w \ue88c [accent]Menu[], by odkrywać nowe technologie. hint.unitControl = Przytrzymaj [accent][[Lewy CTRL][] i [accent]kliknij[], by kontrolować sojusznicze jednostki i działka. hint.unitControl.mobile = [accent][Kliknij dwukrotnie[] by kontrolować sojusznicze jednostki i działka. hint.unitSelectControl = Żeby kontrolować jednostki wejdź w [accent]tryb komend[] trzymając [accent]Lewy Shift.[]\nW trybie komend, kliknij i przeciągnij, żeby wybrać jednostki. Kliknij [accent]Prawym Przyciskiem Myszy[], żeby wyznaczyc jednostkom cel. -hint.unitSelectControl.mobile = To control units, enter [accent]command mode[] by pressing the [accent]command[] button in the bottom left.\nWhile in command mode, long-press and drag to select units. Tap a location or target to command units there. +hint.unitSelectControl.mobile = Aby kontrolować jednostki, wejdź w [accent]tryb dowodzenia[] poprzez naciśnięcie przcisku [accent]dowodzenia[] w lewym dolnym rogu.\nPodczas gdy jesteś w trybie dowodzenia, naciśnij długo i przeciągnij by wybrać jednostki. Stuknij w miejsce lub cel aby je tam wysłać. hint.launch = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] wybierając \ue827 [accent]Mapę[] w dolnym prawym rogu. hint.launch.mobile = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] do pobliskich sektorów klikając w \ue827 [accent]Mapę[] w \ue88c [accent]Menu[]. hint.schematicSelect = Przytrzymaj [accent][[F][] by kopiować i wkleić bloki.\n\n[accent][[Środkowy przycisk myszy][] kopiuje pojedynczy blok. -hint.rebuildSelect = Hold [accent][[B][] and drag to select destroyed block plans.\nThis will rebuild them automatically. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect = Przytrzymaj [accent][[B][] i przeciągnij, by zaznaczyć plany zniszczonych bloków.\nTo naprawi je automatycznie. +hint.rebuildSelect.mobile = wybierz \ue874 przycisk kopiowania, wtedy dotnij \ue80f przycisk odbudowy i przeciągnij by zaznaczyć plany zniszczonych bloków.\nTo naprawi je automatycznie. hint.conveyorPathfind = Przeciągij i przytrzymaj [accent][[Lewy CTRL][] w trakcie budowania przenośników aby wygenerować ścieżkę. hint.conveyorPathfind.mobile = Włącz \ue844 [accent]tryb ukośny[] i przeciągnij w trakcie budowania przenośników aby wygenerować ścieżkę. -hint.boost = Przytrzymaj [accent][[Lewy Shift][] by przelecieć ponad przeszkody.\n\nTylko część jednostek lądowych może to zrobić. -hint.payloadPickup = Kliknij [accent][[[] by podnieść małe bloki lub jednostki. +hint.boost = Przytrzymaj [accent][[Lewy Shift][], by przelecieć ponad przeszkody.\n\nTylko część jednostek lądowych może to zrobić. +hint.payloadPickup = Kliknij [accent][[[], by podnieść małe bloki lub jednostki. hint.payloadPickup.mobile = [accent]Kliknij i przytrzymaj[] mały blok by go podnieść. -hint.payloadDrop = Kliknij [accent]][] by opuścić podniesiony towar. +hint.payloadDrop = Kliknij [accent]][], by opuścić podniesiony towar. hint.payloadDrop.mobile = [accent]Kliknij i przytrzymaj[] w puste miejsce by opuścić podniesiony towar. hint.waveFire = [accent]Strumień[] wypełniony wodą będzie gasić pobiskie pożary. hint.generator = \uf879 [accent]Generatory Spalinowe[] spalają węgiel i przekazują moc do pobliskich bloków.\n\nMożesz powiększyć odległość transmitowanej mocy używając \uf87f [accent]Węzły Prądu[]. @@ -1822,7 +1876,7 @@ gz.mine = Przemieść się w pobliże \uf8c4 [accent]rudy miedzi[] na ziemi i kl gz.mine.mobile = Przemieść się w pobliże \uf8c4 [accent]rudy miedzi[] na ziemi i dotknij, aby zacząć kopać. gz.research = Otwórz \ue875 drzewko technologiczne.\nZbadaj \uf870 [accent]Mechaniczne Wiertło[], Następnie wybierz je z menu w prawym dolnym rogu.\nKliknij na złoże miedzi, aby postawić na nim wiertło. gz.research.mobile = Otwórz \ue875 drzewko technologiczne.\nZbadaj \uf870 [accent]Mechaniczne Wiertło[], Następnie wybierz je z menu w prawym dolnym rogu.\nDotknij złoża miedzi aby postawić na nim wiertło.\n\nKliknij w \ue800 [accent]fajkę[] u dołu ekranu z prawej aby potwierdzić. -gz.conveyors = Zbadaj i postaw \uf896 [accent]przenośniki[], aby przemieścić wykopane surowce\nz wierteł do rdzenia.\n\nNaciśnij i przeciągnij aby postawic wiele przenośników naraz.\n[accent]Użyj kółka myszki[] żeby obrócić. +gz.conveyors = Zbadaj i postaw \uf896 [accent]przenośniki[], aby przemieścić wykopane surowce\nz wierteł do rdzenia.\n\nNaciśnij i przeciągnij aby postawic wiele przenośników naraz.\n[accent]Użyj kółka myszki[], żeby obrócić. gz.conveyors.mobile = Zbadaj i postaw \uf896 [accent]przenośniki[], aby przemieścić wykopane surowce\nz wierteł do rdzenia.\n\nPrzytrzymaj przez sekundę i przeciągnij żeby postawić wiele przenośników naraz. gz.drills = Kontynuuj kopanie.\nStawiaj więcej Mechanicznych Wierteł.\nWydobądź 100 miedzi. gz.lead = \uf837 [accent]Ołów[] jest kolejnym często używanym surowcem.\nPostaw wiertła kopiące ołów. @@ -1840,29 +1894,30 @@ gz.zone3 = Teraz zacznie się fala.\nPrzygotuj się. gz.finish = Wybuduj więcej działek, wykop więcej surowców\ni obroń się przed wszystkimi falami żeby [accent]przejąć sektor[]. onset.mine = Naćiśnij żeby wydobywać \uf748 [accent]beryl[] ze ścian.\n\nUżyj [accent][[WASD] aby się poruszać. onset.mine.mobile = Kliknij żeby wydobywać \uf748 [accent]beryl[] ze ścian. -onset.research = Otwórz\ue875 drzewo technologiczne.\nZbadj, a następnie postaw \uf73e [accent]turbinę parową[] na gejzerze.\nTo zacznie generować [accent]prąd[]. +onset.research = Otwórz\ue875 drzewo technologiczne.\nZbadaj, a następnie postaw \uf73e [accent]turbinę parową[] na gejzerze.\nTo zacznie generować [accent]prąd[]. onset.bore = Zbadaj i postaw \uf741 [accent]plazmowe wiertło[].\nPlazmowe wiertło automatycznie wydobywa surowce ze ścian. onset.power = Żeby [accent]zasilić[] plazmowe wiertło, zbadaj i postaw \uf73d [accent]węzeł promieni[].\nPołącz turbinę parową z wiertłem plazmowym. -onset.ducts = Zbadaj i postaw \uf799 [accent]rury próżniowe[] żeby móc przemieścić surowce z wiertła plazmowego do rdzenia.\nKliknij i przeciągnij żeby postawić wiele rur próżniowych naraz.\n[accent]Użyj kółka myszki[] aby obrócić. -onset.ducts.mobile = Zbadaj i postaw \uf799 [accent]rury próżniowe[] żeby móc przemieścić surowce z wiertła plazmowego do rdzenia.\n\nPrzytrzymaj sekundę i przeciągnij, aby postawic wiele rur próżniowych naraz. +onset.ducts = Zbadaj i postaw \uf799 [accent]rury próżniowe[], żeby móc przemieścić surowce z wiertła plazmowego do rdzenia.\nKliknij i przeciągnij żeby postawić wiele rur próżniowych naraz.\n[accent]Użyj kółka myszki[] aby obrócić. +onset.ducts.mobile = Zbadaj i postaw \uf799 [accent]rury próżniowe[], żeby móc przemieścić surowce z wiertła plazmowego do rdzenia.\n\nPrzytrzymaj sekundę i przeciągnij, aby postawic wiele rur próżniowych naraz. onset.moremine = Kontynuuj kopanie.\nStawiaj więcej Wierteł Plazmowych i używaj węzłów promieni oraz rur próżniowych.\nWykop 200 berylu. onset.graphite = Bardziej skomplikowane bloki wymagają \uf835 [accent]grafitu[].\nUstaw wiertła plazmowe tak, żeby wydobywały grafit. onset.research2 = Zacznij badać [accent]fabryki[].\nZbadaj \uf74d [accent]rozkruszacz klifów[] i \uf779 [accent]krzemowy piec łukowy[]. -onset.arcfurnace = Krzemowy piec łukowy potrzebuje \uf834 [accent]piasku[] i \uf835 [accent]grafitu[] żeby produkować \uf82f [accent]krzem[].\n[accent]Prąt[] także jest potrzebny. +onset.arcfurnace = Krzemowy piec łukowy potrzebuje \uf834 [accent]piasku[] i \uf835 [accent]grafitu[], żeby produkować \uf82f [accent]krzem[].\n[accent]Prąt[] także jest potrzebny. onset.crusher = Użyj \uf74d [accent]rozkuruszaczy klifów[], aby wydobyć piasek. -onset.fabricator = Używaj [accent]jednostek[] żeby eksplorować mapę, bron budynki i atakuj wrogów. Zbadaj i postaw \uf6a2 [accent]fabrykę czołgów[]. -onset.makeunit = Wyprodkuj jednostkę.\nUżyj przycisku "?" żeby zobaczyć wymagania potrzebne do wybudowania obecnie wybranej fabryki. +onset.fabricator = Używaj [accent]jednostek[], żeby eksplorować mapę, bron budynki i atakuj wrogów. Zbadaj i postaw \uf6a2 [accent]fabrykę czołgów[]. +onset.makeunit = Wyprodkuj jednostkę.\nUżyj przycisku "?", żeby zobaczyć wymagania potrzebne do wybudowania obecnie wybranej fabryki. onset.turrets = Jednostki są efektywne, ale [accent]działka[] zapewniają lepszą efektywność jeśli chodzi o obronę.\nPostaw \uf6eb [accent]Wyłom[].\nDziałka potrzebują \uf748 [accent]amuncji[]. onset.turretammo = Dostarcz [accent]beryl[] do działka. onset.walls = [accent]Mury[] chronią budynki przed obrażeniami.\nPostaw parę \uf6ee [accent]berylowych murów[] naokoło działka. onset.enemies = Nadchodzi wróg, przygotuj obronę. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = Wróg jest wrażliwy na atak. Przeprowadź kontratak. onset.cores = Nowe rdzenie mogą być postawione tylko w [accent]strefach rdzenia[].\nNowy rdzeń działa tak samo jak każdy poprzedni. Rdzenie współdzielą surowce.\nPostaw nowy \uf725 rdzeń. onset.detect = Wróg wykryje cię za 2 minuty.\nPrzygotuj obronę, wydobywaj surowce i je produkuj. onset.commandmode = Przytrzymaj [accent]shift[] aby wejść do [accent]trybu poleceń[].\n[accent]Kliknij lewy przycisk myszy i przeciągnij[] aby wybrac jednostki.\n[accent]Kliknij prawy przycisk myszy[] aby rozkazać jednostkom się przemieścić lub zaatakować. onset.commandmode.mobile = Naciśnij [accent]przycisk poleceń[] aby wejść do [accent]trybu poleceń[].\nPrzytrzymaj palec, a następnie [accent]przeciągnij[] aby zaznaczyć jednostki.\n[accent]Kliknij[] aby rozkazać jednostkom się przemieścić lub zaatakować. -aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. -split.pickup = Niektóre bloki mogą zostać podniesione przez jednostkę rdzeniową.\nPodnieś ten [accent]kontener[] i postaw go w [accent]punkcie załadunkowym[].\n(Domyślne klawisze to [ i ], użyj ich żeby podnieść lub upuścić blok.) +aegis.tungsten = Wolfram może być wykopany używając [accent]wiertła udeżeniowego[].\nTa struktura wymaga [accent]wody[] i [accent]zasilania[]. +split.pickup = Niektóre bloki mogą zostać podniesione przez jednostkę rdzeniową.\nPodnieś ten [accent]kontener[] i postaw go w [accent]punkcie załadunkowym[].\n(Domyślne klawisze to [ i ], użyj ich, żeby podnieść lub upuścić blok.) split.pickup.mobile = iektóre bloki mogą zostać podniesione przez jednostkę rdzeniową.\nPodnieś ten [accent]kontener[] i postaw go w [accent]punkcie załadunkowym[].\n(Żeby podnieść lub upuścić jakiś blok, przytrzymaj go przez chwilę.) split.acquire = Żeby wybudować jednostki musisz pozyskać trochę wolframu. split.build = Jednostki trzeba przetransportować na drugą stronę.\nPosaw dwie [accent]Katapulty Ładunku[] po każdej ze stron.\nPołącz je klikając najpierw jedną, a nastepnie drugą. @@ -1871,7 +1926,7 @@ split.container = Podobnie jak kontenery jednostki także da się transportować item.copper.description = Używany we wszystkich rodzajach budowli i uzbrojeń. item.copper.details = Miedź. Niesamowicie obfity metal na Serpulo. Strukturalnie słaby, chyba że zostanie wzmocniony. item.lead.description = Używany w transporcie płynów i strukturach elektrycznych. -item.lead.details = Gęsty, obojętny metal używany w bateriach oraz amunicji fragmentacyjnej.\n\n[lightgray]Uwaga: Prawdopodobnie toksyczny dla biologicznych form życia. Nie żeby zostało ich tu wiele...[] +item.lead.details = Gęsty, obojętny metal używany w bateriach oraz amunicji fragmentacyjnej.\n\n[lightgray]Uwaga: Prawdopodobnie toksyczny dla biologicznych form życia. Nie, żeby zostało ich tu wiele...[] item.metaglass.description = Używane w transporcie i przechowywaniu płynów. item.graphite.description = Wykorzystywany w urządzeniach elektrycznych oraz amunicji. item.sand.description = Zwykły materiał używany pospolicie w przepalaniu, stopach i jako topnik.\n\n[lightgray]Uwaga: Dostanie piaskiem po oczach nie jest przyjemne.[] @@ -1883,7 +1938,7 @@ item.scrap.description = Używany w Przetapiaczach i Rozkruszaczach w celu rafin item.scrap.details = Pozostałości po jednostkach oraz strukturach. Mieszanka wielu surowców. Podobno można z niego zrobić każdy inny surowiec. item.silicon.description = Używany praktycznie wszędzie, od amunicji samonaprowadzającej przez elektronikę aż po konstrukcję jednostek i broni. item.plastanium.description = Lekki i plastyczny materiał używany w amunicji odłamkowej i samolotach. -item.phase-fabric.description = Używane w zaawansowanej elektronice i strukturach przyspieszających i samonaprawiających.\n\n[lightgray]Niesamowicie lekkie włókna torowo-kwarcowe.[] +item.phase-fabric.description = Używane w zaawansowanej elektronice, strukturach przyspieszających i samonaprawiających.\n\n[lightgray]Niesamowicie lekkie włókna torowo-kwarcowe.[] item.surge-alloy.description = Niesamowicie ciężki stop używany w najsilniejszym uzbrojeniu oraz reaktywnych strukturach obronnych. item.spore-pod.description = Syntetyczne zarodniki, które mogą być przekształcone na ropę, materiały wybuchowe i paliwo. item.spore-pod.details = Prawdopodobnie syntetyczna forma życia.\nUwaga: Emitują gazy toksyczne dla innych organizmów biologicznych. Wyjątkowo inwazyjne. W pewnych warunkach silnie łatwopalne. @@ -1896,7 +1951,7 @@ item.carbide.description = Używany w zaawansowanych strukturach, ciężkich jed liquid.water.description = Powszechnie używana do schładzania budowli i przetwarzania odpadów. liquid.slag.description = Wiele różnych metali stopionych i zmieszanych razem.\n\nMoże zostać rozdzielony na jego metale składowe lub wystrzelony we wrogie jednostki. -liquid.oil.description = Używany w do produkcji złożonych materiałów.\n\nMoże zostać przetworzony na węgiel, lub wystrzelony we wrogów przez wieżyczkę. +liquid.oil.description = Używany w do produkcji złożonych materiałów.\n\nMoże zostać przetworzony na węgiel lub wystrzelony we wrogów przez wieżyczkę. liquid.cryofluid.description = Obojętna, niekorozyjna ciecz utworzona z wody i tytanu.\n\nUżywana jako chłodziwo w reaktorach, rekonstruktorach i wieżyczkach. liquid.arkycite.description = Stosowany w reakcjach chemicznych. Używany do wytwarzania energii i syntezy materiałów. liquid.ozone.description = Stosowany jako utleniacz w produkcji materiałów oraz jako paliwo. Średnio wybuchowy. @@ -1904,14 +1959,14 @@ liquid.hydrogen.description = Używany do wydobywania surowców, produkcji jedno liquid.cyanogen.description = Używany jako amunicja oraz materiał do produkcji zaawansowanych jednostek czy też jako składnik różnych reakcji w zaawansowanych strukturach. Bardzo łatwopalny. liquid.nitrogen.description = Używany do wydobycia surowców, tworzenia gazów oraz produkcji jednostek. Obojętny. liquid.neoplasm.description = Niebezpieczny biologiczny odpad powstający poprzez działanie reaktora neoplazmowego. Łatwo się rozprzestrzenia na bloki zawierające wodę niszcząc je. Lepki. -liquid.neoplasm.details = Neoplazma. Niekontrolowana masa szybko dzielących się komórek syntetycznych o konsystencji szlamu. Odporna na ciepło. Niesamowicie niebezpieczna dla wszelkich struktur zawierających wodę.\n\nZbyt skomplikowana i niestabilna do standardowej analizy. Potencjalne zastosowania póki co nie znane. Zaleca się spalanie w jeziorach żużlowych. +liquid.neoplasm.details = Neoplazma. Niekontrolowana masa szybko dzielących się komórek syntetycznych o konsystencji szlamu. Odporna na ciepło. Niesamowicie niebezpieczna dla wszelkich struktur zawierających wodę.\n\nZbyt skomplikowana i niestabilna do standardowej analizy. Potencjalne zastosowania, póki co nieznane. Zaleca się spalanie w jeziorach żużlowych. block.derelict = \uf77e [lightgray]Wrak block.armored-conveyor.description = Przesyła przedmioty z taką samą szybkością co Tytanowy Przenośnik, ale jest bardziej odporny. Wejściami bocznymi mogą być tylko inne przenośniki. block.illuminator.description = Małe, kompaktowe i konfigurowalne źródło światła. Wymaga energii do funkcjonowania. block.message.description = Przechowuje wiadomość. Wykorzystywane do komunikacji pomiędzy sojusznikami. -block.reinforced-message.description = Stores a message for communication between allies. -block.world-message.description = A message block for use in mapmaking. Cannot be destroyed. +block.reinforced-message.description = Przechowuje wiadomość. Wykorzystywane do komunikacji pomiędzy sojusznikami. +block.world-message.description = Wiadomość używana przez twórców map. Niezniszczalna. block.graphite-press.description = Kompresuje kawałki węgla w czyste blaszki grafitu. block.multi-press.description = Ulepszona wersja prasy grafitowej. Dodanie wody wytwarza grafit znacznie szybciej i efektywniej. block.silicon-smelter.description = Redukuje piasek za pomocą wysoce czystego węgla w celu wytworzenia krzemu. @@ -1923,10 +1978,10 @@ block.cryofluid-mixer.description = Łączy wodę i tytan w lodociecz, która je block.blast-mixer.description = Kruszy i miesza skupiska zarodników z piratianem, tworząc wybuchowy związek. block.pyratite-mixer.description = Miesza węgiel, ołów i piasek tworząc bardzo łatwopalny piratian. block.melter.description = Przetapia złom na żużel do dalszego przetwarzania lub użycia w wieżyczkach. -block.separator.description = Oddziela użyteczne materiały z mieszaniny jaką jest żużel. +block.separator.description = Oddziela użyteczne materiały z mieszaniny, jaką jest żużel. block.spore-press.description = Kompresuje kapsuły zarodników pod ogromnym ciśnieniem tworząc olej. block.pulverizer.description = Mieli złom w drobny piasek. Przydatne, gdy brakuje naturalnego piasku. -block.coal-centrifuge.description = Zestala olej w kawałki węgla. +block.coal-centrifuge.description = Zestala ropę w kawałki węgla. block.incinerator.description = Pozbywa się nadmiaru przedmiotów lub płynu. block.power-void.description = Niszczy całą energię wprowadzoną do tego bloku. Dostępny tylko w trybie piaskownicy. block.power-source.description = Wydziela prąd w nieskończoność. Dostępny tylko w trybie piaskownicy. @@ -1948,10 +2003,10 @@ block.phase-wall.description = Mur pokryty specjalną mieszanką opartą o Włó block.phase-wall-large.description = Mur pokryty specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków.\nObejmuje wiele kratek. block.surge-wall.description = Ekstremalnie wytrzymały blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego. block.surge-wall-large.description = Ekstremalnie wytrzymały blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego.\nObejmuje wiele kratek. -block.door.description = Małe drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą strzelać i się przemieszczać przez nie. -block.door-large.description = Duże drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą strzelać i się przemieszczać przez nie.\nObejmuje wiele kratek. -block.mender.description = Co jakiś czas naprawia bloki w zasięgu. Utrzymuje struktury obronne w dobrym stanie.\nOpcjonalnie używa silikonu do zwiększenia zasięgu i szybkości naprawy. -block.mend-projector.description = Ulepszona wersja Naprawiacza. Naprawia bloki w jego otoczeniu.\nMoże wykorzystywać włókno fazowe, aby zwiększyć efektywność budowli. +block.door.description = Małe drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą przez nie strzelać oraz nimi przechodzić. +block.door-large.description = Duże drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą przez nie strzelać oraz nimi przechodzić.\nObejmują wiele kratek. +block.mender.description = Co jakiś czas naprawia bloki w zasięgu. Utrzymuje struktury obronne w dobrym stanie.\nOpcjonalnie używa krzemu do zwiększenia zasięgu i szybkości naprawy. +block.mend-projector.description = Ulepszona wersja Naprawiacza. Naprawia bloki w jego otoczeniu.\nMoże wykorzystywać włókno fazowe, aby zwiększyć efektywność napraw. block.overdrive-projector.description = Zwiększa szybkość budynków w zasięgu takich jak wiertła czy przenośniki. Może wykorzystywać włókno fazowe, aby zwiększyć zasięg i efektywność budowli. block.force-projector.description = Wytwarza pole siłowe w kształcie sześciokąta wokół siebie, chroniąc budynki i jednostki wewnątrz od obrażeń zadanych przez pociski. block.shock-mine.description = Zadaje obrażenia jednostkom wroga, które wejdą na nią. Ledwo widoczne dla wrogów. @@ -1963,12 +2018,12 @@ block.bridge-conveyor.description = Zaawansowany blok transportujący. Pozwala n block.phase-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Używa energii do teleportacji przedmiotów do połączonego transportera fazowego na spore odległości. block.sorter.description = Sortuje przedmioty. Jeśli przedmiot pasuje to przechodzi dalej, jeśli nie - to przechodzi na boki. block.inverted-sorter.description = Sortuje przedmioty jak zwykły sortownik, ale odpowiednie surowce wyciągane są na boki. -block.router.description = Akceptuje przedmioty z jednego miejsca i rozdziela je do trzech innych kierunków. Przydatne w rozdzielaniu materiałów z jednego źródła do wielu celów.\n\n[scarlet]Nigdy nie używaj przy punkcje wejścia materiałów produkcyjnych, ponieważ zostaną one zatkane przez materiały wyjściowe.[] +block.router.description = Przyjmuje przedmioty z jednej strony i równo je dystrybuuje na przylegające przenośniki. \n\n[scarlet]Nigdy nie używaj przy wejściu materiałów produkcyjnych, ponieważ zostaną one zatkane przez materiały wyjściowe.[]\n[scarlet]Cześć mu i chwała na wieki! block.router.details = Nieuniknione zło. Nie zaleca się stosowania obok zakładów produkcyjnych, ponieważ zostaną one zatkane. -block.distributor.description = Zaawansowany rozdzielacz, rozdzielający przedmioty do 7 innych kierunków. +block.distributor.description = Zaawansowany rozdzielacz, który jest w stanie dystrybuuować przedmioty na więc block.overflow-gate.description = Rozdzielacz, który przerzuca przedmioty, kiedy główna droga jest przepełniona. -block.underflow-gate.description = Odwrotność bramy przepełnieniowej, który przepuszcza przedmioty główną drogą, gdy boczne drogi są przepełnione. -block.mass-driver.description = Najlepszy blok do transportu przedmiotów. Zbiera wiele przedmiotów naraz a potem wystrzeliwuje je do kolejnej katapulty masy na bardzo duże odległości. +block.underflow-gate.description = Odwrotność bramy przepełnieniowej, która przepuszcza przedmioty główną drogą, gdy boczne drogi są przepełnione. +block.mass-driver.description = Najlepszy blok do transportu przedmiotów. Zbiera wiele przedmiotów naraz, a potem wystrzeliwuje je do kolejnej katapulty masy na bardzo duże odległości. block.mechanical-pump.description = Tania pompa o niskiej wydajności. Nie wymaga prądu. block.rotary-pump.description = Zaawansowana pompa. Pompuje więcej cieczy, ale wymaga zasilania. block.impulse-pump.description = Najlepsza pompa. Pompuje ogromne ilości cieczy, ale wymaga zasilania. @@ -2001,8 +2056,8 @@ block.pneumatic-drill.description = Ulepszone wiertło, zdolne do wydobywania ty block.laser-drill.description = Pozwala kopać jeszcze szybciej poprzez technologię laserową, ale wymaga energii. Zdolne do wydobywania toru. block.blast-drill.description = Najlepsze wiertło. Wymaga dużych ilości energii. block.water-extractor.description = Wydobywa wodę z ziemi. Użyj go, gdy w pobliżu brakuje wody. -block.cultivator.description = Uprawia małe skupiska zarodników i umieszcza je w gotowych do dalszego przetwarzania kapsułach. -block.cultivator.details = Odzyskana technologia. Służy do jak najbardziej wydajnej produkcji ogromnych ilości biomasy. Prawdopodobnie początkowy inkubator zarodników pokrywający teraz Serpulo. +block.cultivator.description = Hoduje zarodniki i umieszcza je w gotowych do dalszego przetwarzania kapsułach. +block.cultivator.details = Odzyskana technologia. Służy do jak najbardziej wydajnej produkcji ogromnych ilości biomasy. Prawdopodobnie początkowy inkubator zarodników pokrywających teraz Serpulo. block.oil-extractor.description = Używa bardzo dużych ilości energii do ekstrakcji ropy z piasku. Używaj go w sytuacji kiedy nie ma bezpośredniego źródła ropy w okolicy. block.core-shard.description = Pierwsza wersja rdzenia. Gdy zostaje zniszczony, wszelki kontakt do regionu zostaje utracony. Nie pozwól na to. block.core-shard.details = Pierwsza generacja. Kompaktowy. Samoreplikuje się. Wyposażony w jednorazowe silniki startowe. Nie jest przeznaczony do podróży międzyplanetarnych. @@ -2026,7 +2081,7 @@ block.swarmer.description = Rakietowa wieża artyleryjska, której pociski są z block.salvo.description = Standardowa wieża szturmowa, strzelająca szybkimi salwami pocisków we wrogów. block.fuse.description = Duża wieża obronna, wystrzeliwująca przeszywające wiązki we wrogie jednostki. block.ripple.description = Duża wieża artyleryjska, która strzela jednocześnie kilkoma pociskami posiadającymi różne efekty. -block.cyclone.description = Duża wieża szturmowa, które strzela dużą ilością pocisków posiadających różne efekty. +block.cyclone.description = Duża wieża szturmowa, która strzela dużą ilością pocisków. block.spectre.description = Duże działo szturmowe, które strzela potężnymi pociskami przebijającymi pancerz wrogich jednostek. block.meltdown.description = Duże laserowe działo obronne, które strzela pojedynczą ciągłą podpalającą wiązką. Wymaga chłodzenia. block.foreshadow.description = Duże działo artyleryjskie, które strzela potężnym pociskiem z daleka w pojedyncze jednostki, najpierw eliminując te najsilniejsze. @@ -2035,8 +2090,8 @@ block.segment.description = Specjalna wieża obronna. Nie zadaje obrażeń, lecz block.parallax.description = Laserowa wieża przeciwlotnicza, która strzela ciągłym laserem w jednostki, przyciągając je do siebie. block.tsunami.description = Strumieniowe działo obronne, które automatycznie gasi ogień, gdy jest podłączone do wody. block.silicon-crucible.description = Oczyszcza krzem z węgla i piasku wykorzystując piratian. Bardziej efektywny w gorących miejscach. -block.disassembler.description = Oddziela egzotyczne materiały z mieszaniny jaką jest żużel z małą efektywnością. Może wyprodukować tor. -block.overdrive-dome.description = Zwiększa szybkość budynków w zasięgu. Wymaga włókna fazowego oraz krzemu by działać. +block.disassembler.description = Oddziela egzotyczne materiały z mieszaniny, jaką jest żużel. Nie jest zbyt efektywny. Może wyprodukować tor. +block.overdrive-dome.description = Zwiększa szybkość budynków w zasięgu. Wymaga włókna fazowego oraz krzemu, by działać. block.payload-conveyor.description = Przenosi duże ładunki, takie jak jednostki z fabryk. block.payload-router.description = Dzieli wejście z przenośnika masowego w 3 różne strony. block.ground-factory.description = Produkuje jednostki naziemne. Jednostki mogą być do razu wykorzystane lub przeniesione do rekonstruktora aby je ulepszyć. @@ -2056,10 +2111,9 @@ block.logic-display.description = Wyświetla obraz z procesora. block.large-logic-display.description = Wyświetla obraz z procesora. block.interplanetary-accelerator.description = Masywna elektromagnetyczna wieża. Przyspiesza rdzeń do prędkości ucieczki by wylądować na innych planetach. block.repair-turret.description = Na bieżąco naprawia najbliższą uszkodzoną jednostkę w jej sąsiedztwie. Opcjonalnie akceptuje chłodziwo. -block.payload-propulsion-tower.description = Konstrukcja o dużym zasięgu do transportu ładunków. Strzela ładunkami do innych podłączonych wież napędowych ładunku. -block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. -block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion core. -block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel core. +block.core-bastion.description = Rdzeń bazy. Uzbrojony. Po zniszczeniu tracisz sektor. +block.core-citadel.description = Rdzeń bazy. Bardzo dobrze uzbrojony. Składuje wiecej zasobów niż rdzeń Bastion. +block.core-acropolis.description = Rdzeń bazy. Wyjątkowo dobrze uzbrojony. Składuje wiecej zasobów niż rdzeń Cytadela. block.breach.description = Strzela przebijającymi kulami z berylu bądź wolframu we wrogie cele. block.diffuse.description = Strzela serią pocisków na szerokim obszarze. Odpycha wrogie cele. block.sublimate.description = Pali wrogie cele ciągłym płomieniem. Przebija pancerz. @@ -2076,13 +2130,13 @@ block.electric-heater.description = Ogrzewa bloki naprzeciw, używając do tego block.slag-heater.description = Ogrzewa bloki naprzeciw, używając do tego żużlu. block.phase-heater.description = Ogrzewa bloki naprzeciw, używając do tego włókna fazowego. block.heat-redirector.description = Przekazuje zebrane ciepło do bloku naprzeciw. -block.heat-router.description = Spreads accumulated heat in three output directions. +block.heat-router.description = Rozprowadza zgromadzone ciepło w trzech różnych kierunkach. block.electrolyzer.description = Poddaje wodę elektrolizie, uzyskując wodór i ozon w postaci gazowej. block.atmospheric-concentrator.description = Koncentruje azot z atmosfery, używając do tego ciepła. block.surge-crucible.description = Odlewa stop elektrum z żużlu i krzemu pobierając ciepło. Dostarczając większe ilości ciepła można zwiększyć wydajność procesu. block.phase-synthesizer.description = Używa toru, piasku i ozonu do wytworzenia włókna fazowego, pobierając jednocześnie ciepło. -block.carbide-crucible.description = Wytwarza węglik z grafitu i wolframu pobierając przy tym ciepło. -block.cyanogen-synthesizer.description = Syntetyzuje cyjan z arkycytu i grafitu używając ciepła. +block.carbide-crucible.description = Wytwarza karbid z grafitu i wolframu pobierając przy tym ciepło. +block.cyanogen-synthesizer.description = Syntezuje cyjan z arkycytu i grafitu używając ciepła. block.slag-incinerator.description = Niszczy przedmioty bądź płyny używając żużlu. Niezalecane wprowadzanie gazów. block.vent-condenser.description = Skrapla parę wodną z gejzeru. block.plasma-bore.description = Wydobywa rudę znajdującą się na ścianach. Wymaga minimalnej ilości prądu. Ilość rudy wydobytej co cykl zależy od ilości bloków rudy naprzeciw wiertła. @@ -2092,7 +2146,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. @@ -2113,7 +2166,7 @@ block.duct-router.description = Po równo rozdziela przedmioty w trzech kierunka block.overflow-duct.description = Odprowadza przedmioty na boki, kiedy droga z przodu jest zapełniona. block.duct-bridge.description = Transportuje przedmioty nad różnymi przeszkodami. block.duct-unloader.description = Rozładowuje wybrany przedmiot z bloku z tyłu. Nie może wyjmować przedmiotów ze rdzenia. -block.underflow-duct.description = Odwrotność przepełnieniowej rury próżniowej. Przepuszcza przedmioty do przodu tylko tak boczne wyjścia są zapełnione. +block.underflow-duct.description = Odwrotność przepełnieniowej rury próżniowej. Przepuszcza przedmioty do przodu tylko wtedy, gdy boczne wyjścia są zapełnione. block.reinforced-liquid-junction.description = Pozwala na przecięcie się dwóch rur, bez mieszania ich zawartości. block.surge-conveyor.description = Przenosi przedmioty partiami. Może być przyspieszony przy użyciu prądu. Przewodzi prąd. block.surge-router.description = Równomiernie rozdziela przedmioty w trzy różne strony. Montowany na elektrumowych przenośnikach. Może być przyspieszony przy użyciu prądu. Przewodzi prąd. @@ -2149,7 +2202,7 @@ block.large-payload-mass-driver.description = Long-range payload transport struc block.unit-repair-tower.description = Naprawia wszystkie jednostki w jego zasięgu, używając ozonu. block.radar.description = Stopniowo odkrywa teren i wrogie jednostki. Wymaga prądu. block.shockwave-tower.description = Uszkadza i niszczy wrogie pociski, używając cyjanu. -block.canvas.description = Displays a simple image with a pre-defined palette. Editable. +block.canvas.description = Wyświetla proste obrazki z predefinowaną paletą. Edytowalne. unit.dagger.description = Lądowa jednostka ofensywna, strzelająca standardowymi pociskami we wrogie jednostki. unit.mace.description = Lądowa jednostka ofensywna, miotająca strumieniami ognia we wrogie jednostki. @@ -2161,13 +2214,13 @@ unit.nova.description = Lądowo-powietrzna jednostka wsparcia, wystrzeliwująca unit.pulsar.description = Lądowo-powietrzna jednostka wsparcia, wystrzeliwująca leczące sojusznicze struktury wiązki energii. Zadaje spore obrażenia wrogom. unit.quasar.description = Lądowo-powietrzna jednostka szturmowa wyposażona w pole siłowe. Naprawia pobliskie struktury oraz skutecznie niszczy wrogów. unit.vela.description = Jednostka krocząca zdolna do lotu. Strzela potężnym laserem podpalającym pobliskich wrogów i ich struktury. Naprawia pobliskie sojusznicze budowle. -unit.corvus.description = Niesamowicie silna jednostka krocząca. Wystrzeliwuje potężny laser niszczący wrogów w sporej odległości. Naprawia sojusznicze struktury. Potrafi pokonac niemalże każdą przeszkodę. +unit.corvus.description = Niesamowicie silna jednostka krocząca. Wystrzeliwuje potężny laser niszczący wrogów w sporej odległości. Naprawia sojusznicze struktury. Potrafi pokonać niemalże każdą przeszkodę. unit.crawler.description = Drobna lądowa jednostka ofensywna, wbiegająca we wrogów dokonując samozniszczenia. unit.atrax.description = Lądowa jednostka ofensywna mogąca pokonać niemalże każdą przeszkodę, strzelająca podpalającymi kulami żużlu. unit.spiroct.description = Pajęcza jednostka mogąca pokonać niemalże każdą przeszkodę. Ponadto, jej ataki mogą ją uleczyć i jednocześnie przyciągnąć wrogów. unit.arkyid.description = Jednostka szturmowa mogąca pokonać niemalże każdą przeszkodę, strzelająca elektrycznymi pociskami oraz leczącymi ją laserami. -unit.toxopid.description = Jednostka pajęcza mogąca pokonać niemalże każdą przeszkodę. Na krótki dystans posługuje się przebijającymi laserami, a dłuższy strzela odłamkowym, uwalniającym błyskawice granatem. +unit.toxopid.description = Jednostka pajęcza mogąca pokonać niemalże każdą przeszkodę. Na krótki dystans posługuje się przebijającymi laserami, a na dłuższy strzela odłamkowym, uwalniającym błyskawice granatem. unit.flare.description = Mała latająca jednostka strzelająca standardowymi pociskami we wrogie struktury. unit.horizon.description = Jednostka latająca zrzucająca bomby kasetowe na cele naziemne. @@ -2185,7 +2238,7 @@ unit.risso.description = Morska jednostka ofensywna, strzelająca sporą ilości unit.minke.description = Morska jednostka ofensywna, strzelająca granatami i wybuchowymi pociskami we wrogie jednostki. unit.bryde.description = Morska jednostka ofensywna, strzelająca dalekosiężnymi pociskami artyleryjskimi i rakietami we wrogie jednostki. unit.sei.description = Morska jednostka szturmowa, strzelająca barażami rakiet oraz salwami przebijających pocisków we wrogie jednostki. -unit.omura.description = Morski okaz szturmowy wyposażony w dwie platformy tworzące Flary, trzelający przebijającym superszybkim pociskiem we wrogie jednostki. +unit.omura.description = Morski okaz szturmowy wyposażony w dwie platformy tworzące Flary, strzelający przebijającym superszybkim pociskiem we wrogie jednostki. unit.alpha.description = Lotnicza jednostka administracyjna, która wykonuje podstawowe instrukcje budownicze i wydobywcze. Broni rdzenia Odłamek. unit.beta.description = Lotnicza jednostka administracyjna, która buduje i wykopuje surowce znacznie szybciej od poprzedniej wersji. Chroni rdzeń Podstawa przed wrogimi jednostkami. @@ -2222,6 +2275,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2254,9 +2308,48 @@ lst.flushmessage = Wyświetl wiadomość na ekranie z bufora tekstowego.\nPoczek lst.cutscene = Manipuluj kamerą gracza. lst.setflag = Ustaw globalną flagę, którą mogą odczytać wszystkie procesory. lst.getflag = Sprawdź, czy ustawiona jest flaga globalna. -lst.setprop = Sets a property of a unit or building. -lst.effect = Create a particle effect. -lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.setprop = Ustaw właściwość jednostki lub budynku. +lst.effect = Stwórz efekt cząsteczki. +lst.sync = Synchronizuje zmienną poprzez sieć.\nWywoływane maksymalnie 10 razy na sekundę. +lst.makemarker = Stwórz nowy marker logiki.\nMusisz podać ID, aby móc go później zidentyfikować.\nLimit markerów to 20,000. +lst.setmarker = Ustaw właściwości markera.\nID markera musi być takie samo jak podczas jego tworzenia. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Logika budowania jednostek nie jest tu dozwolona. @@ -2271,8 +2364,8 @@ laccess.controller = Kontroler jednostki. Jeśli jest kontrolowana przez proceso laccess.dead = Sprawdza czy jednostka/budynek jest zniszczony lub już nie istnieje. laccess.controlled = Zwraca:\n[accent]@ctrlProcessor[] jeśli kontrolerem jednostki jest procesor\n[accent]@ctrlPlayer[] jeśli kontrolerem jednostki/budynku jest gracz\n[accent]@ctrlFormation[] jeśli jednostka jest w formacji\nW innym wypadku 0. laccess.progress = Postęp akcji, od 0 do 1.\nZwraca produkcję, przeładowanie wieżyczki lub postęp konstrukcji. -laccess.speed = Top speed of a unit, in tiles/sec. -laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. +laccess.speed = Najwyższa prędkość jednostki, w kratkach/sec. +laccess.id = ID jednostki/bloku/przedmiotu/płynu.\nOdwrotnośc operacji wyszukiwania. lcategory.unknown = Inne lcategory.unknown.description = Niezkategoryzowane instrukcje. @@ -2300,6 +2393,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. @@ -2319,7 +2413,7 @@ lenum.xor = Bitowe XOR. lenum.min = Minimum dwóch liczb. lenum.max = Maksimum dwóch liczb. lenum.angle = Kąt wektoru w stopniach. -lenum.anglediff = Absolute distance between two angles in degrees. +lenum.anglediff = Bezwzględny dystans między dwoma kątami w stopniach. lenum.len = Długość wektoru. lenum.sin = Sinus, w stopniach. @@ -2393,7 +2487,7 @@ lenum.unbind = Kompletnie wyłącza kontrolę za pomocą logiki.\nWznawia domyś lenum.move = Przemieść się do określonej pozycji. lenum.approach = Zbliż się do pozycji w promieniu. lenum.pathfind = Odnajdź ścieżkę do punktu zrzutu przeciwników. -lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. +lenum.autopathfind = Automatycznie znajduję drogę do najbliższego rdzenia wroga lub punktu zrzutu.\nDziała tak samo jak normalne znajdowanie drogi. lenum.target = Strzel w określoną pozycję. lenum.targetp = Strzel w jednostkę/budynek z zachowaniem trajektorii. lenum.itemdrop = Upuść przedmiot. @@ -2407,3 +2501,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 4cccee0768..6d407f8b53 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -341,12 +341,23 @@ open = Abrir customize = Customizar cancel = Cancelar command = Comando +command.queue = [lightgray][Queuing] command.mine = Minerar command.repair = Reparar command.rebuild = Reconstruir command.assist = Assist Player command.move = Mover command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Abrir Link copylink = Copiar link back = Voltar @@ -427,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 @@ -483,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 @@ -494,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 @@ -505,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" @@ -592,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: @[]\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: @@ -644,9 +676,11 @@ 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.background = Fundo marker.outline = Contorno @@ -675,7 +709,6 @@ resources.max = Máximo bannedblocks = Blocos Banidos objectives = Objetivos bannedunits = Unidades Banidas -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Adicionar Todos @@ -734,8 +767,7 @@ 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.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}[] @@ -1009,6 +1041,7 @@ bullet.splashdamage = [stat]{0}[lightgray] de dano em área ~[stat] {1}[lightgra bullet.incendiary = [stat]Incendiário bullet.homing = [stat]Guiado bullet.armorpierce = [stat]pentração de armadura +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x balas de fragmentação: @@ -1064,6 +1097,7 @@ setting.backgroundpause.name = Pausar em segundo plano setting.buildautopause.name = Pausar Automaticamente Quando for Construir setting.doubletapmine.name = Clique Duplo Para Minerar setting.commandmodehold.name = Segure para o modo de comando +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Desativar Mods em Crash de Começo setting.animatedwater.name = Água animada setting.animatedshields.name = Escudos animados @@ -1117,7 +1151,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 @@ -1137,6 +1171,7 @@ keybind.title = Refazer teclas keybinds.mobile = [scarlet]A maior parte das teclas aqui não são funcionais em dispositivos móveis. É unicamente suportado movimento básico. category.general.name = Geral category.view.name = Ver +category.command.name = Unit Command category.multiplayer.name = Multijogador category.blocks.name = Selecionar bloco placement.blockselectkeys = \n[lightgray]Tecla: [{0}, @@ -1154,6 +1189,23 @@ keybind.mouse_move.name = Seguir o Cursor keybind.pan.name = Câmera livre keybind.boost.name = Impulsionar keybind.command_mode.name = Modo de Comando +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selecionar região keybind.schematic_menu.name = Menu de Esquemas @@ -1217,9 +1269,12 @@ mode.pvp.description = Lute contra outros jogadores locais. mode.attack.name = Ataque mode.attack.description = Sem hordas, com o objetivo de destruir a base inimiga. mode.custom = Regras personalizadas +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Recursos infinitos rules.onlydepositcore = Permitir apenas depósito no núcleo +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reatores explodem rules.coreincinerates = Núcleo incinera itens em excesso rules.disableworldprocessors = Desativar processadores mundiais @@ -1737,7 +1792,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 @@ -1856,6 +1910,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. @@ -2064,7 +2119,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. @@ -2102,7 +2156,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. @@ -2221,6 +2274,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2256,6 +2310,45 @@ lst.getflag = Verifique se um sinalizador global está definido. lst.setprop = Define uma propriedade de uma unidade ou edifício. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Lógica de construção de unidades não é permitida aqui. @@ -2299,6 +2392,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. @@ -2405,3 +2499,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 a5056300c2..655572aa1e 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -337,12 +337,23 @@ open = Abrir customize = Customizar cancel = Cancelar command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Abrir Ligação copylink = Copiar ligação back = Voltar @@ -423,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 @@ -478,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 @@ -489,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 @@ -500,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" @@ -584,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: @[]\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: @@ -634,9 +666,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -661,7 +695,6 @@ resources.max = Max bannedblocks = Blocos banidos objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Adiciona tudo @@ -720,7 +753,7 @@ 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.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}[] @@ -989,6 +1022,7 @@ bullet.splashdamage = [stat]{0}[lightgray] Dano em área ~[stat] {1}[lightgray] bullet.incendiary = [stat]Incendiário bullet.homing = [stat]Guiado bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1044,6 +1078,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Água animada setting.animatedshields.name = Escudos animados @@ -1097,7 +1132,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 @@ -1117,6 +1152,7 @@ keybind.title = Refazer teclas keybinds.mobile = [scarlet]A maior parte das teclas aqui não são funcionais em aparelhos móveis. Apenas movimento básico é suportado. category.general.name = Geral category.view.name = Ver +category.command.name = Unit Command category.multiplayer.name = Multijogador category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1134,6 +1170,23 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selecionar região keybind.schematic_menu.name = Menu esquemático @@ -1197,9 +1250,12 @@ mode.pvp.description = Lutar contra outros jogadores locais. mode.attack.name = Ataque mode.attack.description = Sem hordas, com o objetivo de destruir a base inimiga. mode.custom = Regras personalizadas +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Recursos infinitos rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors @@ -1717,7 +1773,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 @@ -1835,6 +1890,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. @@ -2034,7 +2090,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. @@ -2070,7 +2125,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. @@ -2187,6 +2241,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2222,6 +2277,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2260,6 +2354,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. @@ -2353,3 +2448,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 737e5f2bf3..ebbc5c124e 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -341,12 +341,23 @@ open = Deschide customize = Personalizează Regulile cancel = Anulare command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Deschide Linkul copylink = Copiază Linkul back = Înapoi @@ -427,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 @@ -483,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 @@ -494,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 @@ -505,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ă'. @@ -591,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: @[]\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: @@ -641,9 +673,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -669,7 +703,6 @@ resources.max = Max bannedblocks = Blocuri Interzise objectives = Objectives bannedunits = Unități Interzise -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Adaugă-le pe toate @@ -728,8 +761,7 @@ 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.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}[] @@ -1001,6 +1033,7 @@ bullet.splashdamage = [stat]{0}[lightgray] forță pe raza ~[stat] {1}[lightgray bullet.incendiary = [stat]incendiar bullet.homing = [stat]cu radar bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x fragmente: @@ -1056,6 +1089,7 @@ setting.backgroundpause.name = Pune Pauză în Fundal setting.buildautopause.name = Autopauză de la Construit setting.doubletapmine.name = Dublu-Click pt a Mina setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Dezactivează Modurile în Cazul unui Crash la Pornire setting.animatedwater.name = Suprafețe Animate setting.animatedshields.name = Scuturi Animate @@ -1109,7 +1143,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 @@ -1129,6 +1163,7 @@ keybind.title = Reatribuie Taste keybinds.mobile = [scarlet]Majoritatea tastelor atribuite aici nu funcționează pe mobil. Doar mișcările direcționale de bază sunt suportate. category.general.name = General category.view.name = Privire +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Selectare Bloc placement.blockselectkeys = \n[lightgray]Taste: [{0}, @@ -1146,6 +1181,23 @@ keybind.mouse_move.name = Urmărește Mouseul keybind.pan.name = Mișcă Harta keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selectează Regiunea keybind.schematic_menu.name = Meniu Scheme @@ -1209,9 +1261,12 @@ mode.pvp.description = Luptă împotriva altor jucători local.\n[gray]E nevoie mode.attack.name = Atac mode.attack.description = Distruge baza inamicului. \n[gray]E nevoie de un nucleu Agresor (roșu) pe hartă pt a juca. mode.custom = Reguli Personalizate +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Resurse Infinite rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactoarele Explodează rules.coreincinerates = Nucleul Incinerează Resursele în Plus rules.disableworldprocessors = Disable World Processors @@ -1731,7 +1786,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 @@ -1850,6 +1904,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. @@ -2050,7 +2105,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. @@ -2086,7 +2140,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. @@ -2205,6 +2258,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2240,6 +2294,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Nu ai voie să construiești cu unitățile folosind procesoare. @@ -2282,6 +2375,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). @@ -2390,3 +2484,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 657cb3e351..424a5a041b 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -1,4 +1,4 @@ -credits.text = Создатель [royal]Anuken[] — [sky]anukendev@gmail.com[]\n\nЕсть недоработки в переводе или хотите найти союзников для совместной игры?\nПишите в оф. русский [accent]discord-сервер Mindustry[].\n\nРедакторы и переводчики на русский язык:\n[blue]Prosta4ok_ua[green]#[yellow]6336\n[darkgray]XZimur[]\n[#30FF30]Beryllium\n[tan]Félix [slate]Córvus\n[orange]Vanguard\n[#a00000]Slotterleet[]\n[unlaunched]Даркнесс#3729[]\n[white]lucin#0949[] +credits.text = Создатель [royal]Anuken[] — [sky]anukendev@gmail.com[]\n\nЕсть недоработки в переводе или хотите найти союзников для совместной игры?\nПишите в оф. русский [accent]discord-сервер Mindustry[].\n\nРедакторы и переводчики на русский язык:\n[blue]Prosta4ok_ua[green]#[yellow]6336\n[darkgray]XZimur[]\n[lightgray]routerchain\n[tan]Félix [slate]Córvus\n[orange]Vanguard\n[#a00000]Slotterleet[]\n[unlaunched]inflexibledarkness[]\n[white]lucin#0949[] credits = Авторы contributors = Переводчики и помощники discord = Присоединяйтесь к нашему Discord! @@ -341,12 +341,23 @@ open = Открыть customize = Настроить правила cancel = Отмена command = Командовать +command.queue = [lightgray][Queuing] command.mine = Добывать command.repair = Ремонтировать command.rebuild = Восстанавливать command.assist = Помогать игроку command.move = Двигаться command.boost = Лететь +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Открыть ссылку copylink = Скопировать ссылку back = Назад @@ -427,6 +438,7 @@ editor.waves = Волны: editor.rules = Правила: editor.generation = Генерация: editor.objectives = Цели +editor.locales = Locale Bundles editor.ingame = Редактировать в игре editor.playtest = Опробовать карту editor.publish.workshop = Опубликовать в Мастерской @@ -483,6 +495,7 @@ editor.default = [lightgray]<По умолчанию> details = Подробности… edit = Редактировать… variables = Переменные +logic.globals = Built-in Variables editor.name = Название: editor.spawn = Создать боевую единицу editor.removeunit = Удалить боевую единицу @@ -494,6 +507,7 @@ editor.errorlegacy = Эта карта слишком старая и испол editor.errornot = Это не файл карты. editor.errorheader = Этот файл карты недействителен или повреждён. editor.errorname = Карта не имеет имени. Может быть, вы пытаетесь загрузить сохранение? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Обновить editor.randomize = Случайно editor.moveup = Выше @@ -505,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 = Ваша карта не может быть записана поверх встроенной карты! Введите другое название в меню «Информация о карте» @@ -591,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: @[]\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 = Высота: @@ -641,9 +673,11 @@ 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.background = Фон marker.outline = Контур objective.research = [accent]Исследуйте:\n[]{0}[lightgray]{1} @@ -669,7 +703,6 @@ resources.max = Максимум bannedblocks = Запрещённые блоки objectives = Цели bannedunits = Запрещённые единицы -rules.hidebannedblocks = Скрыть запрещенные блоки bannedunits.whitelist = Запрещенные единицы как белый список bannedblocks.whitelist = Запрещенные блоки как белый список addall = Добавить всё @@ -729,8 +762,7 @@ 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.changeicon = Изменить иконку sector.noswitch.title = Перемещение между секторами sector.noswitch = Вы не можете переключаться между секторами, пока существующий сектор находится под атакой.\n\nСектор: [accent]{0}[] на [accent]{1}[] @@ -1001,6 +1033,7 @@ bullet.splashdamage = [stat]{0}[lightgray] урона в радиусе ~[stat] bullet.incendiary = [stat]зажигательный bullet.homing = [stat]самонаводящийся bullet.armorpierce = [stat]бронебойный +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} сек[lightgray] подавления регенерации в радиусе ~ [stat]{1}[lightgray] блоков bullet.interval = [stat]{0}/сек[lightgray] интервальный(ых) снаряд(ов): bullet.frags = [stat]{0}[lightgray]x осколочный(ых) снаряд(ов): @@ -1056,6 +1089,7 @@ setting.backgroundpause.name = Фоновая пауза setting.buildautopause.name = Автоматическая приостановка строительства setting.doubletapmine.name = Добыча руды двойным нажатием setting.commandmodehold.name = Удерживать для командования боевыми единицами +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Отключение модификаций после вылета при запуске setting.animatedwater.name = Анимированные поверхности setting.animatedshields.name = Анимированные щиты @@ -1102,14 +1136,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 = Public Game Visibility setting.playerlimit.name = Ограничение игроков setting.chatopacity.name = Непрозрачность чата setting.lasersopacity.name = Непрозрачность лазеров энергоснабжения @@ -1129,6 +1163,7 @@ keybind.title = Настройка управления keybinds.mobile = [scarlet]Большинство комбинаций клавиш здесь не работает на мобильных устройствах. Поддерживается только базовое движение. category.general.name = Основное category.view.name = Просмотр +category.command.name = Unit Command category.multiplayer.name = Сетевая игра category.blocks.name = Выбор блока placement.blockselectkeys = \n[lightgray]Клавиша: [{0}, @@ -1146,6 +1181,23 @@ 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.rebuild_select.name = Перестроить в области keybind.schematic_select.name = Выбрать область keybind.schematic_menu.name = Меню схем @@ -1209,8 +1261,11 @@ mode.pvp.description = Сражайтесь против других игрок mode.attack.name = Атака mode.attack.description = Уничтожьте вражескую базу.\n[gray]Для игры требуется вражеское ядро на карте. mode.custom = Пользовательские правила +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Скрыть запрещенные блоки rules.infiniteresources = Бесконечные ресурсы rules.onlydepositcore = Разрешен перенос только в ядро +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Взрывы реакторов rules.coreincinerates = Ядро сжигает избыток ресурсов rules.disableworldprocessors = Отключить мировые процессоры @@ -1731,7 +1786,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 = Рефабрикатор кораблей @@ -1851,12 +1905,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(Чтобы поднять или разгрузить что-либо, удерживайте палец.) @@ -1949,7 +2004,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 = Перемещает предметы вперёд. Быстрее, чем стандартный конвейер. @@ -2052,7 +2107,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 = Ядро базы. Исключительно хорошо бронировано. Хранит больше ресурсов, чем ядро Цитадель. @@ -2088,7 +2142,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 = Перемещает жидкости над любой местностью или зданиями. @@ -2207,6 +2260,7 @@ unit.emanate.description = Защищает ядро «Акрополь» от lst.read = Считывает число из соединённой ячейки памяти. lst.write = Записывает число в соединённую ячейку памяти. lst.print = Добавляет текст в текстовый буфер. Ничего не отображает, пока не будет вызван [accent]Print Flush[]. +lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" lst.draw = Добавляет операцию в буфер отрисовки. Ничего не отображает, пока не будет вызван [accent]Draw Flush[]. lst.drawflush = Сбрасывает буфер [accent]Draw[] операций на дисплей. lst.printflush = Сбрасывает буфер [accent]Print[] операций в блок-сообщение. @@ -2242,6 +2296,45 @@ lst.getflag = Проверяет, установлен ли глобальный lst.setprop = Устанавливает свойство единицы или постройки. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Строительство с помощью процессоров здесь запрещено. @@ -2284,6 +2377,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 = Целочисленное деление. @@ -2392,3 +2486,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 642685c7e0..c2f7c81da6 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -341,12 +341,23 @@ open = Otvori customize = Podesi Pravila cancel = Obustavi command = Upravljaj +command.queue = [lightgray][Queuing] command.mine = Iskopavaj command.repair = Popravljaj command.rebuild = Ponovna Gradnja command.assist = Pomoć Igraču command.move = Kretanje command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Otvori Link copylink = Iskopiraj Link back = Nazad @@ -427,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 @@ -483,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 @@ -494,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 @@ -505,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. @@ -591,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: @[]\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: @@ -641,9 +673,11 @@ 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.background = Pozadina marker.outline = Outline objective.research = [accent]Izuči:\n[]{0}[lightgray]{1} @@ -670,7 +704,6 @@ resources.max = Maksimum bannedblocks = Nedozvoljeni Blokovi objectives = Zadaci bannedunits = Nedozvoljene Jedinice -rules.hidebannedblocks = Sakrij Nedozvoljena Sredstva bannedunits.whitelist = Nedozvoljene Jedinice Kao Bela Lista bannedblocks.whitelist = Nedozvoljeni Blokovi Kao Bela Lista addall = Dodaj Sve @@ -729,8 +762,7 @@ 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.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}[] @@ -1003,6 +1035,7 @@ bullet.splashdamage = [stat]{0}[lightgray] oblasna šteta ~[stat] {1}[lightgray] bullet.incendiary = [stat]zapaljiv bullet.homing = [stat]samonavođenje bullet.armorpierce = [stat]proboj oklopa +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x šrapnela: @@ -1058,6 +1091,7 @@ setting.backgroundpause.name = Pauziraj u Pozadini setting.buildautopause.name = Automatski Pauziraj Gradnju setting.doubletapmine.name = Pritisni Dva Puta za Iskopavanje setting.commandmodehold.name = Drži za Upravljački Mod +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Onesposobi Modove Prilikom Ispadanja setting.animatedwater.name = Animirana Površina setting.animatedshields.name = Animirani Štitovi @@ -1111,7 +1145,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 @@ -1131,6 +1165,7 @@ keybind.title = Rebind Keys keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = Generalno category.view.name = Pogled +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Biranje Blokova placement.blockselectkeys = \n[lightgray]Dugme: [{0}, @@ -1148,6 +1183,23 @@ keybind.mouse_move.name = Prati Miš keybind.pan.name = Gledaj sa Daljine keybind.boost.name = Lebdi keybind.command_mode.name = Upravljački Mod +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Ponovo Sagradi Region keybind.schematic_select.name = Izaberi Region keybind.schematic_menu.name = Menu Šema @@ -1211,9 +1263,12 @@ mode.pvp.description = Fight against other players locally.\n[gray]Requires at l mode.attack.name = Napad mode.attack.description = Destroy the enemy's base. \n[gray]Requires a red core in the map to play. mode.custom = Svojevrsna Pravila +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Sakrij Nedozvoljena Sredstva rules.infiniteresources = Bezkonačni Resursi rules.onlydepositcore = Samo Dozvoli Dostavu u Jezgro +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Eksplozije Reaktora rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Onesposobi Svetovne Procesore @@ -1733,7 +1788,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 @@ -1853,6 +1907,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. @@ -2053,7 +2108,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. @@ -2089,7 +2143,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. @@ -2208,6 +2261,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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 +2297,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. @@ -2285,6 +2378,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. @@ -2393,3 +2487,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 a1b1febe8e..e8937b491c 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -337,12 +337,23 @@ open = Öppna customize = Customize Rules cancel = Avbryt command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Öppna Länk copylink = Kopiera Länk back = Tillbaka @@ -423,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 @@ -478,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 @@ -489,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 @@ -500,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. @@ -584,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: @[]\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: @@ -634,9 +666,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -661,7 +695,6 @@ resources.max = Max bannedblocks = Banned Blocks objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -720,7 +753,7 @@ 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.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}[] @@ -989,6 +1022,7 @@ bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles bullet.incendiary = [stat]incendiary bullet.homing = [stat]homing bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1044,6 +1078,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animerat Vatten setting.animatedshields.name = Animerade Sköldar @@ -1097,7 +1132,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 @@ -1117,6 +1152,7 @@ keybind.title = Rebind Keys keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = General category.view.name = View +category.command.name = Unit Command category.multiplayer.name = Multiplayer category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1134,6 +1170,23 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1197,9 +1250,12 @@ mode.pvp.description = Fight against other players locally.\n[gray]Requires at l mode.attack.name = Attack mode.attack.description = Destroy the enemy's base. No waves.\n[gray]Requires a red core in the map to play. mode.custom = Custom Rules +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Infinite Resources rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors @@ -1717,7 +1773,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 @@ -1835,6 +1890,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. @@ -2034,7 +2090,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. @@ -2070,7 +2125,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. @@ -2187,6 +2241,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2222,6 +2277,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2260,6 +2354,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. @@ -2353,3 +2448,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 102af48a27..d24aa629b5 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -341,12 +341,23 @@ open = เปิด customize = ตั้งค่ากฎ cancel = ยกเลิก command = สั่งการ +command.queue = [lightgray][Queuing] command.mine = ขุด command.repair = ซ่อมแซม command.rebuild = สร้างใหม่ command.assist = ช่วยเหลือผู้เล่น command.move = ขยับ command.boost = บูสต์ +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = เปิดลิ้งค์ copylink = คัดลอกลิ้งค์ back = กลับ @@ -427,6 +438,7 @@ editor.waves = คลื่น editor.rules = กฎ editor.generation = เจนเนอเรชั่น editor.objectives = เป้าหมาย +editor.locales = Locale Bundles editor.ingame = แก้ไขในเกม editor.playtest = เล่นทดสอบ editor.publish.workshop = เผยแพร่บนเวิร์กช็อป @@ -483,6 +495,7 @@ editor.default = [lightgray]<ค่าเริ่มต้น> details = รายละเอียด... edit = แก้ไข... variables = ตัวแปร +logic.globals = Built-in Variables editor.name = ชื่อ: editor.spawn = สร้างยูนิต editor.removeunit = ลบยูนิต @@ -494,6 +507,7 @@ editor.errorlegacy = แมพนี้เก่าเกินไปและ editor.errornot = นี่ไม่ใช้ไฟล์แมพ editor.errorheader = ไฟล์แมพนี้เสียหรือไม่ถูกต้อง editor.errorname = แมพไม่มีการกำหนดชื่อ คุณกำลังพยายามโหลดไฟล์เซฟอยู่หรือไม่? +editor.errorlocales = Error reading invalid locale bundles. editor.update = อัปเดต editor.randomize = สุ่ม editor.moveup = ขยับขึ้น @@ -505,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 = แมพของคุณไปทับซ้อนกับแมพค่าเริ่มต้น! เปลี่ยนชื่อได้ในเมนู 'ข้อมูลแมพ' @@ -591,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: @[]\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 = สูง: @@ -641,9 +673,11 @@ 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.background = พื้นหลัง marker.outline = โครงร่าง objective.research = [accent]วิจัย:\n[]{0}[lightgray]{1} @@ -669,7 +703,6 @@ resources.max = เต็ม bannedblocks = บล็อกต้องห้าม objectives = เป้าหมาย bannedunits = ยูนิตต้องห้าม -rules.hidebannedblocks = ซ่อนบล็อกต้องห้าม bannedunits.whitelist = ตั้งยูนิตต้องห้ามเป็นไวท์ลิสต์ bannedblocks.whitelist = ตั้งบล็อกต้องห้ามเป็นไวท์ลิสต์ addall = เพิ่มทั้งหมด @@ -729,8 +762,7 @@ 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.changeicon = เปลี่ยนไอคอน sector.noswitch.title = ไม่สามารถเปลี่ยนเซ็กเตอร์ได้ sector.noswitch = คุณไม่สามารถเปลี่ยนเซ็กเตอร์ได้ระหว่างที่อีกเซ็กเตอร์กำลังถูกโจมตีอยู่\n\nเซ็กเตอร์: [accent]{0}[] บนดาว [accent]{1}[] @@ -1002,6 +1034,7 @@ bullet.splashdamage = [stat]{0}[lightgray] ดาเมจกระจาย ~[s bullet.incendiary = [stat]ติดไฟ bullet.homing = [stat]ติดตามตัว bullet.armorpierce = [stat]เจาะเกราะ +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} วิ[lightgray] ระงับการฟื้นฟู ~ [stat]{1}[lightgray] ช่อง bullet.interval = [stat]{0}/วิ[lightgray] กระสุนช่วงระยะ: bullet.frags = [stat]{0}[lightgray]x กระสุนกระจาย: @@ -1057,6 +1090,7 @@ setting.backgroundpause.name = หยุดในพื้นหลัง setting.buildautopause.name = หยุดสร้างชั่วคราวแบบอัตโนมัติ setting.doubletapmine.name = กดสองครั้งเพื่อขุด setting.commandmodehold.name = กดค้างเพื่อสั่งการ +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = ปิดม็อดเมื่อเกมขัดข้อง setting.animatedwater.name = แอนิเมชั่นพื้นและน้ำ setting.animatedshields.name = แอนิเมชั่นโล่พลังงาน @@ -1110,7 +1144,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 = ความโปร่งแสงของลำแสงพลังงาน @@ -1130,6 +1164,7 @@ keybind.title = ตั้งค่าปุ่ม keybinds.mobile = [scarlet]การตั้งค่าปุ่มส่วนใหญ่ไม่สามารถใช้ในมือถือได้ เฉพาะการเคลื่อนไหวพื้นฐานเท่านั้นที่ใช้ได้ category.general.name = ทั่วไป category.view.name = การมองเห็น +category.command.name = Unit Command category.multiplayer.name = โหมดผู้เล่นหลายคน category.blocks.name = เลือกบล็อก placement.blockselectkeys = \n[lightgray]ปุ่ม: [{0}, @@ -1147,6 +1182,23 @@ 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.rebuild_select.name = เลือกพื้นที่สร้างใหม่ keybind.schematic_select.name = เลือกพื้นที่ keybind.schematic_menu.name = เมนูแผนผัง @@ -1210,9 +1262,12 @@ mode.pvp.description = สู้กับผู้เล่นอื่น\n[gra mode.attack.name = โจมตี mode.attack.description = ทำลายฐานของศัตรู \n[gray]จำเป็นต้องมีแกนกลางสีแดงเพื่อเล่น mode.custom = กฎแบบกำหนดเอง +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = ซ่อนบล็อกต้องห้าม rules.infiniteresources = ทรัพยากรไม่จำกัด rules.onlydepositcore = ขนย้ายทรัพยากรลงแกนกลางได้เท่านั้น +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = เปิดการระเบิดของเตาปฏิกร rules.coreincinerates = แกนกลางเผาทรัพยากรส่วนเกิน rules.disableworldprocessors = ปิดการทำงานของตัวประมวลผลโลก @@ -1738,7 +1793,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 = เครื่องแปลงสภาพยานบิน @@ -1859,6 +1913,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จัดตั้งกองกำลังป้องกัน ปฏิบัติการขุด และการผลิต @@ -2066,7 +2121,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 = ใจกลางของฐานทัพ เสริมเกราะมาอย่างดี เมื่อถูกทำลาย การติดต่อกับพื้นที่นั้นทั้งหมดจะหายไป อย่าให้มันเกิดขึ้น @@ -2104,7 +2158,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 = เคลื่อนย้ายของเหลวข้ามสิ่งก่อสร้างหรือกำแพง @@ -2225,6 +2278,7 @@ unit.emanate.description = สร้างสิ่งต่างๆ เพื lst.read = อ่านเลขจากเซลล์ความจำที่เชื่อมต่อไว้ lst.write = เขียนเลขไปยังเซลล์ความจำที่เชื่อมต่อไว้ lst.print = เพิ่มข้อความไปยังคิวข้อความ\nข้อความจะยังไม่แสดงจนกว่าจะใช้คำสั่ง [accent]Print Flush[] +lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" lst.draw = เพิ่มรูปไปยังคิวการวาด\nภาพจะยังไม่แสดงจนกว่าจะใช้คำสั่ง [accent]Draw Flush[] lst.drawflush = ปล่อยคิว [accent]Draw[] ไปยังหน้าจอลอจิกที่เชื่อมต่อไว้ lst.printflush = ปล่อยคิว [accent]Print[] ไปยังตัวเก็บข้อความที่เชื่อมต่อไว้ @@ -2260,6 +2314,45 @@ lst.getflag = เช็กว่าธงทั่วโลกนั้นได lst.setprop = ตั้งค่าคุณสมบัติของยูนิตและสิ่งก่อสร้าง lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]ไม่อนุญาตให้ใช้ลอจิกควบคุมให้ยูนิตสร้างที่นี่ @@ -2303,6 +2396,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 = หารจำนวนเต็ม @@ -2411,3 +2505,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 338ed21713..c1dc4dbe72 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -337,12 +337,23 @@ open = Ac customize = Customize cancel = iptal command = Command +command.queue = [lightgray][Queuing] command.mine = Mine command.repair = Repair command.rebuild = Rebuild command.assist = Assist Player command.move = Move command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Linki ac copylink = Linki kopyala back = Geri don @@ -423,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 @@ -478,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 @@ -489,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 @@ -500,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 @@ -584,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: @[]\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: @@ -634,9 +666,11 @@ 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.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -661,7 +695,6 @@ resources.max = Max bannedblocks = Banned Blocks objectives = Objectives bannedunits = Banned Units -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = Add All @@ -720,7 +753,7 @@ 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.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}[] @@ -989,6 +1022,7 @@ bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles bullet.incendiary = [stat]incendiary bullet.homing = [stat]homing bullet.armorpierce = [stat]armor piercing +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x frag bullets: @@ -1044,6 +1078,7 @@ setting.backgroundpause.name = Pause In Background setting.buildautopause.name = Auto-Pause Building setting.doubletapmine.name = Double-Tap to Mine setting.commandmodehold.name = Hold For Command Mode +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Disable Mods On Startup Crash setting.animatedwater.name = Animated Water setting.animatedshields.name = Animated Shields @@ -1097,7 +1132,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 @@ -1117,6 +1152,7 @@ keybind.title = Tuslari ayarla keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = General category.view.name = Goster +category.command.name = Unit Command category.multiplayer.name = Cok oyunculu category.blocks.name = Block Select placement.blockselectkeys = \n[lightgray]Key: [{0}, @@ -1134,6 +1170,23 @@ keybind.mouse_move.name = Follow Mouse keybind.pan.name = Pan View keybind.boost.name = Boost keybind.command_mode.name = Command Mode +keybind.command_queue.name = Unit Command Queue +keybind.create_control_group.name = Create Control Group +keybind.cancel_orders.name = Cancel Orders +keybind.unit_stance_shoot.name = Unit Stance: Shoot +keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire +keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target +keybind.unit_stance_patrol.name = Unit Stance: Patrol +keybind.unit_stance_ram.name = Unit Stance: Ram +keybind.unit_command_move = 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1197,9 +1250,12 @@ mode.pvp.description = fight against other players locally. mode.attack.name = Attack mode.attack.description = No waves, with the goal to destroy the enemy base. mode.custom = Custom Rules +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = Infinite Resources rules.onlydepositcore = Only Allow Core Depositing +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reactor Explosions rules.coreincinerates = Core Incinerates Overflow rules.disableworldprocessors = Disable World Processors @@ -1717,7 +1773,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 @@ -1835,6 +1890,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. @@ -2034,7 +2090,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. @@ -2070,7 +2125,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. @@ -2187,6 +2241,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\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. @@ -2222,6 +2277,45 @@ lst.getflag = Check if a global flag is set. lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Unit building logic is not allowed here. lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. lenum.shoot = Shoot at a position. @@ -2260,6 +2354,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. @@ -2353,3 +2448,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 e41c34344d..172e78f31e 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -18,14 +18,14 @@ linkopen = Bu Server sana bir link gönderdi. Açmak istediğine emin misin?\n\n linkfail = Link açılamadı!\nURL kopyalandı. screenshot = Ekran görüntüsü {0} konumuna kaydedildi screenshot.invalid = Harita çok büyük, muhtemelen ekran görüntüsü için yeterli bellek yok. -gameover = Kaybettin +gameover = Oyun Bitti gameover.disconnect = Bağlantı Koptu! gameover.pvp = [accent] {0}[] Takımı kazandı! gameover.waiting = [accent]Sonraki Harita Bekleniyor... highscore = [accent]Yeni rekor! copied = Panoya Kopyalandı. indev.notready = Oyunun bu kısmı henüz hazır değil. - +#Ekozet abimize teşekkür edelim. Baya ekleme yaptı buraya. load.sound = Sesler load.map = Haritalar load.image = Resimler @@ -158,9 +158,9 @@ mod.outdatedv7.details = Bu mod, oyunun en son sürümüyle uyumsuz. Modun yapm mod.blacklisted.details = Bu mod, oyunun bu sürümüyle hata verdiğinden veya başka sorunlar ötürü kara listeye alınmıştır. [#ff]KULLANMAYINIZ! mod.missingdependencies.details = Bu Mod, şu ek modları gerektiriyor: {0} mod.erroredcontent.details = Bu mod yüklenirken hata veriyor, yapımcıdan hataları düzeltmesini isteyin. -mod.circulardependencies.details = This mod has dependencies that depends on each other. -mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}. -mod.requiresversion = Requires game version: [red]{0} +mod.circulardependencies.details = Bu modun birbirine bağlı bağlılıkları var. +mod.incompletedependencies.details = Eksik veya yanlış bağlılıklardan dolayı mod yüklenemedi: {0}. +mod.requiresversion = Şu oyun sürümü gerekiyor: [red]{0} mod.errors = İçerik yüklenirken bir hata oluştu. mod.noerrorplay = [scarlet]Hatalı modlarınız var.[] Oynamadan önce bu modları devre dışı bırakın veya dosyadaki hataları düzeltin. mod.nowdisabled = [scarlet]'{0}' modunun çalışması için gerekli olan modlardan bazıları bulunamadı:[accent] {1}\n[lightgray]Önce bu modların indirilmesi gerekmektedir.\nBu mod otomatik olarak devre dışı bırakılacaktır. @@ -254,20 +254,20 @@ viewplayer = Oyuncu İzleniyor: [accent]{0} trace = Oyuncuyu Takip Et trace.playername = Oyuncu İsmi: [accent]{0} trace.ip = IP: [accent]{0} -trace.id = Özel ID: [accent]{0} -trace.language = Language: [accent]{0} +trace.id = Özel Kimlik: [accent]{0} +trace.language = Dil: [accent]{0} trace.mobile = Mobil Sürüm: [accent]{0} trace.modclient = Özel Sürüm: [accent]{0} trace.times.joined = Girme Sayısı: [accent]{0} trace.times.kicked = Atılma Sayısı: [accent]{0} trace.ips = IPs: -trace.names = Names: -invalidid = Geçersiz Sürüm ID'si! Bir hata raporu gönder. -player.ban = Ban -player.kick = Kick -player.trace = Trace -player.admin = Toggle Admin -player.team = Change Team +trace.names = İsimler: +invalidid = Geçersiz Sürüm Kimliği! Bir hata raporu gönder. +player.ban = Yasakla +player.kick = At +player.trace = İzini Sür +player.admin = Admin Aç/Kapa +player.team = Takım Değiştir server.bans = Yasaklılar server.bans.none = Yasaklanmış oyuncu bulunamadı! server.admins = Yöneticiler @@ -284,8 +284,8 @@ confirmkick = Bu kullanıcıyı atmak istediğine emin misin? confirmunban = Bu kullanıcının yasağını kaldırmak istediğine emin misin? confirmadmin = Bu kullanıcıyı bir yönetici yapmak istediğine emin misin? confirmunadmin = Bu kullanıcının yönetici yetkilerini almak istediğine istediğine emin misin? -votekick.reason = Vote-Kick Reason -votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: +votekick.reason = Oylama Sebebi +votekick.reason.message = "{0}[white]" adlı kişiyi oylama ile atmak istediğinize emin misiniz?\nEğer istiyorsanız, lütfen sebebini giriniz: joingame.title = Oyuna Katıl joingame.ip = Adres: disconnect = Bağlantı kesildi. @@ -341,12 +341,23 @@ open = Aç customize = Kuralları Özelleştir cancel = İptal command = Komuta Modu +command.queue = [lightgray][Queuing] command.mine = Kaz command.repair = Tamir Et command.rebuild = Yeniden İnşaa Et command.assist = Oyuncuya Yardım Et command.move = Hareket Et command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Birim Yükle +command.loadBlocks = Blok Yükle +command.unloadPayload = Birim Bırak +stance.stop = Emri İptal Et +stance.shoot = Duruş: Saldırı +stance.holdfire = Duruş: Hazır Ol +stance.pursuetarget = Duruş: Hedefi Takip Et +stance.patrol = Duruş: Devriye Gez +stance.ram = Duruş: Düz\n[lightgray]Düz bir ol halinde ilerle. openlink = Bağlantıyı Aç copylink = Bağlantıyı Kopyala back = Geri @@ -372,7 +383,7 @@ pausebuilding = [accent][[{0}][] İnşaatı durdur resumebuilding = [scarlet][[{0}][] İnşaata devam et enablebuilding = [scarlet][[{0}][] İnşa Etmeyi Başlat showui = Arayüz Kapalı.\nAçmak için [accent][[{0}][] bas. -commandmode.name = [accent]Command Mode +commandmode.name = [accent]Komuta Modu commandmode.nounits = [no units] wave = [accent]Dalga {0} wave.cap = [accent]Dalga {0}/{1} @@ -427,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 @@ -483,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 @@ -494,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 @@ -505,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ç. @@ -591,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: @[]\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: @@ -641,9 +673,11 @@ 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.background = Arkaplan marker.outline = Anahat objective.research = [accent]Araştır:\n[]{0}[lightgray]{1} @@ -669,7 +703,6 @@ resources.max = Maks bannedblocks = Yasaklı Bloklar objectives = Görevler bannedunits = Yasaklı Birimler -rules.hidebannedblocks = Yasaklı Blokları Sakla bannedunits.whitelist = Yasaklı Birimleri Beyazlisteye Ata bannedblocks.whitelist = Yasaklı Binaları Beyazlisteye Ata addall = Hepsini Ekle @@ -696,8 +729,8 @@ weather.snow.name = Kar weather.sandstorm.name = Kum Fırtınası weather.sporestorm.name = Spor Fırtınası weather.fog.name = Sis -campaign.playtime = \uf129 [lightgray]Sector Playtime: {0} -campaign.complete = [accent]Congratulations.\n\nThe enemy on {0} has been defeated.\n[lightgray]The final sector has been conquered. +campaign.playtime = \uf129 [lightgray]Sektörde Oynama Süresi: {0} +campaign.complete = [accent]Tebrikler!.\n\n{0} üzerinde bulunan düşman bozguna uğratılmıştır.\n[lightgray]Son sektör fethedilmiştir. GG! sectorlist = Sektörler sectorlist.attacked = {0} saldırı altında @@ -728,8 +761,7 @@ 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.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}[] @@ -780,10 +812,10 @@ sector.fungalPass.description = Yüksek dağlar ve daha alçak, sporla dolu topr sector.biomassFacility.description = Sporların ana kaynağı. Burası, onların üretim yeri.\nOnların içindeki gücü araştır. Sporları parçala, enerji ve plastik üret..\n\n[lightgray]Bu Fabrika yıkıldığında, sporlar etrafa yayldı. Hiçbir yaşam formu, bu forma üstün gelemedi. sector.windsweptIslands.description = Kıyının hemen yanında, bir adalar topluluğu. Kayıtlar bir zamanlar, [accent]Plastik[]-üreten binalar olduğunu gösteriyor.\n\nDüşman gemilerini batır, bir üs inşa et ve plastik üretmeye başla. sector.extractionOutpost.description = Uzak bir üs, düşman tarafından inşa edildiği düşünülüyor.\n\nSektörler arası aktarım, gelecek için çok önemli bir kademe. Üssü yok et, Fırlatış rampasını aç! -sector.impact0078.description = Burası, eskiden buraya düşmüş bir yıldızlar arası uzay gemisinin kalıntıları.\n\nOlabildiğince çok şeyi araştır. Teknolojiden yaralan. +sector.impact0078.description = Burası, eskiden buraya düşmüş bir yıldızlar arası uzay gemisinin kalıntıları.\n\nOlabildiğince çok şeyi araştır. Teknolojiden yararlan. sector.planetaryTerminal.description = Son aşama.\n\nBu üs, başka gezegenlere gitmeyi sağlayan teknolojiyi barıdırıyor. Aşırı iyi bir şekilde korunuyor.\n\nOlabildiğince hızlı bir şekilde gemi üret ve düşman üssü elegeçir. Gezegenler Arası Hızladırıcıyı aç! -sector.coastline.description = Remnants of naval unit technology have been detected at this location. Repel the enemy attacks, capture this sector, and acquire the technology. -sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. +sector.coastline.description = Bu bölgede denizel birim teknoloji kalıntıları tespit edildi. Düşman saldırılarını püskürt, sektörü ele geçir ve teknolojiyi kurtar. +sector.navalFortress.description = Düşman bu uzak adaya doğal olarak korunan bir üs kurmuş. Bu üssü yok et. Onların gelişmiş savaş gemisi teknolojilerini elde et ve araştır. sector.onset.name = Yeni Başlangıç sector.aegis.name = Siper sector.lake.name = Göletcik @@ -791,12 +823,12 @@ sector.intersect.name = Kesişim sector.atlas.name = Atlas sector.split.name = Ayrılım sector.basin.name = Havza -sector.marsh.name = Marsh +sector.marsh.name = Bataklık sector.peaks.name = Doruk Noktası sector.ravine.name = Kanyon sector.caldera-erekir.name = Kaldera sector.stronghold.name = Sığınak -sector.crevice.name = Crevice +sector.crevice.name = Çatlak sector.siege.name = Kuşatma sector.crossroads.name = Kavşak sector.karst.name = Karst @@ -806,17 +838,17 @@ sector.aegis.description = Düşman Kalkanların arkasına Sığınmış Durumda sector.lake.description = Bu Sektörün Cürüf Gölü, birimleri büyük oranda engelliyor. Bir Hovercraft tek seçeneğin.\n[accent]Gemi Fabrikatörünü[] araştır ve [accent]elude[] birimini olabildiğince kısa sürede üret! sector.intersect.description = Taramalar, bu Sektörün farklı yönlerden salıdırya uğrayacağını belirtiyor.\nHızlı bir şekilde savunma kur.\n[accent]Mech[] birimleri bu Sektör için bir olmazssa olmaz! sector.atlas.description = Bu Sektör, farklı tür saldırılar isteyen dengesiz bir araziden oluşuyor.\nDüşman Üssünü yenebilmek için Geliştirilmiş birimler gerekebilir.\n[accent]Elektolizörü[] ve [accent]Tank Yeniden Yapılandırıcı[] yı araştırmadan bu sektör oldukça zor. -sector.split.description = Bu Sektördeki minimal düşman bulunması, bu Sektörü Uşaım Test etmek için oldukça uygun bir yer yapıyor. -sector.basin.description = Burda çok sayıda düşman tespit edildi.\nHızlıca birim üret ve üssü ele geçir! UwU -sector.marsh.description = This sector has an abundance of arkycite, but has limited vents.\nBuild [accent]Chemical Combustion Chambers[] to generate power. -sector.peaks.description = The mountainous terrain in this sector make most units useless. Flying units will be required.\nBe aware of enemy anti-air installations. It may be possible to disable some of these installations by targeting their supporting buildings. -sector.ravine.description = Bu üsde düşman merkezi tespit edilemedi, ancak düşman için önemli bir geçiş rotası. Değişik türde birimler geçebilir.\n[accent]Akı[] üret. [accent]Afflict[] turretleri inşaa et. +sector.split.description = Bu sektörde az düşman oluşu burayı yeni taşıma teknolojisini test etmek için çok uygun bir yer yapıyor. UwU +sector.basin.description = Bu sektörde çok sayıda düşman tespit edildi.\nHızlıca birim üret ve düşman merkezlerini ele geçir. +sector.marsh.description = Bu sektörde bolca arkisit bulunuyor ancak az sayıda baca deliği var.\n[accent]Kimyasal Yanma Odası[] inşa ederek elektrik üret. +sector.peaks.description = Bu sektördeki dağlık arazi çoğu birimi kullanışsız kılıyor. Uçan birimler gerekecektir.\nDüşman hava savunmalarına dikkat et. Hava savunmaların destekçi binalarını hedef alarak bazılarını devre dışı bırakmak mümkün olabilir. +sector.ravine.description = Burada düşman merkezi tespit edilemedi, ancak düşman için önemli bir geçiş rotası. Değişik türde birimler geçebilir.\n[accent]Akı[] üret. [accent]Afflict[] taretleri inşa et. sector.caldera-erekir.description = Bu haritadaki madenler çok sayıda adaya dağılmış durumda.\nDron taşımcılığını aç ve taşıma sistemi kur. -sector.stronghold.description = Bu sektörde düşmanlar senin [accent]torium[] almanı engellemek için ellerinden geleni yapıyor!\nOnların HAİN planlarını boz ve teknolojini geliştir. +sector.stronghold.description = Bu sektörde düşmanlar senin [accent]toryum[] almanı engellemek için ellerinden geleni yapıyor!\nOnların HAİN planlarını boz ve teknolojini geliştir. sector.crevice.description = Düşman senin üssünü ele geçirmek için çok sayıda birim gönderecek.\n[accent]Karbür[] elde et ve [accent]Piroliz Jeneratörü[]'nü aç. Bu hayatta kalmak için tek şansın olabilir! sector.siege.description = Bu sektör, iki farklı kanyon içeriyor. İki tarafdan aynı anda savunmaya hazır ol.\n[accent]Siyanojen[] üret daha da güçlü tankları aç.\nDikkat: Uzun menzilli füzeler tespit edildi! Füzeler hedefe varmadan havada vurulabilir. -sector.crossroads.description = Bu sektördeki üsler farklı seviyelerde inşa edilmiş. Adapte olmak için başka birimleri araştır.\nEk olarak, bağzı üslerin koruma kalkanları bulunmakta. Nasıl çalıştıklarını bulmaya çalış. -sector.karst.description = Bu sektör kaynak bakımından zengin, ancak yeni bir merkez iniş yaptığı anda düşman üzerimize çökücek.\nKaynakları iyi deyerlendir ve [accent]faz[]'ı aç. +sector.crossroads.description = Bu sektördeki üsler farklı seviyelerde inşa edilmiş. Adapte olmak için başka birimleri araştır.\nEk olarak, bazı üslerin koruma kalkanları bulunmakta. Nasıl çalıştıklarını bulmaya çalış. +sector.karst.description = Bu sektör kaynak bakımından zengin, ancak yeni bir merkez iniş yaptığı anda düşman üzerimize çökecek.\nKaynakları iyi deyerlendir ve [accent]faz[]'ı aç. sector.origin.description = Güçlü düşmanları barındıran son sektör.\nDaha fazla uyumlu araştırma kalmadı - tüm gücünle düşmanı yenmeye çalış! status.burning.name = Yanıyor @@ -902,7 +934,7 @@ stat.repairspeed = Tamir Hızı stat.weapons = Silahlar stat.bullet = Mermi stat.moduletier = Modül Seviyesi -stat.unittype = Unit Type +stat.unittype = Birlik Türü stat.speedincrease = Hız Artışı stat.range = Menzil stat.drilltier = Kazılabilenler @@ -954,12 +986,12 @@ ability.statusfield = Hızlandırma Alanı ability.unitspawn = Birliği Fabrikası ability.shieldregenfield = Kalkan Yenileme Alanı ability.movelightning = Hareket Enerjisi -ability.shieldarc = Arc Kalkan +ability.shieldarc = Ark Kalkanı ability.suppressionfield = Tamir Engelleme Alanı ability.energyfield = Güç Kalkanı -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +ability.energyfield.sametypehealmultiplier = [lightgray]Aynı Türden İyileştirme: [white]{0}% +ability.energyfield.maxtargets = [lightgray]Azami Hedefler: [white]{0} +ability.regen = Yenilenme bar.onlycoredeposit = Sadece Merkeze Aktarım Mümkün bar.drilltierreq = Daha Güçlü Matkap Gerekli @@ -999,11 +1031,12 @@ bullet.splashdamage = [stat]{0} [lightgray]alan hasarı ~[stat] {1} [lightgray]k bullet.incendiary = [stat]yakıcı bullet.homing = [stat]güdümlü bullet.armorpierce = [stat]zırh delici -bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles -bullet.interval = [stat]{0}/sec[lightgray] interval bullets: +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit +bullet.suppression = [stat]{0} sec[lightgray] tamir bastırması ~ [stat]{1}[lightgray] karolar +bullet.interval = [stat]{0}/sec[lightgray] ara mermiler: bullet.frags = [stat]{0}[lightgray]x parçalı mermiler: bullet.lightning = [stat]{0}[lightgray]x elektrik ~ [stat]{1}[lightgray] hasarı -bullet.buildingdamage = [stat]{0}%[lightgray] inşaa hasarı +bullet.buildingdamage = [stat]{0}%[lightgray] inşa hasarı bullet.knockback = [stat]{0} [lightgray]savurma bullet.pierce = [stat]{0}[lightgray]x delme bullet.infinitepierce = [stat]delme @@ -1054,6 +1087,7 @@ setting.backgroundpause.name = Arka Planda Durdur setting.buildautopause.name = İnşa etmeyi otomatik olarak durdur setting.doubletapmine.name = İki Tıklamayla Kaz setting.commandmodehold.name = Komuta Modu için Basılı Tut +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Modları Çökmede Kapa setting.animatedwater.name = Animasyonlu Su setting.animatedshields.name = Animasyonlu Kalkanlar @@ -1074,14 +1108,14 @@ setting.difficulty.normal = Normal setting.difficulty.hard = Zor setting.difficulty.insane = İmkansız setting.difficulty.name = Zorluk: -setting.screenshake.name = Ekranı Sars +setting.screenshake.name = Ekran Sarsılması setting.bloomintensity.name = Parlaklık Şiddeti setting.bloomblur.name = Parlaklık Bulanıklılığı setting.effects.name = Efektleri Görüntüle setting.destroyedblocks.name = Kırılmış Blokları Göster setting.blockstatus.name = Blok Durumunu Göster setting.conveyorpathfinding.name = Konveyör Yol Bulma -setting.sensitivity.name = Kontrolcü Hassasiyeti +setting.sensitivity.name = Kumanda Hassasiyeti setting.saveinterval.name = Kayıt Aralığı setting.seconds = {0} Saniye setting.milliseconds = {0} milisaniye @@ -1100,14 +1134,14 @@ setting.position.name = Oyuncu Noktasını Göster setting.mouseposition.name = Fareyi Göster setting.musicvol.name = Müzik Sesi setting.atmosphere.name = Gezegen Atmosferini Göster -setting.drawlight.name = Draw Darkness/Lighting +setting.drawlight.name = Karanlığı/Aydınlığı Çiz setting.ambientvol.name = Çevresel Ses setting.mutemusic.name = Müziği Kapat setting.sfxvol.name = Oyun Sesi setting.mutesound.name = Sesi Kapat setting.crashreport.name = Anonim Çökme Raporları Gönder setting.savecreate.name = Otomatik Kayıt Oluştur -setting.publichost.name = Halka Açık Sunucular +setting.steampublichost.name = Public Game Visibility setting.playerlimit.name = Oyuncu Limiti setting.chatopacity.name = Mesajlaşma Opaklığı setting.lasersopacity.name = Enerji Lazeri Opaklığı @@ -1117,8 +1151,8 @@ setting.showweather.name = Hava Durmu Grafiklerini Göster setting.hidedisplays.name = İşlemci İpuçlarını Gizle setting.macnotch.name = Arayüzü çentik gösterecek şekilde uyarlayın setting.macnotch.description = Değişikleri uygulamak için yeniden başlatma gerekli -steam.friendsonly = 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 = Arkadaşlara özel +steam.friendsonly.tooltip = Sadece Steam arkadaşlarının katılıp katılabilemeyeceğini belirler.\nBu kutudan tiki kaldırmak oyununuzu herkese açık yapacaktır. public.beta = Oyunun beta sürümlerinin halka açık lobiler yapamayacağını unutmayın. uiscale.reset = Arayüz ölçeği değiştirildi.\nBu ölçeği onaylamak için "Tamam" butonuna basın.\n[accent] {0}[] [scarlet]saniye içinde eski ayarlara geri dönülüp oyundan çıkılıyor…[] uiscale.cancel = İptal Et ve Çık @@ -1127,6 +1161,7 @@ keybind.title = Tuşları Yeniden Ata keybinds.mobile = [scarlet]Buradaki çoğu tuş ataması mobilde geçerli değildir. Sadece temel hareket desteklenmektedir. category.general.name = Genel category.view.name = Görünüm +category.command.name = Unit Command category.multiplayer.name = Çok Oyunculu category.blocks.name = Blok Seçimi placement.blockselectkeys = \n[lightgray]Tuş: [{0}, @@ -1144,10 +1179,27 @@ keybind.mouse_move.name = Fareyi Takip Et keybind.pan.name = Yatay Kaydırma Görünümü keybind.boost.name = Yükselt keybind.command_mode.name = Komuta Modu +keybind.command_queue.name = 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.rebuild_select.name = Alanı Geri İşaa Et keybind.schematic_select.name = Bölge Seç keybind.schematic_menu.name = Şema Menüsü -keybind.schematic_flip_x.name = Şemayı X ekseninde Döndür +keybind.schematic_flip_x.name = Şemayı X Ekseninde Döndür keybind.schematic_flip_y.name = Şemayı Y Ekseninde Döndür keybind.category_prev.name = Önceki Kategori keybind.category_next.name = Sonraki Kategori @@ -1207,9 +1259,12 @@ mode.pvp.description = Yerel olarak başkaları ile savaş.\n[gray]Oynamak için mode.attack.name = Saldırı mode.attack.description = Düşman üssünü yok et. Dalga yok.\n[gray]Oynamak için haritada düşman merkez olması gerekir. mode.custom = Özel Kurallar +rules.invaliddata = Hatalı pano verisi. +rules.hidebannedblocks = Yasaklı Blokları Sakla rules.infiniteresources = Sınırsız Kaynaklar rules.onlydepositcore = Sadece Merkeze Aktarmaya İzin Ver +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Reaktör Patlamaları rules.coreincinerates = Merkez Taşanları Eritir rules.disableworldprocessors = Evrensel İşlemcileri Devredışı Bırak @@ -1218,12 +1273,12 @@ rules.wavetimer = Dalga Zamanlayıcısı rules.wavesending = Dalga Gönderiliyor rules.waves = Dalgalar rules.attack = Saldırı Modu -rules.buildai = Base Builder AI -rules.buildaitier = Builder AI Tier -rules.rtsai = RTS AI -rules.rtsminsquadsize = Min Gurup Boyutu -rules.rtsmaxsquadsize = Maks Gurup Boyutu -rules.rtsminattackweight = Min Saldırı Boyutu +rules.buildai = Üs inşa edici YZ +rules.buildaitier = İnşaatçı YZ sınıfı +rules.rtsai = RTS YZ +rules.rtsminsquadsize = Asgari Gurup Boyutu +rules.rtsmaxsquadsize = Azami Gurup Boyutu +rules.rtsminattackweight = Asgari Saldırı Boyutu rules.cleanupdeadteams = Kaybeden Takımın Bloklarını Temizle (PvP) rules.corecapture = Yıkımda Çekirdeği Elegeçir rules.polygoncoreprotection = Çokgenli Merkez Koruması @@ -1235,7 +1290,7 @@ rules.unitbuildspeedmultiplier = Birim Üretim Hız Çarpanı rules.unitcostmultiplier = Birim Fiyat Çarpanı rules.unithealthmultiplier = Birim Can Çarpanı rules.unitdamagemultiplier = Birim Hasar Çapanı -rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier +rules.unitcrashdamagemultiplier = Birim Çakılma Hasar Çarpanı rules.solarmultiplier = Güneş Paneli Üretim Çarpanı rules.unitcapvariable = Merkezler Birim Sınırını Etkiler rules.unitcap = Sabit Birim Sınırı @@ -1247,7 +1302,7 @@ rules.buildcostmultiplier = İnşa Ücreti Çarpanı rules.buildspeedmultiplier = İnşa Hızı Çarpanı rules.deconstructrefundmultiplier = Yıkım İade Çarpanı rules.waitForWaveToEnd = Dalgalar Düşmanı Bekler -rules.wavelimit = Map Ends After Wave +rules.wavelimit = Harita .. Dalgadan Sonra Biter rules.dropzoneradius = İniş Noktası Yarıçapı: [lightgray](kare) rules.unitammo = Birlikler Mermi Gerektirir rules.enemyteam = Düşman Takım @@ -1293,7 +1348,7 @@ item.surge-alloy.name = Akı Alaşımı item.spore-pod.name = Spor Kapsülü item.sand.name = Kum item.blast-compound.name = Patlayıcı Bileşik -item.pyratite.name = Pirratit +item.pyratite.name = Piratit item.metaglass.name = Metacam item.scrap.name = Hurda item.fissile-matter.name = Bölünebilir Madde @@ -1301,14 +1356,14 @@ item.beryllium.name = Berilyum item.tungsten.name = Tungsten item.oxide.name = Oksit item.carbide.name = Karbür -item.dormant-cyst.name = Dormant Kist +item.dormant-cyst.name = Etkin Olmayan Kist liquid.water.name = Su liquid.slag.name = Cüruf liquid.oil.name = Petrol liquid.cryofluid.name = Kriyosıvı liquid.neoplasm.name = Neoplazm -liquid.arkycite.name = Arkkit +liquid.arkycite.name = Arkisit liquid.gallium.name = Galyum liquid.ozone.name = Ozon liquid.hydrogen.name = Hidrojen @@ -1428,10 +1483,10 @@ block.crater-stone.name = Krater block.sand-water.name = Kumlu Su block.darksand-water.name = Kara Kumlu Su block.char.name = Kömür -block.dacite.name = Dakit +block.dacite.name = Daist block.rhyolite.name = Riyolit -block.dacite-wall.name = Dakit Duvar -block.dacite-boulder.name = Dakit Kaya Parçaları +block.dacite-wall.name = Daist Duvar +block.dacite-boulder.name = Daist Kaya Parçaları block.ice-snow.name = Buzlu Kar block.stone-wall.name = Taş Duvar block.ice-wall.name = Buz Duvar @@ -1534,7 +1589,7 @@ block.ripple.name = Ripple block.phase-conveyor.name = Faz Konveyörü block.bridge-conveyor.name = Konveyör Köprüsü block.plastanium-compressor.name = Plastanyum Kompresörü -block.pyratite-mixer.name = Pirratit Mikseri +block.pyratite-mixer.name = Piratit Mikseri block.blast-mixer.name = Patlayıcı Bileşik Mikseri block.solar-panel.name = Güneş Paneli block.solar-panel-large.name = Büyük Güneş Paneli @@ -1594,11 +1649,11 @@ block.overdrive-dome.name = Hızlandırma Kubbesi block.interplanetary-accelerator.name = Gezegenler Arası Hızlandırıcı #Düzgün tutun bu TR translatei uğraştırıyonuz beni. -RTOmega block.constructor.name = İnşaatçı -block.constructor.description = 2x2 ve daha küçük blokları inşaa edebilir. +block.constructor.description = 2x2 ve daha küçük blokları inşa edebilir. block.large-constructor.name = Büyük İnşaatçı -block.large-constructor.description = 4x4 ve daha küçük blokları inşaa edebilir. +block.large-constructor.description = 4x4 ve daha küçük blokları inşa edebilir. block.deconstructor.name = Yıkıcı -block.deconstructor.description = Blok ve Birimleri yokeder, 100% iade sağlar. +block.deconstructor.description = Blok ve Birimleri yok eder, 100% iade sağlar. block.payload-loader.name = Kargo Yükleyici block.payload-loader.description = Sıvı ve malzemeleri bloklara yükler. block.payload-unloader.name = Kargo Boşaltıcı @@ -1618,8 +1673,8 @@ block.crystalline-stone.name = Kristal Taş block.crystal-floor.name = Kristal Zemin block.yellow-stone-plates.name = Sarı Taş Zemin block.red-stone.name = Kızıl Taş -block.dense-red-stone.name = Yoğun Kızık Kaya -block.red-ice.name = Kızık Buz +block.dense-red-stone.name = Yoğun Kızıl Kaya +block.red-ice.name = Kızıl Buz block.arkycite-floor.name = Arkisit Zemin block.arkyic-stone.name = Arkisit Taş block.rhyolite-vent.name = Riyolit Baca @@ -1730,7 +1785,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ı @@ -1794,8 +1848,8 @@ hint.unitSelectControl.mobile = Birim kontrol etmek için [accent]komuta moduna[ hint.launch = Yeterince kaynak topladıktan sonra, üssünüzü başka bir sektöre [accent]fırlatmak[] için sağ alttaki \ue827 [accent]harita[] tuşuna basın. hint.launch.mobile = Yeterince kaynak topladıktan sonra, üssünüzü başka bir sektöre [accent]fırlatmak[] için sağ alttaki \ue88c [accent]menüden[] \ue827 [accent]harita[] tuşuna basın. hint.schematicSelect = İstediğiniz blokları kopyalayıp yapıştırmak için [accent][[F][] tuşunu basılı tutun ve farenizi sürükleyin.\n\n[accent][[Orta Tuş'a (Fare Tekerleği'ne)][] basarak tek bir blok seçebilirsiniz. -hint.rebuildSelect = [accent][[B][] ye basılı tutarak, yok edilmiş blokları seç.\nBu binaları yeniden inşaa etmeni sağlar. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect = [accent][[B][] ye basılı tutarak, yok edilmiş blokları seç.\nBu binaları yeniden inşa etmeni sağlar. +hint.rebuildSelect.mobile = \ue874 kopya tuşunu seç, sonra \ue80f yeniden inşa tuşuna bas ve yok olmuş blok planlarını seçmek için sürükle.\nBu onları otomatik olarak tekrardan inşa edecektir. hint.conveyorPathfind = Konveyörler ile yol yaparken bir noktadan diğer noktaya otomatik yol oluşturmak için [accent][[Sol CTRL][] tuşunu basılı tutun. hint.conveyorPathfind.mobile = Konveyörler ile yol yaparken bir noktadan diğer noktaya otomatik yol oluşturmak için \ue844 [accent]Çapraz Mod'u[] etkinleştirin. hint.boost = Bazı yer birimleri duvarların, taretlerin, diğer birimlerin üstünden uçma özelliği vardır. [accent][[Sol Shift][] tuşunu basılı tutarak bazı yer üniteleri ile uçabilirsiniz. @@ -1815,54 +1869,55 @@ hint.factoryControl.mobile = Bir Birim Fabrikasının [accent]üretim noktasın gz.mine = \uf8c4 [accent]Bakır madeni[]nin yanına giderek üzerine tıklayarak kazmaya başla. gz.mine.mobile = \uf8c4 [accent]Bakır madeni[]nin yanına giderek üzerine tıklayarak kazmaya başla. gz.research = \ue875 Teknoloji Ağacını aç.\n\uf870 [accent]Mekanik Matkap[]'ı aç, ardından sağ alttaki menüden seç.\nBakır madenine tıklayarak üzerine matkapı yerleştir. -gz.research.mobile = \ue875 Teknoloji Ağacını aç.\n\uf870 [accent]Mekanik Matkap[]'ı aç, ardından sağ alttaki menüden seç.\nBakır madenine tıklayarak üzerine matkapı yerleştir.\n\nArdından \ue800 [accent]tik[] tuşuna basarak inşaayı onayla. +gz.research.mobile = \ue875 Teknoloji Ağacını aç.\n\uf870 [accent]Mekanik Matkap[]'ı aç, ardından sağ alttaki menüden seç.\nBakır madenine tıklayarak üzerine matkapı yerleştir.\n\nArdından \ue800 [accent]tik[] tuşuna basarak inşayı onayla. gz.conveyors = \uf896 [accent]Konveyör[]'ü aç ve yerleştirerek madenleri merkeze taşı.\n\nBasılı tutup sürükleyerek birden fazla konveyör koy.\n[accent]Scroll[] ile döndür. gz.conveyors.mobile = \uf896 [accent]Konveyör[]'ü aç ve yerleştirerek madenleri merkeze taşı.\n\nBasılı tutup sürükleyerek birden fazla konveyör koy. gz.drills = Operasyonunu genişlet.\nDaha fazla Mekanik Matkap yerleştir.\n100 Bakır kaz. gz.lead = \uf837 [accent]Kurşun[], kullanılan basit madenlerden biridir.\nKurşun kazmak için matkap kullan. gz.moveup = \ue804 Daha fazla talimat için yukarı ilerle. -gz.turrets = 2 adet\uf861 [accent]Duo[] turreti araştır ve koy.\nDuo turreti bakır\uf838 [accent]mermi[]ye ihtiyaç duyar. +gz.turrets = 2 adet\uf861 [accent]Duo[] tareti araştır ve koy.\nDuo tareti bakır\uf838 [accent]mermi[]ye ihtiyaç duyar. gz.duoammo = Duo'ya konveyörler ile [accent]bakır[] besle. -gz.walls = [accent]Duvarlar[] gelen hasarı engelleyebilir.\nSilahların etrafına, koruma amçlı\uf8ae [accent]Bakır Duvar[] inşaa et. +gz.walls = [accent]Duvarlar[] gelen hasarı engelleyebilir.\nSilahların etrafına, koruma amçlı\uf8ae [accent]Bakır Duvar[] inşa et. gz.defend = DÜŞMAN GELİYO!!! Hazırlan. -gz.aa = Uçan birimler standart turretlerle kolay kolay durdurulamaz..\n\uf860 Onları daha kolay durdurmak için, [accent]Scatter[] turreti kullan, ancak mermi olarak\uf837 [accent]kurşun[] gerektirir. -gz.scatterammo = Scatter turretini [accent]kurşun[] ile besle. -gz.supplyturret = [accent]Turreti Besle +gz.aa = Uçan birimler standart taretlerle kolay kolay durdurulamaz..\n\uf860 Onları daha kolay durdurmak için, [accent]Scatter[] tareti kullan, ancak mermi olarak\uf837 [accent]kurşun[] gerektirir. +gz.scatterammo = Scatter taretini [accent]kurşun[] ile besle. +gz.supplyturret = [accent]Tareti Besle gz.zone1 = Burası düşman iniş noktası. -gz.zone2 = Buraya inşaa edilien her şey otomatik yok edilir! +gz.zone2 = Buraya inşa edilien her şey otomatik yok edilir! gz.zone3 = Dalga başlamak üzere.\nHazır ol. Dikkat! ... Korkma sönmez bu şafak- -gz.finish = Daha fazla turret inşaa et, daha fazla maden kaz\nve tüm dalgaları yenerek [accent]sektörü feth et[]. Bol şans, RTOmega. +gz.finish = Daha fazla taret inşa et, daha fazla maden kaz\nve tüm dalgaları yenerek [accent]sektörü feth et[]. Bol şans, RTOmega. onset.mine = Tıklayarak, duvarlardan\uf748 [accent]berillyum[] kaz.\n\n[accent][[WASD] ile hareket et. onset.mine.mobile = Tıklayarak, duvarlardan\uf748 [accent]berillyum[] kaz. onset.research = \ue875 Teknoloji Ağacını aç.\n\uf73e [accent]Türbin Sıkıştırıcı[]'sını aç ve bir bacanın üstüne yerleştir.\nBu [accent]enerji[] üretecktir. onset.bore = \uf741[accent]Plazma Kayalık Kazıcı[]'yı araştır ve koy.\nBu durvarlardan otomatik kum kazacak. -onset.power = Plazma kazıcıya [accent]enerji[] vermek için\uf73d [accent]Işın Noktası[]'nı araştır ve inşaa et.\nTürbin Sıkıştırıcısı'nı Plazma Kazıcıya bağla. +onset.power = Plazma kazıcıya [accent]enerji[] vermek için\uf73d [accent]Işın Noktası[]'nı araştır ve inşa et.\nTürbin Sıkıştırıcısı'nı Plazma Kazıcıya bağla. onset.ducts = \uf799[accent]Tüp[]'ü aç ve konveyör gibi kullanarak madenleri merkeze taşı.\nTıklayığ basılı tutarak birden fazla tüp koy.\n[accent]Scroll[] ile döndür. onset.ducts.mobile = \uf799[accent]Tüp[]'ü aç ve konveyör gibi kullanarak madenleri merkeze taşı.\nTıklayığ basılı tutarak birden fazla tüp koy. -onset.moremine = Kazı operasyonunu genişlet.\nDaha fazla Plazma Kayalık Kazıcı inşaa et.\n200 Berilyum kaz. -onset.graphite = Daha gelişmiş bloklar\uf835 [accent]grafit[] gerektirir.\nGafit kazmak için Plazma Kayalık Kazıcıları inşaa et. +onset.moremine = Kazı operasyonunu genişlet.\nDaha fazla Plazma Kayalık Kazıcı inşa et.\n200 Berilyum kaz. +onset.graphite = Daha gelişmiş bloklar\uf835 [accent]grafit[] gerektirir.\nGafit kazmak için Plazma Kayalık Kazıcıları inşa et. onset.research2 = [accent]Fabrikaları[] araştırmaya başla.\n\uf74d[accent]Kayalık Delici[] ve\uf779 [accent]Ark Silikon Fırını[]'nı araştır. onset.arcfurnace = Ark Fırın,\uf834 [accent]kum[] ve \uf835 [accent]grafit[]'ten \uf82f [accent]silikon[] üret.\nBu işlem [accent]Enerji[] de gerektirir. onset.crusher = \uf74d [accent]Kayalık Delici[] kullanarak kum kaz. -onset.fabricator = [accent]Birim[] kullanarak haritayı gez, binalarını koru ve düşmanları alt et. \uf6a2 [accent]Tank İnşaatcı[]'sını araştır ve inşaa et. +onset.fabricator = [accent]Birim[] kullanarak haritayı gez, binalarını koru ve düşmanları alt et. \uf6a2 [accent]Tank İnşaatcı[]'sını araştır ve inşa et. onset.makeunit = Bir Birim üret.\n"?" tuşunu kullanarak gereksinimleri görebilirsin. -onset.turrets = Birimler etkili, ancak [accent]turretler[] daha iyi bir savunma sağlar.\n\uf6eb [accent]Breach[] turretini inşaa et.\nTurretler\uf748 [accent]mermi[]ye ihtiyaç duyar. -onset.turretammo = Turreti [accent]berilyum mermi[] ile besle. -onset.walls = [accent]Duvarlar[] gelen hasarı engelleyebilir.\nSilahların etrafına, koruma amçlı\uf8ae [accent]Berilyum Duvar[] inşaa et. +onset.turrets = Birimler etkili, ancak [accent]taretler[] daha iyi bir savunma sağlar.\n\uf6eb [accent]Breach[] taretini inşa et.\nTaretler\uf748 [accent]mermi[]ye ihtiyaç duyar. +onset.turretammo = Tareti [accent]berilyum mermi[] ile besle. +onset.walls = [accent]Duvarlar[] gelen hasarı engelleyebilir.\nSilahların etrafına, koruma amçlı\uf8ae [accent]Berilyum Duvar[] inşa et. onset.enemies = DÜŞMAN GELİYO!!! Hazırlan. +onset.defenses = [accent]Set up defenses:[lightgray] {0} onset.attack = Düşman zayıf! Hemen geri dal! -onset.cores = [accent]Merkez Zemin[]lerinin üzerine yeni merkezler inşaa edilebilir.\nTüm merkezler birbirleri ile malzemeleri paylaşır.\n\uf725 Bir çekirdek inşaa et. +onset.cores = [accent]Merkez Zemin[]lerinin üzerine yeni merkezler inşa edilebilir.\nTüm merkezler birbirleri ile malzemeleri paylaşır.\n\uf725 Bir merkez inşa et. onset.detect = Düşman seni 2 dakika içinde tespit edicek.\nSavunma, maden ve üretime başla. onset.commandmode = [accent]Shift[] e basılı tutarak [accent]Komuta Modu[]na geç.\n[accent]Sol Tıklayıp sürekleyerek[] birim seç.\n[accent]Sağ Tıklayarak[] Birimleri Yönlendir veya saldırt. onset.commandmode.mobile = [accent]Komuta Düğmesine[] basarak [accent]Komuta Moduna[] gir.\nBir Parmağını basılı tut ve değirini [accent]sürükle[]yerek birim seç.\n[accent]Tıkla[]yarak birimleri saldırttırabilir veya yönlendirebilirsin. -aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. +aegis.tungsten = Tungsten [accent]darbeli matkap[] kullanılarak kazılabilir.\nBu bina [accent]su[] ve [accent]elektrik[] ister. split.pickup = Bazı bloklar merkez birimi ile taşınabilir.\nBu [accent]Konteyner[]i kaldır ve [accent]Küyle Yükleyici[]ye koy.\n([ ve ] tuşlarını kullan) split.pickup.mobile = Bazı bloklar merkez birimi ile taşınabilir.\nBu [accent]Konteyner[]i kaldır ve [accent]Küyle Yükleyici[]ye koy.\n(Uzun basarak bir şeyi taşı.) split.acquire = Birim üretmek için Tungsten kaz. -split.build = Birimler duvarın öbür tarafına taşınmalı.\nİki adet [accent]Kargo Kütle Sürücü[] inşaa et, duvarın iki farklı tarafında.\nBir tanesine tıklayarak birbirlerine bağla. -split.container = Konteynerler gibi, birimler de [accent]Kargo Kütle Sürücü[] ile taşınabilir.\nKütle Sürücün yanına bir Birim İnşaatcı inşaa et ve birim üreterek düşman üsse saldır. +split.build = Birimler duvarın öbür tarafına taşınmalı.\nİki adet [accent]Kargo Kütle Sürücü[] inşa et, duvarın iki farklı tarafında.\nBir tanesine tıklayarak birbirlerine bağla. +split.container = Konteynerler gibi, birimler de [accent]Kargo Kütle Sürücü[] ile taşınabilir.\nKütle Sürücün yanına bir Birim İnşaatcı inşa et ve birim üreterek düşman üsse saldır. #Yukarıdaki bağzı cümleler Anti Dragon tarafından çevirildi. -item.copper.description = En basit materyal. Her türlü blokda kullanılır. +item.copper.description = En basit materyal. Her türlü blokta kullanılır. item.copper.details = Bakır. En basit materyal. Tüm alt düzey binalarda gerekir. Zayıf ve dayanıksızdır. item.lead.description = Basit bir materyal. Elektronikte ve sıvı taşımada kullanılır. item.lead.details = Yoğun. Durağan. Pillerde yaygın olarak kullanılır.\nNot: Yaşam formlarına toksik. Tabi burda onlardan pek yok... @@ -1893,7 +1948,7 @@ liquid.slag.description = Çeşitli tipte erimiş metallerin birbirine karışı liquid.oil.description = İleri seviye malzeme üretiminde kullanılan bir sıvıdır. Yakıt olarak kömür haline getirilebilir veya püskürtülüp ateşe verilerek bir silah olarak kullanılabilir. liquid.cryofluid.description = Su ve titanyumdan oluşturulan inaktif bir sıvı. Son derece yüksek ısı kapasitesine sahiptir. Soğutucu olarak yaygın olarak kullanılır. liquid.arkycite.description = Sentez ve Kimyasal Reaksiyonlarda kullanılır. -liquid.ozone.description = Oksidasyonda, üretimde ve enerji üretiminde kullanılır. Patlayıcı. +liquid.ozone.description = Oksitlemede, üretimde ve enerji üretiminde kullanılır. Patlayıcı. liquid.hydrogen.description = Maden çıkarmada, birim üretiminde ve taşımada kullanılır. Yanıcı. liquid.cyanogen.description = Mermi olarak, gelişmiş bina ve birimlerde kullanılır. Yüksek derecede Yanıcı. liquid.nitrogen.description = Gaz çıkarmada ve üretimde kullanılır. Durağan. @@ -1914,8 +1969,8 @@ block.plastanium-compressor.description = Petrol ve titanyumdan plastanyum üret block.phase-weaver.description = Kum ve radyoaktif toryumdan faz örgüsü üretir. Çalışması için çok miktarda enerji gerekir. block.surge-smelter.description = Akı alaşımı üretmek için titanyum, kurşun, silikon ve bakırı birleştirir. block.cryofluid-mixer.description = Su ve titanyum tozunu karıştırıp kriyosıvı üretir. Toryum reaktörü kullanımı için gereklidir. -block.blast-mixer.description = Patlayıcı bileşen üretmek için spor kapsüllerini pirratit ile ezer ve karıştırır. -block.pyratite-mixer.description = Kömür, kurşun ve kumu karıştırıp oldukça yanıcı olan pirratit üretir. +block.blast-mixer.description = Patlayıcı bileşen üretmek için spor kapsüllerini Piratit ile ezer ve karıştırır. +block.pyratite-mixer.description = Kömür, kurşun ve kumu karıştırıp oldukça yanıcı olan Piratit üretir. block.melter.description = Wave taretlerinde kullanılması veya daha çok işlemesi için hurdayı eritip cürufa çevirir. block.separator.description = Cürufu mineral bileşenlerine ayırır. Soğutulmuş bileşenleri çıkarır. block.spore-press.description = Yağ çıkartmak için aşırı basınç altında spor kapsüllerini sıkıştırır. @@ -1984,7 +2039,7 @@ block.battery-large.description = Sıradan bataryadan çok daha fazla enerji dep block.combustion-generator.description = Kömür gibi yanıcı materyalleri yakarak enerji üretir. block.thermal-generator.description = Sıcak bölgelere konulduğunda enerji üretir. block.steam-generator.description = Daha gelişmiş bir termik jeneratör. Daha verimlidir, ama buhar üretebilmek için suya ihtiyaç duyar. -block.differential-generator.description = Çok miktarda enerji üretir. Kriyosıvı ve yanan pirratit arasındaki sıcaklık farkından yararlanır. +block.differential-generator.description = Çok miktarda enerji üretir. Kriyosıvı ve yanan Piratit arasındaki sıcaklık farkından yararlanır. block.rtg-generator.description = Basit, güvenilir bir reaktör. Bozunan radyoaktif materyallerin ısısını kullanır. block.solar-panel.description = Güneşten küçük miktarda enerji üretir. block.solar-panel-large.description = Standart güneş panelinin daha verimli bir versiyonu. @@ -2028,7 +2083,7 @@ block.repair-point.description = Kendisine en yakın hasarlı birimi tamir eder. block.segment.description = Gelen mermilere zarar verir ve onları yok eder. Lazer mermilere etki etmez. block.parallax.description = Çekici bir ışın fırlatarak hava düşmanlarını kendine çeker. Onlara az da olsa zarar verir. block.tsunami.description = Düşmanlara yüksek miktarda sıvı püskürtür. Ateşleri otomatik söndürür. -block.silicon-crucible.description = Kum ve Kömürü, Pirratitle eriterek Silikon üretir. Sıcak ortamda daha iyi çalışır. +block.silicon-crucible.description = Kum ve Kömürü, Piratitle eriterek Silikon üretir. Sıcak ortamda daha iyi çalışır. block.disassembler.description = Cürüfü aşırı sıcak ortamda seritir. Toryum elde edebilir. block.overdrive-dome.description = Yakındaki binaları hızlandırır. Çalışmak için silikon ve faz gerektirir. block.payload-conveyor.description = Büyük yükleri hareket ettirir. Birimler gibi. @@ -2050,7 +2105,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. @@ -2060,7 +2114,7 @@ block.sublimate.description = Devamlı alev püskürtür. Zırh deler. block.titan.description = Yer birimlerine devasa füzelerle ateş eder. Hidrojen gerektirir. block.afflict.description = Devasa enerji küreleri fırlatır. Isı gerektirir. block.disperse.description = Parçacıklı hava mermileri ateşler. -block.lustre.description = Fires a slow-moving single-target laser at enemy targets. +block.lustre.description = Düşmanlara yavaş hareket eden ve tek bir birimi hedef alabilen lazer ateşler. block.scathe.description = Uzak yer birimerline çok uzun bir mesafeden füzelerle saldırır. block.smite.description = Delici enerji saçıcı mermiler fırlatır. block.malign.description = Takipçi lazerlerle saldırır. Yüksek mikatrda ısı ister. @@ -2086,7 +2140,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ü. @@ -2111,7 +2164,7 @@ block.underflow-duct.description = Malzemeleri sadece yanlar kapalıysa öne akt block.reinforced-liquid-junction.description = Kesişen iki boru arasında bir kavşak. block.surge-conveyor.description = Malzemeleri toplu taşır. Enerji ile hızlandırılabilir. block.surge-router.description = Malzemeleri üç yöne eşit paylaştırır. Enerji ile hızlandırılabilir. -block.unit-cargo-loader.description = Kargo Dronları üretir. Kargo Dronları otomatik malzemeleri nokatalar arası taşır. +block.unit-cargo-loader.description = Kargo Dronları üretir. Kargo Dronları otomatik malzemeleri noktalar arası taşır. block.unit-cargo-unload-point.description = Kargo Dronları için malzeme bırakma noktası. block.beam-node.description = X ve Y kordinatında enerji aktarır. Az da olsa enerji depolar. block.beam-tower.description = X ve Y kordinatında enerji aktarır. Enerji depolar. Uzun Mesafeli. @@ -2122,8 +2175,8 @@ block.flux-reactor.description = Isıtıldığında bol mikatrda enerji üretir. block.neoplasia-reactor.description = Arkisit, su ve faz ile bol miktarda enerji üretir. Isı ve tehlikeli Neoplazma ortaya çıkarır.\nNeoplazma yok edilmezse patlar! block.build-tower.description = Otomatik kırılan binaları geri işaa eder. Oyuncuya işaatta yardımcı olur. block.regen-projector.description = Hidrojen kullanarak etrafındaki blokları tamir eder. -block.reinforced-container.description = Az da olsa malzeme depolar. Çekirdekle birleşemez. -block.reinforced-vault.description = Malzeme depolar. Çekirdekle birleşemez. +block.reinforced-container.description = Az da olsa malzeme depolar. Merkezle birleşemez. +block.reinforced-vault.description = Malzeme depolar. Merkezle birleşemez. block.tank-fabricator.description = Stell birimleri üretir. Üretilen birimler direk kullanılabilir veya geliştirilebilir. block.ship-fabricator.description = Elude birimleri üretir. Üretilen birimler direk kullanılabilir veya geliştirilebilir. block.mech-fabricator.description = Merui birimleri üretir. Üretilen birimler direk kullanılabilir veya geliştirilebilir. @@ -2143,12 +2196,12 @@ block.large-payload-mass-driver.description = Long-range payload transport struc block.unit-repair-tower.description = Etrafındaki tüm birimleri tamir eder. Ozon gerektirir. block.radar.description = Haritayı tarar. Enerji gerektirir. block.shockwave-tower.description = Düşman mermilerinini parçalar. Siyanojen gerektirir. -block.canvas.description = Displays a simple image with a pre-defined palette. Editable. +block.canvas.description = Önceden tanımlanmış paletle basit bir fotoğraf sergiler. Düzenlenebilir. #burdan sonraki ve önceki her şeyi benim translate etmem gerekti!!! -RTOmega unit.dagger.description = Düşmanlara basit mermilerle ateş eder. -unit.mace.description = Düşmanlara alev atar. -unit.fortress.description = Yer Düşmanlarına uzun menzil gülleler fırlatır. -unit.scepter.description = Düşmanlara süper yüklü mermiler fırlatır. +unit.mace.description = Düşmanlara alev püskürtür. +unit.fortress.description = Düşmanlara uzun menzilli gülleler fırlatır. +unit.scepter.description = Düşmanlara akı yüklü mermiler fırlatır. unit.reign.description = Düşmanlara devasa delici mermilerle ateş eder. unit.nova.description = Minik lazerler atar ve binaları tamir eder. Uçabilir. unit.pulsar.description = Minik elektroşoklar atar ve binaları tamir eder. Uçabilir. @@ -2156,9 +2209,9 @@ unit.quasar.description = Delici lazerlerle ateş eder ve binaları tamir eder. unit.vela.description = Uzun süreli büyük bir lazer ateş eder ve binaları tamir eder. Uçabilir. unit.corvus.description = Çok Yüksek Menzilli devasa bir lazer atar. Her şeyi deler. Binaların üstünden yürüyebilir. unit.crawler.description = Düşmana doğru koşar ve kendini imha eder. -unit.atrax.description = Cürüf topları fırlator. Binaların üstünden yürüyebilir. +unit.atrax.description = Cürüf topları fırlatır. Binaların üstünden yürüyebilir. unit.spiroct.description = Emici lazerler ateş eder, kendini onarır. Binaların üstünden yürüyebilir. -unit.arkyid.description = Emci ilazerler ateş eder ve devasa bir gülle fırlatır. Binaların üstünden yürüyebilir. +unit.arkyid.description = Emici ilazerler ateş eder ve devasa bir gülle fırlatır. Binaların üstünden yürüyebilir. unit.toxopid.description = Devasa bir enerji topu fırlatır. Binaların üstünden yürüyebilir. unit.flare.description = Yakındakilere basit mermi atar. unit.horizon.description = Yakındaki yer düşmanlarına bombarduman yapar. @@ -2166,7 +2219,7 @@ unit.zenith.description = Swarmer-gibi füzeler fırlatır. unit.antumbra.description = Büyük boyutta mermiler fırlatır. unit.eclipse.description = Büyük mermiler fırlatır ve lazer atar. unit.mono.description = Otomatik bir şekilde Bakır ve Kurşun kazar ve çekirdeğe getirir. -unit.poly.description = Otomatik bir şekilde kırılmış binaları geri inşa eder ve oyuncuya inşaatta yardımcı olur. +unit.poly.description = Otomatik bir şekilde kırılmış binaları geri inşa eder ve oyuncuya inşatta yardımcı olur. unit.mega.description = Otomayik bir şekilde hasarlı bolkları onarır. Blokları ve Birimleri taşıyabilir. unit.quad.description = Büyük bombalar atar, hasarlı blokları onarır ve düşmanlara zarar verir. Bolkları ve Birimleri taşıyabilir. unit.oct.description = Yakındaki birimleri korur ve tamir eder. Blokları ve Birimleri taşıyabilir. @@ -2182,7 +2235,7 @@ unit.retusa.description = Sensörlü mayın döşer. Yakındakileri tamir eder. unit.oxynoe.description = Tamir edici ateş fırlatır. Düşman mermilerini havada vurur. unit.cyerce.description = Takipçi toplu füze atar. Yakındakileri tamir eder. unit.aegires.description = Enerji alanına giren düşmanları şoklar. Yakındakileri tamir eder. -unit.navanax.description = Devasa patlayıcı EMP gülleleri fırlatır, düşman elektir sistemlerini yok eder ve müttefiklerini tamir eder. Yaklaşan düşmanları 4 mini oto-laser turreti ile eritir. +unit.navanax.description = Devasa patlayıcı EMP gülleleri fırlatır, düşman elektir sistemlerini yok eder ve müttefiklerini tamir eder. Yaklaşan düşmanları 4 mini oto-laser tareti ile eritir. unit.stell.description = Hedef Düşmanlara standart mermilerle saldırır. unit.locus.description = Hedef Düşmanlara değişken mermilerle saldırır. unit.precept.description = Hedef Düşmanlara Delici Toplu Mermilerle saldırır. @@ -2198,13 +2251,14 @@ unit.avert.description = Düşman Birimlere Dönen Mermilerle ile saldırır. unit.obviate.description = Düşman Birimlere Dönen Işın Topları ile saldırır. unit.quell.description = Düşman Birimlere Uzun-Mesafe Takipçi Füzelerle saldırır. Düşman Tamir Bloklarını Bloklar. unit.disrupt.description = Düşman Birimlere Uzun-Mesafe Takipçi Bloke-edici Füzelerle saldırır. Düşman Tamir Bloklarını Bloklar. -unit.evoke.description = Sur Merkezini korumak için binalar inşaa eder. Binaları Işınıyla Tamir Eder. -unit.incite.description = Kule Merkezini korumak için binalar inşaa eder. Binaları Işınıyla Tamir Eder. -unit.emanate.description = Akropolis Merkezini korumak için binalar inşaa eder. Binaları Işınıyla Tamir Eder. - +unit.evoke.description = Sur Merkezini korumak için binalar inşa eder. Binaları Işınıyla Tamir Eder. +unit.incite.description = Kale Merkezini korumak için binalar inşa eder. Binaları Işınıyla Tamir Eder. +unit.emanate.description = Akropolis Merkezini korumak için binalar inşa eder. Binaları Işınıyla Tamir Eder. +#inşaa->inşa -ekozet lst.read = Bağlı hafıza kutusundaki numarayı okur. lst.write = Bağlı hafıza kutuaundaki numaraya yazar. lst.print = Yazı yazar. +lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" lst.draw = Ekrana Çizer. lst.drawflush = Ekrana Çizimi Aktarır. lst.printflush = Mesaj bloğuna metnini aktarır, @@ -2237,16 +2291,55 @@ lst.flushmessage = Ekranda bir yazı göster.\nBir önceki yazı kaybolana kadar lst.cutscene = Oyuncu Kamerasını hareket ettir. lst.setflag = Tüm İşlemciler tarafından okunabilen bir Numara İşaretle. lst.getflag = Evrensel İşaretli Numara Oku. -lst.setprop = Sets a property of a unit or building. -lst.effect = Create a particle effect. -lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.setprop = Bir bina veya birime nitelik atar. +lst.effect = Parçacık efekti oluştur. +lst.sync = Ağ boyunca bir değişkeni senkronize et.\nSaniyede en fazla 10 kere yapılabilir. +lst.makemarker = Dünyada yeni bir İşlemci İşareti koy.\nBu İşarete bir Kimlik adamalısın.\nDünya başına 20.000 limit bulunmakta. +lst.setmarker = Bir İşlemci İşareti için bir arazi seç.\nKimlik, İşaret Koyucudaki ile aynı olmalı. +lst.localeprint = 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! lenum.type = Bir bina/birim türü.\nörnek: [accent]@router[]. lenum.shoot = Bir konuma ateş et. lenum.shootp = Belli bir birim veya binaya ateş et. -lenum.config = Bina configurasyonu, örnek: Ayıklayıcı Türü +lenum.config = Bina yapılandırması, örnek: Ayıklayıcı Türü lenum.enabled = Blok aktif mi? laccess.color = Aydınlatıcı Rengi @@ -2255,9 +2348,9 @@ laccess.dead = Bir bina veya birim hala var mı? laccess.controlled = Bir birim ne tarafından kontrol ediliyor? laccess.progress = Bir şeyin oluş aşaması, örnek: bir turetin yeniden doldurma süresindeki aşama. laccess.speed = Bir Birimin Maks hızı, blok/sn. -laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. +laccess.id = Bir birim/blok/eşya/sıvı kimliği. \nBu arama operasyonun zıttıdır. lcategory.unknown = ??? -lcategory.unknown.description = Kategorilenmemiş Talimatlar +lcategory.unknown.description = Kategorize edilmemiş talimatlar lcategory.io = Giriş & Çıkış lcategory.io.description = Bir Hafıza biloğunun içeriğini değiştirir. lcategory.block = Blok Kontrol @@ -2282,6 +2375,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 @@ -2348,7 +2442,7 @@ sensor.in = Algılanan Blok/Birim. radar.from = Algı Oluşturulan Blok. radar.target = Algılanan Birimler için Filtre. -radar.and = Extra Filtre. +radar.and = Ekstra Filtre. radar.order = Sıralama Filtresi. radar.sort = Sıralama Sırası. radar.output = Dışarı Aktarılan Değişken. @@ -2376,7 +2470,7 @@ lenum.unbind = Logic Kontrolü tamaman devre dışı bırak.\nNormal AI ı devre lenum.move = Tam konuma git. lenum.approach = Bir Konuma yaklaş. lenum.pathfind = Düşman Doğuş noktasına git. -lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. +lenum.autopathfind = Otomatik olarak en yakındaki düşman çekirdeği veya iniş pistine doğru yolunu bulur.\nBu her dalgadaki düşmanların yol bulmasıyla aynıdır. lenum.target = Bir alana ateş et. lenum.targetp = Bir cisme ateş et. lenum.itemdrop = Bir itemi bırak. @@ -2390,3 +2484,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 ab25857ccf..0073cef162 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -343,12 +343,23 @@ open = Відкрити customize = Налаштувати правила cancel = Скасувати command = Командувати +command.queue = [lightgray][Queuing] command.mine = Видобувати command.repair = Ремонтувати command.rebuild = Відбудовувати command.assist = Допомагати гравцеві command.move = Рухатися command.boost = Летіти +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = Перейти за посиланням copylink = Скопіювати посилання back = Назад @@ -429,6 +440,7 @@ editor.waves = Хвилі editor.rules = Правила editor.generation = Генерація editor.objectives = Завдання +editor.locales = Locale Bundles editor.ingame = Редагувати в грі editor.playtest = Протестувати в грі editor.publish.workshop = Опублікувати в Майстерні Steam @@ -485,6 +497,7 @@ editor.default = [lightgray]<За замовчуванням> details = Подробиці… edit = Змінити… variables = Змінні +logic.globals = Built-in Variables editor.name = Ім’я: editor.spawn = Створити бойову одиницю editor.removeunit = Видалити бойову одиницю @@ -496,6 +509,7 @@ editor.errorlegacy = Ця мапа занадто стара і використ editor.errornot = Це не мапа. editor.errorheader = Цей файл мапи недійсний або пошкоджений. editor.errorname = Мапа не має назви. Може, ви намагаєтеся завантажити збереження? +editor.errorlocales = Error reading invalid locale bundles. editor.update = Оновити editor.randomize = Випадково editor.moveup = Підняти вище @@ -507,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 = Ваша мапа перезаписує вбудовану мапу! Виберіть іншу назву в «Інформація про мапу». @@ -594,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: @[]\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 = Висота: @@ -646,9 +678,11 @@ 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.background = Фон marker.outline = Контур @@ -677,7 +711,6 @@ resources.max = Максимум bannedblocks = Заборонені блоки objectives = Завдання bannedunits = Заборонені одиниці -rules.hidebannedblocks = Приховати заборонені блоки bannedunits.whitelist = Заборонені одиниці як білий список bannedblocks.whitelist = Заборонені блоки як білий список addall = Додати все @@ -737,8 +770,7 @@ 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.changeicon = Змінити значок sector.noswitch.title = Неможливо переключити сектори sector.noswitch = Ви не можете змінювати сектори, поки поточний сектор піддається атаці.\n\nСектор: [accent]{0}[] на [accent]{1}[] @@ -1010,6 +1042,7 @@ bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat bullet.incendiary = [stat]запальний bullet.homing = [stat]самонаведення bullet.armorpierce = [stat]бронебійність +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0}[lightgray] сек. пригнічення відновлення ~ [stat]{1}[lightgray] плит. bullet.interval = [stat]{0} за сек. [lightgray] період між кулями: bullet.frags = [stat]{0}[lightgray]x шкода по ділянці від снарядів: @@ -1065,6 +1098,7 @@ setting.backgroundpause.name = Пауза в разі згортання setting.buildautopause.name = Автоматичне призупинення будування setting.doubletapmine.name = Подвійне швидке натискання для початку видобутку setting.commandmodehold.name = Утримуйте для переходу в режим командування +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = Вимикати модифікації після аварійного запуску setting.animatedwater.name = Анімаційні рідини setting.animatedshields.name = Анімаційні щити @@ -1118,7 +1152,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 = Непрозорість лазерів енергопостачання @@ -1138,6 +1172,7 @@ keybind.title = Налаштування керування keybinds.mobile = [scarlet]Більшість прив’язаних клавіш не функціональні для мобільних пристроїв. Підтримується лише базовий рух. category.general.name = Загальне category.view.name = Перегляд +category.command.name = Unit Command category.multiplayer.name = Мережева гра category.blocks.name = Вибір блока placement.blockselectkeys = \n[lightgray]Клавіші: [{0}, @@ -1155,6 +1190,23 @@ 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.rebuild_select.name = Відбудувати регіон keybind.schematic_select.name = Вибрати ділянку keybind.schematic_menu.name = Меню схем @@ -1218,9 +1270,12 @@ mode.pvp.description = Боріться проти інших гравців.\n[ mode.attack.name = Наступ mode.attack.description = Зруйнуйте ворожу базу. \n[gray]Потрібно червоне ядро на мапі для гри. mode.custom = Користувацькі правила +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Приховати заборонені блоки rules.infiniteresources = Нескінченні ресурси rules.onlydepositcore = Дозволити лише основне розміщення ядер +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = Вибухи реактора rules.coreincinerates = Ядро спалює надлишкові предмети rules.disableworldprocessors = Вимкнути світові процесори @@ -1744,7 +1799,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 = Корабельний перебудовний завод @@ -1866,6 +1920,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Організуйте оборону, видобуток корисних копалин та виробництво. @@ -2073,7 +2128,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Ядро бази. Броньоване. Після знищення сектор втрачається. @@ -2111,7 +2165,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Транспортує рідини над спорудами та місцевістю. @@ -2232,6 +2285,7 @@ unit.emanate.description = Англійська назва: Emanate\nБудує lst.read = Зчитує число із з’єднаної комірки пам’яті. lst.write = Записує числу у з’єднану комірку пам’яті. lst.print = Додайте текст до буфера друку.\nНічого не відображає, поки [accent]Print Flush[] використовується. +lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" lst.draw = Додає операцію до буфера рисунка.\nНічого не відображає, поки [accent]Draw Flush[] використовується. lst.drawflush = Скидає буфер операцій [accent]Draw[] на дисплей. lst.printflush = Скидає буфер операцій [accent]Print[] у блок «Повідомлення». @@ -2267,6 +2321,45 @@ lst.getflag = Перевіряє, чи встановлено глобальни lst.setprop = Установлює властивість одиниці чи будівлі. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]Будування за допомогою процесорів заборено. @@ -2310,6 +2403,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 +2512,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 8eb49821f8..35c9472d8e 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -342,12 +342,23 @@ open = Mở customize = Luật tùy chỉnh cancel = Hủy command = Mệnh lệnh +command.queue = [lightgray][Queuing] command.mine = Đào command.repair = Sửa Chữa command.rebuild = Xây Dựng 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 openlink = Mở liên kết copylink = Sao chép liên kết back = Quay lại @@ -428,6 +439,7 @@ editor.waves = Lượt: editor.rules = Luật: editor.generation = Cấu trúc: editor.objectives = Mục tiêu +editor.locales = Locale Bundles 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 @@ -484,6 +496,7 @@ editor.default = [lightgray] details = Chi tiết... edit = Chỉnh sửa... variables = Thông số +logic.globals = Built-in Variables editor.name = Tên: editor.spawn = Thêm kẻ địch editor.removeunit = Xóa kẻ địch @@ -495,6 +508,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 = Error reading invalid locale bundles. editor.update = Cập nhật editor.randomize = Ngẫu nhiên editor.moveup = Di chuyển lên @@ -506,6 +520,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]You have unsaved changes!\n\n[]Do you want to save them? 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 đồ'. @@ -592,6 +607,23 @@ filter.option.floor2 = Nền phụ filter.option.threshold2 = Ngưỡng phụ filter.option.radius = Bán kính filter.option.percentile = Phần trăm +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: @[]\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 = Chiều rộng: height = Chiều cao: @@ -642,9 +674,11 @@ objective.destroycore.name = Phá huỷ căn cứ objective.commandmode.name = Chế độ ra 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 = Point marker.shape.name = Hình dạng marker.text.name = Văn bản +marker.line.name = Line +marker.quad.name = Quad marker.background = Nền marker.outline = Đường viền objective.research = [accent]Nghiên cứu:\n[]{0}[lightgray]{1} @@ -670,7 +704,6 @@ resources.max = Tối đa bannedblocks = Khối bị cấm objectives = Mục tiêu bannedunits = Đơn vị bị cấm -rules.hidebannedblocks = Ẩn Các Khối Bị Cấm bannedunits.whitelist = Chỉ cho phép dùng các đơn vị bị cấm bannedblocks.whitelist = Chỉ cho phép dùng các khối bị cấm addall = Thêm tất cả @@ -729,8 +762,7 @@ sector.curlost = Khu vực đã mất sector.missingresources = [scarlet]Không đủ tài nguyên căn cứ 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 = Sector [accent]{0}[white]Captured! 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}[] @@ -1003,6 +1035,7 @@ 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.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.frags = [stat]phá mảnh @@ -1058,6 +1091,7 @@ 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.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 @@ -1111,7 +1145,7 @@ setting.sfxvol.name = Âm lượng SFX setting.mutesound.name = Tắt tiếng setting.crashreport.name = Gửi báo cáo sự cố setting.savecreate.name = Tự động lưu -setting.publichost.name = Hiển thị trò chơi công khai +setting.steampublichost.name = Public Game Visibility 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 @@ -1131,6 +1165,7 @@ keybind.title = Sửa 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.multiplayer.name = Nhiều người chơi category.blocks.name = Chọn khối placement.blockselectkeys = \n[lightgray]Phím: [{0}, @@ -1148,6 +1183,23 @@ 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.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ế @@ -1211,9 +1263,12 @@ 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.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.reactorexplosions = Nổ lò phản ứng rules.coreincinerates = Hủy vật phẩm khi căn cứ đầy rules.disableworldprocessors = Vô hiệu hoá bộ xử lý thế giới @@ -1733,7 +1788,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 @@ -1851,6 +1905,7 @@ onset.turrets = Các đơn vị rất tốt, nhưng [accent]súng[] cung cấp k onset.turretammo = Tiếp đạn cho súng bằng [accent]beryllium[]. onset.walls = [accent]Tường[] có thể ngăn chặn sát thương đến các công trình.\nĐặt một số \uf6ee [accent]tường beryllium[] xung quanh súng. onset.enemies = Quân địch đang đến, hãy chuẩn bị phòng thủ. +onset.defenses = [accent]Set up defenses:[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.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. @@ -2051,7 +2106,6 @@ block.logic-display.description = Hiển thị đồ họa tùy ý từ bộ x 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. 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ủ. @@ -2087,7 +2141,6 @@ block.impact-drill.description = Khi được đặt lên một loại quặng, 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-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. @@ -2206,6 +2259,7 @@ unit.emanate.description = Xây công trình để phòng thủ lõi Acropolis. 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.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" lst.draw = Thêm một thao tác vào bộ nhớ vẽ.\nKhông hiển thị gì cho đến khi sử dụng [accent]Draw Flush[]. lst.drawflush = Chuyển các thao tác [accent]Draw[] đến màn hình. lst.printflush = Chuyển các thao tác [accent]Print[] đến khối tin nhắn. @@ -2241,6 +2295,45 @@ 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.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ô-gíc xây dựng đơn vị không được phép ở đây. @@ -2283,6 +2376,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 = Draws text from the print buffer.\nClears the print buffer. lenum.always = Luôn đúng. lenum.idiv = Chia lấy phần nguyên. @@ -2391,3 +2485,10 @@ 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 = 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_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 17219555f8..0761b47baf 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -344,12 +344,23 @@ open = 打开 customize = 自定义规则 cancel = 取消 command = 指挥 +command.queue = [lightgray][Queuing] command.mine = 挖矿 command.repair = 维修 command.rebuild = 重建 command.assist = 协助建造 command.move = 移动 command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = 打开链接 copylink = 复制链接 back = 返回 @@ -430,6 +441,7 @@ editor.waves = 波次 editor.rules = 规则 editor.generation = 生成 editor.objectives = 目标 +editor.locales = Locale Bundles editor.ingame = 游戏内编辑 editor.playtest = 游戏内测试 editor.publish.workshop = 上传到创意工坊 @@ -486,6 +498,7 @@ editor.default = [lightgray]<默认> details = 详情… edit = 编辑… variables = 变量 +logic.globals = Built-in Variables editor.name = 名称: editor.spawn = 生成单位 editor.removeunit = 移除单位 @@ -497,6 +510,7 @@ editor.errorlegacy = 此地图太旧了,旧的地图格式已不再支持。 editor.errornot = 这不是地图文件。 editor.errorheader = 此地图文件无效或已损坏。 editor.errorname = 地图没有定义名称。 加载的可能是存档文件? +editor.errorlocales = Error reading invalid locale bundles. editor.update = 更新 editor.randomize = 重新生成 editor.moveup = 上移 @@ -508,6 +522,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 = 您正试图覆盖一张内置地图!在“地图信息”菜单里重新设置一个其他的名称。 @@ -595,6 +610,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: @[]\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 = 高度: @@ -647,9 +679,11 @@ 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.background = 背景 marker.outline = 轮廓 @@ -678,7 +712,6 @@ resources.max = 最大 bannedblocks = 禁用建筑 objectives = 任务目标 bannedunits = 禁用单位 -rules.hidebannedblocks = 隐藏禁用的建筑 bannedunits.whitelist = 仅启用选中的单位 bannedblocks.whitelist = 仅启用选中的建筑 addall = 全部装运 @@ -738,8 +771,7 @@ 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.changeicon = 更改图标 sector.noswitch.title = 无法切换区块 sector.noswitch = 你无法在当前区块遭受攻击时切换区块。\n\n区块:[accent]{0}[]位于[accent]{1}[] @@ -1011,6 +1043,7 @@ bullet.splashdamage = [stat]{0}[lightgray]范围伤害~[stat] {1}[lightgray]格 bullet.incendiary = [stat]燃烧 bullet.homing = [stat]追踪 bullet.armorpierce = [stat]穿甲 +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x分裂子弹: @@ -1066,6 +1099,7 @@ setting.backgroundpause.name = 游戏在后台时自动暂停 setting.buildautopause.name = 自动暂停建造 setting.doubletapmine.name = 双击采矿 setting.commandmodehold.name = 长按保持指挥模式 +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = 游戏启动崩溃后禁用模组 setting.animatedwater.name = 动态液体 setting.animatedshields.name = 动态力场 @@ -1119,7 +1153,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 = 电力连接线不透明度 @@ -1139,6 +1173,7 @@ keybind.title = 重新绑定按键 keybinds.mobile = [scarlet]除了基本的移动以外,大多数按键绑定在移动设备上无效。 category.general.name = 常规 category.view.name = 视图 +category.command.name = Unit Command category.multiplayer.name = 多人游戏 category.blocks.name = 建筑选择 placement.blockselectkeys = \n[lightgray]按键:[{0}, @@ -1156,6 +1191,23 @@ 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.rebuild_select.name = 重建建筑 keybind.schematic_select.name = 框选建筑 keybind.schematic_menu.name = 蓝图目录 @@ -1219,9 +1271,12 @@ mode.pvp.description = 与其他玩家对战。 \n[gray]需要地图中有至少 mode.attack.name = 进攻 mode.attack.description = 摧毁敌人的基地。 \n[gray]需要地图中有敌方队伍的核心。 mode.custom = 自定义模式 +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = 隐藏禁用的建筑 rules.infiniteresources = 无限资源 rules.onlydepositcore = 仅核心可放入资源 +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = 反应堆爆炸 rules.coreincinerates = 核心焚烧 rules.disableworldprocessors = 禁用世界处理器 @@ -1745,7 +1800,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 +1921,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设立防御,挖掘矿物,并建造生产设施。 @@ -2072,7 +2127,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 = 基地的核心。 拥有装甲。 一旦被摧毁,此区块就会丢失。 @@ -2110,7 +2164,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 = 跨越任意地形或建筑物传输流体。 @@ -2231,6 +2284,7 @@ unit.emanate.description = 保护卫城核心,可建造建筑。 使用一对 lst.read = 从连接的内存读取数字 lst.write = 向连接的内存写入数字 lst.print = 添加文字到打印缓存\n使用[accent]Print Flush[]后才会真正显示 +lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" lst.draw = 添加绘图操作到绘图缓存\n使用[accent]Draw Flush[]后才会真正显示 lst.drawflush = 将绘图缓存中的[accent]Draw[]队列刷新到显示屏 lst.printflush = 将打印缓存中的[accent]Print[]队列刷新到信息板 @@ -2266,6 +2320,45 @@ lst.getflag = 检查是否设置了全局flag lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]此处不允许处理器操控单位去建设 @@ -2309,6 +2402,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 = 整数除法,返回不带小数的商 @@ -2417,3 +2511,10 @@ lenum.build = 建造建筑 lenum.getblock = 获取某个坐标处的建筑及其类型\n坐标需要在单位的感知范围内\n无建筑的地面返回[accent]@air[],墙壁返回[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_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 79448683a2..3afb86a1f8 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -341,12 +341,23 @@ open = 開啟 customize = 自訂 cancel = 取消 command = 命令 +command.queue = [lightgray][Queuing] command.mine = 挖礦 command.repair = 修復 command.rebuild = 重建 command.assist = 協助玩家 command.move = 移動 command.boost = Boost +command.enterPayload = Enter Payload Block +command.loadUnits = Load Units +command.loadBlocks = Load Blocks +command.unloadPayload = Unload Payload +stance.stop = Cancel Orders +stance.shoot = Stance: Shoot +stance.holdfire = Stance: Hold Fire +stance.pursuetarget = Stance: Pursue Target +stance.patrol = Stance: Patrol Path +stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding openlink = 開啟連結 copylink = 複製連結 back = 返回 @@ -427,6 +438,7 @@ editor.waves = 波次: editor.rules = 規則: editor.generation = 自動生成: editor.objectives = Objectives +editor.locales = Locale Bundles editor.ingame = 在遊戲中編輯 editor.playtest = 測試 editor.publish.workshop = 在工作坊上發佈 @@ -483,6 +495,7 @@ editor.default = [lightgray](預設) details = 詳細資訊…… edit = 編輯…… variables = 變數 +logic.globals = Built-in Variables editor.name = 名稱: editor.spawn = 重生單位 editor.removeunit = 移除單位 @@ -494,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 @@ -505,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 = 您的地圖覆寫了內建的地圖!在「地圖資訊」畫面設定其他名稱。 @@ -592,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: @[]\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,9 +676,11 @@ 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.background = 反黑背景 marker.outline = 描邊 @@ -675,7 +709,6 @@ resources.max = 最大 bannedblocks = 禁用方塊 objectives = 目標 bannedunits = 禁用單位 -rules.hidebannedblocks = Hide Banned Blocks bannedunits.whitelist = Banned Units As Whitelist bannedblocks.whitelist = Banned Blocks As Whitelist addall = 全部加入 @@ -734,8 +767,7 @@ 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.changeicon = 更改圖標 sector.noswitch.title = 無法切換地區 sector.noswitch = 當前地區遭受攻擊時,無法切換地區\n\n地區: [accent]{0}[] 於 [accent]{1}[] @@ -1007,6 +1039,7 @@ bullet.splashdamage = [stat]{0}[lightgray]範圍傷害 ~[stat] {1}[lightgray]格 bullet.incendiary = [stat]燃燒 bullet.homing = [stat]追蹤 bullet.armorpierce = [stat]穿甲 +bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: bullet.frags = [stat]{0}[lightgray]x 集束子彈: @@ -1062,6 +1095,7 @@ setting.backgroundpause.name = 背景執行時暫停遊戲 setting.buildautopause.name = 自動暫停建築 setting.doubletapmine.name = 連續點擊以挖礦 setting.commandmodehold.name = 長按進入指揮模式 +setting.distinctcontrolgroups.name = Limit One Control Group Per Unit setting.modcrashdisable.name = 閃退後停用模組 setting.animatedwater.name = 顯示液面動畫 setting.animatedshields.name = 顯示護盾動畫 @@ -1115,7 +1149,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 = 雷射不透明度 @@ -1135,6 +1169,7 @@ keybind.title = 重新綁定按鍵 keybinds.mobile = [scarlet]此處的大多數快捷鍵在行動裝置上均無法運作。僅支援基本移動。 category.general.name = 一般 category.view.name = 查看 +category.command.name = Unit Command category.multiplayer.name = 多人 category.blocks.name = 選取方塊 placement.blockselectkeys = \n[lightgray]按鍵:[{0}, @@ -1152,6 +1187,23 @@ 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.rebuild_select.name = Rebuild Region keybind.schematic_select.name = 選擇區域 keybind.schematic_menu.name = 藍圖目錄 @@ -1215,9 +1267,12 @@ mode.pvp.description = 和其他玩家競爭、戰鬥。\n[gray]地圖中需要 mode.attack.name = 進攻 mode.attack.description = 目標是摧毀敵人的基地。\n[gray]地圖中需要有一個紅色核心。 mode.custom = 自訂規則 +rules.invaliddata = Invalid clipboard data. +rules.hidebannedblocks = Hide Banned Blocks rules.infiniteresources = 無限資源 rules.onlydepositcore = 僅允許向核心放置物品 +rules.derelictrepair = Allow Derelict Block Repair rules.reactorexplosions = 反應爐爆炸 rules.coreincinerates = 核心銷毀物品 rules.disableworldprocessors = 停用世界處理器 @@ -1741,7 +1796,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 = 飛船重塑者 @@ -1860,6 +1914,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. @@ -2062,7 +2117,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. @@ -2098,7 +2152,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. @@ -2217,6 +2270,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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" lst.draw = 將圖形加入顯示的暫存中,搭配[accent]Draw Flush[]使用 lst.drawflush = 將所有暫存的[accent]Draw[]指令推到顯示器上 lst.printflush = 將所有暫存的[accent]Print[]指令推到訊息板上 @@ -2252,6 +2306,45 @@ lst.getflag = 檢查某一全局flag是否存在 lst.setprop = Sets a property of a unit or building. lst.effect = Create a particle effect. lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. +lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. +lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. +lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lglobal.false = 0 +lglobal.true = 1 +lglobal.null = null +lglobal.@pi = The mathematical constant pi (3.141...) +lglobal.@e = The mathematical constant e (2.718...) +lglobal.@degToRad = Multiply by this number to convert degrees to radians +lglobal.@radToDeg = Multiply by this number to convert radians to degrees +lglobal.@time = Playtime of current save, in milliseconds +lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) +lglobal.@second = Playtime of current save, in seconds +lglobal.@minute = Playtime of current save, in minutes +lglobal.@waveNumber = Current wave number, if waves are enabled +lglobal.@waveTime = Countdown timer for waves, in seconds +lglobal.@mapw = Map width in tiles +lglobal.@maph = Map height in tiles +lglobal.sectionMap = Map +lglobal.sectionGeneral = General +lglobal.sectionNetwork = Network/Clientside [World Processor Only] +lglobal.sectionProcessor = Processor +lglobal.sectionLookup = Lookup +lglobal.@this = The logic block executing the code +lglobal.@thisx = X coordinate of block executing the code +lglobal.@thisy = Y coordinate of block executing the code +lglobal.@links = Total number of blocks linked to this processors +lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) +lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction +lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction +lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction +lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction +lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise +lglobal.@client = True if the code is running on a client connected to a server +lglobal.@clientLocale = Locale of the client running the code. For example: en_US +lglobal.@clientUnit = Unit of client running the code +lglobal.@clientName = Player name of client running the code +lglobal.@clientTeam = Team ID of client running the code +lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise logic.nounitbuild = [red]單位建造邏輯已被禁止。 @@ -2295,6 +2388,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 = 整數除法,無條件捨去. @@ -2403,3 +2497,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 26a720b8d0..3b3153b7ee 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -160,3 +160,8 @@ WayZer SITUVNgcd Gabriel "red" Fondato Yoru Kitsune +summoner +OpalSoPL +BalaM314 +Redstonneur1256 +ApsZoldat diff --git a/core/assets/cursors/repair.png b/core/assets/cursors/repair.png new file mode 100644 index 0000000000..0604903f1d Binary files /dev/null and b/core/assets/cursors/repair.png differ diff --git a/core/assets/fonts/logic.ttf b/core/assets/fonts/logic.ttf new file mode 100644 index 0000000000..0270cdfe3c Binary files /dev/null and b/core/assets/fonts/logic.ttf differ diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index f83ba67417..64963dd203 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -584,3 +584,7 @@ 63098=reinforced-message|block-reinforced-message-ui 63097=world-message|block-world-message-ui 63096=fast|status-fast-ui +63095=ranai|ranai +63094=cat|cat +63093=world-switch|block-world-switch-ui +63092=dynamic|status-dynamic-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index c5ed10a04e..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 040a44a841..6cd15494fb 100644 Binary files a/core/assets/maps/basin.msav and b/core/assets/maps/basin.msav differ diff --git a/core/assets/maps/craters.msav b/core/assets/maps/craters.msav index c52303c3a1..9eb3d18444 100644 Binary files a/core/assets/maps/craters.msav and b/core/assets/maps/craters.msav differ diff --git a/core/assets/maps/frozenForest.msav b/core/assets/maps/frozenForest.msav index 09f7e2a546..e29d7199cd 100644 Binary files a/core/assets/maps/frozenForest.msav and b/core/assets/maps/frozenForest.msav differ diff --git a/core/assets/maps/groundZero.msav b/core/assets/maps/groundZero.msav index 29af408f74..9ece04c2ba 100644 Binary files a/core/assets/maps/groundZero.msav and b/core/assets/maps/groundZero.msav differ diff --git a/core/assets/maps/navalFortress.msav b/core/assets/maps/navalFortress.msav index 6d41f2887b..b9e583bb1e 100644 Binary files a/core/assets/maps/navalFortress.msav and b/core/assets/maps/navalFortress.msav differ diff --git a/core/assets/maps/onset.msav b/core/assets/maps/onset.msav index c48193b98e..62d0340842 100644 Binary files a/core/assets/maps/onset.msav and b/core/assets/maps/onset.msav differ diff --git a/core/assets/maps/origin.msav b/core/assets/maps/origin.msav index 3fba9ace40..c04eba0728 100644 Binary files a/core/assets/maps/origin.msav and b/core/assets/maps/origin.msav differ diff --git a/core/assets/maps/stainedMountains.msav b/core/assets/maps/stainedMountains.msav index e8511641f0..ee28f1dc23 100644 Binary files a/core/assets/maps/stainedMountains.msav and b/core/assets/maps/stainedMountains.msav differ diff --git a/core/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/ai/BlockIndexer.java b/core/src/mindustry/ai/BlockIndexer.java index 0cae6ca790..60bcca661e 100644 --- a/core/src/mindustry/ai/BlockIndexer.java +++ b/core/src/mindustry/ai/BlockIndexer.java @@ -158,12 +158,13 @@ public class BlockIndexer{ int pos = tile.pos(); var seq = ores[drop.id][qx][qy]; - //when the drop can be mined, record the ore position - if(tile.block() == Blocks.air && !seq.contains(pos)){ - seq.add(pos); - allOres.increment(drop); - }else{ - //otherwise, it likely became blocked, remove it (even if it wasn't there) + if(tile.block() == Blocks.air){ + //add the index if it is a valid new spot to mine at + if(!seq.contains(pos)){ + seq.add(pos); + allOres.increment(drop); + } + }else if(seq.contains(pos)){ //otherwise, it likely became blocked, remove it seq.removeValue(pos); allOres.increment(drop, -1); } diff --git a/core/src/mindustry/ai/ControlPathfinder.java b/core/src/mindustry/ai/ControlPathfinder.java index 4ff9f7e384..cabb297270 100644 --- a/core/src/mindustry/ai/ControlPathfinder.java +++ b/core/src/mindustry/ai/ControlPathfinder.java @@ -257,8 +257,14 @@ public class ControlPathfinder{ float dst = unit.dst2(tile); //TODO maybe put this on a timer since raycasts can be expensive? if(dst < minDst && !permissiveRaycast(team, costType, tileX, tileY, tile.x, tile.y)){ + if(avoid(req.team, req.cost, items[i + 1])){ + range = 0.5f; + } + req.pathIndex = Math.max(dst <= range * range ? i + 1 : i, req.pathIndex); minDst = Math.min(dst, minDst); + }else if(dst <= 1f){ + req.pathIndex = Math.min(Math.max(i + 1, req.pathIndex), len - 1); } } @@ -290,6 +296,10 @@ public class ControlPathfinder{ } } + if(avoid(req.team, req.cost, items[req.rayPathIndex])){ + range = 0.5f; + } + if(unit.within(tile, range)){ req.pathIndex = req.rayPathIndex = Math.max(req.pathIndex, req.rayPathIndex + 1); } @@ -336,8 +346,12 @@ public class ControlPathfinder{ requests.clear(); } + public static boolean isNearObstacle(Unit unit, int x1, int y1, int x2, int y2){ + return raycast(unit.team().id, unit.type.pathCost, x1, y1, x2, y2); + } + private static boolean raycast(int team, PathCost type, int x1, int y1, int x2, int y2){ - int ww = world.width(), wh = world.height(); + int ww = wwidth, wh = wheight; int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; int e2, err = dx - dy; @@ -375,7 +389,7 @@ public class ControlPathfinder{ } private static boolean permissiveRaycast(int team, PathCost type, int x1, int y1, int x2, int y2){ - int ww = world.width(), wh = world.height(); + int ww = wwidth, wh = wheight; int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; int err = dx - dy; @@ -397,6 +411,30 @@ public class ControlPathfinder{ return true; } + /** @return 0 if nothing was hit, otherwise the packed coordinates. This is an internal function and will likely be moved - do not use!*/ + public static int raycastFast(int team, PathCost type, int x1, int y1, int x2, int y2){ + int ww = world.width(), wh = world.height(); + int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; + int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; + int err = dx - dy; + + while(x >= 0 && y >= 0 && x < ww && y < wh){ + if(solid(team, type, x + y * wwidth, true)) return Point2.pack(x, y); + if(x == x2 && y == y2) return 0; + + //no diagonals + if(2 * err + dy > dx - 2 * err){ + err -= dy; + x += sx; + }else{ + err += dx; + y += sy; + } + } + + return 0; + } + static boolean cast(int team, PathCost cost, int from, int to){ return raycast(team, cost, from % wwidth, from / wwidth, to % wwidth, to / wwidth); } diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index 8aba767dda..19f8a48697 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -159,7 +159,7 @@ public class Pathfinder implements Runnable{ if(other != null){ Floor floor = other.floor(); boolean osolid = other.solid(); - if(floor.isLiquid) nearLiquid = true; + if(floor.isLiquid && floor.isDeep()) nearLiquid = true; //TODO potentially strange behavior when teamPassable is false for other teams? if(osolid && !other.block().teamPassable) nearSolid = true; if(!floor.isLiquid) nearGround = true; diff --git a/core/src/mindustry/ai/UnitCommand.java b/core/src/mindustry/ai/UnitCommand.java index 20cec778bd..51a0edfcf8 100644 --- a/core/src/mindustry/ai/UnitCommand.java +++ b/core/src/mindustry/ai/UnitCommand.java @@ -4,39 +4,21 @@ import arc.*; import arc.func.*; import arc.scene.style.*; import arc.struct.*; +import arc.util.*; import mindustry.ai.types.*; +import mindustry.ctype.*; import mindustry.entities.units.*; import mindustry.gen.*; +import mindustry.input.*; /** Defines a pattern of behavior that an RTS-controlled unit should follow. Shows up in the command UI. */ -public class UnitCommand{ - /** List of all commands by ID. */ +public class UnitCommand extends MappableContent{ + /** @deprecated now a content type, use the methods in Vars.content instead */ + @Deprecated public static final Seq all = new Seq<>(); - public static final UnitCommand + public static UnitCommand moveCommand, repairCommand, rebuildCommand, assistCommand, mineCommand, boostCommand, enterPayloadCommand, loadUnitsCommand, loadBlocksCommand, unloadPayloadCommand; - moveCommand = new UnitCommand("move", "right", u -> null){{ - drawTarget = true; - resetTarget = false; - }}, - repairCommand = new UnitCommand("repair", "modeSurvival", u -> new RepairAI()), - rebuildCommand = new UnitCommand("rebuild", "hammer", u -> new BuilderAI()), - assistCommand = new UnitCommand("assist", "players", u -> { - var ai = new BuilderAI(); - ai.onlyAssist = true; - return ai; - }), - mineCommand = new UnitCommand("mine", "production", u -> new MinerAI()), - boostCommand = new UnitCommand("boost", "up", u -> new BoostAI()){{ - switchToMove = false; - drawTarget = true; - resetTarget = false; - }}; - - /** Unique ID number. */ - public final int id; - /** Named used for tooltip/description. */ - public final String name; /** Name of UI icon (from Icon class). */ public final String icon; /** Controller that this unit will use when this command is used. Return null for "default" behavior. */ @@ -47,16 +29,25 @@ public class UnitCommand{ public boolean drawTarget = false; /** Whether to reset targets when switching to or from this command. */ public boolean resetTarget = true; + /** */ + public boolean exactArrival = false; + /** Key to press for this command. */ + public @Nullable Binding keybind = null; public UnitCommand(String name, String icon, Func controller){ - this.name = name; + super(name); + this.icon = icon; - this.controller = controller; + this.controller = controller == null ? u -> null : controller; - id = all.size; all.add(this); } + public UnitCommand(String name, String icon, Binding keybind, Func controller){ + this(name, icon, controller); + this.keybind = keybind; + } + public String localized(){ return Core.bundle.get("command." + name); } @@ -66,11 +57,58 @@ public class UnitCommand{ } public char getEmoji() { - return (char) Iconc.codes.get(icon, Iconc.cancel); + return (char)Iconc.codes.get(icon, Iconc.cancel); + } + + @Override + public ContentType getContentType(){ + return ContentType.unitCommand; } @Override public String toString(){ return "UnitCommand:" + name; } + + public static void loadAll(){ + + moveCommand = new UnitCommand("move", "right", Binding.unit_command_move, null){{ + drawTarget = true; + resetTarget = false; + }}; + repairCommand = new UnitCommand("repair", "modeSurvival", Binding.unit_command_repair, u -> new RepairAI()); + rebuildCommand = new UnitCommand("rebuild", "hammer", Binding.unit_command_rebuild, u -> new BuilderAI()); + assistCommand = new UnitCommand("assist", "players", Binding.unit_command_assist, u -> { + var ai = new BuilderAI(); + ai.onlyAssist = true; + return ai; + }); + mineCommand = new UnitCommand("mine", "production", Binding.unit_command_mine, u -> new MinerAI()); + boostCommand = new UnitCommand("boost", "up", Binding.unit_command_boost, u -> new BoostAI()){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + }}; + enterPayloadCommand = new UnitCommand("enterPayload", "downOpen", Binding.unit_command_enter_payload, null){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + }}; + loadUnitsCommand = new UnitCommand("loadUnits", "upload", Binding.unit_command_load_units, null){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + }}; + loadBlocksCommand = new UnitCommand("loadBlocks", "up", Binding.unit_command_load_blocks, null){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + exactArrival = true; + }}; + unloadPayloadCommand = new UnitCommand("unloadPayload", "download", Binding.unit_command_unload_payload, null){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + }}; + } } diff --git a/core/src/mindustry/ai/UnitGroup.java b/core/src/mindustry/ai/UnitGroup.java new file mode 100644 index 0000000000..dbb55312f3 --- /dev/null +++ b/core/src/mindustry/ai/UnitGroup.java @@ -0,0 +1,205 @@ +package mindustry.ai; + +import arc.*; +import arc.graphics.*; +import arc.math.*; +import arc.math.geom.*; +import arc.struct.*; +import arc.util.*; +import mindustry.*; +import mindustry.ai.Pathfinder.*; +import mindustry.async.*; +import mindustry.content.*; +import mindustry.core.*; +import mindustry.gen.*; +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 long lastSpeedUpdate = -1; + public float minSpeed = 999999f; + + public void updateMinSpeed(){ + if(lastSpeedUpdate == Vars.state.updateId) return; + + lastSpeedUpdate = Vars.state.updateId; + + for(Unit unit : units){ + //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; + } + + public void calculateFormation(Vec2 dest, int collisionLayer){ + this.collisionLayer = collisionLayer; + + float cx = 0f, cy = 0f; + for(Unit unit : units){ + cx += unit.x; + cy += unit.y; + } + cx /= units.size; + cy /= units.size; + positions = new float[units.size * 2]; + + + //all positions are relative to the center + for(int i = 0; i < units.size; i ++){ + Unit unit = units.get(i); + positions[i * 2] = unit.x - cx; + positions[i * 2 + 1] = unit.y - cy; + unit.command().groupIndex = i; + } + + updateMinSpeed(); + + //run on new thread to prevent stutter + Vars.mainExecutor.submit(() -> { + //unused space between circles that needs to be reached for compression to end + float maxSpaceUsage = 0.7f; + boolean compress = true; + + int compressionIterations = 0; + int physicsIterations = 0; + int totalIterations = 0; + int maxPhysicsIterations = Math.min(1 + (int)(Math.pow(units.size, 0.65) / 10), 6); + + //yep, new allocations, because this is a new thread. + IntQuadTree tree = new IntQuadTree(new Rect(0f, 0f, Vars.world.unitWidth(), Vars.world.unitHeight()), + (index, hitbox) -> hitbox.setCentered(positions[index * 2], positions[index * 2 + 1], units.get(index).hitSize)); + IntSeq tmpseq = new IntSeq(); + Vec2 v1 = new Vec2(); + Vec2 v2 = new Vec2(); + + //this algorithm basically squeezes all the circle colliders together, then proceeds to simulate physics to push them apart across several iterations. + //it's rather slow, but shouldn't be too much of an issue when run in a different thread + while(totalIterations++ < 40 && physicsIterations < maxPhysicsIterations){ + float spaceUsed = 0f; + + if(compress){ + compressionIterations ++; + + float maxDst = 1f, totalArea = 0f; + for(int a = 0; a < units.size; a ++){ + v1.set(positions[a * 2], positions[a * 2 + 1]).lerp(v2.set(0f, 0f), 0.3f); + positions[a * 2] = v1.x; + positions[a * 2 + 1] = v1.y; + + float rad = units.get(a).hitSize/2f; + + maxDst = Math.max(maxDst, v1.dst(0f, 0f) + rad); + totalArea += Mathf.PI * rad * rad; + } + + //total area of bounding circle + float boundingArea = Mathf.PI * maxDst * maxDst; + spaceUsed = totalArea / boundingArea; + + //ex: 60% (0.6) of the total area is used, this will not be enough to satisfy a maxSpaceUsage of 70% (0.7) + compress = spaceUsed <= maxSpaceUsage && compressionIterations < 20; + } + + //uncompress units + if(!compress || spaceUsed > 0.5f){ + physicsIterations++; + + tree.clear(); + + for(int a = 0; a < units.size; a++){ + tree.insert(a); + } + + for(int a = 0; a < units.size; a++){ + Unit unit = units.get(a); + float x = positions[a * 2], y = positions[a * 2 + 1], radius = unit.hitSize/2f; + + tmpseq.clear(); + tree.intersect(x - radius, y - radius, radius * 2f, radius * 2f, tmpseq); + for(int res = 0; res < tmpseq.size; res ++){ + int b = tmpseq.items[res]; + + //simulate collision physics + if(a != b){ + float ox = positions[b * 2], oy = positions[b * 2 + 1]; + Unit other = units.get(b); + + float rs = (radius + other.hitSize/2f) * 1.2f; + float dst = Mathf.dst(x, y, ox, oy); + + if(dst < rs){ + v2.set(x - ox, y - oy).setLength(rs - dst); + float mass1 = unit.hitSize, mass2 = other.hitSize; + float ms = mass1 + mass2; + float m1 = mass2 / ms, m2 = mass1 / ms; + float scl = 1f; + + positions[a * 2] += v2.x * m1 * scl; + positions[a * 2 + 1] += v2.y * m1 * scl; + + positions[b * 2] -= v2.x * m2 * scl; + positions[b * 2 + 1] -= v2.y * m2 * scl; + } + } + } + } + } + } + + originalPositions = positions.clone(); + + //raycast from the destination to the offset to make sure it's reachable + for(int a = 0; a < units.size; a ++){ + updateRaycast(a, dest, v1); + } + + valid = true; + + if(ControlPathfinder.showDebug){ + Core.app.post(() -> { + for(int i = 0; i < units.size; i ++){ + float x = positions[i * 2], y = positions[i * 2 + 1]; + + Fx.placeBlock.at(x + dest.x, y + dest.y, 1f, Color.green); + } + }); + } + }); + } + + public void updateRaycast(int index, Vec2 dest){ + updateRaycast(index, dest, Tmp.v1); + } + + private void updateRaycast(int index, Vec2 dest, Vec2 v1){ + if(collisionLayer != PhysicsProcess.layerFlying){ + + //coordinates in world space + float + x = originalPositions[index * 2] + dest.x, + y = originalPositions[index * 2 + 1] + dest.y; + + Unit unit = units.get(index); + + PathCost cost = unit.type.pathCost; + int res = ControlPathfinder.raycastFast(unit.team.id, cost, World.toTile(dest.x), World.toTile(dest.y), World.toTile(x), World.toTile(y)); + + //collision found, make th destination the point right before the collision + if(res != 0){ + v1.set(Point2.x(res) * Vars.tilesize - dest.x, Point2.y(res) * Vars.tilesize - dest.y); + v1.setLength(Math.max(v1.len() - Vars.tilesize - 4f, 0)); + positions[index * 2] = v1.x; + positions[index * 2 + 1] = v1.y; + } + + if(ControlPathfinder.showDebug){ + Core.app.post(() -> Fx.debugLine.at(unit.x, unit.y, 0f, Color.green, new Vec2[]{new Vec2(dest.x, dest.y), new Vec2(x, y)})); + } + } + } +} diff --git a/core/src/mindustry/ai/UnitStance.java b/core/src/mindustry/ai/UnitStance.java new file mode 100644 index 0000000000..8d4f59bb2e --- /dev/null +++ b/core/src/mindustry/ai/UnitStance.java @@ -0,0 +1,61 @@ +package mindustry.ai; + +import arc.*; +import arc.scene.style.*; +import arc.struct.*; +import arc.util.*; +import mindustry.ctype.*; +import mindustry.gen.*; +import mindustry.input.*; + +public class UnitStance extends MappableContent{ + /** @deprecated now a content type, use the methods in Vars.content instead */ + @Deprecated + public static final Seq all = new Seq<>(); + + public static UnitStance stop, shoot, holdFire, pursueTarget, patrol, ram; + + /** Name of UI icon (from Icon class). */ + public final String icon; + /** Key to press for this stance. */ + public @Nullable Binding keybind = null; + + public UnitStance(String name, String icon, Binding keybind){ + super(name); + this.icon = icon; + this.keybind = keybind; + + all.add(this); + } + + public String localized(){ + return Core.bundle.get("stance." + name); + } + + public TextureRegionDrawable getIcon(){ + return Icon.icons.get(icon, Icon.cancel); + } + + public char getEmoji() { + return (char) Iconc.codes.get(icon, Iconc.cancel); + } + + @Override + public ContentType getContentType(){ + return ContentType.unitStance; + } + + @Override + public String toString(){ + return "UnitStance:" + name; + } + + public static void loadAll(){ + stop = new UnitStance("stop", "cancel", Binding.cancel_orders); + shoot = new UnitStance("shoot", "commandAttack", Binding.unit_stance_shoot); + holdFire = new UnitStance("holdfire", "none", Binding.unit_stance_hold_fire); + pursueTarget = new UnitStance("pursuetarget", "right", Binding.unit_stance_pursue_target); + patrol = new UnitStance("patrol", "refresh", Binding.unit_stance_patrol); + ram = new UnitStance("ram", "rightOpen", Binding.unit_stance_ram); + } +} diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index fc4b455c14..692aff98c8 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -11,25 +11,38 @@ import mindustry.entities.*; import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.world.*; +import mindustry.world.blocks.payloads.*; +import mindustry.world.meta.*; + +import static mindustry.Vars.*; public class CommandAI extends AIController{ - protected static final float localInterval = 40f; - protected static final Vec2 vecOut = new Vec2(), flockVec = new Vec2(), separation = new Vec2(), cohesion = new Vec2(), massCenter = new Vec2(); + protected static final int maxCommandQueueSize = 50, avoidInterval = 10; + protected static final Vec2 vecOut = new Vec2(), vecMovePos = new Vec2(); protected static final boolean[] noFound = {false}; + protected static final UnitPayload tmpPayload = new UnitPayload(null); + public Seq commandQueue = new Seq<>(5); public @Nullable Vec2 targetPos; public @Nullable Teamc attackTarget; + /** Group of units that were all commanded to reach the same point.. */ + public @Nullable UnitGroup group; + public int groupIndex = 0; /** All encountered unreachable buildings of this AI. Why a sequence? Because contains() is very rarely called on it. */ public IntSeq unreachableBuildings = new IntSeq(8); + /** ID of unit read as target. This is set up after reading. Do not access! */ + public int readAttackTarget = -1; protected boolean stopAtTarget, stopWhenInRange; protected Vec2 lastTargetPos; protected int pathId = -1; - protected Seq local = new Seq<>(false); - protected boolean flocked; + protected boolean blockingUnit; + protected float timeSpentBlocked; + /** Stance, usually related to firing mode. */ + public UnitStance stance = UnitStance.shoot; /** Current command this unit is following. */ - public @Nullable UnitCommand command; + public UnitCommand command = UnitCommand.moveCommand; /** Current controller instance based on command. */ protected @Nullable AIController commandController; /** Last command type assigned. Used for detecting command changes. */ @@ -60,6 +73,18 @@ public class CommandAI extends AIController{ @Override public void updateUnit(){ + //this should not be possible + if(stance == UnitStance.stop) stance = UnitStance.shoot; + + //pursue the target if relevant + if(stance == UnitStance.pursueTarget && target != null && attackTarget == null && targetPos == null){ + commandTarget(target, false); + } + + //remove invalid targets + if(commandQueue.any()){ + commandQueue.removeAll(e -> e instanceof Healthc h && !h.isValid()); + } //assign defaults if(command == null && unit.type.commands.length > 0){ @@ -84,8 +109,58 @@ public class CommandAI extends AIController{ } } + public void clearCommands(){ + commandQueue.clear(); + targetPos = null; + attackTarget = null; + } + public void defaultBehavior(){ + if(!net.client() && unit instanceof Payloadc pay){ + //auto-drop everything + if(command == UnitCommand.unloadPayloadCommand && pay.hasPayload()){ + Call.payloadDropped(unit, unit.x, unit.y); + } + + //try to pick up what's under it + if(command == UnitCommand.loadUnitsCommand){ + Unit target = Units.closest(unit.team, unit.x, unit.y, unit.type.hitSize * 2f, u -> u.isAI() && u != unit && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize)); + if(target != null){ + Call.pickedUnitPayload(unit, target); + } + } + + //try to pick up a block + if(command == UnitCommand.loadBlocksCommand && (targetPos == null || unit.within(targetPos, 1f))){ + Building build = world.buildWorld(unit.x, unit.y); + + if(build != null && state.teams.canInteract(unit.team, build.team)){ + //pick up block's payload + Payload current = build.getPayload(); + if(current != null && pay.canPickupPayload(current)){ + Call.pickedBuildPayload(unit, build, false); + //pick up whole building directly + }else if(build.block.buildVisibility != BuildVisibility.hidden && build.canPickup() && pay.canPickup(build)){ + Call.pickedBuildPayload(unit, build, true); + } + } + } + } + + if(group != null){ + group.updateMinSpeed(); + } + + if(!net.client() && command == UnitCommand.enterPayloadCommand && unit.buildOn() != null && (targetPos == null || (world.buildWorld(targetPos.x, targetPos.y) != null && world.buildWorld(targetPos.x, targetPos.y) == unit.buildOn()))){ + var build = unit.buildOn(); + tmpPayload.unit = unit; + if(build.team == unit.team && build.acceptPayload(build, tmpPayload)){ + Call.unitEnteredPayload(unit, build); + return; //no use updating after this, the unit is gone! + } + } + //acquiring naval targets isn't supported yet, so use the fallback dumb AI if(unit.team.isAI() && unit.team.rules().rtsAi && unit.type.naval){ if(fallback == null) fallback = new GroundAI(); @@ -114,22 +189,9 @@ public class CommandAI extends AIController{ targetPos = null; } - if(targetPos != null){ - if(timer.get(timerTarget3, localInterval) || !flocked){ - if(!flocked){ - //make sure updates are staggered randomly - timer.reset(timerTarget3, Mathf.random(localInterval)); - } - - local.clear(); - //TODO experiment with 2/3/4 - float size = unit.hitSize * 3f; - unit.team.data().tree().intersect(unit.x - size / 2f, unit.y - size/2f, size, size, local); - local.remove(unit); - flocked = true; - } - }else{ - flocked = false; + //move on to the next target + if(attackTarget == null && targetPos == null){ + finishPath(); } if(attackTarget != null){ @@ -139,7 +201,7 @@ public class CommandAI extends AIController{ } targetPos.set(attackTarget); - if(unit.isGrounded() && attackTarget instanceof Building build && build.tile.solid() && unit.pathType() != Pathfinder.costLegs){ + if(unit.isGrounded() && attackTarget instanceof Building build && build.tile.solid() && unit.pathType() != Pathfinder.costLegs && stance != UnitStance.ram){ Tile best = build.findClosestEdge(unit, Tile::solid); if(best != null){ targetPos.set(best); @@ -148,21 +210,64 @@ public class CommandAI extends AIController{ } if(targetPos != null){ - boolean move = true; + boolean move = true, isFinalPoint = commandQueue.size == 0; vecOut.set(targetPos); + vecMovePos.set(targetPos); - if(unit.isGrounded()){ - move = Vars.controlPath.getPathPosition(unit, pathId, targetPos, vecOut, noFound); + //the enter payload command requires an exact position + if(group != null && group.valid && groupIndex < group.units.size && command != UnitCommand.enterPayloadCommand){ + vecMovePos.add(group.positions[groupIndex * 2], group.positions[groupIndex * 2 + 1]); + } + + //TODO: should the unit stop when it finds a target? + if(stance == UnitStance.patrol && target != null && unit.within(target, unit.type.range - 2f) && !unit.type.circleTarget){ + move = false; + } + + if(unit.isGrounded() && stance != UnitStance.ram){ + if(timer.get(timerTarget3, avoidInterval)){ + Vec2 dstPos = Tmp.v1.trns(unit.rotation, unit.hitSize/2f); + float max = unit.hitSize/2f; + float radius = Math.max(7f, max); + float margin = 4f; + blockingUnit = Units.nearbyCheck(unit.x + dstPos.x - radius/2f, unit.y + dstPos.y - radius/2f, radius, radius, + u -> u != unit && u.within(unit, u.hitSize/2f + unit.hitSize/2f + margin) && u.controller() instanceof CommandAI ai && ai.targetPos != null && + //stop for other unit only if it's closer to the target + (ai.targetPos.equals(targetPos) && u.dst2(targetPos) < unit.dst2(targetPos)) && + //don't stop if they're facing the same way + !Angles.within(unit.rotation, u.rotation, 15f) && + //must be near an obstacle, stopping in open ground is pointless + ControlPathfinder.isNearObstacle(unit, unit.tileX(), unit.tileY(), u.tileX(), u.tileY())); + } + + float maxBlockTime = 60f * 5f; + + if(blockingUnit){ + timeSpentBlocked += Time.delta; + + if(timeSpentBlocked >= maxBlockTime*2f){ + timeSpentBlocked = 0f; + } + }else{ + timeSpentBlocked = 0f; + } + + //if you've spent 3 seconds stuck, something is wrong, move regardless + move = Vars.controlPath.getPathPosition(unit, pathId, vecMovePos, vecOut, noFound) && (!blockingUnit || timeSpentBlocked > maxBlockTime); + //we've reached the final point if the returned coordinate is equal to the supplied input + isFinalPoint &= vecMovePos.epsilonEquals(vecOut, 4.1f); //if the path is invalid, stop trying and record the end as unreachable - if(unit.team.isAI() && (noFound[0] || unit.isPathImpassable(World.toTile(targetPos.x), World.toTile(targetPos.y)) )){ + if(unit.team.isAI() && (noFound[0] || unit.isPathImpassable(World.toTile(vecMovePos.x), World.toTile(vecMovePos.y)))){ if(attackTarget instanceof Building build){ unreachableBuildings.addUnique(build.pos()); } attackTarget = null; - targetPos = null; + finishPath(); return; } + }else{ + vecOut.set(vecMovePos); } float engageRange = unit.type.range - 10f; @@ -173,10 +278,10 @@ public class CommandAI extends AIController{ circleAttack(80f); }else{ moveTo(vecOut, - attackTarget != null && unit.within(attackTarget, engageRange) ? engageRange : + attackTarget != null && unit.within(attackTarget, engageRange) && stance != UnitStance.ram ? engageRange : unit.isGrounded() ? 0f : - attackTarget != null ? engageRange : - 0f, unit.isFlying() ? 40f : 100f, false, null, targetPos.epsilonEquals(vecOut, 4.1f)); + attackTarget != null && stance != UnitStance.ram ? engageRange : + 0f, unit.isFlying() ? 40f : 100f, false, null, isFinalPoint); } } @@ -185,33 +290,19 @@ public class CommandAI extends AIController{ attackTarget = null; } - if(unit.isFlying()){ - unit.lookAt(targetPos); + if(unit.isFlying() && move && (attackTarget == null || !unit.within(attackTarget, unit.type.range))){ + unit.lookAt(vecMovePos); }else{ faceTarget(); } - if(attackTarget == null){ - if(unit.within(targetPos, Math.max(5f, unit.hitSize / 2f))){ - targetPos = null; - }else if(local.size > 1){ - int count = 0; - for(var near : local){ - //has arrived - no current command, but last one is equal - if(near.isCommandable() && !near.command().hasCommand() && targetPos.epsilonEquals(near.command().lastTargetPos, 0.001f)){ - count ++; - } - } - - //others have arrived at destination, so this one will too - if(count >= Math.max(3, local.size / 2)){ - targetPos = null; - } - } + //reached destination, end pathfinding + if(attackTarget == null && unit.within(vecMovePos, command.exactArrival && commandQueue.size == 0 ? 1f : Math.max(5f, unit.hitSize / 2f))){ + finishPath(); } - if(stopWhenInRange && targetPos != null && unit.within(targetPos, engageRange * 0.9f)){ - targetPos = null; + if(stopWhenInRange && targetPos != null && unit.within(vecMovePos, engageRange * 0.9f)){ + finishPath(); stopWhenInRange = false; } @@ -220,6 +311,68 @@ public class CommandAI extends AIController{ } } + void finishPath(){ + //the enter payload command never finishes until they are actually accepted + if(command == UnitCommand.enterPayloadCommand && commandQueue.size == 0 && targetPos != null && world.buildWorld(targetPos.x, targetPos.y) != null && world.buildWorld(targetPos.x, targetPos.y).block.acceptsPayloads){ + return; + } + + Vec2 prev = targetPos; + targetPos = null; + + if(commandQueue.size > 0){ + var next = commandQueue.remove(0); + if(next instanceof Teamc target){ + commandTarget(target, this.stopAtTarget); + }else if(next instanceof Vec2 position){ + commandPosition(position); + } + + if(prev != null && stance == UnitStance.patrol){ + commandQueue.add(prev.cpy()); + } + + //make sure spot in formation is reachable + if(group != null){ + group.updateRaycast(groupIndex, next instanceof Vec2 position ? position : Tmp.v3.set(next)); + } + }else{ + if(group != null){ + group = null; + } + } + } + + public void commandQueue(Position location){ + if(targetPos == null && attackTarget == null){ + if(location instanceof Teamc target){ + commandTarget(target, this.stopAtTarget); + }else if(location instanceof Vec2 position){ + commandPosition(position); + } + }else if(commandQueue.size < maxCommandQueueSize && !commandQueue.contains(location)){ + commandQueue.add(location); + } + } + + @Override + public void afterRead(Unit unit){ + if(readAttackTarget != -1){ + attackTarget = Groups.unit.getByID(readAttackTarget); + readAttackTarget = -1; + } + } + + @Override + public float prefSpeed(){ + return group == null ? super.prefSpeed() : Math.min(group.minSpeed, unit.speed()); + } + + @Override + public boolean shouldFire(){ + return stance != UnitStance.holdFire; + } + @Override public void hit(Bullet bullet){ if(unit.team.isAI() && bullet.owner instanceof Teamc teamc && teamc.team() != unit.team && attackTarget == null && @@ -259,6 +412,8 @@ public class CommandAI extends AIController{ @Override public void commandPosition(Vec2 pos){ + if(pos == null) return; + commandPosition(pos, false); if(commandController != null){ commandController.commandPosition(pos); @@ -266,8 +421,10 @@ public class CommandAI extends AIController{ } public void commandPosition(Vec2 pos, boolean stopWhenInRange){ - targetPos = pos; - lastTargetPos = pos; + if(pos == null) return; + + //this is an allocation, but it's relatively rarely called anyway, and outside mutations must be prevented + targetPos = lastTargetPos = pos.cpy(); attackTarget = null; pathId = Vars.controlPath.nextTargetId(); this.stopWhenInRange = stopWhenInRange; 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/async/PhysicsProcess.java b/core/src/mindustry/async/PhysicsProcess.java index f9d0ab9405..183d126217 100644 --- a/core/src/mindustry/async/PhysicsProcess.java +++ b/core/src/mindustry/async/PhysicsProcess.java @@ -10,11 +10,11 @@ import mindustry.entities.*; import mindustry.gen.*; public class PhysicsProcess implements AsyncProcess{ - private static final int - layers = 3, - layerGround = 0, - layerLegs = 1, - layerFlying = 2; + public static final int + layers = 3, + layerGround = 0, + layerLegs = 1, + layerFlying = 2; private PhysicsWorld physics; private Seq refs = new Seq<>(false); @@ -58,9 +58,7 @@ public class PhysicsProcess implements AsyncProcess{ //save last position PhysicRef ref = entity.physref; - ref.body.layer = - entity.type.allowLegStep && entity.type.legPhysicsLayer ? layerLegs : - entity.isGrounded() ? layerGround : layerFlying; + ref.body.layer = entity.collisionLayer(); ref.x = entity.x; ref.y = entity.y; ref.body.local = local || entity.isLocal(); diff --git a/core/src/mindustry/audio/SoundControl.java b/core/src/mindustry/audio/SoundControl.java index 93f8fda115..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 2f3e166592..62af440a16 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -160,7 +160,7 @@ public class Blocks{ //logic message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank, canvas, reinforcedMessage, - worldProcessor, worldCell, worldMessage, + worldProcessor, worldCell, worldMessage, worldSwitch, //campaign launchPad, interplanetaryAccelerator @@ -570,7 +570,7 @@ public class Blocks{ snowWall = new StaticWall("snow-wall"); duneWall = new StaticWall("dune-wall"){{ - basalt.asFloor().wall = darksandWater.asFloor().wall = darksandTaintedWater.asFloor().wall = this; + hotrock.asFloor().wall = magmarock.asFloor().wall = basalt.asFloor().wall = darksandWater.asFloor().wall = darksandTaintedWater.asFloor().wall = this; attributes.set(Attribute.sand, 2f); }}; @@ -2408,7 +2408,7 @@ public class Blocks{ largeSolarPanel = new SolarGenerator("solar-panel-large"){{ requirements(Category.power, with(Items.lead, 80, Items.silicon, 110, Items.phaseFabric, 15)); size = 3; - powerProduction = 1.3f; + powerProduction = 1.6f; }}; thoriumReactor = new NuclearReactor("thorium-reactor"){{ @@ -2433,6 +2433,7 @@ public class Blocks{ itemDuration = 140f; ambientSound = Sounds.pulse; ambientSoundVolume = 0.07f; + liquidCapacity = 60f; consumePower(25f); consumeItem(Items.blastCompound); @@ -3849,16 +3850,19 @@ public class Blocks{ requirements(Category.turret, with(Items.copper, 1000, Items.metaglass, 600, Items.surgeAlloy, 300, Items.plastanium, 200, Items.silicon, 600)); ammo( - Items.surgeAlloy, new PointBulletType(){{ + Items.surgeAlloy, new RailBulletType(){{ shootEffect = Fx.instShoot; hitEffect = Fx.instHit; + pierceEffect = Fx.railHit; smokeEffect = Fx.smokeCloud; - trailEffect = Fx.instTrail; + pointEffect = Fx.instTrail; despawnEffect = Fx.instBomb; - trailSpacing = 20f; + pointEffectSpace = 20f; damage = 1350; buildingDamageMultiplier = 0.2f; - speed = brange; + maxDamageFraction = 0.6f; + pierceDamageFactor = 1f; + length = brange; hitShake = 6f; ammoMultiplier = 1f; }} @@ -3965,6 +3969,7 @@ public class Blocks{ hitColor = Pal.meltdownHit; status = StatusEffects.melting; drawSize = 420f; + timescaleDamage = true; incendChance = 0.4f; incendSpread = 5f; @@ -4562,6 +4567,7 @@ public class Blocks{ loopSoundVolume = 0.6f; deathSound = Sounds.largeExplosion; targetAir = false; + targetUnderBlocks = false; fogRadius = 6f; @@ -4574,7 +4580,7 @@ public class Blocks{ deathExplosionEffect = Fx.massiveExplosion; shootOnDeath = true; shake = 10f; - bullet = new ExplosionBulletType(700f, 65f){{ + bullet = new ExplosionBulletType(1500f, 65f){{ hitColor = Pal.redLight; shootEffect = new MultiEffect(Fx.massiveExplosion, Fx.scatheExplosion, Fx.scatheLight, new WaveEffect(){{ lifetime = 10f; @@ -4583,7 +4589,7 @@ public class Blocks{ }}); collidesAir = false; - buildingDamageMultiplier = 0.3f; + buildingDamageMultiplier = 0.25f; ammoMultiplier = 1f; fragLifeMin = 0.1f; @@ -4598,7 +4604,7 @@ public class Blocks{ width = height = 18f; collidesTiles = false; splashDamageRadius = 40f; - splashDamage = 80f; + splashDamage = 160f; backColor = trailColor = hitColor = Pal.redLight; frontColor = Color.white; smokeEffect = Fx.shootBigSmoke2; @@ -5924,7 +5930,7 @@ public class Blocks{ forceDark = true; privileged = true; size = 1; - maxInstructionsPerTick = 500; + maxInstructionsPerTick = 1000; range = Float.MAX_VALUE; }}; @@ -5944,6 +5950,13 @@ public class Blocks{ privileged = true; }}; + worldSwitch = new SwitchBlock("world-switch"){{ + requirements(Category.logic, BuildVisibility.editorOnly, with()); + + targetable = false; + privileged = true; + }}; + //endregion } } diff --git a/core/src/mindustry/content/ErekirTechTree.java b/core/src/mindustry/content/ErekirTechTree.java index 89f128ae72..6c4571a43a 100644 --- a/core/src/mindustry/content/ErekirTechTree.java +++ b/core/src/mindustry/content/ErekirTechTree.java @@ -447,11 +447,11 @@ public class ErekirTechTree{ //nodeProduce(Liquids.gallium, () -> {}); }); + }); - nodeProduce(Items.surgeAlloy, () -> { - nodeProduce(Items.phaseFabric, () -> { + nodeProduce(Items.surgeAlloy, () -> { + nodeProduce(Items.phaseFabric, () -> { - }); }); }); }); diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index 1d1301abaf..944bd87168 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -1710,7 +1710,7 @@ public class Fx{ }), regenSuppressParticle = new Effect(35f, e -> { - color(Pal.sapBullet, e.color, e.fin()); + color(e.color, Color.white, e.fin()); stroke(e.fout() * 1.4f + 0.5f); randLenVectors(e.id, 4, 17f * e.fin(), (x, y) -> { @@ -1729,7 +1729,7 @@ public class Fx{ Tmp.bz2.valueAt(Tmp.v4, e.fout()); - color(Pal.sapBullet); + color(e.color); Fill.circle(Tmp.v4.x, Tmp.v4.y, e.fslope() * 2f + 0.1f); }).followParent(false).rotWithParent(false), @@ -2445,6 +2445,26 @@ public class Fx{ Lines.poly(e.x, e.y, 6, e.rotation + e.fin()); }).followParent(true), + arcShieldBreak = new Effect(40, e -> { + Lines.stroke(3 * e.fout(), e.color); + if(e.data instanceof Unit u){ + ShieldArcAbility ab = (ShieldArcAbility) Structs.find(u.abilities, a -> a instanceof ShieldArcAbility); + if(ab != null){ + Vec2 pos = Tmp.v1.set(ab.x, ab.y).rotate(u.rotation - 90f).add(u); + Lines.arc(pos.x, pos.y, ab.radius + ab.width/2, ab.angle / 360f, u.rotation + ab.angleOffset - ab.angle / 2f); + Lines.arc(pos.x, pos.y, ab.radius - ab.width/2, ab.angle / 360f, u.rotation + ab.angleOffset - ab.angle / 2f); + for(int i : Mathf.signs){ + float + px = pos.x + Angles.trnsx(u.rotation + ab.angleOffset - ab.angle / 2f * i, ab.radius + ab.width / 2), + py = pos.y + Angles.trnsy(u.rotation + ab.angleOffset - ab.angle / 2f * i, ab.radius + ab.width / 2), + px1 = pos.x + Angles.trnsx(u.rotation + ab.angleOffset - ab.angle / 2f * i, ab.radius - ab.width / 2), + py1 = pos.y + Angles.trnsy(u.rotation + ab.angleOffset - ab.angle / 2f * i, ab.radius - ab.width / 2); + Lines.line(px, py, px1, py1); + } + } + } + }).followParent(true), + coreLandDust = new Effect(100f, e -> { color(e.color, e.fout(0.1f)); rand.setSeed(e.id); @@ -2558,5 +2578,23 @@ public class Fx{ stroke(data.region.height * scl); line(data.region, data.a.x + ox, data.a.y + oy, data.b.x + ox, data.b.y + oy, false); - }).layer(Layer.groundUnit + 5f); + }).layer(Layer.groundUnit + 5f), + + debugLine = new Effect(90f, 1000000000000f, e -> { + if(!(e.data instanceof Vec2[] vec)) return; + + Draw.color(e.color); + Lines.stroke(1f); + + if(vec.length == 2){ + Lines.line(vec[0].x, vec[0].y, vec[1].x, vec[1].y); + }else{ + Lines.beginLine(); + for(Vec2 v : vec) + Lines.linePoint(v.x, v.y); + Lines.endLine(); + } + + Draw.reset(); + }); } diff --git a/core/src/mindustry/content/Liquids.java b/core/src/mindustry/content/Liquids.java index 0f95a02685..432b4463cc 100644 --- a/core/src/mindustry/content/Liquids.java +++ b/core/src/mindustry/content/Liquids.java @@ -54,7 +54,7 @@ public class Liquids{ capPuddles = false; spreadTarget = Liquids.water; moveThroughBlocks = true; - incinerable = true; + incinerable = false; blockReactive = false; canStayOn.addAll(water, oil, cryofluid); diff --git a/core/src/mindustry/content/StatusEffects.java b/core/src/mindustry/content/StatusEffects.java index b9f25c2cbb..ff3dcf43df 100644 --- a/core/src/mindustry/content/StatusEffects.java +++ b/core/src/mindustry/content/StatusEffects.java @@ -11,7 +11,7 @@ import mindustry.type.*; import static mindustry.Vars.*; public class StatusEffects{ - public static StatusEffect none, burning, freezing, unmoving, slow, fast, wet, muddy, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss, sporeSlowed, disarmed, electrified, invincible; + public static StatusEffect none, burning, freezing, unmoving, slow, fast, wet, muddy, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss, sporeSlowed, disarmed, electrified, invincible, dynamic; public static void load(){ @@ -64,12 +64,12 @@ public class StatusEffects{ init(() -> opposite(fast)); }}; - fast = new StatusEffect("fast"){{ - color = Pal.boostTo; - speedMultiplier = 1.6f; + fast = new StatusEffect("fast"){{ + color = Pal.boostTo; + speedMultiplier = 1.6f; - init(() -> opposite(slow)); - }}; + init(() -> opposite(slow)); + }}; wet = new StatusEffect("wet"){{ color = Color.royal; @@ -80,10 +80,8 @@ public class StatusEffects{ init(() -> { affinity(shocked, (unit, result, time) -> { - float pierceFraction = 0.3f; + unit.damage(transitionDamage); - unit.damagePierce(transitionDamage * pierceFraction); - unit.damage(transitionDamage * (1f - pierceFraction)); if(unit.team == state.rules.waveTeam){ Events.fire(Trigger.shock); } @@ -205,5 +203,11 @@ public class StatusEffects{ invincible = new StatusEffect("invincible"){{ healthMultiplier = Float.POSITIVE_INFINITY; }}; + + dynamic = new StatusEffect("dynamic"){{ + show = false; + dynamic = true; + permanent = true; + }}; } } diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index e5145be5b8..089f5d4e39 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -197,6 +197,8 @@ public class UnitTypes{ singleTarget = true; drownTimeMultiplier = 4f; + abilities.add(new ShieldRegenFieldAbility(25f, 250f, 60f * 1, 60f)); + BulletType smallBullet = new BasicBulletType(3f, 10){{ width = 7f; height = 9f; @@ -219,10 +221,10 @@ public class UnitTypes{ shoot.shots = 3; shoot.shotDelay = 4f; - bullet = new BasicBulletType(7f, 50){{ + bullet = new BasicBulletType(8f, 80){{ width = 11f; height = 20f; - lifetime = 25f; + lifetime = 27f; shootEffect = Fx.shootBig; lightning = 2; lightningLength = 6; @@ -1285,7 +1287,6 @@ public class UnitTypes{ lowAltitude = true; ammoType = new PowerAmmoType(900); - mineTier = 2; mineSpeed = 3.5f; @@ -1844,6 +1845,7 @@ public class UnitTypes{ armor = 3f; buildSpeed = 1.5f; + rotateToBuilding = false; weapons.add(new RepairBeamWeapon("repair-beam-weapon-center"){{ x = 0f; @@ -1934,6 +1936,7 @@ public class UnitTypes{ abilities.add(new StatusFieldAbility(StatusEffects.overclock, 60f * 6, 60f * 6f, 60f)); buildSpeed = 2f; + rotateToBuilding = false; weapons.add(new Weapon("plasma-mount-weapon"){{ @@ -2008,6 +2011,7 @@ public class UnitTypes{ trailScl = 2f; buildSpeed = 2f; + rotateToBuilding = false; weapons.add(new RepairBeamWeapon("repair-beam-weapon-center"){{ x = 11f; @@ -2149,6 +2153,7 @@ public class UnitTypes{ trailScl = 3.2f; buildSpeed = 3f; + rotateToBuilding = false; abilities.add(new EnergyFieldAbility(40f, 65f, 180f){{ statusDuration = 60f * 6f; @@ -2192,6 +2197,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){ @@ -2243,7 +2249,13 @@ public class UnitTypes{ }}); } } - + abilities.add(new SuppressionFieldAbility(){{ + orbRadius = 5; + particleSize = 3; + y = -10f; + particles = 10; + color = particleColor = effectColor = Pal.heal; + }}); weapons.add(new Weapon("emp-cannon-mount"){{ rotate = true; @@ -4051,6 +4063,8 @@ public class UnitTypes{ isEnemy = false; envDisabled = 0; + range = 60f; + faceTarget = true; targetPriority = -2; lowAltitude = false; mineWalls = true; @@ -4115,8 +4129,10 @@ public class UnitTypes{ isEnemy = false; envDisabled = 0; + range = 60f; targetPriority = -2; lowAltitude = false; + faceTarget = true; mineWalls = true; mineFloor = false; mineHardnessScaling = false; @@ -4192,6 +4208,8 @@ public class UnitTypes{ isEnemy = false; envDisabled = 0; + range = 65f; + faceTarget = true; targetPriority = -2; lowAltitude = false; mineWalls = true; diff --git a/core/src/mindustry/core/ContentLoader.java b/core/src/mindustry/core/ContentLoader.java index 0fabcc5ce8..91e9c80824 100644 --- a/core/src/mindustry/core/ContentLoader.java +++ b/core/src/mindustry/core/ContentLoader.java @@ -6,6 +6,7 @@ import arc.func.*; import arc.graphics.*; import arc.struct.*; import arc.util.*; +import mindustry.ai.*; import mindustry.content.*; import mindustry.ctype.*; import mindustry.entities.bullet.*; @@ -40,6 +41,8 @@ public class ContentLoader{ /** Creates all base types. */ public void createBaseContent(){ + UnitCommand.loadAll(); + UnitStance.loadAll(); TeamEntries.load(); Items.load(); StatusEffects.load(); @@ -310,4 +313,28 @@ public class ContentLoader{ public Planet planet(String name){ return getByName(ContentType.planet, name); } + + public Seq unitStances(){ + return getBy(ContentType.unitStance); + } + + public UnitStance unitStance(int id){ + return getByID(ContentType.unitStance, id); + } + + public UnitStance unitStance(String name){ + return getByName(ContentType.unitStance, name); + } + + public Seq unitCommands(){ + return getBy(ContentType.unitCommand); + } + + public UnitCommand unitCommand(int id){ + return getByID(ContentType.unitCommand, id); + } + + public UnitCommand unitCommand(String name){ + return getByName(ContentType.unitCommand, name); + } } diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 9d6a699bde..d39b338b9b 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -53,7 +53,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(){ @@ -332,6 +332,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 +558,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 +569,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 +661,10 @@ public class Control implements ApplicationListener, Loadable{ core.items.each((i, a) -> i.unlock()); } + if(backgroundPaused && settings.getBool("backgroundpause") && !net.active()){ + state.set(State.paused); + } + //cannot launch while paused if(state.isPaused() && renderer.isCutscene()){ state.set(State.playing); diff --git a/core/src/mindustry/core/GameState.java b/core/src/mindustry/core/GameState.java index 0e7e06436e..7c89abe05d 100644 --- a/core/src/mindustry/core/GameState.java +++ b/core/src/mindustry/core/GameState.java @@ -32,6 +32,10 @@ public class GameState{ public Rules rules = new Rules(); /** Statistics for this save/game. Displayed after game over. */ public GameStats stats = new GameStats(); + /** Markers not linked to objectives. Controlled by world processors. */ + public MapMarkers markers = new MapMarkers(); + /** Locale-specific string bundles of current map */ + public MapLocales mapLocales = new MapLocales(); /** Global attributes of the environment, calculated by weather. */ public Attributes envAttrs = new Attributes(); /** Team data. Gets reset every new game. */ diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index 9f6a8bf922..914e8eb003 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -342,16 +342,6 @@ public class NetClient implements ApplicationListener{ @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; } diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index 52ae9dd382..5de465d1be 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -696,7 +696,6 @@ public class NetServer implements ApplicationListener{ vector.limit(maxMove); float prevx = unit.x, prevy = unit.y; - //unit.set(con.lastPosition); if(!unit.isFlying()){ unit.move(vector.x, vector.y); }else{ @@ -778,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 8b3614436d..7b7d1dc155 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -46,7 +46,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; @@ -181,11 +181,14 @@ public class Renderer implements ApplicationListener{ enableEffects = settings.getBool("effects"); drawDisplays = !settings.getBool("hidedisplays"); drawLight = settings.getBool("drawlight", true); + pixelate = Core.settings.getBool("pixelate"); if(landTime > 0){ if(!state.isPaused()){ CoreBuild build = landCore == null ? player.bestCore() : landCore; - build.updateLandParticles(); + if(build != null){ + build.updateLandParticles(); + } } if(!state.isPaused()){ @@ -225,7 +228,7 @@ public class Renderer implements ApplicationListener{ shakeIntensity = 0f; } - if(pixelator.enabled()){ + if(renderer.pixelate){ pixelator.drawPixelate(); }else{ draw(); @@ -316,7 +319,7 @@ public class Renderer implements ApplicationListener{ Events.fire(Trigger.draw); MapPreviewLoader.checkPreviews(); - if(pixelator.enabled()){ + if(renderer.pixelate){ pixelator.register(); } @@ -369,6 +372,25 @@ 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); diff --git a/core/src/mindustry/core/UI.java b/core/src/mindustry/core/UI.java index 92d8552618..d634e122b5 100644 --- a/core/src/mindustry/core/UI.java +++ b/core/src/mindustry/core/UI.java @@ -78,7 +78,7 @@ public class UI implements ApplicationListener, Loadable{ public IntMap followUpMenus; - public Cursor drillCursor, unloadCursor, targetCursor; + public Cursor drillCursor, unloadCursor, targetCursor, repairCursor; private @Nullable Element lastAnnouncement; @@ -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); @@ -128,6 +126,9 @@ public class UI implements ApplicationListener, Loadable{ Tooltips.getInstance().animations = false; Tooltips.getInstance().textProvider = text -> new Tooltip(t -> t.background(Styles.black6).margin(4f).add(text)); + if(mobile){ + Tooltips.getInstance().offsetY += Scl.scl(60f); + } Core.settings.setErrorHandler(e -> { Log.err(e); @@ -139,6 +140,7 @@ public class UI implements ApplicationListener, Loadable{ drillCursor = Core.graphics.newCursor("drill", Fonts.cursorScale()); unloadCursor = Core.graphics.newCursor("unload", Fonts.cursorScale()); targetCursor = Core.graphics.newCursor("target", Fonts.cursorScale()); + repairCursor = Core.graphics.newCursor("repair", Fonts.cursorScale()); } @Override @@ -270,8 +272,15 @@ public class UI implements ApplicationListener, Loadable{ }); } - public void showTextInput(String titleText, String text, int textLength, String def, boolean numbers, Cons confirmed, Runnable closed){ + + public void showTextInput(String titleText, String text, int textLength, String def, boolean numbers, Cons confirmed, Runnable closed) { + showTextInput(titleText, text, textLength, def, numbers, false, confirmed, closed); + } + + public void showTextInput(String titleText, String text, int textLength, String def, boolean numbers, boolean allowEmpty, Cons confirmed, Runnable closed){ if(mobile){ + var description = (text.startsWith("@") ? Core.bundle.get(text.substring(1)) : text); + var empty = allowEmpty; Core.input.getTextInput(new TextInput(){{ this.title = (titleText.startsWith("@") ? Core.bundle.get(titleText.substring(1)) : titleText); this.text = def; @@ -279,7 +288,8 @@ public class UI implements ApplicationListener, Loadable{ this.maxLength = textLength; this.accepted = confirmed; this.canceled = closed; - this.allowEmpty = false; + this.allowEmpty = empty; + this.message = description; }}); }else{ new Dialog(titleText){{ @@ -296,11 +306,11 @@ public class UI implements ApplicationListener, Loadable{ buttons.button("@ok", () -> { confirmed.get(field.getText()); hide(); - }).disabled(b -> field.getText().isEmpty()); + }).disabled(b -> !allowEmpty && field.getText().isEmpty()); keyDown(KeyCode.enter, () -> { String text = field.getText(); - if(!text.isEmpty()){ + if(allowEmpty || !text.isEmpty()){ confirmed.get(text); hide(); } diff --git a/core/src/mindustry/ctype/ContentType.java b/core/src/mindustry/ctype/ContentType.java index eb67a52003..136e5257e0 100644 --- a/core/src/mindustry/ctype/ContentType.java +++ b/core/src/mindustry/ctype/ContentType.java @@ -1,6 +1,7 @@ package mindustry.ctype; import arc.util.*; +import mindustry.ai.*; import mindustry.entities.bullet.*; import mindustry.type.*; import mindustry.world.*; @@ -22,7 +23,9 @@ public enum ContentType{ error(null), planet(Planet.class), ammo_UNUSED(null), - team(TeamEntry.class); + team(TeamEntry.class), + unitCommand(UnitCommand.class), + unitStance(UnitStance.class); public static final ContentType[] all = values(); diff --git a/core/src/mindustry/editor/MapEditor.java b/core/src/mindustry/editor/MapEditor.java index 96418def2f..37a10cca89 100644 --- a/core/src/mindustry/editor/MapEditor.java +++ b/core/src/mindustry/editor/MapEditor.java @@ -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..17cc9f2764 --- /dev/null +++ b/core/src/mindustry/editor/MapLocalesDialog.java @@ -0,0 +1,775 @@ +package mindustry.editor; + +import arc.Core; +import arc.func.*; +import arc.graphics.*; +import arc.scene.style.*; +import arc.scene.ui.*; +import arc.scene.ui.Button.*; +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/editor/MapRenderer.java b/core/src/mindustry/editor/MapRenderer.java index a1c3d8a933..f3249f40ee 100644 --- a/core/src/mindustry/editor/MapRenderer.java +++ b/core/src/mindustry/editor/MapRenderer.java @@ -139,12 +139,16 @@ public class MapRenderer implements Disposable{ mesh.draw(idxWall, region, wx * tilesize, wy * tilesize, 8, 8); } - float offsetX = -(wall.size / 3) * tilesize, offsetY = -(wall.size / 3) * tilesize; + float offsetX = -((wall.size + 1) / 3) * tilesize, offsetY = -((wall.size + 1) / 3) * tilesize; //draw non-synthetic wall or ore if((wall.update || wall.destructible) && center){ mesh.setColor(team.color); region = Core.atlas.find("block-border-editor"); + if(wall.size == 2){ + offsetX += tilesize; + offsetY += tilesize; + } }else if(!useSyntheticWall && wall != Blocks.air && center){ region = getIcon(wall, idxWall); diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index f36f66df87..2c2426deba 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -2,6 +2,7 @@ package mindustry.entities; import arc.*; import arc.func.*; +import arc.graphics.*; import arc.math.*; import arc.math.geom.*; import arc.struct.*; @@ -38,10 +39,13 @@ public class Damage{ private static Unit tmpUnit; public static void applySuppression(Team team, float x, float y, float range, float reload, float maxDelay, float applyParticleChance, @Nullable Position source){ + applySuppression(team, x, y, range, reload, maxDelay, applyParticleChance, source, Pal.sapBullet); + } + public static void applySuppression(Team team, float x, float y, float range, float reload, float maxDelay, float applyParticleChance, @Nullable Position source, Color effectColor){ builds.clear(); indexer.eachBlock(null, x, y, range, build -> build.team != team, build -> { float prev = build.healSuppressionTime; - build.applyHealSuppression(reload + 1f); + build.applyHealSuppression(reload + 1f, effectColor); //TODO maybe should be block field instead of instanceof check if(build.wasRecentlyHealed(60f * 12f) || build.block.suppressable){ @@ -58,7 +62,7 @@ public class Damage{ for(var build : builds){ if(Mathf.chance(scaledChance)){ Time.run(Mathf.random(maxDelay), () -> { - Fx.regenSuppressSeek.at(build.x + Mathf.range(build.block.size * tilesize / 2f), build.y + Mathf.range(build.block.size * tilesize / 2f), 0f, source); + Fx.regenSuppressSeek.at(build.x + Mathf.range(build.block.size * tilesize / 2f), build.y + Mathf.range(build.block.size * tilesize / 2f), 0f, effectColor, source); }); } } diff --git a/core/src/mindustry/entities/EntityGroup.java b/core/src/mindustry/entities/EntityGroup.java index 48be288345..ea8ef0cdb8 100644 --- a/core/src/mindustry/entities/EntityGroup.java +++ b/core/src/mindustry/entities/EntityGroup.java @@ -28,6 +28,7 @@ public class EntityGroup implements Iterable{ private int index; public static int nextId(){ + if(lastId >= Integer.MAX_VALUE - 2) lastId = 0; return lastId++; } @@ -145,6 +146,12 @@ public class EntityGroup implements Iterable{ tree.intersect(x, y, width, height, out); } + public boolean intersect(float x, float y, float width, float height, Boolf out){ + //don't waste time for empty groups + if(isEmpty()) return false; + return tree.intersect(x, y, width, height, out); + } + public Seq intersect(float x, float y, float width, float height){ intersectArray.clear(); //don't waste time for empty groups 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 40526baf05..ec546882b4 100644 --- a/core/src/mindustry/entities/Puddles.java +++ b/core/src/mindustry/entities/Puddles.java @@ -1,7 +1,6 @@ package mindustry.entities; import arc.math.*; -import arc.struct.*; import arc.util.*; import mindustry.*; import mindustry.content.*; @@ -11,9 +10,9 @@ import mindustry.type.*; import mindustry.world.*; import mindustry.world.meta.*; -public class Puddles{ - private static final IntMap map = new IntMap<>(); +import static mindustry.Vars.*; +public class Puddles{ public static final float maxLiquid = 70f; /** Deposits a Puddle between tile and source. */ @@ -27,8 +26,8 @@ public class Puddles{ } /** Returns the Puddle on the specified tile. May return null. */ - public static Puddle get(Tile tile){ - return map.get(tile.pos()); + 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){ @@ -57,7 +56,7 @@ public class Puddles{ if(tile.floor().isLiquid && !canStayOn(liquid, tile.floor().liquidDrop)){ reactPuddle(tile.floor().liquidDrop, liquid, amount, tile, ax, ay); - Puddle p = map.get(tile.pos()); + Puddle p = get(tile); if(initial && p != null && p.lastRipple <= Time.time - 40f){ Fx.ripple.at(ax, ay, 1f, tile.floor().liquidDrop.color); @@ -68,7 +67,7 @@ public class Puddles{ if(tile.floor().solid) return; - Puddle p = map.get(tile.pos()); + Puddle p = get(tile); if(p == null || p.liquid == null){ if(!Vars.net.client()){ //do not create puddles clientside as that destroys syncing @@ -77,7 +76,7 @@ public class Puddles{ puddle.liquid = liquid; puddle.amount = amount; puddle.set(ax, ay); - map.put(tile.pos(), puddle); + register(puddle); puddle.add(); } }else if(p.liquid == liquid){ @@ -101,11 +100,11 @@ public class Puddles{ public static void remove(Tile tile){ if(tile == null) return; - map.remove(tile.pos()); + world.tiles.setPuddle(tile.array(), null); } public static void register(Puddle puddle){ - map.put(puddle.tile().pos(), puddle); + world.tiles.setPuddle(puddle.tile().array(), puddle); } /** Reacts two liquids together at a location. */ diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index 184203a9b7..659112d57a 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -20,22 +20,18 @@ public class Units{ private static final Rect hitrect = new Rect(); private static Unit result; private static float cdist, cpriority; - private static boolean boolResult; private static int intResult; private static Building buildResult; //prevents allocations in anyEntities private static boolean anyEntityGround; private static float aeX, aeY, aeW, aeH; - private static final Cons anyEntityLambda = unit -> { - if(boolResult) return; + private static final Boolf anyEntityLambda = unit -> { if((unit.isGrounded() && !unit.type.allowLegStep) == anyEntityGround){ unit.hitboxTile(hitrect); - - if(hitrect.overlaps(aeX, aeY, aeW, aeH)){ - boolResult = true; - } + return hitrect.overlaps(aeX, aeY, aeW, aeH); } + return false; }; @Remote(called = Loc.server) @@ -93,7 +89,7 @@ public class Units{ /** @return whether a new instance of a unit of this team can be created. */ public static boolean canCreate(Team team, UnitType type){ - return team.data().countType(type) < getCap(team) && !type.isBanned(); + return !type.useUnitCap || (team.data().countType(type) < getCap(team) && !type.isBanned()); } public static int getCap(Team team){ @@ -112,7 +108,7 @@ public class Units{ /** @return whether this player can interact with a specific tile. if either of these are null, returns true.*/ public static boolean canInteract(Player player, Building tile){ - return player == null || tile == null || tile.interactable(player.team()); + return player == null || tile == null || tile.interactable(player.team()) || state.rules.editor; } /** @@ -162,31 +158,26 @@ public class Units{ } public static boolean anyEntities(float x, float y, float width, float height, boolean ground){ - boolResult = false; anyEntityGround = ground; aeX = x; aeY = y; aeW = width; aeH = height; - nearby(x, y, width, height, anyEntityLambda); - return boolResult; + return nearbyCheck(x, y, width, height, anyEntityLambda); } + /** Note that this checks the tile hitbox, not the standard hitbox. */ public static boolean anyEntities(float x, float y, float width, float height, Boolf check){ - boolResult = false; - nearby(x, y, width, height, unit -> { - if(boolResult) return; + return nearbyCheck(x, y, width, height, unit -> { if(check.get(unit)){ unit.hitboxTile(hitrect); - if(hitrect.overlaps(x, y, width, height)){ - boolResult = true; - } + return hitrect.overlaps(x, y, width, height); } + return false; }); - return boolResult; } /** Returns the nearest damaged tile. */ @@ -201,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); } @@ -223,7 +224,10 @@ public class Units{ } }); - return buildResult; + var result = buildResult; + buildResult = null; + + return result; } /** Iterates through all buildings in a range. */ @@ -249,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); } } @@ -261,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); } } @@ -333,7 +337,7 @@ public class Units{ cdist = 0f; nearby(team, x, y, range, e -> { - if(!predicate.get(e)) return; + if(!e.isValid() || !predicate.get(e)) return; float dist = e.dst2(x, y); if(result == null || dist < cdist){ @@ -351,7 +355,7 @@ public class Units{ cdist = 0f; nearby(team, x, y, range, e -> { - if(!predicate.get(e)) return; + if(!e.isValid() || !predicate.get(e)) return; float dist = sort.cost(e, x, y); if(result == null || dist < cdist){ @@ -370,7 +374,7 @@ public class Units{ cdist = 0f; nearby(team, x - range, y - range, range*2f, range*2f, e -> { - if(!predicate.get(e)) return; + if(!e.isValid() || !predicate.get(e)) return; float dist = e.dst2(x, y); if(result == null || dist < cdist){ @@ -428,6 +432,14 @@ public class Units{ Groups.unit.intersect(x, y, width, height, cons); } + /** + * Iterates over all units in a rectangle. + * @return whether a unit was found. + * */ + public static boolean nearbyCheck(float x, float y, float width, float height, Boolf cons){ + return Groups.unit.intersect(x, y, width, height, cons); + } + /** Iterates over all units in a rectangle. */ public static void nearby(Rect rect, Cons cons){ nearby(rect.x, rect.y, rect.width, rect.height, cons); diff --git a/core/src/mindustry/entities/abilities/ShieldArcAbility.java b/core/src/mindustry/entities/abilities/ShieldArcAbility.java index 548a123899..b63a88bf1e 100644 --- a/core/src/mindustry/entities/abilities/ShieldArcAbility.java +++ b/core/src/mindustry/entities/abilities/ShieldArcAbility.java @@ -21,7 +21,7 @@ public class ShieldArcAbility extends Ability{ private static Vec2 paramPos = new Vec2(); private static final Cons shieldConsumer = b -> { if(b.team != paramUnit.team && b.type.absorbable && paramField.data > 0 && - !paramPos.within(b, paramField.radius + paramField.width/2f) && + !b.within(paramPos, paramField.radius - paramField.width/2f) && Tmp.v1.set(b).add(b.vel).within(paramPos, paramField.radius + paramField.width/2f) && Angles.within(paramPos.angleTo(b), paramUnit.rotation + paramField.angleOffset, paramField.angle / 2f)){ @@ -32,7 +32,7 @@ public class ShieldArcAbility extends Ability{ if(paramField.data <= b.damage()){ paramField.data -= paramField.cooldown * paramField.regen; - //TODO fx + Fx.arcShieldBreak.at(paramPos.x, paramPos.y, 0, paramUnit.team.color, paramUnit); } paramField.data -= b.damage(); @@ -79,6 +79,7 @@ public class ShieldArcAbility extends Ability{ @Override public void update(Unit unit){ + if(data < max){ data += Time.delta * regen; } @@ -92,7 +93,8 @@ public class ShieldArcAbility extends Ability{ paramField = this; paramPos.set(x, y).rotate(unit.rotation - 90f).add(unit); - Groups.bullet.intersect(unit.x - radius, unit.y - radius, radius * 2f, radius * 2f, shieldConsumer); + float reach = radius + width / 2f; + Groups.bullet.intersect(paramPos.x - reach, paramPos.y - reach, reach * 2f, reach * 2f, shieldConsumer); }else{ widthScale = Mathf.lerpDelta(widthScale, 0f, 0.11f); } @@ -105,7 +107,6 @@ public class ShieldArcAbility extends Ability{ @Override public void draw(Unit unit){ - if(widthScale > 0.001f){ Draw.z(Layer.shields); diff --git a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java index 7c3f56b53c..d421ebf848 100644 --- a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java +++ b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java @@ -27,6 +27,7 @@ public class SuppressionFieldAbility extends Ability{ public boolean active = true; public Interp particleInterp = f -> Interp.circleOut.apply(Interp.slope.apply(f)); public Color particleColor = Pal.sap.cpy(); + public Color effectColor = Pal.sapBullet; public float applyParticleChance = 13f; @@ -38,7 +39,7 @@ public class SuppressionFieldAbility extends Ability{ if((timer += Time.delta) >= reload){ Tmp.v1.set(x, y).rotate(unit.rotation - 90f).add(unit); - Damage.applySuppression(unit.team, Tmp.v1.x, Tmp.v1.y, range, reload, reload, applyParticleChance, unit); + Damage.applySuppression(unit.team, Tmp.v1.x, Tmp.v1.y, range, reload, reload, applyParticleChance, unit, effectColor); timer = 0f; } } diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 780978e408..64737495e7 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -48,6 +48,8 @@ public class BulletType extends Content implements Cloneable{ public int pierceCap = -1; /** Multiplier of damage decreased per health pierced. */ public float pierceDamageFactor = 0f; + /** If positive, limits non-splash damage dealt to a fraction of the target's maximum health. */ + public float maxDamageFraction = -1f; /** If false, this bullet isn't removed after pierceCap is exceeded. Expert usage only. */ public boolean removeAfterPierce = true; /** For piercing lasers, setting this to true makes it get absorbed by plastanium walls. */ @@ -158,6 +160,8 @@ public class BulletType extends Content implements Cloneable{ /** Bullet type that is created when this bullet expires. */ public @Nullable BulletType fragBullet = null; + /** If true, frag bullets are delayed to the next frame. Fixes obscure bugs with piercing bullet types spawning frags immediately and screwing up the Damage temporary variables. */ + public boolean delayFrags = false; /** Degree spread range of fragmentation bullets. */ public float fragRandomSpread = 360f; /** Uniform spread between each frag bullet in degrees. */ @@ -170,6 +174,8 @@ 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; /** Bullet that is created at a fixed interval. */ public @Nullable BulletType intervalBullet; @@ -255,6 +261,8 @@ public class BulletType extends Content implements Cloneable{ public float suppressionDuration = 60f * 8f; /** Chance of suppression effect occurring on block, scaled down by number of blocks. */ public float suppressionEffectChance = 50f; + /** Color used for the regenSuppressSeek effect. */ + public Color suppressColor = Pal.sapBullet; /** Color of lightning created by bullet. */ public Color lightningColor = Pal.surge; @@ -380,10 +388,20 @@ public class BulletType extends Content implements Cloneable{ boolean wasDead = entity instanceof Unit u && u.dead; if(entity instanceof Healthc h){ - if(pierceArmor){ - h.damagePierce(b.damage); + float damage = b.damage; + float shield = entity instanceof Shieldc s ? Math.max(s.shield(), 0f) : 0f; + if(maxDamageFraction > 0){ + 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{ - h.damage(b.damage); + health += shield; + } + if(pierceArmor){ + h.damagePierce(damage); + }else{ + h.damage(damage); } } @@ -432,7 +450,11 @@ public class BulletType extends Content implements Cloneable{ Effect.shake(hitShake, hitShake, b); if(fragOnHit){ - createFrags(b, x, y); + if(delayFrags && fragBullet != null && fragBullet.delayFrags){ + Core.app.post(() -> createFrags(b, x, y)); + }else{ + createFrags(b, x, y); + } } createPuddles(b, x, y); createIncend(b, x, y); @@ -440,7 +462,7 @@ public class BulletType extends Content implements Cloneable{ if(suppressionRange > 0){ //bullets are pooled, require separate Vec2 instance - Damage.applySuppression(b.team, b.x, b.y, suppressionRange, suppressionDuration, 0f, suppressionEffectChance, new Vec2(b.x, b.y)); + Damage.applySuppression(b.team, b.x, b.y, suppressionRange, suppressionDuration, 0f, suppressionEffectChance, new Vec2(b.x, b.y), suppressColor); } createSplashDamage(b, x, y); @@ -489,7 +511,7 @@ public class BulletType extends Content implements Cloneable{ public void createFrags(Bullet b, float x, float y){ if(fragBullet != null && (fragOnAbsorb || !b.absorbed)){ 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)); } diff --git a/core/src/mindustry/entities/bullet/ContinuousBulletType.java b/core/src/mindustry/entities/bullet/ContinuousBulletType.java index 0f95881285..a9ea18876b 100644 --- a/core/src/mindustry/entities/bullet/ContinuousBulletType.java +++ b/core/src/mindustry/entities/bullet/ContinuousBulletType.java @@ -11,6 +11,8 @@ public class ContinuousBulletType extends BulletType{ public float damageInterval = 5f; public boolean largeHit = false; public boolean continuous = true; + /** If a building fired this, whether to multiply damage by its timescale. */ + public boolean timescaleDamage = false; { removeAfterPierce = false; @@ -79,7 +81,12 @@ public class ContinuousBulletType extends BulletType{ } public void applyDamage(Bullet b){ + float damage = b.damage; + if(timescaleDamage && b.owner instanceof Building build){ + b.damage *= build.timeScale(); + } Damage.collideLine(b, b.team, hitEffect, b.x, b.y, b.rotation(), currentLength(b), largeHit, laserAbsorb, pierceCap); + b.damage = damage; } public float currentLength(Bullet b){ diff --git a/core/src/mindustry/entities/bullet/LaserBulletType.java b/core/src/mindustry/entities/bullet/LaserBulletType.java index 7450824c4a..c6c7c3de21 100644 --- a/core/src/mindustry/entities/bullet/LaserBulletType.java +++ b/core/src/mindustry/entities/bullet/LaserBulletType.java @@ -38,6 +38,7 @@ public class LaserBulletType extends BulletType{ hittable = false; absorbable = false; removeAfterPierce = false; + delayFrags = true; } public LaserBulletType(){ diff --git a/core/src/mindustry/entities/bullet/PointBulletType.java b/core/src/mindustry/entities/bullet/PointBulletType.java index 8bd5f4a779..863327a583 100644 --- a/core/src/mindustry/entities/bullet/PointBulletType.java +++ b/core/src/mindustry/entities/bullet/PointBulletType.java @@ -61,6 +61,7 @@ public class PointBulletType extends BulletType{ Building build = Vars.world.buildWorld(px, py); if(build != null && build.team != b.team){ build.collision(b); + hit(b, px, py); } } diff --git a/core/src/mindustry/entities/bullet/RailBulletType.java b/core/src/mindustry/entities/bullet/RailBulletType.java index 9058d2cd90..dfa41520f4 100644 --- a/core/src/mindustry/entities/bullet/RailBulletType.java +++ b/core/src/mindustry/entities/bullet/RailBulletType.java @@ -7,10 +7,6 @@ import mindustry.entities.*; import mindustry.gen.*; public class RailBulletType extends BulletType{ - //for calculating the furthest point - static float furthest = 0; - static boolean any = false; - public Effect pierceEffect = Fx.hitBulletSmall, pointEffect = Fx.none, lineEffect = Fx.none; public Effect endEffect = Fx.none; @@ -28,6 +24,7 @@ public class RailBulletType extends BulletType{ collides = false; keepVelocity = false; lifetime = 1f; + delayFrags = true; } @Override @@ -46,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 @@ -55,10 +50,8 @@ public class RailBulletType extends BulletType{ //bullet was stopped, decrease furthest distance if(b.damage <= 0f){ - furthest = Math.min(furthest, b.dst(x, y)); + b.fdata = Math.min(b.fdata, b.dst(x, y)); } - - any = true; } @Override @@ -66,10 +59,8 @@ public class RailBulletType extends BulletType{ super.init(b); b.fdata = length; - furthest = length; - any = false; - Damage.collideLine(b, b.team, b.type.hitEffect, b.x, b.y, b.rotation(), length, false, false); - float resultLen = furthest; + Damage.collideLine(b, b.team, b.type.hitEffect, b.x, b.y, b.rotation(), length, false, false, pierceCap); + float resultLen = b.fdata; Vec2 nor = Tmp.v1.trns(b.rotation(), 1f).nor(); if(pointEffect != Fx.none){ @@ -78,6 +69,8 @@ public class RailBulletType extends BulletType{ } } + boolean any = b.collided.size > 0; + if(!any && endEffect != Fx.none){ endEffect.at(b.x + nor.x * resultLen, b.y + nor.y * resultLen, b.rotation(), hitColor); } diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index 5b7ea1678a..0c5070febb 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -61,8 +61,12 @@ abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{ while(it.hasNext()){ BuildPlan plan = it.next(); Tile tile = world.tile(plan.x, plan.y); - if(tile == null || (plan.breaking && tile.block() == Blocks.air) || (!plan.breaking && ((tile.build != null && tile.build.rotation == plan.rotation) || !plan.block.rotate) && - (tile.block() == plan.block || (plan.block != null && (plan.block.isOverlay() && plan.block == tile.overlay() || (plan.block.isFloor() && plan.block == tile.floor())))))){ + boolean isSameDerelict = (tile != null && tile.build != null && tile.block() == plan.block && tile.build.tileX() == plan.x && tile.build.tileY() == plan.y && tile.team() == Team.derelict); + if(tile == null || (plan.breaking && tile.block() == Blocks.air) || (!plan.breaking && ((tile.build != null && tile.build.rotation == plan.rotation && !isSameDerelict) || !plan.block.rotate) && + //th block must be the same, but not derelict and the same + ((tile.block() == plan.block && !isSameDerelict) || + //same floor or overlay + (plan.block != null && (plan.block.isOverlay() && plan.block == tile.overlay() || (plan.block.isFloor() && plan.block == tile.floor())))))){ it.remove(); } @@ -82,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; } @@ -95,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; @@ -159,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 8602e87f1a..a8d027cf1e 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -90,6 +90,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, transient float healSuppressionTime = -1f; transient float lastHealTime = -120f * 10f; + transient Color suppressColor = Pal.sapBullet; private transient float lastDamageTime = -recentDamageTime; private transient float timeScale = 1f, timeScaleDuration; @@ -377,13 +378,9 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, float heat = 0f; - for(var edge : block.getEdges()){ - Building build = nearby(edge.x, edge.y); + for(var build : proximity){ if(build != null && build.team == team && build instanceof HeatBlock heater){ - //massive hack but I don't really care anymore - if(heater instanceof HeatConductorBuild cond){ - cond.updateHeat(); - } + boolean split = build.block instanceof HeatConductor cond && cond.splitHeat; // non-routers must face us, routers must face away - next to a redirector, they're forced to face away due to cycles anyway @@ -391,8 +388,13 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, //if there's a cycle, ignore its heat if(!(build instanceof HeatConductorBuild hc && hc.cameFrom.contains(id()))){ + //x/y coordinate difference across point of contact + float diff = (Math.min(Math.abs(build.x - x), Math.abs(build.y - y)) / tilesize); + //number of points that this block had contact with + int contactPoints = Math.min((int)(block.size/2f + build.block.size/2f - diff), Math.min(build.block.size, block.size)); + //heat is distributed across building size - float add = heater.heat() / build.block.size; + float add = heater.heat() / build.block.size * contactPoints; if(split){ //heat routers split heat across 3 surfaces add /= 3f; @@ -409,6 +411,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, cameFrom.addAll(hc.cameFrom); } } + + //massive hack but I don't really care anymore + if(heater instanceof HeatConductorBuild cond){ + cond.updateHeat(); + } } } } @@ -432,7 +439,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, } public void applyHealSuppression(float amount){ + applyHealSuppression(amount, Pal.sapBullet); + } + public void applyHealSuppression(float amount, Color suppressColor){ healSuppressionTime = Math.max(healSuppressionTime, Time.time + amount); + this.suppressColor = suppressColor; } public boolean isHealSuppressed(){ @@ -1236,7 +1247,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, public boolean checkSuppression(){ if(isHealSuppressed()){ if(Mathf.chanceDelta(0.03)){ - Fx.regenSuppressParticle.at(x + Mathf.range(block.size * tilesize/2f - 1f), y + Mathf.range(block.size * tilesize/2f - 1f)); + Fx.regenSuppressParticle.at(x + Mathf.range(block.size * tilesize/2f - 1f), y + Mathf.range(block.size * tilesize/2f - 1f), suppressColor); } return true; @@ -1333,6 +1344,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; @@ -1913,6 +1933,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, case controlled -> this instanceof ControlBlock c && c.isControlled() ? GlobalVars.ctrlPlayer : 0; case payloadCount -> getPayload() != null ? 1 : 0; case size -> block.size; + case cameraX, cameraY, cameraWidth, cameraHeight -> this instanceof ControlBlock c ? c.unit().sense(sensor) : 0; default -> Float.NaN; //gets converted to null in logic }; } diff --git a/core/src/mindustry/entities/comp/CrawlComp.java b/core/src/mindustry/entities/comp/CrawlComp.java index fa057f6730..d638d45c0b 100644 --- a/core/src/mindustry/entities/comp/CrawlComp.java +++ b/core/src/mindustry/entities/comp/CrawlComp.java @@ -63,7 +63,7 @@ abstract class CrawlComp implements Posc, Rotc, Hitboxc, Unitc{ @Override public void update(){ if(moving()){ - segmentRot = Angles.moveToward(segmentRot, rotation, type.segmentRotSpeed); + segmentRot = Angles.moveToward(segmentRot, rotation, type.segmentRotSpeed * Time.delta); int radius = (int)Math.max(0, hitSize / tilesize * 2f); int count = 0, solids = 0, deeps = 0; @@ -106,10 +106,10 @@ abstract class CrawlComp implements Posc, Rotc, Hitboxc, Unitc{ lastDeepFloor = null; } - lastCrawlSlowdown = Mathf.lerp(1f, type.crawlSlowdown, Mathf.clamp((float)solids / count / type.crawlSlowdownFrac)); + lastCrawlSlowdown = Mathf.lerpDelta(1f, type.crawlSlowdown, Mathf.clamp((float)solids / count / type.crawlSlowdownFrac)); } segmentRot = Angles.clampRange(segmentRot, rotation, type.segmentMaxRot); - crawlTime += vel.len(); + crawlTime += vel.len() * Time.delta; } } 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/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/ShieldComp.java b/core/src/mindustry/entities/comp/ShieldComp.java index ca70594caf..87519fd742 100644 --- a/core/src/mindustry/entities/comp/ShieldComp.java +++ b/core/src/mindustry/entities/comp/ShieldComp.java @@ -11,7 +11,7 @@ import mindustry.type.*; @Component abstract class ShieldComp implements Healthc, Posc{ - @Import float health, hitTime, x, y, healthMultiplier; + @Import float health, hitTime, x, y, healthMultiplier, armorOverride; @Import boolean dead; @Import Team team; @Import UnitType type; @@ -27,7 +27,7 @@ abstract class ShieldComp implements Healthc, Posc{ @Override public void damage(float amount){ //apply armor and scaling effects - rawDamage(Damage.applyArmor(amount, armor) / healthMultiplier / Vars.state.rules.unitHealth(team)); + rawDamage(Damage.applyArmor(amount, armorOverride >= 0f ? armorOverride : armor) / healthMultiplier / Vars.state.rules.unitHealth(team)); } @Replace diff --git a/core/src/mindustry/entities/comp/StatusComp.java b/core/src/mindustry/entities/comp/StatusComp.java index 0f95637707..56b7559455 100644 --- a/core/src/mindustry/entities/comp/StatusComp.java +++ b/core/src/mindustry/entities/comp/StatusComp.java @@ -16,14 +16,16 @@ import static mindustry.Vars.*; @Component abstract class StatusComp implements Posc, Flyingc{ - private Seq statuses = new Seq<>(); + private Seq statuses = new Seq<>(4); private transient Bits applied = new Bits(content.getBy(ContentType.status).size); //these are considered read-only - transient float speedMultiplier = 1, damageMultiplier = 1, healthMultiplier = 1, reloadMultiplier = 1, buildSpeedMultiplier = 1, dragMultiplier = 1; + //note: armor is a special case; it is an override when >= 0, otherwise ignored + transient float speedMultiplier = 1, damageMultiplier = 1, healthMultiplier = 1, reloadMultiplier = 1, buildSpeedMultiplier = 1, dragMultiplier = 1, armorOverride = -1f; transient boolean disarmed = false; @Import UnitType type; + @Import float maxHealth; /** Apply a status effect for 1 tick (for permanent effects) **/ void apply(StatusEffect effect){ @@ -108,6 +110,62 @@ abstract class StatusComp implements Posc, Flyingc{ return Tmp.c1.set(r / count, g / count, b / count, 1f); } + /** + * Applies a dynamic status effect, with stat multipliers that can be customized. + * @return the entry to write multipliers to. If the dynamic status was already applied, returns the previous entry. + * */ + public StatusEntry applyDynamicStatus(){ + if(hasEffect(StatusEffects.dynamic)){ + StatusEntry entry = statuses.find(s -> s.effect.dynamic); + if(entry != null) return entry; + } + + StatusEntry entry = Pools.obtain(StatusEntry.class, StatusEntry::new); + entry.set(StatusEffects.dynamic, Float.POSITIVE_INFINITY); + statuses.add(entry); + entry.effect.applied(self(), entry.time, false); + return entry; + } + + /** 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 * 60f / tilesize); + } + + /** Uses a dynamic status effect to change damage. */ + public void statusDamageMultiplier(float damageMultiplier){ + applyDynamicStatus().damageMultiplier = damageMultiplier; + } + + /** Uses a dynamic status effect to change reload. */ + public void statusReloadMultiplier(float reloadMultiplier){ + applyDynamicStatus().reloadMultiplier = reloadMultiplier; + } + + /** Uses a dynamic status effect to override max health. */ + public void statusMaxHealth(float health){ + //maxHealth should never be zero + applyDynamicStatus().healthMultiplier = health / maxHealth; + } + + /** Uses a dynamic status effect to override build speed. */ + public void statusBuildSpeed(float buildSpeed){ + //build speed should never be zero + applyDynamicStatus().buildSpeedMultiplier = buildSpeed / type.buildSpeed; + } + + /** Uses a dynamic status effect to override drag. */ + public void statusDrag(float drag){ + //prevent divide by 0 (drag can be zero, if someone makes a broken unit) + applyDynamicStatus().dragMultiplier = type.drag == 0f ? 0f : drag / type.drag; + } + + /** Uses a dynamic status effect to override armor. */ + public void statusArmor(float armor){ + applyDynamicStatus().armorOverride = armor; + } + @Override public void update(){ Floor floor = floorOn(); @@ -117,6 +175,7 @@ abstract class StatusComp implements Posc, Flyingc{ } applied.clear(); + armorOverride = -1f; speedMultiplier = damageMultiplier = healthMultiplier = reloadMultiplier = buildSpeedMultiplier = dragMultiplier = 1f; disarmed = false; @@ -136,12 +195,24 @@ abstract class StatusComp implements Posc, Flyingc{ }else{ applied.set(entry.effect.id); - speedMultiplier *= entry.effect.speedMultiplier; - healthMultiplier *= entry.effect.healthMultiplier; - damageMultiplier *= entry.effect.damageMultiplier; - reloadMultiplier *= entry.effect.reloadMultiplier; - buildSpeedMultiplier *= entry.effect.buildSpeedMultiplier; - dragMultiplier *= entry.effect.dragMultiplier; + //TODO this is very ugly... + if(entry.effect.dynamic){ + speedMultiplier *= entry.speedMultiplier; + healthMultiplier *= entry.healthMultiplier; + damageMultiplier *= entry.damageMultiplier; + reloadMultiplier *= entry.reloadMultiplier; + buildSpeedMultiplier *= entry.buildSpeedMultiplier; + dragMultiplier *= entry.dragMultiplier; + //armor is a special case; many units have it set it to 0, so an override at values >= 0 is used + if(entry.armorOverride >= 0f) armorOverride = entry.armorOverride; + }else{ + speedMultiplier *= entry.effect.speedMultiplier; + healthMultiplier *= entry.effect.healthMultiplier; + damageMultiplier *= entry.effect.damageMultiplier; + reloadMultiplier *= entry.effect.reloadMultiplier; + buildSpeedMultiplier *= entry.effect.buildSpeedMultiplier; + dragMultiplier *= entry.effect.dragMultiplier; + } disarmed |= entry.effect.disarm; diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 35335e45fd..061d323858 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -10,6 +10,7 @@ import arc.util.*; import mindustry.ai.*; import mindustry.ai.types.*; import mindustry.annotations.Annotations.*; +import mindustry.async.*; import mindustry.content.*; import mindustry.core.*; import mindustry.ctype.*; @@ -34,7 +35,7 @@ import static mindustry.logic.GlobalVars.*; abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, Itemsc, Rotc, Unitc, Weaponsc, Drawc, Boundedc, Syncc, Shieldc, Displayable, Ranged, Minerc, Builderc, Senseable, Settable{ @Import boolean hovering, dead, disarmed; - @Import float x, y, rotation, elevation, maxHealth, drag, armor, hitSize, health, shield, ammo, dragMultiplier; + @Import float x, y, rotation, elevation, maxHealth, drag, armor, hitSize, health, shield, ammo, dragMultiplier, armorOverride, speedMultiplier; @Import Team team; @Import int id; @Import @Nullable Tile mineTile; @@ -91,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); } } @@ -109,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; @@ -221,11 +221,16 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I case range -> range() / tilesize; case shootX -> World.conv(aimX()); case shootY -> World.conv(aimY()); + case cameraX -> controller instanceof Player player ? World.conv(player.con == null ? Core.camera.position.x : player.con.viewX) : 0; + case cameraY -> controller instanceof Player player ? World.conv(player.con == null ? Core.camera.position.y : player.con.viewY) : 0; + case cameraWidth -> controller instanceof Player player ? World.conv(player.con == null ? Core.camera.width : player.con.viewWidth) : 0; + case cameraHeight -> controller instanceof Player player ? World.conv(player.con == null ? Core.camera.height : player.con.viewHeight) : 0; case mining -> mining() ? 1 : 0; case mineX -> mining() ? mineTile.x : -1; case mineY -> mining() ? mineTile.y : -1; + case armor -> armorOverride >= 0f ? armorOverride : armor; case flag -> flag; - case speed -> type.speed * 60f / tilesize; + case speed -> type.speed * 60f / tilesize * speedMultiplier; case controlled -> !isValid() ? 0 : controller instanceof LogicAI ? ctrlProcessor : controller instanceof Player ? ctrlPlayer : @@ -268,8 +273,15 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I kill(); } } - case x -> x = World.unconv((float)value); - case y -> y = World.unconv((float)value); + case shield -> shield = Math.max((float)value, 0f); + case x -> { + x = World.unconv((float)value); + if(!isLocal()) snapInterpolation(); + } + case y -> { + y = World.unconv((float)value); + if(!isLocal()) snapInterpolation(); + } case rotation -> rotation = (float)value; case team -> { if(!net.client()){ @@ -281,6 +293,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I } } case flag -> flag = value; + case speed -> statusSpeed(Math.max((float)value, 0f)); + case armor -> statusArmor(Math.max((float)value, 0f)); } } @@ -297,8 +311,10 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I //only serverside if(((Object)this) instanceof Payloadc pay && !net.client()){ if(value instanceof Block b){ - Building build = b.newBuilding().create(b, team()); - if(pay.canPickup(build)) pay.addPayload(new BuildPayload(build)); + if(b.synthetic()){ + Building build = b.newBuilding().create(b, team()); + if(pay.canPickup(build)) pay.addPayload(new BuildPayload(build)); + } }else if(value instanceof UnitType ut){ Unit unit = ut.create(team()); if(pay.canPickup(unit)) pay.addPayload(new UnitPayload(unit)); @@ -381,6 +397,11 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I controller(controller); } + /** @return the collision layer to use for unit physics. Returning anything outside of PhysicsProcess contents will crash the game. */ + public int collisionLayer(){ + return type.allowLegStep && type.legPhysicsLayer ? PhysicsProcess.layerLegs : isGrounded() ? PhysicsProcess.layerGround : PhysicsProcess.layerFlying; + } + /** @return pathfinder path type for calculating costs */ public int pathType(){ return Pathfinder.costGround; @@ -406,6 +427,10 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I return controller instanceof CommandAI; } + public boolean canTarget(Unit other){ + return other != null && other.checkTarget(type.targetAir, type.targetGround); + } + public CommandAI command(){ if(controller instanceof CommandAI ai){ return ai; @@ -464,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); diff --git a/core/src/mindustry/entities/effect/SoundEffect.java b/core/src/mindustry/entities/effect/SoundEffect.java new file mode 100644 index 0000000000..c3d320d527 --- /dev/null +++ b/core/src/mindustry/entities/effect/SoundEffect.java @@ -0,0 +1,52 @@ +package mindustry.entities.effect; + +import arc.*; +import arc.audio.*; +import arc.func.*; +import arc.graphics.*; +import arc.math.*; +import arc.struct.*; +import arc.util.*; +import mindustry.entities.*; +import mindustry.game.EventType.*; +import mindustry.gen.*; + +/** Plays a sound effect when created and simultaneously renders an effect. */ +public class SoundEffect extends Effect{ + public Sound sound = Sounds.none; + public float minPitch = 0.8f; + public float maxPitch = 1.2f; + public float minVolume = 1f; + public float maxVolume = 1f; + 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; + + 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/part/RegionPart.java b/core/src/mindustry/entities/part/RegionPart.java index d632587db0..0088e46f34 100644 --- a/core/src/mindustry/entities/part/RegionPart.java +++ b/core/src/mindustry/entities/part/RegionPart.java @@ -152,7 +152,7 @@ public class RegionPart extends DrawPart{ float sign = (i == 1 ? -1 : 1) * params.sideMultiplier; Tmp.v1.set((x + mx) * sign, y + my).rotateRadExact((params.rotation - 90) * Mathf.degRad); - childParam.set(params.warmup, params.reload, params.smoothReload, params.heat, params.recoil, params.charge, params.x + Tmp.v1.x, params.y + Tmp.v1.y, i * sign + mr * sign + params.rotation); + childParam.set(params.warmup, params.reload, params.smoothReload, params.heat, params.recoil, params.charge, params.x + Tmp.v1.x, params.y + Tmp.v1.y, mr * sign + params.rotation); childParam.sideMultiplier = params.sideMultiplier; childParam.life = params.life; childParam.sideOverride = i; diff --git a/core/src/mindustry/entities/pattern/ShootSummon.java b/core/src/mindustry/entities/pattern/ShootSummon.java index c57bd8936d..d7ed625b0e 100644 --- a/core/src/mindustry/entities/pattern/ShootSummon.java +++ b/core/src/mindustry/entities/pattern/ShootSummon.java @@ -13,6 +13,9 @@ public class ShootSummon extends ShootPattern{ this.spread = spread; } + public ShootSummon(){ + } + @Override public void shoot(int totalShots, BulletHandler handler, @Nullable Runnable barrelIncrementer){ for(int i = 0; i < shots; i++){ diff --git a/core/src/mindustry/entities/units/AIController.java b/core/src/mindustry/entities/units/AIController.java index 6aef11e104..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; @@ -124,7 +129,7 @@ public class AIController implements UnitController{ if(tile == targetTile || (costType == Pathfinder.costNaval && !targetTile.floor().isLiquid)) return; - unit.movePref(vec.trns(unit.angleTo(targetTile.worldx(), targetTile.worldy()), unit.speed())); + unit.movePref(vec.trns(unit.angleTo(targetTile.worldx(), targetTile.worldy()), prefSpeed())); } public void updateWeapons(){ @@ -182,7 +187,12 @@ public class AIController implements UnitController{ mount.aimY = to.y; } - unit.isShooting |= (mount.shoot = mount.rotate = shoot); + mount.shoot = mount.rotate = shoot; + if(!shouldFire()){ + mount.shoot = false; + } + + unit.isShooting |= mount.shoot; if(mount.target == null && !shoot && !Angles.within(mount.rotation, mount.weapon.baseRotation, 0.01f) && noTargetTime >= rotateBackTimer){ mount.rotate = true; @@ -202,6 +212,11 @@ public class AIController implements UnitController{ return Units.invalidateTarget(target, unit.team, x, y, range); } + /** @return whether the unit should actually fire bullets (as opposed to just targeting something) */ + public boolean shouldFire(){ + return true; + } + public boolean shouldShoot(){ return true; } @@ -212,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(){ @@ -260,13 +275,13 @@ public class AIController implements UnitController{ vec.setAngle(Angles.moveToward(unit.vel().angle(), vec.angle(), 6f)); } - vec.setLength(unit.speed()); + vec.setLength(prefSpeed()); - unit.moveAt(vec); + unit.movePref(vec); } public void circle(Position target, float circleLength){ - circle(target, circleLength, unit.speed()); + circle(target, circleLength, prefSpeed()); } public void circle(Position target, float circleLength, float speed){ @@ -280,7 +295,7 @@ public class AIController implements UnitController{ vec.setLength(speed); - unit.moveAt(vec); + unit.movePref(vec); } public void moveTo(Position target, float circleLength){ @@ -298,15 +313,17 @@ public class AIController implements UnitController{ public void moveTo(Position target, float circleLength, float smooth, boolean keepDistance, @Nullable Vec2 offset, boolean arrive){ if(target == null) return; + float speed = prefSpeed(); + vec.set(target).sub(unit); float length = circleLength <= 0.001f ? 1f : Mathf.clamp((unit.dst(target) - circleLength) / smooth, -1f, 1f); - vec.setLength(unit.speed() * length); + vec.setLength(speed * length); if(arrive){ Tmp.v3.set(-unit.vel.x / unit.type.accel * 2f, -unit.vel.y / unit.type.accel * 2f).add((target.getX() - unit.x), (target.getY() - unit.y)); - vec.add(Tmp.v3).limit(unit.speed() * length); + vec.add(Tmp.v3).limit(speed * length); } if(length < -0.5f){ @@ -321,7 +338,7 @@ public class AIController implements UnitController{ if(offset != null){ vec.add(offset); - vec.setLength(unit.speed() * length); + vec.setLength(speed * length); } //do not move when infinite vectors are used or if its zero. @@ -338,6 +355,10 @@ public class AIController implements UnitController{ } } + public float prefSpeed(){ + return unit.speed(); + } + @Override public void unit(Unit unit){ if(this.unit == unit) return; diff --git a/core/src/mindustry/entities/units/StatusEntry.java b/core/src/mindustry/entities/units/StatusEntry.java index b733457772..4d405a40b6 100644 --- a/core/src/mindustry/entities/units/StatusEntry.java +++ b/core/src/mindustry/entities/units/StatusEntry.java @@ -6,6 +6,9 @@ public class StatusEntry{ public StatusEffect effect; public float time; + //all of these are for the dynamic effect only! + public float damageMultiplier = 1f, healthMultiplier = 1f, speedMultiplier = 1f, reloadMultiplier = 1f, buildSpeedMultiplier = 1f, dragMultiplier = 1f, armorOverride = -1f; + public StatusEntry set(StatusEffect effect, float time){ this.effect = effect; this.time = time; 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/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 21717202bc..94b57d4d59 100644 --- a/core/src/mindustry/game/MapObjectives.java +++ b/core/src/mindustry/game/MapObjectives.java @@ -16,6 +16,7 @@ import mindustry.game.MapObjectives.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.io.*; +import mindustry.logic.*; import mindustry.type.*; import mindustry.world.*; @@ -30,6 +31,8 @@ import static mindustry.Vars.*; public class MapObjectives implements Iterable, Eachable{ public static final Seq> allObjectiveTypes = new Seq<>(); public static final Seq> allMarkerTypes = new Seq<>(); + public static final ObjectMap> markerNameToType = new ObjectMap<>(); + public static final Seq allMarkerTypeNames = new Seq<>(); /** * All objectives the executor contains. Do not modify directly, ever! @@ -58,10 +61,15 @@ public class MapObjectives implements Iterable, Eachable, Eachable type = prov.get().getClass(); - JsonIO.classTag(Strings.camelize(type.getSimpleName().replace("Objective", "")), type); - JsonIO.classTag(type.getSimpleName().replace("Objective", ""), type); + String name = type.getSimpleName().replace("Objective", ""); + JsonIO.classTag(Strings.camelize(name), type); + JsonIO.classTag(name, type); } } @@ -81,11 +90,24 @@ public class MapObjectives implements Iterable, Eachable type = prov.get().getClass(); - JsonIO.classTag(Strings.camelize(type.getSimpleName().replace("Marker", "")), type); - JsonIO.classTag(type.getSimpleName().replace("Marker", ""), type); + String name = type.getSimpleName().replace("Marker", ""); + allMarkerTypeNames.add(Strings.camelize(name)); + markerNameToType.put(name, prov); + markerNameToType.put(Strings.camelize(name), prov); + JsonIO.classTag(Strings.camelize(name), type); + JsonIO.classTag(name, type); } } + public static void registerLegacyMarker(String name, Prov 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); @@ -102,23 +124,10 @@ 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; - } - } } changed |= obj.changed; @@ -474,6 +483,14 @@ public class MapObjectives implements Iterable, Eachable, Eachable, Eachable world = !Mathf.equal((float)p1, 0f); + case minimap -> minimap = !Mathf.equal((float)p1, 0f); + case autoscale -> autoscale = !Mathf.equal((float)p1, 0f); + case drawLayer -> drawLayer = (float)p1; + } + } + + public void setText(String text, boolean fetch){} + + public void setTexture(String textureName){} /** @return The localized type-name of this objective, defaulting to the class simple name without the "Marker" prefix. */ public String typeName(){ @@ -620,19 +663,52 @@ public class MapObjectives implements Iterable, Eachable, Eachable fontSize = (float)p1; + case textHeight -> textHeight = (float)p1; + case labelFlags -> { + if(!Mathf.equal((float)p1, 0f)){ + flags |= WorldLabel.flagBackground; + }else{ + flags &= ~WorldLabel.flagBackground; + } + } + case radius -> radius = (float)p1; + case rotation -> rotation = (float)p1; + case color -> color.fromDouble(p1); + case shape -> sides = (int)p1; + } + } + + if(!Double.isNaN(p2)){ + switch(type){ + case labelFlags -> { + if(!Mathf.equal((float)p2, 0f)){ + flags |= WorldLabel.flagOutline; + }else{ + flags &= ~WorldLabel.flagOutline; + } + } + } + } + } + + @Override + public void setText(String text, boolean fetch){ + this.text = text; + if(fetch){ + fetchedText = fetchText(this.text); + }else{ + fetchedText = this.text; + } } } - /** Displays a circle on the minimap. */ - public static class MinimapMarker extends ObjectiveMarker{ - public Point2 pos = new Point2(); + /** Displays a circle in the world. */ + public static class PointMarker extends PosMarker{ public float radius = 5f, stroke = 11f; public Color color = Color.valueOf("f25555"); - public MinimapMarker(int x, int y){ + public PointMarker(int x, int y){ this.pos.set(x, y); } - public MinimapMarker(int x, int y, Color color){ + public PointMarker(int x, int y, Color color){ this.pos.set(x, y); this.color = color; } - public MinimapMarker(int x, int y, float radius, float stroke, Color color){ + public PointMarker(int x, int y, float radius, float stroke, Color color){ this.pos.set(x, y); this.stroke = stroke; this.radius = radius; this.color = color; } - public MinimapMarker(){} + public PointMarker(){} @Override - public void drawMinimap(MinimapRenderer minimap){ - minimap.transform(Tmp.v1.set(pos.x * tilesize, pos.y * tilesize)); - - float rad = minimap.scale(radius * tilesize); + public void draw(float scaleFactor){ + float rad = radius * tilesize * scaleFactor; float fin = Interp.pow2Out.apply((Time.globalTime / 100f) % 1f); + Draw.z(drawLayer); Lines.stroke(Scl.scl((1f - fin) * stroke + 0.1f), color); - Lines.circle(Tmp.v1.x, Tmp.v1.y, rad * fin); + Lines.circle(pos.x, pos.y, rad * fin); + Draw.reset(); } + + @Override + public void control(LMarkerControl type, double p1, double p2, double p3){ + super.control(type, p1, p2, p3); + + if(!Double.isNaN(p1)){ + switch(type){ + case radius -> radius = (float)p1; + case stroke -> stroke = (float)p1; + case color -> color.fromDouble(p1); + } + } + } } /** Displays a shape with an outline and color. */ - public static class ShapeMarker extends ObjectiveMarker{ - public @TilePos Vec2 pos = new Vec2(); + public static class ShapeMarker extends PosMarker{ public float radius = 8f, rotation = 0f, stroke = 1f; public boolean fill = false, outline = true; public int sides = 4; @@ -745,31 +884,58 @@ public class MapObjectives implements Iterable, Eachable radius = (float)p1; + case stroke -> stroke = (float)p1; + case rotation -> rotation = (float)p1; + case color -> color.fromDouble(p1); + case shape -> sides = (int)p1; + } + } + + if(!Double.isNaN(p2)){ + switch(type){ + case shape -> fill = !Mathf.equal((float)p2, 0f); + } + } + + if(!Double.isNaN(p3)){ + if(type == LMarkerControl.shape){ + outline = !Mathf.equal((float)p3, 0f); + } + } + } } /** Displays text at a location. */ - public static class TextMarker extends ObjectiveMarker{ + public static class TextMarker extends PosMarker{ public @Multiline String text = "uwu"; - public @TilePos Vec2 pos = new Vec2(); public float fontSize = 1f; public @LabelFlag byte flags = WorldLabel.flagBackground | WorldLabel.flagOutline; // Cached localized text. @@ -790,12 +956,304 @@ public class MapObjectives implements Iterable, Eachable fontSize = (float)p1; + case labelFlags -> { + if(!Mathf.equal((float)p1, 0f)){ + flags |= WorldLabel.flagBackground; + }else{ + flags &= ~WorldLabel.flagBackground; + } + } + } + } + + if(!Double.isNaN(p2)){ + switch(type){ + case labelFlags -> { + if(!Mathf.equal((float)p2, 0f)){ + flags |= WorldLabel.flagOutline; + }else{ + flags &= ~WorldLabel.flagOutline; + } + } + } + } + } + + @Override + public void setText(String text, boolean fetch){ + this.text = text; + if(fetch){ + fetchedText = fetchText(this.text); + }else{ + fetchedText = this.text; + } + } + } + + /** Displays a line from pos1 to pos2. */ + public static class LineMarker extends PosMarker{ + public @TilePos Vec2 endPos = new Vec2(); + public float stroke = 1f; + public boolean outline = true; + public Color color1 = Color.valueOf("ffd37f"); + public Color color2 = Color.valueOf("ffd37f"); + + public LineMarker(float x1, float y1, float x2, float y2, float stroke){ + this.stroke = stroke; + this.pos.set(x1, y1); + this.endPos.set(x2, y2); + } + + public LineMarker(float x1, float y1, float x2, float y2){ + this.pos.set(x1, y1); + this.endPos.set(x2, y2); + } + + public LineMarker(){} + + @Override + public void draw(float scaleFactor){ + Draw.z(drawLayer); + if(outline){ + Lines.stroke((stroke + 2f) * scaleFactor, Pal.gray); + Lines.line(pos.x, pos.y, endPos.x, endPos.y); + } + + Lines.stroke(stroke * scaleFactor, Color.white); + Lines.line(pos.x, pos.y, color1, endPos.x, endPos.y, color2); + } + + @Override + public void control(LMarkerControl type, double p1, double p2, double p3){ + super.control(type, p1, p2, p3); + + if(!Double.isNaN(p1)){ + switch(type){ + case endPos -> endPos.x = (float)p1 * tilesize; + case stroke -> stroke = (float)p1; + case color -> color1.set(color2.fromDouble(p1)); + } + } + + if(!Double.isNaN(p2)){ + switch(type){ + case endPos -> endPos.y = (float)p2 * tilesize; + } + } + + if(!Double.isNaN(p1) && !Double.isNaN(p2)){ + switch (type){ + case posi -> ((int)p1 == 0 ? pos : (int)p1 == 1 ? endPos : Tmp.v1).x = (float)p2 * tilesize; + case colori -> ((int)p1 == 0 ? color1 : (int)p1 == 1 ? color2 : Tmp.c1).fromDouble(p2); + } + } + + if(!Double.isNaN(p1) && !Double.isNaN(p3)){ + switch(type){ + case posi -> ((int)p1 == 0 ? pos : (int)p1 == 1 ? endPos : Tmp.v1).y = (float)p3 * tilesize; + } + } + } + } + + /** Displays a texture with specified name. */ + public static class TextureMarker extends PosMarker{ + public float rotation = 0f, width = 0f, height = 0f; // Zero width/height scales marker to original texture's size + public String textureName = ""; + public Color color = Color.white.cpy(); + + private transient TextureRegion fetchedRegion; + + public TextureMarker(String textureName, float x, float y, float width, float height){ + this.textureName = textureName; + this.pos.set(x, y); + this.width = width; + this.height = height; + } + + public TextureMarker(String textureName, float x, float y){ + this.textureName = textureName; + this.pos.set(x, y); + } + + public TextureMarker(){} + + @Override + public void control(LMarkerControl type, double p1, double p2, double p3){ + super.control(type, p1, p2, p3); + + if(!Double.isNaN(p1)){ + switch(type){ + case rotation -> rotation = (float)p1; + case textureSize -> width = (float)p1 * tilesize; + case color -> color.fromDouble(p1); + } + } + + if(!Double.isNaN(p2)){ + switch(type){ + case textureSize -> height = (float)p2 * tilesize; + } + } + } + + @Override + public void draw(float scaleFactor){ + if(textureName.isEmpty()) return; + + if(fetchedRegion == null) setTexture(textureName); + + // Zero width/height scales marker to original texture's size + if(Mathf.equal(width, 0f)) width = fetchedRegion.width * fetchedRegion.scl() * Draw.xscl; + if(Mathf.equal(height, 0f)) height = fetchedRegion.height * fetchedRegion.scl() * Draw.yscl; + + Draw.z(drawLayer); + Draw.color(color); + Draw.rect(fetchedRegion, pos.x, pos.y, width * scaleFactor, height * scaleFactor, rotation); + } + + @Override + public void setTexture(String textureName){ + this.textureName = textureName; + + if(fetchedRegion == null) fetchedRegion = new TextureRegion(); + lookupRegion(textureName, fetchedRegion); + } + + } + + public static class QuadMarker extends ObjectiveMarker{ + public String textureName = "white"; + public @Vertices float[] vertices = new float[24]; + private boolean mapRegion = true; + + private transient TextureRegion fetchedRegion; + + public QuadMarker() { + for(int i = 0; i < 4; i++){ + vertices[i * 6 + 2] = Color.white.toFloatBits(); + vertices[i * 6 + 5] = Color.clearFloatBits; + } + } + + @Override + public void draw(float scaleFactor){ + if(fetchedRegion == null) setTexture(textureName); + + Draw.z(drawLayer); + Draw.vert(fetchedRegion.texture, vertices, 0, vertices.length); + } + + @Override + public void control(LMarkerControl type, double p1, double p2, double p3){ + super.control(type, p1, p2, p3); + + if(!Double.isNaN(p1)){ + switch(type){ + case color -> { + float col = Tmp.c1.fromDouble(p1).toFloatBits(); + for(int i = 0; i < 4; i++) vertices[i * 6 + 2] = col; + } + case pos -> vertices[0] = (float)p1 * tilesize; + case posi -> setPos((int)p1, p2, p3); + case uvi -> setUv((int)p1, p2, p3); + } + } + + if(!Double.isNaN(p2)){ + switch(type){ + case pos -> vertices[1] = (float)p1 * tilesize; + } + } + + if(!Double.isNaN(p1) && !Double.isNaN(p2)){ + switch(type){ + case colori -> setColor((int)p1, p2); + } + } + } + + @Override + public void setTexture(String textureName){ + this.textureName = textureName; + + boolean firstUpdate = fetchedRegion == null; + + if(fetchedRegion == null) fetchedRegion = new TextureRegion(); + Tmp.tr1.set(fetchedRegion); + + lookupRegion(textureName, fetchedRegion); + + if(firstUpdate){ + if(mapRegion){ + mapRegion = false; + + // possibly from the editor, we need to clamp the values + for(int i = 0; i < 4; i++){ + vertices[i * 6 + 3] = Mathf.map(Mathf.clamp(vertices[i * 6 + 3]), fetchedRegion.u, fetchedRegion.u2); + vertices[i * 6 + 4] = Mathf.map(1 - Mathf.clamp(vertices[i * 6 + 4]), fetchedRegion.v, fetchedRegion.v2); + } + } + }else{ + for(int i = 0; i < 4; i++){ + vertices[i * 6 + 3] = Mathf.map(vertices[i * 6 + 3], Tmp.tr1.u, Tmp.tr1.u2, fetchedRegion.u, fetchedRegion.u2); + vertices[i * 6 + 4] = Mathf.map(vertices[i * 6 + 4], Tmp.tr1.v, Tmp.tr1.v2, fetchedRegion.v, fetchedRegion.v2); + } + } + } + + private void setPos(int i, double x, double y){ + if(i >= 0 && i < 4){ + if(!Double.isNaN(x)) vertices[i * 6] = (float)x * tilesize; + if(!Double.isNaN(y)) vertices[i * 6 + 1] = (float)y * tilesize; + } + } + + private void setColor(int i, double c){ + if(i >= 0 && i < 4){ + vertices[i * 6 + 2] = Tmp.c1.fromDouble(c).toFloatBits(); + } + } + + private void setUv(int i, double u, double v){ + if(i >= 0 && i < 4){ + if(fetchedRegion == null) setTexture(textureName); + + if(!Double.isNaN(u)) vertices[i * 6 + 3] = Mathf.map(Mathf.clamp((float)u), fetchedRegion.u, fetchedRegion.u2); + if(!Double.isNaN(v)) vertices[i * 6 + 4] = Mathf.map(1 - Mathf.clamp((float)v), fetchedRegion.v, fetchedRegion.v2); + } + } + + } + + private static void lookupRegion(String name, TextureRegion out){ + TextureRegion region = Core.atlas.find(name); + if(region.found()){ + out.set(region); + }else{ + if(Core.assets.isLoaded(name, Texture.class)){ + out.set(Core.assets.get(name, Texture.class)); + }else{ + out.set(Core.atlas.find("error")); + } } } @@ -804,6 +1262,16 @@ public class MapObjectives implements Iterable, Eachable