diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 3a649b83de..53c3710077 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -72,3 +72,5 @@ body: required: true - label: I have searched the closed and open issues to make sure that this problem has not already been reported. required: true + - label: "I am not using Foo's Client, and have made sure the bug is not caused by mods I have installed." + required: true diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml new file mode 100644 index 0000000000..95cce8bab6 --- /dev/null +++ b/.github/workflows/gradle-wrapper-validation.yml @@ -0,0 +1,10 @@ +name: "Validate Gradle Wrapper" +on: [push, pull_request] + +jobs: + validation: + name: "Validation" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: gradle/wrapper-validation-action@v2 diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 6d4dbbea84..cd593a6dfd 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -34,6 +34,7 @@ jobs: if [ -n "$(git status --porcelain)" ]; then git config --global user.name "Github Actions" + git config --global user.email "actions@github.com" git add core/assets/bundles/* git commit -m "Automatic bundle update" git push @@ -42,7 +43,7 @@ jobs: if: ${{ github.repository == 'Anuken/Mindustry' }} run: | git config --global user.name "Github Actions" - git config --global user.email "cli@github.com" + git config --global user.email "actions@github.com" cd ../ cp -r ./Mindustry ./MindustryJitpack cd MindustryJitpack diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index 8cae20eee7..25602c4ab4 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,6 +1,5 @@ - + diff --git a/android/build.gradle b/android/build.gradle index f7f1ce377b..f1dc45aa74 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -7,7 +7,7 @@ buildscript{ } dependencies{ - classpath 'com.android.tools.build:gradle:7.2.1' + classpath 'com.android.tools.build:gradle:8.2.2' } } @@ -29,8 +29,9 @@ task deploy(type: Copy){ } android{ - buildToolsVersion '33.0.2' - compileSdkVersion 33 + namespace = "io.anuke.mindustry" + buildToolsVersion = '34.0.0' + compileSdk = 34 sourceSets{ main{ manifest.srcFile 'AndroidManifest.xml' @@ -56,7 +57,7 @@ android{ applicationId "io.anuke.mindustry" minSdkVersion 14 - targetSdkVersion 33 + targetSdkVersion 34 versionName versionNameResult versionCode = vcode @@ -65,6 +66,8 @@ android{ props['androidBuildCode'] = (vcode + 1).toString() } props.store(file('../core/assets/version.properties').newWriter(), null) + + multiDexEnabled true } compileOptions{ @@ -72,7 +75,7 @@ android{ targetCompatibility JavaVersion.VERSION_1_8 } - flavorDimensions "google" + flavorDimensions = ["google"] signingConfigs{ release{ diff --git a/android/proguard-rules.pro b/android/proguard-rules.pro index 368b7f4e1e..ebda968ae6 100644 --- a/android/proguard-rules.pro +++ b/android/proguard-rules.pro @@ -1,11 +1,12 @@ -dontobfuscate -#these are essential packages that should not be "optimized" in any way -#the main purpose of d8 here is to shrink the absurdly-large google play games libraries -keep class mindustry.** { *; } -keep class arc.** { *; } -keep class net.jpountz.** { *; } -keep class rhino.** { *; } -keep class com.android.dex.** { *; } +-keepattributes Signature,*Annotation*,InnerClasses,EnclosingMethod + +-dontwarn javax.naming.** #-printusage out.txt \ No newline at end of file diff --git a/android/src/mindustry/android/AndroidLauncher.java b/android/src/mindustry/android/AndroidLauncher.java index 7febad64a7..c8175aa4f0 100644 --- a/android/src/mindustry/android/AndroidLauncher.java +++ b/android/src/mindustry/android/AndroidLauncher.java @@ -72,6 +72,8 @@ public class AndroidLauncher extends AndroidApplication{ @Override public ClassLoader loadJar(Fi jar, ClassLoader parent) throws Exception{ + //Required to load jar files in Android 14: https://developer.android.com/about/versions/14/behavior-changes-14#safer-dynamic-code-loading + jar.file().setReadOnly(); return new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, parent){ @Override protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException{ @@ -184,6 +186,7 @@ public class AndroidLauncher extends AndroidApplication{ }, new AndroidApplicationConfiguration(){{ useImmersiveMode = true; hideStatusBar = true; + useGL30 = true; }}); checkFiles(getIntent()); diff --git a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java index 3fa62d8446..3abd583158 100644 --- a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java +++ b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java @@ -851,89 +851,6 @@ public class EntityProcess extends BaseProcessor{ for(TypeSpec.Builder b : baseClasses){ write(b, imports.toSeq()); } - - //TODO nulls were an awful idea - //store nulls - TypeSpec.Builder nullsBuilder = TypeSpec.classBuilder("Nulls").addModifiers(Modifier.PUBLIC).addModifiers(Modifier.FINAL); - //TODO should be dynamic - ObjectSet nullList = ObjectSet.with("unit"); - - //create mock types of all components - for(Stype interf : allInterfaces){ - //indirect interfaces to implement methods for - Seq dependencies = interf.allInterfaces().add(interf); - Seq methods = dependencies.flatMap(Stype::methods); - methods.sortComparing(Object::toString); - - //optionally add superclass - Stype superclass = dependencies.map(this::interfaceToComp).find(s -> s != null && s.annotation(Component.class).base()); - //use the base type when the interface being emulated has a base - TypeName type = superclass != null && interfaceToComp(interf).annotation(Component.class).base() ? tname(baseName(superclass)) : interf.tname(); - - //used method signatures - ObjectSet signatures = new ObjectSet<>(); - - //create null builder - String baseName = interf.name().substring(0, interf.name().length() - 1); - - //prevent Nulls bloat - if(!nullList.contains(Strings.camelize(baseName))){ - continue; - } - - String className = "Null" + baseName; - TypeSpec.Builder nullBuilder = TypeSpec.classBuilder(className) - .addModifiers(Modifier.FINAL); - - skipDeprecated(nullBuilder); - - nullBuilder.addSuperinterface(interf.tname()); - if(superclass != null) nullBuilder.superclass(tname(baseName(superclass))); - - for(Smethod method : methods){ - String signature = method.toString(); - if(!signatures.add(signature)) continue; - - Stype compType = interfaceToComp(method.type()); - MethodSpec.Builder builder = MethodSpec.overriding(method.e).addModifiers(Modifier.PUBLIC, Modifier.FINAL); - int index = 0; - for(ParameterSpec spec : builder.parameters){ - Reflect.set(spec, "name", "arg" + index++); - } - builder.addAnnotation(OverrideCallSuper.class); //just in case - - if(!method.isVoid()){ - String methodName = method.name(); - switch(methodName){ - case "isNull": - builder.addStatement("return true"); - break; - case "id": - builder.addStatement("return -1"); - break; - case "toString": - builder.addStatement("return $S", className); - break; - default: - Svar variable = compType == null || method.params().size > 0 ? null : compType.fields().find(v -> v.name().equals(methodName)); - String desc = variable == null ? null : variable.descString(); - if(variable == null || !varInitializers.containsKey(desc)){ - builder.addStatement("return " + getDefault(method.ret().toString())); - }else{ - String init = varInitializers.get(desc); - builder.addStatement("return " + (init.equals("{}") ? "new " + variable.mirror().toString() : "") + init); - } - } - } - nullBuilder.addMethod(builder.build()); - } - - nullsBuilder.addField(FieldSpec.builder(type, Strings.camelize(baseName)).initializer("new " + className + "()").addModifiers(Modifier.FINAL, Modifier.STATIC, Modifier.PUBLIC).build()); - - write(nullBuilder, imports.toSeq()); - } - - write(nullsBuilder); } } diff --git a/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java b/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java index 5ca28c0370..64b12ca33d 100644 --- a/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java +++ b/annotations/src/main/java/mindustry/annotations/impl/AssetsProcess.java @@ -57,6 +57,9 @@ public class AssetsProcess extends BaseProcessor{ ichtype.addField(FieldSpec.builder(ParameterizedTypeName.get(ObjectIntMap.class, String.class), "codes", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("new ObjectIntMap<>()").build()); + ichtype.addField(FieldSpec.builder(ParameterizedTypeName.get(IntMap.class, String.class), + "codeToName", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("new IntMap<>()").build()); + ObjectSet used = new ObjectSet<>(); for(Jval val : icons.get("glyphs").asArray()){ @@ -67,7 +70,9 @@ public class AssetsProcess extends BaseProcessor{ int code = val.getInt("code", 0); iconcAll.append((char)code); ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).addJavadoc(String.format("\\u%04x", code)).initializer("'" + ((char)code) + "'").build()); + ichinit.addStatement("codes.put($S, $L)", name, code); + ichinit.addStatement("codeToName.put($L, $S)", code, name); ictype.addField(TextureRegionDrawable.class, name + "Small", Modifier.PUBLIC, Modifier.STATIC); icload.addStatement(name + "Small = mindustry.ui.Fonts.getGlyph(mindustry.ui.Fonts.def, (char)" + code + ")"); diff --git a/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java b/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java index bac713b019..955587301d 100644 --- a/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java +++ b/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java @@ -102,7 +102,7 @@ public class StructProcess extends BaseProcessor{ //bools: single bit, needs special case to clear things setter.beginControlFlow("if(value)"); - setter.addStatement("return ($T)(($L & ~(1L << $LL)) | (1L << $LL))", structType, structParam, offset, offset); + setter.addStatement("return ($T)($L | (1L << $LL))", structType, structParam, offset); setter.nextControlFlow("else"); setter.addStatement("return ($T)(($L & ~(1L << $LL)))", structType, structParam, offset); setter.endControlFlow(); diff --git a/build.gradle b/build.gradle index d051101a24..9bca8edb25 100644 --- a/build.gradle +++ b/build.gradle @@ -234,6 +234,7 @@ project(":desktop"){ dependencies{ implementation project(":core") implementation arcModule("extensions:discord") + implementation arcModule("natives:natives-filedialogs") implementation arcModule("natives:natives-desktop") implementation arcModule("natives:natives-freetype-desktop") @@ -320,6 +321,7 @@ project(":core"){ api arcModule("extensions:g3d") api arcModule("extensions:fx") api arcModule("extensions:arcnet") + implementation arcModule("extensions:filedialogs") api "com.github.Anuken:rhino:$rhinoVersion" if(localArc && debugged()) api arcModule("extensions:recorder") if(localArc) api arcModule(":extensions:packer") diff --git a/core/assets-raw/sprites/effects/white.png b/core/assets-raw/sprites/effects/white.png index ba9bf827c1..e8b825eae0 100644 Binary files a/core/assets-raw/sprites/effects/white.png and b/core/assets-raw/sprites/effects/white.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 5ab63ab096..73f9afb829 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -445,6 +445,11 @@ editor.rules = Rules editor.generation = Generation editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -501,7 +506,9 @@ editor.default = [lightgray] details = Details... edit = Edit variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables + editor.name = Name: editor.spawn = Spawn Unit editor.removeunit = Remove Unit @@ -590,6 +597,7 @@ filter.clear = Clear filter.option.ignore = Ignore filter.scatter = Scatter filter.terrain = Terrain +filter.logic = Logic filter.option.scale = Scale filter.option.chance = Chance @@ -613,6 +621,8 @@ filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile +filter.option.code = Code +filter.option.loop = Loop locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? @@ -688,6 +698,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline @@ -738,7 +749,7 @@ error.any = Unknown network error. error.bloom = Failed to initialize bloom.\nYour device may not support it. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -988,6 +999,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -998,17 +1010,47 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Repair Suppression +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Self Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death + +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed bar.drilltierreq = Better Drill Required @@ -1051,15 +1093,15 @@ bullet.armorpierce = [stat]armor piercing bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit bullet.suppression = [stat]{0}[lightgray] seconds of repair suppression ~ [stat]{1}[lightgray] tiles bullet.interval = [stat]{0}/sec[lightgray] interval bullets: -bullet.frags = [stat]{0}[lightgray]x frag bullets: -bullet.lightning = [stat]{0}[lightgray]x lightning ~ [stat]{1}[lightgray] damage +bullet.frags = [stat]{0}x[lightgray] frag bullets: +bullet.lightning = [stat]{0}x[lightgray] lightning ~ [stat]{1}[lightgray] damage bullet.buildingdamage = [stat]{0}%[lightgray] building damage bullet.knockback = [stat]{0}[lightgray] knockback -bullet.pierce = [stat]{0}[lightgray]x pierce +bullet.pierce = [stat]{0}x[lightgray] pierce bullet.infinitepierce = [stat]pierce -bullet.healpercent = [stat]{0}[lightgray]% repair +bullet.healpercent = [stat]{0}%[lightgray] repair bullet.healamount = [stat]{0}[lightgray] direct repair -bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier +bullet.multiplier = [stat]{0}[lightgray] ammo/item bullet.reload = [stat]{0}%[lightgray] fire rate bullet.range = [stat]{0}[lightgray] tiles range @@ -1084,6 +1126,7 @@ unit.items = items unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = General @@ -1093,6 +1136,8 @@ category.items = Items category.crafting = Input/Output category.function = Function category.optional = Optional Enhancements +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.landscape.name = Lock Landscape setting.shadows.name = Shadows @@ -1206,15 +1251,16 @@ keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region @@ -1291,7 +1337,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Wave Timer rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Waves +rules.airUseSpawns = Air units use spawn points rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1313,6 +1362,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) @@ -1346,6 +1396,9 @@ rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. + content.item.name = Items content.liquid.name = Fluids content.unit.name = Units @@ -2036,7 +2089,7 @@ block.force-projector.description = Creates a hexagonal force field around itsel block.shock-mine.description = Releases electric arcs upon enemy unit contact. block.conveyor.description = Transports items forward. block.titanium-conveyor.description = Transports items forward. Faster than a standard conveyor. -block.plastanium-conveyor.description = Transports items forward in batches. Accepts items at the back, and unloads them in three directions at the front. Requires multiple loading and unloading points for peak throughput. +block.plastanium-conveyor.description = Transports items forward in batches. Accepts items at the back, and unloads them in three directions at the front. Requires multiple loading and unloading points for peak throughput. block.junction.description = Acts as a bridge for two crossing conveyor belts. block.bridge-conveyor.description = Transports items over terrain or buildings. block.phase-conveyor.description = Instantly transports items over terrain or buildings. Longer range than the item bridge, but requires power. @@ -2065,7 +2118,7 @@ block.power-node-large.description = An advanced power node with greater range. block.surge-tower.description = A long-range power node with fewer available connections. block.diode.description = Moves battery power in one direction, but only if the other side has less power stored. block.battery.description = Stores power in times of surplus energy. Outputs power in times of deficit. -block.battery-large.description = Stores power in times of surplus energy. Outputs power in times of deficit. Higher capacity than a regular battery. +block.battery-large.description = Stores power in times of surplus energy. Outputs power in times of deficit. Higher capacity than a regular battery. block.combustion-generator.description = Generates power by burning flammable materials, such as coal. block.thermal-generator.description = Generates power when placed in hot locations. block.steam-generator.description = Generates power by burning flammable materials and converting water to steam. @@ -2115,7 +2168,7 @@ block.parallax.description = Fires a tractor beam that pulls in air targets, dam block.tsunami.description = Fires powerful streams of liquid at enemies. Automatically extinguishes fires when supplied with water. block.silicon-crucible.description = Refines silicon from sand and coal, using pyratite as an additional heat source. More efficient in hot locations. block.disassembler.description = Separates slag into trace amounts of exotic mineral components at low efficiency. Can produce thorium. -block.overdrive-dome.description = Increases the speed of nearby buildings. Requires phase fabric and silicon to operate. +block.overdrive-dome.description = Increases the speed of nearby buildings. Requires phase fabric and silicon to operate. block.payload-conveyor.description = Moves large payloads, such as units from factories. Magnetic. Usable in zero-G environments. block.payload-router.description = Splits input payloads into 3 output directions. Functions as a sorter when a filter is set. Magnetic. Usable in zero-G environments. block.ground-factory.description = Produces ground units. Output units can be used directly, or moved into reconstructors for upgrading. @@ -2292,7 +2345,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.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. @@ -2315,7 +2368,7 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Spawn unit at a location. lst.applystatus = Apply or clear a status effect from a unit. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Spawn a wave. lst.explosion = Create an explosion at a location. @@ -2385,6 +2438,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. laccess.color = Illuminator color. laccess.controller = Unit controller. If processor controlled, returns processor.\nOtherwise, returns the unit itself. laccess.dead = Whether a unit/building is dead or no longer valid. @@ -2525,7 +2579,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building, floor and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index e3a469caac..442b6afcdd 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -434,6 +434,11 @@ editor.rules = Правілы: editor.generation = Генерацыя: editor.objectives = Мэты editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Рэдагаваць ў гульні editor.playtest = Тэставаць editor.publish.workshop = Апублікаваць у майстэрні @@ -489,6 +494,7 @@ editor.default = [lightgray]<Па змаўчанні> details = Падрабязнасці... edit = Рэдагаваць... variables = Пераменныя +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Назва: editor.spawn = Стварыць баявую адзінку @@ -576,6 +582,7 @@ filter.clear = Ачысціць filter.option.ignore = Ігнараваць filter.scatter = Сеяцель filter.terrain = Ландшафт +filter.logic = Logic filter.option.scale = Маштаб фільтра filter.option.chance = Шанец filter.option.mag = Сіла прымянення @@ -598,7 +605,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -670,6 +679,7 @@ marker.shape.name = Форма marker.text.name = Тэкст marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Задні Фон marker.outline = Контур objective.research = [accent]Даследаваць:\n[]{0}[lightgray]{1} @@ -716,7 +726,7 @@ error.any = Невядомая сеткавая памылка. error.bloom = Не атрымалася ініцыялізаваць свячэнне (Bloom). \nМагчыма, зараз Вашая прылада не падтрымлівае яго. weather.rain.name = Дождж -weather.snow.name = Снег +weather.snowing.name = Снег weather.sandstorm.name = Пясчаная бура weather.sporestorm.name = Спаравая бура weather.fog.name = Туман @@ -961,6 +971,7 @@ stat.abilities = Здольнасйі stat.canboost = Можа Узлятаць stat.flying = Паветраны stat.ammouse = Выкарыстанне Боезапасу +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Множнік Пашкоджанняў stat.healthmultiplier = Множнік Здароўя stat.speedmultiplier = Множнік Хуткасці @@ -971,17 +982,46 @@ stat.immunities = Імунітэт stat.healing = Аднаўленне ability.forcefield = Сіловое Поле +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Поле Рамонту +ability.repairfield.description = Repairs nearby units ability.statusfield = Поле Статусу +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Завод +ability.unitspawn.description = Constructs units ability.shieldregenfield = Васстанўляюяае Поле Шчыта +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Рух Маланкі +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Шчытавая Дуга +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Энэргетычнае Поле -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Даступны Толькі Перанос Рэсурсаў У Ядро bar.drilltierreq = Патрабуецца свідар лепей @@ -1057,6 +1097,7 @@ unit.items = прадметаў unit.thousands = Тыс. unit.millions = М. unit.billions = Б. +unit.shots = shots unit.pershot = /стрэл category.purpose = Апісанне category.general = Асноўныя @@ -1066,6 +1107,8 @@ category.items = Прадметы category.crafting = Увядзенне/Выснова category.function = Функцыя category.optional = Дадатковыя паляпшэння +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Прапусціць Запуск Ядра/Анімацыю Высадкі setting.landscape.name = Толькі альбомны (гарызантальны) рэжым setting.shadows.name = Цені @@ -1177,15 +1220,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Перабудаваць Рэгіён keybind.schematic_select.name = Абраць Вобласць keybind.schematic_menu.name = Меню Схем @@ -1261,7 +1305,10 @@ rules.disableworldprocessors = Адключыць Працэсары Свету rules.schematic = Схемы Дазволены rules.wavetimer = Інтэрвал хваляў rules.wavesending = Адпраўка Хваль +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Хвалі +rules.airUseSpawns = Air units use spawn points rules.attack = Рэжым атакі rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1283,6 +1330,7 @@ rules.unitdamagemultiplier = Множнік страт баяв. адз. rules.unitcrashdamagemultiplier = Множнік Падрыўнога Пашкоджання Юніта rules.solarmultiplier = Множнік Сонечнай Энергіі rules.unitcapvariable = Ядра Спрыяюць Колькасці Юнітаў +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Асноўная Колькасць Юнітаў rules.limitarea = Абмежаваць Вобласць Мапы rules.enemycorebuildradius = Радыус абароны варожае. ядраў: [lightgray] (блок.) @@ -1315,6 +1363,8 @@ rules.weather = Надвор'е rules.weather.frequency = Частата: rules.weather.always = Заўсёды rules.weather.duration = Працягласць: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Рэчывы content.liquid.name = Вадкасці @@ -2241,7 +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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Add an operation to the drawing buffer.\nDoes not display anything until [accent]Draw Flush[] is used. lst.drawflush = Flush queued [accent]Draw[] operations to a display. lst.printflush = Flush queued [accent]Print[] operations to a message block. @@ -2264,7 +2314,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2324,6 +2374,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2447,7 +2498,7 @@ lenum.payenter = Увайсці/прызямліцца на блок выгру lenum.flag = Лічбавы сцяг адзінкі. lenum.mine = Дабываць у кардынатах. lenum.build = Пабудаваць структуру. -lenum.getblock = Атрымаць будынак і яго тып у каардынатах.\nАдзінка павінна быць у дыяпазоне ад каардынат.\nЦвердыя не будынкі павінны мець тып [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Правярае калі адзінка знаходзіцца каля каардынат. lenum.boost = Пачаць/перастаць узлятаць. 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. diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index bd83830718..7e895bada1 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -439,6 +439,11 @@ editor.rules = Правила: editor.generation = Генериране: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Редактирай в игра editor.playtest = Playtest editor.publish.workshop = Публикувай в Работилницата @@ -495,6 +500,7 @@ editor.default = [lightgray]<Стандартно> details = Детайли... edit = Редактирай... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Име: editor.spawn = Създай Единица @@ -582,6 +588,7 @@ filter.clear = Изчисти filter.option.ignore = Игнорирай filter.scatter = Разпръскване filter.terrain = Терен +filter.logic = Logic filter.option.scale = Мащаб filter.option.chance = Вероятност filter.option.mag = Магнитут @@ -604,7 +611,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -676,6 +685,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -723,7 +733,7 @@ error.any = Неизвестна мрежова грешка. error.bloom = Неуспешно инициализиране на Сияния.\nВашето устройство може да не поддържа този ефект. weather.rain.name = Дъжд -weather.snow.name = Сняг +weather.snowing.name = Сняг weather.sandstorm.name = Пясъчна буря weather.sporestorm.name = Спорова буря weather.fog.name = Мъгла @@ -971,6 +981,7 @@ stat.abilities = Способности stat.canboost = Може да ускорява stat.flying = Летящ stat.ammouse = Употребе на Боеприпаси +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Множител на Щети stat.healthmultiplier = Множител на Точки живот stat.speedmultiplier = Множител на Скорост @@ -981,17 +992,46 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Енергийно Поле +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Възстановяващо Поле +ability.repairfield.description = Repairs nearby units ability.statusfield = Подсилващо Поле +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Възстановяващо броня Поле +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Подвижна светкавица +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1068,6 +1108,7 @@ unit.items = предмети unit.thousands = хил unit.millions = млн unit.billions = млр +unit.shots = shots unit.pershot = /изстрел category.purpose = Предназначение category.general = Обща информация @@ -1077,6 +1118,8 @@ category.items = Предмети category.crafting = Вход/Изход category.function = Функционалност category.optional = Допълнителни Подобрения +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.landscape.name = Заключване на Пейзажа setting.shadows.name = Сенки @@ -1188,15 +1231,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Избери Регион keybind.schematic_menu.name = Меню със Схеми @@ -1272,7 +1316,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Позволена Употребата на Схеми rules.wavetimer = Таймер за Вълни rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Вълни +rules.airUseSpawns = Air units use spawn points rules.attack = Режим Атака rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1294,6 +1341,7 @@ rules.unitdamagemultiplier = Множител на Щетите на Едини rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Ядрата Увеличават Максималния Брой Единици +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Максимален Брой Единици rules.limitarea = Limit Map Area rules.enemycorebuildradius = Радиус на Защитена от Строене Зона Около Ядрата:[lightgray] (полета) @@ -1326,6 +1374,8 @@ rules.weather = Климат rules.weather.frequency = Честота: rules.weather.always = Винаги rules.weather.duration = Продължителност: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Предмети content.liquid.name = Течности @@ -2255,7 +2305,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Добавя операция в буфера за изображение.\nНе показва нищо докато не използвате [accent]Draw Flush[]. lst.drawflush = Изпълнява операции, поискани с команда [accent]Draw[] върху посочен дисплей. lst.printflush = Извежда текст натрупан с [accent]Print[] върху посочен блок за съобщение. @@ -2278,7 +2328,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2340,6 +2390,7 @@ lenum.shoot = Стреля към позиция. lenum.shootp = Прицелва се в единица/сграда, изчислявайки нейната скорост. lenum.config = Building configuration, e.g. sorter item. lenum.enabled = Дали блокът е активиран или забранен. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Цвят на осветителя. laccess.controller = Връща кой контролира единицата.\nАко е управляване от процесор, връща процесора.\nАко е във формация, връща лидера.\nИначе, връща самата единица. @@ -2477,7 +2528,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Числов флаг на единица. lenum.mine = Добивай ресурси от позиция. lenum.build = Построй структура. -lenum.getblock = Преверете типът на постройката на дадени координати.\nПозицията трябва да е в обхвата на единицата.\nСолидни не-сгради ще имат типа [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Проверете дали дадена позиция е в обхват на единицата. lenum.boost = Започни/Спри ускорението. 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. diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 2e2b9b9827..3be98ea31b 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -57,7 +57,7 @@ mods.browser.sortstars = Ordena per valoració schematic = Esquema schematic.add = Desa l’esquema… schematics = Esquemes -schematic.search = Cerca esquemes... +schematic.search = Cerca esquemes… schematic.replace = Ja hi ha un esquema amb aquest nom. Voleu reemplaçar-lo? schematic.exists = Ja hi ha un esquema amb aquest nom. schematic.import = Importa un esquema @@ -148,8 +148,8 @@ mod.content = Contingut: mod.delete.error = El mod no es pot esborrar. Potser el fitxer està en ús. mod.incompatiblegame = [red]Versió no compatible mod.incompatiblemod = [red]Incompatible -mod.blacklisted = [red]Unsupported -mod.unmetdependencies = [red]Depèndencies sense resoldre +mod.blacklisted = [red]No suportat +mod.unmetdependencies = [red]Dependències sense resoldre mod.erroredcontent = [scarlet]Errors del contingut mod.circulardependencies = [red]Dependències circulars mod.incompletedependencies = [red]Dependències incompletes @@ -348,7 +348,7 @@ command.rebuild = Reconstrueix command.assist = Assisteix al jugador command.move = Mou command.boost = Sobrevola -command.enterPayload = Enter Payload Block +command.enterPayload = Entra bloc command.loadUnits = Carrega unitats command.loadBlocks = Carrega blocs command.unloadPayload = Descarrega @@ -383,7 +383,7 @@ pausebuilding = [accent][[{0}][] per a posar en pausa la construcció. resumebuilding = [scarlet][[{0}][] per a reprendre la construcció. enablebuilding = [scarlet][[{0}][] per a activar l’edifici. showui = La interfície gràfica està amagada.\nPremeu [accent][[{0}][] per a mostrar-la. -commandmode.name = [accent]Command Mode +commandmode.name = [accent]Mode d’Ordres commandmode.nounits = [no units] wave = [accent]Onada {0} wave.cap = [accent]Onada {0}/{1} @@ -438,7 +438,12 @@ editor.waves = Onades editor.rules = Regles editor.generation = Generació editor.objectives = Objectius -editor.locales = Locale Bundles +editor.locales = Paquet de traduccions +editor.worldprocessors = Processadors integrats +editor.worldprocessors.editname = Edita el nom +editor.worldprocessors.none = [lightgray]No s’han trobat blocs de processadors integrats!\nAfegiu-ne un a l’editor de mapes o feu servir el botó \ue813 de sota. +editor.worldprocessors.nospace = No hi ha espai disponible per a posar un processador integrat!\nPotser el mapa està ple d’estructures. +editor.worldprocessors.delete.confirm = Esteu segur que voleu esborrar aquest processador integrat?\n\nSi està envoltat de murs, es reemplaçarà per un mur mediambiental. editor.ingame = Edita des de la partida editor.playtest = Prova el mapa editor.publish.workshop = Publica al Workshop @@ -481,7 +486,7 @@ waves.sort.reverse = Ordre invers waves.sort.begin = Comença waves.sort.health = Salut waves.sort.type = Tipus -waves.search = Es busquen onades... +waves.search = Es busquen onades… waves.filter = Filtre d'unitats waves.units.hide = Amaga-les totes waves.units.show = Mostra-les totes @@ -495,6 +500,7 @@ editor.default = [lightgray] details = Detalls edit = Edita variables = Variables +logic.clear.confirm = Esteu segur que voleu esborrar tot el codi d’aquest processador? logic.globals = Built-in Variables editor.name = Nom: editor.spawn = Genera una unitat @@ -507,7 +513,7 @@ editor.errorlegacy = Aquest mapa és massa antic i fa servir un format obsolet. editor.errornot = No és un fitxer de mapa. editor.errorheader = Aquest fitxer de mapa no és vàlid o està corromput. editor.errorname = No s’ha definit el nom del mapa. Esteu intentant carregar una partida desada? -editor.errorlocales = Error reading invalid locale bundles. +editor.errorlocales = S’ha produït un error mentre es llegia un paquet de traduccions no vàlid. editor.update = Actualitza editor.randomize = Assigna a l’atzar editor.moveup = Mou amunt @@ -519,7 +525,7 @@ editor.sectorgenerate = Generació del sector editor.resize = Canvia la mida editor.loadmap = Carrega un mapa editor.savemap = Desa el mapa -editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? +editor.savechanges = [scarlet]Teniu canvis sense desar!\n\n[]Voleu desar-los? editor.saved = S’ha desat. editor.save.noname = El mapa no té nom! Trieu-ne un des del menú «Informació del mapa». editor.save.overwrite = El vostre mapa sobreescriu un mapa incorporat al joc! Trieu un nom diferent des del menú «Informació del mapa». @@ -584,6 +590,7 @@ filter.clear = Neteja filter.option.ignore = Ignora filter.scatter = Dispersió filter.terrain = Terreny +filter.logic = Lògica filter.option.scale = Escala filter.option.chance = Probabilitat @@ -607,23 +614,25 @@ 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 +filter.option.code = Codi +filter.option.loop = Bucle +locales.info = Aquí, podeu afegir paquets de traducció per a idiomes específics al vostre mapa. En els paquets de traducció, cada propietat té un nom i un valor. Aquestes propietats les poden fer servir els processadors integrats i els objectius, fent servir els seus noms. Suporten el format de text (reemplaçant els marcadors de posició amb els seus valors corresponents).\n\n[cyan]Exemple de propietat:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) +locales.deletelocale = Esteu segur que voleu esborrar aquesta traducció? +locales.applytoall = Aplica els canvis a totes les traduccions +locales.addtoother = Afegeix a les altres traduccions +locales.rollback = Restableix a l’última aplicada +locales.filter = Propietat per al filtre +locales.searchname = Cerca el nom… +locales.searchvalue = Cerca el valor… +locales.searchlocale = Cerca la traducció… +locales.byname = Per nom +locales.byvalue = Per valor +locales.showcorrect = Mostra les propietats que estan en totes les traduccions i tenen valors únics en totes +locales.showmissing = Mostra les propietats que fan falta en algunes traduccions +locales.showsame = Mostra les propietats que tenen els mateixos valors en traduccions diferents +locales.viewproperty = Mostra en totes les traduccions +locales.viewing = Es mostra la propietat «{0}» +locales.addicon = Afegeix una icona width = Amplada: height = Alçada: @@ -679,6 +688,7 @@ marker.shape.name = Forma marker.text.name = Text marker.line.name = Línia marker.quad.name = Rectangle +marker.texture.name = Textura marker.background = Fons marker.outline = Contorn @@ -727,7 +737,7 @@ error.any = S’ha produït un error de xarxa desconegut. error.bloom = No s’ha pogut inicialitzar l’efecte «bloom».\nPotser el dispositiu no admet aquesta funció. weather.rain.name = Pluja -weather.snow.name = Neu +weather.snowing.name = Neu weather.sandstorm.name = Tempesta de sorra weather.sporestorm.name = Tempesta d’espores weather.fog.name = Boira @@ -850,7 +860,7 @@ sector.ravine.description = No es detecten nuclis enemics al sector, tot i que sector.caldera-erekir.description = Els recursos que s’han detectat al sector estan espargits per diverses illes.\nInvestigueu i establiu una xarxa de transport que faci servir drons. sector.stronghold.description = El campament enemic gran d’aquest sector guarda dipòsits importants de [accent]tori[].\nFeu-lo servir per a desenvolupar unitats i torretes de nivells més alts. sector.crevice.description = L’enemic enviarà un atac ferotge per a eliminar la vostra base del sector.\nPer a poder sobreviure, caldrà desenvolupar [accent]carburs[] i [accent]generadors pirolítics[]. -sector.siege.description = En aquest sector hi ha dos canyons paral·lels que forçaran un atac per dues bandes.\nInvestigueu el [accent]cianogen[] per a poder crear unitats d’atac més fortes.\nAtenció: s’han detectat missils de llarg abast. Els missils es poden abatre abans que impactin contra el seu objectiu. +sector.siege.description = En aquest sector hi ha dos canyons paral·lels que forçaran un atac per dues bandes.\nInvestigueu el [accent]cianogen[] per a poder crear unitats d’atac més fortes.\nAtenció: s’han detectat míssils de llarg abast. Els míssils es poden abatre abans que impactin contra el seu objectiu. sector.crossroads.description = Les bases enemigues del sector s’han establert en diferents tipus de terreny. Investigueu unitats diferents per a adaptar els atacs.\nA més a més, algunes bases estan protegides per escuts. Esbrineu d’on treuen l’energia. sector.karst.description = Aquest sector és ric en recursos, però l’enemic l’atacarà tan aviat com hi aterri un nucli.\nAprofiteu els recursos i recerqueu el [accent]teixit de fase[]. sector.origin.description = El sector final amb una presència enemiga important.\nProbablement no queden oportunitats de recerca. Centreu-vos en destruir els nuclis enemics. @@ -975,6 +985,7 @@ stat.abilities = Habilitats stat.canboost = Pot sobrevolar. stat.flying = Està volant. stat.ammouse = Ús de munició +stat.ammocapacity = Capacitat de munició stat.damagemultiplier = Multiplicador de dany stat.healthmultiplier = Multiplicador de salut stat.speedmultiplier = Multiplicador de velocitat @@ -985,17 +996,46 @@ stat.immunities = Immunitats stat.healing = Reparador ability.forcefield = Camp de força +ability.forcefield.description = Projecta un camp de força que absorbeix les bales. ability.repairfield = Repara el camp de força +ability.repairfield.description = Repara les unitats properes. ability.statusfield = Estat del camp +ability.statusfield.description = Aplica un efecte d’estat a les unitats properes. ability.unitspawn = Fàbrica +ability.unitspawn.description = Construeix unitats. ability.shieldregenfield = Regenerador de camps de força +ability.shieldregenfield.description = Regenera els escuts d’unitats properes. ability.movelightning = Moviment llampec +ability.movelightning.description = Solta un llamp mentre es mou. +ability.armorplate = Armadura de plaques +ability.armorplate.description = Redueix el dany rebut mentre dispara. ability.shieldarc = Escut de descàrregues -ability.suppressionfield = Regen Suppression Field +ability.shieldarc.description = Projecta un escut de força en un arc que absorbeix les bales. +ability.suppressionfield = Regenera el camp de supressió +ability.suppressionfield.description = Para els edificis de reparació propers. ability.energyfield = Camp de força -ability.energyfield.sametypehealmultiplier = [lightgray]Mateix tipus de guarició: [white]{0} % -ability.energyfield.maxtargets = [lightgray]Objectius màx.: [white]{0} +ability.energyfield.description = Ataca els enemics propers. +ability.energyfield.healdescription = Ataca els enemics propers i cura els aliats. ability.regen = Regeneració +ability.regen.description = Regenera la seva salut amb el pas del temps. +ability.liquidregen = Absorció de líquids +ability.liquidregen.description = Absorbeix líquids per a curar-se. +ability.spawndeath = Aparicions mortals +ability.spawndeath.description = Allibera unitats quan mor. +ability.liquidexplode = Vessament mortal +ability.liquidexplode.description = Vessa líquid quan mor. +ability.stat.firingrate = [stat]{0}/seg[lightgray] de cadència de tir +ability.stat.regen = [stat]{0}[lightgray] de salut/seg +ability.stat.shield = [stat]{0}[lightgray] d’escut +ability.stat.repairspeed = [stat]{0}/seg[lightgray] de velocitat de reparació +ability.stat.slurpheal = [stat]{0}[lightgray] de salut/unitat de líquid +ability.stat.cooldown = [stat]{0} seg[lightgray] de temps de refredament +ability.stat.maxtargets = [stat]{0}[lightgray] objectius com a màxim +ability.stat.sametypehealmultiplier = [stat]{0} %[lightgray] a la quantitat de reparació del mateix tipus +ability.stat.damagereduction = [stat]{0} %[lightgray] de reducció del dany +ability.stat.minspeed = [stat]{0} caselles/seg[lightgray] de velocitat mín. +ability.stat.duration = [stat]{0} seg[lightgray] de duració +ability.stat.buildtime = [stat]{0} seg[lightgray] de temps de construcció bar.onlycoredeposit = Només es permet depositar al nucli. bar.drilltierreq = Cal una perforadora millor. @@ -1035,7 +1075,7 @@ bullet.splashdamage = [stat]{0}[lightgray] de dany a l’àrea ~[stat] {1}[light bullet.incendiary = [stat]incendiari bullet.homing = [stat]munició guiada bullet.armorpierce = [stat]perforador d’armadures -bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit +bullet.maxdamagefraction = [stat]{0}%[lightgray] de dany límit bullet.suppression = [stat]Supressió de reparacions cada {0} s[lightgray] ~ [stat]{1}[lightgray] caselles bullet.interval = [stat]Interval de bales de {0}/s[lightgray]: bullet.frags = [stat]{0}[lightgray]× de bales de fragmentació: @@ -1071,6 +1111,7 @@ unit.items = elements unit.thousands = k unit.millions = M unit.billions = kM +unit.shots = dispars unit.pershot = /dispar category.purpose = Funció category.general = General @@ -1080,6 +1121,8 @@ category.items = Elements category.crafting = Entrada/Sortida category.function = Funcionament category.optional = Millores opcionals +setting.alwaysmusic.name = Reprodueix música sempre +setting.alwaysmusic.description = Quan està activat, la música es reproduirà en bucle durant les partides.Quan està desactivat, només es reproduirà a intervals aleatoris. setting.skipcoreanimation.name = Omet l’animació del llançament i aterratge del nucli setting.landscape.name = Bloca el paisatge setting.shadows.name = Ombres @@ -1191,15 +1234,16 @@ keybind.unit_stance_hold_fire.name = Comportament: Mantén el foc keybind.unit_stance_pursue_target.name = Comportament: Persegueix l’objectiu keybind.unit_stance_patrol.name = Comportament: Patrulla keybind.unit_stance_ram.name = Comportament: Senzill -keybind.unit_command_move = Comportament: Mou -keybind.unit_command_repair = Comportament: Repara -keybind.unit_command_rebuild = Comportament: Reconstrueix -keybind.unit_command_assist = Comportament: Assisteix -keybind.unit_command_mine = Comportament: Extrau -keybind.unit_command_boost = Comportament: Sobrevola -keybind.unit_command_load_units = Comportament: Carrega unitats -keybind.unit_command_load_blocks = Comportament: Carrega blocs -keybind.unit_command_unload_payload = Comportament: Descarrega +keybind.unit_command_move.name = Ordre d’unitat: Mou +keybind.unit_command_repair.name = Ordre d’unitat: Repara +keybind.unit_command_rebuild.name = Ordre d’unitat: Reconstrueix +keybind.unit_command_assist.name = Ordre d’unitat: Assisteix +keybind.unit_command_mine.name = Ordre d’unitat: Extrau +keybind.unit_command_boost.name = Ordre d’unitat: Sobrevola +keybind.unit_command_load_units.name = Ordre d’unitat: Carrega unitats +keybind.unit_command_load_blocks.name = Ordre d’unitat: Carrega blocs +keybind.unit_command_unload_payload.name = Ordre d’unitat: Descarrega blocs +keybind.unit_command_enter_payload.name = Ordre d’unitat: Entra blocs keybind.rebuild_select.name = Reconstrueix la regió keybind.schematic_select.name = Selecciona una regió keybind.schematic_menu.name = Menú de plànols @@ -1268,14 +1312,17 @@ 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.derelictrepair = Permet la reparació dels blocs en ruïnes rules.reactorexplosions = Explosions als reactors rules.coreincinerates = El nucli incinera els excedents rules.disableworldprocessors = Desactiva els processadors integrats rules.schematic = Permetre l’ús d’esquemes rules.wavetimer = Temporitzador d’onades rules.wavesending = Enviament d’onades +rules.allowedit = Permet editar les regles +rules.allowedit.info = Quan està activat, el jugador pot editar les regles de la partida amb el botó que hi ha a la part inferior esquerra del menú de pausa. rules.waves = Onades +rules.airUseSpawns = Les unitats aèries fan servir els punts d’aparició rules.attack = Mode d’atac rules.buildai = IA constructora de bases rules.buildaitier = Nivell de construcció de la IA @@ -1297,6 +1344,7 @@ rules.unitdamagemultiplier = Multiplicador del dany de les unitats rules.unitcrashdamagemultiplier = Multiplicador del dany de xoc de les unitats rules.solarmultiplier = Multiplicador de l’energia solar rules.unitcapvariable = Els nuclis contribueixen al límit d’unitats +rules.unitpayloadsexplode = Els blocs carregats exploten juntament amb la unitat rules.unitcap = Capacitat base d’unitats rules.limitarea = Limita l’àrea del mapa rules.enemycorebuildradius = Radi de no construcció del nucli enemic:[lightgray] (caselles) @@ -1329,6 +1377,8 @@ rules.weather = Estat meteorològic rules.weather.frequency = Freqüència: rules.weather.always = Sempre rules.weather.duration = Durada: +rules.placerangecheck.info = No es permet que els jugadors puguin posar res a prop dels edificis enemics. Quan s’intenta posar una torreta, l’abast augmenta i la torreta no podrà arribar a l’enemic. +rules.onlydepositcore.info = No es permet que les unitats deixin elements a dins dels edificis excepte els nuclis. content.item.name = Elements content.liquid.name = Fluids @@ -1815,7 +1865,7 @@ block.diffuse.name = Diffuse block.basic-assembler-module.name = Mòdul de muntatge bàsic block.smite.name = Smite block.malign.name = Maligne -block.flux-reactor.name = Reactor de fluxe +block.flux-reactor.name = Reactor de flux block.neoplasia-reactor.name = Reactor de neoplàsia block.switch.name = Interruptor @@ -1921,7 +1971,7 @@ aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis st split.pickup = La unitat nucli pot recollir alguns blocs.\nRecolliu aquest [accent]contenidor[] i poseu-lo al [accent]transportador de blocs a distància[].\n(Les tecles per defecte són [ i ] per a recollir i deixar). split.pickup.mobile = La unitat nucli pot recollir alguns blocs.\nRecolliu aquest [accent]contenidor[] i poseu-lo al [accent]transportador de blocs a distància[].\n(Per a deixar o recollir alguna cosa, premeu-la uns segons). split.acquire = Heu d’aconseguir una mica de tungstè per a construir unitats. -split.build = Les unitats s’han de transportar a l’altra banda del mur.\nConstruïu dos [accent]transportadors de blocs a distància[], un a cada banda del mur.\nPer establir-hi un enllaç, seleccioneu-ne un i després seleecionant l’altre. +split.build = Les unitats s’han de transportar a l’altra banda del mur.\nConstruïu dos [accent]transportadors de blocs a distància[], un a cada banda del mur.\nPer establir-hi un enllaç, seleccioneu-ne un i després seleccionant l’altre. split.container = Igual que els contenidors, les unitats també es poden transportar amb els [accent]transportadors de blocs a distància[].\nConstruïu una fabricadora d’unitats al costat d’un transportadors de blocs a distància per a carregar-les i enviar-les més enllà del mur per a atacar la base enemiga. item.copper.description = S’empra en molts tipus de construccions i munició. @@ -1945,10 +1995,10 @@ item.spore-pod.description = Es pot convertir en petroli, explosius i combustibl item.spore-pod.details = Espores. Probablement, es tracta d’una forma de vida sintètica. Emet gasos tòxics per a altres formes de vida i és molt invasiva. Sota certes condicions, són molt inflamables. item.blast-compound.description = S’empra en bombes i munició explosiva. item.pyratite.description = S’empra en armes incendiàries i generadors a combustió. -item.beryllium.description = S’empra en molts tipus de construccions i municó d’Erekir. +item.beryllium.description = S’empra en molts tipus de construccions i munició d’Erekir. item.tungsten.description = S’empra en perforadores, armadures i munició. Se’n necessita per construir estructures més avançades. item.oxide.description = S’empra com a conductor de l’energia tèrmica i també es fa servir com a aïllant elèctric. -item.carbide.description = Es fa servir en estrutures avançades, unitats pesants i munició. +item.carbide.description = Es fa servir en estructures avançades, unitats pesants i munició. liquid.water.description = S’empra per a refredar màquines i processar residus. liquid.slag.description = Es refina en separadors per a obtenir-ne diferents metalls. També es fa servir com a munició líquida en torretes. @@ -1959,7 +2009,7 @@ liquid.ozone.description = Es fa servir com a agent oxidant en producció de mat liquid.hydrogen.description = Es fa servir en extracció de recursos, producció d’unitats i reparació d’estructures. Inflamable. liquid.cyanogen.description = Es fa servir per a munició, construcció d’unitats avançades i diverses reaccions en blocs avançats. Molt inflamable. liquid.nitrogen.description = Es fa servir per a extraure recursos, obtenció de gas i producció d’unitats. Inert. -liquid.neoplasm.description = Un subproducte biològic perillís del reactor de neoplàsia. S’estén de pressa a altres blocs adjacents que continguin aigua que toca, fent-los malbé. Viscós. +liquid.neoplasm.description = Un subproducte biològic perillós del reactor de neoplàsia. S’estén de pressa a altres blocs adjacents que continguin aigua que toca, fent-los malbé. Viscós. liquid.neoplasm.details = Neoplasma. Una massa incontrolable de cèl·lules sintètiques que es divideixen molt de pressa amb una consistència fangosa. Resisteix temperatures altes. Extremadament perillosa per a estructures amb aigua.\n\nMassa complexa i inestable per a fer-ne una anàlisi estàndard. Aplicacions potencials desconegudes. Es recomana incinerar-la en piscines de residus. block.derelict = \uf77e [lightgray]En ruïnes @@ -2250,14 +2300,14 @@ unit.vanquish.description = Dispara munició de gran calibre perforadora i de di unit.conquer.description = Dispara ràfegues llargues de bales als objectius enemics. unit.merui.description = Dispara artilleria de llarg abast als objectius enemics. Pot travessar la majoria de terrenys. unit.cleroi.description = Dispara parelles de projectils als objectius enemics. Busca projectils enemics amb torretes de punt de defensa. Pot travessar la majoria de terrenys. -unit.anthicus.description = Dispara missils dirigits de llarg abast als objectius enemics. Pot travessar la majoria de terrenys. -unit.tecta.description = Dispara missils de plasma dirigits als objectius enemics. Es protegeix a si mateix amb un escut direccional. Pot travessar la majoria de terrenys. +unit.anthicus.description = Dispara míssils dirigits de llarg abast als objectius enemics. Pot travessar la majoria de terrenys. +unit.tecta.description = Dispara míssils de plasma dirigits als objectius enemics. Es protegeix a si mateix amb un escut direccional. Pot travessar la majoria de terrenys. unit.collaris.description = Dispara artilleria de fragmentació de llarg abast als objectius enemics. Pot travessar la majoria de terrenys. unit.elude.description = Dispara parelles de bales dirigides als objectius enemics. Pot volar sobre les masses de líquid. unit.avert.description = Dispara parelles de bales que torcen la trajectòria als objectius enemics. unit.obviate.description = Dispara parelles de boles elèctriques als objectius enemics. -unit.quell.description = Dispara missils de llarg abast dirigits als objectius enemics. Evita la reparació de les estructures enemigues per part dels blocs de reparació. -unit.disrupt.description = Dispara missils de llarg abast dirigits i supressors als objecius enemics. Evita la reparació de les estructures enemigues per part dels blocs de reparació. +unit.quell.description = Dispara míssils de llarg abast dirigits als objectius enemics. Evita la reparació de les estructures enemigues per part dels blocs de reparació. +unit.disrupt.description = Dispara míssils de llarg abast dirigits i supressors als objectius enemics. Evita la reparació de les estructures enemigues per part dels blocs de reparació. unit.evoke.description = Construeix estructures per defensar el nucli Bastió. Repara les estructures amb un raig. unit.incite.description = Construeix estructures per defensar el nucli Ciutadella. Repara les estructures amb un raig. unit.emanate.description = Construeix estructures per defensar el nucli Acròpolis. Repara les estructures amb un raig. @@ -2265,7 +2315,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.format = Reemplaça el següent marcador de posició a la cua d’impressió amb un valor.\nNo fa res si el patró del marcador no és vàlid.\nPatró del marcador: "{[accent]número 0-9[]}"\nExemple:\n[accent]print "test {0}"\nformat "example" lst.draw = Afegeix una instrucció de dibuix a la cua corresponent.\nEl resultat no es mostrarà fins que s’apliqui «[accent]Draw Flush[]». lst.drawflush = Executa les operacions de la cua de dibuix al monitor lògic. lst.printflush = Executa les operacions de la cua d’impressió al monitor lògic. @@ -2288,8 +2338,8 @@ lst.getblock = Obtén les dades d’un bloc en qualsevol posició. lst.setblock = Estableix les dades d’un bloc en qualsevol posició. lst.spawnunit = Fes aparèixer una unitat en una posició. lst.applystatus = Aplica o esborra un efecte d’estat d’una unitat. -lst.weathersensor = Check if a type of weather is active. -lst.weatherset = Set the current state of a type of weather. +lst.weathersense = Comprova si un tipus de temps meteorològics està actiu. +lst.weatherset = Estableix l’estat actual per a un tipus de temps meteorològic. lst.spawnwave = Simula l’aparició d’una onada enemiga en una posició arbitrària.\nEl comptador d’onades no s’incrementarà. lst.explosion = Crea una explosió en una posició. lst.setrate = Estableix la velocitat d’execució del processador en instruccions/tic. @@ -2301,47 +2351,47 @@ lst.cutscene = Manipula la càmera del jugador. lst.setflag = Estableix un senyal global que es podrà llegir en tots els processadors. lst.getflag = Obtén un senyal global. lst.setprop = Estableix una propietat d’una unitat o estructura. -lst.effect = Crea un efecte de particula. +lst.effect = Crea un efecte de partícula. lst.sync = Sincronitza una variable a través de la xarxa.\nS’invoca com a molt 10 vegades per segon. lst.makemarker = Crea una marca lògica al món.\nS’ha de donar un ID per a identificar-la.\nEs poden establir fins a 20.000 marcadors per món. lst.setmarker = Estableix una propietat per a la marca.\nL’ID que es faci servir ha de ser el mateix que el de la instrucció de crear la marca. -lst.localeprint = 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. +lst.localeprint = Afegeix el valor d’una propietat de la traducció d’un mapa a la cua d’impressió.\nPer a establir paquets de traducció de mapes a l’editor de mapes, comproveu [accent]Informació del mapa > Paquets de traducció[].\nSi el client és un dispositiu mòbil, primer intenta imprimir una propietat que acabi en «.mobile». lglobal.false = 0 lglobal.true = 1 lglobal.null = null -lglobal.@pi = 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.@pi = La constant matemàtica pi (3.141…) +lglobal.@e = La constant matemàtica e (2.718…) +lglobal.@degToRad = Multiplica per aquest nombre per a convertir graus sexagesimals en radians. +lglobal.@radToDeg = Multiplica per aquest nombre per a convertir radians en graus sexagesimals. +lglobal.@time = Temps de joc de la partida actual, en mil·lisegons +lglobal.@tick = Temps de joc de la partida actual, en tics (1 segon = 60 tics) +lglobal.@second = Temps de joc de la partida actual, en segons +lglobal.@minute = Temps de joc de la partida actual, en minuts +lglobal.@waveNumber = Nombre de l’onada actual, si les onades estan activades +lglobal.@waveTime = Comptador enrere de les onades, en segons +lglobal.@mapw = Amplada del mapa en caselles +lglobal.@maph = Alçària del mapa en caselles +lglobal.sectionMap = Mapa lglobal.sectionGeneral = General -lglobal.sectionNetwork = Network/Clientside [World Processor Only] -lglobal.sectionProcessor = Processor +lglobal.sectionNetwork = Xarxa/Client [Només processador integrat] +lglobal.sectionProcessor = Processador 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 +lglobal.@this = El bloc lògic que executa el codi +lglobal.@thisx = Coordenada X del bloc que executa el codi +lglobal.@thisy = Coordenada Y del bloc que executa el codi +lglobal.@links = Quantitat total de blocs enllaçats amb aquest processador +lglobal.@ipt = Velocitat d’execució del processador en instruccions per tic (60 tics = 1 segon) +lglobal.@unitCount = Nombre total de tipus de continguts d’unitat a la partida; es fa servir amb la instrucció lookup. +lglobal.@blockCount = Nombre total de tipus de continguts de bloc a la partida; es fa servir amb la instrucció lookup. +lglobal.@itemCount = Nombre total de tipus de continguts d’element a la partida; es fa servir amb la instrucció lookup. +lglobal.@liquidCount = Nombre total de tipus de continguts de líquid a la partida; es fa servir amb la instrucció lookup. +lglobal.@server = Cert si el codi s’executa en un servidor o en mode d’un sol jugador; fals altrament. +lglobal.@client = Cert si el codi s’executa en un client connectat a un servidor. +lglobal.@clientLocale = Traducció del client que executa el codi. Per exemple: en_US +lglobal.@clientUnit = Unitat del client que executa el codi +lglobal.@clientName = Nom del jugador del client que executa el codi +lglobal.@clientTeam = Identificador de l’equip que executa el codi +lglobal.@clientMobile = Cert si el client que executa el codi és un dispositiu mòbil; fals altrament. logic.nounitbuild = [red]Aquí no es permet construir blocs de tipus lògic. @@ -2350,6 +2400,7 @@ lenum.shoot = Dispara a una posició. lenum.shootp = Dispara a una unitat/bloc tenint en compte la seva velocitat a l’hora d’apuntar. lenum.config = Configuració de l’estructura, com ara el classificador. lenum.enabled = Retorna si el bloc està activat. +laccess.currentammotype = Líquid o element de munició actual de la torreta. laccess.color = Color de l’il·luminador. laccess.controller = Controlador de la unitat. Si es controla per processador, retorna el processador.\nAltrament, retorna la mateixa unitat. @@ -2357,7 +2408,7 @@ laccess.dead = Retorna si una unitat o bloc està destruïda o si ja no és vàl laccess.controlled = Returna:\n[accent]@ctrlProcessor[] si el controlador de la unitat és un processador;\n[accent]@ctrlPlayer[] si el controlador de la unitat és un jugador;\n[accent]@ctrlCommand[] si el controlador és un comandament del jugador;\naltrament, és 0. laccess.progress = Progrés de l’acció, entre 0 i 1.\nRetorna la producció, la recàrrega de la torreta o el progrés de la construcció. laccess.speed = Velocitat màxima de la unitat, en caselles/s. -laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. +laccess.id = Identificador d’unitat/bloc/element/líquid.\nÉs l’invers de l’operació lookup. lcategory.unknown = Desconegut lcategory.unknown.description = Instruccions sense categoria. lcategory.io = Entrada i sortida @@ -2384,7 +2435,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. +graphicstype.print = Dibuixa el text de la cua d’impressió.\nEsborra la cua d’impressió. lenum.always = Sempre cert. lenum.idiv = Divisió entera. @@ -2479,7 +2530,7 @@ lenum.unbind = Desactiva del tot el control lògic.\nContinua amb la IA estànda lenum.move = Mou a una posició exacta. lenum.approach = Aproxima a una zona determinada amb una posició i un radi. lenum.pathfind = Troba un camí i segueix una ruta fins al punt d’aparició d’enemics. -lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. +lenum.autopathfind = Busca un camí automàticament fins al nucli enemic més proper o punt d’aterratge.\nÉs el mateix que el camí d'una onada enemiga estàndard. lenum.target = Dispara a una posició. lenum.targetp = Dispara a un objectiu tenint en compte la seva velocitat a l’hora d’apuntar. lenum.itemdrop = Deixa un element. @@ -2490,7 +2541,7 @@ lenum.payenter = Entra o apareix al bloc on es troba la unitat. lenum.flag = Identificador numèric de la unitat. lenum.mine = Extreu recursos en una posició. lenum.build = Construeix una estructura. -lenum.getblock = Obté un bloc i el seu tipus a les coordenades indicades.\nLa posició escollida ha d’estar a l’abast de la unitat.\nEls blocs que no són construccions tindran el tipus [accent]@solid[]. +lenum.getblock = Obté el bloc, el seu tipus i el terra a les coordenades indicades.\nLa posició escollida ha d’estar a l’abast de la unitat; altrament es retornarà un valor buit. lenum.within = Comprova si la unitat està a prop d’una posició. lenum.boost = Inicia/Detén el vol. lenum.flushtext = Passa el contingut de la cua d’impressió al marcador, si es pot.\nSi s’estableix «fetch» a vertader, s’intentarà carregar les propietats de la traducció del mapa o del joc. diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index cdd5a9fdae..66acc27401 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -440,6 +440,11 @@ editor.rules = Pravidla: editor.generation = Generace: editor.objectives = Úkoly: editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Upravit ve hře editor.playtest = Playtest editor.publish.workshop = Publikovat do Workshopu na Steamu @@ -496,6 +501,7 @@ editor.default = [lightgray][] details = Podrobnosti... edit = Upravit... variables = Hodnoty +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Jméno: editor.spawn = Zrodit jednotku @@ -583,6 +589,7 @@ filter.clear = Vyčistit filter.option.ignore = Ignorovat filter.scatter = Rozptýlení filter.terrain = Terén +filter.logic = Logic filter.option.scale = Měřítko filter.option.chance = Náhoda @@ -606,7 +613,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -678,6 +687,7 @@ marker.shape.name = Tvar marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Pozadí marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -725,7 +735,7 @@ error.any = Neznámá chyba sítě. error.bloom = Chyba inicializace filtru Bloom.\nTvé zařízení ho nejspíš nepodporuje. weather.rain.name = Déšť -weather.snow.name = Sníh +weather.snowing.name = Sníh weather.sandstorm.name = Písečná ouře weather.sporestorm.name = Spórová bouře weather.fog.name = Mlha @@ -973,6 +983,7 @@ stat.abilities = Schopnosti stat.canboost = Umí posilovat stat.flying = Létající stat.ammouse = Spotřeba Munice +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Násobič Poškození stat.healthmultiplier = Násobič Životů stat.speedmultiplier = Násobič Rychlostí @@ -983,17 +994,46 @@ stat.immunities = Imunity stat.healing = Léčí se ability.forcefield = Silové pole +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Opravit pole +ability.repairfield.description = Repairs nearby units ability.statusfield = Stav pole +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = továrna +ability.unitspawn.description = Constructs units ability.shieldregenfield = Silově opravné pole +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Pohybující se blesk +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Štítovy Oblouk +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energetické pole -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Pouze Ukládání do Jádra je povoleno @@ -1070,6 +1110,7 @@ unit.items = předměty unit.thousands = tis unit.millions = mio unit.billions = mld +unit.shots = shots unit.pershot = /střela category.purpose = Účel category.general = Všeobecné @@ -1079,6 +1120,8 @@ category.items = Předměty category.crafting = Vstup/Výstup category.function = Funkce category.optional = Volitelné vylepšení +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Přeskočit Animaci Odpalu/Přístání Jádra setting.landscape.name = Uzamknout krajinu setting.shadows.name = Stíny @@ -1190,15 +1233,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Přestavět Region keybind.schematic_select.name = Vybrat oblast keybind.schematic_menu.name = Nabídka šablon @@ -1274,7 +1318,10 @@ rules.disableworldprocessors = Zakázat Světové Procesory rules.schematic = Šablony povoleny rules.wavetimer = Časovač vln rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Vlny +rules.airUseSpawns = Air units use spawn points rules.attack = Režim útoku rules.buildai = Umělá AI staví rules.buildaitier = Úroveň AI stavitele @@ -1296,6 +1343,7 @@ rules.unitdamagemultiplier = Násobek poškození jednotkami rules.unitcrashdamagemultiplier = Násobek poškození při nárazu jednotky rules.solarmultiplier = Násobek Solární Energie rules.unitcapvariable = Jádra Zvýšujou Maximum Počtu Jednotek +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Základní Maximum Počtu Jednotek rules.limitarea = Limit Map Area rules.enemycorebuildradius = Poloměr, ve kterém se okolo nepřátelského jádra nesmí stavět: [lightgray](dlaždic)[] @@ -1328,6 +1376,8 @@ rules.weather = Počasí rules.weather.frequency = Četnost: rules.weather.always = Vždy rules.weather.duration = Trvání: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Předměty content.liquid.name = Kapaliny @@ -2260,7 +2310,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Přídá operaci do vykreslovacího buferu.\nNezobrazí nic dokud [accent]Draw Flush[] je použít. lst.drawflush = Provede všechny [accent]Draw[] operace na zobrazovač logiky. Pak vyčistí vykreslovací bufer. lst.printflush = Provede všechny [accent]Print[] operace do zprávy. Pak vyčistí vypisovací bufer. @@ -2283,7 +2333,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2345,6 +2395,7 @@ lenum.shoot = Vystřelí na určitou pozici. lenum.shootp = Vystřelí na jednotku/budovu s rychlostní předpovědí. lenum.config = Konfigurace budovy, např. třídící věc pro třídičku. lenum.enabled = Zda je blok povolen. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Barva osvětlovače. laccess.controller = Kontroler jednotky. Pokud procesor je kontrolován, vrátí procesor\nPokud je ve formaci, vrací vůdce.\nJinak vrací jednotku. @@ -2485,7 +2536,7 @@ lenum.payenter = Vstoupit/přistat na nákladní blok, na kterém jednotka je. lenum.flag = Číselné označení (flag) jednotky. lenum.mine = Těžit na pozici. lenum.build = Postavit strukturu. -lenum.getblock = Získat budovu a typ na dané pozici.\nJednotka musí být v dosahu dané pozice.\nSolidní non-budovy budou mít typ [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Zkontrolovat, jestli jednotka je blízko dané pozice. lenum.boost = Začít/Přestat posilovat. 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. diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 1e23ad4055..caac178e24 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -435,6 +435,11 @@ editor.rules = Regler: editor.generation = Generering: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Ændr i spil editor.playtest = Playtest editor.publish.workshop = Publicer på Workshop @@ -490,6 +495,7 @@ editor.default = [lightgray] details = Detaljer... edit = Rediger... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Navn: editor.spawn = Påkald enhed @@ -577,6 +583,7 @@ filter.clear = Ryd filter.option.ignore = Ignorer filter.scatter = Spreder filter.terrain = Terræn +filter.logic = Logic filter.option.scale = Skaler filter.option.chance = Chance filter.option.mag = Størrelse @@ -599,7 +606,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -671,6 +680,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -717,7 +727,7 @@ error.any = Ukendt netværksfejl. error.bloom = Kunne ikke etablere bloom-effekt.\nMåske understøtter din enhed den ikke. weather.rain.name = Regn -weather.snow.name = Sne +weather.snowing.name = Sne weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Tåge @@ -962,6 +972,7 @@ stat.abilities = Evner stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -972,17 +983,46 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Kraftfelt +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Reparationsfelt +ability.repairfield.description = Repairs nearby units ability.statusfield = Statusfelt +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Fabrik +ability.unitspawn.description = Constructs units ability.shieldregenfield = Skjold-regenereringsfelt +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1059,6 +1099,7 @@ unit.items = genstande unit.thousands = t unit.millions = mio unit.billions = mia +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Generel @@ -1068,6 +1109,8 @@ category.items = Genstande category.crafting = Input/Output category.function = Funktion category.optional = Valgfri Opgraderinger +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.landscape.name = Lås Landskab setting.shadows.name = Skygger @@ -1179,15 +1222,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Vælg region keybind.schematic_menu.name = Skabelon-visning @@ -1263,7 +1307,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Skabeloner tilladt rules.wavetimer = Bølge-æggeur rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Bølger +rules.airUseSpawns = Air units use spawn points rules.attack = Angrebsmode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1285,6 +1332,7 @@ rules.unitdamagemultiplier = Enheds-skade-forstærker rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Radius af fjendtlig kernes ubebyggelig zone:[lightgray] (felter) @@ -1317,6 +1365,8 @@ rules.weather = Vejr rules.weather.frequency = Frekvens: rules.weather.always = Always rules.weather.duration = Varighed: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Genstande content.liquid.name = Væsker @@ -2241,7 +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 ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Add an operation to the drawing buffer.\nDoes not display anything until [accent]Draw Flush[] is used. lst.drawflush = Flush queued [accent]Draw[] operations to a display. lst.printflush = Flush queued [accent]Print[] operations to a message block. @@ -2264,7 +2314,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2324,6 +2374,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2447,7 +2498,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 04488a8786..6bd88461d2 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -442,6 +442,11 @@ editor.rules = Regeln editor.generation = Generator editor.objectives = Ziele editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Im Spiel bearbeiten editor.playtest = Playtest editor.publish.workshop = Im Workshop veröffentlichen @@ -498,6 +503,7 @@ editor.default = [lightgray] details = Details edit = Bearbeiten variables = Variablen +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Name: editor.spawn = Spawnbereich @@ -587,6 +593,7 @@ filter.clear = Löschen filter.option.ignore = Ignorieren filter.scatter = Streuen filter.terrain = Landschaft +filter.logic = Logic filter.option.scale = Skalierung filter.option.chance = Wahrscheinlichkeit @@ -610,7 +617,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -684,6 +693,7 @@ marker.shape.name = Form marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Hintergrund marker.outline = Umriss @@ -734,7 +744,7 @@ error.any = Unbekannter Netzwerkfehler. error.bloom = Bloom konnte nicht initialisiert werden.\nEs kann sein, dass dein Gerät es nicht unterstützt. weather.rain.name = Regen -weather.snow.name = Schnee +weather.snowing.name = Schnee weather.sandstorm.name = Sandsturm weather.sporestorm.name = Sporensturm weather.fog.name = Nebel @@ -984,6 +994,7 @@ stat.abilities = Fähigkeiten stat.canboost = Kann boosten stat.flying = Flug stat.ammouse = Muntionsverbrauch +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Schaden-Multiplikator stat.healthmultiplier = Lebenspunkte-Multiplikator stat.speedmultiplier = Geschwindigkeit-Multiplikator @@ -994,17 +1005,46 @@ stat.immunities = Immunitäten stat.healing = Heilung ability.forcefield = Kraftfeld +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Heilungsfeld +ability.repairfield.description = Repairs nearby units ability.statusfield = Statusfeld +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Fabrik +ability.unitspawn.description = Constructs units ability.shieldregenfield = Schildregenerationsfeld +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Bewegungsblitze +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Lichtbogenschild +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Heilungsunterdrückungsfeld +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energiefeld -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Nur Kernablage möglich @@ -1081,6 +1121,7 @@ unit.items = Materialeinheiten unit.thousands = k unit.millions = Mio unit.billions = Mrd +unit.shots = shots unit.pershot = /Schuss category.purpose = Beschreibung category.general = Allgemeines @@ -1090,6 +1131,8 @@ category.items = Materialien category.crafting = Erzeugung category.function = Funktion category.optional = Optionale Zusätze +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Kern Start- und Lande-Animation überspringen setting.landscape.name = Querformat sperren setting.shadows.name = Schatten @@ -1201,15 +1244,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Region wiederaufbauen keybind.schematic_select.name = Bereich auswählen keybind.schematic_menu.name = Entwurfsmenü @@ -1285,7 +1329,10 @@ rules.disableworldprocessors = Deaktiviere Weltprozessoren rules.schematic = Entwürfe erlaubt rules.wavetimer = Wellen-Timer rules.wavesending = Manuelle Wellen möglich +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Wellen +rules.airUseSpawns = Air units use spawn points rules.attack = Angriff-Modus rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1307,6 +1354,7 @@ rules.unitdamagemultiplier = Einheit-Schaden-Multiplikator rules.unitcrashdamagemultiplier = Einheiten-Absturzschaden-Multiplikator rules.solarmultiplier = Solarstrom-Multiplikator rules.unitcapvariable = Kerne zählen zum Einheiten-Limit dazu +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Einheiten-Limit rules.limitarea = Kartenbereich begrenzen rules.enemycorebuildradius = Bauverbot-Radius durch feindlichen Kern:[lightgray] (Kacheln) @@ -1339,6 +1387,8 @@ rules.weather = Wetter rules.weather.frequency = Häufigkeit: rules.weather.always = Immer rules.weather.duration = Dauer: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Materialien content.liquid.name = Flüssigkeiten @@ -2290,7 +2340,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Fügt eine [accent]Draw[]-Aufgabe zum Bildspeicher hinzu.\nZeigt nichts an, bis [accent]Draw Flush[] verwendet wird. lst.drawflush = Druckt [accent]Draw[]-Aufgaben aus dem Bildspeicher auf einen Bildschirm. lst.printflush = Druckt [accent]Print[]-Aufgaben aus dem Textspeicher auf einen Nachrichtenblock. @@ -2313,7 +2363,7 @@ lst.getblock = Lese Tile-Daten von jedem Standort. lst.setblock = Setze Tile-Daten an jedem Standort. lst.spawnunit = Einheit an einem Standort erstellen. lst.applystatus = Füge einer Einheit einen Effekt hinzu oder entferne ihn. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Schickt die nächste Welle. lst.explosion = Erstellt an einer beliebigen Stelle eine Explosion. @@ -2375,6 +2425,7 @@ lenum.shoot = Schießt auf eine Position. lenum.shootp = Schießt auf eine Einheit / einen Block und sagt deren Position voraus. lenum.config = Blockkonfiguration, z.B. das ausgewählte Item in einem Sortierer. lenum.enabled = Ob der Block an oder aus ist. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Illuminiererfarbe. laccess.controller = Einheitensteurer. Gibt "processor" zurück, wenn die Einheit prozessorgesteuert ist,.\nGibt den Steuerer zurück, wenn die Einheit Teil einer Formation ist.\nSonst wird einfach die Einheit zurückgegeben. @@ -2516,7 +2567,7 @@ lenum.payenter = Betritt den Fracht-Block, auf dem sich die Einheit befindet. lenum.flag = Zahl, mit der eine Einheit identifiziert werden kann. lenum.mine = Erz von einer Position abbauen. lenum.build = Einen Block bauen. -lenum.getblock = Gibt den Boden- und Blocktyp an den Koordinaten zurück.\nEinheiten müssen nah genug dran sein.\nFeste nicht-Blöcke sind [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Prüft, ob eine Einheit in einem Radius um einen Punkt ist. lenum.boost = Aktiviert / deaktiviert den Boost. 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. diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 18a16ca4d9..93a2f0f3a4 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -57,7 +57,7 @@ mods.browser.sortstars = Mejor valorados schematic = Esquema schematic.add = Guardar esquema... schematics = Esquemas -schematic.search = Search schematics... +schematic.search = Buscar esquemas.. schematic.replace = Ya existe un esquema con ese nombre. ¿Quieres reemplazarlo? schematic.exists = Ya existe un esquema con ese nombre. schematic.import = Importar esquema... @@ -70,7 +70,7 @@ schematic.shareworkshop = Compartir en Steam Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Invertir esquema schematic.saved = Esquema guardado. schematic.delete.confirm = Este esquema será absolutamente erradicado. -schematic.edit = Edit Schematic +schematic.edit = Editar esquema schematic.info = {0}x{1}, {2} bloques schematic.disabled = [scarlet]Esquemas desactivados.[]\nNo está permitido usar esquemas en este [accent]mapa[] o [accent]servidor. schematic.tags = Etiquetas: @@ -439,6 +439,11 @@ editor.rules = Normas: editor.generation = Generación: editor.objectives = Objetivos editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Editar desde la nave editor.playtest = Probar mapa editor.publish.workshop = Publicar en Steam Workshop @@ -495,6 +500,7 @@ editor.default = [lightgray] details = Detalles... edit = Editar... variables = Variables +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Nombre: editor.spawn = Generar unidad @@ -584,6 +590,7 @@ filter.clear = Despejar filter.option.ignore = Ignorar filter.scatter = Dispersión filter.terrain = Terreno +filter.logic = Logic filter.option.scale = Escala filter.option.chance = Probabilidad @@ -607,7 +614,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -681,6 +690,7 @@ marker.shape.name = Forma marker.text.name = Texto marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Fondo marker.outline = Bordes @@ -731,7 +741,7 @@ error.any = Error de red desconocido. error.bloom = Error al cargar el efecto de bloom.\nPuede que tu dispositivo no sea compatible con esta característica. weather.rain.name = Lluvia -weather.snow.name = Nieve +weather.snowing.name = Nieve weather.sandstorm.name = Tormenta de arena weather.sporestorm.name = Tormenta de esporas weather.fog.name = Niebla @@ -981,6 +991,7 @@ stat.abilities = Habilidades stat.canboost = Puede volar stat.flying = Aéreo stat.ammouse = Uso de munición +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Multiplicador de daño stat.healthmultiplier = Multiplicador de vida stat.speedmultiplier = Multiplicador de velocidad @@ -991,17 +1002,46 @@ stat.immunities = Inmune a stat.healing = Curación ability.forcefield = Área de Escudo +ability.forcefield.description = Projecta un campo de fuerza que absorve balas ability.repairfield = Área de Reparación +ability.repairfield.description = Repairs nearby units ability.statusfield = Área de Potenciación +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Fábrica +ability.unitspawn.description = Constructs units ability.shieldregenfield = Área de Regeneración de Armaduras +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movimiento Relámpago +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Sector de Escudo +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Área de Bloqueo de Regeneración +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Campo de Energía -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies +ability.regen = Regeneración +ability.regen.description = Regenera su propia salud con el tiempo +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Sólo se permite depositar en el núcleo bar.drilltierreq = Requiere un taladro mejor @@ -1077,6 +1117,7 @@ unit.items = objetos unit.thousands = k unit.millions = M unit.billions = B +unit.shots = shots unit.pershot = /disparo category.purpose = Objetivo category.general = General @@ -1086,6 +1127,8 @@ category.items = Objetos category.crafting = Fabricación category.function = Función category.optional = Mejoras Opcionales +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Omitir animación de Lanzamiento/Aterrizaje del núcleo setting.landscape.name = Bloquear en horizontal setting.shadows.name = Sombras @@ -1197,15 +1240,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Reconstruir región keybind.schematic_select.name = Seleccionar región keybind.schematic_menu.name = Menú de esquemas @@ -1269,7 +1313,7 @@ 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.invaliddata = Datos del portapeles invalidos. rules.hidebannedblocks = Ocultar bloques prohibidos rules.infiniteresources = Recursos infinitos @@ -1281,7 +1325,10 @@ rules.disableworldprocessors = Desactivar procesadores estáticos rules.schematic = Permitir esquemas rules.wavetimer = Temporizador de oleadas rules.wavesending = Envío de oleadas +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Oleadas +rules.airUseSpawns = Air units use spawn points rules.attack = Modo de ataque rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1303,6 +1350,7 @@ rules.unitdamagemultiplier = Multiplicador de daño de unidades rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Multiplicador de energía solar rules.unitcapvariable = Las categorías del núcleo alteran el límite máximo de unidades +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Límite base de unidades rules.limitarea = Limitar área del mapa rules.enemycorebuildradius = Radio de zona anti-construcción del núcleo enemigo:[lightgray] (bloques) @@ -1312,7 +1360,7 @@ rules.buildcostmultiplier = Multiplicador de coste de construcción rules.buildspeedmultiplier = Multiplicador de velocidad de construcción rules.deconstructrefundmultiplier = Multiplicador de devolución de desconstrucción rules.waitForWaveToEnd = Las oleadas esperan a los enemigos -rules.wavelimit = Map Ends After Wave +rules.wavelimit = El mapa termina despues de la oleada rules.dropzoneradius = Radio de zona de aterrizaje:[lightgray] (bloques) rules.unitammo = Las unidades necesitan munición rules.enemyteam = Equipo enemigo @@ -1335,6 +1383,8 @@ rules.weather = Clima rules.weather.frequency = Frecuencia: rules.weather.always = Siempre rules.weather.duration = Duracion: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Evita que las unidades depositen materiales en calquiera estructura a excepción del nucleo. content.item.name = Objetos content.liquid.name = Líquidos @@ -1996,8 +2046,8 @@ block.separator.description = Separa el magma en sus componentes minerales. block.spore-press.description = Comprime vainas de esporas en petróleo. block.pulverizer.description = Prensa chatarra hasta obtener arena. block.coal-centrifuge.description = Solidifica petróleo en trozos de carbón. -block.incinerator.description = Vaporiza cualquier líquido o material que recive. -block.power-void.description = Elimina toda la energía que recive. Solo disponible en el modo Libre. +block.incinerator.description = Vaporiza cualquier líquido o material que recibe. +block.power-void.description = Elimina toda la energía que recibe. Solo disponible en el modo Libre. block.power-source.description = Genera energía infinita. Solo disponible en el modo Libre. block.item-source.description = Genera objetos de forma infinita. Solo disponible en el modo Libre. block.item-void.description = Destruye los objetos que entran en él. Solo disponible en el modo Libre. @@ -2283,7 +2333,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Añade una operación a la cola para dibujar.\nNo mostrará nada hasta que se use [accent]Draw Flush[]. lst.drawflush = Muestra los datos en cola de operaciones [accent]Draw[] en un monitor gráfico. lst.printflush = Muestra los datos en cola de operaciones de [accent]Print[] en un bloque de mensaje. @@ -2306,7 +2356,7 @@ lst.getblock = Obtiene los datos de un bloque en cualquier lugar. lst.setblock = Cambia los datos de un bloque en cualquier lugar. lst.spawnunit = Crea una unidad en una localización. lst.applystatus = Aplica o elimina un efecto de alteración de estado a una unidad. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simula la aparición de una oleada de enemigos en una localización arbitraria.\nNo incrementará el contador de oleadas. lst.explosion = Crea una explosión en una localización. @@ -2368,6 +2418,7 @@ lenum.shoot = Dispara a una posición. lenum.shootp = Dispara a una unidad/estructura con predicción de velocidad. lenum.config = Configuración de estructura, por ejemplo: el objeto seleccionado en un clasificador. lenum.enabled = Si el bloque está activado. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Color del iluminador. laccess.controller = Controlador de unidad. Si se controla mediante un procesador, devuelve dicho procesador.\nSi está en formación, devuelve su líder.\nDe otra forma, devuelve la misma unidad. @@ -2509,7 +2560,7 @@ lenum.payenter = Entra/Aterriza en el bloque sobre el que se encuentra la unidad lenum.flag = Etiqueta numérica de la unidad. lenum.mine = Extrae minerales de una posición. lenum.build = Construye una estructura. -lenum.getblock = Obtiene la estructura y su categoría en unas coordenadas específicas.\nLa unidad debe estar en el rango de su posición.\nLos bloques no-construcciones tendrán el tipo [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Comprueba si una unidad se encuentra cerca de una posición. lenum.boost = Iniciar/Detener vuelo. 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. diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index a56915c145..f7fd198ab3 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -435,6 +435,11 @@ editor.rules = Reeglid: editor.generation = Genereerimine: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Redigeeri mängus editor.playtest = Playtest editor.publish.workshop = Avalda Workshop'is @@ -490,6 +495,7 @@ editor.default = [lightgray] details = Üksikasjad... edit = Muuda... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Nimi: editor.spawn = Tekita väeüksus @@ -577,6 +583,7 @@ filter.clear = Kustutamine filter.option.ignore = Eira filter.scatter = Puistamine filter.terrain = Maastik +filter.logic = Logic filter.option.scale = Ulatus filter.option.chance = Tõenäosus filter.option.mag = Suurusjärk @@ -599,7 +606,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -671,6 +680,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -717,7 +727,7 @@ error.any = Teadmata viga võrgus. error.bloom = Bloom-efekti lähtestamine ebaõnnestus.\nSinu seade ei pruugi seda efekti toetada. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -962,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -972,17 +983,46 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1059,6 +1099,7 @@ unit.items = ressursiühikut unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Üldinfo @@ -1068,6 +1109,8 @@ category.items = Ressursid category.crafting = Sisend/Väljund category.function = Function category.optional = Valikulised täiustused +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.landscape.name = Lukusta horisontaalpaigutus setting.shadows.name = Varjud @@ -1179,15 +1222,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1263,7 +1307,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Kasuta taimerit rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Kasuta lahingulaineid +rules.airUseSpawns = Air units use spawn points rules.attack = Mänguviis "Rünnak" rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1285,6 +1332,7 @@ rules.unitdamagemultiplier = Väeüksuste hävitusvõime kordaja rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Vaenlaste tuumiku ehitistevaba ala raadius:[lightgray] (ühik) @@ -1317,6 +1365,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Ressursid content.liquid.name = Vedelikud @@ -2243,7 +2293,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Read a number from a linked memory cell. lst.write = Write a number to a linked memory cell. lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. -lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" +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. @@ -2266,7 +2316,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2326,6 +2376,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2449,7 +2500,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 8ce90d62e5..c2f4e97364 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -437,6 +437,11 @@ editor.rules = Arauak: editor.generation = Sorrarazi: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Editatu jolasean editor.playtest = Playtest editor.publish.workshop = Argitaratu lantegian @@ -492,6 +497,7 @@ editor.default = [lightgray] details = Xehetasunak... edit = Editatu... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Izena: editor.spawn = Sortu unitatea @@ -579,6 +585,7 @@ filter.clear = Garbitu filter.option.ignore = Ezikusi filter.scatter = Sakabanaketa filter.terrain = Lursaila +filter.logic = Logic filter.option.scale = Eskala filter.option.chance = Zoria filter.option.mag = Magnitudea @@ -601,7 +608,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -673,6 +682,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -719,7 +729,7 @@ error.any = Sareko errore ezezaguna. error.bloom = Ezin izan da distira hasieratu.\nAgian zure gailuak ez du onartzen. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -964,6 +974,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -974,17 +985,46 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1061,6 +1101,7 @@ unit.items = elementu unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Orokorra @@ -1070,6 +1111,8 @@ category.items = Baliabideak category.crafting = Sarrera/Irteera category.function = Function category.optional = Aukerako hobekuntzak +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.landscape.name = Blokeatu horizontalean setting.shadows.name = Itzalak @@ -1181,15 +1224,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Hautatu eskualdea keybind.schematic_menu.name = Eskema menua @@ -1265,7 +1309,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Boladen denboragailua rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Boladak +rules.airUseSpawns = Air units use spawn points rules.attack = Eraso modua rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1287,6 +1334,7 @@ rules.unitdamagemultiplier = Unitateen kalte-biderkatzailea rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Etsaien muinaren ez-eraikitze erradioa:[lightgray] (lauzak) @@ -1319,6 +1367,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Solidoak content.liquid.name = Likidoak @@ -2245,7 +2295,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.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,7 +2318,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2328,6 +2378,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2451,7 +2502,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index 7a31835dde..06da2a8ea5 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -435,6 +435,11 @@ editor.rules = Säännöt: editor.generation = Generaatio: editor.objectives = Tehtävät editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Muokka pelin sisällä editor.playtest = Testaa pelin sisällä editor.publish.workshop = Julkaise Workshoppiin @@ -490,6 +495,7 @@ editor.default = [lightgray] details = Yksityiskohdat... edit = Muokkaa... variables = Muuttujat +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Nimi: editor.spawn = Luo yksikkö @@ -577,6 +583,7 @@ filter.clear = Selkeä filter.option.ignore = Ohitta filter.scatter = Hajauta filter.terrain = Maasto +filter.logic = Logic filter.option.scale = Mittakaava filter.option.chance = Mahdollisuus filter.option.mag = Suuruus @@ -599,7 +606,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -671,6 +680,7 @@ marker.shape.name = Shape marker.text.name = Teksti marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Tutki:\n[]{0}[lightgray]{1} @@ -717,7 +727,7 @@ error.any = Tuntematon verkon virhe. error.bloom = Bloomin initialisointi epäonnistui.\nLaitteesi ei ehkä tue sitä. weather.rain.name = Sade -weather.snow.name = Lumi +weather.snowing.name = Lumi weather.sandstorm.name = Hiekkamyrsky weather.sporestorm.name = Sienimyräkkä weather.fog.name = Sumu @@ -961,6 +971,7 @@ stat.abilities = Erikoisvoimat stat.canboost = Voi tehostaa stat.flying = Lentävä stat.ammouse = Ammusten käyttö +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Vahinkokerroin stat.healthmultiplier = Elmäpistekerroin stat.speedmultiplier = Nopeuskerroin @@ -971,17 +982,46 @@ stat.immunities = Immuuni stat.healing = Parantuu ability.forcefield = Voimakenttä +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Korjauskenttä +ability.repairfield.description = Repairs nearby units ability.statusfield = Statuskenttä +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Tehdas +ability.unitspawn.description = Constructs units ability.shieldregenfield = Kilvenvahvistuskenttä +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Salamointi liikkuessa +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Kilpikaari +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energiakenttä -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Sijoittaminen sallittua vain ytimeen @@ -1058,6 +1098,7 @@ unit.items = esinettä unit.thousands = t unit.millions = milj unit.billions = mrd +unit.shots = shots unit.pershot = /laukaisu category.purpose = Tarkoitus category.general = Yleinen @@ -1067,6 +1108,8 @@ category.items = Tavarat category.crafting = Ulos/Sisääntulo category.function = Function category.optional = Mahdolliset parannukset +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Ohita ytimen laukaisun/laskeutumisen animaatio setting.landscape.name = Lukitse tasavaakaan setting.shadows.name = Varjot @@ -1178,15 +1221,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Valitse alue keybind.schematic_menu.name = Kaavio Valikko @@ -1262,7 +1306,10 @@ rules.disableworldprocessors = Poista maailmaprosessorit käytöstä rules.schematic = Salli kaaviot rules.wavetimer = Tasojen aikaraja rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Tasot +rules.airUseSpawns = Air units use spawn points rules.attack = Hyökkäystila rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1284,6 +1331,7 @@ rules.unitdamagemultiplier = Yksikköjen vahinkokerroin rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Aurinkovoimakerroin rules.unitcapvariable = Ytimet vaikuttavat yksikkörajaan +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Perusyksikköraja rules.limitarea = Rajoita kartan aluetta rules.enemycorebuildradius = Vihollisytimen rakennuksenestosäde:[lightgray] (laattoina) @@ -1316,6 +1364,8 @@ rules.weather = Sää rules.weather.frequency = Tiheys: rules.weather.always = Aina rules.weather.duration = Kesto: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Tavarat content.liquid.name = Nesteet @@ -2246,7 +2296,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Lisää operaation piirtopuskuriin.\nEi näytä mitään, kunnes [accent]Piirtosyötettä[] käytetään. lst.drawflush = Syöttää jonottavat [accent]Piirto[]-operaatiot näyttöön. lst.printflush = Syöttää jonottavat [accent]Paino[]-operaatiot viestipalikkaan. @@ -2269,7 +2319,7 @@ lst.getblock = Selvitä laattadata missä tahansa sijainnissa. lst.setblock = Aseta laattadata missä tahansa sijainnissa. lst.spawnunit = Luo joukko tietyssä sijainnissa. lst.applystatus = Lisää tai poista statusefekti yksiköltä. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simuloi tason syntymistä mielivaltaisessa sijainnissa.\nEi vaikuta tasolaskuriin. lst.explosion = Luo räjähdys tietyssä sijainnissa. @@ -2329,6 +2379,7 @@ lenum.shoot = Ammu tiettyä sijaintia. lenum.shootp = Ammu yksikköä/rakennusta nopeudenennustus päällä. lenum.config = Rakennuksen säätö, esim. lajittelijan valinta. lenum.enabled = Selvitä, onko palikka päällä. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Lampun väri. laccess.controller = Yksikön hallitsija. Jos yksikköä hallitsee prosessori, palauttaa prosessorin.\nJos yksikkö on muodostelmassa, palauttaa johtajan.\nPalauttaa muulloin itse yksikön. laccess.dead = Selvitä, onko yksikkö/rakennus tuhoutunut tai ei enää kelvollinen. @@ -2452,7 +2503,7 @@ lenum.payenter = Siirry tai laskeudu lastipalikalle, jonka päällä yksikkö on lenum.flag = Numeerinen yksikkötunniste. lenum.mine = Kaiva tietyssä sijainnissa. lenum.build = Rakenna tietty rakennus. -lenum.getblock = Selvitä rakennus ja sen tyyppi tietyissä koordinaateissa.\nSijainnin täytyy olla yksikön kantamalla.\nKiinteillä ei-rakennuksilla on tyyppi [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Tarkista, onko joukko tietyn sijainnin lähellä. lenum.boost = Aloita tai lopeta tehostus. 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. diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 92bf22e804..466a2dd69e 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -435,6 +435,11 @@ editor.rules = Rules: editor.generation = Generation: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = I-Publish Sa Workshop @@ -490,6 +495,7 @@ editor.default = [lightgray] details = Details... edit = Edit... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Name: editor.spawn = Spawn Unit @@ -577,6 +583,7 @@ filter.clear = Clear filter.option.ignore = Ignore filter.scatter = Scatter filter.terrain = Terrain +filter.logic = Logic filter.option.scale = Scale filter.option.chance = Chance filter.option.mag = Magnitude @@ -599,7 +606,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -671,6 +680,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -717,7 +727,7 @@ error.any = Unknown network error. error.bloom = Nabigong simulan ang bloom.\nMaaaring hindi ito sinusuportahan ng iyong device. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -961,6 +971,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -971,17 +982,46 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1058,6 +1098,7 @@ unit.items = items unit.thousands = k unit.millions = mil unit.billions = bil +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = General @@ -1067,6 +1108,8 @@ category.items = Items category.crafting = Input/Output category.function = Function category.optional = Optional Enhancements +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Laktawan ang Core Launch/Land Animation setting.landscape.name = Lock Landscape setting.shadows.name = Shadows @@ -1178,15 +1221,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1262,7 +1306,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Wave Timer rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Waves +rules.airUseSpawns = Air units use spawn points rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1284,6 +1331,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) @@ -1316,6 +1364,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Items content.liquid.name = Liquids @@ -2242,7 +2292,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.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. @@ -2265,7 +2315,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2325,6 +2375,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2448,7 +2499,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index ce9882b068..8c57d0bb1e 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -445,6 +445,11 @@ editor.rules = Règles editor.generation = Génération editor.objectives = Objectifs editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Éditer dans le jeu editor.playtest = Tester editor.publish.workshop = Publier sur le Workshop @@ -501,6 +506,7 @@ editor.default = [lightgray] details = Détails... edit = Modifier... variables = Variables +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Nom : editor.spawn = Ajouter une unité @@ -590,6 +596,7 @@ filter.clear = Effacer filter.option.ignore = Ignorer filter.scatter = Disperser filter.terrain = Terrain +filter.logic = Logic filter.option.scale = Échelle filter.option.chance = Chance @@ -613,7 +620,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -687,6 +696,7 @@ marker.shape.name = Forme marker.text.name = Texte marker.line.name = Ligne marker.quad.name = Quad +marker.texture.name = Texture marker.background = Fond marker.outline = Contour @@ -737,7 +747,7 @@ error.any = Erreur de réseau inconnue. error.bloom = Échec de l'initialisation du flou lumineux.\nIl se peut que votre appareil ne le prenne pas en charge. weather.rain.name = Pluie -weather.snow.name = Neige +weather.snowing.name = Neige weather.sandstorm.name = Tempête de sable weather.sporestorm.name = Tempête de spores weather.fog.name = Brouillard @@ -987,6 +997,7 @@ stat.abilities = Habilités stat.canboost = Boost stat.flying = Unité volante stat.ammouse = Utilisation de munitions +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Multiplicateur de dégâts stat.healthmultiplier = Multiplicateur de santé stat.speedmultiplier = Multiplicateur de vitesse @@ -997,17 +1008,46 @@ stat.immunities = Immunités stat.healing = Guérison ability.forcefield = Champ de Force +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Champ de Réparation +ability.repairfield.description = Repairs nearby units ability.statusfield = Champ d'Amélioration +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Usine +ability.unitspawn.description = Constructs units ability.shieldregenfield = Champ de régénération de bouclier +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Déplacement éclair +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Arc de Bouclier +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Champ de Suppression de Soins +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Champ d'énergie -ability.energyfield.sametypehealmultiplier = [lightgray]Soins des Unités du Même Type: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Cibles Maximales: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Régénération +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Seul le dépôt de ressources dans le Noyau est autorisé bar.drilltierreq = Meilleure Foreuse Requise @@ -1083,6 +1123,7 @@ unit.items = objets unit.thousands = k unit.millions = M unit.billions = Md +unit.shots = shots unit.pershot = /tirs category.purpose = Description category.general = Caractéristiques @@ -1092,6 +1133,8 @@ category.items = Objets category.crafting = Fabrication category.function = Fonction category.optional = Améliorations facultatives +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Ignorer l'animation du lancement du noyau et de l'atterrissage setting.landscape.name = Verrouiller la rotation en mode paysage setting.shadows.name = Ombres @@ -1204,16 +1247,16 @@ keybind.unit_stance_hold_fire.name = Ordre: Ne pas tirer keybind.unit_stance_pursue_target.name = Ordre: Poursuivre la cible keybind.unit_stance_patrol.name = Ordre: Patrouille keybind.unit_stance_ram.name = Ordre: Charger - -keybind.unit_command_move = Commande: Bouger -keybind.unit_command_repair = Commande: Réparer -keybind.unit_command_rebuild = Commande: Reconstruire -keybind.unit_command_assist = Commande: Assister -keybind.unit_command_mine = Commande: Miner -keybind.unit_command_boost = Commande: Boost -keybind.unit_command_load_units = Commande: Transporter unités -keybind.unit_command_load_blocks = Commande: Transporter blocs -keybind.unit_command_unload_payload = Commande: Poser chargement +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Reconstruire la Zone keybind.schematic_select.name = Sélectionner une Région @@ -1290,7 +1333,10 @@ rules.disableworldprocessors = Désactiver les Processeurs Globaux rules.schematic = Schémas autorisés rules.wavetimer = Compte à rebours des vagues rules.wavesending = Déclenchement des Vagues +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Vagues +rules.airUseSpawns = Air units use spawn points rules.attack = Mode « Attaque » rules.buildai = IA de Construction de Base rules.buildaitier = Niveau de l'IA de Construction de Base @@ -1312,6 +1358,7 @@ rules.unitdamagemultiplier = Multiplicateur de Dégât des Unités rules.unitcrashdamagemultiplier = Multiplicateur de Dégât de chute des Unités rules.solarmultiplier = Multiplicateur de l'Efficacité des Panneaux Solaires rules.unitcapvariable = Les Noyaux contribuent à la limite d'Unités actives +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Limite initiale d'Unités actives rules.limitarea = Limite de la zone de jeu de la Carte rules.enemycorebuildradius = Périmètre Non-Constructible autour du Noyau ennemi :[lightgray] (blocs) @@ -1344,6 +1391,8 @@ rules.weather = Météo rules.weather.frequency = Fréquence : rules.weather.always = Permanent rules.weather.duration = Durée : +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Objets content.liquid.name = Liquides @@ -2291,7 +2340,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Ajoute une opération dans la mémoire tampon de dessin.\nNe montrera aucune image tant que [accent]Draw Flush[] ne sera pas utilisé. lst.drawflush = Affiche les opérations [accent]Draw[] en file d'attente vers un écran. lst.printflush = Affiche les opérations [accent]Print[] en file d'attente vers un bloc de message. @@ -2314,7 +2363,7 @@ lst.getblock = Obtient les données d'une tuile à n'importe quel emplacement. lst.setblock = Définit les données d'une tuile à n'importe quel emplacement. lst.spawnunit = Fait apparaître une unité à un emplacement. lst.applystatus = Ajoute ou enlève un effet de statut d'une unité. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simule un déclenchement de vague à n'importe quel emplacement.\nCela n'incrémente pas le compteur de vaugues. lst.explosion = Crée une explosion à un emplacement. @@ -2376,6 +2425,7 @@ 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. lenum.enabled = Retourne si le bloc est activé ou pas. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = La couleur d'un illuminateur. laccess.controller = Le contrôleur de l'Unité.\nSi l'Unité est contrôlée par un processeur, cela retournera le processeur en question.\nSi l'Unité est en formation, cela retournera le leader de la formation.\nSinon, renvoie l’unité elle-même. @@ -2517,7 +2567,7 @@ lenum.payenter = Entrez/atterrissez sur le bloc de charge utile sur lequel se tr lenum.flag = Drapeau numérique d'une unité. lenum.mine = Mine à une position donnée. lenum.build = Construit une structure. -lenum.getblock = Récupère des données sur un bâtiment et son type aux coordonnées données.\nL'unité doit se trouver dans la portée de la position.\nLes blocs solides qui ne sont pas des bâtiments auront le type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Vérifie si l'unité est près de la position. lenum.boost = Active/Désactive le boost. 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. diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 21f84cf25c..30fc904248 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -1,6 +1,6 @@ -credits.text = Készítette: [royal]Anuken[] - [sky]anukendev@gmail.com[] +credits.text = Készítette: [royal]Anuken[] – [sky]anukendev@gmail.com[] credits = Készítők -contributors = Közreműködők És Fordítók +contributors = Közreműködők és fordítók discord = Csatlakozz a Mindustry Discord szerverhez! link.discord.description = Az eredeti Mindustry Discord csevegőszoba link.reddit.description = A Mindustry subreddit @@ -8,14 +8,14 @@ link.github.description = A játék forráskódja link.changelog.description = Frissítési változások listája link.dev-builds.description = Instabil fejlesztői összeállítások link.trello.description = Hivatalos Trello tábla a tervezett funkcióknak -link.itch.io.description = itch.io oldal PC letöltésekkel -link.google-play.description = Google Play áruház listázás -link.f-droid.description = F-Droid katalógus listázás +link.itch.io.description = itch.io oldal PC-s letöltésekkel +link.google-play.description = Listázás a Google Play áruházban +link.f-droid.description = Listázás az F-Droidon link.wiki.description = Hivatalos Mindustry wiki link.suggestions.description = Új funkciók ajánlása -link.bug.description = Találtál egy szoftver hibát? Itt jelentheted -linkopen = Ez a kiszolgáló egy linket küldött neked. Biztos vagy benne, hogy megnyitod?\n\n[sky]{0} -linkfail = Nem sikerült megnyitni a linket!\nAz URL a vágólapra lett másolva. +link.bug.description = Találtál egy szoftverhibát? Itt jelentheted +linkopen = Ez a kiszolgáló egy hivatkozást küldött. Biztos vagy benne, hogy megnyitod?\n\n[sky]{0} +linkfail = Nem sikerült megnyitni a hivatkozást!\nA webcím a vágólapra lett másolva. screenshot = Képernyőkép mentve ide: {0} screenshot.invalid = Túl nagy a pálya, nincs elég memória a képernyőképhez. gameover = A játéknak vége @@ -41,12 +41,12 @@ be.ignore = Most nem be.noupdates = Nem található frissítés. be.check = Frissítések keresése -mods.browser = Mod választó +mods.browser = Modböngésző mods.browser.selected = Mod kiválasztása mods.browser.add = Letöltés mods.browser.reinstall = Újratelepítés mods.browser.view-releases = Kiadások megtekintése -mods.browser.noreleases = [scarlet]Nem találhatóak a kiadások\n[accent]Nem lehet kiadásokat találni ehhez a Modhoz. Nézd meg a tárolóját, hogy vannak-e kiadásai. +mods.browser.noreleases = [scarlet]Nem találhatóak a kiadások\n[accent]Nem találhatóak kiadások ehhez a modhoz. Nézd meg a tárolóját, hogy vannak-e kiadásai. mods.browser.latest = [lightgray][Legújabb] mods.browser.releases = Kiadások mods.github.open = Tároló @@ -64,15 +64,15 @@ schematic.import = Vázlat importálása... schematic.exportfile = Exportálás fájlba schematic.importfile = Importálás fájlból schematic.browseworkshop = Steam Műhely megtekintése -schematic.copy = Másolás a vágólapra -schematic.copy.import = Importálás a vágólapról +schematic.copy = Végólapra másolás +schematic.copy.import = Importálás vágólapról schematic.shareworkshop = Megosztás a Steam Műhelyben schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Vázlat tükrözése schematic.saved = Vázlat elmentve. schematic.delete.confirm = Ez a vázlat törölve lesz. schematic.edit = Vázlat szerkesztése schematic.info = {0}x{1}, {2} blokk -schematic.disabled = [scarlet]Vázlatok letiltva[]\nNem használhatsz vázlatokat ezen a [accent]pályán[], vagy [accent]kiszolgálón. +schematic.disabled = [scarlet]Vázlatok letiltva[]\nNem használhatsz vázlatokat ezen a [accent]pályán[] vagy [accent]kiszolgálón. schematic.tags = Címkék: schematic.edittags = Címkék szerkesztése schematic.addtag = Címke hozzáadása @@ -84,27 +84,27 @@ 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.wave = Túlélt hullámok +stats.unitsCreated = Létrehozott egységek +stats.enemiesDestroyed = Legyőzött egységek +stats.built = Épített építmények +stats.destroyed = Lerombolt építmények +stats.deconstructed = Lebontott építmények stats.playtime = Játékban töltött idő globalitems = [accent]A bolygó nyersanyagai -map.delete = Biztosan törölni akarod a(z) "[accent]{0}[]" pályát? +map.delete = Biztosan törölni akarod a(z) „[accent]{0}[]” nevű pályát? level.highscore = Legmagasabb pontszám: [accent]{0} level.select = Szint kiválasztása level.mode = Játékmód: -coreattack = < A Támaszpont támadás alatt van! > +coreattack = < A támaszpont támadás alatt van! > nearpoint = [[ [scarlet]AZONNAL HAGYD EL A LEDOBÁSI PONTOT![] ]\nA megsemmisülés fenyeget! -database = Támaszpont adatbázis +database = Támaszpont adatbázisa database.button = Adatbázis savegame = Játék mentése loadgame = Játék betöltése joingame = Kapcsolódás egy játékhoz -customgame = Egyedi játék +customgame = Egyéni játék newgame = Új játék none = none.found = [lightgray] @@ -129,15 +129,15 @@ committingchanges = Változások rögzítése done = Kész feature.unsupported = Ez az eszköz nem támogatja ezt a funkciót. -mods.initfailed = [red]⚠[] Az előző Mindustry munkamenet nem tudott inicializálódni. Ez valószínű egy rosszúl működő Mod miatt történt.\n\nAz "összeomlások" elkerülése érdekében, [red]minden Mod le lett tiltva.[] +mods.initfailed = [red]⚠[] Az előző Mindustry példány előkészítése nem sikerült. Ezt valószínűleg egy rosszul működő mod okozta.\n\nAz ismételt összeomlások elkerülése érdekében [red]minden mod le lett tiltva.[] mods = Modok -mods.none = [lightgray]Nem találhatóak Modok! -mods.guide = Mod készítési útmutató +mods.none = [lightgray]Nem találhatóak modok! +mods.guide = Modké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 = A játék újraindul, hogy betöltődjenek a Modok. +mods.reloadexit = A játék most kilép, hogy újratöltse a modokat. mod.installed = [[Telepítve] mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Aktív @@ -145,7 +145,7 @@ mod.disabled = [red]Inaktív mod.multiplayer.compatible = [gray]Többjátékos kompatibilis mod.disable = Letiltás mod.content = Tartalom: -mod.delete.error = Nem lehet törölni a Modot. Lehet, hogy egy másik folyamat használja. +mod.delete.error = Nem lehet törölni a modot. Lehet, hogy egy másik folyamat használja. mod.incompatiblegame = [red]Elavult játék mod.incompatiblemod = [red]Inkompatibilis @@ -155,57 +155,57 @@ 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.details = Szükséges játékverzió: [accent]{0}[]\nA játék ezen verziója elavult! A mod működéséhez újabb verzió szükséges (valószínűleg egy béta vagy alfa kiadás). +mod.outdatedv7.details = Ez a mod nem kompatibilis a játék legújabb verziójával! A mod készítőjének frissítenie kell azt és hozzá kell adnia ezt a [accent]mod.json[] fájlhoz: [accent]minGameVersion: 136[]. +mod.blacklisted.details = Ez a mod kézileg feketelistára került, mert a játék összeomlott tőle, vagy más problémát okozott. Ne használd! +mod.missingdependencies.details = Ez a mod függőségeket hiányol: {0} +mod.erroredcontent.details = Ez a mod hibákat okozott a betöltésnél. Kérd meg a mod készítőjét, hogy javítsa őket. +mod.circulardependencies.details = Ennek a modnak egymástól függő függőségei vannak. +mod.incompletedependencies.details = Ez a mod nem tölthető be az érvénytelen vagy hiányzó függőségek miatt: {0}. mod.requiresversion = Szükséges játékverzió: [red]{0}[] mod.errors = Hiba történt a tartalom betöltése közben. -mod.noerrorplay = [red]Vannak hibás Modok.[] Kapcsold ki, vagy javítsd ki őket a játék előtt. -mod.nowdisabled = [red]A '{0}' Modnak nincs megfelelő függősége:[accent] {1}\n[lightgray]Ezeket előbb le kell tölteni.\nEz a Mod automatikusan törölve lesz. +mod.noerrorplay = [red]Hibákkal rendelkező modjaid vannak.[] Kapcsold ki, vagy javítsd ki őket a játék előtt. +mod.nowdisabled = [red]A(z) „{0}” modnak nincs megfelelő függősége:[accent] {1}\n[lightgray]Ezeket előbb le kell tölteni.\nEz a mod automatikusan ki lesz kapcsolva. mod.enable = Engedélyezés mod.requiresrestart = A játék kilép a módosítások alkalmazásához. -mod.reloadrequired = [red]Újratöltés szükséges +mod.reloadrequired = [red]Újraindítás szükséges mod.import = Mod importálása mod.import.file = Fájl importálása -mod.import.github = 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éséhez távolítsd el a Modot. -mod.remove.confirm = Ez a Mod törölve lesz. +mod.import.github = Importálás GitHubról +mod.jarwarn = [scarlet]A JAR modok eredendően nem biztonságosak.[]\nGyőződj meg arról, hogy ezt a modot megbízható forrásból importálod! +mod.item.remove = Ez az elem a(z)[accent] „{0}”[] mod része. A törléséhez távolítsd el a modot. +mod.remove.confirm = Ez a mod törölve lesz. mod.author = [lightgray]Készítő:[] {0} -mod.missing = Ez a mentés nemrég törölt, vagy frissített Modokat tartalmaz. Elképzelhető, hogy nem fog működni. Biztosan betöltöd?\n[lightgray]Modok:\n{0} -mod.preview.missing = Mielőtt 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. +mod.missing = Ez a mentés nemrég törölt vagy frissített modokat tartalmaz. Elképzelhető, hogy nem fog működni. Biztosan betöltöd?\n[lightgray]Modok:\n{0} +mod.preview.missing = Mielőtt közzéteszed ezt a modot a Steam Műhelyben, adj hozzá egy borítóképet.\nKészíts egy[accent] preview.png[] nevű képet a Mod mappájába, majd próbáld újra. +mod.folder.missing = Csak mappa formában lehet feltölteni a Steam Műhelybe.\nHogy átalakítsd, bontsd ki a ZIP-fájlt egy mappába és töröld le a régit, majd indítsd újra a játékot, vagy töltsd újra a modokat. +mod.scripts.disable = Ez az eszköz nem támogatja a szkriptekkel rendelkező modokat.\nA játékhoz tiltsd le ezeket a modokat. -about.button = Rólunk +about.button = Névjegy name = Név: noname = Előbb válassz egy[accent] nevet[]. search = Keresés: -planetmap = Bolygó térkép -launchcore = Támaszpont indítása -filename = Fájl név: -unlocked = Új tartalom kinyitva! -available = Új fejlesztés áll rendelkezésre! +planetmap = Bolygótérkép +launchcore = Támaszpont kilövése +filename = Fájlnév: +unlocked = Új tartalom feloldva! +available = Új fejlesztés érhető el! unlock.incampaign = < Oldd fel a hadjáratban a részletekért > campaign.select = Válassz kezdő hadjáratot campaign.none = [lightgray]Válassz egy bolygót a kezdéshez.\nEzt bármikor megváltoztathatod. -campaign.erekir = Újabb, csiszoltabb tartalom. Általában lineáris játékmenet.\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 hadjárat. Kevésbé csiszolt. +campaign.erekir = Újabb, csiszoltabb tartalom. Többnyire lineáris játékmenet.\n\nSokkal nehezebb. Magasabb minőségű pályák és élmények. +campaign.serpulo = Régebbi tartalom. A klasszikus élmény. Nyíltabb végű, több tartalommal.\n\nPotenciálisan kiegyensúlyozatlan pályák és hadjárat. Kevésbé csiszolt. completed = [accent]Kész -techtree = Fejlesztési fa -techtree.select = Fejlesztési fa kiválasztása +techtree = Technológia fa +techtree.select = Technológia fa kiválasztása techtree.serpulo = Serpulo techtree.erekir = Erekir research.load = Betöltés research.discard = Eldobás research.list = [lightgray]Fejleszd ki: -research = Fejlesztési fa +research = Fejlesztés researched = [lightgray]{0} kifejlesztve. research.progress = {0}% kész players = {0} játékos @@ -230,8 +230,8 @@ server.kicked.customClient = Ez a kiszolgáló nem támogatja a saját készít server.kicked.gameover = Vége a játéknak! server.kicked.serverRestarting = Ez a kiszolgáló újraindul. server.versions = A te játékverziód:[accent] {0}[]\nA kiszolgáló verziója:[accent] {1}[] -host.info = A [accent]Kiszolgáló indítása[] gomb egy kiszolgálót indít a [scarlet]6567[] porton.\nEzen a [lightgray] Wi-Fi-n, vagy a helyi hálózaton [] bárki láthatja a kiszolgálót a kiszolgálólistán.\n\nHa azt szeretnéd, hogy az emberek bárhonnan, IP-címmel kapcsolódhassanak, akkor [accent]porttovábbítás[] szükséges.\n\n[lightgray]Megjegyzés: ha valakinek problémái vannak a LAN-játékhoz való kapcsolódással, győződj meg arról, hogy a tűzfal beállításaiban engedélyezted-e a Mindustry hozzáférését a helyi hálózathoz. Ne feledd, hogy a nyilvános hálózatok néha nem teszik lehetővé a kiszolgálók felderítését. -join.info = Itt megadhatsz egy [accent]kiszolgáló IP[]-címet a kapcsolódáshoz, vagy felfedezhetsz [accent]helyi hálózati[], vagy [accent]globális[] kiszolgálókat a kapcsolódáshoz.\nA LAN és WAN többjátékos mód is támogatott.\n\n[lightgray]Ha valakihez IP alapján szeretnél kapcsolódni, 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. +host.info = A [accent]kiszolgáló indítása[] gomb egy kiszolgálót indít a [scarlet]6567-es[] porton.\nEzen a [lightgray]Wi-Fi-n vagy a helyi hálózaton[] bárki láthatja a kiszolgálót a kiszolgálólistán.\n\nHa azt szeretnéd, hogy bárhonnan, IP-címmel kapcsolódhassanak, akkor [accent]porttovábbítás[] szükséges.\n\n[lightgray]Megjegyzés: ha valakinek problémái vannak a LAN-játékhoz való kapcsolódással, győződj meg arról, hogy a tűzfal beállításaiban engedélyezted-e a Mindustry hozzáférését a helyi hálózathoz. Ne feledd, hogy a nyilvános hálózatok néha nem teszik lehetővé a kiszolgálók felderítését. +join.info = Itt megadhatod egy [accent]kiszolgáló IP-címét[] a kapcsolódáshoz, vagy felfedezhetsz [accent]helyi[] vagy [accent]globális[] kiszolgálókat.\nA LAN és WAN többjátékos mód is támogatott.\n\n[lightgray]Ha valakihez IP-cím alapján szeretnél kapcsolódni, akkor meg kell tudnod az IP-címét, amelyet például a „my ip” webes kereséssel találhatsz meg. hostserver = Többjátékos játék invitefriends = Barátok meghívása hostserver.mobile = Többjátékos játék @@ -257,22 +257,22 @@ server.hidden = Rejtett viewplayer = Játékos figyelése: [accent]{0} trace = Játékos követése trace.playername = Játékos neve: [accent]{0} -trace.ip = IP: [accent]{0} +trace.ip = IP-cím: [accent]{0} trace.id = Azonosító: [accent]{0} trace.language = Nyelv: [accent]{0} trace.mobile = Mobil kliens: [accent]{0} trace.modclient = Nem hivatalos kliens: [accent]{0} trace.times.joined = Kapcsolódások száma: [accent]{0} trace.times.kicked = Kirúgások száma: [accent]{0} -trace.ips = IP-k: +trace.ips = IP-címek: trace.names = Nevek: -invalidid = Érvénytelen kliens azonosító (ID)! Küldj hibajelentést. +invalidid = Érvénytelen kliensazonosító (ID)! Küldj hibajelentést. player.ban = Kitiltás player.kick = Kirúgás player.trace = Követés -player.admin = Admin választás -player.team = Csapat váltás +player.admin = Admin be/ki +player.team = Csapatváltás server.bans = Tiltások server.bans.none = Nincsenek tiltott játékosok! @@ -285,28 +285,28 @@ server.outdated = [scarlet]Elavult kiszolgáló![] server.outdated.client = [scarlet]Elavult kliens![] server.version = [gray]v{0} {1} 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? +confirmban = Biztosan tiltod a(z) „{0}[white]” nevű játékost? +confirmkick = Biztosan kirúgod a(z) „{0}[white]” nevű játékost? confirmunban = Biztosan újra engedélyezed ezt a játékost? -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? +confirmadmin = Biztosan előlépteted a(z) „{0}[white]” nevű játékost adminná? +confirmunadmin = Biztosan meg akarod szüntetni a(z) „{0}[white]” nevű játékos adminisztrátori státuszát? votekick.reason = Kiszavazás oka -votekick.reason.message = Valóban kiakarod szavazni "{0}[white]"-t?\nHa igen, írd le miért: +votekick.reason.message = Valóban ki akarod szavazni a(z) „{0}[white]” nevű játékost?\nHa igen, írd be az okát: joingame.title = Kapcsolódás a játékhoz joingame.ip = Cím: -disconnect = Lekapcsolódva. +disconnect = Kapcsolat bontva. disconnect.error = Kapcsolódási hiba. -disconnect.closed = Kapcsolat bontva. +disconnect.closed = Kapcsolat lezárva. disconnect.timeout = Időtúllépés. -disconnect.data = Nem sikerült betölteni a világ adatot! +disconnect.data = Nem sikerült betölteni a világ adatait! cantconnect = Nem sikerült kapcsolódni a(z) ([accent]{0}[]) játékhoz. connecting = [accent]Kapcsolódás... reconnecting = [accent]Újrakapcsolódás... -connecting.data = [accent]Világ adat betöltése... +connecting.data = [accent]Világadatok betöltése... server.port = Port: server.addressinuse = A cím már használatban van! server.invalidport = Érvénytelen port! -server.error = [scarlet]Kiszolgáló hiba. +server.error = [scarlet]Kiszolgálási hiba. save.new = Új mentés save.overwrite = Biztosan felülírod\nezt a mentést? save.nocampaign = A hadjáratból származó egyes mentési fájlok nem importálhatóak. @@ -324,7 +324,7 @@ save.newslot = Mentés neve: save.rename = Átnevezés save.rename.text = Új név: selectslot = Válassz ki egy mentést. -slot = [accent]Rekesz {0} +slot = [accent]{0}. hely editmessage = Üzenet szerkesztése save.corrupted = A mentési fájl sérült vagy érvénytelen! empty = <üres> @@ -332,22 +332,22 @@ on = Be off = Ki save.search = Keresés a mentett játékok között... save.autosave = Automatikus mentés: {0} -save.map = Térkép: {0} +save.map = Pálya: {0} save.wave = Hullám: {0} save.mode = Játékmód: {0} -save.date = Utolsó Mentés: {0} +save.date = Utolsó mentés: {0} save.playtime = Játékidő: {0} warning = Figyelmeztetés. confirm = Megerősítés delete = Törlés view.workshop = Megtekintés a Steam Műhelyben -workshop.listing = Steam Műhely listázás szerkesztése +workshop.listing = Steam Műhely listázásának szerkesztése ok = OK open = Megnyitás customize = Szabályok módosítása -cancel = Mégsem +cancel = Mégse command = Parancs -command.queue = Sorba állít +command.queue = Sorba állítás command.mine = Bányászás command.repair = Javítás command.rebuild = Újraépítés @@ -363,9 +363,9 @@ stance.shoot = Viselkedés: lövés stance.holdfire = Viselkedés: tüzet szüntess stance.pursuetarget = Viselkedés: célpont követése stance.patrol = Viselkedés: járőrözési útvonal -stance.ram = Viselkedés: ütközés\n[lightgray]Egyenes vonalú mozgás, nincs útkeresés -openlink = Link megnyitása -copylink = Link másolása +stance.ram = Viselkedés: ütközés\n[lightgray]Egyenes vonalú mozgás, útkeresés nélkül +openlink = Hivatkozás megnyitása +copylink = Hivatkozás másolása back = Vissza max = Max objective = A pálya célja @@ -376,18 +376,18 @@ data.export = Adatok exportálása data.import = Adatok importálása data.openfolder = Adatok mappájának megnyitása data.exported = Adatok exportálva. -data.invalid = Ez nem egy érvényes játékadat. +data.invalid = Ezek nem érvényes játékadatok. data.import.confirm = A külső adatok importálása felülírja[scarlet] minden[] jelenlegi játékadatodat.\n[accent]Nem vonható vissza![]\n\nAmint kész az importálás, a játék azonnal kilép. quit.confirm = Biztosan kilépsz? loading = [accent]Betöltés... downloading = [accent]Letöltés... saving = [accent]Mentés... -respawn = Nyomd meg a(z) [accent][[{0}][] gombot, hogy drónként újraéledj. -cancelbuilding = Használd a(z) [accent][[{0}][] gombot, hogy töröld a tervrajzot. -selectschematic = Használd a(z) [accent][[{0}][] gombot, hogy kijelölj és másolj. -pausebuilding = Használd a(z) [accent][[{0}][] gombot, hogy megállítsd az építkezést. -resumebuilding = Használd a(z) [scarlet][[{0}][] gombot, hogy folytasd az építkezést. -enablebuilding = Használd a(z) [scarlet][[{0}][] gombot, hogy jóváhagyd az építkezést. +respawn = [accent][[{0}][] az újraéledéshez +cancelbuilding = [accent][[{0}][] a tervrajz törléséhez +selectschematic = [accent][[{0}][] a kijelöléshez és másoláshoz +pausebuilding = [accent][[{0}][] az építkezés megállításához +resumebuilding = [scarlet][[{0}][] az építkezés folytatásához +enablebuilding = [scarlet][[{0}][] az építkezés jóváhagyásához showui = A kezelőfelület elrejtve.\nNyomd meg a(z) [accent][[{0}][] gombot a kezelőfelület megjelenítéséhez. commandmode.name = [accent]Parancs mód commandmode.nounits = [nincs egység] @@ -397,54 +397,59 @@ wave.waiting = [lightgray]A következő hullám elkezdődik: {0} mp múlva wave.waveInProgress = [lightgray]Hullám folyamatban waiting = [lightgray]Várakozás... waiting.players = Várakozás a játékosokra... -wave.enemies = [lightgray]{0}db ellenség maradt -wave.enemycores = [accent]{0}db[lightgray] ellenséges Támaszpont -wave.enemycore = [accent]{0}db[lightgray] ellenséges Támaszpont -wave.enemy = [lightgray]{0}db ellenség maradt +wave.enemies = [lightgray]{0} ellenség maradt +wave.enemycores = [accent]{0}[lightgray] ellenséges támaszpont +wave.enemycore = [accent]{0}[lightgray] ellenséges támaszpont +wave.enemy = [lightgray]{0} ellenség maradt wave.guardianwarn = Egy Őrző érkezik [accent]{0}[] hullám múlva. wave.guardianwarn.one = Egy Őrző érkezik [accent]{0}[] hullám múlva. loadimage = Kép betöltése saveimage = Kép mentése unknown = Ismeretlen -custom = Egyedi +custom = Egyéni builtin = Beépített map.delete.confirm = Biztosan törlöd ezt a pályát? Ez a művelet nem vonható vissza! map.random = [accent]Véletlenszerű pálya -map.nospawn = Ez a pálya nem rendelkezik Támaszponttal, amellyel a játékos kezdhet! Adj hozzá egy {0} Támaszpontot ehhez a pályához a szerkesztőben! -map.nospawn.pvp = Ezen a pályán nincs ellenséges Támaszpont, amellyel a másik csapat kezdhet! Adj hozzá egy [scarlet]nem narancssárga[] Támaszpontot ehhez a pályához a szerkesztőben! -map.nospawn.attack = Ezen a pályán nincs ellenséges Támaszpont! Adj hozzá egy {0} Támaszpontot ehhez a pályához a szerkesztőben! +map.nospawn = Ez a pálya nem rendelkezik támaszponttal, amellyel a játékos kezdhetne. Adj hozzá egy {0} támaszpontot a pályához a szerkesztőben. +map.nospawn.pvp = Ezen a pályán nincs ellenséges támaszpont, amellyel egy játékos kezdhet. Adj hozzá egy [scarlet]nem narancssárga[] támaszpontot a pályához a szerkesztőben. +map.nospawn.attack = Ezen a pályán nincs ellenséges támaszpont. Adj hozzá {0} támaszpontot ehhez a pályához a szerkesztőben. map.invalid = Hiba történt a pálya betöltésekor: sérült vagy érvénytelen fájl. workshop.update = Elem frissítése workshop.error = Hiba történt a Steam Műhely részleteinek lekérdezésekor: {0} -map.publish.confirm = Biztos, hogy közzéteszed ezt a pályát?\n\n[lightgray]Győződj meg róla, hogy elfogadtad a Steam Műhely EULA-t, különben a pályáid nem jelennek meg! +map.publish.confirm = Biztos, hogy közzéteszed ezt a pályát?\n\n[lightgray]Győződj meg róla, hogy elfogadtad a Steam Műhely EULA-t, különben a pályáid nem jelennek meg. workshop.menu = Válaszd ki, hogy mit szeretnél csinálni ezzel az elemmel. -workshop.info = Elem infó -changelog = Változásnapló (opcionális): +workshop.info = Eleminformációk +changelog = Változásnapló (nem kötelező): updatedesc = Cím és leírás felülírása eula = Steam EULA -missing = Ezt az elemet törölték vagy áthelyezték.\n[lightgray]A Steam Műhely adatait automatikusan leválasztották. -publishing = [accent]Publikálás... +missing = Ezt az elemet törölték vagy áthelyezték.\n[lightgray]A Steam Műhely adatai automatikusan le lettek választva. +publishing = [accent]Közzététel... publish.confirm = Biztosan közzéteszed?\n\n[lightgray]Győződj meg róla, hogy elfogadtad a Steam Műhely EULA-t, különben az elemeid nem jelennek meg! -publish.error = Hiba az elem publikálásakor: {0} -steam.error = Nem sikerült inicializálni a Steam szolgáltatásokat.\nHiba: {0} +publish.error = Hiba az elem közzétételekor: {0} +steam.error = Nem sikerült előkészíteni a Steam szolgáltatásokat.\nHiba: {0} editor.planet = Bolygó: editor.sector = Szektor: -editor.seed = Seed: +editor.seed = Kiindulóérték: editor.cliffs = Falak sziklákká editor.brush = Méret editor.openin = Megnyitás a szerkesztőben -editor.oregen = Érc generálás -editor.oregen.info = Érc generálás: -editor.mapinfo = Általános -editor.author = Készítő: +editor.oregen = Ércelőállítás +editor.oregen.info = Ércelőállítás: +editor.mapinfo = Pályainformációk +editor.author = Szerző: editor.description = Leírás: -editor.nodescription = A pályának rendelkeznie kell egy legalább 4 karakter hosszú leírással, mielőtt megosztod. -editor.waves = Hullámok: -editor.rules = Szabályok: -editor.generation = Generálás: +editor.nodescription = A megosztás előtt a pályának rendelkeznie kell egy legalább 4 karakteres leírással. +editor.waves = Hullámok +editor.rules = Szabályok +editor.generation = Előállítás editor.objectives = Célok editor.locales = Helyi csomagok +editor.worldprocessors = Világprocesszorok +editor.worldprocessors.editname = Név szerkesztése +editor.worldprocessors.none = [lightgray]Nem találhatóak világprocesszor blokkok!\nAdj hozzá egyet a pályaszerkesztőben, vagy használd az alábbi \ue813 hozzáadás gombot. +editor.worldprocessors.nospace = Nincs szabad hely egy világprocesszor elhelyezéséhez!\nKitöltötted a pályát struktúrákkal? Miért tetted ezt? +editor.worldprocessors.delete.confirm = Biztos, hogy törölni akarod ezt a világprocesszort?\n\nHa falakkal van körülvéve, akkor egy környezeti fal fog a helyére kerülni. editor.ingame = Szerkesztés a játékban editor.playtest = Teszt a játékban editor.publish.workshop = Közzététel a Steam Műhelyben @@ -453,9 +458,9 @@ editor.center = Ugrás középre editor.search = Pályák keresése... editor.filters = Pályák szűrése editor.filters.mode = Játékmódok: -editor.filters.type = Pálya típus: +editor.filters.type = Pályatípus: editor.filters.search = Keresés ebben: -editor.filters.author = Készítő +editor.filters.author = Szerző editor.filters.description = Leírás editor.shiftx = X eltolás editor.shifty = Y eltolás @@ -468,29 +473,29 @@ waves.health = élet: {0}% waves.perspawn = kezdőpontonként waves.shields = pajzs/hullám waves.to = - -waves.spawn = Kezdőpont: +waves.spawn = kezdőpont: waves.spawn.all = waves.spawn.select = Kezdőpont kiválasztása waves.spawn.none = [scarlet]nem találhatóak kezdőpontok a pályán -waves.max = max egységek +waves.max = egységkorlát waves.guardian = Őrző waves.preview = Előnézet waves.edit = Szerkesztés... -waves.random = Véletlen +waves.random = Véletlenszerű waves.copy = Másolás a vágólapra -waves.load = Másolás a vágólapról -waves.invalid = Nem lehet beilleszteni a vágólapról. +waves.load = Betöltés a vágólapról +waves.invalid = Érvénytelen hullámok a vágólapon. waves.copied = Hullámok másolva. -waves.none = Nincs ellenség megadva.\nVedd figyelembe, hogy az üresen hagyott hullám elrendezések automatikusan lecserélődnek az alapértelmezett elrendezésre. +waves.none = Nincs ellenség megadva.\nVedd figyelembe, hogy az üresen hagyott hullám-elrendezések automatikusan le lesznek cserélve az alapértelmezett elrendezésre. waves.sort = Rendezési szempont waves.sort.reverse = Rendezés visszafelé -waves.sort.begin = Indul +waves.sort.begin = Kezdés waves.sort.health = Élet waves.sort.type = Típus waves.search = Hullám keresése... -waves.filter = Egység szűrő -waves.units.hide = Mindent elrejt -waves.units.show = Mindent megjelenít +waves.filter = Egységszűrő +waves.units.hide = Összes elrejtése +waves.units.show = Összes megjelenítése #these are intentionally in lower case wavemode.counts = típusokra bontva @@ -499,56 +504,58 @@ wavemode.health = életpontok editor.default = [lightgray] details = Részletek... -edit = Szerkesztés... +edit = Szerkesztés variables = Változók +logic.clear.confirm = Biztos, hogy törölni akarod az összes kódot ebből a processzorból? logic.globals = Beépített változók + editor.name = Név: -editor.spawn = Egység megidézése +editor.spawn = Egység létrehozása editor.removeunit = Egység eltávolítása editor.teams = Csapatok editor.errorload = Hiba a fájl betöltése közben. editor.errorsave = Hiba a fájl mentése közben. editor.errorimage = Ez egy kép, nem 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.errornot = Ez nem egy pályafájl. +editor.errorheader = Ez a pályafájl érvénytelen vagy sérült. editor.errorname = A pályának nincs neve. Mentést próbálsz betölteni? -editor.errorlocales = Hiba az érvénytelen Helyi Csomagok beolvasásakor. +editor.errorlocales = Hiba az érvénytelen helyi csomagok beolvasásakor. editor.update = Frissítés editor.randomize = Véletlenszerű editor.moveup = Mozgás felfelé editor.movedown = Mozgás lefelé editor.copy = Másolás -editor.apply = Alkalmazás -editor.generate = Generálás -editor.sectorgenerate = Szektor generálása +editor.apply = Alkalmaz +editor.generate = Előállítás +editor.sectorgenerate = Szektor előállítása editor.resize = Átméretezés editor.loadmap = Pálya betöltése editor.savemap = 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 = 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 a(z) "{0}" nevű beépített pálya! +editor.save.noname = A pályádnak nincs neve! Állíts be egyet a „pályainformációk” menüben. +editor.save.overwrite = A pályád felülír egy beépített pályát! Válassz egy másik nevet a „pályainformációk” menüben. +editor.import.exists = [scarlet]Nem lehet importálni:[] Már létezik a(z) „{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.importfile.description = Egy külső pályafá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.importimage.description = Egy külső pályaképfájl importálása editor.export = Exportálás... editor.exportfile = Fájl exportálása -editor.exportfile.description = Exportálás egy pálya fájlba -editor.exportimage = Domborzat kép exportálása +editor.exportfile.description = Exportálás egy pályafájlba +editor.exportimage = Domborzati kép exportálása editor.exportimage.description = Csak alapvető domborzatot tartalmazó képfájl exportálása editor.loadimage = Domborzat importálása editor.saveimage = Domborzat exportálása -editor.unsaved = Biztos ki akarsz lépni?\n[scarlet]A nem mentett módosításaid elvesznek! +editor.unsaved = Biztos, hogy ki akarsz lépni?\n[scarlet]A nem mentett módosításaid elvesznek. editor.resizemap = Pálya átméretezése editor.mapname = Pálya neve: editor.overwrite = [accent]Vigyázz!\nEzzel felülírsz egy már létező pályát. -editor.overwrite.confirm = [scarlet]Vigyázz![] Ilyen nevű pálya már létezik:\n"[accent]{0}[]"\nBiztosan felülírod? +editor.overwrite.confirm = [scarlet]Vigyázz![] Ilyen nevű pálya már létezik. Biztosan felülírod?\n„[accent]{0}[]” editor.exists = Ilyen nevű pálya már létezik. editor.selectmap = Válassz ki egy pályát a betöltéshez: @@ -559,20 +566,20 @@ toolmode.replaceall.description = Az összes blokkot lecseréli a pályán. toolmode.orthogonal = Merőleges toolmode.orthogonal.description = Csak merőleges vonalakat rajzol. toolmode.square = Négyzet -toolmode.square.description = Négyzet ecset +toolmode.square.description = Négyzetes ecset. toolmode.eraseores = Ércradír toolmode.eraseores.description = Csak az érceket törli. -toolmode.fillteams = Csoportok Kitöltése -toolmode.fillteams.description = Töltse ki a csoportokat a 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. +toolmode.fillteams = Csapatok kitöltése +toolmode.fillteams.description = Csapatok kitöltése a blokkok helyett. +toolmode.fillerase = Kitöltés törlése +toolmode.fillerase.description = Az azonos típusú blokkok törlése. +toolmode.drawteams = Csapatok rajzolása +toolmode.drawteams.description = Csapatok rajzolása blokkok helyett. #unused toolmode.underliquid = Folyadékok alá -toolmode.underliquid.description = Padlók rajzolása a folyadék blokkok alá. +toolmode.underliquid.description = Padlók rajzolása a folyadékblokkok alá. -filters.empty = [lightgray]Még nincs szűrő! Adj hozzá egyet a lenti gombra kattintva! +filters.empty = [lightgray]Még nincs szűrő! Adj hozzá egyet a lenti gombra kattintva. filter.distort = Torzítás filter.noise = Zaj @@ -584,14 +591,15 @@ filter.oremedian = Érc medián filter.blend = Vegyes filter.defaultores = Alapértelmezett ércek filter.ore = Érc -filter.rivernoise = Vízfolyás zaj +filter.rivernoise = Vízfolyás zaja filter.mirror = Tükrözés -filter.clear = Blokkok törlése -filter.option.ignore = Elutasít -filter.scatter = Szórás +filter.clear = Törlés +filter.option.ignore = Elutasítás +filter.scatter = Szétszórás filter.terrain = Domborzat +filter.logic = Logika -filter.option.scale = Méret +filter.option.scale = Méretezés filter.option.chance = Gyakoriság filter.option.mag = Magnitúdó filter.option.threshold = Küszöbérték @@ -604,7 +612,7 @@ filter.option.rotate = Forgatás filter.option.amount = Mennyiség filter.option.block = Blokk filter.option.floor = Talaj -filter.option.flooronto = Cél talaj +filter.option.flooronto = Céltalaj filter.option.target = Cél filter.option.replacement = Csere filter.option.wall = Fal @@ -612,24 +620,26 @@ filter.option.ore = Érc filter.option.floor2 = Másodlagos talaj filter.option.threshold2 = Másodlagos küszöbérték filter.option.radius = Sugár -filter.option.percentile = Arány +filter.option.percentile = Százalék +filter.option.code = Kód +filter.option.loop = Hurok -locales.info = Itt adhatsz hozzá különböző Helyi Csomagokat a pályádhoz. 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.info = Itt adhatsz hozzá különböző nyelvi csomagokat a pályádhoz. A nyelvi csomagokban minden tulajdonságnak van egy neve és egy értéke. Ezeket a tulajdonságokat a világprocesszorok és a célkitűzések is használhatják a saját neveikkel. Támogatják a szövegformázást (a helyőrzőket a tényleges értékükkel helyettesítik).\n\n[cyan]Példa tulajdonság:\n[]name: [accent]időzítő[]\nvalue: [accent]Példa időzítő, hátralévő idő: {0}[]\n\n[cyan]Használat:\n[]Beállítás célkitűzés szövegeként: [accent]@időzítő\n\n[]Írd be egy világprocesszorba:\n[accent]localeprint "időzítő"\nformat time\n[gray](ahol az idő egy külön számított változó) +locales.deletelocale = Biztos, hogy törölni akarod ezt a nyelvi csomagot? +locales.applytoall = Változások alkalmazása az összes nyelvi csomagra +locales.addtoother = Hozzáadás más nyelvi csomagokhoz locales.rollback = Visszaállítás az utoljára elfogadottra -locales.filter = Tulajdonság szűrő -locales.searchname = Név keresés... -locales.searchvalue = Érték keresés... -locales.searchlocale = Helyi csomag keresés... +locales.filter = Tulajdonságszűrő +locales.searchname = Név keresése... +locales.searchvalue = Érték keresése... +locales.searchlocale = Nyelvi csomag keresése... locales.byname = Név szerint locales.byvalue = Érték szerint -locales.showcorrect = Azon tulajdonságok megjelenítése, amelyek mindenhol egyedi értékekkel rendelkeznek és jelen vannak minden 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.showcorrect = Azon tulajdonságok megjelenítése, amelyek mindenhol egyedi értékekkel rendelkeznek és jelen vannak minden nyelvi csomagban. +locales.showmissing = Azon tulajdonságok megjelenítése, amelyek hiányoznak egyes nyelvi csomagokból +locales.showsame = Azon tulajdonságok megjelenítése, amelyek azonos értékekkel rendelkeznek különböző nyelvi csomagokban +locales.viewproperty = Megtekintés minden nyelvi csomagban +locales.viewing = A(z) „{0}” tulajdonság megtekintése locales.addicon = Ikon hozzáadása width = Szélesség: @@ -640,29 +650,29 @@ campaign = Hadjárat load = Betöltés save = Mentés fps = FPS: {0} -ping = Ping: {0}ms +ping = Ping: {0} ms tps = TPS: {0} -memory = Mem: {0}MB -memory2 = Mem:\n {0}MB +\n {1}MB -language.restart = Indítsd újra a játékot, hogy betöltődjenek a nyelvi beállítások! +memory = Mem: {0} MB +memory2 = Mem:\n {0} MB +\n {1} MB +language.restart = Indítsd újra a játékot, hogy a nyelvi beállítások érvénybe lépjenek. settings = Beállítások tutorial = Oktatóanyag tutorial.retake = Oktatóanyag újrajátszása editor = Szerkesztő -mapeditor = Pálya szerkesztő +mapeditor = Pályaszerkesztő abandon = Feladás abandon.text = Ez a szektor és minden nyersanyaga az ellenség kezére kerül. locked = Lezárva complete = [lightgray]Feltételek: -requirement.wave = Juss el a {0}. hullámig a(z) {1} szektorban -requirement.core = Pusztítsd el az ellenséges Támaszpontot a(z) {0} szektorban +requirement.wave = Juss el a(z) {0}. hullámig a(z) {1} szektorban +requirement.core = Pusztítsd el az ellenséges támaszpontot a(z) {0} szektorban requirement.research = Fejleszd ki: {0} requirement.produce = Gyártsd le: {0} requirement.capture = Foglald el a(z) {0} szektort -requirement.onplanet = Szektor elfoglalása a(z) {0}-n +requirement.onplanet = Szektor elfoglalása a(z) {0} bolygón requirement.onsector = Landolj a(z) {0} szektorban -launch.text = Indítás +launch.text = Kilövés research.multiplayer = Csak a kiszolgáló fedezhet fel nyersanyagokat. map.multiplayer = Csak a kiszolgáló tekintheti meg a szektorokat. uncover = Felfedés @@ -671,10 +681,10 @@ configure = Rakomány szerkesztése objective.research.name = Fejlesztés objective.produce.name = Megszerzés objective.item.name = Nyersanyag megszerzése -objective.coreitem.name = Támaszpont nyersanyag -objective.buildcount.name = Építés számláló -objective.unitcount.name = Egység számláló -objective.destroyunits.name = Egység megsemmisítése +objective.coreitem.name = Támaszpont nyersanyaga +objective.buildcount.name = Építésszámláló +objective.unitcount.name = Egységszámláló +objective.destroyunits.name = Egységek megsemmisítése objective.timer.name = Időzítő objective.destroyblock.name = Blokk megsemmisítése objective.destroyblocks.name = Blokkok megsemmisítése @@ -688,6 +698,7 @@ marker.shape.name = Alakzat marker.text.name = Szöveg marker.line.name = Vonal marker.quad.name = Négyzet +marker.texture.name = Textúra marker.background = Háttér marker.outline = Körvonal @@ -697,18 +708,18 @@ objective.produce = [accent]Termelj:\n[]{0}[lightgray]{1} objective.destroyblock = [accent]Semmisítsd meg:\n[]{0}[lightgray]{1} objective.destroyblocks = [accent]Semmisítsd meg: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3} objective.item = [accent]Termelj: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.coreitem = [accent]Szállítás a Támaszpontba:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} +objective.coreitem = [accent]Szállítás a támaszpontba:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} objective.build = [accent]Építs: [][lightgray]{0}[]db\n{1}[lightgray]{2} objective.buildunit = [accent]Gyárts egységeket: [][lightgray]{0}[]db\n{1}[lightgray]{2} -objective.destroyunits = [accent]Semmisíts meg: [][lightgray]{0}[]db Egységet +objective.destroyunits = [accent]Semmisíts meg: [][lightgray]{0}[]db egységet objective.enemiesapproaching = [accent]Ellenség érkezik: [lightgray]{0}[] mp múlva objective.enemyescelating = [accent]Az ellenséges gyártás fokozódik: [lightgray]{0}[] mp múlva objective.enemyairunits = [accent]Az ellenséges légi egységek gyártása elkezdődik: [lightgray]{0}[] mp múlva -objective.destroycore = [accent]Semmisítsd meg az ellenséges Támaszpontot +objective.destroycore = [accent]Semmisítsd meg az ellenséges támaszpontot objective.command = [accent]Irányítsd az egységeket objective.nuclearlaunch = [accent]⚠ Nukleáris kilövés észlelve: [lightgray]{0} -announce.nuclearstrike = [red]⚠ BEÉRKEZŐ NUKLEÁRIS CSAPÁS ⚠\n[lightgray]Azonnal építs tartalék Támaszpontokat! +announce.nuclearstrike = [red]⚠ BEÉRKEZŐ NUKLEÁRIS CSAPÁS ⚠\n[lightgray]Azonnal építs tartalék támaszpontokat! loadout = Rakomány resources = Nyersanyagok @@ -717,10 +728,10 @@ bannedblocks = Tiltott épületek objectives = Feladatok bannedunits = Tiltott egységek bannedunits.whitelist = Tiltott egységek fehérlistára -bannedblocks.whitelist = Tiltott épületek 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.from = Kilövés a(z) [accent]{0} szektorból +launch.capacity = Nyersanyag-kapacitás a kilövéskor: [accent]{0} launch.destination = Úticél: {0} configure.invalid = A mennyiségnek 0 és {0} között kell lennie. add = Hozzáadás... @@ -729,22 +740,22 @@ guardian = Őrző connectfail = [scarlet]Kapcsolódási hiba:\n\n[accent]{0} error.unreachable = A kiszolgálót nem lehet elérni.\nBiztosan jól írtad be a címet? error.invalidaddress = Érvénytelen cím. -error.timedout = Időtúllépés!\nGyőződj meg róla, hogy a "porttovábbítás" be van kapcsolva a kiszolgáló gépen és a cím helyes! -error.mismatch = Csomaghiba:\nLehetséges kliens/kiszolgáló verzió eltérés.\nGyőződj meg róla, hogy te és a kiszolgáló is a Mindustry legfrissebb verzióját használjátok! +error.timedout = Időtúllépés!\nGyőződj meg róla, hogy a porttovábbítás be van kapcsolva a kiszolgálógépen, és a cím helyes! +error.mismatch = Csomaghiba:\nLehetséges kliens- vagy kiszolgálóverzió-eltérés.\nGyőződj meg róla, hogy te és a kiszolgáló is a Mindustry legfrissebb verzióját használjátok! error.alreadyconnected = Már kapcsolódva vagy. -error.mapnotfound = A pálya fájl nem található! +error.mapnotfound = A pályafájl nem található! error.io = Internet I/O hiba. -error.any = Ismeretlen internet hiba. -error.bloom = Nem sikerült inicializálni a bloom-ot.\nElőfordulhat, hogy a készülék nem támogatja. +error.any = Ismeretlen hálózati hiba. +error.bloom = A bloom hatás előkészítése nem sikerült.\nElőfordulhat, hogy az eszköz nem támogatja. weather.rain.name = Eső -weather.snow.name = Hóesés +weather.snowing.name = Hóesés weather.sandstorm.name = Homokvihar weather.sporestorm.name = Spóravihar weather.fog.name = Köd -campaign.playtime = \uf129 [lightgray]Szektor Játékidő: {0} -campaign.complete = [accent]Gratuláció.\n\nAz ellenség a(z) {0}-n legyőzve.\n[lightgray]Az utolsó szektor meghódítása megtörtént. +campaign.playtime = \uf129 [lightgray]Játékidő a szektorban: {0} +campaign.complete = [accent]Gratulálunk.\n\nAz ellenség legyőzve a(z) {0} bolygón.\n[lightgray]Az utolsó szektor meghódítása megtörtént. sectorlist = Szektorok sectorlist.attacked = {0} támadás alatt @@ -753,23 +764,23 @@ sectors.resources = Nyersanyagok: sectors.production = Termelés: sectors.export = Export: sectors.import = Import: -sectors.time = A szektorban eltöltött idő: +sectors.time = Játékidő a szektorban: sectors.threat = Fenyegetés: sectors.wave = Hullám: -sectors.stored = Eltárolt nyersanyagok: +sectors.stored = Tárolt nyersanyagok: sectors.resume = Folytatás -sectors.launch = Indítás +sectors.launch = Kilövés sectors.select = Kiválasztás 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 = [scarlet]Támadás alatt! [accent]{0}%-ban sérült sectors.underattack.nodamage = [scarlet]Nincs meghódítva sectors.survives = [accent]Túlél {0} hullámot -sectors.go = Utazás -sector.abandon = Elhagy -sector.abandon.confirm = Ennek a szektornak a Támaszpontja(i) önmegsemmisítésre kerülnek.\nFolytatod? +sectors.go = Visszatérés +sector.abandon = Elhagyás +sector.abandon.confirm = Ennek a szektornak a támaszpontjai önmegsemmisítésre kerülnek.\nFolytatod? sector.curcapture = A szektor elfoglalva sector.curlost = A szektor elveszett sector.missingresources = [scarlet]Nincs elég nyersanyag @@ -779,7 +790,7 @@ sector.capture = A(z) [accent]{0}[white] szektor elfoglalva! sector.capture.current = A szektor elfoglalva! sector.changeicon = Ikon módosítása sector.noswitch.title = A szektorváltás nem lehetséges -sector.noswitch = Nem válthatsz szektort, amíg egy meglévő szektor támadás alatt áll.\n\nSzektor: [accent]{0}[] a(z) [accent]{1}[]-n +sector.noswitch = Nem válthatsz szektort, amíg egy meglévő szektor támadás alatt áll.\n\nSzektor: [accent]{0}[] a(z) [accent]{1}[] bolygón sector.view = A szektor megtekintése threat.low = Alacsony @@ -794,45 +805,45 @@ planet.serpulo.name = Serpulo planet.erekir.name = Erekir planet.sun.name = Nap -sector.impact0078.name = Ütközet 0078 -sector.groundZero.name = Becsapódási Pont -sector.craters.name = A Kráterek -sector.frozenForest.name = Fagyott Erdő -sector.ruinousShores.name = Romos Partok -sector.stainedMountains.name = Foltos Hegyek -sector.desolateRift.name = Kietlen Hasadék -sector.nuclearComplex.name = Nukleáris Termelési Komplexum -sector.overgrowth.name = Túlburjánzott +sector.impact0078.name = 0078-as becsapódás +sector.groundZero.name = Becsapódási pont +sector.craters.name = A kráterek +sector.frozenForest.name = Fagyott erdő +sector.ruinousShores.name = Romos partok +sector.stainedMountains.name = Foltos hegyek +sector.desolateRift.name = Kietlen hasadék +sector.nuclearComplex.name = Nukleáris termelési komplexum +sector.overgrowth.name = Túlburjánzás sector.tarFields.name = Kátránymezők -sector.saltFlats.name = Sós Síkságok +sector.saltFlats.name = Sós síkságok sector.fungalPass.name = Gombahágó -sector.biomassFacility.name = Biomassza Szintézis Létesítmény -sector.windsweptIslands.name = Szélfútta Szigetek -sector.extractionOutpost.name = Kivonási Pont -sector.planetaryTerminal.name = Bolygó Körüli Indító Terminál +sector.biomassFacility.name = Biomassza szintetizáló létesítmény +sector.windsweptIslands.name = Szélfútta szigetek +sector.extractionOutpost.name = Kivonási helyőrség +sector.planetaryTerminal.name = Bolygó körüli kilövőállás sector.coastline.name = Partvonal -sector.navalFortress.name = Tengerészeti Erőd +sector.navalFortress.name = Tengerészeti erőd -sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges fenyegetés. Némi nyersanyag.\nGyűjts annyi Rezet és Ólmot, amennyit csak tudsz.\nHaladj tovább. -sector.frozenForest.description = Még itt, a hegyekhez közel is elterjedtek a spórák. A fagypont alatti hőmérséklet nem tudja örökké fogva tartani őket.\n\nFedezd fel az elektromosság erejét! Építs Belső Égetésű Erőművet! Használj Foltozót! -sector.saltFlats.description = A sivatag peremén terül el a 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 Támaszpontot! 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. Szerencsédre a kráter é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, minden más csak törmelékként van jelen.\nFolytasd a terjeszkedést! Fedezd fel a régi technológiákat! -sector.stainedMountains.description = Mélyebben benn a szárazföldön fekszenek a hegyek, a spóráktól még érintetlenül.\nTermeld ki a bőséges Titán készleteket a körzetben. Tanuld meg felhasználni!.\n\nAz ellenség itt nagyobb létszámban van jelen. Ne hagyj nekik időt, hogy a legerősebb egységeiket hadba állíthassák! +sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges fenyegetés. Kevés nyersanyag.\nGyűjts annyi rezet és ólmot, amennyit csak tudsz.\nHaladj tovább. +sector.frozenForest.description = Még itt, a hegyekhez közel is elterjedtek a spórák. A fagypont alatti hőmérséklet nem tudja örökké fogva tartani őket.\n\nFedezd fel az elektromosság erejét! Építs égetőerőműveket! Tanuld meg a foltozók használatát! +sector.saltFlats.description = A sivatag peremén terülnek el a Sós síkságok. Kevés nyersanyag található errefelé.\n\nAz ellenség egy raktárkomplexumot létesített itt. Pusztítsd el a támaszpontjukat! Kő kövön ne maradjon! +sector.craters.description = Víz gyűlt össze ebben a kráterben, amely régi háborúk emlékét őrzi. Szerezd vissza a területet. Gyűjts homokot! Olvassz üveget! Szivattyúzz vizet, hogy lehűtsd a fúróidat és lövegtornyaidat. +sector.ruinousShores.description = A pusztaság mögött a partvonal húzódik. Valaha ezen a helyen egy partvédelmi rendszer állt. Nem sok minden maradt belőle. Csak a legalapvetőbb védelmi szerkezetek maradtak érintetlenül, minden más csak törmelék lett.\nFolytasd a terjeszkedést! Fedezd fel újra a technológiát! +sector.stainedMountains.description = Mélyebben a szárazföldön fekszenek a hegyek, a spóráktól még érintetlenül.\nTermeld ki a bőséges titán készleteket a körzetben. Tanuld meg felhasználni!.\n\nAz ellenség itt nagyobb létszámban van jelen. Ne hagyj nekik időt, hogy a legerősebb egységeiket hadba állíthassák! sector.overgrowth.description = Ez a terület közelebb esik a spórák forrásához, a spórák már kinőtték.\nAz ellenség egy helyőrséget létesített itt. Építs Mace egységeket! Pusztítsd el a bázist! -sector.tarFields.description = Egy Olajtermelő övezet peremvidéke a hegyek és a sivatag között. Egy azon kevés szektorok közül, ahol még hasznosítható kátránykészletek találhatóak.\nBár a terület elhagyatott, veszélyes ellenséges erők fészkelnek a közelben. Ne becsüld alá őket!\n\n[lightgray]Fedezd fel az Olajfeldolgozási lehetőségeket, ha tudod! -sector.desolateRift.description = Egy extrém veszélyes zóna. Nyersanyagokban gazdag, de szűkös a hely. Magas 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 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 Támaszpontot! -sector.biomassFacility.description = A Spórák származási helye. Ebben a létesítményben fejlesztették ki őket és eredetileg itt került sor a gyártásukra.\nFedezd fel az itt található technológiákat! Használd a Spóra Kapszulá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 és szétszóródtak a légkörben. A helyi ökoszisztémában semmi sem tudta felvenni a versenyt egy ennyire invazív életformával. -sector.windsweptIslands.description = Távolabb a partvonalon túl fekszik ez az elszigetelt szigetcsoport. A feljegyzések szerint egykor [accent]Műanyag[] 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 = Egy távoli ellenséges támaszpont, amelyet az ellenség azért épített, hogy nyersanyagokat juttasson el más szektorokba.\n\nA szektorok közötti szállítási technológia elengedhetetlen a további hódításhoz. Pusztítsd el a bázist. Fejleszd ki a Kilövő Állást. -sector.impact0078.description = Itt fekszenek a roncsai az első csillagközi űrhajónak, amely ebbe a csillagrendszerbe érkezett.\n\nMents ki a romok alól mindent amit csak tudsz! Fedezd fel az épen maradt technológiákat. -sector.planetaryTerminal.description = A végső célpont.\n\nEzen a vízparti bázison található egy olyan építmény, amely képes Támaszpontokat kilőni a közeli bolygókra. Folyamatosan őrzik.\n\nKészíts vízi egységeket! Ártalmatlanítsd az ellenséget amilyen gyorsan csak tudod! Találd meg a kilövőszerkezetet! +sector.tarFields.description = Egy olajtermelő övezet peremvidéke a hegyek és a sivatag között. Egy azon kevés szektorok közül, ahol még hasznosítható kátránykészletek találhatóak.\nBár a terület elhagyatott, veszélyes ellenséges erők fészkelnek a közelben. Ne becsüld alá őket!\n\n[lightgray]Fedezd fel az olajfeldolgozási lehetőségeket, ha tudod! +sector.desolateRift.description = Egy extrém veszélyes zóna. Nyersanyagokban gazdag, de szűkös a hely. Magas a kockázat. Építs szárazföldi és légvédelmet, amint csak tudsz. Ne tévesszen meg a hosszú szünet az ellenség támadásai között. +sector.nuclearComplex.description = Egy néhai tóriumkitermelő és feldolgozó létesítmény, romokban.\n[lightgray]Fedezd fel a tóriumot és a sokrétű felhasználását!\n\nAz ellenség nagy létszámban van jelen, és folyamatosan megfigyelés alatt tartják a környéket. +sector.fungalPass.description = Átmeneti terület a magas hegyek és a mélyebben fekvő, spórák uralta lapály között. Egy kisebb ellenséges megfigyelő állomás található itt.\nSemmisítsd meg!\nHasználj Dagger és Crawler egységeket! Pusztítsd el a két támaszpontot! +sector.biomassFacility.description = A spórák származási helye. Ebben a létesítményben fejlesztették ki őket, és eredetileg itt is gyártották őket.\nFedezd fel az itt található technológiákat. Tenyészd ki a spórákat üzemanyag és műanyagok gyártásához.\n\n[lightgray]A létesítmény pusztulása nyomán a spórák elszabadultak és szétszóródtak a légkörben. A helyi ökoszisztémában semmi sem tudta felvenni a versenyt egy ennyire invazív életformával. +sector.windsweptIslands.description = Távolabb, a partvonalon túl fekszik ez az elszigetelt szigetcsoport. A feljegyzések szerint egykor [accent]műanyagot[] gyártottak itt.\n\nVerd vissza az ellenség vízi egységeit! Állíts fel egy bázist a szigeteken! Fedezd fel az itt talált gyárakat! +sector.extractionOutpost.description = Egy távoli ellenséges támaszpont, amelyet az ellenség azért épített, hogy nyersanyagokat juttasson el más szektorokba.\n\nA szektorok közötti szállítási technológia elengedhetetlen a további hódításhoz. Pusztítsd el a bázist. Fejleszd ki a kilövőállást. +sector.impact0078.description = Itt nyugszanak az ebbe a csillagrendszerbe érkező első csillagközi űrhajó maradványai.\n\nMents ki a romok alól mindent amit csak tudsz. Fedezd fel az épen maradt technológiákat. +sector.planetaryTerminal.description = A végső célpont.\n\nEzen a vízparti bázison egy olyan építmény található, amely képes támaszpontokat kilőni a közeli bolygókra. Rendkívül jól őrzik.\n\nKészíts vízi egységeket! Ártalmatlanítsd az ellenséget, amilyen gyorsan csak tudod! Találd meg a kilövőszerkezetet! sector.coastline.description = Ezen a helyen egy haditengerészeti egység technológiájának maradványait azonosították. Verd vissza az ellenséges támadásokat, foglald el ezt a szektort, és szerezd meg a technológiát. -sector.navalFortress.description = Az ellenség bázist létesített egy távoli, természetesen-megerősített szigeten. Pusztítsd el ezt az előőrsöt. Szerezd meg a fejlett hadihajó-technológiájukat, és fejleszd ki te is. +sector.navalFortress.description = Az ellenség bázist létesített egy távoli, természetes erődítményes szigeten. Pusztítsd el ezt az előőrsöt. Szerezd meg a fejlett hadihajó-technológiájukat, és fejleszd ki te is. -sector.onset.name = A Kezdet +sector.onset.name = A kezdet sector.aegis.name = Égisz sector.lake.name = Tó sector.intersect.name = Metszéspont @@ -851,31 +862,31 @@ 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 fejlesztéseket. -sector.aegis.description = Ez a szektor Volfrám lelőhelyeket tartalmaz.\nFejleszd ki az [accent]Ütvefúró[]t, hogy ki tudd bányászni ezt a nyersanyagot és 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 használata az egyetlen lehetőség.\nFejleszd ki a [accent]Repülőgép Gyár[]at és állíts elő egy [accent]Elude[] egységet, amilyen hamar csak lehet. +sector.aegis.description = Ez a szektor volfrám-lelőhelyeket tartalmaz.\nFejleszd ki az [accent]Ütvefúrót[], hogy ki tudd bányászni ezt a nyersanyagot, és pusztítsd el az ellenséges bázist a szektorban. +sector.lake.description = Az ebben a szektorban lévő salakos tó nagymértékben korlátozza a használható egységeket. A lebegőegységek használata az egyetlen lehetőség.\nFejleszd ki a [accent]Repülőgépgyártót[], és állíts elő egy [accent]Elude[] egységet, amilyen hamar csak lehet. sector.intersect.description = A letapogatások arra utalnak, hogy ezt a szektort a leszállás után hamarosan több oldalról is megtámadják.\nÁllítsd fel gyorsan a védelmedet, és terjeszkedj minél hamarabb.\n[accent]Mech[] egységekre lesz szükség a terület zord terepviszonyai miatt. -sector.atlas.description = Ez a szektor változatos terepet tartalmaz, és az ütőképes támadáshoz többféle egységre lesz szükség.\nAz itt felfedezett ellenséges bázisok némelyikén való átjutáshoz is szükség lehet továbbfejlesztett egységekre.\nFejleszd ki az [accent]Elektrolizátor[]t és a [accent]Tank Újratervező[]t. +sector.atlas.description = Ez a szektor változatos terepet tartalmaz, és az ütőképes támadáshoz többféle egységre lesz szükség.\nAz itt felfedezett ellenséges bázisok némelyikén való átjutáshoz is továbbfejlesztett egységekre lehet szükség.\nFejleszd ki az [accent]Elektrolizátort[] és a [accent]Tankújratervezőt[]. sector.split.description = A minimális ellenséges jelenlét miatt ez a szektor tökéletes az új nyersanyagszállító technológiák tesztelésére. -sector.basin.description = Jelentős ellenséges jelenlét lett érzékelve ebben a szektorban.\nÉpíts gyorsan egységeket, és foglalj el ellenséges Támaszpontokat, 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ő Kamrá[]t az áramfejlesztéshez. -sector.peaks.description = A hegyvidéki terep ebben a szektorban a legtöbb egységet használhatatlanná teszi. Repülő egységekre lesz szükség.\nVigyázz az ellenséges légvédelmi létesítményekkel. Lehetséges, hogy az ilyen létesítményeket hatástalanítani lehet a támogató épületeik célba vételével. -sector.ravine.description = A szektorban nincs észlelve ellenséges Támaszpont, 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.basin.description = Jelentős ellenséges jelenlét lett érzékelve ebben a szektorban.\nÉpíts gyorsan egységeket, és foglald el az ellenséges támaszpontokat, hogy megvethesd a lábad. +sector.marsh.description = Ebben a szektorban rengeteg arkicit található, de kevés a kürtő.\nÉpíts [accent]Kémiai égetőkamrát[] az áramfejlesztéshez. +sector.peaks.description = A hegyvidéki terep ebben a szektorban a legtöbb egységet használhatatlanná teszi. Légi egységekre lesz szükség.\nVigyázz az ellenséges légvédelmi létesítményekkel. Lehetséges, hogy az ilyen létesítményeket hatástalanítani lehet a támogató épületeik célba vételével. +sector.ravine.description = A szektorban nem észlelhető ellenséges támaszpont, de ez egy fontos szállítási útvonal az ellenség számára, így változatos ellenséges erőkkel kell számolni.\nTermelj [accent]elektrometált[]. Építs [accent]Afflict[] lövegtornyokat. sector.caldera-erekir.description = Ebben a szektorban a feltárható nyersanyagok több szigeten szétszóródva találhatóak.\nFejleszd ki és helyezd üzembe a drónalapú szállítmányozást. -sector.stronghold.description = A nagy ellenséges tábor ebben a szektorban jelentős [accent]Tórium[] készleteket őriz.\nHasználd magasabb szintű egységek és lövegtornyok fejlesztésére. -sector.crevice.description = Ebben a szektorban az ellenség kegyetlen támadóerőket fog mozgósítani, hogy kiiktassa a bázisodat.\nGyűjts [accent]Karbid[]ot, majd fejleszd ki és építs [accent]Pirolízis Erőmű[]vet, mert lehet, hogy nélkülözhetetlenek lesznek a túléléshez. -sector.siege.description = Ebben a szektorban két párhuzamos kanyon található, amelyek két irányból érkező támadásokat tesznek lehetővé.\nFejleszd ki a [accent]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 Támaszpont 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 fejlesztési lehetőség - koncentrálj az ellenséges Támaszpontok elpusztítására. +sector.stronghold.description = A nagy ellenséges tábor ebben a szektorban jelentős mennyiségű [accent]tóriumot[] őriz.\nHasználd magasabb szintű egységek és lövegtornyok fejlesztésére. +sector.crevice.description = Ebben a szektorban az ellenség kegyetlen támadóerőket fog mozgósítani, hogy kiiktassa a bázisodat.\nA [accent]karbid[] és a [accent]Pirolízis-erőmű[] kifejlesztése nélkülözhetetlen lehet a túléléshez. +sector.siege.description = Ebben a szektorban két párhuzamos kanyon található, amelyek két irányból érkező támadásokat tesznek lehetővé.\nFejleszd ki a [accent]diciánt[], hogy még erősebb tankegységeket hozhass létre.\nVigyázat: ellenséges, nagy hatótávolságú rakéták észlelve. A rakéták a becsapódásuk előtt megsemmisíthetőek. +sector.crossroads.description = Az ellenséges támaszpontok ebben a szektorban változó terepviszonyok között alakultak ki. Ahhoz, hogy alkalmazkodni tudj, fejlessz ki különböző egységeket.\nEzenkívül egyes bázisokat pajzsok védenek. Találd ki, hogyan táplálják őket. +sector.karst.description = Ez a szektor gazdag a nyersanyagokban, de amint egy új támaszpont leszáll, az ellenség megtámadja azt.\nHasználd ki a nyersanyagokat és fedezd fel a [accent]tóritkvarcot[]. +sector.origin.description = Az utolsó szektor, jelentős ellenséges jelenléttel.\nNem valószínű, hogy maradtak további fejlesztési lehetőségek – koncentrálj az ellenséges támaszpontok elpusztítására. status.burning.name = Égő -status.freezing.name = Fagyasztó +status.freezing.name = Fagyos status.wet.name = Nedves status.muddy.name = Sáros status.melting.name = Olvadó status.sapped.name = Kiszáradt status.electrified.name = Elektromos -status.spore-slowed.name = Spóra lassított +status.spore-slowed.name = Spórával lassított status.tarred.name = Kátrányozott status.overdrive.name = Túlhajtás status.overclock.name = Túlhúzás @@ -887,28 +898,28 @@ status.boss.name = Őrző settings.language = Nyelvek settings.data = Játékadatok settings.reset = Alapértelmezett -settings.rebind = Újrakötés -settings.resetKey = Visszaállítás +settings.rebind = Átállítás +settings.resetKey = Vissza-\nállítás settings.controls = Irányítás settings.game = Játék settings.sound = Hangok settings.graphics = Grafika settings.cleardata = Játékadatok törlése... settings.clear.confirm = Biztosan törlöd ezeket az adatokat?\nA műveletet nem lehet visszavonni! -settings.clearall.confirm = [scarlet] FIGYELEM! []\nEz törli az összes adatot, beleértve a mentéseket, pályákat, felfedezéseket és a billentyű beállításokat.\nAz 'OK' gomb megnyomásával a játék minden adatot töröl és automatikusan kilép. +settings.clearall.confirm = [scarlet]FIGYELEM![]\nEz törli az összes adatot, beleértve a mentéseket, pályákat, felfedezéseket és a billentyűbeállításokat.\nAz „OK” gomb megnyomásával a játék minden adatot töröl, és automatikusan kilép. settings.clearsaves.confirm = Biztosan törlöd az összes mentést? settings.clearsaves = Mentések törlése settings.clearresearch = Fejlesztések törlése settings.clearresearch.confirm = Biztosan törlöd az összes fejlesztést? -settings.clearcampaignsaves = Hadjárat mentések törlése -settings.clearcampaignsaves.confirm = Biztosan törlöd az összes hadjárat mentést? -paused = [accent]< Megállítva > +settings.clearcampaignsaves = Hadjáratmentések törlése +settings.clearcampaignsaves.confirm = Biztosan törlöd az összes hadjáratmentést? +paused = [accent]< Szünet > clear = Törlés banned = [scarlet]Kitiltva unsupported.environment = [scarlet]Nem támogatott környezet yes = Igen no = Nem -info.title = Infó +info.title = Információ error.title = [scarlet]Hiba történt error.crashtitle = Hiba történt unit.nobuild = [scarlet]Az egység nem tud építeni @@ -924,50 +935,50 @@ 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.opposites = Ellentettek stat.powercapacity = Maximális tárolási kapacitás -stat.powershot = Áram/Lövés +stat.powershot = Áram/lövés stat.damage = Sebzés -stat.targetsair = Repülő célpontok +stat.targetsair = Légi 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.itemsmoved = Szállítási sebesség +stat.launchtime = Kilövések közötti idő +stat.shootrange = Hatótávolság stat.size = Méret stat.displaysize = Felbontás -stat.liquidcapacity = Folyadék kapacitás -stat.powerrange = Áram hatótáv -stat.linkrange = Kapcsolat hatótáv -stat.instructions = Instrukciók -stat.powerconnections = Maximális kapcsolat +stat.liquidcapacity = Folyadékkapacitás +stat.powerrange = Hatótávolság +stat.linkrange = Kapcsolat hatótávolsága +stat.instructions = Utasítások +stat.powerconnections = Max. kapcsolatok stat.poweruse = Áramhasználat -stat.powerdamage = Áram/Sebzés -stat.itemcapacity = Nyersanyag kapacitás -stat.memorycapacity = Memória méret +stat.powerdamage = Áram/sebzés +stat.itemcapacity = Nyersanyag-kapacitás +stat.memorycapacity = Memóriakapacitás stat.basepowergeneration = Alap áramtermelés stat.productiontime = Gyártási idő stat.repairtime = Teljes javítási idő stat.repairspeed = Javítási sebesség stat.weapons = Fegyverek -stat.bullet = Töltény +stat.bullet = Lövedék stat.moduletier = Modul szintje -stat.unittype = Egység típus +stat.unittype = Egység típusa stat.speedincrease = Gyorsítás -stat.range = Hatótáv -stat.drilltier = Kitermelhető +stat.range = Hatótávolság +stat.drilltier = Kitermelhetőek stat.drillspeed = Alap termelési sebesség stat.boosteffect = Erősítés hatása -stat.maxunits = Maximális aktív egység +stat.maxunits = Max. aktív egységek stat.health = Életpontok stat.armor = Páncél stat.buildtime = Építési időtartam -stat.maxconsecutive = Maximum egymást követő +stat.maxconsecutive = Max. egymást követő stat.buildcost = Építési költség stat.inaccuracy = Pontatlanság stat.shots = Lövések stat.reload = Tüzelési sebesség stat.ammo = Lőszer -stat.shieldhealth = Pajzs élete +stat.shieldhealth = Pajzs életereje stat.cooldowntime = Újratöltés időtartama stat.explosiveness = Robbanékonyság stat.basedeflectchance = Alap hárítási esély @@ -983,35 +994,66 @@ stat.speed = Sebesség stat.buildspeed = Építési sebesség stat.minespeed = Termelési sebesség stat.minetier = Termelési szint -stat.payloadcapacity = Rakomány kapacitás +stat.payloadcapacity = Rakománykapacitás stat.abilities = Képességek stat.canboost = Erősíthető stat.flying = Repül -stat.ammouse = Lőszer használat -stat.damagemultiplier = Sebzés szorzó -stat.healthmultiplier = Életerő szorzó -stat.speedmultiplier = Sebesség szorzó -stat.reloadmultiplier = Újratöltés szorzó -stat.buildspeedmultiplier = Építési sebesség szorzó +stat.ammouse = Lőszerhasználat +stat.ammocapacity = Lőszerkapacitás +stat.damagemultiplier = Sebzésszorzó +stat.healthmultiplier = Életerőszorzó +stat.speedmultiplier = Sebességszorzó +stat.reloadmultiplier = Újratöltési szorzó +stat.buildspeedmultiplier = Építési sebességszorzó stat.reactive = Reakciók stat.immunities = Immunitások stat.healing = Gyógyulás ability.forcefield = Erőtér +ability.forcefield.description = Erőteret vetít ki, mely elnyeli a lövedékeket ability.repairfield = Javító mező -ability.statusfield = Állapot mező +ability.repairfield.description = Megjavítja a közeli egységeket +ability.statusfield = Állapotmező +ability.statusfield.description = Állapothatást alkalmaz a közeli egységekre ability.unitspawn = Gyár -ability.shieldregenfield = Pajzs regeneráló mező +ability.unitspawn.description = Egységeket gyárt +ability.shieldregenfield = Pajzsregeneráló mező +ability.shieldregenfield.description = Regenerálja a közeli egységek pajzsát ability.movelightning = Villámcsapás +ability.movelightning.description = Mozgás közben villámokat bocsát ki +ability.armorplate = Páncéllemez +ability.armorplate.description = Csökkenti a kapott sebzést lövés közben ability.shieldarc = Pajzs ív -ability.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.shieldarc.description = Erőteret vetít ki egy ívben, mely elnyeli a lövedékeket +ability.suppressionfield = Javítás elnyomása +ability.suppressionfield.description = Leállítja a közeli javítóépületeket +ability.energyfield = Energiamező +ability.energyfield.description = Megrázza a közeli ellenségeket +ability.energyfield.healdescription = Megrázza a közeli ellenségeket, és gyógyítja a szövetségeseket ability.regen = Regeneráció +ability.regen.description = Idővel regenerálja a saját életerejét +ability.liquidregen = Folyadékelnyelés +ability.liquidregen.description = Folyadékot nyel el, hogy gyógyítsa magát +ability.spawndeath = Szétesés +ability.spawndeath.description = Megsemmisülésekor egységeket bocsát ki +ability.liquidexplode = Szétömlés +ability.liquidexplode.description = Megsemmisülésekor folyadék ömlik ki belőle -bar.onlycoredeposit = Csak a Támaszpont elhelyezése megengedett -bar.drilltierreq = Erősebb Fúró/Vágó szükséges +ability.stat.firingrate = [stat]{0}/mp[lightgray] tüzelési sebesség +ability.stat.regen = [stat]{0}[lightgray] életerő/mp +ability.stat.shield = [stat]{0}[lightgray] pajzs +ability.stat.repairspeed = [stat]{0}/mp[lightgray] javítási sebesség +ability.stat.slurpheal = [stat]{0}[lightgray] életerő/folyadékegység +ability.stat.cooldown = [stat]{0} mp[lightgray] újratöltődés +ability.stat.maxtargets = [stat]{0}[lightgray] max. célpont +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] javítási mennyiség (azonos típusnál) +ability.stat.damagereduction = [stat]{0}%[lightgray] sebzéscsökkentés +ability.stat.minspeed = [stat]{0} csempe/mp[lightgray] min. sebesség +ability.stat.duration = [stat]{0} mp[lightgray] időtartam +ability.stat.buildtime = [stat]{0} mp[lightgray] építési idő + +bar.onlycoredeposit = Csak a támaszpont elhelyezése megengedett +bar.drilltierreq = Erősebb fúró szükséges bar.noresources = Hiányzó nyersanyagok bar.corereq = Támaszpont szükséges bar.corefloor = Támaszpont zónacsempe szükséges @@ -1036,42 +1078,42 @@ bar.heatpercent = Hő: {0} ({1}%) bar.power = Áram bar.progress = Építés állapota bar.loadprogress = Állapot -bar.launchcooldown = Lehűlés indítása +bar.launchcooldown = Kilövés visszaszámlálása bar.input = Bemenet bar.output = Kimenet bar.strength = [stat]{0}[lightgray]x erő -units.processorcontrol = [lightgray]Processzor vezérelt +units.processorcontrol = [lightgray]Processzorvezérelt bullet.damage = [stat]{0}[lightgray] sebzés bullet.splashdamage = [stat]{0}[lightgray] területi sebzés ~[stat] {1}[lightgray] csempe bullet.incendiary = [stat]gyújtó bullet.homing = [stat]nyomkövető bullet.armorpierce = [stat]páncéltörő -bullet.maxdamagefraction = [stat]{0}%[lightgray] sebzés határérték -bullet.suppression = [stat]{0} mp[lightgray] javítás elnyomás ~ [stat]{1}[lightgray] csempe -bullet.interval = [stat]{0}/mp[lightgray] időszakos töltény(ek): -bullet.frags = [stat]{0}[lightgray]x repesz lövedék(ek): -bullet.lightning = [stat]{0}[lightgray]x villámcsapás ~ [stat]{1}[lightgray] sebzés -bullet.buildingdamage = [stat]{0}%[lightgray] épület sebzés +bullet.maxdamagefraction = [stat]{0}%[lightgray] sebzési határérték +bullet.suppression = [stat]{0} mp[lightgray] javításelnyomás ~[stat]{1}[lightgray] csempe +bullet.interval = [stat]{0}/mp[lightgray] gyakoriságú lövedékek: +bullet.frags = [stat]{0}[lightgray]db repeszlövedék: +bullet.lightning = [stat]{0}[lightgray]db villámcsapás ~[stat]{1}[lightgray] sebzés +bullet.buildingdamage = [stat]{0}%[lightgray] épületsebzés bullet.knockback = [stat]{0}[lightgray] hátralökés bullet.pierce = [stat]{0}[lightgray]x átütő erő bullet.infinitepierce = [stat]átütő erő -bullet.healpercent = [stat]{0}[lightgray]% gyógyító -bullet.healamount = [stat]{0}[lightgray] közvetlen javító -bullet.multiplier = [stat]{0}[lightgray]x lövedék szorzó -bullet.reload = [stat]{0}[lightgray]x tüzelési sebesség -bullet.range = [stat]{0}[lightgray] csempe tartomány +bullet.healpercent = [stat]{0}%[lightgray] javítás +bullet.healamount = [stat]{0}[lightgray] közvetlen javítás +bullet.multiplier = [stat]{0}[lightgray] lőszer/nyersanyag +bullet.reload = [stat]{0}%[lightgray] tüzelési sebesség +bullet.range = [stat]{0}[lightgray] csempés hatótávolság -unit.blocks = csempe +unit.blocks = blokk unit.blockssquared = blokk² -unit.powersecond = áram egység/mp +unit.powersecond = áramegység/mp unit.tilessecond = csempe/mp -unit.liquidsecond = folyadék egység/mp +unit.liquidsecond = folyadékegység/mp unit.itemssecond = nyersanyag/mp -unit.liquidunits = folyadék egység -unit.powerunits = áram egység -unit.heatunits = hő egység +unit.liquidunits = folyadékegység +unit.powerunits = áramegység +unit.heatunits = hőegység unit.degrees = fok unit.seconds = másodperc unit.minutes = perc @@ -1079,44 +1121,47 @@ unit.persecond = /mp unit.perminute = /perc unit.timesspeed = x sebesség unit.percent = % -unit.shieldhealth = pajzs állapot +unit.shieldhealth = pajzs életereje unit.items = nyersanyag unit.thousands = k -unit.millions = Mil +unit.millions = mil unit.billions = Mrd +unit.shots = lövés unit.pershot = /lövés -category.purpose = Cél +category.purpose = Rendeltetés category.general = Általános category.power = Áram category.liquids = Folyadékok category.items = Nyersanyagok -category.crafting = Bemenet/Kimenet +category.crafting = Bemenet/kimenet category.function = Funkció -category.optional = Lehetséges erősítés -setting.skipcoreanimation.name = Támaszpont indítás/leszállás animáció kihagyása +category.optional = Lehetséges fejlesztések +setting.alwaysmusic.name = Folyamatos zenelejátszás +setting.alwaysmusic.description = Ha engedélyezve van, akkor a zene folyamatosan szól a játékban.\nHa ki van kapcsolva, akkor csak véletlenszerű időközönként szólal meg. +setting.skipcoreanimation.name = Támaszpont kilövé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.blockreplace.name = Automatikus blokkjavaslatok setting.linear.name = Lineáris szűrés setting.hints.name = Tanácsok setting.logichints.name = Logikai tanácsok setting.backgroundpause.name = Szüneteltetés a háttérben setting.buildautopause.name = Automatikus szünet építéskor setting.doubletapmine.name = Bányászás dupla kattintással/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.commandmodehold.name = Lenyomva tartás a parancs módhoz +setting.distinctcontrolgroups.name = Egységenként legfeljebb egy vezérlőcsoport +setting.modcrashdisable.name = Modok letiltása indításkori összeomláskor setting.animatedwater.name = Animált felületek setting.animatedshields.name = Animált pajzsok -setting.playerindicators.name = Játékos mutató -setting.indicators.name = Ellenség mutató +setting.playerindicators.name = Játékosjelzők +setting.indicators.name = Ellenségjelzők setting.autotarget.name = Automatikus célzás setting.keyboard.name = Irányítás egérrel és billentyűzettel setting.touchscreen.name = Irányítás érintőképernyővel -setting.fpscap.name = Max FPS +setting.fpscap.name = FPS-korlát setting.fpscap.none = Nincs setting.fpscap.text = {0} FPS -setting.uiscale.name = UI méretezése +setting.uiscale.name = Felület méretezése setting.uiscale.description = A módosítások alkalmazásához újraindítás szükséges. setting.swapdiagonal.name = Mindig átlós elhelyezés setting.difficulty.training = Kiképzés @@ -1126,78 +1171,78 @@ setting.difficulty.hard = Nehéz setting.difficulty.insane = Őrült setting.difficulty.name = Nehézség: setting.screenshake.name = Képernyő rázkódása -setting.bloomintensity.name = Bloom intenzitás -setting.bloomblur.name = Bloom Blur +setting.bloomintensity.name = Bloom intenzitása +setting.bloomblur.name = Bloom elmosása setting.effects.name = Hatások megjelenítése -setting.destroyedblocks.name = Elpusztított épületek megjelenítése -setting.blockstatus.name = Épületek á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.destroyedblocks.name = Lerombolt építmények megjelenítése +setting.blockstatus.name = Blokkok állapotának megjelenítése +setting.conveyorpathfinding.name = Szállítószalag útvonalkeresése építéskor +setting.sensitivity.name = Kontroller érzékenysége setting.saveinterval.name = Mentési időköz setting.seconds = {0} másodperc setting.milliseconds = {0} ezredmásodperc setting.fullscreen.name = Teljes képernyő setting.borderlesswindow.name = Keret nélküli ablak setting.borderlesswindow.name.windows = Keret nélküli teljes képernyő -setting.borderlesswindow.description = A változások alkalmazásához újraindításra lehet szükség. -setting.fps.name = FPS, memória használat és ping megjelenítése +setting.borderlesswindow.description = A változtatások érvénybe lépéséhez újraindításra lehet szükség. +setting.fps.name = FPS, memóriahasználat és ping megjelenítése setting.console.name = Konzol engedélyezése setting.smoothcamera.name = Egyenletes kamera setting.vsync.name = VSync -setting.pixelate.name = Pixeles +setting.pixelate.name = Pixelesítés setting.minimap.name = Minitérkép megjelenítése -setting.coreitems.name = A Támaszpontban lévő nyersanyagok megjelenítése -setting.position.name = A játékos pozíciójának megjelenítése +setting.coreitems.name = Támaszpontban lévő nyersanyagok megjelenítése +setting.position.name = Játékos pozíciójának megjelenítése setting.mouseposition.name = Egér pozíciójának megjelenítése -setting.musicvol.name = Zene hangerő -setting.atmosphere.name = Bolygó atmoszféra megjelenítése +setting.musicvol.name = Zene hangereje +setting.atmosphere.name = Bolygóatmoszféra megjelenítése setting.drawlight.name = Sötét/világos fényhatások setting.ambientvol.name = Környezeti hangerő setting.mutemusic.name = Zene némítása -setting.sfxvol.name = SFX hangerő +setting.sfxvol.name = Hanghatások hangereje setting.mutesound.name = Hang némítása setting.crashreport.name = Névtelen összeomlási jelentések setting.savecreate.name = Automatikus mentés setting.steampublichost.name = Nyilvános játék láthatósága -setting.playerlimit.name = Játékos limit +setting.playerlimit.name = Játékoskorlát setting.chatopacity.name = Csevegő átlátszatlansága setting.lasersopacity.name = Villanyvezeték átlátszatlansága setting.bridgeopacity.name = Híd átlátszatlansága -setting.playerchat.name = Játékos szóbuborékok megjelenítése -setting.showweather.name = Időjárás grafika megjelenítése +setting.playerchat.name = Játékosok csevegőbuborékainak megjelenítése +setting.showweather.name = Időjárásgrafika megjelenítése setting.hidedisplays.name = Logikai kijelzők elrejtése -setting.macnotch.name = A felület igazítása a bevágás megjelenítéséhez -setting.macnotch.description = A változtatások alkalmazásához újra kell indítani +setting.macnotch.name = A felület igazítása a kijelző bevágásához +setting.macnotch.description = A változtatások érvénybe lépéséhez újraindítás szükséges steam.friendsonly = Csak barátok -steam.friendsonly.tooltip = Csak a Steam-barátok tudnak kapcsolódni a játékodhoz.\nHa nem jelölöd be ezt a négyzetet, a játékod nyilvános lesz - bárki kapcsolódhat hozzá. +steam.friendsonly.tooltip = Csak a Steam-barátok tudnak kapcsolódni a játékodhoz.\nHa nem jelölöd be ezt a négyzetet, a játékod nyilvános lesz – bárki kapcsolódhat hozzá. public.beta = Ne feledd, hogy a játék béta verziójában nem tudsz nyilvános szobát nyitni. -uiscale.reset = Az UI mérete megváltozott.\nAz "OK" gombbal megerősítheted ezt a méretet.\n[scarlet]Visszavonás és kilépés [accent] {0}[] másodperc múlva... -uiscale.cancel = Mégsem és kilépés +uiscale.reset = A felület mérete megváltozott.\nAz „OK” gombbal megerősítheted ezt a méretet.\n[scarlet]Visszavonás és kilépés [accent] {0}[] másodperc múlva... +uiscale.cancel = Mégse és kilépés setting.bloom.name = Bloom -keybind.title = Gyorsbillentyűk +keybind.title = Billentyűk átállítása keybinds.mobile = [scarlet]A legtöbb billentyűfunkció mobilon nem működik. Csak a mozgás támogatott. category.general.name = Általános category.view.name = Nézet -category.command.name = Egység parancs +category.command.name = Egységparancs category.multiplayer.name = Többjátékos -category.blocks.name = Blokk választás +category.blocks.name = Blokkválasztás placement.blockselectkeys = \n[lightgray]Kulcs: [{0}, keybind.respawn.name = Újraéledés keybind.control.name = Egység irányítása keybind.clear_building.name = Épület törlése keybind.press = Nyomj meg egy gombot... -keybind.press.axis = Nyomj meg egy kart, vagy gombot... -keybind.screenshot.name = Pálya képernyőkép +keybind.press.axis = Nyomj meg egy kart vagy gombot... +keybind.screenshot.name = Pálya képernyőképe keybind.toggle_power_lines.name = Villanyvezetékek be/ki -keybind.toggle_block_status.name = Épület állapot be/ki +keybind.toggle_block_status.name = Blokkállapotok be/ki keybind.move_x.name = Mozgás vízszintesen keybind.move_y.name = Mozgás függőlegesen keybind.mouse_move.name = Egér követése keybind.pan.name = Felderítés keybind.boost.name = Erősítés keybind.command_mode.name = Parancs mód -keybind.command_queue.name = Egység parancsok sorba állítása -keybind.create_control_group.name = Vezérlő csoport készítése +keybind.command_queue.name = Egységparancsok sorba állítása +keybind.create_control_group.name = Vezérlőcsoport készítése keybind.cancel_orders.name = Parancsok visszavonása keybind.unit_stance_shoot.name = Egység viselkedése: lövés @@ -1206,17 +1251,18 @@ keybind.unit_stance_pursue_target.name = Egység viselkedése: célpont követé keybind.unit_stance_patrol.name = Egység viselkedése: járőrözés keybind.unit_stance_ram.name = Egység viselkedése: ütközés -keybind.unit_command_move = 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 a rakományszállítóba -keybind.unit_command_load_blocks = Egység parancs: blokkok berakodása a rakományszállítóba -keybind.unit_command_unload_payload = Egység parancs: kirakodás a rakományszállítóból +keybind.unit_command_move.name = Egységparancs: mozgás +keybind.unit_command_repair.name = Egységparancs: javítás +keybind.unit_command_rebuild.name = Egységparancs: újraépítés +keybind.unit_command_assist.name = Egységparancs: támogatás +keybind.unit_command_mine.name = Egységparancs: bányászás +keybind.unit_command_boost.name = Egységparancs: erősítés +keybind.unit_command_load_units.name = Egységparancs: egységek berakodása +keybind.unit_command_load_blocks.name = Egységparancs: blokkok berakodása +keybind.unit_command_unload_payload.name = Egységparancs: kirakodás +keybind.unit_command_enter_payload.name = Egységparancs: berakodás -keybind.rebuild_select.name = Régió újjáépítése +keybind.rebuild_select.name = Régió újraé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 @@ -1227,24 +1273,24 @@ keybind.block_select_left.name = Blokk váltás balra keybind.block_select_right.name = Blokk váltás jobbra keybind.block_select_up.name = Blokk váltás fel keybind.block_select_down.name = Blokk váltás le -keybind.block_select_01.name = 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.block_select_01.name = 1. kategória/blokk választása +keybind.block_select_02.name = 2. kategória/blokk választása +keybind.block_select_03.name = 3. kategória/blokk választása +keybind.block_select_04.name = 4. kategória/blokk választása +keybind.block_select_05.name = 5. kategória/blokk választása +keybind.block_select_06.name = 6. kategória/blokk választása +keybind.block_select_07.name = 7. kategória/blokk választása +keybind.block_select_08.name = 8. kategória/blokk választása +keybind.block_select_09.name = 9. kategória/blokk választása +keybind.block_select_10.name = 10. kategória/blokk választása keybind.fullscreen.name = Teljes képernyő be/ki -keybind.select.name = Kiválasztás/Lövés +keybind.select.name = Kiválasztás/lövés keybind.diagonal_placement.name = Átlós elhelyezés -keybind.pick.name = Blokk másolása +keybind.pick.name = Blokk kiválasztása keybind.break_block.name = Blokk törlése -keybind.select_all_units.name = Minden egység kijelölése -keybind.select_all_unit_factories.name = Minden egység gyár kijelölése -keybind.deselect.name = Blokk választás törlése +keybind.select_all_units.name = Összes egység kijelölése +keybind.select_all_unit_factories.name = Összes egységgyár kijelölése +keybind.deselect.name = Blokkkijelölés törlése keybind.pickupCargo.name = Rakomány felvétele keybind.dropCargo.name = Rakomány lerakása keybind.shoot.name = Lövés @@ -1253,79 +1299,83 @@ keybind.menu.name = Menü keybind.pause.name = Szünet keybind.pause_building.name = Építés szüneteltetése/folytatása keybind.minimap.name = Minitérkép -keybind.planet_map.name = Bolygó térkép +keybind.planet_map.name = Bolygótérkép keybind.research.name = Fejlesztés keybind.block_info.name = Blokk infó keybind.chat.name = Csevegés keybind.player_list.name = Játékosok listája keybind.console.name = Konzol keybind.rotate.name = Forgatás -keybind.rotateplaced.name = Meglévő forgatása (tartsd nyomva) -keybind.toggle_menus.name = Menük váltása +keybind.rotateplaced.name = Meglévő forgatása (nyomva tartva) +keybind.toggle_menus.name = Menük be/ki keybind.chat_history_prev.name = Csevegés görgetése felfelé keybind.chat_history_next.name = Csevegés görgetése lefelé keybind.chat_scroll.name = Csevegés görgetése -keybind.chat_mode.name = Csevegés mód megváltoztatása +keybind.chat_mode.name = Csevegési mód megváltoztatása keybind.drop_unit.name = Egység eldobása -keybind.zoom_minimap.name = Zoom a minitérképen +keybind.zoom_minimap.name = Nagyítás a minitérképen mode.help.title = Játékmódok leírása -mode.survival.name = Túlélő -mode.survival.description = A normál mód. Korlátozott nyersanyag és automatikusan érkező hullámok.\n[gray]Szükséges hozzá egy ellenséges kezdőpont a pályán. +mode.survival.name = Túlélés +mode.survival.description = A normál mód. Korlátozott nyersanyagok, és automatikusan érkező hullámok.\n[gray]Ellenséges kezdőpont szükséges hozzá a pályán. mode.sandbox.name = Homokozó mode.sandbox.description = Végtelen nyersanyagforrás, nincs időzítés a hullámokhoz. mode.editor.name = Szerkesztő mode.pvp.name = PvP -mode.pvp.description = Harcolj más játékosok ellen.\n[gray]Szükséges hozzá legalább két különböző színű Támaszpont a pályán. +mode.pvp.description = Harcolj más játékosok ellen.\n[gray]Legalább két különböző színű támaszpont szükséges hozzá a pályán. mode.attack.name = Támadás -mode.attack.description = Pusztítsd el az ellenség bázisát. \n[gray]Szükséges hozzá egy piros Támaszpont a pályán. +mode.attack.description = Pusztítsd el az ellenség bázisát. \n[gray]Piros támaszpont szükséges hozzá a pályán. mode.custom = Egyéni szabályok rules.invaliddata = Érvénytelen adatok vannak a vágólapon. -rules.hidebannedblocks = Tiltott épületek elrejtése +rules.hidebannedblocks = Tiltott blokkok elrejtése rules.infiniteresources = Végtelen nyersanyagforrás -rules.onlydepositcore = Csak Támaszpontok elhelyezése engedélyezett +rules.onlydepositcore = Csak a támaszpontok elhelyezése engedélyezett rules.derelictrepair = Az elhagyatott épületek javításának engedélyezése -rules.reactorexplosions = Reaktor robbanás -rules.coreincinerates = Többlet nyersanyagok megsemmisítése a Támaszpontban +rules.reactorexplosions = Reaktorrobbanások +rules.coreincinerates = Többletnyersanyagok megsemmisítése a támaszpontban rules.disableworldprocessors = Világprocesszorok letiltása rules.schematic = Vázlatok engedélyezése -rules.wavetimer = Hullám időzítő -rules.wavesending = Hullám küldése +rules.wavetimer = Hullámok időzítése +rules.wavesending = Hullámok küldése +rules.allowedit = Szabályok szerkesztésének engedélyezése +rules.allowedit.info = Ha engedélyezve van, a játékos szerkesztheti a szabályokat a játékban a Szünet menü bal alsó sarkában található gomb segítségével. rules.waves = Hullámok -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.airUseSpawns = A légi egységek használjanak kezdőpontokat +rules.attack = Támadási mód +rules.buildai = Bázisépítő MI +rules.buildaitier = Építő MI szintje +rules.rtsai = RTS MI [red](WIP) +rules.rtsminsquadsize = Minimális osztagméret +rules.rtsmaxsquadsize = Maximális osztagméret +rules.rtsminattackweight = Minimális támadási súly +rules.cleanupdeadteams = Legyőzött csapatok épületeinek törlése (PvP) rules.corecapture = Támaszpont elfoglalása megsemmisítéskor -rules.polygoncoreprotection = Poligonális Támaszpont védelem +rules.polygoncoreprotection = Poligonális támaszpontvé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 Támaszpontok 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 Támaszpont körüli tiltott zóna sugara:[lightgray] (csempe) +rules.enemyCheat = Végtelen ellenséges csapaterőforrások +rules.blockhealthmultiplier = Épület életpontszorzója +rules.blockdamagemultiplier = Épület sebzésszorzója +rules.unitbuildspeedmultiplier = Egységgyártás sebességének szorzója +rules.unitcostmultiplier = Egység költségszorzója +rules.unithealthmultiplier = Egység életpontszorzója +rules.unitdamagemultiplier = Egység sebzésszorzója +rules.unitcrashdamagemultiplier = Egység ütközési sebzésszorzója +rules.solarmultiplier = Napenergia szorzója +rules.unitcapvariable = A támaszpontok befolyásolják a gyártható egységek darabszámát +rules.unitpayloadsexplode = A szállított rakományok az egységgel együtt felrobbannak +rules.unitcap = Alap egységdarabszám +rules.limitarea = Játékterület korlátozása +rules.enemycorebuildradius = Ellenséges támaszpont körüli tiltott zóna sugara:[lightgray] (csempe) rules.wavespacing = A hullámok közötti szünetek ideje:[lightgray] (mp) rules.initialwavespacing = Az első hullám előtti szünet ideje:[lightgray] (mp) -rules.buildcostmultiplier = Építési költség szorzó -rules.buildspeedmultiplier = Építési sebesség szorzó -rules.deconstructrefundmultiplier = Bontási visszatérítés szorzó +rules.buildcostmultiplier = Építési költség szorzója +rules.buildspeedmultiplier = Építési sebesség szorzója +rules.deconstructrefundmultiplier = Bontási visszatérítés szorzója rules.waitForWaveToEnd = Az ellenség kivárja a korábbi hullám végét -rules.wavelimit = Az utolsó hullám után legyen vége a játéknak +rules.wavelimit = A pálya az utolsó hullám után ér véget rules.dropzoneradius = A ledobási zóna sugara:[lightgray] (csempe) rules.unitammo = Az egységeknek lőszer kell [red](törölhető) -rules.enemyteam = Elenséges csapat +rules.enemyteam = Ellenséges csapat rules.playerteam = Saját csapat rules.title.waves = Hullámok rules.title.resourcesbuilding = Nyersanyagforrások és épületek @@ -1339,19 +1389,22 @@ rules.lighting = Világítás rules.fog = Köd rules.fire = Tűz rules.anyenv = -rules.explosions = Épület/egység robbanás sebzés +rules.explosions = Épület/egység robbanási sebzése rules.ambientlight = Háttérvilágítás rules.weather = Időjárás rules.weather.frequency = Gyakoriság: rules.weather.always = Mindig rules.weather.duration = Időtartam: +rules.placerangecheck.info = Megakadályozza, hogy a játékosok lövegtornyokat helyezzenek el az ellenséges épületek közelében. Amikor megpróbálnak egy lövegtornyot elhelyezni, az építési távolság megnő, így a lövegtorony nem fogja elérni az ellenséget. +rules.onlydepositcore.info = Megakadályozza, hogy az egységek nyersanyagokat helyezzenek el a támaszponton kívül más épületekbe. + content.item.name = Nyersanyagok content.liquid.name = Folyadékok content.unit.name = Egységek content.block.name = Blokkok content.status.name = Állapothatások -content.sector.name = Szektor +content.sector.name = Szektorok content.team.name = Csapatok wallore = (Fal) @@ -1366,7 +1419,7 @@ item.silicon.name = Szilícium item.plastanium.name = Műanyag item.phase-fabric.name = Tóritkvarc item.surge-alloy.name = Elektrometál -item.spore-pod.name = Spóra Kapszula +item.spore-pod.name = Spórakapszula item.sand.name = Homok item.blast-compound.name = Robbanóelegy item.pyratite.name = Piratit @@ -1377,19 +1430,19 @@ item.beryllium.name = Berillium item.tungsten.name = Volfrám item.oxide.name = Oxid item.carbide.name = Karbid -item.dormant-cyst.name = Nyugvó-Ciszta +item.dormant-cyst.name = Nyugvó ciszta liquid.water.name = Víz liquid.slag.name = Salak liquid.oil.name = Olaj liquid.cryofluid.name = Hűtőfolyadék liquid.neoplasm.name = Neoplazma -liquid.arkycite.name = Arkycit +liquid.arkycite.name = Arkicit liquid.gallium.name = Gallium liquid.ozone.name = Ózon liquid.hydrogen.name = Hidrogén liquid.nitrogen.name = Nitrogén -liquid.cyanogen.name = Cianogén +liquid.cyanogen.name = Dicián unit.dagger.name = Dagger unit.mace.name = Mace @@ -1449,159 +1502,159 @@ unit.evoke.name = Evoke unit.incite.name = Incite unit.emanate.name = Emanate unit.manifold.name = Manifold -unit.assembly-drone.name = Assembly Drone +unit.assembly-drone.name = Összeszerelő drón unit.latum.name = Latum unit.renale.name = Renale block.parallax.name = Parallax block.cliff.name = Szirt -block.sand-boulder.name = Homok Szikla -block.basalt-boulder.name = Bazalt Szikla +block.sand-boulder.name = Homokszikla +block.basalt-boulder.name = Bazaltszikla block.grass.name = Fű block.molten-slag.name = Salak -block.pooled-cryofluid.name = Hűtőfolyadék Medence +block.pooled-cryofluid.name = Hűtőfolyadék block.space.name = Űr block.salt.name = Só -block.salt-wall.name = Só Fal +block.salt-wall.name = Sófal block.pebbles.name = Kavicsok block.tendrils.name = Indák -block.sand-wall.name = Homok Fal -block.spore-pine.name = Spóra Fenyő -block.spore-wall.name = Spóra Fal +block.sand-wall.name = Homokfal +block.spore-pine.name = Spórafenyő +block.spore-wall.name = Spórafal block.boulder.name = Szikla -block.snow-boulder.name = Hó Szikla -block.snow-pine.name = Havas Fenyő +block.snow-boulder.name = Havas szikla +block.snow-pine.name = Havas fenyő block.shale.name = Pala -block.shale-boulder.name = Pala Szikla +block.shale-boulder.name = Palaszikla block.moss.name = Moha block.shrubs.name = Cserjék -block.spore-moss.name = Spóra Moha -block.shale-wall.name = Pala Fal -block.scrap-wall.name = Törmelék Fal -block.scrap-wall-large.name = Nagy Törmelék Fal -block.scrap-wall-huge.name = Hatalmas Törmelék Fal -block.scrap-wall-gigantic.name = Gigantikus Törmelék Fal +block.spore-moss.name = Spóramoha +block.shale-wall.name = Palafal +block.scrap-wall.name = Törmelékfal +block.scrap-wall-large.name = Nagy törmelékfal +block.scrap-wall-huge.name = Hatalmas törmelékfal +block.scrap-wall-gigantic.name = Gigantikus törmelékfal block.thruster.name = Hajtómű block.kiln.name = Kemence -block.graphite-press.name = Grafit Préselő -block.multi-press.name = Grafit Sajtoló -block.constructing = {0} [lightgray](Építés) +block.graphite-press.name = Grafitprés +block.multi-press.name = Grafitsajtoló +block.constructing = {0} [lightgray](építés alatt) block.spawn.name = Ellenséges kezdőpont -block.core-shard.name = Szilánk -block.core-foundation.name = Alapítvány -block.core-nucleus.name = Magnum -block.deep-water.name = Mély Víz +block.core-shard.name = Támaszpont: Szilánk +block.core-foundation.name = Támaszpont: Alapítvány +block.core-nucleus.name = Támaszpont: Atommag +block.deep-water.name = Mély víz block.shallow-water.name = Víz -block.tainted-water.name = Szennyezett Víz -block.deep-tainted-water.name = Mély Szennyezett Víz -block.darksand-tainted-water.name = Sötét Homokkal Szennyezett Víz +block.tainted-water.name = Szennyezett víz +block.deep-tainted-water.name = Mély szennyezett víz +block.darksand-tainted-water.name = Sötét homokkal szennyezett víz block.tar.name = Kátrány block.stone.name = Kő block.sand-floor.name = Homok -block.darksand.name = Sötét Homok +block.darksand.name = Sötét homok block.ice.name = Jég block.snow.name = Hó block.crater-stone.name = Kráterek block.sand-water.name = Homokvíz -block.darksand-water.name = Sötét Homokvíz +block.darksand-water.name = Sötét homokvíz block.char.name = Faszén block.dacite.name = Dácit block.rhyolite.name = Riolit -block.dacite-wall.name = Dácit Fal -block.dacite-boulder.name = Dácit Szikla +block.dacite-wall.name = Dácitfal +block.dacite-boulder.name = Dácitszikla block.ice-snow.name = Jéghó -block.stone-wall.name = Kő Fal -block.ice-wall.name = Jég Fal -block.snow-wall.name = Hó Fal -block.dune-wall.name = Dűne Fal +block.stone-wall.name = Kőfal +block.ice-wall.name = Jégfal +block.snow-wall.name = Hófal +block.dune-wall.name = Dűnefal block.pine.name = Fenyő block.dirt.name = Sár -block.dirt-wall.name = Sár Fal +block.dirt-wall.name = Sárfal block.mud.name = Iszap -block.white-tree-dead.name = Kiszáradt Fehér Fa -block.white-tree.name = Fehér Fa -block.spore-cluster.name = Spóra Fürt -block.metal-floor.name = Fém Padló 1 -block.metal-floor-2.name = Fém Padló 2 -block.metal-floor-3.name = Fém Padló 3 -block.metal-floor-4.name = Fém Padló 4 -block.metal-floor-5.name = Fém Padló 5 -block.metal-floor-damaged.name = Sérült Fém Padló -block.dark-panel-1.name = Sötét Panel 1 -block.dark-panel-2.name = Sötét Panel 2 -block.dark-panel-3.name = Sötét Panel 3 -block.dark-panel-4.name = Sötét Panel 4 -block.dark-panel-5.name = Sötét Panel 5 -block.dark-panel-6.name = Sötét Panel 6 -block.dark-metal.name = Sötét Fém +block.white-tree-dead.name = Kiszáradt fehér fa +block.white-tree.name = Fehér fa +block.spore-cluster.name = Spórafürt +block.metal-floor.name = 1. fémpadló +block.metal-floor-2.name = 2. fémpadló +block.metal-floor-3.name = 3. fémpadló +block.metal-floor-4.name = 4. fémpadló +block.metal-floor-5.name = 5. fémpadló +block.metal-floor-damaged.name = Sérült fémpadló +block.dark-panel-1.name = 1. sötét panel +block.dark-panel-2.name = 2. sötét panel +block.dark-panel-3.name = 3. sötét panel +block.dark-panel-4.name = 4. sötét panel +block.dark-panel-5.name = 5. sötét panel +block.dark-panel-6.name = 6. sötét panel +block.dark-metal.name = Sötét fém block.basalt.name = Bazalt -block.hotrock.name = Forró Kőzet -block.magmarock.name = Magmás Kőzet -block.copper-wall.name = Réz Fal -block.copper-wall-large.name = Nagy Réz Fal -block.titanium-wall.name = Titán Fal -block.titanium-wall-large.name = Nagy Titán Fal -block.plastanium-wall.name = Műanyag Fal -block.plastanium-wall-large.name = Nagy Műanyag Fal -block.phase-wall.name = Tóritkvarc Fal -block.phase-wall-large.name = Nagy Tóritkvarc Fal -block.thorium-wall.name = Tórium Fal -block.thorium-wall-large.name = Nagy Tórium Fal +block.hotrock.name = Forró kőzet +block.magmarock.name = Magmás kőzet +block.copper-wall.name = Rézfal +block.copper-wall-large.name = Nagy rézfal +block.titanium-wall.name = Titánfal +block.titanium-wall-large.name = Nagy titánfal +block.plastanium-wall.name = Műanyagfal +block.plastanium-wall-large.name = Nagy műanyagfal +block.phase-wall.name = Tóritkvarcfal +block.phase-wall-large.name = Nagy tóritkvarcfal +block.thorium-wall.name = Tóriumfal +block.thorium-wall-large.name = Nagy tóriumfal block.door.name = Ajtó -block.door-large.name = Nagy Ajtó +block.door-large.name = Nagy ajtó block.duo.name = Duo block.scorch.name = Scorch block.scatter.name = Scatter block.hail.name = Hail block.lancer.name = Lancer block.conveyor.name = Szállítószalag -block.titanium-conveyor.name = Titán Szállítószalag -block.plastanium-conveyor.name = Műanyag Szállítószalag -block.armored-conveyor.name = Páncélozott Szállítószalag -block.junction.name = Elágazás +block.titanium-conveyor.name = Titán szállítószalag +block.plastanium-conveyor.name = Műanyag szállítószalag +block.armored-conveyor.name = Páncélozott szállítószalag +block.junction.name = Átkötés block.router.name = Elosztó -block.distributor.name = Terjesztő +block.distributor.name = Szétosztó block.sorter.name = Válogató -block.inverted-sorter.name = Inverz Válogató +block.inverted-sorter.name = Fordított válogató block.message.name = Üzenet -block.reinforced-message.name = Megerősített Üzenet -block.world-message.name = Világ Üzenet -block.world-switch.name = Világ Kapcsoló +block.reinforced-message.name = Megerősített üzenet +block.world-message.name = Világüzenet +block.world-switch.name = Világkapcsoló block.illuminator.name = Világítótest -block.overflow-gate.name = Alul-folyó Kapu -block.underflow-gate.name = Túlfolyó Kapu -block.silicon-smelter.name = Szilícium Kohó +block.overflow-gate.name = Túlcsorduló kapu +block.underflow-gate.name = Alulcsorduló kapu +block.silicon-smelter.name = Szilícium kohó block.phase-weaver.name = Tóritkvarcképző block.pulverizer.name = Porlasztó -block.cryofluid-mixer.name = Hűtőfolyadék Keverő +block.cryofluid-mixer.name = Hűtőfolyadék-keverő block.melter.name = Olvasztó block.incinerator.name = Törmelékégető -block.spore-press.name = Spóra Sajtoló +block.spore-press.name = Spóraprés block.separator.name = Leválasztó -block.coal-centrifuge.name = Szén Centrifuga +block.coal-centrifuge.name = Széncentrifuga block.power-node.name = Villanyoszlop -block.power-node-large.name = Nagy Villanyoszlop +block.power-node-large.name = Nagy villanyoszlop block.surge-tower.name = Villanytorony -block.diode.name = Akkumulátor Dióda +block.diode.name = Akkumulátordióda block.battery.name = Akkumulátor -block.battery-large.name = Nagy Akkumulátor -block.combustion-generator.name = Belső-égetésű Erőmű +block.battery-large.name = Nagy akkumulátor +block.combustion-generator.name = Égetőerőmű block.steam-generator.name = Gőzerőmű -block.differential-generator.name = Differenciál Erőmű -block.impact-reactor.name = Ütközéses Erőmű -block.mechanical-drill.name = Mechanikus Fúró -block.pneumatic-drill.name = Pneumatikus Fúró -block.laser-drill.name = Lézer Vágó -block.water-extractor.name = Vízkiválasztó +block.differential-generator.name = Differenciál-erőmű +block.impact-reactor.name = Ütközéses erőmű +block.mechanical-drill.name = Mechanikus fúró +block.pneumatic-drill.name = Pneumatikus fúró +block.laser-drill.name = Lézerfúró +block.water-extractor.name = Vízkinyerő block.cultivator.name = Betakarító block.conduit.name = Csővezeték -block.mechanical-pump.name = Mechanikus Szivattyú -block.item-source.name = Nyersanyag Forrás -block.item-void.name = Nyersanyag Hiány -block.liquid-source.name = Folyadék Forrás -block.liquid-void.name = Folyadék Hiány -block.power-void.name = Áram Hiány -block.power-source.name = Áram Forrás +block.mechanical-pump.name = Mechanikus szivattyú +block.item-source.name = Nyersanyagforrás +block.item-void.name = Nyersanyagnyelő +block.liquid-source.name = Folyadékforrás +block.liquid-void.name = Folyadéknyelő +block.power-void.name = Áramnyelő +block.power-source.name = Áramforrás block.unloader.name = Kirakodó block.vault.name = Raktár block.wave.name = Wave @@ -1609,199 +1662,199 @@ block.tsunami.name = Tsunami block.swarmer.name = Swarmer block.salvo.name = Salvo block.ripple.name = Ripple -block.phase-conveyor.name = Tóritkvarc Szállítószalag 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.phase-conveyor.name = Tóritkvarc szállítószalag +block.bridge-conveyor.name = Szállítószalag-híd +block.plastanium-compressor.name = Műanyagsűrítő +block.pyratite-mixer.name = Piratitkeverő +block.blast-mixer.name = Robbanóelegy-keverő block.solar-panel.name = Napelem -block.solar-panel-large.name = Nagy Napelem +block.solar-panel-large.name = Nagy napelem block.oil-extractor.name = Olajleválasztó -block.repair-point.name = Javítási Pont -block.repair-turret.name = Javító Löveg -block.pulse-conduit.name = Impulzus Csővezeték -block.plated-conduit.name = Lemezelt Csővezeték -block.phase-conduit.name = Tóritkvarc Csővezeték 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.repair-point.name = Javítási pont +block.repair-turret.name = Javítótorony +block.pulse-conduit.name = Impulzus-csővezeték +block.plated-conduit.name = Lemezelt csővezeték +block.phase-conduit.name = Tóritkvarc-csővezeték +block.liquid-router.name = Folyadékelosztó +block.liquid-tank.name = Folyadéktartály +block.liquid-container.name = Folyadéktároló +block.liquid-junction.name = Csővezeték-átkötés +block.bridge-conduit.name = Csővezetékhíd +block.rotary-pump.name = Fogaskerekes szivattyú +block.thorium-reactor.name = Tóriumerőmű block.mass-driver.name = Tömegmozgató -block.blast-drill.name = Légrobbanásos Fúró -block.impulse-pump.name = Impulzus Szivattyú +block.blast-drill.name = Légrobbanásos fúró +block.impulse-pump.name = Impulzusszivattyú block.thermal-generator.name = Hőerőmű -block.surge-smelter.name = Elektrometál Olvasztó +block.surge-smelter.name = Elektrometál-olvasztó block.mender.name = Foltozó -block.mend-projector.name = Foltozó Projektor -block.surge-wall.name = Elektrometál Fal -block.surge-wall-large.name = Nagy Elektrometál Fal +block.mend-projector.name = Foltozó projektor +block.surge-wall.name = Elektrometálfal +block.surge-wall-large.name = Nagy elektrometálfal block.cyclone.name = Cyclone block.fuse.name = Fuse -block.shock-mine.name = Sokkoló Taposóakna -block.overdrive-projector.name = Túlhajtó Projektor -block.force-projector.name = Erő Projektor +block.shock-mine.name = Sokkoló taposóakna +block.overdrive-projector.name = Túlhajtó kivetítő +block.force-projector.name = Erőkivetítő block.arc.name = Arc -block.rtg-generator.name = RTG Erőmű +block.rtg-generator.name = RTG erőmű block.spectre.name = Spectre block.meltdown.name = Meltdown block.foreshadow.name = Foreshadow block.container.name = Konténer -block.launch-pad.name = Kilövő Állás +block.launch-pad.name = Kilövőállás block.segment.name = Segment -block.ground-factory.name = Földi Egység Gyár -block.air-factory.name = Repülőgép Gyár -block.naval-factory.name = Hadihajó Gyár -block.additive-reconstructor.name = Additív Újratervező -block.multiplicative-reconstructor.name = Multiplikatív Újratervező -block.exponential-reconstructor.name = Exponenciális Újratervező -block.tetrative-reconstructor.name = Tetratív Újratervező -block.payload-conveyor.name = Rakomány Szállítószalag -block.payload-router.name = Rakomány Elosztó +block.ground-factory.name = Földiegységgyár +block.air-factory.name = Repülőgépgyár +block.naval-factory.name = Hadihajógyár +block.additive-reconstructor.name = Additív újratervező +block.multiplicative-reconstructor.name = Multiplikatív újratervező +block.exponential-reconstructor.name = Exponenciális újratervező +block.tetrative-reconstructor.name = Tetratív újratervező +block.payload-conveyor.name = Rakományszállító-szalag +block.payload-router.name = Rakomány-elosztó block.duct.name = Szállítószalag -block.duct-router.name = Szállítószalag Elosztó -block.duct-bridge.name = Szállítószalag Híd -block.large-payload-mass-driver.name = Nagy Rakomány Tömegmozgató -block.payload-void.name = Rakomány Megsemmisítő -block.payload-source.name = Rakomány Készítő +block.duct-router.name = Szállítószalag-elosztó +block.duct-bridge.name = Szállítószalaghíd +block.large-payload-mass-driver.name = Nagy rakomány-tömegmozgató +block.payload-void.name = Rakománynyelő +block.payload-source.name = Rakományforrás block.disassembler.name = Szé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.silicon-crucible.name = Szilíciumolvasztó +block.overdrive-dome.name = Túlhajtó búra +block.interplanetary-accelerator.name = Bolygóközi gyorsító block.constructor.name = Építő -block.constructor.description = Akár 2x2 csempe méretű szerkezeteket is gyárt. -block.large-constructor.name = Nagy Építő -block.large-constructor.description = Akár 4x4 csempe méretű szerkezeteket is gyárt. +block.constructor.description = Legfeljebb 2×2-es csempeméretű épületeket gyárt. +block.large-constructor.name = Nagy építő +block.large-constructor.description = Akár 4×4-es csempeméretű épületeket is gyárt. block.deconstructor.name = Lebontó -block.deconstructor.description = Lebontja a szerkezeteket és az egységeket. Visszaadja az építési költség 100%-át. -block.payload-loader.name = Rakomány Csomagoló -block.payload-loader.description = A folyadékokat és a nyersanyagokat csomagolja nagyobb blokkokba. -block.payload-unloader.name = Rakomány Kicsomagoló -block.payload-unloader.description = A folyadékokból és nyersanyagokból álló blokkokat csomagolja ki. -block.heat-source.name = Hő Forrás -block.heat-source.description = Egy 1x1-es blokk, amely gyakorlatilag végtelen Hőt ad. +block.deconstructor.description = Lebontja az épületeket és az egységeket. Visszaadja az építési költség 100%-át. +block.payload-loader.name = Rakománycsomagoló +block.payload-loader.description = A folyadékokat és a nyersanyagokat blokkokba csomagolja. +block.payload-unloader.name = Rakománykibontó +block.payload-unloader.description = Kibontja a folyadékokból és nyersanyagokból álló blokkokat. +block.heat-source.name = Hőforrás +block.heat-source.description = Nagy hőmennyiséget bocsát ki. Csak homokozó módban. #Erekir block.empty.name = Üres -block.rhyolite-crater.name = Riolit Kráter -block.rough-rhyolite.name = Durva Riolit +block.rhyolite-crater.name = Riolit kráter +block.rough-rhyolite.name = Durva riolit block.regolith.name = Regolit -block.yellow-stone.name = Sárga Kő -block.carbon-stone.name = Szén Kő -block.ferric-stone.name = Vasas Kő -block.ferric-craters.name = Vasas Kráterek -block.beryllic-stone.name = Berilliumos Kő -block.crystalline-stone.name = Kristályos Kő -block.crystal-floor.name = Kristály Talaj -block.yellow-stone-plates.name = Sárga Kőlemezek -block.red-stone.name = Vörös Kő -block.dense-red-stone.name = Sűrű Vörös Kő -block.red-ice.name = Vörös Jég -block.arkycite-floor.name = 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 = Támaszpont Zóna -block.regolith-wall.name = Regolit Fal -block.yellow-stone-wall.name = Sárga Kő Fal -block.rhyolite-wall.name = Riolit Fal -block.carbon-wall.name = Szén Fal -block.ferric-stone-wall.name = Vasas-Kő Fal -block.beryllic-stone-wall.name = Berilliumos-Kő Fal -block.arkyic-wall.name = Arkycit Fal -block.crystalline-stone-wall.name = Kristályos-Kő Fal -block.red-ice-wall.name = Vörös-Jég Fal -block.red-stone-wall.name = Vörös-Kő Fal -block.red-diamond-wall.name = Vörös Gyémánt Fal -block.redweed.name = Vörös Fű -block.pur-bush.name = Lila Bokor -block.yellowcoral.name = Sárga Korall -block.carbon-boulder.name = Szén Szikla -block.ferric-boulder.name = Vasas Szikla -block.beryllic-boulder.name = Berilliumos Szikla -block.yellow-stone-boulder.name = Sárga Kő Szikla -block.arkyic-boulder.name = Arkycites Szikla -block.crystal-cluster.name = Kristály Fürt -block.vibrant-crystal-cluster.name = Vibráló Kristály Fürt -block.crystal-blocks.name = Kristály Blokkok -block.crystal-orbs.name = Kristály Gömbök -block.crystalline-boulder.name = Kristályos Szikla -block.red-ice-boulder.name = Vörös Jég Szikla -block.rhyolite-boulder.name = Riolit Szikla -block.red-stone-boulder.name = Vörös Kő Szikla -block.graphitic-wall.name = Grafit Fal -block.silicon-arc-furnace.name = Szilícium Ívkemence +block.yellow-stone.name = Sárga kő +block.carbon-stone.name = Szénkő +block.ferric-stone.name = Vasas kő +block.ferric-craters.name = Vasas kráterek +block.beryllic-stone.name = Berilliumos kő +block.crystalline-stone.name = Kristályos kő +block.crystal-floor.name = Kristálytalaj +block.yellow-stone-plates.name = Sárga kőlemezek +block.red-stone.name = Vörös kő +block.dense-red-stone.name = Sűrű vörös kő +block.red-ice.name = Vörös jég +block.arkycite-floor.name = Arkicit +block.arkyic-stone.name = Arkicites kő +block.rhyolite-vent.name = Riolitkürtő +block.carbon-vent.name = Szénkürtő +block.arkyic-vent.name = Arkicites kürtő +block.yellow-stone-vent.name = Sárgakő-kürtő +block.red-stone-vent.name = Vöröskő-kürtő +block.crystalline-vent.name = Kristályos kürtő +block.redmat.name = Vörös padló +block.bluemat.name = Kék padló +block.core-zone.name = Támaszpontzóna +block.regolith-wall.name = Regolitfal +block.yellow-stone-wall.name = Sárgakő-fal +block.rhyolite-wall.name = Riolit fal +block.carbon-wall.name = Szénfal +block.ferric-stone-wall.name = Vasaskő-fal +block.beryllic-stone-wall.name = Berilliumoskő-fal +block.arkyic-wall.name = Arkicites fal +block.crystalline-stone-wall.name = Kristályos kőFal +block.red-ice-wall.name = Vörösjég-fal +block.red-stone-wall.name = Vöröskő-fal +block.red-diamond-wall.name = Vörösgyémánt-fal +block.redweed.name = Vörös fű +block.pur-bush.name = Lila bokor +block.yellowcoral.name = Sárga korall +block.carbon-boulder.name = Szén szikla +block.ferric-boulder.name = Vasas szikla +block.beryllic-boulder.name = Berilliumos szikla +block.yellow-stone-boulder.name = Sárgakő-szikla +block.arkyic-boulder.name = Arkicites szikla +block.crystal-cluster.name = Kristályfürt +block.vibrant-crystal-cluster.name = Vibráló kristályfürt +block.crystal-blocks.name = Kristályblokkok +block.crystal-orbs.name = Kristálygömbök +block.crystalline-boulder.name = Kristályos szikla +block.red-ice-boulder.name = Vörösjég-szikla +block.rhyolite-boulder.name = Riolit szikla +block.red-stone-boulder.name = Vöröskő-szikla +block.graphitic-wall.name = Grafit fal +block.silicon-arc-furnace.name = Szilícium ívkemence block.electrolyzer.name = Elektrolizátor -block.atmospheric-concentrator.name = Atmoszferikus Sűrítő -block.oxidation-chamber.name = Oxidációs Kamra -block.electric-heater.name = Elektromos Fűtőtest -block.slag-heater.name = Salakos Fűtőtest -block.phase-heater.name = Tóritkvarcos Fűtőtest -block.heat-redirector.name = Hő Elvezető -block.heat-router.name = Hő Elosztó -block.slag-incinerator.name = Salakégető Kemence -block.carbide-crucible.name = Karbid Olvasztó -block.slag-centrifuge.name = Salak Centrifuga -block.surge-crucible.name = Elektrometál Olvasztó -block.cyanogen-synthesizer.name = Cianogén Szintetizáló -block.phase-synthesizer.name = Tóritkvarc Szintetizáló +block.atmospheric-concentrator.name = Atmoszferikus sűrítő +block.oxidation-chamber.name = Oxidációs kamra +block.electric-heater.name = Elektromos fűtőtest +block.slag-heater.name = Salakos fűtőtest +block.phase-heater.name = Tóritkvarcos fűtőtest +block.heat-redirector.name = Hőelvezető +block.heat-router.name = Hőelosztó +block.slag-incinerator.name = Salakégető kemence +block.carbide-crucible.name = Karbidolvasztó +block.slag-centrifuge.name = Salakcentrifuga +block.surge-crucible.name = Elektrometál-olvasztó +block.cyanogen-synthesizer.name = Diciánszintetizáló +block.phase-synthesizer.name = Tóritkvarc-szintetizáló block.heat-reactor.name = Hőerőmű -block.beryllium-wall.name = Berillium Fal -block.beryllium-wall-large.name = Nagy Berillium Fal -block.tungsten-wall.name = Volfrám Fal -block.tungsten-wall-large.name = Nagy Volfrám Fal -block.blast-door.name = Robbanásbiztos Ajtó -block.carbide-wall.name = Karbid Fal -block.carbide-wall-large.name = Nagy Karbid Fal -block.reinforced-surge-wall.name = Megerősített Elektrometál Fal -block.reinforced-surge-wall-large.name = Nagy Megerősített Elektrometál Fal -block.shielded-wall.name = Álcázott Fal +block.beryllium-wall.name = Berilliumfal +block.beryllium-wall-large.name = Nagy berilliumfal +block.tungsten-wall.name = Volfrámfal +block.tungsten-wall-large.name = Nagy volfrámfal +block.blast-door.name = Robbanásbiztos ajtó +block.carbide-wall.name = Karbidfal +block.carbide-wall-large.name = Nagy karbidfal +block.reinforced-surge-wall.name = Megerősített elektrometálfal +block.reinforced-surge-wall-large.name = Nagy megerősített elektrometálfal +block.shielded-wall.name = Pajzzsal védett fal block.radar.name = Radar -block.build-tower.name = Építő Torony -block.regen-projector.name = Épület Regenerátor -block.shockwave-tower.name = Sokkhullám Torony -block.shield-projector.name = Pajzs Generátor -block.large-shield-projector.name = Nagy Pajzs Generátor -block.armored-duct.name = Páncélozott Szállítószalag -block.overflow-duct.name = Túlfolyó Szállítószalag -block.underflow-duct.name = 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.build-tower.name = Építőtorony +block.regen-projector.name = Regeneráló kivetítő +block.shockwave-tower.name = Sokkhullámtorony +block.shield-projector.name = Pajzskivetítő +block.large-shield-projector.name = Nagy pajzskivetítő +block.armored-duct.name = Páncélozott szállítószalag +block.overflow-duct.name = Túlcsorduló szállítószalag +block.underflow-duct.name = Alulcsorduló szállítószalag +block.duct-unloader.name = Szállítószalag-kirakodó +block.surge-conveyor.name = Elektrometál-szállítószalag +block.surge-router.name = Elektrometál-elosztó +block.unit-cargo-loader.name = Egységrakomány-berakodó +block.unit-cargo-unload-point.name = Egységrakomány-kirakodó pont +block.reinforced-pump.name = Megerősített szivattyú +block.reinforced-conduit.name = Megerősített csővezeték +block.reinforced-liquid-junction.name = Megerősített folyadékátkötés +block.reinforced-bridge-conduit.name = Megerősített csővezetékhíd +block.reinforced-liquid-router.name = Megerősített folyadékelosztó +block.reinforced-liquid-container.name = Megerősített folyadékkonténer +block.reinforced-liquid-tank.name = Megerősített folyadéktartály +block.beam-node.name = Sugárcsomópont +block.beam-tower.name = Sugártorony +block.beam-link.name = Sugárhálózat +block.turbine-condenser.name = Kondenzációs turbina +block.chemical-combustion-chamber.name = Kémiai égetőkamra +block.pyrolysis-generator.name = Pirolízis-erőmű block.vent-condenser.name = Vízleválasztó block.cliff-crusher.name = Sziklazúzó -block.plasma-bore.name = Plazma Vágó -block.large-plasma-bore.name = Nagy Plazma Vágó +block.plasma-bore.name = Plazmafúró +block.large-plasma-bore.name = Nagy plazmafúró block.impact-drill.name = Ütvefúró -block.eruption-drill.name = Erupciós Fúró +block.eruption-drill.name = Kitöréses fúró block.core-bastion.name = Bástya block.core-citadel.name = Citadella block.core-acropolis.name = Akropolisz -block.reinforced-container.name = Megerősített Konténer -block.reinforced-vault.name = Megerősített Tároló +block.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 @@ -1809,39 +1862,39 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.tank-refabricator.name = Tank Újratervező -block.mech-refabricator.name = Mech Újratervező -block.ship-refabricator.name = Repülőgép Újratervező -block.tank-assembler.name = Tank Összeszerelő -block.ship-assembler.name = Repülőgép Összeszerelő -block.mech-assembler.name = Mech Összeszerelő -block.reinforced-payload-conveyor.name = Megerősített Rakomány Szállítószalag -block.reinforced-payload-router.name = Megerősített Rakomány Elosztó -block.payload-mass-driver.name = Rakomány Tömegmozgató -block.small-deconstructor.name = Kis Lebontó -block.canvas.name = Vászon Kijelző -block.world-processor.name = Világ Processzor -block.world-cell.name = Világ Cella -block.tank-fabricator.name = Tank Gyár -block.mech-fabricator.name = Mech Gyár -block.ship-fabricator.name = Repülőgép Gyár -block.prime-refabricator.name = Elsődleges Újratervező -block.unit-repair-tower.name = Egység Javító Torony +block.tank-refabricator.name = Tankújratervező +block.mech-refabricator.name = Mechújratervező +block.ship-refabricator.name = Repülőgép-újratervező +block.tank-assembler.name = Tankösszeszerelő +block.ship-assembler.name = Repülőgép-összeszerelő +block.mech-assembler.name = Mechösszeszerelő +block.reinforced-payload-conveyor.name = Megerősített rakományszállító-szalag +block.reinforced-payload-router.name = Megerősített rakományelosztó +block.payload-mass-driver.name = Rakomány-tömegmozgató +block.small-deconstructor.name = Lebontó +block.canvas.name = Vászon +block.world-processor.name = Világprocesszor +block.world-cell.name = Világcella +block.tank-fabricator.name = Tankgyártó +block.mech-fabricator.name = Mechgyártó +block.ship-fabricator.name = Repülőgépgyártó +block.prime-refabricator.name = Elsődleges újratervező +block.unit-repair-tower.name = Egységjavító torony block.diffuse.name = Diffuse -block.basic-assembler-module.name = Alap Összeszerelő Modul +block.basic-assembler-module.name = Alapvető összeszerelő modul block.smite.name = Smite block.malign.name = Malign -block.flux-reactor.name = Fluxus Reaktor -block.neoplasia-reactor.name = Neoplázia Reaktor +block.flux-reactor.name = Fluxusreaktor +block.neoplasia-reactor.name = Neopláziareaktor block.switch.name = Kapcsoló block.micro-processor.name = Mikroprocesszor -block.logic-processor.name = Logikai Processzor -block.hyper-processor.name = Hiper Processzor -block.logic-display.name = Logikai Kijelző -block.large-logic-display.name = Nagy Logikai Kijelző -block.memory-cell.name = Memória Cella -block.memory-bank.name = Memória Bank +block.logic-processor.name = Logikai processzor +block.hyper-processor.name = Hiperprocesszor +block.logic-display.name = Logikai kijelző +block.large-logic-display.name = Nagy logikai kijelző +block.memory-cell.name = Memóriacella +block.memory-bank.name = Memóriabank team.malis.name = Lila team.crux.name = Piros @@ -1852,169 +1905,169 @@ team.blue.name = Kék hint.skip = Kihagyás hint.desktopMove = Használd a [accent][[WASD][] gombokat a mozgáshoz. -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 Támaszpontba. +hint.zoom = [accent]Görgess[] a nagyításhoz és kicsinyítéshez. +hint.desktopShoot = Használd a [accent]bal egérgombot[] a lövéshez. +hint.depositItems = A nyersanyagokat húzással helyezheted át a drónból a támaszpontba. hint.respawn = Ahhoz, hogy drónként újraéledj, nyomd meg a [accent][[V][] gombot. -hint.respawn.mobile = Átvetted az irányítást egy egység, vagy 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 = A [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 épület információinak megtekintéséhez válaszd ki az épületet 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]Fejlesztési Fa[] gombot, hogy felfedezz új technológiákat. -hint.research.mobile = Használd a \ue875 [accent]Fejleszté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 a [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. A [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 Támaszpontot a következő szektorba, úgy, hogy megnyitod a \ue827 [accent]Bolygó 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 Támaszpontot egy közeli szektorba, úgy, hogy kiválasztasz egy szektort a \ue88c [accent]Menü[]ben a \ue827 [accent]Bolygó térkép[]ről. -hint.schematicSelect = Az [accent][[F][] nyomva tartásával egyszerre több épületet is kijelölhetsz és másolhatsz.\n\nAz egér [accent][[Görgővel][] viszont, csak egy épületet tudsz kijelölni és lemásolni. -hint.rebuildSelect = Tartsd nyomva a [accent][[B][] és húzással jelöld ki a megsemmisített épületterveket.\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 épülettervek kijelöléséhez.\nEz automatikusan újraépíti őket. -hint.conveyorPathfind = Tartsd nyomva a [accent][[Bal-CTRL][] gombot a szállítószalagok lerakása közben, hogy a játék útvonalat 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 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 = A \uf879 [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 Támaszpontot fejlesztheted, ha [accent]magasabb szintű Támaszpontot teszel rá[].\n\nHelyezz egy [accent]Alapítvány[] Támaszpontot a [accent]Szilánk[] Támaszpontra. Figyelj rá, hogy ne legyenek az új Támaszpont területén épületek. -hint.presetLaunch = A szürke [accent]hadjárat 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.respawn.mobile = Átvetted az irányítást egy egység vagy épület felett. Ahhoz, hogy drónként újraéledj, [accent]koppints a profilképre a bal felső sarokban.[] +hint.desktopPause = Nyomd meg a [accent][[Szóközt][] a játék szüneteltetéséhez vagy folytatásához. +hint.breaking = [accent]Jobb egérgombbal[] és húzással lebonthatod a blokkokat. +hint.breaking.mobile = Használd a jobb alsó sarokban lévő \ue817 [accent]kalapács[] gombot a blokkok törléséhez.\n\nTartsd lenyomva az ujjad és húzd, hogy nagyobb területet tudj kijelölni. +hint.blockInfo = Egy blokk információinak megtekintéséhez válaszd ki az épületet az [accent]építési menüben[], majd válaszd a [accent][[?][] gomb jobb oldalt. +hint.derelict = Az [accent]elhagyatott[] szerkezetek régi bázisok maradványai, amelyek már nem működnek.\n\nEzeket az épületeket le lehet [accent]bontani[] nyersanyagokért, vagy meg is lehet javítani őket. +hint.research = Használd a \ue875 [accent]Technológia fa[] gombot, hogy új technológiákat fedezz fel. +hint.research.mobile = Használd a \ue875 [accent]Technológia fa[] gombot a \ue88c [accent]menüben[], hogy új technológiákat fedezz fel. +hint.unitControl = Nyomd le a [accent][[bal Ctrl][] gombot, és kattints [accent]jobb egérgombbal[] a baráti egység vagy lövegtorony irányításához. +hint.unitControl.mobile = [accent][[Dupla koppintással][] a szövetséges egységek vagy lövegtornyok kézileg irányíthatóak. +hint.unitSelectControl = Az egységek irányításához lépj be [accent]parancs módba[] a [accent]bal Shift[] lenyomva tartásával.\nParancs módban az egységek kijelöléséhez kattints, és húzd az egeret. A [accent]jobb egérgombbal[] küldd az egységeket a helyszínre vagy a célponthoz. +hint.unitSelectControl.mobile = Az egységek irányításához lépj be [accent]parancs módba[] a bal alsó sarokban lévő [accent]parancs[] gombbal.\nParancs módban az egységek kiválasztásához érintsd meg a kijelzőt és húzással jelöld ki az egységeket. Koppintással küldd az egységeket a helyszínre vagy a célponthoz. +hint.launch = Ha elegendő nyersanyagot gyűjtöttél össze, akkor [accent]lődd ki[] a támaszpontot a következő szektorba, úgy, hogy megnyitod a \ue827 [accent]Bolygótérképet[] a jobb alsó sarokban, és átforgatod az új helyszínre. +hint.launch.mobile = Ha elegendő nyersanyagot gyűjtöttél össze, akkor [accent]lődd ki[] a támaszpontot egy közeli szektorba, úgy, hogy kiválasztasz egy szektort a \ue88c [accent]Menüben[] a \ue827 [accent]Bolygótérképről[]. +hint.schematicSelect = Tartsd nyomja az [accent][[F][] gombot több épület kijelöléséhez és másolásához.\n\n[accent][[Középső kattintással][] egy adott blokktípus másolható. +hint.rebuildSelect = Tartsd nyomva a [accent][[B][] gombot és húzással jelöld ki a megsemmisített blokkterveket.\nEz automatikusan újraépíti őket. +hint.rebuildSelect.mobile = Válaszd a \ue874 másolás gombot, majd koppints az \ue80f újraépítés gombra, és húzd a megsemmisült blokktervek kijelöléséhez.\nEz automatikusan újraépíti őket. +hint.conveyorPathfind = Tartsd nyomva a [accent][[bal Ctrl][] gombot a szállítószalagok lerakása közben, hogy a játék útvonalat állítson elő. +hint.conveyorPathfind.mobile = Engedélyezd az \ue844 [accent]átlós módot[], és tegyél le egyszerre több szállítószalagot, hogy a játék útvonalat állítson elő. +hint.boost = Tartsd nyomva a [accent][[bal Shift][] gombot, hogy átrepülj az akadályok felett.\n\nErre csak néhány földi egység képes. +hint.payloadPickup = Nyomd meg a [accent][[[] gombot a kis blokkok vagy egységek felemeléséhez. +hint.payloadPickup.mobile = [accent]Koppints és tartsd lenyomva az ujjad[] egy kis blokk vagy egység felemeléséhez. +hint.payloadDrop = Nyomd le a [accent]][] gombot a rakomány lerakásához. +hint.payloadDrop.mobile = [accent]Koppints és tartsd lenyomva az ujjad[] egy üres területen a rakomány lerakásához. +hint.waveFire = A vizet lőszerként használó [accent]Wave[] lövegtornyok automatikusan eloltják a közeli tüzeket. +hint.generator = Az \uf879 [accent]égetőerőmű[] szenet éget, és áramot ad át a vele érintkező épületeknek.\n\nAz áramszállítás távolsága [accent]villanyoszlopokkal[] növelhető. +hint.guardian = Az [accent]Őrzők[] páncélozottak. A gyenge lövedékek, mint a [accent]réz[] vagy az [accent]ólom[] [scarlet]nem hatásosak[] az Őrző páncéljával szemben.\n\nHasználj magasabb szintű lövegtornyokat, vagy \uf835 [accent]grafitot[] a Duo/\uf859Salvo lövegtornyokban, hogy leszedd az Őrzőket. +hint.coreUpgrade = A támaszpont úgy fejleszthető, hogy [accent]magasabb szintű támaszpontot teszel rá[].\n\nHelyezz egy \uf868 [accent]Alapítvány[] támaszpontot a \uf869 [accent]Szilánk[] támaszpontra. Figyelj rá, hogy ne legyenek az új támaszpont területén épületek. +hint.presetLaunch = A szürke [accent]landolási zónát tartalmazó szektorokba[], amilyen például a [accent]Fagyott erdő[], bárhonnan kilőhetsz. Nem szükséges hozzá szomszédos területet elfoglalnod.\n\nA [accent]számozott szektorok[], mint ez is, [accent]nem kötelezők[]. hint.presetDifficulty = Ebben a szektorban [scarlet]magas az ellenséges fenyegetettségi szint[].\nAz ilyen szektorokba való indulás [accent]nem ajánlott[] megfelelő technológia és felkészülés nélkül. -hint.coreIncinerate = Ha a Támaszpontodban 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árépületre, 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árépületre, majd koppints egy helyre.\nAz előállított egységek automatikusan odamennek. +hint.coreIncinerate = Ha a támaszpont egy nyersanyagból elérte a maximumot, a beérkező további nyersanyagok azonnal [accent]megsemmisítésre kerülnek[]. +hint.factoryControl = Egy egységgyár [accent]kimeneti célpontjának[] beállításához kattints parancs módban egy gyárépületre, majd kattints jobb egérgombbal egy helyre.\nAz előállított egységek automatikusan odamennek. +hint.factoryControl.mobile = Egy egységgyár [accent]kimeneti célpontjának[] beállításához koppints parancs módban egy gyárépületre, majd koppints egy helyre.\nAz előállított egységek automatikusan odamennek. -gz.mine = Menj a földön lévő \uf8c4 [accent]Rézérc[] közelébe, és kattints a bányászat megkezdéséhez. -gz.mine.mobile = Menj a földön lévő \uf8c4 [accent]Rézérc[] közelébe, és koppints a bányászat megkezdéséhez. -gz.research = Nyisd meg a \ue875 Fejlesztési fát.\nFejleszd ki a \uf870 [accent]Mechanikus Fúró[]t, majd válaszd ki a jobb alsó sarokban lévő menüből.\nKattints egy Rézfoltra, hogy elhelyezd. -gz.research.mobile = Nyisd meg a \ue875 Fejlesztési fát.\nFejleszd ki a \uf870 [accent]Mechanikus Fúró[]t, majd válaszd ki a jobb alsó sarokban lévő menüből.\nKattints egy Rézfoltra, hogy elhelyezd.\n\nNyomd meg a \ue800 [accent]Pipa[]t a jobb alsó sarokban a megerősítéshez. -gz.conveyors = Fejleszd ki é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 Támaszpontba.\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 = Fejleszd ki é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 Támaszpontba.\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 = Az \uf837 [accent]Ólom[] egy másik gyakran használt nyersanyag.\nÉpíts fúrókat az Ólom kitermelésére. -gz.moveup = \ue804 Menj tovább a többi feladatért. -gz.turrets = Fejleszd ki és építs 2 darab \uf861 [accent]Duo[] lövegtornyot, hogy védd a Támaszpontot.\nA Duo lövegtornyoknak szükségük van \uf838 [accent]lőszer[]re, amelyeket Szállítószalaggal juttathatsz el hozzájuk. -gz.duoammo = Lásd el a Duo lövegtornyokat [accent]Rézzel[]. Használj Szállítószalagot. -gz.walls = A [accent]Falak[] megakadályozhatják, hogy az épületekben károk keletkezzenek.\nÉpíts \uf8ae [accent]Réz Fal[]akat a lövegtornyok körül. +gz.mine = Menj a földön lévő \uf8c4 [accent]rézérc[] közelébe, és kattints a bányászat megkezdéséhez. +gz.mine.mobile = Menj a földön lévő \uf8c4 [accent]rézérc[] közelébe, és koppints a bányászat megkezdéséhez. +gz.research = Nyisd meg a \ue875 Technológia fát.\nFejleszd ki a \uf870 [accent]Mechanikus fúrót[], majd válaszd ki a jobb alsó sarokban lévő menüből.\nKattints egy rézfoltra az elhelyezéséhez. +gz.research.mobile = Nyisd meg a \ue875 Technológia fát.\nFejleszd ki a \uf870 [accent]Mechanikus fúrót[], majd válaszd ki a jobb alsó sarokban lévő menüből.\nKattints egy rézfoltra az elhelyezéséhez.\n\nA megerősítéshez nyomd meg a jobb alsó sarokban lévő \ue800 [accent]pipát[]. +gz.conveyors = Fejleszd ki, és építs \uf896 [accent]Szállítószalagokat[], hogy a kitermelt\nnyersanyagokat eljuttasd a fúróktól a támaszpontba.\n\nKattints és húzd az egeret, hogy több szállítószalagot helyezz el.\nHasználd a [accent]görgőt[] a forgatáshoz. +gz.conveyors.mobile = Fejleszd ki, és építs \uf896 [accent]Szállítószalagokat[], hogy a kitermelt\nnyersanyagokat eljuttasd a fúróktól a támaszpontba.\n\nTartsd lenyomva az ujjad és húzd el, hogy több szállítószalagot helyezz el. +gz.drills = Bővítsd a bányászati kapacitást.\nÉpíts több mechanikus fúrót.\nBányássz 100 rezet. +gz.lead = Az \uf837 [accent]ólom[] egy másik gyakran használt nyersanyag.\nÉpíts fúrókat az ólom kitermelésére. +gz.moveup = \ue804 Menj tovább a további utasításokért. +gz.turrets = Fejleszd ki, és építs két \uf861 [accent]Duo[] lövegtornyot, hogy megvédd a támaszpontot.\nA Duo lövegtornyoknak \uf838 [accent]lőszerre[] van szükségük, mely szállítószalaggal juttatható el hozzájuk. +gz.duoammo = Szállítószalagok segítségével lásd el [accent]rézzel[] a Duo lövegtornyokat. +gz.walls = A [accent]falak[] megakadályozhatják, hogy az épületekben károk keletkezzenek.\nÉpíts \uf8ae [accent]Rézfalakat[] a lövegtornyok köré. gz.defend = Az ellenség közeledik, készülj fel a védekezésre. -gz.aa = A repülő egységeket nem lehet könnyen elintézni a hagyományos lövegtornyokkal.\nA \uf860 [accent]Scatter[] lövegtornyok kiváló légelhárítást biztosítanak, de szükségük van \uf837 [accent]Ólom[] lőszerre. -gz.scatterammo = Lásd el a Scatter lövegtornyokat [accent]Ólom[] lőszerrel. Használj Szállítószalagot. -gz.supplyturret = [accent]Lövegtorony ellátmány +gz.aa = A légi egységeket nem lehet könnyen elintézni a hagyományos lövegtornyokkal.\nA \uf860 [accent]Scatter[] lövegtornyok kiváló légelhárítást biztosítanak, de lőszerként \uf837 [accent]ólomra[] van szükségük. +gz.scatterammo = Szállítószalagok segítségével lásd el \uf837 [accent]ólommal[] a Scatter lövegtornyokat. +gz.supplyturret = [accent]Lövegtorony ellátása gz.zone1 = Ez az ellenség leszállóhelye. gz.zone2 = Bármi, ami a hatósugarában épült, elpusztul, amikor egy hullám elindul. gz.zone3 = Egy hullám most kezdődik.\nKészülj fel. -gz.finish = Építs több lövegtornyot, bányássz több nyersanyagot\nés védekezz az ellenséges hullámok ellen, hogy [accent]elfoglald a szektort[]. +gz.finish = Építs több lövegtornyot, bányássz több nyersanyagot,\nés védekezz az ellenséges hullámok ellen, hogy [accent]elfoglald a szektort[]. -onset.mine = Kattints a 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 Fejlesztési fát.\nFejleszd ki és építs egy \uf73e [accent]Kondenzációs Turbina[]t a kürtőn.\nEz [accent]Áram[]ot fog generálni. -onset.bore = Fejleszd ki é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, Fejleszd ki é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 = Fejleszd ki é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 Támaszpontba\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 = Fejleszd ki é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 Támaszpontba.\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 épületekhez 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.\nFejleszd ki 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[]ot 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. Fejleszd ki é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 alkalmazod őket.\nÉpíts egy \uf6eb [accent]Breach[] lövegtornyot.\nA lövegtornyoknak szüksége van \uf748 [accent]lőszer[]re. -onset.turretammo = Lásd el a lövegtornyokat [accent]Berillium[] lőszerrel. -onset.walls = A [accent]Falak[] megakadályozhatják, hogy az épületekben károk keletkezzenek.\nÉpíts \uf6ee [accent]Berillium Fal[]akat a lövegtornyok körül. +onset.mine = Kattints bal egérgombbal a \uf748 [accent]berillium[] kibányászáshoz a falakból.\n\nA mozgáshoz használd a [accent][[WASD] gombokat. +onset.mine.mobile = Koppints a \uf748 [accent]berillium[] kibányászáshoz a falakból. +onset.research = Nyisd meg a \ue875 Technológia fát.\nFejleszd ki, és építs egy \uf73e [accent]Kondenzációs turbinát[] a kürtőn.\nEz [accent]áramot[] fog termelni. +onset.bore = Fejleszd ki, és építs egy \uf741 [accent]Plazmafúrót[].\nEz automatikusan bányássza ki a nyersanyagokat a falakból. +onset.power = Ahhoz, hogy [accent]árammal[] lásd el a plazmafúrót, fejleszd ki, és helyezz el egy \uf73d [accent]Sugárcsomópontot[].\nSegítségükkel összekötheted a kondenzációs turbinát a plazmafúróval. +onset.ducts = Fejleszd ki, és építs \uf799 [accent]Szállítószalagot[], hogy a kitermelt nyersanyagokat eljuttasd a plazmafúrótól a támaszpontba.\nKattints, és húzd az egeret több szállítószalag elhelyezéséhez.\nHasználd a [accent]görgőt[] a forgatáshoz. +onset.ducts.mobile = Fejleszd ki, és építs \uf799 [accent]Szállítószalagot[], hogy a kitermelt nyersanyagokat eljuttasd a plazmafúrótól a támaszpontba.\n\nTartsd lenyomva az ujjad és húzd el, hogy több szállítószalagot helyezz el. +onset.moremine = Bővítsd a bányászati kapacitást.\nHelyezz el több plazmavágót, és a támogatásukhoz használj sugárcsomópontokat és szállítószalagokat.\nBányássz 200 berilliumot. +onset.graphite = Az összetettebb épületekhez \uf835 [accent]grafit[] szükséges.\nÉpíts plazmavágókat a grafit kibányászásához. +onset.research2 = Kezdd el a [accent]gyárak[] fejlesztését.\nFejleszd ki a \uf74d [accent]Sziklazúzót[] és a \uf779 [accent]Szilícium ívkemencét[]. +onset.arcfurnace = A szilícium ívkemencének \uf834 [accent]homokra[] és \uf835 [accent]grafitra[] van szüksége, hogy \uf82f [accent]szilíciumot[] gyártson.\nTovábbá [accent]áram[] is szükséges a működéséhez. +onset.crusher = Használj \uf74d [accent]Sziklazúzókat[], hogy homokot bányász. +onset.fabricator = Használd az [accent]egységeket[], hogy felfedezd a pályát, megvédd az épületeket, és megtámadhasd velük az ellenséget. Fejleszd ki, és helyezz el egy \uf6a2 [accent]Tankgyártót[]. +onset.makeunit = Állíts elő egy egységet.\nHasználd a „?” gombot, hogy megnézd a kiválasztott gyár követelményeit. +onset.turrets = Az egységek hatékonyak, de hatásosan alkalmazva a [accent]lövegtornyok[] jobb védelmi képességeket biztosítanak.\nHelyezz el egy \uf6eb [accent]Breach[] lövegtornyot.\nA lövegtornyoknak \uf748 [accent]lőszerre[] van szüksége. +onset.turretammo = Szállítótalagok használatával lásd el a lövegtornyokat [accent]berillium[] lőszerrel. +onset.walls = A [accent]falak[] megakadályozhatják, hogy az épületekben károk keletkezzenek.\nÉpíts \uf6ee [accent]Berillium falakat[] a lövegtornyok körül. onset.enemies = Az ellenség közeledik, készülj fel a védekezésre. onset.defenses = [accent]Állíts fel védelmet:[lightgray] {0} -onset.attack = Az ellenség most sebezhető. Ellentámadásra fel. -onset.cores = Új Támaszpont csak a [accent]Támaszpont Csempé[]re építhető.\nAz új Támaszpontok előretolt bázisként működnek, és megosztják a nyersanyagkészletüket más Támaszpontokkal.\nÉpíts egy új \uf725 Támaszpontot. -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]Ütvefúró[]val tudsz bányászni.\nEnnek az épületnek szüksége van [accent]Víz[]re és [accent]Áram[]ra. +onset.attack = Az ellenség most sebezhető. Indíts ellentámadást. +onset.cores = Új támaszpont csak a [accent]támaszpontcsempére[] helyezhető.\nAz új támaszpontok előretolt bázisként működnek, és megosztják a nyersanyagkészletüket más támaszpontokkal.\nHelyezz el egy \uf725 támaszpontot. +onset.detect = Az ellenség 2 percen belül észrevesz téged.\nÁllíts fel védelmet, bányászatot és termelést. +onset.commandmode = Tartsd nyomva a [accent]Shift[] gombot, hogy [accent]parancs módba[] lépj.\n[accent]Bal egérgombbal és húzással[] lehet egységeket kijelölni.\n[accent]Jobb egérgombbal[] az egységek mozgásra vagy támadásra utasíthatóak. +onset.commandmode.mobile = Nyomd meg a [accent]parancs gombot[], hogy [accent]parancs módba[] lépj.\nTartsd nyomva az ujjad, majd [accent]húzd[] az egységek kiválasztásához.\n[accent]Koppintással[] az egységek mozgásra vagy támadásra utasíthatóak. +aegis.tungsten = Volfrámot [accent]Ütvefúróval[] lehet bányászni.\nEnnek az épületnek [accent]vízre[] és [accent]áramra[] van szüksége. -split.pickup = Egyes blokkok a Támaszpont drónjával 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 Támaszpont 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. +split.pickup = Egyes blokkok a támaszpont drónjával is felvehetőek.\nVedd fel ezt a [accent]konténert[] és helyezd egy [accent]rakománycsomagolóba[].\n(A felvétel és lerakás alapértelmezett gombjai: [[ és ].) +split.pickup.mobile = Egyes blokkok a támaszpont drónjával is felvehetőek.\nVedd fel ezt a [accent]konténert[] és helyezd egy [accent]rakománycsomagolóba[].\n(A felvételhez és lerakáshoz nyomd meg hosszan.) +split.acquire = Az egységek építéséhez volfrámot kell szerezned. +split.build = Az egységeket a fal másik oldalára kell eljuttatni.\nÉpíts két [accent]Rakomány-tömegmozgatót[], egyet-egyet a fal mindkét oldalán.\nÁllítsd be a szállítási kapcsolatukat úgy, hogy kiválasztod az egyiket, majd kiválasztod a másikat. +split.container = A konténerekhez hasonlóan, az egységek is szállíthatóak a [accent]Rakomány-tömegmozgatóval[].\nÉpíts egy egységgyárat egy tömegmozgató mellé, hogy feltöltsd őket, majd küldd át őket a falon, hogy megtámadják az ellenséges bázist. -item.copper.description = Széleskörűen felhasználható építkezésre és lövedékként. -item.copper.details = Szokatlanul elterjedt fém a Serpulo-n. Gyenge szerkezetű, de megerősíthető. -item.lead.description = Folyadékszállító csővezetékek építésére használatos, de elektromos eszközökben is alkalmazható. -item.lead.details = Sűrű. Közömbös. Széles körben használatos 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 alkalmas csővezetékek és épületek építésére, továbbá lövedékként is használható. -item.graphite.description = Elektromos alkatrészek alapanyagaként és lövedékként is használható. -item.sand.description = Egyéb finom nyersanyagok gyártási alapanyaga. -item.coal.description = Tüzelőanyag és gyártási alapanyag. -item.coal.details = Fosszilizálódott növényi anyagnak tűnik, jóval a "spóra incidens" előttről. -item.titanium.description = Folyadékok szállítására, fúrókban és légi járművekben használható. -item.thorium.description = Strapabíró szerkezetekben használható nukleáris tüzelőanyagként. -item.scrap.description = Olvasztással és porítással finom nyersanyagok nyerhetők ki belőle. +item.copper.description = Széleskörűen használatos építkezésnél és lőszerként. +item.copper.details = Réz. Szokatlanul bőségesen elterjedt fém a Serpulón. Megerősítés nélkül strukturálisan gyenge. +item.lead.description = Folyadékszállításnál és elektromos eszközökben használatos. +item.lead.details = Sűrű. Közömbös. Széles körben használatos az akkumulátorokban.\nMegjegyzés: Valószínűleg mérgező a biológiai életformákra. Nem mintha sok maradt volna errefelé. +item.metaglass.description = Folyadékszállító és -tárolóépületeknél használatos. +item.graphite.description = Elektromos alkatrészekben és lőszerként használatos. +item.sand.description = Egyéb finomított nyersanyagok gyártása során használatos. +item.coal.description = Tüzelőanyagként és finomított nyersanyagok gyártásához használatos. +item.coal.details = Fosszilizálódott növényi anyagnak tűnik, jóval a „spóra incidens” előttről. +item.titanium.description = Folyadékszállító épületekben, fúrókban és gyárakban használatos. +item.thorium.description = Strapabíró szerkezetekben használatos nukleáris fűtőanyag. +item.scrap.description = Olvasztókban és porítókban használatos már nyersanyagok finomításához. item.scrap.details = Ősi építmények és egységek hátrahagyott maradványai. -item.silicon.description = Napelemek, összetett áramkörök és nyomkövető lövedékek fontos alapanyaga. Sosincs belőle elég. -item.plastanium.description = Fejlett egységek alapanyagaként, hőszigetelésre és repeszes lövedékekhez is használható. -item.phase-fabric.description = Fejlett elektromos eszközökben és önjavító szerkezetekben is használható. -item.surge-alloy.description = Magas szintű fegyverzetekben és aktív védelemhez is használható. -item.spore-pod.description = Átalakítható Olajjá, vagy robbanószerekké, de használható tüzelőanyagként is. -item.spore-pod.details = Spórák. Egy valószínűleg mesterséges életforma. Más életformák számára halálos gázt bocsátanak ki. Szélsőségesen invazív. Megfelelő körülmények között erősen gyúlékony. -item.blast-compound.description = A bombák és a robbanó lövedékek egyik fő összetevője. -item.pyratite.description = Gyújtó lövedékekben és tüzelőanyag-alapú generátorokban is használható. +item.silicon.description = Napelemekben, összetett áramkörökben és nyomkövető lőszerekben használatos. +item.plastanium.description = Fejlett egységek alapanyagaként, hőszigetelésben és repeszlövedékekben használatos. +item.phase-fabric.description = Fejlett elektromos eszközökben és önjavító épületekben használatos. +item.surge-alloy.description = Fejlett fegyverzetekhez és aktív védelmi épületekhez használatos. +item.spore-pod.description = Olajjá, robbanószerré és tüzelőanyaggá alakításhoz használatos. +item.spore-pod.details = Spórák. Valószínűleg egy mesterséges életforma. Más életformák számára halálos gázt bocsátanak ki. Szélsőségesen invazív. Megfelelő körülmények között erősen gyúlékony. +item.blast-compound.description = Bombákhoz és robbanólövedékekhez használatos. +item.pyratite.description = Gyújtólövedékekben és tüzelőanyag-alapú generátorokban használatos. #Erekir -item.beryllium.description = Sokféle épület- és lőszertípushoz használatos az Erekir-en. -item.tungsten.description = Fúrókban/vágókban, páncélokban használatos, de lőszerként is alkalmazható. A fejlettebb szerkezetek építéséhez szükséges. -item.oxide.description = Hővezetőként és Áramszigetelőként is használatos. -item.carbide.description = Korszerű szerkezetekben, nehezebb egységekben használatos, de lőszerként is alkalmazható. +item.beryllium.description = Sokféle épület- és lőszertípushoz használatos az Erekiren. +item.tungsten.description = Fúrókban, páncélokban és lőszerben használatos. A fejlettebb épületek építéséhez szükséges. +item.oxide.description = Hővezetőként és szigetelőként is használatos az áramtermelésben. +item.carbide.description = Fejlett szerkezetekben, nehezebb egységekhez és lőszerként használatos. -liquid.water.description = Gépek hűtésére és Törmelékfeldolgozásra is 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 is használható. -liquid.cryofluid.description = Hűtőfolyadék az erőművek, reaktorok, lövegtornyok és gyárak számára. +liquid.water.description = Gépek hűtéséhez és törmelékfeldolgozáshoz használatos. +liquid.slag.description = Leválasztóban alkotófémekre finomítható. Folyadékot használó tornyokban lőszerként használható. +liquid.oil.description = Fejlett nyersanyagok gyártásához és gyújtólövedékhez használatos. +liquid.cryofluid.description = Reaktorokban, lövegtornyokban és gyárakban használatos hűtőfolyadékként. #Erekir liquid.arkycite.description = Kémiai reakciókban használatos energiatermelésre és anyagszintézisre. -liquid.ozone.description = Oxidálószerként használatos 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 is használatos. Gyúlékony. -liquid.cyanogen.description = Lőszerként, vagy fejlett egységek építéséhez és különböző reakciókhoz használatos 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 is használatos. Semleges gáz. -liquid.neoplasm.description = A Neoplázia Reaktor veszélyes biológiai mellékterméke. Gyorsan átterjed minden szomszédos víztartalmú é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. +liquid.ozone.description = Az anyaggyártásban oxidálószerként, illetve üzemanyagként használatos. Mérsékelten robbanékony. +liquid.hydrogen.description = A nyersanyagok kitermelésében, egységgyártásban és szerkezetjavításban használatos. Gyúlékony. +liquid.cyanogen.description = Lőszerként, fejlett egységek építéséhez és különböző reakciókhoz használatos a fejlett blokkokban. Erősen gyúlékony. +liquid.nitrogen.description = A nyersanyagok kitermelésénél, gáztermelésnél és egységgyártásnál is használatos. Semleges gáz. +liquid.neoplasm.description = A neoplázia reaktor veszélyes biológiai mellékterméke. Gyorsan átterjed minden szomszédos víztartalmú blokkra, amelyhez hozzáér, és közben károsítja azokat. Sűrű folyadék. +liquid.neoplasm.details = Neoplazma. Egy kontrollálhatatlan, gyorsan osztódó, iszap állagú, szintetikus sejtmassza. Hőálló. Rendkívül veszélyes minden vízzel kapcsolatos szerkezetre.\n\nTúl összetett és instabil a szabványos elemzésekhez. Potenciális alkalmazási területe ismeretlen. A salakmedencékben való elégetés ajánlott. block.derelict = \uf77e [lightgray]Elhagyatott -block.armored-conveyor.description = Nyersanyagokat szállít. Nem fogad el nyersanyagot oldalról. +block.armored-conveyor.description = Nyersanyagokat szállít. Nem fogad el oldalról nem szállítószalagról érkező nyersanyagot. block.illuminator.description = Világít. -block.message.description = Üzenetet tárol szövetségesek kommunikációjához. +block.message.description = Üzenetet tárol a szövetségesek kommunikációjához. block.reinforced-message.description = Üzenetet tárol a szövetségesek közötti kommunikációhoz. block.world-message.description = A pályakészítésben használható üzenetblokk. Nem lehet megsemmisíteni. -block.graphite-press.description = Szenet présel Grafittá. -block.multi-press.description = Szenet sajtol Grafittá. Hatékonyan dolgozik, de Vizet igényel hűtéshez. -block.silicon-smelter.description = Szilíciumot nyer ki Homok és Szén keverékéből. -block.kiln.description = Ólomból és Homokból olvaszt Ólomüveget. -block.plastanium-compressor.description = Műanyagot gyárt Olaj és Titán felhasználásával. -block.phase-weaver.description = Tóritkvarcot képez Tórium és Homok keverékéből. -block.surge-smelter.description = Titán, Ólom, Szilícium és Réz olvadékából állít elő Elektrometált. -block.cryofluid-mixer.description = Finom Titánport kever Vízhez a Hűtőfolyadék előállításához. -block.blast-mixer.description = Piratitból és Spóra Kapszulákból készít Robbanóelegyet. -block.pyratite-mixer.description = Szenet, Homokot és Ólmot vegyít Piratittá. -block.melter.description = Törmeléket olvaszt Salakká. -block.separator.description = Szétbontja a Salakot ásványi összetevőire. -block.spore-press.description = Nagy nyomáson Olajat sajtol a Spóra Kapszulából. -block.pulverizer.description = Finom Homokká őrli a Törmeléket. -block.coal-centrifuge.description = Szenet nyer ki Olajból. +block.graphite-press.description = Grafittá préseli a szenet. +block.multi-press.description = Grafittá sajtolja a szenet. Hűtéséhez viz szükséges. +block.silicon-smelter.description = A homokot és a szenet szilíciummá finomítja. +block.kiln.description = Ólomüveget olvaszt az ólomból és a homokból. +block.plastanium-compressor.description = Olaj és titán felhasználásával műanyagot gyárt. +block.phase-weaver.description = Tórium és homok keverékéből tóritkvarcot állít elő. +block.surge-smelter.description = Titán, ólom, szilícium és réz ötvözésével elektrometált állít elő. +block.cryofluid-mixer.description = Finom titánpor vízhez keverésével hűtőfolyadékot állít elő. +block.blast-mixer.description = Robbanóelegyet készít a piratitból és a spórakapszulákból. +block.pyratite-mixer.description = Piratittá vegyíti a szenet, a homokot és az ólmot. +block.melter.description = Salakká olvasztja a törmeléket. +block.separator.description = Ásványi összetevőire bontja a salakot. +block.spore-press.description = Olajat sajtol a spórakapszulából. +block.pulverizer.description = Finom homokká őrli a törmeléket. +block.coal-centrifuge.description = Szénné alakítja az olajat. block.incinerator.description = Megsemmisít minden nyersanyagot és folyadékot. -block.power-void.description = Elnyel minden Áramot. (Csak homokozóban.) -block.power-source.description = Végtelen Áramot termel. (Csak homokozóban.) -block.item-source.description = Végtelen nyersanyagot bocsát ki. (Csak homokozóban.) -block.item-void.description = Megsemmisít minden nyersanyagot. (Csak homokozóban.) -block.liquid-source.description = Végtelen folyadékot bocsát ki. (Csak homokozóban.) -block.liquid-void.description = Megsemmisít minden folyadékot. (Csak homokozóban.) -block.payload-source.description = Végtelenül sok rakomány. (Csak homokozóban.) -block.payload-void.description = Minden rakomány megsemmisítése. (Csak homokozóban.) +block.power-void.description = Elnyel minden áramot. Csak homokozó módban. +block.power-source.description = Végtelen áramot termel. Csak homokozó módban. +block.item-source.description = Végtelen nyersanyagot termel. Csak homokozó módban. +block.item-void.description = Megsemmisít minden nyersanyagot. Csak homokozó módban. +block.liquid-source.description = Végtelen folyadékot termel. Csak homokozó módban. +block.liquid-void.description = Megsemmisít minden folyadékot. Csak homokozó módban. +block.payload-source.description = Végtelen rakományt termel. Csak homokozó módban. +block.payload-void.description = Megsemmisít minden rakományt. Csak homokozó módban. block.copper-wall.description = Megvédi az épületeket az ellenséges lövedékektől. block.copper-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől. block.titanium-wall.description = Megvédi az épületeket az ellenséges lövedékektől. @@ -2027,155 +2080,155 @@ block.phase-wall.description = Megvédi az épületeket az ellenséges lövedék block.phase-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől, a legtöbb lövedék visszapattan róla. block.surge-wall.description = Megvédi az épületeket az ellenséges lövedékektől, periodikusan elektromos kisüléseket generál, ha hozzáérnek. block.surge-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől, periodikusan elektromos kisüléseket generál, ha hozzáérnek. -block.door.description = Fal, amit nyitni és zárni lehet. -block.door-large.description = Fal, amit nyitni és zárni lehet. De ez nagyobb. -block.mender.description = Javítja az épületeket a hatókörén belül.\nSzilíciummal növelhető a hatósugara és hatékonysága. -block.mend-projector.description = Javítja az épületeket a hatókörén belül.\nTóritkvarccal növelhető a hatósugara és hatékonysága. +block.door.description = Nyitható és zárható fal. +block.door-large.description = Nyitható és zárható fal. +block.mender.description = Időnként javítja a közeli épületeket.\nSzilíciummal növelhető a hatósugara és hatékonysága. +block.mend-projector.description = Javítja a közeli épületeket.\nTóritkvarccal növelhető a hatósugara és hatékonysága. block.overdrive-projector.description = Növeli a közeli épületek termelési sebességét.\nTóritkvarccal növelhető a hatósugara és hatékonysága. -block.force-projector.description = Hatszögletű erőteret hoz létre maga körül, amely megvédi az épületeket és a benne lévő egységeket a sérüléstől.\nTúlmelegszik, ha túl sok sérülést szenved. 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.force-projector.description = Hatszögletű erőteret hoz létre maga körül, amely megvédi az épületeket és a benne lévő egységeket a sérüléstől.\nTúlmelegszik, ha túl sok sérülést szenved. Hűtőfolyadékot használva megakadályozható a túlmelegedés. A tóritkvarc növeli a pajzs méretét. block.shock-mine.description = Elektromos kisülést hoz létre, ha ellenséggel érintkezik. -block.conveyor.description = Szállítószalag. Nyersanyagokat szállít. -block.titanium-conveyor.description = Nyersanyagokat szállít. Gyorsabb a sima Szállítószalagnál. -block.plastanium-conveyor.description = Nyersanyagokat szállít tömbösítve. Hátulról fogadja a nyersanyagokat, elöl három irányba szétosztja őket. Több kezdő- és végponttal növelhető az áteresztőképessége. -block.junction.description = Hídként működik két egymást keresztező Szállítószalag között. +block.conveyor.description = Nyersanyagokat szállít. +block.titanium-conveyor.description = Nyersanyagokat szállít. Gyorsabb a sima szállítószalagnál. +block.plastanium-conveyor.description = Nyersanyagokat szállít tömbösítve. Hátulról fogadja a nyersanyagokat, elöl három irányba osztja szét őket. Több kezdő- és végponttal növelhető az áteresztőképessége. +block.junction.description = Hídként működik két egymást keresztező szállítószalag között. block.bridge-conveyor.description = Nyersanyagokat szállít épületek és terepakadályok fölött. -block.phase-conveyor.description = Nyersanyagokat szállít épületek és terepakadályok fölött. Nagyobb távolságra ér, mint a sima Szállítószalag Híd, de Áramot használ. +block.phase-conveyor.description = Nyersanyagokat szállít épületek és terepakadályok fölött. Nagyobb távolságra ér, mint a sima szállítószalaghíd, de áramot igényel. block.sorter.description = Csak a kiválasztott nyersanyagot engedi tovább egyenesen, minden mást oldalra ad ki. -block.inverted-sorter.description = A kiválasztott nyersanyagot oldalra adja ki, minden mást egyenesen enged tovább. -block.router.description = Háromfelé osztja szét a beérkező nyersanyagokat. -block.router.details = Pokoli masina. Ne tedd közvetlenül gyárak mellé, mert az épületek nyersanyagai eltömítik. -block.distributor.description = Hétfelé osztja szét a beérkező nyersanyagokat. -block.overflow-gate.description = Csak akkor ad ki nyersanyagot oldalra, ha előrefelé már nem tud. Nem használható közvetlenül Túlfolyó Kapu, vagy 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, 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 = Jelentős mennyiségű folyadékot tárol. Minden oldalon kijuttatja a folyadékot, hasonlóan a Folyadék Elosztóhoz. -block.liquid-tank.description = Nagy mennyiségű folyadékot tárol és minden oldalán képes azt kijuttatni. +block.inverted-sorter.description = Hasonló a szokásos válogatóhoz, de a kiválasztott nyersanyagot oldalra adja ki. +block.router.description = Egyenletesen háromfelé osztja szét a beérkező nyersanyagokat. +block.router.details = Egy szükséges rossz. Nem ajánlott termelőegységek mellett használni, mert a kimenet eltömíti. +block.distributor.description = Egyenletesen hétfelé osztja szét a beérkező nyersanyagokat. +block.overflow-gate.description = Csak akkor ad ki nyersanyagot oldalra, ha előrefelé már nem tud. +block.underflow-gate.description = A túlcsorduló kapu ellentettje. Csak akkor ad ki nyersanyagot előrefelé, ha oldalra már nem tud. +block.mass-driver.description = Nagy hatótávolságú nyersanyagszállító eszköz. Rakományokat gyűjt össze, és átlövi egy másik, hozzákapcsolt tömegmozgatónak. +block.mechanical-pump.description = Folyadékot szivattyúz és ad ki. Nem igényel áramot. +block.rotary-pump.description = Folyadékot szivattyúz és ad ki. Áramot igényel. +block.impulse-pump.description = Folyadékot szivattyúz és ad ki. +block.conduit.description = Folyadékot szállít. Szivattyúkkal és egyéb csővezetékekkel együtt használatos. +block.pulse-conduit.description = Folyadékot szállít. Gyorsabban szállít, és nagyobb tárolókapacitású, mint a szokásos csővezeték. +block.plated-conduit.description = Folyadékot szállít. Nem fogad el folyadékot oldalról. Nem szivárog, ha nincs a végén semmi. +block.liquid-router.description = Egyenletesen háromfelé osztja szét a beérkező folyadékot. Bizonyos mennyiség tárolására is képes. +block.liquid-container.description = Jelentős mennyiségű folyadékot tárol. Minden oldalon kiadja, hasonlóan a folyadékelosztóhoz. +block.liquid-tank.description = Nagy mennyiségű folyadékot tárol. Minden oldalon kiadja, hasonlóan a folyadékelosztóhoz. block.liquid-junction.description = Hídként működik két egymást keresztező csővezeték között. block.bridge-conduit.description = Folyadékot szállít épületek és terepakadályok fölött. -block.phase-conduit.description = Folyadékot szállít épületek és terepakadályok fölött. Nagyobb távolsá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 = Az eltárolt Áramot irányítja át egy megadott irányba, de csak akkor, ha a fogadó oldalon van kevesebb tárolva. -block.battery.description = Áramot tárol el, ha túltermelés van. Leadja az Áramot, ha hiány van. -block.battery-large.description = Áramot tárol el, ha túltermelés van. Leadja az Áramot, ha hiány van. Nagyobb kapacitású a sima Akkumulátornál. -block.combustion-generator.description = Áramot termel éghető anyagok elégetésével. -block.thermal-generator.description = Forró környezetben Áramot termel. -block.steam-generator.description = Áramot termel éghető anyagok elégetésével és Víz gőzzé alakításával. -block.differential-generator.description = Egy lórúgásnyi Áramot termel. Hasznosítja a Hűtőfolyadék és az égő Piratit hőmérsé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 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.phase-conduit.description = Folyadékot szállít épületek és terepakadályok fölött. Nagyobb távolságra ér, mint a sima csővezetékhíd, de áramot igényel. +block.power-node.description = Áramot vezet az összekapcsolt csomópontokhoz. A szomszédos blokkokkal automatikusan kapcsolatban van. +block.power-node-large.description = Nagyobb villanyoszlop, nagyobb hatótávolsággal. +block.surge-tower.description = Hosszútávú villanyoszlop, kevesebb elérhető kapcsolattal. +block.diode.description = Az eltárolt áramot irányítja egy irányba továbbítja, de csak akkor, ha a fogadó oldalon kevesebb van tárolva. +block.battery.description = Áramot tárol el, ha túltermelés van. Leadja az áramot, ha hiány van. +block.battery-large.description = Áramot tárol el, ha túltermelés van. Leadja az áramot, ha hiány van. Nagyobb kapacitású a szokásos akkumulátornál. +block.combustion-generator.description = Áramot termel éghető anyagok, például szén, elégetésével. +block.thermal-generator.description = Forró környezetben áramot termel. +block.steam-generator.description = Éghető anyagok elégetésével és víz gőzzé alakításával áramot termel. +block.differential-generator.description = Nagy mennyiségű áramot termel. A hűtőfolyadék és az égő piratit hőmérséklet-különbségét használja ki. +block.rtg-generator.description = A radioaktív bomlás energiáját hasznosítja, hogy lassan, de biztosan áramot termeljen. +block.solar-panel.description = Napfényből állít elő kevés áramot. +block.solar-panel-large.description = Napfényből állít elő kevés áramot. Hatékonyabb a szokásos napelemnél. +block.thorium-reactor.description = Jelentős mennyiségű áramot állít elő tóriumból. Állandó hűtést igényel. Ha nincs megfelelően hűtőfolyadékkal ellátva, akkor felrobban. +block.impact-reactor.description = Csúcsra járatva rengeteg áramot termel. A reakció beindítása jelentős árambefektetést igényel. +block.mechanical-drill.description = Ércre helyezve lassú tempóban termeli ki az adott nyersanyagot. Csak alapvető nyersanyagok kitermelésére képes. +block.pneumatic-drill.description = Egy fejlettebb fúró, mely titán kitermelésére is képes. Gyorsabban dolgozik a mechanikus fúrónál. +block.laser-drill.description = Lézerek használatával még gyorsabban tud dolgozni, de áramot igényel. Képes tóriumot kitermelni. +block.blast-drill.description = A technológia csúcsa. Nagy mennyiségű áramot igényel. +block.water-extractor.description = Kiszivattyúzza a talajvizet. Olyan helyeken használatos, ahol nem érhető el felszíni vízforrás. block.cultivator.description = A légkörben szálló spórákat kapszulákba sűríti. -block.cultivator.details = Visszaszerzett technológia. Hatalmas tömegű biomassza gyártására alkalmas a lehető leghatékonyabban. Valószínűleg a Serpulo-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.cultivator.details = Visszaszerzett technológia. Hatalmas tömegű biomassza gyártására alkalmas a lehető leghatékonyabban. Valószínűleg a Serpulo felszínét ma borító spórák kezdeti inkubátora. +block.oil-extractor.description = Nagy mennyiségű áramot, homokot és vizet használ, hogy olajat fúrjon. block.core-shard.description = Támaszpont. Ha elpusztul, a szektor elveszett. -block.core-shard.details = Az első modell. Kompakt. Önsokszorosító. Egyszer használatos gyorsítófúvókákkal van felszerelve, nem bolygóközi utazásra tervezték. -block.core-foundation.description = Támaszpont. Páncélozott. Több nyersanyagot tárol, mint a Szilánk. +block.core-shard.details = Az első modell. Kompakt. Önsokszorosító. Egyszer használatos gyorsítórakétákkal van felszerelve, nem bolygóközi utazásra tervezték. +block.core-foundation.description = Támaszpont. Jól páncélozott. Több nyersanyagot tárol, mint a Szilánk. block.core-foundation.details = A második modell. -block.core-nucleus.description = Támaszpont. Megerősített páncélzattal. Hatalmas mennyiségű nyersanyag tárolására képes. +block.core-nucleus.description = Támaszpont. Rendkívül jól páncélozott. Hatalmas mennyiségű nyersanyag tárolására képes. block.core-nucleus.details = A harmadik, végső modell. -block.vault.description = Nagy mennyiséget tárol minden nyersanyagtípusból. A tartalma kirakodó segítségével nyerhető ki. -block.container.description = Kis mennyiséget tárol minden nyersanyagtípusból. A tartalma kirakodó segítségével nyerhető ki. +block.vault.description = Nagy mennyiséget tárol minden nyersanyagtípusból. Bővíti a raktárat, ha egy támaszpont mellé van helyezve. A tartalma kirakodó segítségével nyerhető ki. +block.container.description = Kis mennyiséget tárol minden nyersanyagtípusból. Bővíti a raktárat, ha egy támaszpont mellé van helyezve. A tartalma kirakodó segítségével nyerhető ki. block.unloader.description = Kirakodja a szomszédos épületekből a kiválasztott nyersanyagot. block.launch-pad.description = Nyersanyagokat juttat el más szektorokba. -block.launch-pad.details = Szub-orbitális rendszer a nyersanyagok szektorok között történő szállítására. A teherkapszulák törékenyek, ezért nem képesek túlélni a visszatérést. +block.launch-pad.details = Szuborbitális rendszer a nyersanyagok szektorok között történő szállítására. A teherkapszulák törékenyek, ezért nem képesek túlélni a légkörbe való visszatérést. block.duo.description = Változatos lövedékekkel lő az ellenségre. -block.scatter.description = Ólom-, Ólomüveg-, vagy Törmelékdarabokkal tüzel az ellenséges légierőre. +block.scatter.description = Ólom-, törmelék- vagy ólomüvegdarabokat lő az ellenséges légi egységekre. block.scorch.description = Megégeti az ellenség közeli földi egységeit. Kis távolságra nagyon hatékony. -block.hail.description = Kis lövedékeket lő ki a nagy távolságokra lévő földi célpontokra. -block.wave.description = Folyadékot önt az ellenségre. Eloltja a tüzet, ha Vízzel van feltöltve. +block.hail.description = Kis lövedékeket lő ki nagy távolságokra lévő földi célpontokra. +block.wave.description = Folyadékot önt az ellenségre. Eloltja a tüzeket, ha vízzel van ellátva. block.lancer.description = Erős energiasugarakat lő közeli földi célpontokra. block.arc.description = Elektromos szikrákat kelt földi célpontok között. block.swarmer.description = Nyomkövető rakétákat lő az ellenségre. -block.salvo.description = Kis sorozatokat lő az ellenségre. -block.fuse.description = Három kis hatótávú átütő erejű töltényt lő egyszerre. -block.ripple.description = Lövedékek csoportjával tüzel földi célpontokra nagy távolságra. +block.salvo.description = Gyors sorozatokat lő az ellenségre. +block.fuse.description = Három kis hatótávolságú, átütő erejű lövedéket lő a közeli ellenségre. +block.ripple.description = Lövedékek csoportjával tüzel nagy távolságra lévő földi célpontokra. block.cyclone.description = Robbanó lövedékeket lő közeli ellenségekre. -block.spectre.description = Nagy, a páncélon is áthatoló lövedékekkel tüzel légi és földi célpontokra is. -block.meltdown.description = Feltöltődés után folyamatos lézersugarat lő a közeli ellenségekre. Hűtést igényel. -block.foreshadow.description = 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.spectre.description = Nagy lövedékekkel tüzel légi és földi célpontokra. +block.meltdown.description = Feltöltődés után folyamatos lézersugarat lő a közeli ellenségekre. A működéséhez hűtőfolyadékot igényel. +block.foreshadow.description = Egy nagy villámot lő ki egy nagy távolságra lévő célpontra. A magasabb maximális életerővel rendelkező ellenségeket részesíti előnyben. +block.repair-point.description = Folyamatosan javítja a legközelebbi sérült egységet a közelében. block.segment.description = Megsemmisíti a beérkező lövedékeket. A lézerrel szemben hatástalan. -block.parallax.description = Vonónyalábot bocsát ki, amivel magához vonzza és sebzi a repülő egységeket. -block.tsunami.description = Erős folyadékhullámokat lő az ellenségre. Eloltja a tüzet, ha Vízzel van feltöltve. -block.silicon-crucible.description = Szilíciumot finomít Homokból és Szénből. Piratitot használ kiegészítő hőforrásként. Forró környezetben hatékonyabb. -block.disassembler.description = Ritka ásványi elemeket választ ki Salakból. Képes Tóriumot kiválasztani. -block.overdrive-dome.description = Megnöveli a környező gyárak termelési sebességét. Tóritkvarcot és Szilíciumot igényel. -block.payload-conveyor.description = Képes egységeket szállítani. -block.payload-router.description = Háromfelé osztja szét a beérkező egységeket. -block.ground-factory.description = Földi egységeket gyárt. A kész egységek azonnal 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.parallax.description = Vonónyalábot bocsát ki, amivel magához vonzza, és közben sebzi a légi egységeket. +block.tsunami.description = Erős folyadékhullámot lő az ellenségre. Eloltja a tüzeket, ha vízzel van ellátva. +block.silicon-crucible.description = Szilíciumot finomít homokból és szénből, piratitot használ kiegészítő hőforrásként. Forró környezetben még hatékonyabb. +block.disassembler.description = Ritka ásványi összetevőire bontja le a salakot, alacsony hatékonysággal. Képes tóriumot kinyerni. +block.overdrive-dome.description = Megnöveli a környező épületek termelési sebességét. A működtetése tóritkvarcot és szilíciumot igényel. +block.payload-conveyor.description = Nagy méretű terhet mozgat, például gyárakból érkező egységeket. Mágneses. Használható súlytalanságban. +block.payload-router.description = Háromfelé osztja szét a beérkező terhet. Rendezőként is szolgál, ha van megadva szűrő. Mágneses. Használható súlytalanságban. +block.ground-factory.description = Földi egységeket gyárt. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. +block.air-factory.description = Légi egységeket gyárt. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. +block.naval-factory.description = Vízi egységeket gyárt. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. block.additive-reconstructor.description = Kettes szintre fejleszti a beérkező egységeket. block.multiplicative-reconstructor.description = Hármas szintre fejleszti a beérkező egységeket. block.exponential-reconstructor.description = Négyes szintre fejleszti a beérkező egységeket. -block.tetrative-reconstructor.description = Ötös szintre fejleszti a beérkező egységeket. -block.switch.description = Kétállású kapcsoló. Az állapota leolvasható és módosítható processzorokkal. -block.micro-processor.description = Logikai műveletek sorozatát hajtja végre végtelenítve. Használható egységek, vagy épületek irányítására is. -block.logic-processor.description = Logikai műveletek sorozatát hajtja végre végtelenítve. Használható egységek, vagy épületek irányítására is. Gyorsabb 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 Támaszpontokat 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. +block.tetrative-reconstructor.description = Ötös szintre (a végsőre) fejleszti a beérkező egységeket. +block.switch.description = Kétállású kapcsoló. Az állapota logikai processzorokkal olvasható és vezérelhető. +block.micro-processor.description = Logikai műveletek sorozatát hajtja végre egy ciklusban. Egységek vagy épületek irányítására használható. +block.logic-processor.description = Logikai műveletek sorozatát hajtja végre egy ciklusban. Egységek vagy épületek irányítására használható. Gyorsabb mint a mikroprocesszor. +block.hyper-processor.description = Logikai műveletek sorozatát hajtja végre egy ciklusban. Egységek vagy épületek irányítására használható. Gyorsabb mint a logikai processzor. +block.memory-cell.description = Információt tárol egy logikai processzor számára. +block.memory-bank.description = Információt tárol egy logikai processzor számára. Nagy kapacitású. +block.logic-display.description = Tetszőleges ábrákat jelenít meg egy logikai processzor alapján. +block.large-logic-display.description = Tetszőleges ábrákat jelenít meg egy logikai processzor alapján. +block.interplanetary-accelerator.description = Hatalmas elektromágneses sínágyútorony. Képes a támaszpontokat szökési sebességre gyorsítani a bolygóközi bevetéshez. +block.repair-turret.description = Folyamatosan javítja a közelében lévő legközelebbi sérült egységet. Opcionálisan elfogad hűtőfolyadékot. #Erekir block.core-bastion.description = Támaszpont. Páncélozott. Ha elpusztul, a szektor elveszett. block.core-citadel.description = Támaszpont. Nagyon jól páncélozott. Több nyersanyagot tárol, mint a Bástya. block.core-acropolis.description = Támaszpont. Kivételesen jól páncélozott. Több nyersanyagot tárol, mint a Citadella. -block.breach.description = Átütő erejű Berillium-, vagy Volfrámlövedé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.breach.description = Átütő erejű berillium- vagy volfrámlövedéket lő az ellenséges célpontokra. +block.diffuse.description = Széles kúpban lő ki lövedékeket. Visszalöki az ellenséges célpontokat. +block.sublimate.description = Folyamatos lángcsóvát lő az ellenséges célpontokra. Átüti a páncélt. +block.titan.description = Hatalmas robbanóanyagú tüzérségi lövedéket lő földi célpontokra. Hidrogént igényel. +block.afflict.description = Hatalmas töltésű repeszlövedék-gömböket lő ki. Hőt igényel. +block.disperse.description = Égő repeszlövedékeket lő légi célpontokra. +block.lustre.description = Lassan mozgó, egyszerre egy célpontra ható lézert lő az ellenséges célpontokra. +block.scathe.description = Nagy erejű rakétát lő ki 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ó épületeket. Nagy mennyiségű Áramot igényel. +block.malign.description = Lézertöltetekből álló célzott sortüzet zúdít az ellenséges célpontokra. Jelentős fűtést igényel. +block.silicon-arc-furnace.description = A homokot és a grafitot szilíciummá finomítja. +block.oxidation-chamber.description = A berilliumot és az ózont oxiddá alakítja. Melléktermékként hőt bocsát ki. +block.electric-heater.description = Fűti a vele szemben álló épületeket. Nagy mennyiségű áramot igényel. block.slag-heater.description = Fűti a vele szemben álló épületeket. Salakot igényel. block.phase-heater.description = Fűti a vele szemben álló épületeket. Tóritkvarcot igényel. -block.heat-redirector.description = Átirányítja a felgyülemlett Hőt más épületekbe. -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 olvaszt. Hőt igényel. -block.phase-synthesizer.description = Tóriumból, Homokból és Ózonból Tóritkvarcot szintetizál. Hőt igényel. -block.carbide-crucible.description = A Grafitot és a Volfrámot Karbiddá olvasztja. Hőt igényel. -block.cyanogen-synthesizer.description = 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.heat-redirector.description = Más blokkokba irányítja a felgyülemlett hőt. +block.heat-router.description = A felgyülemlett hőt három kimeneti irányba osztja. +block.electrolyzer.description = A vizet hidrogénné és ózonná alakítja. A keletkező gázokat két ellentétes irányba adja ki, melyeket a megfelelő színek jelölik. +block.atmospheric-concentrator.description = Koncentrálja a légkörben lévő nitrogént. Hőt igényel. +block.surge-crucible.description = Salakból és szilíciumból elektrometált olvaszt. Hőt igényel. +block.phase-synthesizer.description = Tóriumból, homokból és ózonból tóritkvarcot szintetizál. Hőt igényel. +block.carbide-crucible.description = A grafitot és a volfrámot karbiddá olvasztja. Hőt igényel. +block.cyanogen-synthesizer.description = Arkicitből és grafitból diciánt szintetizál. Hőt igényel. +block.slag-incinerator.description = Elégeti a nem illékony nyersanyagokat vagy folyadékokat. Salakot igényel. +block.vent-condenser.description = A kürtőkből kiáramló gázokat vízzé kondenzálja. Áramot igényel. +block.plasma-bore.description = Ércfallal szemben elhelyezve, korlátlanul termel nyersanyagokat. Kis mennyiségű áramot igényel.\nHidrogén felhasználásával növelhető a hatékonysága. +block.large-plasma-bore.description = Egy nagyobb plazmafúró. Képes a volfrám és a tórium bányászatára. Hidrogént és áramot igényel.\nNitrogén felhasználásával növelhető a hatékonysága. +block.cliff-crusher.description = Felőrli a falakat, és korlátlan mennyiségű homokot termel. Áramot igényel. A hatékonysága a fal típusától függően változik. +block.impact-drill.description = Ha ércre helyezik, korlátlan ideig, sorozatokban termeli ki a nyersanyagokat. Áramot és vizet igényel. +block.eruption-drill.description = Továbbfejlesztett ütvefúró. Képes tóriumot bányászni. Hidrogént igényel. +block.reinforced-conduit.description = Előre szállítja a folyadékokat. Nem fogad nem csővezetékes bemeneteket oldalról. block.reinforced-liquid-router.description = Egyenletesen osztja el a folyadékokat minden oldalra. block.reinforced-liquid-tank.description = Nagy mennyiségű folyadékot tárol. block.reinforced-liquid-container.description = Jelentős mennyiségű folyadékot tárol. -block.reinforced-bridge-conduit.description = Folyadé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.reinforced-bridge-conduit.description = Folyadékot szállít épületek és terepakadályok fölött. +block.reinforced-pump.description = Folyadékot szivattyúz és ad ki. Hidrogént igényel. block.beryllium-wall.description = Megvédi az építményeket az ellenséges lövedékektől. block.beryllium-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől. block.tungsten-wall.description = Megvédi az építményeket az ellenséges lövedékektől. @@ -2184,212 +2237,213 @@ block.carbide-wall.description = Megvédi az építményeket az ellenséges löv block.carbide-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől. block.reinforced-surge-wall.description = Megvédi az építményeket az ellenséges lövedékektől, a lövedékekkel való érintkezésekor időszakosan elektromos íveket bocsát ki. block.reinforced-surge-wall-large.description = Megvédi az építményeket az ellenséges lövedékektől, a lövedékekkel való érintkezésekor időszakosan elektromos íveket bocsát ki. -block.shielded-wall.description = Megvédi az építményeket az ellenséges lövedékektől. Olyan pajzsot képez, amely a legtöbb lövedéket elnyeli, ha Áramot kap. Vezeti az Áramot. -block.blast-door.description = Egy fal, amely kinyílik, ha a szövetséges földi egységek vannak a közelében. Kézzel nem irányítható. +block.shielded-wall.description = Megvédi az építményeket az ellenséges lövedékektől. Olyan pajzsot képez, amely a legtöbb lövedéket elnyeli, ha az áramellátás biztosítva van. Vezeti az áramot. +block.blast-door.description = Egy fal, amely kinyílik, ha szövetséges földi egységek vannak a közelében. Kézzel nem irányítható. block.duct.description = Előre mozgatja a nyersanyagokat. Csak egyetlen nyersanyag tárolására alkalmas. block.armored-duct.description = Előre mozgatja a nyersanyagokat. Csak szállítószalagos bemeneteket fogad el oldalról. -block.duct-router.description = A nyersanyagokat egyenlően osztja el három irányba. Csak 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ő épületekből. Támaszpontokbó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.duct-router.description = A nyersanyagokat egyenlően osztja el három irányba. Csak hátulról fogad el nyersanyagokat. Nyersanyagválogatóként is beállítható. +block.overflow-duct.description = Csak akkor ad ki nyersanyagot oldalra, ha előrefelé már nem tud. +block.duct-bridge.description = Nyersanyagokat szállít épületek és terepakadályok fölött. +block.duct-unloader.description = A kiválasztott nyersanyagokat kirakodja a mögötte lévő épületekből. Támaszpontokból nem tud kirakodni. +block.underflow-duct.description = A túlcsorduló szállítószalag ellentettje. Csak akkor ad ki nyersanyagot előrefelé, ha oldalra már nem tud. +block.reinforced-liquid-junction.description = Csomópontként működik két egymást keresztező csővezeték között. +block.surge-conveyor.description = A nyersanyagokat rakományokban mozgatja. Árammal felgyorsítható. Vezeti az áramot. +block.surge-router.description = Egyenletesen osztja el a nyersanyagokat három irányba az elektrometál-szállítószalagról. Árammal felgyorsítható. Vezeti az Áramot. block.unit-cargo-loader.description = Teherszállító drónokat épít. A drónok automatikusan szétosztják a nyersanyagokat a megfelelő szűrővel rendelkező kirakodási pontokra. block.unit-cargo-unload-point.description = A teherszállító drónok kirakodási pontjaként működik. Csak a kiválasztott szűrőnek megfelelő nyersanyagokat fogadja be. -block.beam-node.description = Az Áramot merőlegesen vezeti a többi épülethez. Kis mennyiségű energiát tárol. -block.beam-tower.description = Az Áramot merőlegesen vezeti a többi épülethez. 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.beam-node.description = Merőlegesen áramot vezet a többi blokkhoz. Kis mennyiségű áramot tárol. +block.beam-tower.description = Merőlegesen áramot vezet a többi blokkhoz. Nagy mennyiségű áramot tárol. Nagy hatótávolságú. +block.turbine-condenser.description = Kürtőkre helyezve áramot termel. Kis mennyiségű vizet termel. +block.chemical-combustion-chamber.description = Áramot termel arkicitből és ózonból. +block.pyrolysis-generator.description = Nagy mennyiségű áramot termel arkicitből és salakból. Melléktermékként vizet termel. +block.flux-reactor.description = Fűtés hatására nagy mennyiségű áramot termel. Stabilizátorként diciánt igényel. Az áramtermelés és a diciánigény arányos a hőbevitellel.\nFelrobban, ha nem áll rendelkezésre elegendő dicián. +block.neoplasia-reactor.description = Arkicit, víz és tóritkvarc felhasználásával nagy mennyiségű áramot termel. Melléktermékként hőt és veszélyes neoplazmát termel.\nFelrobban, ha a neoplazmát nem távolítják el a reaktorból csővezetékeken keresztül. block.build-tower.description = Automatikusan újjáépíti a hatósugarában lévő építményeket, és segíti a többi egységet az építkezésben. -block.regen-projector.description = Lassan javítja a szövetséges építményeket egy négyzet alakú kerületben. Hidrogént igényel. -block.reinforced-container.description = Kis mennyiségű nyersanyagot tud tárolni. A tartalma kirakodók segítségével nyerhető ki. Nem növeli a Támaszpont tárolókapacitását. -block.reinforced-vault.description = Nagy mennyiségű nyersanyagot tud tárolni. A tartalma kirakodók segítségével nyerhető ki. Nem növeli a Támaszpont tárolókapacitását. -block.tank-fabricator.description = Stell egységeket épít. A kimeneti egységek közvetlenül 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.regen-projector.description = Lassan javítja a szövetséges építményeket egy négyzet alakú területen. Hidrogént igényel.\nTóritkvarc felhasználásával növelhető a hatékonysága. +block.reinforced-container.description = Kis mennyiségű nyersanyagot tud tárolni. A tartalma kirakodók segítségével nyerhető ki. Nem növeli a támaszpont tárolókapacitását. +block.reinforced-vault.description = Nagy mennyiségű nyersanyagot tud tárolni. A tartalma kirakodók segítségével nyerhető ki. Nem növeli a támaszpont tárolókapacitását. +block.tank-fabricator.description = Stell egységeket épít. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. +block.ship-fabricator.description = Elude egységeket épít. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. +block.mech-fabricator.description = Merui egységeket épít. Az elkészült egységek azonnal hadra foghatóak, vagy újratervezőkben továbbfejleszthetőek. +block.tank-assembler.description = Nagy méretű tankokat állít össze a beadott blokkokból és egységekből. A kimeneti szint modulok hozzáadásával növelhető. +block.ship-assembler.description = Nagy méretű repülőgépeket állít össze a beadott blokkokból és egységekből. A kimeneti szint modulok hozzáadásával növelhető. +block.mech-assembler.description = Nagy méretű mecheket állít össze a beadott blokkokból és egységekből. A kimeneti szint modulok hozzáadásával növelhető. +block.tank-refabricator.description = Kettes szintre fejleszti a beérkező tank típusú egységeket. +block.ship-refabricator.description = Kettes szintre fejleszti a beérkező repülőgép típusú egységeket. +block.mech-refabricator.description = Kettes szintre fejleszti a beérkező mech típusú egységeket. +block.prime-refabricator.description = Hármas szintre fejleszti a beérkező tank típusú egységeket. +block.basic-assembler-module.description = Növeli az összeszerelő szintjét, ha annak az építési határvonala mellé helyezik. Áramot igényel. Használható nyersanyagrakomány-bemenetként. +block.small-deconstructor.description = Lebontja a beadott építményeket és egységeket. Visszaadja az építési költség 100%-át. block.reinforced-payload-conveyor.description = Előre mozgatja a rakományokat. -block.reinforced-payload-router.description = A rakományokat szomszédos a blokkokba osztja szét. Szűrő beállítása esetén válogatóként is funkcionál. -block.payload-mass-driver.description = Nagy hatótávolságú 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.reinforced-payload-router.description = A rakományokat szomszédos a blokkokba osztja szét. Szűrő beállítása esetén válogatóként működik. +block.payload-mass-driver.description = Nagy hatótávolságú rakományszállító épület. A kapott rakományokat egy másik, hozzákapcsolt rakomány-tömegmozgatónak lövi át. +block.large-payload-mass-driver.description = Nagy hatótávolságú rakományszállító épület. A kapott rakományokat egy másik, hozzákapcsolt rakomány-tömegmozgatónak lövi át. block.unit-repair-tower.description = Javítja a közelében lévő összes egységet. Ózont igényel. block.radar.description = Fokozatosan feltárja a terepet és az ellenséges egységeket egy nagy sugarú körben. Áramot igényel. -block.shockwave-tower.description = Sérülést okoz és megsemmisíti az ellenséges lövedékeket egy egységsugarú körön belül. Cianogént igényel. +block.shockwave-tower.description = Sérülést okoz és megsemmisíti az ellenséges lövedékeket egy körön belül. Diciánt igényel. block.canvas.description = Egy egyszerű képet jelenít meg egy előre meghatározott palettával. Szerkeszthető. -unit.dagger.description = Egyszerű töltényeket lő közeli ellenségekre +unit.dagger.description = Szokásos lövedékeket lő a közeli ellenségekre. unit.mace.description = Lángnyelveket küld a közeli ellenségek felé. -unit.fortress.description = Nagy hatótávú rakétákat lő földi célpontokra. +unit.fortress.description = Nagy hatótávolságú rakétákat lő földi célpontokra. unit.scepter.description = Töltött lövedékek záporát lövi közeli ellenségekre. unit.reign.description = Méretes átütő 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ő, 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ő erejű lézert lő az ellenségre. A legtöbb terepakadályt átlépi. -unit.flare.description = Egyszerű töltényeket lő közeli földi célpontokra. -unit.horizon.description = Bombákat szór földi célpontokra. +unit.nova.description = Lézerlövedékeket lő ki, amelyek sebzik az ellenséges célpontokat, és megjavítják a szövetséges épületeket. Repülésre alkalmas. +unit.pulsar.description = Elektromos szikrákat szór, amelyek sebzik az ellenséges célpontokat, és megjavítják a szövetséges épületeket. Repülésre alkalmas. +unit.quasar.description = Átütő erejű lézersugarakat lő, amelyek sebzik az ellenséges célpontokat, és megjavítják a szövetséges épületeket. Repülésre alkalmas. Pajzsa van. +unit.vela.description = Folyamatos lézernyalábot bocsát ki, amelyek sebzik az ellenséges célpontokat, tüzet okoznak, és megjavítják a szövetséges épületeket. Repülésre alkalmas. +unit.corvus.description = Hatalmas lézersugarat lő, amelyek sebzik az ellenséges célpontokat, és megjavítják a szövetséges épületeket. Átlépi a legtöbb terepakadályt. +unit.crawler.description = Az ellenséghez rohan és megsemmisíti önmagát, nagy robbanást okozva. +unit.atrax.description = Bénító salakgolyókat lő a földi célpontokra. A legtöbb terepakadályt átlépi. +unit.spiroct.description = Lézersugarakkal elszívja az ellenséges célpontok életerejét, miközben javítja önmagát. A legtöbb terepakadályt átlépi. +unit.arkyid.description = Nagy lézersugarakkal elszívja az ellenséges célpontok életerejét, miközben javítja önmagát. A legtöbb terepakadályt átlépi. +unit.toxopid.description = Kazettás elektromos bombákat és átütő erejű lézert lő az ellenségre. A legtöbb terepakadályt átlépi. +unit.flare.description = Szokásos lövedékeket lő közeli földi célpontokra. +unit.horizon.description = Kazettás bombákat szór földi célpontokra. unit.zenith.description = Rakétasorozatokat lő közeli ellenségekre. unit.antumbra.description = Lövedékek záporát zúdítja minden közeli ellenségre. unit.eclipse.description = Két átütő erejű lézersugarat és rengeteg lövedéket zúdít minden közeli ellenségre. -unit.mono.description = Automatikusan bányászik Rezet és Ólmot a Támaszpontba juttatva őket. -unit.poly.description = Automatikusan újjáépíti az elpusztult épületeket és segít más egységeknek építkezni. -unit.mega.description = Automatikusan javítja a sérült épületeket. Képes kis épületek és földi egységek szállítására. -unit.quad.description = Nagy bombákat szór földi célpontokra, amelyek sebzik az ellenséget, de javítják a szövetséges épületeket. Képes közepes méretű földi egységek szállítására. -unit.oct.description = Megvédi a közeli szövetségeseket regeneráló pajzsával. Képes szállítani a legtöbb földi egységet. +unit.mono.description = Automatikusan rezet és ólmot bányászik, a támaszpontba juttatva őket. +unit.poly.description = Automatikusan újjáépíti az elpusztult épületeket és segít más egységeknek az építkezésben. +unit.mega.description = Automatikusan javítja a sérült épületeket. Kis blokkok és földi egységek szállítására képes. +unit.quad.description = Plazmabombákat szór földi célpontokra, amelyek sebzik az ellenséget, de javítják a szövetséges épületeket. Közepes méretű földi egységek szállítására képes. +unit.oct.description = Megvédi a közeli szövetségeseket egy regeneráló pajzssal. A legtöbb földi egység szállítására képes. unit.risso.description = Rakéták és lövedékek záporát zúdítja minden közeli ellenségre. -unit.minke.description = Tüzérségi lövedékeket és egyszerű töltényeket lő közeli földi célpontokra. -unit.bryde.description = Nagy távolságú tüzérségi rakétákat lő az ellenségre. +unit.minke.description = Tüzérségi és szokásos lövedékeket lő közeli földi célpontokra. +unit.bryde.description = Nagy távolságú tüzérségi lövedékeket és rakétákat lő az ellenségre. unit.sei.description = Rakéták és páncéltörő lövedékek záporát zúdítja az ellenségre. unit.omura.description = Nagy hatótávolságú átütő erejű lövedékeket lő az ellenségre. Flare egységeket gyárt. -unit.alpha.description = Megvédi a Bástyát az ellenségtől. Épít. -unit.beta.description = Megvédi az Alapítványt az ellenségtől. Épít. -unit.gamma.description = Megvédi a Magnumot az ellenségtől. Épít. +unit.alpha.description = Megvédi a Szilánk támaszpontot az ellenségtől. Épületeket épít. +unit.beta.description = Megvédi az Alapítvány támaszpontot az ellenségtől. Épületeket épít. +unit.gamma.description = Megvédi at Atommag támaszpontot az ellenségtől. Épületeket épít. unit.retusa.description = Célkövető torpedókat lő ki minden közeli ellenségre. Javítja a szövetséges egységeket. -unit.oxynoe.description = Plazma lángcsóvát lő az ellenséges célpontokra. Célba veszi az ellenséges lövedékeket egy pontvédelmi toronnyal. -unit.cyerce.description = Célpont kereső kazettás rakétákat lő ki az ellenségre. Javítja a szövetséges egységeket. +unit.oxynoe.description = Épületjavító lángcsóvát lő az ellenséges célpontokra. Célba veszi az ellenséges lövedékeket egy pontvédelmi toronnyal. +unit.cyerce.description = Célkereső kazettás rakétákat lő ki az ellenségre. Javítja a szövetséges egységeket. unit.aegires.description = Elektromosan sokkolja az összes ellenséges egységet és építményt, amely az energiamezőjébe lép. Javítja az összes szövetségest. -unit.navanax.description = Robbanékony EMP lövedékeket lő ki, jelentős károkat okozva az ellenséges energiahálózatokban és megjavítva a szövetségesek építményeit. Megolvasztja a közeli ellenséget 4 autonóm lézertoronnyal. +unit.navanax.description = Robbanékony EMI-lövedékeket lő ki, jelentős károkat okozva az ellenséges energiahálózatokban, és megjavítva a szövetségesek építményeit. Szétolvasztja a közeli ellenséges célpontokat a 4 autonóm lézertornyával. #Erekir -unit.stell.description = Normál lövedékeket lő ki az ellenséges célpontokra. +unit.stell.description = Szokásos lövedékeket lő ki az ellenséges célpontokra. unit.locus.description = Változatos lövedékeket lő ki az ellenséges célpontokra. unit.precept.description = Átütő erejű kazettás lövedékeket lő ki az ellenséges célpontokra. -unit.vanquish.description = Nagy átütési képességű, hasítólövedékeket lő ki az ellenséges célpontokra. -unit.conquer.description = Nagy átütési képességű golyózáport lő ki az ellenséges célpontokra. +unit.vanquish.description = Nagy, átütő erejű hasítólövedékeket lő ki az ellenséges célpontokra. +unit.conquer.description = Nagy, átütő erejű golyózáport lő ki az ellenséges célpontokra. unit.merui.description = Nagy hatótávolságú ágyúkkal lövi az ellenséges szárazföldi célpontokat. A legtöbb terepakadályt átlépi. unit.cleroi.description = Kettős lövedékeket lő ki az ellenséges célpontokra. Célba veszi az ellenséges lövedékeket a pontvédelmi tornyokkal. A legtöbb terepakadályt átlépi. unit.anthicus.description = Nagy hatótávolságú célkövető rakétákat lő ki az ellenséges célpontokra. A legtöbb terepakadályt átlépi. -unit.tecta.description = Célkövető 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.tecta.description = Célkövető plazmarakétákat lő ki az ellenséges célpontokra. Irányított pajzzsal védi magát. A legtöbb terepakadályt átlépi. unit.collaris.description = Nagy hatótávolságú repeszágyúval lövi az ellenséges célpontokat. A legtöbb terepakadályt átlépi. -unit.elude.description = Célkövető golyópárokat lő ki az ellenséges célpontokra. Képes folyadéktestek felett lebegni. +unit.elude.description = Célkövető golyópárokat lő ki az ellenséges célpontokra. Lebeg a folyadékfelületeket felett. unit.avert.description = Forgó lövedékpárokat lő ki az ellenséges célpontokra. unit.obviate.description = Forgó, páros villámgömböket lő ki az ellenséges célpontokra. -unit.quell.description = 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ó épületeket. -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ó épületeket. -unit.evoke.description = A Bástya védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. -unit.incite.description = A Citadella védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. -unit.emanate.description = Az Akropolisz védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. +unit.quell.description = Nagy hatótávolságú célkövető rakétát lő ki az ellenséges célpontokra. Elnyomja az ellenséges szerkezetjavító épületeket. Csak földi célpontokat támad. +unit.disrupt.description = Nagy hatótávolságú célkövető elnyomó rakétát lő ki az ellenséges célpontokra. Elnyomja az ellenséges szerkezetjavító épületeket. Csak földi célpontokat támad. +unit.evoke.description = A Bástya védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. 2×2-es épületek szállítására képes. +unit.incite.description = A Citadella védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. 2×2-es épületek szállítására képes. +unit.emanate.description = Az Akropolisz védelmére szolgáló építményeket épít. Sugárral javítja az építményeket. 2×2-es épületek szállítására képes. lst.read = Szám kiolvasása egy összekapcsolt memóriacellából. -lst.write = Írj egy számot egy összekapcsolt memóriacellába. -lst.print = Szöveg hozzáadása a nyomtatási pufferhez.\nNem jelenít meg semmit, amíg a [accent]Kiírási Művelet[] használatban van. -lst.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.write = Szám beírása egy összekapcsolt memóriacellába. +lst.print = Szöveg hozzáadása a nyomtatási pufferhez.\nA [accent]Print Flush[] használatáig nem jelenít meg semmit. +lst.format = A szövegpufferben lévő következő helyőrző cseréje egy értékre.\nNem csinál semmit, ha a helyőrzőminta érvénytelen.\nHelyőrzőminta: "{[accent]number 0-9[]}"\nPélda:\n[accent]print "test {0}"\nformat "example" +lst.draw = Művelet hozzáadása a rajzpufferhez.\nA [accent]Draw Flush[] használatáig nem jelenít meg semmit. +lst.drawflush = Sorba állított [accent]Draw[] műveletek megjelenítése a kijelzőn. +lst.printflush = Sorba állított [accent]Print[] műveletek kiírása egy üzenetblokkba. +lst.getlink = A processzor hivatkozásának lekérése index alapján. 0-nál kezdődik. lst.control = Épület irányítása. -lst.radar = Beméri az egységeket az épület körül egy bizonyos hatótávolságban. +lst.radar = Egységek megkeresése az épület körül egy bizonyos hatótávolságban. lst.sensor = Adatok lekérése egy épületről vagy egységről. lst.set = Egy változó beállítása. -lst.operation = Végezzen el egy műveletet 1-2 változóval. +lst.operation = Egy művelet elvégzése 1-2 változóval. lst.end = Ugrás az utasítási verem tetejére. -lst.wait = Várjon bizonyos számú másodpercet. -lst.stop = A processzor program futtatásának leállítása. -lst.lookup = Egy nyersanyag/folyadék/egység/épület típus keresése azonosító alapján.\nAz egyes típusok összesített száma a következőkkel érhető el:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] +lst.wait = Várakozás bizonyos számú másodpercig. +lst.stop = A processzor futtatásának leállítása. +lst.lookup = Egy nyersanyag/folyadék/egység/épület típusának keresése azonosító alapján.\nAz egyes típusok összesített száma a következőkkel érhető el:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[]\nA fordított művelethez használd az objektum [accent]@id[] értékét. lst.jump = Feltételes ugrás egy másik utasításra. -lst.unitbind = Összekapcsolás a következő egységtípussal és tárolja a következőben: [accent]@unit[]. -lst.unitcontrol = Az aktuálisan összekapcsolt egység vezérlése. -lst.unitradar = Egységek keresése az aktuálisan összekapcsolt egység körül. +lst.unitbind = Összekapcsolás a következő egységtípussal, és tárolás a következőben: [accent]@unit[]. +lst.unitcontrol = A jelenleg összekapcsolt egység vezérlése. +lst.unitradar = Egységek keresése a jelenleg összekapcsolt egység körül. lst.unitlocate = Egy adott típusú pozíció/épület keresése bárhol a pályán.\nÖsszekapcsolt egységet igényel. lst.getblock = Csempeadatok lekérdezése tetszőleges helyen. lst.setblock = Csempeadatok beállítása tetszőleges helyen. -lst.spawnunit = Egység lerakása egy helyen. -lst.applystatus = Állapothatás alkalmazása, vagy törlése egy egységről. -lst.weathersensor = Check if a type of weather is active. -lst.weatherset = Set the current state of a type of weather. -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, Támaszpontok, 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.spawnunit = Egység lerakása az adott helyen. +lst.applystatus = Állapothatás alkalmazása vagy törlése egy egységről. +lst.weathersense = Ellenőrzés, hogy egy bizonyos típusú időjárás aktív-e. +lst.weatherset = Az időjárástípus jelenlegi állapotának megadása. +lst.spawnwave = Egy hullám indítása. +lst.explosion = Robbanás létrehozása az adott helyen. +lst.setrate = A processzor végrehajtási sebességének beállítása utasítás/órajelciklusban. +lst.fetch = Egységek, támaszpontok, játékosok, vagy épületek keresése index szerint.\nAz indexek 0-tól indulnak és a visszaadott számuknál végződnek. +lst.packcolor = Egyetlen számba tömöríti a [0, 1] RGBA komponenseket a rajzoláshoz vagy szabálymeghatározáshoz. +lst.setrule = Játékszabály beállítása. lst.flushmessage = Üzenet megjelenítése a képernyőn a szövegpufferből.\nMegvárja, amíg az előző üzenet befejeződik. -lst.cutscene = Manipulálja a játékos kameráját. +lst.cutscene = A játékos kamerájának mozgatása. lst.setflag = Egy globális jelölő beállítása, amely minden processzor által olvasható. -lst.getflag = Ellenőrzi, hogy egy globális jelölő be van-e állítva. -lst.setprop = Egy egység vagy épület tulajdonságát állítja be. -lst.effect = Létrehoz egy részecske hatást. -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. +lst.getflag = Ellenőrzés, hogy egy globális jelölő be van-e állítva. +lst.setprop = Beállítja egy egység vagy épület tulajdonságát. +lst.effect = Részecskehatás létrehozása. +lst.sync = Egy változó szinkronizálása a hálózaton keresztül.\nMásodpercenként legfeljebb 20-szor hívható meg. +lst.makemarker = Új logikai jelölő létrehozása a világban.\nMeg kell adni egy azonosítót a jelölő azonosításához.\nA jelölők száma jelenleg világonként 20 000-re van korlátozva. +lst.setmarker = Egy jelölő tulajdonságának beállítása.\nA használt azonosítónak meg kell egyeznie a Make Marker utasításban megadottal.\nA [accent]null []értékek figyelmen kívül lesznek hagyva. +lst.localeprint = Hozzáadja a pálya nyelvi csomagjainak tulajdonságértékét a szövegpufferhez.\nA pálya nyelvi csomagjainak beállításait a térképszerkesztőben ellenőrizheted: [accent]Pályainformációk > Nyelvi csomagok[].\nHa a kliens egy mobileszköz, akkor először próbáld kiíratni a „.mobile” végződésű tulajdonságot. lglobal.false = 0 lglobal.true = 1 -lglobal.null = nulla -lglobal.@pi = A pi matematikai állandó (3.141...) +lglobal.null = null +lglobal.@pi = A pí 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.@degToRad = Ezzel a számmal szoroz a fok radiánra való átalakításához +lglobal.@radToDeg = Ezzel a számmal szoroz a radián fokra való átalakításához -lglobal.@time = Az aktuális mentés játékideje, milliszekundumban -lglobal.@tick = Az aktuális mentés játékideje, tick-ben (1 másodperc = 60 tick) -lglobal.@second = Az aktuális mentés játékideje, másodpercben -lglobal.@minute = Az aktuális mentés játékideje, percben -lglobal.@waveNumber = Az aktuális hullám száma, ha a hullámok engedélyezve vannak +lglobal.@time = A jelenelgi mentés játékideje ezredmásodpercben +lglobal.@tick = Az aktuális mentés játékideje, órajelciklusban (1 másodperc = 60 órajelciklus) +lglobal.@second = A jelenelgi mentés játékideje másodpercben +lglobal.@minute = A jelenelgi mentés játékideje percben +lglobal.@waveNumber = A jelenlegi hullám száma, ha a hullámok engedélyezve vannak lglobal.@waveTime = Visszaszámláló a hullámokhoz, másodpercben lglobal.@mapw = A pálya szélessége csempékben lglobal.@maph = A pálya magassága csempékben lglobal.sectionMap = Pálya lglobal.sectionGeneral = Általános -lglobal.sectionNetwork = Hálózati/kliensoldali [Csak Világprocesszor] +lglobal.sectionNetwork = Hálózati/kliensoldali [Csak világprocesszor] lglobal.sectionProcessor = Processzor -lglobal.sectionLookup = Keres +lglobal.sectionLookup = Keresés lglobal.@this = A kódot végrehajtó logikai blokk lglobal.@thisx = A kódot végrehajtó blokk X koordinátája lglobal.@thisy = A kódot végrehajtó blokk Y koordinátája -lglobal.@links = Az ehhez a processzorhoz kapcsolt épületek összesített száma -lglobal.@ipt = A processzor utasítás végrehajtási sebessége tick-ben (60 tick = 1 másodperc) +lglobal.@links = Az ehhez a processzorhoz kapcsolt épületek száma összesen +lglobal.@ipt = A processzor végrehajtási sebessége órajelciklusban (60 órajelciklus = 1 másodperc) -lglobal.@unitCount = A játékban található egysé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.@unitCount = A játékban található egységtípusok száma összesen; a keresés utasítással együtt használatos +lglobal.@blockCount = A játékban található blokktípusok száma összesen; a keresés utasítással együtt használatos +lglobal.@itemCount = A játékban található nyersanyagtípusok száma összesen; a keres utasítással együtt használatos +lglobal.@liquidCount = A játékban található folyadéktípusok száma összesen; a keresés utasítással együtt használatos lglobal.@server = Igaz, ha a kód egy kiszolgálón, vagy egyjátékos módban fut, egyébként hamis lglobal.@client = Igaz, ha a kód egy kiszolgálóhoz kapcsolódott kliensen fut -lglobal.@clientLocale = A kódot futtató kliens nyelvi beállítása. Például: hu_HU +lglobal.@clientLocale = A kódot futtató kliens területi beállítása. Például: hu_HU lglobal.@clientUnit = A kódot futtató kliens egysége -lglobal.@clientName = A kódot futtató kliens játékos neve -lglobal.@clientTeam = A kódot futtató kliens csapat azonosítója +lglobal.@clientName = A kódot futtató kliens játékosneve +lglobal.@clientTeam = A kódot futtató kliens csapatazonosítója lglobal.@clientMobile = Igaz, ha a kódot futtató kliens egy mobil eszköz, egyébként hamis logic.nounitbuild = [red]Az egységépítési logika itt nem megengedett. -lenum.type = Az épület/egység típusa.\nPéldául bármilyen elosztó esetében ez a [accent]@router[] értéket adja vissza.\nNem karakterlánc. -lenum.shoot = Lőj egy pontra. -lenum.shootp = Lőj egy egységre/épületre sebesség előrejelzéssel. -lenum.config = Épületkonfiguráció, például nyersanyag Válogató. -lenum.enabled = Attól függ, hogy a blokk engedélyezve van-e. +lenum.type = Az épület/egység típusa.\nPéldául bármilyen elosztó esetén a [accent]@router[] értéket adja vissza.\nNem karakterlánc. +lenum.shoot = Lövés egy adott pontra. +lenum.shootp = Lövés egy egységre/épületre sebesség-előrejelzéssel. +lenum.config = Épületkonfiguráció, például nyersanyag-válogató. +lenum.enabled = Engedélyezve van-e a blokk. +laccess.currentammotype = Egy lövegtorony jelenlegi lőszer nyersanyaga/folyadéka. 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.controller = Egységvezérlő. Ha processzor vezérli, akkor a processzort adja vissza.\nKülönben magát az egységet adja vissza. +laccess.dead = Egy épület/egység halott-e, vagy már nem érvényes-e. +laccess.controlled = Ezt adja vissza:\n[accent]@ctrlProcessor[], ha az egységvezérlő egy processzor\n[accent]@ctrlPlayer[], ha az egység/épület vezérlője a játékos\n[accent]@ctrlFormation[], ha az egység formációban van\nKülönben 0. +laccess.progress = Művelet előrehaladása, 0 és 1 között.\nA termelés, a lövegtorony-újratöltés vagy az építés előrehaladását adja vissza. laccess.speed = Az egység legnagyobb sebessége, csempe/mp-ben. laccess.id = Egy egység/blokk/nyersanyag/folyadék azonosítója.\nEz a keresési művelet fordítottja. @@ -2397,47 +2451,47 @@ lcategory.unknown = Ismeretlen lcategory.unknown.description = Nem kategorizált utasítások. lcategory.io = Bemenet és kimenet lcategory.io.description = A memóriablokkok és processzorpufferek tartalmának módosítása. -lcategory.block = Blokk vezérlés +lcategory.block = Blokkvezérlés lcategory.block.description = Interakció a blokkokkal. lcategory.operation = Műveletek lcategory.operation.description = Logikai műveletek. -lcategory.control = Áramlásszabályozás +lcategory.control = Folyamatvezérlés lcategory.control.description = A végrehajtási sorrend kezelése. lcategory.unit = Egységvezérlés -lcategory.unit.description = Adj parancsokat az egységeknek. +lcategory.unit.description = Parancsok adása az egységeknek. lcategory.world = Világ lcategory.world.description = A világ viselkedésének szabályozása. graphicstype.clear = A kijelző kitöltése egy színnel. graphicstype.color = Szín kiválasztása a következő rajzolási műveletekhez. -graphicstype.col = A színnel egyenértékű, de csomagolva.\nA csomagolt színeket HEX kódként í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.col = A színnel egyenértékű, de csomagolva van.\nA csomagolt színeket hexa kódként írja ki egy [accent]%[] előtaggal.\nPéldául: a [accent]%ff0000[] piros lenne. +graphicstype.stroke = Vonalvastagság beállítása. +graphicstype.line = Vonalszakasz rajzolása. graphicstype.rect = Téglalap kitöltése. -graphicstype.linerect = Rajzolj egy téglalap alakú körvonalat. +graphicstype.linerect = Téglalap körvonalának rajzolása. graphicstype.poly = Egy szabályos sokszög kitöltése. -graphicstype.linepoly = Rajzolj egy szabályos sokszög körvonalat. -graphicstype.triangle = Töltsön ki egy háromszöget. -graphicstype.image = Rajzolj egy képet valamilyen tartalomról.\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. +graphicstype.linepoly = Szabályos sokszög körvonalának rajzolása. +graphicstype.triangle = Egy háromszög kitöltése. +graphicstype.image = Kép rajzolása valamilyen tartalomról.\nPéldául: [accent]@router[] vagy [accent]@dagger[]. +graphicstype.print = Szöveget rajzol a kiírási pufferből.\nCsak ASCII karakterek használhatóak.\nTörli a kiírás puffert. lenum.always = Mindig igaz. -lenum.idiv = Egész számok osztása. -lenum.div = Osztás.\nVisszatér [accent]null[]-val a nullával való osztásnál. -lenum.mod = Moduló. -lenum.equal = Egyenlő. Kényszeríti a típusokat.\nA nem nulla értékű objektumok értéke 1 lesz, egyébként 0. +lenum.idiv = Egész osztás. +lenum.div = Osztás.\nNullával való osztáskor a visszatérési érték [accent]null[]. +lenum.mod = Modulo. +lenum.equal = Egyenlő. Kényszeríti a típusokat.\nA nem null értékű objektumok értéke 1 lesz, egyébként 0. lenum.notequal = Nem egyenlő. Kényszeríti a típusokat. -lenum.strictequal = Szigorúan egyenlő. Nem kényszeríti a típusokat.\nA(z) [accent]null[] ellenőrzésére használható. +lenum.strictequal = Szigorúan egyenlőség. Nem kényszeríti a típusokat.\nA [accent]null[] ellenőrzésére is használható. lenum.shl = Biteltolás balra. lenum.shr = Biteltolás jobbra. lenum.or = Bitenkénti VAGY. lenum.land = Logikai ÉS. lenum.and = Bitenkénti ÉS. lenum.not = Bitenkénti átfordítás. -lenum.xor = Bitenkénti KIZÁRÓ-VAGY. +lenum.xor = Bitenkénti KIZÁRÓ VAGY. -lenum.min = Legalább két szám. -lenum.max = Legfeljebb két szám. +lenum.min = Két szám minimuma. +lenum.max = Két szám maximuma. lenum.angle = A vektor szöge fokban. lenum.anglediff = Két szög abszolút távolsága fokban. lenum.len = A vektor hossza. @@ -2446,15 +2500,15 @@ lenum.sin = Szinusz, fokban. lenum.cos = Koszinusz, fokban. lenum.tan = Tangens, fokban. -lenum.asin = ARC-szinusz, fokban. -lenum.acos = ARC-koszinusz, fokban. -lenum.atan = ARC-tangens, fokban. +lenum.asin = Arkusz szinusz, fokban. +lenum.acos = Arkusz koszinusz, fokban. +lenum.atan = Arkusz tangens, fokban. #not a typo, look up 'range notation' -lenum.rand = Véletlen decimális szám a [0, érték] tartományban. +lenum.rand = Véletlenszerű decimális szám a [0, érték) tartományban. lenum.log = Természetes logaritmus (ln). lenum.log10 = 10-es alapú logaritmus. -lenum.noise = 2D szimplex zaj. +lenum.noise = 2D-s szimplex zaj. lenum.abs = Abszolút érték. lenum.sqrt = Négyzetgyök. @@ -2463,76 +2517,76 @@ 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.flying = Légi 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 Támaszpont vagy egy pozíció. +lenum.spawn = Ellenséges kezdőpont.\nLehet támaszpont vagy pozíció. lenum.building = Épület egy adott csoportban. -lenum.core = Bármilyen Támaszpont. -lenum.storage = Raktárépület, pl. Vault. +lenum.core = Bármilyen támaszpont. +lenum.storage = Raktárépület, például tároló. lenum.generator = Energiát termelő épületek. lenum.factory = Nyersanyagokat feldolgozó épületek. lenum.repair = Javítási pontok. lenum.battery = Bármilyen akkumulátor. -lenum.resupply = Utánpótlási pontok.\nCsak akkor van jelentősége, ha az [accent]"Egység Lőszer"[] engedélyezve van. -lenum.reactor = Ütközéses/Tórium Erőmű. +lenum.resupply = Utánpótlási pontok.\nCsak akkor van jelentősége, ha az [accent]„egység lőszere”[] engedélyezve van. +lenum.reactor = Ütközéses- vagy tóriumerőmű. lenum.turret = Bármilyen lövegtorony. -sensor.in = Az épület/egység, amelyet érzékelni kell. +sensor.in = Az érzékelendő épület/egység. -radar.from = Épület, ahonnan érzékelni kell.\nAz érzékelő hatótávolságát az épület hatótávolsága korlátozza. -radar.target = Szűrő az érzékelhető egységekhez. +radar.from = Az épület, ahonnan érzékelni kell.\nAz érzékelő hatótávolságát az épület hatótávolsága korlátozza. +radar.target = Szűrő az érzékelendő egységekhez. radar.and = További szűrők. radar.order = Rendezési sorrend. 0-tól visszafelé. radar.sort = Az eredmények rendezésének metrikája. radar.output = Változó, amelybe a kimeneti egységet írja. -unitradar.target = Szűrő az érzékelhető egységekhez. +unitradar.target = Érzékelendő egységek szűrése. unitradar.and = További szűrők. unitradar.order = Rendezési sorrend. 0-tól visszafelé. unitradar.sort = Az eredmények rendezésének metrikája. unitradar.output = Változó, amelybe a kimeneti egységet írja. -control.of = Épület az irányításhoz. +control.of = Irányítandó épület. control.unit = Megcélozandó egység/épület. -control.shoot = Akár lőni is lehet. +control.shoot = Lőjön-e. -unitlocate.enemy = Akár az ellenséges épületek felderítése. -unitlocate.found = Függetlenül attól, hogy a tárgy meglett-e találva. +unitlocate.enemy = Felderítse-e az ellenséges épületeket. +unitlocate.found = Megtalálta-e az objektumot. unitlocate.building = Kimeneti változó a megtalált épülethez. -unitlocate.outx = Kimeneti X koordináta. -unitlocate.outy = Kimeneti Y koordináta. +unitlocate.outx = Kimenet X koordinátája. +unitlocate.outy = Kimenet Y koordinátája. unitlocate.group = Keresendő épületcsoport. lenum.idle = Ne mozdulj, de folytasd az építkezést/bányászatot.\nAz alapértelmezett állapot. lenum.stop = Mozgás/bányászás/építés leállítása. -lenum.unbind = A logikai vezérlés teljes kikapcsolása.\nSzokásos mesterséges intelligencia visszaállítása. +lenum.unbind = A logikai vezérlés teljes kikapcsolása.\nSzokásos mesterséges intelligencia folytatása. lenum.move = Mozgás a pontos pozícióba. -lenum.approach = Közelítsen meg egy pozíciót egy sugárral. -lenum.pathfind = Útkeresés az ellenséges kezdőponthoz. -lenum.autopathfind = Automatikus útkeresés a legközelebbi ellenséges Támaszponthoz, vagy ledobási ponthoz.\nEz ugyanaz, mint a normál hullámos ellenséges útkeresés. -lenum.target = Lőj egy helyet. -lenum.targetp = Lőj egy célpontra sebesség-előrejelzéssel. -lenum.itemdrop = Dobj le egy nyersanyagot. -lenum.itemtake = Vegyél fel egy nyersanyagot egy épületből. -lenum.paydrop = Dobd le az aktuális rakományt. -lenum.paytake = A rakomány felvétele az aktuális helyen. -lenum.payenter = Lépj be/szállj le arra a rakomány blokkra, amelyen az egység van. +lenum.approach = Egy pozíció megközelítése egy sugárral. +lenum.pathfind = Útkeresés a megadott pozícióhoz. +lenum.autopathfind = Automatikus útkeresés a legközelebbi ellenséges támaszponthoz vagy ledobási ponthoz.\nEz ugyanaz, mint a normál hullámos ellenséges útkeresés. +lenum.target = Lövés egy pozícióra. +lenum.targetp = Lövés egy célpontra sebesség-előrejelzéssel. +lenum.itemdrop = Egy nyersanyag ledobása. +lenum.itemtake = Egy nyersanyag felvétele egy épületből. +lenum.paydrop = A jelenlegi rakomány ledobása. +lenum.paytake = Rakomány felvétele a jelenlegi helyen. +lenum.payenter = Belépés/leszállás a rakományblokkra, amelyen az egység van. lenum.flag = Számjegyes egységjelölő. -lenum.mine = Bánya egy helyen. -lenum.build = Építs egy szerkezetet. -lenum.getblock = Egy épület és a koordinátái típusának lekérdezése. \nAz egységnek a pozíciótartományon belül kell lennie.\nA nem szilárd épületek [accent]@solid[] típusúak lesznek. -lenum.within = Ellenőrizze, hogy az egység egy pozíció közelében van-e. -lenum.boost = Erősítés indítás/leállítás. +lenum.mine = Bányászat egy helyen. +lenum.build = Egy épület építése. +lenum.getblock = Az épület-, talaj- és blokktípus lekérdezése a koordinátákon.\nAz egységnek a pozíciótartományon belül kell lennie, különben null értékkel tér vissza. +lenum.within = Ellenőrzés, hogy az egység egy pozíció közelében van-e. +lenum.boost = Erősítés indítása/leállítása. -lenum.flushtext = 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.flushtext = Az írási puffer tartalmának ürítése a jelölőre, ha alkalmazható.\nHa a „fetch” igaz, akkor megpróbálja lekérni a tulajdonságokat a pálya nyelvi csomagjából vagy a játék csomagjából. +lenum.texture = A textúra neve közvetlenül a játék textúraatlaszából (ún. kebab-case elnevezési stílus használatával).\nHa a „printFlush” igaz, akkor a szöveges puffer tartalmát használja szöveges argumentumként. lenum.texturesize = A textúra mérete csempékben. A nulla érték a jelölő szélességét az eredeti textúra méretére skálázza. -lenum.autoscale = 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 szín, vonal- és négyzet jelölőkhöz használatos, ahol a nulla index az első szín. +lenum.autoscale = Skálázva legyen-e a jelölő a játékos nagyítási szintjének megfelelően. +lenum.posi = Indexelt pozíció, vonal- és négyszögjelzőkhöz használatos, ahol a nulla az első pozíció. +lenum.uvi = A textúra pozíciója nullától egyig, négyzetjelölőkhöz használatos. +lenum.colori = Indexelt szín, vonal- és négyzetjelölőkhöz használatos, ahol a nulla az első szín. diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 9abf0debce..9c058872ca 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -439,6 +439,11 @@ editor.rules = Peraturan: editor.generation = Generasi: editor.objectives = Tujuan editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Sunting dalam Permainan editor.playtest = Tes Bermain editor.publish.workshop = Terbitkan di Workshop @@ -495,6 +500,7 @@ editor.default = [lightgray] details = Detail... edit = Sunting... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Nama: editor.spawn = Munculkan Unit @@ -584,6 +590,7 @@ filter.clear = Bersih filter.option.ignore = Biarkan filter.scatter = Penebaran filter.terrain = Lahan +filter.logic = Logic filter.option.scale = Ukuran filter.option.chance = Kemungkinan @@ -607,7 +614,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -681,6 +690,7 @@ marker.shape.name = Bentuk marker.text.name = Teks marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Latar Belakang marker.outline = Garis Luar @@ -731,7 +741,7 @@ error.any = Terjadi kesalahan Jaringan tidak diketahui. error.bloom = Gagal untuk menjalankan bloom.\nPerangkat Anda mungkin tidak mendukung fitur ini. weather.rain.name = Hujan -weather.snow.name = Salju +weather.snowing.name = Salju weather.sandstorm.name = Badai Pasir weather.sporestorm.name = Badai Spora weather.fog.name = Kabut @@ -981,6 +991,7 @@ stat.abilities = Kemampuan stat.canboost = Dapat Dipercepat stat.flying = Terbang stat.ammouse = Penggunaan Amunisi +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Penggandaan Kekuatan (dmg) stat.healthmultiplier = Penggandaan Darah stat.speedmultiplier = Penggandaan Kecepatan @@ -991,17 +1002,46 @@ stat.immunities = Kekebalan stat.healing = Menyembuhkan ability.forcefield = Bidang Kekuatan +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Bidang Perbaikan +ability.repairfield.description = Repairs nearby units ability.statusfield = Bidang Status +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Pabrik +ability.unitspawn.description = Constructs units ability.shieldregenfield = Bidang Regenerasi Perisai +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Pergerakan Petir +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Bidang Tenaga -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Hanya Penyetoran Inti yang Diizinkan bar.drilltierreq = Membutuhkan Bor yang Lebih Baik @@ -1077,6 +1117,7 @@ unit.items = bahan unit.thousands = rb unit.millions = jt unit.billions = m +unit.shots = shots unit.pershot = /tembakan category.purpose = Kegunaan category.general = Umum @@ -1086,6 +1127,8 @@ category.items = Barang category.crafting = Pemasukan/Pengeluaran category.function = Fungsi category.optional = Peningkatan Opsional +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Lewati Animasi Peluncuran/Pendaratan Inti setting.landscape.name = Kunci Pemandangan setting.shadows.name = Bayangan @@ -1197,15 +1240,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Pilih Daerah keybind.schematic_menu.name = Menu Skema @@ -1281,7 +1325,10 @@ rules.disableworldprocessors = Nonaktifkan Prosesor Dunia rules.schematic = Bagan Diperbolehkan rules.wavetimer = Pengaturan Waktu Gelombang rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Gelombang +rules.airUseSpawns = Air units use spawn points rules.attack = Mode Penyerangan rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1303,6 +1350,7 @@ rules.unitdamagemultiplier = Penggandaan Kekuatan Unit rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Penggandaan Tenaga Surya rules.unitcapvariable = Inti Memengaruhi Batas Unit +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Batas Unit Dasar rules.limitarea = Batas Area Peta rules.enemycorebuildradius = Dilarang Membangun Radius Inti Musuh :[lightgray] (blok) @@ -1335,6 +1383,8 @@ rules.weather = Cuaca rules.weather.frequency = Frekuensi: rules.weather.always = Selalu rules.weather.duration = Durasi: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Bahan content.liquid.name = Zat Cair @@ -2281,7 +2331,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Menambahkan perintah ke daftar gambar.\nTidak dapat menampilkan apapun sampai [accent]Draw Flush[] dipakai. lst.drawflush = Mengeluarkan perintah [accent]Draw[] dari daftar antrean untuk ditampilkan. lst.printflush = Mengeluarkan perintah [accent]Print[] dari daftar antrean untuk blok pesan. @@ -2304,7 +2354,7 @@ lst.getblock = Mendapatkan data petak di lokasi manapun. lst.setblock = Menentukan data petak di lokasi manapun. lst.spawnunit = Munculkan unit pada tempat yang ditentukan. lst.applystatus = Menerapkan atau menghapus status efek dari sebuah unit. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulasikan adanya gelombang pada lokasi acak.\nTidak akan ditambahkan pada jumlah gelombang keseluruhan. lst.explosion = Membuat sebuah ledakan pada lokasi yang ditentukan. @@ -2366,6 +2416,7 @@ lenum.shoot = Menembak pada suatu posisi yang ditentukan. lenum.shootp = Menembak pada unit/bangunan dengan prediksi kecepatan. lenum.config = Pengaturan bangunan, misalnya menyortir barang. lenum.enabled = Menentukan aktif tidaknya suatu blok. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Warna lampu. laccess.controller = Pengendali unit. Jika dikendalikan prosesor, mengembalikan prosesor.\nJika unit dalam barisan, mengembalikan leader.\nSebaliknya, mengembalikan unit itu sendiri. @@ -2507,7 +2558,7 @@ lenum.payenter = Masuk/mendarat pada blok muatan yang saat ini unit sedang berdi lenum.flag = Tanda numerik unit. lenum.mine = Menambang pada sebuah posisi. lenum.build = Membangun sebuah sttruktur. -lenum.getblock = Mengambil bangunan dan tipenya pada koordinat tertentu.\nUnit harus ada dalam jangkauan tersebut.\nBentuk padat yang bukan merupakan bangunan akan memiliki tipe [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Memeriksa apakah unit di dekat suatu posisi. lenum.boost = Mulai/berhenti mempercepat. 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. diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 01262c1e95..5b6dc2407d 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -437,6 +437,11 @@ editor.rules = Regole: editor.generation = Generazione: editor.objectives = Obbiettivi editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Modifica in Gioco editor.playtest = Playtest editor.publish.workshop = Pubblica nel Workshop @@ -493,6 +498,7 @@ editor.default = [lightgray] details = Dettagli... edit = Modifica... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Nome: editor.spawn = Piazza un'Unità @@ -580,6 +586,7 @@ filter.clear = Resetta Filtro filter.option.ignore = Ignora filter.scatter = Dispersione filter.terrain = Terreno +filter.logic = Logic filter.option.scale = Scala filter.option.chance = Probabilità filter.option.mag = Magnitudine @@ -602,7 +609,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -674,6 +683,7 @@ marker.shape.name = Forma marker.text.name = Testo marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Sfondo marker.outline = Outline objective.research = [accent]Ricerca:\n[]{0}[lightgray]{1} @@ -721,7 +731,7 @@ error.any = Errore di rete sconosciuto. error.bloom = Errore dell'avvio delle shaders.\nIl tuo dispositivo potrebbe non supportarle. weather.rain.name = Pioggia -weather.snow.name = Neve +weather.snowing.name = Neve weather.sandstorm.name = Tempesta di Sabbia weather.sporestorm.name = Tempesta di Spore weather.fog.name = Nebbia @@ -967,6 +977,7 @@ stat.abilities = Abilità stat.canboost = Capace di Potenziamento stat.flying = Volo stat.ammouse = Consumo di munizioni +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Moltiplicatore danni stat.healthmultiplier = Moltiplicatore salute stat.speedmultiplier = Moltiplicatore velocità @@ -977,17 +988,46 @@ stat.immunities = Immunità stat.healing = Rigenerazione ability.forcefield = Campo di Forza +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Campo Riparativo +ability.repairfield.description = Repairs nearby units ability.statusfield = Campo di Stato +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Fabbrica +ability.unitspawn.description = Constructs units ability.shieldregenfield = Campo di Rigenerazione Scudo +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movimento Fulminante +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Campo energetico -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Concesso solo il deposito al nucleo @@ -1064,6 +1104,7 @@ unit.items = oggetti unit.thousands = k unit.millions = mln unit.billions = mld +unit.shots = shots unit.pershot = /colpo category.purpose = Scopo category.general = Generali @@ -1073,6 +1114,8 @@ category.items = Oggetti category.crafting = Produzione category.function = Funzione category.optional = Miglioramenti Opzionali +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Salta il lancio del nucleo/Animazione setting.landscape.name = Visuale Orizontale setting.shadows.name = Ombre @@ -1184,15 +1227,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Seleziona Regione keybind.schematic_menu.name = Menu Schematica @@ -1268,7 +1312,10 @@ rules.disableworldprocessors = Disabilita processori rules.schematic = Schematiche Consentite rules.wavetimer = Timer Ondate rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Ondate +rules.airUseSpawns = Air units use spawn points rules.attack = Modalità Attacco rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1290,6 +1337,7 @@ rules.unitdamagemultiplier = Moltiplicatore Danno Unità rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Moltiplicatore energia solare rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limite dimensioni mappa rules.enemycorebuildradius = Raggio di protezione del Nucleo Nemico dalle costruzioni:[lightgray] (blocchi) @@ -1322,6 +1370,8 @@ rules.weather = Meteo rules.weather.frequency = Frequenza: rules.weather.always = sempre rules.weather.duration = Durata: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Oggetti content.liquid.name = Liquidi @@ -2255,7 +2305,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.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. @@ -2278,7 +2328,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2338,6 +2388,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2461,7 +2512,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 773c80759e..ab9b095823 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -439,6 +439,11 @@ editor.rules = ルール: editor.generation = 生成: editor.objectives = オブジェクティブ editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = ゲーム内で編集する editor.playtest = Playtest editor.publish.workshop = ワークショップで公開 @@ -495,6 +500,7 @@ editor.default = [lightgray]<デフォルト> details = 詳細... edit = 編集... variables = 変数 +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = 名前: editor.spawn = ユニットを出す @@ -583,6 +589,7 @@ filter.clear = クリア filter.option.ignore = 無視 filter.scatter = 分散 filter.terrain = 地形 +filter.logic = Logic filter.option.scale = スケール filter.option.chance = 確率 @@ -606,7 +613,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -678,6 +687,7 @@ marker.shape.name = 図形 marker.text.name = 文章 marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = 背景 marker.outline = 輪郭 objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -725,7 +735,7 @@ error.any = 不明なネットワークエラーです。 error.bloom = ブルームの初期化に失敗しました。\n恐らくあなたのデバイスではブルームがサポートされていません。 weather.rain.name = 雨 -weather.snow.name = 雪 +weather.snowing.name = 雪 weather.sandstorm.name = 砂嵐 weather.sporestorm.name = 胞子嵐 weather.fog.name = 霧 @@ -973,6 +983,7 @@ stat.abilities = 能力 stat.canboost = ブースト可能 stat.flying = 飛行 stat.ammouse = 使用弾薬 +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = ダメージ倍率 stat.healthmultiplier = 体力倍率 stat.speedmultiplier = スピード倍率 @@ -983,17 +994,46 @@ stat.immunities = 耐性 stat.healing = 治癒 ability.forcefield = フォースフィールド +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = リペアフィールド +ability.repairfield.description = Repairs nearby units ability.statusfield = ステータスフィールド +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = 生産 +ability.unitspawn.description = Constructs units ability.shieldregenfield = シールドリペアフィールド +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = ムーブメントライトニング +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = シールドアーク +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = リジェネ抑制フィールド +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = エネルギー範囲 -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = コアにのみ搬入できます。 @@ -1070,6 +1110,7 @@ unit.items = アイテム unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /発 category.purpose = 説明 category.general = 一般 @@ -1079,6 +1120,8 @@ category.items = アイテム category.crafting = 搬入/搬出 category.function = 役割 category.optional = 強化オプション +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = コアの打ち上げ/着陸アニメーションをスキップ setting.landscape.name = 横画面で固定 setting.shadows.name = 影 @@ -1190,15 +1233,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = リージョンの再構築 keybind.schematic_select.name = 範囲選択 keybind.schematic_menu.name = 設計図メニュー @@ -1274,7 +1318,10 @@ rules.disableworldprocessors = ワールドプロセッサーを無効にする rules.schematic = 設計図を許可 rules.wavetimer = ウェーブの自動進行 rules.wavesending = ウェーブスキップ +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = ウェーブ +rules.airUseSpawns = Air units use spawn points rules.attack = アタックモード rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1296,6 +1343,7 @@ rules.unitdamagemultiplier = ユニットのダメージ倍率 rules.unitcrashdamagemultiplier = ユニットの衝突ダメージ倍率 rules.solarmultiplier = 太陽光の倍率 rules.unitcapvariable = コア数によってユニット上限を変動 +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = 基礎ユニット上限数 rules.limitarea = マップエリアを制限 rules.enemycorebuildradius = 敵コア周辺の建設禁止区域の半径:[lightgray] (タイル) @@ -1328,6 +1376,8 @@ rules.weather = 気象 rules.weather.frequency = 頻度: rules.weather.always = 常時 rules.weather.duration = 継続時間: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = アイテム content.liquid.name = 液体 @@ -2259,7 +2309,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = ロジックディスプレイに操作を追加します。[accent]Draw Flush[] を使用するまで何も表示しません。 lst.drawflush = キューに入れられた [accent]Draw[] 操作をディスプレイにフラッシュします。 lst.printflush = キューに入れられた [accent]Print[] 操作をメッセージ ブロックにフラッシュします。 @@ -2282,7 +2332,7 @@ lst.getblock = 任意の座標のタイルの情報を取得します。 lst.setblock = 任意の座標のタイルの情報を変更します。 lst.spawnunit = 任意の座標にユニットをスポーンさせます。 lst.applystatus = ユニットからステータス効果を適用または削除する。 -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = 任意の座標で発生するウェーブをシミュレーションします。\nウェーブを進めません。 lst.explosion = ある場所で爆発を起こします。 @@ -2342,6 +2392,7 @@ lenum.shoot = 指定した座標に向かって撃ちます。 lenum.shootp = 任意のユニットや建物を撃ちます。 lenum.config = 建物の設定を取得します。\n例:ソーターに設定されているアイテムなど lenum.enabled = ブロックが有効かどうかを取得します。 +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = イルミネーターの色を取得します。 laccess.controller = ユニットを制御しているものを取得します。\nプロセッサ制御の場合、制御しているプロセッサを返します。\nほかのユニットに制御されている場合、制御しているユニットを返します。\nそれ以外の場合は、ユニット自身を返します。 laccess.dead = ユニットや建物が機能しているかどうか、またはもう有効でないかどうか。 @@ -2465,7 +2516,7 @@ lenum.payenter = ユニットが乗っているペイロードブロックに進 lenum.flag = ユニットのフラグです。 lenum.mine = 任意の位置を採掘します。 lenum.build = 建築をします。 -lenum.getblock = 座標から建物とタイプを取得します。\nユニットは範囲内でなければなりません。\n建物以外の物の型は [accent]@solid[] になります。 +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = ユニットが座標の近くにあるかどうかを確認します。 lenum.boost = ブーストの開始、停止をします。 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. diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index ca902dbb80..79f23ca5ab 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -57,7 +57,7 @@ mods.browser.sortstars = 추천(스타) 수 schematic = 설계도 schematic.add = 설계도 저장하기 schematics = 설계도 -schematic.search = Search schematics... +schematic.search = 설계도 검색하기 schematic.replace = 해당 이름의 설계도가 이미 존재합니다. 교체하시겠습니까? schematic.exists = 해당 이름의 설계도가 이미 존재합니다. schematic.import = 설계도 가져오기 @@ -263,11 +263,11 @@ trace.times.kicked = 추방 횟수: [accent]{0} trace.ips = IPs: trace.names = Names: invalidid = 잘못된 클라이언트 ID입니다! 버그 보고서를 보내주세요. -player.ban = Ban -player.kick = Kick -player.trace = Trace -player.admin = Toggle Admin -player.team = Change Team +player.ban = 플레이어 차단 +player.kick = 플레이어 강퇴 +player.trace = 플레이어 찾기 +player.admin = 관리자 권한 부여 +player.team = 팀 변경하기 server.bans = 차단 목록 server.bans.none = 차단된 플레이어를 찾을 수 없습니다! server.admins = 관리자 @@ -284,8 +284,8 @@ confirmkick = 정말로 "{0}[white]" 을(를) 추방하시겠습니까? confirmunban = 정말로 이 플레이어를 차단 해제하시겠습니까? confirmadmin = 정말로 "{0}[white]" 을(를) 관리자로 임명하시겠습니까? confirmunadmin = 정말로 "{0}[white]"의 관리자를 박탈하시겠습니까? -votekick.reason = Vote-Kick Reason -votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: +votekick.reason = 강퇴 사유 +votekick.reason.message = "{0}[white]" 을(를) 투표 추방하시려면 해당 사유를 적어주세요 : joingame.title = 게임 참가 joingame.ip = 주소: disconnect = 연결이 끊어졌습니다. @@ -348,16 +348,16 @@ 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 +command.enterPayload = 화물 블록에 들어가기 +command.loadUnits = 유닛 적재 +command.loadBlocks = 블록 적재 +command.unloadPayload = 화물 내려놓기 +stance.stop = 명령 취소하기 +stance.shoot = 명령: 사격 +stance.holdfire = 명령: 사격 중지 +stance.pursuetarget = 명령: 타겟 추격 +stance.patrol = 명령: 정찰 +stance.ram = 명령 : 돌격\n[lightgray] 유닛이 장애물 여부를 확인하지 않고 일직선으로 이동합니다. openlink = 링크 열기 copylink = 링크 복사 back = 뒤로가기 @@ -438,6 +438,11 @@ editor.rules = 규칙 editor.generation = 지형 생성 editor.objectives = 목표 editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = 인게임 편집 editor.playtest = 맵 테스트 editor.publish.workshop = 창작마당 게시 @@ -494,6 +499,7 @@ editor.default = [lightgray]<기본값> details = 설명... edit = 편집... variables = 변수 +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = 이름: editor.spawn = 기체 생성 @@ -583,6 +589,7 @@ filter.clear = 초기화 filter.option.ignore = 무시 filter.scatter = 흩뿌리기 filter.terrain = 지형 +filter.logic = Logic filter.option.scale = 크기 filter.option.chance = 배치 빈도 @@ -606,7 +613,9 @@ 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) +filter.option.code = 코드 +filter.option.loop = 루프 +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -678,6 +687,7 @@ marker.shape.name = 도형 marker.text.name = 문자 marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = 배경 marker.outline = 외곽선 @@ -726,12 +736,12 @@ error.any = 알 수 없는 네트워크 오류 error.bloom = 블룸 그래픽 효과를 적용하지 못했습니다.\n기기가 이 기능을 지원하지 않는 것일 수도 있습니다. weather.rain.name = 비 -weather.snow.name = 눈 +weather.snowing.name = 눈 weather.sandstorm.name = 모래 폭풍 weather.sporestorm.name = 포자 폭풍 weather.fog.name = 안개 -campaign.playtime = \uf129 [lightgray]Sector Playtime: {0} -campaign.complete = [accent]Congratulations.\n\nThe enemy on {0} has been defeated.\n[lightgray]The final sector has been conquered. +campaign.playtime = \uf129 [lightgray]지역 플레이타임: {0} +campaign.complete = [accent]축하드립니다.\n\n {0} 지역의 적이 패배하였습니다\n[lightgray] 마지막 지역을 점령하였습니다. sectorlist = 지역 목록 sectorlist.attacked = {0} 공격받는 중 @@ -762,8 +772,8 @@ sector.curlost = 지역 잃음 sector.missingresources = [scarlet]코어 자원 부족[] sector.attacked = [accent]{0}[white] 지역이 공격받고 있습니다![] sector.lost = [accent]{0}[white] 지역을 잃었습니다![] -sector.capture = Sector [accent]{0}[white]Captured! -sector.capture.current = Sector Captured! +sector.capture = [accent]{0}[white] 지역을 점령하였습니다! +sector.capture.current = 지역 점령! sector.changeicon = 아이콘 바꾸기 sector.noswitch.title = 지역 전환 불가능 sector.noswitch = 기존 지역이 공격받는 동안은 지역을 전환할 수 없습니다.\n\n지역: [accent]{0}[] 중 [accent]{1}[] @@ -800,24 +810,24 @@ sector.planetaryTerminal.name = 대행성 출격단지 sector.coastline.name = 해안선 sector.navalFortress.name = 해군 요새 -sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지녔습니다. 적은 위협적이지 않으며, 자원이 거의 없습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n이제 출격할 시간입니다! -sector.frozenForest.description = 산과 가까운 이곳에도, 포자가 퍼졌습니다. 혹한의 추위조차 포자가 퍼지는 것을 억누를 수 없습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배우십시오. -sector.saltFlats.description = 사막의 변두리에는 소금으로 이루어진 평원이 있습니다. 이곳에선 매우 적은 자원만 발견되었습니다.\n\n하지만 자원이 희소한 이곳에서도 적들의 요새가 포착되었습니다. 그들을 사막의 모래로 만들어버리십시오. -sector.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 탈환하십시오. 강화 유리를 제련하고, 물을 끌어올려 포탑과 드릴에 공급하십시오. 더 강한 방어선을 구성할 수 있습니다. +sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지녔습니다. 적은 위협적이지 않지만, 자원도 풍부하진 않습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n이제 출격할 시간입니다! +sector.frozenForest.description = 산과 가까운 이곳에도, 포자가 퍼졌습니다. 혹한의 추위조차 포자가 퍼지는 것을 억누를 수 없습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배워야 합니다. +sector.saltFlats.description = 사막의 변두리에는 소금으로 이루어진 평원이 있습니다. 이곳에선 매우 적은 자원만 발견되었습니다.\n\n하지만 자원이 희소한 이곳에서도 적들의 요새가 포착되었습니다. 그들을 사막의 모래로 만들어버리세요! +sector.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 탈환하여 강화 유리를 제련하고, 포탑과 드릴에 물을 공급하여 더 강력한 방어선을 구축하여야 합니다. sector.ruinousShores.description = 폐허를 지나서 나오는 해안선. 한때, 이곳에는 해안 방어기지가 있었습니다.\n많은 부분이 소실되었습니다. 기본적인 방어 시설을 제외한 모든 것이 고철 덩어리가 되었습니다. \n외부로 세력을 확장하기 위한 첫 발걸음으로, 무너진 시설을 재건하고 잃어버린 기술을 다시 회수하십시오. sector.stainedMountains.description = 더 내륙에는 아직 포자에 오염되지 않은 산맥이 있습니다.\n이 지역에서 티타늄을 채굴하고 이것을 어떻게 사용하는지 배우십시오.\n\n이곳은 더 강력한 적이 주둔하고 있습니다. 적이 가장 강력한 기체를 준비할 시간을 주지 마십시오. -sector.overgrowth.description = 이곳은 포자들의 근원과 가까이에 있는 과성장 지대입니다. 적이 이곳에 전초기지를 설립했습니다. 대거를 생산해 적의 코어를 박살 내고 우리가 잃어버린 것을 되찾으십시오! +sector.overgrowth.description = 이곳은 포자들의 근원과 가까이에 있는 과성장 지대입니다. 적이 이곳에 전초기지를 설립했습니다. 대거를 생산해 적의 기지를 박살 내고 우리가 잃어버린 것을 되찾아야 합니다! sector.tarFields.description = 산지와 사막 사이에 있는 석유 생산지의 외곽이며, 사용 가능한 타르가 매장되어 있는 희귀한 지역 중 하나입니다. 버려진 지역이지만 이곳에는 위험한 적군이 있습니다. 그들을 과소평가하지 마십시오.\n\n[lightgray]석유 가공기술을 익히는 것이 도움이 될 것입니다. -sector.desolateRift.description = 극도로 위험한 지역입니다. 자원은 풍부하지만, 사용 가능한 공간은 거의 없습니다. 코어 파괴의 위험성이 높으니 가능한 한 빨리 방어시설을 구축하십시오. 또한, 적의 공격 주기가 길다고 안심하지 마십시오. -sector.nuclearComplex.description = 과거 토륨의 생산, 연구와 처리를 위해 운영되었던 시설입니다. 지금은 그저 폐허로 전락하였지만, 다수의 적이 배치된 지역입니다. 그들은 끊임없이 당신을 공격할 것입니다.\n\n[lightgray]토륨의 다양한 사용법을 연구하고 익히십시오. -sector.fungalPass.description = 포자로 얼룩진 높고 낮은 산이 만나는 곳. 이곳에서 적의 소규모 정찰기지를 발견하였습니다.\n그것들을 파괴하십시오.\n대거와 크롤러 기체를 사용하여 두 개의 코어를 파괴하십시오. +sector.desolateRift.description = 극도로 위험한 지역입니다. 자원은 풍부하지만, 사용 가능한 공간은 거의 없습니다. 적의 공격 주기가 길지만, 기지가 파괴될 위험이 높으니 가능한 한 빨리 방어시설을 구축하여야 합니다. +sector.nuclearComplex.description = 과거 토륨의 생산, 연구와 처리를 위해 운영되었던 시설입니다. 지금은 그저 폐허로 전락하였지만, 다수의 적이 배치된 지역입니다. 그들은 끊임없이 당신을 공격할 것입니다.\n\n[lightgray]토륨의 다양한 사용법을 연구하고 익혀 보세요. +sector.fungalPass.description = 포자로 얼룩진 높고 낮은 산이 만나는 곳. 이곳에서 적의 소규모 정찰기지를 발견하였습니다.\n그것들을 파괴하십시오.\n대거와 크롤러 기체를 사용하여 두 개의 기지를 파괴하여야 합니다. sector.biomassFacility.description = 포자가 탄생한 곳. 이곳은 포자를 연구하고 최초로 생산했던 시설입니다.\n이 시설에 남아있는 기술을 습득하고, 연료와 플라스터늄을 생산하기 위해 포자를 배양하십시오. \n\n[lightgray]이 시설이 붕괴한 후에, 시설 내에 배양되던 대량의 포자가 외부로 방출되었습니다. 이로 인해 생태계 교란종인 포자가 지역 생태계에서 번식하게 되었고, 그 무엇도 이 무자비하고 작은 침략자에게 대항할 수 없었습니다. -sector.windsweptIslands.description = 육지에서 멀리 떨어진 이곳에는 작은 군도가 있습니다. 기록에 따르면 한 때 [accent]플라스터늄[]을 생산하는 시설이 존재했습니다.\n\n몰려오는 적 해군을 막으며, 섬에 기지를 구축하고, 공장들을 연구하십시오. +sector.windsweptIslands.description = 육지에서 멀리 떨어진 이곳에는 작은 군도가 있습니다. 기록에 따르면 한 때 [accent]플라스터늄[]을 생산하는 시설이 존재했습니다.\n\n몰려오는 적 해군을 막으며, 섬에 기지를 구축하고, 공장들을 연구하여야 합니다. sector.extractionOutpost.description = 적이 다른 지역에 자원을 보내기 위한 용도로 건설한 보급기지입니다.\n\n강력한 적들이 지키고 있는 지역을 공격하거나, 적에게 침공당한 지역을 효과적으로 수호하기 위해서는 우리도 이 수송 기술이 필요합니다. 적의 기지를 파괴하고, 그들의 수송 기술을 강탈하십시오. sector.impact0078.description = 이곳에는 태양계에 처음 진입한 우주 수송선의 잔해가 존재합니다.\n\n우주선이 파괴된 잔해에서 최대한 많은 자원을 회수하고, 손상되지 않은 그들의 기술을 획득하십시오. sector.planetaryTerminal.description = 이 행성에서의 마지막 전투를 준비하십시오.\n\n적이 필사의 각오로 지키고 있는 이 해안 기지엔 우주에 코어를 발사할 수 있는 시설이 있습니다.\n\n해군을 생산하여 적을 신속하게 제거하고, 그들의 행성간 이동 기술을 강탈하십시오.\n\n[royal] 건투를 빕니다.[] sector.coastline.description = 이 장소에서 해상 기체 기술의 잔재가 발견되었습니다. 적의 공격을 격퇴하고, 이 지역을 점령하고, 기술을 습득하십시오. -sector.navalFortress.description = 적은 자연적으로 요새화된 외딴 섬에 기지를 세웠습니다. 이 전초기지를 파괴하시오. 적의 발전된 함선 건조 기술을 습득하고 연구하시오. +sector.navalFortress.description = 적은 자연적으로 요새화된 외딴 섬에 기지를 세웠습니다. 이 전초기지를 파괴하여 적의 발전된 함선 건조 기술을 습득하고 연구하십시오. sector.onset.name = 시작 sector.aegis.name = 보호 sector.lake.name = 호수 @@ -835,23 +845,23 @@ sector.siege.name = 포위 sector.crossroads.name = 교차로 sector.karst.name = 카르스트 sector.origin.name = 근원 -sector.onset.description = 튜토리얼 지역. 아직 목표가 만들어지지 않았습니다. 정보를 더 기다리십시오. -sector.aegis.description = 적은 방어막으로 보호받고 있습니다. 이 구역에서 실험적인 방어막 차단기 모듈이 감지되었습니다.\n이 구조물을 찾으십시오. 텅스텐을 공급해 방어막 차단기를 가동하고 적의 기지를 파괴하십시오. -sector.lake.description = 이 지역의 광재 호수는 기체의 활동범위를 크게 제한시킵니다. 호버 유닛이 유일한 선택지입니다.\n[accent]함선 재구성기[]를 연구하고 [accent]일루드[]를 가능한 한 빨리 생산하십시오. -sector.intersect.description = 정찰 결과 이 지역은 착륙 직후 여러 방향에서 공격받을 것으로 예측됩니다.\n방어선을 빠르게 구성하고 가능한 한 빠르게 확장하십시오.\n이 지역의 험난한 지형을 위해서는 [accent]기계[] 기체가 필요할 것입니다. -sector.atlas.description = 이 지역은 각기 다른 지형을 포함하고 있으며, 효과적으로 공격하기 위해서는 다양한 기체가 필요합니다.\n이곳에서 발견된 더 강력한 적의 기지를 통과하기 위해서는 상위 등급의 기체가 필요할 수도 있습니다.\n[accent]전해조[]와 [accent]전차 재조립기[]를 연구하십시오. +sector.onset.description = 튜토리얼 지역. 아직 목표가 정해지지 않았습니다. 추가적인 정보를 제공받기 위해 잠시 대기해 주세요 +sector.aegis.description = 적은 방어막으로 보호받고 있습니다. 이 구역에서 실험적인 방어막 차단기 모듈이 감지되었습니다.\n이 구조물을 찾으. 텅스텐을 공급해 방어막 차단기를 가동하고 적의 기지를 파괴하여야 합니다. +sector.lake.description = 이 지역의 광재 호수는 기체의 활동범위를 크게 제한시킵니다. 호버링 유닛만이 유일한 선택지입니다.\n[accent]함선 재구성기[]를 연구하고 [accent]일루드[]를 가능한 한 빨리 생산하여야 합니다. +sector.intersect.description = 정찰 결과 이 지역은 착륙 직후 여러 방향에서 공격받을 것으로 예측됩니다.\n방어선을 빠르게 구축하고 가능한 한 빠르게 확장하여야 합니다.\n이 지역의 험난한 지형을 위해서는 [accent]기계[] 기체가 필요할 것입니다. +sector.atlas.description = 이 지역은 각기 다른 지형을 포함하고 있으며, 효과적으로 공격하기 위해서는 다양한 기체가 필요합니다.\n이곳에서 발견된 더 강력한 적의 기지를 통과하기 위해서는 상위 등급의 기체가 필요할 수도 있습니다.\n[accent]전해조[]와 [accent]전차 재조립기[]를 연구하세요. sector.split.description = 이 지역에 최소한으로 존재하는 적 주둔군은 새로운 운송 기술을 시험하기에 완벽합니다. -sector.basin.description = {임시}\n\n현재의 마지막 지역. 이 지역은 도전 레벨입니다 - 이후 릴리즈에서 많은 지역이 더 추가될 예정입니다. -sector.marsh.description = 이 지역은 아르키사이트가 풍부하지만 분출구의 수는 한정적입니다.\n[accent]화학적 연소실[]을 건설하여 전력을 생산하시오. +sector.basin.description = 이 지역에는 많은 수의 적이 확인되었습니다. 발판을 마련하기 위해 신속히 유닛을 생산하여 적의 기지를 무력화 해야 합니다. +sector.marsh.description = 이 지역은 아르키사이트가 풍부하지만 분출구의 수는 한정적입니다.\n[accent]화학적 연소실[]을 건설하여 전력을 생산하세요. sector.peaks.description = 이 지역의 산악 지형은 대부분의 기체를 무용지물로 만들었습니다. 비행 가능한 기체가 필요합니다.\n적의 방공망에 유의하십시오. 일부 시설은 지원 건물을 공격하여 무력화시킬 수 있습니다. -sector.ravine.description = 적의 중요한 이동 경로이긴 하지만, 해당 구역에선 적의 코어가 감지되지 않았습니다. 다양한 적군을 맞닥뜨릴 것으로 예상됩니다.\n[accent]설금[]을 생산하십시오. 포탑 [accent]어플릭트[]를 건설하십시오. -sector.caldera-erekir.description = 이 지역에서 탐지된 자원은 여러 섬에 분산되어 있습니다 .\n드론을 기반으로 한 운송수단을 연구하고 활용하시오. +sector.ravine.description = 적의 중요한 이동 경로이긴 하지만, 해당 구역에선 적의 기지가 감지되지 않았습니다. 다양한 적군을 맞닥뜨릴 것으로 예상됩니다.\n[accent]설금[]을 생산하여 포탑 [accent]어플릭트[]를 건설하세요. +sector.caldera-erekir.description = 이 지역에서 탐지된 자원은 여러 섬에 분산되어 있습니다 .\n드론을 기반으로 한 운송수단을 연구하고 활용하세요. sector.stronghold.description = 이 지역의 대규모 적 야영지에는 적들이 지키고 있는 상당한 양의 [accent]토륨[] 매장지가 있습니다.\n더 높은 등급의 기체와 포탑을 연구할 때 사용합니다. sector.crevice.description = 적들은 이 지역에서 당신의 기지를 제거하기 위해 맹렬한 공격부대를 보낼 것입니다.\n[accent]탄화물[]과 [accent]열분해 발전기[]를 연구하는 것은 살아남기 위해 반드시 필요합니다. sector.siege.description = 이 지역은 두 갈래의 공격을 강요하는 두 개의 평행 협곡이 특징입니다.\n더 강력한 전차 기체를 만들기 위한 능력을 얻기 위해 [accent]시아노겐[]을 연구하시오.\n주의: 적의 장거리 발사체가 감지되었습니다. 미사일은 충돌 전에 격추될 수 있습니다. -sector.crossroads.description = 이 지역의 적 기지는 다양한 지형에 설치되어 있습니다. 적응하기 위해 다양한 기체를 연구하시오.\n또한, 일부 기지는 보호막으로 보호되고 있습니다. 그들이 어떻게 전력을 공급받는지 알아보시오. -sector.karst.description = 이 지역은 자원이 풍부하지만, 새로운 코어가 착륙하면 적에게 공격을 받을 것입니다.\n자원의 이점을 활용하고 [accent]메타[]를 연구하시오. -sector.origin.description = 상당한 적이 존재하는 마지막 지역입니다.\n가능한 연구 기회가 남아 있지 않습니다. 오직 모든 적의 코어를 파괴하는 데만 집중하십시오. +sector.crossroads.description = 이 지역의 적 기지는 다양한 지형에 위차하고 있는 것이 확인 되었으며 이로 인해 위해 다양한 기체가 필요합니다. \n또한, 일부 기지는 보호막으로 보호되고 있습니다. 그들이 어떻게 전력을 공급받는지 알아보아야 합니다. +sector.karst.description = 이 지역은 자원이 풍부하지만, 새로운 코어가 착륙하면 적에게 공격을 받을 것입니다.\n자원의 이점을 활용하고 [accent]메타[]를 연구하세요. +sector.origin.description = 상당한 적이 존재하는 마지막 지역입니다.\n 모든 연구를 마쳤으니 오직 모든 적의 코어를 파괴하는 데만 집중하세요. status.burning.name = 발화 status.freezing.name = 빙결 @@ -973,6 +983,7 @@ stat.abilities = 능력 stat.canboost = 이륙 가능 stat.flying = 비행 stat.ammouse = 탄약 사용 +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = 피해량 배수 stat.healthmultiplier = 체력 배수 stat.speedmultiplier = 이동속도 배수 @@ -983,17 +994,46 @@ stat.immunities = 상태이상 면역 stat.healing = 회복량 ability.forcefield = 보호막 필드 +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = 수리 필드 +ability.repairfield.description = Repairs nearby units ability.statusfield = 상태이상 필드 +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = 공장 +ability.unitspawn.description = Constructs units ability.shieldregenfield = 방어막 복구 필드 +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = 가속 전격 +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = 방어막 아크 +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = 재생성 억제 필드 +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = 에너지 필드 -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = 코어에만 투입할 수 있습니다 bar.drilltierreq = 더 좋은 드릴 필요 @@ -1069,6 +1109,7 @@ unit.items = 자원 unit.thousands = k unit.millions = m unit.billions = b +unit.shots = shots unit.pershot = /발 category.purpose = 목적 category.general = 일반 @@ -1078,6 +1119,8 @@ category.items = 자원 category.crafting = 입력/출력 category.function = 기능 category.optional = 선택적 향상 +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = 코어 발사/착륙 애니메이션 건너뛰기 setting.landscape.name = 가로화면 잠금 setting.shadows.name = 그림자 @@ -1136,7 +1179,7 @@ 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 = 효과음 크기 @@ -1181,23 +1224,24 @@ keybind.mouse_move.name = 커서를 따라서 이동 keybind.pan.name = 팬 보기 keybind.boost.name = 이륙 keybind.command_mode.name = 명령 모드 -keybind.command_queue.name = Unit Command Queue -keybind.create_control_group.name = Create Control Group -keybind.cancel_orders.name = Cancel Orders -keybind.unit_stance_shoot.name = Unit Stance: Shoot -keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire -keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target -keybind.unit_stance_patrol.name = Unit Stance: Patrol -keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.command_queue.name = 유닛 명령 Queue +keybind.create_control_group.name = 컨트롤 그룹 만들기 +keybind.cancel_orders.name = 명령 취소 +keybind.unit_stance_shoot.name = 유닛 명령: 사격 +keybind.unit_stance_hold_fire.name = 유닛 명령: 사격 중지 +keybind.unit_stance_pursue_target.name = 유닛 명령: 타겟 추격 +keybind.unit_stance_patrol.name = 유닛 명령: 정찰 +keybind.unit_stance_ram.name = 유닛 명령: 돌격 +keybind.unit_command_move.name = 유닛 제어: 이동 +keybind.unit_command_repair.name = 유닛 제어: 수리 +keybind.unit_command_rebuild.name = 유닛 제어: 재건 +keybind.unit_command_assist.name = 유닛 제어: 플레이어 지원 +keybind.unit_command_mine.name = 유닛 제어: 채굴 +keybind.unit_command_boost.name = 유닛 제어: 비행 +keybind.unit_command_load_units.name = 유닛 제어: 유닛 적재 +keybind.unit_command_load_blocks.name = 유닛 제어: 블록 적재 +keybind.unit_command_unload_payload.name = 유닛 제어: 화물 투하 +keybind.unit_command_enter_payload.name = 유닛 제어: 화물 건물에 착륙/진입 keybind.rebuild_select.name = 지역 재건 keybind.schematic_select.name = 영역 설정 keybind.schematic_menu.name = 설계도 메뉴 @@ -1261,22 +1305,25 @@ mode.pvp.description = 다른 플레이어와 현장에서 싸우세요.\n[gray] mode.attack.name = 공격 mode.attack.description = 적의 기지를 파괴하세요.\n[gray]플레이하려면 맵에 적 코어가 필요합니다. mode.custom = 사용자 정의 규칙 -rules.invaliddata = Invalid clipboard data. +rules.invaliddata = 잘못된 클립보드 데이터 입니다. rules.hidebannedblocks = 금지된 블록 숨기기 rules.infiniteresources = 무한 자원 rules.onlydepositcore = 오직 코어에만 투입 가능 -rules.derelictrepair = Allow Derelict Block Repair +rules.derelictrepair = 잔해 블록 수리 허 rules.reactorexplosions = 원자로 폭발 허용 rules.coreincinerates = 코어 방화 비허용 rules.disableworldprocessors = 월드 프로세서 비활성화 rules.schematic = 설계도 허용 rules.wavetimer = 시간 제한이 있는 단계 rules.wavesending = 단계 넘김 +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = 단계 +rules.airUseSpawns = Air units use spawn points rules.attack = 공격 모드 -rules.buildai = Base Builder AI -rules.buildaitier = Builder AI Tier +rules.buildai = 기지 건설 AI +rules.buildaitier = 건설 AI 등급 rules.rtsai = RTS AI rules.rtsminsquadsize = 최소 부대 규모 rules.rtsmaxsquadsize = 최대 부대 규모 @@ -1295,6 +1342,7 @@ rules.unitdamagemultiplier = 기체 피해량 배수 rules.unitcrashdamagemultiplier = 기체 파손 피해량 배수 rules.solarmultiplier = 태양광 전력 배수 rules.unitcapvariable = 코어 기체수 제한 추가 +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = 기본 기체 제한 rules.limitarea = 맵 영역 제한 rules.enemycorebuildradius = 적 코어 건설금지 범위:[lightgray] (타일) @@ -1327,6 +1375,8 @@ rules.weather = 날씨 추가 rules.weather.frequency = 빈도: rules.weather.always = 항상 rules.weather.duration = 지속 시간: +rules.placerangecheck.info = 플레이어가 적 건물 근처에 건설 불가 구역을 생성합니다. 만일, 플레이어가 포탑을 건설하고자 할 경우 반경이 증가되어 적 건물이 포탑의 사정거리에 닿지 않게됩니다. +rules.onlydepositcore.info = 코어를 제외한 어떠한 건물에도 자원을 투하할 수 없게 만듭니다. content.item.name = 자원 content.liquid.name = 액체 @@ -1345,8 +1395,8 @@ item.titanium.name = 티타늄 item.thorium.name = 토륨 item.silicon.name = 실리콘 item.plastanium.name = 플라스터늄 -item.phase-fabric.name = 메타 -item.surge-alloy.name = 설금 +item.phase-fabric.name = 위상 섬유 +item.surge-alloy.name = 서지 합금 item.spore-pod.name = 포자 꼬투리 item.sand.name = 모래 item.blast-compound.name = 폭발물 @@ -1523,8 +1573,8 @@ block.titanium-wall.name = 티타늄 벽 block.titanium-wall-large.name = 대형 티타늄 벽 block.plastanium-wall.name = 플라스터늄 벽 block.plastanium-wall-large.name = 대형 플라스터늄 벽 -block.phase-wall.name = 메타 벽 -block.phase-wall-large.name = 대형 메타 벽 +block.phase-wall.name = 위상 벽 +block.phase-wall-large.name = 대형 위상 벽 block.thorium-wall.name = 토륨 벽 block.thorium-wall-large.name = 대형 토륨 벽 block.door.name = 문 @@ -1551,7 +1601,7 @@ block.illuminator.name = 조명 block.overflow-gate.name = 포화 필터 block.underflow-gate.name = 불포화 필터 block.silicon-smelter.name = 실리콘 제련소 -block.phase-weaver.name = 메타 제조기 +block.phase-weaver.name = 위상 방직기 block.pulverizer.name = 분쇄기 block.cryofluid-mixer.name = 냉각수 혼합기 block.melter.name = 융해기 @@ -1561,7 +1611,7 @@ block.separator.name = 광재 분리기 block.coal-centrifuge.name = 석탄 정제기 block.power-node.name = 전력 노드 block.power-node-large.name = 대형 전력 노드 -block.surge-tower.name = 설금 타워 +block.surge-tower.name = 서지 타워 block.diode.name = 다이오드 block.battery.name = 배터리 block.battery-large.name = 대형 배터리 @@ -1589,7 +1639,7 @@ block.tsunami.name = 쓰나미 block.swarmer.name = 스웜 block.salvo.name = 살보 block.ripple.name = 립플 -block.phase-conveyor.name = 메타 컨베이어 +block.phase-conveyor.name = 위상 컨베이어 block.bridge-conveyor.name = 다리 컨베이어 block.plastanium-compressor.name = 플라스터늄 압축기 block.pyratite-mixer.name = 파이라타이트 혼합기 @@ -1601,7 +1651,7 @@ block.repair-point.name = 수리 지점 block.repair-turret.name = 수리 포탑 block.pulse-conduit.name = 펄스 파이프 block.plated-conduit.name = 도금된 파이프 -block.phase-conduit.name = 메타 파이프 +block.phase-conduit.name = 위상 파이프 block.liquid-router.name = 액체 분배기 block.liquid-tank.name = 액체 탱크 block.liquid-container.name = 액체 컨테이너 @@ -1613,11 +1663,11 @@ block.mass-driver.name = 매스 드라이버 block.blast-drill.name = 압축 공기분사 드릴 block.impulse-pump.name = 충격 펌프 block.thermal-generator.name = 지열 발전기 -block.surge-smelter.name = 설금 제련소 +block.surge-smelter.name = 서지 제련소 block.mender.name = 멘더 block.mend-projector.name = 수리 프로젝터 -block.surge-wall.name = 설금 벽 -block.surge-wall-large.name = 큰 설금 벽 +block.surge-wall.name = 서지 벽 +block.surge-wall-large.name = 큰 서지 벽 block.cyclone.name = 사이클론 block.fuse.name = 퓨즈 block.shock-mine.name = 전격 지뢰 @@ -1634,10 +1684,10 @@ block.segment.name = 세그먼트 block.ground-factory.name = 지상 공장 block.air-factory.name = 항공 공장 block.naval-factory.name = 해양 공장 -block.additive-reconstructor.name = 재구성기 : Additive -block.multiplicative-reconstructor.name = 재구성기 : Multiplicative -block.exponential-reconstructor.name = 재구성기 : Exponential -block.tetrative-reconstructor.name = 재구성기 : Tetrative +block.additive-reconstructor.name = 덧셈식 재구성기 +block.multiplicative-reconstructor.name = 곱셈식 재구성기 +block.exponential-reconstructor.name = 거듭제곱식 재구성기 +block.tetrative-reconstructor.name = 테트레이션식 재구성기 block.payload-conveyor.name = 화물 컨베이어 block.payload-router.name = 화물 분배기 block.duct.name = 도관 @@ -1722,15 +1772,15 @@ block.atmospheric-concentrator.name = 대기 농축기 block.oxidation-chamber.name = 산화실 block.electric-heater.name = 전기 가열기 block.slag-heater.name = 광재 가열기 -block.phase-heater.name = 메타 가열기 +block.phase-heater.name = 위상 가열기 block.heat-redirector.name = 열 전송기 block.heat-router.name = 열 분배기 block.slag-incinerator.name = 광재 소각로 block.carbide-crucible.name = 탄화물 도가니 block.slag-centrifuge.name = 광재 원심분리기 -block.surge-crucible.name = 설금 도가니 +block.surge-crucible.name = 서지 도가니 block.cyanogen-synthesizer.name = 시아노겐 합성기 -block.phase-synthesizer.name = 메타 합성기 +block.phase-synthesizer.name = 위상 합성기 block.heat-reactor.name = 열 반응로 block.beryllium-wall.name = 베릴륨 벽 block.beryllium-wall-large.name = 대형 베릴륨 벽 @@ -1739,8 +1789,8 @@ block.tungsten-wall-large.name = 대형 텅스텐 벽 block.blast-door.name = 방폭문 block.carbide-wall.name = 탄화물 벽 block.carbide-wall-large.name = 대형 탄화물 벽 -block.reinforced-surge-wall.name = 보강된 설금 벽 -block.reinforced-surge-wall-large.name = 보강된 대형 설금 벽 +block.reinforced-surge-wall.name = 보강된 서지 벽 +block.reinforced-surge-wall-large.name = 보강된 대형 서지 벽 block.shielded-wall.name = 보호된 벽 block.radar.name = 레이더 block.build-tower.name = 건설 타워 @@ -1752,8 +1802,8 @@ block.armored-duct.name = 장갑 도관 block.overflow-duct.name = 포화 도관 block.underflow-duct.name = 불포화 도관 block.duct-unloader.name = 언로더 도관 -block.surge-conveyor.name = 설금 컨베이어 -block.surge-router.name = 설금 분배기 +block.surge-conveyor.name = 서지 컨베이어 +block.surge-router.name = 서지 분배기 block.unit-cargo-loader.name = 기체 화물 적재소 block.unit-cargo-unload-point.name = 기체 화물 하역지점 block.reinforced-pump.name = 보강된 펌프 @@ -1849,7 +1899,7 @@ hint.launch = 충분한 자원을 모았으면, 오른쪽 아래의 \ue827 [acce hint.launch.mobile = 충분한 자원을 모았으면, 오른쪽 아래의 \ue88c [accent]메뉴[]에 있는 \ue827 [accent]지도[]에서 주변 지역을 선택해서 [accent]출격[]할 수 있습니다. hint.schematicSelect = [accent][[F][]를 누른 채로 끌어서 복사하고 붙여넣을 블록을 선택하십시오. \n\n [accent][[마우스 휠][]을 누르면 한 개의 블록만 복사할 수 있습니다. hint.rebuildSelect = [accent][[B][]를 누르고 끌어서 파괴된 블록 흔적을 선택하세요.\n선택된 블록은 자동으로 복구됩니다. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect.mobile = 복사버튼 \ue874 을 선택하시고, 재건축 버튼 \ue80f 을 탭 하신 뒤, 드래그 하여 블록 흔적을 선택하세요. 선택된 블록은 자동으로 복구됩니다. hint.conveyorPathfind = [accent][[왼쪽 Ctrl][]을 누른 채로 컨베이어를 대각선으로 끌면 길을 자동으로 만들어줍니다. hint.conveyorPathfind.mobile = \ue844 [accent]대각 모드[]를 활성화하고 컨베이어를 대각선으로 끌면 길을 자동으로 찾아줍니다. hint.boost = [accent][[왼쪽 Shift][]를 눌러 탑승한 기체로 장애물을 넘을 수 있습니다. \n\n 일부 지상 기체만 이륙할 수 있습니다. @@ -1904,38 +1954,38 @@ onset.turrets = 기체는 유용하지만, [accent]포탑[]은 사용하기에 onset.turretammo = 포탑에 [accent]베릴륨 탄약[]을 공급하세요. onset.walls = [accent]벽[]은 건물로 날아오는 공격을 막을 수 있습니다. \n포탑 주변에 \uf6ee [accent]베릴륨 벽[]을 배치하세요. onset.enemies = 적이 다가옵니다, 방어 태세를 갖추세요. -onset.defenses = [accent]Set up defenses:[lightgray] {0} +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(무언가를 집어올리거나 내려놓으려면, 길게 누르세요.) -split.acquire = 기체를 제조하려면 텅스텐을 습득해야 합니다. +split.acquire = 기체를 제조하려면 텅스텐을 채굴해야 합니다. split.build = 기체를 벽의 반대편으로 운반해야 합니다.\n두 개의 [accent]회물 매스 드라이버[]를 각 벽면에 하나씩 배치하세요.\n둘 중 하나를 누른 다음 다른 하나를 선택하여 연결을 설정합니다. split.container = 컨테이너와 마찬가지로, 기체도 [accent]화물 매스 드라이버[]를 사용하여 운송할 수 있습니다.\n기체 조립대를 매스 드라이버 근처에 배치하여 기체를 적재한 후, 벽을 가로질러 보내 적 기지를 공격합니다. item.copper.description = 모든 종류의 구조물 및 탄약으로 사용하는 기본 자원입니다. -item.copper.details = 평범한 구리. 세르플로에 비정상적으로 많이 분포함. 보강되지 않는 한 구조적으로 약함. +item.copper.details = 평범한 구리. 세르플로에 비정상적으로 많이 분포되어 있습니다. 기본적으로 보강하지 않는 한 구조적으로 약합니다. item.lead.description = 전자 및 액체 수송 블록에서 광범위하게 사용하는 기본 자원입니다. -item.lead.details = 밀도가 높으며 반응성이 적은 자원. 배터리에 주로 사용됨. +item.lead.details = 밀도가 높으며 반응성이 적은 자원. 배터리에 주로 사용됩니다. item.metaglass.description = 액체 분배 및 저장에 광범위하게 사용합니다. item.graphite.description = 탄약 및 전기 부품에 사용되는 무기질 탄소입니다. item.sand.description = 다른 제련된 자원의 생산에 사용됩니다. item.coal.description = 연료 및 자원 생산에 광범위하게 사용됩니다. -item.coal.details = 화석화된 식물 물질. 씨앗이 나오기 훨씬 전에 형성되었음. +item.coal.details = 화석화된 식물 물질. 씨앗이 나오기 훨씬 전에 형성되었습니다. item.titanium.description = 액체 수송 구조물, 드릴 및 공장에서 광범위하게 사용되는 희귀한 초경량 금속입니다. item.thorium.description = 튼튼한 구조물과 핵 연료로 사용되는 고밀도의 방사성 금속입니다. item.scrap.description = 융해기와 분쇄기를 통해 다른 물질로 정제할 수 있습니다. -item.scrap.details = 오래된 구조물과 기체의 잔해. 미량의 다양한 금속들이 포함되어 있음. +item.scrap.details = 오래된 구조물과 기체의 잔해. 미량의 다양한 금속들이 포함되어 있습니다. item.silicon.description = 복잡한 전자 장치나 유도탄에 사용되는 유용한 반도체입니다. item.plastanium.description = 고급 기체, 절연 및 파편화 탄약에 사용됩니다. item.phase-fabric.description = 최첨단 전자 제품과 자가 수리 기술에 사용되는 거의 무중력에 가까운 물질입니다. item.surge-alloy.description = 첨단 무기 및 반작용 방어 구조물에 사용되는 고급 합금입니다. item.spore-pod.description = 석유, 폭발물과 연료로 전환하는 데 사용되는 합성 포자 버섯입니다. -item.spore-pod.details = 포자. 합성 생명체로 판단됨. 타 유기체에 치명적인 독가스를 내뿜음. 매우 빠르게 퍼짐. 특정 조건에서 인화성이 매우 높음. +item.spore-pod.details = 포자, 합성 생명체로 판단됩니다. 타 유기체에 치명적인 독가스를 내뿜으며. 매우 빠르게 퍼집니다. 특정한 조건에서 인화성이 매우 높습니다. item.blast-compound.description = 폭탄과 폭발성 탄약에 사용되는 불안정한 화합물입니다. item.pyratite.description = 방화 무기와 연료를 연소하는 발전기에 사용되는 가연성이 매우 높은 물질입니다. item.beryllium.description = 에르키아의 여러 종류의 건축물과 탄약에 사용됩니다. @@ -1953,7 +2003,7 @@ liquid.hydrogen.description = 자원 추출, 기체 생산 및 구조물 수리 liquid.cyanogen.description = 탄약, 첨단 기체의 구축 및 첨단 블록의 다양한 반응에 사용됩니다. 강한 인화성 물질입니다. liquid.nitrogen.description = 자원 추출, 가스 생성 및 기체 생산에 사용됩니다. 불활성 물질입니다. liquid.neoplasm.description = 신생물 반응로의 위험한 생물학적 부산물. 접촉하는 즉시 인접한 모든 수분 함유 블록으로 빠르게 확산되며, 진행되는 동안 피해를 입힙니다. 점성을 띄는 물질입니다. -liquid.neoplasm.details = 신생물. 진흙과 같은 일관성을 가진 빠르게 분열하는 합성 세포의 통제 불가능한 덩어리. 열 저항. 물과 관련된 구조물에는 매우 위험.\n\n표준 분석에 비해 너무 복잡하고 불안정함. 잠재된 행동 원칙을 알 수 없음. 광재 웅덩이에서 소각하는 것이 바람직함. +liquid.neoplasm.details = 신생물, 진흙과 비슷한 점성을 가졌으며, 통제 불능의 속도로 빠르게 확산되는 합성세포 덩어리 입니다. 고온에 저항력이 있으며, 일반적인 분석으로는 너무나 복잡하고 불안정하여 아직 정확한 행동 양식이나 생태를 확인하지 못 했습니다. 열 저항. 물과 관련된 구조물에는 매우 위험합니다.\n\n 광재 웅덩이에 소각하는 것이 바람직합니다. block.derelict = \ue815 [lightgray]잔해 block.armored-conveyor.description = 자원을 앞으로 운반합니다. 측면에서 자원을 받아들이지 않습니다. @@ -1966,8 +2016,8 @@ block.multi-press.description = 석탄을 흑연으로 압축합니다. 냉각 block.silicon-smelter.description = 석탄과 모래에서 실리콘을 정제합니다. block.kiln.description = 모래와 납을 강화 유리로 제련합니다. block.plastanium-compressor.description = 석유와 티타늄으로 플라스터늄을 생산합니다. -block.phase-weaver.description = 토륨과 모래로 메타를 합성합니다. -block.surge-smelter.description = 티타늄, 납, 실리콘 및 구리를 설금으로 혼합합니다. +block.phase-weaver.description = 토륨과 모래로 위상 섬유를 합성합니다. +block.surge-smelter.description = 티타늄, 납, 실리콘 및 구리를 서지 합금으로 혼합합니다. block.cryofluid-mixer.description = 물과 미세 티타늄 분말을 냉각수로 혼합합니다. block.blast-mixer.description = 파이라타이트와 포자로 폭발물을 생산합니다. block.pyratite-mixer.description = 석탄, 납, 그리고 모래를 파이라타이트로 혼합합니다. @@ -2000,9 +2050,9 @@ block.surge-wall-large.description = 적 발사체로부터 아군 구조물을 block.door.description = 탭하여 열거나 닫을 수 있는 벽입니다. block.door-large.description = 탭하여 열거나 닫을 수 있는 벽입니다.\n여러 타일을 차지합니다. block.mender.description = 주변 블록을 주기적으로 수리합니다.\n선택적으로 실리콘을 사용하여 범위와 효율성을 향상할 수 있습니다. -block.mend-projector.description = 주변의 블록을 수리합니다.\n선택적으로 메타를 사용하여 범위와 효율성을 향상할 수 있습니다. -block.overdrive-projector.description = 주변 건물의 속도를 높입니다.\n선택적으로 메타를 사용하여 범위와 효율성을 향상할 수 있습니다. -block.force-projector.description = 주위에 육각형 역장을 형성하여 내부의 건물과 기체를 공격으로부터 보호합니다. 지속해서 많은 피해를 받을 경우 과열됩니다.\n선택적으로 냉각수를 사용해서 과열 방지를, 메타를 사용해서 보호막 크기를 증가시킬 수 있습니다. +block.mend-projector.description = 주변의 블록을 수리합니다.\n선택적으로 위상 섬유를 사용하여 범위와 효율성을 향상할 수 있습니다. +block.overdrive-projector.description = 주변 건물의 속도를 높입니다.\n선택적으로 위상 섬유를 사용하여 범위와 효율성을 향상할 수 있습니다. +block.force-projector.description = 주위에 육각형 역장을 형성하여 내부의 건물과 기체를 공격으로부터 보호합니다. 지속해서 많은 피해를 받을 경우 과열됩니다.\n선택적으로 냉각수를 사용해서 과열 방지를, 위상 섬유를 사용해서 보호막 크기를 증가시킬 수 있습니다. block.shock-mine.description = 접촉한 적 기체에게 전격 아크를 방출합니다. block.conveyor.description = 자원을 앞으로 운반합니다. 회전하여 방향을 바꿀 수 있습니다. block.titanium-conveyor.description = 자원을 앞으로 운반합니다. 컨베이어보다 더 빠릅니다. @@ -2085,7 +2135,7 @@ block.parallax.description = 공중 목표물을 끌어오는 견인 광선을 block.tsunami.description = 적을 향해 강력한 액체 줄기를 발사합니다. 물이 공급되면 자동으로 화재를 진압합니다. block.silicon-crucible.description = 파이라타이트를 추가 열원으로 사용하여 모래와 석탄에서 실리콘을 정제합니다. 뜨거운 곳에서 더 효율적입니다. block.disassembler.description = 광재를 낮은 효율로 미량의 희귀한 광물들로 분리합니다. 토륨을 생산할 수 있습니다. -block.overdrive-dome.description = 주변 건물의 속도를 높입니다. 작동하려면 메타와 실리콘이 필요합니다. +block.overdrive-dome.description = 주변 건물의 속도를 높입니다. 작동하려면 위상 섬유와 실리콘이 필요합니다. block.payload-conveyor.description = 공장에서 생산된 기체같은 큰 화물을 운반합니다. block.payload-router.description = 화물을 3가지 방향으로 번갈아 운반합니다. block.ground-factory.description = 지상 기체를 생산합니다. 생산된 기체는 바로 사용하거나 강화를 위해 재구성기로 이동할 수 있습니다. @@ -2122,13 +2172,13 @@ block.silicon-arc-furnace.description = 모래와 흑연에서 실리콘을 정 block.oxidation-chamber.description = 베릴륨과 오존을 산화물로 전환합니다. 부산물로 열을 방출합니다. block.electric-heater.description = 블록에 열을 가합니다. 많은 양의 전력이 필요합니다. block.slag-heater.description = 블록에 열을 가합니다. 광재가 필요합니다. -block.phase-heater.description = 블록에 열을 가합니다. 메타가 필요합니다. +block.phase-heater.description = 블록에 열을 가합니다. 위상 섬유가 필요합니다. block.heat-redirector.description = 누적된 열을 다른 블록으로 전달합니다. block.heat-router.description = 축적된 열을 세 가지 출력 방향으로 분산시킵니다. block.electrolyzer.description = 물을 수소와 오존 가스로 변환합니다. block.atmospheric-concentrator.description = 대기에서 질소를 농축합니다. 열이 필요합니다. -block.surge-crucible.description = 광재와 실리콘으로 설금을 형성합니다. 열이 필요합니다. -block.phase-synthesizer.description = 토륨, 모래 및 오존으로부터 메타를 합성합니다. 열이 필요합니다. +block.surge-crucible.description = 광재와 실리콘으로 서지 합금을 형성합니다. 열이 필요합니다. +block.phase-synthesizer.description = 토륨, 모래 및 오존으로부터 위상 섬유를 합성합니다. 열이 필요합니다. block.carbide-crucible.description = 흑연과 텅스텐을 탄화물로 융합합니다. 열이 필요합니다. block.cyanogen-synthesizer.description = 아르키사이트와 흑연으로부터 시아노겐을 합성합니다. 열이 필요합니다. block.slag-incinerator.description = 비휘발성 자원 또는 액체를 소각합니다. 광재가 필요합니다. @@ -2163,7 +2213,7 @@ block.duct-unloader.description = 선택한 자원을 뒤의 블록에서 빼냅 block.underflow-duct.description = 포화 도관의 반대입니다. 왼쪽 및 오른쪽 경로가 차단된 경우 앞쪽으로 출력합니다. block.reinforced-liquid-junction.description = 두 개의 교차 파이프 사이의 다리 역할을 합니다. block.surge-conveyor.description = 자원을 일괄적으로 이동합니다. 전력을 공급하여 가속할 수 있습니다. 인접한 블록에 전원을 공급합니다. -block.surge-router.description = 설금 컨베이어에서 항목을 세 방향으로 균등하게 분배합니다. 전력을 공급하여 가속할 수 있습니다. 인접한 블록에 전원을 공급합니다. +block.surge-router.description = 서지 컨베이어에서 항목을 세 방향으로 균등하게 분배합니다. 전력을 공급하여 가속할 수 있습니다. 인접한 블록에 전원을 공급합니다. block.unit-cargo-loader.description = 화물용 드론을 제작합니다. 드론은 자동으로 자원과 일치하는 필터로 설정된 기체 화물 하역지점으로 분배합니다. block.unit-cargo-unload-point.description = 화물 드론의 하역지점 역할을 합니다. 선택한 필터와 일치하는 자원을 받아들입니다. block.beam-node.description = 전력을 다른 블록에 직선 방향으로 전송합니다. 소량의 전력을 저장합니다. @@ -2172,7 +2222,7 @@ block.turbine-condenser.description = 분출구에 배치할 때 전력을 발 block.chemical-combustion-chamber.description = 아르키사이트와 오존으로 전력을 생산합니다. block.pyrolysis-generator.description = 아르키사이트와 광재로 많은 양의 전력을 생산합니다. 부산물로 물이 발생합니다. block.flux-reactor.description = 가열 시 많은 양의 전력을 발생시킵니다. 안정제로 시아노겐이 필요합니다. 전력 출력 및 시아노겐 요구량은 열 입력에 비례합니다.\n시아노겐이 부족할 경우 폭발합니다. -block.neoplasia-reactor.description = 아르키사이트, 물 및 메타를 사용하여 많은 양의 전력을 생산합니다. 부산물로 열과 위험한 신생물이 발생합니다.\n도관을 통해 반응로에서 신생물이 제거되지 않으면 격렬하게 폭발합니다. +block.neoplasia-reactor.description = 아르키사이트, 물 및 위상 섬유를 사용하여 많은 양의 전력을 생산합니다. 부산물로 열과 위험한 신생물이 발생합니다.\n도관을 통해 반응로에서 신생물이 제거되지 않으면 격렬하게 폭발합니다. block.build-tower.description = 범위 내의 구조물을 자동으로 재구축하고 다른 유닛의 건설을 지원합니다. block.regen-projector.description = 정사각형 둘레의 범위 안에 있는 아군 구조물을 천천히 수리합니다. 수소가 필요합니다. block.reinforced-container.description = 소량의 자원을 저장합니다. 내용물은 언로더를 통해 빼낼 수 있습니다. 코어의 저장 용량은 늘리지 않습니다. @@ -2258,7 +2308,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = 드로잉 버퍼에 실행문 추가\n[accent]Draw Flush[]가 사용되기 전까진 아무것도 보여주지 않습니다 lst.drawflush = 대기중인 [accent]Draw[]실행문을 디스플레이에 출력 lst.printflush = 대기중인 [accent]Print[]실행문을 메시지 블록에 출력 @@ -2281,7 +2331,7 @@ lst.getblock = 특정 위치의 타일 정보를 불러옴 lst.setblock = 특정 위치의 타일 정보 설정 lst.spawnunit = 특정 위치에 기체 소환 lst.applystatus = 기체에게 상태이상을 적용하거나 삭제 -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = 특정 위치에 이전 단계를 실행\n실제 단계가 넘어가지 않습니다 lst.explosion = 특정 위치에 폭발 생성 @@ -2343,6 +2393,7 @@ lenum.shoot = 특정 위치에 발사 lenum.shootp = 목표물 속도를 예측하여 발사 lenum.config = 필터의 아이템같은 건물의 설정 lenum.enabled = 블록의 활성 여부 +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = 조명 색상 laccess.controller = 기체 제어자. 프로세서가 제어하면, 프로세서를 반환합니다.\n다른 기체에 의해 지휘되면(G키), 지휘하는 기체를 반환합니다.\n그 외에는 자신을 반환합니다. @@ -2483,7 +2534,7 @@ lenum.payenter = 유닛 아래의 화물 건물에 착륙/진입 lenum.flag = 깃발 수 설정 lenum.mine = 특정 위치에서 채광 lenum.build = 구조물 건설 -lenum.getblock = 특정 좌표의 빌딩과 블록을 반환합니다.\n위치는 기체의 인지 범위 내여야 합니다.\n자연 지형은 [accent]@solid[]의 유형을 가집니다. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = 좌표 주변 기체 발견 여부 lenum.boost = 이륙 시작/중단 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. diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 0cf772d249..d197bd3657 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -435,6 +435,11 @@ editor.rules = Taisyklės: editor.generation = Generacija: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Redaguoti žaidime editor.playtest = Playtest editor.publish.workshop = Publikuoti Dirbtuvėje @@ -490,6 +495,7 @@ editor.default = [lightgray] details = Detaliau... edit = Redaguoti... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Pavadinimas: editor.spawn = Atradinti vienetą @@ -577,6 +583,7 @@ filter.clear = Išvalyti filter.option.ignore = ignoruoti filter.scatter = Išsklaidyti filter.terrain = Reljefas +filter.logic = Logic filter.option.scale = Mastelis filter.option.chance = Tikimybė filter.option.mag = Didumas @@ -599,7 +606,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -671,6 +680,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -717,7 +727,7 @@ error.any = Nžinoma tinklo klaida. error.bloom = Nepavyko inicijuoti spindėjimo.\nJūsų įrenginys gali nepalaikyti šios funkcijos. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -962,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -972,17 +983,46 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1059,6 +1099,7 @@ unit.items = daiktai unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Bendra @@ -1068,6 +1109,8 @@ category.items = Daiktai category.crafting = Įeiga/Išeiga category.function = Function category.optional = Galimi Pagerinimai +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.landscape.name = Užrakinti pasukimą setting.shadows.name = Šešėliai @@ -1179,15 +1222,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Pasirinkite Regioną keybind.schematic_menu.name = Schemų Meniu @@ -1263,7 +1307,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Bangų Laikmatis rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Bangos +rules.airUseSpawns = Air units use spawn points rules.attack = Puolimo Režimas rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1285,6 +1332,7 @@ rules.unitdamagemultiplier = Vienetų Žalos Daugiklis rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Nestatymo aplink priešų branduolį spindulys:[lightgray] (blokais) @@ -1317,6 +1365,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Daiktai content.liquid.name = Skysčiai @@ -2243,7 +2293,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Read a number from a linked memory cell. lst.write = Write a number to a linked memory cell. lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. -lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" +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. @@ -2266,7 +2316,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2326,6 +2376,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2449,7 +2500,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index fb8fbe5f10..21df1a3d23 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -443,6 +443,11 @@ editor.rules = Regels: editor.generation = Generatie: editor.objectives = Doelen editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Bewerk In-Spel editor.playtest = Speeltest editor.publish.workshop = Publiceer in Werkplaats @@ -498,6 +503,7 @@ editor.default = [lightgray] details = Details... edit = Bewerk... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Naam: editor.spawn = Voeg Eenheid toe @@ -586,6 +592,7 @@ filter.clear = Verwijder filter.option.ignore = Negeer filter.scatter = Verstrooi filter.terrain = Terrein +filter.logic = Logic filter.option.scale = Schaal filter.option.chance = Verander @@ -609,7 +616,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -682,6 +691,7 @@ marker.shape.name = Vorm marker.text.name = Tekst marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Achtergrond marker.outline = Omtrek objective.research = [accent]Onderzoek:\n[]{0}[lightgray]{1} @@ -728,7 +738,7 @@ error.any = Onbekende netwerk fout. error.bloom = Bloom aanzetten mislukt.\nJe apparaat ondersteunt het waarschijnlijk niet. weather.rain.name = Regen -weather.snow.name = Sneeuw +weather.snowing.name = Sneeuw weather.sandstorm.name = Zandstorm weather.sporestorm.name = Schimmelstorm weather.fog.name = Mist @@ -974,6 +984,7 @@ stat.abilities = Capaciteiten stat.canboost = Kan Boosten stat.flying = Vliegende stat.ammouse = Ammunitie gebruik +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Schade Vermenigvuldiger stat.healthmultiplier = Levenspunten Vermenigvuldiger stat.speedmultiplier = Snelheids Vermenigvuldiger @@ -984,17 +995,46 @@ stat.immunities = Immuniteiten stat.healing = Genezing ability.forcefield = Krachtveld +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Reparatieveld +ability.repairfield.description = Repairs nearby units ability.statusfield = Statusveld +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Fabriek +ability.unitspawn.description = Constructs units ability.shieldregenfield = Schild Regeneratie Veld +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Beweging Bliksem +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Schild Boog +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regeneratie Onderdrukkingsveld +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energieveld -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Alleen materialen in de Core toegestaan. @@ -1071,6 +1111,7 @@ unit.items = materialen unit.thousands = k unit.millions = mln unit.billions = mjd +unit.shots = shots unit.pershot = /schot category.purpose = Doel category.general = Algemeen @@ -1080,6 +1121,8 @@ category.items = Materialen category.crafting = Invoer/Uitvoer category.function = Functie category.optional = Optionele Verbeteringen +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Lancering/Land Animatie setting.landscape.name = Vergrendel Landschap setting.shadows.name = Schaduwen @@ -1191,15 +1234,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Herbouw Regio keybind.schematic_select.name = Selecteer gebied keybind.schematic_menu.name = Ontwerpmenu @@ -1275,7 +1319,10 @@ rules.disableworldprocessors = Zet Wereld-Processors Uit. rules.schematic = Ontwerpen Toegestaan rules.wavetimer = Vijandelijke Golven Timer rules.wavesending = Golven Sturen +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Golven +rules.airUseSpawns = Air units use spawn points rules.attack = Aanvalmodus rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1297,6 +1344,7 @@ rules.unitdamagemultiplier = Eenheid Schade Vermenigvuldiger rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Zonne-Energie Vermenigvuldiger rules.unitcapvariable = Cores Dragen Bij Aan Eenheidslimiet +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Bais Eenheidlimiet rules.limitarea = Limiteer Kaart Gebied rules.enemycorebuildradius = Niet-Bouw Bereik Vijandelijke Cores:[lightgray] (tegels) @@ -1329,6 +1377,8 @@ rules.weather = Weer rules.weather.frequency = Frequentie: rules.weather.always = Altijd rules.weather.duration = Duur: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Materialen content.liquid.name = Vloeistoffen @@ -2256,7 +2306,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.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. @@ -2279,7 +2329,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2339,6 +2389,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2462,7 +2513,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index e03d97d06c..bb32cf85be 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -435,6 +435,11 @@ editor.rules = Rules: editor.generation = Generation: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -490,6 +495,7 @@ editor.default = [lightgray] details = Details... edit = Edit... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Name: editor.spawn = Spawn Unit @@ -577,6 +583,7 @@ filter.clear = Clear filter.option.ignore = Ignore filter.scatter = Scatter filter.terrain = Terrain +filter.logic = Logic filter.option.scale = Scale filter.option.chance = Chance filter.option.mag = Magnitude @@ -599,7 +606,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -671,6 +680,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -717,7 +727,7 @@ error.any = Unknown network error. error.bloom = Failed to initialize bloom.\nYour device may not support it. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -962,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -972,17 +983,46 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1059,6 +1099,7 @@ unit.items = items unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = General @@ -1068,6 +1109,8 @@ category.items = Items category.crafting = Input/Output category.function = Function category.optional = Optional Enhancements +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.landscape.name = Lock Landscape setting.shadows.name = Shadows @@ -1179,15 +1222,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1263,7 +1307,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Wave Timer rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Waves +rules.airUseSpawns = Air units use spawn points rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1285,6 +1332,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) @@ -1317,6 +1365,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Items content.liquid.name = Liquids @@ -2243,7 +2293,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Read a number from a linked memory cell. lst.write = Write a number to a linked memory cell. lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. -lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" +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. @@ -2266,7 +2316,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2326,6 +2376,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2449,7 +2500,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 5e19b1e4e4..87477c01ab 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -439,6 +439,11 @@ editor.rules = Zasady: editor.generation = Generacja: editor.objectives = Cele editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edytuj w Grze editor.playtest = Testuj Mapę editor.publish.workshop = Opublikuj w Warsztacie @@ -495,6 +500,7 @@ editor.default = [lightgray] details = Detale... edit = Edytuj... variables = Zmienne +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Nazwa: editor.spawn = Stwórz Jednostkę @@ -582,6 +588,7 @@ filter.clear = Oczyść filter.option.ignore = Ignoruj filter.scatter = Rozprosz filter.terrain = Teren +filter.logic = Logic filter.option.scale = Skala filter.option.chance = Szansa filter.option.mag = Wielkość @@ -604,7 +611,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -676,6 +685,7 @@ marker.shape.name = Figura marker.text.name = Tekst marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Tło marker.outline = Kontur objective.research = [accent]Zbadaj:\n[]{0}[lightgray]{1} @@ -723,7 +733,7 @@ error.any = Nieznany błąd sieci. error.bloom = Nie udało się załadować funkcji bloom.\nTwoje urządzenie może nie wspierać tej funkcji. weather.rain.name = Deszcz -weather.snow.name = Śnieg +weather.snowing.name = Śnieg weather.sandstorm.name = Burza piaskowa weather.sporestorm.name = Burza zarodników weather.fog.name = Mgła @@ -971,6 +981,7 @@ stat.abilities = Umiejętności stat.canboost = Może przyspieszyć stat.flying = Może latać stat.ammouse = Zużycie Amunicji +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Mnożnik Obrażeń stat.healthmultiplier = Mnożnik Zdrowia stat.speedmultiplier = Mnożnik Prędkości @@ -981,17 +992,46 @@ stat.immunities = Odporności stat.healing = Leczy ability.forcefield = Pole Siłowe +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Pole Naprawy +ability.repairfield.description = Repairs nearby units ability.statusfield = Pole Statusu +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Fabryka Jednostek +ability.unitspawn.description = Constructs units ability.shieldregenfield = Strefa Tarczy Regenerującej +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Pioruny Poruszania +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Łuk Tarczy +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Pole Tłumienia Regeneracji +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Pole Energii -ability.energyfield.sametypehealmultiplier = [lightgray]Ten sam typ leczenia: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Maksymalne cele: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneracja +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Dozwolone jest tylko przeniesienie z rdzenia @@ -1068,6 +1108,7 @@ unit.items = przedmioty unit.thousands = tys. unit.millions = mln. unit.billions = mld. +unit.shots = shots unit.pershot = /strzał category.purpose = Opis category.general = Główne @@ -1077,6 +1118,8 @@ category.items = Przedmioty category.crafting = Przetwórstwo category.function = Funkcja category.optional = Dodatkowe ulepszenia +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Pomiń Animację Wystrzału/Lądowania setting.landscape.name = Zablokuj tryb panoramiczny setting.shadows.name = Cienie @@ -1188,15 +1231,16 @@ keybind.unit_stance_hold_fire.name = Wstrzymaj ogień keybind.unit_stance_pursue_target.name = Goń Cel keybind.unit_stance_patrol.name = Patroluj keybind.unit_stance_ram.name = Taranuj -keybind.unit_command_move = Porusz -keybind.unit_command_repair = Naprawiaj -keybind.unit_command_rebuild = Odbudowywuj -keybind.unit_command_assist = Asystuj -keybind.unit_command_mine = Kop -keybind.unit_command_boost = Przyspieszaj -keybind.unit_command_load_units = Załaduj jednostki -keybind.unit_command_load_blocks = Załaduj Bloki -keybind.unit_command_unload_payload = Rozładuj Ładunek +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Odbuduj Region keybind.schematic_select.name = Wybierz Region keybind.schematic_menu.name = Menu Schematów @@ -1272,7 +1316,10 @@ rules.disableworldprocessors = Wyłącz Procesor Świata rules.schematic = Zezwalaj na schematy rules.wavetimer = Zegar Fal rules.wavesending = Wysyłanie Fal +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Fale +rules.airUseSpawns = Air units use spawn points rules.attack = Tryb Ataku rules.buildai = AI Budowania Baz rules.buildaitier = Poziom Budowania AI @@ -1294,6 +1341,7 @@ rules.unitdamagemultiplier = Mnożnik Obrażeń jednostek rules.unitcrashdamagemultiplier = Obrażenia Zadawane Po Zniszczeniu rules.solarmultiplier = Mnożnik Mocy Paneli Słonecznych rules.unitcapvariable = Rdzenie mają wpływ na limit jednostek +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Podstawowy limit jednostek rules.limitarea = Limit Obszaru Mapy rules.enemycorebuildradius = Zasięg Blokady Budowy Przy Rdzeniu Wroga:[lightgray] (kratki) @@ -1326,6 +1374,8 @@ rules.weather = Pogoda rules.weather.frequency = Częstotliwość: rules.weather.always = Zawsze rules.weather.duration = Czas trwania: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Przedmioty content.liquid.name = Płyny @@ -2277,7 +2327,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Dodaje operacje do buforu rysującego.\nNie wyświetla niczego dopóki [accent]Draw Flush[] nie jest użyte. lst.drawflush = Wyświetla oczekujące operacje z funkcji [accent]Draw[] na wyświetlaczu. lst.printflush = Dodaje oczekujące operacje z funkcji [accent]Print[] do bloku wiadomości. @@ -2300,7 +2350,7 @@ lst.getblock = Uzyskaj dane dla dowolnej lokalizacji. lst.setblock = Ustaw dane dla dowolnej lokalizacji. lst.spawnunit = Odródź jednostkę w lokalizacji. lst.applystatus = Zastosuj lub wyczyść efekty statusu jednostki. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Symuluj falę odradzającą się w dowolnym miejscu.\nNie zwiększy licznika fali. lst.explosion = Stwórz eksplozję w lokalizacji. @@ -2362,6 +2412,7 @@ lenum.shoot = Strzel w określoną pozycje. lenum.shootp = Strzel w jednostkę/budynek z zachowaniem trajektorii. lenum.config = Konfiguracja budynku, np. sortownika. lenum.enabled = Sprawdza czy blok jest włączony. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Kolor iluminatora. laccess.controller = Kontroler jednostki. Jeśli jest kontrolowana przez procesor, zwraca procesor.\nJeśli we formacji, zwraca przywódcę.\nW innym wypadku zwraca samą jednostkę. @@ -2502,7 +2553,7 @@ lenum.payenter = Wejdź/wyląduj na bloku ładunku, na którym znajduje się jed lenum.flag = Numeryczny znacznik jednostki. lenum.mine = Kop na danej pozycji. lenum.build = Buduj strukturę. -lenum.getblock = Pobierz budynek i typ ze współrzędnych.\nJednostka musi być w zasięgu pozycji.\nSolidne niebudynki będą miały typ [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Sprawdź czy jednostka jest w pobliżu pozycji. lenum.boost = Zacznij/zakończ przyspieszać. 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. diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 8dcf3382bb..2aadc7d22f 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -41,16 +41,16 @@ be.ignore = Ignorar be.noupdates = Nenhuma atualização encontrada. be.check = Checar por atualizações -mods.browser = Mod Browser +mods.browser = Navegador de mods mods.browser.selected = Mod selecionado mods.browser.add = Instalar mods.browser.reinstall = Reinstalar -mods.browser.view-releases = View Releases -mods.browser.noreleases = [scarlet]Nenhum lançamento encontrado\n[accent]Não foi possível encontrar nenhum lançamento para este mod. Verifique se o repositório do mod tem algum lançamento publicado. -mods.browser.latest = -mods.browser.releases = Releases +mods.browser.view-releases = Ver versões +mods.browser.noreleases = [scarlet]Nenhuma versão encontrada\n[accent]Não foi possível encontrar nenhuma versão do mod. Veja se o repositório do mod possui alguma versão publicada. +mods.browser.latest = +mods.browser.releases = Versões mods.github.open = Repositório -mods.github.open-release = Release Page +mods.github.open-release = Página da versão mods.browser.sortdate = Ordenar por mais recente mods.browser.sortstars = Ordenar por estrelas @@ -146,9 +146,9 @@ mod.multiplayer.compatible = [gray]Compatível com Multiplayer mod.disable = Desati-\nvar mod.content = Conteúdo: mod.delete.error = Incapaz de deletar o mod. O arquivo talvez esteja em uso. -mod.incompatiblegame = [red]Outdated Game -mod.incompatiblemod = [red]Incompatible -mod.blacklisted = [red]Unsupported +mod.incompatiblegame = [red]Jogo desatualizado +mod.incompatiblemod = [red]Incompatível +mod.blacklisted = [red]Não suportado mod.unmetdependencies = [red]Unmet Dependencies mod.erroredcontent = [scarlet]Erros no conteúdo mod.circulardependencies = [red]Circular Dependencies @@ -190,9 +190,9 @@ unlocked = Novo bloco desbloqueado! available = Nova pesquisa disponível! unlock.incampaign = < Desbloqueie na campanha para mais detalhes > campaign.select = Selecione a campanha inicial -campaign.none = [lightgray]Selecione um planeta para começar.\nEle pode ser alterado a qualquer momento. -campaign.erekir = Conteúdo mais novo e mais polido. Progressão de campanha principalmente linear.\n\nMapas de maior qualidade e experiência geral. -campaign.serpulo = Conteúdo mais antigo; a experiência clássica. Mais aberto.\n\nMapas e mecânicas de campanha potencialmente desbalanceados. Menos polido. +campaign.none = [lightgray]Selecione um planeta para começar nele.\nVocê pode mudar de planeta a qualquer momento. +campaign.erekir = Novo, conteúdo mais polido. Uma progressão mais linear na campanha.\n\nExperiência geral e mapas de maior qualidade. +campaign.serpulo = Conteúdo antigo; a experiência clássica. Mais aberto.\n\nMapas e mecânicas de campanha potencialmente desbalanceados. Menos polido. completed = [accent]Completado techtree = Árvore Tecnológica techtree.select = Seleção de Árvore Tecnológica @@ -383,8 +383,8 @@ pausebuilding = [accent][[{0}][] para parar a construção resumebuilding = [scarlet][[{0}][] para continuar a construção enablebuilding = [scarlet][[{0}][] para habilitar construção showui = Interface escondida.\nPressione [accent][[{0}][] para mostrar a interface. -commandmode.name = [accent]Command Mode -commandmode.nounits = [no units] +commandmode.name = [accent]Modo de comando +commandmode.nounits = [nenhuma unidade] wave = [accent]Horda {0} wave.cap = [accent]Horda {0}/{1} wave.waiting = Proxima horda em {0} @@ -439,6 +439,11 @@ editor.rules = Regras: editor.generation = Geração: editor.objectives = Objetivos: editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Editar em jogo editor.playtest = Jogar Teste editor.publish.workshop = Publicar na oficina @@ -495,6 +500,7 @@ editor.default = [lightgray] details = Detalhes... edit = Editar... variables = Variáveis +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Nome: editor.spawn = Spawnar unidade @@ -584,6 +590,7 @@ filter.clear = Excluir filter.option.ignore = Ignorar filter.scatter = Dispersão filter.terrain = Terreno +filter.logic = Logic filter.option.scale = Escala filter.option.chance = Chance @@ -607,7 +614,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -681,6 +690,7 @@ marker.shape.name = Shape marker.text.name = Texto marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Fundo marker.outline = Contorno @@ -731,7 +741,7 @@ error.any = Erro de rede desconhecido. error.bloom = Falha ao inicializar bloom.\nSeu dispositivo talvez não o suporte. weather.rain.name = Chuva -weather.snow.name = Neve +weather.snowing.name = Neve weather.sandstorm.name = Tempestade de Areia weather.sporestorm.name = Tempestade de Esporos weather.fog.name = Névoa @@ -982,6 +992,7 @@ stat.abilities = Habilidades stat.canboost = Pode impulsionar stat.flying = Voador stat.ammouse = Consumo de Munição +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Multiplicador de Dano stat.healthmultiplier = Multiplicador de Vida stat.speedmultiplier = Multiplicador de Velocidade @@ -992,17 +1003,46 @@ stat.immunities = Imunidades stat.healing = Reparo ability.forcefield = Campo de Força +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Campo de Reparação +ability.repairfield.description = Repairs nearby units ability.statusfield = Campo de Status +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Fábrica +ability.unitspawn.description = Constructs units ability.shieldregenfield = Raio de Regeneração do Escudo +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Raio de Movimento +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Arco do Escudo +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Campo de Energia -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Somente depósito no núcleo permitido bar.drilltierreq = Broca melhor necessária. @@ -1078,6 +1118,7 @@ unit.items = itens unit.thousands = k unit.millions = m unit.billions = b +unit.shots = shots unit.pershot = /disparo category.purpose = Propósito category.general = Geral @@ -1087,6 +1128,8 @@ category.items = Itens category.crafting = Entrada/Saída category.function = Função category.optional = Melhoras opcionais +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Pular animação de lançamento/pouso do Núcleo setting.landscape.name = Travar panorama setting.shadows.name = Sombras @@ -1198,15 +1241,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selecionar região keybind.schematic_menu.name = Menu de Esquemas @@ -1282,7 +1326,10 @@ rules.disableworldprocessors = Desativar processadores mundiais rules.schematic = Permitir Esquemas rules.wavetimer = Tempo de horda rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Hordas +rules.airUseSpawns = Air units use spawn points rules.attack = Modo de ataque rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1304,6 +1351,7 @@ rules.unitdamagemultiplier = Multiplicador de dano de Unidade rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Multiplicador de Energia Solar rules.unitcapvariable = Núcleos contribuem para a capacidade da unidade +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Capacidade base da Unidade rules.limitarea = Limitar área do mapa rules.enemycorebuildradius = Raio de "não-criação" de núcleo inimigo:[lightgray] (blocos) @@ -1336,6 +1384,8 @@ rules.weather = Clima rules.weather.frequency = Frequência: rules.weather.always = Sempre rules.weather.duration = Duração: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Itens content.liquid.name = Líquidos @@ -1851,12 +1901,12 @@ hint.research = Use o botão de \ue875 [accent]Pesquisa[] para pesquisar novas t hint.research.mobile = Use o botão de \ue875 [accent]Pesquisa[] no \ue88c [accent]Menu[] para pesquisar novas tecnologias. hint.unitControl = Segure [accent][[L-ctrl][] e [accent]click[] para controlar suas unidades ou torretas. hint.unitControl.mobile = [accent][[Toque duas vezes][] para controlar suas unidades ou torretas. -hint.unitSelectControl = To control units, enter [accent]command mode[] by holding [accent]L-shift.[]\nWhile in command mode, click and drag to select units. [accent]Right-click[] a location or target to command units there. -hint.unitSelectControl.mobile = To control units, enter [accent]command mode[] by pressing the [accent]command[] button in the bottom left.\nWhile in command mode, long-press and drag to select units. Tap a location or target to command units there. +hint.unitSelectControl = Para controlar unidades, entre no [accent]modo de comando[] segurando [accent]Shift esquerdo.[]\nEnquanto no modo de comando, clique e segure pra selecionar unidades. Clique com o [accent]Botão direito[] em um lugar ou alvo para mandar as unidades para lá. +hint.unitSelectControl.mobile = Para controlar unidades, entre no [accent]modo de comando[] segurando o botão de [accent]comando[] no canto inferior esquerdo.\nEnquanto no modo de comando, segure e arraste pra selecionar unidades. Toque em algum lugar ou alvo para mandar as unidades para lá. hint.launch = Quando recursos suficientes forem coletados, você pode [accent]Lançar[] selecionando setores próximos a partir do \ue827 [accent]Mapa[] no canto inferior direito. hint.launch.mobile = Quando recursos suficientes forem coletados, você pode [accent]Lançar[] selecionando setores próximos a partir do \ue827 [accent]Mapa[] no \ue88c [accent]Menu[]. hint.schematicSelect = Segure [accent][[F][] e arraste para selecionar blocos para copiar e colar.\n\n[accent][[Middle Click][] para copiar um bloco só. -hint.rebuildSelect = Hold [accent][[B][] and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect = Segure [accent][[B][] e arraste para selecionar blocos destruídos.\nIsso irá reconstruí-los automaticamente. hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. hint.conveyorPathfind = Segure [accent][[L-Ctrl][] enquanto arrasta as esteiras para gerar automaticamente um caminho. hint.conveyorPathfind.mobile = Ative o \ue844 [accent]modo diagonal[] e arraste as esteiras para gerar automaticamente um caminho. @@ -1874,53 +1924,53 @@ hint.presetDifficulty = Esse setor tem um [scarlet]alto nível de ameaça inimig hint.coreIncinerate = Depois que o núcleo ter recebido até a capacidade máxima de um item, qualquer item do mesmo tipo que ele receber será [accent]incinerado[]. hint.factoryControl = Para definir a [accent]o local de saída[] de uma fábrica de unidades, clique em uma fábrica enquanto estiver no modo de comando, depois clique com o botão direito em um local.\nAs unidades produzidas por ela se moverão automaticamente para lá. hint.factoryControl.mobile = Para definir a [accent]o local de saída[] de uma fábrica de unidades, toque em uma fábrica enquanto estiver no modo de comando, depois toque em um local.\nAs unidades produzidas por ela se moverão automaticamente para lá. -gz.mine = Move near the \uf8c4 [accent]copper ore[] on the ground and click to begin mining. -gz.mine.mobile = Move near the \uf8c4 [accent]copper ore[] on the ground and tap it to begin mining. -gz.research = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nClick on a copper patch to place it. -gz.research.mobile = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nTap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. -gz.conveyors = Research and place \uf896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. -gz.conveyors.mobile = Research and place \uf896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nHold down your finger for a second and drag to place multiple conveyors. -gz.drills = Expand the mining operation.\nPlace more Mechanical Drills.\nMine 100 copper. -gz.lead = \uf837 [accent]Lead[] is another commonly used resource.\nSet up drills to mine lead. -gz.moveup = \ue804 Move up for further objectives. -gz.turrets = Research and place 2 \uf861 [accent]Duo[] turrets to defend the core.\nDuo turrets require \uf838 [accent]ammo[] from conveyors. -gz.duoammo = Supply the Duo turrets with [accent]copper[], using conveyors. -gz.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace \uf8ae [accent]copper walls[] around the turrets. -gz.defend = Enemy incoming, prepare to defend. -gz.aa = Flying units cannot easily be dispatched with standard turrets.\n\uf860 [accent]Scatter[] turrets provide excellent anti-air, but require \uf837 [accent]lead[] as ammo. -gz.scatterammo = Supply the Scatter turret with [accent]lead[], using conveyors. -gz.supplyturret = [accent]Supply Turret -gz.zone1 = This is the enemy drop zone. -gz.zone2 = Anything built in the radius is destroyed when a wave starts. -gz.zone3 = A wave will begin now.\nGet ready. -gz.finish = Build more turrets, mine more resources,\nand defend against all the waves to [accent]capture the sector[]. -onset.mine = Click to mine \uf748 [accent]beryllium[] from walls.\n\nUse [accent][[WASD] to move. -onset.mine.mobile = Tap to mine \uf748 [accent]beryllium[] from walls. -onset.research = Open the \ue875 tech tree.\nResearch, then place a \uf73e [accent]turbine condenser[] on the vent.\nThis will generate [accent]power[]. -onset.bore = Research and place a \uf741 [accent]plasma bore[].\nThis automatically mines resources from walls. -onset.power = To [accent]power[] the plasma bore, research and place a \uf73d [accent]beam node[].\nConnect the turbine condenser to the plasma bore. -onset.ducts = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\nClick and drag to place multiple ducts.\n[accent]Scroll[] to rotate. -onset.ducts.mobile = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\n\nHold down your finger for a second and drag to place multiple ducts. -onset.moremine = Expand the mining operation.\nPlace more Plasma Bores and use beam nodes and ducts to support them.\nMine 200 beryllium. -onset.graphite = More complex blocks require \uf835 [accent]graphite[].\nSet up plasma bores to mine graphite. -onset.research2 = Begin researching [accent]factories[].\nResearch the \uf74d [accent]cliff crusher[] and \uf779 [accent]silicon arc furnace[]. -onset.arcfurnace = The arc furnace needs \uf834 [accent]sand[] and \uf835 [accent]graphite[] to create \uf82f [accent]silicon[].\n[accent]Power[] is also required. -onset.crusher = Use \uf74d [accent]cliff crushers[] to mine sand. -onset.fabricator = Use [accent]units[] to explore the map, defend buildings, and attack the enemy. Research and place a \uf6a2 [accent]tank fabricator[]. -onset.makeunit = Produce a unit.\nUse the "?" button to see selected factory requirements. -onset.turrets = Units are effective, but [accent]turrets[] provide better defensive capabilities if used effectively.\nPlace a \uf6eb [accent]Breach[] turret.\nTurrets require \uf748 [accent]ammo[]. -onset.turretammo = Supply the turret with [accent]beryllium ammo.[] -onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret. -onset.enemies = Enemy incoming, prepare to defend. -onset.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. +gz.mine = Vá para perto do \uf8c4 [accent]minério de cobre[] no chão e clique para começar a minerar. +gz.mine.mobile = Vá para perto do \uf8c4 [accent]minério de cobre[] no chão e toque nele para começar a minerar. +gz.research = Abra a \ue875 árvore tecnológica.\nPesquise a \uf870 [accent]Broca mecânica[], Depois selecione-a pelo menu no canto inferior direito.\nClique no cobre para coloca-la. +gz.research.mobile = Abra a \ue875 árvore tecnológica.\nPesquise a \uf870 [accent]Broca mecânica[], Depois selecione-a pelo menu no canto inferior direito.\nClique no cobre para colocá-la.\n\nPressione a \ue800 [accent]confirmação[] no canto inferior direito para confirmar. +gz.conveyors = Pesquise e coloque \uf896 [accent]esteiras[] para mover os recursos minerados\ndas brocas para o núcleo.\n\nClique e arraste para pôr multiplas esteiras.\n[accent]Scroll[] para rotacionar. +gz.conveyors.mobile = Pesquise e coloque \uf896 [accent]esteiras[] para mover os recursos minerados\ndas brocas para o núcleo.\n\nSegure por um segundo e arraste para colocar múltiplas esteiras. +gz.drills = Expanda a mineração.\nColoque mais Brocas Mecânicas.\nMinere 100 cobres. +gz.lead = \uf837 [accent]Chumbo[] é outro recurso comumente usado.\nColoque brocas para minerar chumbo. +gz.moveup = \ue804 Vá para cima para outros objetivos. +gz.turrets = Pesquise e coloque 2 torretas \uf861 [accent]Duo[] para defender o núcleo.\ntorretas Duo requerem \uf838 [accent]munição[] de esteiras. +gz.duoammo = Abasteça as torretas Duo com [accent]cobre[], usando esteiras. +gz.walls = [accent]Muros[] podem previnir danos recebidos de atingir as construções.\nColoque \uf8ae [accent]muros de cobre[] em volta das torretas. +gz.defend = Inimigos vindo, prepare-se para defender. +gz.aa = Unidades flutuantes não podem ser destruidas facilmente por torretas comuns.\nTorretas\uf860 [accent]Scatter[] Proveem ótima defesa aérea, mas requerem \uf837 [accent]chumbo[] como munição. +gz.scatterammo = Abasteça a torreta Scatter com [accent]chumbo[], usando esteiras. +gz.supplyturret = [accent]Abasteça a torreta +gz.zone1 = Essa é a zona de spawn inimigo. +gz.zone2 = Qualquer coisa construida nesta área será destruida quando uma horda começar. +gz.zone3 = Uma horda vai começar agora\nSe prepare. +gz.finish = Construa mais torretas, minere mais recursos,\ne se defenda de todas as hordas para [accent]capturar o setor[]. +onset.mine = Clique para minerar \uf748 [accent]berílio[] das paredes.\n\nUse [accent][[WASD] para se mover. +onset.mine.mobile = Toque para minerar \uf748 [accent]berílio[] das paredes. +onset.research = Abra a \ue875 árvore tecnológica.\nPesquise, e então coloque um \uf73e [accent]Condensador de Turbina[] na ventilação.\nIsso vai gerar [accent]energia[]. +onset.bore = Pesquise e coloque uma \uf741 [accent]Mineradora de Plasma[].\nEla minera recursos das paredes automaticamente. +onset.power = Para[accent]alimentar[] a Mineradora de Plasma, pesquise e coloque uma \uf73d [accent]Célula de Feixe[].\nConecte o condensador de turbina ao minerador de plasma. +onset.ducts = Pesquise e coloque \uf799 [accent]dutos[] para mover recursos minerados da mineradora de plasma para o núcleo.\nClique e segure para colocar múltiplos dutos.\n[accent]Scroll[] para rotacionar. +onset.ducts.mobile = Pesquise e coloque \uf799 [accent]dutos[] para mover recursos minerados da mineradora de plasma para o núcleo.\n\nSegure por um segundo e arraste para colocar múltiplos dutos. +onset.moremine = Expanda a mineração.\nColoque mais Mineradoras de Plasma, use as Células de Feixe e dutos para isso.\nMinere 200 berílios. +onset.graphite = Blocos mais complexos requerem \uf835 [accent]grafite[].\nColoque Mineradoras de Plasma para minerar grafite. +onset.research2 = Comece a pesquisar [accent]fábricas[].\nPesquise o \uf74d [accent]Esmagador de Penhasco[] e o \uf779 [accent]silicon arc furnace[]. +onset.arcfurnace = O arc furnace precisa de \uf834 [accent]areia[] e \uf835 [accent]grafite[] para criar \uf82f [accent]silício[].\n[accent]Energia[] também é necessária. +onset.crusher = Use o \uf74d [accent]Esmagador de Areia[] para minerar areia. +onset.fabricator = Use [accent]unidades[] para explorar o mapa, defender construções e atacar o inimigo. Pesquise e coloque um \uf6a2 [accent]Fabricador de Tanques[]. +onset.makeunit = Produza uma unidade.\nUse o botão "?" para ver os requisitos da fábrica selecionada. +onset.turrets = Unidades são efetivas, mas [accent]torretas[] proveem melhores capacidades defensivas se usadas efetivamente.\nColoque uma torreta \uf6eb [accent]Breach[].\nTorretas requerem \uf748 [accent]munição[]. +onset.turretammo = Abasteça a torreta com [accent]munição de berílio.[] +onset.walls = [accent]Muros[] podem previnir danos recebidos de atingir as construções.\nColoque \uf6ee [accent]muros de berílio[] em volta das torretas. -#Don't translate these yet! +onset.enemies = Inimigo vindo, se prepare. +onset.defenses = [accent]Set up defenses:[lightgray] {0} +onset.attack = O inimigo está vulnerável. Contra ataque. +onset.cores = Novos núcleos podem ser colocados em [accent]ladrilhos de núcleo[].\nNovos núcleos funcionam como bases avançadas e compartilham seus recursos com outros núcleos.\nColoque um \uf725 núcleo. +onset.detect = O inimigo poderá te detectar em 2 minutos.\nConstrua defesas, mineração e produção. onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. + split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) split.acquire = You must acquire some tungsten to build units. @@ -2276,7 +2326,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Adicionar uma operação ao buffer de desenho.\nNão exibe nada até [accent]Draw Flush[] ser usado. lst.drawflush = Liberar operações [accent]Draw[] enfileiradas para um display. lst.printflush = Liberar operações [accent]Print[] enfileiradas para um bloco de mensagem. @@ -2299,7 +2349,7 @@ lst.getblock = Obtenha dados de blocos em qualquer local. lst.setblock = Defina os dados do bloco em qualquer local. lst.spawnunit = Gere uma unidade em um local. lst.applystatus = Aplique ou elimine um efeito de status de uma unidade. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Gerar uma onda. lst.explosion = Crie uma explosão em um local. @@ -2361,6 +2411,7 @@ lenum.shoot = Atire em uma posição. lenum.shootp = Atire em uma unidade/edifício com previsão de velocidade. lenum.config = Configuração do edifício, por ex. item classificador. lenum.enabled = Se o bloco está ativado. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Cor do iluminador. laccess.controller = Controlador de unidade. Se controlado pelo processador, retorna o processador.\nCaso contrário, retorna a própria unidade. @@ -2500,7 +2551,7 @@ lenum.payenter = Entre/pouse no bloco de carga em que a unidade está. lenum.flag = Sinalizador de unidade numérica. lenum.mine = Mina em uma posição. lenum.build = Construa uma estrutura. -lenum.getblock = 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.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Verifique se a unidade está perto de uma posição. lenum.boost = Iniciar/parar o reforço. lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index f5eb2863fa..3dbe0a7975 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -435,6 +435,11 @@ editor.rules = Regras: editor.generation = Geração: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Editar em jogo editor.playtest = Playtest editor.publish.workshop = Publicar na oficina @@ -490,6 +495,7 @@ editor.default = [lightgray] details = Detalhes... edit = Editar... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Nome: editor.spawn = Criar unidade @@ -577,6 +583,7 @@ filter.clear = Excluir filter.option.ignore = Ignorar filter.scatter = Dispersão filter.terrain = Terreno +filter.logic = Logic filter.option.scale = Escala filter.option.chance = Chance filter.option.mag = Magnitude @@ -599,7 +606,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -671,6 +680,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -717,7 +727,7 @@ error.any = Erro de rede desconhecido. error.bloom = Falha ao inicializar bloom.\nSeu aparelho talvez não o suporte. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -962,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -972,17 +983,46 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1059,6 +1099,7 @@ unit.items = itens unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Geral @@ -1068,6 +1109,8 @@ category.items = Itens category.crafting = Construindo category.function = Function category.optional = Melhoras opcionais +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.landscape.name = Travar panorama setting.shadows.name = Sombras @@ -1179,15 +1222,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selecionar região keybind.schematic_menu.name = Menu esquemático @@ -1263,7 +1307,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Tempo de horda rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Hordas +rules.airUseSpawns = Air units use spawn points rules.attack = Modo de ataque rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1285,6 +1332,7 @@ rules.unitdamagemultiplier = Multiplicador de dano de Unidade rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Raio de "Não-criação" de core inimigo:[lightgray] (blocos) @@ -1317,6 +1365,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Itens content.liquid.name = Liquidos @@ -2243,7 +2293,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Read a number from a linked memory cell. lst.write = Write a number to a linked memory cell. lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. -lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" +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. @@ -2266,7 +2316,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2326,6 +2376,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2449,7 +2500,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index eb1d0ce995..cae469702e 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -439,6 +439,11 @@ editor.rules = Reguli: editor.generation = Generare: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Editează în Joc editor.playtest = Playtest editor.publish.workshop = Publică pe Workshop @@ -495,6 +500,7 @@ editor.default = [lightgray] details = Detalii... edit = Editează... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Nume: editor.spawn = Adaugă Unitate @@ -583,6 +589,7 @@ filter.clear = Curăță filter.option.ignore = Ignoră filter.scatter = Împrăștie filter.terrain = Teren +filter.logic = Logic filter.option.scale = Scară filter.option.chance = Șansă @@ -606,7 +613,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -678,6 +687,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -725,7 +735,7 @@ error.any = Eroare de rețea necunoscută. error.bloom = Inițializarea strălucirii a eșuat.\nS-ar putea ca dispozitivul tău să nu suporte funcția. weather.rain.name = Ploaie -weather.snow.name = Ninsoare +weather.snowing.name = Ninsoare weather.sandstorm.name = Furtună de nisip weather.sporestorm.name = Furtună de spori weather.fog.name = Ceață @@ -973,6 +983,7 @@ stat.abilities = Abilități stat.canboost = Are Propulsor stat.flying = Zboară stat.ammouse = Consum muniție +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Multiplicator Forță stat.healthmultiplier = Multiplicator Viață stat.speedmultiplier = Multiplicator Viteză @@ -983,17 +994,46 @@ stat.immunities = Immunities stat.healing = Reparare ability.forcefield = Câmp de Forță +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Câmp de Reparare +ability.repairfield.description = Repairs nearby units ability.statusfield = Câmp de Stare +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Fabrică +ability.unitspawn.description = Constructs units ability.shieldregenfield = Câmp Regenerare Scut +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Mișcare Fulger +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Câmp de Energie -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1070,6 +1110,7 @@ unit.items = materiale unit.thousands = mii unit.millions = mil unit.billions = mld +unit.shots = shots unit.pershot = /lovitură category.purpose = Utilizare category.general = General @@ -1079,6 +1120,8 @@ category.items = Materiale category.crafting = Necesită/Produce category.function = Funcționare category.optional = Îmbunătățiri opționale +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Sari peste Animația de Lansare/Aterizare a Nucleului setting.landscape.name = Blochează Mod Peisaj setting.shadows.name = Umbre @@ -1190,15 +1233,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selectează Regiunea keybind.schematic_menu.name = Meniu Scheme @@ -1274,7 +1318,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Se Pot Folosi Scheme rules.wavetimer = Valuri pe Timp rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Valuri +rules.airUseSpawns = Air units use spawn points rules.attack = Modul Atac rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1296,6 +1343,7 @@ rules.unitdamagemultiplier = Multiplicatorul Deteriorării Unităților rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Nucleele Contribuie la Limita Unităților +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Limita de Bază a Unităților rules.limitarea = Limit Map Area rules.enemycorebuildradius = Interzisă Construirea în Jurul Nucleului Inamic:[lightgray] (pătrate) @@ -1328,6 +1376,8 @@ rules.weather = Vreme rules.weather.frequency = Frevență: rules.weather.always = Încontinuu rules.weather.duration = Durată: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Materiale content.liquid.name = Lichide @@ -2260,7 +2310,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Adaugă o operație în bufferul de desenare.\nNu afișează decât când se execută [accent]Draw Flush[]. lst.drawflush = Afișează pe un monitor instrucțiunile [accent]Draw[] aflate în așteptare. lst.printflush = Tipărește într-un bloc Mesaj instrucțiunile [accent]Print[] aflate în așteptare. @@ -2283,7 +2333,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2345,6 +2395,7 @@ lenum.shoot = Lovește către o locație. lenum.shootp = Lovește către o unitate/clădire. Anticipează viteza țintei și a proiectilului. lenum.config = Configurația clădirii, de ex. materialul selectat pt Sortator. lenum.enabled = Specifică dacă clădirea este pornită. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Culoarea iluminatorului. laccess.controller = Controlorul unității. Dacă e controlată de procesor, returnează procesorul.\nDacă e într-o formație, returnează liderul.\nAltfel, returnează unitatea însăși. @@ -2485,7 +2536,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Oferă o etichetă numerică unității. lenum.mine = Minează din această locație. lenum.build = Construiește o structură. -lenum.getblock = Obține clădirea și tipul clădirii aflate la coordonatele specificate.\nUnitatea trebuie să se afle în raza poziției.\nBlocurile solide care nu sunt clădiri vor avea tipul [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Verifică dacă unitatea se află în apropierea poziției. lenum.boost = Pornește/oprește propulsorul. 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. diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 268d96520c..23fd6df9b6 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -439,6 +439,11 @@ editor.rules = Правила: editor.generation = Генерация: editor.objectives = Цели editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Редактировать в игре editor.playtest = Опробовать карту editor.publish.workshop = Опубликовать в Мастерской @@ -495,6 +500,7 @@ editor.default = [lightgray]<По умолчанию> details = Подробности… edit = Редактировать… variables = Переменные +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Название: editor.spawn = Создать боевую единицу @@ -583,6 +589,7 @@ filter.clear = Очистить filter.option.ignore = Игнорировать filter.scatter = Сеятель filter.terrain = Ландшафт +filter.logic = Logic filter.option.scale = Масштаб фильтра filter.option.chance = Шанс @@ -606,7 +613,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -678,6 +687,7 @@ marker.shape.name = Фигура marker.text.name = Текст marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Фон marker.outline = Контур objective.research = [accent]Исследуйте:\n[]{0}[lightgray]{1} @@ -725,7 +735,7 @@ error.any = Неизвестная сетевая ошибка. error.bloom = Не удалось инициализировать свечение (Bloom).\nВозможно, ваше устройство не поддерживает его. weather.rain.name = Дождь -weather.snow.name = Снегопад +weather.snowing.name = Снегопад weather.sandstorm.name = Песчаная буря weather.sporestorm.name = Споровая буря weather.fog.name = Туман @@ -974,6 +984,7 @@ stat.abilities = Способности stat.canboost = Может взлететь stat.flying = Летающий stat.ammouse = Использование боеприпасов +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Множитель урона stat.healthmultiplier = Множитель прочности stat.speedmultiplier = Множитель скорости @@ -984,17 +995,46 @@ stat.immunities = Невосприимчив stat.healing = Ремонт ability.forcefield = Силовое поле +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Ремонтирующее поле +ability.repairfield.description = Repairs nearby units ability.statusfield = Усиливающее поле +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Завод единиц � +ability.unitspawn.description = Constructs units ability.shieldregenfield = Поле восстановления щита +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Молнии при движении +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Дуговой щит +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Поле подавления регенерации +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Энергетическое поле -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Доступен перенос только в ядро bar.drilltierreq = Требуется бур получше @@ -1070,6 +1110,7 @@ unit.items = предметов unit.thousands = к unit.millions = М unit.billions = кM +unit.shots = shots unit.pershot = /выстрел category.purpose = Назначение category.general = Основные @@ -1079,6 +1120,8 @@ category.items = Предметы category.crafting = Ввод/вывод category.function = Действие category.optional = Дополнительные улучшения +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Пропускать анимацию запуска/приземления ядра setting.landscape.name = Только альбомный (горизонтальный) режим setting.shadows.name = Тени @@ -1190,15 +1233,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Перестроить в области keybind.schematic_select.name = Выбрать область keybind.schematic_menu.name = Меню схем @@ -1266,14 +1310,17 @@ rules.invaliddata = Invalid clipboard data. rules.hidebannedblocks = Скрыть запрещенные блоки rules.infiniteresources = Бесконечные ресурсы rules.onlydepositcore = Разрешен перенос только в ядро -rules.derelictrepair = Allow Derelict Block Repair +rules.derelictrepair = Разрешить починку покинутых построек rules.reactorexplosions = Взрывы реакторов rules.coreincinerates = Ядро сжигает избыток ресурсов rules.disableworldprocessors = Отключить мировые процессоры rules.schematic = Разрешить схемы rules.wavetimer = Интервал волн rules.wavesending = Отправка волн +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Волны +rules.airUseSpawns = Air units use spawn points rules.attack = Режим атаки rules.buildai = ИИ строит базы rules.buildaitier = Уровень баз ИИ @@ -1296,6 +1343,7 @@ rules.unitdamagemultiplier = Множитель урона боев. ед. rules.unitcrashdamagemultiplier = Множитель урона от падения боев. ед. rules.solarmultiplier = Множитель солнечной энергии rules.unitcapvariable = Ядра увеличивают лимит единиц +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Начальный лимит единиц rules.limitarea = Ограничить область карты rules.enemycorebuildradius = Радиус защиты враж. ядер:[lightgray] (блок.) @@ -1328,6 +1376,8 @@ rules.weather = Погода rules.weather.frequency = Периодичность: rules.weather.always = Всегда rules.weather.duration = Длительность: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Предметы content.liquid.name = Жидкости @@ -2262,7 +2312,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Добавляет операцию в буфер отрисовки. Ничего не отображает, пока не будет вызван [accent]Draw Flush[]. lst.drawflush = Сбрасывает буфер [accent]Draw[] операций на дисплей. lst.printflush = Сбрасывает буфер [accent]Print[] операций в блок-сообщение. @@ -2285,7 +2335,7 @@ lst.getblock = Получает данные о плитке в любом ме lst.setblock = Устанавливает плитку в любом месте. lst.spawnunit = Создает боевую единицу на локации. lst.applystatus = Применяет или снимает эффект статуса с боевой единицы. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Имитация волны, создаваемой в произвольном месте.\nСчетчик волн не увеличивается. lst.explosion = Создает взрыв на локации. @@ -2347,6 +2397,7 @@ lenum.shoot = Стрельба в определённую позицию. lenum.shootp = Стрельба в единицу/постройку с расчётом скорости. lenum.config = Конфигурация постройки, например, предмет сортировки. lenum.enabled = Включён ли блок. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Цвет осветителя. laccess.controller = Командующий единицей. Если единица управляется процессором, возвращает процессор. Если в строю, возвращает командующего.\nВ противном случае возвращает саму единицу. @@ -2487,7 +2538,7 @@ lenum.payenter = Войти/приземлиться на грузовой бл lenum.flag = Числовой флаг единицы. lenum.mine = Копание в заданной позиции. lenum.build = Строительство блоков. -lenum.getblock = Распознавание блока и его типа на координатах.\nЕдиница должна находиться в пределах досягаемости.\nТвёрдые не-постройки будут иметь тип [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Проверка на нахождение единицы рядом с позицией. lenum.boost = Включение/выключение полёта. 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. diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 588f323ef7..6e6cf07481 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -439,6 +439,11 @@ editor.rules = Pravila: editor.generation = Generisanje: editor.objectives = Zadaci editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Izmeni "U Igri" editor.playtest = Testiranje editor.publish.workshop = Objavi u Radionicu @@ -495,6 +500,7 @@ editor.default = [lightgray] details = Detalji... edit = Izmeni... variables = Varijabla +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Ime: editor.spawn = Prizovi Jedinicu @@ -583,6 +589,7 @@ filter.clear = Očisti filter.option.ignore = Ignoriši filter.scatter = Razbaci filter.terrain = Teren +filter.logic = Logic filter.option.scale = Razmera filter.option.chance = Šansa @@ -606,7 +613,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -678,6 +687,7 @@ marker.shape.name = Oblik marker.text.name = Tekst marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Pozadina marker.outline = Outline objective.research = [accent]Izuči:\n[]{0}[lightgray]{1} @@ -726,7 +736,7 @@ error.any = Nepoznata greška u mreži. error.bloom = Failed to initialize bloom.\nYour device may not support it. weather.rain.name = Kiša -weather.snow.name = Sneg +weather.snowing.name = Sneg weather.sandstorm.name = Peščana Oluja weather.sporestorm.name = Sporna Oluja weather.fog.name = Magla @@ -975,6 +985,7 @@ stat.abilities = Spospbnosti stat.canboost = Može lebdeti stat.flying = Leteća jedinica stat.ammouse = Upotreba municije +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Umnožavač štete stat.healthmultiplier = Umnožavač izdržljivosti stat.speedmultiplier = Umnožavač brzine @@ -985,17 +996,46 @@ stat.immunities = Imuniteti stat.healing = Popravlja ability.forcefield = Polje Sile +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Polje Popravke +ability.repairfield.description = Repairs nearby units ability.statusfield = Statusno Polje +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Fabrika +ability.unitspawn.description = Constructs units ability.shieldregenfield = Brzina Obnove Štita +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Munje Pri Kretanju +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Elektrolučni Štit +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Polje Prigušivanja Popravki +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energetsko Polje -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Dozvoljeno Dostavljanje Samo Unutar Jezgra @@ -1072,6 +1112,7 @@ unit.items = materijali unit.thousands = hiljade unit.millions = milioni unit.billions = milijarde +unit.shots = shots unit.pershot = /pucnju category.purpose = Namena category.general = Opšte @@ -1081,6 +1122,8 @@ category.items = Resursi category.crafting = Ulaz/izlaz category.function = Funkcija category.optional = Dotatna Poboljšanja +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Preskoči animacije sletanja i poletanja Jezgra. setting.landscape.name = Zaključaj Orijentaciju setting.shadows.name = Senke @@ -1192,15 +1235,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Ponovo Sagradi Region keybind.schematic_select.name = Izaberi Region keybind.schematic_menu.name = Menu Šema @@ -1276,7 +1320,10 @@ rules.disableworldprocessors = Onesposobi Svetovne Procesore rules.schematic = Šeme Su Dozvoljene rules.wavetimer = Talasna Štoperica rules.wavesending = Slanje Talasa +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Talasi +rules.airUseSpawns = Air units use spawn points rules.attack = Mod Napada rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1298,6 +1345,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Jezgara Povećavaju Maksimalni Broj Jedinica +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Maksimalni Broj Jedinica (ne računajući jezgra) rules.limitarea = Ograniči Prostor Mape rules.enemycorebuildradius = Radius Neprijateljskog jezgra bez gradnje:[lightgray] (polja) @@ -1330,6 +1378,8 @@ rules.weather = Vreme rules.weather.frequency = Učestalost: rules.weather.always = Stalno rules.weather.duration = Dužina: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Materijali content.liquid.name = Tečnosti @@ -2263,7 +2313,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.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. @@ -2286,7 +2336,7 @@ lst.getblock = Get tile data at any location. lst.setblock = Set tile data at any location. lst.spawnunit = Prizovi jedinicu na mestu. lst.applystatus = Dodaj ili ukloni statusni efekat na jedinicu/e. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Izazovi eksploziju na mestu. @@ -2348,6 +2398,7 @@ lenum.shoot = Ispaljuj na mestu. lenum.shootp = Shoot at a unit/building with velocity prediction. lenum.config = Konfiguracija građevine, npr. sortirani materijal. lenum.enabled = Da li je ova građevina osposobljena. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Boja iluminatora. laccess.controller = Upravljač jedinice. Ako upravljano putem procesora, šalji "processor".\nAko je upravljano u formaciji, šalji "lider".U ostalim slučajevima, šalji jedinicu za sebe. @@ -2488,7 +2539,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index d20f0fd841..a9cb83d9fb 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -435,6 +435,11 @@ editor.rules = Regler: editor.generation = Generering: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -490,6 +495,7 @@ editor.default = [lightgray] details = Details... edit = Redigera... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Namn: editor.spawn = Spawn Unit @@ -577,6 +583,7 @@ filter.clear = Rensa filter.option.ignore = Ignorera filter.scatter = Sprid filter.terrain = Terräng +filter.logic = Logic filter.option.scale = Skala filter.option.chance = Chans filter.option.mag = Magnitud @@ -599,7 +606,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -671,6 +680,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -717,7 +727,7 @@ error.any = Okänt nätverksfel. error.bloom = Failed to initialize bloom.\nYour device may not support it. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -962,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -972,17 +983,46 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1059,6 +1099,7 @@ unit.items = föremål unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = Allmänt @@ -1068,6 +1109,8 @@ category.items = Föremål category.crafting = Inmatning/Utmatning category.function = Function category.optional = Optional Enhancements +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.landscape.name = Lock Landscape setting.shadows.name = Skuggor @@ -1179,15 +1222,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1263,7 +1307,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Vågtimer rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Vågor +rules.airUseSpawns = Air units use spawn points rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1285,6 +1332,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) @@ -1317,6 +1365,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Föremål content.liquid.name = Vätskor @@ -2243,7 +2293,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Read a number from a linked memory cell. lst.write = Write a number to a linked memory cell. lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. -lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" +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. @@ -2266,7 +2316,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2326,6 +2376,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2449,7 +2500,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 56c4c85f16..1fe1ed195a 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -439,6 +439,11 @@ editor.rules = กฎ editor.generation = เจนเนอเรชั่น editor.objectives = เป้าหมาย editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = แก้ไขในเกม editor.playtest = เล่นทดสอบ editor.publish.workshop = เผยแพร่บนเวิร์กช็อป @@ -495,6 +500,7 @@ editor.default = [lightgray]<ค่าเริ่มต้น> details = รายละเอียด... edit = แก้ไข... variables = ตัวแปร +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = ชื่อ: editor.spawn = สร้างยูนิต @@ -583,6 +589,7 @@ filter.clear = เคลียร์ filter.option.ignore = เพิกเฉย filter.scatter = กระจาย filter.terrain = พื้นผิว +filter.logic = Logic filter.option.scale = มาตราส่วน filter.option.chance = โอกาส @@ -606,7 +613,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -678,6 +687,7 @@ marker.shape.name = รูปทรง marker.text.name = ข้อความ marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = พื้นหลัง marker.outline = โครงร่าง objective.research = [accent]วิจัย:\n[]{0}[lightgray]{1} @@ -725,7 +735,7 @@ error.any = ข้อผิดพลาด: เครือข่ายที่ error.bloom = ไม่สามารถเริ่มต้นบลูมได้\nอุปกรณ์ของคุณอาจไม่รองรับ weather.rain.name = ฝน -weather.snow.name = หิมะ +weather.snowing.name = หิมะ weather.sandstorm.name = พายุทราย weather.sporestorm.name = พายุสปอร์ weather.fog.name = หมอก @@ -975,6 +985,7 @@ stat.abilities = ทักษะ stat.canboost = บูสต์ได้ stat.flying = บินได้ stat.ammouse = การใช้กระสุน +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = พหุคูณดาเมจ stat.healthmultiplier = พหุคูณพลังชีวิต stat.speedmultiplier = พหุคูณความเร็ว @@ -985,17 +996,46 @@ stat.immunities = ต่อต้านสถานะ stat.healing = การรักษา ability.forcefield = โล่พลังงาน +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = สนามซ่อมแซม +ability.repairfield.description = Repairs nearby units ability.statusfield = สนามเอฟเฟกต์ +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = โรงงานผลิต +ability.unitspawn.description = Constructs units ability.shieldregenfield = สนามรักษาโล่ +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = ปล่อยสายฟ้าเมื่อเคลื่อนที่ +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = โล่พลังงานโค้ง +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = สนามระงับการฟื้นฟู +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = สนามพลังงาน -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = ขนย้ายทรัพยากรลงแกนกลางได้เท่านั้น bar.drilltierreq = ต้องมีเครื่องขุดที่ดีกว่านี้ @@ -1071,6 +1111,7 @@ unit.items = ไอเท็ม unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /การยิง category.purpose = วัตถุประสงค์ category.general = ทั่วไป @@ -1080,6 +1121,8 @@ category.items = ไอเท็ม category.crafting = การผลิต category.function = ฟังค์ชั่น category.optional = ทางเลือกการเพิ่มประสิทธิภาพ +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = ข้ามแอนิเมชั่นการบิน/ลงจอดของแกนกลาง setting.landscape.name = ล็อกภูมิทัศน์แนวนอน setting.shadows.name = เงา @@ -1191,15 +1234,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = เลือกพื้นที่สร้างใหม่ keybind.schematic_select.name = เลือกพื้นที่ keybind.schematic_menu.name = เมนูแผนผัง @@ -1275,7 +1319,10 @@ rules.disableworldprocessors = ปิดการทำงานของตั rules.schematic = อนุญาตให้ใช้แผนผัง rules.wavetimer = นับถอยหลังการปล่อยคลื่น rules.wavesending = กดเพื่อปล่อยคลื่น +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = คลื่น +rules.airUseSpawns = Air units use spawn points rules.attack = โหมดการโจมตี rules.buildai = AI สร้างฐานทัพ rules.buildaitier = ระดับการสร้างของ AI @@ -1297,6 +1344,7 @@ rules.unitdamagemultiplier = พหุคูณพลังโจมตีขอ rules.unitcrashdamagemultiplier = พหูคูณดาเมจการตกของยานยูนิต rules.solarmultiplier = พหูคุณพลังงานแสงอาทิตย์ rules.unitcapvariable = เพิ่มจำนวนยูนิตสูงสุดต่อแกนกลาง +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = ขีดกำจัดยูนิตสูงสุดพื้นฐาน rules.limitarea = จำกัดพื้นที่แมพ rules.enemycorebuildradius = รัศมีห้ามสร้างบริเวณแกนกลางของศัตรู:[lightgray] (ช่อง) @@ -1329,6 +1377,8 @@ rules.weather = สภาพอากาศ rules.weather.frequency = ความถี่: rules.weather.always = ตลอด rules.weather.duration = ระยะเวลา: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = ไอเท็ม content.liquid.name = ของเหลว @@ -2280,7 +2330,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = เพิ่มรูปไปยังคิวการวาด\nภาพจะยังไม่แสดงจนกว่าจะใช้คำสั่ง [accent]Draw Flush[] lst.drawflush = ปล่อยคิว [accent]Draw[] ไปยังหน้าจอลอจิกที่เชื่อมต่อไว้ lst.printflush = ปล่อยคิว [accent]Print[] ไปยังตัวเก็บข้อความที่เชื่อมต่อไว้ @@ -2303,7 +2353,7 @@ lst.getblock = รับข้อมูลของช่องที่ตำ lst.setblock = ปรับแต่งข้อมูลของช่องที่ตำแหน่งใดๆ lst.spawnunit = เสกยูนิตมาที่ตำแหน่งที่กำหนดไว้ lst.applystatus = ใส่หรือล้างเอฟเฟกต์สถานะจากยูนิต -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = จำลองคลื่นที่ตำแหน่งใดๆ lst.explosion = เสกระเบิดที่ตำแหน่ง @@ -2365,6 +2415,7 @@ lenum.shoot = ยิงไปที่ตำแหน่งเป้าหมา lenum.shootp = ยิงเป้าหมายโดยมีการคำนวณการยิง lenum.config = การกำหนดค่าของสิ่งก่อสร้าง เช่น ไอเท็มของเครื่องคัดแยก lenum.enabled = ว่าบล็อกเปิดใช้งาน/ทำงานอยู่หรือเปล่า +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = สีของตัวเปล่งแสง laccess.controller = ผู้ควบคุมยูนิต ถ้าผู้ควบคุมคือตัวประมวลผล จะส่งกลับค่า processor\nนอกนั้น จะส่งกลับค่าตัวยูนิตเอง @@ -2506,7 +2557,7 @@ lenum.payenter = เข้าไป/ลงจอดบนบล็อกบร lenum.flag = ปักธงยูนิตเป็นหมายเลข lenum.mine = ขุดที่ตำแหน่งเป้าหมาย lenum.build = สร้างสิ่งก่อสร้าง -lenum.getblock = ดึงข้อมูลสิ่งก่อสร้างและประเภทของสิ่งก่อสร้างที่ตำแหน่งเป้าหมาย\nยูนิตต้องอยู่ในระยะของตำแหน่ง\nบล็อกตันที่ไม่ใช่สิ่งก่อสร้างจะมีชนิดเป็น [accent]@solid[] +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = ตรวจสอบว่ายูนิตนั้นอยู่ในระยะหรือไม่ lenum.boost = เริ่ม/หยุดการบูสต์ 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. diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 36106ee582..e625322820 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -435,6 +435,11 @@ editor.rules = Rules: editor.generation = Generation: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = Edit In-Game editor.playtest = Playtest editor.publish.workshop = Publish On Workshop @@ -490,6 +495,7 @@ editor.default = [lightgray] details = Details... edit = Edit... variables = Vars +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = isim: editor.spawn = Spawn Unit @@ -577,6 +583,7 @@ filter.clear = Clear filter.option.ignore = Ignore filter.scatter = Scatter filter.terrain = Terrain +filter.logic = Logic filter.option.scale = Scale filter.option.chance = Chance filter.option.mag = Magnitude @@ -599,7 +606,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -671,6 +680,7 @@ marker.shape.name = Shape marker.text.name = Text marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = Background marker.outline = Outline objective.research = [accent]Research:\n[]{0}[lightgray]{1} @@ -717,7 +727,7 @@ error.any = Unkown network error. error.bloom = Failed to initialize bloom.\nYour device may not support it. weather.rain.name = Rain -weather.snow.name = Snow +weather.snowing.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm weather.fog.name = Fog @@ -962,6 +972,7 @@ stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying stat.ammouse = Ammo Use +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Damage Multiplier stat.healthmultiplier = Health Multiplier stat.speedmultiplier = Speed Multiplier @@ -972,17 +983,46 @@ stat.immunities = Immunities stat.healing = Healing ability.forcefield = Force Field +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = Repair Field +ability.repairfield.description = Repairs nearby units ability.statusfield = Status Field +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = Factory +ability.unitspawn.description = Constructs units ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = Movement Lightning +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = Only Core Depositing Allowed @@ -1059,6 +1099,7 @@ unit.items = esya unit.thousands = k unit.millions = mil unit.billions = b +unit.shots = shots unit.pershot = /shot category.purpose = Purpose category.general = General @@ -1068,6 +1109,8 @@ category.items = esyalar category.crafting = uretim category.function = Function category.optional = Optional Enhancements +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.landscape.name = Lock Landscape setting.shadows.name = Shadows @@ -1179,15 +1222,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu @@ -1263,7 +1307,10 @@ rules.disableworldprocessors = Disable World Processors rules.schematic = Schematics Allowed rules.wavetimer = Wave Timer rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Waves +rules.airUseSpawns = Air units use spawn points rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1285,6 +1332,7 @@ rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Base Unit Cap rules.limitarea = Limit Map Area rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) @@ -1317,6 +1365,8 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Esyalar content.liquid.name = Sivilar @@ -2243,7 +2293,7 @@ unit.emanate.description = Builds structures to defend the Acropolis core. Repai lst.read = Read a number from a linked memory cell. lst.write = Write a number to a linked memory cell. lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. -lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" +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. @@ -2266,7 +2316,7 @@ 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.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter. lst.explosion = Create an explosion at a location. @@ -2326,6 +2376,7 @@ 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.currentammotype = Current ammo item/liquid of a turret. 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. @@ -2449,7 +2500,7 @@ lenum.payenter = Enter/land on the payload block the unit is on. lenum.flag = Numeric unit flag. lenum.mine = Mine at a position. lenum.build = Build a structure. -lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Check if unit is near a position. lenum.boost = Start/stop boosting. 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. diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 9eca8e0bea..db687017f7 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -2,16 +2,16 @@ credits.text = [royal]Anuken[] tarafından yapıldı - [sky]anukendev@gmail.com[ credits = Jenerik contributors = Çevirmenler ve Katkıda Bulunanlar discord = Mindustry'nin Discord sunucusuna Katıl! -link.discord.description = Resmi Mindustry Discord sunucusu +link.discord.description = Resmî Mindustry Discord sunucusu link.reddit.description = Mindustry subreddit'i link.github.description = Oyun Kaynak Kodu link.changelog.description = Güncelleme değişikliklerinin listesi link.dev-builds.description = Dengesiz Oyun Sürümleri -link.trello.description = Planlanan özellikler için resmi Trello Sayfası +link.trello.description = Planlanan özellikler için resmî Trello Sayfası link.itch.io.description = itch.io sayfası link.google-play.description = Google Play mağaza sayfası link.f-droid.description = F-Droid kataloğu -link.wiki.description = Resmi Mindustry wikisi +link.wiki.description = Resmî Mindustry wikisi link.suggestions.description = Yeni özellikler öner link.bug.description = Hata mı buldun? Hemen şikayet et! linkopen = Bu Server sana bir link gönderdi. Açmak istediğine emin misin?\n\n[sky]{0} @@ -33,7 +33,7 @@ load.content = İçerik load.system = Sistem load.mod = Modlar load.scripts = Betikler - +#the_pawsy tamam be, update atıyom... -RT be.update = Yeni bir erken erişim sürümü var: be.update.confirm = İndirip yeniden başlatılsın mı? be.updating = Yeni sürüm yükleniyor... @@ -57,7 +57,7 @@ mods.browser.sortstars = Yıldıza göre Sırala schematic = Şema schematic.add = Şemayı Kaydet... schematics = Şemalar -schematic.search = Search schematics... +schematic.search = Şema Arat... schematic.replace = Aynı isimde bir şema zaten var. Üzerine yazılsın mı? schematic.exists = Aynı isimde bir şema zaten var. schematic.import = Şemayı İçeri Aktar @@ -70,7 +70,7 @@ schematic.shareworkshop = Atölyede paylaş schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Şemayı döndür schematic.saved = Şema Kaydedildi. schematic.delete.confirm = Bu şema tamamen silinecek. -schematic.edit = Edit Schematic +schematic.edit = Şemayı Düzenle schematic.info = {0}x{1}, {2} blok schematic.disabled = [scarlet]Şema devre dışı bırakıldı[]\nBu şemayı [accent]bu haritada[] veya [accent]server'da kullanma iznin yok. schematic.tags = Etiketler: @@ -79,7 +79,7 @@ schematic.addtag = Etiket Ekle schematic.texttag = Yazı Etiketi schematic.icontag = İkon Etiketi schematic.renametag = Etiketi Yeniden Adlandır -schematic.tagged = {0} tagged +schematic.tagged = {0} etiketli schematic.tagdelconfirm = Bu Etiketi Silmek istediğine emin misin? schematic.tagexists = Böyle bir Etiket zaten var. @@ -112,7 +112,7 @@ none.inmap = [lightgray] minimap = Harita position = Konum close = Kapat -website = Web sitesi +website = Websitesi quit = Çık save.quit = Kaydet & Çık maps = Haritalar @@ -151,10 +151,10 @@ mod.incompatiblemod = [red]Sürüm Uyuşmazlığı mod.blacklisted = [red]Desteklenmeyen Sürüm mod.unmetdependencies = [red]Uyuşmayan Modlar. mod.erroredcontent = [scarlet]İçerik hatası. -mod.circulardependencies = [red]Circular Dependencies -mod.incompletedependencies = [red]Incomplete Dependencies +mod.circulardependencies = [red]Döngüsel Bağımlılıklar +mod.incompletedependencies = [red]Eksik Bağımlılıklar mod.requiresversion.details = [accent]{0}[] oyun sürümü gerekiyor.\nSürümün eski. Bu mod, çalışmak için oyunun daha yeni bir sürümünü gerektiriyor (büyük ihtimal alpha/beta). -mod.outdatedv7.details = Bu mod, oyunun en son sürümüyle uyumsuz. Modun yapmıcısının [accent]mod.json[] dosyasına, [accent]minGameVersion: 136[] eklemesi gerekiyor. +mod.outdatedv7.details = Bu mod, oyunun en son sürümüyle uyumsuz. Modun yapmıcısının [accent]mod.json[] dosyasına, [accent]minGameVersion: 146[] eklemesi gerekiyor. mod.blacklisted.details = Bu mod, oyunun bu sürümüyle hata verdiğinden veya başka sorunlar ötürü kara listeye alınmıştır. [#ff]KULLANMAYINIZ! mod.missingdependencies.details = Bu Mod, şu ek modları gerektiriyor: {0} mod.erroredcontent.details = Bu mod yüklenirken hata veriyor, yapımcıdan hataları düzeltmesini isteyin. @@ -172,7 +172,7 @@ mod.import.file = Dosya İçeri Aktar mod.import.github = GitHub Modu İçeri Aktar mod.jarwarn = [scarlet]Java modları doğası gereği güvenli değildir.[]\nBu modu güvenilir bir kaynaktan içeri aktardığına emin ol! mod.item.remove = Bu eşya[accent] '{0}'[] modunun bir parçası. Kaldırmak için modu silebilirsiniz. -mod.remove.confirm = Bu mod silinecek. +mod.remove.confirm = Bu mod silinecek mod.author = [lightgray]Yayıncı:[] {0} mod.missing = Bu kayıt yakın zamanda güncellediğiniz ya da artık yüklü olmayan modlar içermekte. Kayıt bozulmaları yaşanabilir. Kaydı yüklemek istediğinizden emin misiniz?\n[lightgray]Modlar:\n{0} mod.preview.missing = Bu modu atölyede yayınlamadan önce bir resim önizlemesi eklemelisiniz.\nMod dosyasına [accent]preview.png[] adlı bir resim yerleştirin ve tekrar deneyin. @@ -190,9 +190,9 @@ unlocked = Yeni içerik açıldı! available = Yeni Araştırma Mümkün! unlock.incampaign = < Detaylar için Mücadelede Araştır > campaign.select = Başlangıç Mücadelesi Seç -campaign.none = [lightgray]Başlamak için bir gezegen seç.\nBu herhangi bir zamanda değiştirlebilir. -campaign.erekir = Daha yeni ve cilalanmış içerikler. Genellikle stabil ilerleme.\n\nDaha kaliteli haritalar ve deneyim. -campaign.serpulo = Eski içerik; klasik deneyim. Daha serbest.\n\nDaha dengesiz harita ve deneyim. Cilayı unutmuşlar. +campaign.none = [lightgray]Başlamak için bir gezegen seç.\nBu seçim herhangi bir zamanda değiştirlebilir. +campaign.erekir = Daha yeni ve cilalanmış içerikler. Genellikle kararlı ilerleme.\n\nDaha kaliteli haritalar ve deneyim (herhalde). +campaign.serpulo = Eski içerik; klasik deneyim. Daha serbest.\n\nDaha dengesiz harita ve deneyim. Cilayı unutmuşlar işte... completed = [accent]Tamamlandı techtree = Teknoloji Ağacı techtree.select = Teknoloji Ağacı Seç @@ -222,7 +222,7 @@ server.kicked.recentKick = Yakın bir zamanda bir sunucudan atıldın.\nBağlanm server.kicked.nameInUse = Sunucuda zaten o isimde biri var. server.kicked.nameEmpty = Seçtiğin isim geçersiz. server.kicked.idInUse = Zaten bu sunucudasın! İki hesapla bir sunucuya bağlanamazsın. -server.kicked.customClient = Bu sunucu özel sürümleri kabul etmiyor. Resmi bir sürüm indir. +server.kicked.customClient = Bu sunucu özel sürümleri kabul etmiyor. Resmî bir sürüm indir. server.kicked.gameover = Oyun bitti! server.kicked.serverRestarting = Sunucu yeniden başlatılıyor... server.versions = Kullandığın Sürüm:[accent] {0}[]\nSunucunun Sürümü:[accent] {1}[] @@ -303,11 +303,11 @@ server.invalidport = Geçersiz port sayısı! server.error = [crimson]Sunucu kurulamadı: [accent]{0} save.new = Yeni kayıt save.overwrite = Bu kaydın üstüne yazmak istediğine\nemin misin? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = Mücadeleden tek bir kayıt yüklenemez. overwrite = Üstüne yaz save.none = Kayıt bulunamadı! savefail = Oyun kaydedilemedi! -save.delete.confirm = Bu kaydı silmek istediğine emin misin? +save.delete.confirm = Bu kaydı silmek istediğine gerçekten emin misin? save.delete = Sil save.export = Kaydı Dışa Aktar save.import.invalid = [accent]Bu kayıt geçersiz! @@ -341,14 +341,14 @@ open = Aç customize = Kuralları Özelleştir cancel = İptal command = Komuta Modu -command.queue = [lightgray][Queuing] +command.queue = [lightgray][Sıralanıyor] command.mine = Kaz command.repair = Tamir Et command.rebuild = Yeniden İnşaa Et command.assist = Oyuncuya Yardım Et command.move = Hareket Et -command.boost = Boost -command.enterPayload = Enter Payload Block +command.boost = Gazla +command.enterPayload = Kargo Bloğu Seç command.loadUnits = Birim Yükle command.loadBlocks = Blok Yükle command.unloadPayload = Birim Bırak @@ -384,17 +384,17 @@ 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]Komuta Modu -commandmode.nounits = [no units] +commandmode.nounits = [birim yok] wave = [accent]Dalga {0} wave.cap = [accent]Dalga {0}/{1} wave.waiting = [lightgray]{0} saniye içinde dalga başlayacak wave.waveInProgress = [lightgray]Dalga gerçekleşiyor waiting = [lightgray]Bekleniliyor... waiting.players = Oyuncular bekleniliyor... -wave.enemies = [lightgray]{0} Tane Düşman Kaldı +wave.enemies = [lightgray]{0} tane Düşman Kaldı wave.enemycores = [accent]{0}[lightgray] Düşman Merkezler wave.enemycore = [accent]{0}[lightgray] Düşman Merkez -wave.enemy = [lightgray]{0} Tane Düşman Kaldı +wave.enemy = [lightgray]{0} tane Düşman Kaldı wave.guardianwarn = [accent]{0}[] dalga sonra gardiyan yaklaşıyor. wave.guardianwarn.one = [accent]{0}[] dalga sonra gardiyan yaklaşıyor. loadimage = Resim Aç @@ -438,7 +438,12 @@ editor.waves = Dalgalar: editor.rules = Kurallar: editor.generation = Oluşum: editor.objectives = Görevler: -editor.locales = Locale Bundles +editor.locales = Yerel Paketler +editor.worldprocessors = Evrensel İşlemciler +editor.worldprocessors.editname = İsmi Değiştir +editor.worldprocessors.none = [lightgray]Evrensel İşlemci bulunamadı!\nEditörden bu muazzam bloğu ekle veya şu düğmeye bas: \ue813 Ekle +editor.worldprocessors.nospace = Evrensel İşlemci koycak yer yok!\nCidden tüm mapi binalarla mı doldurdun? Oyunun kasmıyor mu? İşsiz misin? Harbi NPC... +editor.worldprocessors.delete.confirm = Bu Evrensel İşlemciyi silmek istediğine emin misin?\n\nEğer etrafında duvar varsa doğal bir duvarla yer değiştiricek. editor.ingame = Oyun içinde düzenle editor.playtest = Test Et editor.publish.workshop = Atölyede Yayınla @@ -470,7 +475,7 @@ waves.max = maks birim waves.guardian = Gardiyan waves.preview = Önizleme waves.edit = Düzenle... -waves.random = Random +waves.random = Rastgele waves.copy = Panodan kopyala waves.load = Panodan yükle waves.invalid = Panoda geçersiz dalga sayısı var. @@ -481,8 +486,8 @@ waves.sort.reverse = Ters Sırala waves.sort.begin = Başla waves.sort.health = Can waves.sort.type = Tür -waves.search = Search waves... -waves.filter = Unit Filter +waves.search = Dalga ara... +waves.filter = Birim Filtresi waves.units.hide = Hepsini Gizle waves.units.show = Hepsini Göster @@ -495,7 +500,8 @@ editor.default = [lightgray] details = Detaylar... edit = Düzenle... variables = Değişkenler -logic.globals = Built-in Variables +logic.clear.confirm = Bu işlemcideki tüm kodu silmek istediğine emin misin? +logic.globals = Yerleşik Değişkenler editor.name = İsim: editor.spawn = Birim Oluştur editor.removeunit = Birim Kaldır @@ -507,7 +513,7 @@ editor.errorlegacy = Bu harita çok eski ve artık desteklenmeyen bir legacy har editor.errornot = Bu bir harita dosyası değil. editor.errorheader = Bu harita dosyası geçerli değil ya da bozuk. editor.errorname = Haritanın ismi yok!?! Bir kayıt dosyası mı yüklemeye çalışıyorsunuz? -editor.errorlocales = Error reading invalid locale bundles. +editor.errorlocales = Yerel Paketleri okurkan hata oluştu. editor.update = Güncelle editor.randomize = Rastgele Yap editor.moveup = Yukarı Kaydır @@ -519,7 +525,7 @@ editor.sectorgenerate = Sektör Oluştur editor.resize = Yeniden Boyutlandır editor.loadmap = Harita Yükle editor.savemap = Haritayı Kaydet -editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? +editor.savechanges = [scarlet]Kaydedilmemiş değişiklerin var!\n\n[]Onları kaydetsen mi acaba? editor.saved = Kaydedildi! editor.save.noname = Haritanın bir ismi yok! 'Harita bilgileri' menüsünden bir isim seç. editor.save.overwrite = Haritan bir yerleşik haritayla örtüşüyor! 'Harita bilgileri' menüsünden farklı bir isim seç. @@ -558,14 +564,14 @@ toolmode.eraseores = Maden Sil toolmode.eraseores.description = Sadece madenleri siler.. toolmode.fillteams = Takımları Doldur toolmode.fillteams.description = Bloklar yerine takımları doldurur. -toolmode.fillerase = Fill Erase -toolmode.fillerase.description = Erase blocks of the same type. +toolmode.fillerase = Doldurarak Sil +toolmode.fillerase.description = Anyı tip blokları sil. toolmode.drawteams = Takım Çiz toolmode.drawteams.description = Bloklar yerine takımları çizer.. toolmode.underliquid = Sıvı Altı toolmode.underliquid.description = Sıvıların altına zemin koyma. -filters.empty = [lightgray]Hiç filtre yok! Aşağıdaki düğmelerle bir adet ekleyin. +filters.empty = [lightgray]Hiç filtre yok! Aşağıdaki düğmelerle bir adet ekle. filter.distort = Çarpıt filter.noise = Gürültü @@ -583,6 +589,7 @@ filter.clear = Temizle filter.option.ignore = Yoksay filter.scatter = Saç filter.terrain = Arazi +filter.logic = Mantık filter.option.scale = Ölçek filter.option.chance = Şans @@ -606,23 +613,25 @@ 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 +filter.option.code = Kod +filter.option.loop = Döngü +locales.info = Buraya oyun içi kullanmak için yerel dil paketleri yükleyebilirsin. Yerel dil paketlerinde her değişkenin bir ismi ve değeri var. Bu değişkenler Evrensel İşlemciler ve Görevler tarafından okunabilir. Yazı formatlanabilir.\n\n[cyan]Örnek:\n[]name: [accent]zamanlayıcı[]\ndeğer: [accent]Örnek zamanlayıcı, kalan zaman: {0}[]\n\n[cyan]Kullanım:\n[]Görev yazısı olarak ayarla: [accent]@zamanlayıcı\n\n[]Evrensel İşlemciye yaz:\n[accent]localeprint "zamanlayıcı"\nformat zaman\n[gray](zaman başka hesaplanan bir değişken) +locales.deletelocale = Bu yerel dil paketini silmek istediğine emin misin? +locales.applytoall = Değişiklikleri TÜM yerel paketlere uygula +locales.addtoother = Başka yerel paket ekle +locales.rollback = En sonki değişikliğe geri al +locales.filter = Özellik Filtresi +locales.searchname = İsim arat... +locales.searchvalue = Değer arat... +locales.searchlocale = Yerel Paket arat... +locales.byname = İsme göre +locales.byvalue = Değere göre +locales.showcorrect = Tüm yerel paketlerde bulunan ve her yerde olan değerleri her yerde göster +locales.showmissing = Bazı yerel paketlerde eksik olan değerleri göster +locales.showsame = Başka yerel paketlerde aynı isme sahip değerleri göster +locales.viewproperty = Tüm yerel paketlerde göster +locales.viewing = Görünüm tipi "{0}" +locales.addicon = İkon ekle width = En: height = Boy: @@ -676,10 +685,11 @@ marker.shapetext.name = Şekilli Yazı 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 +marker.line.name = Hat +marker.quad.name = Dörtlü +marker.texture.name = Doku +marker.background = Arka Plan +marker.outline = Ana Hat objective.research = [accent]Araştır:\n[]{0}[lightgray]{1} objective.produce = [accent]Üret:\n[]{0}[lightgray]{1} objective.destroyblock = [accent]Yok Et:\n[]{0}[lightgray]{1} @@ -725,7 +735,7 @@ error.any = Bilinmeyen ağ hatası. error.bloom = Kamaşma başlatılamadı.\nCihazınız bu özelliği desteklemiyor olabilir. weather.rain.name = Yağmur -weather.snow.name = Kar +weather.snowing.name = Kar weather.sandstorm.name = Kum Fırtınası weather.sporestorm.name = Spor Fırtınası weather.fog.name = Sis @@ -761,8 +771,8 @@ sector.curlost = Sektör Kaybedildi sector.missingresources = [scarlet]Yetersiz Merkez Kaynakları sector.attacked = Sektör [accent]{0}[white] saldırı altında! sector.lost = Sektör [accent]{0}[white] kaybedildi! -sector.capture = Sector [accent]{0}[white]Captured! -sector.capture.current = Sector Captured! +sector.capture = Sektör [accent]{0}[white]Ele geçirildi! +sector.capture.current = Sektör Ele geçirildi! sector.changeicon = İkon Değiştir sector.noswitch.title = Sektör Değiştirilemiyor sector.noswitch = Bir Sektör saldırı altındayken başka bir sektöre geçemezsin.\n\nSektör: [accent]{1}[] deki [accent]{0}[] @@ -819,7 +829,7 @@ sector.coastline.description = Bu bölgede denizel birim teknoloji kalıntılar sector.navalFortress.description = Düşman bu uzak adaya doğal olarak korunan bir üs kurmuş. Bu üssü yok et. Onların gelişmiş savaş gemisi teknolojilerini elde et ve araştır. sector.onset.name = Yeni Başlangıç sector.aegis.name = Siper -sector.lake.name = Göletcik +sector.lake.name = Göletçik sector.intersect.name = Kesişim sector.atlas.name = Atlas sector.split.name = Ayrılım @@ -865,7 +875,7 @@ status.overdrive.name = Yüksek Hızlı status.overclock.name = Hızlandırlımış status.shocked.name = Çarpılmış status.blasted.name = Patlatılmış -status.unmoving.name = Sabit +status.unmoving.name = Sabitlenmiş status.boss.name = Gardiyan settings.language = Dil @@ -877,7 +887,7 @@ settings.controls = Kontroller settings.game = Oyun settings.sound = Ses settings.graphics = Grafikler -settings.cleardata = Tüm Oyun Verisini Sil +settings.cleardata = ⚠ Tüm Oyun Verisini Sil ⚠ settings.clear.confirm = Verileri silmek istediğinizden emin misiniz?\nBu işlemi geri alamazsınız! settings.clearall.confirm = [scarlet]Uyarı![]\nBu işlem kayıtlar, haritalar açılan bloklar ve tuş atamaları dahil bütün verileri silecektir.\n"Tamam" tuşuna bastığınızda bütün verileriniz silinecek ve oyun kapanacaktır. settings.clearsaves.confirm = Tüm kayıtlarınızı silmek istediğinizden emin misiniz? @@ -961,7 +971,7 @@ stat.flammability = Yanıcılık stat.radioactivity = Radyoaktivite stat.charge = Elektrik Yükü stat.heatcapacity = Isı Kapasitesi -stat.viscosity = Viskosite +stat.viscosity = Viskozite stat.temperature = Sıcaklık stat.speed = Hız stat.buildspeed = İnşa Hızı @@ -969,9 +979,10 @@ stat.minespeed = Kazı Hızı stat.minetier = Kazı Seviyesi stat.payloadcapacity = Yük Kapasitesi stat.abilities = Kabiliyetler -stat.canboost = İstekli Uçabilir +stat.canboost = Gazlayabilir stat.flying = Uçuyor stat.ammouse = Mermi Kullanıyor +stat.ammocapacity = Mermi Kapasitesi stat.damagemultiplier = Hasar Çarpanı stat.healthmultiplier = Can Çarpanı stat.speedmultiplier = Hız Çarpanı @@ -982,17 +993,46 @@ stat.immunities = Bağışıklıklar stat.healing = Tamir Eder ability.forcefield = Güç Kalkanı +ability.forcefield.description = Mermilere karşı bir güç kalkanı açar ability.repairfield = Onarma Alanı +ability.repairfield.description = Etraftaki birimleri tamir eder ability.statusfield = Hızlandırma Alanı +ability.statusfield.description = Etraftaki birimlere efekt uygular ability.unitspawn = Birliği Fabrikası +ability.unitspawn.description = Birim inşaa eder ability.shieldregenfield = Kalkan Yenileme Alanı +ability.shieldregenfield.description = Yakındaki birimlerin kalkanını yeniler ability.movelightning = Hareket Enerjisi +ability.movelightning.description = Hareket ederken yıldırım yardırır +ability.armorplate = Zırh Plakası +ability.armorplate.description = Ateş ederken alınan hasarı azaltır ability.shieldarc = Ark Kalkanı +ability.shieldarc.description = Mermileri bloklayan bir arc ışını atar ability.suppressionfield = Tamir Engelleme Alanı +ability.suppressionfield.description = Yakındaki tamircileri durdurur ability.energyfield = Güç Kalkanı -ability.energyfield.sametypehealmultiplier = [lightgray]Aynı Türden İyileştirme: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Azami Hedefler: [white]{0} +ability.energyfield.description = Yakındaki düşmanları şoklar +ability.energyfield.healdescription = Yakındaki düşmanları şoklar, dostları tamir eder ability.regen = Yenilenme +ability.regen.description = Kendi canını zamanla tamir eder +ability.liquidregen = Sıvı Emme +ability.liquidregen.description = Kendini tamir etmek için sıvı emer +ability.spawndeath = Son Bağırış +ability.spawndeath.description = Öldüğünde birim salar +ability.liquidexplode = Son İsyan +ability.liquidexplode.description = Ölürken sıvı fışkırtır +ability.stat.firingrate = [stat]{0}/sn[lightgray] ateş hızı +ability.stat.regen = [stat]{0}[lightgray] can/sn +ability.stat.shield = [stat]{0}[lightgray] kalkan +ability.stat.repairspeed = [stat]{0}/sn[lightgray] tamir hızı +ability.stat.slurpheal = [stat]{0}[lightgray] can/sıvı miktarı +ability.stat.cooldown = [stat]{0} sn[lightgray] bekleme süresi +ability.stat.maxtargets = [stat]{0}[lightgray] maks hedef +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] aynı tamir miktarı +ability.stat.damagereduction = [stat]{0}%[lightgray] hasar indüksiyonu +ability.stat.minspeed = [stat]{0} blok/sn[lightgray] min hız +ability.stat.duration = [stat]{0} sn[lightgray] süre +ability.stat.buildtime = [stat]{0} sn[lightgray] inşa süresi bar.onlycoredeposit = Sadece Merkeze Aktarım Mümkün bar.drilltierreq = Daha Güçlü Matkap Gerekli @@ -1032,9 +1072,9 @@ 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.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.maxdamagefraction = [stat]{0}%[lightgray] hasar limiti +bullet.suppression = [stat]{0} sn[lightgray] tamir bastırması ~ [stat]{1}[lightgray] karolar +bullet.interval = [stat]{0}/sn[lightgray] ara mermiler: bullet.frags = [stat]{0}[lightgray]x parçalı mermiler: bullet.lightning = [stat]{0}[lightgray]x elektrik ~ [stat]{1}[lightgray] hasarı bullet.buildingdamage = [stat]{0}%[lightgray] inşa hasarı @@ -1068,6 +1108,7 @@ unit.items = eşya unit.thousands = k unit.millions = m unit.billions = b +unit.shots = atış unit.pershot = /vuruş category.purpose = Açıklama category.general = Genel @@ -1077,6 +1118,8 @@ category.items = Eşyalar category.crafting = Üretim category.function = Fonksiyon category.optional = İsteğe Bağlı Geliştirmeler +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Merkez Fırlatma/İnme Animasyonunu Atla setting.landscape.name = Yatayda sabitle setting.shadows.name = Gölgeler @@ -1088,7 +1131,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.distinctcontrolgroups.name = Birim başına bir kontrol grubuna sınırla setting.modcrashdisable.name = Modları Çökmede Kapa setting.animatedwater.name = Animasyonlu Su setting.animatedshields.name = Animasyonlu Kalkanlar @@ -1098,7 +1141,7 @@ setting.autotarget.name = Otomatik Hedef Alma setting.keyboard.name = Fare+Klavye Kontrolleri setting.touchscreen.name = Dokunmatik Ekran Kontrolleri setting.fpscap.name = Maksimum FPS -setting.fpscap.none = Limitsiz +setting.fpscap.none = Limitsiz ∞ setting.fpscap.text = {0} FPS setting.uiscale.name = Arayüz Ölçeği [lightgray](yeniden başlatma gerekebilir)[] setting.uiscale.description = Değişikleri uygulamak için yeniden başlatma gerekli. @@ -1118,7 +1161,7 @@ setting.blockstatus.name = Blok Durumunu Göster setting.conveyorpathfinding.name = Konveyör Yol Bulma setting.sensitivity.name = Kumanda Hassasiyeti setting.saveinterval.name = Kayıt Aralığı -setting.seconds = {0} Saniye +setting.seconds = {0} saniye setting.milliseconds = {0} milisaniye setting.fullscreen.name = Tam Ekran setting.borderlesswindow.name = Kenarsız Pencere @@ -1142,7 +1185,7 @@ setting.sfxvol.name = Oyun Sesi setting.mutesound.name = Sesi Kapat setting.crashreport.name = Anonim Çökme Raporları Gönder setting.savecreate.name = Otomatik Kayıt Oluştur -setting.steampublichost.name = Public Game Visibility +setting.steampublichost.name = Herkese Açık Oyun Görünürlüğü setting.playerlimit.name = Oyuncu Limiti setting.chatopacity.name = Mesajlaşma Opaklığı setting.lasersopacity.name = Enerji Lazeri Opaklığı @@ -1162,7 +1205,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.command.name = Birim Komutu category.multiplayer.name = Çok Oyunculu category.blocks.name = Blok Seçimi placement.blockselectkeys = \n[lightgray]Tuş: [{0}, @@ -1180,23 +1223,24 @@ 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.command_queue.name = Birim Komuta Sırası +keybind.create_control_group.name = Komuta Grubu Oluştur +keybind.cancel_orders.name = Emri Hükümsüz Kıl +keybind.unit_stance_shoot.name = Birim Duruşu: Saldır +keybind.unit_stance_hold_fire.name = Birim Duruşu: Hazır Ol +keybind.unit_stance_pursue_target.name = Birim Duruşu: Takip Et +keybind.unit_stance_patrol.name = Birim Duruşu: Devriye Gez +keybind.unit_stance_ram.name = Birim Duruşu: VUR +keybind.unit_command_move.name = Birim Komutu: Git +keybind.unit_command_repair.name = Birim Komutu: Tamir Et +keybind.unit_command_rebuild.name = Birim Komutu: Yeniden İnşaa Et +keybind.unit_command_assist.name = Biirm Komutu: Yardım Et +keybind.unit_command_mine.name = Birim Komutu: Kaz +keybind.unit_command_boost.name = Birim Komutu: Gazla +keybind.unit_command_load_units.name = Birim Komutu: Birim Kargola +keybind.unit_command_load_blocks.name = Birim Komutu: Blok Kargola +keybind.unit_command_unload_payload.name = Birim Komutu: Kargo Boşalt +keybind.unit_command_enter_payload.name = Birim Komutu: Kargoya Gir keybind.rebuild_select.name = Alanı Geri İşaa Et keybind.schematic_select.name = Bölge Seç keybind.schematic_menu.name = Şema Menüsü @@ -1237,7 +1281,7 @@ keybind.minimap.name = Harita keybind.planet_map.name = Gezegen Haritası keybind.research.name = Araştırma keybind.block_info.name = Blok Bilgisi -keybind.chat.name = Konuş +keybind.chat.name = Yazış keybind.player_list.name = Oyuncu Listesi keybind.console.name = Konsol keybind.rotate.name = Döndür @@ -1249,7 +1293,7 @@ keybind.chat_scroll.name = Sohbet Kaydırma keybind.chat_mode.name = Konuşma Modunu Değiştir keybind.drop_unit.name = Birlik Düşürme keybind.zoom_minimap.name = Haritada Yakınlaştırma/Uzaklaştırma -mode.help.title = Modların açıklamaları +mode.help.title = Oyun Modlarının açıklamaları mode.survival.name = Hayatta Kalma mode.survival.description = Normal oyun oyun modu. Kaynak sınırlı ve dalgalar otomatik olarak gönderilir.\n[gray]Oynamak için haritada düşman doğma noktaları olması gerekir. mode.sandbox.name = Yaratıcı @@ -1258,21 +1302,24 @@ mode.editor.name = Düzenleyici mode.pvp.name = PvP mode.pvp.description = Yerel olarak başkaları ile savaş.\n[gray]Oynamak için haritada en az iki farklı renkli merkez olması gerekir. mode.attack.name = Saldırı -mode.attack.description = Düşman üssünü yok et. Dalga yok.\n[gray]Oynamak için haritada düşman merkez olması gerekir. +mode.attack.description = Düşman üssünü yok et. Dalga yok.\n[gray]Oynamak için haritada düşman merkezi olması gerekir. mode.custom = Özel Kurallar rules.invaliddata = Hatalı pano verisi. rules.hidebannedblocks = Yasaklı Blokları Sakla rules.infiniteresources = Sınırsız Kaynaklar rules.onlydepositcore = Sadece Merkeze Aktarmaya İzin Ver -rules.derelictrepair = Allow Derelict Block Repair +rules.derelictrepair = Kalıntıları Tamir Etmeye İzin Ver rules.reactorexplosions = Reaktör Patlamaları rules.coreincinerates = Merkez Taşanları Eritir rules.disableworldprocessors = Evrensel İşlemcileri Devredışı Bırak rules.schematic = Şema Kullanılabilir rules.wavetimer = Dalga Zamanlayıcısı rules.wavesending = Dalga Gönderiliyor +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Dalgalar +rules.airUseSpawns = Hava Birimleri doğuş bölgelerini kullanır rules.attack = Saldırı Modu rules.buildai = Üs inşa edici YZ rules.buildaitier = İnşaatçı YZ sınıfı @@ -1284,7 +1331,7 @@ rules.cleanupdeadteams = Kaybeden Takımın Bloklarını Temizle (PvP) rules.corecapture = Yıkımda Çekirdeği Elegeçir rules.polygoncoreprotection = Çokgenli Merkez Koruması rules.placerangecheck = İnşa Menzilini Doğrula -rules.enemyCheat = Sonsuz AI (Kırmızı Takım) Kaynakları +rules.enemyCheat = Sınırsız AI (Düşman Takım) Kaynakları rules.blockhealthmultiplier = Blok Can Çarpanı rules.blockdamagemultiplier = Blok Hasar Çarpanı rules.unitbuildspeedmultiplier = Birim Üretim Hız Çarpanı @@ -1294,6 +1341,7 @@ rules.unitdamagemultiplier = Birim Hasar Çapanı rules.unitcrashdamagemultiplier = Birim Çakılma Hasar Çarpanı rules.solarmultiplier = Güneş Paneli Üretim Çarpanı rules.unitcapvariable = Merkezler Birim Sınırını Etkiler +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Sabit Birim Sınırı rules.limitarea = Haritayı Sınırla rules.enemycorebuildradius = Düşman Merkezi İnşa Yasağı Yarıçapı: [lightgray](kare) @@ -1326,6 +1374,8 @@ rules.weather = Hava Durumu rules.weather.frequency = Sıklık: rules.weather.always = Her zaman rules.weather.duration = Süreklilik: +rules.placerangecheck.info = Oyuncuların düşman üssüne yakın inşa etmesini engeller. Bu, silah kurarken daha da fazla. +rules.onlydepositcore.info = Birimlerin Merkez dışında malzeme aktarmasını engeller. content.item.name = Malzemeler content.liquid.name = Sıvılar @@ -1438,7 +1488,7 @@ block.sand-boulder.name = Kumlu Kaya Parçaları block.basalt-boulder.name = Bazalt Kaya block.grass.name = Çimen block.molten-slag.name = Cüruf -block.pooled-cryofluid.name = Cryosıvı +block.pooled-cryofluid.name = Kriyosıvı block.space.name = Uzay block.salt.name = Tuz block.salt-wall.name = Tuz Duvar @@ -1448,7 +1498,7 @@ block.sand-wall.name = Kum Duvar block.spore-pine.name = Spor Çamı block.spore-wall.name = Spor Duvar block.boulder.name = Kaya Parçaları -block.snow-boulder.name = Karlı Kaya PArçaları +block.snow-boulder.name = Karlı Kaya Parçaları block.snow-pine.name = Karlı Çam block.shale.name = Şist block.shale-boulder.name = Şist Kayası @@ -1462,10 +1512,10 @@ block.scrap-wall-huge.name = Dev Hurda Duvar block.scrap-wall-gigantic.name = Devasa Hurda Duvar block.thruster.name = İtici block.kiln.name = Fırın -block.graphite-press.name = Grafit Presi -block.multi-press.name = Çoklu-Pres +block.graphite-press.name = Grafit Ezici +block.multi-press.name = Çoklu-Ezici block.constructing = {0} [lightgray](İnşa Ediliyor) -block.spawn.name = Düşman Doğma Noktası +block.spawn.name = Düşman Doğum Noktası block.core-shard.name = Merkez: Parçacık block.core-foundation.name = Merkez: Temel block.core-nucleus.name = Merkez: Çekirdek @@ -1545,23 +1595,23 @@ block.inverted-sorter.name = Ters Ayıklayıcı block.message.name = Mesaj Bloğu block.reinforced-message.name = Güçlendirilmiş Mesaj Bloğu block.world-message.name = Evrensel Mesaj Bloğu -block.world-switch.name = World Switch +block.world-switch.name = Evrensel Şalter block.illuminator.name = Aydınlatıcı block.overflow-gate.name = Taşma Geçidi -block.underflow-gate.name = Yana Taşma Geçidi +block.underflow-gate.name = Ters Taşma Geçidi block.silicon-smelter.name = Silikon Fırını block.phase-weaver.name = Faz Örücü block.pulverizer.name = Ufalayıcı -block.cryofluid-mixer.name = Kriyosıvı Mikseri +block.cryofluid-mixer.name = Kriyosıvı Karıştırıcı block.melter.name = Eritici block.incinerator.name = Yakıcı -block.spore-press.name = Spor Presi +block.spore-press.name = Spor Ezici block.separator.name = Ayırıcı block.coal-centrifuge.name = Kömür Santrifüjü block.power-node.name = Enerji Noktası block.power-node-large.name = Büyük Enerji Noktası block.surge-tower.name = Akı Kulesi -block.diode.name = Batarya Diyotu +block.diode.name = Diyot block.battery.name = Batarya block.battery-large.name = Büyük Batarya block.combustion-generator.name = Termik Jeneratör @@ -1623,7 +1673,7 @@ block.shock-mine.name = Şok Mayını block.overdrive-projector.name = Hızlandırma Projektörü block.force-projector.name = Enerji Kalkan Projektörü block.arc.name = Arc -block.rtg-generator.name = RTG Jeneratörü +block.rtg-generator.name = RTG Jeneratör block.spectre.name = Spectre block.meltdown.name = Meltdown block.foreshadow.name = Foreshadow @@ -1649,7 +1699,7 @@ block.disassembler.name = Sökücü block.silicon-crucible.name = Silikon Kazanı block.overdrive-dome.name = Hızlandırma Kubbesi block.interplanetary-accelerator.name = Gezegenler Arası Hızlandırıcı -#Düzgün tutun bu TR translatei uğraştırıyonuz beni. -RTOmega +#Düzgün tutun bu TR translatei uğraştırıyonuz beni. -RTOmega (harbi ya XD) block.constructor.name = İnşaatçı block.constructor.description = 2x2 ve daha küçük blokları inşa edebilir. block.large-constructor.name = Büyük İnşaatçı @@ -1661,7 +1711,7 @@ block.payload-loader.description = Sıvı ve malzemeleri bloklara yükler. block.payload-unloader.name = Kargo Boşaltıcı block.payload-unloader.description = Sıvı ve Malzemeleri bloklardan boşaltır. block.heat-source.name = Sonsuz Isı Kaynağı -block.heat-source.description = Nerdeyese Sonsuz Isı Veren 1x1 bir blok. +block.heat-source.description = Neredeyese Sonsuz Isı Veren 1x1 bir blok. block.empty.name = Boş block.rhyolite-crater.name = Riyolit Krateri block.rough-rhyolite.name = Kaba Riyolit @@ -1684,7 +1734,7 @@ block.carbon-vent.name = Karbon Baca block.arkyic-vent.name = Arkisit Baca block.yellow-stone-vent.name = Sarı Taş Baca block.red-stone-vent.name = Kızıl Taş Baca -block.crystalline-vent.name = Crystalline Vent +block.crystalline-vent.name = Kristal Baca block.redmat.name = KızılMat block.bluemat.name = MaviMat block.core-zone.name = Merkez Alanı @@ -1750,7 +1800,7 @@ block.shield-projector.name = Kalkan Projektörü block.large-shield-projector.name = Büyük Kalkan Projektörü block.armored-duct.name = Zırhlı Tüp block.overflow-duct.name = Taşma Tüpü -block.underflow-duct.name = AltTaşma Tüpü +block.underflow-duct.name = Alt-Taşma Tüpü block.duct-unloader.name = Tüp Boşaltıcı block.surge-conveyor.name = Akı Konveyör block.surge-router.name = Akı Yönlendirici @@ -1824,11 +1874,11 @@ block.memory-bank.name = Bellek Bankası team.malis.name = Malis team.crux.name = Crux team.sharded.name = Sharded -team.derelict.name = Terkedilmiş +team.derelict.name = Kalıntı team.green.name = yeşil #Tüpü bilmem ama yeni çıkan erekir çok iyi değil mi -siyah pulsar team.blue.name = mavi - +#erekir cidden güzelmiş -siyah pulsar hint.skip = Geç hint.desktopMove = [accent][[WASD][] ile hareket et. hint.zoom = [accent]Scroll[] ile Zoom yap. @@ -1954,10 +2004,10 @@ liquid.ozone.description = Oksitlemede, üretimde ve enerji üretiminde kullanı liquid.hydrogen.description = Maden çıkarmada, birim üretiminde ve taşımada kullanılır. Yanıcı. liquid.cyanogen.description = Mermi olarak, gelişmiş bina ve birimlerde kullanılır. Yüksek derecede Yanıcı. liquid.nitrogen.description = Gaz çıkarmada ve üretimde kullanılır. Durağan. -liquid.neoplasm.description = Neoplasmik Reaktörün tehlikeli bir yan ürünü. Su ile taşınır ve su içerek tüm bloklara zarar verir. +liquid.neoplasm.description = Neoplazmik Reaktörün tehlikeli bir yan ürünü. Su ile taşınır ve su içerek tüm bloklara zarar verir. liquid.neoplasm.details = Neoplazma. Kontrolsüz bölünen kanserli hücre topluluğu. Isıya dayanıklı. Su içerek her binaya karşı aşırı tehlikeli.\n\nAnaliz için fazla dengesiz. Kullanımı bilmiyor. Cürüf göletlerinde eritmeniz öneirlir. [#ff]!SERPULOYA GÖTÜRME! -block.derelict = [lightgray]\ue815 Terkedilmiş +block.derelict = [lightgray]\ue815 Kalıntı block.armored-conveyor.description = Materyalleri titanyum konveyörlerle aynı hızda taşır ama daha fazla zırha sahiptir. Diğer konveyörler dışında yan taraflardan materyal kabul etmez. block.illuminator.description = Küçük, kompakt, yapılandırılabilir bir ışık kaynağı. Çalışması için enerji gerekir. block.message.description = Bir mesajı saklar. Müttefikler arasındaki haberleşmede kullanılır. @@ -2086,7 +2136,7 @@ block.segment.description = Gelen mermilere zarar verir ve onları yok eder. Laz 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ü, 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.disassembler.description = Cürufü aşırı sıcak ortamda seritir. Toryum elde edebilir. block.overdrive-dome.description = Yakındaki binaları hızlandırır. Çalışmak için silikon ve faz gerektirir. block.payload-conveyor.description = Büyük yükleri hareket ettirir. Birimler gibi. block.payload-router.description = Büyük Yükleri 3 Ayrı yöne aktarır. @@ -2199,7 +2249,7 @@ block.unit-repair-tower.description = Etrafındaki tüm birimleri tamir eder. Oz block.radar.description = Haritayı tarar. Enerji gerektirir. block.shockwave-tower.description = Düşman mermilerinini parçalar. Siyanojen gerektirir. 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 +#burdan sonraki ve önceki her şeyi benim translate etmem gerekti!!! -RTOmega XD unit.dagger.description = Düşmanlara basit mermilerle ateş eder. unit.mace.description = Düşmanlara alev püskürtür. unit.fortress.description = Düşmanlara uzun menzilli gülleler fırlatır. @@ -2222,7 +2272,7 @@ 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şatta yardımcı olur. -unit.mega.description = Otomayik bir şekilde hasarlı bolkları onarır. Blokları ve Birimleri taşıyabilir. +unit.mega.description = Otomatik bir şekilde hasarlı bolkları onarır. Blokları ve Birimleri taşıyabilir. unit.quad.description = Büyük bombalar atar, hasarlı blokları onarır ve düşmanlara zarar verir. Bolkları ve Birimleri taşıyabilir. unit.oct.description = Yakındaki birimleri korur ve tamir eder. Blokları ve Birimleri taşıyabilir. unit.risso.description = Yakındaki düşmanlara Füze atar. @@ -2260,7 +2310,7 @@ unit.emanate.description = Akropolis Merkezini korumak için binalar inşa eder. lst.read = Bağlı hafıza kutusundaki numarayı okur. lst.write = Bağlı hafıza kutuaundaki numaraya yazar. lst.print = Yazı yazar. -lst.format = Replace next placeholder ("[accent]@[]") in text buffer with a value.\nExample:\n[accent]print "test @"\nformat "example" +lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = Ekrana Çizer. lst.drawflush = Ekrana Çizimi Aktarır. lst.printflush = Mesaj bloğuna metnini aktarır, @@ -2283,7 +2333,7 @@ lst.getblock = Herhangi bir yerdeki blok bilgisini al. lst.setblock = Herhangi bir yerdeki blok bilgisini değiştir. lst.spawnunit = Herhangi bir yerde birim var et. lst.applystatus = Bir Birime Durum Etkisi ekle. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Bellir bir noktada dalga başlat.\nDalga Zamanlayıcı Oluşturmaz! lst.explosion = Bir Noktada Patlama oluştur. @@ -2300,43 +2350,43 @@ lst.effect = Parçacık efekti oluştur. lst.sync = Ağ boyunca bir değişkeni senkronize et.\nSaniyede en fazla 10 kere yapılabilir. lst.makemarker = Dünyada yeni bir İşlemci İşareti koy.\nBu İşarete bir Kimlik adamalısın.\nDünya başına 20.000 limit bulunmakta. lst.setmarker = Bir İşlemci İşareti için bir arazi seç.\nKimlik, İşaret Koyucudaki ile aynı olmalı. -lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lst.localeprint = Harita yerel paket özellik değerini metin arabelleğine ekleyin.\nHarita düzenleyicide harita yerel ayar paketlerini ayarlamak için şunu işaretleyin: [accent]Harita Bilgisi > Yerel Paketler[].\nİstemci bir mobil cihazsa, önce ".mobile" ile biten bir özelliği yazdırmaya çalışır. lglobal.false = 0 lglobal.true = 1 lglobal.null = null -lglobal.@pi = 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 +lglobal.@pi = Matematiksel sabit (π) pi (3.141...) +lglobal.@e = Matematiksel sabit e (2.718...) +lglobal.@degToRad = Bu sayı ile çarparak dereceyi radyana çevir +lglobal.@radToDeg = Bu sayı ile çarparak radyanı dereceye çevir +lglobal.@time = Bu kayıttaki oynama süren, milisaniyesine kadar +lglobal.@tick = Bu kayıttaki oynama süren, tick halinde (1 sn = 60 tick) +lglobal.@second = Bu kayıttaki oynama süren, saniyeler halinde +lglobal.@minute = Bu kayıttaki oynama süren, dakikalar halinde +lglobal.@waveNumber = Şuanki Dalga sayısı +lglobal.@waveTime = Bir sonraki dalga için süre, saniyeyle +lglobal.@mapw = Bloklarla Harita Genişliği +lglobal.@maph = Bloklarla Harita Yüksekliği +lglobal.sectionMap = Harita +lglobal.sectionGeneral = Genel +lglobal.sectionNetwork = Bağlantı/Oyuncu Tarafı [Sadece Evrensel İşlemci] +lglobal.sectionProcessor = İşlemci +lglobal.sectionLookup = Arat +lglobal.@this = Kodu çalıştıran işlemci +lglobal.@thisx = Kodu çalıştıran işlemcinin X kordinatı +lglobal.@thisy = Kodu çalıştıran işlemcinin Y kordinatı +lglobal.@links = Bu işlemciye bağlı toplam blok sayısı +lglobal.@ipt = Tick hızıyla bu işlemcinin işlem hızı (60 tick = 1 sn) +lglobal.@unitCount = Oyundaki toplam birim türü sayısı, Aratla kullan. +lglobal.@blockCount = Oyundaki toplam blok türü sayısı, Aratla kullan. +lglobal.@itemCount = Oyundaki toplam malzeme türü sayısı, Aratla kullan. +lglobal.@liquidCount = Oyundaki toplam sıvı türü sayısı, Aratla kullan. +lglobal.@server = Oyun bir sunucuda veya tek kişilikte ise Doğru, değil ise Yanlış geri dönüt +lglobal.@client = Oyun bir suncuya bağlanmış bir oyuncu tarafından çalıştırılıyorsa Doğru, değil ise Yanlış. +lglobal.@clientLocale = Oyunu çalıştıran oyuncunun yerel dili. Örnek: tr_TR +lglobal.@clientUnit = Oyunu çalıştıran oyuncunun birimi +lglobal.@clientName = Oyunu çalıştıran oyuncunun ismi +lglobal.@clientTeam = Oyunu çalıştıran oyuncunun takım kimliği +lglobal.@clientMobile = Oyuncu mobildeyse Doğru, değil ise Yanlış geri dönüt logic.nounitbuild = [red]Birim İnşası Yasak! @@ -2345,6 +2395,7 @@ lenum.shoot = Bir konuma ateş et. lenum.shootp = Belli bir birim veya binaya ateş et. lenum.config = Bina yapılandırması, örnek: Ayıklayıcı Türü lenum.enabled = Blok aktif mi? +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Aydınlatıcı Rengi laccess.controller = Birim Kontrol edici. Eğer işlemci kontrol ediyorsa işlemci döner. \nFormasyon durumundaysa, lider döner.\nDiğer şekilde, birimi kendi döner. @@ -2379,7 +2430,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. +graphicstype.print = Yazdırma arabelleğinden metin çizer.\nYazdırma arabelleğini temizler. lenum.always = Her Zaman Doğru lenum.idiv = Tamsayı Bölme @@ -2399,14 +2450,14 @@ lenum.xor = Çapraz Veya lenum.min = İki sayıdan en küçüğü. lenum.max = İki sayıdan en büyüğü. lenum.angle = İki Işının yaptığı Açı. -lenum.anglediff = Absolute distance between two angles in degrees. +lenum.anglediff = İki açı arasındaki derece cinsinden mutlak mesafe. lenum.len = Bir Işının Uzunluğu. lenum.sin = Sinüs lenum.cos = Kosinüs lenum.tan = Tanjant -lenum.asin = Arl Sinüs +lenum.asin = Ark Sinüs lenum.acos = Ark Kosinüs lenum.atan = Ark Tanjant @@ -2470,7 +2521,7 @@ unitlocate.group = Aranan binanın türü. lenum.idle = Hareket etmez ancak kazmaya ve inşa etmeye devam eder. lenum.stop = Dur! -lenum.unbind = Logic Kontrolü tamaman devre dışı bırak.\nNormal AI ı devreye sok. +lenum.unbind = Logic Kontrolü tamaman devre dışı bırak.\nNormal AI'ı devreye sok. lenum.move = Tam konuma git. lenum.approach = Bir Konuma yaklaş. lenum.pathfind = Düşman Doğuş noktasına git. @@ -2485,13 +2536,13 @@ lenum.payenter = Bir birimi, kargo tutabilen bir bloğa indir. lenum.flag = Numara ile işaretle. lenum.mine = Kaz. lenum.build = Bina inşa et. -lenum.getblock = Bir bloğun verilerini al. +lenum.getblock = Kordinatta bina, blok veya zemin tipi al.\nBirimler kordinata yakın olmalı yoksa boş geri döner. lenum.within = Bir birim menzil alanında mı? -lenum.boost = Boostlamaya başla/dur -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. +lenum.boost = Gazlamaya başla/dur +lenum.flushtext = Varsa, yazdırma arabelleğinin içeriğini işaretleyiciye boşaltın.\nGetirme doğru olarak ayarlanmışsa, harita yerel dil paketinden veya oyun paketinden bilgileri getirmeye çalışır. +lenum.texture = Doğrudan oyunun doku atlasından alınan doku adı (kebab-tarzı isimlendirme XD).\nprintFlush doğru olarak ayarlanırsa metin arabelleği içeriğini metin bağımsız değişkeni olarak kullanır. +lenum.texturesize = Zemindeki doku boyutu. Sıfır değeri, işaretleyici genişliğini orijinal dokunun boyutuna ölçeklendirir. +lenum.autoscale = İşaretçinin oyuncunun yakınlaştırma düzeyine göre ölçeklenip ölçeklenmeyeceği. +lenum.posi = Sıfır indeksinin ilk konum olduğu çizgi ve dörtlü işaretleyiciler için kullanılan indekslenmiş konum. +lenum.uvi = Dokunun sıfırdan bire kadar değişen konumu, dörtlü işaretçiler için kullanılır. +lenum.colori = Sıfır indeksinin ilk renk olduğu çizgi ve dörtlü işaretleyiciler için kullanılan indekslenmiş konum. diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index a6b59822ba..b50afe1626 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -57,7 +57,7 @@ mods.browser.sortstars = Сортувати за популярністю schematic = Схема schematic.add = Зберегти схему… schematics = Схеми -schematic.search = Search schematics... +schematic.search = Шукати схеми... schematic.replace = Схема з такою назвою вже є. Замінити її? schematic.exists = Схема з такою назвою вже є. schematic.import = Імпортувати схему… @@ -70,7 +70,7 @@ schematic.shareworkshop = Поширити в Майстерню schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Обернути схему schematic.saved = Схема збережена. schematic.delete.confirm = Ви справді хочете видалити цю схему? -schematic.edit = Edit Schematic +schematic.edit = Редагувати схему schematic.info = {0}x{1}, блоків: {2} schematic.disabled = [scarlet]Схеми вимкнено[]\nВам не дозволяється використовувати схеми на цій [accent]мапі[] чи [accent]сервері. schematic.tags = Мітки: @@ -79,7 +79,7 @@ schematic.addtag = Додати мітку schematic.texttag = Текстова мітка schematic.icontag = Мітка із значком schematic.renametag = Перейменувати мітку -schematic.tagged = {0} tagged +schematic.tagged = {0} з міткою schematic.tagdelconfirm = Видалити цю мітку повністю? schematic.tagexists = Схожа мітка вже існує. @@ -159,7 +159,7 @@ mod.requiresversion.details = Необхідна версія гри: [accent]{0 mod.outdatedv7.details = Ця модифікація не сумісна з останньою версією гри. Розробник модифікації має оновити її та додати [accent]minGameVersion: 136[] у свій [accent]mod.json[] файл. mod.blacklisted.details = Цю модифікацію було вручну внесено у чорний список за постійні збої або інші проблеми з цією версією гри. Не використовуйте її. mod.missingdependencies.details = У цій модифікації відсутні наступні залежності: {0} -mod.erroredcontent.details = Ця модифікація спричинила помилки при завантаженні. Попросіть автора виправити їх. +mod.erroredcontent.details = Ця модифікація спричинила помилки під час завантаження. Попросіть автора виправити їх. mod.circulardependencies.details = Цей мод має залежності, які залежать одна від одної. mod.incompletedependencies.details = Цей мод неможливо завантажити через недійсні або відсутні залежності: {0} mod.requiresversion = Необхідна версія гри: [red]{0} @@ -257,19 +257,19 @@ trace = Стежити за гравцем trace.playername = Ім’я гравця: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Ідентифікатор: [accent]{0} -trace.language = Language: [accent]{0} +trace.language = Мова: [accent]{0} trace.mobile = Мобільний клієнт: [accent]{0} trace.modclient = Користувацький клієнт: [accent]{0} trace.times.joined = Кількість приєднань: [accent]{0} trace.times.kicked = Кількість вигнань: [accent]{0} -trace.ips = IPs: -trace.names = Names: +trace.ips = IP: +trace.names = Імена: invalidid = Невірний ідентифікатор клієнта! Надішліть звіт про помилку. -player.ban = Ban -player.kick = Kick -player.trace = Trace -player.admin = Toggle Admin -player.team = Change Team +player.ban = Заблокувати +player.kick = Вигнати +player.trace = Відстежити +player.admin = Перемкнути адміністратора +player.team = Змінити команду server.bans = Блокування server.bans.none = Заблокованих гравців немає! server.admins = Адміністратори @@ -286,8 +286,8 @@ confirmkick = Ви дійсно хочете вигнати «{0}[white]»? confirmunban = Ви дійсно хочете розблокувати цього гравця? confirmadmin = Ви дійсно хочете зробити «{0}[white]» адміністратором? confirmunadmin = Ви дійсно хочете видалити статус адміністратора з «{0}[white]»? -votekick.reason = Vote-Kick Reason -votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: +votekick.reason = Причина голосування за вигнання гравця +votekick.reason.message = Ви впевнені, що хочете вигнати голосуванням "{0}[white]"?\nЯкщо так, то, будь ласка, вкажіть причину: joingame.title = Багатоосібна гра joingame.ip = IP: disconnect = Відключено. @@ -343,23 +343,23 @@ open = Відкрити customize = Налаштувати правила cancel = Скасувати command = Командувати -command.queue = [lightgray][Queuing] +command.queue = [lightgray][У черзі] 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 +command.enterPayload = Увійти до вантажного блока +command.loadUnits = Завантажити одиниці +command.loadBlocks = Завантажити блоки +command.unloadPayload = Вивантажити вантаж +stance.stop = Скасувати накази +stance.shoot = Позиція: стріляти +stance.holdfire = Позиція: припинити вогонь +stance.pursuetarget = Позиція: переслідувати ціль +stance.patrol = Позиція: шлях патрулювання +stance.ram = Позиція: на таран\n[lightgray]Рух по прямій лінії, без пошуку шляху openlink = Перейти за посиланням copylink = Скопіювати посилання back = Назад @@ -440,7 +440,12 @@ editor.waves = Хвилі editor.rules = Правила editor.generation = Генерація editor.objectives = Завдання -editor.locales = Locale Bundles +editor.locales = Мовні пакети +editor.worldprocessors = Світові процесори +editor.worldprocessors.editname = Редагувати назву +editor.worldprocessors.none = [lightgray]Блоки світового процесора не знайдено!\nДодайте його у редакторі мапи або скористайтеся кнопкою \ue813 «Додати» нижче. +editor.worldprocessors.nospace = Немає вільного місця для розміщення світового процесора! \nВи заповнили карту структурами? Навіщо ви це зробили? +editor.worldprocessors.delete.confirm = Ви справді хочете видалити цей світовий процесор?\n\nЯкщо він оточений стінами, його буде замінено стіною оточення. editor.ingame = Редагувати в грі editor.playtest = Протестувати в грі editor.publish.workshop = Опублікувати в Майстерні Steam @@ -483,8 +488,8 @@ waves.sort.reverse = Зворотне сортування waves.sort.begin = Хвилями waves.sort.health = Здоров’ям waves.sort.type = Типом -waves.search = Search waves... -waves.filter = Unit Filter +waves.search = Шукати хвилі... +waves.filter = Фільтр одиниць waves.units.hide = Сховати все waves.units.show = Показати все @@ -497,6 +502,7 @@ editor.default = [lightgray]<За замовчуванням> details = Подробиці… edit = Змінити… variables = Змінні +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = Ім’я: editor.spawn = Створити бойову одиницю @@ -509,7 +515,7 @@ editor.errorlegacy = Ця мапа занадто стара і використ editor.errornot = Це не мапа. editor.errorheader = Цей файл мапи недійсний або пошкоджений. editor.errorname = Мапа не має назви. Може, ви намагаєтеся завантажити збереження? -editor.errorlocales = Error reading invalid locale bundles. +editor.errorlocales = Виникла помилка під час читання мовних пакетів: недійсний мовний пакет. editor.update = Оновити editor.randomize = Випадково editor.moveup = Підняти вище @@ -521,7 +527,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.savechanges = [scarlet]У вас є незбережені зміни!\n\n[]Чи хочете ви їх зберегти? editor.saved = Збережено! editor.save.noname = Ваша мапа не має назви! Установіть його в «Інформація про мапу». editor.save.overwrite = Ваша мапа перезаписує вбудовану мапу! Виберіть іншу назву в «Інформація про мапу». @@ -560,8 +566,8 @@ toolmode.eraseores = Видалення руд toolmode.eraseores.description = Видалити тільки руди. toolmode.fillteams = Змінити блок у команді toolmode.fillteams.description = Змінює належність\nблоків до команди. -toolmode.fillerase = Fill Erase -toolmode.fillerase.description = Erase blocks of the same type. +toolmode.fillerase = Видалити однотипне +toolmode.fillerase.description = Видаляє однотипні блоки. toolmode.drawteams = Змінити команду блока toolmode.drawteams.description = Змінює належність\nблока до команди. #unused @@ -586,6 +592,7 @@ filter.clear = Очистити filter.option.ignore = Ігнорувати filter.scatter = Розсіювач filter.terrain = Ландшафт +filter.logic = Logic filter.option.scale = Масштаб фільтра filter.option.chance = Шанс @@ -609,23 +616,25 @@ 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 +filter.option.code = Код +filter.option.loop = Цикл +locales.info = Тут ви можете додати на мапу мовні пакети для певних мов. У мовних пакетах кожна властивість має назву і значення. Ці властивості можуть бути використані світовими процесорами та завданнями їхніми назвами. Вони підтримують форматування тексту (замінюючи заповнювачі на дійсні значення).\n\n[cyan]Приклад властивості:\n[]name: [accent]timer[]\nvalue: [accent]Приклад таймеру, часу лишилось: @[]\n\n[cyan]Використання:\n[]Установіть його як текст завдання: [accent]@timer\n\n[]Надрукуйте його у світовому процесорі:\n[accent]localeprint "timer"\nformat time\n[gray](де час - окремо обчислена змінна) +locales.deletelocale = Ви справді хочете видалити цей мовний пакет? +locales.applytoall = Застосувати зміни до всіх мовних пакетів +locales.addtoother = Додати до інших мовних пакетів +locales.rollback = Повернення до останньої застосованої зміни +locales.filter = Фільтр властивостей +locales.searchname = Шукати назву... +locales.searchvalue = Шукати значення... +locales.searchlocale = Шукати мовний пакет... +locales.byname = За назвою +locales.byvalue = За значенням +locales.showcorrect = Показати властивості, які присутні в усіх мовних пакетах і мають унікальні значення скрізь +locales.showmissing = Показати властивості, які відсутні в деяких мовних пакетах +locales.showsame = Показати властивості, які мають однакові значення в різних мовних пакетах +locales.viewproperty = Переглянути в усіх мовних пакетах +locales.viewing = Перегляд властивості "{0}" +locales.addicon = Додати значок width = Ширина: height = Висота: @@ -664,16 +673,16 @@ uncover = Розкрити configure = Налаштувати вивантаження objective.research.name = Дослідити -objective.produce.name = Отримайте -objective.item.name = Отримайте предмет +objective.produce.name = Отримати +objective.item.name = Отримати предмет objective.coreitem.name = Предметів у ядрі objective.buildcount.name = Кількість споруд objective.unitcount.name = Кількість одиниць -objective.destroyunits.name = Знищте одиниць +objective.destroyunits.name = Знищити одиниці objective.timer.name = Таймер -objective.destroyblock.name = Знищте блок -objective.destroyblocks.name = Знищте блоки -objective.destroycore.name = Знищте ядро +objective.destroyblock.name = Знищити блок +objective.destroyblocks.name = Знищити блоки +objective.destroycore.name = Знищити ядро objective.commandmode.name = Режим командування objective.flag.name = Прапорець @@ -681,8 +690,9 @@ marker.shapetext.name = Форма тексту marker.point.name = Point marker.shape.name = Форма marker.text.name = Текст -marker.line.name = Line -marker.quad.name = Quad +marker.line.name = Лінія +marker.quad.name = Квад +marker.texture.name = Текстура marker.background = Фон marker.outline = Контур @@ -697,8 +707,8 @@ objective.build = [accent]Збудуйте: [][lightgray]{0}[]x\n{1}[lightgray]{ objective.buildunit = [accent]Сконструюйте одиницю: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.destroyunits = [accent]Знищте: [][lightgray]{0}[]x Units objective.enemiesapproaching = [accent]Вороги наблизяться через [lightgray]{0}[] -objective.enemyescelating = [accent]Enemy production escalating in [lightgray]{0}[] -objective.enemyairunits = [accent]Enemy air unit production beginning in [lightgray]{0}[] +objective.enemyescelating = [accent]Нарощування ворожого виробництва почнеться через [lightgray]{0}[] +objective.enemyairunits = [accent]Виробництво ворожих повітряних одиниць почнеться через [lightgray]{0}[] objective.destroycore = [accent]Знищте вороже ядро objective.command = [accent]Командуйте над одиницями objective.nuclearlaunch = [accent]⚠ Виявлено ядерний запуск: [lightgray]{0} @@ -733,7 +743,7 @@ error.any = Невідома мережева помилка error.bloom = Не вдалося ініціалізувати світіння.\nВаш пристрій, мабуть, не підтримує це. weather.rain.name = Дощ -weather.snow.name = Сніг +weather.snowing.name = Сніг weather.sandstorm.name = Піщана буря weather.sporestorm.name = Спорова буря weather.fog.name = Туман @@ -834,7 +844,7 @@ sector.intersect.name = Роздоріжжя sector.atlas.name = Атлант sector.split.name = Розколина sector.basin.name = Ставок -sector.marsh.name = Marsh +sector.marsh.name = Болото sector.peaks.name = Вершини sector.ravine.name = Яр sector.caldera-erekir.name = Кальдера @@ -983,6 +993,7 @@ stat.abilities = Здібності stat.canboost = Можна прискорити stat.flying = Літає stat.ammouse = Патронів використовує +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = Множник шкоди stat.healthmultiplier = Множник здоров’я stat.speedmultiplier = Множник швидкості @@ -992,18 +1003,47 @@ stat.reactive = Реактивний stat.immunities = Імунітети stat.healing = Відновлювання -ability.forcefield = Щитове поле +ability.forcefield = Силовий щит +ability.forcefield.description = Створює силове поле, який поглинає кулі ability.repairfield = Ремонтувальне поле +ability.repairfield.description = Ремонтує найближчі одиниці ability.statusfield = Поле підсилення -ability.unitspawn = Завод одиниць � +ability.statusfield.description = Застосовує ефект стану до сусідніх одиниць +ability.unitspawn = Завод одиниць +ability.unitspawn.description = Створює одиниці ability.shieldregenfield = Щитовідновлювальне поле +ability.shieldregenfield.description = Відновлює щити сусідніх одиниць ability.movelightning = Блискавки під час руху +ability.movelightning.description = Випускає блискавки під час руху +ability.armorplate = Бронеплита +ability.armorplate.description = Зменшує шкоду під час стрільби ability.shieldarc = Щитова дуга +ability.shieldarc.description = Проєктує силовий щит у вигляді дуги, що поглинає кулі ability.suppressionfield = Поле пригнічення відновлення +ability.suppressionfield.description = Зупиняється поблизу ремонтних будівель ability.energyfield = Енергетичне поле -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +ability.energyfield.description = Вражає найближчих ворогів +ability.energyfield.healdescription = Вражає ворогів поблизу та зцілює союзників +ability.regen = Лікування +ability.regen.description = Відновлює власне здоров'я з часом +ability.liquidregen = Поглинання рідини +ability.liquidregen.description = Поглинає рідину для самолікування +ability.spawndeath = Смертельне породження +ability.spawndeath.description = Випускає одиниць після смерті +ability.liquidexplode = Смертельний розлив +ability.liquidexplode.description = Розливає рідину після смерті +ability.stat.firingrate = [lightgray]Швидкість стрільби[stat]{0} за сек. +ability.stat.regen = Відновлення здоров'я: [stat]{0} за сек. +ability.stat.shield = [lightgray]Щит: [stat]{0} +ability.stat.repairspeed = [lightgray]Швидкість відновлення: [stat]{0} за сек. +ability.stat.slurpheal = [lightgray]Здоров'я за одиницю рідини: [stat]{0} +ability.stat.cooldown = [lightgray]Перезаряджання: [stat]{0} за сек. +ability.stat.maxtargets = [lightgray]Максимум цілей: [white]{0} +ability.stat.sametypehealmultiplier = [lightgray]Однотипне відновлення: [white]{0}% +ability.stat.damagereduction = [lightgray]Зменшення шкоди: [stat]{0}% +ability.stat.minspeed = [lightgray]Мінімальна швидкість: [stat]{0} плиток за сек. +ability.stat.duration = [lightgray]Тривалість: [stat]{0} за сек. +ability.stat.buildtime = [lightgray]Час побудови: [stat]{0} за сек. bar.onlycoredeposit = Передача предметів дозволена лише до ядра bar.drilltierreq = Потрібен ліпший бур @@ -1043,7 +1083,7 @@ bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat bullet.incendiary = [stat]запальний bullet.homing = [stat]самонаведення bullet.armorpierce = [stat]бронебійність -bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit +bullet.maxdamagefraction = [stat]{0}%[lightgray] обмеження шкоди bullet.suppression = [stat]{0}[lightgray] сек. пригнічення відновлення ~ [stat]{1}[lightgray] плит. bullet.interval = [stat]{0} за сек. [lightgray] період між кулями: bullet.frags = [stat]{0}[lightgray]x шкода по ділянці від снарядів: @@ -1079,6 +1119,7 @@ unit.items = предм. unit.thousands = тис unit.millions = млн unit.billions = млрд +unit.shots = shots unit.pershot = за постріл category.purpose = Призначення category.general = Загальне @@ -1088,18 +1129,20 @@ category.items = Предмети category.crafting = Виробництво category.function = Функціонал category.optional = Додаткові поліпшення +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = Пропустити запуск ядра та анімацію приземлення setting.landscape.name = Тільки альбомний (горизонтальний) режим setting.shadows.name = Тіні setting.blockreplace.name = Пропонування щодо автоматичної заміни блоків setting.linear.name = Лінійна фільтрація setting.hints.name = Підказки -setting.logichints.name = Підказки при роботі з логікою +setting.logichints.name = Підказки під час роботи з логікою setting.backgroundpause.name = Пауза в разі згортання setting.buildautopause.name = Автоматичне призупинення будування setting.doubletapmine.name = Подвійне швидке натискання для початку видобутку setting.commandmodehold.name = Утримуйте для переходу в режим командування -setting.distinctcontrolgroups.name = Limit One Control Group Per Unit +setting.distinctcontrolgroups.name = Обмежити одну групу контролю на одиницю setting.modcrashdisable.name = Вимикати модифікації після аварійного запуску setting.animatedwater.name = Анімаційні рідини setting.animatedshields.name = Анімаційні щити @@ -1146,14 +1189,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.steampublichost.name = Public Game Visibility +setting.steampublichost.name = Загальнодоступність гри setting.playerlimit.name = Обмеження гравців setting.chatopacity.name = Непрозорість чату setting.lasersopacity.name = Непрозорість лазерів енергопостачання @@ -1161,7 +1204,7 @@ setting.bridgeopacity.name = Непрозорість мостів setting.playerchat.name = Показувати хмару чата над гравцями setting.showweather.name = Показувати погоду setting.hidedisplays.name = Приховувати логічні дисплеї -setting.macnotch.name = Адаптуйте інтерфейс для відображення виїмки +setting.macnotch.name = Адаптуйте інтерфейс для показу виїмки setting.macnotch.description = Потрібен перезапуск для застосування змін steam.friendsonly = Лише друзі steam.friendsonly.tooltip = Чи лише друзі Steam зможуть приєднатися до вашої гри.Якщо зняти цей прапорець, ваша гра стане загальнодоступною – будь-хто зможе приєднатися. @@ -1173,7 +1216,7 @@ keybind.title = Налаштування керування keybinds.mobile = [scarlet]Більшість прив’язаних клавіш не функціональні для мобільних пристроїв. Підтримується лише базовий рух. category.general.name = Загальне category.view.name = Перегляд -category.command.name = Unit Command +category.command.name = Командувати одиницею category.multiplayer.name = Мережева гра category.blocks.name = Вибір блока placement.blockselectkeys = \n[lightgray]Клавіші: [{0}, @@ -1191,23 +1234,24 @@ keybind.mouse_move.name = Рухатися за мишею keybind.pan.name = Політ камери за мишею keybind.boost.name = Прискорення keybind.command_mode.name = Режим командування -keybind.command_queue.name = Unit Command Queue -keybind.create_control_group.name = Create Control Group -keybind.cancel_orders.name = Cancel Orders -keybind.unit_stance_shoot.name = Unit Stance: Shoot -keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire -keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target -keybind.unit_stance_patrol.name = Unit Stance: Patrol -keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.command_queue.name = Черга команд одиниць +keybind.create_control_group.name = Створити контрольну групу +keybind.cancel_orders.name = Скасувати накази +keybind.unit_stance_shoot.name = Позиція одиниці: відкрити воонь +keybind.unit_stance_hold_fire.name = Позиція одиниці: припинити вогонь +keybind.unit_stance_pursue_target.name = Позиція одиниці: переслідувати ціль +keybind.unit_stance_patrol.name = Позиція одиниці: патрулювати +keybind.unit_stance_ram.name = Позиція одиниці: на таран +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Команда одиниці: завантажити вантаж keybind.rebuild_select.name = Відбудувати регіон keybind.schematic_select.name = Вибрати ділянку keybind.schematic_menu.name = Меню схем @@ -1271,22 +1315,25 @@ mode.pvp.description = Боріться проти інших гравців.\n[ mode.attack.name = Наступ mode.attack.description = Зруйнуйте ворожу базу. \n[gray]Потрібно червоне ядро на мапі для гри. mode.custom = Користувацькі правила -rules.invaliddata = Invalid clipboard data. +rules.invaliddata = Недійсні дані з клавіатури. rules.hidebannedblocks = Приховати заборонені блоки rules.infiniteresources = Нескінченні ресурси rules.onlydepositcore = Дозволити лише основне розміщення ядер -rules.derelictrepair = Allow Derelict Block Repair +rules.derelictrepair = Дозволити відновлення блоків Переможених rules.reactorexplosions = Вибухи реактора rules.coreincinerates = Ядро спалює надлишкові предмети rules.disableworldprocessors = Вимкнути світові процесори rules.schematic = Використання схем дозволено rules.wavetimer = Таймер для хвиль rules.wavesending = Ручне надсилання хвиль +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = Хвилі +rules.airUseSpawns = Air units use spawn points rules.attack = Режим атаки -rules.buildai = Base Builder AI -rules.buildaitier = Builder AI Tier +rules.buildai = Базовий ШІ-будівельник +rules.buildaitier = Рівень ШІ-будівельника rules.rtsai = ШІ зі стратегій реального часу rules.rtsminsquadsize = Мінімальний розмір загону rules.rtsmaxsquadsize = Максимальний розмір загону @@ -1305,6 +1352,7 @@ rules.unitdamagemultiplier = Множник шкоди бойових одини rules.unitcrashdamagemultiplier = Множник шкоди одиниці при зіткненні одиниць rules.solarmultiplier = Множник сонячної енергії rules.unitcapvariable = Ядра збільшують обмеження на кількість одиниць +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = Початкове обмеження одиниць rules.limitarea = Обмежити територію мапи rules.enemycorebuildradius = Радіус оборони для ворожого ядра:[lightgray] (плитки) @@ -1314,7 +1362,7 @@ rules.buildcostmultiplier = Множник затрат на будування rules.buildspeedmultiplier = Множник швидкості будування rules.deconstructrefundmultiplier = Множник відшкодування в разі демонтажу rules.waitForWaveToEnd = Хвилі чекають на завершення попередньої -rules.wavelimit = Map Ends After Wave +rules.wavelimit = Мапа закінчується після хвилі rules.dropzoneradius = Радіус зони висадки:[lightgray] (плитки) rules.unitammo = Бойові одиниці потребують боєприпасів rules.enemyteam = Ворожа команда @@ -1337,6 +1385,8 @@ rules.weather = Погода rules.weather.frequency = Повторюваність: rules.weather.always = Завжди rules.weather.duration = Тривалість: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = Предмети content.liquid.name = Рідини @@ -1417,7 +1467,7 @@ unit.navanax.name = Наванакс unit.alpha.name = Альфа unit.beta.name = Бета unit.gamma.name = Гамма -unit.scepter.name = Верховна влада +unit.scepter.name = Скіпетр unit.reign.name = Верховний Порядок unit.vela.name = Пульсар Вітрил unit.corvus.name = Ґава @@ -1738,7 +1788,7 @@ block.electric-heater.name = Електричний нагрівач block.slag-heater.name = Шлаковий нагрівач block.phase-heater.name = Фазовий нагрівач block.heat-redirector.name = Перенаправляч тепла -block.heat-router.name = Heat Router +block.heat-router.name = Тепловий маршрутизатор block.slag-incinerator.name = Шлаковий сміттєспалювальний завод block.carbide-crucible.name = Карбідний тигель block.slag-centrifuge.name = Шлакова центрифуга @@ -1853,18 +1903,18 @@ hint.desktopPause = Натисніть [accent][[Пробіл][], щоби зу hint.breaking = Натисніть [accent]ПКМ[] і тягніть, щоби зруйнувати блоки. hint.breaking.mobile = Активуйте \ue817 [accent]молот[] внизу праворуч і зробіть швидке натискання блоків, щоби їх розібрати.\n\nУтримуйте палець протягом секунди й протягніть, щоби розібрати виділене. hint.blockInfo = Подивіться інформацію про блок. Перейдіть до [accent]меню будівництва[] і натисніть на кнопку [accent][[?][] праворуч. -hint.derelict = Будівлі [accent]Переможених[] є зламаними залишками старих баз, що більше не функціонують.\n\nЇх можна [accent]деконструювати[] для отримання ресурсів. +hint.derelict = Будівлі [accent]Переможених[] є зламаними залишками старих баз, що більше не функціонують.\n\nЇх можна [accent]розібрати[] для отримання ресурсів або відбудувати. hint.research = Використовуйте кнопку \ue875 [accent]Дослідження[] для дослідження нової технології. hint.research.mobile = Використовуйте \ue875 [accent]Дослідження[] в \ue88c [accent]меню[] для дослідження нової технології. hint.unitControl = Утримуйте [accent][[лівий Ctrl][] і [accent]натисніть[] на одиницю чи башту, щоби контролювати її. hint.unitControl.mobile = [accent][Зробіть коротке натискання двічі[], щоби контролювати союзні одиниці чи башти. hint.unitSelectControl = Для керування одиницями увійдіть в [accent]режим командування[], утримуючи [accent]лівий Shift[].\nПеребуваючи в командному режимі, натисніть і протягуйте для вибору одиниць. Натисніть [accent]ПКМ[] на позицію або ціль, щоби віддати наказ одиницям, які там знаходяться. hint.unitSelectControl.mobile = Для керування одиницями увійдіть в [accent]режим командування[], натиснувши кнопку [accent]командувати[] ліворуч знизу.\nПеребуваючи в командному режимі, зробіть довгий натиск і протягуйте для вибору одиниць. Торкніться позиції або цілі, щоби віддати наказ одиницям, які там знаходяться. -hint.launch = Як тільки буде зібрано достатньо ресурсів, ви зможете зробити [accent]Запуск[] за допомогою вибору найближчих секторів \ue827 [accent]мапи[] внизу праворуч. +hint.launch = Як тільки буде зібрано достатньо ресурсів, ви зможете зробити [accent]Запуск[] до наступних секторів \ue827 [accent]мапи[] внизу праворуч і перейти на нову локацію.. hint.launch.mobile = Як тільки буде зібрано достатньо ресурсів, ви зможете зробити [accent]Запуск[] за допомогою вибору найближчих секторів з \ue827 [accent]мапи[] у \ue88c [accent]меню[]. hint.schematicSelect = Утримуйте [accent][[F][] і тягніть, щоби вибрати блоки для їхнього подальшого копіювання і вставлення.\n\nНатисніть [accent][[СКМ][], щоби скопіювати певний тип блоку. -hint.rebuildSelect = Утримуючи [accent][[B][], протягніть, щоби вибрати зруйновані проєкти блоків.\nЦе призведе до їхнього автоматичного відновлення. -hint.rebuildSelect.mobile = Select the \ue874 copy button, then tap the \ue80f rebuild button and drag to select destroyed block plans.\nThis will rebuild them automatically. +hint.rebuildSelect = Утримуючи [accent][[B][], протягніть, щоби вибрати зруйновані проєкти блоків.\nЦе призведе до їхньої автоматичної перебудови. +hint.rebuildSelect.mobile = Натисніть кнопку \ue874 копіювання, потім натисніть кнопку \ue80f перебудови і перетягніть, щоби вибрати знищені проєкти блоків.\nЦе призведе до їхньої автоматичної перебудови. hint.conveyorPathfind = Утримуйте [accent][[лівий Ctrl][], коли тягнете конвеєри, щоб автоматично прокласти шлях. hint.conveyorPathfind.mobile = Увімкніть \ue844 [accent]діагональний режим[] і тягніть конвеєри, щоб автоматично прокласти шлях. @@ -1898,7 +1948,7 @@ gz.walls = [accent]Стіни[] можуть запобігти потрапля gz.defend = Ворог наступає, приготуйтеся до оборони. gz.aa = Повітряні одиниці не можуть бути легко знищені зі стандартними баштами.\n\uf860 Башта [accent]розсіювач[] забезпечує відмінну протиповітряну оборону, але потребує \uf837 [accent]свинець[] як боєприпас. gz.scatterammo = Забезпечте башту розсіювач \uf837 [accent]свинцем[], використовуючи конвеєр. -gz.supplyturret = [accent]Башта постачання +gz.supplyturret = [accent]Постачання до башти gz.zone1 = Це зона висадки ворога. gz.zone2 = Усе, що побудовано в цьому радіусі, знищується, коли починається хвиля. gz.zone3 = Зараз почнеться хвиля.\nПриготуйется @@ -1907,7 +1957,7 @@ gz.finish = Збудуйте більше башт, видобудьте біл onset.mine = Натисніть, щоби видобути \uf748 [accent]берилій[]зі стін.\n\nДля переміщення використовуйте [accent][[WASD]. onset.mine.mobile = Торкніться, щоби видобути \uf748 [accent]берилій[]зі стін. onset.research = Відкрийте \ue875 дерево технологій.\nДослідіть, а потім розмістіть \uf73e [accent]Турбінний кондесатор[] на джерелі (отворі).\nЦе буде генерувати [accent]енергію[]. -onset.bore = Дослідіть і розмістіт \uf741 [accent]плазмовий бурильник[].\nВін автоматично видобуває ресурси зі стін. +onset.bore = Дослідіть і розмістіть \uf741 [accent]плазмовий бурильник[].\nВін автоматично видобуває ресурси зі стін. onset.power = Для підключення [accent]енергії[] до плазмового бурильника, дослідіть і розмістіть \uf73d [accent]променевий вузол[].\nПід’єднайте турбінний коденсатор до плазмового бурильника. onset.ducts = Дослідіть і розмістіть \uf799 [accent]канали[], щоби переміщувати видобуті ресурси від плазмового бурильника до ядра.\nНатисніть і простягніть, щоби розмістити декілька каналів.\n[accent]Прокрутіть[], щоб обернути. onset.ducts.mobile = Дослідіть і розмістіть \uf799 [accent]канали[], щоби переміщувати видобуті ресурси від плазмового бурильника до ядра.\n\nУтримуйте свій палець близько секунди і простягніть, щоби розмістити декілька каналів. @@ -1922,15 +1972,15 @@ onset.turrets = Одиниці ефективні, але [accent]башти[] onset.turretammo = Забезпечте башту [accent]берилієвими боєприпасами[]. onset.walls = [accent]Стіни[] cможе запобігти потраплянню зустрічної шкоди на будівлі.\nРозмістіть декілька \uf6ee [accent]берилієвих стін[] навколо башти. onset.enemies = Ворог наступає, готуйтеся до оборони. -onset.defenses = [accent]Set up defenses:[lightgray] {0} +onset.defenses = [accent]Підготуйте захист:[lightgray] {0} onset.attack = Ворог беззахисний. Контратакуйте. onset.cores = Нові ядра можуть бути розміщені на плитках [accent]зони ядра[].\nНові ядра функціонують як передові бази й мають спільний інвентар ресурсів з іншими ядрами.\nРозмістіть \uf725 ядро. onset.detect = Ворог зможе виявити вас за 2 хвилини.\nОрганізуйте оборону, видобуток корисних копалин та виробництво. #Don't translate these yet! onset.commandmode = Утримуйте [accent]Shift[], щоб увійти в [accent]режим командування[].\n[accent]Зажміть ЛКМ і потягніть,[] щоб обрати одиниці.\n[accent]Використовуйте ПКМ[], щоби наказати обраним одиницям рухатися чи атакувати. -onset.commandmode.mobile = Натисніть кнопку [accent]Командувати[], щоб увійти [accent]в режим командування[].\nУтримуйте палець і [accent]потягніть[], щоб обрати одиниці.\n[accent] Зробіть коротке натискання[], щоби наказати обраним одиницям рухатися чи атакувати. -aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. +onset.commandmode.mobile = Натисніть кнопку [accent]Командувати[], щоб увійти [accent]в режим командування[].\nУтримуйте палець і [accent]потягніть[], щоби вибрати одиниці.\n[accent] Зробіть коротке натискання[], щоби наказати обраним одиницям рухатися чи атакувати. +aegis.tungsten = Вольфрам можна видобувати за допомогою [accent]імпульсного буру[].\nЦя будівля потребує [accent]води[] та [accent]енергію[]. split.pickup = Деякі блоки можуть бути підібрані основною ядровою одиницею.\nПідніміть цей [accent]контейнер[] і помістіть його до [accent]вантажного завантажувача[].\n(Клавіші за замовчуванням - [[ і ] для підняття та скидання) split.pickup.mobile = Деякі блоки можуть бути підібрані основною ядровою одиницею.\nПідніміть цей [accent]контейнер[] і помістіть його до [accent]вантажного завантажувача[].\n(Щоб підняти або скинути щось, довго натискайте на це щось.) @@ -2254,7 +2304,7 @@ unit.risso.description = Англійська назва: Risso\nВистріл unit.minke.description = Англійська назва: Minke\nВистрілює запальними снарядами та стандартними кулями по найближчих наземних цілях. unit.bryde.description = Англійська назва: Bryde\nВистрілює у ворогів артилерійськими снарядами та ракетами великої дальності. unit.sei.description = Англійська назва: Sei\nВистрілює у ворогів шквалом ракет і бронебійних куль. -unit.omura.description = Англійська назва: Omura\nВистрілює у ворогів далекобійним болтом, що пробиває броню. Виробляє повітряних Фальшфеєрів. +unit.omura.description = Англійська назва: Omura\nВистрілює у ворогів далекобійним болтом, що пробиває броню. Виробляє повітряних спалахів. unit.alpha.description = Англійська назва: Alpha\nЗахищає ядро «Уламок» від противників. Будує споруди. unit.beta.description = Англійська назва: Beta\nЗахищає ядро «Штаб» від противників. Будує споруди. unit.gamma.description = Англійська назва: Gamma\nЗахищає ядро «Атом» від противників. Будує споруди. @@ -2278,8 +2328,8 @@ unit.collaris.description = Англійська назва: Collaris\nВеде unit.elude.description = Англійська назва: Elude\nСтріляє парами самонавідних куль по ворожих цілях. Може парити над об’єктами з рідиною. unit.avert.description = Англійська назва: Avert\nВеде вогонь по ворожих цілях закрученими парами куль. unit.obviate.description = Англійська назва: Obviate\nСтріляє по ворожих цілях закрученими парами блискавичних куль. -unit.quell.description = Англійська назва: Quell\nВеде вогонь далекобійними самонавідними ракетами по об’єктах противника. Блокує ремонтні пункти супротивника. -unit.disrupt.description = Англійська назва: Disrupt\nВеде вогонь ракетами дальнього радіуса дії з самонаведенням по об’єктах противника. Блокує ремонтні пункти супротивника. +unit.quell.description = Англійська назва: Quell\nВеде вогонь далекобійними самонавідними ракетами по об’єктах противника. Блокує ремонтні пункти супротивника. Атакує тільки наземні цілі. +unit.disrupt.description = Англійська назва: Disrupt\nВеде вогонь ракетами дальнього радіуса дії з самонаведенням по об’єктах противника. Блокує ремонтні пункти супротивника. Атакує тільки наземні цілі. unit.evoke.description = Англійська назва: Evoke\nБудує споруди для захисту ядра «Бастіон». Ремонтує споруди за допомогою променя. unit.incite.description = Англійська назва: Incite\nБудує споруди для захисту ядра «Цитадель». Ремонтує споруди за допомогою променя. unit.emanate.description = Англійська назва: Emanate\nБудує споруди для захисту ядра «Акрополь». Ремонтує споруди за допомогою променя. @@ -2287,7 +2337,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.format = Замінити наступний замінник у текстовому буфері значенням.\nНе робить нічого, якщо шаблон заповнювача є недійсним.\nШаблон заповнювача: "{[accent]number 0-9[]}"\nПриклад:\n[accent]print "test {0}"\nformat "example" lst.draw = Додає операцію до буфера рисунка.\nНічого не відображає, поки [accent]Draw Flush[] використовується. lst.drawflush = Скидає буфер операцій [accent]Draw[] на дисплей. lst.printflush = Скидає буфер операцій [accent]Print[] у блок «Повідомлення». @@ -2300,7 +2350,7 @@ lst.operation = Виконує операцію над 1-2 змінними. lst.end = Перейти до верхньої частини стеку операцій. lst.wait = Чекати певну кількість секунд. lst.stop = Зупиняє виконання процесора. -lst.lookup = Знайти тип предмета, рідини, одиниці чи блоку за ідентифікатором.\nМожна отримати доступ до загальної кількості кожного типу через \n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] +lst.lookup = Знайти тип предмета, рідини, одиниці чи блоку за ідентифікатором.\nМожна отримати доступ до загальної кількості кожного типу через \n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[]\nДля зворотної операції використовуйте [accent]@id[] об'єкта. lst.jump = Умовне переходження до іншої операції. lst.unitbind = Прив’язка до одиниці певного типу та його зберігання в [accent]@unit[]. lst.unitcontrol = Контролювати поточну прив’язану одиницю. @@ -2310,7 +2360,7 @@ lst.getblock = Отримує дані плитки в будь-якому мі lst.setblock = Установлює дані плитки в будь-якому місці. lst.spawnunit = Породжує одиницю на певному місці. lst.applystatus = Застосовує або видаляє ефект стану з одиниці. -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = Змодельовує хвилю, що виникає у довільному місці.\nНе збільшує лічильник хвиль. lst.explosion = Створює вибух у певному місці. @@ -2323,55 +2373,56 @@ lst.cutscene = Керує камерою гравця. lst.setflag = Установлює глобальний прапорець, який можуть прочитати усі процесори. lst.getflag = Перевіряє, чи встановлено глобальний прапорець. lst.setprop = Установлює властивість одиниці чи будівлі. -lst.effect = Create a particle effect. -lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. -lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. -lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. -lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lst.effect = Створює ефект частинок. +lst.sync = Синхронізувати змінну по мережі.\nВикликається щонайбільше 10 разів за секунду. +lst.makemarker = Створює новий логічний маркер у світі.\nПотрібно надати ідентифікатор для ідентифікації цього маркера.\nНаразі кількість маркерів на світ обмежена 20 тисячами. +lst.setmarker = Установлює властивість для маркера.\nВикористаний ідентифікатор має збігатися з інструкцією «Створити маркер». +lst.localeprint = Додає значення властивості мовного пакету мапи до текстового буфера.\nЩоби встановити мовного пакету мапи в редакторі мапи, перейдіть до [accent]Інформація про мапу > Мовні пакети [].\nЯкщо клієнтом є мобільний пристрій, то спочатку намагається надрукувати властивість, що закінчується на ".mobile". lglobal.false = 0 lglobal.true = 1 lglobal.null = null -lglobal.@pi = 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 +lglobal.@pi = Математична константа пі (3.141...) +lglobal.@e = Математична константа e (2.718...) +lglobal.@degToRad = Помножте на це число, щоб перевести градуси в радіани +lglobal.@radToDeg = Помножте на це число, щоб перевести радіани в градуси +lglobal.@time = Час гри поточного збереження, у мілісекундах +lglobal.@tick = Час гри поточного збереження, in ticks (1 секунда = 60 ticks) +lglobal.@second = Час гри поточного збереження, в секундах +lglobal.@minute = Час гри поточного збереження, у хвилинах +lglobal.@waveNumber = Поточний номер хвилі, якщо хвилі ввімкнено +lglobal.@waveTime = Таймер зворотного відліку для хвиль, в секундах +lglobal.@mapw = Ширина мапи в плитках +lglobal.@maph = Висота мапи в плитках +lglobal.sectionMap = Мапа +lglobal.sectionGeneral = Загальне +lglobal.sectionNetwork = Мережа/Клієнтська частина [Тільки світовий процесор] +lglobal.sectionProcessor = Процесор +lglobal.sectionLookup = Пошук +lglobal.@this = Логічний блок, що виконує код +lglobal.@thisx = X координата блоку, що виконує код +lglobal.@thisy = Y координата блоку, що виконує код +lglobal.@links = Загальна кількість блоків, пов'язаних з цим процесором +lglobal.@ipt = Швидкість виконання процесора в інструкціях за тик (60 ticks = 1 секунда) +lglobal.@unitCount = Загальна кількість типів вмісту одиниць у грі; використовується з інструкцією lookup +lglobal.@blockCount = Загальна кількість типів вмісту блоків у грі; використовується з інструкцією lookup +lglobal.@itemCount = Загальна кількість типів вмісту предметів у грі; використовується з інструкцією lookup +lglobal.@liquidCount = Загальна кількість типів вмісту рідин у грі; використовується з інструкцією lookup +lglobal.@server = Істина, якщо код виконується на сервері або в одноосібній грі, інакше хиба +lglobal.@client = Істина, якщо код виконується на клієнті, підключеному до сервера +lglobal.@clientLocale = Локалізація клієнта, на якому виконується код. Наприклад: en_US чи uk_UA +lglobal.@clientUnit = Одиниця клієнта, що виконує код +lglobal.@clientName = Ім'я гравця клієнта, на якому запущено код +lglobal.@clientTeam = Ідентифікатор команди клієнта, що запускає код +lglobal.@clientMobile = Істина, якщо клієнт, на якому виконується код, є мобільним, інакше хиба -logic.nounitbuild = [red]Будування за допомогою процесорів заборено. +logic.nounitbuild = [red]Будування за допомогою процесорів заборонено. lenum.type = Тип будівлі чи одиниці.\nНаприклад, для будь-якого маршрутизатора (англ. router), функція вертатиме [accent]@router[].\nНе є рядком. lenum.shoot = Стріляти в зазначену позицію. lenum.shootp = Стріляти в одиницю чи будівлю із передбаченням швидкості. lenum.config = Конфігурація будівлі, як-от в сортувальника. lenum.enabled = Чи блок увімкнено. +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = Колір освітлювача. laccess.controller = Керувач одиницями. Якщо процесор керує одиницею, повертає процесор.\nЯкщо у формуванні, повертається лідер.\nІнакше повертає саму одиницю. @@ -2379,7 +2430,7 @@ laccess.dead = Чи є одиниця або будівля мертвою аб laccess.controlled = Повертає \n[accent]@ctrlProcessor[] якщо одиниця контролюється процесором;\n[accent]@ctrlPlayer[] якщо одиниця чи будівля контролюєть гравцем\n[accent]@ctrlFormation[] якщо одиниця у загоні (формуванні)\nІнакше — 0. laccess.progress = Прогрес дії, від 0 до 1.\nПовертає виробництво, перезавантаження башти або хід будівництва. laccess.speed = Максимальна швидкість одиниці, у плитках за секунду. -laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. +laccess.id = Ідентифікатор одиниці/блоку/предмету/рідини.\nЦе зворотна операція до операції пошуку. lcategory.unknown = Невідома категорія lcategory.unknown.description = Команди без категорії. @@ -2407,7 +2458,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. +graphicstype.print = Малює текст з буфера друку.\nОчищає буфер друку. lenum.always = Завжди істинне. lenum.idiv = Ціле ділення. @@ -2427,7 +2478,7 @@ lenum.xor = Виключне АБО (XOR). lenum.min = Мінімум з двох чисел. lenum.max = Максимум з двох чисел. lenum.angle = Кут вектора у градусах. -lenum.anglediff = Absolute distance between two angles in degrees. +lenum.anglediff = Абсолютна відстань між двома кутами в градусах. lenum.len = Довжина вектора. lenum.sin = Синус, у градусах. @@ -2501,8 +2552,8 @@ lenum.stop = Зупинити або рух, або видобуток, або lenum.unbind = Повністю вимикає усю логіку.\nПродовжує стандартний ШІ. lenum.move = Перемістити в точне положення. lenum.approach = Наближення до позиції із зазначеним радіусом. -lenum.pathfind = Знайдення шляху до точки появи ворогів. -lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. +lenum.pathfind = Знайдення шляху до певної позиції. +lenum.autopathfind = Автоматично прокладає шлях до найближчого ядра або точки скидання ворога.\nЦе те саме, що і стандартне прокладання шляху у ворогів з хвиль. lenum.target = Стрільба в задану позицію. lenum.targetp = Стріляти в ціль із передбаченням швидкості. lenum.itemdrop = Викинути предмет. @@ -2513,7 +2564,7 @@ lenum.payenter = Увійти чи вийти з вантажного блока lenum.flag = Числовий прапорець одиниці. lenum.mine = Видобувати у заданій позиції. lenum.build = Побудувати будівлю. -lenum.getblock = Розпізнавання блока та його типа за координатами.\nОдиниця повинна знаходитися в межах досяжності.\nСуцільні не-будівлі матимуть тип [accent]@solid[]. +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = Чи знаходиться одиниця біля позиції. lenum.boost = Почати чи зупинити політ. 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. diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index a8c7a612ae..c9622ac982 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -1,19 +1,19 @@ credits.text = Được tạo ra bởi [royal]Anuken[] - [sky]anukendev@gmail.com[] credits = Danh đề contributors = Người dịch và đóng góp -discord = Tham gia Mindustry Discord! -link.discord.description = Mindustry Discord chính thức -link.reddit.description = Mindustry subreddit +discord = Tham gia Discord của Mindustry! +link.discord.description = Discord chính thức của Mindustry +link.reddit.description = Subreddit của Mindustry link.github.description = Mã nguồn trò chơi -link.changelog.description = Danh sách các thay đổi. +link.changelog.description = Danh sách các thay đổi link.dev-builds.description = Các bản dựng phát triển không ổn định link.trello.description = Bảng Trello chính thức cho các tính năng được lên kế hoạch -link.itch.io.description = itch.io page với bản tải xuống cho PC +link.itch.io.description = Trang itch.io với bản tải xuống cho PC link.google-play.description = Xem trên Google Play store link.f-droid.description = Xem trên F-Droid -link.wiki.description = Mindustry wiki chính thức +link.wiki.description = Wiki chính thức của Mindustry link.suggestions.description = Đề xuất các tính năng mới -link.bug.description = Tìm thấy lỗi? Báo cáo nó ở đây +link.bug.description = Tìm thấy lỗi? Báo cáo ở đây linkopen = Máy chủ này đã gửi cho bạn một liên kết. Có chắc muốn mở nó chứ?\n\n[sky]{0} linkfail = Không mở được liên kết!\nURL đã được sao chép vào bộ nhớ tạm. screenshot = Ảnh chụp màn hình được lưu vào {0} @@ -31,23 +31,23 @@ load.map = Bản đồ load.image = Hình ảnh load.content = Nội dung load.system = Hệ thống -load.mod = Mods -load.scripts = Scripts +load.mod = Danh sách mod +load.scripts = Ngữ lệnh -be.update = Đã tìm thấy bản cập nhật mới: +be.update = Đã tìm thấy bản dựng mới của Bleeding Edge: be.update.confirm = Tải xuống và khởi động lại ngay bây giờ? be.updating = Đang cập nhật... -be.ignore = Bỏ qua -be.noupdates = Không tìm thấy bản cập nhật mới. -be.check = Kiểm tra các bản cập nhật. +be.ignore = Phớt lờ +be.noupdates = Không tìm thấy bản cập nhật. +be.check = Kiểm tra các bản cập nhật mods.browser = Duyệt mod -mods.browser.selected = Mod Đã chọn +mods.browser.selected = Mod đã chọn mods.browser.add = Cài đặt mods.browser.reinstall = Cài đặt lại mods.browser.view-releases = Xem các bản phát hành -mods.browser.noreleases = [scarlet]Không Tìm Thấy Bản Phát Hành Nào\n[accent]Không thể tìm thấy bất cứ bản phát hành nào cho mod này. Hãy kiểm tra xem repository của mod đã có bản phát hành nào chưa. -mods.browser.latest = +mods.browser.noreleases = [scarlet]Không Tìm Thấy Bản Phát Hành Nào\n[accent]Không thể tìm thấy bất cứ bản phát hành nào cho mod này. Hãy kiểm tra xem kho lưu trữ (repo) của mod đã có bản phát hành nào chưa. +mods.browser.latest = [lightgray][Mới nhất] mods.browser.releases = Các bản phát hành mods.github.open = Repo mods.github.open-release = Trang phát hành @@ -64,24 +64,24 @@ schematic.import = Nhập Bản thiết kế... schematic.exportfile = Xuất tệp schematic.importfile = Nhập tệp schematic.browseworkshop = Duyệt qua Workshop -schematic.copy = Sao chép vào bộ nhớ tạm -schematic.copy.import = Thêm từ bộ nhớ tạm -schematic.shareworkshop = Chia sẻ từ Workshop +schematic.copy = Sao chép vào Bộ nhớ tạm +schematic.copy.import = Thêm từ Bộ nhớ tạm +schematic.shareworkshop = Chia sẻ lên Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Lật bản thiết kế schematic.saved = Đã lưu bản thiết kế. schematic.delete.confirm = Bản thiết kế này sẽ bị xóa hoàn toàn. schematic.edit = Chỉnh sửa bản thiết kế schematic.info = {0}x{1}, {2} khối -schematic.disabled = [scarlet]Tính năng bản thiết kế đã bị tắt[]\nBạn không được sử dụng bản thiết kế trong [accent]bản đồ[] hoặc [accent]máy chủ. +schematic.disabled = [scarlet]Bản thiết kế đã bị tắt[]\nBạn không được sử dụng bản thiết kế trong [accent]bản đồ[] hoặc [accent]máy chủ. schematic.tags = Thẻ: schematic.edittags = Chỉnh sửa thẻ schematic.addtag = Thêm thẻ schematic.texttag = Thẻ văn bản -schematic.icontag = Thẻ icon +schematic.icontag = Thẻ biểu tượng schematic.renametag = Đổi tên thẻ -schematic.tagged = {0} đã gắn thẻ -schematic.tagdelconfirm = Xóa thẻ này? -schematic.tagexists = Thẻ đã tồn tại. +schematic.tagged = {0} thẻ đã gắn +schematic.tagdelconfirm = Xóa hoàn toàn thẻ này? +schematic.tagexists = Thẻ đó đã tồn tại. stats = Thống kê stats.wave = Đợt đã vượt qua @@ -92,21 +92,21 @@ stats.destroyed = Số công trình bị phá hủy stats.deconstructed = Số công trình đã phá dỡ stats.playtime = Thời gian chơi -globalitems = [accent]Toàn bộ vật phẩm +globalitems = [accent]Vật phẩm của hành tinh map.delete = Bạn có chắc chắn muốn xóa bản đồ "[accent]{0}[]"? -level.highscore = Điểm cao nhất: [accent]{0} +level.highscore = Điểm cao: [accent]{0} level.select = Chọn cấp độ -level.mode = Chế độ: -coreattack = < Căn cứ đang bị tấn công! > -nearpoint = [[ [scarlet]RỜI KHỎI KHU VỰC ĐÁP NGAY LẬP TỨC[] ]\nsự hủy diệt sắp xảy ra -database = Cơ sở dữ liệu +level.mode = Chế độ chơi: +coreattack = < Lõi đang bị tấn công! > +nearpoint = [[ [scarlet]RỜI KHỎI ĐIỂM ĐÁP NGAY LẬP TỨC[] ]\nsự hủy diệt sắp xảy ra +database = Cơ sở dữ liệu cốt lõi database.button = Cơ sở dữ liệu savegame = Lưu trò chơi loadgame = Tải lại màn chơi joingame = Tham gia trò chơi -customgame = Tùy chỉnh +customgame = Trò chơi tùy chỉnh newgame = Trò chơi mới -none = +none = none.found = [lightgray] none.inmap = [lightgray] minimap = Bản đồ nhỏ @@ -116,7 +116,7 @@ website = Trang web quit = Thoát save.quit = Lưu & Thoát maps = Bản đồ -maps.browse = Chọn bản đồ +maps.browse = Duyệt qua bản đồ continue = Tiếp tục maps.none = [lightgray]Không tìm thấy bản đồ! invalid = Không hợp lệ @@ -125,81 +125,84 @@ preparingconfig = Đang chuẩn bị cấu hình preparingcontent = Đang chuẩn bị nội dung uploadingcontent = Đang tải lên nội dung uploadingpreviewfile = Đang tải lên tệp xem trước -committingchanges = Đang cập nhật các thay đổi +committingchanges = Đang ủy thác các thay đổi done = Hoàn tất feature.unsupported = Thiết bị của bạn không hỗ trợ tính năng này. -mods.initfailed = [red]⚠[] Mindustry không khởi chạy được. Điều này có thể do các mod bị lỗi.\n\nĐể tránh gặp sự cố liên tiếp, [red]tất cả các mod đã bị tắt.[]\n\nĐể tắt tính năng này, vào [accent]Cài đặt->Trò chơi->Tắt các mod khi gặp sự cố trong khởi động[]. -mods = Mods +mods.initfailed = [red]⚠[] Mindustry không khởi chạy được. Điều này có thể do các mod bị lỗi.\n\nĐể tránh gặp sự cố lặp lại, [red]tất cả các mod đã bị tắt.[] +mods = Danh sách mod mods.none = [lightgray]Không tìm thấy mod! mods.guide = Hướng dẫn mod mods.report = Báo lỗi mods.openfolder = Mở thư mục mods.viewcontent = Xem nội dung mods.reload = Tải lại -mods.reloadexit = Trò chơi sẽ đóng để mod được tải. +mods.reloadexit = Trò chơi sẽ đóng để mod được tải lại. mod.installed = [[Đã cài đặt] mod.display = [gray]Mod:[orange] {0} -mod.enabled = [lightgray]Đã Bật -mod.disabled = [scarlet]Đã Tắt +mod.enabled = [lightgray]Đã bật +mod.disabled = [red]Đã tắt mod.multiplayer.compatible = [gray]Tương thích với chế độ nhiều người chơi mod.disable = Tắt mod.content = Nội dung: mod.delete.error = Không thể xóa mod. Tệp có thể đang được sử dụng. -mod.incompatiblegame = [red]Phiên bản trò chơi lỗi thời + +mod.incompatiblegame = [red]Trò chơi lỗi thời mod.incompatiblemod = [red]Không tương thích -mod.blacklisted = [red]Không hổ trợ -mod.unmetdependencies = [red]Thiếu mod phụ thuộc +mod.blacklisted = [red]Không được hỗ trợ +mod.unmetdependencies = [red]Phụ thuộc chưa đáp ứng mod.erroredcontent = [scarlet]Lỗi nội dung mod.circulardependencies = [red]Phụ thuộc tròn -mod.incompletedependencies = [red]Thiếu mod phụ thuộc +mod.incompletedependencies = [red]Phụ thuộc chưa hoàn thiện + mod.requiresversion.details = Yêu cầu phiên bản trò chơi: [accent]{0}[]\nPhiên bản của bạn đã lỗi thời. Mod này yêu cầu phiên bản mới hơn của trò chơi (có thể là các bản phát hành beta/alpha) để hoạt động. mod.outdatedv7.details = Mod này không tương thích với phiên bản mới nhất của trò chơi. Tác giả cần phải cập nhật nó, và thêm [accent]minGameVersion: 136[] vào tệp [accent]mod.json[]. mod.blacklisted.details = Mod này đã bị đưa vào danh sách đen do gây ra các sự cố đối với phiên bản trò chơi này. Đừng sử dụng nó. mod.missingdependencies.details = Mod này thiếu các phụ thuộc: {0} -mod.erroredcontent.details = Đã xãy ra lỗi khi tải trò chơi. Vui lòng yêu cầu tác giả của mod sửa chúng. -mod.circulardependencies.details = Mod này có chứa các phụ thuộc mà chính nó cũng phụ thuộc vào các mod khác. -mod.incompletedependencies.details = Mod này không thể tải được do bị lỗi từ bên trong hoặc thiếu các phụ thuộc: {0}. +mod.erroredcontent.details = Mod này gây lỗi khi tải. Vui lòng yêu cầu tác giả của mod sửa chúng. +mod.circulardependencies.details = Mod này có chứa các phụ thuộc mà chúng phụ thuộc lẫn nhau. +mod.incompletedependencies.details = Mod này không thể tải được do không hợp lệ hoặc thiếu các phụ thuộc: {0}. + +mod.requiresversion = Yêu cầu phiên bản trò chơi: [red]{0} -mod.requiresversion = Yêu cầu phiên bản game: [red]{0} mod.errors = Đã xảy ra lỗi khi tải nội dung. -mod.noerrorplay = [scarlet]Bạn có mod bị lỗi.[]Tắt các mod bị lỗi hoặc sửa các lỗi trước khi chơi. -mod.nowdisabled = [scarlet]Mod '{0}' cần mod này để chạy:[accent] {1}\n[lightgray]Trước tiên bạn cần tải các mod này xuống.\nBản mod này sẽ tự động tắt. +mod.noerrorplay = [red]Bạn có mod bị lỗi.[] Tắt các mod bị ảnh hưởng hoặc sửa các lỗi trước khi chơi. +mod.nowdisabled = [red]Mod '{0}' thiếu phụ thuộc:[accent] {1}\n[lightgray]Bạn cần tải các mod này xuống trước.\nBản mod này sẽ tự động tắt. mod.enable = Bật mod.requiresrestart = Trò chơi sẽ đóng để áp dụng các thay đổi của mod. mod.reloadrequired = [scarlet]Yêu cầu khởi động lại -mod.import = Thêm Mod -mod.import.file = Thêm từ tệp -mod.import.github = Thêm từ GitHub -mod.jarwarn = [scarlet]Các JAR mod vốn dĩ không an toàn.[]\nĐảm bảo rằng bạn đang thêm mod này từ một nguồn đáng tin cậy! -mod.item.remove = Mục này là một phần của[accent] '{0}'[] mod. Để xóa nó, hãy gỡ cài đặt mod này. +mod.import = Nhập Mod +mod.import.file = Nhập từ tệp +mod.import.github = Nhập từ GitHub +mod.jarwarn = [scarlet]Các mod JAR vốn dĩ không an toàn.[]\nĐảm bảo rằng bạn đang thêm mod này từ một nguồn đáng tin cậy! +mod.item.remove = Mục này là một phần của mod[accent] '{0}'[]. Để xóa nó, hãy gỡ cài đặt mod đó. mod.remove.confirm = Mod này sẽ bị xóa. mod.author = [lightgray]Tác giả:[] {0} -mod.missing = Bản lưu này chứa các mod mà bạn đã cập nhật gần đây hoặc không được cài đặt. Có thể gây ra lỗi khi mở. Bạn có chắc muốn mở nó?\n[lightgray]Mods:\n{0} +mod.missing = Bản lưu này chứa các mod mà bạn đã cập nhật gần đây hoặc không được cài đặt. Có thể gây ra lỗi khi mở. Bạn có chắc muốn mở nó?\n[lightgray]Các mod:\n{0} mod.preview.missing = Trước khi đăng bản mod này lên workshop, bạn phải thêm hình ảnh xem trước.\nĐặt một hình ảnh có tên[accent] preview.png[] vào thư mục của mod và thử lại. mod.folder.missing = Chỉ có thể đăng các mod ở dạng thư mục lên workshop.\nĐể chuyển đổi bất kỳ mod nào thành một thư mục, chỉ cần giải nén tệp của nó vào một thư mục và xóa tệp nén cũ, sau đó khởi động lại trò chơi của bạn hoặc tải lại các bản mod của bạn. -mod.scripts.disable = Thiết bị của bạn không hổ trợ mod chứa scripts này. Bạn phải tắt các mod này để chơi trò chơi. +mod.scripts.disable = Thiết bị của bạn không hỗ trợ mod chứa các ngữ lệnh. Bạn phải tắt các mod này để chơi trò chơi. -about.button = Thông tin +about.button = Giới thiệu name = Tên: -noname = Hãy nhập[accent] tên[] trước. +noname = Hãy nhập một[accent] tên người chơi[] trước. search = Tìm kiếm: planetmap = Bản đồ hành tinh -launchcore = Phóng căn cứ +launchcore = Phóng lõi filename = Tên tệp: unlocked = Đã mở khóa nội dung mới! available = Đã có mục nghiên cứu mới! unlock.incampaign = < Mở khóa trong chiến dịch để biết thêm chi tiết > -campaign.select = Chọn nơi bắt đầu chiến dịch +campaign.select = Chọn chiến dịch khởi đầu campaign.none = [lightgray]Chọn một hành tinh để bắt đầu.\nCó thể thay đổi sang hành tinh khác bất cứ lúc nào. -campaign.erekir = Nội dung mới và được trau chuốt. Quá trình chơi liền mạch hơn.\n\nBản đồ chất lượng hơn và trải nghiệm tổng thể tốt hơn. -campaign.serpulo = Nội dung cũ, trải nghiệm cơ bản. Tiến trình mở hơn.\n\nRất có thể vẫn còn bản đồ hoặc hệ thống bị mất cân bằng. Ít được trau chuốt. +campaign.erekir = Nội dung mới và được trau chuốt. Quá trình chiến dịch liền mạch hơn.\n\nKhó hơn. Bản đồ chất lượng hơn và trải nghiệm tổng thể tốt hơn. +campaign.serpulo = Nội dung cũ; trải nghiệm cơ bản. Tiến trình mở hơn, nhiều nội dung hơn.\n\nRất có thể vẫn còn cơ chế bản đồ và chiến dịch bị mất cân bằng. Ít được trau chuốt. completed = [accent]Hoàn tất -techtree = Tiến trình -techtree.select = Chọn nhánh nghiên cứu +techtree = Cây công nghệ +techtree.select = Chọn nhánh công nghệ techtree.serpulo = Serpulo techtree.erekir = Erekir -research.load = Tải +research.load = Nạp research.discard = Bỏ qua research.list = [lightgray]Nghiên cứu: research = Nghiên cứu @@ -210,53 +213,53 @@ players.single = {0} người chơi players.search = tìm kiếm players.notfound = [gray]không tìm thấy người chơi server.closing = [accent]Đang đóng máy chủ... -server.kicked.kick = Bạn đã bị kick khỏi máy chủ! +server.kicked.kick = Bạn đã bị buộc rời khỏi máy chủ! server.kicked.whitelist = Bạn không nằm trong danh sách được vào máy chủ này. server.kicked.serverClose = Máy chủ đã đóng. -server.kicked.vote = Bạn đã bị bỏ phiếu buộc rời phòng. Tạm biệt. -server.kicked.clientOutdated = Phiên bản máy chủ này mới hơn phiên bản trò chơi! Hãy cập nhật trò chơi của bạn! -server.kicked.serverOutdated = Phiên bản máy chủ đã cũ! Hãy yêu cầu máy chủ đó cập nhật! +server.kicked.vote = Bạn đã bị bỏ phiếu buộc rời. Tạm biệt. +server.kicked.clientOutdated = Phiên bản máy khách lỗi thời! Hãy cập nhật trò chơi của bạn! +server.kicked.serverOutdated = Phiên bản máy chủ lỗi thời! Hãy yêu cầu máy chủ đó cập nhật! server.kicked.banned = Bạn đã bị cấm trên máy chủ này. -server.kicked.typeMismatch = Máy chủ này không tương thích với phiên bản của bạn. +server.kicked.typeMismatch = Máy chủ này không tương thích với kiểu bản dựng của bạn. server.kicked.playerLimit = Máy chủ đã đầy. Hãy chờ một chỗ trống. server.kicked.recentKick = Bạn đã bị buộc rời gần đây.\nHãy chờ một lúc sau đó kết nối lại. server.kicked.nameInUse = Có ai đó với cái tên này\nđã ở trong máy chủ. server.kicked.nameEmpty = Tên bạn đã chọn không hợp lệ. server.kicked.idInUse = Bạn đã ở trên máy chủ này! Bạn không được phép kết nối với hai tài khoản. -server.kicked.customClient = Máy chủ này không hổ trợ phiên bản tùy chỉnh. Hãy tải phiên bản chính thức. +server.kicked.customClient = Máy chủ này không hỗ trợ bản dựng tùy chỉnh. Hãy tải phiên bản chính thức. server.kicked.gameover = Trò chơi kết thúc! server.kicked.serverRestarting = Máy chủ đang khởi động lại. server.versions = Phiên bản của bạn:[accent] {0}[]\nPhiên bản máy chủ:[accent] {1}[] -host.info = Nút [accent]Mở máy chủ[] mở máy chủ trên cổng [scarlet]6567[]. \nBất kỳ ai trên cùng [lightgray]wifi hoặc mạng cục bộ[] sẽ có thể thấy máy chủ của bạn trong danh sách máy chủ của họ.\n\nNếu bạn muốn mọi người có thể kết nối từ mọi nơi bằng IP, [accent]port forwarding[] là bắt buộc.\n\n[lightgray]Lưu ý: Nếu ai đó đang gặp sự cố khi kết nối với máy chủ trong mạng LAN của bạn, đảm bảo rằng bạn đã cho phép Mindustry truy cập vào mạng cục bộ của mình trong cài đặt tường lửa. Lưu ý rằng các mạng công cộng đôi khi không cho phép khám phá máy chủ. -join.info = Tại đây, bạn có thể nhập [accent]IP máy chủ[] kết nối , hoặc khám phá [accent]mạng cục bộ[] hay kết nối đến máy chủ [accent]toàn cầu[].\nCả mạng LAN và WAN đều được hỗ trợ.\n\n[lightgray]Nếu bạn muốn kết nối với ai đó bằng IP, bạn sẽ cần phải hỏi IP của họ, có thể được tìm thấy bằng cách kiểm tra IP thiết bị của họ. -hostserver = Mở máy chủ. +host.info = Nút [accent]Mở máy chủ[] mở máy chủ trên cổng [scarlet]6567[]. \nBất kỳ ai trên cùng [lightgray]wifi hoặc mạng cục bộ[] sẽ có thể thấy máy chủ của bạn trong danh sách máy chủ của họ.\n\nNếu bạn muốn mọi người có thể kết nối từ mọi nơi bằng IP, [accent]điều hướng cổng (port forwarding)[] là bắt buộc.\n\n[lightgray]Lưu ý: Nếu ai đó đang gặp sự cố khi kết nối với máy chủ trong mạng LAN của bạn, đảm bảo rằng bạn đã cho phép Mindustry truy cập vào mạng cục bộ của mình trong cài đặt tường lửa. Lưu ý rằng các mạng công cộng đôi khi không cho phép khám phá máy chủ. +join.info = Tại đây, bạn có thể nhập [accent]IP máy chủ[] kết nối, hoặc khám phá [accent]mạng cục bộ[] hay kết nối đến máy chủ [accent]toàn cầu[].\nCả mạng LAN và WAN đều được hỗ trợ.\n\n[lightgray]Nếu bạn muốn kết nối với ai đó bằng IP, bạn sẽ cần phải hỏi IP của họ, có thể được tìm thấy bằng cách tra google với từ khóa "my ip" trên thiết bị của họ. +hostserver = Mở máy chủ nhiều người chơi invitefriends = Mời bạn bè -hostserver.mobile = Mở máy chủ +hostserver.mobile = Mở máy chủ trò chơi host = Mở máy chủ hosting = [accent]Đang mở máy chủ... hosts.refresh = Làm mới -hosts.discovering = Đang tìm máy chủ trong mạng LAN -hosts.discovering.any = Đang tìm máy chủ -server.refreshing = Làm mới máy chủ -hosts.none = [lightgray]Không có máy chủ cục bộ nào được tìm thấy! +hosts.discovering = Đang khám phá trò chơi trong mạng LAN +hosts.discovering.any = Đang khám phá trò chơi +server.refreshing = Đang làm mới máy chủ +hosts.none = [lightgray]Không có trò chơi cục bộ nào được tìm thấy! host.invalid = [scarlet]Không thể kết nối đến máy chủ. servers.local = Máy chủ cục bộ -servers.local.steam = Màn chơi hiện có & Máy chủ cục bộ -servers.remote = Máy chủ tùy chỉnh -servers.global = Máy chủ từ cộng đồng +servers.local.steam = Trò chơi hiện có & Máy chủ cục bộ +servers.remote = Máy chủ từ xa +servers.global = Máy chủ cộng đồng + +servers.disclaimer = Các máy chỉ cộng đồng [accent]không[] được sở hữu và kiểm soát bởi nhà phát triển.\n\nMáy chủ có thể chứa nội dung do người dùng tạo và không phù hợp với mọi lứa tuổi. +servers.showhidden = Hiện máy chủ ẩn +server.shown = Đã hiện +server.hidden = Đã ẩn -servers.disclaimer = Nhà phát triển [accent]không[] sở hữu và kiểm soát máy chủ cộng đồng.\n\nMáy chủ có thể chứa nội dung do người dùng tạo và không phù hợp với mọi lứa tuổi. -servers.showhidden = Hiển thị Máy chủ Ẩn -server.shown = Hiện -server.hidden = Ẩn viewplayer = Đang xem người chơi: [accent]{0} - -trace = Tìm người chơi +trace = Truy vết người chơi trace.playername = Tên người chơi: [accent]{0} trace.ip = IP: [accent]{0} -trace.id = ID: [accent]{0} -trace.language = Language: [accent]{0} +trace.id = Định danh (ID): [accent]{0} +trace.language = Ngôn ngữ: [accent]{0} trace.mobile = Máy khách di động: [accent]{0} trace.modclient = Máy khách tùy chỉnh: [accent]{0} trace.times.joined = Số lần tham gia: [accent]{0} @@ -264,32 +267,34 @@ trace.times.kicked = Số lần bị buộc rời: [accent]{0} trace.ips = Các IP: trace.names = Các tên: invalidid = Định danh máy khách không hợp lệ! Vui lòng gửi báo cáo lỗi. + player.ban = Cấm -player.kick = Đá +player.kick = Buộc rời player.trace = Truy vết player.admin = Hoán đổi quản trị viên player.team = Đổi đội + server.bans = Cấm -server.bans.none = Không có người chơi nào bị cấm! +server.bans.none = Không tìm thấy người chơi nào bị cấm! server.admins = Quản trị viên -server.admins.none = Không có quản trị viên nào được tìm thấy! +server.admins.none = Không tìm thấy quản trị viên nào! server.add = Thêm máy chủ server.delete = Bạn có chắc chắn muốn xóa máy chủ này không? server.edit = Chỉnh sửa máy chủ server.outdated = [scarlet]Máy chủ lỗi thời![] -server.outdated.client = [scarlet]Trò chơi lỗi thời![] +server.outdated.client = [scarlet]Máy khách lỗi thời![] server.version = [gray]v{0} {1} server.custombuild = [accent]Bản dựng tùy chỉnh confirmban = Bạn có chắc chắn muốn cấm "{0}[white]"? -confirmkick = Bạn có chắc chắn muốn buộc "{0}[white]" rời? +confirmkick = Bạn có chắc chắn muốn buộc "{0}[white]" rời đi? confirmunban = Bạn có chắc chắn muốn gỡ cấm người chơi này? confirmadmin = Bạn có chắc chắn muốn thêm "{0}[white]" làm quản trị viên? confirmunadmin = Bạn có chắc chắn muốn xóa quyền quản trị viên của "{0}[white]"? -votekick.reason = Lý do bỏ phiếu đá -votekick.reason.message = Bạn có chắc muốn bỏ phiếu đá "{0}[white]"?\nNếu có, xin hãy nhập lý do: +votekick.reason = Lý do bỏ phiếu buộc rời +votekick.reason.message = Bạn có chắc muốn bỏ phiếu buộc rời cho "{0}[white]"?\nNếu có, xin hãy nhập lý do: joingame.title = Tham gia trò chơi joingame.ip = Địa chỉ: -disconnect = Ngắt kết nối. +disconnect = Đã ngắt kết nối. disconnect.error = Lỗi kết nối. disconnect.closed = Kết nối đã bị đóng. disconnect.timeout = Hết thời gian chờ. @@ -300,14 +305,14 @@ reconnecting = [accent]Đang kết nối lại... connecting.data = [accent]Đang tải dữ liệu thế giới... server.port = Cổng: server.addressinuse = Địa chỉ đang được sử dụng! -server.invalidport = Cổng không hợp lệ! -server.error = [scarlet]Lỗi máy chủ. +server.invalidport = Số cổng không hợp lệ! +server.error = [scarlet]Lỗi tạo máy chủ. save.new = Bản lưu mới save.overwrite = Bạn có chắc muốn ghi đè\nbản lưu này? -save.nocampaign = Các tập tin đơn lẻ từ chiến dịch không thể được nhập. +save.nocampaign = Không thể nhập các tập tin đơn lẻ từ chiến dịch. overwrite = Ghi đè save.none = Không có bản lưu nào được tìm thấy! -savefail = Không thể lưu trò chơi này! +savefail = Không lưu được trò chơi! save.delete.confirm = Bạn có chắc chắn muốn xóa bản lưu này không? save.delete = Xóa save.export = Xuất bản lưu @@ -318,7 +323,7 @@ save.import = Nhập bản lưu save.newslot = Tên bản lưu: save.rename = Đổi tên save.rename.text = Tên mới: -selectslot = Hãy chọn một bản lưu. +selectslot = Chọn một bản lưu. slot = [accent]Vị trí {0} editmessage = Chỉnh sửa lời nhắn save.corrupted = Tệp bản lưu bị hỏng hoặc không hợp lệ! @@ -329,7 +334,7 @@ save.search = Tìm kiếm màn chơi đã lưu... save.autosave = Tự động lưu: {0} save.map = Bản đồ: {0} save.wave = Đợt {0} -save.mode = Chế độ: {0} +save.mode = Chế độ chơi: {0} save.date = Lưu lần cuối: {0} save.playtime = Thời gian chơi: {0} warning = Cảnh báo. @@ -339,45 +344,45 @@ view.workshop = Xem trong Workshop workshop.listing = Chỉnh sửa danh sách Workshop ok = Đồng ý open = Mở -customize = Luật tùy chỉnh +customize = Quy tắc tùy chỉnh cancel = Hủy command = Mệnh lệnh -command.queue = [lightgray][Queuing] +command.queue = Lệnh tuần tự command.mine = Đào -command.repair = Sửa Chữa -command.rebuild = Xây Dựng -command.assist = Hỗ Trợ Người Chơi +command.repair = Sửa chữa +command.rebuild = Xây lại +command.assist = Hỗ trợ Người chơi command.move = Di Chuyển -command.boost = Tăng Cường -command.enterPayload = Enter Payload Block -command.loadUnits = Load Units -command.loadBlocks = Load Blocks -command.unloadPayload = Unload Payload -stance.stop = Cancel Orders -stance.shoot = Stance: Shoot -stance.holdfire = Stance: Hold Fire -stance.pursuetarget = Stance: Pursue Target -stance.patrol = Stance: Patrol Path -stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding +command.boost = Tăng cường +command.enterPayload = Nhập Khối hàng vào Công trình +command.loadUnits = Nhận Đơn vị +command.loadBlocks = Nhận Khối công trình +command.unloadPayload = Dỡ Khối hàng +stance.stop = Hủy Mệnh lệnh +stance.shoot = Tư thế: Bắn +stance.holdfire = Tư thế: Ngừng bắn +stance.pursuetarget = Tư thế: Bám đuổi Mục tiêu +stance.patrol = Tư thế: Đường tuần tra +stance.ram = Tư thế: Tông thẳng\n[lightgray]Đi theo đường thẳng, không tìm đường openlink = Mở liên kết copylink = Sao chép liên kết back = Quay lại max = Tối đa -objective = Nhiệm vụ -crash.export = Xuất Crash Logs -crash.none = Không có Crash Logs nào được tìm thấy. -crash.exported = Crash logs đã được xuất. +objective = Nhiệm vụ bản đồ +crash.export = Xuất Nhật ký sự cố +crash.none = Không có Nhật ký sự cố nào được tìm thấy. +crash.exported = Nhật ký sự cố đã được xuất. data.export = Xuất dữ liệu data.import = Nhập dữ liệu data.openfolder = Mở thư mục dữ liệu data.exported = Dữ liệu đã được xuất. data.invalid = Đây không phải dữ liệu trò chơi hợp lệ. -data.import.confirm = Nhập dữ liệu bên ngoài sẽ ghi đè[scarlet] tất cả[] dữ liệu trò chơi hiện tại.\n[accent]Điều này không thể hoàn tác![]\n\nSau khi dữ liệu được nhập, trò chơi của bạn sẽ thoát ngay lập tức. +data.import.confirm = Nhập dữ liệu bên ngoài sẽ ghi đè[scarlet] tất cả[] dữ liệu trò chơi hiện tại của bạn.\n[accent]Điều này không thể hoàn tác![]\n\nSau khi dữ liệu được nhập, trò chơi của bạn sẽ thoát ngay lập tức. quit.confirm = Bạn có chắc muốn thoát? loading = [accent]Đang tải... downloading = [accent]Đang tải xuống... saving = [accent]Đang lưu... -respawn = [accent][[{0}][] để hồi sinh tại căn cứ +respawn = [accent][[{0}][] để hồi sinh cancelbuilding = [accent][[{0}][] để hủy xây selectschematic = [accent][[{0}][] để chọn+sao chép pausebuilding = [accent][[{0}][] để tạm dừng xây dựng @@ -385,16 +390,16 @@ resumebuilding = [scarlet][[{0}][] để tiếp tục xây dựng enablebuilding = [scarlet][[{0}][] để bật xây dựng showui = Đã ẩn giao diện.\nNhấn [accent][[{0}][] để hiện lại giao diện. commandmode.name = [accent]Chế độ chỉ huy -commandmode.nounits = [no units] +commandmode.nounits = [không có đơn vị] wave = [accent]Đợt {0} wave.cap = [accent]Đợt {0}/{1} -wave.waiting = [lightgray]Kẻ địch xuất hiện sau {0} -wave.waveInProgress = [lightgray]Địch đang xuất hiện. +wave.waiting = [lightgray]Đợt kế tiếp sau {0} +wave.waveInProgress = [lightgray]Đợt đang tấn công waiting = [lightgray]Đang chờ... -waiting.players = Đang chờ thêm người chơi... +waiting.players = Đang chờ người chơi... wave.enemies = [lightgray]{0} Kẻ địch còn lại -wave.enemycores = [accent]{0}[lightgray] Căn cứ địch -wave.enemycore = [accent]{0}[lightgray] Căn cứ địch +wave.enemycores = [accent]{0}[lightgray] Lõi kẻ địch +wave.enemycore = [accent]{0}[lightgray] Lõi kẻ địch wave.enemy = [lightgray]{0} Kẻ địch còn lại wave.guardianwarn = Trùm sẽ xuất hiện sau [accent]{0}[] đợt. wave.guardianwarn.one = Trùm sẽ xuất hiện sau [accent]{0}[] đợt. @@ -402,44 +407,49 @@ loadimage = Tải hình ảnh saveimage = Lưu hình ảnh unknown = Không xác định custom = Tùy chỉnh -builtin = Xây trong +builtin = Có sẵn map.delete.confirm = Bạn có chắc chắn muốn xóa bản đồ này không? Hành động này không thể hoàn tác! map.random = [accent]Bản đồ ngẫu nhiên -map.nospawn = Bản đồ này không có bất kỳ căn cứ nào để người chơi hồi sinh! Thêm một căn cứ {0} vào bản đồ ở trình chỉnh sửa. -map.nospawn.pvp = Bản đồ này không có bất kỳ căn cứ kẻ thù nào để người chơi hồi sinh! Thêm một căn cứ[scarlet] không phải màu cam[] vào bản đồ ở trình chỉnh sửa. -map.nospawn.attack = Bản đồ này không có bất kỳ căn cứ kẻ thù nào để người chơi tấn công! Thêm một căn cứ {0} vào bản đồ ở trình chỉnh sửa. +map.nospawn = Bản đồ này không có bất kỳ lõi nào để người chơi hồi sinh! Thêm một lõi {0} vào bản đồ này ở trình chỉnh sửa. +map.nospawn.pvp = Bản đồ này không có bất kỳ lõi kẻ địch nào để người chơi hồi sinh! Thêm một lõi[scarlet] không phải màu cam[] vào bản đồ này ở trình chỉnh sửa. +map.nospawn.attack = Bản đồ này không có bất kỳ lõi kẻ địch nào để người chơi tấn công! Thêm một lõi {0} vào bản đồ này ở trình chỉnh sửa. map.invalid = Lỗi khi tải bản đồ: tệp bản đồ bị hỏng hoặc không hợp lệ. workshop.update = Cập nhật mục -workshop.error = Lỗi khi tìm nạp thông tin chi tiết ở workshop: {0} -map.publish.confirm = Bạn có chắc chắn muốn xuất bản bản đồ này không?\n\n[lightgray]Đảm bảo rằng bạn đồng ý với Workshop EULA trước, hoặc bản đồ của bạn sẽ không hiển thị! +workshop.error = Lỗi khi tìm lấy chi tiết ở workshop: {0} +map.publish.confirm = Bạn có chắc chắn muốn xuất bản bản đồ này không?\n\n[lightgray]Đảm bảo rằng bạn đồng ý với Thỏa thuận cấp phép người dùng cuối (EULA) của Workshop trước, hoặc bản đồ của bạn sẽ không hiển thị! workshop.menu = Chọn những gì bạn muốn làm với mục này. workshop.info = Thông tin mục -changelog = Danh sách các thay đổi (không bắt buộc): +changelog = Nhật ký thay đổi (tùy chọn): updatedesc = Ghi đè Tiêu đề & Mô tả -eula = Steam EULA +eula = Thỏa thuận cấp phép người dùng cuối (EULA) của Steam missing = Mục này đã bị xóa hoặc di chuyển.\n[lightgray]Danh sách workshop hiện đã được tự động hủy liên kết. publishing = [accent]Đang xuất bản... -publish.confirm = Bạn có chắc chắn muốn xuất bản không?\n\n[lightgray]Đảm bảo rằng bạn đồng ý với Workshop EULA trước, hoặc mục của bạn sẽ không hiển thị! -publish.error = Lỗi khi xuất bản: {0} +publish.confirm = Bạn có chắc chắn muốn xuất bản không?\n\n[lightgray]Đảm bảo rằng bạn đồng ý với Thỏa thuận cấp phép người dùng cuối (EULA) của Workshop trước, hoặc mục của bạn sẽ không hiển thị! +publish.error = Lỗi khi xuất bản mục: {0} steam.error = Không thể khởi chạy dịch vụ Steam.\nLỗi: {0} + editor.planet = Hành tinh: editor.sector = Khu vực: -editor.seed = Hạt giống: - +editor.seed = Mầm: editor.cliffs = Chuyển tường thành vách đá -editor.brush = Kích thước +editor.brush = Cỡ cọ editor.openin = Mở trong trình chỉnh sửa -editor.oregen = Cấu trúc quặng -editor.oregen.info = Cấu trúc quặng: +editor.oregen = Tạo quặng +editor.oregen.info = Tạo quặng: editor.mapinfo = Thông tin bản đồ editor.author = Tác giả: editor.description = Mô tả: editor.nodescription = Bản đồ phải có mô tả ít nhất 4 ký tự trước khi được xuất bản. -editor.waves = Lượt: -editor.rules = Luật: -editor.generation = Cấu trúc: -editor.objectives = Mục tiêu -editor.locales = Locale Bundles +editor.waves = Đợt +editor.rules = Quy tắc +editor.generation = Tạo ra +editor.objectives = Mục tiêu nhiệm vụ +editor.locales = Gói ngôn ngữ +editor.worldprocessors = Các bộ xử lý thế giới +editor.worldprocessors.editname = Sửa tên +editor.worldprocessors.none = [lightgray]không tìm thấy khối bộ xử lý thế giới nào!\nThêm một bộ trong trình chỉnh sửa bản đồ, hoặc dùng nút \ue813 Thêm ở dưới. +editor.worldprocessors.nospace = Không có không gian trống để đặt một bộ xử lý thế giới!\nCó phải bạn đã điền đầy bản đồ bằng các công trình? Tại sao bạn lại làm vậy? +editor.worldprocessors.delete.confirm = Bạn có muốn xóa bộ xử lý thế giới này?\n\nNếu nó được bao quanh bởi các vách tường, nó sẽ được thay thế bằng vách tường quanh đó. editor.ingame = Chỉnh sửa trong trò chơi editor.playtest = Chơi thử editor.publish.workshop = Xuất bản lên Workshop @@ -447,42 +457,42 @@ editor.newmap = Bản đồ mới editor.center = Trung tâm editor.search = Tìm kiếm bản đồ... editor.filters = Lọc bản đồ -editor.filters.mode = Chế độ: +editor.filters.mode = Chế độ chơi: editor.filters.type = Kiểu bản đồ: editor.filters.search = Tìm kiếm trong: editor.filters.author = Tác giả -editor.filters.description = Miêu tả +editor.filters.description = Mô tả editor.shiftx = Dịch theo X editor.shifty = Dịch theo Y workshop = Workshop waves.title = Đợt -waves.remove = Xóa +waves.remove = Loại bỏ waves.every = mỗi waves.waves = đợt -waves.health = health: {0}% +waves.health = độ bền: {0}% waves.perspawn = mỗi lần xuất hiện waves.shields = khiên/đợt waves.to = đến -waves.spawn = sinh ra: +waves.spawn = xuất hiện từ: waves.spawn.all = waves.spawn.select = Chọn điểm xuất hiện waves.spawn.none = [scarlet]không tìm thấy điểm xuất hiện nào trên bản đồ -waves.max = Số lượng đơn vị tối đa +waves.max = đơn vị tối đa waves.guardian = Trùm waves.preview = Xem trước waves.edit = Chỉnh sửa... waves.random = Ngẫu nhiên -waves.copy = Sao chép vào bộ nhớ tạm -waves.load = Lấy từ bộ nhớ tạm -waves.invalid = Lượt không hợp lệ trong bộ nhớ tạm. -waves.copied = Đã sao chép lượt. -waves.none = Không có kẻ thù được xác định.\nLưu ý rằng bố cục mỗi đợt trống sẽ tự động được thay thế bằng bố cục mặc định. +waves.copy = Sao chép vào Bộ nhớ tạm +waves.load = Nạp từ Bộ nhớ tạm +waves.invalid = Đợt không hợp lệ trong bộ nhớ tạm. +waves.copied = Đã sao chép các đợt. +waves.none = Không có kẻ địch được xác định.\nLưu ý rằng bố cục mỗi đợt trống sẽ tự động được thay thế bằng bố cục mặc định. waves.sort = Sắp xếp theo waves.sort.reverse = Đảo ngược sắp xếp waves.sort.begin = Bắt đầu -waves.sort.health = Máu -waves.sort.type = Thể loại -waves.search = Tìm kiếm các lượt... +waves.sort.health = Độ bền +waves.sort.type = Loại +waves.search = Tìm kiếm các đợt... waves.filter = Bộ lọc đơn vị waves.units.hide = Ẩn tất cả waves.units.show = Hiện tất cả @@ -490,16 +500,18 @@ waves.units.show = Hiện tất cả #these are intentionally in lower case wavemode.counts = số lượng wavemode.totals = tổng số -wavemode.health = máu +wavemode.health = độ bền editor.default = [lightgray] details = Chi tiết... -edit = Chỉnh sửa... -variables = Thông số -logic.globals = Built-in Variables +edit = Chỉnh sửa +variables = Biến số +logic.clear.confirm = Bạn có muốn xóa sạch tất cả mã khỏi bộ xử lý này? +logic.globals = Biến số sẵn có + editor.name = Tên: -editor.spawn = Thêm kẻ địch -editor.removeunit = Xóa kẻ địch +editor.spawn = Đơn vị xuất hiện +editor.removeunit = Loại bỏ đơn vị editor.teams = Đội editor.errorload = Lỗi khi tải tệp. editor.errorsave = Lỗi khi lưu tệp. @@ -508,7 +520,7 @@ editor.errorlegacy = Bản đồ này quá cũ, và sử dụng định dạng b editor.errornot = Đây không phải là tệp bản đồ. editor.errorheader = Tệp bản đồ này không hợp lệ hoặc bị hỏng. editor.errorname = Bản đồ không có tên được xác định. Bạn đang cố gắng tải một bản lưu? -editor.errorlocales = Error reading invalid locale bundles. +editor.errorlocales = Lỗi khi đọc gói ngôn ngữ không hợp lệ. editor.update = Cập nhật editor.randomize = Ngẫu nhiên editor.moveup = Di chuyển lên @@ -518,9 +530,9 @@ editor.apply = Áp dụng editor.generate = Tạo ra editor.sectorgenerate = Tạo ra khu vực editor.resize = Thay đổi kích thước -editor.loadmap = Mở bản đồ +editor.loadmap = Nạp bản đồ editor.savemap = Lưu bản đồ -editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? +editor.savechanges = [scarlet]Bạn có thay đổi chưa lưu!\n\n[]Bạn có muốn lưu chúng không? editor.saved = Đã lưu! editor.save.noname = Bản đồ của bạn không có tên! Hãy đặt một cái tên trong 'Thông tin bản đồ'. editor.save.overwrite = Bản đồ của bạn ghi đè lên một bản đồ đã có sẵn! Hãy chọn một cái tên khác trong 'Thông tin bản đồ'. @@ -545,7 +557,7 @@ editor.mapname = Tên bản đồ: editor.overwrite = [accent]Cảnh báo!\nĐiều này có thể ghi đè lên một bản đồ hiện có. editor.overwrite.confirm = [scarlet]Cảnh báo![] Bản đồ có tên này đã tồn tại. Bạn có chắc chắn muốn ghi đè lên nó không?\n"[accent]{0}[]" editor.exists = Bản đồ có tên này đã tồn tại. -editor.selectmap = Chọn bản đồ cần mở: +editor.selectmap = Chọn bản đồ cần nạp: toolmode.replace = Thay thế toolmode.replace.description = Chỉ vẽ trên các khối rắn. @@ -562,43 +574,45 @@ toolmode.fillteams.description = Điền các đội thay cho các khối. toolmode.fillerase = Điền xóa toolmode.fillerase.description = Xóa các khối cùng kiểu. toolmode.drawteams = Vẽ đội -toolmode.drawteams.description = Vẽ các đội thay cho các khối. +toolmode.drawteams.description = Vẽ các đội thay vì các khối. +#unused toolmode.underliquid = Dưới chất lỏng toolmode.underliquid.description = Vẽ nền dưới các ô chất lỏng. -filters.empty = [lightgray]Không có bộ lọc! Thêm một cái bằng nút bên dưới. +filters.empty = [lightgray]Không có bộ lọc! Thêm một bộ bằng nút bên dưới. filter.distort = Cong vẹo filter.noise = Nhiễu -filter.enemyspawn = Khu vực xuất hiện của kẻ thù -filter.spawnpath = Khu tạo ra -filter.corespawn = Chọn Căn cứ -filter.median = Trung bình -filter.oremedian = Quặng Trung bình +filter.enemyspawn = Chọn điểm xuất hiện của kẻ địch +filter.spawnpath = Đường đến điểm xuất hiện +filter.corespawn = Chọn lõi +filter.median = Trung vị +filter.oremedian = Quặng Trung vị filter.blend = Trộn filter.defaultores = Quặng mặc định filter.ore = Quặng filter.rivernoise = Nhiễu sông filter.mirror = Đối xứng filter.clear = Xóa -filter.option.ignore = Bỏ qua +filter.option.ignore = Phớt lờ filter.scatter = Phân tán filter.terrain = Địa hình +filter.logic = Logic -filter.option.scale = Kích thước -filter.option.chance = Tỷ lệ +filter.option.scale = Quy mô +filter.option.chance = Cơ hội filter.option.mag = Độ lớn filter.option.threshold = Ngưỡng -filter.option.circle-scale = Độ lớn vòng tròn -filter.option.octaves = Octaves -filter.option.falloff = Falloff +filter.option.circle-scale = Quy mô vòng tròn +filter.option.octaves = Bát độ +filter.option.falloff = Suy giảm filter.option.angle = Góc filter.option.tilt = Nghiêng -filter.option.rotate = Quay +filter.option.rotate = Xoay filter.option.amount = Số lượng filter.option.block = Khối filter.option.floor = Nền -filter.option.flooronto = Nền thay thế +filter.option.flooronto = Nền đích filter.option.target = Mục tiêu filter.option.replacement = Thay thế filter.option.wall = Tường @@ -607,23 +621,26 @@ 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 +filter.option.code = Mã +filter.option.loop = Lặp + +locales.info = Tại đây, bạn có thể thêm gói ngôn ngữ cho ngôn ngữ cụ thể vào bản đồ của bạn. Trong gói ngôn ngữ, mỗi thuộc tính có tên và giá trị. Những thuộc tính này có thể được sử dụng bởi Bộ xử lý thế giới và Mục tiêu nhiệm vụ bằng tên của chúng. Chúng hỗ trợ định dạng văn bản (thay thế từ giữ chỗ bằng giá trị thực tế).\n\n[cyan]Ví dụ thuộc tính:\n[]tên: [accent]timer[]\ngiá trị: [accent]Bộ đếm thời gian ví dụ, thời gian còn lại: {0}[]\n\n[cyan]Cách dùng:\n[]Đặt làm văn bản cho Mục tiêu nhiệm vụ: [accent]@timer\n\n[]In nó trong Bộ xử lý thế giới:\n[accent]localeprint "timer"\nformat time\n[gray](với time là biến được tính toán riêng biệt) +locales.deletelocale = Bạn có chắc muốn xóa gói ngôn ngữ này? +locales.applytoall = Áp dụng thay đổi cho tất cả gói ngôn ngữ +locales.addtoother = Thêm vào các gói ngôn ngữ khác +locales.rollback = Khôi phục lại lần áp dụng cuối +locales.filter = Bộ lọc thuộc tính +locales.searchname = Tìm tên... +locales.searchvalue = Tìm giá trị... +locales.searchlocale = Tìm ngôn ngữ... +locales.byname = Theo tên +locales.byvalue = Theo giá trị +locales.showcorrect = Hiện thuộc tính có trong tất cả ngôn ngữ và có giá trị riêng biệt mỗi nơi +locales.showmissing = Hiện thuộc tính bị thiếu trong một số ngôn ngữ +locales.showsame = Hiện thuộc tính có giá trị giống nhau trong các ngôn ngữ khác nhau +locales.viewproperty = Xem trong tất cả ngôn ngữ +locales.viewing = Đang xem thuộc tính "{0}" +locales.addicon = Thêm biểu tượng width = Chiều rộng: height = Chiều cao: @@ -641,95 +658,102 @@ language.restart = Khởi động lại trò chơi của bạn để cài đặt settings = Cài đặt tutorial = Hướng dẫn tutorial.retake = Thực hiện lại Hướng dẫn -editor = Chỉnh sửa +editor = Trình chỉnh sửa mapeditor = Trình chỉnh sửa bản đồ -abandon = Bỏ +abandon = Từ bỏ abandon.text = Khu vực này và tất cả tài nguyên của nó sẽ bị mất vào tay kẻ địch. locked = Đã khóa complete = [lightgray]Hoàn thành: requirement.wave = Đạt đến đợt {0} ở {1} -requirement.core = Phá hủy căn cứ địch ở {0} +requirement.core = Phá hủy lõi địch ở {0} requirement.research = Nghiên cứu {0} -requirement.produce = Sản lượng {0} +requirement.produce = Sản xuất {0} requirement.capture = Chiếm {0} -requirement.onplanet = Kiểm Soát Khu Vực {0} -requirement.onsector = Đáp Xuống Khu Vực: {0} +requirement.onplanet = Kiểm soát khu vực {0} +requirement.onsector = Đáp xuống khu vực: {0} launch.text = Phóng research.multiplayer = Chỉ máy chủ mới có thể nghiên cứu các mục. map.multiplayer = Chỉ máy chủ mới có thể xem các khu vực. uncover = Khám phá -configure = Tùy chỉnh vật phẩm +configure = Cấu hình vật phẩm khởi đầu + objective.research.name = Nghiên cứu objective.produce.name = Nhận objective.item.name = Nhận vật phẩm -objective.coreitem.name = Vật phẩm trong căn cứ +objective.coreitem.name = Vật phẩm trong lõi objective.buildcount.name = Xây công trình objective.unitcount.name = Sản xuất đơn vị -objective.destroyunits.name = Tiêu diệt kẻ địch +objective.destroyunits.name = Tiêu diệt đơn vị objective.timer.name = Hẹn giờ objective.destroyblock.name = Phá huỷ khối objective.destroyblocks.name = Phá huỷ khối -objective.destroycore.name = Phá huỷ căn cứ -objective.commandmode.name = Chế độ ra lệnh +objective.destroycore.name = Phá huỷ lõi +objective.commandmode.name = Chế độ mệnh lệnh objective.flag.name = Cờ + marker.shapetext.name = Hình dạng văn bản -marker.point.name = Point +marker.point.name = Điểm marker.shape.name = Hình dạng marker.text.name = Văn bản -marker.line.name = Line -marker.quad.name = Quad +marker.line.name = Đường kẻ +marker.quad.name = Tứ giác +marker.texture.name = Kết cấu + marker.background = Nền marker.outline = Đường viền + objective.research = [accent]Nghiên cứu:\n[]{0}[lightgray]{1} objective.produce = [accent]Nhận:\n[]{0}[lightgray]{1} objective.destroyblock = [accent]Phá huỷ:\n[]{0}[lightgray]{1} objective.destroyblocks = [accent]Phá huỷ: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3} objective.item = [accent]Nhận: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.coreitem = [accent]Chuyển vào căn cứ:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} +objective.coreitem = [accent]Chuyển vào lõi:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} objective.build = [accent]Xây: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.buildunit = [accent]Tạo đơn vị: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.destroyunits = [accent]Tiêu diệt: [][lightgray]{0}[]x Đơn vị -objective.enemiesapproaching = [accent]Kẻ địch sẽ xuất hiện sau [lightgray]{0}[] -objective.enemyescelating = [accent]Kẻ địch sẽ bắt đầu sản xuất sau [lightgray]{0}[] -objective.enemyairunits = [accent]Kẻ địch sẽ bắt đầu tạo đơn vị bay sau [lightgray]{0}[] -objective.destroycore = [accent]Phá huỷ căn cứ đối phương -objective.command = [accent]Ra lệnh -objective.nuclearlaunch = [accent]⚠ Phát hiện tên lửa hạt nhân sắp phóng: [lightgray]{0} -announce.nuclearstrike = [red]⚠ TÊN LỬA HẠT NHÂN SẮP VA CHẠM ⚠ +objective.enemiesapproaching = [accent]Kẻ địch đến sau [lightgray]{0}[] +objective.enemyescelating = [accent]Kẻ địch leo thang sản xuất sau [lightgray]{0}[] +objective.enemyairunits = [accent]Kẻ địch bắt đầu sản xuất đơn vị bay sau [lightgray]{0}[] +objective.destroycore = [accent]Phá huỷ lõi kẻ địch +objective.command = [accent]Mệnh lệnh đơn vị +objective.nuclearlaunch = [accent]⚠ Phát hiện việc phóng tên lửa hạt nhân: [lightgray]{0} -loadout = Vật phẩm +announce.nuclearstrike = [red]⚠ TÊN LỬA HẠT NHÂN SẮP VA CHẠM ⚠\nxây lõi dự phòng ngay + +loadout = Vật phẩm khởi đầu resources = Tài nguyên resources.max = Tối đa bannedblocks = Khối bị cấm -objectives = Mục tiêu +objectives = Mục tiêu nhiệm vụ bannedunits = Đơn vị 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 +bannedunits.whitelist = Chỉ dùng các đơn vị bị cấm +bannedblocks.whitelist = Chỉ dùng các khối bị cấm addall = Thêm tất cả launch.from = Đang phóng từ: [accent]{0} -launch.capacity = Lượng vật phẩm tối đa có thể phóng: [accent]{0} +launch.capacity = Sức chứa vật phẩm khi phóng: [accent]{0} launch.destination = Đích đến: {0} configure.invalid = Số lượng phải là số trong khoảng 0 đến {0}. add = Thêm... guardian = Trùm connectfail = [scarlet]Lỗi kết nối:\n\n[accent]{0} -error.unreachable = Không thể truy cập máy chủ.\nKiểm tra lại xem địa chỉ có đúng không? +error.unreachable = Không thể truy cập máy chủ.\nĐịa chỉ liệu có đúng không? error.invalidaddress = Địa chỉ không hợp lệ. error.timedout = Hết thời gian chờ!\nĐảm bảo máy chủ đã thiết lập điều hướng cổng, và địa chỉ đó là chính xác! -error.mismatch = Lỗi packet:\nphiên bản máy khách / máy chủ có thể không khớp.\nĐảm bảo bạn và máy chủ có phiên bản Mindustry mới nhất! -error.alreadyconnected = Đã kết nối. +error.mismatch = Lỗi gói tin:\nphiên bản máy khách/máy chủ có thể không khớp.\nĐảm bảo bạn và máy chủ có phiên bản Mindustry mới nhất! +error.alreadyconnected = Đã kết nối rồi. error.mapnotfound = Không tìm thấy tệp bản đồ! -error.io = Lỗi Network I/O. +error.io = Lỗi mạng đầu vào/ra. error.any = Lỗi mạng không xác định. error.bloom = Không khởi tạo được hiệu ứng phát sáng.\nThiết bị của bạn có thể không hỗ trợ. weather.rain.name = Mưa -weather.snow.name = Tuyết +weather.snowing.name = Tuyết weather.sandstorm.name = Bão cát weather.sporestorm.name = Bão bào tử weather.fog.name = Sương mù + campaign.playtime = \uf129 [lightgray]Thời gian chơi trên khu vực: {0} campaign.complete = [accent]Chúc mừng.\n\nKẻ địch trên {0} đã bị đánh bại.\n[lightgray]Khu vực cuối cùng đã được chinh phục. @@ -746,8 +770,8 @@ sectors.wave = Đợt: sectors.stored = Lưu trữ: sectors.resume = Tiếp tục sectors.launch = Phóng -sectors.select = Lựa chọn -sectors.nonelaunch = [lightgray]trống (mặt trời) +sectors.select = Chọn +sectors.nonelaunch = [lightgray]không có (mặt trời) sectors.rename = Đổi tên khu vực sectors.enemybase = [scarlet]Căn cứ địch sectors.vulnerable = [scarlet]Dễ bị tổn thất @@ -756,17 +780,17 @@ sectors.underattack.nodamage = [scarlet]Chưa được chiếm sectors.survives = [accent]Vượt qua {0} đợt sectors.go = Đi sector.abandon = Rời bỏ -sector.abandon.confirm = Những căn cứ ở đây sẽ tự huỷ.\nTiếp tục chứ? +sector.abandon.confirm = Những lõi ở đây sẽ tự huỷ.\nTiếp tục chứ? sector.curcapture = Khu vực đã chiếm sector.curlost = Khu vực đã mất -sector.missingresources = [scarlet]Không đủ tài nguyên căn cứ +sector.missingresources = [scarlet]Không đủ tài nguyên lõi sector.attacked = Khu vực [accent]{0}[white] đang bị tấn công! sector.lost = Khu vực [accent]{0}[white] đã mất! -sector.capture = Sector [accent]{0}[white]Captured! -sector.capture.current = Sector Captured! +sector.capture = Khu vực [accent]{0}[white] đã chiếm! +sector.capture.current = Khu vực đã chiếm! sector.changeicon = Thay đổi biểu tượng -sector.noswitch.title = Không thể thay đổi sang khu vực khác -sector.noswitch = Bạn không thể đổi sang khu vực khác khi một khu vực đang bị tấn công.\n\nKhu vực: [accent]{0}[] ở [accent]{1}[] +sector.noswitch.title = Không thể đổi khu vực +sector.noswitch = Bạn không thể đổi khu vực khi một khu vực đang bị tấn công.\n\nKhu vực: [accent]{0}[] ở [accent]{1}[] sector.view = Xem khu vực threat.low = Thấp @@ -800,24 +824,25 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress -sector.groundZero.description = Vị trí tối ưu để bắt đầu một lần nữa. Mối đe dọa của kẻ thù thấp nhưng ít tài nguyên.\nThu thập càng nhiều đồng và chì càng tốt.\nTiến lên. -sector.frozenForest.description = Dù ở gần núi cao, các bào tử vẫn bắt đầu phát tán. Nhiệt độ lạnh giá không thể giữ chúng lại mãi.\n\nBắt đầu tạo năng lượng. Hãy chế tạo máy phát điện đốt và học cách sử dụng Máy sửa chữa. -sector.saltFlats.description = Ở vùng rìa sa mạc chính là Salt Flats, có thể tìm thấy một ít tài nguyên ở khu vực này.\n\nKẻ thù đã dựng lên một khu phức hợp lưu trữ tài nguyên ở đây. Hãy loại bỏ hoàn toàn căn cứ này. -sector.craters.description = Nước đã tích tụ trong miệng núi lửa ở đây, vốn là dấu tích của các cuộc chiến tranh cũ. Hãy chiếm lại khu vực. Thu gom cát, metaglass . Bơm nước để làm mát súng và mũi khoan. -sector.ruinousShores.description = Vượt qua những địa hình mấp mô, là bờ biển. Vị trí này từng là nơi đặt một hệ thống phòng thủ ven biển. Không còn lại gì nhiều, chỉ những công trình phòng thủ cơ bản nhất vẫn không bị tổn thương, mọi thứ khác đều trở thành đống sắt vụn.\nTiếp tục mở rộng ra bên ngoài. Khám phá công nghệ có ở đây. -sector.stainedMountains.description = Xa hơn trong đất liền là những ngọn núi, chưa bị bào tử xâm lấn.\nKhai thác titan dồi dào trong khu vực này. Tìm hiểu làm thế nào để sử dụng nó.\n\nSự hiện diện của kẻ thù ở đây lớn hơn. Đừng cho họ thời gian để có đơn vị mạnh nhất của họ. -sector.overgrowth.description = Khu vực này cây cối mọc um tùm, gần nguồn bào tử hơn.\nĐịch đã lập tiền đồn ở đây. Chế tạo Mace. Phá hủy căn cứu địch và đòi lại thứ đã mất. +sector.groundZero.description = Vị trí tối ưu để bắt đầu một lần nữa. Mối đe dọa của kẻ địch thấp. Ít tài nguyên.\nThu thập càng nhiều đồng và chì càng tốt.\nTiến lên. +sector.frozenForest.description = Dù ở đây, gần núi cao, các bào tử vẫn bắt đầu phát tán. Nhiệt độ lạnh giá không thể giữ chúng lại mãi.\n\nBắt đầu tạo năng lượng. Hãy xây dựng máy phát điện đốt. Học cách sử dụng máy sửa chữa. +sector.saltFlats.description = Ở vùng rìa sa mạc chính là Salt Flats. Có thể tìm thấy một ít tài nguyên ở khu vực này.\n\nKẻ địch đã dựng lên một khu phức hợp lưu trữ tài nguyên ở đây. Hãy loại bỏ hoàn toàn căn cứ này. +sector.craters.description = Nước đã tích tụ trong miệng núi lửa ở đây, vốn là dấu tích của các cuộc chiến tranh cũ. Hãy chiếm lại khu vực. Thu gom cát. Nung thủy tinh. Bơm nước để làm mát súng và mũi khoan. +sector.ruinousShores.description = Vượt qua những địa hình mấp mô, là bờ biển. Vị trí này từng là nơi đặt một hệ thống phòng thủ ven biển. Không còn lại gì nhiều, chỉ những công trình phòng thủ cơ bản nhất vẫn không bị tổn thương, mọi thứ khác đều trở thành đống sắt vụn.\nTiếp tục mở rộng ra bên ngoài. Khám phá lại công nghệ có ở đây. +sector.stainedMountains.description = Xa hơn trong đất liền là những ngọn núi, chưa bị bào tử xâm lấn.\nKhai thác titan dồi dào trong khu vực này. Tìm hiểu làm thế nào để sử dụng nó.\n\nSự hiện diện của kẻ địch ở đây lớn hơn. Đừng cho chúng thời gian để có đơn vị mạnh nhất của chúng. +sector.overgrowth.description = Khu vực này phát triển quá mức, gần nguồn bào tử hơn.\nĐịch đã lập tiền đồn ở đây. Chế tạo đơn vị Mace. Phá hủy nó. sector.tarFields.description = Vùng ngoại ô của khu sản xuất dầu, nằm giữa núi và sa mạc. Một trong số ít khu vực có trữ lượng dầu có thể sử dụng được.\nMặc dù bị bỏ hoang, khu vực này có một số lực lượng địch nguy hiểm gần đó. Đừng đánh giá thấp chúng.\n\n[lightgray]Nghiên cứu công nghệ chế biến dầu nếu có thể. -sector.desolateRift.description = Một vùng cực kỳ nguy hiểm. Tài nguyên dồi dào, nhưng ít không gian. Nguy cơ thất thủ cao. Hãy rời đi càng sớm càng tốt. Đừng để bị lừa bởi khoảng cách dài giữa các cuộc tấn công của kẻ thù. -sector.nuclearComplex.description = Một cơ sở trước đây để sản xuất và chế biến thorium, đã biến thành đống đổ nát.\n[lightgray]Nghiên cứu thorium và nhiều công dụng của nó.\n\nKẻ thù có mặt ở đây với số lượng rất lớn, liên tục lùng sục những kẻ tấn công. -sector.fungalPass.description = Khu vực chuyển tiếp giữa vùng núi cao và vùng đất thấp hơn, đầy bào tử. Một căn cứ trinh sát nhỏ của địch được đặt tại đây.\nPhá hủy nó.\nSử dụng đơn vị Dagger và Crawler. Phá hủy hai căn cứ của địch. +sector.desolateRift.description = Một vùng cực kỳ nguy hiểm. Tài nguyên dồi dào, nhưng ít không gian. Nguy cơ thất thủ cao. Xây dựng phòng thủ trên không và mặt đất sớm nhất có thể. Đừng để bị lừa bởi khoảng cách dài giữa các cuộc tấn công của kẻ địch. +sector.nuclearComplex.description = Một cơ sở từng sản xuất và chế biến thori, đã biến thành đống đổ nát.\n[lightgray]Nghiên cứu thori và nhiều công dụng của nó.\n\nKẻ địch có mặt ở đây với số lượng rất lớn, liên tục lùng sục những kẻ tấn công. +sector.fungalPass.description = Khu vực chuyển tiếp giữa vùng núi cao và vùng đất thấp hơn, đầy bào tử. Một căn cứ trinh sát nhỏ của địch được đặt tại đây.\nPhá hủy nó.\nSử dụng đơn vị Dagger và Crawler. Phá hủy hai lõi của địch. sector.biomassFacility.description = Nguồn gốc của bào tử. Đây là cơ sở mà chúng được nghiên cứu và sản xuất ban đầu.\nNghiên cứu công nghệ có ở đây. Nuôi cấy bào tử để sản xuất nhiên liệu và chất dẻo.\n\n[lightgray]Khi cơ sở này sụp đổ, các bào tử đã được giải phóng. Không có gì trong hệ sinh thái địa phương có thể cạnh tranh với một dạng sống xâm lấn mạnh như vậy. -sector.windsweptIslands.description = Xa hơn đường bờ biển là chuỗi đảo xa xôi này. Hồ sơ cho thấy họ đã từng có công trình sản xuất [accent]Nhựa[] .\n\nChống lại các lực lượng hải quân của kẻ thù. Thiết lập căn cứ trên quần đảo. Nghiên cứu các nhà máy này. -sector.extractionOutpost.description = Một tiền đồn xa, được kẻ thù xây dựng với mục đích phóng nguồn lực sang các khu vực khác.\n\nCông nghệ vận tải qua lại giữa các khu vực rất cần thiết để mở rộng hơn nữa. Phá hủy căn cứ và nghiên cứu bệ phóng của họ. +sector.windsweptIslands.description = Xa hơn đường bờ biển là chuỗi đảo xa xôi này. Hồ sơ cho thấy họ đã từng có công trình sản xuất [accent]Nhựa[].\n\nChống lại các lực lượng hải quân của kẻ địch. Thiết lập căn cứ trên quần đảo. Nghiên cứu các nhà máy này. +sector.extractionOutpost.description = Một tiền đồn xa, được kẻ địch xây dựng với mục đích phóng nguồn lực sang các khu vực khác.\n\nCông nghệ vận chuyển qua lại giữa các khu vực rất cần thiết cho việc mở rộng chinh phục. Phá hủy căn cứ. Nghiên cứu bệ phóng của họ. sector.impact0078.description = Đây là tàn tích của tàu vận chuyển giữa các vì sao đã từng đến được hệ sao này.\n\nLấy càng nhiều càng tốt từ đống đổ nát. Nghiên cứu bất kỳ công nghệ nguyên vẹn nào. -sector.planetaryTerminal.description = Mục tiêu cuối cùng.\n\nCăn cứ ven biển này chứa một cấu trúc có khả năng phóng căn cứ tới các hành tinh lân cận. Nó được bảo vệ cực kỳ cẩn thận.\n\nSản xuất đơn vị hải quân. Loại bỏ kẻ thù càng nhanh càng tốt. Nghiên cứu cấu trúc phóng. -sector.coastline.description = Phát hiện tàn dư công nghệ của các đơn vị hải quân tại địa điểm này. Chặn các cuộc tấn công của kẻ địch, chiếm khu vực này, và lấy được công nghệ. -sector.navalFortress.description = Kẻ địch đã thiết lập một căn cứ điều kiển từ xa, trên đảo tự nhiên. Phá hủy tiền đồn này. Chiếm công nghệ chế tạo đơn vị hải quân tiên tiến của địch và nghiên cứu nó. +sector.planetaryTerminal.description = Mục tiêu cuối cùng.\n\nCăn cứ ven biển này chứa một cấu trúc có khả năng phóng các lõi tới các hành tinh lân cận. Nó được bảo vệ cực kỳ cẩn thận.\n\nSản xuất đơn vị hải quân. Loại bỏ kẻ địch càng nhanh càng tốt. Nghiên cứu cấu trúc phóng. +sector.coastline.description = Phát hiện tàn dư công nghệ của các đơn vị hải quân tại địa điểm này. Đẩy lùi các cuộc tấn công của kẻ địch, chiếm khu vực này, và lấy công nghệ. +sector.navalFortress.description = Kẻ địch đã thiết lập một căn cứ từ xa, trên đảo tự nhiên. Phá hủy tiền đồn này. Chiếm công nghệ chế tạo đơn vị hải quân tiên tiến của địch và nghiên cứu nó. + sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -835,35 +860,33 @@ sector.siege.name = Siege sector.crossroads.name = Crossroads sector.karst.name = Karst sector.origin.name = Origin -sector.onset.description = Bắt đầu hành trình chinh phục Erekir. Thu thập nguồn lực, sản xuất đơn vị, và bắt đầu nghiên cứu công nghệ. +sector.onset.description = Bắt đầu hành trình chinh phục Erekir. Thu thập tài nguyên, sản xuất đơn vị, và bắt đầu nghiên cứu công nghệ. sector.aegis.description = Khu vực này chứa các kho lưu trữ của tungsten.\nNghiên cứu [accent]Máy khoan động lực[] để khai thác tài nguyên này này, và phá hủy căn cứ của địch ở khu vực này. -sector.lake.description = Hồ xỉ nóng chảy của khu vực này giới hạn rất nhiều các loại đơn vị. Một loại đơn vị có thể bay được là sự lựa chọn duy nhất.\nNghiên cứu [accent]Máy chế tạo phi thuyền[] và sản xuất một đơn vị [accent]elude[] nhanh nhất có thể. -sector.intersect.description = Các thông tin cho thấy khu vực này sẽ bị tấn công từ nhiều hướng ngay sau khi đáp.\nThiết lập các lớp phòng thủ nhanh chóng và mở rộng nhanh nhất có thể.\n[accent]Lính cơ động[] sẽ là sự lựa chọn tốt nhất cho địa hình khó khăn của khu vực này. -sector.atlas.description = Khu vực này có địa hình phong phú và sẽ cần một loạt các loại đơn vị để tấn công hiệu quả.\nCác loại đơn vị được nâng cấp cũng có thể cần thiết để vượt qua một số căn cứ của địch ở đây.\nNghiên cứu [accent]Máy điện phân[] và [accent]Máy chế tạo xe tăng[]. -sector.split.description = Sự hiện diện của kẻ địch ở khu vực này rất ít, nên nó là một khu vực tốt để thử nghiệm các công nghệ vận chuyển mới. -sector.basin.description = Sự hiện diện của kẻ địch ở khu vực này rất lớn.\nSản xuất đơn vị nhanh chóng và chiếm được các căn cứ của địch để có được một vị trí ổn định. +sector.lake.description = Hồ xỉ nóng chảy của khu vực này giới hạn rất nhiều các loại đơn vị. Một loại đơn vị lướt được là sự lựa chọn duy nhất.\nNghiên cứu [accent]Máy chế tạo phi thuyền[] và sản xuất một đơn vị [accent]elude[] nhanh nhất có thể. +sector.intersect.description = Việc thăm dò cho thấy khu vực này sẽ bị tấn công từ nhiều hướng ngay sau khi đáp.\nThiết lập các lớp phòng thủ nhanh chóng và mở rộng sớm nhất có thể.\n[accent]Máy cơ động[] sẽ là cần thiết cho địa hình khó khăn của khu vực này. +sector.atlas.description = Khu vực này có địa hình phong phú và sẽ cần nhiều loại đơn vị đa dạng để tấn công hiệu quả.\nCác loại đơn vị được nâng cấp cũng có thể cần thiết để vượt qua một số căn cứ của địch được phát hiện ở đây.\nNghiên cứu [accent]Máy điện phân[] và [accent]Máy chế tạo xe tăng[]. +sector.split.description = Sự hiện diện ít ỏi của kẻ địch ở khu vực này làm nó là một khu vực hoàn hảo để thử nghiệm công nghệ vận chuyển mới. +sector.basin.description = Đã phát hiện sự hiện diện lớn mạnh của kẻ địch ở khu vực này.\nSản xuất đơn vị nhanh chóng và chiếm được các lõi của địch để có được một vị thế vững chắc. sector.marsh.description = Khu vực này có trữ lượng lớn arkycite, nhưng có rất ít các lỗ hơi nước.\nXây dựng [accent]Bể điện hóa[] để tạo năng lượng. -sector.peaks.description = Địa hình đồi núi của khu vực này khiến hầu hết các loại đơn vị vô dụng. Cần phải có các loại phi thuyền.\nHãy cẩn thận với các công trình phòng thủ trên không của địch. Có thể bị vô hiệu hóa bằng cách tấn công các công trình hỗ trợ. -sector.ravine.description = Không có căn cứ nào của địch được phát hiện ở khu vực này, nhưng nó là một đường vận chuyển quan trọng cho địch. Có thể sẽ có rất nhiều đơn vị của địch.\nSản xuất [accent]hợp kim[]. Xây dựng [accent]Afflict[]. - +sector.peaks.description = Địa hình đồi núi của khu vực này khiến hầu hết các loại đơn vị vô dụng. Các loại đơn vị bay trở nên cần thiết.\nHãy cẩn thận với các công trình phòng thủ trên không của địch. Có thể bị vô hiệu hóa bằng cách tấn công các công trình hỗ trợ. +sector.ravine.description = Một tuyến đường vận chuyển quan trọng cho kẻ địch. Không phát hiện lõi nào trong khu vực, nhưng dự đoán sẽ có nhiều loại kẻ địch đa dạng.\nSản xuất [accent]hợp kim[]. Xây dựng bệ súng [accent]Afflict[]. sector.caldera-erekir.description = Các tài nguyên được phát hiện ở khu vực này được phân bố trên nhiều đảo.\nNghiên cứu và triển khai vận chuyển dựa trên máy bay không người lái. -sector.stronghold.description = Các căn cứ của địch ở khu vực này đang bảo vệ một lượng lớn [accent]thorium[].\nSử dụng nó để phát triển các loại đơn vị và công trình tốt hơn. - -sector.crevice.description = Địch sẽ gửi các đơn vị tấn công mạnh mẽ để tiêu diệt căn cứ của bạn ở khu vực này.\nPhát triển [accent]carbide[] và [accent]Máy nhiệt phân[] là điều cần thiết để sống sót. -sector.siege.description = Khu vực này có hai hẻm núi song song với nhau, kẻ địch sẽ tấn công từ hai phía.\nNghiên cứu [accent]cyanogen[] để có thể chế tạo những xe tank mạnh hơn.\nChú ý: Phát hiện kẻ địch được trang bị tên lửa tầm xa. Các tên lửa có thể bị bắn hạ trước khi va chạm. +sector.stronghold.description = Các căn cứ của địch ở khu vực này đang bảo vệ một lượng lớn [accent]thori[].\nSử dụng nó để phát triển các loại đơn vị và bệ súng cao cấp hơn. +sector.crevice.description = Địch sẽ gửi các đơn vị tấn công mạnh mẽ để triệt hạ căn cứ của bạn ở khu vực này.\nPhát triển [accent]carbide[] và [accent]Máy nhiệt phân[] là điều cần thiết để sống sót. +sector.siege.description = Khu vực này có hai hẻm núi song song sẽ tạo ra một cuộc tấn công theo hai hướng.\nNghiên cứu [accent]cyano[] để có thể chế tạo những đơn vị xe tăng mạnh hơn.\nChú ý: Phát hiện tên lửa tầm xa của kẻ địch. Các tên lửa có thể bị bắn hạ trước khi va chạm. sector.crossroads.description = Các căn cứ của địch ở khu vực này được xây dựng trên các địa hình khác nhau. Nghiên cứu các loại đơn vị khác nhau sao cho phù hợp.\nNgoài ra, một số căn cứ được bảo vệ bởi các máy chiếu khiên chắn. Tìm hiểu cách chúng được cung cấp năng lượng. -sector.karst.description = Khu vực này có rất nhiều tài nguyên, nhưng sẽ bị địch tấn công khi một căn cứ mới đáp.\nTận dụng các tài nguyên và nghiên cứu [accent]sợi lượng tử[]. -sector.origin.description = Khu vực cuối cùng với sự hiện diện của địch rất lớn.\nKhông còn bất cứ thứ gì cần nghiên cứu - tập trung hoàn toàn vào việc tiêu diệt tất cả các căn cứ của địch. +sector.karst.description = Khu vực này có rất nhiều tài nguyên, nhưng sẽ bị địch tấn công khi một lõi mới đáp xuống.\nTận dụng các tài nguyên và nghiên cứu [accent]sợi lượng tử[]. +sector.origin.description = Khu vực cuối cùng với sự hiện diện của địch rất lớn.\nKhông còn bất cứ thứ gì cần nghiên cứu - tập trung hoàn toàn vào việc tiêu diệt tất cả các lõi của địch. -status.burning.name = Cháy +status.burning.name = Đốt cháy status.freezing.name = Đóng băng -status.wet.name = Ẩm +status.wet.name = Ẩm ướt status.muddy.name = Sa lầy status.melting.name = Tan chảy status.sapped.name = Ăn mòn status.electrified.name = Nhiễm điện -status.spore-slowed.name = Nhiễm bào tử +status.spore-slowed.name = Nhiễm bào tử chậm status.tarred.name = Nhiễm dầu status.overdrive.name = Tăng cường status.overclock.name = Gia tốc @@ -875,45 +898,45 @@ status.boss.name = Trùm settings.language = Ngôn ngữ settings.data = Dữ liệu trò chơi settings.reset = Khôi phục về mặc định -settings.rebind = Sửa +settings.rebind = Gán lại settings.resetKey = Đặt lại settings.controls = Điều khiển settings.game = Trò chơi settings.sound = Âm thanh settings.graphics = Đồ họa settings.cleardata = Xóa dữ liệu trò chơi... -settings.clear.confirm = Bạn có chắc chắn muốn xóa dữ liệu này không?\nHành động này không thể hoàn tác! -settings.clearall.confirm = [scarlet]CẢNH BÁO![]\nThao tác này sẽ xóa tất cả dữ liệu, bao gồm bản đồ và các cài đặt.\nSau khi bạn nhấn vào 'ok' trò chơi sẽ xóa tất cả dữ liệu và tự động thoát. +settings.clear.confirm = Bạn có chắc chắn muốn xóa dữ liệu này không?\nThực hiện xong không thể hoàn tác! +settings.clearall.confirm = [scarlet]CẢNH BÁO![]\nThao tác này sẽ xóa tất cả dữ liệu, bao gồm các bản lưu, bản đồ, mở khóa và phím đã gán. \nMột khi bạn nhấn vào 'Đồng ý' thì trò chơi sẽ xóa tất cả dữ liệu và tự động thoát. settings.clearsaves.confirm = Bạn có chắc muốn xóa tất cả bản lưu? settings.clearsaves = Xóa bản lưu -settings.clearresearch = Xóa dữ liệu nghiên cứu -settings.clearresearch.confirm = Bạn có chắc muốn xóa tất cả dữ liệu nghiên cứu từ Chiến dịch? -settings.clearcampaignsaves = Xóa dữ liệu Chiến dịch -settings.clearcampaignsaves.confirm = Bạn có chắc muốn xóa toàn bộ dữ liệu Chiến dịch? +settings.clearresearch = Xóa nghiên cứu +settings.clearresearch.confirm = Bạn có chắc muốn xóa tất cả nghiên cứu từ chiến dịch? +settings.clearcampaignsaves = Xóa bản lưu chiến dịch +settings.clearcampaignsaves.confirm = Bạn có chắc muốn xóa toàn bộ bản lưu chiến dịch? paused = [accent]< Tạm dừng > clear = Xóa -banned = [scarlet]Cấm -unsupported.environment = [scarlet]Môi trường không phù hợp +banned = [scarlet]Bị cấm +unsupported.environment = [scarlet]Môi trường không được hỗ trợ yes = Có no = Không info.title = Thông tin error.title = [scarlet]Đã xảy ra lỗi error.crashtitle = Đã xảy ra lỗi -unit.nobuild = [scarlet]Đơn vị/Công trình không thể xây dựng +unit.nobuild = [scarlet]Đơn vị không thể xây dựng lastaccessed = [lightgray]Truy cập lần cuối: {0} -lastcommanded = [lightgray]Được điều khiển lần cuối: {0} +lastcommanded = [lightgray]Được ra lệnh lần cuối: {0} block.unknown = [lightgray]??? -stat.showinmap = -stat.description = Mô tả +stat.showinmap = +stat.description = Mục đích stat.input = Đầu vào -stat.output = Sản phẩm +stat.output = Đầu ra stat.maxefficiency = Hiệu suất tối đa stat.booster = Tăng cường -stat.tiles = Yêu cầu khu vực +stat.tiles = Yêu cầu ô nền stat.affinities = Phù hợp -stat.opposites = Đối diện -stat.powercapacity = Dung lượng pin +stat.opposites = Đối nghịch +stat.powercapacity = Dung lượng điện stat.powershot = Năng lượng/Phát bắn stat.damage = Sát thương stat.targetsair = Mục tiêu trên không @@ -922,48 +945,48 @@ stat.itemsmoved = Tốc độ dịch chuyển stat.launchtime = Thời gian giữa các lần phóng stat.shootrange = Phạm vi stat.size = Kích thước -stat.displaysize = Kích thước màn hình +stat.displaysize = Kích thước hiển thị stat.liquidcapacity = Dung tích chất lỏng stat.powerrange = Phạm vi năng lượng -stat.linkrange = Phạm vi kết nối -stat.instructions = Hướng dẫn +stat.linkrange = Phạm vi liên kết +stat.instructions = Chỉ lệnh stat.powerconnections = Số lượng kết nối tối đa stat.poweruse = Năng lượng sử dụng stat.powerdamage = Năng lượng/Sát thương stat.itemcapacity = Sức chứa vật phẩm stat.memorycapacity = Dung lượng bộ nhớ -stat.basepowergeneration = Năng lượng tạo ra (cơ bản) +stat.basepowergeneration = Năng lượng tạo ra cơ bản stat.productiontime = Thời gian sản xuất -stat.repairtime = Thời gian sửa +stat.repairtime = Thời gian hoàn thành sửa chữa stat.repairspeed = Tốc độ sửa stat.weapons = Vũ khí -stat.bullet = Đạn -stat.moduletier = Cấp Module -stat.unittype = Unit Type +stat.bullet = Loại đạn +stat.moduletier = Cấp mô-đun +stat.unittype = Kiểu đơn vị stat.speedincrease = Tăng tốc stat.range = Phạm vi stat.drilltier = Khoan được -stat.drillspeed = Tốc độ khoang cơ bản +stat.drillspeed = Tốc độ khoan cơ bản stat.boosteffect = Hiệu ứng tăng cường stat.maxunits = Số đơn vị hoạt động tối đa stat.health = Độ bền stat.armor = Giáp stat.buildtime = Thời gian xây -stat.maxconsecutive = Đầu ra tối đa -stat.buildcost = Yêu cầu +stat.maxconsecutive = Nối tiếp tối đa +stat.buildcost = Chi phí xây stat.inaccuracy = Độ lệch stat.shots = Phát bắn -stat.reload = Phát bắn/Giây +stat.reload = Tốc độ bắn stat.ammo = Đạn stat.shieldhealth = Độ bền khiên -stat.cooldowntime = Thời gian chờ +stat.cooldowntime = Thời gian hồi phục stat.explosiveness = Gây nổ stat.basedeflectchance = Tỷ lệ phản đạn stat.lightningchance = Tỷ lệ phóng điện stat.lightningdamage = Sát thương tia điện stat.flammability = Dễ cháy stat.radioactivity = Phóng xạ -stat.charge = Phóng điện +stat.charge = Tích điện stat.heatcapacity = Nhiệt dung stat.viscosity = Độ nhớt stat.temperature = Nhiệt độ @@ -972,37 +995,68 @@ stat.buildspeed = Tốc độ xây stat.minespeed = Tốc độ đào stat.minetier = Cấp độ đào stat.payloadcapacity = Sức chứa khối hàng -stat.abilities = Khả năng -stat.canboost = Nâng cấp +stat.abilities = Khả năng +stat.canboost = Có thể tăng cường stat.flying = Bay stat.ammouse = Sử dụng đạn +stat.ammocapacity = Trữ lượng đạn stat.damagemultiplier = Hệ số sát thương stat.healthmultiplier = Hệ số độ bền stat.speedmultiplier = Hệ số tốc độ -stat.reloadmultiplier = Hệ số tốc độ tấn công +stat.reloadmultiplier = Hệ số hồi đạn stat.buildspeedmultiplier = Hệ số tốc độ xây dựng stat.reactive = Phản ứng stat.immunities = Miễn nhiễm -stat.healing = Sửa chữa +stat.healing = Hồi phục -ability.forcefield = Tạo khiên -ability.repairfield = Sửa chữa/Xây dựng -ability.statusfield = Vùng gia tốc -ability.unitspawn = Sản xuất -ability.shieldregenfield = Tạo khiên nhỏ -ability.movelightning = Phóng điện khi di chuyển -ability.shieldarc = Khiên Vòng Cung -ability.suppressionfield = Trường sửa chữa +ability.forcefield = Khiên trường lực +ability.forcefield.description = Phát một khiên trường lực hấp thụ các loại đạn +ability.repairfield = Trường sửa chữa +ability.repairfield.description = Sửa chữa các đơn vị gần đó +ability.statusfield = Trường trạng thái +ability.statusfield.description = Áp dụng hiệu ứng trạng thái vào các đơn vị gần đó +ability.unitspawn = Chế tạo +ability.unitspawn.description = Sản xuất đơn vị +ability.shieldregenfield = Trường hồi khiên +ability.shieldregenfield.description = Hồi phục khiên cho các đơn vị gần đó +ability.movelightning = Di chuyển phóng điện +ability.movelightning.description = Giải phóng tia điện khi di chuyển +ability.armorplate = Mảnh giáp +ability.armorplate.description = Giảm sát thương gánh chịu trong khi bắn +ability.shieldarc = Khiên vòng cung +ability.shieldarc.description = Phát một khiên trường lực vòng cung hấp thụ các loại đạn +ability.suppressionfield = Ngăn chặn sửa chữa +ability.suppressionfield.description = Dừng các công trình sửa chữa gần đó ability.energyfield = Trường điện từ -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration -bar.onlycoredeposit = Chỉ có thể đưa vào căn cứ +ability.energyfield.description = Giật điện các kẻ địch gần đó +ability.energyfield.healdescription = Giật điện các kẻ địch gần đó và hồi phục đồng minh +ability.regen = Tự hồi phục +ability.regen.description = Tự hồi phục độ bền theo thời gian +ability.liquidregen = Hấp thụ chất lỏng +ability.liquidregen.description = Hấp thụ chất lỏng để tự hồi phục +ability.spawndeath = Chết sản sinh +ability.spawndeath.description = Sinh ra đơn vị khi chết +ability.liquidexplode = Chết tràn dịch +ability.liquidexplode.description = Tràn chất lỏng khi chết +ability.stat.firingrate = tốc độ bắn [stat]{0}/giây[lightgray] +ability.stat.regen = [stat]{0}[lightgray] độ bền/giây +ability.stat.shield = [stat]{0}[lightgray] khiên +ability.stat.repairspeed = [stat]{0}/giây[lightgray] tốc độ sửa chữa +ability.stat.slurpheal = [stat]{0}[lightgray] độ bền/đơn vị chất lỏng +ability.stat.cooldown = [stat]{0} giây[lightgray] hồi phục +ability.stat.maxtargets = [stat]{0}[lightgray] mục tiêu tối đa +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] số lượng sửa chữa cùng kiểu +ability.stat.damagereduction = [stat]{0}%[lightgray] giảm sát thương +ability.stat.minspeed = tốc độ tối thiểu [stat]{0} ô/giây[lightgray] +ability.stat.duration = thời hạn [stat]{0} giây[lightgray] +ability.stat.buildtime = thời gian xây [stat]{0} giây[lightgray] + +bar.onlycoredeposit = Chỉ được phép đưa vào lõi bar.drilltierreq = Cần máy khoan tốt hơn bar.noresources = Thiếu tài nguyên -bar.corereq = Yêu cầu căn cứ -bar.corefloor = Cần vùng thích hợp xây căn cứ +bar.corereq = Yêu cầu lõi cơ bản +bar.corefloor = Yêu cầu ô nền lõi bar.cargounitcap = Đã đạt sức chứa khối hàng tối đa bar.drillspeed = Tốc độ khoan: {0}/giây bar.pumpspeed = Tốc độ bơm: {0}/giây @@ -1017,49 +1071,49 @@ bar.items = Vật phẩm: {0} bar.capacity = Sức chứa: {0} bar.unitcap = {0} {1}/{2} bar.liquid = Chất lỏng -bar.heat = Nhiệt độ -bar.instability = Mức ổn định -bar.heatamount = Lượng nhiệt: {0} -bar.heatpercent = Lượng nhiệt: {0} ({1}%) +bar.heat = Nhiệt lượng +bar.instability = Bất ổn định +bar.heatamount = Nhiệt lượng: {0} +bar.heatpercent = Nhiệt lượng: {0} ({1}%) bar.power = Năng lượng -bar.progress = Đang xây dựng -bar.loadprogress = Tiến trình -bar.launchcooldown = Chờ phóng +bar.progress = Tiến độ xây dựng +bar.loadprogress = Tiến độ +bar.launchcooldown = Hồi phóng bar.input = Đầu vào -bar.output = Sản phẩm -bar.strength = [stat]{0}[lightgray]x Sức mạnh +bar.output = Đầu ra +bar.strength = [stat]{0}[lightgray]x sức mạnh units.processorcontrol = [lightgray]Điều khiển bởi bộ xử lý bullet.damage = [stat]{0}[lightgray] sát thương bullet.splashdamage = [stat]{0}[lightgray] sát thương diện rộng ~[stat] {1}[lightgray] ô -bullet.incendiary = [stat]cháy +bullet.incendiary = [stat]gây cháy bullet.homing = [stat]truy đuổi bullet.armorpierce = [stat]xuyên giáp -bullet.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 -bullet.lightning = [stat]{0}[lightgray]x tia chớp ~ [stat]{1}[lightgray] sát thương -bullet.buildingdamage = [stat]{0}%[lightgray] sát thương khối -bullet.knockback = [stat]{0}[lightgray] bật lùi -bullet.pierce = [stat]{0}[lightgray]x xuyên mục tiêu +bullet.maxdamagefraction = [stat]{0}%[lightgray] giới hạn sát thương +bullet.suppression = [stat]{0}[lightgray] giây ngăn sửa chữa ~ [stat]{1}[lightgray] ô +bullet.interval = [stat]{0}/giây[lightgray] đạn ngắt quãng: +bullet.frags = [stat]{0}x[lightgray] đạn phá mảnh: +bullet.lightning = [stat]{0}[lightgray]x phóng điện ~ [stat]{1}[lightgray] sát thương +bullet.buildingdamage = [stat]{0}%[lightgray] sát thương công trình +bullet.knockback = [stat]{0}[lightgray] đẩy lùi +bullet.pierce = [stat]{0}[lightgray]x xuyên thấu bullet.infinitepierce = [stat]xuyên thấu -bullet.healpercent = [stat]{0}[lightgray]% sửa chữa -bullet.healamount = [stat]{0}[lightgray] Sửa chữa trực tiếp -bullet.multiplier = [stat]{0}[lightgray]x lượng đạn +bullet.healpercent = [stat]{0}%[lightgray] sửa chữa +bullet.healamount = [stat]{0}[lightgray] sửa chữa trực tiếp +bullet.multiplier = [stat]{0}[lightgray] đạn/vật phẩm bullet.reload = [stat]{0}%[lightgray] tốc độ bắn -bullet.range = [stat]{0}[lightgray] Phạm vi +bullet.range = [stat]{0}[lightgray] ô phạm vi -unit.blocks = Khối -unit.blockssquared = Khối² +unit.blocks = khối +unit.blockssquared = khối² unit.powersecond = đơn vị năng lượng/giây unit.tilessecond = ô/giây unit.liquidsecond = đơn vị chất lỏng/giây unit.itemssecond = vật phẩm/giây unit.liquidunits = đơn vị chất lỏng unit.powerunits = đơn vị năng lượng -unit.heatunits = Đơn vị nhiệt +unit.heatunits = đơn vị nhiệt unit.degrees = độ unit.seconds = giây unit.minutes = phút @@ -1072,18 +1126,21 @@ unit.items = vật phẩm unit.thousands = ng unit.millions = tr unit.billions = tỷ +unit.shots = phát bắn unit.pershot = /phát bắn -category.purpose = Mô tả +category.purpose = Mục đích category.general = Chung category.power = Năng lượng category.liquids = Chất lỏng category.items = Vật phẩm -category.crafting = Vào/Sản phẩm +category.crafting = Đầu vào/ra category.function = Chức năng -category.optional = Cải tiến -setting.skipcoreanimation.name = Bỏ qua hiệu ứng phóng/đáp căn cứ +category.optional = Cải tiến tùy chọn +setting.alwaysmusic.name = Luôn phát nhạc +setting.alwaysmusic.description = Khi bật, âm nhạc sẽ luôn phát lặp lại khi chơi.\nKhi tắt, nó chỉ phát tại các khoảng thời gian ngẫu nhiên. +setting.skipcoreanimation.name = Bỏ qua hiệu ứng phóng/đáp lõi setting.landscape.name = Khóa ngang -setting.shadows.name = Bóng đổ +setting.shadows.name = Đổ bóng setting.blockreplace.name = Tự động đề xuất khối setting.linear.name = Lọc tuyến tính setting.hints.name = Gợi ý @@ -1091,82 +1148,82 @@ setting.logichints.name = Gợi ý Logic setting.backgroundpause.name = Tạm dừng trong nền setting.buildautopause.name = Tự động dừng xây dựng setting.doubletapmine.name = Nhấn đúp để Đào -setting.commandmodehold.name = Nhấn giữ để vào chế độ khiển quân -setting.distinctcontrolgroups.name = Limit One Control Group Per Unit +setting.commandmodehold.name = Nhấn giữ để vào chế độ mệnh lệnh +setting.distinctcontrolgroups.name = Giới hạn một nhóm điều khiển cho mỗi đơn vị setting.modcrashdisable.name = Tắt các mod khi gặp sự cố trong khởi động -setting.animatedwater.name = Hiệu ứng nước -setting.animatedshields.name = Hiệu ứng khiên -setting.playerindicators.name = Hướng người chơi -setting.indicators.name = Hướng kẻ địch +setting.animatedwater.name = Chuyển động bề mặt +setting.animatedshields.name = Chuyển động khiên +setting.playerindicators.name = Chỉ hướng người chơi +setting.indicators.name = Chỉ hướng kẻ địch setting.autotarget.name = Tự động nhắm mục tiêu setting.keyboard.name = Điều khiển bằng chuột + bàn phím setting.touchscreen.name = Điều khiển bằng màn hình cảm ứng setting.fpscap.name = FPS tối đa -setting.fpscap.none = Không giới hạn +setting.fpscap.none = Không có setting.fpscap.text = {0} FPS -setting.uiscale.name = Kích thước giao diện -setting.uiscale.description = Trò chơi sẽ khởi động lại để áp dụng các thay đổi. -setting.swapdiagonal.name = Đặt luôn theo đường chéo +setting.uiscale.name = Tỉ lệ giao diện +setting.uiscale.description = Cần khởi động lại để áp dụng các thay đổi. +setting.swapdiagonal.name = Luôn đặt theo đường chéo setting.difficulty.training = Luyện tập setting.difficulty.easy = Dễ setting.difficulty.normal = Vừa setting.difficulty.hard = Khó -setting.difficulty.insane = Rất khó +setting.difficulty.insane = Điên loạn setting.difficulty.name = Độ khó: setting.screenshake.name = Rung chuyển khung hình -setting.bloomintensity.name = Mức độ vụ nổ -setting.bloomblur.name = Xoá mờ vụ nổ +setting.bloomintensity.name = Mức độ phát sáng +setting.bloomblur.name = Xoá mờ phát sáng setting.effects.name = Hiển thị hiệu ứng setting.destroyedblocks.name = Hiển thị khối bị phá setting.blockstatus.name = Hiển thị trạng thái khối -setting.conveyorpathfinding.name = Tìm đường dẫn băng chuyền +setting.conveyorpathfinding.name = Tìm đường dẫn băng chuyền khi đặt setting.sensitivity.name = Độ nhạy điều khiển setting.saveinterval.name = Khoảng thời gian lưu setting.seconds = {0} giây setting.milliseconds = {0} mili-giây setting.fullscreen.name = Toàn màn hình -setting.borderlesswindow.name = Không viền -setting.borderlesswindow.name.windows = Toàn màn hình (không viền) -setting.borderlesswindow.description = Trò chơi có thể sẽ khởi động lại để áp dụng các thay đổi -setting.fps.name = Hiển thị FPS & Ping +setting.borderlesswindow.name = Cửa sổ không viền +setting.borderlesswindow.name.windows = Toàn màn hình không viền +setting.borderlesswindow.description = Có thể cần khởi động lại để áp dụng các thay đổi. +setting.fps.name = Hiện FPS & Ping setting.console.name = Bật Bảng điều khiển -setting.smoothcamera.name = Chế độ mượt mà +setting.smoothcamera.name = Khung quay mượt mà setting.vsync.name = Đồng bộ dọc (VSync) setting.pixelate.name = Đồ họa pixel -setting.minimap.name = Hiển thị bản đồ mini -setting.coreitems.name = Hiển thị vật phẩm trong căn cứ -setting.position.name = Hiển thị vị trí người chơi +setting.minimap.name = Hiện bản đồ nhỏ +setting.coreitems.name = Hiển thị vật phẩm trong lõi +setting.position.name = Hiện vị trí người chơi setting.mouseposition.name = Hiện vị trí trỏ chuột setting.musicvol.name = Âm lượng nhạc -setting.atmosphere.name = Hiển thị bầu khí quyển hành tinh -setting.drawlight.name = Draw Darkness/Lighting -setting.ambientvol.name = Âm lượng tổng +setting.atmosphere.name = Hiện bầu khí quyển hành tinh +setting.drawlight.name = Vẽ Bóng tối/Ánh sáng +setting.ambientvol.name = Âm lượng môi trường setting.mutemusic.name = Tắt nhạc -setting.sfxvol.name = Âm lượng SFX -setting.mutesound.name = Tắt tiếng -setting.crashreport.name = Gửi báo cáo sự cố -setting.savecreate.name = Tự động lưu -setting.steampublichost.name = Public Game Visibility +setting.sfxvol.name = Âm lượng hiệu ứng âm thanh (SFX) +setting.mutesound.name = Tắt âm +setting.crashreport.name = Gửi báo cáo sự cố ẩn danh +setting.savecreate.name = Tự động tạo bản lưu +setting.steampublichost.name = Hiển thị trò chơi công khai setting.playerlimit.name = Giới hạn người chơi setting.chatopacity.name = Độ mờ trò chuyện setting.lasersopacity.name = Độ mờ kết nối năng lượng setting.bridgeopacity.name = Độ mờ cầu setting.playerchat.name = Hiển thị bong bóng trò chuyện của người chơi -setting.showweather.name = Hiển thị đồ họa thời tiết +setting.showweather.name = Hiện đồ họa thời tiết setting.hidedisplays.name = Ẩn hiển thị logic -setting.macnotch.name = Điều chỉnh giao diện để hiển thị notch -setting.macnotch.description = Trò chơi sẽ khởi động lại để áp dụng các thay đổi +setting.macnotch.name = Giao diện phù hợp với hiển thị tai thỏ (notch) +setting.macnotch.description = Cần khởi động lại để áp dụng các thay đổi steam.friendsonly = Chỉ bạn bè -steam.friendsonly.tooltip = Liệu chỉ bạn bè trên Steam mới có thể tham gia trò chơi của bạn hay không.\nBỏ chọn ô này sẽ làm trò chơi của bạn công khai - mọi có thể tham gia. +steam.friendsonly.tooltip = Liệu chỉ bạn bè trên Steam mới có thể tham gia trò chơi của bạn hay không.\nBỏ chọn ô này sẽ làm trò chơi của bạn công khai - mọi người có thể tham gia. public.beta = Lưu ý rằng phiên bản beta của trò chơi không thể tạo sảnh công khai. -uiscale.reset = Kích thước giao diện đã được thay đổi.\nNhấn "OK" để xác nhận.\n[scarlet]Hoàn lại và thoát trong[accent] {0}[] giây... +uiscale.reset = Tỉ lệ giao diện đã được thay đổi.\nNhấn "Đồng ý" để xác nhận tỉ lệ này.\n[scarlet]Hoàn lại và thoát trong[accent] {0}[] giây... uiscale.cancel = Hủy & Thoát setting.bloom.name = Hiệu ứng phát sáng -keybind.title = Sửa phím +keybind.title = Gán lại phím keybinds.mobile = [scarlet]Hầu hết phím ở đây không hoạt động trên thiết bị di động. Chỉ hỗ trợ di chuyển cơ bản. category.general.name = Chung category.view.name = Xem -category.command.name = Unit Command +category.command.name = Mệnh lệnh đơn vị category.multiplayer.name = Nhiều người chơi category.blocks.name = Chọn khối placement.blockselectkeys = \n[lightgray]Phím: [{0}, @@ -1174,7 +1231,7 @@ keybind.respawn.name = Hồi sinh keybind.control.name = Điều khiển đơn vị keybind.clear_building.name = Xóa công trình keybind.press = Nhấn một phím... -keybind.press.axis = Nhấn một tổ hợp phím hoặc một phím... +keybind.press.axis = Nhấn một trục xoay hoặc một phím... keybind.screenshot.name = Chụp ảnh bản đồ keybind.toggle_power_lines.name = Ẩn/Hiện đường truyền năng lượng keybind.toggle_block_status.name = Ẩn/Hiện trạng thái khối @@ -1183,27 +1240,31 @@ keybind.move_y.name = Di chuyển Y keybind.mouse_move.name = Theo chuột keybind.pan.name = Di chuyển góc nhìn keybind.boost.name = Tăng tốc -keybind.command_mode.name = Chế độ điều khiển quân -keybind.command_queue.name = Unit Command Queue -keybind.create_control_group.name = Create Control Group -keybind.cancel_orders.name = Cancel Orders -keybind.unit_stance_shoot.name = Unit Stance: Shoot -keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire -keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target -keybind.unit_stance_patrol.name = Unit Stance: Patrol -keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload -keybind.rebuild_select.name = Chọn khu vực xây dựng lại +keybind.command_mode.name = Chế độ mệnh lệnh +keybind.command_queue.name = Lệnh tuần tự đơn vị +keybind.create_control_group.name = Tạo nhóm điều khiển +keybind.cancel_orders.name = Hủy lệnh + +keybind.unit_stance_shoot.name = Tư thế đơn vị: Bắn +keybind.unit_stance_hold_fire.name = Tư thế đơn vị: Ngừng bắn +keybind.unit_stance_pursue_target.name = Tư thế đơn vị: Bám đuổi mục tiêu +keybind.unit_stance_patrol.name = Tư thế đơn vị: Tuần tra +keybind.unit_stance_ram.name = Tư thế đơn vị: Tông thẳng + +keybind.unit_command_move.name = Mệnh lệnh đơn vị: Di chuyển +keybind.unit_command_repair.name = Mệnh lệnh đơn vị: Sửa chữa +keybind.unit_command_rebuild.name = Mệnh lệnh đơn vị: Xây lại +keybind.unit_command_assist.name = Mệnh lệnh đơn vị: Hỗ trợ +keybind.unit_command_mine.name = Mệnh lệnh đơn vị: Khai thác +keybind.unit_command_boost.name = Mệnh lệnh đơn vị: Tăng cường +keybind.unit_command_load_units.name = Mệnh lệnh đơn vị: Nhập đơn vị +keybind.unit_command_load_blocks.name = Mệnh lệnh đơn vị: Nhập khối công trình +keybind.unit_command_unload_payload.name = Mệnh lệnh đơn vị: Dỡ khối hàng +keybind.unit_command_enter_payload.name = Mệnh lệnh đơn vị: Vào khối hàng + +keybind.rebuild_select.name = Xây dựng lại khu vực keybind.schematic_select.name = Chọn khu vực -keybind.schematic_menu.name = Menu bản thiết kế +keybind.schematic_menu.name = Trình đơn bản thiết kế keybind.schematic_flip_x.name = Lật bản thiết kế X keybind.schematic_flip_y.name = Lật bản thiết kế Y keybind.category_prev.name = Danh mục trước @@ -1212,20 +1273,20 @@ keybind.block_select_left.name = Chọn khối trái keybind.block_select_right.name = Chọn khối phải keybind.block_select_up.name = Chọn khối trên keybind.block_select_down.name = Chọn khối dưới -keybind.block_select_01.name = Danh mục/Khối 1 -keybind.block_select_02.name = Danh mục/Khối 2 -keybind.block_select_03.name = Danh mục/Khối 3 -keybind.block_select_04.name = Danh mục/Khối 4 -keybind.block_select_05.name = Danh mục/Khối 5 -keybind.block_select_06.name = Danh mục/Khối 6 -keybind.block_select_07.name = Danh mục/Khối 7 -keybind.block_select_08.name = Danh mục/Khối 8 -keybind.block_select_09.name = Danh mục/Khối 9 -keybind.block_select_10.name = Danh mục/Khối 10 -keybind.fullscreen.name = Chế độ toàn màn hình +keybind.block_select_01.name = Chọn Danh mục/Khối 1 +keybind.block_select_02.name = Chọn Danh mục/Khối 2 +keybind.block_select_03.name = Chọn Danh mục/Khối 3 +keybind.block_select_04.name = Chọn Danh mục/Khối 4 +keybind.block_select_05.name = Chọn Danh mục/Khối 5 +keybind.block_select_06.name = Chọn Danh mục/Khối 6 +keybind.block_select_07.name = Chọn Danh mục/Khối 7 +keybind.block_select_08.name = Chọn Danh mục/Khối 8 +keybind.block_select_09.name = Chọn Danh mục/Khối 9 +keybind.block_select_10.name = Chọn Danh mục/Khối 10 +keybind.fullscreen.name = Hoán chuyển toàn màn hình keybind.select.name = Chọn/Bắn keybind.diagonal_placement.name = Đặt chéo -keybind.pick.name = Chọn khối +keybind.pick.name = Nhặt khối keybind.break_block.name = Phá khối keybind.select_all_units.name = Chọn tất cả đơn vị keybind.select_all_unit_factories.name = Chọn tất cả các nhà máy đơn vị @@ -1234,10 +1295,10 @@ keybind.pickupCargo.name = Nhặt hàng keybind.dropCargo.name = Thả hàng keybind.shoot.name = Bắn keybind.zoom.name = Thu phóng -keybind.menu.name = Menu +keybind.menu.name = Trình đơn keybind.pause.name = Tạm dừng -keybind.pause_building.name = Tạm dừng/Tiếp tục Xây -keybind.minimap.name = Bản đồ mini +keybind.pause_building.name = Tạm dừng/Tiếp tục xây dựng +keybind.minimap.name = Bản đồ nhỏ keybind.planet_map.name = Bản đồ hành tinh keybind.research.name = Nghiên cứu keybind.block_info.name = Thông tin khối @@ -1245,72 +1306,76 @@ keybind.chat.name = Trò chuyện keybind.player_list.name = Danh sách người chơi keybind.console.name = Bảng điều khiển keybind.rotate.name = Xoay -keybind.rotateplaced.name = Xoay khối (Giữ) -keybind.toggle_menus.name = Ẩn/Hiện Menu +keybind.rotateplaced.name = Xoay khối đã có (Giữ) +keybind.toggle_menus.name = Ẩn/Hiện Trình đơn keybind.chat_history_prev.name = Lịch sử trò chuyện trước keybind.chat_history_next.name = Lịch sử trò chuyện sau keybind.chat_scroll.name = Cuộn trò chuyện keybind.chat_mode.name = Thay đổi chế độ trò chuyện -keybind.drop_unit.name = Thả quân -keybind.zoom_minimap.name = Thu phóng bản đồ mini +keybind.drop_unit.name = Thả đơn vị +keybind.zoom_minimap.name = Thu phóng bản đồ nhỏ mode.help.title = Mô tả chế độ mode.survival.name = Sinh tồn -mode.survival.description = Chế độ bình thường. Tài nguyên hạn chế và lượt đến tự động.\n[gray]Yêu cầu nơi xuất hiện kẻ địch trong bản đồ để chơi. +mode.survival.description = Chế độ bình thường. Tài nguyên hạn chế và các đợt đến tự động.\n[gray]Yêu cầu nơi xuất hiện kẻ địch trong bản đồ để chơi. mode.sandbox.name = Tự do mode.sandbox.description = Tài nguyên vô hạn và không có thời gian chờ giữa các đợt. mode.editor.name = Chỉnh sửa mode.pvp.name = PvP -mode.pvp.description = Chiến đấu với những người chơi khác trên cùng một bản đồ.\n[gray]Cần ít nhất hai căn cứ có màu khác nhau để chơi. +mode.pvp.description = Chiến đấu với những người chơi khác trên cùng một bản đồ.\n[gray]Cần ít nhất hai lõi có màu khác nhau để chơi. mode.attack.name = Tấn công -mode.attack.description = Phá hủy căn cứ của kẻ địch. \n[gray]Cần căn cứ màu đỏ trong bản đồ để chơi. -mode.custom = Tùy chỉnh luật -rules.invaliddata = Invalid clipboard data. -rules.hidebannedblocks = Ẩn Các Khối Bị Cấm +mode.attack.description = Phá hủy căn cứ của kẻ địch. \n[gray]Cần lõi màu đỏ trong bản đồ để chơi. +mode.custom = Tùy chỉnh quy tắc +rules.invaliddata = Dữ liệu bộ nhớ tạm không hợp lệ. +rules.hidebannedblocks = Ẩn các khối bị cấm rules.infiniteresources = Tài nguyên vô hạn -rules.onlydepositcore = Chỉ cho phép đưa tài nguyên vào căn cứ -rules.derelictrepair = Allow Derelict Block Repair +rules.onlydepositcore = Chỉ cho phép đưa tài nguyên vào lõi +rules.derelictrepair = Cho phép sửa khối bỏ hoang rules.reactorexplosions = Nổ lò phản ứng -rules.coreincinerates = Hủy vật phẩm khi căn cứ đầy +rules.coreincinerates = Hủy vật phẩm khi lõi đầy rules.disableworldprocessors = Vô hiệu hoá bộ xử lý thế giới rules.schematic = Cho phép dùng bản thiết kế rules.wavetimer = Đếm ngược đợt rules.wavesending = Gửi đợt +rules.allowedit = Cho phép sửa quy tắc +rules.allowedit.info = Khi được bật, người chơi có thể chỉnh sửa các quy tắc trong lúc chơi thông qua nút ở góc dưới bên trái của Trình đơn tạm dừng. rules.waves = Đợt +rules.airUseSpawns = Các đơn vị không quân dùng điểm xuất hiện rules.attack = Chế độ tấn công rules.buildai = AI Xây dựng căn cứ rules.buildaitier = Cấp độ AI xây dựng -rules.rtsai = AI Chiến thuật +rules.rtsai = AI Chiến thuật [red](WIP - Đang hoàn thiện) rules.rtsminsquadsize = Kích thước đội hình tối thiểu rules.rtsmaxsquadsize = Kích thước đội hình tối đa rules.rtsminattackweight = Sức tấn công tối thiểu -rules.cleanupdeadteams = Xóa công trình của đội bị đánh bại (PvP) -rules.corecapture = Chiếm căn cứ khi phá hủy -rules.polygoncoreprotection = Bảo vệ lõi kiểu đa giác. +rules.cleanupdeadteams = Dọn sạch công trình của đội bị đánh bại (PvP) +rules.corecapture = Chiếm lõi khi phá hủy +rules.polygoncoreprotection = Bảo vệ lõi kiểu đa giác rules.placerangecheck = Kiểm tra phạm vi xây dựng -rules.enemyCheat = Tài nguyên vô hạn (kẻ địch) +rules.enemyCheat = Tài nguyên kẻ địch vô hạn rules.blockhealthmultiplier = Hệ số độ bền khối rules.blockdamagemultiplier = Hệ số sát thương của khối -rules.unitbuildspeedmultiplier = Hệ số tốc độ sản xuất lính -rules.unitcostmultiplier = Hệ số yêu cầu tài nguyên sản xuất đơn vị -rules.unithealthmultiplier = Hệ số máu của đơn vị +rules.unitbuildspeedmultiplier = Hệ số tốc độ sản xuất đơn vị +rules.unitcostmultiplier = Hệ số chi phí sản xuất đơn vị +rules.unithealthmultiplier = Hệ số độ bền của đơn vị rules.unitdamagemultiplier = Hệ số sát thương của đơn vị rules.unitcrashdamagemultiplier = Hệ số sát thương của đơn vị khi bị bắn rơi rules.solarmultiplier = Hệ số năng lượng mặt trời -rules.unitcapvariable = Căn cứ tăng giới hạn đơn vị -rules.unitcap = Giới hạn đơn vị +rules.unitcapvariable = Lõi tăng giới hạn đơn vị +rules.unitpayloadsexplode = Khối hàng mang theo phát nổ cùng đơn vị +rules.unitcap = Giới hạn đơn vị ban đầu rules.limitarea = Giới hạn kích thước bản đồ -rules.enemycorebuildradius = Bán kính không xây dựng trong căn cứ của kẻ địch:[lightgray] (ô) -rules.wavespacing = Thời gian giữa các đợt:[lightgray] (giây) -rules.initialwavespacing = Thời gian giữa các đợt ban đầu:[lightgray] (sec) +rules.enemycorebuildradius = Bán kính không xây dựng từ lõi của kẻ địch:[lightgray] (ô) +rules.wavespacing = Giãn cách đợt:[lightgray] (giây) +rules.initialwavespacing = Giãn cách đợt đầu:[lightgray] (giây) rules.buildcostmultiplier = Hệ số chi phí xây dựng rules.buildspeedmultiplier = Hệ số tốc độ xây dựng -rules.deconstructrefundmultiplier = Hệ số số vật phẩm hoàn lại khi phá công trình +rules.deconstructrefundmultiplier = Hệ số số hoàn trả khi phá dỡ rules.waitForWaveToEnd = Đợt chờ hết kẻ địch -rules.wavelimit = Bản đồ kết thúc sau lượt +rules.wavelimit = Bản đồ kết thúc sau đợt rules.dropzoneradius = Bán kính vùng thả:[lightgray] (ô) -rules.unitammo = Đơn vị cần đạn -rules.enemyteam = Đội quân địch +rules.unitammo = Đơn vị cần đạn [red](có thể bị loại bỏ) +rules.enemyteam = Đội kẻ địch rules.playerteam = Đội người chơi rules.title.waves = Đợt rules.title.resourcesbuilding = Tài nguyên & Xây dựng @@ -1321,9 +1386,9 @@ rules.title.environment = Môi trường rules.title.teams = Đội rules.title.planet = Hành tinh rules.lighting = Ánh sáng -rules.fog = Hạn chế tầm nhìn +rules.fog = Sương mù chiến tranb rules.fire = Lửa -rules.anyenv = +rules.anyenv = rules.explosions = Sát thương nổ của Khối/Đơn vị rules.ambientlight = Ánh sáng môi trường rules.weather = Thời tiết @@ -1331,13 +1396,17 @@ rules.weather.frequency = Tần suất: rules.weather.always = Luôn luôn rules.weather.duration = Thời gian: +rules.placerangecheck.info = Ngăn chặn người chơi khỏi việc đặt bất kỳ thứ gì gần công trình kẻ địch. Khi cố đặt một bệ súng, phạm vi sẽ bị tăng lên, để bệ súng không thể bắn tới kẻ địch. +rules.onlydepositcore.info = Ngăn chặn các đơn vị khỏi việc thả vật phẩm vào bất kỳ công trình nào ngoài lõi. + content.item.name = Vật phẩm content.liquid.name = Chất lỏng content.unit.name = Đơn vị content.block.name = Khối -content.status.name = Trạng thái hiệu ứng +content.status.name = Hiệu ứng trạng thái content.sector.name = Khu vực content.team.name = Phe + wallore = (Tường) item.copper.name = Đồng @@ -1345,7 +1414,7 @@ item.lead.name = Chì item.coal.name = Than item.graphite.name = Than chì item.titanium.name = Titan -item.thorium.name = Thorium +item.thorium.name = Thori item.silicon.name = Silicon item.plastanium.name = Nhựa item.phase-fabric.name = Sợi lượng tử @@ -1357,23 +1426,23 @@ item.pyratite.name = Nhiệt thạch item.metaglass.name = Thuỷ tinh item.scrap.name = Phế liệu item.fissile-matter.name = Vật liệu phóng xạ -item.beryllium.name = Beryllium +item.beryllium.name = Beryli item.tungsten.name = Tungsten -item.oxide.name = Ô-xít -item.carbide.name = Hợp kim Carbide +item.oxide.name = Ôxit +item.carbide.name = Carbide item.dormant-cyst.name = U nang bất hoạt liquid.water.name = Nước liquid.slag.name = Xỉ nóng chảy liquid.oil.name = Dầu liquid.cryofluid.name = Chất làm lạnh -liquid.neoplasm.name = Dị thể +liquid.neoplasm.name = Tế bào tân sinh liquid.arkycite.name = Arkycite -liquid.gallium.name = Thuỷ Ngân -liquid.ozone.name = Ô-zôn -liquid.hydrogen.name = Hy-dro lỏng -liquid.nitrogen.name = Ni-tơ lỏng -liquid.cyanogen.name = Cyanogen +liquid.gallium.name = Gali +liquid.ozone.name = Ôzôn +liquid.hydrogen.name = Hydro +liquid.nitrogen.name = Nitro +liquid.cyanogen.name = Cyano unit.dagger.name = Dagger unit.mace.name = Mace @@ -1413,6 +1482,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 @@ -1438,8 +1508,8 @@ unit.renale.name = Renale block.parallax.name = Parallax block.cliff.name = Vách đá -block.sand-boulder.name = Tường cát -block.basalt-boulder.name = Tường đá huyền nhũ +block.sand-boulder.name = Tảng cát +block.basalt-boulder.name = Tảng đá huyền nhũ block.grass.name = Cỏ block.molten-slag.name = Xỉ nóng chảy block.pooled-cryofluid.name = Chất làm lạnh @@ -1452,7 +1522,7 @@ block.sand-wall.name = Tường cát block.spore-pine.name = Cây thông bào tử block.spore-wall.name = Tường bào tử block.boulder.name = Tảng đá -block.snow-boulder.name = Tảng băng +block.snow-boulder.name = Tảng tuyết block.snow-pine.name = Cây thông tuyết block.shale.name = Đá phiến sét block.shale-boulder.name = Tảng đá phiến sét @@ -1464,15 +1534,15 @@ block.scrap-wall.name = Tường phế liệu block.scrap-wall-large.name = Tường phế liệu lớn block.scrap-wall-huge.name = Tường phế liệu khổng lồ block.scrap-wall-gigantic.name = Tường phế liệu siêu khổng lồ -block.thruster.name = Thruster +block.thruster.name = Máy đẩy block.kiln.name = Lò nung block.graphite-press.name = Máy nén than chì block.multi-press.name = Máy nén than chì lớn block.constructing = {0} [lightgray](Đang xây dựng) -block.spawn.name = Khu vực tạo ra kẻ địch -block.core-shard.name = Căn cứ: Cơ sở -block.core-foundation.name = Căn cứ: Trụ sở -block.core-nucleus.name = Căn cứ: Trung tâm +block.spawn.name = Điểm tạo ra kẻ địch +block.core-shard.name = Lõi: Cơ sở +block.core-foundation.name = Lõi: Trụ sở +block.core-nucleus.name = Lõi: Trung tâm block.deep-water.name = Nước sâu block.shallow-water.name = Nước block.tainted-water.name = Nước nhiễm bẩn @@ -1487,7 +1557,7 @@ block.snow.name = Tuyết block.crater-stone.name = Đá miệng núi lửa block.sand-water.name = Nước cát block.darksand-water.name = Nước cát đen -block.char.name = Char +block.char.name = Than block.dacite.name = Đá Dacit block.rhyolite.name = Đá Ryolit block.dacite-wall.name = Tường Dacit @@ -1509,7 +1579,7 @@ block.metal-floor-2.name = Nền kim loại 2 block.metal-floor-3.name = Nền kim loại 3 block.metal-floor-4.name = Nền kim loại 4 block.metal-floor-5.name = Nền kim loại 5 -block.metal-floor-damaged.name = Nền kim loại hư hỏng +block.metal-floor-damaged.name = Nền kim loại bị hỏng block.dark-panel-1.name = Nền tối 1 block.dark-panel-2.name = Nền tối 2 block.dark-panel-3.name = Nền tối 3 @@ -1528,8 +1598,8 @@ block.plastanium-wall.name = Tường Nhựa block.plastanium-wall-large.name = Tường Nhựa lớn block.phase-wall.name = Tường lượng tử block.phase-wall-large.name = Tường lượng tử lớn -block.thorium-wall.name = Tường Thorium -block.thorium-wall-large.name = Tường Thorium lớn +block.thorium-wall.name = Tường Thori +block.thorium-wall-large.name = Tường Thori lớn block.door.name = Cửa block.door-large.name = Cửa lớn block.duo.name = Duo @@ -1549,23 +1619,23 @@ block.inverted-sorter.name = Bộ lọc ngược block.message.name = Thông điệp block.reinforced-message.name = Thông điệp [Gia cố] block.world-message.name = Thông điệp thế giới -block.world-switch.name = World Switch +block.world-switch.name = Công tắc thế giới block.illuminator.name = Đèn block.overflow-gate.name = Cổng tràn block.underflow-gate.name = Cổng tràn ngược block.silicon-smelter.name = Máy nấu silicon block.phase-weaver.name = Máy dệt lượng tử block.pulverizer.name = Máy nghiền -block.cryofluid-mixer.name = Máy sản xuất chất làm lạnh +block.cryofluid-mixer.name = Máy trộn chất làm lạnh block.melter.name = Lò nung chảy -block.incinerator.name = Máy phân hủy +block.incinerator.name = Máy thiêu hủy block.spore-press.name = Máy nén bào tử block.separator.name = Máy phân tách -block.coal-centrifuge.name = Máy tạo than +block.coal-centrifuge.name = Máy ly tâm than block.power-node.name = Chốt điện block.power-node-large.name = Chốt điện lớn -block.surge-tower.name = Tháp điện -block.diode.name = Diode pin +block.surge-tower.name = Tháp điện hợp kim +block.diode.name = Chuyển dòng pin block.battery.name = Pin block.battery-large.name = Pin lớn block.combustion-generator.name = Máy phát điện đốt cháy @@ -1576,7 +1646,7 @@ block.mechanical-drill.name = Máy khoan cơ khí block.pneumatic-drill.name = Máy khoan khí nén block.laser-drill.name = Máy khoan laser block.water-extractor.name = Máy khoan nước -block.cultivator.name = Máy nuôi cấy bào tử +block.cultivator.name = Máy nuôi cấy block.conduit.name = Ống dẫn block.mechanical-pump.name = Bơm cơ khí block.item-source.name = Nguồn vật phẩm @@ -1586,157 +1656,159 @@ block.liquid-void.name = Hủy chất lỏng block.power-void.name = Hủy năng lượng block.power-source.name = Nguồn năng lượng block.unloader.name = Điểm dỡ hàng -block.vault.name = Nhà kho +block.vault.name = Kho chứa block.wave.name = Wave -block.tsunami.name = Sóng thần +block.tsunami.name = Tsunami block.swarmer.name = Swarmer block.salvo.name = Salvo block.ripple.name = Ripple block.phase-conveyor.name = Băng chuyền lượng tử -block.bridge-conveyor.name = Cầu dẫn -block.plastanium-compressor.name = Máy sản xuất nhựa +block.bridge-conveyor.name = Cầu dẫn băng chuyền +block.plastanium-compressor.name = Máy nén nhựa block.pyratite-mixer.name = Máy trộn nhiệt thạch block.blast-mixer.name = Máy trộn chất nổ -block.solar-panel.name = Pin mặt trời -block.solar-panel-large.name = Pin mặt trời lớn +block.solar-panel.name = Tấm pin mặt trời +block.solar-panel-large.name = Tấm pin mặt trời lớn block.oil-extractor.name = Máy khoan dầu block.repair-point.name = Điểm sửa chữa block.repair-turret.name = Súng sữa chữa -block.pulse-conduit.name = Ống dẫn titan +block.pulse-conduit.name = Ống dẫn xung mạch block.plated-conduit.name = Ống dẫn bọc giáp block.phase-conduit.name = Ống dẫn lượng tử block.liquid-router.name = Bộ phân phát chất lỏng -block.liquid-tank.name = Thùng chất lỏng -block.liquid-container.name = Bình chất lỏng +block.liquid-tank.name = Bể chứa chất lỏng +block.liquid-container.name = Thùng chứa chất lỏng block.liquid-junction.name = Giao điểm chất lỏng -block.bridge-conduit.name = Cầu dẫn chất lỏng -block.rotary-pump.name = Bơm điện -block.thorium-reactor.name = Lò phản ứng Thorium +block.bridge-conduit.name = Cầu ống dẫn +block.rotary-pump.name = Bơm xoáy +block.thorium-reactor.name = Lò phản ứng Thori block.mass-driver.name = Máy phóng điện từ -block.blast-drill.name = Máy khoan thủy lực -block.impulse-pump.name = Bơm nhiệt +block.blast-drill.name = Máy khoan khí nổ +block.impulse-pump.name = Bơm xung lực block.thermal-generator.name = Máy phát nhiệt điện block.surge-smelter.name = Lò luyện hợp kim block.mender.name = Máy sửa chữa -block.mend-projector.name = Máy sửa lớn +block.mend-projector.name = Máy sửa chữa lớn block.surge-wall.name = Tường hợp kim block.surge-wall-large.name = Tường hợp kim lớn block.cyclone.name = Cyclone block.fuse.name = Fuse block.shock-mine.name = Mìn gây sốc -block.overdrive-projector.name = Máy tăng tốc -block.force-projector.name = Máy chiếu trường lực (Khiên) +block.overdrive-projector.name = Máy chiếu tăng tốc +block.force-projector.name = Máy chiếu trường lực block.arc.name = Arc -block.rtg-generator.name = Máy phát điện RTG +block.rtg-generator.name = Máy phát diện đồng vị phóng xạ block.spectre.name = Spectre block.meltdown.name = Meltdown block.foreshadow.name = Foreshadow -block.container.name = Kho chứa +block.container.name = Thùng chứa block.launch-pad.name = Bệ phóng block.segment.name = Segment block.ground-factory.name = Nhà máy Bộ binh block.air-factory.name = Nhà máy Không quân block.naval-factory.name = Nhà máy Hải quân -block.additive-reconstructor.name = Máy nâng cấp đơn vị cấp 2 -block.multiplicative-reconstructor.name = Máy nâng cấp đơn vị cấp 3 -block.exponential-reconstructor.name = Máy nâng cấp đơn vị cấp 4 -block.tetrative-reconstructor.name = Máy nâng cấp đơn vị cấp 5 +block.additive-reconstructor.name = Máy tái thiết cấp cộng +block.multiplicative-reconstructor.name = Máy tái thiết cấp nhân +block.exponential-reconstructor.name = Máy tái thiết cấp mũ +block.tetrative-reconstructor.name = Máy tái thiết cấp lũy thừa lặp block.payload-conveyor.name = Băng chuyền khối hàng -block.payload-router.name = Bộ định tuyến khối hàng +block.payload-router.name = Bộ phân phát khối hàng block.duct.name = Ống chân không block.duct-router.name = Bộ phân phát chân không block.duct-bridge.name = Cầu dẫn chân không block.large-payload-mass-driver.name = Máy phóng từ trường lớn block.payload-void.name = Huỷ khối hàng block.payload-source.name = Nguồn khối hàng -block.disassembler.name = Máy phân tách lớn +block.disassembler.name = Máy phân rã block.silicon-crucible.name = Máy nấu Silicon lớn -block.overdrive-dome.name = Máy tăng tốc lớn +block.overdrive-dome.name = Máy chiếu tăng tốc lớn block.interplanetary-accelerator.name = Máy gia tốc liên hành tinh block.constructor.name = Máy chế tạo block.constructor.description = Chế tạo các khối có kích thước 2x2 ô. block.large-constructor.name = Máy chế tạo lớn block.large-constructor.description = Chế tạo các khối có kích thước lên đến 4x4 ô. -block.deconstructor.name = Máy tháo dỡ +block.deconstructor.name = Máy tháo dỡ lớn block.deconstructor.description = Tháo dỡ khối và đơn vị, trả lại 100% nguyên liệu. block.payload-loader.name = Máy nạp vật phẩm block.payload-loader.description = Nạp chất lỏng và vật phẩm vào khối. block.payload-unloader.name = Máy dỡ vật phẩm block.payload-unloader.description = Lấy chất lỏng và vật phẩm từ khối. block.heat-source.name = Nguồn nhiệt -block.heat-source.description = Khối này cho bạn vô hạn nhiệt. +block.heat-source.description = Xuất ra lượng nhiệt lớn. Chỉ chế độ Tự do. + +#Erekir block.empty.name = Trống -block.rhyolite-crater.name = Miệng Núi Lửa Rhyolit -block.rough-rhyolite.name = Rhyolite Thô -block.regolith.name = Lớp Đất Mặt -block.yellow-stone.name = Đá Vàng +block.rhyolite-crater.name = Miệng núi lửa Rhyolit +block.rough-rhyolite.name = Rhyolit thô +block.regolith.name = Lớp đất mặt +block.yellow-stone.name = Đá vàng block.carbon-stone.name = Đá Carbon block.ferric-stone.name = Đá Ferric block.ferric-craters.name = Miệng núi lửa Ferric block.beryllic-stone.name = Đá Beryllic -block.crystalline-stone.name = Đá Pha Lê -block.crystal-floor.name = Nền Pha Lê -block.yellow-stone-plates.name = Tấm Đá Vàng -block.red-stone.name = Đá Đỏ -block.dense-red-stone.name = Đá Đỏ Dày -block.red-ice.name = Băng Đỏ +block.crystalline-stone.name = Đá pha lê +block.crystal-floor.name = Nền pha lê +block.yellow-stone-plates.name = Tấm đá vàng +block.red-stone.name = Đá đỏ +block.dense-red-stone.name = Đá đỏ dày +block.red-ice.name = Băng đỏ block.arkycite-floor.name = Nền Arkycite block.arkyic-stone.name = Đá Arkyic -block.rhyolite-vent.name = Lỗ Thông Hơi Rhyolite -block.carbon-vent.name = Lỗ Thông Hơi Carbon -block.arkyic-vent.name = Lỗ Thông Hơi Arkyic -block.yellow-stone-vent.name = Lỗ Thông Hơi Đá Vàng -block.red-stone-vent.name = Lỗ Thông Hơi Đá Đỏ -block.crystalline-vent.name = Lỗ thông hơi Pha Lê -block.redmat.name = Redmat -block.bluemat.name = Bluemat -block.core-zone.name = Khu Vực Căn Cứ -block.regolith-wall.name = Tường Regolith -block.yellow-stone-wall.name = Tường Đá Vàng -block.rhyolite-wall.name = Tường Rhyolite +block.rhyolite-vent.name = Lỗ hơi nước Rhyolit +block.carbon-vent.name = Lỗ hơi nước Carbon +block.arkyic-vent.name = Lỗ hơi nước Arkyic +block.yellow-stone-vent.name = Lỗ hơi nước đá vàng +block.red-stone-vent.name = Lỗ hơi nước đá đỏ +block.crystalline-vent.name = Lỗ hơi nước pha lê +block.redmat.name = Thảm đỏ +block.bluemat.name = Thảm xanh +block.core-zone.name = Vùng đặt lõi +block.regolith-wall.name = Tường đất mặt +block.yellow-stone-wall.name = Tường đá vàng +block.rhyolite-wall.name = Tường Rhyolit block.carbon-wall.name = Tường Carbon -block.ferric-stone-wall.name = Tường Đá Ferric -block.beryllic-stone-wall.name = Tường Đá Beryllic +block.ferric-stone-wall.name = Tường đá Ferric +block.beryllic-stone-wall.name = Tường đá Beryllic block.arkyic-wall.name = Tường Arkyic -block.crystalline-stone-wall.name = Tường Pha Lê -block.red-ice-wall.name = Tường Băng Đỏ -block.red-stone-wall.name = Tường Đá Đỏ -block.red-diamond-wall.name = Tường Kim Cương Đỏ -block.redweed.name = Rêu Đỏ -block.pur-bush.name = Pur Bush -block.yellowcoral.name = Yellowcoral -block.carbon-boulder.name = Tảng Đá Carbon -block.ferric-boulder.name = Tảng Đá Ferric -block.beryllic-boulder.name = Tảng Đá Beryllic -block.yellow-stone-boulder.name = Tảng Đá Vàng -block.arkyic-boulder.name = Tảng Đá Arkyic -block.crystal-cluster.name = Cụm Pha Lê -block.vibrant-crystal-cluster.name = Cụm Pha Lê Sáng -block.crystal-blocks.name = Khối Pha Lê -block.crystal-orbs.name = Quả Cầu Pha Lê -block.crystalline-boulder.name = Tảng Đá Pha Lê -block.red-ice-boulder.name = Tảng Băng Đỏ -block.rhyolite-boulder.name = Tảng Đá Rhyolite -block.red-stone-boulder.name = Tảng Đá Đỏ -block.graphitic-wall.name = Tường Than Chì +block.crystalline-stone-wall.name = Tường đá pha lê +block.red-ice-wall.name = Tường băng đỏ +block.red-stone-wall.name = Tường đá đỏ +block.red-diamond-wall.name = Tường kim cương đỏ +block.redweed.name = Rêu đỏ +block.pur-bush.name = Bụi cây tím +block.yellowcoral.name = San hô vàng +block.carbon-boulder.name = Tảng đá Carbon +block.ferric-boulder.name = Tảng đá Ferric +block.beryllic-boulder.name = Tảng đá Beryllic +block.yellow-stone-boulder.name = Tảng đá vàng +block.arkyic-boulder.name = Tảng đá Arkyic +block.crystal-cluster.name = Cụm pha lê +block.vibrant-crystal-cluster.name = Cụm pha lê sống động +block.crystal-blocks.name = Khối pha lê +block.crystal-orbs.name = Quả cầu pha lê +block.crystalline-boulder.name = Tảng đá pha lê +block.red-ice-boulder.name = Tảng băng đỏ +block.rhyolite-boulder.name = Tảng đá Rhyolit +block.red-stone-boulder.name = Tảng đá đỏ +block.graphitic-wall.name = Tường than chì block.silicon-arc-furnace.name = Lò tinh luyện Silicon block.electrolyzer.name = Máy điện phân -block.atmospheric-concentrator.name = Máy thu hơi nước -block.oxidation-chamber.name = Bể Oxi hoá -block.electric-heater.name = Máy tạo nhiệt bằng điện -block.slag-heater.name = Máy tạo nhiệt bằng Xỉ -block.phase-heater.name = Máy tạo nhiệt lượng tử +block.atmospheric-concentrator.name = Máy ngưng tụ khí quyển +block.oxidation-chamber.name = Bể Oxy hoá +block.electric-heater.name = Máy nhiệt từ điện +block.slag-heater.name = Máy nhiệt từ xỉ +block.phase-heater.name = Máy nhiệt từ lượng tử block.heat-redirector.name = Khối điều hướng nhiệt -block.heat-router.name = Khối chia nhiệt -block.slag-incinerator.name = Lò nung huỷ vật phẩm -block.carbide-crucible.name = Máy nung Carbide -block.slag-centrifuge.name = Máy nấu Thuỷ ngân -block.surge-crucible.name = Máy tinh chế Hợp kim +block.heat-router.name = Khối phân phát nhiệt +block.slag-incinerator.name = Lò xỉ huỷ vật phẩm +block.carbide-crucible.name = Máy nấu Carbide +block.slag-centrifuge.name = Máy ly tâm xỉ +block.surge-crucible.name = Máy nấu hợp kim block.cyanogen-synthesizer.name = Máy tổng hợp Cyano block.phase-synthesizer.name = Máy tổng hợp lượng tử block.heat-reactor.name = Lò phản ứng nhiệt -block.beryllium-wall.name = Tường Beryllium -block.beryllium-wall-large.name = Tường Beryllium lớn +block.beryllium-wall.name = Tường Beryl +block.beryllium-wall-large.name = Tường Beryl lớn block.tungsten-wall.name = Tường Tungsten block.tungsten-wall-large.name = Tường Tungsten lớn block.blast-door.name = Cửa tự động @@ -1744,45 +1816,45 @@ block.carbide-wall.name = Tường Carbide block.carbide-wall-large.name = Tường Carbide lớn block.reinforced-surge-wall.name = Tường Hợp kim cứng block.reinforced-surge-wall-large.name = Tường Hợp kim cứng lớn -block.shielded-wall.name = Tường khiên trường lực +block.shielded-wall.name = Tường khiên chắn block.radar.name = Máy quét -block.build-tower.name = Máy hỗ trợ xây dựng -block.regen-projector.name = Máy chiếu trường lực hồi phục +block.build-tower.name = Tháp xây dựng +block.regen-projector.name = Máy chiếu hồi phục block.shockwave-tower.name = Máy tạo xung điện block.shield-projector.name = Máy chiếu khiên chắn block.large-shield-projector.name = Máy chiếu khiên chắn lớn block.armored-duct.name = Ống chân không bọc giáp block.overflow-duct.name = Ống tràn chân không block.underflow-duct.name = Ống tràn ngược chân không -block.duct-unloader.name = Điểm dỡ hàng từ ống +block.duct-unloader.name = Điểm dỡ hàng chân không block.surge-conveyor.name = Băng chuyền hợp kim -block.surge-router.name = Máy phân phát hợp kim -block.unit-cargo-loader.name = Điểm tải hàng đơn vị. +block.surge-router.name = Bộ phân phát hợp kim +block.unit-cargo-loader.name = Điểm tải hàng đơn vị block.unit-cargo-unload-point.name = Điểm thả hàng đơn vị block.reinforced-pump.name = Máy bơm gia cố -block.reinforced-conduit.name = Ống dẫn cứng -block.reinforced-liquid-junction.name = Điểm giao ống dẫn cứng -block.reinforced-bridge-conduit.name = Cầu ống dẫn cứng -block.reinforced-liquid-router.name = Bộ phân phát chất lỏng cứng -block.reinforced-liquid-container.name = Container chất lỏng gia cố +block.reinforced-conduit.name = Ống dẫn gia cố +block.reinforced-liquid-junction.name = Điểm giao chất lỏng gia cố +block.reinforced-bridge-conduit.name = Cầu ống dẫn gia cố +block.reinforced-liquid-router.name = Bộ phân phát chất lỏng gia cố +block.reinforced-liquid-container.name = Thùng chứa chất lỏng gia cố block.reinforced-liquid-tank.name = Bể chứa chất lỏng gia cố block.beam-node.name = Chốt tia điện -block.beam-tower.name = Chốt tia điện lớn -block.beam-link.name = Chốt viễn minh -block.turbine-condenser.name = Turbine điện hơi nước +block.beam-tower.name = Tháp tia điện +block.beam-link.name = Liên kết tia điện +block.turbine-condenser.name = Tua-bin điện hơi nước block.chemical-combustion-chamber.name = Bể điện hoá -block.pyrolysis-generator.name = Máy nhiệt phân +block.pyrolysis-generator.name = Máy phát điện nhiệt phân block.vent-condenser.name = Máy ngưng tụ hơi nước -block.cliff-crusher.name = Máy phá đá +block.cliff-crusher.name = Máy nghiền vách đá block.plasma-bore.name = Khoan plasma block.large-plasma-bore.name = Khoan plasma lớn block.impact-drill.name = Máy khoan động lực block.eruption-drill.name = Máy khoan siêu động lực -block.core-bastion.name = Căn cứ: Pháo đài -block.core-citadel.name = Căn cứ: Thủ phủ -block.core-acropolis.name = Căn cứ: Đại đô -block.reinforced-container.name = Container gia cố -block.reinforced-vault.name = Kho gia cố +block.core-bastion.name = Lõi: Pháo đài +block.core-citadel.name = Lõi: Thủ phủ +block.core-acropolis.name = Lõi: Đại đô +block.reinforced-container.name = Thùng chứa gia cố +block.reinforced-vault.name = Kho chứa gia cố block.breach.name = Breach block.sublimate.name = Sublimate block.titan.name = Titan @@ -1790,247 +1862,255 @@ block.disperse.name = Disperse block.afflict.name = Afflict block.lustre.name = Lustre block.scathe.name = Scathe -block.tank-refabricator.name = Máy nâng cấp xe tăng -block.mech-refabricator.name = Máy nâng cấp lính cơ động -block.ship-refabricator.name = Máy nâng cấp phi thuyền +block.tank-refabricator.name = Máy tái tạo xe tăng +block.mech-refabricator.name = Máy tái tạo máy cơ động +block.ship-refabricator.name = Máy tái tạo phi thuyền block.tank-assembler.name = Máy lắp ráp xe tăng block.ship-assembler.name = Máy lắp ráp phi thuyền -block.mech-assembler.name = Máy lắp ráp lính cơ động +block.mech-assembler.name = Máy lắp ráp máy cơ động block.reinforced-payload-conveyor.name = Băng chuyền khối hàng gia cố block.reinforced-payload-router.name = Bộ phân phát khối hàng gia cố -block.payload-mass-driver.name = Máy phóng từ trường -block.small-deconstructor.name = Máy tháo dỡ nhỏ +block.payload-mass-driver.name = Máy phóng từ trường khối hàng +block.small-deconstructor.name = Máy tháo dỡ block.canvas.name = Màn hình vẽ block.world-processor.name = Bộ xử lý thế giới block.world-cell.name = Bộ nhớ thế giới block.tank-fabricator.name = Máy chế tạo xe tăng -block.mech-fabricator.name = Máy chế tạo lính cơ động +block.mech-fabricator.name = Máy chế tạo cơ động block.ship-fabricator.name = Máy chế tạo phi thuyền -block.prime-refabricator.name = Máy chuyên biệt hoá đơn vị -block.unit-repair-tower.name = Máy sửa chữa đơn vị +block.prime-refabricator.name = Máy tái tạo hoàn thiện +block.unit-repair-tower.name = Tháp sửa chữa đơn vị block.diffuse.name = Diffuse -block.basic-assembler-module.name = Module lắp ráp đơn vị +block.basic-assembler-module.name = Mô-đun lắp ráp đơn vị block.smite.name = Smite block.malign.name = Malign -block.flux-reactor.name = Lò phản ứng bốc hơi +block.flux-reactor.name = Lò phản ứng thông lượng block.neoplasia-reactor.name = Lò phản ứng siêu tân sinh + block.switch.name = Công tắc -block.micro-processor.name = Bộ xử lý nhỏ -block.logic-processor.name = Bộ xử lý -block.hyper-processor.name = Bộ xử lý lớn -block.logic-display.name = Màn hình -block.large-logic-display.name = Màn hình lớn -block.memory-cell.name = Bộ nhớ -block.memory-bank.name = Bộ nhớ lớn +block.micro-processor.name = Bộ xử lý vi cấp +block.logic-processor.name = Bộ xử lý trung cấp +block.hyper-processor.name = Bộ xử lý siêu cấp +block.logic-display.name = Màn hình hiển thị +block.large-logic-display.name = Màn hình hiển thị lớn +block.memory-cell.name = Ô bộ nhớ +block.memory-bank.name = Khối bộ nhớ team.malis.name = Malis team.crux.name = Crux team.sharded.name = Sharded -team.derelict.name = Không xác định +team.derelict.name = Bỏ hoang team.green.name = Xanh lá cây team.blue.name = Xanh dương hint.skip = Bỏ qua hint.desktopMove = Sử dụng [accent][[WASD][] để di chuyển. hint.zoom = [accent]Cuộn[] để phóng to hoặc thu nhỏ. -hint.desktopShoot = [accent][[chuột trái][] để bắn. -hint.depositItems = Để di chuyển các vật phẩm, hãy kéo từ tàu của bạn đến căn cứ. -hint.respawn = Để hồi sinh như tàu của bạn, nhấn [accent][[V][]. -hint.respawn.mobile = Bạn đã chuyển điều khiển một đơn vị/công trình. Để hồi sinh như một con tàu, [accent]nhấn vào hình đại diện ở phía trên cùng bên trái.[] -hint.desktopPause = Nhấn [accent][[Space][] để tạm dừng và tiếp tục trò chơi. -hint.breaking = [accent]Chuột phải[] và kéo để phá vỡ các khối. -hint.breaking.mobile = Kích hoạt \ue817 [accent]Cây búa[] ở phía dưới cùng bên phải và nhấn để phá vỡ các khối.\n\nGiữ ngón tay của bạn trong một giây và kéo để phá khối trong vùng được chọn. -hint.blockInfo = Xem thông tin của một khối bằng cách chọn nó trong [accent]menu xây dựng[], Sau đó chọn nút [accent][[?][] ở bên phải. -hint.derelict = [accent]Không xác định[] là các công trình bị hỏng của các căn cứ cũ mà không còn hoạt động.\n\nCác công trình này có thể [accent]được tháo dỡ[] để nhận được nguyên liệu. +hint.desktopShoot = [accent][[nhấn chuột trái][] để bắn. +hint.depositItems = Để di chuyển các vật phẩm, hãy kéo từ phi thuyền của bạn đến lõi. +hint.respawn = Để hồi sinh dưới dạng phi thuyền, nhấn [accent][[V][]. +hint.respawn.mobile = Bạn đã chuyển điều khiển một đơn vị/công trình. Để hồi sinh dưới dạng phi thuyền, [accent]nhấn vào hình đại diện ở phía trên cùng bên trái.[] +hint.desktopPause = Nhấn [accent][[Phím cách][] để tạm dừng và tiếp tục trò chơi. +hint.breaking = [accent]Nhấn chuột phải[] và kéo để phá vỡ các khối. +hint.breaking.mobile = Kích hoạt \ue817 [accent]cây búa[] ở phía dưới cùng bên phải và nhấn để phá vỡ các khối.\n\nGiữ ngón tay của bạn trong một giây và kéo để phá khối trong vùng được chọn. +hint.blockInfo = Xem thông tin của một khối bằng cách chọn nó trong [accent]trình đơn xây dựng[], Sau đó chọn nút [accent][[?][] ở bên phải. +hint.derelict = [accent]Bỏ hoang[] là các công trình bị hỏng của các căn cứ cũ mà không còn hoạt động.\n\nCác công trình này có thể [accent]được tháo dỡ[] để nhận được tài nguyên hoặc sửa chữa. hint.research = Sử dụng nút \ue875 [accent]Nghiên cứu[] để nghiên cứu công nghệ mới. hint.research.mobile = Sử dụng nút \ue875 [accent]Nghiên cứu[] trong \ue88c [accent]Trình đơn[] để nghiên cứu công nghệ mới. -hint.unitControl = Giữ [accent][[L-ctrl][] và [accent]nhấp chuột[] để điều khiển đơn vị của bạn hoặc súng. -hint.unitControl.mobile = [accent]Nhấp đúp[] để điều khiển đơn vị của bạn hoặc súng. -hint.unitSelectControl = Để điều khiển đơn vị, hãy nhấn [accent]chế độ ra lệnh[] bằng cách giữ [accent]L-shift.[]\nKhi ở chế độ lệnh, hãy nhấn và kéo để chọn đơn vị. [accent]Nhấn chuột phải[] vào một vị trí hoặc mục tiêu để ra lệnh đơn vị đó. -hint.unitSelectControl.mobile = Để điều khiển đơn vị, hãy nhấn [accent]chế độ ra lệnh[] bằng cách nhấn nút [accent]lệnh[] ở phía dưới cùng bên trái.\nKhi ở chế độ ra lệnh, hãy nhấn và kéo để chọn đơn vị. Tap vào một vị trí hoặc mục tiêu để ra lệnh đơn vị đó. -hint.launch = Sau khi thu thập đủ tài nguyên, bạn có thể [accent]Phóng[] bằng cách chọn các khu vực lân cận từ \ue827 [accent]Bản đồ[] ở phía dưới cùng bên phải. -hint.launch.mobile = Sau khi thu thập đủ tài nguyên, bạn có thể [accent]Phóng[] bằng cách chọn các khu vực lân cận từ \ue827 [accent]Bản đồ[] trong \ue88c [accent]Menu[]. -hint.schematicSelect = Giữ [accent][[F][] và kéo để chọn các khối để sao chép và dán.\n\n[accent][[Middle Click][] để sao chép một khối. -hint.rebuildSelect = Giữ [accent][[B][] và kéo để chọn các khối bị hỏng.\nChúng sẽ được tự động được xây lại. +hint.unitControl = Giữ [accent][[Ctrl trái][] và [accent]nhấn chuột[] để điều khiển thủ công đơn vị của bạn hoặc súng. +hint.unitControl.mobile = [accent][[Nhấn đúp][] để điều khiển thủ công đơn vị của bạn hoặc súng. +hint.unitSelectControl = Để điều khiển đơn vị, hãy nhấn [accent]chế độ mệnh lệnh[] bằng cách giữ [accent]Shift trái[].\nKhi ở chế độ mệnh lệnh, hãy nhấn và kéo để chọn đơn vị. [accent]Nhấn chuột phải[] vào một vị trí hoặc mục tiêu để ra lệnh đơn vị đến đó. +hint.unitSelectControl.mobile = Để điều khiển đơn vị, hãy nhấn [accent]chế độ mệnh lệnh[] bằng cách nhấn nút [accent]mệnh lệnh[] ở phía dưới cùng bên trái.\nKhi ở chế độ mệnh lệnh, hãy nhấn giữ và kéo để chọn đơn vị. Nhấp vào một vị trí hoặc mục tiêu để ra lệnh đơn vị đến đó. +hint.launch = Một khi thu thập đủ tài nguyên, bạn có thể [accent]Phóng[] bằng cách chọn các khu vực lân cận bằng cách mở \ue827 [accent]Bản đồ[] ở phía dưới cùng bên phải, và lướt chọn vị trí mới. +hint.launch.mobile = Một khi thu thập đủ tài nguyên, bạn có thể [accent]Phóng[] bằng cách chọn các khu vực lân cận từ \ue827 [accent]Bản đồ[] trong \ue88c [accent]Trình đơn[]. +hint.schematicSelect = Giữ [accent][[F][] và kéo để chọn các khối để sao chép và dán.\n\n[accent][[Nhấn chuột giữa][] để sao chép một kiểu khối đơn lẻ. +hint.rebuildSelect = Giữ [accent][[B][] và kéo để chọn các khối đã bị phá hủy.\nChúng sẽ được tự động được xây lại. hint.rebuildSelect.mobile = Chọn nút \ue874 sao chép, sau đó nhấp nút \ue80f xây lại và kéo để chọn khu vực của các khối đã bị phá hủy.\nViệc này sẽ giúp xây lại chúng một cách tự động. -hint.conveyorPathfind = Giữ [accent][[L-Ctrl][] trong khi kéo băng chuyền để tự động tạo đường dẫn. -hint.conveyorPathfind.mobile = Mở \ue844 [accent]chế độ đường chéo[] và kéo băng chuyền để tự động tạo đường dẫn. -hint.boost = Giữ [accent][[L-Shift][] bay qua các chướng ngại vật với đơn vị hiện tại của bạn.\n\nChỉ một số đơn vị mặt đất có thể bay được. +hint.conveyorPathfind = Giữ [accent][[Ctrl trái][] trong khi kéo băng chuyền để tự động tạo đường dẫn. +hint.conveyorPathfind.mobile = Bật \ue844 [accent]chế độ đường chéo[] và kéo băng chuyền để tự động tạo đường dẫn. +hint.boost = Giữ [accent][[Shift trái][] bay qua các chướng ngại vật với đơn vị hiện tại của bạn.\n\nChỉ một số đơn vị mặt đất có thể bay được. hint.payloadPickup = Nhấn [accent][[[] để nhặt một khối nhỏ hoặc một đơn vị. hint.payloadPickup.mobile = [accent]Nhấn và giữ[] một khối nhỏ hoặc một đơn vị để nhặt nó. -hint.payloadDrop = Nhấn [accent]][] để thả một vật phẩm. -hint.payloadDrop.mobile = [accent]Nhấn và giữ[] tại một khu vực trống để thả vật phẩm. +hint.payloadDrop = Nhấn [accent]][] để thả một khối hàng. +hint.payloadDrop.mobile = [accent]Nhấn và giữ[] tại một khu vực trống để thả khối hàng tại đó. hint.waveFire = [accent]Wave[] súng có nước làm đạn dược sẽ tự động dập tắt các đám cháy gần đó. hint.generator = \uf879 [accent]Máy phát điện đốt cháy[] đốt than và truyền năng lượng cho các khối liền kề.\n\nPhạm vi truyền tải năng lượng có thể được mở rộng với \uf87f [accent]Chốt điện[]. -hint.guardian = [accent]Trùm[] được bọc giáp. Sử dụng loại đạn yếu chẳng hạn như [accent]Đồng[] và [accent]Chì[] là [scarlet]không hiệu quả[].\n\nSử dụng súng tiên tiến hơn hoặc sử dụng \uf835 [accent]Than chì làm đạn [] \uf861Duo/\uf859Salvo đạn dược để hạ gục Trùm. -hint.coreUpgrade = Các căn cứ có thể được nâng cấp bằng cách [accent]đặt căn cứ cấp cao hơn trên chúng[].\n\nĐặt một căn cứ \uf868 [accent]Trụ sở[] trên căn cứ \uf869 [accent]Cơ sở[]. Đảm bảo không có vật cản gần đó. -hint.presetLaunch = Khác khu vực đáp [accent] xám[], như [accent]Frozen Forest[], có thể được phóng đến từ bất cứ đâu. Nó không yêu cầu chiếm các khu vực lân cận.\n\n[accent]Các khu vực được đánh số[], chẳng hạn như cái này, là [accent]không bắt buộc[]. -hint.presetDifficulty = Khu vực này có [scarlet]mối đe dọa cao[].\nPhóng đến khu vực như vậy [accent]không được khuyến khích[] nếu không có công nghệ và chuẩn bị phù hợp. -hint.coreIncinerate = Sau khi căn cứ đầy vật phẩm, bất kì vật phẩm vào thuộc loại đó nhận được sẽ bị [accent]tiêu hủy[]. -hint.factoryControl = Để đặt [accent]hướng đầu ra[] của một nhà máy, nhấp vào một khối nhà máy trong chế độ ra lệnh, sau đó nhấp chuột phải vào một vị trí.\nCác đơn vị sản xuất bởi nó sẽ tự động di chuyển đến đó. -hint.factoryControl.mobile = Để đặt [accent]hướng đầu ra[] của một nhà máy, tap vào một khối nhà máy trong chế độ ra lệnh, sau đó tap vào một vị trí.\nCác đơn vị sản xuất bởi nó sẽ tự động di chuyển đến đó. -gz.mine = Di chuyển gần \uf8c4 [accent]quặng đồng[] trên đất và click vào nó để bắt đầu khai thác. +hint.guardian = [accent]Trùm[] được bọc giáp. Sử dụng loại đạn yếu chẳng hạn như [accent]Đồng[] và [accent]Chì[] là [scarlet]không hiệu quả[].\n\nSử dụng súng tiên tiến hơn hoặc sử dụng \uf835 [accent]Than chì[] làm đạn \uf861Duo/\uf859Salvo đạn dược để hạ gục Trùm. +hint.coreUpgrade = Các lõi có thể được nâng cấp bằng cách [accent]đặt lõi cấp cao hơn trên chúng[].\n\nĐặt một lõi \uf868 [accent]Trụ sở[] trên lõi \uf869 [accent]Cơ sở[]. Đảm bảo không có vật cản gần đó. +hint.presetLaunch = [accent]Khu vực đáp[] xám, như [accent]Frozen Forest[], có thể được phóng đến từ bất cứ đâu. Nó không yêu cầu chiếm các khu vực lân cận.\n\n[accent]Các khu vực được đánh số[], chẳng hạn như cái này, là [accent]không bắt buộc[]. +hint.presetDifficulty = Khu vực này có [scarlet]mối đe dọa thù địch cao[].\nPhóng đến khu vực như vậy [accent]không được khuyến khích[] nếu không có công nghệ và chuẩn bị phù hợp. +hint.coreIncinerate = Sau khi lõi đầy một loại vật phẩm, bất kỳ vật phẩm vào thuộc loại đó nhận được sẽ bị [accent]tiêu hủy[]. +hint.factoryControl = Để đặt [accent]điểm đầu ra[] của một nhà máy, nhấn vào một khối nhà máy trong chế độ ra lệnh, sau đó nhấn chuột phải vào một vị trí.\nCác đơn vị sản xuất bởi nó sẽ tự động di chuyển đến đó. +hint.factoryControl.mobile = Để đặt [accent]điểm đầu ra[] của một nhà máy, nhấp vào một khối nhà máy trong chế độ ra lệnh, sau đó nhấp vào một vị trí.\nCác đơn vị sản xuất bởi nó sẽ tự động di chuyển đến đó. + +gz.mine = Di chuyển gần \uf8c4 [accent]quặng đồng[] trên đất và nhấn vào nó để bắt đầu khai thác. gz.mine.mobile = Di chuyển gần \uf8c4 [accent]quặng đồng[] trên đất và nhấp vào nó để bắt đầu khai thác. -gz.research = Mở \ue875 tiến trình.\nNghiên cứu \uf870 [accent]Máy khoan cơ khí[], sau đó chọn nó từ menu ở góc dưới bên phải.\nNhấp vào một quặng đồng để đặt nó. -gz.research.mobile = Mở \ue875 tiến trình.\nNghiên cứu \uf870 [accent]Máy khoan cơ khí[], sau đó chọn nó từ menu ở góc dưới bên phải.\nNhấp vào một quặng đồng để đặt nó.\n\nNhấp vào \ue800 [accent]dấu tích[] ở góc dưới bên phải để xác nhận. -gz.conveyors = Nghiên cứu và đặt \uf896 [accent]băng chuyền[] để di chuyển các nguyên liệu được khai thác\n từ các máy khoan đến căn cứ.\n\nNhấp và kéo để đặt nhiều băng chuyền.\n[accent]Cuộn[] để xoay. -gz.conveyors.mobile = Nghiên cứu và đặt \uf896 [accent]băng chuyền[] để di chuyển các nguyên liệu được khai thác\n từ các máy khoan đến căn cứ.\n\nGiữ ngón tay một chút và kéo để đặt nhiều băng chuyền. +gz.research = Mở \ue875 cây công nghệ.\nNghiên cứu \uf870 [accent]Máy khoan cơ khí[], sau đó chọn nó từ \ue85e trình đơn ở góc dưới bên phải.\nNhấp vào một khoảng quặng đồng để đặt nó. +gz.research.mobile = Mở \ue875 cây công nghệ.\nNghiên cứu \uf870 [accent]Máy khoan cơ khí[], sau đó chọn nó từ \ue85e trình đơn ở góc dưới bên phải.\nNhấp vào một khoảng quặng đồng để đặt nó.\n\nNhấp vào \ue800 [accent]dấu tích[] ở góc dưới bên phải để xác nhận. +gz.conveyors = Nghiên cứu và đặt \uf896 [accent]băng chuyền[] để di chuyển các tài nguyên được khai thác\ntừ các máy khoan đến lõi.\n\nNhấn và kéo để đặt nhiều băng chuyền.\n[accent]Cuộn[] để xoay. +gz.conveyors.mobile = Nghiên cứu và đặt \uf896 [accent]băng chuyền[] để di chuyển các tài nguyên được khai thác\ntừ các máy khoan đến lõi.\n\nGiữ ngón tay một giây và kéo để đặt nhiều băng chuyền. gz.drills = Mở rộng hoạt động khai thác.\nĐặt thêm Máy khoan cơ khí.\nKhai thác 100 đồng. -gz.lead = \uf837 [accent]Chì[] là một nguyên liệu được sử dụng phổ biến.\nHãy đặt các máy khoan để khai thác chì. +gz.lead = \uf837 [accent]Chì[] là một tài nguyên được sử dụng phổ biến.\nHãy đặt các máy khoan để khai thác chì. gz.moveup = \ue804 Di chuyển lên để xem các nhiệm vụ tiếp theo. -gz.turrets = Nghiên cứu và đặt 2 súng \uf861 [accent]Duo[] để bảo vệ căn cứ. Súng Duo cần \uf838 [accent]đạn[] từ băng chuyền. +gz.turrets = Nghiên cứu và đặt 2 súng \uf861 [accent]Duo[] để bảo vệ lõi.\nSúng Duo cần \uf838 [accent]đạn[] từ băng chuyền. gz.duoammo = Tiếp đạn cho súng Duo bằng [accent]đồng[], sử dụng băng chuyền. gz.walls = [accent]Tường[] có thể ngăn chặn sát thương đến các công trình.\nĐặt \uf8ae [accent]tường đồng[] xung quanh các súng. -gz.defend = Quân địch đang đến, chuẩn bị bảo vệ. +gz.defend = Quân địch đang đến, hãy chuẩn bị phòng thủ. gz.aa = Các đơn vị bay không thể dễ dàng bị bắn hạ với các súng tiêu chuẩn.\n\uf860 [accent]Scatter[] cung cấp tốt khả năng phòng không, nhưng cần \uf837 [accent]chì[] là đạn. -gz.scatterammo = Tiếp đạn cho súng Scatter bằng [accent]chì[], sử dụng băng chuyền. -gz.supplyturret = [accent]Súng cung cấp +gz.scatterammo = Tiếp đạn cho súng Scatter bằng \uf837 [accent]chì[], sử dụng băng chuyền. +gz.supplyturret = [accent]Cấp đạn cho súng gz.zone1 = Đây là khu vực quân địch đáp xuống. gz.zone2 = Bất kỳ thứ gì được xây dựng trong bán kính này sẽ bị phá hủy khi một đợt mới bắt đầu. -gz.zone3 = Đợt tiếp theo sẽ bắt đầu ngay bây giờ.\nHãy chuẩn bị. -gz.finish = Đặt thêm các súng, khai thác thêm nguyên liệu,\nvà vừa bảo vệ căn cứ, vượt qua tất cả các đợt để [accent]chiếm khu vực[]. -onset.mine = Nhấp để khai thác \uf748 [accent]beryllium[] từ tường.\n\nSử dụng [accent][[WASD] để di chuyển. -onset.mine.mobile = Nhấp để khai thác \uf748 [accent]beryllium[] từ tường. -onset.research = Mở \ue875 tiến trình.\nNghiên cứu, sau đó đặt \uf73e [accent]Turbine điện hơi nước[] trên lỗ thông hơi.\nĐiều này sẽ tạo ra [accent]điện[]. -onset.bore = Nghiên cứu và đặt \uf741 [accent]Khoan plasma[].\nĐiều này sẽ tự động khai thác nguyên liệu từ tường. -onset.power = Để nối [accent]điện[] cho khoan plasma, nghiên cứu và đặt \uf73d [accent]Chốt tia điện[].\nKết nối Turbine điện hơi nước với khoan plasma. -onset.ducts = Nghiên cứu và đặt \uf799 [accent]ống chân không[] để di chuyển các nguyên liệu được khai thác từ các máy khoan đến căn cứ.\nNhấp và kéo để đặt nhiều ống chân không.\n[accent]Cuộn[] để xoay. -onset.ducts.mobile = Nghiên cứu và đặt \uf799 [accent]ống chân không[] để di chuyển các nguyên liệu được khai thác từ các máy khoan đến căn cứ.\n\nGiữ ngón tay một chút và kéo để đặt nhiều ống chân không. -onset.moremine = Mở rộng hoạt động khai thác.\nĐặt thêm Máy khoan plasma và sử dụng chốt tia điện và ống chân không để kết nối và vận chuyển.\nKhai thác 200 beryllium. +gz.zone3 = Một đợt sẽ bắt đầu ngay bây giờ.\nHãy chuẩn bị. +gz.finish = Đặt thêm các súng, khai thác thêm nguyên liệu,\nvà vượt qua tất cả các đợt để [accent]chiếm khu vực[]. + +onset.mine = Nhấn để khai thác \uf748 [accent]beryl[] từ tường.\n\nSử dụng [accent][[WASD] để di chuyển. +onset.mine.mobile = Nhấp để khai thác \uf748 [accent]beryl[] từ tường. +onset.research = Mở \ue875 cây công nghệ.\nNghiên cứu, sau đó đặt \uf73e [accent]tua-bin điện tụ nước[] trên lỗ hơi nước.\nĐiều này sẽ tạo ra [accent]điện[]. +onset.bore = Nghiên cứu và đặt \uf741 [accent]khoan plasma[].\nĐiều này sẽ tự động khai thác tài nguyên từ tường. +onset.power = Để nối [accent]điện[] cho khoan plasma, nghiên cứu và đặt \uf73d [accent]Chốt tia điện[].\nKết nối tua-bin điện hơi nước với khoan plasma. +onset.ducts = Nghiên cứu và đặt \uf799 [accent]ống chân không[] để di chuyển các tài nguyên được khai thác từ các máy khoan plasma đến lõi.\nNhấn và kéo để đặt nhiều ống chân không.\n[accent]Cuộn[] để xoay. +onset.ducts.mobile = Nghiên cứu và đặt \uf799 [accent]ống chân không[] để di chuyển các tài nguyên được khai thác từ các máy khoan plasma đến lõi.\n\nGiữ ngón tay một giây và kéo để đặt nhiều ống chân không. +onset.moremine = Mở rộng hoạt động khai thác.\nĐặt thêm Máy khoan plasma và sử dụng chốt tia điện và ống chân không để cùng phụ trợ chúng.\nKhai thác 200 beryl. onset.graphite = Các khối phức tạp hơn cần \uf835 [accent]than chì[].\nĐặt khoan plasma để khai thác than chì. -onset.research2 = Bắt đầu nghiên cứu [accent]nhà máy[].\nNghiên cứu \uf74d [accent]máy phá đá[] và \uf779 [accent]lò tinh luyện silicon[]. +onset.research2 = Bắt đầu nghiên cứu [accent]các nhà máy[].\nNghiên cứu \uf74d [accent]máy phá đá[] và \uf779 [accent]lò tinh luyện silicon[]. onset.arcfurnace = Lò tinh luyện cần \uf834 [accent]cát[] và \uf835 [accent]than chì[] để tạo \uf82f [accent]silicon[].\nYêu cầu có [accent]Điện[]. -onset.crusher = Sử dụng \uf74d [accent]máy phá đá[] để khai thác cát. -onset.fabricator = Sử dụng [accent]đơn vị[] để khám phá bản đồ, bảo vệ các công trình và tấn công quân địch.\nNghiên cứu và đặt \uf6a2 [accent]máy chế tạo xe tăng[]. +onset.crusher = Sử dụng \uf74d [accent]máy nghiền vách đá[] để khai thác cát. +onset.fabricator = Sử dụng [accent]đơn vị[] để khám phá bản đồ, bảo vệ các công trình, và tấn công quân địch.\nNghiên cứu và đặt \uf6a2 [accent]máy chế tạo xe tăng[]. onset.makeunit = Sản xuất một đơn vị.\nSử dụng nút "?" để xem các yêu cầu của máy đã chọn. -onset.turrets = Các đơn vị rất tốt, nhưng [accent]súng[] cung cấp khả năng phòng thủ tốt hơn nếu được sử dụng hiệu quả.\nĐặt một \uf6eb [accent]Breach[].\nSúng cần \uf748 [accent]đạn[]. -onset.turretammo = Tiếp đạn cho súng bằng [accent]beryllium[]. -onset.walls = [accent]Tường[] có thể ngăn chặn sát thương đến các công trình.\nĐặt một số \uf6ee [accent]tường beryllium[] xung quanh súng. +onset.turrets = Các đơn vị rất hiệu quả, nhưng [accent]súng[] cung cấp khả năng phòng thủ tốt hơn nếu được sử dụng hiệu quả.\nĐặt một \uf6eb [accent]Breach[].\nSúng cần \uf748 [accent]đạn[]. +onset.turretammo = Tiếp đạn cho súng bằng [accent]beryl[] dùng ống chân không. +onset.walls = [accent]Tường[] có thể ngăn chặn sát thương đến các công trình.\nĐặt một số \uf6ee [accent]tường beryl[] xung quanh súng. onset.enemies = Quân địch đang đến, hãy chuẩn bị phòng thủ. -onset.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. -onset.commandmode = Giữ [accent]Shift[] để vào [accent]chế độ điều khiển quân[].\n[accent]Nhấp chuột trái và kéo[] để chọn các đơn vị.\n[accent]Chuộc phải[] để điều khiển các đơn vị di chuyển hoặc tấn công. -onset.commandmode.mobile = Nhấn vào [accent]nút điều khiển[] để vào [accent]chế độ điều khiển quân[].\nGiữ một ngón tay, sau đó [accent]kéo[] để chọn các đơn vị.\n[accent]Nhấp[] để điều khiển các đơn vị di chuyển hoặc tấn công. -aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[]. -split.pickup = Một số khối có thể được mang bởi đơn vị.\nNhấp vào [accent]container[] và đặt nó lên [accent]máy nạp vật phẩm[].\n(Phím mặc định là [ và ] để mang và thả) -split.pickup.mobile = Một số khối có thể được mang bởi đơn vị.\nNhấp vào [accent]container[] và đặt nó lên [accent]máy nạp vật phẩm[].\n(Để mang hoặc thả một khối, ấn giữ nó một chút.) +onset.defenses = [accent]Thiết lập phòng thủ:[lightgray] {0} +onset.attack = Quân địch đã suy yếu. Hãy phản công. +onset.cores = Các lõi mới có thể được đặt trên [accent]ô đặt lõi[].\nCác lõi mới hoạt động như một tiền cứ và chia sẻ kho tài nguyên với các lõi khác.\nĐặt một \uf725 lõi. +onset.detect = Quân địch sẽ phát hiện bạn trong vòng 2 phút.\nHãy chuẩn bị phòng thủ, khai thác, và sản xuất. +onset.commandmode = Giữ [accent]Shift[] để vào [accent]chế độ mệnh lệnh[].\n[accent]Nhấn chuột trái và kéo[] để chọn các đơn vị.\n[accent]Nhấn chuột phải[] để ra lệnh các đơn vị di chuyển hoặc tấn công. +onset.commandmode.mobile = Nhấn vào [accent]nút mệnh lệnh[] để vào [accent]chế độ mệnh lệnh[].\nGiữ một ngón tay, sau đó [accent]kéo[] để chọn các đơn vị.\n[accent]Nhấp[] để ra lệnh các đơn vị di chuyển hoặc tấn công. +aegis.tungsten = Tungsten có thể khai thác bằng [accent]khoan thủy lực[].\nCông trình này cần có [accent]nước[] và [accent]điện[]. + +split.pickup = Một số khối có thể được mang theo bởi đơn vị từ lõi.\nNhấn vào [accent]thùng chứa[] và đặt nó lên [accent]máy nạp vật phẩm[].\n(Phím mặc định là [[ và ] để mang theo và thả) +split.pickup.mobile = Một số khối có thể được mang theo bởi đơn vị từ lõi.\nNhấp vào [accent]thùng chứa[] và đặt nó lên [accent]máy nạp vật phẩm[].\n(Để mang theo hoặc thả thứ gì đó, ấn giữ nó một chút.) split.acquire = Bạn cần một số tungsten để sản xuất đơn vị. -split.build = Đơn vị phải được vận chuyển đến phía bên kia của tường.\nĐặt hai [accent]Máy phóng từ trường[], một ở mỗi bên của tường.\nĐặt liên kết bằng cách nhấp vào một trong số chúng, sau đó chọn cái còn lại. -split.container = Tương tự như container, đơn vị cũng có thể được vận chuyển bằng [accent]Máy phóng từ trường[].\nĐặt một máy chế tạo đơn vị cạnh máy phóng từ trường để nạp chúng, sau đó gửi chúng qua tường để tấn công căn cứ địch. +split.build = Đơn vị phải được vận chuyển đến phía bên kia của tường.\nĐặt hai [accent]Máy phóng từ trường khối hàng[], một ở mỗi bên của tường.\nĐặt liên kết bằng cách nhấp vào một trong số chúng, sau đó chọn cái còn lại. +split.container = Tương tự như thùng chứa, đơn vị cũng có thể được vận chuyển bằng [accent]Máy phóng từ trường khối hàng[].\nĐặt một máy chế tạo đơn vị cạnh máy phóng từ trường để nạp chúng, sau đó gửi chúng qua tường để tấn công căn cứ địch. -item.copper.description = Dùng trong tất cả các khu xây dựng và các loại đạn dược. -item.copper.details = Đồng, là kim loại phổ biến trên Serpulo. Có cấu trúc yếu trừ khi được tôi luyện. -item.lead.description = Dùng trong vận chuyển chất lỏng và cấu trúc liên quan đến điện. -item.lead.details = Đặc, trơ. Dùng nhiều trong pin.\nLưu ý: Có thể độc hại đối với các dạng sống sinh học. Không phải vì nó còn nhiều ở xung quanh đây. -item.metaglass.description = Dùng trong cấu trúc phân phối/lưu trữ chất lỏng. -item.graphite.description = Dùng trong các bộ phận điện và đạn dược. -item.sand.description = Dùng để sản xuất các vật liệu tinh chế khác. -item.coal.description = Dùng để sản xuất nhiên liệu và nguyên liệu sản xuất vật liệu tinh chế. +item.copper.description = Dùng trong tất cả các loại xây dựng và các loại đạn dược. +item.copper.details = Đồng. Kim loại nhiều bất thường trên Serpulo. Có cấu trúc yếu trừ khi được tôi luyện. +item.lead.description = Được dùng trong vận chuyển chất lỏng và cấu trúc liên quan đến điện. +item.lead.details = Đặc. Trơ. Dùng cực nhiều trong pin.\nLưu ý: Có thể độc hại đối với các dạng sống sinh học. Không phải vì nó còn nhiều ở xung quanh đây. +item.metaglass.description = Được dùng trong cấu trúc phân phối/lưu trữ chất lỏng. +item.graphite.description = Được dùng trong các bộ phận điện và đạn súng. +item.sand.description = Được dùng để sản xuất các vật liệu tinh chế khác. +item.coal.description = Được dùng để sản xuất nhiên liệu và nguyên liệu sản xuất vật liệu tinh chế. item.coal.details = Có vẻ là vật chất hóa thạch của thực vật, hình thành từ rất lâu trước khi được khai thác. -item.titanium.description = Dùng trong cấu trúc vận chuyển chất lỏng, máy khoan và các công trình. -item.thorium.description = Dùng trong các công trình bền vững và có thể dùng làm nhiên liệu hạt nhân. -item.scrap.description = Dùng làm nguyên liệu cho Máy nung phế liệu và Máy nghiền để tinh luyện thành các vật liệu khác. -item.scrap.details = Tàn tích còn lại của các công trình và robot cũ. -item.silicon.description = Dùng trong các tấm pin mặt trời, thiết bị điện tử phức tạp và một số loại đạn dược. -item.plastanium.description = Dùng trong các robot tiên tiến, các cấu trúc cách điện và đạn tự phân mảnh. -item.phase-fabric.description = Dùng trong các thiết bị điện tử tiên tiến và các cấu trúc tự sửa chữa. -item.surge-alloy.description = Dùng trong các vũ khí tiên tiến và các cấu trúc phòng thủ phản ứng. -item.spore-pod.description = Dùng để chuyển đổi thành dầu, chất nổ và nhiên liệu. +item.titanium.description = Được dùng trong cấu trúc vận chuyển chất lỏng, máy khoan và các nhà máy. +item.thorium.description = Được dùng trong các công trình bền vững và có thể dùng làm nhiên liệu hạt nhân. +item.scrap.description = Được dùng trong Máy nung và Máy nghiền để tinh luyện thành các vật liệu khác. +item.scrap.details = Tàn tích còn lại của các công trình và đơn vị cũ. +item.silicon.description = Được dùng trong các tấm pin mặt trời, thiết bị điện tử phức tạp và một số loại đạn truy đuổi. +item.plastanium.description = Được dùng trong các đơn vị tiên tiến, các cấu trúc cách điện và đạn tự phân mảnh. +item.phase-fabric.description = Được dùng trong các thiết bị điện tử tiên tiến và các cấu trúc tự sửa chữa. +item.surge-alloy.description = Được dùng trong các vũ khí tiên tiến và các cấu trúc phòng thủ phản hồi. +item.spore-pod.description = Được dùng để chuyển đổi thành dầu, chất nổ và nhiên liệu. item.spore-pod.details = Bào tử. Có thể là một dạng sống tổng hợp. Phát thải khí độc đối với sinh vật khác. Cực kỳ xâm lấn. Rất dễ cháy trong một số trường hợp nhất định. -item.blast-compound.description = Dùng trong bom hoặc đạn nổ. -item.pyratite.description = Dùng trong vũ khí gây cháy và máy phát điện chạy bằng nhiên liệu đốt. -item.beryllium.description = Được sử dụng trong nhiều loại công trình và đạn dược trên Erekir. -item.tungsten.description = Được sử dụng trong các máy khoan, áo giáp và đạn dược. Yêu cầu trong việc xây dựng các công trình cao cấp hơn. -item.oxide.description = Dùng làm chất dẫn nhiệt và cách điện cho nguồn điện. -item.carbide.description = Được sử dụng trong các công trình tiên tiến, các đơn vị mạnh và đạn dược. +item.blast-compound.description = Được dùng trong bom hoặc đạn nổ. +item.pyratite.description = Được dùng trong vũ khí gây cháy và máy phát điện chạy bằng nhiên liệu đốt. -liquid.water.description = Dùng để làm mát máy móc và xử lý chất thải. -liquid.slag.description = Dùng để tách các kim loại, hoặc phun vào kẻ thù như một loại vũ khí. -liquid.oil.description = Dùng trong sản xuất vật liệu tiên tiến và làm đạn gây cháy. -liquid.cryofluid.description = Dùng làm chất làm mát trong lò phản ứng, súng và nhà máy. -liquid.arkycite.description = Được sử dụng trong các phản ứng hóa học để phát điện và tổng hợp vật liệu. -liquid.ozone.description = Được sử dụng như một chất oxy hóa trong sản xuất vật liệu và làm nhiên liệu. Gây nổ vừa phải. -liquid.hydrogen.description = Được sử dụng trong khai thác tài nguyên, sản xuất đơn vị và sửa chữa công trình. Dễ cháy. -liquid.cyanogen.description = Được sử dụng cho đạn dược, xây dựng các đơn vị tiên tiến và các phản ứng khác nhau trong các khối tiên tiến. Rất dễ cháy. -liquid.nitrogen.description = Được sử dụng trong khai thác tài nguyên, tạo khí và sản xuất đơn vị. Trơ. -liquid.neoplasm.description = Một sản phẩm phụ sinh học nguy hiểm của lò phản ứng Neoplasia. Lan nhanh sang bất kì khối chứa nước nào mà nó chạm vào và gây hư hại chúng. Nhớt. -liquid.neoplasm.details = Neoplasm. Một khối lượng các tế bào tổng hợp phân chia nhanh chóng không kiểm soát với độ đặc giống như bùn. Kháng nhiệt. Cực kì nguy hiểm cho bất cứ khối nào có liên quan đến nước.\n\nQuá phức tạp và không ổn định để được phân tích. Chưa rõ được tiềm năng và ứng dụng của nó. Khuyến nghị đốt chúng trong xỉ nóng chảy +#Erekir +item.beryllium.description = Được dùng trong nhiều loại công trình và đạn dược trên Erekir. +item.tungsten.description = Được dùng trong các máy khoan, bọc giáp và đạn dược. Yêu cầu trong việc xây dựng các công trình cao cấp hơn. +item.oxide.description = Được dùng làm chất dẫn nhiệt và cách điện cho nguồn điện. +item.carbide.description = Được dùng trong các công trình tiên tiến, các đơn vị hạng nặng và đạn dược. -block.derelict = \uf77e [lightgray]Không xác định -block.armored-conveyor.description = Vận chuyển vật phẩm về phía trước. Không nhận đầu vào từ phía bên cạnh. +liquid.water.description = Được dùng để làm mát máy móc và xử lý chất thải. +liquid.slag.description = Tinh chế để tách các kim loại thành phần. Dùng trong các loại súng chất lỏng như một loại đạn. +liquid.oil.description = Được dùng trong sản xuất vật liệu tiên tiến và làm đạn gây cháy. +liquid.cryofluid.description = Được dùng như chất làm mát trong lò phản ứng, súng và nhà máy. + +#Erekir +liquid.arkycite.description = Được dùng trong các phản ứng hóa học để phát điện và tổng hợp vật liệu. +liquid.ozone.description = Được sử dụng như một chất ôxy hóa trong sản xuất vật liệu, và làm nhiên liệu. Gây nổ vừa phải. +liquid.hydrogen.description = Được dùng trong khai thác tài nguyên, sản xuất đơn vị và sửa chữa công trình. Dễ cháy. +liquid.cyanogen.description = Được dùng cho đạn dược, xây dựng các đơn vị tiên tiến và các phản ứng khác nhau trong các khối tiên tiến. Rất dễ cháy. +liquid.nitrogen.description = Được dùng trong khai thác tài nguyên, tạo khí và sản xuất đơn vị. Trơ. +liquid.neoplasm.description = Một sản phẩm phụ sinh học nguy hiểm của lò phản ứng Neoplasia. Lan nhanh sang bất kỳ khối chứa nước nào mà nó chạm vào, gây hư hại chúng. Nhớt. +liquid.neoplasm.details = Tế bào tân sinh. Một khối lượng các tế bào tổng hợp phân chia nhanh chóng không kiểm soát với độ đặc giống như bùn. Kháng nhiệt. Cực kỳ nguy hiểm cho bất cứ khối nào có liên quan đến nước.\n\nQuá phức tạp và không ổn định để được phân tích. Chưa rõ được tiềm năng và ứng dụng của nó. Khuyến nghị đốt chúng trong xỉ nóng chảy. + +block.derelict = \uf77e [lightgray]Bỏ hoang +block.armored-conveyor.description = Vận chuyển vật phẩm về phía trước. Không nhận đầu vào không phải băng chuyền từ phía bên cạnh. block.illuminator.description = Phát sáng. -block.message.description = Lưu trữ tin nhắn giao tiếp giữa đồng đội. -block.reinforced-message.description = Lưu trữ một thông điệp để liên lạc giữa các đồng minh. -block.world-message.description = Một khối thông điệp đùng để sử dụng trong việc làm bản đồ. Không thể bị phá hủy. +block.message.description = Lưu trữ thông điệp giao tiếp giữa các đồng đội. +block.reinforced-message.description = Lưu trữ thông điệp giao tiếp giữa các đồng đội. +block.world-message.description = Một khối thông điệp đùng để sử dụng trong việc tạo bản đồ. Không thể bị phá hủy. block.graphite-press.description = Nén than thành than chì. block.multi-press.description = Nén than thành than chì. Cần nước làm mát. block.silicon-smelter.description = Tinh chế silicon từ cát và than. block.kiln.description = Nấu chảy cát và chì thành thuỷ tinh. block.plastanium-compressor.description = Sản xuất nhựa từ dầu và titan. -block.phase-weaver.description = Tổng hợp sợi lượng tử từ thorium và cát. -block.surge-smelter.description = Trộn titan, chì, silicon và đồng thành hợp kim. -block.cryofluid-mixer.description = Trộn nước và titan để sản xuất chất làm mát. +block.phase-weaver.description = Tổng hợp sợi lượng tử từ thori và cát. +block.surge-smelter.description = Hợp nhất titan, chì, silicon và đồng thành hợp kim. +block.cryofluid-mixer.description = Trộn nước và bột titan mịn để sản xuất chất làm mát. block.blast-mixer.description = Tạo ra hợp chất nổ từ nhiệt thạch và vỏ bào tử. block.pyratite-mixer.description = Trộn than, chì và cát thành nhiệt thạch. block.melter.description = Nung phế liệu thành xỉ. block.separator.description = Tách xỉ thành các thành phần khoáng của nó. block.spore-press.description = Nén vỏ bào tử thành dầu. -block.pulverizer.description = Nghiền phế liệu thành cát. -block.coal-centrifuge.description = Biến dầu thành than. +block.pulverizer.description = Nghiền phế liệu thành cát mịn. +block.coal-centrifuge.description = Biến đổi dầu thành than. block.incinerator.description = Tiêu hủy bất kỳ vật phẩm hoặc chất lỏng nào mà nó nhận được. -block.power-void.description = Hủy tất cả năng lượng nhận được. Chỉ có trong chế độ tự do. -block.power-source.description = Tạo ra năng lượng mãi mãi. Chỉ có trong chế độ tự do. -block.item-source.description = Tạo ra vật phẩm mãi mãi. Chỉ có trong chế độ tự do. -block.item-void.description = Hủy mọi vật phẩm. Chỉ có trong chế độ tự do. -block.liquid-source.description = Tạo ra chất lỏng mãi mãi. Chỉ có trong chế độ tự do. -block.liquid-void.description = Loại bỏ mọi chất lỏng. Chỉ có trong chế độ tự do. -block.payload-source.description = Tạo ra bất kì khối hàng nào. Chỉ có trong chế độ tự do. -block.payload-void.description = Phá hủy bất kì khối hàng nào. Chỉ có trong chế độ tự do. -block.copper-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.copper-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù. -block.titanium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.titanium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù. -block.plastanium-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù. Hấp thụ tia laser và tia điện. Chặn kết nối điện tự động. -block.plastanium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù. Hấp thụ tia laser và tia điện. Chặn kết nối điện tự động. -block.thorium-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù. -block.thorium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù. -block.phase-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù, phản hầu hết đạn khi va chạm. -block.phase-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù, phản hầu hết đạn khi va chạm. -block.surge-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù, đôi khi tạo ra tia điện khi bị bắn. -block.surge-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù, đôi khi tạo ra tia điện khi bị bắn. -block.door.description = Một bức tường có thể đóng mở. -block.door-large.description = Một bức tường có thể đóng mở. -block.mender.description = Sửa chữa định kỳ các khối trong vùng lân cận.\nSử dụng Sợi lượng tử để tăng phạm vi và hiệu quả. -block.mend-projector.description = Sửa chữa các khối lân cận.\nSử dụng Sợi lượng tử để tăng phạm vi và hiệu quả. -block.overdrive-projector.description = Tăng tốc độ làm việc của các công trình lân cận.\nSử dụng Sợi lượng tử để tăng phạm vi và hiệu quả. -block.force-projector.description = Tạo ra một trường lực lục giác xung quanh nó, bảo vệ các công trình và đơn vị bên trong khỏi bị hư hại.\nQuá nóng nếu chịu quá nhiều sát thương. Sử dụng chất làm mát để giảm nhiệt độ. Sử dụng Sợi lượng tử để tăng kích thước lá chắn. +block.power-void.description = Hủy tất cả năng lượng nhận được. Chỉ chế độ Tự do. +block.power-source.description = Tạo ra năng lượng vô hạn. Chỉ chế độ Tự do. +block.item-source.description = Tạo ra vật phẩm vô hạn. Chỉ chế độ Tự do. +block.item-void.description = Hủy mọi vật phẩm. Chỉ chế độ Tự do. +block.liquid-source.description = Tạo ra chất lỏng vô hạn. Chỉ chế độ Tự do. +block.liquid-void.description = Loại bỏ mọi chất lỏng. Chỉ chế độ Tự do. +block.payload-source.description = Tạo ra bất kỳ khối hàng nào. Chỉ chế độ Tự do. +block.payload-void.description = Phá hủy bất kỳ khối hàng nào. Chỉ chế độ Tự do. +block.copper-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.copper-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.titanium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.titanium-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.plastanium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. Hấp thụ tia laser và tia điện. Chặn kết nối điện tự động. +block.plastanium-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. Hấp thụ tia laser và tia điện. Chặn kết nối điện tự động. +block.thorium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.thorium-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.phase-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch, phản hầu hết đạn khi va chạm. +block.phase-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch, phản hầu hết đạn khi va chạm. +block.surge-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch, thường phóng ra các tia điện khi đạn va chạm. +block.surge-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch, thường phóng ra các tia điện khi đạn va chạm. +block.door.description = Một bức tường có thể mở và đóng. +block.door-large.description = Một bức tường có thể mở và đóng. +block.mender.description = Sửa chữa định kỳ các khối trong vùng lân cận.\nTùy chọn sử dụng silicon để tăng phạm vi và hiệu quả. +block.mend-projector.description = Sửa chữa các khối lân cận.\nTùy chọn sử dụng sợi lượng tử để tăng phạm vi và hiệu quả. +block.overdrive-projector.description = Tăng tốc độ làm việc của các công trình gần đó.\nTùy chọn sử dụng sợi lượng tử để tăng phạm vi và hiệu quả. +block.force-projector.description = Tạo ra một trường lực lục giác xung quanh nó, bảo vệ các công trình và đơn vị bên trong khỏi bị hư hại.\nQuá nóng nếu chịu quá nhiều sát thương. Tùy chọn sử dụng chất làm mát để chống quá nhiệt. Sử dụng sợi lượng tử để tăng kích thước lá chắn. block.shock-mine.description = Giải phóng tia điện khi tiếp xúc với đơn vị đối phương. block.conveyor.description = Vận chuyển vật phẩm về phía trước. block.titanium-conveyor.description = Vận chuyển vật phẩm về phía trước. Nhanh hơn băng chuyền tiêu chuẩn. block.plastanium-conveyor.description = Vận chuyển vật phẩm về phía trước theo lô. Nhận các vật phẩm ở phía sau và dỡ chúng theo ba hướng ở phía trước. Yêu cầu nhiều điểm tải và dỡ hàng để có hiệu quả cao nhất. -block.junction.description = Hoạt động như một cầu nối cho hai băng chuyền băng qua. +block.junction.description = Hoạt động như một cầu nối cho hai băng chuyền băng qua nhau. block.bridge-conveyor.description = Vận chuyển vật phẩm qua nhiều loại địa hình hoặc công trình. block.phase-conveyor.description = Vận chuyển tức thời vật phẩm qua địa hình hoặc công trình. Phạm vi dài hơn cầu nối, nhưng cần năng lượng. -block.sorter.description = Nếu vật phẩm giống vật phẩm được chọn sẽ được chuyển đến trước, nếu không sẽ được chuyển qua trái hoặc phải. +block.sorter.description = Nếu vật phẩm giống vật phẩm được chọn, sẽ được chuyển đến trước. Nếu không, sẽ được chuyển qua trái hoặc phải. block.inverted-sorter.description = Giống như bộ lọc, nhưng vật phẩm được chọn sẽ được chuyển qua trái hoặc phải. block.router.description = Phân phối các vật phẩm đầu vào thành 3 hướng đầu ra như nhau. -block.router.details = Không khuyên dùng cạnh đầu vào dây chuyền vì sẽ bị kẹt bởi đầu ra. +block.router.details = Một điều xấu không thể tránh khỏi. Không khuyên dùng cạnh đầu vào sản xuất, vì sẽ bị kẹt bởi đầu ra. block.distributor.description = Phân phối các vật phẩm đầu vào thành 7 hướng đầu ra như nhau. -block.overflow-gate.description = Chỉ đưa vật phẩm ra 2 phía nếu phía trước bị chặn. -block.underflow-gate.description = Ngược với cổng tràn, chỉ đưa vật phẩm đến trước khi hai bên bị chặn. +block.overflow-gate.description = Chỉ đưa vật phẩm ra hai bên nếu phía trước bị chặn. +block.underflow-gate.description = Ngược với cổng tràn, chỉ đưa vật phẩm ra trước khi hai bên bị chặn. block.mass-driver.description = Cấu trúc vận chuyển vật phẩm tầm xa. Thu thập các lô vật phẩm và bắn chúng cho các máy phóng điện từ khác. -block.mechanical-pump.description = Bơm chất lỏng, không yêu cầu năng lượng. -block.rotary-pump.description = Bơm chất lỏng, yêu cầu năng lượng. -block.impulse-pump.description = Bơm chất lỏng. -block.conduit.description = Đẩy chất lỏng đến trước, dùng với bơm và các ống dẫn khác. -block.pulse-conduit.description = Đẩy chất lỏng đến trước, vận chuyển nhanh và trữ nhiều hơn so với ống tiêu chuẩn. -block.plated-conduit.description = Đẩy chất lỏng đến trước, không nhận đầu vào ở bên, không bị rò rỉ. -block.liquid-router.description = Nhận chất lỏng từ một phía và đưa đều ra ba phía còn lại. Có thể trữ một lượng chất lỏng nhất định. +block.mechanical-pump.description = Bơm và cho ra chất lỏng. Không yêu cầu năng lượng. +block.rotary-pump.description = Bơm và cho ra chất lỏng. Yêu cầu năng lượng. +block.impulse-pump.description = Bơm và cho ra chất lỏng. +block.conduit.description = Đẩy chất lỏng đến trước, được dùng để nối với bơm và các ống dẫn khác. +block.pulse-conduit.description = Đẩy chất lỏng đến trước. Vận chuyển nhanh và trữ nhiều hơn so với ống tiêu chuẩn. +block.plated-conduit.description = Đẩy chất lỏng đến trước. Không nhận đầu vào ở bên. Không bị rò rỉ. +block.liquid-router.description = Nhận chất lỏng từ một phía và phân phát đều ra 3 phía còn lại. Có thể trữ một lượng chất lỏng nhất định. block.liquid-container.description = Lưu trữ một lượng vừa phải chất lỏng. Đưa đều ra mọi phía như bộ phân phát chất lỏng. block.liquid-tank.description = Trữ được một lượng lớn chất lỏng. Đưa đều ra mọi phía như bộ phân phát chất lỏng. -block.liquid-junction.description = Chức năng như cầu cho hai ống nước băng chéo nhau. +block.liquid-junction.description = Chức năng như cầu cho hai ống dẫn băng qua nhau. block.bridge-conduit.description = Vận chuyển chất lỏng qua nhiều loại địa hình hoặc công trình. block.phase-conduit.description = Vận chuyển chất lỏng qua địa hình hoặc công trình. Phạm vi dài hơn cầu nối, nhưng cần năng lượng. block.power-node.description = Truyền năng lượng cho các chốt được kết nối. Chốt sẽ nhận năng lượng hoặc cấp năng lượng cho bất kỳ khối nào liền kề. @@ -2039,131 +2119,133 @@ block.surge-tower.description = Một chốt điện tầm xa với ít kết n block.diode.description = Di chuyển năng lượng trong pin theo một hướng, nhưng chỉ khi phía bên kia có ít năng lượng được lưu trữ hơn. block.battery.description = Tích trữ năng lượng khi dư thừa. Xuất năng lượng khi thiếu hụt. block.battery-large.description = Tích trữ năng lượng khi dư thừa. Xuất năng lượng khi thiếu hụt. Dung lượng cao hơn pin thông thường. -block.combustion-generator.description = Tạo ra năng lượng bằng cách đốt các vật liệu dễ cháy như than. +block.combustion-generator.description = Tạo ra năng lượng bằng cách đốt các vật liệu dễ cháy, như than. block.thermal-generator.description = Tạo ra năng lượng khi đặt ở những nơi nóng. block.steam-generator.description = Tạo ra năng lượng bằng cách đốt cháy các vật liệu dễ cháy và chuyển nước thành hơi nước. block.differential-generator.description = Tạo ra một lượng lớn năng lượng. Sử dụng sự chênh lệch nhiệt độ giữa chất làm lạnh và nhiệt thạch đang cháy. block.rtg-generator.description = Sử dụng nhiệt của các hợp chất phóng xạ đang phân hủy để tạo ra năng lượng với tốc độ chậm. block.solar-panel.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời. block.solar-panel-large.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời. Hiệu quả hơn pin mặt trời tiêu chuẩn. -block.thorium-reactor.description = Tạo ra lượng năng lượng lớn từ thorium. Yêu cầu làm mát liên tục. Sẽ phát nổ dữ dội nếu không cung cấp đủ chất làm mát. -block.impact-reactor.description = Tạo ra lượng năng lượng khổng lồ khi đạt hiệu quả cao nhất. Yêu cầu nguồn năng lượng lớn để bắt đầu quá trình. -block.mechanical-drill.description = Khi đặt trên quặng, xuất các vật phẩm với tốc độ chậm. Chỉ có khả năng khai thác các tài nguyên cơ bản. +block.thorium-reactor.description = Tạo ra lượng năng lượng lớn từ thori. Yêu cầu làm mát liên tục. Sẽ phát nổ dữ dội nếu không cung cấp đủ chất làm mát. +block.impact-reactor.description = Tạo ra lượng năng lượng khổng lồ khi đạt hiệu quả cao nhất. Yêu cầu nguồn năng lượng lớn để khởi động quá trình. +block.mechanical-drill.description = Khi đặt trên quặng, xuất vô hạn các vật phẩm với tốc độ chậm. Chỉ có khả năng khai thác các tài nguyên cơ bản. block.pneumatic-drill.description = Máy khoan cải tiến, có khả năng khai thác titan. Khai thác với tốc độ nhanh hơn máy khoan cơ khí. -block.laser-drill.description = Cho phép khoan nhanh hơn nhờ công nghệ laser, nhưng đòi hỏi năng lượng. Có khả năng khai thác thorium. +block.laser-drill.description = Cho phép khoan nhanh hơn nhờ công nghệ laser, nhưng đòi hỏi năng lượng. Có khả năng khai thác thori. block.blast-drill.description = Máy khoan siêu cấp. Yêu cầu lượng năng lượng lớn. -block.water-extractor.description = Khai thác nước ngầm. Được sử dụng ở những nơi không có sẵn nước. -block.cultivator.description = Lọc bào tử có trong không khí và nuôi cấy thành vỏ bào tử. +block.water-extractor.description = Khai thác nước ngầm. Được dùng ở những nơi bề mặt không có sẵn nước. +block.cultivator.description = Lọc bào tử có trong không khí để nuôi cấy thành vỏ bào tử. block.cultivator.details = Công nghệ được phục hồi. Được sử dụng để sản xuất một lượng lớn bào tử. Có thể là nơi ủ ban đầu của các bào tử hiện đang bao phủ Serpulo. -block.oil-extractor.description = Sử dụng lượng năng lượng năng lớn, sử dụng cát và nước để khoan dầu. +block.oil-extractor.description = Sử dụng lượng năng lượng lớn, cát và nước để khoan dầu. block.core-shard.description = Trung tâm của căn cứ. Sau khi bị phá hủy, khu vực này sẽ bị mất. -block.core-shard.details = Căn cứ cấp 1. Gọn nhẹ. Tự thay thế. Được trang bị tên lửa đẩy dùng một lần. Không được thiết kế để di chuyển giữa các hành tinh. -block.core-foundation.description = Trung tâm của căn cứ. Được bọc giáp. Chứa được nhiều tài nguyên hơn Căn cứ: Cơ sỏ. -block.core-foundation.details = Căn cứ cấp 2. -block.core-nucleus.description = Lõi của căn cứ. Bọc giáp chắc chắn. Lưu trữ lượng lớn tài nguyên. -block.core-nucleus.details = Căn cứ cấp 3 và cũng là cấp cao nhất. -block.vault.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với điểm dỡ hàng. -block.container.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với điểm dỡ hàng. -block.unloader.description = Lấy các vật phẩm được chọn từ các ô gần đó. -block.launch-pad.description = Phóng lô vật phẩm vào phân vùng. -block.launch-pad.details = Hệ thống quỹ đạo phụ để vận chuyển tài nguyên từ điểm này sang điểm khác. Các nhóm tải trọng rất dễ vỡ và không có khả năng tồn tại khi tái nhập. +block.core-shard.details = Cấp độ thứ nhất. Gọn nhẹ. Tự thay thế. Được trang bị tên lửa đẩy dùng một lần. Không được thiết kế để di chuyển giữa các hành tinh. +block.core-foundation.description = Trung tâm của căn cứ. Được bọc giáp. Chứa được nhiều tài nguyên hơn Lõi: Cơ sở. +block.core-foundation.details = Cấp độ thứ 2. +block.core-nucleus.description = Trung của căn cứ. Bọc giáp chắc chắn. Lưu trữ lượng lớn tài nguyên. +block.core-nucleus.details = Cấp độ thứ 3 và cũng là cấp cuối cùng. +block.vault.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Mở rộng kho lưu trữ khi đặt kế bên một lõi. Nội dung có thể được lấy ra với điểm dỡ hàng. +block.container.description = Lưu trữ lượng nhỏ vật phẩm mỗi loại. Mở rộng kho lưu trữ khi đặt kế bên một lõi. Nội dung có thể được lấy ra với điểm dỡ hàng. +block.unloader.description = Lấy các vật phẩm được chọn từ các khối gần đó. +block.launch-pad.description = Phóng lô vật phẩm vào khu vực được chọn. +block.launch-pad.details = Hệ thống quỹ đạo phụ để vận chuyển tài nguyên từ điểm này sang điểm khác. Các nhóm khối hàng rất dễ vỡ và không có khả năng tồn tại khi tái nhập. block.duo.description = Bắn xen kẽ đạn vào kẻ địch. -block.scatter.description = Bắn chì, phế liệu hoặc thuỷ tinh vào kẻ địch trên không. -block.scorch.description = Đốt mọi kẻ địch trên mặt đất. Hiệu quả cao ở tầm gần. -block.hail.description = Phóng đạn nhỏ vào kẻ địch trên mặt đất ở tầm xa. -block.wave.description = Phóng một tia chất lỏng vào kẻ địch. Tự chữa cháy nếu được cung cấp nước. -block.lancer.description = Tích tụ và phóng tia năng lượng mạnh vào kẻ địch trên mặt đất. -block.arc.description = Phóng tia điện vào kẻ địch trên mặt đất. +block.scatter.description = Bắn khối chì, phế liệu hoặc thuỷ tinh vào kẻ địch trên không. +block.scorch.description = Đốt mọi kẻ địch trên mặt đất ở gần. Hiệu quả cao ở tầm gần. +block.hail.description = Bắn đạn nhỏ vào kẻ địch trên mặt đất ở tầm xa. +block.wave.description = Bắn một tia chất lỏng vào kẻ địch. Tự chữa cháy nếu được cung cấp nước. +block.lancer.description = Tích tụ và bắn tia năng lượng mạnh vào kẻ địch trên mặt đất. +block.arc.description = Bắn tia hồ quang điện vào kẻ địch trên mặt đất. block.swarmer.description = Bắn tên lửa truy đuổi vào kẻ địch. -block.salvo.description = Bắn loạt đạn vào kẻ địch. -block.fuse.description = Bắn ba đạn xuyên giáp tầm gần vào kẻ địch. +block.salvo.description = Bắn loạt đạn nhanh vào kẻ địch. +block.fuse.description = Bắn ba tia đạn xuyên giáp tầm gần vào kẻ địch. block.ripple.description = Bắn cụm đạn vào kẻ địch trên mặt đất ở tầm xa. -block.cyclone.description = Bắn đạn nổ vào kẻ địch ở gần. -block.spectre.description = Bắn đạn xuyên giáp lớn ở kẻ địch trên không và trên mặt đất. -block.meltdown.description = Nạp và bắn một tia laser liên tục vào kẻ địch ở gần. Cần có chất làm mát để hoạt động. +block.cyclone.description = Bắn cụm đạn nổ vào kẻ địch ở gần. +block.spectre.description = Bắn đạn lớn ở kẻ địch trên không và trên mặt đất. +block.meltdown.description = Tích tụ và bắn một tia laser liên tục vào kẻ địch ở gần. Cần có chất làm mát để hoạt động. block.foreshadow.description = Bắn viên một viên đạn tỉa lớn ở tầm xa. Ưu tiên kẻ địch có độ bền tối đa cao nhất. -block.repair-point.description = Liên tục sửa chữa robot ở trong phạm vi hoạt động. -block.segment.description = Gây hư hại và phá hủy đạn đến. Ngoại trừ tia laser. -block.parallax.description = Bắn một tia kéo máy bay địch và làm hư hỏng nó trong quá trình kéo. +block.repair-point.description = Liên tục sửa chữa đơn vị ở trong phạm vi hoạt động. +block.segment.description = Gây hư hại và phá hủy đạn hướng đến. Không nhắm vào tia laser. +block.parallax.description = Bắn một tia kéo mục tiêu trên không và làm hư hỏng nó trong quá trình kéo. block.tsunami.description = Phóng một tia chất lỏng mạnh vào kẻ địch. Tự chữa cháy nếu được cung cấp nước hoặc chất làm mát. block.silicon-crucible.description = Tinh chế silicon từ cát và than, sử dụng nhiệt thạch làm nguồn nhiệt phụ. Có hiệu quả cao hơn khi ở nơi nóng. -block.disassembler.description = Tách xỉ thành các kim loại khác nhau với hiệu suất thấp. Có thể sản xuất thorium. -block.overdrive-dome.description = Tăng tốc độ làm việc của các công trình lân cận. Sử dụng sợi lượng tử and silicon để hoạt động. -block.payload-conveyor.description = Di chuyển những khối hàng lớn, chẳng hạn như các đơn vị từ nhà máy. -block.payload-router.description = Tách những khối hàng đầu vào thành 3 hướng đầu ra. -block.ground-factory.description = Sản xuất binh lính bộ binh. Các đơn vị đầu ra có thể được sử dụng trực tiếp, hoặc đem nâng cấp. -block.air-factory.description = Sản xuất binh lính không quân. Các đơn vị đầu ra có thể được sử dụng trực tiếp, hoặc đem nâng cấp. -block.naval-factory.description = Sản xuất binh lính hải quân. Các đơn vị đầu ra có thể được sử dụng trực tiếp, hoặc đem nâng cấp. -block.additive-reconstructor.description = Nâng cấp quân của bạn lên cấp hai. -block.multiplicative-reconstructor.description = Nâng cấp quân của bạn lên cấp ba. -block.exponential-reconstructor.description = Nâng cấp quân của bạn lên cấp bốn. -block.tetrative-reconstructor.description = Nâng cấp quân của bạn lên cấp năm (cuối cùng). -block.switch.description = Công tắc, trạng thái có thể được đọc và điều khiển với vi xử lý logic. -block.micro-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. -block.logic-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn bộ xử lý nhỏ. -block.hyper-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn bộ xử lý. +block.disassembler.description = Tách xỉ thành lượng nhỏ các thành phần khoáng chất lạ với hiệu suất thấp. Có thể sản xuất thori. +block.overdrive-dome.description = Tăng tốc độ làm việc của các công trình lân cận. Sử dụng sợi lượng tử và silicon để hoạt động. +block.payload-conveyor.description = Di chuyển những khối hàng lớn, chẳng hạn như các đơn vị từ nhà máy. Từ tính. Sử dụng ở những môi trường không trọng lực. +block.payload-router.description = Tách những khối hàng đầu vào thành 3 hướng đầu ra. Hoạt động như một bộ lọc khi được thiết lập. Từ tính. Sử dụng ở những môi trường không trọng lực. +block.ground-factory.description = Sản xuất đơn vị bộ binh. Các đơn vị đầu ra có thể được sử dụng trực tiếp, hoặc đưa vào máy tái thiết để nâng cấp. +block.air-factory.description = Sản xuất đơn vị không quân. Các đơn vị đầu ra có thể được sử dụng trực tiếp, hoặc đưa vào máy tái thiết để nâng cấp. +block.naval-factory.description = Sản xuất đơn vị hải quân. Các đơn vị đầu ra có thể được sử dụng trực tiếp, hoặc đưa vào máy tái thiết để nâng cấp. +block.additive-reconstructor.description = Nâng cấp đơn vị đầu vào lên cấp thứ hai. +block.multiplicative-reconstructor.description = Nâng cấp đơn vị đầu vào lên cấp thứ ba. +block.exponential-reconstructor.description = Nâng cấp đơn vị đầu vào lên cấp thứ bốn. +block.tetrative-reconstructor.description = Nâng cấp đơn vị đầu vào lên cấp thứ năm và là cấp cuối cùng. +block.switch.description = Công tắc có thể bật/tắt. Trạng thái có thể được đọc và điều khiển với xử lý logic. +block.micro-processor.description = Chạy tập hợp các chỉ lệnh trong một vòng lặp. Có thể dùng để điều khiển đơn vị và công trình. +block.logic-processor.description = Chạy tập hợp các chỉ lệnh trong một vòng lặp. Có thể dùng để điều khiển đơn vị và công trình. Nhanh hơn bộ xử lý vi cấp. +block.hyper-processor.description = Chạy tập hợp các chỉ lệnh trong một vòng lặp. Có thể dùng để điều khiển đơn vị và công trình. Nhanh hơn bộ xử lý trung cấp. block.memory-cell.description = Lưu trữ thông tin cho bộ xử lý. block.memory-bank.description = Lưu trữ thông tin cho bộ xử lý. Dung lượng cao. block.logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lý. block.large-logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lý. -block.interplanetary-accelerator.description = Tòa 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.core-bastion.description = Trung tâm của căn cứ. Bọc giáp. Khu vực sẽ mất khi bị phá hủy. -block.core-citadel.description = Trung tâm của căn cứ. Bọc giáp tốt hơn. Lưu trữ nhiều vật phẩm hơn căn cứ Pháo đài. -block.core-acropolis.description = Trung tâm của căn cứ. Được bọc giáp rất tốt. Lưu trữ nhiều vật phẩm hơn căn cứ Thủ Phủ. -block.breach.description = Bắn đạn beryllium hoặc tungsten gây cháy vào kẻ địch. -block.diffuse.description = Bắn một loạt đạn gây cháy theo hình nón. Đồng thời đẩy kẻ địch về phía sau. -block.sublimate.description = Thổi tia lửa vào kẻ thù. Có khả năng xuyên giáp. -block.titan.description = Bắn đạn pháo khổng lồ vào các mục tiêu trên mặt đất. Yêu cầu hydrogen. -block.afflict.description = Bắn ra các mảnh vỡ của một quả cầu tích điện khổng lồ. Yêu cầu được làm nóng. -block.disperse.description = Bắng các mảnh gây nổ vào các mục tiêu trên không. -block.lustre.description = Bắn một tia laser vào các mục tiêu của địch. +block.interplanetary-accelerator.description = Tòa tháp súng điện từ cỡ lớn. Tăng tốc vật phóng đến vận tốc thoát để triển khai giữa các hành tinh. +block.repair-turret.description = Sửa chữa những đơn vị bị hư hỏng trong khu vực nhất định. Tùy chọn làm mát để tăng hiệu quả. + +#Erekir +block.core-bastion.description = Trung tâm của căn cứ. Bọc giáp. Một khi bị phá hủy, khu vực sẽ mất. +block.core-citadel.description = Trung tâm của căn cứ. Bọc giáp tốt hơn. Lưu trữ nhiều vật phẩm hơn lõi Pháo đài. +block.core-acropolis.description = Trung tâm của căn cứ. Được bọc giáp rất tốt. Lưu trữ nhiều vật phẩm hơn lõi Thủ Phủ. +block.breach.description = Bắn đạn beryl hoặc tungsten xuyên thấu vào kẻ địch. +block.diffuse.description = Bắn một loạt đạn mảnh theo hình nón. Đẩy kẻ địch về phía sau. +block.sublimate.description = Thổi tia lửa mạnh liên tục vào kẻ địch. Xuyên giáp. +block.titan.description = Bắn đạn pháo nổ khổng lồ vào các mục tiêu trên mặt đất. Yêu cầu hydro. +block.afflict.description = Bắn ra các mảnh vỡ của một quả cầu tích điện khổng lồ. Yêu cầu nhiệt. +block.disperse.description = Bắn các mảnh vỡ vào các mục tiêu trên không. +block.lustre.description = Bắn một tia laser di chuyển chậm một mục tiêu vào các mục tiêu của địch. block.scathe.description = Phóng một tên lửa mạnh vào các mục tiêu trên mặt đất ở khoảng cách lớn. block.smite.description = Bắn viên đạn phát sáng nổ xuyên thấu. block.malign.description = Bắn chùm hàng loạt những tia laser dẫn đường nhắm thẳng mục tiêu kẻ địch. Yêu cầu lượng nhệt lớn. block.silicon-arc-furnace.description = Tinh chế silicone từ cát và than chì. -block.oxidation-chamber.description = Chuyển đổi beryllium và ozone thành oxide. Tạo ra nhiệt như sản phẩm phụ. -block.electric-heater.description = Làm nóng khối đối diện. Yêu cầu một lượng điện lớn. -block.slag-heater.description = Làm nóng khối đối diện. Yêu cầu xỉ. -block.phase-heater.description = Làm nóng khối đối diện. Yêu cầu sợi lượng tử. +block.oxidation-chamber.description = Chuyển đổi beryl và ôzôn thành ôxit. Tạo ra nhiệt như sản phẩm phụ. +block.electric-heater.description = Làm nóng công trình. Yêu cầu một lượng điện lớn. +block.slag-heater.description = Làm nóng công trinh. Yêu cầu xỉ. +block.phase-heater.description = Làm nóng công trình. Yêu cầu sợi lượng tử. block.heat-redirector.description = Chuyển lượng nhiệt nhận được sang các khối khác. -block.heat-router.description = Chuyển lượng nhiệt nhận được sang ba hướng còn lại. -block.electrolyzer.description = Chuyển đổi nước thành hydrogen và ozone. -block.atmospheric-concentrator.description = Cô đặc nitơ từ khí quyển. Yêu cầu nhiệt. +block.heat-router.description = Phân phát nhiệt nhận được sang ba hướng đầu ra. +block.electrolyzer.description = Chuyển đổi nước thành hydro và ôzôn. Các khí xuất hai hướng đối nhau, được đánh dấu bằng các màu tương ứng. +block.atmospheric-concentrator.description = Cô đặc nitro từ khí quyển. Yêu cầu nhiệt. block.surge-crucible.description = Tinh chế hợp kim từ xỉ và silicon. Yêu cầu nhiệt. -block.phase-synthesizer.description = Tổng hợp sợi lượng tử từ thorium, cát, và ozone. Yêu cầu nhiệt. +block.phase-synthesizer.description = Tổng hợp sợi lượng tử từ thori, cát, và ôzôn. Yêu cầu nhiệt. block.carbide-crucible.description = Kết hợp than chì và tungsten để tạo ra carbide. Yêu cầu nhiệt. -block.cyanogen-synthesizer.description = Tổng hợp cyanogen từ arkycite và than chì. Yêu cầu nhiệt. +block.cyanogen-synthesizer.description = Tổng hợp cyano từ arkycite và than chì. Yêu cầu nhiệt. block.slag-incinerator.description = Đốt các vật phẩm hoặc chất lỏng không bay hơi. Yêu cầu xỉ. -block.vent-condenser.description = Ngưng tụ khí từ lỗ thông hơi để tạo ra nước. Tiêu thụ điện. -block.plasma-bore.description = Khi được đặt đối diện với một bức tường quặng, sản xuất vô hạn vật phẩm. Yêu cầu một lượng điện nhỏ. -block.large-plasma-bore.description = Một máy khoan plasma lớn hơn. Có thể khoan tungsten và thorium. Yêu cầu hydrogen và điện. +block.vent-condenser.description = Ngưng tụ khí từ lỗ hơi nước để tạo ra nước. Tiêu thụ điện. +block.plasma-bore.description = Khi được đặt đối diện với một bức tường quặng, sản xuất vô hạn vật phẩm. Yêu cầu một lượng điện nhỏ.\nTùy chọn sử dụng hydro để tăng hiệu suất. +block.large-plasma-bore.description = Một máy khoan plasma lớn hơn. Có thể khoan tungsten và thori. Yêu cầu hydro và điện.\nTùy chọn sử dụng nitro để tăng hiệu suất. block.cliff-crusher.description = Nghiền vách đá, xuất ra cát vô hạn. Yêu cầu năng lượng. Hiệu quả thay đổi dựa theo loại vách đá. block.impact-drill.description = Khi được đặt lên một loại quặng, sản xuất vô hạn vật phẩm. Yêu cầu điện và nước. -block.eruption-drill.description = Phiên bản cải tiến củ máy khoan động lực. Có thể khoan thorium. Yêu cầu hydrogen. -block.reinforced-conduit.description = Di chuyển chất lỏng về phía trước. Không nhận đầu vào từ các bên. +block.eruption-drill.description = Phiên bản cải tiến của máy khoan động lực. Có thể khoan thori. Yêu cầu hydro. +block.reinforced-conduit.description = Di chuyển chất lỏng về phía trước. Không nhận đầu vào nếu không phải ống dẫn từ các bên. block.reinforced-liquid-router.description = Phân chia chất lỏng đều cho tất cả các bên. block.reinforced-liquid-tank.description = Lưu trữ một lượng chất lỏng lớn. block.reinforced-liquid-container.description = Lưu trữ một lượng chất lỏng vừa phải. block.reinforced-bridge-conduit.description = Vận chuyển chất lỏng qua các công trình và địa hình. -block.reinforced-pump.description = Bơm chất lỏng lên. Yêu cầu hydrogen. -block.beryllium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.beryllium-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.tungsten-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.tungsten-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.carbide-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.carbide-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ thù. -block.reinforced-surge-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù, phóng ra các tia điện khi gặp đạn đối phương. -block.reinforced-surge-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ thù, phóng ra các tia điện khi gặp đạn đối phương.. -block.shielded-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù. Triển khai một cái khiên chống đạn khi được cung cấp điện. Dẫn điện. -block.blast-door.description = Một loại tường tự động mở ra khi đơn vị đang ở gần. Không thể điều khiển bằng tay. +block.reinforced-pump.description = Bơm chất lỏng lên. Yêu cầu hydro. +block.beryllium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.beryllium-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.tungsten-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.tungsten-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.carbide-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.carbide-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch. +block.reinforced-surge-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch, thường phóng ra các tia điện khi đạn va chạm. +block.reinforced-surge-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch, thường phóng ra các tia điện khi đạn va chạm. +block.shielded-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch, phản hồi hầu hết các loại đạn khi va chạm. Triển khai một lá chắn chống đạn khi được cung cấp điện. Dẫn điện. +block.blast-door.description = Một loại tường tự động mở ra khi đơn vị mặt đất đang ở gần. Không thể điều khiển một cách thủ công. block.duct.description = Di chuyển vật phẩm về phía trước. Chỉ có thể lưu trữ một vật phẩm. -block.armored-duct.description = Di chuyển vật phẩm về phía trước. Không nhận đầu vào từ các bên. +block.armored-duct.description = Di chuyển vật phẩm về phía trước. Không nhận đầu vào nếu không phải ống chân không từ các bên. block.duct-router.description = Phân chia vật phẩm đều cho tất cả các bên. Chỉ nhận đầu vào từ phía sau. Có thể được cấu hình thành một bộ sắp xếp vật phẩm. -block.overflow-duct.description = Chỉ xuất vật phẩm ra các bên nếu đường dẫn phía trước bị chặn. +block.overflow-duct.description = Chỉ xuất vật phẩm ra các bên nếu đường phía trước bị chặn. block.duct-bridge.description = Vận chuyển vật phẩm qua các công trình và địa hình. -block.duct-unloader.description = Lấy ra vật phẩm đã chọn từ khối phía sau nó. Không thể lấy ra từ các căn cứ. -block.underflow-duct.description = Ngược lại với một ống tràn chân không. Xuất ra phía trước nếu các đường dẫn bên trái và phải bị chặn. +block.duct-unloader.description = Lấy ra vật phẩm đã chọn từ khối phía sau nó. Không thể lấy ra từ các lõi. +block.underflow-duct.description = Ngược lại với một ống tràn chân không. Xuất ra phía trước nếu các đường bên trái và phải bị chặn. block.reinforced-liquid-junction.description = Làm cầu nối cho hai ống dẫn chất lỏng giao nhau. block.surge-conveyor.description = Di chuyển vật phẩm theo lô. Có thể được tăng tốc bằng điện. Dẫn điện. block.surge-router.description = Phân chia vật phẩm đều cho tất cả các bên từ các băng chuyền hợp kim. Có thể được tăng tốc bằng điện. Dẫn điện. @@ -2171,216 +2253,227 @@ block.unit-cargo-loader.description = Tạo thiết bị bay chở hàng. Thiế block.unit-cargo-unload-point.description = Hoạt động như một điểm thả hàng cho thiết bị bay chở hàng. Nhận món đồ khớp với bộ lọc đã chọn. block.beam-node.description = Truyền điện cho các khối khác theo hướng thẳng. Lưu trữ một lượng điện nhỏ. block.beam-tower.description = Truyền điện cho các khối khác theo hướng thẳng. Lưu trữ một lượng điện lớn. Có phạm vi rộng. -block.turbine-condenser.description = Tạo ra điện khi được đặt trên các lỗ thông hơi. Tạo ra một lượng nước nhỏ. -block.chemical-combustion-chamber.description = Tạo ra điện từ arkycite và ozone. +block.turbine-condenser.description = Tạo ra điện khi được đặt trên các lỗ hơi nước. Tạo ra một lượng nước nhỏ. +block.chemical-combustion-chamber.description = Tạo ra điện từ arkycite và ôzôn. block.pyrolysis-generator.description = Tạo ra một lượng điện lớn từ arkycite và xỉ nóng chảy. Tạo ra nước như một sản phẩm phụ. -block.flux-reactor.description = Tạo ra một lượng điện lớn khi được làm nóng. Yêu cầu sử dụng cyanogen như một chất làm ổn định. Lượng điện tạo ra và lượng tiêu thụ cyanogen tỷ lệ thuận với lượng nhiệt nhận được.\nPhát nổ nếu không cung cấp đủ cyanogen. -block.neoplasia-reactor.description = Sử dụng arkycite, nước và sợi lượng tử để tạo ra lượng điện khổng lồ. Tạo ra nhiệt và neoplasm như sản phẩm phụ trong quá trình hoạt động.\nPhát nổ dữ dội nếu không được loại bỏ khỏi lò phản ứng. +block.flux-reactor.description = Tạo ra một lượng điện lớn khi được làm nóng. Yêu cầu sử dụng cyano như một chất làm ổn định. Lượng điện tạo ra và lượng tiêu thụ cyano tỷ lệ thuận với lượng nhiệt nhận được.\nPhát nổ nếu không cung cấp đủ cyano. +block.neoplasia-reactor.description = Sử dụng arkycite, nước và sợi lượng tử để tạo ra lượng điện khổng lồ. Tạo ra nhiệt và lượng tế bào tân sinh nguy hiểm như sản phẩm phụ trong quá trình hoạt động.\nPhát nổ dữ dội nếu tế bào tân sinh không được loại bỏ khỏi lò phản ứng. block.build-tower.description = Tự động xây dựng lại các công trình trong phạm vi và hỗ trợ các đơn vị khác trong quá trình xây dựng. -block.regen-projector.description = Sửa chữa các công trình một cách chậm rãi trong phạm vi hình vuông. Yêu cầu hidrogen. -block.reinforced-container.description = Lưu trữ một lượng nhỏ vật phẩm. Vật phẩm có thể được lấy ra thông qua các điểm dỡ hàng. Không làm tăng khả năng lưu trữ của căn cứ. -block.reinforced-vault.description = Lưu trữ một lượng lớn vật phẩm. Vật phẩm có thể được lấy ra thông qua các điểm dỡ hàng. Không làm tăng khả năng lưu trữ của căn cứ. -block.tank-fabricator.description = Chế tạo đơn vị Stell. Các đơn vị được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy chế tạo khác để được nâng cấp. -block.ship-fabricator.description = Chế tạo đơn vị Elude. Các đơn vị được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy chế tạo khác để được nâng cấp. -block.mech-fabricator.description = Chế tạo đơn vị Merui. Các đơn vị được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy chế tạo khác để được nâng cấp. -block.tank-assembler.description = Lắp ráp các xe tăng lớn từ các khối và đơn vị. Cấp độ đầu ra có thể được tăng bằng cách thêm các module. -block.ship-assembler.description = Lắp ráp các phi thuyền lớn từ các khối và đơn vị. Cấp độ đầu ra có thể được tăng bằng cách thêm các module. -block.mech-assembler.description = Lắp ráp các lính cơ động lớn từ các khối và đơn vị. Cấp độ đầu ra có thể được tăng bằng cách thêm các module. -block.tank-refabricator.description = Nâng cấp các xe tăng lên cấp hai. -block.ship-refabricator.description = Nâng cấp các phi thuyền lên cấp hai. -block.mech-refabricator.description = Nâng cấp các đơn vị cơ động lên cấp hai. -block.prime-refabricator.description = Nâng cấp các đơn vị lên cấp ba. +block.regen-projector.description = Sửa chữa các công trình một cách chậm rãi trong phạm vi hình vuông. Yêu cầu hydro.\nTùy chọn sử dụng sợi lượng tử để tăng hiệu suất. +block.reinforced-container.description = Lưu trữ một lượng nhỏ vật phẩm. Nội dung có thể được lấy ra thông qua các điểm dỡ hàng. Không làm tăng khả năng lưu trữ của lõi. +block.reinforced-vault.description = Lưu trữ một lượng lớn vật phẩm. Nội dung có thể được lấy ra thông qua các điểm dỡ hàng. Không làm tăng khả năng lưu trữ của lõi. +block.tank-fabricator.description = Chế tạo đơn vị Stell. Các đơn vị được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy tái chế tạo khác để được nâng cấp. +block.ship-fabricator.description = Chế tạo đơn vị Elude. Các đơn vị được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy tái chế tạo khác để được nâng cấp. +block.mech-fabricator.description = Chế tạo đơn vị Merui. Các đơn vị được chế tạo có thể được sử dụng trực tiếp hoặc được chuyển vào các máy tái chế tạo khác để được nâng cấp. +block.tank-assembler.description = Lắp ráp các xe tăng lớn từ các khối và đơn vị. Cấp độ đầu ra có thể được tăng bằng cách thêm các mô-đun. +block.ship-assembler.description = Lắp ráp các phi thuyền lớn từ các khối và đơn vị. Cấp độ đầu ra có thể được tăng bằng cách thêm các mô-đun. +block.mech-assembler.description = Lắp ráp các máy cơ động lớn từ các khối và đơn vị. Cấp độ đầu ra có thể được tăng bằng cách thêm các mô-đun. +block.tank-refabricator.description = Nâng cấp các xe tăng đầu vào lên cấp thứ hai. +block.ship-refabricator.description = Nâng cấp các phi thuyền đầu vào lên cấp thứ hai. +block.mech-refabricator.description = Nâng cấp các máy cơ động đầu vào lên cấp thứ hai. +block.prime-refabricator.description = Nâng cấp các đơn vị đầu vào lên cấp thứ ba. block.basic-assembler-module.description = Tăng cấp lắp ráp khi đặt cạnh một hệ thống lắp ráp. Yêu cầu điện. Có thể sử dụng như nơi nhập các khối hàng. -block.small-deconstructor.description = Tháo dỡ các công trình và đơn vị đầu vào. Trả lại 100% chi phí tạo ra. +block.small-deconstructor.description = Tháo dỡ các công trình và đơn vị đầu vào. Trả lại 100% chi phí xây dựng. block.reinforced-payload-conveyor.description = Di chuyển khối hàng tiến về phía trước. -block.reinforced-payload-router.description = Phân chia các khối hàng vào các khối liền kề. Hoạt động như một bộ lọc khi thiết lập bộ lọc. -block.payload-mass-driver.description = Phương pháp vận chuyển khối hàng tầm xa. Bắn các khối hàng nhận được đến các máy phóng từ trường được liên kết. -block.large-payload-mass-driver.description = Phương pháp vận chuyển khối hàng tầm xa. Bắn các khối hàng nhận được đến các máy phóng từ trường được liên kết. -block.unit-repair-tower.description = Sửa chữa tất cả các đơn vị trong phạm vi. Yêu cầu ozone. -block.radar.description = Quét một phạm vi lớn để phát hiện các đơn vị kẻ địch và mở rộng bản đồ. Yêu cầu điện. -block.shockwave-tower.description = Phá hủy và tiêu diệt các loại đạn của kẻ địch trong một phạm vi. Yêu cầu cyanogen. +block.reinforced-payload-router.description = Phân chia các khối hàng vào các khối liền kề. Hoạt động như một bộ lọc khi được thiết lập. +block.payload-mass-driver.description = Công trình vận chuyển khối hàng tầm xa. Bắn các khối hàng nhận được đến các máy phóng từ trường được liên kết. +block.large-payload-mass-driver.description = Công trình vận chuyển khối hàng tầm xa. Bắn các khối hàng nhận được đến các máy phóng từ trường được liên kết. +block.unit-repair-tower.description = Sửa chữa tất cả các đơn vị trong phạm vi. Yêu cầu ôzôn. +block.radar.description = Rà soát địa hình và đơn vị kẻ địch một cách từ từ trong môt phạm vi lớn. Yêu cầu điện. +block.shockwave-tower.description = Phá hủy và tiêu diệt các loại đạn của kẻ địch trong một phạm vi. Yêu cầu cyano. block.canvas.description = Hiển thị một hình ảnh đơn giản với một bảng màu được định sẵn. Có thể chỉnh sửa. -unit.dagger.description = Bắn đạn tiêu chuẩn vào tất cả kẻ địch xung quanh. -unit.mace.description = Phun lửa vào tất cả kẻ địch xung quanh. -unit.fortress.description = Bắn pháo tầm xa lên kẻ địch trên mặt đất. -unit.scepter.description = Bắn một chùm đạn vào kẻ địch ở gần. -unit.reign.description = Bắn một chùm đạn xuyên giáp vào kẻ địch ở gần. -unit.nova.description = Bắn tia laser làm tổn hại kẻ địch và sửa chữa các tòa nhà. Có khả năng bay. -unit.pulsar.description = Bắn tia điện làm tổn hại kẻ địch và sửa chữa các tòa nhà. Có khả năng bay. -unit.quasar.description = Bắn tia laser xuyên giáp làm tổn hại kẻ địch và sửa chữa các tòa nhà. Có khả năng bay. Được bọc giáp. -unit.vela.description = Bắn tia laser liên tục xuyên giáp làm tổn hại kẻ địch, gây cháy và sửa chữa các tòa nhà. Có khả năng bay. -unit.corvus.description = Bắn đia laser đánh bật kẻ địch và sửa chữa các tòa nhà. Có thể đi qua đa số địa hình. -unit.crawler.description = Chạy đến kẻ địch và nổ. -unit.atrax.description = Phun xỉ nóng chảy vào kẻ địch trên mặt đất. Có thể đi qua đa số địa hình. -unit.spiroct.description = Bắn tia laser vào kẻ địch trên mặt đất và tự sửa chữa nó. Có thể đi qua đa số địa hình. -unit.arkyid.description = Bắn tia laser lớn vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình. -unit.toxopid.description = Bắn chùm đạn điện và tia laser xuyên giáp vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình. -unit.flare.description = Bắn đạn thường vào kẻ địch tầm gần trên mặt đất. -unit.horizon.description = Thả chùm bom lên kẻ địch trên mặt đất. -unit.zenith.description = Bắn chùm tên lửa vào mọi kẻ địch tầm gần. -unit.antumbra.description = Bắn chùm đạn vào mọi kẻ địch tầm gần. -unit.eclipse.description = Bắn hai tia laser xuyên giáp và chùm flak vào mọi kẻ địch tầm gần. -unit.mono.description = Tự động khai thác đồng và chì, và vận chuyển vào căn cứ. -unit.poly.description = Tự động xây dựng lại các công trình bị hỏng và hỗ trợ các đơn vị khác thi công. -unit.mega.description = Tự động sửa chữa các công trình bị hỏng. Có khả năng mang bộ binh nhỏ. -unit.quad.description = Thả bom to lên kẻ địch, sửa chữa các tòa nhà và tổn hại kẻ địch. Có khả năng mang bộ binh vừa. -unit.oct.description = Bảo vệ đồng minh với giáp. Có khả năng mang đa số bộ binh. -unit.risso.description = Bắn chùm tên lửa và đạn lên kẻ địch tầm gần. -unit.minke.description = Bắn đạn và đạn thường lên kẻ địch tầm gần trên mặt đất. -unit.bryde.description = Bắn đạn tầm xa và tên lửa vào kẻ địch. -unit.sei.description = Bắn chùm tên lửa và đạn xuyên giáp vào kẻ địch. -unit.omura.description = Bắn đạn từ trường xuyên giáp tầm xa vào kẻ địch. Tạo nên Flare. -unit.alpha.description = Bảo vệ căn cứ cơ sở khỏi kẻ thù. Có thể xây dựng. -unit.beta.description = Bảo vệ căn cứ trụ sở khỏi kẻ thù. Có thể xây dựng. -unit.gamma.description = Bảo vệ căn cứ trung tâm khỏi kẻ thù. Có thể xây dựng. -unit.retusa.description = Bắn ngư lôi dẫn đường vào kẻ thù gần đó. Sửa đơn vị đồng minh. -unit.oxynoe.description = Bắn luồng tia lửa sửa công trình vào kẻ địch gần đó. Nhắm vào viên đạn kẻ địch với các bệ súng phòng thủ mũi nhọn. -unit.cyerce.description = Bắn chùm tên lửa dẫn đường lên kẻ thù. Sửa đơn vị đồng minh. +unit.dagger.description = Bắn các viên đạn tiêu chuẩn vào các mục tiêu kẻ địch. +unit.mace.description = Phun tia lửa vào các mục tiêu kẻ địch. +unit.fortress.description = Bắn pháo tầm xa lên các mục tiêu kẻ địch trên mặt đất. +unit.scepter.description = Bắn một chùm đạn tích tụ vào các mục tiêu kẻ địch. +unit.reign.description = Bắn một chùm đạn xuyên giáp mạnh vào các mục tiêu kẻ địch. +unit.nova.description = Bắn tia laser gây sát thương lên các mục tiêu kẻ địch và sửa chữa các công trình đồng minh. Có khả năng bay. +unit.pulsar.description = Bắn tia điện gây sát thương lên các mục tiêu kẻ địch và sửa chữa các công trình đồng minh. Có khả năng bay. +unit.quasar.description = Bắn tia laser xuyên giáp gây sát thương lên các mục tiêu kẻ địch và sửa chữa các công trình đồng minh. Có khả năng bay. Có lá chắn. +unit.vela.description = Bắn tia laser liên tục xuyên giáp gây sát thương lên các mục tiêu kẻ địch, gây cháy và sửa chữa các công trình đồng minh. Có khả năng bay. +unit.corvus.description = Bắn đia laser cực mạnh gây sát thương lên các mục tiêu kẻ địch và sửa chữa các công trình đồng minh. Có thể đi qua hầu hết loại địa hình. +unit.crawler.description = Chạy thẳng đến kẻ địch và tự hủy, gây ra vụ nổ lớn. +unit.atrax.description = Phun tia xỉ nóng chảy gây suy nhược vào kẻ địch trên mặt đất. Có thể đi qua hầu hết loại địa hình. +unit.spiroct.description = Bắn tia laser gây ăn mòn vào các mục tiêu kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua hầu hết loại địa hình. +unit.arkyid.description = Bắn tia laser lớn gây ăn mòn vào các mục tiêu kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua hầu hết loại địa hình. +unit.toxopid.description = Bắn chùm đạn điện và tia laser xuyên giáp vào các mục tiêu kẻ địch trên mặt đất. Có thể đi qua hầu hết loại địa hình. +unit.flare.description = Bắn đạn tiêu chuẩn vào các mục tiêu kẻ địch trên mặt đất. +unit.horizon.description = Thả chùm bom lên các mục tiêu kẻ địch trên mặt đất. +unit.zenith.description = Bắn chùm tên lửa vào các mục tiêu kẻ địch. +unit.antumbra.description = Bắn chùm đạn vào các mục tiêu kẻ địch. +unit.eclipse.description = Bắn hai tia laser xuyên giáp và pháo chùm vào các mục tiêu kẻ địch. +unit.mono.description = Tự động khai thác đồng và chì, vận chuyển vào lõi. +unit.poly.description = Tự động xây dựng lại các công trình bị phá hủy và hỗ trợ các đơn vị khác thi công. +unit.mega.description = Tự động sửa chữa các công trình bị hỏng. Có khả năng mang theo một số khối và đơn vị bộ binh nhỏ. +unit.quad.description = Thả bom plasma to lên kẻ địch, sửa chữa các công trình và sát thương các mục kẻ địch trên mặt đất. Có khả năng mang theo đơn vị bộ binh cỡ trung. +unit.oct.description = Bảo vệ đồng minh với lá chắn tự hồi phục. Có khả năng mang theo hầu hết các loại đơn vị bộ binh. +unit.risso.description = Bắn chùm tên lửa và đạn vào các mục tiêu kẻ địch. +unit.minke.description = Bắn chùm đạn và đạn tiêu chuẩn vào các mục tiêu kẻ địch trên mặt đất. +unit.bryde.description = Bắn đạn tầm xa và tên lửa vào các mục tiêu kẻ địch. +unit.sei.description = Bắn chùm tên lửa và đạn xuyên giáp vào các mục tiêu kẻ địch. +unit.omura.description = Bắn đạn điện trường xuyên giáp tầm xa vào các mục tiêu kẻ địch. Tạo ra các đơn vị Flare. +unit.alpha.description = Bảo vệ lõi Cơ sở khỏi kẻ địch. Có thể xây dựng. +unit.beta.description = Bảo vệ lõi Trụ sở khỏi kẻ địch. Có thể xây dựng. +unit.gamma.description = Bảo vệ lõi Trung tâm khỏi kẻ địch. Có thể xây dựng. +unit.retusa.description = Bắn ngư lôi dẫn đường vào các mục tiêu kẻ địch. Sửa đơn vị đồng minh. +unit.oxynoe.description = Bắn luồng tia lửa sửa công trình vào các mục tiêu kẻ địch. Nhắm vào viên đạn kẻ địch với bệ súng phòng thủ mũi nhọn. +unit.cyerce.description = Bắn chùm tên lửa dẫn đường vào các mục tiêu kẻ địch. Sửa đơn vị đồng minh. unit.aegires.description = Gây sốc lên tất cả đơn vị và công trình bên trong trường năng lượng của nó. Sửa chữa tất cả đồng minh. unit.navanax.description = Bắn tia xung điện từ (EMP) nổ, gây thiệt hại đáng kể lên mạng lưới năng lượng và sửa chữa công trình đồng minh. Nung chảy kẻ địch ở gần với 4 bệ súng laser tự hành. -unit.stell.description = Bắn các viên đạn tiêu chuẩn vào mục tiêu kẻ thù. -unit.locus.description = Bắn các viên đạn xen kẽ vào mục tiêu kẻ thù. -unit.precept.description = Bắn các viên đạn phân cụm xuyêm thấu vào mục tiêu kẻ thù. -unit.vanquish.description = Bắn các viên đạn phân chia xuyên thấu lớn vào mục tiêu kẻ thù. -unit.conquer.description = Bắn các viên đạn xếp tầng xuyên thấu vào mục tiêu kẻ thù. -unit.merui.description = Bắn pháo tầm xa vào mục tiêu mặt đất kẻ thù. Có thể bước qua hầu hết loại địa hình. -unit.cleroi.description = Bắn trái phá kép vào mục tiêu kẻ thù. Nhắm vào viên đạn kẻ địch với các bệ súng phòng thủ mũi nhọn. Có thể bước qua hầu hết loại địa hình. -unit.anthicus.description = Bắn tên lửa dẫn đường tầm xa vào mục tiêu kẻ thù. Có thể bước qua hầu hết loại địa hình. -unit.tecta.description = Bắn tên lửa plasma dẫn đường vào mục tiêu kẻ thù. Có thể bước qua hầu hết loại địa hình. -unit.collaris.description = Bắn pháo phân mảnh tầm xa vào mục tiêu kẻ thù. Có thể bước qua hầu hết loại địa hình. -unit.elude.description = Bắn một cặp viên đạn dẫn đường vào mục tiêu kẻ thù. Có thể lướt trên mặt chất lỏng. -unit.avert.description = Bắn một cặp viên đạn xoắn vào mục tiêu kẻ thù. -unit.obviate.description = Bắn một cặp cầu điện xoắn vào mục tiêu kẻ thù. -unit.quell.description = Bắn tên lửa tầm xa vào mục tiêu kẻ thù. Ngăn chặn khối công trình sửa chữa kẻ địch. -unit.disrupt.description = Bắn tên lửa oanh tạc tầm xa vào mục tiêu kẻ thù. Ngăn chặn khối công trình sửa chữa kẻ địch. -unit.evoke.description = Xây công trình để phòng thủ lõi Bastion. Sửa các công trình với chùm tia sáng. -unit.incite.description = Xây công trình để phòng thủ lõi Citadel. Sửa các công trình với chùm tia sáng. -unit.emanate.description = Xây công trình để phòng thủ lõi Acropolis. Sửa các công trình với chùm tia sáng. + +#Erekir +unit.stell.description = Bắn các viên đạn tiêu chuẩn vào các mục tiêu kẻ địch. +unit.locus.description = Bắn các viên đạn xen kẽ vào các mục tiêu kẻ địch. +unit.precept.description = Bắn các viên đạn phân cụm xuyên thấu vào các mục tiêu kẻ địch. +unit.vanquish.description = Bắn các viên đạn phân chia xuyên thấu lớn vào các mục tiêu kẻ địch. +unit.conquer.description = Bắn các viên đạn xếp tầng xuyên thấu vào các mục tiêu kẻ địch. +unit.merui.description = Bắn pháo tầm xa vào các mục tiêu kẻ địch trên mặt đất. Có thể đi qua hầu hết loại địa hình. +unit.cleroi.description = Bắn trái phá kép vào các mục tiêu kẻ địch. Nhắm vào viên đạn kẻ địch với các bệ súng phòng thủ mũi nhọn. Có thể đi qua hầu hết loại địa hình. +unit.anthicus.description = Bắn tên lửa dẫn đường tầm xa vào các mục tiêu kẻ địch. Có thể đi qua hầu hết loại địa hình. +unit.tecta.description = Bắn tên lửa plasma dẫn đường vào các mục tiêu kẻ địch. Tự bảo vệ chính nó với khiên định hướng. Có thể đi qua hầu hết loại địa hình. +unit.collaris.description = Bắn pháo phân mảnh tầm xa vào các mục tiêu kẻ địch. Có thể đi qua hầu hết loại địa hình. +unit.elude.description = Bắn một cặp viên đạn dẫn đường vào các mục tiêu kẻ địch. Có thể lướt trên mặt chất lỏng. +unit.avert.description = Bắn một cặp viên đạn xoắn vào các mục tiêu kẻ địch. +unit.obviate.description = Bắn một cặp cầu điện xoắn vào các mục tiêu kẻ địch. +unit.quell.description = Bắn tên lửa dẫn đường tầm xa vào các mục tiêu kẻ địch. Ngăn chặn khối công trình sửa chữa của kẻ địch. Chỉ tấn công mục tiêu mặt đất. +unit.disrupt.description = Bắn tên lửa oanh tạc dẫn đường tầm xa vào các mục tiêu kẻ địch. Ngăn chặn khối công trình sửa chữa của kẻ địch. Chỉ tấn công mục tiêu mặt đất. +unit.evoke.description = Xây công trình để phòng thủ lõi Pháo đài. Sửa các công trình với một tia sáng. Có khả năng mang khối công trình 2x2. +unit.incite.description = Xây công trình để phòng thủ lõi Thủ phủ. Sửa các công trình với một tia sáng. Có khả năng mang khối công trình 2x2. +unit.emanate.description = Xây công trình để phòng thủ lõi Đại đô. Sửa các công trình với chùm tia sáng. Có khả năng mang khối công trình 2x2. lst.read = Đọc một số từ bộ nhớ được liên kết. lst.write = Ghi một số vào bộ nhớ được liên kết. -lst.print = Thêm văn bản vào bộ nhớ in.\nKhông hiển thị gì cho đến khi sử dụng [accent]Print Flush[]. -lst.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. -lst.getlink = Nhận liên kết bộ xử lý theo thứ tự. Bắt đầu từ 0. -lst.control = Điều khiển một khối. -lst.radar = Định vị các đơn vị trong phạm vi xung quanh một khối. -lst.sensor = Lấy dữ liệu từ một khối hoặc đơn vị. -lst.set = Đặt một biến. -lst.operation = Thực hiện thao tác trên 1-2 biến. -lst.end = Chuyển đến lệnh đầu tiên. -lst.wait = Chờ trong khoảng thời gian nhất định. +lst.print = Thêm văn bản vào bộ đệm in.\nKhông hiển thị gì cho đến khi [accent]Print Flush[] được sử dụng. +lst.format = Thay thế từ giữ chỗ tiếp theo trong bộ đệm văn bản bằng giá trị.\nKhông làm gì nếu khuôn mẫu từ giữ chỗ không hợp lệ.\nKhuôn mẫu từ giữ chỗ: "{[accent]số 0-9[]}"\nVí dụ:\n[accent]print "ví dụ {0}"\nformat "mẫu" +lst.draw = Thêm một thao tác vào bộ đệm vẽ.\nKhông hiển thị gì cho đến khi [accent]Draw Flush[] được sử dụng. +lst.drawflush = Đẩy các thao tác [accent]Draw[] theo trình tự đến màn hình. +lst.printflush = Đẩy các thao tác [accent]Print[] theo trình tự đến khối thông điệp. +lst.getlink = Nhận liên kết bộ xử lý theo chỉ số. Bắt đầu từ 0. +lst.control = Điều khiển một công trình. +lst.radar = Định vị các đơn vị trong phạm vi xung quanh một công trình. +lst.sensor = Lấy dữ liệu từ một công trình hoặc đơn vị. +lst.set = Thiết đặt một biến. +lst.operation = Thực hiện một thao tác trên 1-2 biến. +lst.end = Nhảy đến chỉ lệnh đầu tiên. +lst.wait = Chờ trong số giây nhất định. lst.stop = Ngừng thực thi khối xử lý này. -lst.lookup = Tra cứu một kiểu món đồ/chất lỏng/khối bởi định danh (ID).\nTổng số đếm của mỗi kiểu có thể truy xuất qua:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] -lst.jump = Chuyển qua lệnh khác nếu điều kiện đúng. -lst.unitbind = Ràng buộc đơn vị tiếp theo của một kiểu, và lưu nó trong [accent]@unit[]. -lst.unitcontrol = Điều khiển đơn vị đang ràng buộc. -lst.unitradar = Xác định đơn vị xung quanh đơn bị đang ràng buộc. -lst.unitlocate = Xác định một kiểu cố định của vị trí/công trình bất kì đâu trên bản đồ.\nYêu cầu một đơn vị đang ràng buộc. -lst.getblock = Lấy dữ liệu từ ô từ vị trí bất kì. -lst.setblock = Chỉnh sửa dữ liệu từ ô từ vị trí bất kì. -lst.spawnunit = Tạo ra quân từ vị trí. +lst.lookup = Tra cứu một kiểu vật phẩm/chất lỏng/đơn vị/khối bởi định danh (ID).\nTổng số đếm của mỗi kiểu có thể truy xuất qua:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[]\nĐể thao tác ngược lại, dùng sense [accent]@id[] của vật thể đó. +lst.jump = Nhảy có điều kiện qua lệnh khác. +lst.unitbind = Gắn kết đơn vị tiếp theo của một kiểu, và lưu nó trong [accent]@unit[]. +lst.unitcontrol = Điều khiển đơn vị đang gắn kết. +lst.unitradar = Xác định đơn vị xung quanh đơn vị đang gắn kết. +lst.unitlocate = Xác định một kiểu cố định của vị trí/công trình bất kỳ đâu trên bản đồ.\nYêu cầu một đơn vị đang gắn kết. +lst.getblock = Lấy dữ liệu của ô tại vị trí bất kỳ. +lst.setblock = Chỉnh sửa dữ liệu của ô tại vị trí bất kỳ. +lst.spawnunit = Tạo ra đơn vị tại một vị trí. lst.applystatus = Áp dụng hoặc loại bỏ một hiệu ứng trạng thái cho một đơn vị. -lst.weathersensor = Check if a type of weather is active. -lst.weatherset = Set the current state of a type of weather. -lst.spawnwave = Mô phỏng một lượt xuất hiện ở vị trí tùy ý.\nSẽ không tăng số đếm lượt. -lst.explosion = Tạo ra một vụ nổ tại vị trí đó. -lst.setrate = Đặt tốc độ thực thi khối xử lý theo chỉ thị/tíc-tắc. -lst.fetch = Tra cứu các đơn vị, lõi, người chơi hoặc công trình bởi chỉ số.\nCác chỉ số bắt đầu từ 0 và kết thúc tại số lượng đếm của chúng. +lst.weathersense = Kiểm tra kiểu thời tiết có đang hoạt động. +lst.weatherset = Thiết lập trạng thái hiện tại của kiểu thời tiết. +lst.spawnwave = Làm xuất hiện một đợt. +lst.explosion = Tạo ra một vụ nổ tại một vị trí. +lst.setrate = Đặt tốc độ thực thi khối xử lý theo chỉ lệnh/tích-tắc. +lst.fetch = Tra cứu các đơn vị, lõi, người chơi hoặc công trình bằng chỉ số.\nCác chỉ số bắt đầu từ 0 và kết thúc tại số lượng đếm của chúng. lst.packcolor = Đóng gói màu thành phần RGBA [0, 1] thành một số đơn dùng cho vẽ hoặc thiết lập quy tắc. -lst.setrule = Đặt một quy tắc của trò chơi. -lst.flushmessage = Hiển thị một tin nhắn trên màn hình từ bộ đệm văn bản.\nSẽ đợt cho đến khi tin nhắn trước đó hoàn tất. -lst.cutscene = Điều khiển góc máy quay của người chơi. -lst.setflag = Đặt một cờ toàn cục mà có thể đọc được bởi tất cả khối xử lý. +lst.setrule = Thiết đặt một quy tắc trò chơi. +lst.flushmessage = Hiển thị một tin nhắn trên màn hình từ bộ đệm văn bản.\nSẽ đợi cho đến khi tin nhắn trước đó hoàn tất. +lst.cutscene = Điều khiển máy quay của người chơi. +lst.setflag = Thiết đặt một cờ toàn cục mà có thể đọc được bởi tất cả khối xử lý. lst.getflag = Kiểm tra nếu cờ toàn cục được đặt. -lst.setprop = Đặt một thuộc tính của đơn vị hoặc công trình. +lst.setprop = Thiết đặt một thuộc tính của đơn vị hoặc công trình. lst.effect = Tạo một phần hiệu ứng nhỏ. -lst.sync = Đồng bộ 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. +lst.sync = Đồng bộ biến số qua mạng.\nChỉ gọi tối đa 20 lần mỗi giây cho mỗi biến. +lst.makemarker = Tạo mới điểm đánh dấu logic trên thế giới.\nMột định danh cho điểm đánh dấu này phải được cung cấp.\nĐiểm đánh dấu hiện tại bị giới hạn 20,000 trên mỗi thế giới. +lst.setmarker = Thiết đặt một thuộc tính cho một điểm đánh dấu.\nĐịnh danh phải giống như định danh ở chỉ lệnh Tạo Điểm đánh dấu (Make Marker).\nGiá trị [accent]null[] sẽ bị phớt lờ. +lst.localeprint = Thêm một giá trị thuộc tính ngôn ngữ của bản đồ vào bộ đệm văn bản.\nĐể thiết đặt gói ngôn ngữ trong trình chỉnh sửa bản đồ, xem qua [accent]Thông tin bản đồ > Gói ngôn ngữ[].\nNếu máy khách là một thiết bị di động, sẽ cố in thuộc tính kết thúc bằng ".mobile" trước tiên. + 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 +lglobal.@pi = Hằng số toán học pi (3.141...) +lglobal.@e = Hằng số toán học e (2.718...) +lglobal.@degToRad = Nhân với số này để chuyển từ độ (deg) sang radian (rad) +lglobal.@radToDeg = Nhân với số này để chuyển từ radian (rad) sang độ (deg) -logic.nounitbuild = [red]Lô-gíc xây dựng đơn vị không được phép ở đây. +lglobal.@time = Thời gian chơi của bản lưu hiện tại, tính bằng mili-giây +lglobal.@tick = Thời gian chơi của bản lưu hiện tại, tính bằng tích-tắc (1 giây = 60 tích-tắc) +lglobal.@second = Thời gian chơi của bản lưu hiện tại, tính bằng giây +lglobal.@minute = Thời gian chơi của bản lưu hiện tại, tính bằng phút +lglobal.@waveNumber = Số đợt hiện tại, nếu chế độ đợt được bật +lglobal.@waveTime = Thời gian đếm ngược của đợt, tính bằng giây +lglobal.@mapw = Độ rộng bản đồ, tính bằng ô +lglobal.@maph = Độ cao bản đồ, tính bằng ô -lenum.type = Kiểu của công trình/đơn vị.\n Ví dụ, cho Bộ phân phát (router), nó sẽ trả về [accent]@router[].\nKhông phải một chuỗi. -lenum.shoot = Bắn vào vị trí xác định. +lglobal.sectionMap = Bản đồ +lglobal.sectionGeneral = Chung +lglobal.sectionNetwork = Mạng/Máy khách [Chỉ Bộ xử lý thế giới] +lglobal.sectionProcessor = Bộ xử lý +lglobal.sectionLookup = Tra cứu + +lglobal.@this = Khối logic đang thực thi đoạn mã +lglobal.@thisx = Tọa độ x của khối đang thực thi đoạn mã +lglobal.@thisy = Tọa độ y của khối đang thực thi đoạn mã +lglobal.@links = Tổng số khối đã liên kết đến bộ xử lý này +lglobal.@ipt = Tốc độ thực thi của bộ xử lý tính bằng lệnh mỗi tích-tắc (60 tích-tắc = 1 giây) + +lglobal.@unitCount = Tổng số kiểu mẫu đơn vị trong trò chơi; được dùng với lệnh tra cứu (lookup) +lglobal.@blockCount = Tổng số kiểu mẫu khối trong trò chơi; được dùng với lệnh tra cứu (lookup) +lglobal.@itemCount = Tổng số kiểu mẫu vật phẩm trong trò chơi; được dùng với lệnh tra cứu (lookup) +lglobal.@liquidCount = Tổng số kiểu mẫu chất lỏng trong trò chơi; được dùng với lệnh tra cứu (lookup) + +lglobal.@server = True nếu đoạn mã chạy trên máy chủ hoặc chơi đơn, ngược lại là false +lglobal.@client = True nếu đoạn mã chạy trên máy khách được kết nối đến máy chủ + +lglobal.@clientLocale = Ngôn ngữ của máy khách đang chạy đoạn mã. Ví dụ: vi_VN +lglobal.@clientUnit = Đơn vị máy khách đang chạy đoạn mã +lglobal.@clientName = Tên người chơi của máy khách đang chạy đoạn mã +lglobal.@clientTeam = Định danh đội của máy khách đang chạy đoạn mã +lglobal.@clientMobile = True nếu máy khách đang chạy đoạn mã trên thiết bị di động, ngược lại là false + +logic.nounitbuild = [red]Logic xây dựng đơn vị không được phép ở đây. + +lenum.type = Kiểu của công trình/đơn vị.\nVí dụ cho Bộ phân phát (router), nó sẽ trả về [accent]@router[].\nKhông phải một chuỗi. +lenum.shoot = Bắn vào một vị trí. lenum.shootp = Bắn vào một đơn vị/công trình với tốc độ dự đoán. -lenum.config = Cấu hình công trinh, kiểu như đồ của Khối sắp xếp. -lenum.enabled = Bất cứ khi nào khối hoạt động. +lenum.config = Cấu hình công trình, kiểu như vật phẩm của Khối sắp xếp. +lenum.enabled = Khối có đang hoạt động. +laccess.currentammotype = Đạn vật phẩm/chất lỏng hiện tại của bệ súng. laccess.color = Màu đèn chiếu sáng. -laccess.controller = Thứ điều khiển đơn vị. Nếu khối xử lý đã điều khiển, trả về khối xử lý.\nNếu trong đội hình, trả về đơn vị dẫn đầu.\nNgược lại, trả về chính đơn vị đó. +laccess.controller = Thứ điều khiển đơn vị. Nếu khối xử lý đã điều khiển, trả về khối xử lý.\nNgược lại, trả về chính đơn vị đó. laccess.dead = Đơn vị/công trình đã chết hoặc không còn hợp lệ hay không. -laccess.controlled = Trả về:\n[accent]@ctrlProcessor[] nếu điều khiển là khối xử lý\n[accent]@ctrlPlayer[] nếu người điều khiển đơn vị/công trình là người chơi\n[accent]@ctrlFormation[] nếu đơn vị trọng đội hình\nNgược lại, 0. -laccess.progress = Tiến trình thực hiện, 0 đến 1.\n Trả về tiến trình sản xuất, nạp đạn bệ súng hoặc xây dựng. -laccess.speed = Tốc độ của đơn vị, tính bằng ô/giây. +laccess.controlled = Trả về:\n[accent]@ctrlProcessor[] nếu điều khiển là khối xử lý\n[accent]@ctrlPlayer[] nếu điều khiển đơn vị/công trình là người chơi\n[accent]@ctrlCommand[] nếu điều khiển đơn vị là một mệnh lệnh người chơi\nNgược lại, 0. +laccess.progress = Tiến trình thực hiện, 0 đến 1.\nTrả về tiến trình sản xuất, nạp đạn bệ súng hoặc xây dựng. +laccess.speed = Tốc độ cao nhất của đơn vị, tính bằng ô/giây. laccess.id = Định danh của một đơn vị/khối/vật phẩm/chất lỏng.\nViệc này làm ngược lại với thao tác tra cứu. + lcategory.unknown = Không xác định -lcategory.unknown.description = Chỉ thị không được phân loại. +lcategory.unknown.description = Chỉ lệnh không được phân loại. lcategory.io = Đầu Vào & Ra lcategory.io.description = Chỉnh sửa nội dung của khối ô nhớ và bộ đệm khối xử lý. lcategory.block = Điều khiển khối -lcategory.block.description = Tương tác với khối +lcategory.block.description = Tương tác với khối. lcategory.operation = Các phép toán -lcategory.operation.description = Các phép toán lô-gíc. -lcategory.control = Điều khiển luồng thực thi +lcategory.operation.description = Các phép toán logic. +lcategory.control = Điều khiển luồng lcategory.control.description = Quản lý trình tự thực thi. lcategory.unit = Điều khiển đơn vị lcategory.unit.description = Ra lệnh cho đơn vị. lcategory.world = Thế giới lcategory.world.description = Kiểm soát hành vi của thế giới. -graphicstype.clear = Tô màu cho màn hình. -graphicstype.color = Đặt màu cho thao tác vẽ tiếp theo. +graphicstype.clear = Tô màu cho toàn màn hình. +graphicstype.color = Thiết đặt màu cho thao tác vẽ tiếp theo. graphicstype.col = Tương tự màu, nhưng được đóng gói.\nMàu đã đóng gói được viết theo mã thập lục phân với tiền tố [accent]%[].\nVí dụ: [accent]%ff0000[] sẽ là màu đỏ. -graphicstype.stroke = Đặt chiều rộng đoạn thẳng. +graphicstype.stroke = Thiết đặt chiều rộng đoạn thẳng. graphicstype.line = Vẽ đoạn thẳng. graphicstype.rect = Tô một hình chữ nhật. -graphicstype.linerect = Vẽ đường viền hình chữ nhật. -graphicstype.poly = Tô vào đa giác đều. -graphicstype.linepoly = Vẽ đường viền đa giác đều. +graphicstype.linerect = Vẽ đường viền một hình chữ nhật. +graphicstype.poly = Tô một đa giác đều. +graphicstype.linepoly = Vẽ đường viền một đa giác đều. graphicstype.triangle = Tô một hình tam giác. graphicstype.image = Vẽ hình ảnh một số nội dung.\nVí dụ: [accent]@router[] hoặc [accent]@dagger[]. -graphicstype.print = Draws text from the print buffer.\nClears the print buffer. +graphicstype.print = Vẽ văn bản từ bộ đệm in.\nChỉ được phép dùng các kí tự ASCII.\nLàm sạch bộ đệm. lenum.always = Luôn đúng. lenum.idiv = Chia lấy phần nguyên. @@ -2392,10 +2485,10 @@ lenum.strictequal = Bằng nhau ràng buộc. Không ép kiểu.\nCó thể dùn lenum.shl = Nhảy bit sang trái. lenum.shr = Nhảy bit sang phải. lenum.or = Phép toán bit OR. -lenum.land = Lô-gíc AND. +lenum.land = Phép toán logic AND. lenum.and = Phép toán bit AND. lenum.not = Phép toán lật bit. -lenum.xor = Phép toán XOR. +lenum.xor = Phép toán bit XOR. lenum.min = Số nhỏ nhất giữa hai số. lenum.max = Số lớn nhất giữa hai số. @@ -2419,80 +2512,81 @@ lenum.noise = Nhiễu đơn 2D. lenum.abs = Giá trị tuyệt đối. lenum.sqrt = Căn bậc hai. -lenum.any = Bất kì đơn vị. -lenum.ally = Đơn vị cùng đội. +lenum.any = Đơn vị bất kỳ. +lenum.ally = Đơn vị đồng minh. lenum.attacker = Đơn vị với vũ khí. -lenum.enemy = Đơn vị địch. +lenum.enemy = Đơn vị kẻ địch. lenum.boss = Trùm. -lenum.flying = Không quân. -lenum.ground = Bộ binh. +lenum.flying = Đơn vị không quân. +lenum.ground = Đơn vị bộ binh. lenum.player = Đơn vị do người chơi điều khiển. lenum.ore = Mỏ quặng. lenum.damaged = Công trình bị hư tổn của đồng minh. lenum.spawn = Điểm xuất hiện của kẻ địch.\nCó thể là một lõi hoặc một vị trí. -lenum.building = Công trình trong nhóm nhất định. +lenum.building = Công trình trong một nhóm nhất định. -lenum.core = Bất kì căn cứ. -lenum.storage = Khối lưu trữ, Ví dụ Nhà kho. -lenum.generator = Khối có thể tạo ra năng lượng. -lenum.factory = Khối có thể biến đổi vật phẩm. +lenum.core = Bất kỳ lõi nào. +lenum.storage = Khối lưu trữ, ví dụ như Nhà kho. +lenum.generator = Khối tạo ra năng lượng. +lenum.factory = Khối biến đổi vật phẩm. lenum.repair = Điểm sửa chữa. -lenum.battery = Bất kì pin. +lenum.battery = Bất kỳ pin. lenum.resupply = Điểm tiếp tế.\nChỉ phù hợp khi [accent]"Đơn vị cần đạn"[] được bật. -lenum.reactor = Lò phản ứng Thorium Nhiệt hạch. -lenum.turret = Bất kì súng. +lenum.reactor = Lò phản ứng Thori/Nhiệt hạch. +lenum.turret = Súng bất kỳ. sensor.in = Công trình/Đơn vị để cảm biến. radar.from = Công trình để cảm biến.\nPhạm vi cảm biến bị giới hạn bởi phạm vi của công trình. radar.target = Bộ lọc cho các đơn vị được cảm biến. radar.and = Bộ lọc bổ sung. -radar.order = Sắp xếp theo thứ tự. đặt giá trị 0 để đảo ngược. -radar.sort = Số liệu để kết quả sắp xếp theo. +radar.order = Sắp xếp theo thứ tự. 0 để đảo ngược. +radar.sort = Số liệu để sắp xếp kết quả theo đó. radar.output = Biến để ghi đơn vị được xuất ra. unitradar.target = Bộ lọc cho các đơn vị được cảm biến. unitradar.and = Bộ lọc bổ sung. -unitradar.order = Sắp xếp theo thứ tự. đặt giá trị 0 để đảo ngược. -unitradar.sort = Số liệu để kết quả sắp xếp theo. +unitradar.order = Sắp xếp theo thứ tự. 0 để đảo ngược. +unitradar.sort = Số liệu để sắp xếp kết quả theo đó. unitradar.output = Biến để ghi đơn vị được xuất ra. control.of = Công trình được điều khiển. control.unit = Đơn vị/Công trình để ngắm vào. control.shoot = Có bắn hay không. -unitlocate.enemy = Có tìm công trình kẻ địch hay không. +unitlocate.enemy = Có định vị công trình kẻ địch hay không. unitlocate.found = Đối tượng có tìm được hay không. -unitlocate.building = Biến xuất ra cho công trình đã xác định vị trí. -unitlocate.outx = Cho ra tọa độ X. -unitlocate.outy = Cho ra tọa độ Y. +unitlocate.building = Biến xuất ra cho công trình đã định vị. +unitlocate.outx = Tọa độ X xuất ra. +unitlocate.outy = Tọa độ Y xuất ra. unitlocate.group = Nhóm công trình để tìm kiếm. lenum.idle = Không di chuyển, nhưng vẫn xây dựng/đào.\nTrạng thái mặc định. -lenum.stop = Dừng di chuyển/Đào/Xây dựng. -lenum.unbind = Vô hiệu hóa hoàn toàn điều khiển lô-gíc.\n Khôi phục AI tiêu chuẩn. +lenum.stop = Dừng di chuyển/đào/xây dựng. +lenum.unbind = Vô hiệu hóa hoàn toàn điều khiển logic.\nKhôi phục AI tiêu chuẩn. lenum.move = Di chuyển đến vị trí xác định. lenum.approach = Tiếp cận một vị trí với bán kính. -lenum.pathfind = Tìm đường đến nơi tạo ra kẻ địch. -lenum.autopathfind = Tự động tìm đường đến lõi hoặc nơi hạ cánh gần nhất của kẻ địch.\n Việc này tương tự như việc tìm đường của kẻ địch trong các lượt. -lenum.target = Bắn vào vị trí xác định. -lenum.targetp = Bắn vào một mục tiêu với tốc độ dự đoán -lenum.itemdrop = Thả vật phẩm. -lenum.itemtake = Lấy vật phẩm từ khối. +lenum.pathfind = Tìm đường đến một vị trí xác định. +lenum.autopathfind = Tự động tìm đường đến lõi hoặc nơi hạ cánh gần nhất của kẻ địch.\nViệc này tương tự như việc tìm đường của kẻ địch trong các đợt. +lenum.target = Bắn vào một vị trí. +lenum.targetp = Bắn vào một mục tiêu với tốc độ dự đoán. +lenum.itemdrop = Thả một vật phẩm. +lenum.itemtake = Lấy một vật phẩm từ một công trình. lenum.paydrop = Thả khối hàng hiện tại. lenum.paytake = Nhận khối hàng tại vị trí hiện tại. lenum.payenter = Vào trong/hạ cánh trên khối hàng mà đơn vị đang ở trên nó. lenum.flag = Cờ đơn vị kiểu số. -lenum.mine = Đào tại vị trí. -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.mine = Đào tại một vị trí. +lenum.build = Xây một công trình. +lenum.getblock = Lấy kiểu công trình, nền và khối tại tọa độ.\nĐơn vị phải nằm trong phạm vi của vị trí, ngược lại null được trả về. +lenum.within = Kiểm tra xem đơn vị có gần một vị trí không. lenum.boost = Bắt đầu/Dừng tăng tốc. -lenum.flushtext = 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. + +lenum.flushtext = Đẩy nội dung của bộ đệm cho điểm đánh dấu, nếu có thể áp dụng.\nNếu [accent]fetch[] đặt là [accent]true[], sẽ cố truy vấn các thuộc tính từ gói ngôn ngữ của bản đồ hoặc trò chơi. +lenum.texture = Tên kết cấu lấy thẳng từ bản khung kết cấu của trò chơi (dùng kiểu tên kebab-case, tên-chữ-thường-chứa-gạch-nối).\nNếu printFlush đặt là true, sẽ sử dụng nội dung bộ đệm văn bản làm tham số văn bản. +lenum.texturesize = Kích thước của kết cấu bằng ô. Giá trị 0 chia tỷ lệ chiều rộng của điểm đánh dấu theo kích thước của kết cấu ban đầu. +lenum.autoscale = Có chia tỷ lệ điểm đánh dấu tương ứng với mức thu phóng của người chơi hay không. +lenum.posi = Vị trí theo chỉ số, dùng cho điểm đánh dấu đường kẻ và tứ giác với 0 là vị trí đầu tiên. +lenum.uvi = Vị trí của kết cấu trong phạm vi từ 0 đến 1, dùng cho đánh dấu tứ giác. +lenum.colori = Màu theo chỉ số, dùng cho điểm đánh dấu đường kẻ và tứ giác với 0 là màu đầu tiên. diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 4b4b1ab1ae..60a25dd6d4 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -152,17 +152,17 @@ mod.incompatiblemod = [red]不兼容 mod.blacklisted = [red]不支持 mod.unmetdependencies = [red]缺少前置模组 mod.erroredcontent = [scarlet]内容错误 -mod.circulardependencies = [red]Circular Dependencies -mod.incompletedependencies = [red]Incomplete Dependencies +mod.circulardependencies = [red]循环依赖 +mod.incompletedependencies = [red]缺失依赖 -mod.requiresversion.details = 所需的最低游戏版本:[accent]{0}[]\n您的游戏版本过低。 这个模组需要更新的游戏版本(通常是beta/alpha版本)才能工作。 -mod.outdatedv7.details = 这个模组与最新版游戏不兼容。 作者必须更新它,并在[accent]mod.json[]文件中写入[accent]minGameVersion: 136[]。 -mod.blacklisted.details = 这个模组由于造成该版本游戏崩溃或其他原因被手动禁用了。 不要使用它。 +mod.requiresversion.details = 所需的最低游戏版本:[accent]{0}[]\n您的游戏版本过低。 此模组需要更新的游戏版本(通常是beta/alpha版本)才能工作。 +mod.outdatedv7.details = 此模组与最新版游戏不兼容。 作者必须更新它,并在[accent]mod.json[]文件中写入[accent]minGameVersion: 136[]。 +mod.blacklisted.details = 此模组由于造成该版本游戏崩溃或其他原因被手动禁用了。 不要使用它。 mod.missingdependencies.details = 缺少前置模组:{0} -mod.erroredcontent.details = 这个模组在游戏加载时发生了错误。 请通知模组作者修复它。 -mod.circulardependencies.details = This mod has dependencies that depends on each other. -mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}. -mod.requiresversion = Requires game version: [red]{0} +mod.erroredcontent.details = 此模组在游戏加载时发生了错误。 请通知模组作者修复它。 +mod.circulardependencies.details = 此模组与其他模组相互依赖。 +mod.incompletedependencies.details = 由于依赖项无效或缺失,此模组无法加载:{0}. +mod.requiresversion = 需要游戏版本: [red]{0} mod.errors = 读取内容时发生错误。 mod.noerrorplay = [scarlet]您的模组发生了错误。 []禁用相关模组或修复错误后才能进入游戏。 @@ -258,19 +258,19 @@ trace = 跟踪玩家 trace.playername = 玩家名称:[accent]{0} trace.ip = IP地址:[accent]{0} trace.id = 玩家 ID:[accent]{0} -trace.language = Language: [accent]{0} +trace.language = 语言: [accent]{0} trace.mobile = 移动客户端:[accent]{0} trace.modclient = 自定义客户端:[accent]{0} trace.times.joined = 进入服务器次数: [accent]{0} trace.times.kicked = 踢出服务器次数: [accent]{0} -trace.ips = IPs: -trace.names = Names: +trace.ips = 曾用IP: +trace.names = 曾用名: invalidid = 无效的客户端ID!提交一个错误报告。 -player.ban = Ban -player.kick = Kick -player.trace = Trace -player.admin = Toggle Admin -player.team = Change Team +player.ban = 封禁 +player.kick = 踢出 +player.trace = 追朔 +player.admin = 切换管理员 +player.team = 改变队伍 server.bans = 黑名单 server.bans.none = 没有被封禁的玩家! server.admins = 管理员 @@ -287,8 +287,8 @@ confirmkick = 确定踢出玩家“{0}[white]”? confirmunban = 确定解封这名玩家? confirmadmin = 确定给予玩家“{0}[white]”管理员权限? confirmunadmin = 确定收回玩家“{0}[white]”的管理员权限? -votekick.reason = Vote-Kick Reason -votekick.reason.message = Are you sure you want to vote-kick "{0}[white]"?\nIf yes, please enter the reason: +votekick.reason = 投票踢出理由 +votekick.reason.message = 确定投票踢出玩家"{0}[white]"?\n如果是,请输入理由: joingame.title = 加入游戏 joingame.ip = 地址: disconnect = 已断开连接 @@ -306,7 +306,7 @@ server.invalidport = 无效的端口! server.error = [scarlet]创建服务器错误。 save.new = 新存档 save.overwrite = 确定要覆盖这个存档吗? -save.nocampaign = Individual save files from the campaign cannot be imported. +save.nocampaign = 无法导入战役中的单个保存文件。 overwrite = 覆盖 save.none = 没有找到存档! savefail = 保存失败! @@ -344,23 +344,23 @@ open = 打开 customize = 自定义规则 cancel = 取消 command = 指挥 -command.queue = [lightgray][Queuing] +command.queue = [lightgray][排队中] command.mine = 挖矿 command.repair = 维修 command.rebuild = 重建 command.assist = 协助建造 command.move = 移动 -command.boost = Boost -command.enterPayload = Enter Payload Block -command.loadUnits = Load Units -command.loadBlocks = Load Blocks -command.unloadPayload = Unload Payload -stance.stop = Cancel Orders -stance.shoot = Stance: Shoot -stance.holdfire = Stance: Hold Fire -stance.pursuetarget = Stance: Pursue Target -stance.patrol = Stance: Patrol Path -stance.ram = Stance: Ram\n[lightgray]Straight line movement, no pathfinding +command.boost = 助推 +command.enterPayload = 进入载荷建筑 +command.loadUnits = 拾取单位 +command.loadBlocks = 拾取建筑 +command.unloadPayload = 卸载载荷 +stance.stop = 取消指令 +stance.shoot = 姿态: 射击 +stance.holdfire = 姿态: 停火 +stance.pursuetarget = 姿态: 追逐目标 +stance.patrol = 姿态: 路径巡逻 +stance.ram = 姿态: 冲锋\n[lightgray]径直移动,不进行寻路。 openlink = 打开链接 copylink = 复制链接 back = 返回 @@ -386,8 +386,8 @@ pausebuilding = 按[accent][[{0}][]键暂停建造 resumebuilding = 按[scarlet][[{0}][]键恢复建造 enablebuilding = 按[scarlet][[{0}][]键启用建造 showui = UI已隐藏\n按[accent][[{0}][]键显示UI -commandmode.name = [accent]Command Mode -commandmode.nounits = [no units] +commandmode.name = [accent]指挥模式 +commandmode.nounits = [无单位] wave = [accent]第{0}波 wave.cap = [accent]波次 {0}/{1} wave.waiting = [lightgray]下一波倒计时:{0}秒 @@ -441,7 +441,12 @@ editor.waves = 波次 editor.rules = 规则 editor.generation = 生成 editor.objectives = 目标 -editor.locales = Locale Bundles +editor.locales = 本地化语言包 +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = 游戏内编辑 editor.playtest = 游戏内测试 editor.publish.workshop = 上传到创意工坊 @@ -473,7 +478,7 @@ waves.max = 最大单位数 waves.guardian = Boss waves.preview = 预览 waves.edit = 编辑… -waves.random = Random +waves.random = 随机 waves.copy = 复制到剪贴板 waves.load = 从剪贴板读取 waves.invalid = 剪贴板中的波次信息无效。 @@ -484,12 +489,12 @@ waves.sort.reverse = 反向排序 waves.sort.begin = 出场顺序 waves.sort.health = 生命值 waves.sort.type = 类型 -waves.search = Search waves... -waves.filter = Unit Filter +waves.search = 搜索波次... +waves.filter = 单位过滤器 waves.units.hide = 全部隐藏 waves.units.show = 全部显示 -#these are intentionally in lower case(中文无关) +#these are intentionally in lower case wavemode.counts = 数目 wavemode.totals = 总数 wavemode.health = 生命值 @@ -498,7 +503,8 @@ editor.default = [lightgray]<默认> details = 详情… edit = 编辑… variables = 变量 -logic.globals = Built-in Variables +logic.clear.confirm = Are you sure you want to clear all code from this processor? +logic.globals = 内置变量 editor.name = 名称: editor.spawn = 生成单位 editor.removeunit = 移除单位 @@ -510,7 +516,7 @@ editor.errorlegacy = 此地图太旧了,旧的地图格式已不再支持。 editor.errornot = 这不是地图文件。 editor.errorheader = 此地图文件无效或已损坏。 editor.errorname = 地图没有定义名称。 加载的可能是存档文件? -editor.errorlocales = Error reading invalid locale bundles. +editor.errorlocales = 读取无效本地化语言包时出错。 editor.update = 更新 editor.randomize = 重新生成 editor.moveup = 上移 @@ -522,7 +528,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.savechanges = [scarlet]您有未保存的更改!\n\n[]您想要保存他们吗? editor.saved = 已保存! editor.save.noname = 您还没有指定地图的名称!在“地图信息”菜单里设置一个名称。 editor.save.overwrite = 您正试图覆盖一张内置地图!在“地图信息”菜单里重新设置一个其他的名称。 @@ -561,8 +567,8 @@ toolmode.eraseores = 擦除矿脉 toolmode.eraseores.description = 仅擦除矿脉,不影响其他物体。 toolmode.fillteams = 填充队伍 toolmode.fillteams.description = 不再填充方块,而是填充队伍颜色。 -toolmode.fillerase = Fill Erase -toolmode.fillerase.description = Erase blocks of the same type. +toolmode.fillerase = 擦除同类 +toolmode.fillerase.description = 擦除同种种类的方块。 toolmode.drawteams = 绘制队伍 toolmode.drawteams.description = 不再绘制方块,而是绘制队伍颜色。 #未使用 @@ -587,6 +593,7 @@ filter.clear = 替换 filter.option.ignore = 忽略 filter.scatter = 散布 filter.terrain = 地图边界 +filter.logic = Logic filter.option.scale = 缩放 filter.option.chance = 散布数量 @@ -610,23 +617,25 @@ 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 +filter.option.code = Code +filter.option.loop = Loop +locales.info = 在这里,您可以为特定语言添加本地化语言包到您的地图中。在本地化语言包中,每个文本属性都有一个名称和一个值。这些文本属性可以由世界处理器和游戏目标使用它们的名称。它们支持文本格式化(用实际值替换占位符)。\n\n[cyan]示例文本属性:\n[]名称: [accent]timer[]值: [accent]示例计时器, 剩余时间: {0}[]\n\n[cyan]用法:\n[]将其设置为目标的文本: [accent]@timer\n\n[]在世界处理器中打印它:\n[accent]localeprint "timer"\n格式化时间\n[gray](时间是一个单独计算的变量) +locales.deletelocale = 您确定要删除该本地化语言包吗? +locales.applytoall = 将更改应用于所有本地化语言包 +locales.addtoother = 添加到其他本地化语言包 +locales.rollback = 回滚到上次应用的状态 +locales.filter = 文本属性过滤器 +locales.searchname = 搜索名称... +locales.searchvalue = 搜索值... +locales.searchlocale = 搜索本地化... +locales.byname = 按名称 +locales.byvalue = 按值 +locales.showcorrect = 显示所有本地化语言包中存在并且在所有地方具有唯一值的文本属性 +locales.showmissing = 显示在某些本地化语言包中缺失的文本属性 +locales.showsame = 显示在不同本地化语言包中具有相同值的文本属性 +locales.viewproperty = 在所有本地化语言包中查看 +locales.viewing = 查看文本属性 "{0}" +locales.addicon = 添加图标 width = 宽度: height = 高度: @@ -679,11 +688,12 @@ objective.commandmode.name = 指挥模式 objective.flag.name = 标签 marker.shapetext.name = 带形状文本 -marker.point.name = Point +marker.point.name = 点 marker.shape.name = 形状 marker.text.name = 文本 -marker.line.name = Line -marker.quad.name = Quad +marker.line.name = 线 +marker.quad.name = 四边形 +marker.texture.name = Texture marker.background = 背景 marker.outline = 轮廓 @@ -734,7 +744,7 @@ error.any = 未知网络错误。 error.bloom = 未能初始化光效。 \n您的设备可能不支持。 weather.rain.name = 降雨 -weather.snow.name = 降雪 +weather.snowing.name = 降雪 weather.sandstorm.name = 沙尘暴 weather.sporestorm.name = 孢子风暴 weather.fog.name = 雾 @@ -771,8 +781,8 @@ sector.curlost = 区块已丢失 sector.missingresources = [scarlet]建造核心所需资源不足 sector.attacked = 区块[accent]{0}[white]受到攻击! sector.lost = 区块[accent]{0}[white]已丢失! -sector.capture = Sector [accent]{0}[white]Captured! -sector.capture.current = Sector Captured! +sector.capture = 区块[accent]{0}[white]已占领! +sector.capture.current = 区块已占领! sector.changeicon = 更改图标 sector.noswitch.title = 无法切换区块 sector.noswitch = 你无法在当前区块遭受攻击时切换区块。\n\n区块:[accent]{0}[]位于[accent]{1}[] @@ -947,7 +957,7 @@ stat.repairspeed = 修理速度 stat.weapons = 武器 stat.bullet = 子弹 stat.moduletier = 模块等级 -stat.unittype = Unit Type +stat.unittype = 单位类型 stat.speedincrease = 提速 stat.range = 范围 stat.drilltier = 可钻探矿物 @@ -984,6 +994,7 @@ stat.abilities = 能力 stat.canboost = 可助推 stat.flying = 空中单位 stat.ammouse = 弹药 +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = 伤害倍率 stat.healthmultiplier = 生命值倍率 stat.speedmultiplier = 移动速度倍率 @@ -994,17 +1005,47 @@ stat.immunities = 免疫 stat.healing = 治疗 ability.forcefield = 力墙场 +ability.forcefield.description = 投射一个能吸收子弹的力场护盾 ability.repairfield = 修复场 +ability.repairfield.description = 修复附近的单位 ability.statusfield = 状态场 -ability.unitspawn = 单位工厂 +ability.statusfield.description = 对附近的单位施加状态效果 +ability.unitspawn = 单位生成 +ability.unitspawn.description = 建造单位 ability.shieldregenfield = 护盾再生场 +ability.shieldregenfield.description = 再生附近单位的护盾 ability.movelightning = 闪电助推器 +ability.movelightning.description = 移动时释放闪电 +ability.armorplate = 装甲板 +ability.armorplate.description = 在射击时减少受到的伤害 ability.shieldarc = 弧形护盾 +ability.shieldarc.description = 投射一个弧形的力场护盾,能吸收子弹 ability.suppressionfield = 修复压制场 -ability.energyfield = 能量场: -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} -ability.regen = Regeneration +ability.suppressionfield.description = 使附近的修复建筑停止工作 +ability.energyfield = 能量场 +ability.energyfield.description = 对附近的敌人释放电击 +ability.energyfield.healdescription = 对附近的敌人释放电击,并治疗友方 +ability.regen = 再生 +ability.regen.description = 随着时间的推移恢复自己的生命值 +ability.liquidregen = 液体吸收 +ability.liquidregen.description = 吸收液体以治疗自身 +ability.spawndeath = 死亡产生单位 +ability.spawndeath.description = 死亡时释放单位 +ability.liquidexplode = 死亡溢液 +ability.liquidexplode.description = 死亡时释放液体 +ability.stat.firingrate = [stat]{0}/秒[lightgray] 射速 +ability.stat.regen = [stat]{0}/秒[lightgray] 生命恢复速度 +ability.stat.shield = [stat]{0}[lightgray] 护盾 +ability.stat.repairspeed = [stat]{0}/秒[lightgray] 修复速度 +ability.stat.slurpheal = [stat]{0}[lightgray] 生命/液体单位 +ability.stat.cooldown = [stat]{0} 秒[lightgray] 冷却时间 +ability.stat.maxtargets = [stat]{0}[lightgray] 最大目标数 +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] 同类型修复量 +ability.stat.damagereduction = [stat]{0}%[lightgray] 伤害减免 +ability.stat.minspeed = [stat]{0} 格/秒[lightgray] 最低速度 +ability.stat.duration = [stat]{0} 秒[lightgray] 持续时间 +ability.stat.buildtime = [stat]{0} 秒[lightgray] 建造时间 + bar.onlycoredeposit = 仅核心可丢入资源 bar.drilltierreq = 需要更高级的钻头 @@ -1044,9 +1085,9 @@ bullet.splashdamage = [stat]{0}[lightgray]范围伤害~[stat] {1}[lightgray]格 bullet.incendiary = [stat]燃烧 bullet.homing = [stat]追踪 bullet.armorpierce = [stat]穿甲 -bullet.maxdamagefraction = [stat]{0}%[lightgray] damage limit -bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles -bullet.interval = [stat]{0}/sec[lightgray] interval bullets: +bullet.maxdamagefraction = [stat]{0}%[lightgray] 伤害上限 +bullet.suppression = [stat]{0}秒[lightgray] 修复压制 ~ [stat]{1}[lightgray] 格 +bullet.interval = [stat]{0}/秒[lightgray] 分裂子弹: bullet.frags = [stat]{0}[lightgray]x分裂子弹: bullet.lightning = [stat]{0}[lightgray]x闪电~[stat]{1}[lightgray]伤害 bullet.buildingdamage = [stat]{0}%[lightgray]对建筑伤害 @@ -1080,6 +1121,7 @@ unit.items = 物品 unit.thousands = K unit.millions = M unit.billions = B +unit.shots = shots unit.pershot = /发 category.purpose = 用途 category.general = 基础 @@ -1089,6 +1131,8 @@ category.items = 物品 category.crafting = 输入/输出 category.function = 功能 category.optional = 强化(可选) +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = 跳过核心发射与着陆动画 setting.landscape.name = 锁定横屏 setting.shadows.name = 影子 @@ -1100,7 +1144,7 @@ setting.backgroundpause.name = 游戏在后台时自动暂停 setting.buildautopause.name = 自动暂停建造 setting.doubletapmine.name = 双击采矿 setting.commandmodehold.name = 长按保持指挥模式 -setting.distinctcontrolgroups.name = Limit One Control Group Per Unit +setting.distinctcontrolgroups.name = 每单位限制一个编队 setting.modcrashdisable.name = 游戏启动崩溃后禁用模组 setting.animatedwater.name = 动态液体 setting.animatedshields.name = 动态力场 @@ -1147,14 +1191,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.steampublichost.name = Public Game Visibility +setting.steampublichost.name = 公共游戏可见性 setting.playerlimit.name = 玩家数量限制 setting.chatopacity.name = 聊天界面不透明度 setting.lasersopacity.name = 电力连接线不透明度 @@ -1164,8 +1208,8 @@ setting.showweather.name = 显示天气效果 setting.hidedisplays.name = 不显示逻辑绘图 setting.macnotch.name = 立陶宛語 setting.macnotch.description = 需要重新启动 -steam.friendsonly = Friends Only -steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join. +steam.friendsonly = 仅限好友 +steam.friendsonly.tooltip = 是否只有 Steam 好友才能加入您的游戏。\n取消选中此选项将使您的游戏公开 - 任何人都可以加入。 public.beta = 请注意,测试版的游戏不能公开可见。 uiscale.reset = UI缩放比例已更改。\n点击“确定”接受更改。\n[accent]{0}[]秒后[scarlet]将自动退出并还原设置。 uiscale.cancel = 取消并退出 @@ -1174,7 +1218,7 @@ keybind.title = 重新绑定按键 keybinds.mobile = [scarlet]除了基本的移动以外,大多数按键绑定在移动设备上无效。 category.general.name = 常规 category.view.name = 视图 -category.command.name = Unit Command +category.command.name = 单位指挥 category.multiplayer.name = 多人游戏 category.blocks.name = 建筑选择 placement.blockselectkeys = \n[lightgray]按键:[{0}, @@ -1192,23 +1236,24 @@ keybind.mouse_move.name = 单位跟随鼠标 keybind.pan.name = 鼠标控制镜头 keybind.boost.name = 启动助推 keybind.command_mode.name = 指挥模式 -keybind.command_queue.name = Unit Command Queue -keybind.create_control_group.name = Create Control Group -keybind.cancel_orders.name = Cancel Orders -keybind.unit_stance_shoot.name = Unit Stance: Shoot -keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire -keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target -keybind.unit_stance_patrol.name = Unit Stance: Patrol -keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.command_queue.name = 单位指挥队列 +keybind.create_control_group.name = 创建操控队伍 +keybind.cancel_orders.name = 取消指令 +keybind.unit_stance_shoot.name = 单位姿态:射击 +keybind.unit_stance_hold_fire.name = 单位姿态:停火 +keybind.unit_stance_pursue_target.name = 单位姿态:追逐目标 +keybind.unit_stance_patrol.name = 单位姿态:巡逻 +keybind.unit_stance_ram.name = 单位姿态:冲锋 +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = 重建建筑 keybind.schematic_select.name = 框选建筑 keybind.schematic_menu.name = 蓝图目录 @@ -1272,22 +1317,25 @@ mode.pvp.description = 与其他玩家对战。 \n[gray]需要地图中有至少 mode.attack.name = 进攻 mode.attack.description = 摧毁敌人的基地。 \n[gray]需要地图中有敌方队伍的核心。 mode.custom = 自定义模式 -rules.invaliddata = Invalid clipboard data. +rules.invaliddata = 无效剪贴板数据。 rules.hidebannedblocks = 隐藏禁用的建筑 rules.infiniteresources = 无限资源 rules.onlydepositcore = 仅核心可放入资源 -rules.derelictrepair = Allow Derelict Block Repair +rules.derelictrepair = 允许修复残骸建筑 rules.reactorexplosions = 反应堆爆炸 rules.coreincinerates = 核心焚烧 rules.disableworldprocessors = 禁用世界处理器 rules.schematic = 允许使用蓝图 rules.wavetimer = 波次计时器 rules.wavesending = 波次可跳波 +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = 波次 +rules.airUseSpawns = Air units use spawn points rules.attack = 进攻模式 -rules.buildai = Base Builder AI -rules.buildaitier = Builder AI Tier +rules.buildai = 基础建筑者 AI +rules.buildaitier = 建筑者 AI 等级 rules.rtsai = RTS AI rules.rtsminsquadsize = 最小部队规模 rules.rtsmaxsquadsize = 最大部队规模 @@ -1303,9 +1351,10 @@ rules.unitbuildspeedmultiplier = 单位生产速度倍率 rules.unitcostmultiplier = 单位生产花费倍率 rules.unithealthmultiplier = 单位生命倍率 rules.unitdamagemultiplier = 单位伤害倍率 -rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier +rules.unitcrashdamagemultiplier = 单位坠毁伤害倍率 rules.solarmultiplier = 太阳能发电倍率 rules.unitcapvariable = 核心可增加单位上限 +rules.unitpayloadsexplode = 单位携带载荷与单位一起爆炸 rules.unitcap = 基础单位上限 rules.limitarea = 限制地图有效区域 rules.enemycorebuildradius = 敌方核心不可建造区域半径:[lightgray](格) @@ -1315,7 +1364,7 @@ rules.buildcostmultiplier = 建造花费倍率 rules.buildspeedmultiplier = 建造速度倍率 rules.deconstructrefundmultiplier = 拆除返还倍率 rules.waitForWaveToEnd = 等待波次结束 -rules.wavelimit = Map Ends After Wave +rules.wavelimit = 地图在有限波次后结束 rules.dropzoneradius = 敌人出生点禁区大小:[lightgray](格) rules.unitammo = 单位有弹药限制 rules.enemyteam = 敌方队伍 @@ -1338,6 +1387,8 @@ rules.weather = 天气 rules.weather.frequency = 周期: rules.weather.always = 永久 rules.weather.duration = 时长: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = 物品 content.liquid.name = 液体 @@ -2286,7 +2337,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = 添加绘图操作到绘图缓存\n使用[accent]Draw Flush[]后才会真正显示 lst.drawflush = 将绘图缓存中的[accent]Draw[]队列刷新到显示屏 lst.printflush = 将打印缓存中的[accent]Print[]队列刷新到信息板 @@ -2309,8 +2360,8 @@ lst.getblock = 获取任意位置的地块数据 lst.setblock = 设置任意位置的地块数据 lst.spawnunit = 在指定位置生成单位 lst.applystatus = 添加或清除单位的一个状态效果 -lst.weathersensor = Check if a type of weather is active. -lst.weatherset = Set the current state of a type of weather. +lst.weathersense = 检查特定种类的天气当前是否启用。 +lst.weatherset = 设置当前状态为特定类型天气。 lst.spawnwave = 在任意位置生成一波敌人\n并不记录在波数计数器中 lst.explosion = 在某个位置生成爆炸 lst.setrate = 在指令/时间刻的时间下设置处理器处理速度 @@ -2319,50 +2370,51 @@ lst.packcolor = 将[0,1]范围内的RGBA分量整合成单个数字,用于绘 lst.setrule = 设置地图规则 lst.flushmessage = 在屏幕中央投影文字缓存区的内容\n会等待上一个文字显示结束 lst.cutscene = 控制玩家游戏视角 -lst.setflag = 设置一个可以被所有处理器读取的全局flag -lst.getflag = 检查是否设置了全局flag -lst.setprop = Sets a property of a unit or building. -lst.effect = Create a particle effect. -lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. -lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. -lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. -lst.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. +lst.setflag = 设置一个可以被所有处理器读取的全局标志。 +lst.getflag = 检查是否设置了全局标志。 +lst.setprop = 设置单位或建筑物的属性。 +lst.effect = 创建一个粒子效果。 +lst.sync = 在网络中同步一个变量。\n最多每秒调用10次。 +lst.makemarker = 在世界中创建一个新的逻辑标记。\n必须提供一个用于标识此标记的ID。\n目前每个世界限制最多20000个标记。 +lst.setmarker = 为标记设置属性。\n使用的ID必须与制作标记指令中的相同。 +lst.localeprint = 将地图本地化文本属性值添加到文本缓冲区中。\n要在地图编辑器中设置地图本地化包,请检查 [accent]地图信息 > 本地化包[]。\n如果客户端是移动设备,则尝试首先打印以 ".mobile" 结尾的属性。 lglobal.false = 0 lglobal.true = 1 lglobal.null = null -lglobal.@pi = 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 +lglobal.@pi = 数学常数 pi (3.141...) +lglobal.@e = 数学常数 e (2.718...) +lglobal.@degToRad = 将角度制转换为弧度制 +lglobal.@radToDeg = 将弧度制转换为角度制 +lglobal.@time = 当前保存的游戏时间,以毫秒为单位 +lglobal.@tick = 当前保存的游戏时间,以tick为单位(1秒 = 60 tick) +lglobal.@second = 当前保存的游戏时间,以秒为单位 +lglobal.@minute = 当前保存的游戏时间,以分钟为单位 +lglobal.@waveNumber = 如果启用了波次,则为当前波次编号 +lglobal.@waveTime = 波次的倒计时计时器,以秒为单位 +lglobal.@mapw = 地图宽度(单位:格) +lglobal.@maph = 地图高度(单位:格) +lglobal.sectionMap = 地图 +lglobal.sectionGeneral = 通用 +lglobal.sectionNetwork = 网络/客户端 [仅限世界处理器] +lglobal.sectionProcessor = 处理器 +lglobal.sectionLookup = 查找 +lglobal.@this = 执行代码的逻辑块 +lglobal.@thisx = 执行代码的逻辑块的 X 坐标 +lglobal.@thisy = 执行代码的逻辑块的 Y 坐标 +lglobal.@links = 连接到此处理器的总块数 +lglobal.@ipt = 处理器每 tick 的执行速度(每秒 60 tick) +lglobal.@unitCount = 游戏中单位内容的类型总数;与查找指令一起使用 +lglobal.@blockCount = 游戏中块内容的类型总数;与查找指令一起使用 +lglobal.@itemCount = 游戏中物品内容的类型总数;与查找指令一起使用 +lglobal.@liquidCount = 游戏中液体内容的类型总数;与查找指令一起使用 +lglobal.@server = 如果代码正在服务器上运行或单人游戏中运行,则为真,否则为假 +lglobal.@client = 如果代码正在连接到服务器的客户端上运行,则为真 +lglobal.@clientLocale = 运行代码的客户端的区域设置。例如:en_US +lglobal.@clientUnit = 运行代码的客户端的单位 +lglobal.@clientName = 运行代码的客户端的玩家名称 +lglobal.@clientTeam = 运行代码的客户端的团队 ID +lglobal.@clientMobile = 如果运行代码的客户端在移动设备上,则为真,否则为假 + logic.nounitbuild = [red]此处不允许处理器操控单位去建设 @@ -2371,6 +2423,7 @@ lenum.shoot = 向某个位置瞄准/射击 lenum.shootp = 根据提前量向某个单位或建筑瞄准/射击 lenum.config = 建筑设置,例如分类器所设置的筛选物品种类 lenum.enabled = 建筑是否已启用 +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = 照明器发光的颜色 laccess.controller = 单位的控制方\n如果单位由处理器控制,返回对应的处理器\n如果单位在编队中,返回编队的领队\n其他情况,返回单位自身 @@ -2378,7 +2431,7 @@ laccess.dead = 单位或建筑是否已被摧毁或者已失效 laccess.controlled = 若单位的控制方是处理器,返回[accent]@ctrlProcessor[]\n若单位/建筑由玩家控制,返回[accent]@ctrlPlayer[]\n若单位在编队中,返回[accent]@ctrlFormation[]\n其他情况,返回0 laccess.progress = 进度,0到1之间的数值。 \n返回工厂生产、 炮塔装填,或者建筑建造的进度 laccess.speed = 单位的最高速度(格/秒) -laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. +laccess.id = 单位/块/物品/液体的ID。\n这是 Lookup 的反向操作。 lcategory.unknown = 未知 lcategory.unknown.description = 未分类的指令 @@ -2406,7 +2459,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. +graphicstype.print = 从打印缓冲区绘制文本。\n清除打印缓冲区。 lenum.always = 无条件跳转 lenum.idiv = 整数除法,返回不带小数的商 @@ -2426,7 +2479,7 @@ lenum.xor = 按位异或 lenum.min = 取较小值 lenum.max = 取较大值 lenum.angle = 返回向量的辐角(角度制) -lenum.anglediff = Absolute distance between two angles in degrees. +lenum.anglediff = 返回两个角度之间的绝对距离(角度制)。 lenum.len = 返回向量的长度 lenum.sin = 正弦(角度制) @@ -2501,7 +2554,7 @@ lenum.unbind = 停用单位的逻辑控制\n恢复常规AI lenum.move = 移动到某个位置 lenum.approach = 靠近某个位置至一定的距离内 lenum.pathfind = 寻路移动至敌人出生点 -lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. +lenum.autopathfind = "自动寻找最近的敌方核心或敌人生成点。\n这与波次中的敌人寻路相同。" lenum.target = 向某个位置瞄准/射击 lenum.targetp = 根据提前量向某个目标瞄准/射击 lenum.itemdrop = 将携带的物品放入一座建筑 @@ -2512,13 +2565,13 @@ lenum.payenter = 进入/降落到单位下方的荷载方块中 lenum.flag = 给单位赋予数字形式的标记 lenum.mine = 从某个位置采集矿物 lenum.build = 建造建筑 -lenum.getblock = 获取某个坐标处的建筑及其类型\n坐标需要在单位的感知范围内\n无建筑的地面返回[accent]@air[],墙壁返回[accent]@solid[] +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = 检查单位是否接近了某个位置 lenum.boost = 开始/停止助推 -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. +lenum.flushtext = 如果适用的话,将打印缓冲区的内容刷新到标记。\n如果 fetch 设置为 true,则尝试从地图本地化包或游戏的包中获取属性。 +lenum.texture = 直接来自游戏纹理图集的纹理名称(使用 kebab-case 命名风格)。\n如果 printFlush 设置为 true,则将文本缓冲区内容作为文本参数消耗。 +lenum.texturesize = 纹理的大小(格)。零值将标记宽度缩放为原始纹理的大小。 +lenum.autoscale = 是否根据玩家的缩放级别缩放标记。 +lenum.posi = 索引位置,用于线和四边形标记,索引零表示第一个位置。 +lenum.uvi = 纹理的位置范围从零到一,用于四边形标记。 +lenum.colori = 索引位置,用于线和四边形标记,索引零表示第一个颜色。 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 93e43f4741..7ef0eea54f 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -439,6 +439,11 @@ editor.rules = 規則: editor.generation = 自動生成: editor.objectives = Objectives editor.locales = Locale Bundles +editor.worldprocessors = World Processors +editor.worldprocessors.editname = Edit Name +editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. +editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? +editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. editor.ingame = 在遊戲中編輯 editor.playtest = 測試 editor.publish.workshop = 在工作坊上發佈 @@ -495,6 +500,7 @@ editor.default = [lightgray](預設) details = 詳細資訊…… edit = 編輯…… variables = 變數 +logic.clear.confirm = Are you sure you want to clear all code from this processor? logic.globals = Built-in Variables editor.name = 名稱: editor.spawn = 重生單位 @@ -584,6 +590,7 @@ filter.clear = 清除 filter.option.ignore = 忽略 filter.scatter = 分散 filter.terrain = 地形 +filter.logic = Logic filter.option.scale = 規模 filter.option.chance = 機會 @@ -607,7 +614,9 @@ 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) +filter.option.code = Code +filter.option.loop = Loop +locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.deletelocale = Are you sure you want to delete this locale bundle? locales.applytoall = Apply Changes To All Locales locales.addtoother = Add To Other Locales @@ -681,6 +690,7 @@ marker.shape.name = 稜框標示 marker.text.name = 文字標示 marker.line.name = Line marker.quad.name = Quad +marker.texture.name = Texture marker.background = 反黑背景 marker.outline = 描邊 @@ -731,7 +741,7 @@ error.any = 未知網路錯誤。 error.bloom = 初始化特效失敗。\n您的裝置可能不支援 weather.rain.name = 雨 -weather.snow.name = 雪 +weather.snowing.name = 雪 weather.sandstorm.name = 沙塵暴 weather.sporestorm.name = 孢子風暴 weather.fog.name = 霧 @@ -980,6 +990,7 @@ stat.abilities = 能力 stat.canboost = 推進器 stat.flying = 飛行單位 stat.ammouse = 彈藥使用 +stat.ammocapacity = Ammo Capacity stat.damagemultiplier = 傷害加成 stat.healthmultiplier = 血量加成 stat.speedmultiplier = 速度加成 @@ -990,17 +1001,46 @@ stat.immunities = Immunities stat.healing = 治癒 ability.forcefield = 防護罩 +ability.forcefield.description = Projects a force shield that absorbs bullets ability.repairfield = 維修力場 +ability.repairfield.description = Repairs nearby units ability.statusfield = 狀態力場 +ability.statusfield.description = Applies a status effect to nearby units ability.unitspawn = 工廠 +ability.unitspawn.description = Constructs units ability.shieldregenfield = 護盾充能力場 +ability.shieldregenfield.description = Regenerates shields of nearby units ability.movelightning = 移動閃電 +ability.movelightning.description = Releases lightning while moving +ability.armorplate = Armor Plate +ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc +ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets ability.suppressionfield = Regen Suppression Field +ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = 能量場: -ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}% -ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0} +ability.energyfield.description = Zaps nearby enemies +ability.energyfield.healdescription = Zaps nearby enemies and heals allies ability.regen = Regeneration +ability.regen.description = Regenerates own health over time +ability.liquidregen = Liquid Absorption +ability.liquidregen.description = Absorbs liquid to heal itself +ability.spawndeath = Death Spawns +ability.spawndeath.description = Releases units on death +ability.liquidexplode = Death Spillage +ability.liquidexplode.description = Spills liquid on death +ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate +ability.stat.regen = [stat]{0}[lightgray] health/sec +ability.stat.shield = [stat]{0}[lightgray] shield +ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit +ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown +ability.stat.maxtargets = [stat]{0}[lightgray] max targets +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount +ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction +ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed +ability.stat.duration = [stat]{0} sec[lightgray] duration +ability.stat.buildtime = [stat]{0} sec[lightgray] build time bar.onlycoredeposit = 僅允許向核心放置物品 bar.drilltierreq = 需要更好的鑽頭 @@ -1076,6 +1116,7 @@ unit.items = 物品 unit.thousands = K unit.millions = M unit.billions = B +unit.shots = shots unit.pershot = /發 category.purpose = 用途 category.general = 一般 @@ -1085,6 +1126,8 @@ category.items = 物品 category.crafting = 需求 category.function = 功能 category.optional = 額外的強化效果 +setting.alwaysmusic.name = Always Play Music +setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. setting.skipcoreanimation.name = 跳過核心發射/降落動畫 setting.landscape.name = 鎖定水平畫面 setting.shadows.name = 陰影 @@ -1196,15 +1239,16 @@ keybind.unit_stance_hold_fire.name = Unit Stance: Hold Fire keybind.unit_stance_pursue_target.name = Unit Stance: Pursue Target keybind.unit_stance_patrol.name = Unit Stance: Patrol keybind.unit_stance_ram.name = Unit Stance: Ram -keybind.unit_command_move = Unit Command: Move -keybind.unit_command_repair = Unit Command: Repair -keybind.unit_command_rebuild = Unit Command: Rebuild -keybind.unit_command_assist = Unit Command: Assist -keybind.unit_command_mine = Unit Command: Mine -keybind.unit_command_boost = Unit Command: Boost -keybind.unit_command_load_units = Unit Command: Load Units -keybind.unit_command_load_blocks = Unit Command: Load Blocks -keybind.unit_command_unload_payload = Unit Command: Unload Payload +keybind.unit_command_move.name = Unit Command: Move +keybind.unit_command_repair.name = Unit Command: Repair +keybind.unit_command_rebuild.name = Unit Command: Rebuild +keybind.unit_command_assist.name = Unit Command: Assist +keybind.unit_command_mine.name = Unit Command: Mine +keybind.unit_command_boost.name = Unit Command: Boost +keybind.unit_command_load_units.name = Unit Command: Load Units +keybind.unit_command_load_blocks.name = Unit Command: Load Blocks +keybind.unit_command_unload_payload.name = Unit Command: Unload Payload +keybind.unit_command_enter_payload.name = Unit Command: Enter Payload keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = 選擇區域 keybind.schematic_menu.name = 藍圖目錄 @@ -1280,7 +1324,10 @@ rules.disableworldprocessors = 停用世界處理器 rules.schematic = 允許使用藍圖 rules.wavetimer = 波次時間 rules.wavesending = Wave Sending +rules.allowedit = Allow Editing Rules +rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. rules.waves = 波次 +rules.airUseSpawns = Air units use spawn points rules.attack = 攻擊模式 rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1302,6 +1349,7 @@ rules.unitdamagemultiplier = 單位傷害加成 rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier rules.solarmultiplier = 太陽能電加成 rules.unitcapvariable = 核心限制單位上限 +rules.unitpayloadsexplode = Carried Payloads Explode With The Unit rules.unitcap = 基礎單位上限 rules.limitarea = 限制地圖區域 rules.enemycorebuildradius = 敵人核心禁止建設半徑︰[lightgray](格) @@ -1334,6 +1382,8 @@ rules.weather = 天氣 rules.weather.frequency = 頻率: rules.weather.always = 永遠 rules.weather.duration = 持續時間: +rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. +rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. content.item.name = 物品 content.liquid.name = 液體 @@ -2272,7 +2322,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.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" lst.draw = 將圖形加入顯示的暫存中,搭配[accent]Draw Flush[]使用 lst.drawflush = 將所有暫存的[accent]Draw[]指令推到顯示器上 lst.printflush = 將所有暫存的[accent]Print[]指令推到訊息板上 @@ -2295,7 +2345,7 @@ lst.getblock = 由位置取方塊數據 lst.setblock = 由位置設置方塊數據 lst.spawnunit = 在某一位置生成單位 lst.applystatus = 爲單位添加或移除狀態效果 -lst.weathersensor = Check if a type of weather is active. +lst.weathersense = Check if a type of weather is active. lst.weatherset = Set the current state of a type of weather. lst.spawnwave = 在某一位置生成一波敵人\n不計入波數 lst.explosion = 在某一位置製造爆炸 @@ -2357,6 +2407,7 @@ lenum.shoot = 對該位置開火 lenum.shootp = 對指定單位/建築開火,具自瞄功能 lenum.config = 建築設置,例如分類器篩选的物品種類 lenum.enabled = 確認該建築是否啟用 +laccess.currentammotype = Current ammo item/liquid of a turret. laccess.color = 照明燈顏色 laccess.controller = 單位的控制者。受處理器控制時回傳處理器。\n在隊形中回傳領導的單位。\n否則回傳單位自己。 @@ -2498,7 +2549,7 @@ lenum.payenter = 進入/降落到載重方塊 lenum.flag = 單位編號(可異) lenum.mine = 挖指定位置的礦物 lenum.build = 建造一個建築 -lenum.getblock = 獲取指定位置的建築種類和該建築\n必須在單位的範圍內\n實體障礙物,如高山會回傳[accent]@solid[] +lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. lenum.within = 單位是否在指定範圍內 lenum.boost = 使用推進器 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. diff --git a/core/assets/contributors b/core/assets/contributors index 3b3153b7ee..a07a13aadc 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -159,9 +159,12 @@ xStaBUx WayZer SITUVNgcd Gabriel "red" Fondato -Yoru Kitsune +CoCo Snow summoner OpalSoPL BalaM314 Redstonneur1256 ApsZoldat +hexagon-recursion +JasonP01 +BlueTheCube diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index 1a821f841a..26e11eb4c2 100644 Binary files a/core/assets/logicids.dat and b/core/assets/logicids.dat differ diff --git a/core/assets/maps/frozenForest.msav b/core/assets/maps/frozenForest.msav index e29d7199cd..57b06ee25d 100644 Binary files a/core/assets/maps/frozenForest.msav and b/core/assets/maps/frozenForest.msav differ diff --git a/core/assets/music/coreLaunch.ogg b/core/assets/music/coreLaunch.ogg new file mode 100644 index 0000000000..b4a1b55a68 Binary files /dev/null and b/core/assets/music/coreLaunch.ogg differ diff --git a/core/assets/music/land.ogg b/core/assets/music/land.ogg index 4cfd914673..ef81ccc90a 100644 Binary files a/core/assets/music/land.ogg and b/core/assets/music/land.ogg differ diff --git a/core/src/mindustry/ClientLauncher.java b/core/src/mindustry/ClientLauncher.java index ae8aae4ab3..2e8d7396c1 100644 --- a/core/src/mindustry/ClientLauncher.java +++ b/core/src/mindustry/ClientLauncher.java @@ -66,11 +66,11 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform Time.setDeltaProvider(() -> { float result = Core.graphics.getDeltaTime() * 60f; - return (Float.isNaN(result) || Float.isInfinite(result)) ? 1f : Mathf.clamp(result, 0.0001f, 60f / 10f); + return (Float.isNaN(result) || Float.isInfinite(result)) ? 1f : Mathf.clamp(result, 0.0001f, maxDeltaClient); }); UI.loadColors(); - batch = new SortedSpriteBatch(); + batch = new SpriteBatch(); assets = new AssetManager(); assets.setLoader(Texture.class, "." + mapExtension, new MapPreviewLoader()); diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 0dc1cf9e3f..bc4c6a494a 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -28,6 +28,7 @@ import mindustry.net.*; import mindustry.service.*; import mindustry.ui.dialogs.*; import mindustry.world.*; +import mindustry.world.blocks.storage.*; import mindustry.world.meta.*; import java.io.*; @@ -105,8 +106,8 @@ public class Vars implements Loadable{ public static final float invasionGracePeriod = 20; /** min armor fraction damage; e.g. 0.05 = at least 5% damage */ public static final float minArmorDamage = 0.1f; - /** land/launch animation duration */ - public static final float coreLandDuration = 160f; + /** @deprecated see {@link CoreBlock#landDuration} instead! */ + public static final @Deprecated float coreLandDuration = 160f; /** size of tiles in units */ public static final int tilesize = 8; /** size of one tile payload (^2) */ @@ -136,6 +137,13 @@ public class Vars implements Loadable{ Color.valueOf("4b5ef1"), Color.valueOf("2cabfe"), }; + /** Icons available to the user for customization in certain dialogs. */ + public static final String[] accessibleIcons = { + "effect", "power", "logic", "units", "liquid", "production", "defense", "turret", "distribution", "crafting", + "settings", "cancel", "zoom", "ok", "star", "home", "pencil", "up", "down", "left", "right", + "hammer", "warning", "tree", "admin", "map", "modePvp", "terrain", + "modeSurvival", "commandRally", "commandAttack", + }; /** maximum TCP packet size */ public static final int maxTcpSize = 900; /** default server port */ @@ -146,6 +154,8 @@ public class Vars implements Loadable{ public static final int maxModSubtitleLength = 40; /** multicast group for discovery.*/ public static final String multicastGroup = "227.2.7.7"; + /** Maximum delta time. If the actual delta time (*60) between frames is higher than this number, the game will start to slow down. */ + public static float maxDeltaClient = 6f, maxDeltaServer = 10f; /** whether the graphical game client has loaded */ public static boolean clientLoaded = false; /** max GL texture size */ diff --git a/core/src/mindustry/ai/BaseBuilderAI.java b/core/src/mindustry/ai/BaseBuilderAI.java index 763fd15ee5..3df72adb70 100644 --- a/core/src/mindustry/ai/BaseBuilderAI.java +++ b/core/src/mindustry/ai/BaseBuilderAI.java @@ -32,7 +32,6 @@ public class BaseBuilderAI{ private static int correct = 0, incorrect = 0; - private int lastX, lastY, lastW, lastH; private boolean foundPath; final TeamData data; @@ -262,11 +261,6 @@ public class BaseBuilderAI{ data.plans.add(new BlockPlan(cx + tile.x, cy + tile.y, tile.rotation, tile.block.id, tile.config)); } - lastX = cx - 1; - lastY = cy - 1; - lastW = result.width + 2; - lastH = result.height + 2; - return true; } } \ No newline at end of file diff --git a/core/src/mindustry/ai/BlockIndexer.java b/core/src/mindustry/ai/BlockIndexer.java index 60bcca661e..7f944a3eb0 100644 --- a/core/src/mindustry/ai/BlockIndexer.java +++ b/core/src/mindustry/ai/BlockIndexer.java @@ -130,13 +130,13 @@ public class BlockIndexer{ data.turretTree.remove(build); } - //is no longer registered - build.wasDamaged = false; - //unregister damaged buildings - if(build.damaged() && damagedTiles[team.id] != null){ + if(build.wasDamaged && damagedTiles[team.id] != null){ damagedTiles[team.id].remove(build); } + + //is no longer registered + build.wasDamaged = false; } } diff --git a/core/src/mindustry/ai/ControlPathfinder.java b/core/src/mindustry/ai/ControlPathfinder.java index cabb297270..be200eecda 100644 --- a/core/src/mindustry/ai/ControlPathfinder.java +++ b/core/src/mindustry/ai/ControlPathfinder.java @@ -7,6 +7,8 @@ import arc.math.*; import arc.math.geom.*; import arc.struct.*; import arc.util.*; +import mindustry.annotations.Annotations.*; +import mindustry.content.*; import mindustry.core.*; import mindustry.game.EventType.*; import mindustry.game.*; @@ -17,12 +19,13 @@ import mindustry.world.*; import static mindustry.Vars.*; import static mindustry.ai.Pathfinder.*; -public class ControlPathfinder{ - //TODO this FPS-based update system could be flawed. - private static final long maxUpdate = Time.millisToNanos(30); - private static final int updateFPS = 60; - private static final int updateInterval = 1000 / updateFPS; +//https://webdocs.cs.ualberta.ca/~mmueller/ps/hpastar.pdf +//https://www.gameaipro.com/GameAIPro/GameAIPro_Chapter23_Crowd_Pathfinding_and_Steering_Using_Flow_Field_Tiles.pdf +public class ControlPathfinder implements Runnable{ private static final int wallImpassableCap = 1_000_000; + private static final int solidCap = 7000; + + public static boolean showDebug; public static final PathCost @@ -61,295 +64,1232 @@ public class ControlPathfinder{ ((PathTile.team(tile) != team && PathTile.team(tile) != 0) && PathTile.solid(tile) ? wallImpassableCap : 0) + (PathTile.nearGround(tile) || PathTile.nearSolid(tile) ? 6 : 0); - public static boolean showDebug = false; + public static final int + costIdGround = 0, + costIdHover = 1, + costIdLegs = 2, + costIdNaval = 3; - //static access probably faster than object access - static int wwidth, wheight; - //increments each tile change - static volatile int worldUpdateId; + public static final Seq costTypes = Seq.with( + costGround, + costHover, + costLegs, + costNaval + ); - /** Current pathfinding threads, contents may be null */ - @Nullable PathfindThread[] threads; - /** for unique target IDs */ - int lastTargetId = 1; - /** requests per-unit */ - ObjectMap requests = new ObjectMap<>(); + private static final long maxUpdate = Time.millisToNanos(12); + private static final int updateStepInterval = 200; + private static final int updateFPS = 30; + private static final int updateInterval = 1000 / updateFPS, invalidateCheckInterval = 1000; + + static final int clusterSize = 12; + + static final int[] offsets = { + 1, 0, //right: bottom to top + 0, 1, //top: left to right + 0, 0, //left: bottom to top + 0, 0 //bottom: left to right + }; + + static final int[] moveDirs = { + 0, 1, + 1, 0, + 0, 1, + 1, 0 + }; + + static final int[] nextOffsets = { + 1, 0, + 0, 1, + -1, 0, + 0, -1 + }; + + //maps team -> pathCost -> flattened array of clusters in 2D + //(what about teams? different path costs?) + Cluster[][][] clusters; + + int cwidth, cheight; + + //temporarily used for resolving connections for intra-edges + IntSet usedEdges = new IntSet(); + //tasks to run on pathfinding thread + TaskQueue queue = new TaskQueue(); + + //individual requests based on unit - MAIN THREAD ONLY + ObjectMap unitRequests = new ObjectMap<>(); + + Seq threadPathRequests = new Seq<>(false); + + //TODO: very dangerous usage; + //TODO - it is accessed from the main thread + //TODO - it is written to on the pathfinding thread + //maps position in world in (x + y * width format) | type (bitpacked to long) to a cache of flow fields + LongMap fields = new LongMap<>(); + //MAIN THREAD ONLY + Seq fieldList = new Seq<>(false); + + //these are for inner edge A* (temporary!) + IntFloatMap innerCosts = new IntFloatMap(); + PathfindQueue innerFrontier = new PathfindQueue(); + + //ONLY modify on pathfinding thread. + IntSet clustersToUpdate = new IntSet(); + IntSet clustersToInnerUpdate = new IntSet(); + + //PATHFINDING THREAD - requests that should be recomputed + ObjectSet invalidRequests = new ObjectSet<>(); + + /** Current pathfinding thread */ + @Nullable Thread thread; + + //path requests are per-unit + static class PathRequest{ + final Unit unit; + final int destination, team, costId; + //resulting path of nodes + final IntSeq resultPath = new IntSeq(); + + //node index -> total cost + @Nullable IntFloatMap costs = new IntFloatMap(); + //node index (NodeIndex struct) -> node it came from TODO merge them, make properties of FieldCache? + @Nullable IntIntMap cameFrom = new IntIntMap(); + //frontier for A* + @Nullable PathfindQueue frontier = new PathfindQueue(); + + //main thread only! + long lastUpdateId = state.updateId; + + //both threads + volatile boolean notFound = false; + volatile boolean invalidated = false; + //old field assigned before everything was recomputed + @Nullable volatile FieldCache oldCache; + + boolean lastRaycastResult = false; + int lastRaycastTile, lastWorldUpdate; + int lastTile; + @Nullable Tile lastTargetTile; + + PathRequest(Unit unit, int team, int costId, int destination){ + this.unit = unit; + this.costId = costId; + this.team = team; + this.destination = destination; + } + } + + static class FieldCache{ + final PathCost cost; + final int costId; + final int team; + final int goalPos; + //frontier for flow fields + final IntQueue frontier = new IntQueue(); + //maps cluster index to field weights; 0 means uninitialized + final IntMap fields = new IntMap<>(); + final long mapKey; + + //main thread only! + long lastUpdateId = state.updateId; + + //TODO: how are the nodes merged? CAN they be merged? + + FieldCache(PathCost cost, int costId, int team, int goalPos){ + this.cost = cost; + this.team = team; + this.goalPos = goalPos; + this.costId = costId; + this.mapKey = Pack.longInt(goalPos, costId); + } + } + + static class Cluster{ + IntSeq[] portals = new IntSeq[4]; + //maps rotation + index of portal to list of IntraEdge objects + LongSeq[][] portalConnections = new LongSeq[4][]; + } public ControlPathfinder(){ + Events.on(ResetEvent.class, event -> stop()); + Events.on(WorldLoadEvent.class, event -> { stop(); - wwidth = world.width(); - wheight = world.height(); + + //TODO: can the pathfinding thread even see these? + unitRequests = new ObjectMap<>(); + fields = new LongMap<>(); + fieldList = new Seq<>(false); + + clusters = new Cluster[256][][]; + cwidth = Mathf.ceil((float)world.width() / clusterSize); + cheight = Mathf.ceil((float)world.height() / clusterSize); + start(); }); - //only update the world when a solid block is removed or placed, everything else doesn't matter - Events.on(TilePreChangeEvent.class, e -> { - if(e.tile.solid()){ - worldUpdateId ++; - } - }); - Events.on(TileChangeEvent.class, e -> { - if(e.tile.solid()){ - worldUpdateId ++; - } - }); - Events.on(ResetEvent.class, event -> stop()); + e.tile.getLinkedTiles(t -> { + int x = t.x, y = t.y, mx = x % clusterSize, my = y % clusterSize, cx = x / clusterSize, cy = y / clusterSize, cluster = cx + cy * cwidth; + + //is at the edge of a cluster; this means the portals may have changed. + if(mx == 0 || my == 0 || mx == clusterSize - 1 || my == clusterSize - 1){ + + if(mx == 0) queueClusterUpdate(cx - 1, cy); //left + if(my == 0) queueClusterUpdate(cx, cy - 1); //bottom + if(mx == clusterSize - 1) queueClusterUpdate(cx + 1, cy); //right + if(my == clusterSize - 1) queueClusterUpdate(cx, cy + 1); //top + + queueClusterUpdate(cx, cy); + //TODO: recompute edge clusters too. + }else{ + //there is no need to recompute portals for block updates that are not on the edge. + queue.post(() -> clustersToInnerUpdate.add(cluster)); + } + }); + + //TODO: recalculate affected flow fields? or just all of them? how to reflow? + }); //invalidate paths Events.run(Trigger.update, () -> { - for(var req : requests.values()){ + for(var req : unitRequests.values()){ //skipped N update -> drop it if(req.lastUpdateId <= state.updateId - 10){ + req.invalidated = true; //concurrent modification! - Core.app.post(() -> requests.remove(req.unit)); - req.thread.queue.post(() -> req.thread.requests.remove(req)); + queue.post(() -> threadPathRequests.remove(req)); + Core.app.post(() -> unitRequests.remove(req.unit)); + } + } + + for(var field : fieldList){ + //skipped N update -> drop it + if(field.lastUpdateId <= state.updateId - 30){ + //make sure it's only modified on the main thread...? but what about calling get() on this thread?? + queue.post(() -> fields.remove(field.mapKey)); + Core.app.post(() -> fieldList.remove(field)); } } }); - Events.run(Trigger.draw, () -> { - if(!showDebug) return; + if(showDebug){ + Events.run(Trigger.draw, () -> { + int team = player.team().id; + int cost = 0; - for(var req : requests.values()){ - if(req.frontier == null) continue; Draw.draw(Layer.overlayUI, () -> { - if(req.done){ - int len = req.result.size; - int rp = req.rayPathIndex; - if(rp < len && rp >= 0){ - Draw.color(Color.royal); - Tile tile = tile(req.result.items[rp]); - Lines.line(req.unit.x, req.unit.y, tile.worldx(), tile.worldy()); - } + Lines.stroke(1f); - for(int i = 0; i < len; i++){ - Draw.color(Tmp.c1.set(Color.white).fromHsv(i / (float)len * 360f, 1f, 0.9f)); - int pos = req.result.items[i]; - Fill.square(pos % wwidth * tilesize, pos / wwidth * tilesize, 3f); + if(clusters[team] != null && clusters[team][cost] != null){ + for(int cx = 0; cx < cwidth; cx++){ + for(int cy = 0; cy < cheight; cy++){ - if(i == req.pathIndex){ - Draw.color(Color.green); - Lines.square(pos % wwidth * tilesize, pos / wwidth * tilesize, 5f); - } - } - }else{ - var view = Core.camera.bounds(Tmp.r1); - int len = req.frontier.size; - float[] weights = req.frontier.weights; - int[] poses = req.frontier.queue; - for(int i = 0; i < Math.min(len, 1000); i++){ - int pos = poses[i]; - if(view.contains(pos % wwidth * tilesize, pos / wwidth * tilesize)){ - Draw.color(Tmp.c1.set(Color.white).fromHsv((weights[i] * 4f) % 360f, 1f, 0.9f)); + var cluster = clusters[team][cost][cy * cwidth + cx]; + if(cluster != null){ + Lines.stroke(0.5f); + Draw.color(Color.gray); + Lines.stroke(1f); - Lines.square(pos % wwidth * tilesize, pos / wwidth * tilesize, 4f); + Lines.rect(cx * clusterSize * tilesize - tilesize/2f, cy * clusterSize * tilesize - tilesize/2f, clusterSize * tilesize, clusterSize * tilesize); + + + for(int d = 0; d < 4; d++){ + IntSeq portals = cluster.portals[d]; + if(portals != null){ + + for(int i = 0; i < portals.size; i++){ + int pos = portals.items[i]; + int from = Point2.x(pos), to = Point2.y(pos); + float width = tilesize * (Math.abs(from - to) + 1), height = tilesize; + + portalToVec(cluster, cx, cy, d, i, Tmp.v1); + + Draw.color(Color.brown); + Lines.ellipse(30, Tmp.v1.x, Tmp.v1.y, width / 2f, height / 2f, d * 90f - 90f); + + LongSeq connections = cluster.portalConnections[d] == null ? null : cluster.portalConnections[d][i]; + + if(connections != null){ + Draw.color(Color.forest); + for(int coni = 0; coni < connections.size; coni ++){ + long con = connections.items[coni]; + + portalToVec(cluster, cx, cy, IntraEdge.dir(con), IntraEdge.portal(con), Tmp.v2); + + float + x1 = Tmp.v1.x, y1 = Tmp.v1.y, + x2 = Tmp.v2.x, y2 = Tmp.v2.y; + Lines.line(x1, y1, x2, y2); + + } + } + } + } + } + } } } } - Draw.reset(); + + for(var fields : fieldList){ + try{ + for(var entry : fields.fields){ + int cx = entry.key % cwidth, cy = entry.key / cwidth; + for(int y = 0; y < clusterSize; y++){ + for(int x = 0; x < clusterSize; x++){ + int value = entry.value[x + y * clusterSize]; + Tmp.c1.a = 1f; + Lines.stroke(0.8f, Tmp.c1.fromHsv(value * 3f, 1f, 1f)); + Draw.alpha(0.5f); + Fill.square((x + cx * clusterSize) * tilesize, (y + cy * clusterSize) * tilesize, tilesize / 2f); + } + } + } + }catch(Exception ignored){} //probably has some concurrency issues when iterating but I don't care, this is for debugging + } }); - } - }); + + Draw.reset(); + }); + } } - - /** @return the next target ID to use as a unique path identifier. */ - public int nextTargetId(){ - return lastTargetId ++; + void queueClusterUpdate(int cx, int cy){ + if(cx >= 0 && cy >= 0 && cx < cwidth && cy < cheight){ + queue.post(() -> clustersToUpdate.add(cx + cy * cwidth)); + } } - /** - * @return whether a path is ready. - * @param pathId a unique ID for this location query, which should change every time the 'destination' vector is modified. - * */ - public boolean getPathPosition(Unit unit, int pathId, Vec2 destination, Vec2 out){ - return getPathPosition(unit, pathId, destination, out, null); + //debugging only! + void portalToVec(Cluster cluster, int cx, int cy, int direction, int portalIndex, Vec2 out){ + int pos = cluster.portals[direction].items[portalIndex]; + int from = Point2.x(pos), to = Point2.y(pos); + int addX = moveDirs[direction * 2], addY = moveDirs[direction * 2 + 1]; + float average = (from + to) / 2f; + + float + x = (addX * average + cx * clusterSize + offsets[direction * 2] * (clusterSize - 1) + nextOffsets[direction * 2] / 2f) * tilesize, + y = (addY * average + cy * clusterSize + offsets[direction * 2 + 1] * (clusterSize - 1) + nextOffsets[direction * 2 + 1] / 2f) * tilesize; + + out.set(x, y); } - /** - * @return whether a path is ready. - * @param pathId a unique ID for this location query, which should change every time the 'destination' vector is modified. - * @param noResultFound extra return value for storing whether no valid path to the destination exists (thanks java!) - * */ - public boolean getPathPosition(Unit unit, int pathId, Vec2 destination, Vec2 out, @Nullable boolean[] noResultFound){ - if(noResultFound != null){ - noResultFound[0] = false; - } - - //uninitialized - if(threads == null || !world.tiles.in(World.toTile(destination.x), World.toTile(destination.y))) return false; - - PathCost costType = unit.type.pathCost; - int team = unit.team.id; - - //if the destination can be trivially reached in a straight line, do that. - if((!requests.containsKey(unit) || requests.get(unit).curId != pathId) && !raycast(team, costType, unit.tileX(), unit.tileY(), World.toTile(destination.x), World.toTile(destination.y))){ - out.set(destination); - return true; - } - - //destination is impassable, can't go there. - if(solid(team, costType, world.packArray(World.toTile(destination.x), World.toTile(destination.y)), false)){ - return false; - } - - //check for request existence - if(!requests.containsKey(unit)){ - PathfindThread thread = Structs.findMin(threads, t -> t.requestSize); - - var req = new PathRequest(thread); - req.unit = unit; - req.cost = costType; - req.destination.set(destination); - req.curId = pathId; - req.team = team; - req.lastUpdateId = state.updateId; - req.lastPos.set(unit); - req.lastWorldUpdate = worldUpdateId; - //raycast immediately when done - req.raycastTimer = 9999f; - - requests.put(unit, req); - - //add to thread so it gets processed next update - thread.queue.post(() -> thread.requests.add(req)); - }else{ - var req = requests.get(unit); - req.lastUpdateId = state.updateId; - req.team = unit.team.id; - if(req.curId != req.lastId || req.curId != pathId){ - req.pathIndex = 0; - req.rayPathIndex = -1; - req.done = false; - req.foundEnd = false; - } - - req.destination.set(destination); - req.curId = pathId; - - //check for the unit getting stuck every N seconds - if(req.done && (req.stuckTimer += Time.delta) >= 60f * 1.5f){ - req.stuckTimer = 0f; - //force recalculate - if(req.lastPos.within(unit, 1.5f)){ - req.forceRecalculate(); - } - req.lastPos.set(unit); - } - - if(req.done){ - int[] items = req.result.items; - int len = req.result.size; - int tileX = unit.tileX(), tileY = unit.tileY(); - float range = 4f; - - float minDst = req.pathIndex < len ? unit.dst2(world.tiles.geti(items[req.pathIndex])) : 0f; - int idx = req.pathIndex; - - //find closest node that is in front of the path index and hittable with raycast - for(int i = len - 1; i >= idx; i--){ - Tile tile = tile(items[i]); - float dst = unit.dst2(tile); - //TODO maybe put this on a timer since raycasts can be expensive? - if(dst < minDst && !permissiveRaycast(team, costType, tileX, tileY, tile.x, tile.y)){ - 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); - } - } - - if(req.rayPathIndex < 0){ - req.rayPathIndex = req.pathIndex; - } - - if((req.raycastTimer += Time.delta) >= 50f){ - for(int i = len - 1; i > req.pathIndex; i--){ - int val = items[i]; - if(!raycast(team, costType, tileX, tileY, val % wwidth, val / wwidth)){ - req.rayPathIndex = i; - break; - } - } - req.raycastTimer = 0; - } - - if(req.rayPathIndex < len && req.rayPathIndex >= 0){ - Tile tile = tile(items[req.rayPathIndex]); - out.set(tile); - - if(req.rayPathIndex > 0){ - float angleToNext = tile(items[req.rayPathIndex - 1]).angleTo(tile); - float angleToDest = unit.angleTo(tile); - //force recalculate when the unit moves backwards - if(Angles.angleDist(angleToNext, angleToDest) > 80f && !unit.within(tile, 1f)){ - req.forceRecalculate(); - } - } - - 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); - } - }else{ - //implicit done - out.set(unit); - //end of path, we're done here? reset path? what??? - } - - if(noResultFound != null){ - noResultFound[0] = !req.foundEnd; - } - } - - return req.done; - } - - return false; - } /** Starts or restarts the pathfinding thread. */ private void start(){ stop(); - if(net.client()) return; - //TODO currently capped at 6 threads, might be a good idea to make it more? - threads = new PathfindThread[Mathf.clamp(Runtime.getRuntime().availableProcessors() - 1, 1, 6)]; - for(int i = 0; i < threads.length; i ++){ - threads[i] = new PathfindThread("ControlPathfindThread-" + i); - threads[i].setPriority(Thread.MIN_PRIORITY); - threads[i].setDaemon(true); - threads[i].start(); - } + thread = new Thread(this, "Control Pathfinder"); + thread.setPriority(Thread.MIN_PRIORITY); + thread.setDaemon(true); + thread.start(); } /** Stops the pathfinding thread. */ private void stop(){ - if(threads != null){ - for(var thread : threads){ - thread.interrupt(); + if(thread != null){ + thread.interrupt(); + thread = null; + } + queue.clear(); + } + + /** @return a cluster at coordinates; can be null if not cluster was created yet*/ + @Nullable Cluster getCluster(int team, int pathCost, int cx, int cy){ + return getCluster(team, pathCost, cx + cy * cwidth); + } + + /** @return a cluster at coordinates; can be null if not cluster was created yet*/ + @Nullable Cluster getCluster(int team, int pathCost, int clusterIndex){ + if(clusters == null) return null; + + Cluster[][] dim1 = clusters[team]; + + if(dim1 == null) return null; + + Cluster[] dim2 = dim1[pathCost]; + + //TODO: how can index out of bounds happen? || clusterIndex >= dim2.length + if(dim2 == null) return null; + + return dim2[clusterIndex]; + } + + /** @return the cluster at specified coordinates; never null. */ + Cluster getCreateCluster(int team, int pathCost, int cx, int cy){ + return getCreateCluster(team, pathCost, cx + cy * cwidth); + } + + /** @return the cluster at specified coordinates; never null. */ + Cluster getCreateCluster(int team, int pathCost, int clusterIndex){ + Cluster result = getCluster(team, pathCost, clusterIndex); + if(result == null){ + return updateCluster(team, pathCost, clusterIndex % cwidth, clusterIndex / cwidth); + }else{ + return result; + } + } + + Cluster updateCluster(int team, int pathCost, int cx, int cy){ + //TODO: what if clusters are null for thread visibility reasons? + + Cluster[][] dim1 = clusters[team]; + + if(dim1 == null){ + dim1 = clusters[team] = new Cluster[Team.all.length][]; + } + + Cluster[] dim2 = dim1[pathCost]; + + if(dim2 == null){ + dim2 = dim1[pathCost] = new Cluster[cwidth * cheight]; + } + + Cluster cluster = dim2[cy * cwidth + cx]; + if(cluster == null){ + cluster = dim2[cy * cwidth + cx] = new Cluster(); + }else{ + //reset data + for(var p : cluster.portals){ + if(p != null){ + p.clear(); + } } } - threads = null; - requests.clear(); + + PathCost cost = idToCost(pathCost); + + for(int direction = 0; direction < 4; direction++){ + int otherX = cx + Geometry.d4x(direction), otherY = cy + Geometry.d4y(direction); + //out of bounds, no portals in this direction + if(otherX < 0 || otherY < 0 || otherX >= cwidth || otherY >= cheight){ + continue; + } + + Cluster other = dim2[otherX + otherY * cwidth]; + IntSeq portals; + + if(other == null){ + //create new portals at direction + portals = cluster.portals[direction] = new IntSeq(4); + }else{ + //share portals with the other cluster + portals = cluster.portals[direction] = other.portals[(direction + 2) % 4]; + + //clear the portals, they're being recalculated now + portals.clear(); + } + + int addX = moveDirs[direction * 2], addY = moveDirs[direction * 2 + 1]; + int + baseX = cx * clusterSize + offsets[direction * 2] * (clusterSize - 1), + baseY = cy * clusterSize + offsets[direction * 2 + 1] * (clusterSize - 1), + nextBaseX = baseX + Geometry.d4[direction].x, + nextBaseY = baseY + Geometry.d4[direction].y; + + int lastPortal = -1; + boolean prevSolid = true; + + for(int i = 0; i < clusterSize; i++){ + int x = baseX + addX * i, y = baseY + addY * i; + + //scan for portals + if(solid(team, cost, x, y) || solid(team, cost, nextBaseX + addX * i, nextBaseY + addY * i)){ + int previous = i - 1; + //hit a wall, create portals between the two points + if(!prevSolid && previous >= lastPortal){ + //portals are an inclusive range + portals.add(Point2.pack(previous, lastPortal)); + } + prevSolid = true; + }else{ + //empty area encountered, mark the location of portal start + if(prevSolid){ + lastPortal = i; + } + prevSolid = false; + } + } + + //at the end of the loop, close any un-initialized portals; this is copy pasted code + int previous = clusterSize - 1; + if(!prevSolid && previous >= lastPortal){ + //portals are an inclusive range + portals.add(Point2.pack(previous, lastPortal)); + } + } + + updateInnerEdges(team, cost, cx, cy, cluster); + + return cluster; + } + + void updateInnerEdges(int team, int cost, int cx, int cy, Cluster cluster){ + updateInnerEdges(team, idToCost(cost), cx, cy, cluster); + } + + void updateInnerEdges(int team, PathCost cost, int cx, int cy, Cluster cluster){ + int minX = cx * clusterSize, minY = cy * clusterSize, maxX = Math.min(minX + clusterSize - 1, wwidth - 1), maxY = Math.min(minY + clusterSize - 1, wheight - 1); + + usedEdges.clear(); + + //clear all connections, since portals changed, they need to be recomputed. + cluster.portalConnections = new LongSeq[4][]; + + for(int direction = 0; direction < 4; direction++){ + var portals = cluster.portals[direction]; + if(portals == null) continue; + + int addX = moveDirs[direction * 2], addY = moveDirs[direction * 2 + 1]; + + for(int i = 0; i < portals.size; i++){ + usedEdges.add(Point2.pack(direction, i)); + + int + portal = portals.items[i], + from = Point2.x(portal), to = Point2.y(portal), + average = (from + to) / 2, + x = (addX * average + cx * clusterSize + offsets[direction * 2] * (clusterSize - 1)), + y = (addY * average + cy * clusterSize + offsets[direction * 2 + 1] * (clusterSize - 1)); + + for(int otherDir = 0; otherDir < 4; otherDir++){ + var otherPortals = cluster.portals[otherDir]; + if(otherPortals == null) continue; + + for(int j = 0; j < otherPortals.size; j++){ + + if(!usedEdges.contains(Point2.pack(otherDir, j))){ + + int + other = otherPortals.items[j], + otherFrom = Point2.x(other), otherTo = Point2.y(other), + otherAverage = (otherFrom + otherTo) / 2, + ox = cx * clusterSize + offsets[otherDir * 2] * (clusterSize - 1), + oy = cy * clusterSize + offsets[otherDir * 2 + 1] * (clusterSize - 1), + otherX = (moveDirs[otherDir * 2] * otherAverage + ox), + otherY = (moveDirs[otherDir * 2 + 1] * otherAverage + oy); + + //duplicate portal; should never happen. + if(Point2.pack(x, y) == Point2.pack(otherX, otherY)){ + continue; + } + + float connectionCost = innerAstar( + team, cost, + minX, minY, maxX, maxY, + x + y * wwidth, + otherX + otherY * wwidth, + (moveDirs[otherDir * 2] * otherFrom + ox), + (moveDirs[otherDir * 2 + 1] * otherFrom + oy), + (moveDirs[otherDir * 2] * otherTo + ox), + (moveDirs[otherDir * 2 + 1] * otherTo + oy) + ); + + if(connectionCost != -1f){ + if(cluster.portalConnections[direction] == null) cluster.portalConnections[direction] = new LongSeq[cluster.portals[direction].size]; + if(cluster.portalConnections[otherDir] == null) cluster.portalConnections[otherDir] = new LongSeq[cluster.portals[otherDir].size]; + if(cluster.portalConnections[direction][i] == null) cluster.portalConnections[direction][i] = new LongSeq(8); + if(cluster.portalConnections[otherDir][j] == null) cluster.portalConnections[otherDir][j] = new LongSeq(8); + + //TODO: can there be duplicate edges?? + cluster.portalConnections[direction][i].add(IntraEdge.get(otherDir, j, connectionCost)); + cluster.portalConnections[otherDir][j].add(IntraEdge.get(direction, i, connectionCost)); + } + } + } + } + } + } + } + + //distance heuristic: manhattan + private static float heuristic(int a, int b){ + int x = a % wwidth, x2 = b % wwidth, y = a / wwidth, y2 = b / wwidth; + return Math.abs(x - x2) + Math.abs(y - y2); + } + + private static int tcost(int team, PathCost cost, int tilePos){ + return cost.getCost(team, pathfinder.tiles[tilePos]); + } + + private static float tileCost(int team, PathCost type, int a, int b){ + //currently flat cost + return cost(team, type, b); + } + + /** @return -1 if no path was found */ + float innerAstar(int team, PathCost cost, int minX, int minY, int maxX, int maxY, int startPos, int goalPos, int goalX1, int goalY1, int goalX2, int goalY2){ + var frontier = innerFrontier; + var costs = innerCosts; + + frontier.clear(); + costs.clear(); + + //TODO: this can be faster and more memory efficient by making costs a NxN array... probably? + costs.put(startPos, 0); + frontier.add(startPos, 0); + + if(goalX2 < goalX1){ + int tmp = goalX1; + goalX1 = goalX2; + goalX2 = tmp; + } + + if(goalY2 < goalY1){ + int tmp = goalY1; + goalY1 = goalY2; + goalY2 = tmp; + } + + while(frontier.size > 0){ + int current = frontier.poll(); + + int cx = current % wwidth, cy = current / wwidth; + + //found the goal (it's in the portal rectangle) + if((cx >= goalX1 && cy >= goalY1 && cx <= goalX2 && cy <= goalY2) || current == goalPos){ + return costs.get(current); + } + + for(Point2 point : Geometry.d4){ + int newx = cx + point.x, newy = cy + point.y; + int next = newx + wwidth * newy; + + if(newx > maxX || newy > maxY || newx < minX || newy < minY || tcost(team, cost, next) == impassable) continue; + + float add = tileCost(team, cost, current, next); + + if(add < 0) continue; + + float newCost = costs.get(current) + add; + + if(newCost < costs.get(next, Float.POSITIVE_INFINITY)){ + costs.put(next, newCost); + float priority = newCost + heuristic(next, goalPos); + frontier.add(next, priority); + } + } + } + + return -1f; + } + + int makeNodeIndex(int cx, int cy, int dir, int portal){ + //to make sure there's only one way to refer to each node, the direction must be 0 or 1 (referring to portals on the top or right edge) + + //direction can only be 2 if cluster X is 0 (left edge of map) + if(dir == 2 && cx != 0){ + dir = 0; + cx --; + } + + //direction can only be 3 if cluster Y is 0 (bottom edge of map) + if(dir == 3 && cy != 0){ + dir = 1; + cy --; + } + + return NodeIndex.get(cx + cy * cwidth, dir, portal); + } + + //uses A* to find the closest node index to specified coordinates + //this node is used in cluster A* + /** @return MAX_VALUE if no node is found */ + private int findClosestNode(int team, int pathCost, int tileX, int tileY){ + int cx = tileX / clusterSize, cy = tileY / clusterSize; + + if(cx < 0 || cy < 0 || cx >= cwidth || cy >= cheight){ + return Integer.MAX_VALUE; + } + + PathCost cost = idToCost(pathCost); + Cluster cluster = getCreateCluster(team, pathCost, cx, cy); + int minX = cx * clusterSize, minY = cy * clusterSize, maxX = Math.min(minX + clusterSize - 1, wwidth - 1), maxY = Math.min(minY + clusterSize - 1, wheight - 1); + + int bestPortalPair = Integer.MAX_VALUE; + float bestCost = Float.MAX_VALUE; + + //A* to every node, find the best one (I know there's a better algorithm for this, probably dijkstra) + for(int dir = 0; dir < 4; dir++){ + var portals = cluster.portals[dir]; + if(portals == null) continue; + + for(int j = 0; j < portals.size; j++){ + + int + other = portals.items[j], + otherFrom = Point2.x(other), otherTo = Point2.y(other), + otherAverage = (otherFrom + otherTo) / 2, + ox = cx * clusterSize + offsets[dir * 2] * (clusterSize - 1), + oy = cy * clusterSize + offsets[dir * 2 + 1] * (clusterSize - 1), + otherX = (moveDirs[dir * 2] * otherAverage + ox), + otherY = (moveDirs[dir * 2 + 1] * otherAverage + oy); + + float connectionCost = innerAstar( + team, cost, + minX, minY, maxX, maxY, + tileX + tileY * wwidth, + otherX + otherY * wwidth, + (moveDirs[dir * 2] * otherFrom + ox), + (moveDirs[dir * 2 + 1] * otherFrom + oy), + (moveDirs[dir * 2] * otherTo + ox), + (moveDirs[dir * 2 + 1] * otherTo + oy) + ); + + //better cost found, update and return + if(connectionCost != -1f && connectionCost < bestCost){ + bestPortalPair = Point2.pack(dir, j); + bestCost = connectionCost; + } + } + } + + if(bestPortalPair != Integer.MAX_VALUE){ + return makeNodeIndex(cx, cy, Point2.x(bestPortalPair), Point2.y(bestPortalPair)); + } + + + return Integer.MAX_VALUE; + } + + //distance heuristic: manhattan + private float clusterNodeHeuristic(int team, int pathCost, int nodeA, int nodeB){ + int + clusterA = NodeIndex.cluster(nodeA), + dirA = NodeIndex.dir(nodeA), + portalA = NodeIndex.portal(nodeA), + clusterB = NodeIndex.cluster(nodeB), + dirB = NodeIndex.dir(nodeB), + portalB = NodeIndex.portal(nodeB), + rangeA = getCreateCluster(team, pathCost, clusterA).portals[dirA].items[portalA], + rangeB = getCreateCluster(team, pathCost, clusterB).portals[dirB].items[portalB]; + + float + averageA = (Point2.x(rangeA) + Point2.y(rangeA)) / 2f, + x1 = (moveDirs[dirA * 2] * averageA + (clusterA % cwidth) * clusterSize + offsets[dirA * 2] * (clusterSize - 1) + nextOffsets[dirA * 2] / 2f), + y1 = (moveDirs[dirA * 2 + 1] * averageA + (clusterA / cwidth) * clusterSize + offsets[dirA * 2 + 1] * (clusterSize - 1) + nextOffsets[dirA * 2 + 1] / 2f), + + averageB = (Point2.x(rangeB) + Point2.y(rangeB)) / 2f, + x2 = (moveDirs[dirB * 2] * averageB + (clusterB % cwidth) * clusterSize + offsets[dirB * 2] * (clusterSize - 1) + nextOffsets[dirB * 2] / 2f), + y2 = (moveDirs[dirB * 2 + 1] * averageB + (clusterB / cwidth) * clusterSize + offsets[dirB * 2 + 1] * (clusterSize - 1) + nextOffsets[dirB * 2 + 1] / 2f); + + return Math.abs(x1 - x2) + Math.abs(y1 - y2); + } + + @Nullable IntSeq clusterAstar(PathRequest request, int pathCost, int startNodeIndex, int endNodeIndex){ + var result = request.resultPath; + + if(startNodeIndex == endNodeIndex){ + result.clear(); + result.add(startNodeIndex); + return result; + } + + var team = request.team; + + if(request.costs == null) request.costs = new IntFloatMap(); + if(request.cameFrom == null) request.cameFrom = new IntIntMap(); + if(request.frontier == null) request.frontier = new PathfindQueue(); + + //note: these are NOT cleared, it is assumed that this function cleans up after itself at the end + //is this a good idea? don't know, might hammer the GC with unnecessary objects too + var costs = request.costs; + var cameFrom = request.cameFrom; + var frontier = request.frontier; + + cameFrom.put(startNodeIndex, startNodeIndex); + costs.put(startNodeIndex, 0); + frontier.add(startNodeIndex, 0); + + boolean foundEnd = false; + + while(frontier.size > 0){ + int current = frontier.poll(); + + if(current == endNodeIndex){ + foundEnd = true; + break; + } + + int cluster = NodeIndex.cluster(current), dir = NodeIndex.dir(current), portal = NodeIndex.portal(current); + int cx = cluster % cwidth, cy = cluster / cwidth; + + //invalid cluster index (TODO: how?) + if(cx >= cwidth || cy >= cheight || cx < 0 || cy < 0) continue; + + Cluster clust = getCreateCluster(team, pathCost, cluster); + LongSeq innerCons = clust.portalConnections[dir] == null || portal >= clust.portalConnections[dir].length ? null : clust.portalConnections[dir][portal]; + + //edges for the cluster the node is 'in' + if(innerCons != null){ + checkEdges(request, team, pathCost, current, endNodeIndex, cx, cy, innerCons); + } + + //edges that this node 'faces' from the other side + int nextCx = cx + Geometry.d4[dir].x, nextCy = cy + Geometry.d4[dir].y; + if(nextCx >= 0 && nextCy >= 0 && nextCx < cwidth && nextCy < cheight){ + Cluster nextCluster = getCreateCluster(team, pathCost, nextCx, nextCy); + int relativeDir = (dir + 2) % 4; + LongSeq outerCons = nextCluster.portalConnections[relativeDir] == null || nextCluster.portalConnections[relativeDir].length <= portal ? null : nextCluster.portalConnections[relativeDir][portal]; + if(outerCons != null){ + checkEdges(request, team, pathCost, current, endNodeIndex, nextCx, nextCy, outerCons); + } + } + } + + //null them out, so they get GC'ed later + //there's no reason to keep them around and waste memory, since this path may never be recalculated + request.costs = null; + request.cameFrom = null; + request.frontier = null; + + if(foundEnd){ + result.clear(); + + int cur = endNodeIndex; + while(cur != startNodeIndex){ + result.add(cur); + cur = cameFrom.get(cur); + } + + result.reverse(); + + return result; + } + return null; + } + + private void checkEdges(PathRequest request, int team, int pathCost, int current, int goal, int cx, int cy, LongSeq connections){ + for(int i = 0; i < connections.size; i++){ + long con = connections.items[i]; + float cost = IntraEdge.cost(con); + int otherDir = IntraEdge.dir(con), otherPortal = IntraEdge.portal(con); + int next = makeNodeIndex(cx, cy, otherDir, otherPortal); + + float newCost = request.costs.get(current) + cost; + + if(newCost < request.costs.get(next, Float.POSITIVE_INFINITY)){ + request.costs.put(next, newCost); + + request.frontier.add(next, newCost + clusterNodeHeuristic(team, pathCost, next, goal)); + request.cameFrom.put(next, current); + } + } + } + + private void updateFields(FieldCache cache, long nsToRun){ + var frontier = cache.frontier; + var fields = cache.fields; + var goalPos = cache.goalPos; + var pcost = cache.cost; + var team = cache.team; + + long start = Time.nanos(); + int counter = 0; + + //actually do the flow field part + while(frontier.size > 0){ + int tile = frontier.removeLast(); + int baseX = tile % wwidth, baseY = tile / wwidth; + int curWeightIndex = (baseX / clusterSize) + (baseY / clusterSize) * cwidth; + + //TODO: how can this be null??? serious problem! + int[] curWeights = fields.get(curWeightIndex); + if(curWeights == null) continue; + + int cost = curWeights[baseX % clusterSize + ((baseY % clusterSize) * clusterSize)]; + + if(cost != impassable){ + for(Point2 point : Geometry.d4){ + + int + dx = baseX + point.x, dy = baseY + point.y, + clx = dx / clusterSize, cly = dy / clusterSize; + + if(clx < 0 || cly < 0 || dx >= wwidth || dy >= wheight) continue; + + int nextWeightIndex = clx + cly * cwidth; + + int[] weights = nextWeightIndex == curWeightIndex ? curWeights : fields.get(nextWeightIndex); + + //out of bounds; not allowed to move this way because no weights were registered here + if(weights == null) continue; + + int newPos = tile + point.x + point.y * wwidth; + + //can't move back to the goal + if(newPos == goalPos) continue; + + if(dx - clx * clusterSize < 0 || dy - cly * clusterSize < 0) continue; + + int newPosArray = (dx - clx * clusterSize) + (dy - cly * clusterSize) * clusterSize; + + int otherCost = pcost.getCost(team, pathfinder.tiles[newPos]); + int oldCost = weights[newPosArray]; + + //a cost of 0 means uninitialized, OR it means we're at the goal position, but that's handled above + if((oldCost == 0 || oldCost > cost + otherCost) && otherCost != impassable){ + frontier.addFirst(newPos); + weights[newPosArray] = cost + otherCost; + } + } + } + + //every N iterations, check the time spent - this prevents extra calls to nano time, which itself is slow + if(nsToRun >= 0 && (counter++) >= updateStepInterval){ + counter = 0; + if(Time.timeSinceNanos(start) >= nsToRun){ + return; + } + } + } + } + + private void addFlowCluster(FieldCache cache, int cluster, boolean addingFrontier){ + addFlowCluster(cache, cluster % cwidth, cluster / cwidth, addingFrontier); + } + + private void addFlowCluster(FieldCache cache, int cx, int cy, boolean addingFrontier){ + //out of bounds + if(cx < 0 || cy < 0 || cx >= cwidth || cy >= cheight) return; + + var fields = cache.fields; + int key = cx + cy * cwidth; + + if(!fields.containsKey(key)){ + fields.put(key, new int[clusterSize * clusterSize]); + + if(addingFrontier){ + for(int dir = 0; dir < 4; dir++){ + int ox = cx + nextOffsets[dir * 2], oy = cy + nextOffsets[dir * 2 + 1]; + + if(ox < 0 || oy < 0 || ox >= cwidth || oy >= cheight) continue; + + var otherField = fields.get(ox + oy * cwidth); + + if(otherField == null) continue; + + int + relOffset = (dir + 2) % 4, + movex = moveDirs[relOffset * 2], + movey = moveDirs[relOffset * 2 + 1], + otherx1 = offsets[relOffset * 2] * (clusterSize - 1), + othery1 = offsets[relOffset * 2 + 1] * (clusterSize - 1); + + //scan the edge of the cluster + for(int i = 0; i < clusterSize; i++){ + int x = otherx1 + movex * i, y = othery1 + movey * i; + + //check to make sure it's not 0 (uninitialized flowfield data) + if(otherField[x + y * clusterSize] > 0){ + int worldX = x + ox * clusterSize, worldY = y + oy * clusterSize; + + //add the world-relative position to the frontier, so it recalculates + cache.frontier.addFirst(worldX + worldY * wwidth); + + if(showDebug){ + Core.app.post(() -> Fx.placeBlock.at(worldX *tilesize, worldY * tilesize, 1f)); + } + } + } + } + } + } + } + + private void initializePathRequest(PathRequest request, int team, int costId, int unitX, int unitY, int goalX, int goalY){ + PathCost pcost = idToCost(costId); + + int goalPos = (goalX + goalY * wwidth); + + int node = findClosestNode(team, costId, unitX, unitY); + int dest = findClosestNode(team, costId, goalX, goalY); + + if(dest == Integer.MAX_VALUE){ + request.notFound = true; + //no node found (TODO: invalid state??) + return; + } + + var nodePath = clusterAstar(request, costId, node, dest); + + //no result found, bail out. + if(nodePath == null){ + request.notFound = true; + return; + } + + FieldCache cache = fields.get(Pack.longInt(goalPos, costId)); + //if true, extra values are added on the sides of existing field cells that face new cells. + boolean addingFrontier = true; + + //create the cache if it doesn't exist, and initialize it + if(cache == null){ + cache = new FieldCache(pcost, costId, team, goalPos); + fields.put(cache.mapKey, cache); + FieldCache fcache = cache; + //register field in main thread for iteration + Core.app.post(() -> fieldList.add(fcache)); + cache.frontier.addFirst(goalPos); + addingFrontier = false; //when it's a new field, there is no need to add to the frontier to merge the flowfield + } + + if(nodePath != null){ + int cx = unitX / clusterSize, cy = unitY / clusterSize; + + addFlowCluster(cache, cx, cy, addingFrontier); + + for(int i = -1; i < nodePath.size; i++){ + int + current = i == -1 ? node : nodePath.items[i], + cluster = NodeIndex.cluster(current), + dir = NodeIndex.dir(current), + dx = Geometry.d4[dir].x, + dy = Geometry.d4[dir].y, + ox = cluster % cwidth + dx, + oy = cluster / cwidth + dy; + + addFlowCluster(cache, cluster, addingFrontier); + + //store directional/flipped version of cluster + if(ox >= 0 && oy >= 0 && ox < cwidth && oy < cheight){ + int other = ox + oy * cwidth; + + addFlowCluster(cache, other, addingFrontier); + } + } + } + } + + private PathCost idToCost(int costId){ + return ControlPathfinder.costTypes.get(costId); } public static boolean isNearObstacle(Unit unit, int x1, int y1, int x2, int y2){ return raycast(unit.team().id, unit.type.pathCost, x1, y1, x2, y2); } + @Deprecated + public int nextTargetId(){ + return 0; + } + + @Deprecated + public boolean getPathPosition(Unit unit, int pathId, Vec2 destination, Vec2 out){ + return getPathPosition(unit, pathId, destination, out, null); + } + + @Deprecated + public boolean getPathPosition(Unit unit, int pathId, Vec2 destination, Vec2 out, @Nullable boolean[] noResultFound){ + return getPathPosition(unit, destination, destination, out, noResultFound); + } + + public boolean getPathPosition(Unit unit, Vec2 destination, Vec2 out, @Nullable boolean[] noResultFound){ + return getPathPosition(unit, destination, destination, out, noResultFound); + } + + public boolean getPathPosition(Unit unit, Vec2 destination, Vec2 mainDestination, Vec2 out, @Nullable boolean[] noResultFound){ + int costId = unit.type.pathCostId; + PathCost cost = idToCost(costId); + + int + team = unit.team.id, + tileX = unit.tileX(), + tileY = unit.tileY(), + packedPos = world.packArray(tileX, tileY), + destX = World.toTile(mainDestination.x), + destY = World.toTile(mainDestination.y), + actualDestX = World.toTile(destination.x), + actualDestY = World.toTile(destination.y), + actualDestPos = actualDestX + actualDestY * wwidth, + destPos = destX + destY * wwidth; + + PathRequest request = unitRequests.get(unit); + + unit.hitboxTile(Tmp.r3); + //tile rect size has tile size factored in, since the ray cannot have thickness + float tileRectSize = tilesize + Tmp.r3.height; + + int lastRaycastTile = request == null || world.tileChanges != request.lastWorldUpdate ? -1 : request.lastRaycastTile; + boolean raycastResult = request != null && request.lastRaycastResult; + + //cache raycast results to run every time the world updates, and every tile the unit crosses + if(lastRaycastTile != packedPos){ + //near the destination, standard raycasting tends to break down, so use the more permissive 'near' variant that doesn't take into account edges of walls + raycastResult = unit.within(destination, tilesize * 2.5f) ? + !raycastRect(unit.x, unit.y, destination.x, destination.y, team, cost, tileX, tileY, actualDestX, actualDestY, tileRectSize) : + !raycast(team, cost, tileX, tileY, actualDestX, actualDestY); + + if(request != null){ + request.lastRaycastTile = packedPos; + request.lastRaycastResult = raycastResult; + request.lastWorldUpdate = world.tileChanges; + } + } + + //if the destination can be trivially reached in a straight line, do that. + if(raycastResult){ + out.set(destination); + return true; + } + + boolean any = false; + + long fieldKey = Pack.longInt(destPos, costId); + + //use existing request if it exists. + if(request != null && request.destination == destPos){ + request.lastUpdateId = state.updateId; + + Tile tileOn = unit.tileOn(), initialTileOn = tileOn; + //TODO: should fields be accessible from this thread? + FieldCache fieldCache = fields.get(fieldKey); + + if(fieldCache != null && tileOn != null){ + FieldCache old = request.oldCache; + FieldCache targetCache = old != null ? old : fieldCache; + boolean requeue = old == null; + //nullify the old field to be GCed, as it cannot be relevant anymore (this path is complete) + if(fieldCache.frontier.isEmpty() && old != null){ + request.oldCache = null; + } + + fieldCache.lastUpdateId = state.updateId; + int maxIterations = 30; //TODO higher/lower number? is this still too slow? + int i = 0; + boolean recalc = false; + + if(packedPos == actualDestPos){ + request.lastTargetTile = tileOn; + //TODO last pos can change if the flowfield changes. + }else if(initialTileOn.pos() != request.lastTile || request.lastTargetTile == null){ + boolean anyNearSolid = false; + + //find the next tile until one near a solid block is discovered + while(i ++ < maxIterations){ + int value = getCost(targetCache, tileOn.x, tileOn.y, requeue); + + Tile current = null; + int minCost = 0; + for(int dir = 0; dir < 4; dir ++){ + Point2 point = Geometry.d4[dir]; + int dx = tileOn.x + point.x, dy = tileOn.y + point.y; + + Tile other = world.tile(dx, dy); + + if(other == null) continue; + + int packed = world.packArray(dx, dy); + int otherCost = getCost(targetCache, dx, dy, requeue), relCost = otherCost - value; + + if(relCost > 2 || otherCost <= 0){ + anyNearSolid = true; + } + + if((value == 0 || otherCost < value) && otherCost != impassable && ((otherCost != 0 && (current == null || otherCost < minCost)) || packed == actualDestPos || packed == destPos) && passable(unit.team.id, cost, packed)){ + current = other; + minCost = otherCost; + //no need to keep searching. + if(packed == destPos || packed == actualDestPos){ + break; + } + } + } + + //TODO raycast spam = extremely slow + //...flowfield integration spam is also really slow. + if(!(current == null || (costId == costIdGround && current.dangerous() && !tileOn.dangerous()))){ + + //when anyNearSolid is false, no solid tiles have been encountered anywhere so far, so raycasting is a waste of time + if(anyNearSolid && !(tileOn.dangerous() && costId == costIdGround) && raycastRect(unit.x, unit.y, current.x * tilesize, current.y * tilesize, team, cost, initialTileOn.x, initialTileOn.y, current.x, current.y, tileRectSize)){ + + //TODO this may be a mistake + if(tileOn == initialTileOn){ + recalc = true; + any = true; + } + + break; + }else{ + tileOn = current; + any = true; + + int a = current.array(); + + if(a == destPos || a == actualDestPos){ + break; + } + } + + }else{ + break; + } + } + + request.lastTargetTile = any ? tileOn : null; + if(showDebug && tileOn != null && Core.graphics.getFrameId() % 30 == 0){ + Fx.placeBlock.at(tileOn.worldx(), tileOn.worldy(), 1); + } + } + + if(request.lastTargetTile != null){ + if(showDebug && Core.graphics.getFrameId() % 30 == 0){ + Fx.breakBlock.at(request.lastTargetTile.worldx(), request.lastTargetTile.worldy(), 1); + } + out.set(request.lastTargetTile); + request.lastTile = recalc ? -1 : initialTileOn.pos(); + return true; + } + } + }else if(request == null){ + + //queue new request. + unitRequests.put(unit, request = new PathRequest(unit, team, costId, destPos)); + + PathRequest f = request; + + //on the pathfinding thread: initialize the request + queue.post(() -> { + threadPathRequests.add(f); + recalculatePath(f); + }); + + out.set(destination); + + return true; + } + + if(noResultFound != null){ + noResultFound[0] = request.notFound; + } + return false; + } + + private void recalculatePath(PathRequest request){ + initializePathRequest(request, request.team, request.costId, request.unit.tileX(), request.unit.tileY(), request.destination % wwidth, request.destination / wwidth); + } + + private int getCost(FieldCache cache, int x, int y, boolean requeue){ + try{ + int[] field = cache.fields.get(x / clusterSize + (y / clusterSize) * cwidth); + if(field == null){ + if(!requeue) return 0; + //request a new flow cluster if one wasn't found; this may be a spammed a bit, but the function will return early once it's created the first time + queue.post(() -> addFlowCluster(cache, x / clusterSize, y / clusterSize, true)); + return 0; + } + return field[(x % clusterSize) + (y % clusterSize) * clusterSize]; + }catch(ArrayIndexOutOfBoundsException e){ + //TODO: this crashes because the fields are being added while they're accessed. really bad. needs a long-term solution and some way to cache the map lookup results. + //using an array instead of a map would be nice, but that can mean something like 2500 entries in a sparse array, which is pretty terrible... + return 0; + } + } + private static boolean raycast(int team, PathCost type, int x1, int y1, int x2, int y2){ int ww = wwidth, wh = wheight; int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; @@ -360,17 +1300,6 @@ public class ControlPathfinder{ if(avoid(team, type, x + y * wwidth)) return true; if(x == x2 && y == y2) return false; - //TODO no diagonals???? is this a good idea? - /* - //no diagonal ver - if(2 * err + dy > dx - 2 * err){ - err -= dy; - x += sx; - }else{ - err += dx; - y += sy; - }*/ - //diagonal ver e2 = 2 * err; if(e2 > -dy){ @@ -382,30 +1311,6 @@ public class ControlPathfinder{ err += dx; y += sy; } - - } - - return true; - } - - private static boolean permissiveRaycast(int team, PathCost type, int x1, int y1, int x2, int y2){ - int ww = wwidth, wh = wheight; - int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; - int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; - int err = dx - dy; - - while(x >= 0 && y >= 0 && x < ww && y < wh){ - if(solid(team, type, x + y * wwidth, true)) return true; - if(x == x2 && y == y2) return false; - - //no diagonals - if(2 * err + dy > dx - 2 * err){ - err -= dy; - x += sx; - }else{ - err += dx; - y += sy; - } } return true; @@ -435,22 +1340,95 @@ public class ControlPathfinder{ 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); + /** @return 0 if nothing was hit, otherwise the packed coordinates. This is an internal function and will likely be moved - do not use!*/ + public static int raycastFastAvoid(int team, PathCost type, int x1, int y1, int x2, int y2){ + int ww = world.width(), wh = world.height(); + int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; + int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; + int err = dx - dy; + + while(x >= 0 && y >= 0 && x < ww && y < wh){ + if(avoid(team, type, x + y * wwidth)) return Point2.pack(x, y); + if(x == x2 && y == y2) return 0; + + //no diagonals + if(2 * err + dy > dx - 2 * err){ + err -= dy; + x += sx; + }else{ + err += dx; + y += sy; + } + } + + return 0; } - private Tile tile(int pos){ - return world.tiles.geti(pos); + private static boolean overlap(int team, PathCost type, int x, int y, float startX, float startY, float endX, float endY, float rectSize){ + if(x < 0 || y < 0 || x >= wwidth || y >= wheight) return false; + if(!nearPassable(team, type, x + y * wwidth)){ + return Intersector.intersectSegmentRectangleFast(startX, startY, endX, endY, x * tilesize - rectSize/2f, y * tilesize - rectSize/2f, rectSize, rectSize); + } + return false; } - //distance heuristic: manhattan - private static float heuristic(int a, int b){ - int x = a % wwidth, x2 = b % wwidth, y = a / wwidth, y2 = b / wwidth; - return Math.abs(x - x2) + Math.abs(y - y2); + private static boolean raycastRect(float startX, float startY, float endX, float endY, int team, PathCost type, int x1, int y1, int x2, int y2, float rectSize){ + int ww = wwidth, wh = wheight; + int x = x1, dx = Math.abs(x2 - x), sx = x < x2 ? 1 : -1; + int y = y1, dy = Math.abs(y2 - y), sy = y < y2 ? 1 : -1; + int e2, err = dx - dy; + + while(x >= 0 && y >= 0 && x < ww && y < wh){ + if( + !nearPassable(team, type, x + y * wwidth) || + overlap(team, type, x + 1, y, startX, startY, endX, endY, rectSize) || + overlap(team, type, x - 1, y, startX, startY, endX, endY, rectSize) || + overlap(team, type, x, y + 1, startX, startY, endX, endY, rectSize) || + overlap(team, type, x, y - 1, startX, startY, endX, endY, rectSize) + ) return true; + + if(x == x2 && y == y2) return false; + + //diagonal ver + e2 = 2 * err; + if(e2 > -dy){ + err -= dy; + x += sx; + } + + if(e2 < dx){ + err += dx; + y += sy; + } + } + + return true; } - private static int tcost(int team, PathCost cost, int tilePos){ - return cost.getCost(team, pathfinder.tiles[tilePos]); + private static boolean avoid(int team, PathCost type, int tilePos){ + int cost = cost(team, type, tilePos); + return cost == impassable || cost >= 2; + } + + private static boolean passable(int team, PathCost cost, int pos){ + int amount = cost.getCost(team, pathfinder.tiles[pos]); + return amount != impassable && amount < solidCap; + } + + private static boolean nearPassable(int team, PathCost cost, int pos){ + int amount = cost.getCost(team, pathfinder.tiles[pos]); + //for standard units: never consider deep water (cost = 6000) passable + //for leg units: consider it passable + return amount != impassable && amount < (cost == costLegs ? solidCap : 50); + } + + private static boolean solid(int team, PathCost type, int x, int y){ + return x < 0 || y < 0 || x >= wwidth || y >= wheight || solid(team, type, x + y * wwidth, true); + } + + private static boolean solid(int team, PathCost type, int tilePos, boolean checkWall){ + int cost = cost(team, type, tilePos); + return cost == impassable || cost >= solidCap; } private static int cost(int team, PathCost cost, int tilePos){ @@ -463,246 +1441,162 @@ public class ControlPathfinder{ return cost.getCost(team, pathfinder.tiles[tilePos]); } - private static boolean avoid(int team, PathCost type, int tilePos){ - int cost = cost(team, type, tilePos); - return cost == impassable || cost >= 2; - } + private void clusterChanged(int team, int pathCost, int cx, int cy){ + int index = cx + cy * cwidth; - private static boolean solid(int team, PathCost type, int tilePos, boolean checkWall){ - int cost = cost(team, type, tilePos); - return cost == impassable || (checkWall && cost >= 6000); - } - - private static float tileCost(int team, PathCost type, int a, int b){ - //currently flat cost - return cost(team, type, b); - } - - static class PathfindThread extends Thread{ - /** handles task scheduling on the update thread. */ - TaskQueue queue = new TaskQueue(); - /** pathfinding thread access only! */ - Seq requests = new Seq<>(); - /** volatile for access across threads */ - volatile int requestSize; - - public PathfindThread(String name){ - super(name); + for(var req : threadPathRequests){ + long mapKey = Pack.longInt(req.destination, pathCost); + var field = fields.get(mapKey); + if((field != null && field.fields.containsKey(index)) || req.notFound){ + invalidRequests.add(req); + } } - @Override - public void run(){ - while(true){ - //stop on client, no updating - if(net.client()) return; - try{ - if(state.isPlaying()){ - queue.run(); - requestSize = requests.size; + } - //total update time no longer than maxUpdate - for(var req : requests){ - //TODO this is flawed with many paths - req.update(maxUpdate / requests.size); + private void updateClustersComplete(int clusterIndex){ + for(int team = 0; team < clusters.length; team++){ + var dim1 = clusters[team]; + if(dim1 != null){ + for(int pathCost = 0; pathCost < dim1.length; pathCost++){ + var dim2 = dim1[pathCost]; + if(dim2 != null){ + var cluster = dim2[clusterIndex]; + if(cluster != null){ + updateCluster(team, pathCost, clusterIndex % cwidth, clusterIndex / cwidth); + clusterChanged(team, pathCost, clusterIndex % cwidth, clusterIndex / cwidth); + } + } + } + } + } + } + + private void updateClustersInner(int clusterIndex){ + for(int team = 0; team < clusters.length; team++){ + var dim1 = clusters[team]; + if(dim1 != null){ + for(int pathCost = 0; pathCost < dim1.length; pathCost++){ + var dim2 = dim1[pathCost]; + if(dim2 != null){ + var cluster = dim2[clusterIndex]; + if(cluster != null){ + updateInnerEdges(team, pathCost, clusterIndex % cwidth, clusterIndex / cwidth, cluster); + clusterChanged(team, pathCost, clusterIndex % cwidth, clusterIndex / cwidth); + } + } + } + } + } + } + + @Override + public void run(){ + long lastInvalidCheck = Time.millis() + invalidateCheckInterval; + + while(true){ + if(net.client()) return; + try{ + + + if(state.isPlaying()){ + queue.run(); + + clustersToUpdate.each(cluster -> { + updateClustersComplete(cluster); + + //just in case: don't redundantly update inner clusters after you've recalculated it entirely + clustersToInnerUpdate.remove(cluster); + }); + + clustersToInnerUpdate.each(cluster -> { + //only recompute the inner links + updateClustersInner(cluster); + }); + + clustersToInnerUpdate.clear(); + clustersToUpdate.clear(); + + //periodically check for invalidated paths + if(Time.timeSinceMillis(lastInvalidCheck) > invalidateCheckInterval){ + lastInvalidCheck = Time.millis(); + + var it = invalidRequests.iterator(); + while(it.hasNext()){ + var request = it.next(); + + //invalid request, ignore it + if(request.invalidated){ + it.remove(); + continue; + } + + long mapKey = Pack.longInt(request.destination, request.costId); + + var field = fields.get(mapKey); + + if(field != null){ + //it's only worth recalculating a path when the current frontier has finished; otherwise the unit will be following something incomplete. + if(field.frontier.isEmpty()){ + + //remove the field, to be recalculated next update one recalculatePath is processed + fields.remove(field.mapKey); + Core.app.post(() -> fieldList.remove(field)); + + //once the field is invalidated, make sure that all the requests that have it stored in their 'old' field, so units don't stutter during recalculations + for(var otherRequest : threadPathRequests){ + if(otherRequest.destination == request.destination){ + otherRequest.oldCache = field; + } + } + + //the recalculation is done next update, so multiple path requests in the same batch don't end up removing and recalculating the field multiple times. + queue.post(() -> recalculatePath(request)); + //it has been processed. + it.remove(); + } + }else{ //there's no field, presumably because a previous request already invalidated it. + queue.post(() -> recalculatePath(request)); + it.remove(); + } } } - try{ - Thread.sleep(updateInterval); - }catch(InterruptedException e){ - //stop looping when interrupted externally - return; + //each update time (not total!) no longer than maxUpdate + for(FieldCache cache : fields.values()){ + updateFields(cache, maxUpdate); } - }catch(Throwable e){ - //do not crash the pathfinding thread - Log.err(e); } + + try{ + Thread.sleep(updateInterval); + }catch(InterruptedException e){ + //stop looping when interrupted externally + return; + } + }catch(Throwable e){ + e.printStackTrace(); } } } - static class PathRequest{ - final PathfindThread thread; + @Struct + static class IntraEdgeStruct{ + @StructField(8) + int dir; + @StructField(8) + int portal; - volatile boolean done = false; - volatile boolean foundEnd = false; - volatile Unit unit; - volatile PathCost cost; - volatile int team; - volatile int lastWorldUpdate; - volatile boolean forcedRecalc; + float cost; + } - final Vec2 lastPos = new Vec2(); - float stuckTimer = 0f; - - final Vec2 destination = new Vec2(); - final Vec2 lastDestination = new Vec2(); - - //TODO only access on main thread?? - volatile int pathIndex; - - int rayPathIndex = -1; - IntSeq result = new IntSeq(); - volatile float raycastTimer; - - PathfindQueue frontier = new PathfindQueue(); - //node index -> node it came from - IntIntMap cameFrom = new IntIntMap(); - //node index -> total cost - IntFloatMap costs = new IntFloatMap(); - - int start, goal; - - long lastUpdateId; - long lastTime; - long forceRecalcTime; - - volatile int lastId, curId; - - public PathRequest(PathfindThread thread){ - this.thread = thread; - } - - public void forceRecalculate(){ - //keep it at 3 times/sec - if(Time.timeSinceMillis(forceRecalcTime) < 1000 / 3) return; - forcedRecalc = true; - forceRecalcTime = Time.millis(); - } - - void update(long maxUpdateNs){ - if(curId != lastId){ - clear(true); - } - lastId = curId; - - //re-do everything when world updates, but keep the old path around - if(forcedRecalc || (Time.timeSinceMillis(lastTime) > 1000 * 3 && (worldUpdateId != lastWorldUpdate || !destination.epsilonEquals(lastDestination, 2f)))){ - lastTime = Time.millis(); - lastWorldUpdate = worldUpdateId; - forcedRecalc = false; - clear(false); - } - - if(done) return; - - long ns = Time.nanos(); - int counter = 0; - - while(frontier.size > 0){ - int current = frontier.poll(); - - if(current == goal){ - foundEnd = true; - break; - } - - int cx = current % wwidth, cy = current / wwidth; - - for(Point2 point : Geometry.d4){ - int newx = cx + point.x, newy = cy + point.y; - int next = newx + wwidth * newy; - - if(newx >= wwidth || newy >= wheight || newx < 0 || newy < 0) continue; - - //in fallback mode, enemy walls are passable - if(tcost(team, cost, next) == impassable) continue; - - float add = tileCost(team, cost, current, next); - float currentCost = costs.get(current); - - if(add < 0) continue; - - //the cost can include an impassable enemy wall, so cap the cost if so and add the base cost instead - //essentially this means that any path with enemy walls will only count the walls once, preventing strange behavior like avoiding based on wall count - float newCost = currentCost >= wallImpassableCap && add >= wallImpassableCap ? currentCost + add - wallImpassableCap : currentCost + add; - - //a cost of 0 means "not set" - if(!costs.containsKey(next) || newCost < costs.get(next)){ - costs.put(next, newCost); - float priority = newCost + heuristic(next, goal); - frontier.add(next, priority); - cameFrom.put(next, current); - } - } - - //only check every N iterations to prevent nanoTime spam (slow) - if((counter ++) >= 100){ - counter = 0; - - //exit when out of time. - if(Time.timeSinceNanos(ns) > maxUpdateNs){ - return; - } - } - } - - lastTime = Time.millis(); - raycastTimer = 9999f; - result.clear(); - - pathIndex = 0; - rayPathIndex = -1; - - if(foundEnd){ - int cur = goal; - while(cur != start){ - result.add(cur); - cur = cameFrom.get(cur); - } - - result.reverse(); - - smoothPath(); - } - - //don't keep this around in memory, better to dump entirely - using clear() keeps around massive arrays for paths - frontier = new PathfindQueue(); - cameFrom = new IntIntMap(); - costs = new IntFloatMap(); - - done = true; - } - - void smoothPath(){ - int len = result.size; - if(len <= 2) return; - - int output = 1, input = 2; - - while(input < len){ - if(cast(team, cost, result.get(output - 1), result.get(input))){ - result.swap(output, input - 1); - output++; - } - input++; - } - - result.swap(output, input - 1); - result.size = output + 1; - } - - void clear(boolean resetCurrent){ - done = false; - - frontier = new PathfindQueue(20); - cameFrom.clear(); - costs.clear(); - - start = world.packArray(unit.tileX(), unit.tileY()); - goal = world.packArray(World.toTile(destination.x), World.toTile(destination.y)); - - cameFrom.put(start, start); - costs.put(start, 0); - - frontier.add(start, 0); - - foundEnd = false; - lastDestination.set(destination); - - if(resetCurrent){ - result.clear(); - } - } + @Struct + static class NodeIndexStruct{ + @StructField(22) + int cluster; + @StructField(2) + int dir; + @StructField(8) + int portal; } } diff --git a/core/src/mindustry/ai/RtsAI.java b/core/src/mindustry/ai/RtsAI.java index 6b37777c29..16fcf3ec7a 100644 --- a/core/src/mindustry/ai/RtsAI.java +++ b/core/src/mindustry/ai/RtsAI.java @@ -19,6 +19,7 @@ import mindustry.logic.*; import mindustry.ui.*; import mindustry.world.*; import mindustry.world.blocks.defense.turrets.BaseTurret.*; +import mindustry.world.blocks.defense.turrets.*; import mindustry.world.blocks.storage.*; import mindustry.world.blocks.storage.CoreBlock.*; import mindustry.world.meta.*; @@ -77,6 +78,7 @@ public class RtsAI{ } public void update(){ + if(timer.get(timeUpdate, 60f * 2f)){ assignSquads(); checkBuilding(); @@ -110,7 +112,8 @@ public class RtsAI{ for(var unit : data.units){ if(used.add(unit.id) && unit.isCommandable() && !unit.command().hasCommand() && !unit.command().isAttacking()){ squad.clear(); - data.tree().intersect(unit.x - squadRadius/2f, unit.y - squadRadius/2f, squadRadius, squadRadius, squad); + float rad = squadRadius + unit.hitSize*1.5f; + data.tree().intersect(unit.x - rad/2f, unit.y - rad/2f, rad, rad, squad); squad.truncate(data.team.rules().rtsMaxSquad); @@ -244,7 +247,7 @@ public class RtsAI{ } } - var build = anyDefend ? null : findTarget(ax, ay, units.size, dps, health, units.first().flag == 0); + var build = anyDefend ? null : findTarget(ax, ay, units.size, dps, health, units.first().flag == 0, units.first().isFlying()); if(build != null || anyDefend){ for(var unit : units){ @@ -267,7 +270,7 @@ public class RtsAI{ return anyDefend; } - @Nullable Building findTarget(float x, float y, int total, float dps, float health, boolean checkWeight){ + @Nullable Building findTarget(float x, float y, int total, float dps, float health, boolean checkWeight, boolean air){ if(total < data.team.rules().rtsMinSquad) return null; //flag priority? @@ -289,7 +292,7 @@ public class RtsAI{ targets.truncate(maxTargetsChecked); for(var target : targets){ - weights.put(target, estimateStats(x, y, target.x, target.y, dps, health)); + weights.put(target, estimateStats(x, y, target.x, target.y, dps, health, air)); } var result = targets.min( @@ -311,12 +314,12 @@ public class RtsAI{ } //TODO extremely slow especially with many squads. - float estimateStats(float fromX, float fromY, float x, float y, float selfDps, float selfHealth){ + float estimateStats(float fromX, float fromY, float x, float y, float selfDps, float selfHealth, boolean air){ float[] health = {0f}, dps = {0f}; float extraRadius = 50f; for(var turret : Vars.indexer.getEnemy(data.team, BlockFlag.turret)){ - if(turret instanceof BaseTurretBuild t && Intersector.distanceSegmentPoint(fromX, fromY, x, y, t.x, t.y) <= t.range() + extraRadius){ + if(turret instanceof BaseTurretBuild t && turret.block instanceof Turret tb && ((tb.targetAir && air) || (tb.targetGround && !air)) && Intersector.distanceSegmentPoint(fromX, fromY, x, y, t.x, t.y) <= t.range() + extraRadius){ health[0] += t.health; dps[0] += t.estimateDps(); } diff --git a/core/src/mindustry/ai/UnitGroup.java b/core/src/mindustry/ai/UnitGroup.java index 2721c07d55..8973c3e2fb 100644 --- a/core/src/mindustry/ai/UnitGroup.java +++ b/core/src/mindustry/ai/UnitGroup.java @@ -12,30 +12,12 @@ import mindustry.async.*; import mindustry.content.*; import mindustry.core.*; import mindustry.gen.*; -import mindustry.world.blocks.environment.*; public class UnitGroup{ public Seq units = new Seq<>(); public int collisionLayer; public volatile float[] positions, originalPositions; public volatile boolean valid; - public long lastSpeedUpdate = -1; - public float minSpeed = 999999f; - - public void updateMinSpeed(){ - if(lastSpeedUpdate == Vars.state.updateId) return; - - lastSpeedUpdate = Vars.state.updateId; - minSpeed = 999999f; - - 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; @@ -58,8 +40,6 @@ public class UnitGroup{ 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 @@ -188,9 +168,9 @@ public class UnitGroup{ 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)); + int res = ControlPathfinder.raycastFastAvoid(unit.team.id, cost, World.toTile(dest.x), World.toTile(dest.y), World.toTile(x), World.toTile(y)); - //collision found, make th destination the point right before the collision + //collision found, make the destination the point right before the collision if(res != 0){ v1.set(Point2.x(res) * Vars.tilesize - dest.x, Point2.y(res) * Vars.tilesize - dest.y); v1.setLength(Math.max(v1.len() - Vars.tilesize - 4f, 0)); diff --git a/core/src/mindustry/ai/WaveSpawner.java b/core/src/mindustry/ai/WaveSpawner.java index 1fd4b73521..e23dbbff5e 100644 --- a/core/src/mindustry/ai/WaveSpawner.java +++ b/core/src/mindustry/ai/WaveSpawner.java @@ -152,14 +152,21 @@ public class WaveSpawner{ } private void eachFlyerSpawn(int filterPos, Floatc2 cons){ + boolean airUseSpawns = state.rules.airUseSpawns; + for(Tile tile : spawns){ if(filterPos != -1 && filterPos != tile.pos()) continue; - float angle = Angles.angle(world.width() / 2f, world.height() / 2f, tile.x, tile.y); - float trns = Math.max(world.width(), world.height()) * Mathf.sqrt2 * tilesize; - float spawnX = Mathf.clamp(world.width() * tilesize / 2f + Angles.trnsx(angle, trns), -margin, world.width() * tilesize + margin); - float spawnY = Mathf.clamp(world.height() * tilesize / 2f + Angles.trnsy(angle, trns), -margin, world.height() * tilesize + margin); - cons.get(spawnX, spawnY); + if(!airUseSpawns){ + + float angle = Angles.angle(world.width() / 2f, world.height() / 2f, tile.x, tile.y); + float trns = Math.max(world.width(), world.height()) * Mathf.sqrt2 * tilesize; + float spawnX = Mathf.clamp(world.width() * tilesize / 2f + Angles.trnsx(angle, trns), -margin, world.width() * tilesize + margin); + float spawnY = Mathf.clamp(world.height() * tilesize / 2f + Angles.trnsy(angle, trns), -margin, world.height() * tilesize + margin); + cons.get(spawnX, spawnY); + }else{ + cons.get(tile.worldx(), tile.worldy()); + } } if(state.rules.attackMode && state.teams.isActive(state.rules.waveTeam)){ diff --git a/core/src/mindustry/ai/types/BuilderAI.java b/core/src/mindustry/ai/types/BuilderAI.java index a8ea3118cf..ccbe64b7c6 100644 --- a/core/src/mindustry/ai/types/BuilderAI.java +++ b/core/src/mindustry/ai/types/BuilderAI.java @@ -47,6 +47,8 @@ public class BuilderAI extends AIController{ if(target != null && shouldShoot()){ unit.lookAt(target); + }else if(!unit.type.flying){ + unit.lookAt(unit.prefRotation()); } unit.updateBuilding = true; @@ -55,6 +57,8 @@ public class BuilderAI extends AIController{ following = assistFollowing; } + boolean moving = false; + if(following != null){ retreatTimer = 0f; //try to follow and mimic someone @@ -83,6 +87,7 @@ public class BuilderAI extends AIController{ var core = unit.closestCore(); if(core != null && !unit.within(core, retreatDst)){ moveTo(core, retreatDst); + moving = true; } } } @@ -114,7 +119,8 @@ public class BuilderAI extends AIController{ if(valid){ //move toward the plan - moveTo(req.tile(), unit.type.buildRange - 20f); + moveTo(req.tile(), unit.type.buildRange - 20f, 20f); + moving = !unit.within(req.tile(), unit.type.buildRange - 10f); }else{ //discard invalid plan unit.plans.removeFirst(); @@ -124,6 +130,7 @@ public class BuilderAI extends AIController{ if(assistFollowing != null){ moveTo(assistFollowing, assistFollowing.type.hitSize + unit.type.hitSize/2f + 60f); + moving = !unit.within(assistFollowing, assistFollowing.type.hitSize + unit.type.hitSize/2f + 65f); } //follow someone and help them build @@ -153,7 +160,7 @@ public class BuilderAI extends AIController{ float minDst = Float.MAX_VALUE; Player closest = null; for(var player : Groups.player){ - if(player.unit().canBuild() && !player.dead() && player.team() == unit.team){ + if(!player.dead() && player.isBuilder() && player.team() == unit.team){ float dst = player.dst2(unit); if(dst < minDst){ closest = player; @@ -186,6 +193,10 @@ public class BuilderAI extends AIController{ } } } + + if(!unit.type.flying){ + unit.updateBoosting(moving || unit.floorOn().isDuct || unit.floorOn().damageTaken > 0f); + } } protected boolean nearEnemy(int x, int y){ diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index 692aff98c8..763916539a 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -4,7 +4,6 @@ import arc.math.*; import arc.math.geom.*; import arc.struct.*; import arc.util.*; -import mindustry.*; import mindustry.ai.*; import mindustry.core.*; import mindustry.entities.*; @@ -35,7 +34,6 @@ public class CommandAI extends AIController{ protected boolean stopAtTarget, stopWhenInRange; protected Vec2 lastTargetPos; - protected int pathId = -1; protected boolean blockingUnit; protected float timeSpentBlocked; @@ -148,10 +146,6 @@ public class CommandAI extends AIController{ } } - 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; @@ -209,6 +203,11 @@ public class CommandAI extends AIController{ } } + boolean alwaysArrive = false; + + float engageRange = unit.type.range - 10f; + boolean withinAttackRange = attackTarget != null && unit.within(attackTarget, engageRange) && stance != UnitStance.ram; + if(targetPos != null){ boolean move = true, isFinalPoint = commandQueue.size == 0; vecOut.set(targetPos); @@ -225,6 +224,7 @@ public class CommandAI extends AIController{ } if(unit.isGrounded() && stance != UnitStance.ram){ + //TODO: blocking enable or disable? if(timer.get(timerTarget3, avoidInterval)){ Vec2 dstPos = Tmp.v1.trns(unit.rotation, unit.hitSize/2f); float max = unit.hitSize/2f; @@ -252,8 +252,18 @@ public class CommandAI extends AIController{ 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); + //if the unit is next to the target, stop asking the pathfinder how to get there, it's a waste of CPU + //TODO maybe stop moving too? + if(withinAttackRange){ + move = true; + noFound[0] = false; + vecOut.set(vecMovePos); + }else{ + move = controlPath.getPathPosition(unit, vecMovePos, targetPos, vecOut, noFound) && (!blockingUnit || timeSpentBlocked > maxBlockTime); + } + + //rare case where unit must be perfectly aligned (happens with 1-tile gaps) + alwaysArrive = vecOut.epsilonEquals(unit.tileX() * tilesize, unit.tileY() * tilesize); //we've reached the final point if the returned coordinate is equal to the supplied input isFinalPoint &= vecMovePos.epsilonEquals(vecOut, 4.1f); @@ -270,18 +280,16 @@ public class CommandAI extends AIController{ vecOut.set(vecMovePos); } - float engageRange = unit.type.range - 10f; - if(move){ if(unit.type.circleTarget && attackTarget != null){ target = attackTarget; circleAttack(80f); }else{ moveTo(vecOut, - attackTarget != null && unit.within(attackTarget, engageRange) && stance != UnitStance.ram ? engageRange : + withinAttackRange ? engageRange : unit.isGrounded() ? 0f : - attackTarget != null && stance != UnitStance.ram ? engageRange : - 0f, unit.isFlying() ? 40f : 100f, false, null, isFinalPoint); + attackTarget != null && stance != UnitStance.ram ? engageRange : 0f, + unit.isFlying() ? 40f : 100f, false, null, isFinalPoint || alwaysArrive); } } @@ -363,11 +371,6 @@ public class CommandAI extends AIController{ } } - @Override - public float prefSpeed(){ - return group == null ? super.prefSpeed() : Math.min(group.minSpeed, unit.speed()); - } - @Override public boolean shouldFire(){ return stance != UnitStance.holdFire; @@ -426,7 +429,6 @@ public class CommandAI extends AIController{ //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; } @@ -441,7 +443,6 @@ public class CommandAI extends AIController{ public void commandTarget(Teamc moveTo, boolean stopAtTarget){ attackTarget = moveTo; this.stopAtTarget = stopAtTarget; - pathId = Vars.controlPath.nextTargetId(); } /* diff --git a/core/src/mindustry/ai/types/FlyingFollowAI.java b/core/src/mindustry/ai/types/FlyingFollowAI.java index 111c9f632c..f870f136f3 100644 --- a/core/src/mindustry/ai/types/FlyingFollowAI.java +++ b/core/src/mindustry/ai/types/FlyingFollowAI.java @@ -39,7 +39,7 @@ public class FlyingFollowAI extends FlyingAI{ @Override public void updateVisuals(){ if(unit.isFlying()){ - unit.wobble(); + if(unit.type.wobble) unit.wobble(); if(!shouldFaceTarget()){ unit.lookAt(unit.prefRotation()); diff --git a/core/src/mindustry/ai/types/LogicAI.java b/core/src/mindustry/ai/types/LogicAI.java index d334f9dec1..f6be1965b3 100644 --- a/core/src/mindustry/ai/types/LogicAI.java +++ b/core/src/mindustry/ai/types/LogicAI.java @@ -3,7 +3,6 @@ package mindustry.ai.types; import arc.math.*; import arc.struct.*; import arc.util.*; -import mindustry.*; import mindustry.ai.*; import mindustry.entities.units.*; import mindustry.gen.*; @@ -41,8 +40,6 @@ public class LogicAI extends AIController{ public PosTeam posTarget = PosTeam.create(); private ObjectSet radars = new ObjectSet<>(); - private float lastMoveX, lastMoveY; - private int lastPathId = 0; // LogicAI state should not be reset after reading. @Override @@ -52,14 +49,6 @@ public class LogicAI extends AIController{ @Override public void updateMovement(){ - if(control == LUnitControl.pathfind){ - if(!Mathf.equal(moveX, lastMoveX, 0.1f) || !Mathf.equal(moveY, lastMoveY, 0.1f)){ - lastPathId ++; - lastMoveX = moveX; - lastMoveY = moveY; - } - } - if(targetTimer > 0f){ targetTimer -= Time.delta; }else{ @@ -86,7 +75,7 @@ public class LogicAI extends AIController{ if(unit.isFlying()){ moveTo(Tmp.v1.set(moveX, moveY), 1f, 30f); }else{ - if(Vars.controlPath.getPathPosition(unit, lastPathId, Tmp.v2.set(moveX, moveY), Tmp.v1, null)){ + if(controlPath.getPathPosition(unit, Tmp.v2.set(moveX, moveY), Tmp.v2, Tmp.v1, null)){ moveTo(Tmp.v1, 1f, Tmp.v2.epsilonEquals(Tmp.v1, 4.1f) ? 30f : 0f); } } diff --git a/core/src/mindustry/audio/SoundControl.java b/core/src/mindustry/audio/SoundControl.java index 980166227a..432a3c05b6 100644 --- a/core/src/mindustry/audio/SoundControl.java +++ b/core/src/mindustry/audio/SoundControl.java @@ -164,8 +164,11 @@ public class SoundControl{ //this just fades out the last track to make way for ingame music silence(); - //play music at intervals - if(Time.timeSinceMillis(lastPlayed) > 1000 * musicInterval / 60f){ + if(Core.settings.getBool("alwaysmusic")){ + if(current == null){ + playRandom(); + } + }else if(Time.timeSinceMillis(lastPlayed) > 1000 * musicInterval / 60f){ //chance to play it per interval if(Mathf.chance(musicChance)){ lastPlayed = Time.millis(); @@ -213,7 +216,9 @@ public class SoundControl{ /** Plays a random track.*/ public void playRandom(){ - if(isDark()){ + if(state.boss() != null){ + playOnce(bossMusic.random(lastRandomPlayed)); + }else if(isDark()){ playOnce(darkMusic.random(lastRandomPlayed)); }else{ playOnce(ambientMusic.random(lastRandomPlayed)); diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 42585ea28a..2c33c82630 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1181,6 +1181,7 @@ public class Blocks{ rotate = true; invertFlip = true; group = BlockGroup.liquids; + itemCapacity = 0; liquidCapacity = 50f; @@ -1231,6 +1232,7 @@ public class Blocks{ }}); researchCostMultiplier = 1.1f; + itemCapacity = 0; liquidCapacity = 40f; consumePower(2f); ambientSound = Sounds.extractLoop; @@ -2554,8 +2556,8 @@ public class Blocks{ fluxReactor = new VariableReactor("flux-reactor"){{ requirements(Category.power, with(Items.graphite, 300, Items.carbide, 200, Items.oxide, 100, Items.silicon, 600, Items.surgeAlloy, 300)); - powerProduction = 120f; - maxHeat = 140f; + powerProduction = 240f; + maxHeat = 150f; consumeLiquid(Liquids.cyanogen, 9f / 60f); liquidCapacity = 30f; @@ -2782,6 +2784,7 @@ public class Blocks{ ambientSoundVolume = 0.06f; hasLiquids = true; boostScale = 1f / 9f; + itemCapacity = 0; outputLiquid = new LiquidStack(Liquids.water, 30f / 60f); consumePower(0.5f); liquidCapacity = 60f; @@ -4050,7 +4053,7 @@ public class Blocks{ researchCostMultiplier = 0.05f; coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f)); - limitRange(); + limitRange(12f); }}; diffuse = new ItemTurret("diffuse"){{ @@ -4109,7 +4112,7 @@ public class Blocks{ rotateSpeed = 3f; coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f)); - limitRange(); + limitRange(25f); }}; sublimate = new ContinuousLiquidTurret("sublimate"){{ @@ -4153,6 +4156,7 @@ public class Blocks{ liquidConsumed = 10f / 60f; targetInterval = 5f; + newTargetInterval = 30f; targetUnderBlocks = false; float r = range = 130f; @@ -4243,6 +4247,8 @@ public class Blocks{ shootY = 7f; rotateSpeed = 1.4f; minWarmup = 0.85f; + + newTargetInterval = 40f; shootWarmupSpeed = 0.07f; coolant = consume(new ConsumeLiquid(Liquids.water, 30f / 60f)); @@ -4359,7 +4365,7 @@ public class Blocks{ coolant = consume(new ConsumeLiquid(Liquids.water, 20f / 60f)); coolantMultiplier = 2.5f; - limitRange(-5f); + limitRange(5f); }}; afflict = new PowerTurret("afflict"){{ @@ -4380,6 +4386,7 @@ public class Blocks{ trailInterval = 3f; trailParam = 4f; pierceCap = 2; + buildingDamageMultiplier = 0.5f; fragOnHit = false; speed = 5f; damage = 180f; @@ -4463,6 +4470,8 @@ public class Blocks{ heatRequirement = 10f; maxHeatEfficiency = 2f; + newTargetInterval = 40f; + inaccuracy = 1f; shake = 2f; shootY = 4; @@ -4685,6 +4694,8 @@ public class Blocks{ shootSound = Sounds.missileLaunch; minWarmup = 0.94f; + newTargetInterval = 40f; + unitSort = UnitSorts.strongest; shootWarmupSpeed = 0.03f; targetAir = false; targetUnderBlocks = false; @@ -5795,6 +5806,8 @@ public class Blocks{ heatOutput = 1000f; warmupRate = 1000f; regionRotated1 = 1; + itemCapacity = 0; + alwaysUnlocked = true; ambientSound = Sounds.none; }}; diff --git a/core/src/mindustry/content/Bullets.java b/core/src/mindustry/content/Bullets.java index 0a42bda43d..ea10110ae8 100644 --- a/core/src/mindustry/content/Bullets.java +++ b/core/src/mindustry/content/Bullets.java @@ -37,7 +37,9 @@ public class Bullets{ damageLightningGround = damageLightning.copy(); damageLightningGround.collidesAir = false; - fireball = new FireBulletType(1f, 4); + fireball = new FireBulletType(1f, 4){{ + hittable = false; + }}; spaceLiquid = new SpaceLiquidBulletType(){{ knockback = 0.7f; diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index 944bd87168..1e8579f4b7 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -2434,12 +2434,9 @@ public class Fx{ shieldBreak = new Effect(40, e -> { color(e.color); stroke(3f * e.fout()); - if(e.data instanceof Unit u){ - var ab = (ForceFieldAbility)Structs.find(u.abilities, a -> a instanceof ForceFieldAbility); - if(ab != null){ - Lines.poly(e.x, e.y, ab.sides, e.rotation + e.fin(), ab.rotation); - return; - } + if(e.data instanceof ForceFieldAbility ab){ + Lines.poly(e.x, e.y, ab.sides, e.rotation + e.fin(), ab.rotation); + return; } Lines.poly(e.x, e.y, 6, e.rotation + e.fin()); @@ -2584,7 +2581,7 @@ public class Fx{ if(!(e.data instanceof Vec2[] vec)) return; Draw.color(e.color); - Lines.stroke(1f); + Lines.stroke(2f); if(vec.length == 2){ Lines.line(vec[0].x, vec[0].y, vec[1].x, vec[1].y); @@ -2596,5 +2593,15 @@ public class Fx{ } Draw.reset(); + }), + debugRect = new Effect(90f, 1000000000000f, e -> { + if(!(e.data instanceof Rect rect)) return; + + Draw.color(e.color); + Lines.stroke(2f); + + Lines.rect(rect); + + Draw.reset(); }); } diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 089f5d4e39..ab6b1942f2 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -322,7 +322,7 @@ public class UnitTypes{ speed = 0.55f; hitSize = 8f; health = 120f; - buildSpeed = 0.8f; + buildSpeed = 0.35f; armor = 1f; abilities.add(new RepairFieldAbility(10f, 60f * 4, 60f)); @@ -354,7 +354,7 @@ public class UnitTypes{ speed = 0.7f; hitSize = 11f; health = 320f; - buildSpeed = 0.9f; + buildSpeed = 0.5f; armor = 4f; riseSpeed = 0.07f; @@ -408,7 +408,7 @@ public class UnitTypes{ mineTier = 3; boostMultiplier = 2f; health = 640f; - buildSpeed = 1.7f; + buildSpeed = 1.1f; canBoost = true; armor = 9f; mechLandShake = 2f; @@ -1318,6 +1318,7 @@ public class UnitTypes{ healPercent = 5.5f; collidesTeam = true; + reflectable = false; backColor = Pal.heal; trailColor = Pal.heal; }}; @@ -3894,7 +3895,7 @@ public class UnitTypes{ x = 43f * i / 4f; particles = parts; //visual only, the middle one does the actual suppressing - display = active = false; + active = false; }}); } diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index d39b338b9b..bc730c44c4 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -30,6 +30,7 @@ import mindustry.net.*; import mindustry.type.*; import mindustry.ui.dialogs.*; import mindustry.world.*; +import mindustry.world.blocks.storage.*; import mindustry.world.blocks.storage.CoreBlock.*; import java.io.*; @@ -191,43 +192,29 @@ public class Control implements ApplicationListener, Loadable{ Events.run(Trigger.newGame, () -> { var core = player.bestCore(); - if(core == null) return; camera.position.set(core); player.set(core); float coreDelay = 0f; - if(!settings.getBool("skipcoreanimation") && !state.rules.pvp){ - coreDelay = coreLandDuration; + coreDelay = core.landDuration(); //delay player respawn so animation can play. - player.deathTimer = Player.deathDelay - coreLandDuration; + player.deathTimer = Player.deathDelay - core.landDuration(); //TODO this sounds pretty bad due to conflict if(settings.getInt("musicvol") > 0){ - Musics.land.stop(); - Musics.land.play(); - Musics.land.setVolume(settings.getInt("musicvol") / 100f); + //TODO what to do if another core with different music is already playing? + Music music = core.landMusic(); + music.stop(); + music.play(); + music.setVolume(settings.getInt("musicvol") / 100f); } - app.post(() -> ui.hudfrag.showLand()); - renderer.showLanding(); - - Time.run(coreLandDuration, () -> { - Fx.launch.at(core); - Effect.shake(5f, 5f, core); - core.thrusterTime = 1f; - - if(state.isCampaign() && Vars.showSectorLandInfo && (state.rules.sector.preset == null || state.rules.sector.preset.showSectorLandInfo)){ - ui.announce("[accent]" + state.rules.sector.name() + "\n" + - (state.rules.sector.info.resources.any() ? "[lightgray]" + bundle.get("sectors.resources") + "[white] " + - state.rules.sector.info.resources.toString(" ", u -> u.emoji()) : ""), 5); - } - }); + renderer.showLanding(core); } if(state.isCampaign()){ - //don't run when hosting, that doesn't really work. if(state.rules.sector.planet.prebuildBase){ toBePlaced.clear(); diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 6af657678f..59f9b3cdcd 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -47,17 +47,7 @@ public class Logic implements ApplicationListener{ Events.on(BlockBuildEndEvent.class, event -> { if(!event.breaking){ - TeamData data = event.team.data(); - Iterator it = data.plans.iterator(); - var bounds = event.tile.block().bounds(event.tile.x, event.tile.y, Tmp.r1); - while(it.hasNext()){ - BlockPlan b = it.next(); - Block block = content.block(b.block); - if(bounds.overlaps(block.bounds(b.x, b.y, Tmp.r2))){ - b.removed = true; - it.remove(); - } - } + checkOverlappingPlans(event.team, event.tile); if(event.team == state.rules.defaultTeam){ state.stats.placedBlockCount.increment(event.tile.block()); @@ -65,6 +55,12 @@ public class Logic implements ApplicationListener{ } }); + Events.on(PayloadDropEvent.class, e -> { + if(e.build != null){ + checkOverlappingPlans(e.build.team, e.build.tile); + } + }); + //when loading a 'damaged' sector, propagate the damage Events.on(SaveLoadEvent.class, e -> { if(state.isCampaign()){ @@ -211,6 +207,20 @@ public class Logic implements ApplicationListener{ }); } + private void checkOverlappingPlans(Team team, Tile tile){ + TeamData data = team.data(); + Iterator it = data.plans.iterator(); + var bounds = tile.block().bounds(tile.x, tile.y, Tmp.r1); + while(it.hasNext()){ + BlockPlan b = it.next(); + Block block = content.block(b.block); + if(bounds.overlaps(block.bounds(b.x, b.y, Tmp.r2))){ + b.removed = true; + it.remove(); + } + } + } + /** Adds starting items, resets wave time, and sets state to playing. */ public void play(){ state.set(State.playing); @@ -251,6 +261,7 @@ public class Logic implements ApplicationListener{ Groups.clear(); Time.clear(); Events.fire(new ResetEvent()); + world.tiles = new Tiles(0, 0); //save settings on reset Core.settings.manualSave(); diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index 8171a89797..8d3ac0bd19 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -478,7 +478,7 @@ public class NetClient implements ApplicationListener{ Log.warn("Block ID mismatch at @: @ != @. Skipping block snapshot.", tile, tile.build.block.id, block); break; } - tile.build.readAll(Reads.get(input), tile.build.version()); + tile.build.readSync(Reads.get(input), tile.build.version()); } }catch(Exception e){ Log.err(e); @@ -622,21 +622,22 @@ public class NetClient implements ApplicationListener{ void sync(){ if(timer.get(0, playerSyncTime)){ - Unit unit = player.dead() ? Nulls.unit : player.unit(); - int uid = player.dead() ? -1 : unit.id; + boolean dead = player.dead(); + Unit unit = dead ? null : player.unit(); + int uid = dead || unit == null ? -1 : unit.id; Call.clientSnapshot( lastSent++, uid, - player.dead(), - player.dead() ? player.x : unit.x, player.dead() ? player.y : unit.y, - player.unit().aimX(), player.unit().aimY(), - unit.rotation, + dead, + dead ? player.x : unit.x, dead ? player.y : unit.y, + dead ? 0f : unit.aimX(), dead ? 0f : unit.aimY(), + unit == null ? 0f : unit.rotation, unit instanceof Mechc m ? m.baseRotation() : 0, - unit.vel.x, unit.vel.y, - player.unit().mineTile, + unit == null ? 0f : unit.vel.x, unit == null ? 0f : unit.vel.y, + dead ? null : unit.mineTile, player.boosting, player.shooting, ui.chatfrag.shown(), control.input.isBuilding, - player.isBuilder() ? player.unit().plans : null, + player.isBuilder() && unit != null ? unit.plans : null, Core.camera.position.x, Core.camera.position.y, Core.camera.width, Core.camera.height ); diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index 5de465d1be..3558877cbb 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -59,7 +59,7 @@ public class NetServer implements ApplicationListener{ count++; } } - return count; + return (float)count + Mathf.random(-0.1f, 0.1f); //if several have the same playercount pick random }); return re == null ? null : re.team; } @@ -98,7 +98,7 @@ public class NetServer implements ApplicationListener{ private boolean closing = false, pvpAutoPaused = true; private Interval timer = new Interval(10); private IntSet buildHealthChanged = new IntSet(); - + /** Current kick session. */ public @Nullable VoteSession currentlyKicking = null; /** Duration of a kick in seconds. */ @@ -117,6 +117,8 @@ public class NetServer implements ApplicationListener{ private DataOutputStream dataStream = new DataOutputStream(syncStream); /** Packet handlers for custom types of messages. */ private ObjectMap>> customPacketHandlers = new ObjectMap<>(); + /** Packet handlers for logic client data */ + private ObjectMap>> logicClientDataHandlers = new ObjectMap<>(); public NetServer(){ @@ -203,7 +205,7 @@ public class NetServer implements ApplicationListener{ info.id = packet.uuid; admins.save(); Call.infoMessage(con, "You are not whitelisted here."); - info("&lcDo &lywhitelist-add @&lc to whitelist the player &lb'@'", packet.uuid, packet.name); + info("&lcDo &lywhitelist add @&lc to whitelist the player &lb'@'", packet.uuid, packet.name); con.kick(KickReason.whitelist); return; } @@ -515,6 +517,10 @@ public class NetServer implements ApplicationListener{ return customPacketHandlers.get(type, Seq::new); } + public void addLogicDataHandler(String type, Cons2 handler){ + logicClientDataHandlers.get(type, Seq::new).add(handler); + } + public static void onDisconnect(Player player, String reason){ //singleplayer multiplayer weirdness if(player.con == null){ @@ -542,10 +548,10 @@ public class NetServer implements ApplicationListener{ @Remote(targets = Loc.client, variants = Variant.one) public static void requestDebugStatus(Player player){ int flags = - (player.con.hasDisconnected ? 1 : 0) | - (player.con.hasConnected ? 2 : 0) | - (player.isAdded() ? 4 : 0) | - (player.con.hasBegunConnecting ? 8 : 0); + (player.con.hasDisconnected ? 1 : 0) | + (player.con.hasConnected ? 2 : 0) | + (player.isAdded() ? 4 : 0) | + (player.con.hasBegunConnecting ? 8 : 0); Call.debugStatusClient(player.con, flags, player.con.lastReceivedClientSnapshot, player.con.snapshotsSent); Call.debugStatusClientUnreliable(player.con, flags, player.con.lastReceivedClientSnapshot, player.con.snapshotsSent); @@ -583,24 +589,39 @@ public class NetServer implements ApplicationListener{ serverPacketReliable(player, type, contents); } + @Remote(targets = Loc.client) + public static void clientLogicDataReliable(Player player, String channel, Object value){ + Seq> handlers = netServer.logicClientDataHandlers.get(channel); + if(handlers != null){ + for(Cons2 handler : handlers){ + handler.get(player, value); + } + } + } + + @Remote(targets = Loc.client, unreliable = true) + public static void clientLogicDataUnreliable(Player player, String channel, Object value){ + clientLogicDataReliable(player, channel, value); + } + private static boolean invalid(float f){ return Float.isInfinite(f) || Float.isNaN(f); } @Remote(targets = Loc.client, unreliable = true) public static void clientSnapshot( - Player player, - int snapshotID, - int unitID, - boolean dead, - float x, float y, - float pointerX, float pointerY, - float rotation, float baseRotation, - float xVelocity, float yVelocity, - Tile mining, - boolean boosting, boolean shooting, boolean chatting, boolean building, - @Nullable Queue plans, - float viewX, float viewY, float viewWidth, float viewHeight + Player player, + int snapshotID, + int unitID, + boolean dead, + float x, float y, + float pointerX, float pointerY, + float rotation, float baseRotation, + float xVelocity, float yVelocity, + Tile mining, + boolean boosting, boolean shooting, boolean chatting, boolean building, + @Nullable Queue plans, + float viewX, float viewY, float viewWidth, float viewHeight ){ NetConnection con = player.con; if(con == null || snapshotID < con.lastReceivedClientSnapshot) return; @@ -639,12 +660,11 @@ public class NetServer implements ApplicationListener{ player.shooting = shooting; player.boosting = boosting; - player.unit().controlWeapons(shooting, shooting); - player.unit().aim(pointerX, pointerY); + @Nullable var unit = player.unit(); if(player.isBuilder()){ - player.unit().clearBuilding(); - player.unit().updateBuilding(building); + unit.clearBuilding(); + unit.updateBuilding(building); if(plans != null){ for(BuildPlan req : plans){ @@ -673,12 +693,12 @@ public class NetServer implements ApplicationListener{ } } - player.unit().mineTile = mining; - con.rejectedRequests.clear(); if(!player.dead()){ - Unit unit = player.unit(); + unit.controlWeapons(shooting, shooting); + unit.aim(pointerX, pointerY); + unit.mineTile = mining; long elapsed = Math.min(Time.timeSinceMillis(con.lastReceivedClientTime), 1500); float maxSpeed = unit.speed(); @@ -893,7 +913,7 @@ public class NetServer implements ApplicationListener{ dataStream.writeInt(entity.pos()); dataStream.writeShort(entity.block.id); - entity.writeAll(Writes.get(dataStream)); + entity.writeSync(Writes.get(dataStream)); if(syncStream.size() > maxSnapshotSize){ dataStream.close(); @@ -1104,7 +1124,7 @@ public class NetServer implements ApplicationListener{ voted.put(admins.getInfo(player.uuid()).lastIP, d); Call.sendMessage(Strings.format("[lightgray]@[lightgray] has voted on kicking[orange] @[lightgray].[accent] (@/@)\n[lightgray]Type[orange] /vote [] to agree.", - player.name, target.name, votes, votesRequired())); + player.name, target.name, votes, votesRequired())); checkPass(); } diff --git a/core/src/mindustry/core/Platform.java b/core/src/mindustry/core/Platform.java index 73e65615be..e395d82412 100644 --- a/core/src/mindustry/core/Platform.java +++ b/core/src/mindustry/core/Platform.java @@ -1,6 +1,7 @@ package mindustry.core; import arc.*; +import arc.filedialogs.*; import arc.files.*; import arc.func.*; import arc.math.*; @@ -141,7 +142,9 @@ public interface Platform{ * @param title The title of the native dialog */ default void showFileChooser(boolean open, String title, String extension, Cons cons){ - if(OS.isLinux && !OS.isAndroid){ + if(OS.isWindows || OS.isMac){ + showNativeFileChooser(open, title, cons, extension); + }else if(OS.isLinux && !OS.isAndroid){ showZenity(open, title, new String[]{extension}, cons, () -> defaultFileDialog(open, title, extension, cons)); }else{ defaultFileDialog(open, title, extension, cons); @@ -223,6 +226,8 @@ public interface Platform{ default void showMultiFileChooser(Cons cons, String... extensions){ if(mobile){ showFileChooser(true, extensions[0], cons); + }else if(OS.isWindows || OS.isMac){ + showNativeFileChooser(true, "@open", cons, extensions); }else if(OS.isLinux && !OS.isAndroid){ showZenity(true, "@open", extensions, cons, () -> defaultMultiFileChooser(cons, extensions)); }else{ @@ -234,6 +239,68 @@ public interface Platform{ new FileChooser("@open", file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show(); } + default void showNativeFileChooser(boolean open, String title, Cons cons, String... shownExtensions){ + String formatted = (title.startsWith("@") ? Core.bundle.get(title.substring(1)) : title).replaceAll("\"", "'"); + + //this should never happen unless someone is being dumb with the parameters + String[] ext = shownExtensions == null || shownExtensions.length == 0 ? new String[]{""} : shownExtensions; + + //native file dialog + Threads.daemon(() -> { + try{ + FileDialogs.loadNatives(); + + String result; + String[] patterns = new String[ext.length]; + for(int i = 0; i < ext.length; i++){ + patterns[i] = "*." + ext[i]; + } + + //on MacOS, .msav is not properly recognized until I put garbage into the array? + if(patterns.length == 1 && OS.isMac && open){ + patterns = new String[]{"", "*." + ext[0]}; + } + + if(open){ + result = FileDialogs.openFileDialog(formatted, FileChooser.getLastDirectory().absolutePath(), patterns, "." + ext[0] + " files", false); + }else{ + result = FileDialogs.saveFileDialog(formatted, FileChooser.getLastDirectory().child("file." + ext[0]).absolutePath(), patterns, "." + ext[0] + " files"); + } + + if(result == null) return; + + if(result.length() > 1 && result.contains("\n")){ + result = result.split("\n")[0]; + } + + //cancelled selection, ignore result + if(result.isEmpty() || result.equals("\n")) return; + if(result.endsWith("\n")) result = result.substring(0, result.length() - 1); + if(result.contains("\n")) throw new IOException("invalid input: \"" + result + "\""); + + Fi file = Core.files.absolute(result); + Core.app.post(() -> { + FileChooser.setLastDirectory(file.isDirectory() ? file : file.parent()); + + if(!open){ + cons.get(file.parent().child(file.nameWithoutExtension() + "." + ext[0])); + }else{ + cons.get(file); + } + }); + }catch(Throwable error){ + Log.err("Failure to execute native file chooser", error); + Core.app.post(() -> { + if(ext.length > 1){ + defaultMultiFileChooser(cons, ext); + }else{ + defaultFileDialog(open, title, ext[0], cons); + } + }); + } + }); + } + /** Hide the app. Android only. */ default void hide(){ } diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index 7b7d1dc155..ae3ae07e38 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -2,6 +2,7 @@ package mindustry.core; import arc.*; import arc.assets.loaders.TextureLoader.*; +import arc.audio.*; import arc.files.*; import arc.graphics.*; import arc.graphics.Texture.*; @@ -13,7 +14,6 @@ import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; import mindustry.*; -import mindustry.content.*; import mindustry.game.EventType.*; import mindustry.gen.*; import mindustry.graphics.*; @@ -30,11 +30,6 @@ public class Renderer implements ApplicationListener{ /** These are global variables, for headless access. Cached. */ public static float laserOpacity = 0.5f, bridgeOpacity = 0.75f; - private static final float cloudScaling = 1700f, cfinScl = -2f, cfinOffset = 0.3f, calphaFinOffset = 0.25f; - private static final float[] cloudAlphas = {0, 0.5f, 1f, 0.1f, 0, 0f}; - private static final float cloudAlpha = 0.81f; - private static final Interp landInterp = Interp.pow3; - public final BlockRenderer blocks = new BlockRenderer(); public final FogRenderer fog = new FogRenderer(); public final MinimapRenderer minimap = new MinimapRenderer(); @@ -55,18 +50,15 @@ public class Renderer implements ApplicationListener{ public TextureRegion[] bubbles = new TextureRegion[16], splashes = new TextureRegion[12]; public TextureRegion[][] fluidFrames; + //currently landing core, null if there are no cores or it has finished landing. private @Nullable CoreBuild landCore; private @Nullable CoreBlock launchCoreType; private Color clearColor = new Color(0f, 0f, 0f, 1f); private float - //seed for cloud visuals, 0-1 - cloudSeed = 0f, //target camera scale that is lerp-ed to targetscale = Scl.scl(4), //current actual camera scale camerascale = targetscale, - //minimum camera zoom value for landing/launching; constant TODO make larger? - minZoomScl = Scl.scl(0.02f), //starts at coreLandDuration, ends at 0. if positive, core is landing. landTime, //timer for core landing particles @@ -113,10 +105,6 @@ public class Renderer implements ApplicationListener{ setupBloom(); } - Events.run(Trigger.newGame, () -> { - landCore = player.bestCore(); - }); - EnvRenderers.init(); for(int i = 0; i < bubbles.length; i++) bubbles[i] = atlas.find("bubble-" + i); for(int i = 0; i < splashes.length; i++) splashes[i] = atlas.find("splash-" + i); @@ -181,32 +169,26 @@ public class Renderer implements ApplicationListener{ enableEffects = settings.getBool("effects"); drawDisplays = !settings.getBool("hidedisplays"); drawLight = settings.getBool("drawlight", true); - pixelate = Core.settings.getBool("pixelate"); + pixelate = settings.getBool("pixelate"); + //don't bother drawing landing animation if core is null + if(landCore == null) landTime = 0f; if(landTime > 0){ - if(!state.isPaused()){ - CoreBuild build = landCore == null ? player.bestCore() : landCore; - if(build != null){ - build.updateLandParticles(); - } - } + if(!state.isPaused()) landCore.updateLaunching(); - if(!state.isPaused()){ - landTime -= Time.delta; - } - float fin = landTime / coreLandDuration; - if(!launching) fin = 1f - fin; - camerascale = landInterp.apply(minZoomScl, Scl.scl(4f), fin); weatherAlpha = 0f; + camerascale = landCore.zoomLaunching(); - //snap camera to cutscene core regardless of player input - if(landCore != null){ - camera.position.set(landCore); - } + if(!state.isPaused()) landTime -= Time.delta; }else{ weatherAlpha = Mathf.lerpDelta(weatherAlpha, 1f, 0.08f); } + if(landCore != null && landTime <= 0f){ + landCore.endLaunch(); + landCore = null; + } + camera.width = graphics.getWidth() / camerascale; camera.height = graphics.getHeight() / camerascale; @@ -304,7 +286,7 @@ public class Renderer implements ApplicationListener{ graphics.clear(clearColor); Draw.reset(); - if(Core.settings.getBool("animatedwater") || animateShields){ + if(settings.getBool("animatedwater") || animateShields){ effectBuffer.resize(graphics.getWidth(), graphics.getHeight()); } @@ -393,7 +375,10 @@ public class Renderer implements ApplicationListener{ Draw.draw(Layer.overlayUI, overlays::drawTop); if(state.rules.fog) Draw.draw(Layer.fogOfWar, fog::drawFog); - Draw.draw(Layer.space, this::drawLanding); + Draw.draw(Layer.space, () -> { + if(landCore == null || landTime <= 0f) return; + landCore.drawLanding(launching && launchCoreType != null ? launchCoreType : (CoreBlock)landCore.block); + }); Events.fire(Trigger.drawOver); blocks.drawBlocks(); @@ -481,61 +466,6 @@ public class Renderer implements ApplicationListener{ if(state.rules.customBackgroundCallback != null && customBackgrounds.containsKey(state.rules.customBackgroundCallback)){ customBackgrounds.get(state.rules.customBackgroundCallback).run(); } - - } - - void drawLanding(){ - CoreBuild build = landCore == null ? player.bestCore() : landCore; - var clouds = assets.get("sprites/clouds.png", Texture.class); - if(landTime > 0 && build != null){ - float fout = landTime / coreLandDuration; - if(launching) fout = 1f - fout; - float fin = 1f - fout; - float scl = Scl.scl(4f) / camerascale; - float pfin = Interp.pow3Out.apply(fin), pf = Interp.pow2In.apply(fout); - - //draw particles - Draw.color(Pal.lightTrail); - Angles.randLenVectors(1, pfin, 100, 800f * scl * pfin, (ax, ay, ffin, ffout) -> { - Lines.stroke(scl * ffin * pf * 3f); - Lines.lineAngle(build.x + ax, build.y + ay, Mathf.angle(ax, ay), (ffin * 20 + 1f) * scl); - }); - Draw.color(); - - CoreBlock block = launching && launchCoreType != null ? launchCoreType : (CoreBlock)build.block; - block.drawLanding(build, build.x, build.y); - - Draw.color(); - Draw.mixcol(Color.white, Interp.pow5In.apply(fout)); - - //accent tint indicating that the core was just constructed - if(launching){ - float f = Mathf.clamp(1f - fout * 12f); - if(f > 0.001f){ - Draw.mixcol(Pal.accent, f); - } - } - - //draw clouds - if(state.rules.cloudColor.a > 0.0001f){ - float scaling = cloudScaling; - float sscl = Math.max(1f + Mathf.clamp(fin + cfinOffset)* cfinScl, 0f) * camerascale; - - Tmp.tr1.set(clouds); - Tmp.tr1.set( - (camera.position.x - camera.width/2f * sscl) / scaling, - (camera.position.y - camera.height/2f * sscl) / scaling, - (camera.position.x + camera.width/2f * sscl) / scaling, - (camera.position.y + camera.height/2f * sscl) / scaling); - - Tmp.tr1.scroll(10f * cloudSeed, 10f * cloudSeed); - - Draw.alpha(Mathf.sample(cloudAlphas, fin + calphaFinOffset) * cloudAlpha); - Draw.mixcol(state.rules.cloudColor, state.rules.cloudColor.a); - Draw.rect(Tmp.tr1, camera.position.x, camera.position.y, camera.width, camera.height); - Draw.reset(); - } - } } public void scaleCamera(float amount){ @@ -580,6 +510,13 @@ public class Renderer implements ApplicationListener{ return landTime; } + public float getLandTimeIn(){ + if(landCore == null) return 0f; + float fin = landTime / landCore.landDuration(); + if(!launching) fin = 1f - fin; + return fin; + } + public float getLandPTimer(){ return landPTimer; } @@ -588,25 +525,42 @@ public class Renderer implements ApplicationListener{ this.landPTimer = landPTimer; } + @Deprecated public void showLanding(){ - launching = false; - camerascale = minZoomScl; - landTime = coreLandDuration; - cloudSeed = Mathf.random(1f); + var core = player.bestCore(); + if(core != null) showLanding(core); } + public void showLanding(CoreBuild landCore){ + this.landCore = landCore; + launching = false; + landTime = landCore.landDuration(); + + landCore.beginLaunch(null); + camerascale = landCore.zoomLaunching(); + } + + @Deprecated public void showLaunch(CoreBlock coreType){ - Vars.ui.hudfrag.showLaunch(); - Vars.control.input.config.hideConfig(); - Vars.control.input.inv.hide(); - launchCoreType = coreType; + var core = player.team().core(); + if(core != null) showLaunch(core, coreType); + } + + public void showLaunch(CoreBuild landCore, CoreBlock coreType){ + control.input.config.hideConfig(); + control.input.inv.hide(); + + this.landCore = landCore; launching = true; - landCore = player.team().core(); - cloudSeed = Mathf.random(1f); - landTime = coreLandDuration; - if(landCore != null){ - Fx.coreLaunchConstruct.at(landCore.x, landCore.y, coreType.size); - } + landTime = landCore.landDuration(); + launchCoreType = coreType; + + Music music = landCore.launchMusic(); + music.stop(); + music.play(); + music.setVolume(settings.getInt("musicvol") / 100f); + + landCore.beginLaunch(coreType); } public void takeMapScreenshot(){ @@ -648,7 +602,7 @@ public class Renderer implements ApplicationListener{ Fi file = screenshotDirectory.child("screenshot-" + Time.millis() + ".png"); PixmapIO.writePng(file, fullPixmap); fullPixmap.dispose(); - app.post(() -> ui.showInfoFade(Core.bundle.format("screenshot", file.toString()))); + app.post(() -> ui.showInfoFade(bundle.format("screenshot", file.toString()))); }); } diff --git a/core/src/mindustry/ctype/UnlockableContent.java b/core/src/mindustry/ctype/UnlockableContent.java index 434be84c4f..2692c28a94 100644 --- a/core/src/mindustry/ctype/UnlockableContent.java +++ b/core/src/mindustry/ctype/UnlockableContent.java @@ -147,6 +147,11 @@ public abstract class UnlockableContent extends MappableContent{ return Fonts.getUnicodeStr(name); } + public int emojiChar(){ + return Fonts.getUnicode(name); + } + + public boolean hasEmoji(){ return Fonts.hasUnicodeStr(name); } diff --git a/core/src/mindustry/editor/MapEditor.java b/core/src/mindustry/editor/MapEditor.java index 37a10cca89..38839e6108 100644 --- a/core/src/mindustry/editor/MapEditor.java +++ b/core/src/mindustry/editor/MapEditor.java @@ -74,7 +74,7 @@ public class MapEditor{ for(int i = 0; i < tiles.width * tiles.height; i++){ Tile tile = tiles.geti(i); var build = tile.build; - if(build != null){ + if(build != null && tile.isCenter()){ builds.add(build); } tiles.seti(i, new EditorTile(tile.x, tile.y, tile.floorID(), tile.overlayID(), build == null ? tile.blockID() : 0)); diff --git a/core/src/mindustry/editor/MapEditorDialog.java b/core/src/mindustry/editor/MapEditorDialog.java index 56ce52d8e1..a4c2de9dc3 100644 --- a/core/src/mindustry/editor/MapEditorDialog.java +++ b/core/src/mindustry/editor/MapEditorDialog.java @@ -24,7 +24,6 @@ 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.*; @@ -212,11 +211,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ margin(0); update(() -> { - if(Core.scene.getKeyboardFocus() instanceof Dialog && Core.scene.getKeyboardFocus() != this){ - return; - } - - if(Core.scene != null && Core.scene.getKeyboardFocus() == this){ + if(hasKeyboard()){ doInput(); } }); diff --git a/core/src/mindustry/editor/MapInfoDialog.java b/core/src/mindustry/editor/MapInfoDialog.java index 86a217e82e..ebc1f0b300 100644 --- a/core/src/mindustry/editor/MapInfoDialog.java +++ b/core/src/mindustry/editor/MapInfoDialog.java @@ -14,16 +14,15 @@ import mindustry.ui.dialogs.*; import static mindustry.Vars.*; public class MapInfoDialog extends BaseDialog{ - private final WaveInfoDialog waveInfo; - private final MapGenerateDialog generate; - private final CustomRulesDialog ruleInfo = new CustomRulesDialog(); - private final MapObjectivesDialog objectives = new MapObjectivesDialog(); - private final MapLocalesDialog locales = new MapLocalesDialog(); + private WaveInfoDialog waveInfo = new WaveInfoDialog(); + private MapGenerateDialog generate = new MapGenerateDialog(false); + private CustomRulesDialog ruleInfo = new CustomRulesDialog(); + private MapObjectivesDialog objectives = new MapObjectivesDialog(); + private MapLocalesDialog locales = new MapLocalesDialog(); + private MapProcessorsDialog processors = new MapProcessorsDialog(); public MapInfoDialog(){ super("@editor.mapinfo"); - this.waveInfo = new WaveInfoDialog(); - this.generate = new MapGenerateDialog(false); addCloseButton(); @@ -108,7 +107,12 @@ public class MapInfoDialog extends BaseDialog{ ui.showException(e); } hide(); - }).marginLeft(10f).width(0f).colspan(2).center().growX(); + }).marginLeft(10f); + + r.button("@editor.worldprocessors", Icon.logic, style, () -> { + hide(); + processors.show(); + }).marginLeft(10f); }).colspan(2).center(); name.change(); diff --git a/core/src/mindustry/editor/MapLoadDialog.java b/core/src/mindustry/editor/MapLoadDialog.java index 46b98e037d..69acd8ed00 100644 --- a/core/src/mindustry/editor/MapLoadDialog.java +++ b/core/src/mindustry/editor/MapLoadDialog.java @@ -39,7 +39,7 @@ public class MapLoadDialog extends BaseDialog{ ButtonGroup