Merge branch 'master' into do-you-hear-the-voices-too

This commit is contained in:
Mythril382
2024-05-28 00:40:31 +08:00
committed by GitHub
129 changed files with 3164 additions and 1263 deletions

View File

@@ -72,3 +72,5 @@ body:
required: true required: true
- label: I have searched the closed and open issues to make sure that this problem has not already been reported. - label: I have searched the closed and open issues to make sure that this problem has not already been reported.
required: true 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

View File

@@ -34,6 +34,7 @@ jobs:
if [ -n "$(git status --porcelain)" ]; then if [ -n "$(git status --porcelain)" ]; then
git config --global user.name "Github Actions" git config --global user.name "Github Actions"
git config --global user.email "actions@github.com"
git add core/assets/bundles/* git add core/assets/bundles/*
git commit -m "Automatic bundle update" git commit -m "Automatic bundle update"
git push git push
@@ -42,7 +43,7 @@ jobs:
if: ${{ github.repository == 'Anuken/Mindustry' }} if: ${{ github.repository == 'Anuken/Mindustry' }}
run: | run: |
git config --global user.name "Github Actions" git config --global user.name "Github Actions"
git config --global user.email "cli@github.com" git config --global user.email "actions@github.com"
cd ../ cd ../
cp -r ./Mindustry ./MindustryJitpack cp -r ./Mindustry ./MindustryJitpack
cd MindustryJitpack cd MindustryJitpack

View File

@@ -184,6 +184,7 @@ public class AndroidLauncher extends AndroidApplication{
}, new AndroidApplicationConfiguration(){{ }, new AndroidApplicationConfiguration(){{
useImmersiveMode = true; useImmersiveMode = true;
hideStatusBar = true; hideStatusBar = true;
useGL30 = true;
}}); }});
checkFiles(getIntent()); checkFiles(getIntent());

View File

@@ -57,6 +57,9 @@ public class AssetsProcess extends BaseProcessor{
ichtype.addField(FieldSpec.builder(ParameterizedTypeName.get(ObjectIntMap.class, String.class), ichtype.addField(FieldSpec.builder(ParameterizedTypeName.get(ObjectIntMap.class, String.class),
"codes", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("new ObjectIntMap<>()").build()); "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<String> used = new ObjectSet<>(); ObjectSet<String> used = new ObjectSet<>();
for(Jval val : icons.get("glyphs").asArray()){ for(Jval val : icons.get("glyphs").asArray()){
@@ -67,7 +70,9 @@ public class AssetsProcess extends BaseProcessor{
int code = val.getInt("code", 0); int code = val.getInt("code", 0);
iconcAll.append((char)code); 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()); 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("codes.put($S, $L)", name, code);
ichinit.addStatement("codeToName.put($L, $S)", code, name);
ictype.addField(TextureRegionDrawable.class, name + "Small", Modifier.PUBLIC, Modifier.STATIC); ictype.addField(TextureRegionDrawable.class, name + "Small", Modifier.PUBLIC, Modifier.STATIC);
icload.addStatement(name + "Small = mindustry.ui.Fonts.getGlyph(mindustry.ui.Fonts.def, (char)" + code + ")"); icload.addStatement(name + "Small = mindustry.ui.Fonts.getGlyph(mindustry.ui.Fonts.def, (char)" + code + ")");

View File

@@ -102,7 +102,7 @@ public class StructProcess extends BaseProcessor{
//bools: single bit, needs special case to clear things //bools: single bit, needs special case to clear things
setter.beginControlFlow("if(value)"); 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.nextControlFlow("else");
setter.addStatement("return ($T)(($L & ~(1L << $LL)))", structType, structParam, offset); setter.addStatement("return ($T)(($L & ~(1L << $LL)))", structType, structParam, offset);
setter.endControlFlow(); setter.endControlFlow();

View File

@@ -445,6 +445,11 @@ editor.rules = Rules
editor.generation = Generation editor.generation = Generation
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Edit In-Game
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Publish On Workshop editor.publish.workshop = Publish On Workshop
@@ -501,7 +506,9 @@ editor.default = [lightgray]<Default>
details = Details... details = Details...
edit = Edit edit = Edit
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Name: editor.name = Name:
editor.spawn = Spawn Unit editor.spawn = Spawn Unit
editor.removeunit = Remove Unit editor.removeunit = Remove Unit
@@ -590,6 +597,7 @@ filter.clear = Clear
filter.option.ignore = Ignore filter.option.ignore = Ignore
filter.scatter = Scatter filter.scatter = Scatter
filter.terrain = Terrain filter.terrain = Terrain
filter.logic = Logic
filter.option.scale = Scale filter.option.scale = Scale
filter.option.chance = Chance filter.option.chance = Chance
@@ -613,6 +621,8 @@ filter.option.floor2 = Secondary Floor
filter.option.threshold2 = Secondary Threshold filter.option.threshold2 = Secondary Threshold
filter.option.radius = Radius filter.option.radius = Radius
filter.option.percentile = Percentile 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.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.deletelocale = Are you sure you want to delete this locale bundle?
@@ -989,6 +999,7 @@ stat.abilities = Abilities
stat.canboost = Can Boost stat.canboost = Can Boost
stat.flying = Flying stat.flying = Flying
stat.ammouse = Ammo Use stat.ammouse = Ammo Use
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Damage Multiplier stat.damagemultiplier = Damage Multiplier
stat.healthmultiplier = Health Multiplier stat.healthmultiplier = Health Multiplier
stat.speedmultiplier = Speed Multiplier stat.speedmultiplier = Speed Multiplier
@@ -1090,7 +1101,7 @@ bullet.pierce = [stat]{0}x[lightgray] pierce
bullet.infinitepierce = [stat]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.healamount = [stat]{0}[lightgray] direct repair
bullet.multiplier = [stat]{0}x[lightgray] ammo multiplier bullet.multiplier = [stat]{0}[lightgray] ammo/item
bullet.reload = [stat]{0}%[lightgray] fire rate bullet.reload = [stat]{0}%[lightgray] fire rate
bullet.range = [stat]{0}[lightgray] tiles range bullet.range = [stat]{0}[lightgray] tiles range
@@ -1115,6 +1126,7 @@ unit.items = items
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /shot unit.pershot = /shot
category.purpose = Purpose category.purpose = Purpose
category.general = General category.general = General

View File

@@ -434,6 +434,11 @@ editor.rules = Правілы:
editor.generation = Генерацыя: editor.generation = Генерацыя:
editor.objectives = Мэты editor.objectives = Мэты
editor.locales = Locale Bundles 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.ingame = Рэдагаваць ў гульні
editor.playtest = Тэставаць editor.playtest = Тэставаць
editor.publish.workshop = Апублікаваць у майстэрні editor.publish.workshop = Апублікаваць у майстэрні
@@ -489,6 +494,7 @@ editor.default = [lightgray]<Па змаўчанні>
details = Падрабязнасці... details = Падрабязнасці...
edit = Рэдагаваць... edit = Рэдагаваць...
variables = Пераменныя variables = Пераменныя
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Назва: editor.name = Назва:
editor.spawn = Стварыць баявую адзінку editor.spawn = Стварыць баявую адзінку
@@ -576,6 +582,7 @@ filter.clear = Ачысціць
filter.option.ignore = Ігнараваць filter.option.ignore = Ігнараваць
filter.scatter = Сеяцель filter.scatter = Сеяцель
filter.terrain = Ландшафт filter.terrain = Ландшафт
filter.logic = Logic
filter.option.scale = Маштаб фільтра filter.option.scale = Маштаб фільтра
filter.option.chance = Шанец filter.option.chance = Шанец
filter.option.mag = Сіла прымянення filter.option.mag = Сіла прымянення
@@ -598,6 +605,8 @@ filter.option.floor2 = Другая паверхню
filter.option.threshold2 = Другасны гранічны парог filter.option.threshold2 = Другасны гранічны парог
filter.option.radius = Радыус filter.option.radius = Радыус
filter.option.percentile = Процентль filter.option.percentile = Процентль
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -962,6 +971,7 @@ stat.abilities = Здольнасйі
stat.canboost = Можа Узлятаць stat.canboost = Можа Узлятаць
stat.flying = Паветраны stat.flying = Паветраны
stat.ammouse = Выкарыстанне Боезапасу stat.ammouse = Выкарыстанне Боезапасу
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Множнік Пашкоджанняў stat.damagemultiplier = Множнік Пашкоджанняў
stat.healthmultiplier = Множнік Здароўя stat.healthmultiplier = Множнік Здароўя
stat.speedmultiplier = Множнік Хуткасці stat.speedmultiplier = Множнік Хуткасці
@@ -1087,6 +1097,7 @@ unit.items = прадметаў
unit.thousands = Тыс. unit.thousands = Тыс.
unit.millions = М. unit.millions = М.
unit.billions = Б. unit.billions = Б.
unit.shots = shots
unit.pershot = /стрэл unit.pershot = /стрэл
category.purpose = Апісанне category.purpose = Апісанне
category.general = Асноўныя category.general = Асноўныя

View File

@@ -439,6 +439,11 @@ editor.rules = Правила:
editor.generation = Генериране: editor.generation = Генериране:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Редактирай в игра
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Публикувай в Работилницата editor.publish.workshop = Публикувай в Работилницата
@@ -495,6 +500,7 @@ editor.default = [lightgray]<Стандартно>
details = Детайли... details = Детайли...
edit = Редактирай... edit = Редактирай...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Име: editor.name = Име:
editor.spawn = Създай Единица editor.spawn = Създай Единица
@@ -582,6 +588,7 @@ filter.clear = Изчисти
filter.option.ignore = Игнорирай filter.option.ignore = Игнорирай
filter.scatter = Разпръскване filter.scatter = Разпръскване
filter.terrain = Терен filter.terrain = Терен
filter.logic = Logic
filter.option.scale = Мащаб filter.option.scale = Мащаб
filter.option.chance = Вероятност filter.option.chance = Вероятност
filter.option.mag = Магнитут filter.option.mag = Магнитут
@@ -604,6 +611,8 @@ filter.option.floor2 = Втори под
filter.option.threshold2 = Втори праг filter.option.threshold2 = Втори праг
filter.option.radius = Радиус filter.option.radius = Радиус
filter.option.percentile = Перцентил filter.option.percentile = Перцентил
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -972,6 +981,7 @@ stat.abilities = Способности
stat.canboost = Може да ускорява stat.canboost = Може да ускорява
stat.flying = Летящ stat.flying = Летящ
stat.ammouse = Употребе на Боеприпаси stat.ammouse = Употребе на Боеприпаси
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Множител на Щети stat.damagemultiplier = Множител на Щети
stat.healthmultiplier = Множител на Точки живот stat.healthmultiplier = Множител на Точки живот
stat.speedmultiplier = Множител на Скорост stat.speedmultiplier = Множител на Скорост
@@ -1098,6 +1108,7 @@ unit.items = предмети
unit.thousands = хил unit.thousands = хил
unit.millions = млн unit.millions = млн
unit.billions = млр unit.billions = млр
unit.shots = shots
unit.pershot = /изстрел unit.pershot = /изстрел
category.purpose = Предназначение category.purpose = Предназначение
category.general = Обща информация category.general = Обща информация

View File

@@ -439,6 +439,11 @@ editor.rules = Regles
editor.generation = Generació editor.generation = Generació
editor.objectives = Objectius editor.objectives = Objectius
editor.locales = Locale Bundles 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 = Edita des de la partida editor.ingame = Edita des de la partida
editor.playtest = Prova el mapa editor.playtest = Prova el mapa
editor.publish.workshop = Publica al Workshop editor.publish.workshop = Publica al Workshop
@@ -495,6 +500,7 @@ editor.default = [lightgray]<Per defecte>
details = Detalls details = Detalls
edit = Edita edit = Edita
variables = Variables variables = Variables
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nom: editor.name = Nom:
editor.spawn = Genera una unitat editor.spawn = Genera una unitat
@@ -584,6 +590,7 @@ filter.clear = Neteja
filter.option.ignore = Ignora filter.option.ignore = Ignora
filter.scatter = Dispersió filter.scatter = Dispersió
filter.terrain = Terreny filter.terrain = Terreny
filter.logic = Logic
filter.option.scale = Escala filter.option.scale = Escala
filter.option.chance = Probabilitat filter.option.chance = Probabilitat
@@ -607,6 +614,8 @@ filter.option.floor2 = Terra secundari
filter.option.threshold2 = Llindar secundari filter.option.threshold2 = Llindar secundari
filter.option.radius = Radi filter.option.radius = Radi
filter.option.percentile = Percentil filter.option.percentile = Percentil
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -976,6 +985,7 @@ stat.abilities = Habilitats
stat.canboost = Pot sobrevolar. stat.canboost = Pot sobrevolar.
stat.flying = Està volant. stat.flying = Està volant.
stat.ammouse = Ús de munició stat.ammouse = Ús de munició
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Multiplicador de dany stat.damagemultiplier = Multiplicador de dany
stat.healthmultiplier = Multiplicador de salut stat.healthmultiplier = Multiplicador de salut
stat.speedmultiplier = Multiplicador de velocitat stat.speedmultiplier = Multiplicador de velocitat
@@ -1101,6 +1111,7 @@ unit.items = elements
unit.thousands = k unit.thousands = k
unit.millions = M unit.millions = M
unit.billions = kM unit.billions = kM
unit.shots = shots
unit.pershot = /dispar unit.pershot = /dispar
category.purpose = Funció category.purpose = Funció
category.general = General category.general = General

View File

@@ -440,6 +440,11 @@ editor.rules = Pravidla:
editor.generation = Generace: editor.generation = Generace:
editor.objectives = Úkoly: editor.objectives = Úkoly:
editor.locales = Locale Bundles 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.ingame = Upravit ve hře
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Publikovat do Workshopu na Steamu editor.publish.workshop = Publikovat do Workshopu na Steamu
@@ -496,6 +501,7 @@ editor.default = [lightgray]<Výchozí>[]
details = Podrobnosti... details = Podrobnosti...
edit = Upravit... edit = Upravit...
variables = Hodnoty variables = Hodnoty
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Jméno: editor.name = Jméno:
editor.spawn = Zrodit jednotku editor.spawn = Zrodit jednotku
@@ -583,6 +589,7 @@ filter.clear = Vyčistit
filter.option.ignore = Ignorovat filter.option.ignore = Ignorovat
filter.scatter = Rozptýlení filter.scatter = Rozptýlení
filter.terrain = Terén filter.terrain = Terén
filter.logic = Logic
filter.option.scale = Měřítko filter.option.scale = Měřítko
filter.option.chance = Náhoda filter.option.chance = Náhoda
@@ -606,6 +613,8 @@ filter.option.floor2 = Druhotný povrch
filter.option.threshold2 = Druhotný práh filter.option.threshold2 = Druhotný práh
filter.option.radius = Poloměr filter.option.radius = Poloměr
filter.option.percentile = Percentil filter.option.percentile = Percentil
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -974,6 +983,7 @@ stat.abilities = Schopnosti
stat.canboost = Umí posilovat stat.canboost = Umí posilovat
stat.flying = Létající stat.flying = Létající
stat.ammouse = Spotřeba Munice stat.ammouse = Spotřeba Munice
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Násobič Poškození stat.damagemultiplier = Násobič Poškození
stat.healthmultiplier = Násobič Životů stat.healthmultiplier = Násobič Životů
stat.speedmultiplier = Násobič Rychlostí stat.speedmultiplier = Násobič Rychlostí
@@ -1100,6 +1110,7 @@ unit.items = předměty
unit.thousands = tis unit.thousands = tis
unit.millions = mio unit.millions = mio
unit.billions = mld unit.billions = mld
unit.shots = shots
unit.pershot = /střela unit.pershot = /střela
category.purpose = Účel category.purpose = Účel
category.general = Všeobecné category.general = Všeobecné

View File

@@ -435,6 +435,11 @@ editor.rules = Regler:
editor.generation = Generering: editor.generation = Generering:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Ændr i spil
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Publicer på Workshop editor.publish.workshop = Publicer på Workshop
@@ -490,6 +495,7 @@ editor.default = [lightgray]<standard>
details = Detaljer... details = Detaljer...
edit = Rediger... edit = Rediger...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Navn: editor.name = Navn:
editor.spawn = Påkald enhed editor.spawn = Påkald enhed
@@ -577,6 +583,7 @@ filter.clear = Ryd
filter.option.ignore = Ignorer filter.option.ignore = Ignorer
filter.scatter = Spreder filter.scatter = Spreder
filter.terrain = Terræn filter.terrain = Terræn
filter.logic = Logic
filter.option.scale = Skaler filter.option.scale = Skaler
filter.option.chance = Chance filter.option.chance = Chance
filter.option.mag = Størrelse filter.option.mag = Størrelse
@@ -599,6 +606,8 @@ filter.option.floor2 = Sekundært gulv
filter.option.threshold2 = Sekundær terskel filter.option.threshold2 = Sekundær terskel
filter.option.radius = Radius filter.option.radius = Radius
filter.option.percentile = Percentil filter.option.percentile = Percentil
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -963,6 +972,7 @@ stat.abilities = Evner
stat.canboost = Can Boost stat.canboost = Can Boost
stat.flying = Flying stat.flying = Flying
stat.ammouse = Ammo Use stat.ammouse = Ammo Use
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Damage Multiplier stat.damagemultiplier = Damage Multiplier
stat.healthmultiplier = Health Multiplier stat.healthmultiplier = Health Multiplier
stat.speedmultiplier = Speed Multiplier stat.speedmultiplier = Speed Multiplier
@@ -1089,6 +1099,7 @@ unit.items = genstande
unit.thousands = t unit.thousands = t
unit.millions = mio unit.millions = mio
unit.billions = mia unit.billions = mia
unit.shots = shots
unit.pershot = /shot unit.pershot = /shot
category.purpose = Purpose category.purpose = Purpose
category.general = Generel category.general = Generel

View File

@@ -442,6 +442,11 @@ editor.rules = Regeln
editor.generation = Generator editor.generation = Generator
editor.objectives = Ziele editor.objectives = Ziele
editor.locales = Locale Bundles 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.ingame = Im Spiel bearbeiten
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Im Workshop veröffentlichen editor.publish.workshop = Im Workshop veröffentlichen
@@ -498,6 +503,7 @@ editor.default = [lightgray]<Standard>
details = Details details = Details
edit = Bearbeiten edit = Bearbeiten
variables = Variablen variables = Variablen
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Name: editor.name = Name:
editor.spawn = Spawnbereich editor.spawn = Spawnbereich
@@ -587,6 +593,7 @@ filter.clear = Löschen
filter.option.ignore = Ignorieren filter.option.ignore = Ignorieren
filter.scatter = Streuen filter.scatter = Streuen
filter.terrain = Landschaft filter.terrain = Landschaft
filter.logic = Logic
filter.option.scale = Skalierung filter.option.scale = Skalierung
filter.option.chance = Wahrscheinlichkeit filter.option.chance = Wahrscheinlichkeit
@@ -610,6 +617,8 @@ filter.option.floor2 = Sekundärer Boden
filter.option.threshold2 = Sekundärer Grenzwert filter.option.threshold2 = Sekundärer Grenzwert
filter.option.radius = Radius filter.option.radius = Radius
filter.option.percentile = Perzentil filter.option.percentile = Perzentil
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -985,6 +994,7 @@ stat.abilities = Fähigkeiten
stat.canboost = Kann boosten stat.canboost = Kann boosten
stat.flying = Flug stat.flying = Flug
stat.ammouse = Muntionsverbrauch stat.ammouse = Muntionsverbrauch
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Schaden-Multiplikator stat.damagemultiplier = Schaden-Multiplikator
stat.healthmultiplier = Lebenspunkte-Multiplikator stat.healthmultiplier = Lebenspunkte-Multiplikator
stat.speedmultiplier = Geschwindigkeit-Multiplikator stat.speedmultiplier = Geschwindigkeit-Multiplikator
@@ -1111,6 +1121,7 @@ unit.items = Materialeinheiten
unit.thousands = k unit.thousands = k
unit.millions = Mio unit.millions = Mio
unit.billions = Mrd unit.billions = Mrd
unit.shots = shots
unit.pershot = /Schuss unit.pershot = /Schuss
category.purpose = Beschreibung category.purpose = Beschreibung
category.general = Allgemeines category.general = Allgemeines

View File

@@ -439,6 +439,11 @@ editor.rules = Normas:
editor.generation = Generación: editor.generation = Generación:
editor.objectives = Objetivos editor.objectives = Objetivos
editor.locales = Locale Bundles 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.ingame = Editar desde la nave
editor.playtest = Probar mapa editor.playtest = Probar mapa
editor.publish.workshop = Publicar en Steam Workshop editor.publish.workshop = Publicar en Steam Workshop
@@ -495,6 +500,7 @@ editor.default = [lightgray]<Por defecto>
details = Detalles... details = Detalles...
edit = Editar... edit = Editar...
variables = Variables variables = Variables
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nombre: editor.name = Nombre:
editor.spawn = Generar unidad editor.spawn = Generar unidad
@@ -584,6 +590,7 @@ filter.clear = Despejar
filter.option.ignore = Ignorar filter.option.ignore = Ignorar
filter.scatter = Dispersión filter.scatter = Dispersión
filter.terrain = Terreno filter.terrain = Terreno
filter.logic = Logic
filter.option.scale = Escala filter.option.scale = Escala
filter.option.chance = Probabilidad filter.option.chance = Probabilidad
@@ -607,6 +614,8 @@ filter.option.floor2 = Terreno secundario
filter.option.threshold2 = Umbral secundario filter.option.threshold2 = Umbral secundario
filter.option.radius = Radio filter.option.radius = Radio
filter.option.percentile = Percentil filter.option.percentile = Percentil
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -982,6 +991,7 @@ stat.abilities = Habilidades
stat.canboost = Puede volar stat.canboost = Puede volar
stat.flying = Aéreo stat.flying = Aéreo
stat.ammouse = Uso de munición stat.ammouse = Uso de munición
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Multiplicador de daño stat.damagemultiplier = Multiplicador de daño
stat.healthmultiplier = Multiplicador de vida stat.healthmultiplier = Multiplicador de vida
stat.speedmultiplier = Multiplicador de velocidad stat.speedmultiplier = Multiplicador de velocidad
@@ -1107,6 +1117,7 @@ unit.items = objetos
unit.thousands = k unit.thousands = k
unit.millions = M unit.millions = M
unit.billions = B unit.billions = B
unit.shots = shots
unit.pershot = /disparo unit.pershot = /disparo
category.purpose = Objetivo category.purpose = Objetivo
category.general = General category.general = General
@@ -2030,8 +2041,8 @@ block.separator.description = Separa el magma en sus componentes minerales.
block.spore-press.description = Comprime vainas de esporas en petróleo. block.spore-press.description = Comprime vainas de esporas en petróleo.
block.pulverizer.description = Prensa chatarra hasta obtener arena. block.pulverizer.description = Prensa chatarra hasta obtener arena.
block.coal-centrifuge.description = Solidifica petróleo en trozos de carbón. block.coal-centrifuge.description = Solidifica petróleo en trozos de carbón.
block.incinerator.description = Vaporiza cualquier líquido o material que recive. block.incinerator.description = Vaporiza cualquier líquido o material que recibe.
block.power-void.description = Elimina toda la energía que recive. Solo disponible en el modo Libre. 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.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-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. block.item-void.description = Destruye los objetos que entran en él. Solo disponible en el modo Libre.

View File

@@ -435,6 +435,11 @@ editor.rules = Reeglid:
editor.generation = Genereerimine: editor.generation = Genereerimine:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Redigeeri mängus
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Avalda Workshop'is editor.publish.workshop = Avalda Workshop'is
@@ -490,6 +495,7 @@ editor.default = [lightgray]<Vaikimisi>
details = Üksikasjad... details = Üksikasjad...
edit = Muuda... edit = Muuda...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nimi: editor.name = Nimi:
editor.spawn = Tekita väeüksus editor.spawn = Tekita väeüksus
@@ -577,6 +583,7 @@ filter.clear = Kustutamine
filter.option.ignore = Eira filter.option.ignore = Eira
filter.scatter = Puistamine filter.scatter = Puistamine
filter.terrain = Maastik filter.terrain = Maastik
filter.logic = Logic
filter.option.scale = Ulatus filter.option.scale = Ulatus
filter.option.chance = Tõenäosus filter.option.chance = Tõenäosus
filter.option.mag = Suurusjärk filter.option.mag = Suurusjärk
@@ -599,6 +606,8 @@ filter.option.floor2 = Teine põrand
filter.option.threshold2 = Teine lävi filter.option.threshold2 = Teine lävi
filter.option.radius = Raadius filter.option.radius = Raadius
filter.option.percentile = Protsentiil filter.option.percentile = Protsentiil
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -963,6 +972,7 @@ stat.abilities = Abilities
stat.canboost = Can Boost stat.canboost = Can Boost
stat.flying = Flying stat.flying = Flying
stat.ammouse = Ammo Use stat.ammouse = Ammo Use
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Damage Multiplier stat.damagemultiplier = Damage Multiplier
stat.healthmultiplier = Health Multiplier stat.healthmultiplier = Health Multiplier
stat.speedmultiplier = Speed Multiplier stat.speedmultiplier = Speed Multiplier
@@ -1089,6 +1099,7 @@ unit.items = ressursiühikut
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /shot unit.pershot = /shot
category.purpose = Purpose category.purpose = Purpose
category.general = Üldinfo category.general = Üldinfo

View File

@@ -437,6 +437,11 @@ editor.rules = Arauak:
editor.generation = Sorrarazi: editor.generation = Sorrarazi:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Editatu jolasean
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Argitaratu lantegian editor.publish.workshop = Argitaratu lantegian
@@ -492,6 +497,7 @@ editor.default = [lightgray]<Lehenetsia>
details = Xehetasunak... details = Xehetasunak...
edit = Editatu... edit = Editatu...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Izena: editor.name = Izena:
editor.spawn = Sortu unitatea editor.spawn = Sortu unitatea
@@ -579,6 +585,7 @@ filter.clear = Garbitu
filter.option.ignore = Ezikusi filter.option.ignore = Ezikusi
filter.scatter = Sakabanaketa filter.scatter = Sakabanaketa
filter.terrain = Lursaila filter.terrain = Lursaila
filter.logic = Logic
filter.option.scale = Eskala filter.option.scale = Eskala
filter.option.chance = Zoria filter.option.chance = Zoria
filter.option.mag = Magnitudea filter.option.mag = Magnitudea
@@ -601,6 +608,8 @@ filter.option.floor2 = Bigarren zorua
filter.option.threshold2 = Bigarren atalasea filter.option.threshold2 = Bigarren atalasea
filter.option.radius = Erradioa filter.option.radius = Erradioa
filter.option.percentile = Pertzentila filter.option.percentile = Pertzentila
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -965,6 +974,7 @@ stat.abilities = Abilities
stat.canboost = Can Boost stat.canboost = Can Boost
stat.flying = Flying stat.flying = Flying
stat.ammouse = Ammo Use stat.ammouse = Ammo Use
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Damage Multiplier stat.damagemultiplier = Damage Multiplier
stat.healthmultiplier = Health Multiplier stat.healthmultiplier = Health Multiplier
stat.speedmultiplier = Speed Multiplier stat.speedmultiplier = Speed Multiplier
@@ -1091,6 +1101,7 @@ unit.items = elementu
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /shot unit.pershot = /shot
category.purpose = Purpose category.purpose = Purpose
category.general = Orokorra category.general = Orokorra

View File

@@ -435,6 +435,11 @@ editor.rules = Säännöt:
editor.generation = Generaatio: editor.generation = Generaatio:
editor.objectives = Tehtävät editor.objectives = Tehtävät
editor.locales = Locale Bundles 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.ingame = Muokka pelin sisällä
editor.playtest = Testaa pelin sisällä editor.playtest = Testaa pelin sisällä
editor.publish.workshop = Julkaise Workshoppiin editor.publish.workshop = Julkaise Workshoppiin
@@ -490,6 +495,7 @@ editor.default = [lightgray]<Oletus>
details = Yksityiskohdat... details = Yksityiskohdat...
edit = Muokkaa... edit = Muokkaa...
variables = Muuttujat variables = Muuttujat
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nimi: editor.name = Nimi:
editor.spawn = Luo yksikkö editor.spawn = Luo yksikkö
@@ -577,6 +583,7 @@ filter.clear = Selkeä
filter.option.ignore = Ohitta filter.option.ignore = Ohitta
filter.scatter = Hajauta filter.scatter = Hajauta
filter.terrain = Maasto filter.terrain = Maasto
filter.logic = Logic
filter.option.scale = Mittakaava filter.option.scale = Mittakaava
filter.option.chance = Mahdollisuus filter.option.chance = Mahdollisuus
filter.option.mag = Suuruus filter.option.mag = Suuruus
@@ -599,6 +606,8 @@ filter.option.floor2 = Toinen lattia
filter.option.threshold2 = Toissijainen raja-arvo filter.option.threshold2 = Toissijainen raja-arvo
filter.option.radius = Säde filter.option.radius = Säde
filter.option.percentile = Prosentti filter.option.percentile = Prosentti
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -962,6 +971,7 @@ stat.abilities = Erikoisvoimat
stat.canboost = Voi tehostaa stat.canboost = Voi tehostaa
stat.flying = Lentävä stat.flying = Lentävä
stat.ammouse = Ammusten käyttö stat.ammouse = Ammusten käyttö
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Vahinkokerroin stat.damagemultiplier = Vahinkokerroin
stat.healthmultiplier = Elmäpistekerroin stat.healthmultiplier = Elmäpistekerroin
stat.speedmultiplier = Nopeuskerroin stat.speedmultiplier = Nopeuskerroin
@@ -1088,6 +1098,7 @@ unit.items = esinettä
unit.thousands = t unit.thousands = t
unit.millions = milj unit.millions = milj
unit.billions = mrd unit.billions = mrd
unit.shots = shots
unit.pershot = /laukaisu unit.pershot = /laukaisu
category.purpose = Tarkoitus category.purpose = Tarkoitus
category.general = Yleinen category.general = Yleinen

View File

@@ -435,6 +435,11 @@ editor.rules = Rules:
editor.generation = Generation: editor.generation = Generation:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Edit In-Game
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = I-Publish Sa Workshop editor.publish.workshop = I-Publish Sa Workshop
@@ -490,6 +495,7 @@ editor.default = [lightgray]<Default>
details = Details... details = Details...
edit = Edit... edit = Edit...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Name: editor.name = Name:
editor.spawn = Spawn Unit editor.spawn = Spawn Unit
@@ -577,6 +583,7 @@ filter.clear = Clear
filter.option.ignore = Ignore filter.option.ignore = Ignore
filter.scatter = Scatter filter.scatter = Scatter
filter.terrain = Terrain filter.terrain = Terrain
filter.logic = Logic
filter.option.scale = Scale filter.option.scale = Scale
filter.option.chance = Chance filter.option.chance = Chance
filter.option.mag = Magnitude filter.option.mag = Magnitude
@@ -599,6 +606,8 @@ filter.option.floor2 = Secondary Floor
filter.option.threshold2 = Secondary Threshold filter.option.threshold2 = Secondary Threshold
filter.option.radius = Radius filter.option.radius = Radius
filter.option.percentile = Percentile 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.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -962,6 +971,7 @@ stat.abilities = Abilities
stat.canboost = Can Boost stat.canboost = Can Boost
stat.flying = Flying stat.flying = Flying
stat.ammouse = Ammo Use stat.ammouse = Ammo Use
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Damage Multiplier stat.damagemultiplier = Damage Multiplier
stat.healthmultiplier = Health Multiplier stat.healthmultiplier = Health Multiplier
stat.speedmultiplier = Speed Multiplier stat.speedmultiplier = Speed Multiplier
@@ -1088,6 +1098,7 @@ unit.items = items
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = bil unit.billions = bil
unit.shots = shots
unit.pershot = /shot unit.pershot = /shot
category.purpose = Purpose category.purpose = Purpose
category.general = General category.general = General

View File

@@ -445,6 +445,11 @@ editor.rules = Règles
editor.generation = Génération editor.generation = Génération
editor.objectives = Objectifs editor.objectives = Objectifs
editor.locales = Locale Bundles 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.ingame = Éditer dans le jeu
editor.playtest = Tester editor.playtest = Tester
editor.publish.workshop = Publier sur le Workshop editor.publish.workshop = Publier sur le Workshop
@@ -501,6 +506,7 @@ editor.default = [lightgray]<par défaut>
details = Détails... details = Détails...
edit = Modifier... edit = Modifier...
variables = Variables variables = Variables
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nom : editor.name = Nom :
editor.spawn = Ajouter une unité editor.spawn = Ajouter une unité
@@ -590,6 +596,7 @@ filter.clear = Effacer
filter.option.ignore = Ignorer filter.option.ignore = Ignorer
filter.scatter = Disperser filter.scatter = Disperser
filter.terrain = Terrain filter.terrain = Terrain
filter.logic = Logic
filter.option.scale = Échelle filter.option.scale = Échelle
filter.option.chance = Chance filter.option.chance = Chance
@@ -613,6 +620,8 @@ filter.option.floor2 = Sol secondaire
filter.option.threshold2 = Seuil secondaire filter.option.threshold2 = Seuil secondaire
filter.option.radius = Rayon filter.option.radius = Rayon
filter.option.percentile = Pourcentage filter.option.percentile = Pourcentage
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -988,6 +997,7 @@ stat.abilities = Habilités
stat.canboost = Boost stat.canboost = Boost
stat.flying = Unité volante stat.flying = Unité volante
stat.ammouse = Utilisation de munitions stat.ammouse = Utilisation de munitions
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Multiplicateur de dégâts stat.damagemultiplier = Multiplicateur de dégâts
stat.healthmultiplier = Multiplicateur de santé stat.healthmultiplier = Multiplicateur de santé
stat.speedmultiplier = Multiplicateur de vitesse stat.speedmultiplier = Multiplicateur de vitesse
@@ -1113,6 +1123,7 @@ unit.items = objets
unit.thousands = k unit.thousands = k
unit.millions = M unit.millions = M
unit.billions = Md unit.billions = Md
unit.shots = shots
unit.pershot = /tirs unit.pershot = /tirs
category.purpose = Description category.purpose = Description
category.general = Caractéristiques category.general = Caractéristiques

View File

@@ -46,7 +46,7 @@ mods.browser.selected = Mod kiválasztása
mods.browser.add = Letöltés mods.browser.add = Letöltés
mods.browser.reinstall = Újratelepítés mods.browser.reinstall = Újratelepítés
mods.browser.view-releases = Kiadások megtekintése mods.browser.view-releases = Kiadások megtekintése
mods.browser.noreleases = [scarlet]Nem találhatóak a kiadások\n[accent]Nem találhatók kiadások ehhez a modhoz. Nézd meg a tárolóját, hogy vannak-e kiadásai. mods.browser.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.latest = [lightgray][Legújabb]
mods.browser.releases = Kiadások mods.browser.releases = Kiadások
mods.github.open = Tároló mods.github.open = Tároló
@@ -198,14 +198,14 @@ campaign.none = [lightgray]Válassz egy bolygót a kezdéshez.\nEzt bármikor me
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.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. 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 completed = [accent]Kész
techtree = Fejlesztési fa techtree = Technológia fa
techtree.select = Fejlesztési fa kiválasztása techtree.select = Technológia fa kiválasztása
techtree.serpulo = Serpulo techtree.serpulo = Serpulo
techtree.erekir = Erekir techtree.erekir = Erekir
research.load = Betöltés research.load = Betöltés
research.discard = Eldobás research.discard = Eldobás
research.list = [lightgray]Fejleszd ki: research.list = [lightgray]Fejleszd ki:
research = Fejlesztési fa research = Fejlesztés
researched = [lightgray]{0} kifejlesztve. researched = [lightgray]{0} kifejlesztve.
research.progress = {0}% kész research.progress = {0}% kész
players = {0} játékos players = {0} játékos
@@ -309,7 +309,7 @@ server.invalidport = Érvénytelen port!
server.error = [scarlet]Kiszolgálási hiba. server.error = [scarlet]Kiszolgálási hiba.
save.new = Új mentés save.new = Új mentés
save.overwrite = Biztosan felülírod\nezt a mentést? 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ók. save.nocampaign = A hadjáratból származó egyes mentési fájlok nem importálhatóak.
overwrite = Felülírás overwrite = Felülírás
save.none = Nem található mentés! save.none = Nem található mentés!
savefail = Nem sikerült elmenteni a játékot! savefail = Nem sikerült elmenteni a játékot!
@@ -332,7 +332,7 @@ on = Be
off = Ki off = Ki
save.search = Keresés a mentett játékok között... save.search = Keresés a mentett játékok között...
save.autosave = Automatikus mentés: {0} save.autosave = Automatikus mentés: {0}
save.map = Térkép: {0} save.map = Pálya: {0}
save.wave = Hullám: {0} save.wave = Hullám: {0}
save.mode = Játékmód: {0} save.mode = Játékmód: {0}
save.date = Utolsó mentés: {0} save.date = Utolsó mentés: {0}
@@ -445,6 +445,11 @@ editor.rules = Szabályok
editor.generation = Előállítás editor.generation = Előállítás
editor.objectives = Célok editor.objectives = Célok
editor.locales = Helyi csomagok 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.ingame = Szerkesztés a játékban
editor.playtest = Teszt a játékban editor.playtest = Teszt a játékban
editor.publish.workshop = Közzététel a Steam Műhelyben editor.publish.workshop = Közzététel a Steam Műhelyben
@@ -501,7 +506,9 @@ editor.default = [lightgray]<Alapbeállítás>
details = Részletek... details = Részletek...
edit = Szerkesztés edit = Szerkesztés
variables = Változók 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 logic.globals = Beépített változók
editor.name = Név: editor.name = Név:
editor.spawn = Egység létrehozása editor.spawn = Egység létrehozása
editor.removeunit = Egység eltávolítása editor.removeunit = Egység eltávolítása
@@ -590,6 +597,7 @@ filter.clear = Törlés
filter.option.ignore = Elutasítás filter.option.ignore = Elutasítás
filter.scatter = Szétszórás filter.scatter = Szétszórás
filter.terrain = Domborzat filter.terrain = Domborzat
filter.logic = Logika
filter.option.scale = Méretezés filter.option.scale = Méretezés
filter.option.chance = Gyakoriság filter.option.chance = Gyakoriság
@@ -613,8 +621,10 @@ filter.option.floor2 = Másodlagos talaj
filter.option.threshold2 = Másodlagos küszöbérték filter.option.threshold2 = Másodlagos küszöbérték
filter.option.radius = Sugár filter.option.radius = Sugár
filter.option.percentile = Százalék filter.option.percentile = Százalék
filter.option.code = Kód
filter.option.loop = Hurok
locales.info = Itt adhatsz hozzá különböző nyelvi csomagokat a pályádhoz. A nyelvi csomagokban minden tulajdonságnak van egy neve és egy értéke. Ezeket a tulajdonságokat a világfeldolgozók és a célkitűzések is használhatják a saját neveikkel. Támogatják a szövegformázást (a helyőrzőket a tényleges értékükkel helyettesítik).\n\n[cyan]Példa tulajdonság:\n[]name: [accent]időzítő[]\nvalue: [accent]Példa időzítő, hátralévő idő: {0}[]\n\n[cyan]Használat:\n[]Beállítás célkitűzés szövegeként: [accent]@időzítő\n\n[]Írd be egy világfeldolgozóba:\n[accent]localeprint "időzítő"\nformat time\n[gray](ahol az idő egy külön számított változó) locales.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.deletelocale = Biztos, hogy törölni akarod ezt a nyelvi csomagot?
locales.applytoall = Változások alkalmazása az összes nyelvi csomagra locales.applytoall = Változások alkalmazása az összes nyelvi csomagra
locales.addtoother = Hozzáadás más nyelvi csomagokhoz locales.addtoother = Hozzáadás más nyelvi csomagokhoz
@@ -688,7 +698,7 @@ marker.shape.name = Alakzat
marker.text.name = Szöveg marker.text.name = Szöveg
marker.line.name = Vonal marker.line.name = Vonal
marker.quad.name = Négyzet marker.quad.name = Négyzet
marker.texture.name = Texture marker.texture.name = Textúra
marker.background = Háttér marker.background = Háttér
marker.outline = Körvonal marker.outline = Körvonal
@@ -699,9 +709,9 @@ 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.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.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}[]\n{1}[lightgray]{2} objective.build = [accent]Építs: [][lightgray]{0}[]db\n{1}[lightgray]{2}
objective.buildunit = [accent]Gyárts egységeket: [][lightgray]{0}[]\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}[] 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.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.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.enemyairunits = [accent]Az ellenséges légi egységek gyártása elkezdődik: [lightgray]{0}[] mp múlva
@@ -817,12 +827,12 @@ sector.navalFortress.name = Tengerészeti erőd
sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges fenyegetés. Kevés nyersanyag.\nGyűjts annyi rezet és ólmot, amennyit csak tudsz.\nHaladj tovább. sector.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.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.saltFlats.description = A sivatag peremén terülnek el a Sós síkságok. Kevés nyersanyag található errefelé.\n\nAz ellenség egy raktárkomplexumot létesített itt. Pusztítsd el a támaszpontjukat! Kő kövön ne maradjon!
sector.craters.description = Víz gyűjt össze ebben a kráterben, amely régi háborúk emlékét őrzi. Szerezd vissza a területet. Gyűjts homokot! Olvassz üveget! Pumpálj vizet, hogy lehűtsd a fúróidat és lövegtornyaidat. sector.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.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.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.overgrowth.description = Ez a terület közelebb esik a spórák forrásához, a spórák már kinőtték.\nAz ellenség egy helyőrséget létesített itt. Építs Mace egységeket! Pusztítsd el a bázist!
sector.tarFields.description = Egy olajtermelő övezet peremvidéke a hegyek és a sivatag között. Egy azon kevés szektorok közül, ahol még hasznosítható kátránykészletek találhatók.\nBár a terület elhagyatott, veszélyes ellenséges erők fészkelnek a közelben. Ne becsüld alá őket!\n\n[lightgray]Fedezd fel az olajfeldolgozási lehetőségeket, ha tudod! sector.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ítsd szárazföldi és légvédelmet, amint csak tudsz. Ne tévesszen meg a hosszú szünet az ellenség támadásai között. sector.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.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.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.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.
@@ -853,7 +863,7 @@ 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.onset.description = Kezdd meg az Erekir meghódítását. Gyűjts nyersanyagokat, állíts elő egységeket, és kezdd el a technológiai fejlesztéseket.
sector.aegis.description = Ez a szektor volfrám-lelőhelyeket tartalmaz.\nFejleszd ki az [accent]Ütvefúrót[], hogy ki tudd bányászni ezt a nyersanyagot, és pusztítsd el az ellenséges bázist a szektorban. sector.aegis.description = Ez a szektor volfrám-lelőhelyeket tartalmaz.\nFejleszd ki az [accent]Ütvefúrót[], hogy ki tudd bányászni ezt a nyersanyagot, és pusztítsd el az ellenséges bázist a szektorban.
sector.lake.description = Az ebben a szektorban lévő salakos tó nagymértékben korlátozza a használható egységeket. A lebegőegységek használata az egyetlen lehetőség.\nFejleszd ki a [accent]Repülőgépgyárat[], és állíts elő egy [accent]Elude[] egységet, amilyen hamar csak lehet. sector.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[], é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.intersect.description = A letapogatások arra utalnak, hogy ezt a szektort a leszállás után hamarosan több oldalról is megtámadják.\nÁllítsd fel gyorsan a védelmedet, és terjeszkedj minél hamarabb.\n[accent]Mech[] egységekre lesz szükség a terület zord terepviszonyai miatt.
sector.atlas.description = Ez a szektor változatos terepet tartalmaz, és az ütőképes támadáshoz többféle egységre lesz szükség.\nAz itt felfedezett ellenséges bázisok némelyikén való átjutáshoz is továbbfejlesztett egységekre lehet szükség.\nFejleszd ki az [accent]Elektrolizátort[] és a [accent]Tankújratervezőt[]. sector.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.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.
@@ -863,8 +873,8 @@ sector.peaks.description = A hegyvidéki terep ebben a szektorban a legtöbb egy
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.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.caldera-erekir.description = Ebben a szektorban a feltárható nyersanyagok több szigeten szétszóródva találhatóak.\nFejleszd ki és helyezd üzembe a drónalapú szállítmányozást.
sector.stronghold.description = A nagy ellenséges tábor ebben a szektorban jelentős mennyiségű [accent]tóriumot[] őriz.\nHasználd magasabb szintű egységek és lövegtornyok fejlesztésére. sector.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.crevice.description = Ebben a szektorban az ellenség kegyetlen támadóerőket fog mozgósítani, hogy kiiktassa a bázisodat.\nA [accent]karbid[] és a [accent]Pirolízis-erőmű[] kifejlesztése nélkülözhetetlen lehet a túléléshez.
sector.siege.description = Ebben a szektorban két párhuzamos kanyon található, amelyek két irányból érkező támadásokat tesznek lehetővé.\nFejleszd ki a [accent]diciánt[], hogy még erősebb tankegységeket hozhass létre.\nVigyázat: ellenséges, nagy hatótávolságú rakéták észlelve. A rakéták a becsapódásuk előtt megsemmisíthetők. sector.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.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.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. 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.
@@ -955,7 +965,7 @@ stat.moduletier = Modul szintje
stat.unittype = Egység típusa stat.unittype = Egység típusa
stat.speedincrease = Gyorsítás stat.speedincrease = Gyorsítás
stat.range = Hatótáv stat.range = Hatótáv
stat.drilltier = Kitermelhetők stat.drilltier = Kitermelhetőek
stat.drillspeed = Alap termelési sebesség stat.drillspeed = Alap termelési sebesség
stat.boosteffect = Erősítés hatása stat.boosteffect = Erősítés hatása
stat.maxunits = Max. aktív egységek stat.maxunits = Max. aktív egységek
@@ -989,6 +999,7 @@ stat.abilities = Képességek
stat.canboost = Erősíthető stat.canboost = Erősíthető
stat.flying = Repül stat.flying = Repül
stat.ammouse = Lőszerhasználat stat.ammouse = Lőszerhasználat
stat.ammocapacity = Lőszerkapacitás
stat.damagemultiplier = Sebzésszorzó stat.damagemultiplier = Sebzésszorzó
stat.healthmultiplier = Életerőszorzó stat.healthmultiplier = Életerőszorzó
stat.speedmultiplier = Sebességszorzó stat.speedmultiplier = Sebességszorzó
@@ -1027,6 +1038,7 @@ ability.spawndeath = Szétesés
ability.spawndeath.description = Megsemmisülésekor egységeket bocsát ki ability.spawndeath.description = Megsemmisülésekor egységeket bocsát ki
ability.liquidexplode = Szétömlés ability.liquidexplode = Szétömlés
ability.liquidexplode.description = Megsemmisülésekor folyadék ömlik ki belőle ability.liquidexplode.description = Megsemmisülésekor folyadék ömlik ki belőle
ability.stat.firingrate = [stat]{0}/mp[lightgray] tüzelési sebesség ability.stat.firingrate = [stat]{0}/mp[lightgray] tüzelési sebesség
ability.stat.regen = [stat]{0}[lightgray] életerő/mp ability.stat.regen = [stat]{0}[lightgray] életerő/mp
ability.stat.shield = [stat]{0}[lightgray] pajzs ability.stat.shield = [stat]{0}[lightgray] pajzs
@@ -1080,16 +1092,16 @@ bullet.homing = [stat]nyomkövető
bullet.armorpierce = [stat]páncéltörő bullet.armorpierce = [stat]páncéltörő
bullet.maxdamagefraction = [stat]{0}%[lightgray] sebzési határérték 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.suppression = [stat]{0} mp[lightgray] javításelnyomás ~[stat]{1}[lightgray] csempe
bullet.interval = [stat]{0}/mp[lightgray] lövedékek időköze: bullet.interval = [stat]{0}/mp[lightgray] gyakoriságú lövedékek:
bullet.frags = [stat]{0}[lightgray]x repeszlövedék: bullet.frags = [stat]{0}[lightgray]db repeszlövedék:
bullet.lightning = [stat]{0}[lightgray]x villámcsapás ~[stat]{1}[lightgray] sebzés bullet.lightning = [stat]{0}[lightgray]db villámcsapás ~[stat]{1}[lightgray] sebzés
bullet.buildingdamage = [stat]{0}%[lightgray] épületsebzés bullet.buildingdamage = [stat]{0}%[lightgray] épületsebzés
bullet.knockback = [stat]{0}[lightgray] hátralökés bullet.knockback = [stat]{0}[lightgray] hátralökés
bullet.pierce = [stat]{0}[lightgray]x átütő erő bullet.pierce = [stat]{0}[lightgray]x átütő erő
bullet.infinitepierce = [stat]átütő erő bullet.infinitepierce = [stat]átütő erő
bullet.healpercent = [stat]{0}%[lightgray] javítás bullet.healpercent = [stat]{0}%[lightgray] javítás
bullet.healamount = [stat]{0}[lightgray] közvetlen javítás bullet.healamount = [stat]{0}[lightgray] közvetlen javítás
bullet.multiplier = [stat]{0}[lightgray]x lőszerszorzó bullet.multiplier = [stat]{0}[lightgray] lőszer/nyersanyag
bullet.reload = [stat]{0}%[lightgray] tüzelési sebesség bullet.reload = [stat]{0}%[lightgray] tüzelési sebesség
bullet.range = [stat]{0}[lightgray] csempés hatótáv bullet.range = [stat]{0}[lightgray] csempés hatótáv
@@ -1114,8 +1126,9 @@ unit.items = nyersanyag
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = Mrd unit.billions = Mrd
unit.shots = lövés
unit.pershot = /lövés unit.pershot = /lövés
category.purpose = Cél category.purpose = Rendeltetés
category.general = Általános category.general = Általános
category.power = Áram category.power = Áram
category.liquids = Folyadékok category.liquids = Folyadékok
@@ -1235,16 +1248,17 @@ keybind.unit_stance_hold_fire.name = Egység viselkedése: tüzet szüntess
keybind.unit_stance_pursue_target.name = Egység viselkedése: célpont követése keybind.unit_stance_pursue_target.name = Egység viselkedése: célpont követése
keybind.unit_stance_patrol.name = Egység viselkedése: járőrözés keybind.unit_stance_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_stance_ram.name = Egység viselkedése: ütközés
keybind.unit_command_move.name = Unit Command: Move
keybind.unit_command_repair.name = Unit Command: Repair keybind.unit_command_move.name = Egységparancs: mozgás
keybind.unit_command_rebuild.name = Unit Command: Rebuild keybind.unit_command_repair.name = Egységparancs: javítás
keybind.unit_command_assist.name = Unit Command: Assist keybind.unit_command_rebuild.name = Egységparancs: újjáépítés
keybind.unit_command_mine.name = Unit Command: Mine keybind.unit_command_assist.name = Egységparancs: támogatás
keybind.unit_command_boost.name = Unit Command: Boost keybind.unit_command_mine.name = Egységparancs: bányászás
keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_boost.name = Egységparancs: erősítés
keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_load_units.name = Egységparancs: egységek berakodása
keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_load_blocks.name = Egységparancs: blokkok berakodása
keybind.unit_command_enter_payload.name = Unit Command: Enter Payload 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ó újjáépítése
keybind.schematic_select.name = Terület kijelölése keybind.schematic_select.name = Terület kijelölése
@@ -1376,8 +1390,9 @@ rules.weather = Időjárás
rules.weather.frequency = Gyakoriság: rules.weather.frequency = Gyakoriság:
rules.weather.always = Mindig rules.weather.always = Mindig
rules.weather.duration = Időtartam: rules.weather.duration = Időtartam:
rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy.
rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. 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.item.name = Nyersanyagok
content.liquid.name = Folyadékok content.liquid.name = Folyadékok
@@ -1823,13 +1838,13 @@ block.beam-tower.name = Sugártorony
block.beam-link.name = Sugárhálózat block.beam-link.name = Sugárhálózat
block.turbine-condenser.name = Kondenzációs turbina block.turbine-condenser.name = Kondenzációs turbina
block.chemical-combustion-chamber.name = Kémiai égetőkamra block.chemical-combustion-chamber.name = Kémiai égetőkamra
block.pyrolysis-generator.name = Pirolíziserőmű block.pyrolysis-generator.name = Pirolízis-erőmű
block.vent-condenser.name = Vízleválasztó block.vent-condenser.name = Vízleválasztó
block.cliff-crusher.name = Sziklazúzó block.cliff-crusher.name = Sziklazúzó
block.plasma-bore.name = Plazmafúró block.plasma-bore.name = Plazmafúró
block.large-plasma-bore.name = Nagy plazmafúró block.large-plasma-bore.name = Nagy plazmafúró
block.impact-drill.name = Ütvefúró block.impact-drill.name = Ütvefúró
block.eruption-drill.name = Kitörési fúró block.eruption-drill.name = Kitöréses fúró
block.core-bastion.name = Bástya block.core-bastion.name = Bástya
block.core-citadel.name = Citadella block.core-citadel.name = Citadella
block.core-acropolis.name = Akropolisz block.core-acropolis.name = Akropolisz
@@ -1895,10 +1910,10 @@ hint.breaking = [accent]Jobb egérgombbal[] és húzással lebonthatod a blokkok
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.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.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.derelict = Az [accent]elhagyatott[] szerkezetek régi bázisok maradványai, amelyek már nem működnek.\n\nEzeket az épületeket le lehet [accent]bontani[] nyersanyagokért, vagy meg is lehet javítani őket.
hint.research = Használd a \ue875 [accent]Fejlesztési fa[] gombot, hogy új technológiákat fedezz fel. hint.research = Használd a \ue875 [accent]Technológia fa[] gombot, hogy új technológiákat fedezz fel.
hint.research.mobile = Használd a \ue875 [accent]Fejlesztési fa[] gombot a \ue88c [accent]menüben[], hogy új technológiákat fedezz fel. hint.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 = Nyomd le a [accent][[bal Ctrl][] gombot, és kattints [accent]jobb egérgombbal[] a baráti egység vagy lövegtorony irányításához.
hint.unitControl.mobile = [accent][[Dupla koppintással][] irányíthatók kézileg a szövetséges egységek vagy lövegtornyok. hint.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 = 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.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 = 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.
@@ -1925,16 +1940,16 @@ hint.factoryControl.mobile = Egy egységgyár [accent]kimeneti célpontjának[]
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 = 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.mine.mobile = Menj a földön lévő \uf8c4 [accent]rézérc[] közelébe, és koppints a bányászat megkezdéséhez.
gz.research = Nyisd meg a \ue875 Fejlesztési fát.\nFejleszd ki a \uf870 [accent]Mechanikus fúrót[], majd válaszd ki a jobb alsó sarokban lévő menüből.\nKattints egy rézfoltra az elhelyezéséhez. gz.research = 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 Fejlesztési fát.\nFejleszd ki a \uf870 [accent]Mechanikus fúrót[], majd válaszd ki a jobb alsó sarokban lévő menüből.\nKattints egy rézfoltra az elhelyezéséhez.\n\nA megerősítéshez nyomd meg a jobb alsó sarokban lévő \ue800 [accent]pipát[]. gz.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 = 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.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.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.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.moveup = \ue804 Menj tovább a további utasításokért.
gz.turrets = Fejleszd ki, és építs 2 \uf861 [accent]Duo[] lövegtornyot, hogy megvédd a támaszpontot.\nA Duo lövegtornyoknak \uf838 [accent]lőszerre[] van szükségük, mely szállítószalaggal juttatható el hozzájuk. gz.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.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.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.defend = Az ellenség közeledik, készülj fel a védekezésre.
gz.aa = A repülő egységeket nem lehet könnyen elintézni a hagyományos lövegtornyokkal.\nA \uf860 [accent]Scatter[] lövegtornyok kiváló légelhárítást biztosítanak, de lőszerként \uf837 [accent]ólomra[] van szükségük. gz.aa = A repülő egységeket nem lehet könnyen elintézni a hagyományos lövegtornyokkal.\nA \uf860 [accent]Scatter[] lövegtornyok kiváló légelhárítást biztosítanak, de lőszerként \uf837 [accent]ólomra[] van szükségük.
gz.scatterammo = Szállítószalagok segítségével lásd el \uf837 [accent]ólommal[] a Scatter lövegtornyokat. gz.scatterammo = Szállítószalagok segítségével lásd el \uf837 [accent]ólommal[] a Scatter lövegtornyokat.
@@ -1946,17 +1961,17 @@ gz.finish = Építs több lövegtornyot, bányássz több nyersanyagot,\nés vé
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 = 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.mine.mobile = Koppints a \uf748 [accent]berillium[] kibányászáshoz a falakból.
onset.research = Nyisd meg a \ue875 fejlesztési fát.\nFejleszd ki, és építs egy \uf73e [accent]kondenzációs turbinát[] a kürtőn.\nEz [accent]áramot[] fog termelni. onset.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.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.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 = 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.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.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.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.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.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.crusher = Használj \uf74d [accent]Sziklazúzókat[], hogy homokot bányász.
onset.fabricator = Használd az [accent]egységeket[], hogy felfedezd a pályát, megvédd az épületeket, és megtámadhasd velük az ellenséget. Fejleszd ki, és helyezz el egy \uf6a2 [accent]tankgyárat[]. onset.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[].
onset.makeunit = Állíts elő egy egységet.\nHasználd a „?” gombot, hogy megnézd a kiválasztott gyár követelményeit. 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.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.turretammo = Szállítótalagok használatával lásd el a lövegtornyokat [accent]berillium[] lőszerrel.
@@ -1966,18 +1981,18 @@ onset.defenses = [accent]Állíts fel védelmet:[lightgray] {0}
onset.attack = Az ellenség most sebezhető. Indítsd ellentámadást. onset.attack = Az ellenség most sebezhető. Indítsd ellentámadást.
onset.cores = Új támaszpont csak a [accent]támaszpontcsempére[] helyezhető.\nAz új támaszpontok előretolt bázisként működnek, és megosztják a nyersanyagkészletüket más támaszpontokkal.\nHelyezz el egy \uf725 támaszpontot. onset.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.detect = Az ellenség 2 percen belül észrevesz téged.\nÁllíts fel védelmet, bányászatot és termelést.
onset.commandmode = Tartsd nyomva a [accent]Shift[] gombot, hogy [accent]parancs módba[] lépj.\n[accent]Bal egérgombbal és húzással[] lehet egységeket kijelölni.\n[accent]Jobb egérgombbal[] utasíthatók az egységek mozgásra vagy támadásra. onset.commandmode = 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[] utasíthatók az egységek mozgásra vagy támadásra. onset.commandmode.mobile = Nyomd meg a [accent]parancs gombot[], hogy [accent]parancs módba[] lépj.\nTartsd nyomva az ujjad, majd [accent]húzd[] az egységek kiválasztásához.\n[accent]Koppintással[] 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. aegis.tungsten = Volfrámot [accent]Ütvefúróval[] lehet bányászni.\nEnnek az épületnek [accent]vízre[] és [accent]áramra[] van szüksége.
split.pickup = Egyes blokkok a támaszpont drónjával is felvehetők.\nVedd fel ezt a [accent]konténert[] és helyezd egy [accent]rakománycsomagolóba[].\n(A felvétel és lerakás alapértelmezett gombjai: [[ és ].) split.pickup = 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ők.\nVedd fel ezt a [accent]konténert[] és helyezd egy [accent]rakománycsomagolóba[].\n(A felvételhez és lerakáshoz nyomd meg hosszan.) split.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.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.build = Az egységeket a fal másik oldalára kell eljuttatni.\nÉpíts két [accent]Rakomány-tömegmozgatót[], egyet-egyet a fal mindkét oldalán.\nÁllítsd be a szállítási kapcsolatukat úgy, hogy kiválasztod az egyiket, majd kiválasztod a másikat.
split.container = A konténerekhez hasonlóan, az egységek is szállíthatók a [accent]rakomány-tömegmozgatóval[].\nÉpíts egy egységgyárat egy tömegmozgató mellé, hogy feltöltsd őket, majd küldd át őket a falon, hogy megtámadják az ellenséges bázist. split.container = A konténerekhez hasonlóan, az egységek is szállíthatóak a [accent]Rakomány-tömegmozgatóval[].\nÉpíts egy egységgyárat egy tömegmozgató mellé, hogy feltöltsd őket, majd küldd át őket a falon, hogy megtámadják az ellenséges bázist.
item.copper.description = Széleskörűen használatos építkezésnél és lőszerként. item.copper.description = Széleskörűen használatos építkezésnél és lőszerként.
item.copper.details = Réz. Szokatlanul bőséges fém a Serpulón. Megerősítés nélkül strukturálisan gyenge. item.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.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.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.metaglass.description = Folyadékszállító és -tárolóépületeknél használatos.
@@ -2025,15 +2040,15 @@ block.message.description = Üzenetet tárol a szövetségesek kommunikációjá
block.reinforced-message.description = Üzenetet tárol a szövetségesek közötti kommunikáció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.world-message.description = A pályakészítésben használható üzenetblokk. Nem lehet megsemmisíteni.
block.graphite-press.description = Grafittá préseli a szenet. block.graphite-press.description = Grafittá préseli a szenet.
block.multi-press.description = Grafittá préseli a szenet. Hűtése vizet igényel. block.multi-press.description = Grafittá sajtolja a szenet. Hűtése vizet igényel.
block.silicon-smelter.description = A homokot és szenet szilíciummá finomítja. 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.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.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.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.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.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.blast-mixer.description = Robbanóelegyet készít a piratitból és a spórakapszulákból.
block.pyratite-mixer.description = Piratittá vegyíti a szenet, homokot és ólmot. block.pyratite-mixer.description = Piratittá vegyíti a szenet, a homokot és az ólmot.
block.melter.description = Salakká olvasztja a törmeléket. block.melter.description = Salakká olvasztja a törmeléket.
block.separator.description = Ásványi összetevőire bontja a salakot. block.separator.description = Ásványi összetevőire bontja a salakot.
block.spore-press.description = Olajat sajtol a spórakapszulából. block.spore-press.description = Olajat sajtol a spórakapszulából.
@@ -2084,7 +2099,7 @@ block.mass-driver.description = Nagy hatótávolságú nyersanyagszállító esz
block.mechanical-pump.description = Folyadékot szivattyúz és ad ki. Nem igényel áramot. 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.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.impulse-pump.description = Folyadékot szivattyúz és ad ki.
block.conduit.description = Folyadékot szállít. Pumpákkal és egyéb csővezetékekkel együtt használatos. block.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.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.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-router.description = Egyenletesen háromfelé osztja szét a beérkező folyadékot. Bizonyos mennyiség tárolására is képes.
@@ -2149,11 +2164,11 @@ block.tsunami.description = Erős folyadékhullámot lő az ellenségre. Eloltja
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.silicon-crucible.description = Szilíciumot finomít homokból és szénből, piratitot használ kiegészítő hőforrásként. Forró környezetben még hatékonyabb.
block.disassembler.description = Ritka ásványi összetevőket válogat ki a salakból, alacsony hatékonysággal. Képes tóriumot kiválogatni. block.disassembler.description = Ritka ásványi összetevőket válogat ki a salakból, alacsony hatékonysággal. Képes tóriumot kiválogatni.
block.overdrive-dome.description = Megnöveli a környező épületek termelési sebességét. A működtetése tóritkvarcot és szilíciumot igényel. block.overdrive-dome.description = Megnöveli a környező épületek termelési sebességét. A működtetése tóritkvarcot és szilíciumot igényel.
block.payload-conveyor.description = Nagy mennyiségű terhet mozgatni, például gyárakból érkező nyersanyagokat. Mágneses. Használható súlytalanságban. block.payload-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.payload-router.description = Háromfelé osztja szét a beérkező terhet. Rendezőként is szolgál, ha van megadva szűrő. Mágneses. Használható súlytalanságban.
block.ground-factory.description = Földi egységeket gyárt. A kész egységek azonnal hadra foghatók, vagy újratervezőkben továbbfejleszthetők. block.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. A kész egységek azonnal hadra foghatók, vagy újratervezőkben továbbfejleszthetők. block.air-factory.description = Légi egységeket gyárt. 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. A kész egységek azonnal hadra foghatók, vagy újratervezőkben továbbfejleszthetők. block.naval-factory.description = Vízi egységeket gyárt. 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.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.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.exponential-reconstructor.description = Négyes szintre fejleszti a beérkező egységeket.
@@ -2183,7 +2198,7 @@ block.lustre.description = Lassan mozgó, egyszerre egy célpontra ható lézert
block.scathe.description = Nagy erejű rakétát indít jelentős távolságokra lévő földi célpontok ellen. block.scathe.description = Nagy erejű rakétát indít jelentős távolságokra lévő földi célpontok ellen.
block.smite.description = Átütő erejű, villámló lövedékeket lő ki. block.smite.description = Átütő erejű, villámló lövedékeket lő ki.
block.malign.description = Lézertöltetekből álló célzott sortüzet zúdít az ellenséges célpontokra. Jelentős fűtést igényel. block.malign.description = Lézertöltetekből álló célzott sortüzet zúdít az ellenséges célpontokra. Jelentős fűtést igényel.
block.silicon-arc-furnace.description = A homokot és grafitot szilíciummá finomítja. block.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.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.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.slag-heater.description = Fűti a vele szemben álló épületeket. Salakot igényel.
@@ -2242,9 +2257,9 @@ block.build-tower.description = Automatikusan újjáépíti a hatósugarában l
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.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-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.reinforced-vault.description = Nagy mennyiségű nyersanyagot tud tárolni. A tartalma kirakodók segítségével nyerhető ki. Nem növeli a támaszpont tárolókapacitását.
block.tank-fabricator.description = Stell egységeket épít. A kimeneti egységek közvetlenül használhatók, vagy fejlesztésre újratervezőkbe küldhetők. block.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. A kimeneti egységek közvetlenül használhatók, vagy fejlesztésre újratervezőkbe küldhetők. block.ship-fabricator.description = Elude egységeket épít. 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. A kimeneti egységek közvetlenül használhatók, vagy fejlesztésre újratervezőkbe küldhetők. block.mech-fabricator.description = Merui egységeket épít. 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.tank-assembler.description = Nagy méretű tankokat állít össze a beadott blokkokból és egységekből. A kimeneti szint modulok hozzáadásával növelhető.
block.ship-assembler.description = Nagy méretű hajókat állít össze a beadott blokkokból és egységekből. A kimeneti szint modulok hozzáadásával növelhető. block.ship-assembler.description = Nagy méretű hajókat állít össze a beadott blokkokból és egységekből. A kimeneti szint modulok hozzáadásával növelhető.
block.mech-assembler.description = Nagy méretű mecheket állít össze a beadott blokkokból és egységekből. A kimeneti szint modulok hozzáadásával növelhető. block.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ő.
@@ -2452,7 +2467,7 @@ graphicstype.poly = Egy szabályos sokszög kitöltése.
graphicstype.linepoly = Szabályos sokszög körvonalának rajzolása. graphicstype.linepoly = Szabályos sokszög körvonalának rajzolása.
graphicstype.triangle = Egy háromszög kitöltése. 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.image = Kép rajzolása valamilyen tartalomról.\nPéldául: [accent]@router[] vagy [accent]@dagger[].
graphicstype.print = Szöveget rajzol a kiírási pufferből.\nCsak ASCII karakterek használhatók.\nTörli a kiírás puffert. 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.always = Mindig igaz.
lenum.idiv = Egész osztás. lenum.idiv = Egész osztás.

View File

@@ -439,6 +439,11 @@ editor.rules = Peraturan:
editor.generation = Generasi: editor.generation = Generasi:
editor.objectives = Tujuan editor.objectives = Tujuan
editor.locales = Locale Bundles 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.ingame = Sunting dalam Permainan
editor.playtest = Tes Bermain editor.playtest = Tes Bermain
editor.publish.workshop = Terbitkan di Workshop editor.publish.workshop = Terbitkan di Workshop
@@ -495,6 +500,7 @@ editor.default = [lightgray]<Standar>
details = Detail... details = Detail...
edit = Sunting... edit = Sunting...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nama: editor.name = Nama:
editor.spawn = Munculkan Unit editor.spawn = Munculkan Unit
@@ -584,6 +590,7 @@ filter.clear = Bersih
filter.option.ignore = Biarkan filter.option.ignore = Biarkan
filter.scatter = Penebaran filter.scatter = Penebaran
filter.terrain = Lahan filter.terrain = Lahan
filter.logic = Logic
filter.option.scale = Ukuran filter.option.scale = Ukuran
filter.option.chance = Kemungkinan filter.option.chance = Kemungkinan
@@ -607,6 +614,8 @@ filter.option.floor2 = Lantai Sekunder
filter.option.threshold2 = Ambang Sekunder filter.option.threshold2 = Ambang Sekunder
filter.option.radius = Radius filter.option.radius = Radius
filter.option.percentile = Perseratus filter.option.percentile = Perseratus
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -982,6 +991,7 @@ stat.abilities = Kemampuan
stat.canboost = Dapat Dipercepat stat.canboost = Dapat Dipercepat
stat.flying = Terbang stat.flying = Terbang
stat.ammouse = Penggunaan Amunisi stat.ammouse = Penggunaan Amunisi
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Penggandaan Kekuatan (dmg) stat.damagemultiplier = Penggandaan Kekuatan (dmg)
stat.healthmultiplier = Penggandaan Darah stat.healthmultiplier = Penggandaan Darah
stat.speedmultiplier = Penggandaan Kecepatan stat.speedmultiplier = Penggandaan Kecepatan
@@ -1107,6 +1117,7 @@ unit.items = bahan
unit.thousands = rb unit.thousands = rb
unit.millions = jt unit.millions = jt
unit.billions = m unit.billions = m
unit.shots = shots
unit.pershot = /tembakan unit.pershot = /tembakan
category.purpose = Kegunaan category.purpose = Kegunaan
category.general = Umum category.general = Umum

View File

@@ -437,6 +437,11 @@ editor.rules = Regole:
editor.generation = Generazione: editor.generation = Generazione:
editor.objectives = Obbiettivi editor.objectives = Obbiettivi
editor.locales = Locale Bundles 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.ingame = Modifica in Gioco
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Pubblica nel Workshop editor.publish.workshop = Pubblica nel Workshop
@@ -493,6 +498,7 @@ editor.default = [lightgray]<Predefinito>
details = Dettagli... details = Dettagli...
edit = Modifica... edit = Modifica...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nome: editor.name = Nome:
editor.spawn = Piazza un'Unità editor.spawn = Piazza un'Unità
@@ -580,6 +586,7 @@ filter.clear = Resetta Filtro
filter.option.ignore = Ignora filter.option.ignore = Ignora
filter.scatter = Dispersione filter.scatter = Dispersione
filter.terrain = Terreno filter.terrain = Terreno
filter.logic = Logic
filter.option.scale = Scala filter.option.scale = Scala
filter.option.chance = Probabilità filter.option.chance = Probabilità
filter.option.mag = Magnitudine filter.option.mag = Magnitudine
@@ -602,6 +609,8 @@ filter.option.floor2 = Terreno Secondario
filter.option.threshold2 = Soglia Secondaria filter.option.threshold2 = Soglia Secondaria
filter.option.radius = Raggio filter.option.radius = Raggio
filter.option.percentile = Percentuale filter.option.percentile = Percentuale
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -968,6 +977,7 @@ stat.abilities = Abilità
stat.canboost = Capace di Potenziamento stat.canboost = Capace di Potenziamento
stat.flying = Volo stat.flying = Volo
stat.ammouse = Consumo di munizioni stat.ammouse = Consumo di munizioni
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Moltiplicatore danni stat.damagemultiplier = Moltiplicatore danni
stat.healthmultiplier = Moltiplicatore salute stat.healthmultiplier = Moltiplicatore salute
stat.speedmultiplier = Moltiplicatore velocità stat.speedmultiplier = Moltiplicatore velocità
@@ -1094,6 +1104,7 @@ unit.items = oggetti
unit.thousands = k unit.thousands = k
unit.millions = mln unit.millions = mln
unit.billions = mld unit.billions = mld
unit.shots = shots
unit.pershot = /colpo unit.pershot = /colpo
category.purpose = Scopo category.purpose = Scopo
category.general = Generali category.general = Generali

View File

@@ -439,6 +439,11 @@ editor.rules = ルール:
editor.generation = 生成: editor.generation = 生成:
editor.objectives = オブジェクティブ editor.objectives = オブジェクティブ
editor.locales = Locale Bundles 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.ingame = ゲーム内で編集する
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = ワークショップで公開 editor.publish.workshop = ワークショップで公開
@@ -495,6 +500,7 @@ editor.default = [lightgray]<デフォルト>
details = 詳細... details = 詳細...
edit = 編集... edit = 編集...
variables = 変数 variables = 変数
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = 名前: editor.name = 名前:
editor.spawn = ユニットを出す editor.spawn = ユニットを出す
@@ -583,6 +589,7 @@ filter.clear = クリア
filter.option.ignore = 無視 filter.option.ignore = 無視
filter.scatter = 分散 filter.scatter = 分散
filter.terrain = 地形 filter.terrain = 地形
filter.logic = Logic
filter.option.scale = スケール filter.option.scale = スケール
filter.option.chance = 確率 filter.option.chance = 確率
@@ -606,6 +613,8 @@ filter.option.floor2 = 2番目の地面
filter.option.threshold2 = 2番目の閾値 filter.option.threshold2 = 2番目の閾値
filter.option.radius = 半径 filter.option.radius = 半径
filter.option.percentile = パーセンタイル filter.option.percentile = パーセンタイル
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -974,6 +983,7 @@ stat.abilities = 能力
stat.canboost = ブースト可能 stat.canboost = ブースト可能
stat.flying = 飛行 stat.flying = 飛行
stat.ammouse = 使用弾薬 stat.ammouse = 使用弾薬
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = ダメージ倍率 stat.damagemultiplier = ダメージ倍率
stat.healthmultiplier = 体力倍率 stat.healthmultiplier = 体力倍率
stat.speedmultiplier = スピード倍率 stat.speedmultiplier = スピード倍率
@@ -1100,6 +1110,7 @@ unit.items = アイテム
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /発 unit.pershot = /発
category.purpose = 説明 category.purpose = 説明
category.general = 一般 category.general = 一般

View File

@@ -438,6 +438,11 @@ editor.rules = 규칙
editor.generation = 지형 생성 editor.generation = 지형 생성
editor.objectives = 목표 editor.objectives = 목표
editor.locales = Locale Bundles 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.ingame = 인게임 편집
editor.playtest = 맵 테스트 editor.playtest = 맵 테스트
editor.publish.workshop = 창작마당 게시 editor.publish.workshop = 창작마당 게시
@@ -494,6 +499,7 @@ editor.default = [lightgray]<기본값>
details = 설명... details = 설명...
edit = 편집... edit = 편집...
variables = 변수 variables = 변수
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = 이름: editor.name = 이름:
editor.spawn = 기체 생성 editor.spawn = 기체 생성
@@ -583,6 +589,7 @@ filter.clear = 초기화
filter.option.ignore = 무시 filter.option.ignore = 무시
filter.scatter = 흩뿌리기 filter.scatter = 흩뿌리기
filter.terrain = 지형 filter.terrain = 지형
filter.logic = Logic
filter.option.scale = 크기 filter.option.scale = 크기
filter.option.chance = 배치 빈도 filter.option.chance = 배치 빈도
@@ -606,6 +613,8 @@ filter.option.floor2 = 2번째 타일
filter.option.threshold2 = 2번째 경계선 filter.option.threshold2 = 2번째 경계선
filter.option.radius = 반경 filter.option.radius = 반경
filter.option.percentile = 백분율 filter.option.percentile = 백분율
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -974,6 +983,7 @@ stat.abilities = 능력
stat.canboost = 이륙 가능 stat.canboost = 이륙 가능
stat.flying = 비행 stat.flying = 비행
stat.ammouse = 탄약 사용 stat.ammouse = 탄약 사용
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = 피해량 배수 stat.damagemultiplier = 피해량 배수
stat.healthmultiplier = 체력 배수 stat.healthmultiplier = 체력 배수
stat.speedmultiplier = 이동속도 배수 stat.speedmultiplier = 이동속도 배수
@@ -1099,6 +1109,7 @@ unit.items = 자원
unit.thousands = k unit.thousands = k
unit.millions = m unit.millions = m
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /발 unit.pershot = /발
category.purpose = 목적 category.purpose = 목적
category.general = 일반 category.general = 일반

View File

@@ -435,6 +435,11 @@ editor.rules = Taisyklės:
editor.generation = Generacija: editor.generation = Generacija:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Redaguoti žaidime
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Publikuoti Dirbtuvėje editor.publish.workshop = Publikuoti Dirbtuvėje
@@ -490,6 +495,7 @@ editor.default = [lightgray]<Numatytasis>
details = Detaliau... details = Detaliau...
edit = Redaguoti... edit = Redaguoti...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Pavadinimas: editor.name = Pavadinimas:
editor.spawn = Atradinti vienetą editor.spawn = Atradinti vienetą
@@ -577,6 +583,7 @@ filter.clear = Išvalyti
filter.option.ignore = ignoruoti filter.option.ignore = ignoruoti
filter.scatter = Išsklaidyti filter.scatter = Išsklaidyti
filter.terrain = Reljefas filter.terrain = Reljefas
filter.logic = Logic
filter.option.scale = Mastelis filter.option.scale = Mastelis
filter.option.chance = Tikimybė filter.option.chance = Tikimybė
filter.option.mag = Didumas filter.option.mag = Didumas
@@ -599,6 +606,8 @@ filter.option.floor2 = Antrasis sluoksnis
filter.option.threshold2 = Antrasis slenkstis filter.option.threshold2 = Antrasis slenkstis
filter.option.radius = Spindulys filter.option.radius = Spindulys
filter.option.percentile = Procentilė filter.option.percentile = Procentilė
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -963,6 +972,7 @@ stat.abilities = Abilities
stat.canboost = Can Boost stat.canboost = Can Boost
stat.flying = Flying stat.flying = Flying
stat.ammouse = Ammo Use stat.ammouse = Ammo Use
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Damage Multiplier stat.damagemultiplier = Damage Multiplier
stat.healthmultiplier = Health Multiplier stat.healthmultiplier = Health Multiplier
stat.speedmultiplier = Speed Multiplier stat.speedmultiplier = Speed Multiplier
@@ -1089,6 +1099,7 @@ unit.items = daiktai
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /shot unit.pershot = /shot
category.purpose = Purpose category.purpose = Purpose
category.general = Bendra category.general = Bendra

View File

@@ -443,6 +443,11 @@ editor.rules = Regels:
editor.generation = Generatie: editor.generation = Generatie:
editor.objectives = Doelen editor.objectives = Doelen
editor.locales = Locale Bundles 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.ingame = Bewerk In-Spel
editor.playtest = Speeltest editor.playtest = Speeltest
editor.publish.workshop = Publiceer in Werkplaats editor.publish.workshop = Publiceer in Werkplaats
@@ -498,6 +503,7 @@ editor.default = [lightgray]<Standaard>
details = Details... details = Details...
edit = Bewerk... edit = Bewerk...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Naam: editor.name = Naam:
editor.spawn = Voeg Eenheid toe editor.spawn = Voeg Eenheid toe
@@ -586,6 +592,7 @@ filter.clear = Verwijder
filter.option.ignore = Negeer filter.option.ignore = Negeer
filter.scatter = Verstrooi filter.scatter = Verstrooi
filter.terrain = Terrein filter.terrain = Terrein
filter.logic = Logic
filter.option.scale = Schaal filter.option.scale = Schaal
filter.option.chance = Verander filter.option.chance = Verander
@@ -609,6 +616,8 @@ filter.option.floor2 = Secundaire Vloer
filter.option.threshold2 = Secundaire Drempel filter.option.threshold2 = Secundaire Drempel
filter.option.radius = Straal filter.option.radius = Straal
filter.option.percentile = percentiel filter.option.percentile = percentiel
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -975,6 +984,7 @@ stat.abilities = Capaciteiten
stat.canboost = Kan Boosten stat.canboost = Kan Boosten
stat.flying = Vliegende stat.flying = Vliegende
stat.ammouse = Ammunitie gebruik stat.ammouse = Ammunitie gebruik
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Schade Vermenigvuldiger stat.damagemultiplier = Schade Vermenigvuldiger
stat.healthmultiplier = Levenspunten Vermenigvuldiger stat.healthmultiplier = Levenspunten Vermenigvuldiger
stat.speedmultiplier = Snelheids Vermenigvuldiger stat.speedmultiplier = Snelheids Vermenigvuldiger
@@ -1101,6 +1111,7 @@ unit.items = materialen
unit.thousands = k unit.thousands = k
unit.millions = mln unit.millions = mln
unit.billions = mjd unit.billions = mjd
unit.shots = shots
unit.pershot = /schot unit.pershot = /schot
category.purpose = Doel category.purpose = Doel
category.general = Algemeen category.general = Algemeen

View File

@@ -435,6 +435,11 @@ editor.rules = Rules:
editor.generation = Generation: editor.generation = Generation:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Edit In-Game
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Publish On Workshop editor.publish.workshop = Publish On Workshop
@@ -490,6 +495,7 @@ editor.default = [lightgray]<Default>
details = Details... details = Details...
edit = Edit... edit = Edit...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Name: editor.name = Name:
editor.spawn = Spawn Unit editor.spawn = Spawn Unit
@@ -577,6 +583,7 @@ filter.clear = Clear
filter.option.ignore = Ignore filter.option.ignore = Ignore
filter.scatter = Scatter filter.scatter = Scatter
filter.terrain = Terrain filter.terrain = Terrain
filter.logic = Logic
filter.option.scale = Scale filter.option.scale = Scale
filter.option.chance = Chance filter.option.chance = Chance
filter.option.mag = Magnitude filter.option.mag = Magnitude
@@ -599,6 +606,8 @@ filter.option.floor2 = Secondary Floor
filter.option.threshold2 = Secondary Threshold filter.option.threshold2 = Secondary Threshold
filter.option.radius = Radius filter.option.radius = Radius
filter.option.percentile = Percentile 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.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -963,6 +972,7 @@ stat.abilities = Abilities
stat.canboost = Can Boost stat.canboost = Can Boost
stat.flying = Flying stat.flying = Flying
stat.ammouse = Ammo Use stat.ammouse = Ammo Use
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Damage Multiplier stat.damagemultiplier = Damage Multiplier
stat.healthmultiplier = Health Multiplier stat.healthmultiplier = Health Multiplier
stat.speedmultiplier = Speed Multiplier stat.speedmultiplier = Speed Multiplier
@@ -1089,6 +1099,7 @@ unit.items = items
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /shot unit.pershot = /shot
category.purpose = Purpose category.purpose = Purpose
category.general = General category.general = General

View File

@@ -439,6 +439,11 @@ editor.rules = Zasady:
editor.generation = Generacja: editor.generation = Generacja:
editor.objectives = Cele editor.objectives = Cele
editor.locales = Locale Bundles 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.ingame = Edytuj w Grze
editor.playtest = Testuj Mapę editor.playtest = Testuj Mapę
editor.publish.workshop = Opublikuj w Warsztacie editor.publish.workshop = Opublikuj w Warsztacie
@@ -495,6 +500,7 @@ editor.default = [lightgray]<Domyślne>
details = Detale... details = Detale...
edit = Edytuj... edit = Edytuj...
variables = Zmienne variables = Zmienne
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nazwa: editor.name = Nazwa:
editor.spawn = Stwórz Jednostkę editor.spawn = Stwórz Jednostkę
@@ -582,6 +588,7 @@ filter.clear = Oczyść
filter.option.ignore = Ignoruj filter.option.ignore = Ignoruj
filter.scatter = Rozprosz filter.scatter = Rozprosz
filter.terrain = Teren filter.terrain = Teren
filter.logic = Logic
filter.option.scale = Skala filter.option.scale = Skala
filter.option.chance = Szansa filter.option.chance = Szansa
filter.option.mag = Wielkość filter.option.mag = Wielkość
@@ -604,6 +611,8 @@ filter.option.floor2 = Druga Podłoga
filter.option.threshold2 = Drugi Próg filter.option.threshold2 = Drugi Próg
filter.option.radius = Zasięg filter.option.radius = Zasięg
filter.option.percentile = Procent filter.option.percentile = Procent
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -972,6 +981,7 @@ stat.abilities = Umiejętności
stat.canboost = Może przyspieszyć stat.canboost = Może przyspieszyć
stat.flying = Może latać stat.flying = Może latać
stat.ammouse = Zużycie Amunicji stat.ammouse = Zużycie Amunicji
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Mnożnik Obrażeń stat.damagemultiplier = Mnożnik Obrażeń
stat.healthmultiplier = Mnożnik Zdrowia stat.healthmultiplier = Mnożnik Zdrowia
stat.speedmultiplier = Mnożnik Prędkości stat.speedmultiplier = Mnożnik Prędkości
@@ -1098,6 +1108,7 @@ unit.items = przedmioty
unit.thousands = tys. unit.thousands = tys.
unit.millions = mln. unit.millions = mln.
unit.billions = mld. unit.billions = mld.
unit.shots = shots
unit.pershot = /strzał unit.pershot = /strzał
category.purpose = Opis category.purpose = Opis
category.general = Główne category.general = Główne

View File

@@ -439,6 +439,11 @@ editor.rules = Regras:
editor.generation = Geração: editor.generation = Geração:
editor.objectives = Objetivos: editor.objectives = Objetivos:
editor.locales = Locale Bundles 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.ingame = Editar em jogo
editor.playtest = Jogar Teste editor.playtest = Jogar Teste
editor.publish.workshop = Publicar na oficina editor.publish.workshop = Publicar na oficina
@@ -495,6 +500,7 @@ editor.default = [lightgray]<padrão>
details = Detalhes... details = Detalhes...
edit = Editar... edit = Editar...
variables = Variáveis variables = Variáveis
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nome: editor.name = Nome:
editor.spawn = Spawnar unidade editor.spawn = Spawnar unidade
@@ -584,6 +590,7 @@ filter.clear = Excluir
filter.option.ignore = Ignorar filter.option.ignore = Ignorar
filter.scatter = Dispersão filter.scatter = Dispersão
filter.terrain = Terreno filter.terrain = Terreno
filter.logic = Logic
filter.option.scale = Escala filter.option.scale = Escala
filter.option.chance = Chance filter.option.chance = Chance
@@ -607,6 +614,8 @@ filter.option.floor2 = Chão secundário
filter.option.threshold2 = Margem secundária filter.option.threshold2 = Margem secundária
filter.option.radius = Raio filter.option.radius = Raio
filter.option.percentile = Percentual filter.option.percentile = Percentual
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -983,6 +992,7 @@ stat.abilities = Habilidades
stat.canboost = Pode impulsionar stat.canboost = Pode impulsionar
stat.flying = Voador stat.flying = Voador
stat.ammouse = Consumo de Munição stat.ammouse = Consumo de Munição
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Multiplicador de Dano stat.damagemultiplier = Multiplicador de Dano
stat.healthmultiplier = Multiplicador de Vida stat.healthmultiplier = Multiplicador de Vida
stat.speedmultiplier = Multiplicador de Velocidade stat.speedmultiplier = Multiplicador de Velocidade
@@ -1108,6 +1118,7 @@ unit.items = itens
unit.thousands = k unit.thousands = k
unit.millions = m unit.millions = m
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /disparo unit.pershot = /disparo
category.purpose = Propósito category.purpose = Propósito
category.general = Geral category.general = Geral

View File

@@ -435,6 +435,11 @@ editor.rules = Regras:
editor.generation = Geração: editor.generation = Geração:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Editar em jogo
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Publicar na oficina editor.publish.workshop = Publicar na oficina
@@ -490,6 +495,7 @@ editor.default = [lightgray]<padrão>
details = Detalhes... details = Detalhes...
edit = Editar... edit = Editar...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nome: editor.name = Nome:
editor.spawn = Criar unidade editor.spawn = Criar unidade
@@ -577,6 +583,7 @@ filter.clear = Excluir
filter.option.ignore = Ignorar filter.option.ignore = Ignorar
filter.scatter = Dispersão filter.scatter = Dispersão
filter.terrain = Terreno filter.terrain = Terreno
filter.logic = Logic
filter.option.scale = Escala filter.option.scale = Escala
filter.option.chance = Chance filter.option.chance = Chance
filter.option.mag = Magnitude filter.option.mag = Magnitude
@@ -599,6 +606,8 @@ filter.option.floor2 = Chão secundário
filter.option.threshold2 = Margem secundária filter.option.threshold2 = Margem secundária
filter.option.radius = Raio filter.option.radius = Raio
filter.option.percentile = Percentual filter.option.percentile = Percentual
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -963,6 +972,7 @@ stat.abilities = Abilities
stat.canboost = Can Boost stat.canboost = Can Boost
stat.flying = Flying stat.flying = Flying
stat.ammouse = Ammo Use stat.ammouse = Ammo Use
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Damage Multiplier stat.damagemultiplier = Damage Multiplier
stat.healthmultiplier = Health Multiplier stat.healthmultiplier = Health Multiplier
stat.speedmultiplier = Speed Multiplier stat.speedmultiplier = Speed Multiplier
@@ -1089,6 +1099,7 @@ unit.items = itens
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /shot unit.pershot = /shot
category.purpose = Purpose category.purpose = Purpose
category.general = Geral category.general = Geral

View File

@@ -439,6 +439,11 @@ editor.rules = Reguli:
editor.generation = Generare: editor.generation = Generare:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Editează în Joc
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Publică pe Workshop editor.publish.workshop = Publică pe Workshop
@@ -495,6 +500,7 @@ editor.default = [lightgray]<Prestabilit>
details = Detalii... details = Detalii...
edit = Editează... edit = Editează...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Nume: editor.name = Nume:
editor.spawn = Adaugă Unitate editor.spawn = Adaugă Unitate
@@ -583,6 +589,7 @@ filter.clear = Curăță
filter.option.ignore = Ignoră filter.option.ignore = Ignoră
filter.scatter = Împrăștie filter.scatter = Împrăștie
filter.terrain = Teren filter.terrain = Teren
filter.logic = Logic
filter.option.scale = Scară filter.option.scale = Scară
filter.option.chance = Șansă filter.option.chance = Șansă
@@ -606,6 +613,8 @@ filter.option.floor2 = Podea Secundară
filter.option.threshold2 = Cantitate Secundară filter.option.threshold2 = Cantitate Secundară
filter.option.radius = Rază filter.option.radius = Rază
filter.option.percentile = Procent filter.option.percentile = Procent
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -974,6 +983,7 @@ stat.abilities = Abilități
stat.canboost = Are Propulsor stat.canboost = Are Propulsor
stat.flying = Zboară stat.flying = Zboară
stat.ammouse = Consum muniție stat.ammouse = Consum muniție
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Multiplicator Forță stat.damagemultiplier = Multiplicator Forță
stat.healthmultiplier = Multiplicator Viață stat.healthmultiplier = Multiplicator Viață
stat.speedmultiplier = Multiplicator Viteză stat.speedmultiplier = Multiplicator Viteză
@@ -1100,6 +1110,7 @@ unit.items = materiale
unit.thousands = mii unit.thousands = mii
unit.millions = mil unit.millions = mil
unit.billions = mld unit.billions = mld
unit.shots = shots
unit.pershot = /lovitură unit.pershot = /lovitură
category.purpose = Utilizare category.purpose = Utilizare
category.general = General category.general = General

View File

@@ -439,6 +439,11 @@ editor.rules = Правила:
editor.generation = Генерация: editor.generation = Генерация:
editor.objectives = Цели editor.objectives = Цели
editor.locales = Locale Bundles 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.ingame = Редактировать в игре
editor.playtest = Опробовать карту editor.playtest = Опробовать карту
editor.publish.workshop = Опубликовать в Мастерской editor.publish.workshop = Опубликовать в Мастерской
@@ -495,6 +500,7 @@ editor.default = [lightgray]<По умолчанию>
details = Подробности… details = Подробности…
edit = Редактировать… edit = Редактировать…
variables = Переменные variables = Переменные
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Название: editor.name = Название:
editor.spawn = Создать боевую единицу editor.spawn = Создать боевую единицу
@@ -583,6 +589,7 @@ filter.clear = Очистить
filter.option.ignore = Игнорировать filter.option.ignore = Игнорировать
filter.scatter = Сеятель filter.scatter = Сеятель
filter.terrain = Ландшафт filter.terrain = Ландшафт
filter.logic = Logic
filter.option.scale = Масштаб фильтра filter.option.scale = Масштаб фильтра
filter.option.chance = Шанс filter.option.chance = Шанс
@@ -606,6 +613,8 @@ filter.option.floor2 = Вторая поверхность
filter.option.threshold2 = Вторичный предельный порог filter.option.threshold2 = Вторичный предельный порог
filter.option.radius = Радиус filter.option.radius = Радиус
filter.option.percentile = Процентиль filter.option.percentile = Процентиль
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -975,6 +984,7 @@ stat.abilities = Способности
stat.canboost = Может взлететь stat.canboost = Может взлететь
stat.flying = Летающий stat.flying = Летающий
stat.ammouse = Использование боеприпасов stat.ammouse = Использование боеприпасов
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Множитель урона stat.damagemultiplier = Множитель урона
stat.healthmultiplier = Множитель прочности stat.healthmultiplier = Множитель прочности
stat.speedmultiplier = Множитель скорости stat.speedmultiplier = Множитель скорости
@@ -1100,6 +1110,7 @@ unit.items = предметов
unit.thousands = к unit.thousands = к
unit.millions = М unit.millions = М
unit.billions = кM unit.billions = кM
unit.shots = shots
unit.pershot = /выстрел unit.pershot = /выстрел
category.purpose = Назначение category.purpose = Назначение
category.general = Основные category.general = Основные

View File

@@ -439,6 +439,11 @@ editor.rules = Pravila:
editor.generation = Generisanje: editor.generation = Generisanje:
editor.objectives = Zadaci editor.objectives = Zadaci
editor.locales = Locale Bundles 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.ingame = Izmeni "U Igri"
editor.playtest = Testiranje editor.playtest = Testiranje
editor.publish.workshop = Objavi u Radionicu editor.publish.workshop = Objavi u Radionicu
@@ -495,6 +500,7 @@ editor.default = [lightgray]<Default>
details = Detalji... details = Detalji...
edit = Izmeni... edit = Izmeni...
variables = Varijabla variables = Varijabla
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Ime: editor.name = Ime:
editor.spawn = Prizovi Jedinicu editor.spawn = Prizovi Jedinicu
@@ -583,6 +589,7 @@ filter.clear = Očisti
filter.option.ignore = Ignoriši filter.option.ignore = Ignoriši
filter.scatter = Razbaci filter.scatter = Razbaci
filter.terrain = Teren filter.terrain = Teren
filter.logic = Logic
filter.option.scale = Razmera filter.option.scale = Razmera
filter.option.chance = Šansa filter.option.chance = Šansa
@@ -606,6 +613,8 @@ filter.option.floor2 = Drugi Pod
filter.option.threshold2 = Secondary Threshold filter.option.threshold2 = Secondary Threshold
filter.option.radius = Radius filter.option.radius = Radius
filter.option.percentile = Percentile 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.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -976,6 +985,7 @@ stat.abilities = Spospbnosti
stat.canboost = Može lebdeti stat.canboost = Može lebdeti
stat.flying = Leteća jedinica stat.flying = Leteća jedinica
stat.ammouse = Upotreba municije stat.ammouse = Upotreba municije
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Umnožavač štete stat.damagemultiplier = Umnožavač štete
stat.healthmultiplier = Umnožavač izdržljivosti stat.healthmultiplier = Umnožavač izdržljivosti
stat.speedmultiplier = Umnožavač brzine stat.speedmultiplier = Umnožavač brzine
@@ -1102,6 +1112,7 @@ unit.items = materijali
unit.thousands = hiljade unit.thousands = hiljade
unit.millions = milioni unit.millions = milioni
unit.billions = milijarde unit.billions = milijarde
unit.shots = shots
unit.pershot = /pucnju unit.pershot = /pucnju
category.purpose = Namena category.purpose = Namena
category.general = Opšte category.general = Opšte

View File

@@ -435,6 +435,11 @@ editor.rules = Regler:
editor.generation = Generering: editor.generation = Generering:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Edit In-Game
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Publish On Workshop editor.publish.workshop = Publish On Workshop
@@ -490,6 +495,7 @@ editor.default = [lightgray]<Default>
details = Details... details = Details...
edit = Redigera... edit = Redigera...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Namn: editor.name = Namn:
editor.spawn = Spawn Unit editor.spawn = Spawn Unit
@@ -577,6 +583,7 @@ filter.clear = Rensa
filter.option.ignore = Ignorera filter.option.ignore = Ignorera
filter.scatter = Sprid filter.scatter = Sprid
filter.terrain = Terräng filter.terrain = Terräng
filter.logic = Logic
filter.option.scale = Skala filter.option.scale = Skala
filter.option.chance = Chans filter.option.chance = Chans
filter.option.mag = Magnitud filter.option.mag = Magnitud
@@ -599,6 +606,8 @@ filter.option.floor2 = Secondary Floor
filter.option.threshold2 = Secondary Threshold filter.option.threshold2 = Secondary Threshold
filter.option.radius = Radie filter.option.radius = Radie
filter.option.percentile = Percentile 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.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -963,6 +972,7 @@ stat.abilities = Abilities
stat.canboost = Can Boost stat.canboost = Can Boost
stat.flying = Flying stat.flying = Flying
stat.ammouse = Ammo Use stat.ammouse = Ammo Use
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Damage Multiplier stat.damagemultiplier = Damage Multiplier
stat.healthmultiplier = Health Multiplier stat.healthmultiplier = Health Multiplier
stat.speedmultiplier = Speed Multiplier stat.speedmultiplier = Speed Multiplier
@@ -1089,6 +1099,7 @@ unit.items = föremål
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /shot unit.pershot = /shot
category.purpose = Purpose category.purpose = Purpose
category.general = Allmänt category.general = Allmänt

View File

@@ -439,6 +439,11 @@ editor.rules = กฎ
editor.generation = เจนเนอเรชั่น editor.generation = เจนเนอเรชั่น
editor.objectives = เป้าหมาย editor.objectives = เป้าหมาย
editor.locales = Locale Bundles 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.ingame = แก้ไขในเกม
editor.playtest = เล่นทดสอบ editor.playtest = เล่นทดสอบ
editor.publish.workshop = เผยแพร่บนเวิร์กช็อป editor.publish.workshop = เผยแพร่บนเวิร์กช็อป
@@ -495,6 +500,7 @@ editor.default = [lightgray]<ค่าเริ่มต้น>
details = รายละเอียด... details = รายละเอียด...
edit = แก้ไข... edit = แก้ไข...
variables = ตัวแปร variables = ตัวแปร
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = ชื่อ: editor.name = ชื่อ:
editor.spawn = สร้างยูนิต editor.spawn = สร้างยูนิต
@@ -583,6 +589,7 @@ filter.clear = เคลียร์
filter.option.ignore = เพิกเฉย filter.option.ignore = เพิกเฉย
filter.scatter = กระจาย filter.scatter = กระจาย
filter.terrain = พื้นผิว filter.terrain = พื้นผิว
filter.logic = Logic
filter.option.scale = มาตราส่วน filter.option.scale = มาตราส่วน
filter.option.chance = โอกาส filter.option.chance = โอกาส
@@ -606,6 +613,8 @@ filter.option.floor2 = พื้นชั้นสอง
filter.option.threshold2 = เกณฑ์ชั้นสอง filter.option.threshold2 = เกณฑ์ชั้นสอง
filter.option.radius = รัศมี filter.option.radius = รัศมี
filter.option.percentile = เปอร์เซ็นต์ไทล์ filter.option.percentile = เปอร์เซ็นต์ไทล์
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -976,6 +985,7 @@ stat.abilities = ทักษะ
stat.canboost = บูสต์ได้ stat.canboost = บูสต์ได้
stat.flying = บินได้ stat.flying = บินได้
stat.ammouse = การใช้กระสุน stat.ammouse = การใช้กระสุน
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = พหุคูณดาเมจ stat.damagemultiplier = พหุคูณดาเมจ
stat.healthmultiplier = พหุคูณพลังชีวิต stat.healthmultiplier = พหุคูณพลังชีวิต
stat.speedmultiplier = พหุคูณความเร็ว stat.speedmultiplier = พหุคูณความเร็ว
@@ -1101,6 +1111,7 @@ unit.items = ไอเท็ม
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /การยิง unit.pershot = /การยิง
category.purpose = วัตถุประสงค์ category.purpose = วัตถุประสงค์
category.general = ทั่วไป category.general = ทั่วไป

View File

@@ -435,6 +435,11 @@ editor.rules = Rules:
editor.generation = Generation: editor.generation = Generation:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = Edit In-Game
editor.playtest = Playtest editor.playtest = Playtest
editor.publish.workshop = Publish On Workshop editor.publish.workshop = Publish On Workshop
@@ -490,6 +495,7 @@ editor.default = [lightgray]<Default>
details = Details... details = Details...
edit = Edit... edit = Edit...
variables = Vars variables = Vars
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = isim: editor.name = isim:
editor.spawn = Spawn Unit editor.spawn = Spawn Unit
@@ -577,6 +583,7 @@ filter.clear = Clear
filter.option.ignore = Ignore filter.option.ignore = Ignore
filter.scatter = Scatter filter.scatter = Scatter
filter.terrain = Terrain filter.terrain = Terrain
filter.logic = Logic
filter.option.scale = Scale filter.option.scale = Scale
filter.option.chance = Chance filter.option.chance = Chance
filter.option.mag = Magnitude filter.option.mag = Magnitude
@@ -599,6 +606,8 @@ filter.option.floor2 = Secondary Floor
filter.option.threshold2 = Secondary Threshold filter.option.threshold2 = Secondary Threshold
filter.option.radius = Radius filter.option.radius = Radius
filter.option.percentile = Percentile 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.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -963,6 +972,7 @@ stat.abilities = Abilities
stat.canboost = Can Boost stat.canboost = Can Boost
stat.flying = Flying stat.flying = Flying
stat.ammouse = Ammo Use stat.ammouse = Ammo Use
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Damage Multiplier stat.damagemultiplier = Damage Multiplier
stat.healthmultiplier = Health Multiplier stat.healthmultiplier = Health Multiplier
stat.speedmultiplier = Speed Multiplier stat.speedmultiplier = Speed Multiplier
@@ -1089,6 +1099,7 @@ unit.items = esya
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /shot unit.pershot = /shot
category.purpose = Purpose category.purpose = Purpose
category.general = General category.general = General

View File

@@ -439,6 +439,11 @@ editor.rules = Kurallar:
editor.generation = Oluşum: editor.generation = Oluşum:
editor.objectives = Görevler: editor.objectives = Görevler:
editor.locales = Locale Bundles 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 = Oyun içinde düzenle editor.ingame = Oyun içinde düzenle
editor.playtest = Test Et editor.playtest = Test Et
editor.publish.workshop = Atölyede Yayınla editor.publish.workshop = Atölyede Yayınla
@@ -495,6 +500,7 @@ editor.default = [lightgray]<Varsayılan>
details = Detaylar... details = Detaylar...
edit = Düzenle... edit = Düzenle...
variables = Değişkenler variables = Değişkenler
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = İsim: editor.name = İsim:
editor.spawn = Birim Oluştur editor.spawn = Birim Oluştur
@@ -583,6 +589,7 @@ filter.clear = Temizle
filter.option.ignore = Yoksay filter.option.ignore = Yoksay
filter.scatter = Saç filter.scatter = Saç
filter.terrain = Arazi filter.terrain = Arazi
filter.logic = Logic
filter.option.scale = Ölçek filter.option.scale = Ölçek
filter.option.chance = Şans filter.option.chance = Şans
@@ -606,6 +613,8 @@ filter.option.floor2 = İkincil Duvar
filter.option.threshold2 = İkincil Eşik filter.option.threshold2 = İkincil Eşik
filter.option.radius = Yarıçap filter.option.radius = Yarıçap
filter.option.percentile = Yüzdelik filter.option.percentile = Yüzdelik
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.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -973,6 +982,7 @@ stat.abilities = Kabiliyetler
stat.canboost = İstekli Uçabilir stat.canboost = İstekli Uçabilir
stat.flying = Uçuyor stat.flying = Uçuyor
stat.ammouse = Mermi Kullanıyor stat.ammouse = Mermi Kullanıyor
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Hasar Çarpanı stat.damagemultiplier = Hasar Çarpanı
stat.healthmultiplier = Can Çarpanı stat.healthmultiplier = Can Çarpanı
stat.speedmultiplier = Hız Çarpanı stat.speedmultiplier = Hız Çarpanı
@@ -1098,6 +1108,7 @@ unit.items = eşya
unit.thousands = k unit.thousands = k
unit.millions = m unit.millions = m
unit.billions = b unit.billions = b
unit.shots = shots
unit.pershot = /vuruş unit.pershot = /vuruş
category.purpose = ıklama category.purpose = ıklama
category.general = Genel category.general = Genel

View File

@@ -441,6 +441,11 @@ editor.rules = Правила
editor.generation = Генерація editor.generation = Генерація
editor.objectives = Завдання editor.objectives = Завдання
editor.locales = Locale Bundles 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.ingame = Редагувати в грі
editor.playtest = Протестувати в грі editor.playtest = Протестувати в грі
editor.publish.workshop = Опублікувати в Майстерні Steam editor.publish.workshop = Опублікувати в Майстерні Steam
@@ -497,6 +502,7 @@ editor.default = [lightgray]<За замовчуванням>
details = Подробиці… details = Подробиці…
edit = Змінити… edit = Змінити…
variables = Змінні variables = Змінні
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = Ім’я: editor.name = Ім’я:
editor.spawn = Створити бойову одиницю editor.spawn = Створити бойову одиницю
@@ -586,6 +592,7 @@ filter.clear = Очистити
filter.option.ignore = Ігнорувати filter.option.ignore = Ігнорувати
filter.scatter = Розсіювач filter.scatter = Розсіювач
filter.terrain = Ландшафт filter.terrain = Ландшафт
filter.logic = Logic
filter.option.scale = Масштаб фільтра filter.option.scale = Масштаб фільтра
filter.option.chance = Шанс filter.option.chance = Шанс
@@ -609,6 +616,8 @@ filter.option.floor2 = Друга поверхня
filter.option.threshold2 = Вторинний граничний поріг filter.option.threshold2 = Вторинний граничний поріг
filter.option.radius = Радіус filter.option.radius = Радіус
filter.option.percentile = Спад filter.option.percentile = Спад
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -984,6 +993,7 @@ stat.abilities = Здібності
stat.canboost = Можна прискорити stat.canboost = Можна прискорити
stat.flying = Літає stat.flying = Літає
stat.ammouse = Патронів використовує stat.ammouse = Патронів використовує
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = Множник шкоди stat.damagemultiplier = Множник шкоди
stat.healthmultiplier = Множник здоров’я stat.healthmultiplier = Множник здоров’я
stat.speedmultiplier = Множник швидкості stat.speedmultiplier = Множник швидкості
@@ -1109,6 +1119,7 @@ unit.items = предм.
unit.thousands = тис unit.thousands = тис
unit.millions = млн unit.millions = млн
unit.billions = млрд unit.billions = млрд
unit.shots = shots
unit.pershot = за постріл unit.pershot = за постріл
category.purpose = Призначення category.purpose = Призначення
category.general = Загальне category.general = Загальне

File diff suppressed because it is too large Load Diff

View File

@@ -442,6 +442,11 @@ editor.rules = 规则
editor.generation = 生成 editor.generation = 生成
editor.objectives = 目标 editor.objectives = 目标
editor.locales = 本地化语言包 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.ingame = 游戏内编辑
editor.playtest = 游戏内测试 editor.playtest = 游戏内测试
editor.publish.workshop = 上传到创意工坊 editor.publish.workshop = 上传到创意工坊
@@ -498,6 +503,7 @@ editor.default = [lightgray]<默认>
details = 详情… details = 详情…
edit = 编辑… edit = 编辑…
variables = 变量 variables = 变量
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = 内置变量 logic.globals = 内置变量
editor.name = 名称: editor.name = 名称:
editor.spawn = 生成单位 editor.spawn = 生成单位
@@ -587,6 +593,7 @@ filter.clear = 替换
filter.option.ignore = 忽略 filter.option.ignore = 忽略
filter.scatter = 散布 filter.scatter = 散布
filter.terrain = 地图边界 filter.terrain = 地图边界
filter.logic = Logic
filter.option.scale = 缩放 filter.option.scale = 缩放
filter.option.chance = 散布数量 filter.option.chance = 散布数量
@@ -610,6 +617,8 @@ filter.option.floor2 = 内层地形
filter.option.threshold2 = 内层比例 filter.option.threshold2 = 内层比例
filter.option.radius = 半径 filter.option.radius = 半径
filter.option.percentile = 百分比 filter.option.percentile = 百分比
filter.option.code = Code
filter.option.loop = Loop
locales.info = 在这里,您可以为特定语言添加本地化语言包到您的地图中。在本地化语言包中,每个文本属性都有一个名称和一个值。这些文本属性可以由世界处理器和游戏目标使用它们的名称。它们支持文本格式化(用实际值替换占位符)。\n\n[cyan]示例文本属性:\n[]名称: [accent]timer[]值: [accent]示例计时器, 剩余时间: {0}[]\n\n[cyan]用法:\n[]将其设置为目标的文本: [accent]@timer\n\n[]在世界处理器中打印它:\n[accent]localeprint "timer"\n格式化时间\n[gray](时间是一个单独计算的变量) locales.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.deletelocale = 您确定要删除该本地化语言包吗?
locales.applytoall = 将更改应用于所有本地化语言包 locales.applytoall = 将更改应用于所有本地化语言包
@@ -985,6 +994,7 @@ stat.abilities = 能力
stat.canboost = 可助推 stat.canboost = 可助推
stat.flying = 空中单位 stat.flying = 空中单位
stat.ammouse = 弹药 stat.ammouse = 弹药
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = 伤害倍率 stat.damagemultiplier = 伤害倍率
stat.healthmultiplier = 生命值倍率 stat.healthmultiplier = 生命值倍率
stat.speedmultiplier = 移动速度倍率 stat.speedmultiplier = 移动速度倍率
@@ -1111,6 +1121,7 @@ unit.items = 物品
unit.thousands = K unit.thousands = K
unit.millions = M unit.millions = M
unit.billions = B unit.billions = B
unit.shots = shots
unit.pershot = /发 unit.pershot = /发
category.purpose = 用途 category.purpose = 用途
category.general = 基础 category.general = 基础

View File

@@ -439,6 +439,11 @@ editor.rules = 規則:
editor.generation = 自動生成: editor.generation = 自動生成:
editor.objectives = Objectives editor.objectives = Objectives
editor.locales = Locale Bundles 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.ingame = 在遊戲中編輯
editor.playtest = 測試 editor.playtest = 測試
editor.publish.workshop = 在工作坊上發佈 editor.publish.workshop = 在工作坊上發佈
@@ -495,6 +500,7 @@ editor.default = [lightgray](預設)
details = 詳細資訊…… details = 詳細資訊……
edit = 編輯…… edit = 編輯……
variables = 變數 variables = 變數
logic.clear.confirm = Are you sure you want to clear all code from this processor?
logic.globals = Built-in Variables logic.globals = Built-in Variables
editor.name = 名稱: editor.name = 名稱:
editor.spawn = 重生單位 editor.spawn = 重生單位
@@ -584,6 +590,7 @@ filter.clear = 清除
filter.option.ignore = 忽略 filter.option.ignore = 忽略
filter.scatter = 分散 filter.scatter = 分散
filter.terrain = 地形 filter.terrain = 地形
filter.logic = Logic
filter.option.scale = 規模 filter.option.scale = 規模
filter.option.chance = 機會 filter.option.chance = 機會
@@ -607,6 +614,8 @@ filter.option.floor2 = 次要地板
filter.option.threshold2 = 次要閾值 filter.option.threshold2 = 次要閾值
filter.option.radius = 半徑 filter.option.radius = 半徑
filter.option.percentile = 百分比 filter.option.percentile = 百分比
filter.option.code = Code
filter.option.loop = Loop
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) locales.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.deletelocale = Are you sure you want to delete this locale bundle?
locales.applytoall = Apply Changes To All Locales locales.applytoall = Apply Changes To All Locales
@@ -981,6 +990,7 @@ stat.abilities = 能力
stat.canboost = 推進器 stat.canboost = 推進器
stat.flying = 飛行單位 stat.flying = 飛行單位
stat.ammouse = 彈藥使用 stat.ammouse = 彈藥使用
stat.ammocapacity = Ammo Capacity
stat.damagemultiplier = 傷害加成 stat.damagemultiplier = 傷害加成
stat.healthmultiplier = 血量加成 stat.healthmultiplier = 血量加成
stat.speedmultiplier = 速度加成 stat.speedmultiplier = 速度加成
@@ -1106,6 +1116,7 @@ unit.items = 物品
unit.thousands = K unit.thousands = K
unit.millions = M unit.millions = M
unit.billions = B unit.billions = B
unit.shots = shots
unit.pershot = /發 unit.pershot = /發
category.purpose = 用途 category.purpose = 用途
category.general = 一般 category.general = 一般

View File

@@ -166,3 +166,4 @@ BalaM314
Redstonneur1256 Redstonneur1256
ApsZoldat ApsZoldat
Mythril Mythril
hexagon-recursion

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -66,7 +66,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
Time.setDeltaProvider(() -> { Time.setDeltaProvider(() -> {
float result = Core.graphics.getDeltaTime() * 60f; 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(); UI.loadColors();

View File

@@ -137,6 +137,13 @@ public class Vars implements Loadable{
Color.valueOf("4b5ef1"), Color.valueOf("4b5ef1"),
Color.valueOf("2cabfe"), 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 */ /** maximum TCP packet size */
public static final int maxTcpSize = 900; public static final int maxTcpSize = 900;
/** default server port */ /** default server port */
@@ -147,6 +154,8 @@ public class Vars implements Loadable{
public static final int maxModSubtitleLength = 40; public static final int maxModSubtitleLength = 40;
/** multicast group for discovery.*/ /** multicast group for discovery.*/
public static final String multicastGroup = "227.2.7.7"; 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 */ /** whether the graphical game client has loaded */
public static boolean clientLoaded = false; public static boolean clientLoaded = false;
/** max GL texture size */ /** max GL texture size */

View File

@@ -130,13 +130,13 @@ public class BlockIndexer{
data.turretTree.remove(build); data.turretTree.remove(build);
} }
//is no longer registered
build.wasDamaged = false;
//unregister damaged buildings //unregister damaged buildings
if(build.damaged() && damagedTiles[team.id] != null){ if(build.wasDamaged && damagedTiles[team.id] != null){
damagedTiles[team.id].remove(build); damagedTiles[team.id].remove(build);
} }
//is no longer registered
build.wasDamaged = false;
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -77,6 +77,7 @@ public class RtsAI{
} }
public void update(){ public void update(){
if(timer.get(timeUpdate, 60f * 2f)){ if(timer.get(timeUpdate, 60f * 2f)){
assignSquads(); assignSquads();
checkBuilding(); checkBuilding();

View File

@@ -4,7 +4,6 @@ import arc.math.*;
import arc.math.geom.*; import arc.math.geom.*;
import arc.struct.*; import arc.struct.*;
import arc.util.*; import arc.util.*;
import mindustry.*;
import mindustry.ai.*; import mindustry.ai.*;
import mindustry.core.*; import mindustry.core.*;
import mindustry.entities.*; import mindustry.entities.*;
@@ -35,7 +34,6 @@ public class CommandAI extends AIController{
protected boolean stopAtTarget, stopWhenInRange; protected boolean stopAtTarget, stopWhenInRange;
protected Vec2 lastTargetPos; protected Vec2 lastTargetPos;
protected int pathId = -1;
protected boolean blockingUnit; protected boolean blockingUnit;
protected float timeSpentBlocked; protected float timeSpentBlocked;
@@ -205,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){ if(targetPos != null){
boolean move = true, isFinalPoint = commandQueue.size == 0; boolean move = true, isFinalPoint = commandQueue.size == 0;
vecOut.set(targetPos); vecOut.set(targetPos);
@@ -221,6 +224,7 @@ public class CommandAI extends AIController{
} }
if(unit.isGrounded() && stance != UnitStance.ram){ if(unit.isGrounded() && stance != UnitStance.ram){
//TODO: blocking enable or disable?
if(timer.get(timerTarget3, avoidInterval)){ if(timer.get(timerTarget3, avoidInterval)){
Vec2 dstPos = Tmp.v1.trns(unit.rotation, unit.hitSize/2f); Vec2 dstPos = Tmp.v1.trns(unit.rotation, unit.hitSize/2f);
float max = unit.hitSize/2f; float max = unit.hitSize/2f;
@@ -248,8 +252,18 @@ public class CommandAI extends AIController{
timeSpentBlocked = 0f; timeSpentBlocked = 0f;
} }
//if you've spent 3 seconds stuck, something is wrong, move regardless //if the unit is next to the target, stop asking the pathfinder how to get there, it's a waste of CPU
move = Vars.controlPath.getPathPosition(unit, pathId, vecMovePos, vecOut, noFound) && (!blockingUnit || timeSpentBlocked > maxBlockTime); //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 //we've reached the final point if the returned coordinate is equal to the supplied input
isFinalPoint &= vecMovePos.epsilonEquals(vecOut, 4.1f); isFinalPoint &= vecMovePos.epsilonEquals(vecOut, 4.1f);
@@ -266,18 +280,16 @@ public class CommandAI extends AIController{
vecOut.set(vecMovePos); vecOut.set(vecMovePos);
} }
float engageRange = unit.type.range - 10f;
if(move){ if(move){
if(unit.type.circleTarget && attackTarget != null){ if(unit.type.circleTarget && attackTarget != null){
target = attackTarget; target = attackTarget;
circleAttack(80f); circleAttack(80f);
}else{ }else{
moveTo(vecOut, moveTo(vecOut,
attackTarget != null && unit.within(attackTarget, engageRange) && stance != UnitStance.ram ? engageRange : withinAttackRange ? engageRange :
unit.isGrounded() ? 0f : unit.isGrounded() ? 0f :
attackTarget != null && stance != UnitStance.ram ? engageRange : attackTarget != null && stance != UnitStance.ram ? engageRange : 0f,
0f, unit.isFlying() ? 40f : 100f, false, null, isFinalPoint); unit.isFlying() ? 40f : 100f, false, null, isFinalPoint || alwaysArrive);
} }
} }
@@ -417,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 //this is an allocation, but it's relatively rarely called anyway, and outside mutations must be prevented
targetPos = lastTargetPos = pos.cpy(); targetPos = lastTargetPos = pos.cpy();
attackTarget = null; attackTarget = null;
pathId = Vars.controlPath.nextTargetId();
this.stopWhenInRange = stopWhenInRange; this.stopWhenInRange = stopWhenInRange;
} }
@@ -432,7 +443,6 @@ public class CommandAI extends AIController{
public void commandTarget(Teamc moveTo, boolean stopAtTarget){ public void commandTarget(Teamc moveTo, boolean stopAtTarget){
attackTarget = moveTo; attackTarget = moveTo;
this.stopAtTarget = stopAtTarget; this.stopAtTarget = stopAtTarget;
pathId = Vars.controlPath.nextTargetId();
} }
/* /*

View File

@@ -3,7 +3,6 @@ package mindustry.ai.types;
import arc.math.*; import arc.math.*;
import arc.struct.*; import arc.struct.*;
import arc.util.*; import arc.util.*;
import mindustry.*;
import mindustry.ai.*; import mindustry.ai.*;
import mindustry.entities.units.*; import mindustry.entities.units.*;
import mindustry.gen.*; import mindustry.gen.*;
@@ -41,8 +40,6 @@ public class LogicAI extends AIController{
public PosTeam posTarget = PosTeam.create(); public PosTeam posTarget = PosTeam.create();
private ObjectSet<Object> radars = new ObjectSet<>(); private ObjectSet<Object> radars = new ObjectSet<>();
private float lastMoveX, lastMoveY;
private int lastPathId = 0;
// LogicAI state should not be reset after reading. // LogicAI state should not be reset after reading.
@Override @Override
@@ -52,14 +49,6 @@ public class LogicAI extends AIController{
@Override @Override
public void updateMovement(){ 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){ if(targetTimer > 0f){
targetTimer -= Time.delta; targetTimer -= Time.delta;
}else{ }else{
@@ -86,7 +75,7 @@ public class LogicAI extends AIController{
if(unit.isFlying()){ if(unit.isFlying()){
moveTo(Tmp.v1.set(moveX, moveY), 1f, 30f); moveTo(Tmp.v1.set(moveX, moveY), 1f, 30f);
}else{ }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); moveTo(Tmp.v1, 1f, Tmp.v2.epsilonEquals(Tmp.v1, 4.1f) ? 30f : 0f);
} }
} }

View File

@@ -4049,7 +4049,7 @@ public class Blocks{
researchCostMultiplier = 0.05f; researchCostMultiplier = 0.05f;
coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f)); coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f));
limitRange(); limitRange(12f);
}}; }};
diffuse = new ItemTurret("diffuse"){{ diffuse = new ItemTurret("diffuse"){{
@@ -4108,7 +4108,7 @@ public class Blocks{
rotateSpeed = 3f; rotateSpeed = 3f;
coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f)); coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f));
limitRange(); limitRange(25f);
}}; }};
sublimate = new ContinuousLiquidTurret("sublimate"){{ sublimate = new ContinuousLiquidTurret("sublimate"){{
@@ -4358,7 +4358,7 @@ public class Blocks{
coolant = consume(new ConsumeLiquid(Liquids.water, 20f / 60f)); coolant = consume(new ConsumeLiquid(Liquids.water, 20f / 60f));
coolantMultiplier = 2.5f; coolantMultiplier = 2.5f;
limitRange(-5f); limitRange(5f);
}}; }};
afflict = new PowerTurret("afflict"){{ afflict = new PowerTurret("afflict"){{

View File

@@ -37,7 +37,9 @@ public class Bullets{
damageLightningGround = damageLightning.copy(); damageLightningGround = damageLightning.copy();
damageLightningGround.collidesAir = false; damageLightningGround.collidesAir = false;
fireball = new FireBulletType(1f, 4); fireball = new FireBulletType(1f, 4){{
hittable = false;
}};
spaceLiquid = new SpaceLiquidBulletType(){{ spaceLiquid = new SpaceLiquidBulletType(){{
knockback = 0.7f; knockback = 0.7f;

View File

@@ -2434,13 +2434,10 @@ public class Fx{
shieldBreak = new Effect(40, e -> { shieldBreak = new Effect(40, e -> {
color(e.color); color(e.color);
stroke(3f * e.fout()); stroke(3f * e.fout());
if(e.data instanceof Unit u){ if(e.data instanceof ForceFieldAbility ab){
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); Lines.poly(e.x, e.y, ab.sides, e.rotation + e.fin(), ab.rotation);
return; return;
} }
}
Lines.poly(e.x, e.y, 6, e.rotation + e.fin()); Lines.poly(e.x, e.y, 6, e.rotation + e.fin());
}).followParent(true), }).followParent(true),
@@ -2584,7 +2581,7 @@ public class Fx{
if(!(e.data instanceof Vec2[] vec)) return; if(!(e.data instanceof Vec2[] vec)) return;
Draw.color(e.color); Draw.color(e.color);
Lines.stroke(1f); Lines.stroke(2f);
if(vec.length == 2){ if(vec.length == 2){
Lines.line(vec[0].x, vec[0].y, vec[1].x, vec[1].y); Lines.line(vec[0].x, vec[0].y, vec[1].x, vec[1].y);
@@ -2595,6 +2592,16 @@ public class Fx{
Lines.endLine(); Lines.endLine();
} }
Draw.reset();
}),
debugRect = new Effect(90f, 1000000000000f, e -> {
if(!(e.data instanceof Rect rect)) return;
Draw.color(e.color);
Lines.stroke(2f);
Lines.rect(rect);
Draw.reset(); Draw.reset();
}); });
} }

View File

@@ -2,6 +2,7 @@ package mindustry.core;
import arc.*; import arc.*;
import arc.assets.loaders.TextureLoader.*; import arc.assets.loaders.TextureLoader.*;
import arc.audio.*;
import arc.files.*; import arc.files.*;
import arc.graphics.*; import arc.graphics.*;
import arc.graphics.Texture.*; import arc.graphics.Texture.*;
@@ -554,6 +555,11 @@ public class Renderer implements ApplicationListener{
landTime = landCore.landDuration(); landTime = landCore.landDuration();
launchCoreType = coreType; launchCoreType = coreType;
Music music = landCore.launchMusic();
music.stop();
music.play();
music.setVolume(settings.getInt("musicvol") / 100f);
landCore.beginLaunch(coreType); landCore.beginLaunch(coreType);
} }

View File

@@ -147,6 +147,11 @@ public abstract class UnlockableContent extends MappableContent{
return Fonts.getUnicodeStr(name); return Fonts.getUnicodeStr(name);
} }
public int emojiChar(){
return Fonts.getUnicode(name);
}
public boolean hasEmoji(){ public boolean hasEmoji(){
return Fonts.hasUnicodeStr(name); return Fonts.hasUnicodeStr(name);
} }

View File

@@ -24,7 +24,6 @@ import mindustry.gen.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.io.*; import mindustry.io.*;
import mindustry.maps.*; import mindustry.maps.*;
import mindustry.type.*;
import mindustry.ui.*; import mindustry.ui.*;
import mindustry.ui.dialogs.*; import mindustry.ui.dialogs.*;
import mindustry.world.*; import mindustry.world.*;
@@ -212,11 +211,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
margin(0); margin(0);
update(() -> { update(() -> {
if(Core.scene.getKeyboardFocus() instanceof Dialog && Core.scene.getKeyboardFocus() != this){ if(hasKeyboard()){
return;
}
if(Core.scene != null && Core.scene.getKeyboardFocus() == this){
doInput(); doInput();
} }
}); });

View File

@@ -14,16 +14,15 @@ import mindustry.ui.dialogs.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public class MapInfoDialog extends BaseDialog{ public class MapInfoDialog extends BaseDialog{
private final WaveInfoDialog waveInfo; private WaveInfoDialog waveInfo = new WaveInfoDialog();
private final MapGenerateDialog generate; private MapGenerateDialog generate = new MapGenerateDialog(false);
private final CustomRulesDialog ruleInfo = new CustomRulesDialog(); private CustomRulesDialog ruleInfo = new CustomRulesDialog();
private final MapObjectivesDialog objectives = new MapObjectivesDialog(); private MapObjectivesDialog objectives = new MapObjectivesDialog();
private final MapLocalesDialog locales = new MapLocalesDialog(); private MapLocalesDialog locales = new MapLocalesDialog();
private MapProcessorsDialog processors = new MapProcessorsDialog();
public MapInfoDialog(){ public MapInfoDialog(){
super("@editor.mapinfo"); super("@editor.mapinfo");
this.waveInfo = new WaveInfoDialog();
this.generate = new MapGenerateDialog(false);
addCloseButton(); addCloseButton();
@@ -108,7 +107,12 @@ public class MapInfoDialog extends BaseDialog{
ui.showException(e); ui.showException(e);
} }
hide(); 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(); }).colspan(2).center();
name.change(); name.change();

View File

@@ -0,0 +1,155 @@
package mindustry.editor;
import arc.scene.style.*;
import arc.scene.ui.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import mindustry.*;
import mindustry.content.*;
import mindustry.game.*;
import mindustry.gen.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
import mindustry.world.*;
import mindustry.world.blocks.environment.*;
import mindustry.world.blocks.logic.*;
import mindustry.world.blocks.logic.LogicBlock.*;
import static mindustry.Vars.*;
public class MapProcessorsDialog extends BaseDialog{
private IconSelectDialog iconSelect = new IconSelectDialog();
private TextField search;
private Seq<Building> processors = new Seq<>();
private Table list;
public MapProcessorsDialog(){
super("@editor.worldprocessors");
shown(this::setup);
addCloseButton();
buttons.button("@add", Icon.add, () -> {
boolean foundAny = false;
outer:
for(int y = 0; y < Vars.world.height(); y++){
for(int x = 0; x < Vars.world.width(); x++){
Tile tile = Vars.world.rawTile(x, y);
if(!tile.synthetic()){
foundAny = true;
tile.setNet(Blocks.worldProcessor, Team.sharded, 0);
if(ui.editor.isShown()){
Vars.editor.renderer.updatePoint(x, y);
}
break outer;
}
}
}
if(!foundAny){
ui.showErrorMessage("@editor.worldprocessors.nospace");
}else{
setup();
}
}).size(210f, 64f);
cont.top();
getCell(cont).grow();
cont.table(s -> {
s.image(Icon.zoom).padRight(8);
search = s.field(null, text -> rebuild()).growX().get();
search.setMessageText("@players.search");
}).width(440f).fillX().padBottom(4).row();
cont.pane(t -> {
list = t;
});
}
private void rebuild(){
list.clearChildren();
if(processors.isEmpty()){
list.add("@editor.worldprocessors.none");
}else{
Table t = list;
var text = search.getText().toLowerCase();
t.defaults().pad(4f);
float h = 50f;
for(var build : processors){
if(build instanceof LogicBuild log && (text.isEmpty() || (log.tag != null && log.tag.toLowerCase().contains(text)))){
t.button(log.iconTag == 0 ? Styles.none : new TextureRegionDrawable(Fonts.getLargeIcon(Fonts.unicodeToName(log.iconTag))), Styles.graySquarei, iconMed, () -> {
iconSelect.show(ic -> {
log.iconTag = (char)ic;
rebuild();
});
}).size(h);
t.button((log.tag == null ? "<no name>\n" : "[accent]" + log.tag + "\n") + "[lightgray][[" + log.tile.x + ", " + log.tile.y + "]", Styles.grayt, () -> {
//TODO: bug: if you edit name inside of the edit dialog, it won't show up in the list properly
log.showEditDialog(true);
}).size(Vars.mobile ? 390f : 450f, h).margin(10f).with(b -> {
b.getLabel().setAlignment(Align.left, Align.left);
});
t.button(Icon.pencil, Styles.graySquarei, Vars.iconMed, () -> {
ui.showTextInput("", "@editor.name", LogicBlock.maxNameLength, log.tag == null ? "" : log.tag, tag -> {
//bypass configuration and set it directly in case privileged checks mess things up
log.tag = tag;
setup();
});
}).size(h);
if(Vars.state.isGame() && state.isEditor()){
t.button(Icon.eyeSmall, Styles.graySquarei, Vars.iconMed, () -> {
hide();
control.input.config.showConfig(build);
control.input.panCamera(Tmp.v1.set(build));
}).size(h);
}
t.button(Icon.trash, Styles.graySquarei, iconMed, () -> {
ui.showConfirm("@editor.worldprocessors.delete.confirm", () -> {
boolean surrounded = true;
for(int i = 0; i < 4; i++){
Tile other = build.tile.nearby(i);
if(other != null && !(other.block().privileged || other.block().isStatic())){
surrounded = false;
break;
}
}
if(surrounded){
build.tile.setNet(build.tile.floor().wall instanceof StaticWall ? build.tile.floor().wall : Blocks.stoneWall);
}else{
build.tile.setNet(Blocks.air);
}
processors.remove(build);
rebuild();
});
}).size(h);
t.row();
}
}
}
}
private void setup(){
processors.clear();
//scan the entire world for processor (Groups.build can be empty, indexer is probably inaccurate)
Vars.world.tiles.eachTile(t -> {
if(t.isCenter() && t.block() == Blocks.worldProcessor){
processors.add(t.build);
}
});
rebuild();
}
}

View File

@@ -25,7 +25,6 @@ public class Damage{
private static final Rect rect = new Rect(); private static final Rect rect = new Rect();
private static final Rect hitrect = new Rect(); private static final Rect hitrect = new Rect();
private static final Vec2 vec = new Vec2(), seg1 = new Vec2(), seg2 = new Vec2(); private static final Vec2 vec = new Vec2(), seg1 = new Vec2(), seg2 = new Vec2();
private static final Seq<Unit> units = new Seq<>();
private static final IntSet collidedBlocks = new IntSet(); private static final IntSet collidedBlocks = new IntSet();
private static final IntFloatMap damages = new IntFloatMap(); private static final IntFloatMap damages = new IntFloatMap();
private static final Seq<Collided> collided = new Seq<>(); private static final Seq<Collided> collided = new Seq<>();
@@ -41,6 +40,7 @@ public class Damage{
public static void applySuppression(Team team, float x, float y, float range, float reload, float maxDelay, float applyParticleChance, @Nullable Position source){ public static void applySuppression(Team team, float x, float y, float range, float reload, float maxDelay, float applyParticleChance, @Nullable Position source){
applySuppression(team, x, y, range, reload, maxDelay, applyParticleChance, source, Pal.sapBullet); applySuppression(team, x, y, range, reload, maxDelay, applyParticleChance, source, Pal.sapBullet);
} }
public static void applySuppression(Team team, float x, float y, float range, float reload, float maxDelay, float applyParticleChance, @Nullable Position source, Color effectColor){ public static void applySuppression(Team team, float x, float y, float range, float reload, float maxDelay, float applyParticleChance, @Nullable Position source, Color effectColor){
builds.clear(); builds.clear();
indexer.eachBlock(null, x, y, range, build -> build.team != team, build -> { indexer.eachBlock(null, x, y, range, build -> build.team != team, build -> {
@@ -175,6 +175,7 @@ public class Damage{
distances.clear(); distances.clear();
if(b.type.collidesGround && b.type.collidesTiles){
World.raycast(b.tileX(), b.tileY(), World.toTile(b.x + vec.x), World.toTile(b.y + vec.y), (x, y) -> { World.raycast(b.tileX(), b.tileY(), World.toTile(b.x + vec.x), World.toTile(b.y + vec.y), (x, y) -> {
//add distance to list so it can be processed //add distance to list so it can be processed
var build = world.build(x, y); var build = world.build(x, y);
@@ -190,6 +191,7 @@ public class Damage{
return false; return false;
}); });
}
Units.nearbyEnemies(b.team, rect, u -> { Units.nearbyEnemies(b.team, rect, u -> {
u.hitbox(hitrect); u.hitbox(hitrect);
@@ -247,7 +249,7 @@ public class Damage{
collidedBlocks.clear(); collidedBlocks.clear();
vec.trnsExact(angle, length); vec.trnsExact(angle, length);
if(hitter.type.collidesGround){ if(hitter.type.collidesGround && hitter.type.collidesTiles){
seg1.set(x, y); seg1.set(x, y);
seg2.set(seg1).add(vec); seg2.set(seg1).add(vec);
World.raycastEachWorld(x, y, seg2.x, seg2.y, (cx, cy) -> { World.raycastEachWorld(x, y, seg2.x, seg2.y, (cx, cy) -> {

View File

@@ -32,6 +32,7 @@ public class ForceFieldAbility extends Ability{
/** State. */ /** State. */
protected float radiusScale, alpha; protected float radiusScale, alpha;
protected boolean wasBroken = true;
private static float realRad; private static float realRad;
private static Unit paramUnit; private static Unit paramUnit;
@@ -41,13 +42,6 @@ public class ForceFieldAbility extends Ability{
trait.absorb(); trait.absorb();
Fx.absorb.at(trait); Fx.absorb.at(trait);
//break shield
if(paramUnit.shield <= trait.damage()){
paramUnit.shield -= paramField.cooldown * paramField.regen;
Fx.shieldBreak.at(paramUnit.x, paramUnit.y, paramField.radius, paramUnit.team.color, paramUnit);
}
paramUnit.shield -= trait.damage(); paramUnit.shield -= trait.damage();
paramField.alpha = 1f; paramField.alpha = 1f;
} }
@@ -85,6 +79,14 @@ public class ForceFieldAbility extends Ability{
@Override @Override
public void update(Unit unit){ public void update(Unit unit){
if(unit.shield <= 0f && !wasBroken){
unit.shield -= cooldown * regen;
Fx.shieldBreak.at(unit.x, unit.y, radius, unit.team.color, this);
}
wasBroken = unit.shield <= 0f;
if(unit.shield < max){ if(unit.shield < max){
unit.shield += Time.delta * regen; unit.shield += Time.delta * regen;
} }

View File

@@ -40,7 +40,7 @@ abstract class BlockUnitComp implements Unitc{
@Replace @Replace
@Override @Override
public TextureRegion icon(){ public TextureRegion icon(){
return tile.block.fullIcon; return tile.block.uiIcon;
} }
@Override @Override

View File

@@ -138,7 +138,11 @@ abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{
if(!(tile.build instanceof ConstructBuild cb)){ if(!(tile.build instanceof ConstructBuild cb)){
if(!current.initialized && !current.breaking && Build.validPlace(current.block, team, current.x, current.y, current.rotation)){ if(!current.initialized && !current.breaking && Build.validPlace(current.block, team, current.x, current.y, current.rotation)){
boolean hasAll = infinite || current.isRotation(team) || !Structs.contains(current.block.requirements, i -> core != null && !core.items.has(i.item, Math.min(Mathf.round(i.amount * state.rules.buildCostMultiplier), 1))); boolean hasAll = infinite || current.isRotation(team) ||
//derelict repair
(tile.team() == Team.derelict && tile.block() == current.block && tile.build != null && tile.block().allowDerelictRepair && state.rules.derelictRepair) ||
//make sure there's at least 1 item of each type first
!Structs.contains(current.block.requirements, i -> core != null && !core.items.has(i.item, Math.min(Mathf.round(i.amount * state.rules.buildCostMultiplier), 1)));
if(hasAll){ if(hasAll){
Call.beginPlace(self(), current.block, team, current.x, current.y, current.rotation); Call.beginPlace(self(), current.block, team, current.x, current.y, current.rotation);
@@ -290,10 +294,6 @@ abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{
return plans.size == 0 ? null : plans.first(); return plans.size == 0 ? null : plans.first();
} }
public void draw(){
drawBuilding();
}
public void drawBuilding(){ public void drawBuilding(){
//TODO make this more generic so it works with builder "weapons" //TODO make this more generic so it works with builder "weapons"
boolean active = activelyBuilding(); boolean active = activelyBuilding();

View File

@@ -1310,7 +1310,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
if(value instanceof UnitType) type = UnitType.class; if(value instanceof UnitType) type = UnitType.class;
if(builder != null && builder.isPlayer()){ if(builder != null && builder.isPlayer()){
lastAccessed = builder.getPlayer().coloredName(); updateLastAccess(builder.getPlayer());
} }
if(block.configurations.containsKey(type)){ if(block.configurations.containsKey(type)){
@@ -1324,6 +1324,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
} }
} }
public void updateLastAccess(Player player){
lastAccessed = player.coloredName();
}
/** Called when the block is tapped by the local player. */ /** Called when the block is tapped by the local player. */
public void tapped(){ public void tapped(){
@@ -1977,9 +1981,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
switch(prop){ switch(prop){
case health -> { case health -> {
health = (float)Mathf.clamp(value, 0, maxHealth); health = (float)Mathf.clamp(value, 0, maxHealth);
healthChanged();
if(health <= 0f && !dead()){ if(health <= 0f && !dead()){
Call.buildDestroyed(self()); Call.buildDestroyed(self());
}else{
healthChanged();
} }
} }
case team -> { case team -> {

View File

@@ -68,7 +68,7 @@ abstract class HitboxComp implements Posc, Sized, QuadTreeObject{
public void hitboxTile(Rect rect){ public void hitboxTile(Rect rect){
//tile hitboxes are never bigger than a tile, otherwise units get stuck //tile hitboxes are never bigger than a tile, otherwise units get stuck
float size = Math.min(hitSize * 0.66f, 7.9f); float size = Math.min(hitSize * 0.66f, 7.8f);
//TODO: better / more accurate version is //TODO: better / more accurate version is
//float size = hitSize * 0.85f; //float size = hitSize * 0.85f;
//- for tanks? //- for tanks?

View File

@@ -24,6 +24,7 @@ abstract class LegsComp implements Posc, Rotc, Hitboxc, Flyingc, Unitc{
@Import float x, y, rotation, speedMultiplier; @Import float x, y, rotation, speedMultiplier;
@Import UnitType type; @Import UnitType type;
@Import Team team; @Import Team team;
@Import boolean disarmed;
transient Leg[] legs = {}; transient Leg[] legs = {};
transient float totalLength; transient float totalLength;
@@ -191,7 +192,7 @@ abstract class LegsComp implements Posc, Rotc, Hitboxc, Flyingc, Unitc{
} }
} }
if(type.legSplashDamage > 0){ if(type.legSplashDamage > 0 && !disarmed){
Damage.damage(team, l.base.x, l.base.y, type.legSplashRange, type.legSplashDamage * state.rules.unitDamage(team), false, true); Damage.damage(team, l.base.x, l.base.y, type.legSplashRange, type.legSplashDamage * state.rules.unitDamage(team), false, true);
} }
} }

View File

@@ -123,31 +123,4 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{
} }
} }
} }
@Override
public void draw(){
if(!mining()) return;
float focusLen = hitSize / 2f + Mathf.absin(Time.time, 1.1f, 0.5f);
float swingScl = 12f, swingMag = tilesize / 8f;
float flashScl = 0.3f;
float px = x + Angles.trnsx(rotation, focusLen);
float py = y + Angles.trnsy(rotation, focusLen);
float ex = mineTile.worldx() + Mathf.sin(Time.time + 48, swingScl, swingMag);
float ey = mineTile.worldy() + Mathf.sin(Time.time + 48, swingScl + 2f, swingMag);
Draw.z(Layer.flyingUnit + 0.1f);
Draw.color(Color.lightGray, Color.white, 1f - flashScl + Mathf.absin(Time.time, 0.5f, flashScl));
Drawf.laser(Core.atlas.find("minelaser"), Core.atlas.find("minelaser-end"), px, py, ex, ey, 0.75f);
if(isLocal()){
Lines.stroke(1f, Pal.accent);
Lines.poly(mineTile.worldx(), mineTile.worldy(), 4, tilesize / 2f * Mathf.sqrt2, Time.time);
}
Draw.color();
}
} }

View File

@@ -72,7 +72,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
public TextureRegion icon(){ public TextureRegion icon(){
//display default icon for dead players //display default icon for dead players
if(dead()) return core() == null ? UnitTypes.alpha.fullIcon : ((CoreBlock)bestCore().block).unitType.fullIcon; if(dead()) return core() == null ? UnitTypes.alpha.uiIcon : ((CoreBlock)bestCore().block).unitType.uiIcon;
return unit.icon(); return unit.icon();
} }

View File

@@ -73,6 +73,7 @@ abstract class StatusComp implements Posc, Flyingc{
} }
void clearStatuses(){ void clearStatuses(){
statuses.each(e -> e.effect.onRemoved(self()));
statuses.clear(); statuses.clear();
} }
@@ -80,6 +81,7 @@ abstract class StatusComp implements Posc, Flyingc{
void unapply(StatusEffect effect){ void unapply(StatusEffect effect){
statuses.remove(e -> { statuses.remove(e -> {
if(e.effect == effect){ if(e.effect == effect){
e.effect.onRemoved(self());
Pools.free(e); Pools.free(e);
return true; return true;
} }
@@ -189,6 +191,10 @@ abstract class StatusComp implements Posc, Flyingc{
entry.time = Math.max(entry.time - Time.delta, 0); entry.time = Math.max(entry.time - Time.delta, 0);
if(entry.effect == null || (entry.time <= 0 && !entry.effect.permanent)){ if(entry.effect == null || (entry.time <= 0 && !entry.effect.permanent)){
if(entry.effect != null){
entry.effect.onRemoved(self());
}
Pools.free(entry); Pools.free(entry);
index --; index --;
statuses.remove(index); statuses.remove(index);

View File

@@ -18,7 +18,7 @@ import static mindustry.Vars.*;
@Component @Component
abstract class TankComp implements Posc, Flyingc, Hitboxc, Unitc, ElevationMovec{ abstract class TankComp implements Posc, Flyingc, Hitboxc, Unitc, ElevationMovec{
@Import float x, y, hitSize, rotation, speedMultiplier; @Import float x, y, hitSize, rotation, speedMultiplier;
@Import boolean hovering; @Import boolean hovering, disarmed;
@Import UnitType type; @Import UnitType type;
@Import Team team; @Import Team team;
@@ -51,7 +51,7 @@ abstract class TankComp implements Posc, Flyingc, Hitboxc, Unitc, ElevationMovec
} }
//calculate overlapping tiles so it slows down when going "over" walls //calculate overlapping tiles so it slows down when going "over" walls
int r = Math.max(Math.round(hitSize * 0.6f / tilesize), 1); int r = Math.max((int)(hitSize * 0.6f / tilesize), 0);
int solids = 0, total = (r*2+1)*(r*2+1); int solids = 0, total = (r*2+1)*(r*2+1);
for(int dx = -r; dx <= r; dx++){ for(int dx = -r; dx <= r; dx++){
@@ -62,7 +62,7 @@ abstract class TankComp implements Posc, Flyingc, Hitboxc, Unitc, ElevationMovec
} }
//TODO should this apply to the player team(s)? currently PvE due to balancing //TODO should this apply to the player team(s)? currently PvE due to balancing
if(type.crushDamage > 0 && (walked || deltaLen() >= 0.01f) && t != null && t.build != null && t.build.team != team if(type.crushDamage > 0 && !disarmed && (walked || deltaLen() >= 0.01f) && t != null && t.build != null && t.build.team != team
//damage radius is 1 tile smaller to prevent it from just touching walls as it passes //damage radius is 1 tile smaller to prevent it from just touching walls as it passes
&& Math.max(Math.abs(dx), Math.abs(dy)) <= r - 1){ && Math.max(Math.abs(dx), Math.abs(dy)) <= r - 1){

View File

@@ -402,7 +402,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
return type.allowLegStep && type.legPhysicsLayer ? PhysicsProcess.layerLegs : isGrounded() ? PhysicsProcess.layerGround : PhysicsProcess.layerFlying; return type.allowLegStep && type.legPhysicsLayer ? PhysicsProcess.layerLegs : isGrounded() ? PhysicsProcess.layerGround : PhysicsProcess.layerFlying;
} }
/** @return pathfinder path type for calculating costs */ /** @return pathfinder path type for calculating costs. This is used for wave AI only. (TODO: remove) */
public int pathType(){ public int pathType(){
return Pathfinder.costGround; return Pathfinder.costGround;
} }
@@ -666,9 +666,9 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
} }
} }
/** @return a preview icon for this unit. */ /** @return a preview UI icon for this unit. */
public TextureRegion icon(){ public TextureRegion icon(){
return type.fullIcon; return type.uiIcon;
} }
/** Actually destroys the unit, removing it and creating explosions. **/ /** Actually destroys the unit, removing it and creating explosions. **/
@@ -734,7 +734,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
/** @return name of direct or indirect player controller. */ /** @return name of direct or indirect player controller. */
@Override @Override
public @Nullable String getControllerName(){ public @Nullable String getControllerName(){
if(isPlayer()) return getPlayer().name; if(isPlayer()) return getPlayer().coloredName();
if(controller instanceof LogicAI ai && ai.controller != null) return ai.controller.lastAccessed; if(controller instanceof LogicAI ai && ai.controller != null) return ai.controller.lastAccessed;
return null; return null;
} }

View File

@@ -88,7 +88,7 @@ public class ParticleEffect extends Effect{
rv.trns(realRotation + rand.range(cone), !randLength ? l : rand.random(l)); rv.trns(realRotation + rand.range(cone), !randLength ? l : rand.random(l));
float x = rv.x, y = rv.y; float x = rv.x, y = rv.y;
Draw.rect(tex, ox + x, oy + y, rad, rad, realRotation + offset + e.time * spin); Draw.rect(tex, ox + x, oy + y, rad, rad / tex.ratio(), realRotation + offset + e.time * spin);
Drawf.light(ox + x, oy + y, rad * lightScl, lightColor, lightOpacity * Draw.getColor().a); Drawf.light(ox + x, oy + y, rad * lightScl, lightColor, lightOpacity * Draw.getColor().a);
} }
} }

View File

@@ -341,7 +341,7 @@ public class AIController implements UnitController{
vec.setLength(speed * length); vec.setLength(speed * length);
} }
//do not move when infinite vectors are used or if its zero. //ignore invalid movement values
if(vec.isNaN() || vec.isInfinite() || vec.isZero()) return; if(vec.isNaN() || vec.isInfinite() || vec.isZero()) return;
if(!unit.type.omniMovement && unit.type.rotateMoveFirst){ if(!unit.type.omniMovement && unit.type.rotateMoveFirst){

View File

@@ -129,9 +129,11 @@ public class OverlayRenderer{
Draw.mixcol(Pal.accent, 1f); Draw.mixcol(Pal.accent, 1f);
Draw.alpha(unitFade); Draw.alpha(unitFade);
Building build = (select instanceof BlockUnitc b ? b.tile() : select instanceof Building b ? b : null); Building build = (select instanceof BlockUnitc b ? b.tile() : select instanceof Building b ? b : null);
TextureRegion region = build != null ? build.block.fullIcon : select instanceof Unit u ? u.icon() : Core.atlas.white(); TextureRegion region = build != null ? build.block.fullIcon : Core.atlas.white();
Draw.rect(region, select.getX(), select.getY(), select instanceof Unit u && !(select instanceof BlockUnitc) ? u.rotation - 90f : 0f); if(!(select instanceof Unitc)){
Draw.rect(region, select.getX(), select.getY());
}
for(int i = 0; i < 4; i++){ for(int i = 0; i < 4; i++){
float rot = i * 90f + 45f + (-Time.time) % 360f; float rot = i * 90f + 45f + (-Time.time) % 360f;
@@ -255,6 +257,13 @@ public class OverlayRenderer{
} }
} }
public void checkApplySelection(Unit u){
if(unitFade > 0.001f && lastSelect == u){
Color prev = Draw.getMixColor();
Draw.mixcol(prev.a > 0.001f ? prev.lerp(Pal.accent, unitFade) : Pal.accent, Math.max(unitFade, prev.a));
}
}
private static class CoreEdge{ private static class CoreEdge{
float x1, y1, x2, y2; float x1, y1, x2, y2;
Team t1, t2; Team t1, t2;

View File

@@ -106,8 +106,8 @@ public class Trail{
int count = (int)(counter += Time.delta); int count = (int)(counter += Time.delta);
counter -= count; counter -= count;
if(points.size + ((count - 1) * 3) > length * 3 && points.size > 0){ if(count > 0 && points.size > 0){
points.removeRange(0, Math.min(3 * count - 1, points.size - 1)); points.removeRange(0, Math.min(count * 3 - 1, points.size - 1));
} }
} }

View File

@@ -391,7 +391,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
if(build == null || build.team() != player.team() || !build.block.commandable) continue; if(build == null || build.team() != player.team() || !build.block.commandable) continue;
build.onCommand(target); build.onCommand(target);
build.lastAccessed = player.name; build.updateLastAccess(player);
if(!state.isPaused() && player == Vars.player){ if(!state.isPaused() && player == Vars.player){
Fx.moveCommand.at(target); Fx.moveCommand.at(target);
@@ -596,7 +596,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
throw new ValidateException(player, "Player cannot rotate a block."); throw new ValidateException(player, "Player cannot rotate a block.");
} }
if(player != null) build.lastAccessed = player.name; if(player != null) build.updateLastAccess(player);
int previous = build.rotation; int previous = build.rotation;
build.rotation = Mathf.mod(build.rotation + Mathf.sign(direction), 4); build.rotation = Mathf.mod(build.rotation + Mathf.sign(direction), 4);
build.updateProximity(); build.updateProximity();

View File

@@ -628,7 +628,7 @@ public class TypeIO{
} }
public static KickReason readKick(Reads read){ public static KickReason readKick(Reads read){
return KickReason.values()[read.b()]; return KickReason.all[read.b()];
} }
public static void writeMarkerControl(Writes write, LMarkerControl reason){ public static void writeMarkerControl(Writes write, LMarkerControl reason){
@@ -786,7 +786,7 @@ public class TypeIO{
} }
public static AdminAction readAction(Reads read){ public static AdminAction readAction(Reads read){
return AdminAction.values()[read.b()]; return AdminAction.all[read.b()];
} }
public static void writeUnitType(Writes write, UnitType effect){ public static void writeUnitType(Writes write, UnitType effect){

View File

@@ -164,6 +164,12 @@ public class LCanvas extends Table{
this.statements.layout(); this.statements.layout();
} }
public void clearStatements(){
jumps.clear();
statements.clearChildren();
statements.layout();
}
StatementElem checkHovered(){ StatementElem checkHovered(){
Element e = Core.scene.hit(Core.input.mouseX(), Core.input.mouseY(), true); Element e = Core.scene.hit(Core.input.mouseX(), Core.input.mouseY(), true);
if(e != null){ if(e != null){

View File

@@ -1480,7 +1480,7 @@ public class LExecutor{
if(t == null) t = Team.derelict; if(t == null) t = Team.derelict;
if(tile.block() != b || tile.team() != t){ if(tile.block() != b || tile.team() != t){
tile.setNet(b, t, Mathf.clamp(exec.numi(rotation), 0, 3)); tile.setBlock(b, t, Mathf.clamp(exec.numi(rotation), 0, 3));
} }
} }
} }

View File

@@ -17,6 +17,7 @@ import mindustry.logic.LExecutor.*;
import mindustry.logic.LStatements.*; import mindustry.logic.LStatements.*;
import mindustry.ui.*; import mindustry.ui.*;
import mindustry.ui.dialogs.*; import mindustry.ui.dialogs.*;
import mindustry.world.blocks.logic.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
import static mindustry.logic.LCanvas.*; import static mindustry.logic.LCanvas.*;
@@ -92,11 +93,29 @@ public class LogicDialog extends BaseDialog{
TextButtonStyle style = Styles.flatt; TextButtonStyle style = Styles.flatt;
t.defaults().size(280f, 60f).left(); t.defaults().size(280f, 60f).left();
if(privileged && executor != null && executor.build != null && !ui.editor.isShown()){
t.button("@editor.worldprocessors.editname", Icon.edit, style, () -> {
ui.showTextInput("", "@editor.name", LogicBlock.maxNameLength, executor.build.tag == null ? "" : executor.build.tag, tag -> {
if(privileged && executor != null && executor.build != null){
executor.build.configure(tag);
//just in case of privilege shenanigans...
executor.build.tag = tag;
}
});
dialog.hide();
}).marginLeft(12f).row();
}
t.button("@clear", Icon.cancel, style, () -> {
ui.showConfirm("@logic.clear.confirm", () -> canvas.clearStatements());
dialog.hide();
}).marginLeft(12f).row();
t.button("@schematic.copy", Icon.copy, style, () -> { t.button("@schematic.copy", Icon.copy, style, () -> {
dialog.hide(); dialog.hide();
Core.app.setClipboardText(canvas.save()); Core.app.setClipboardText(canvas.save());
}).marginLeft(12f); }).marginLeft(12f).row();
t.row();
t.button("@schematic.copy.import", Icon.download, style, () -> { t.button("@schematic.copy.import", Icon.download, style, () -> {
dialog.hide(); dialog.hide();
try{ try{

View File

@@ -33,7 +33,7 @@ public class Maps{
NoiseFilter::new, ScatterFilter::new, TerrainFilter::new, DistortFilter::new, NoiseFilter::new, ScatterFilter::new, TerrainFilter::new, DistortFilter::new,
RiverNoiseFilter::new, OreFilter::new, OreMedianFilter::new, MedianFilter::new, RiverNoiseFilter::new, OreFilter::new, OreMedianFilter::new, MedianFilter::new,
BlendFilter::new, MirrorFilter::new, ClearFilter::new, CoreSpawnFilter::new, BlendFilter::new, MirrorFilter::new, ClearFilter::new, CoreSpawnFilter::new,
EnemySpawnFilter::new, SpawnPathFilter::new EnemySpawnFilter::new, SpawnPathFilter::new, LogicFilter::new
}; };
/** List of all built-in maps. Filenames only. */ /** List of all built-in maps. Filenames only. */

View File

@@ -27,7 +27,7 @@ public class BlendFilter extends GenerateFilter{
@Override @Override
public char icon(){ public char icon(){
return Iconc.blockSand; return Iconc.blockSandFloor;
} }
@Override @Override

View File

@@ -0,0 +1,72 @@
package mindustry.maps.filters;
import arc.scene.ui.layout.*;
import mindustry.*;
import mindustry.gen.*;
import mindustry.logic.*;
import mindustry.maps.filters.FilterOption.*;
import mindustry.world.*;
import static mindustry.Vars.*;
public class LogicFilter extends GenerateFilter{
/** max available execution for logic filter */
public static int maxInstructionsExecution = 500 * 500 * 25;
public String code;
public boolean loop;
@Override
public FilterOption[] options(){
return new FilterOption[]{
new FilterOption(){
final String name;
{
name = "code";
}
@Override
public void build(Table table){
table.button(b -> b.image(Icon.pencil).size(iconSmall), () -> {
ui.logic.show(code, null, true, code -> LogicFilter.this.code = code);
}).pad(4).margin(12f);
table.add("@filter.option." + name);
}
},
new ToggleOption("loop", () -> loop, f -> loop = f)
};
}
@Override
public void apply(Tiles tiles, GenerateInput in){
LExecutor executor = new LExecutor();
executor.privileged = true;
try{
//assembler has no variables, all the standard ones are null
executor.load(LAssembler.assemble(code, true));
}catch(Throwable ignored){
//if loading code
return;
}
//this updates map width/height global variables
logicVars.update();
//NOTE: all tile operations will call setNet for tiles, but that should have no overhead during world loading
//executions are limited to prevent infinite generation
for(int i = 1; i < maxInstructionsExecution; i++){
if(!loop && (executor.counter.numval >= executor.instructions.length || executor.counter.numval < 0)) break;
executor.runOnce();
}
}
@Override
public char icon(){
return Iconc.blockMicroProcessor;
}
@Override
public boolean isPost(){
return true;
}
}

View File

@@ -28,7 +28,7 @@ public class SpawnPathFilter extends GenerateFilter{
@Override @Override
public char icon(){ public char icon(){
return Iconc.blockCommandCenter; return Iconc.blockCoreZone;
} }
@Override @Override

View File

@@ -6,6 +6,11 @@ import mindustry.*;
public abstract class Mod{ public abstract class Mod{
/** @return the folder where configuration files for this mod should go.*/
public Fi getConfigFolder(){
return Vars.mods.getConfigFolder(this);
}
/** @return the config file for this plugin, as the file 'mods/[plugin-name]/config.json'.*/ /** @return the config file for this plugin, as the file 'mods/[plugin-name]/config.json'.*/
public Fi getConfig(){ public Fi getConfig(){
return Vars.mods.getConfig(this); return Vars.mods.getConfig(this);
@@ -26,7 +31,7 @@ public abstract class Mod{
} }
/** Register any commands to be used on the client side, e.g. sent from an in-game player.. */ /** Register any commands to be used on the client side, e.g. sent from an in-game player. */
public void registerClientCommands(CommandHandler handler){ public void registerClientCommands(CommandHandler handler){
} }

View File

@@ -62,12 +62,18 @@ public class Mods implements Loadable{
return mainLoader; return mainLoader;
} }
/** Returns a file named 'config.json' in a special folder for the specified plugin. /** @return the folder where configuration files for this mod should go. The folder may not exist yet; call mkdirs() before writing to it.
* Call this in init(). */ * Call this in init(). */
public Fi getConfig(Mod mod){ public Fi getConfigFolder(Mod mod){
ModMeta load = metas.get(mod.getClass()); ModMeta load = metas.get(mod.getClass());
if(load == null) throw new IllegalArgumentException("Mod is not loaded yet (or missing)!"); if(load == null) throw new IllegalArgumentException("Mod is not loaded yet (or missing)!");
return modDirectory.child(load.name).child("config.json"); return modDirectory.child(load.name);
}
/** @return a file named 'config.json' in the config folder for the specified mod.
* Call this in init(). */
public Fi getConfig(Mod mod){
return getConfigFolder(mod).child("config.json");
} }
/** Returns a list of files per mod subdirectory. */ /** Returns a list of files per mod subdirectory. */
@@ -722,6 +728,11 @@ public class Mods implements Loadable{
Seq<LoadRun> runs = new Seq<>(); Seq<LoadRun> runs = new Seq<>();
for(LoadedMod mod : orderedMods()){ for(LoadedMod mod : orderedMods()){
Seq<LoadRun> unorderedContent = new Seq<>();
ObjectMap<String, LoadRun> orderedContent = new ObjectMap<>();
String[] contentOrder = mod.meta.contentOrder;
ObjectSet<String> orderSet = contentOrder == null ? null : ObjectSet.with(contentOrder);
if(mod.root.child("content").exists()){ if(mod.root.child("content").exists()){
Fi contentRoot = mod.root.child("content"); Fi contentRoot = mod.root.child("content");
for(ContentType type : ContentType.all){ for(ContentType type : ContentType.all){
@@ -729,15 +740,34 @@ public class Mods implements Loadable{
Fi folder = contentRoot.child(lower + (lower.endsWith("s") ? "" : "s")); Fi folder = contentRoot.child(lower + (lower.endsWith("s") ? "" : "s"));
if(folder.exists()){ if(folder.exists()){
for(Fi file : folder.findAll(f -> f.extension().equals("json") || f.extension().equals("hjson"))){ for(Fi file : folder.findAll(f -> f.extension().equals("json") || f.extension().equals("hjson"))){
runs.add(new LoadRun(type, file, mod));
//if this is part of the ordered content, put it aside to be dealt with later
if(orderSet != null && orderSet.contains(file.nameWithoutExtension())){
orderedContent.put(file.nameWithoutExtension(), new LoadRun(type, file, mod));
}else{
unorderedContent.add(new LoadRun(type, file, mod));
} }
} }
} }
} }
} }
//make sure mod content is in proper order //ordered content will be loaded first, if it exists
runs.sort(); if(contentOrder != null){
for(String contentName : contentOrder){
LoadRun run = orderedContent.get(contentName);
if(run != null){
runs.add(run);
}else{
Log.warn("Cannot find content defined in contentOrder: @", contentName);
}
}
}
//unordered content is sorted alphabetically per mod
runs.addAll(unorderedContent.sort());
}
for(LoadRun l : runs){ for(LoadRun l : runs){
Content current = content.getLastAdded(); Content current = content.getLastAdded();
try{ try{
@@ -1204,6 +1234,8 @@ public class Mods implements Loadable{
public float texturescale = 1.0f; public float texturescale = 1.0f;
/** If true, bleeding is skipped and no content icons are generated. */ /** If true, bleeding is skipped and no content icons are generated. */
public boolean pregenerated; public boolean pregenerated;
/** If set, load the mod content in this order by content names */
public String[] contentOrder;
public String displayName(){ public String displayName(){
//useless, kept for legacy reasons //useless, kept for legacy reasons

View File

@@ -17,6 +17,8 @@ public class Packets{
nameInUse, idInUse, nameEmpty, customClient, serverClose, vote, typeMismatch, nameInUse, idInUse, nameEmpty, customClient, serverClose, vote, typeMismatch,
whitelist, playerLimit, serverRestarting; whitelist, playerLimit, serverRestarting;
public static final KickReason[] all = values();
public final boolean quiet; public final boolean quiet;
KickReason(){ KickReason(){
@@ -38,7 +40,9 @@ public class Packets{
} }
public enum AdminAction{ public enum AdminAction{
kick, ban, trace, wave, switchTeam kick, ban, trace, wave, switchTeam;
public static final AdminAction[] all = values();
} }
/** Generic client connection event. */ /** Generic client connection event. */

View File

@@ -291,7 +291,7 @@ public class GameService{
}); });
Events.on(SectorLaunchLoadoutEvent.class, e -> { Events.on(SectorLaunchLoadoutEvent.class, e -> {
if(!schematics.isDefaultLoadout(e.loadout)){ if(e.sector.planet == Planets.serpulo && !schematics.isDefaultLoadout(e.loadout)){
launchCoreSchematic.complete(); launchCoreSchematic.complete();
} }
}); });

View File

@@ -142,6 +142,11 @@ public class StatusEffect extends UnlockableContent{
} }
} }
/** Called when status effect is removed. */
public void onRemoved(Unit unit){
}
protected void trans(StatusEffect effect, TransitionHandler handler){ protected void trans(StatusEffect effect, TransitionHandler handler){
transitions.put(effect, handler); transitions.put(effect, handler);
} }

View File

@@ -288,6 +288,8 @@ public class UnitType extends UnlockableContent implements Senseable{
/** Function used for calculating cost of moving with ControlPathfinder. Does not affect "normal" flow field pathfinding. */ /** Function used for calculating cost of moving with ControlPathfinder. Does not affect "normal" flow field pathfinding. */
public @Nullable PathCost pathCost; public @Nullable PathCost pathCost;
/** ID for path cost, to be used in the control path finder. This is the value that actually matters; do not assign manually. Set in init(). */
public int pathCostId;
/** A sample of the unit that this type creates. Do not modify! */ /** A sample of the unit that this type creates. Do not modify! */
public @Nullable Unit sample; public @Nullable Unit sample;
@@ -427,10 +429,13 @@ public class UnitType extends UnlockableContent implements Senseable{
//(undocumented, you shouldn't need to use these, and if you do just check how they're drawn and copy that) //(undocumented, you shouldn't need to use these, and if you do just check how they're drawn and copy that)
public TextureRegion baseRegion, legRegion, region, previewRegion, shadowRegion, cellRegion, itemCircleRegion, public TextureRegion baseRegion, legRegion, region, previewRegion, shadowRegion, cellRegion, itemCircleRegion,
softShadowRegion, jointRegion, footRegion, legBaseRegion, baseJointRegion, outlineRegion, treadRegion; softShadowRegion, jointRegion, footRegion, legBaseRegion, baseJointRegion, outlineRegion, treadRegion,
mineLaserRegion, mineLaserEndRegion;
public TextureRegion[] wreckRegions, segmentRegions, segmentOutlineRegions; public TextureRegion[] wreckRegions, segmentRegions, segmentOutlineRegions;
public TextureRegion[][] treadRegions; public TextureRegion[][] treadRegions;
//INTERNAL REQUIREMENTS
protected float buildTime = -1f; protected float buildTime = -1f;
protected @Nullable ItemStack[] totalRequirements, cachedRequirements, firstRequirements; protected @Nullable ItemStack[] totalRequirements, cachedRequirements, firstRequirements;
@@ -691,6 +696,9 @@ public class UnitType extends UnlockableContent implements Senseable{
ControlPathfinder.costGround; ControlPathfinder.costGround;
} }
pathCostId = ControlPathfinder.costTypes.indexOf(pathCost);
if(pathCostId == -1) pathCostId = 0;
if(flying){ if(flying){
envEnabled |= Env.space; envEnabled |= Env.space;
} }
@@ -842,7 +850,7 @@ public class UnitType extends UnlockableContent implements Senseable{
if(stances.length == 0){ if(stances.length == 0){
if(canAttack){ if(canAttack){
Seq<UnitStance> seq = Seq.with(UnitStance.stop, UnitStance.shoot, UnitStance.holdFire, UnitStance.pursueTarget, UnitStance.patrol); Seq<UnitStance> seq = Seq.with(UnitStance.stop, UnitStance.shoot, UnitStance.holdFire, UnitStance.pursueTarget, UnitStance.patrol);
if(crushDamage > 0){ if(!flying){
seq.add(UnitStance.ram); seq.add(UnitStance.ram);
} }
stances = seq.toArray(UnitStance.class); stances = seq.toArray(UnitStance.class);
@@ -910,6 +918,9 @@ public class UnitType extends UnlockableContent implements Senseable{
legBaseRegion = Core.atlas.find(name + "-leg-base", name + "-leg"); legBaseRegion = Core.atlas.find(name + "-leg-base", name + "-leg");
baseRegion = Core.atlas.find(name + "-base"); baseRegion = Core.atlas.find(name + "-base");
cellRegion = Core.atlas.find(name + "-cell", Core.atlas.find("power-cell")); cellRegion = Core.atlas.find(name + "-cell", Core.atlas.find("power-cell"));
mineLaserRegion = Core.atlas.find("minelaser");
mineLaserEndRegion = Core.atlas.find("minelaser-end");
//when linear filtering is on, it's acceptable to use the relatively low-res 'particle' region //when linear filtering is on, it's acceptable to use the relatively low-res 'particle' region
softShadowRegion = softShadowRegion =
squareShape ? Core.atlas.find("square-shadow") : squareShape ? Core.atlas.find("square-shadow") :
@@ -1186,6 +1197,10 @@ public class UnitType extends UnlockableContent implements Senseable{
public void draw(Unit unit){ public void draw(Unit unit){
if(unit.inFogTo(Vars.player.team())) return; if(unit.inFogTo(Vars.player.team())) return;
unit.drawBuilding();
drawMining(unit);
boolean isPayload = !unit.isAdded(); boolean isPayload = !unit.isAdded();
Mechc mech = unit instanceof Mechc ? (Mechc)unit : null; Mechc mech = unit instanceof Mechc ? (Mechc)unit : null;
@@ -1289,6 +1304,32 @@ public class UnitType extends UnlockableContent implements Senseable{
Draw.reset(); Draw.reset();
} }
public void drawMining(Unit unit){
if(!unit.mining()) return;
float focusLen = unit.hitSize / 2f + Mathf.absin(Time.time, 1.1f, 0.5f);
float swingScl = 12f, swingMag = tilesize / 8f;
float flashScl = 0.3f;
float px = unit.x + Angles.trnsx(unit.rotation, focusLen);
float py = unit.y + Angles.trnsy(unit.rotation, focusLen);
float ex = unit.mineTile.worldx() + Mathf.sin(Time.time + 48, swingScl, swingMag);
float ey = unit.mineTile.worldy() + Mathf.sin(Time.time + 48, swingScl + 2f, swingMag);
Draw.z(Layer.flyingUnit + 0.1f);
Draw.color(Color.lightGray, Color.white, 1f - flashScl + Mathf.absin(Time.time, 0.5f, flashScl));
Drawf.laser(mineLaserRegion, mineLaserEndRegion, px, py, ex, ey, 0.75f);
if(unit.isLocal()){
Lines.stroke(1f, Pal.accent);
Lines.poly(unit.mineTile.worldx(), unit.mineTile.worldy(), 4, tilesize / 2f * Mathf.sqrt2, Time.time);
}
Draw.color();
}
public <T extends Unit & Payloadc> void drawPayload(T unit){ public <T extends Unit & Payloadc> void drawPayload(T unit){
if(unit.hasPayload()){ if(unit.hasPayload()){
Payload pay = unit.payloads().first(); Payload pay = unit.payloads().first();
@@ -1465,6 +1506,7 @@ public class UnitType extends UnlockableContent implements Senseable{
} }
public <T extends Unit & Tankc> void drawTank(T unit){ public <T extends Unit & Tankc> void drawTank(T unit){
applyColor(unit);
Draw.rect(treadRegion, unit.x, unit.y, unit.rotation - 90); Draw.rect(treadRegion, unit.x, unit.y, unit.rotation - 90);
if(treadRegion.found()){ if(treadRegion.found()){
@@ -1636,6 +1678,10 @@ public class UnitType extends UnlockableContent implements Senseable{
if(unit.drownTime > 0 && unit.lastDrownFloor != null){ if(unit.drownTime > 0 && unit.lastDrownFloor != null){
Draw.mixcol(Tmp.c1.set(unit.lastDrownFloor.mapColor).mul(0.83f), unit.drownTime * 0.9f); Draw.mixcol(Tmp.c1.set(unit.lastDrownFloor.mapColor).mul(0.83f), unit.drownTime * 0.9f);
} }
//this is horribly scuffed.
if(renderer != null && renderer.overlays != null){
renderer.overlays.checkApplySelection(unit);
}
} }
//endregion //endregion

View File

@@ -30,6 +30,7 @@ public class Fonts{
private static final String mainFont = "fonts/font.woff"; private static final String mainFont = "fonts/font.woff";
private static final ObjectSet<String> unscaled = ObjectSet.with("iconLarge"); private static final ObjectSet<String> unscaled = ObjectSet.with("iconLarge");
private static ObjectIntMap<String> unicodeIcons = new ObjectIntMap<>(); private static ObjectIntMap<String> unicodeIcons = new ObjectIntMap<>();
private static IntMap<String> unicodeToName = new IntMap<>();
private static ObjectMap<String, String> stringIcons = new ObjectMap<>(); private static ObjectMap<String, String> stringIcons = new ObjectMap<>();
private static ObjectMap<String, TextureRegion> largeIcons = new ObjectMap<>(); private static ObjectMap<String, TextureRegion> largeIcons = new ObjectMap<>();
private static TextureRegion[] iconTable; private static TextureRegion[] iconTable;
@@ -95,12 +96,16 @@ public class Fonts{
}})).loaded = f -> Fonts.logic = f; }})).loaded = f -> Fonts.logic = f;
} }
public static @Nullable String unicodeToName(int unicode){
return unicodeToName.get(unicode, () -> Iconc.codeToName.get(unicode));
}
public static TextureRegion getLargeIcon(String name){ public static TextureRegion getLargeIcon(String name){
return largeIcons.get(name, () -> { return largeIcons.get(name, () -> {
var region = new TextureRegion(); var region = new TextureRegion();
int code = Iconc.codes.get(name, '\uF8D4'); int code = Iconc.codes.get(name, '\uF8D4');
var glyph = iconLarge.getData().getGlyph((char)code); var glyph = iconLarge.getData().getGlyph((char)code);
if(glyph == null) return Core.atlas.find("error"); if(glyph == null) return Core.atlas.find(name);
region.set(iconLarge.getRegion().texture); region.set(iconLarge.getRegion().texture);
region.set(glyph.u, glyph.v2, glyph.u2, glyph.v); region.set(glyph.u, glyph.v2, glyph.u2, glyph.v);
return region; return region;
@@ -127,6 +132,7 @@ public class Fonts{
unicodeIcons.put(nametex[0], ch); unicodeIcons.put(nametex[0], ch);
stringIcons.put(nametex[0], ((char)ch) + ""); stringIcons.put(nametex[0], ((char)ch) + "");
unicodeToName.put(ch, texture);
Vec2 out = Scaling.fit.apply(region.width, region.height, size, size); Vec2 out = Scaling.fit.apply(region.width, region.height, size, size);

View File

@@ -3,9 +3,11 @@ package mindustry.ui;
import arc.*; import arc.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
import arc.input.*; import arc.input.*;
import arc.math.*;
import arc.scene.*; import arc.scene.*;
import arc.scene.event.*; import arc.scene.event.*;
import arc.scene.ui.layout.*; import arc.scene.ui.layout.*;
import arc.util.*;
import mindustry.gen.*; import mindustry.gen.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
@@ -20,6 +22,22 @@ public class Minimap extends Table{
add(new Element(){ add(new Element(){
{ {
setSize(Scl.scl(140f)); setSize(Scl.scl(140f));
addListener(new ClickListener(KeyCode.mouseRight){
@Override
public void clicked(InputEvent event, float cx, float cy){
var region = renderer.minimap.getRegion();
if(region == null) return;
float
sx = (cx - x) / width,
sy = (cy - y) / height,
scaledX = Mathf.lerp(region.u, region.u2, sx) * world.width() * tilesize,
scaledY = Mathf.lerp(1f - region.v2, 1f - region.v, sy) * world.height() * tilesize;
control.input.panCamera(Tmp.v1.set(scaledX, scaledY));
}
});
} }
@Override @Override

View File

@@ -73,6 +73,8 @@ public class Styles{
geni, geni,
/** Gray, toggleable, no background. */ /** Gray, toggleable, no background. */
grayi, grayi,
/** Gray square background, standard behavior. Equivalent to grayt. */
graySquarei,
/** Flat, square, black background. */ /** Flat, square, black background. */
flati, flati,
/** Square border. */ /** Square border. */
@@ -288,6 +290,14 @@ public class Styles{
imageUpColor = Color.lightGray; imageUpColor = Color.lightGray;
imageDownColor = Color.white; imageDownColor = Color.white;
}}; }};
graySquarei = new ImageButtonStyle(){{
imageUpColor = Color.white;
imageDownColor = Color.lightGray;
over = flatOver;
down = flatOver;
up = grayPanel;
}};
flati = new ImageButtonStyle(){{ flati = new ImageButtonStyle(){{
down = flatOver; down = flatOver;
up = black; up = black;

View File

@@ -1,5 +1,6 @@
package mindustry.ui.dialogs; package mindustry.ui.dialogs;
import arc.*;
import arc.scene.ui.*; import arc.scene.ui.*;
import arc.scene.ui.layout.*; import arc.scene.ui.layout.*;
import mindustry.gen.*; import mindustry.gen.*;
@@ -39,7 +40,7 @@ public class AdminsDialog extends BaseDialog{
res.labelWrap("[lightgray]" + info.lastName).width(w - h - 24f); res.labelWrap("[lightgray]" + info.lastName).width(w - h - 24f);
res.add().growX(); res.add().growX();
res.button(Icon.cancel, () -> { res.button(Icon.cancel, () -> {
ui.showConfirm("@confirm", "@confirmunadmin", () -> { ui.showConfirm("@confirm", Core.bundle.format("@confirmunadmin", info.lastName), () -> {
netServer.admins.unAdminPlayer(info.id); netServer.admins.unAdminPlayer(info.id);
Groups.player.each(player -> { Groups.player.each(player -> {
if(player != null && !player.isLocal() && player.uuid().equals(info.id)){ if(player != null && !player.isLocal() && player.uuid().equals(info.id)){

View File

@@ -3,7 +3,6 @@ package mindustry.ui.dialogs;
import arc.*; import arc.*;
import arc.func.*; import arc.func.*;
import arc.graphics.*; import arc.graphics.*;
import arc.input.KeyCode;
import arc.scene.style.*; import arc.scene.style.*;
import arc.scene.ui.*; import arc.scene.ui.*;
import arc.scene.ui.ImageButton.*; import arc.scene.ui.ImageButton.*;
@@ -193,9 +192,12 @@ public class CustomRulesDialog extends BaseDialog{
cont.clear(); cont.clear();
cont.table(t -> { cont.table(t -> {
t.add("@search").padRight(10); t.add("@search").padRight(10);
t.field(ruleSearch, text -> var field = t.field(ruleSearch, text -> {
ruleSearch = text.trim().replaceAll(" +", " ").toLowerCase() ruleSearch = text.trim().replaceAll(" +", " ").toLowerCase();
).grow().pad(8).get().keyDown(KeyCode.enter, this::setup); setup();
}).grow().pad(8).get();
field.setCursorPosition(ruleSearch.length());
Core.scene.setKeyboardFocus(field);
t.button(Icon.cancel, Styles.emptyi, () -> { t.button(Icon.cancel, Styles.emptyi, () -> {
ruleSearch = ""; ruleSearch = "";
setup(); setup();
@@ -234,7 +236,7 @@ public class CustomRulesDialog extends BaseDialog{
setup(); setup();
} }
}, () -> rules.infiniteResources); }, () -> rules.infiniteResources);
withInfo("@rules.onlydepositcore.info", () -> check("@rules.onlydepositcore", b -> rules.onlyDepositCore = b, () -> rules.onlyDepositCore)); check("@rules.onlydepositcore", b -> rules.onlyDepositCore = b, () -> rules.onlyDepositCore);
check("@rules.derelictrepair", b -> rules.derelictRepair = b, () -> rules.derelictRepair); check("@rules.derelictrepair", b -> rules.derelictRepair = b, () -> rules.derelictRepair);
check("@rules.reactorexplosions", b -> rules.reactorExplosions = b, () -> rules.reactorExplosions); check("@rules.reactorexplosions", b -> rules.reactorExplosions = b, () -> rules.reactorExplosions);
check("@rules.schematic", b -> rules.schematicsAllowed = b, () -> rules.schematicsAllowed); check("@rules.schematic", b -> rules.schematicsAllowed = b, () -> rules.schematicsAllowed);
@@ -282,7 +284,7 @@ public class CustomRulesDialog extends BaseDialog{
category("enemy"); category("enemy");
check("@rules.attack", b -> rules.attackMode = b, () -> rules.attackMode); check("@rules.attack", b -> rules.attackMode = b, () -> rules.attackMode);
check("@rules.corecapture", b -> rules.coreCapture = b, () -> rules.coreCapture); check("@rules.corecapture", b -> rules.coreCapture = b, () -> rules.coreCapture);
withInfo("@rules.placerangecheck.info",() -> check("@rules.placerangecheck", b -> rules.placeRangeCheck = b, () -> rules.placeRangeCheck)); check("@rules.placerangecheck", b -> rules.placeRangeCheck = b, () -> rules.placeRangeCheck);
check("@rules.polygoncoreprotection", b -> rules.polygonCoreProtection = b, () -> rules.polygonCoreProtection); check("@rules.polygoncoreprotection", b -> rules.polygonCoreProtection = b, () -> rules.polygonCoreProtection);
number("@rules.enemycorebuildradius", f -> rules.enemyCoreBuildRadius = f * tilesize, () -> Math.min(rules.enemyCoreBuildRadius / tilesize, 200), () -> !rules.polygonCoreProtection); number("@rules.enemycorebuildradius", f -> rules.enemyCoreBuildRadius = f * tilesize, () -> Math.min(rules.enemyCoreBuildRadius / tilesize, 200), () -> !rules.polygonCoreProtection);
@@ -490,27 +492,15 @@ public class CustomRulesDialog extends BaseDialog{
public void check(String text, Boolc cons, Boolp prov, Boolp condition){ public void check(String text, Boolc cons, Boolp prov, Boolp condition){
if(!Core.bundle.get(text.substring(1)).toLowerCase().contains(ruleSearch)) return; if(!Core.bundle.get(text.substring(1)).toLowerCase().contains(ruleSearch)) return;
current.check(text, cons).checked(prov.get()).update(a -> a.setDisabled(!condition.get())).padRight(100f).get().left(); String infoText = text.substring(1) + ".info";
var cell = current.check(text, cons).checked(prov.get()).update(a -> a.setDisabled(!condition.get())).padRight(100f);
if(Core.bundle.has(infoText)){
cell.tooltip(text + ".info");
}
cell.get().left();
current.row(); current.row();
} }
public void withInfo(String info, Runnable add){
Table wasCurrent = current;
current = new Table();
current.left().defaults().fillX().left();
current.button(Icon.infoSmall, () -> ui.showInfo(info)).size(32f).padRight(10f);
add.run();
// rule does not match search pattern (runnable returned without adding anything)
if(current.getCells().size < 2){
current.clear();
}else{
wasCurrent.add(current).row();
}
current = wasCurrent;
}
Cell<TextField> field(Table table, float value, Floatc setter){ Cell<TextField> field(Table table, float value, Floatc setter){
return table.field(Strings.autoFixed(value, 2), v -> setter.get(Strings.parseFloat(v))) return table.field(Strings.autoFixed(value, 2), v -> setter.get(Strings.parseFloat(v)))
.valid(Strings::canParsePositiveFloat) .valid(Strings::canParsePositiveFloat)

View File

@@ -45,7 +45,7 @@ public class DatabaseDialog extends BaseDialog{
void rebuild(){ void rebuild(){
all.clear(); all.clear();
var text = search.getText(); var text = search.getText().toLowerCase();
Seq<Content>[] allContent = Vars.content.getContentMap(); Seq<Content>[] allContent = Vars.content.getContentMap();
@@ -54,7 +54,7 @@ public class DatabaseDialog extends BaseDialog{
Seq<UnlockableContent> array = allContent[j] Seq<UnlockableContent> array = allContent[j]
.select(c -> c instanceof UnlockableContent u && !u.isHidden() && .select(c -> c instanceof UnlockableContent u && !u.isHidden() &&
(text.isEmpty() || u.localizedName.toLowerCase().contains(text.toLowerCase()))).as(); (text.isEmpty() || u.localizedName.toLowerCase().contains(text))).as();
if(array.size == 0) continue; if(array.size == 0) continue;
all.add("@content." + type.name() + ".name").growX().left().color(Pal.accent); all.add("@content." + type.name() + ".name").growX().left().color(Pal.accent);

View File

@@ -0,0 +1,74 @@
package mindustry.ui.dialogs;
import arc.*;
import arc.func.*;
import arc.scene.style.*;
import arc.scene.ui.*;
import arc.scene.ui.layout.*;
import arc.util.*;
import mindustry.ctype.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.ui.*;
import static mindustry.Vars.*;
public class IconSelectDialog extends Dialog{
private Intc consumer = i -> Log.info("you have mere seconds");
public IconSelectDialog(){
closeOnBack();
setFillParent(true);
cont.pane(t -> {
resized(true, () -> {
t.clearChildren();
t.marginRight(19f);
t.defaults().size(48f);
t.button(Icon.none, Styles.flati, () -> {
hide();
consumer.get(0);
});
int cols = (int)Math.min(20, Core.graphics.getWidth() / Scl.scl(52f));
int i = 1;
for(var key : accessibleIcons){
var value = Icon.icons.get(key);
t.button(value, Styles.flati, () -> {
hide();
consumer.get(Iconc.codes.get(key));
});
if(++i % cols == 0) t.row();
}
for(ContentType ctype : defaultContentIcons){
t.row();
t.image().colspan(cols).growX().width(Float.NEGATIVE_INFINITY).height(3f).color(Pal.accent);
t.row();
i = 0;
for(UnlockableContent u : content.getBy(ctype).<UnlockableContent>as()){
if(!u.isHidden() && u.unlocked()){
t.button(new TextureRegionDrawable(u.uiIcon), Styles.flati, iconMed, () -> {
hide();
consumer.get(u.emojiChar());
});
if(++i % cols == 0) t.row();
}
}
}
});
});
buttons.button("@back", Icon.left, this::hide).size(210f, 64f);
}
public void show(Intc listener){
consumer = listener;
super.show();
}
}

View File

@@ -213,7 +213,6 @@ public class KeybindDialog extends Dialog{
@Override @Override
public boolean keyDown(InputEvent event, KeyCode keycode){ public boolean keyDown(InputEvent event, KeyCode keycode){
rebindDialog.hide(); rebindDialog.hide();
if(keycode == KeyCode.escape) return false;
rebind(section, name, keycode); rebind(section, name, keycode);
return false; return false;
} }

View File

@@ -102,7 +102,7 @@ public class MapPlayDialog extends BaseDialog{
ScrollPane pane = new ScrollPane(table); ScrollPane pane = new ScrollPane(table);
pane.setFadeScrollBars(false); pane.setFadeScrollBars(false);
table.row(); table.row();
for(Gamemode mode : Gamemode.values()){ for(Gamemode mode : Gamemode.all){
if(mode.hidden) continue; if(mode.hidden) continue;
table.labelWrap("[accent]" + mode + ":[] [lightgray]" + mode.description()).width(400f); table.labelWrap("[accent]" + mode + ":[] [lightgray]" + mode.description()).width(400f);
table.row(); table.row();

View File

@@ -1,11 +1,13 @@
package mindustry.ui.dialogs; package mindustry.ui.dialogs;
import arc.*; import arc.*;
import mindustry.editor.*;
import mindustry.gen.*; import mindustry.gen.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public class PausedDialog extends BaseDialog{ public class PausedDialog extends BaseDialog{
private MapProcessorsDialog processors = new MapProcessorsDialog();
private SaveDialog save = new SaveDialog(); private SaveDialog save = new SaveDialog();
private LoadDialog load = new LoadDialog(); private LoadDialog load = new LoadDialog();
private boolean wasClient = false; private boolean wasClient = false;
@@ -49,13 +51,22 @@ public class PausedDialog extends BaseDialog{
cont.row(); cont.row();
cont.button("@hostserver", Icon.host, () -> { //the button runs out of space when the editor button is added, so use the mobile text
cont.button(state.isEditor() ? "@hostserver.mobile" : "@hostserver", Icon.host, () -> {
if(net.server() && steam){ if(net.server() && steam){
platform.inviteFriends(); platform.inviteFriends();
}else{ }else{
ui.host.show(); ui.host.show();
} }
}).disabled(b -> !((steam && net.server()) || !net.active())).colspan(2).width(dw * 2 + 10f).update(e -> e.setText(net.server() && steam ? "@invitefriends" : "@hostserver")); }).disabled(b -> !((steam && net.server()) || !net.active())).colspan(state.isEditor() ? 1 : 2).width(state.isEditor() ? dw : dw * 2 + 10f)
.update(e -> e.setText(net.server() && steam ? "@invitefriends" : state.isEditor() ? "@hostserver.mobile" : "@hostserver"));
if(state.isEditor()){
cont.button("@editor.worldprocessors", Icon.logic, () -> {
hide();
processors.show();
});
}
cont.row(); cont.row();

Some files were not shown because too many files have changed in this diff Show More