Compare commits

..

85 Commits

Author SHA1 Message Date
Anuken
5c89d7d273 arc 2023-05-09 16:42:17 -04:00
Anuken
3ea742b06d debugGraphs off 2023-05-09 15:39:53 -04:00
Anuken
9bedadac79 Better conduit merge 2023-05-09 15:34:13 -04:00
Anuken
5ccadcf38f Semi-functioning implementation 2023-05-09 15:00:26 -04:00
Anuken
a32462971b checklist 2023-05-09 12:23:49 -04:00
Anuken
3faf8ca07f WIP conduit graph 2023-05-09 12:19:26 -04:00
Anuken
ccd2727ab5 Merge remote-tracking branch 'origin/master' 2023-05-08 12:15:06 -04:00
Anuken
820fd0d7fc Canvas block schematic preview 2023-05-08 12:15:00 -04:00
Anuken
a4972886a3 Possible parser status effect fix 2023-05-08 09:50:33 -04:00
HamzaGSopp
552353972e Update servers_v7.json (#8568) 2023-05-07 21:17:44 -04:00
Github Actions
db0691f32f Automatic bundle update 2023-05-07 16:33:03 +00:00
Mario A
a36e31c4b4 Fix some Italian translations (#8564)
Co-authored-by: Midblyte <midblyte@anonaddy.me>
2023-05-07 12:32:10 -04:00
JniTrRny
23f1d24c45 Search bar for wave UI (#8501)
* wave search + other editor things

* everything but wave search
2023-05-07 10:42:45 -04:00
Github Actions
2b5ff56460 Automatic bundle update 2023-05-07 13:39:11 +00:00
nullevoy
dbafdfb312 gas sprites (ark too ig) (#8528)
* ?

* this was better

* ghghghghgghghhghghghg

* single pixel changes
2023-05-07 09:38:17 -04:00
JniTrRny
bb06c3f1e9 Wave limit game rule in custom maps (#8550)
* custom maps wave limit

* whoopsies
2023-05-06 23:04:31 -04:00
Anuken
72c67f6c9b Merge remote-tracking branch 'origin/master' 2023-05-06 21:57:00 -04:00
Anuken
ea27fa53bf unitHealth in logic 2023-05-06 21:56:56 -04:00
Github Actions
8bbd58053a Automatic bundle update 2023-05-07 01:53:52 +00:00
Philipp
f1b52164c9 Fix some mistakes in German translation (#8543)
* Fix typo in German tutorial

* Fix some more
2023-05-06 21:53:10 -04:00
Prosta4okua
6cfcffd04e New translation (#8555)
* Update bundle_uk_UA.properties

Old

* Messaged

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

---------

Co-authored-by: SUS <94375206+1stvaliduser@users.noreply.github.com>
2023-05-06 21:52:52 -04:00
HamzaGSopp
ddd77b2081 Update servers_v7.json (#8556)
* Update servers_v7.json

chabge adresse of tamazia

* Update servers_v7.json

---------

Co-authored-by: Anuken <arnukren@gmail.com>
2023-05-06 21:52:38 -04:00
Даркнесс#3729
f581aa3332 Update russian bundle (#8559)
* Update russian bundle

* Update bundle_ru.properties
2023-05-06 21:51:51 -04:00
Catchears
8126e970f3 update german translation (#8560)
* update german translation

* resolve @Shawak's comment
2023-05-06 21:51:37 -04:00
Slotterleet
52ec9f4296 A couple of features for better planet modding (#8558)
* Planet item whitelist

* allowLaunchToNumbered for planets

* Update core/src/mindustry/type/Planet.java

* Update core/src/mindustry/type/Planet.java

---------

Co-authored-by: Anuken <arnukren@gmail.com>
2023-05-06 21:49:40 -04:00
MEEPofFaith
cc17962d93 Clear invalid payload ammo (#8544) 2023-05-06 21:34:11 -04:00
BalaM314
6c7d506e42 Gradle opt -PnoLocalArc to force no localArc (#8552)
renaming Arc is annoying, also vscode doesnt like it
2023-05-06 21:33:45 -04:00
BalaM314
c1d3cdc5cb Fix override of Building.block in PayloadSource (#8551)
* Would break(without crash) mods that read the block config of PayloadSource
2023-05-06 21:31:02 -04:00
Anuken
d85995f6fd Fixed #8557 2023-05-06 21:27:45 -04:00
Anuken
bc622bd7ba Doubled max schematic size 2023-05-06 11:11:57 -04:00
Anuken
027b996ad6 Fixed power node linking in basegen 2023-05-05 23:46:21 -04:00
Anuken
0bed338141 Fixed invalid ranges for some weapons 2023-05-05 23:40:05 -04:00
Anuken
43922edac8 unitHealthMultiplier re-implemented 2023-05-03 18:38:50 -04:00
Joan Josep
c4e1719c0c Update bundle_ca.properties (#8542) 2023-04-29 09:03:51 -04:00
Anuken
4deddc6def tests are no longer stupid 2023-04-28 15:37:38 -04:00
Anuken
6f88684040 and these other weapons too 2023-04-28 15:17:05 -04:00
Anuken
1a83d35923 Merge remote-tracking branch 'origin/master' 2023-04-28 14:39:34 -04:00
Anuken
5e8f5f1d62 PointDefenseWeapon no longer affects range 2023-04-28 14:39:28 -04:00
OSP
d610cd6105 [XCore] Mini Attack server + reserve server (#8530) 2023-04-28 10:55:11 -04:00
Anuken
681bd19866 Merge remote-tracking branch 'origin/master' 2023-04-28 10:48:21 -04:00
Anuken
8eed0f8711 Fixed #8533 2023-04-28 10:48:17 -04:00
MEEPofFaith
61a83d0f6e warmup and totalProgress for Pumps (#8536) 2023-04-28 10:42:31 -04:00
Github Actions
fc23ad9910 Automatic bundle update 2023-04-28 14:41:51 +00:00
JniTrRny
eba58c73e6 Update bundle_th.properties (#8532)
* 6 months of doing nothing

* Why am I up there

* More lore to the descriptions

* RIP original item description

* revenge of the item details

* new vocabulary just dropped

* cancel transliteration

sounds kinda lame, so might revert it later.
2023-04-28 10:40:32 -04:00
Tomoko
ba0335e5ef new ip (#8534)
* new ip

* Update servers_v7.json
2023-04-28 10:39:35 -04:00
Anuken
7de6bd23ea Fixed #8529 2023-04-28 10:29:47 -04:00
Anuken
102d234129 Merge remote-tracking branch 'origin/master' 2023-04-24 23:59:51 -04:00
Anuken
583a1c69b6 Logic pathfind instruction 2023-04-24 23:59:46 -04:00
MEEPofFaith
1314dfe53e Don't set lighting if the preset has noLighting = true (#8519)
* Don't set lighting if the preset has noLighting = true

Allows lighting in the preset or world processors to take over instead of being forced to disable lighting.

* Less confusing style
2023-04-21 21:56:16 -04:00
ienov
abc80b9aab update easyplay servers (#8521) 2023-04-21 21:32:46 -04:00
Богдан
2ab9783639 Removed non-license notice from the end (#8524) 2023-04-21 21:32:30 -04:00
Anuken
05f158fd51 Fixed #8523 2023-04-21 21:29:39 -04:00
Anuken
13297023fe Fixed #8525 2023-04-21 21:24:18 -04:00
Anuken
9cc392a9ed Merge remote-tracking branch 'origin/master' 2023-04-21 11:44:05 -04:00
Anuken
eb1d0b8362 Fixed minimap update lag 2023-04-21 11:44:00 -04:00
Anuken
7a01be6dba splashDamagePierce 2023-04-20 01:03:18 -04:00
MEEPofFaith
6a3b243937 Erekir payload conveyor sprite consistency (#8506)
* Erekir payload conveyor sprite consistency

* Better blending from conveyor to factory

* Better blending for the 5x5
2023-04-18 16:37:34 -04:00
lemon3357
68016cc2b5 Update server_v7.json:add new server (#8512) 2023-04-18 10:55:39 -04:00
MEEPofFaith
b2f5312bf5 Add overlays to render updates (#8514) 2023-04-18 10:14:07 -04:00
Anuken
6a3638c3c2 Fixed #8513 2023-04-18 10:10:11 -04:00
Anuken
3ca3eb5951 Load saves in parallel 2023-04-18 09:35:29 -04:00
Anuken
d043c75022 Merge remote-tracking branch 'origin/master' 2023-04-16 12:09:06 -04:00
Anuken
2db90408fe Use schematic/map names for filenames 2023-04-16 12:09:02 -04:00
lemon3357
72577f20ba Update servers_v7.json (#8508) 2023-04-15 22:27:24 -04:00
Anuken
f62096dbd1 Merge remote-tracking branch 'origin/master' 2023-04-15 22:24:45 -04:00
Anuken
dbfbb08aaa Fixed #8509 2023-04-15 22:24:40 -04:00
Brandons404
4151d47837 Update servers_v7.json - added sandbox server (#8504)
* added pvp server to fish

* updated servers_v7.json
2023-04-15 22:22:39 -04:00
Github Actions
c54a76fc8a Automatic bundle update 2023-04-16 02:21:40 +00:00
BotiHUN7
95483286bf vps changed ip (#8510) 2023-04-15 22:20:55 -04:00
Anuken
3d013fc09c Merge remote-tracking branch 'origin/master' 2023-04-15 22:17:51 -04:00
Anuken
b83f5c66ca Fixed #8507 2023-04-15 22:17:46 -04:00
MonoDx
288080eeac Rework (#8488)
* update core/assets/bundles/bundle_be.properties

* update core/assets/bundles/bundle_be.properties

* update core/assets/bundles/bundle_be.properties

* update core/assets/bundles/bundle_be.properties

* update core/assets/bundles/bundle_be.properties

* update core/assets/bundles/bundle_be.properties

* update core/assets/bundles/bundle_be.properties

* update core/assets/bundles/bundle_be.properties
2023-04-15 22:16:44 -04:00
Noah van der Aa
f0342b2396 Remove mindustry.party (#8511) 2023-04-15 22:12:30 -04:00
Anuken
e47806b9b8 Minimap attack indicators 2023-04-15 15:54:33 -04:00
Anuken
4ae8a51676 Display camera on map + right-click to pan 2023-04-15 14:39:41 -04:00
Anuken
e8fbfe536e Merge remote-tracking branch 'origin/master' 2023-04-09 18:16:30 -04:00
Anuken
b86ca1d12f Fixed #8496 2023-04-09 18:16:25 -04:00
MEEPofFaith
1629afe491 Ammo obliteration (#8498)
* alwaysShooting for turrets

similar to alwaysShooting for weapons

* Weapon alwaysShooting takes shootCone into account

Speaking of untested PRs...
2023-04-09 16:12:24 -04:00
L0615T1C5-216AC-9437
3b1e5eadd9 Update CN Ports (#8499) 2023-04-09 16:08:04 -04:00
Anuken
df87b03e57 Fixed #8495 2023-04-09 16:07:34 -04:00
Anuken
a8b18bea2f Fixed #8494 2023-04-09 16:01:35 -04:00
Anuken
cdf14bb381 Fixed objectives disappearing for no reason 2023-04-08 21:55:20 -04:00
Anuken
bce9ecc520 Merge remote-tracking branch 'origin/master' 2023-04-08 21:37:37 -04:00
Anuken
b692c071ba Fixed shoot pattern overrides not working in mods 2023-04-08 21:37:33 -04:00
Даркнесс#3729
db90142a2d New Darkdustry host (#8492) 2023-04-08 12:15:16 -04:00
128 changed files with 2174 additions and 1290 deletions

55
LICENSE
View File

@@ -617,58 +617,3 @@ reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View File

@@ -15,6 +15,7 @@ manifold=36
mega=5
mindustry.entities.comp.BuildingComp=6
mindustry.entities.comp.BulletComp=7
mindustry.entities.comp.ConduitGraphUpdaterComp=48
mindustry.entities.comp.DecalComp=8
mindustry.entities.comp.EffectStateComp=9
mindustry.entities.comp.FireComp=10

View File

@@ -0,0 +1 @@
{fields:[]}

View File

@@ -49,7 +49,7 @@ allprojects{
}
localArc = {
return !project.hasProperty("release") && new File(projectDir.parent, '../Arc').exists()
return !project.hasProperty("release") && !project.hasProperty("noLocalArc") && new File(projectDir.parent, '../Arc').exists()
}
arcModule = { String name ->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 570 B

After

Width:  |  Height:  |  Size: 611 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 B

After

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1013 B

After

Width:  |  Height:  |  Size: 1012 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 B

After

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 416 B

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 B

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 B

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 B

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 B

After

Width:  |  Height:  |  Size: 291 B

View File

@@ -462,6 +462,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin
waves.sort.health = Health
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1237,6 +1239,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves Wait for Enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.unitammo = Units Require Ammo [red](may be removed)
rules.enemyteam = Enemy Team
@@ -2371,7 +2374,7 @@ lenum.stop = Stop moving/mining/building.
lenum.unbind = Completely disable logic control.\nResume standard AI.
lenum.move = Move to exact position.
lenum.approach = Approach a position with a radius.
lenum.pathfind = Pathfind to the enemy spawn.
lenum.pathfind = Pathfind to the specified position.
lenum.target = Shoot a position.
lenum.targetp = Shoot a target with velocity prediction.
lenum.itemdrop = Drop an item.

View File

@@ -88,7 +88,7 @@ stats.destroyed = Знішчана Будынкаў
stats.deconstructed = Дэкнструявана Будынкаў
stats.playtime = Час Гульні
globalitems = [accent]Усе Элементы
globalitems = [accent]Усе Прадметы
map.delete = Вы сапраўды хочаце выдаліць карту «[accent]{0}[]»?
level.highscore = Рэкорд: [accent]{0}
level.select = Выбар карты
@@ -453,6 +453,8 @@ waves.sort.reverse = Рэверсіўнае Сартаванне
waves.sort.begin = Пачатак
waves.sort.health = Здароўе
waves.sort.type = Тып
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Схаваць Усё
waves.units.show = Паказаць Усё
@@ -600,14 +602,14 @@ requirement.capture = Захапіць {0}
requirement.onplanet = Кантраляваць Сектар На {0}
requirement.onsector = Прызямліцца На Сектар: {0}
launch.text = Запуск
research.multiplayer = Толькі хасты могуць даследаваць элементы.
research.multiplayer = Толькі хасты могуць даследаваць прадметы.
map.multiplayer = Толькі хасты могуць праглядаць сектары.
uncover = Раскрыць
configure = Канфігурацыя выгрузкі
objective.research.name = Даследаваць
objective.produce.name = Атрымаць
objective.item.name = Атрымаць Элемент
objective.coreitem.name = Элемент Ядра
objective.item.name = Атрымаць Прадмет
objective.coreitem.name = Прадмет Ядра
objective.buildcount.name = Колькасць Будынкаў
objective.unitcount.name = Колькасць Адзінкаў
objective.destroyunits.name = Адзінкаў Знішчыць
@@ -628,7 +630,7 @@ objective.produce = [accent]Атрымаць:\n[]{0}[lightgray]{1}
objective.destroyblock = [accent]Знішчыць:\n[]{0}[lightgray]{1}
objective.destroyblocks = [accent]Знішчыць: [lightgray]{0}[white]/{1}\n{2}[lightgray]{3}
objective.item = [accent]Атрымаць: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3}
objective.coreitem = [accent]Рухацца да Ядра:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3}
objective.coreitem = [accent]Рухаць да Ядра:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3}
objective.build = [accent]Будаваць: [][lightgray]{0}[]x\n{1}[lightgray]{2}
objective.buildunit = [accent]Будаваць Адзінку: [][lightgray]{0}[]x\n{1}[lightgray]{2}
objective.destroyunits = [accent]Знішчыць: [][lightgray]{0}[]x Адзінкаў
@@ -650,7 +652,7 @@ bannedunits.whitelist = Забароненыя Адзінкі Ў Белым Сп
bannedblocks.whitelist = Забароненыя Блокі Ў Белым Спісе
addall = Дадаць всё
launch.from = Запуск Ад: [accent]{0}
launch.capacity = Ёмістасць Элементаў Да Запуску: [accent]{0}
launch.capacity = Ёмістасць Прадметаў Да Запуску: [accent]{0}
launch.destination = Кропка Прызначэння: {0}
configure.invalid = Колькасць павінна быць лікам паміж 0 і {0}.
add = Дадаць...
@@ -875,7 +877,7 @@ stat.repairspeed = Хуткасць Рамонту
stat.weapons = Зброя
stat.bullet = Куля
stat.moduletier = Модульны Ўзровень
stat.unittype = Unit Type
stat.unittype = Тып Адзінкі
stat.speedincrease = Павелічэнне хуткасці
stat.range = Радыус дзеяння
stat.drilltier = Бурць
@@ -930,7 +932,7 @@ ability.movelightning = Рух Маланкі
ability.shieldarc = Шчытавая Дуга
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Энэргетычнае Поле: [accent]{0}[] пашкоджанні ~ [accent]{1}[] блокі / [accent]{2}[] целі
bar.onlycoredeposit = Даступна Толькі Паляпшэнне Ядра
bar.onlycoredeposit = Даступны Толькі Перанос Рэсурсаў У Ядро
bar.drilltierreq = Патрабуецца свідар лепей
bar.noresources = Не Хапае Рэсурсаў
@@ -977,8 +979,8 @@ bullet.buildingdamage = [stat]{0}%[lightgray] building damage
bullet.knockback = [stat] {0} [lightgray]аддачы
bullet.pierce = [stat]{0}[lightgray]x pierce
bullet.infinitepierce = [stat]pierce
bullet.healpercent = [stat]{0}[lightgray]% healing
bullet.healamount = [stat]{0}[lightgray] direct repair
bullet.healpercent = [stat]{0}[lightgray]% рамонт
bullet.healamount = [stat]{0}[lightgray] напрамкавы рамонт
bullet.multiplier = [stat]{0}[lightgray]x множнік боепрыпасаў
bullet.reload = [stat]{0}[lightgray]x хуткасць стрэльбы
bullet.range = [stat]{0}[lightgray] tiles range
@@ -1065,7 +1067,7 @@ setting.smoothcamera.name = Павольная Камера
setting.vsync.name = Вертыкальная сінхранізацыя
setting.pixelate.name = Пікселізацыя
setting.minimap.name = Адлюстроўваць міні-карту
setting.coreitems.name = Паказаць Элементы Ядра
setting.coreitems.name = Паказаць Прадметы Ядра
setting.position.name = Адлюстроўваць каардынаты гульца
setting.mouseposition.name = Паказаць Пазіцыю Мышы
setting.musicvol.name = Гучнасць музыкі
@@ -1212,6 +1214,7 @@ rules.buildcostmultiplier = Множнік выдаткаў на будаўні
rules.buildspeedmultiplier = Множнік хуткасці будаўніцтва
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Хвалі чакаюць ворагаў
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Радыус зоны высадкі ворагаў: [lightgray] (блокаў)
rules.unitammo = Адзінкі Патрабуюць Боезапас
rules.enemyteam = Варожая Каманда
@@ -1334,7 +1337,7 @@ unit.disrupt.name = Парушэнне
unit.evoke.name = Выклік
unit.incite.name = Узбуджэнне
unit.emanate.name = Зыход
unit.manifold.name = Калектар
unit.manifold.name = Грузавы Дрон
unit.assembly-drone.name = Зборачны Дрон
unit.latum.name = Латум
unit.renale.name = Рэнал
@@ -1436,7 +1439,7 @@ block.door.name = Дзверы
block.door-large.name = Вялікiя дзверы
block.duo.name = Двайная турэль
block.scorch.name = Абпальшчык
block.scatter.name = Рассейвальнік
block.scatter.name = льнік
block.hail.name = Град
block.lancer.name = Капейшчык
block.conveyor.name = Канвеер
@@ -1542,12 +1545,12 @@ block.additive-reconstructor.name = Злучальны рэканструкта
block.multiplicative-reconstructor.name = Мультыплікацыйны рэканструктар
block.exponential-reconstructor.name = Экспаненцыяльны рэканструктар
block.tetrative-reconstructor.name = Тэтрацыйны рэканструктар
block.payload-conveyor.name = Канвеер для цяжкай зброі
block.payload-router.name = Роутар для цяжкай зброі
block.payload-conveyor.name = Грузавы Канвеер
block.payload-router.name = Грузавы Маршрутызатар
block.duct.name = Канал
block.duct-router.name = Канальны Маршрутызатар
block.duct-bridge.name = Канальны Мост
block.large-payload-mass-driver.name = Вялікі Выгрузачны Кіроўца Масс
block.large-payload-mass-driver.name = Вялікі Грузавы Кіроўца Масс
block.payload-void.name = Выгрузачны Вакуум
block.payload-source.name = Выгрузачная Крыніца
block.disassembler.name = Разборшчык
@@ -1561,9 +1564,9 @@ block.large-constructor.description = Стварае збудаванні да 4
block.deconstructor.name = Дэканструктар
block.deconstructor.description = Дэканструюе збудаванні і адзінкі. Вяртае 100% ад кошту збокрі.
block.payload-loader.name = Загрузчык
block.payload-loader.description = Загружае вадкасці і элементы ў блокі.
block.payload-loader.description = Загружае вадкасці і прадметы ў блокі.
block.payload-unloader.name = Выгрузчык
block.payload-unloader.description = Выгружае вадкасці і элементы з блокаў.
block.payload-unloader.description = Выгружае вадкасці і прадметы з блокаў.
block.heat-source.name = Крыніца Цяпла
block.heat-source.description = Блок 1x1 які дае віртуальнае бясконцае цяпло.
block.empty.name = Пусты
@@ -1708,7 +1711,7 @@ block.world-cell.name = Клетка Свету
block.tank-fabricator.name = Фабрыкатар Танкаў
block.mech-fabricator.name = Фабрыкатар Мяхоў
block.ship-fabricator.name = Фабрыкатар Суднаў
block.prime-refabricator.name = Галоўны Оэфабрыкатар
block.prime-refabricator.name = Галоўны Рэфабрыкатар
block.unit-repair-tower.name = Башня Рамонту Адзінак
block.diffuse.name = Дзіфуз
block.basic-assembler-module.name = Асноўны Сборачны Модуль
@@ -1736,7 +1739,7 @@ hint.skip = Прапусціць
hint.desktopMove = Выкарыстоўвайце [accent][[WASD][] каб рухацца.
hint.zoom = [accent]Пракручваць[] каб прыблізіць і аддаліць камеру.
hint.desktopShoot = [accent][[Левы-пстрык][] каб страляць.
hint.depositItems = Каб перанесці элементы, перанясіце іх са свайго карабля на ядро.
hint.depositItems = Каб перанесці прадметы, перанясіце іх са свайго карабля на ядро.
hint.respawn = Каб аднавіць карабель, націсніце [accent][[V][].
hint.respawn.mobile = Вы змянілі кантроль на адзінку/структуру. Каб аднавіць карабель, [accent]націсніце на іконку адзінкі зверху злева.[]
hint.desktopPause = Націсніце [accent][[Space][] каб прыпыніць і аднавіць гульню.
@@ -1767,39 +1770,39 @@ hint.guardian = Адзінкі [accent]Вартаўнік[] браніраван
hint.coreUpgrade = Ядра могуць быць палепшаны [accent]размяшчэннем больш моцных паверх другіх[].\n\nРазмясціце ядро \uf868 [accent]Штаб[] паверх ядра \uf869 [accent]Аскепак[]. Пераканайцеся, што гэта свабодна ад канструкцый побач.
hint.presetLaunch = Серыя [accent]сектара зоны пасадкі[], такія як [accent]Ледзяны Лес[], можна запусціць з любога месца. Яны не патрабуюць захапляць тэрыторыі побач.\n\n[accent]Пранумараваныя сектары[], такія як гэты, [accent]неабавязковыя[].
hint.presetDifficulty = На гэтым сектары [scarlet]вялікі узровень впрожай пагрозы[].\nЗапуск на такія сектары [accent]не рэкамендуецца[] без належнай тэхналогіі і падрыхтоўкі.
hint.coreIncinerate = Пасля таго як ёмістасць ядра запоўніцца элементам, any extra items of that type it receives will be [accent]incinerated[].
hint.factoryControl = To set a unit factory's [accent]output destination[], click a factory block while in command mode, then right-click a location.\nUnits produced by it will automatically move there.
hint.factoryControl.mobile = To set a unit factory's [accent]output destination[], tap a factory block while in command mode, then tap a location.\nUnits produced by it will automatically move there.
hint.coreIncinerate = Пасля таго як ёмістасць ядра запоўніцца прадметам, any extra items of that type it receives will be [accent]incinerated[].
hint.factoryControl = Каб усталяваць фабрыке адзінак [accent]шлях[], націсніце на блок фабрыку ў рэжыме камандавання, пасля нажміце на месца правай кнопкайэ мышкі.\nСтвораныя адзінкі будуць аўтаматычна рухацца сюды.
hint.factoryControl.mobile = Каб усталяваць фабрыке адзінак [accent]шлях[], націсніце на блок фабрыку ў рэжыме камандавання, пасля націсніце на месца.\nСтвораныя адзінкі будуць аўтаматычна рухацца сюды.
gz.mine = Рухайцеся да \uf8c4 [accent]меднай руды[] на зямлі і націсніце на яе каб пачаць дабываць.
gz.mine.mobile = Рухайцеся да \uf8c4 [accent]меднай руды[] на зямлі і дакраніцеся да яе каб пачаць дабываць.
gz.research = Адчыніце \ue875 дрэва тэхналогій.\nДаследуйце \uf870 [accent]Механічны Бур[], пасля выберыце яго ў ніжнім правым меню.\nНажміце на руду каб размясціць.
gz.research.mobile = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nTap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm.
gz.research.mobile = Адкройце \ue875 дрэва тэхналогій.\nДаследуйце \uf870 [accent]Механічны Бур[], пасля выберыце яго ў ніжнім правым меню.\nНацісніце на залежы медзі каб размясцічь бур.\n\nНацісніце на конпку \ue800 [accent]падцвердзіць[] у нізе справа каб падцвердзіць.
gz.conveyors = Даследуйце і размасціце \uf896 [accent]канвееры[] каб рухаць дабытыя рэсурсы\nад буроў да ядра.\n\nНажміце і правядзіце каб размясціць некалькі канвеераў.\n[accent]Пракручваць[] каб паварочваць аб'ект.
gz.conveyors.mobile = Даследуйце і размасціце \uf896 [accent]канвееры[] каб рухаць дабытыя рэсурсы\nад буроў да ядра.\n\nУтрымайце ваш палец адну секнду і правядзіце каб размясціць некалькі канвеераў.
gz.drills = Пашырайце аперацыю здабычы.\nРазмясціце больш Механічных Буроў.\nЗдабудзьце 100 медзі.
gz.lead = \uf837 [accent]Свінец[] гэта другі another commonly used resource.\nSet up drills to mine lead.
gz.moveup = \ue804 Move up for further objectives.
gz.turrets = Research and place 2 \uf861 [accent]Duo[] turrets to defend the core.\nDuo turrets require \uf838 [accent]ammo[] from conveyors.
gz.duoammo = Supply the Duo turrets with [accent]copper[], using conveyors.
gz.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace \uf8ae [accent]copper walls[] around the turrets.
gz.defend = Enemy incoming, prepare to defend.
gz.aa = Flying units cannot easily be dispatched with standard turrets.\n\uf860 [accent]Scatter[] turrets provide excellent anti-air, but require \uf837 [accent]lead[] as ammo.
gz.scatterammo = Supply the Scatter turret with [accent]lead[], using conveyors.
gz.supplyturret = [accent]Supply Turret
gz.zone1 = This is the enemy drop zone.
gz.zone2 = Anything built in the radius is destroyed when a wave starts.
gz.zone3 = A wave will begin now.\nGet ready.
gz.finish = Build more turrets, mine more resources,\nand defend against all the waves to [accent]capture the sector[].
onset.mine = Click to mine \uf748 [accent]beryllium[] from walls.\n\nUse [accent][[WASD] to move.
onset.mine.mobile = Tap to mine \uf748 [accent]beryllium[] from walls.
onset.research = Open the \ue875 tech tree.\nResearch, then place a \uf73e [accent]turbine condenser[] on the vent.\nThis will generate [accent]power[].
onset.bore = Research and place a \uf741 [accent]plasma bore[].\nThis automatically mines resources from walls.
onset.power = To [accent]power[] the plasma bore, research and place a \uf73d [accent]beam node[].\nConnect the turbine condenser to the plasma bore.
onset.ducts = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\nClick and drag to place multiple ducts.\n[accent]Scroll[] to rotate.
onset.ducts.mobile = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\n\nHold down your finger for a second and drag to place multiple ducts.
onset.moremine = Expand the mining operation.\nPlace more Plasma Bores and use beam nodes and ducts to support them.\nMine 200 beryllium.
onset.graphite = More complex blocks require \uf835 [accent]graphite[].\nSet up plasma bores to mine graphite.
onset.research2 = Begin researching [accent]factories[].\nResearch the \uf74d [accent]cliff crusher[] and \uf779 [accent]silicon arc furnace[].
gz.lead = \uf837 [accent]Свінец[] гэта другі звычайны ў выкарыстанні рэсурс.\nПастаўце буры каб здабываць яго.
gz.moveup = \ue804 Перайдзіце да наступных мэт.
gz.turrets = Даследуйце і размясціце 2 \uf861 [accent]Двайныя турэлі[] каб абараняць ядро.\nДвайныя турэлі патрабуюць \uf838 [accent]снарады[] падведзеныя канвеерамі.
gz.duoammo = Зарадзіце Двайныя турэлт [accent]меддзю[], выкарыстоўваючы канвееры.
gz.walls = [accent]Сцены[] могуць стрымліваць ад пашкоджанняў другія блокі .\nРазмясціце \uf8ae [accent]медныя сцены[] вакол турэлей.
gz.defend = Ворагі на падыходзе, прыгатуйцеся да аховы.
gz.aa = Паветранныя адзінкі не проста знішчыць звычайнымі турэлямі.\n\uf860 [accent]Турэлі льнік[] моцныя ў супраць-паветраннай ахове, патрабуюць \uf837 [accent]свінец[] у якасці боепрыпасаў.
gz.scatterammo = Зараджайче турэлі льнік [accent]свінцом[], выкарыстоўваючы канвееры.
gz.supplyturret = [accent]Грузавая Турэль
gz.zone1 = Гэта вобласць зяўлення ворага.
gz.zone2 = Усё што пастроена ў гэтай вобласцт будзе знішчана калі пачанецца хваля.
gz.zone3 = Хваля амаль пачалася.\nПрыгатуйцеся.
gz.finish = Пабудуйце больш турэляў, дабудзьце больш рэсурсаў,\nі вытрывайце ад усе хвалі каб [accent]захапіць гэты сектар[].
onset.mine = Нажміце каб дабываць \uf748 [accent]берылій[] са сцен.\n\nВыкарыстоўвайце [accent][[WASD] каб рухацца.
onset.mine.mobile = Націсніце каб дабываць \uf748 [accent]берылій[] са сцен.
onset.research = Адчыніце \ue875 дрэва тэхналогій.\nДаследуйце, а пасля размясціце \uf870 [accent]Турбінны Кандэнсатар[], на гейзеры.\nЁн будзе генераваць [accent]энергію[].
onset.bore = Даследуйце і размясціце \uf870 [accent]Плазменны Бур[]. \nЁн будзе аўтаматычна дабываць рэсурсы са сцен.
onset.power = Каб падлучыць [accent]энергію[] да плазменнага бура, даследуйце і размясціце \uf73d [accent]энергетычная вузлы[].\nЗлучыце турбінны кандэнсатар з плазменным буром.
onset.ducts = Даследуйце і размясціце \uf799 [accent]каналы[] каб перамяшчаць дабытыя рэсуры ад плазменных буроў у ядро.\nНажміце і утрымайце каб раўмясціць больш каналаў.\n[accent]Пракручваць[] каб паварочваць.
onset.ducts.mobile = Даследуйце і размясціце \uf799 [accent]каналы[] каб перамяшчаць дабытыя рэсуры ад плазменных буроў у ядро.\n\nУтрымлівайце ваш палец адну секнд і правядзіце каб размясціць больш каналаў.
onset.moremine = Пашырайце дабываючую прамысловасць.\nРазмясціце больш Плазменных Буроўmore і выкарыстоўвайце прамянёвыя вузлы і каналы каб падтрымліваць прамысловасць.\nДабудзьце 200 берылія.
onset.graphite = Патрабуецца больш комплексных блокаў \uf835 [accent]графіта[].\nРазмясціце плазменныя буры каб дабываць графіт.
onset.research2 = Пачніце даследаваць [accent]фабрыкі[].\n Даследуйце \uf74d [accent]Здр crusher[] and \uf779 [accent]silicon arc furnace[].
onset.arcfurnace = The arc furnace needs \uf834 [accent]sand[] and \uf835 [accent]graphite[] to create \uf82f [accent]silicon[].\n[accent]Power[] is also required.
onset.crusher = Use \uf74d [accent]cliff crushers[] to mine sand.
onset.fabricator = Use [accent]units[] to explore the map, defend buildings, and attack the enemy. Research and place a \uf6a2 [accent]tank fabricator[].
@@ -1878,7 +1881,7 @@ block.coal-centrifuge.description = Атвярдае нафту ў кавалк
block.incinerator.description = Выпарае любы лішні прадмет або вадкасць, якую ён атрымлівае.
block.power-void.description = Ануляе ўсю энергію, уведзеную ў яго. Толькі пясочніца.
block.power-source.description = Бясконца выводзіць энергію. Толькі пясочніца.
block.item-source.description = Бясконца выводзіць элементы. Толькі пясочніца.
block.item-source.description = Бясконца выводзіць прадметы. Толькі пясочніца.
block.item-void.description = Знішчае любыя прадметы. Толькі пясочніца.
block.liquid-source.description = Бясконца выводзіць вадкасці. Толькі пясочніца.
block.liquid-void.description = Знішчае любыя вадкасці. Толькі пясочніца.
@@ -1905,7 +1908,7 @@ block.force-projector.description = Стварае вакол сябе шасц
block.shock-mine.description = Наносіць страты ворагам, надыходзячым на міну. Амаль нябачная для ворага.
block.conveyor.description = Базавы транспартны блок. Перамяшчае прадметы наперад і аўтаматычна складае іх у блокі. Можна павярнуць.
block.titanium-conveyor.description = Палепшаны транспартны блок. Перамяшчае прадметы хутчэй, чым стандартныя канвееры.
block.plastanium-conveyor.description = Moves items in batches.\nAccepts items at the back, and unloads them in three directions at the front.
block.plastanium-conveyor.description = Перамяшчае прадметы ў групах.\nПрынімае прадметы ззаду, і выгружае іх у трох напрамках наперад.
block.junction.description = Дзейнічае як мост для двух перасякальных канвеерных стужак. Карысны ў сітуацыях, калі два розныя канвеера перавозяць розныя матэрыялы ў розныя месцы.
block.bridge-conveyor.description = Палепшаны транспартны блок. Дазваляе транспартаваць прадметы над 3 пліткамі любой мясцовасці або будынка.
block.phase-conveyor.description = Палепшаны транспартны блок. Выкарыстоўвае энергію для тэлепартацыі прадметаў на падлучаны фазавы канвеер над некалькімі пліткамі.
@@ -1924,8 +1927,8 @@ block.conduit.description = Асноўны блок транспарціроўк
block.pulse-conduit.description = Палепшаны блок транспарціроўкі вадкасці. Транспартуе вадкасці хутчэй і захоўвае больш, чым стандартныя трубаправоды.
block.plated-conduit.description = Перамяшчае вадкасці з той жа хуткасцю, што і імпульсныя трубаправоды, але валодае большай трываласцю. Не бярэ вадкасці са бакоў, акрамя як ад іншых трубаправодаў. \nПротекает менш.
block.liquid-router.description = Прымае вадкасці з аднаго кірунку і выводзіць іх да 3 іншых напрамкаў у роўнай ступені. Таксама можа захоўваць пэўную колькасць вадкасці. Карысны для падзелу вадкасцяў з адной крыніцы на некалькі мэтаў.
block.liquid-container.description = Stores a sizeable amount of liquid. Outputs to all sides, similarly to a liquid router.
block.liquid-tank.description = Захоўвае вялікая колькасць вадкасці. Выкарыстоўваецца для стварэння буфераў у сітуацыях з нясталай патрэбай у матэрыялах або ў якасці абароны для астуджэння жыццёва важных блокаў.
block.liquid-container.description = Захоўвае больш адзінак вадкасці. Выводзіць ва ўсіх напрамках, падобны да вадкаснага маршрутызатара.
block.liquid-tank.description = Захоўвае вялікую колькасць вадкасці. Выкарыстоўваецца для стварэння буфераў у сітуацыях з нясталай патрэбай у матэрыялах або ў якасці абароны для астуджэння жыццёва важных блокаў.
block.liquid-junction.description = Дзейнічае як мост для двух перасякальных трубаправодаў. Карысны ў сітуацыях, калі два розныя трубаправода пераносяць розныя вадкасці ў розныя месцы.
block.bridge-conduit.description = Пашыраны блок транспарціроўкі вадкасці. Дазваляе транспартаваць вадкасці над 3 пліткамі любой мясцовасці або будынка.
block.phase-conduit.description = Пашыраны блок транспарціроўкі вадкасці. Выкарыстоўвае энергію для тэлепартацыі вадкасцяў у падлучаны фазавы трубаправод над некалькімі пліткам.
@@ -1942,15 +1945,15 @@ block.differential-generator.description = Генеруе вялікая кол
block.rtg-generator.description = Просты, надзейны генератар. Выкарыстоўвае цяпло распадаюцца радыеактыўных злучэнняў для вытворчасці энергіі з нізкай хуткасцю.
block.solar-panel.description = Забяспечвае невялікая колькасць энергіі ад сонца.
block.solar-panel-large.description = Значна больш эфектыўны варыянт стандартнай сонечнай панэлі.
block.thorium-reactor.description = Генеруе значная колькасць энергіі з торыя. Патрабуе пастаяннага астуджэння. Выбухне з вялікай сілай пры недастатковай колькасці астуджальнай вадкасці. Выхадныя энергія залежыць ад напоўненасці торем, пры гэтым базавая энергія генеруецца пры максімальным запаўненні.
block.impact-reactor.description = Удасканалены генератар, здольны ствараць велізарная колькасць энергіі на піку эфектыўнасці. Патрабуецца значная колькасць энергіі для запуску працэсу.
block.thorium-reactor.description = Генеруе значную колькасць энергіі з торыя. Патрабуе пастаяннага астуджэння. Выбухне з вялікай сілай пры недастатковай колькасці астуджальнай вадкасці. Выхадныя энергія залежыць ад напоўненасці торем, пры гэтым базавая энергія генеруецца пры максімальным запаўненні.
block.impact-reactor.description = Удасканалены генератар, здольны ствараць велізарную колькасць энергіі на піку эфектыўнасці. Патрабуецца значная колькасць энергіі для запуску працэсу.
block.mechanical-drill.description = Танны свідар. Пры размяшчэнні на адпаведных плітках, прадметы бясконца выводзяцца ў павольным тэмпе. Здольны здабываць толькі базавыя рэсурсы.
block.pneumatic-drill.description = Палепшаны свідар, здольны здабываць тытан. Здабывае хутчэй, чым механічны свідар.
block.laser-drill.description = Дазваляе свідраваць яшчэ хутчэй з дапамогай лазернай тэхналогіі, але патрабуе энергіі. Здольны здабываць торый.
block.blast-drill.description = Самы прасунуты свідар. Патрабуе вялікую колькасці энергіі.
block.water-extractor.description = Выпампоўваецца падземныя воды. Выкарыстоўваецца ў месцах, дзе няма паверхневых вод.
block.cultivator.description = Вырошчвае малюсенькія канцэнтрацыі спрэчку ў атмасферы ў гатовыя да выкарыстання спрэчкі.
block.cultivator.details = Recovered technology. Used to produce massive amounts of biomass as efficiently as possible. Likely the initial incubator of the spores now covering Serpulo.
block.cultivator.details = Вастаноўленная тэхналогія. Выкарыстоўвае каб ствараць вялікую колькасць біямассы з найбольшай эфектыўнасццю. Падобны да ініцыйнага фабрыкатара спор які выкарыстоўваецца на Серпуло.
block.oil-extractor.description = Выкарыстоўвае вялікая колькасць энергіі, пяску і вады для бурэння, здабываючы нафту.
block.core-shard.description = Першая ітэрацыя капсулы ядра. Пасля знішчэння, увесь кантакт з рэгіёнам губляецца. Не дазваляйце гэтаму здарыцца.
block.core-shard.details = The first iteration. Compact. Self-replicating. Equipped with single-use launch thrusters. Not designed for interplanetary travel.
@@ -1959,7 +1962,7 @@ block.core-foundation.details = The second iteration.
block.core-nucleus.description = Трэцяя і апошняя ітэрацыя капсулы ядра. Вельмі добра Браніраваць. Захоўвае вялікая колькасць рэсурсаў.
block.core-nucleus.details = The third and final iteration.
block.vault.description = Захоўвае вялікая колькасць прадметаў кожнага тыпу. Блок разгрузчка можа быць выкарыстаны для здабывання прадметаў са сховішча.
block.container.description = Захоўвае невялікая колькасць прадметаў кожнага тыпу. Блок разгрузчка можа быць выкарыстаны для здабывання элементаў з кантэйнера.
block.container.description = Захоўвае невялікая колькасць прадметаў кожнага тыпу. Блок разгрузчка можа быць выкарыстаны для здабывання прадметаў з кантэйнера.
block.unloader.description = Выгружае прадметы з любога нетранспортного блока. Тып прадмета, які неабходна выгрузіць, можна змяніць націскам.
block.launch-pad.description = Запускае партыі прадметаў без неабходнасці запуску ядра.
block.launch-pad.details = Sub-orbital system for point-to-point transportation of resources. Payload pods are fragile and incapable of surviving re-entry.
@@ -2295,10 +2298,10 @@ control.unit = Unit/building to aim at.
control.shoot = Whether to shoot.
unitlocate.enemy = Whether to locate enemy buildings.
unitlocate.found = Whether the object was found.
unitlocate.building = Output variable for located building.
unitlocate.outx = Output X coordinate.
unitlocate.outy = Output Y coordinate.
unitlocate.group = Building group to look for.
unitlocate.building = Выводзіць зменную для выбраннага будынку.
unitlocate.outx = Выводзіць X каардынату.
unitlocate.outy = Выводзіць Y каардынату.
unitlocate.group = Знаходзіць группу будынкаў.
lenum.idle = Не рухацца, а будаваць/дабываць.\nЗвычайны стан.
lenum.stop = Перастаць рухацца/дабываць/будаваць.
lenum.unbind = Поўнасццю адключыць кантраляванне працэссарамі.\nАднавіць звычайныя паводзіны AI.
@@ -2307,8 +2310,8 @@ lenum.approach = Падысці да каардынаты з радыюсам.
lenum.pathfind = Найці шлях да варожай кропкі з'яўлення.
lenum.target = Атакаваць каардынату.
lenum.targetp = Атакаваць мэту з прадвылічэннем скорасці.
lenum.itemdrop = Апусціць элемент.
lenum.itemtake = Узяць элемент Take an item from a building.
lenum.itemdrop = Апусціць прадмет.
lenum.itemtake = Узяць прадмет Take an item from a building.
lenum.paydrop = Апусціць існуючы груз.
lenum.paytake = Узыць груз у заданных каардынатах.
lenum.payenter = Увайсці/прызямліцца на блок выгрузкі калі адзінка каля/над ім.

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin
waves.sort.health = Health
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1223,6 +1225,7 @@ rules.buildcostmultiplier = Множител на Необходимите Ре
rules.buildspeedmultiplier = Множител на Скоростта за Строене
rules.deconstructrefundmultiplier = Множител на Възстановени Ресурси при Деконструкция
rules.waitForWaveToEnd = Вълните Изчакват за Врагове
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Радиус на Начална Точка на Враговете:[lightgray] (полета)
rules.unitammo = Единиците се Нуждаят от Боеприпаси
rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Ordre invers
waves.sort.begin = Comença
waves.sort.health = Salut
waves.sort.type = Tipus
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Amaga-les totes
waves.units.show = Mostra-les totes
@@ -890,7 +892,7 @@ stat.repairspeed = Velocitat de reparació
stat.weapons = Armes
stat.bullet = Bala
stat.moduletier = Nivell del mòdul
stat.unittype = Unit Type
stat.unittype = Tipus dunitat
stat.speedincrease = Augment de velocitat
stat.range = Abast
stat.drilltier = Perforables
@@ -1227,6 +1229,7 @@ rules.buildcostmultiplier = Multiplicador del cost de construcció
rules.buildspeedmultiplier = Multiplicador de la velocitat de construcció
rules.deconstructrefundmultiplier = Multiplicador dels elements recuperats per desmuntatge
rules.waitForWaveToEnd = Les onades esperen fins veure enemics
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Radi de la zona daterratge:[lightgray] (caselles)
rules.unitammo = Les unitats necessiten munició
rules.enemyteam = Equip enemic

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Obrátit řazení
waves.sort.begin = Začít
waves.sort.health = Životy
waves.sort.type = Typ
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Schovat vše
waves.units.show = Zobrazit vše
@@ -1225,6 +1227,7 @@ rules.buildcostmultiplier = Násobek ceny stavění
rules.buildspeedmultiplier = Násobek rychlosti stavění
rules.deconstructrefundmultiplier = Násobek vratky při rozebrání
rules.waitForWaveToEnd = Vlny čekají na nepřátele
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Poloměr oblasti pro vylíhnutí: [lightgray](dlaždic)[]
rules.unitammo = Jednotky vyžadují munici
rules.enemyteam = Nepřátelský Tým

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin
waves.sort.health = Health
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Byggepris-forstærker
rules.buildspeedmultiplier = Byggehastigheds-forstærker
rules.deconstructrefundmultiplier = Dekonstruerings-tilbagebetalings-forstærker
rules.waitForWaveToEnd = Bølge-ventetid for fjender
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop-zone-radius:[lightgray] (felter)
rules.unitammo = Enheder kræver ammunition
rules.enemyteam = Enemy Team

View File

@@ -150,17 +150,17 @@ mod.incompatiblemod = [red]Inkompatibel
mod.blacklisted = [red]Nicht unterstützt
mod.unmetdependencies = [red]Fehlende Abhängigkeiten
mod.erroredcontent = [scarlet]Inhalt-Fehler
mod.circulardependencies = [red]Circular Dependencies
mod.incompletedependencies = [red]Incomplete Dependencies
mod.circulardependencies = [red]Wechselseitige Abhängigkeiten
mod.incompletedependencies = [red]Fehlende Abhängigkeiten
mod.requiresversion.details = Benötigt Spielversion [accent]{0}[]\nDein Spiel ist veraltet. Diese Mod benötigt eine neuere (möglicherweise Alpha- oder Beta-) Spielversion.
mod.outdatedv7.details = Diese Mod ist nicht mit der neuesten Version von Mindustry kompatibel. Der Autor muss diesen aktualisieren und [accent]minGameVersion: 136[] in der [accent]mod.json[]-Datei hinzufügen.
mod.blacklisted.details = Diese Mod würde manuell gesperrt, weil er diese Spielversion zum Abstürzen bringt oder andere Fehler verursacht. Benutze diese Mod nicht.
mod.missingdependencies.details = Dieser Mod fehlen folgende Abhängigkeiten: {0}
mod.erroredcontent.details = Diese Mod hat beim Laden Fehler verursacht. Bitte den Mod-Autor, diese zu beheben.
mod.circulardependencies.details = This mod has dependencies that depends on each other.
mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}.
mod.requiresversion = Requires game version: [red]{0}
mod.circulardependencies.details = Diese Mod hat Abhängigkeiten, die von einander abhängen.
mod.incompletedependencies.details = Diese Mod kann aufgrund fehlenden oder ungültigen Abhängigkeiten nicht geladen werden: {0}.
mod.requiresversion = Benötigt Spielversion: [red]{0}
mod.errors = Beim Laden von Inhalt sind Fehler aufgetreten.
mod.noerrorplay = [red]Du hast Mods mit Fehlern.[] Deaktiviere die Mods oder behebe die Fehler, bevor du spielst.
@@ -295,7 +295,7 @@ server.invalidport = Falscher Port!
server.error = [crimson] Fehler beim Hosten des Servers:[accent] {0}
save.new = Neuer Spielstand
save.overwrite = Möchtest du diesen Spielstand wirklich überschreiben?
save.nocampaign = Individual save files from the campaign cannot be imported.
save.nocampaign = Einzelne Spielstände aus der Kampagne können nicht importiert werden.
overwrite = Überschreiben
save.none = Keine Spielstände gefunden!
savefail = Fehler beim Speichern des Spiels!
@@ -364,8 +364,8 @@ pausebuilding = [accent][[{0}][] um das Bauen zu pausieren
resumebuilding = [scarlet][[{0}][] um das Bauen fortzusetzen
enablebuilding = [scarlet][[{0}][] um zu bauen
showui = Bedienflächen versteckt.\nDrücke [accent][[{0}][], um sie wieder anzuzeigen.
commandmode.name = [accent]Command Mode
commandmode.nounits = [no units]
commandmode.name = [accent]Steuerungsmodus
commandmode.nounits = [keine Einheiten]
wave = [accent]Welle {0}
wave.cap = [accent]Welle {0}/{1}
wave.waiting = Nächste Welle in {0}
@@ -450,7 +450,7 @@ waves.max = maximale Einheiten
waves.guardian = Boss
waves.preview = Vorschau
waves.edit = Bearbeiten...
waves.random = Random
waves.random = Zufällig
waves.copy = Aus der Zwischenablage kopieren
waves.load = Aus der Zwischenablage laden
waves.invalid = Ungültige Wellen in der Zwischenablage.
@@ -461,6 +461,8 @@ waves.sort.reverse = Reihenfolge umkehren
waves.sort.begin = Anfang
waves.sort.health = Lebenspunkte
waves.sort.type = Sorte
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Alle verstecken
waves.units.show = Alle anzeigen
@@ -649,8 +651,8 @@ objective.build = [accent]Baue: [][lightgray]{0}[]x\n{1}[lightgray]{2}
objective.buildunit = [accent]Baue Einheit: [][lightgray]{0}[]x\n{1}[lightgray]{2}
objective.destroyunits = [accent]Zerstöre: [][lightgray]{0}[]x Units
objective.enemiesapproaching = [accent]Gegner in [lightgray]{0}[]
objective.enemyescelating = [accent]Gegnerisch Lufteinheit-Produktion steigert sich in [lightgray]{0}[]
objective.enemyairunits = [accent]Gegnerisch Lufteinheit-Produktion startet in [lightgray]{0}[]
objective.enemyescelating = [accent]Gegnerische Lufteinheit-Produktion steigert sich in [lightgray]{0}[]
objective.enemyairunits = [accent]Gegnerische Lufteinheit-Produktion startet in [lightgray]{0}[]
objective.destroycore = [accent]Gegnerischen Kern zerstören
objective.command = [accent]Einheiten Steuern
objective.nuclearlaunch = [accent]⚠ Atomraketenstart festgestellt: [lightgray]{0}
@@ -777,7 +779,7 @@ sector.windsweptIslands.description = Diese Inseln befinden sich in der Nähe vo
sector.extractionOutpost.description = Ein Außenposten, der vom Gegner erstellt wurde, um Ressourcen in andere Sektoren zu transportieren.\n\nTrans-Sektorischer Transport ist nötig, um weiter voranzuschreiten. Zerstöre den Posten. Erforsche deren Launchpads.
sector.impact0078.description = Hier liegen Reste der interplanetarischen Transporteinheit, die dieses Sonnensystem zuerst betreten hat.\n\nRette so viel wie möglich von den Ruinen. Erforsche jede intakte Technologie.
sector.planetaryTerminal.description = Das Endziel.\n\nDiese Uferbasis besitzt ein Gerät, mit dem es möglich ist, Kerne auf andere Planeten zu schicken. Es ist [accent]sehr[] gut beschützt.\n\nStelle Wassereinheiten her. Eliminiere den Gegner so schnell wie möglich. Erforsche das Launchgerät.
sector.coastline.description = Überreste alter Schiffstechnologien wurden hier entdeckt. Remnants of naval unit technology have been detected at this location. Wehre dich gegen die gegnischen Angriffe, erobere den Sektor und erforsche diese Technologie.
sector.coastline.description = Überreste alter Schiffstechnologien wurden hier entdeckt. Wehre dich gegen die gegnischen Angriffe, erobere den Sektor und erforsche diese Technologie.
sector.navalFortress.description = Der Gegner hat auf einer abgelegenen, von Natur aus sicheren Insel eine Basis aufgebaut. Zerstöre diesen Außenposten. Finde deren fortgeschrittene Schiffstechnologien und erforsche diese weiter.
sector.onset.name = Der Anfang
@@ -899,7 +901,7 @@ stat.repairspeed = Heilungsgeschwindigkeit
stat.weapons = Waffen
stat.bullet = Geschoss
stat.moduletier = Modulstufe
stat.unittype = Unit Type
stat.unittype = Einheitentyp
stat.speedincrease = Geschwindigkeitserhöhung
stat.range = Reichweite
stat.drilltier = Abbaubare Erze
@@ -993,8 +995,8 @@ bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray
bullet.incendiary = [stat]entzündend
bullet.homing = [stat]zielsuchend
bullet.armorpierce = [stat]panzerbrechend
bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles
bullet.interval = [stat]{0}/sec[lightgray] interval bullets:
bullet.suppression = [stat]{0} sec[lightgray] Heilungsunterdrückung ~ [stat]{1}[lightgray] Kacheln
bullet.interval = [stat]{0}/sec[lightgray] Intervallgeschosse:
bullet.frags = [stat]{0}[lightgray]x Splittergeschosse:
bullet.lightning = [stat]{0}[lightgray]x Blitz ~ [stat]{1}[lightgray] Schaden
bullet.buildingdamage = [stat]{0}%[lightgray]Blockschaden
@@ -1091,7 +1093,7 @@ setting.pixelate.name = Verpixeln [lightgray](Könnte die Leistung beeinträchti
setting.minimap.name = Zeige die Minimap
setting.coreitems.name = Kern-Materialien anzeigen
setting.position.name = Spieler-Position anzeigen
setting.mouseposition.name = Mouseposition anzeigen
setting.mouseposition.name = Mausposition anzeigen
setting.musicvol.name = Musiklautstärke
setting.atmosphere.name = Planetatmosphäre zeigen
setting.ambientvol.name = Ambient-Lautstärke
@@ -1108,8 +1110,8 @@ setting.bridgeopacity.name = Brücken-Deckkraft
setting.playerchat.name = Chat im Spiel anzeigen
setting.showweather.name = Wetter anzeigen
setting.hidedisplays.name = Logik-Bildschirme verdecken
steam.friendsonly = Friends Only
steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join.
steam.friendsonly = Nur Freunde
steam.friendsonly.tooltip = Ob nur Steam-Freunde dein Spiel beitreten können.\nDiese Einstellung zu deaktivieren macht dein Spiel öffentlich - jeder kann beitreten.
public.beta = Bemerke: Beta-Versionen des Spiels können keine öffentlichen Spiele machen.
uiscale.reset = UI-Skalierung wurde geändert.\nDrücke "OK", um diese Skalierung zu bestätigen.\n[scarlet]Zurückkehren und Beenden in[accent] {0}[] Einstellungen...
uiscale.cancel = Abbrechen & Beenden
@@ -1224,7 +1226,7 @@ rules.unitbuildspeedmultiplier = Einheiten-Baugeschwindigkeit Multiplikator
rules.unitcostmultiplier = Einheit-Baukosten Multiplikator
rules.unithealthmultiplier = Einheit-Lebenspunkte-Multiplikator
rules.unitdamagemultiplier = Einheit-Schaden-Multiplikator
rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier
rules.unitcrashdamagemultiplier = Einheiten-Absturzschaden-Multiplikator
rules.solarmultiplier = Solarstrom-Multiplikator
rules.unitcapvariable = Kerne zählen zum Einheiten-Limit dazu
rules.unitcap = Einheiten-Limit
@@ -1236,6 +1238,7 @@ rules.buildcostmultiplier = Bau-Kosten Multiplikator
rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator
rules.deconstructrefundmultiplier = Abbau Ressourcen-Rückerstattung
rules.waitForWaveToEnd = Warten bis Welle endet
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop-Zonen-Radius:[lightgray] (Kacheln)
rules.unitammo = Einheiten benötigen Munition [red](wird vielleicht entfernt)
rules.enemyteam = Gegnerteam
@@ -1776,8 +1779,8 @@ hint.breaking = Benutze [accent]Rechtsklick[] und bewege deine Maus, um zu zerst
hint.breaking.mobile = Aktiviere den \ue817 [accent]Hammer[] unten rechts und tippe, um Blöcke zu zerstören.\n\nHalte deinen Finger auf dem Bildschirm, um eine Fläche auszuwählen.
hint.blockInfo = Genauere Blockinformationen können im [accent]Baumenü[] rechts beim [accent][[?][]-Symbol gefunden werden.
hint.derelict = [accent]Derelikte[] Blöcke sind kaputte Teile alter Basen, die nicht mehr funktionieren.\n\nSie können für Ressourcen [accent]abgebaut[] werden.
hint.research = Nehme den \ue875 [accent]Forschen[]-Knopf um neue Technologien zu erforschen.
hint.research.mobile = Nehme den \ue875 [accent]Forschen[]-Knopf im \ue88c [accent]Menü[], um neue Technologien zu erforschen.
hint.research = Klicke auf den \ue875 [accent]Forschen[]-Knopf um neue Technologien zu erforschen.
hint.research.mobile = Klicke auf den \ue875 [accent]Forschen[]-Knopf im \ue88c [accent]Menü[], um neue Technologien zu erforschen.
hint.unitControl = Halte [accent][[L-STRG][] und [accent]klicke[], um alliierte Einheiten oder Geschütze zu steuern.
hint.unitControl.mobile = [accent][[Doppelklicke][], um alliierte Einheiten oder Geschütze zu steuern.
hint.unitSelectControl = Du kannst [accent]L-Shift[] gedrückt halten, um den Steuerungsmodus zu aktivieren.\nIm Steuerungsmodus hältst du [accent]Linksklick[] gedrückt, um Einheiten auswählen zu können. Mit [accent]Rechtsklick[] bestimmst du, wo die ausgewählten Einheiten hingehen sollen.
@@ -1830,9 +1833,9 @@ onset.mine.mobile = Tippe, um \uf748 [accent]Beryllium[] aus Wänden abzubauen.
onset.research = Öffne das \ue875 Forschungsmenü.\nErforsche und platziere einen \uf73e [accent]Turbinenkondensator[] auf einen Schlot.\nDieser erzeugt [accent]Strom[].
onset.bore = Erforsche und platziere einen \uf741 [accent]Plasmabohrer[].\nDieser baut Rohstoffe aus Wänden automatisch ab.
onset.power = Um den Plasmabohrer mit [accent]Strom[] zu versorgen, kannst du \uf73d [accent]Strahlknoten[] erforschen und bauen.\nVerbinde den Turbinenkondensator mit dem Plasmabohrer.
onset.ducts = Erforsche und platziere \uf799 [accent]Rohrleitugnen[], um die abgebauten Ressourcen zum Kern zu transportieren.\nZiehe die Maus über den Bildschirm, um mehrere Rohrleitugnen zu platzieren.\n[accent]Scrolle[], um die Richtung zu ändern.
onset.ducts.mobile = Erforsche und platziere \uf799 [accent]Rohrleitugnen[], um die abgebauten Ressourcen zum Kern zu transportieren.\n\nDrücke kurz und ziehe deinen Finger über den Bildschirm, um mehrere Rohrleitugnen zu platzieren.
onset.moremine = Erweitere den Bergbau.\nPlatziere mehr Plasmabohrer und verbinde sie mit Rohrleitugnen und Strahlknoten.\nBaue 200 Beryllium ab.
onset.ducts = Erforsche und platziere \uf799 [accent]Rohrleitungen[], um die abgebauten Ressourcen zum Kern zu transportieren.\nZiehe die Maus über den Bildschirm, um mehrere Rohrleitungen zu platzieren.\n[accent]Scrolle[], um die Richtung zu ändern.
onset.ducts.mobile = Erforsche und platziere \uf799 [accent]Rohrleitungen[], um die abgebauten Ressourcen zum Kern zu transportieren.\n\nDrücke kurz und ziehe deinen Finger über den Bildschirm, um mehrere Rohrleitungen zu platzieren.
onset.moremine = Erweitere den Bergbau.\nPlatziere mehr Plasmabohrer und verbinde sie mit Rohrleitungen und Strahlknoten.\nBaue 200 Beryllium ab.
onset.graphite = Komplexere Blöcke benötigen \uf835 [accent]Graphit[].\nStelle Plasmabohrer auf, um Graphit abzubauen.
onset.research2 = Fange an, [accent]Fabriken[] zu erforschen.\nEroforsche den \uf74d [accent]Klippenbohrer[] und den \uf779 [accent]Silizium-Lichtbogenofen[].
onset.arcfurnace = Der Lichtbogenofen verschmilzt \uf834 [accent]Sand[] und \uf835 [accent]Graphit[], um \uf82f [accent]Silizium[] herzustellen.\n[accent]Strom[] wird auch benötigt.
@@ -2099,7 +2102,7 @@ block.reinforced-surge-wall-large.description = Beschützt Blöcke vor gegnerisc
block.shielded-wall.description = Beschützt Blöcke vor gegnerischen Projektilen. Benutzt Strom, um ein Projektil-reflektierendes Schild zu erstellen. Leitet Strom.
block.blast-door.description = Eine Mauer, die verbündete Bodeneinheiten durchlässt. Kann nicht manuell gesteuert werden.
block.duct.description = Bewegt Materialien vorwärts. Kann nur ein einziges Item lagern.
block.armored-duct.description = Bewegt Materialien vorwärts. Materialen können von der Seite nur aus Rohrleitugnen herein.
block.armored-duct.description = Bewegt Materialien vorwärts. Materialen können von der Seite nur aus Rohrleitungen herein.
block.duct-router.description = Verteilt Materialien gleichmäßig auf bis zu drei Richtungen. Nimmt Materialien nur aus einer Richtung an. Kann als Sortierer verwendet werden.
block.overflow-duct.description = Gibt Materialien nur zu den Seiten heraus, wenn der vordere Ausgang blockiert ist.
block.duct-bridge.description = Transportierrt Materialen über Blöcke und Terrain.
@@ -2236,7 +2239,7 @@ lst.flushmessage = Zeige eine Nachricht aus dem Textspeicher auf dem Bildschirm.
lst.cutscene = Verschiebe die Spielerkamera.
lst.setflag = Setze eine Flag, die von allen Prozessoren gelesen werden kann.
lst.getflag = Überprüfe, ob eine Flag gesetzt ist.
lst.setprop = Sets a property of a unit or building.
lst.setprop = Setzt eine Eigenschaft einer Einheit oder eines Blockes.
logic.nounitbuild = [red]Logik, die Blöcke baut, ist hier nicht erlaubt.

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Invertir orden
waves.sort.begin = Inicio
waves.sort.health = Vida
waves.sort.type = Tipo
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Ocultar todo
waves.units.show = Mostrar todo
@@ -1233,6 +1235,7 @@ rules.buildcostmultiplier = Multiplicador de coste de construcción
rules.buildspeedmultiplier = Multiplicador de velocidad de construcción
rules.deconstructrefundmultiplier = Multiplicador de devolución de desconstrucción
rules.waitForWaveToEnd = Las oleadas esperan a los enemigos
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Radio de zona de aterrizaje:[lightgray] (bloques)
rules.unitammo = Las unidades necesitan munición
rules.enemyteam = Equipo enemigo

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin
waves.sort.health = Health
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Ehitamise maksumuse kordaja
rules.buildspeedmultiplier = Ehitamise kiiruse kordaja
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Järgmine laine ootab eelmise laine lõpuni
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Maandumisala raadius:[lightgray] (ühik)
rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team

View File

@@ -456,6 +456,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin
waves.sort.health = Health
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1215,6 +1217,7 @@ rules.buildcostmultiplier = Eraikitze kostu-biderkatzailea
rules.buildspeedmultiplier = Eraikitze abiadura-biderkatzailea
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Atzeratu bolada etsairik geratzen bada
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Erruntze puntuaren erradioa:[lightgray] (lauzak)
rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Järjestä käänteisesti
waves.sort.begin = Alkutaso
waves.sort.health = Elämäpisteet
waves.sort.type = Tyyppi
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Piilota kaikki
waves.units.show = Näytä kaikki
@@ -1212,6 +1214,7 @@ rules.buildcostmultiplier = Rakentamisen hintakerroin
rules.buildspeedmultiplier = Rakentamisen nopeuskerroin
rules.deconstructrefundmultiplier = Purkamisen palautuskerroin
rules.waitForWaveToEnd = Tasot odottavat edellisen tason loppumista
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Syntypisteen säde:[lightgray] (laattoina)
rules.unitammo = Yksiköt tarvitsevat ammuksia
rules.enemyteam = Vihollisjoukkue

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Pabaliktad na Sort
waves.sort.begin = Simula
waves.sort.health = Health
waves.sort.type = Uri
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Itago lahat
waves.units.show = Ipakita lahat
@@ -1212,6 +1214,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves Wait for Enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team

View File

@@ -462,6 +462,8 @@ waves.sort.reverse = Tri inversé
waves.sort.begin = Vague
waves.sort.health = Santé
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Masquer tout
waves.units.show = Afficher tout
@@ -1237,6 +1239,7 @@ rules.buildcostmultiplier = Multiplicateur du prix de construction
rules.buildspeedmultiplier = Multiplicateur du temps de construction
rules.deconstructrefundmultiplier = Multiplicateur du remboursement lors de la déconstruction
rules.waitForWaveToEnd = Les Vagues attendent la mort des ennemis
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Rayon d'Apparition des ennemis :[lightgray] (tuiles)
rules.unitammo = Les Unités nécessitent des munitions
rules.enemyteam = Équipe ennemie

View File

@@ -457,6 +457,8 @@ waves.sort.reverse = Rendezés visszafelé
waves.sort.begin = Begin
waves.sort.health = Élet
waves.sort.type = Típus
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1222,6 +1224,7 @@ rules.buildcostmultiplier = Építési költség szorzó
rules.buildspeedmultiplier = Építési sebesség szorzó
rules.deconstructrefundmultiplier = Bontási visszatérítés szorzó
rules.waitForWaveToEnd = Waves Wait for Enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Ledobási zóna sugara:[lightgray] (mező)
rules.unitammo = Egységeknek kell lövedék
rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Urut Balik
waves.sort.begin = Mulai
waves.sort.health = Darah
waves.sort.type = Tipe
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Sembunyikan Semua
waves.units.show = Lihat Semua
@@ -1233,6 +1235,7 @@ rules.buildcostmultiplier = Penggandaan Harga Bangunan
rules.buildspeedmultiplier = Penggandaan Waktu Pembuatan Bangunan
rules.deconstructrefundmultiplier = Penggandaan Kembalinya Bahan Bangunan yang Dihancurkan
rules.waitForWaveToEnd = Gelombang Menunggu Musuh
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Radius Titik Muncul:[lightgray] (ubin)
rules.unitammo = Unit Membutuhkan Amunisi
rules.enemyteam = Tim Musuh

View File

@@ -49,7 +49,7 @@ mods.browser.noreleases = [scarlet]Nessuna versione trovata\n[accent]Cerca se la
mods.browser.latest = <Ultima versione>
mods.browser.releases = Versioni
mods.github.open = Repo
mods.github.open-release = Pagina delle versioni di mindustry
mods.github.open-release = Pagina delle versioni di Mindustry
mods.browser.sortdate = Ordinato per data
mods.browser.sortstars = Ordinato per stelle
@@ -456,6 +456,8 @@ waves.sort.reverse = Inverti ordine
waves.sort.begin = Inizia
waves.sort.health = Salute
waves.sort.type = Tipo
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Nascondi tutto
waves.units.show = Mostra tutto
@@ -837,7 +839,7 @@ paused = [accent]< In Pausa >
clear = Pulisci
banned = [scarlet]Bandito
unsupported.environment = [scarlet]Ambiente non supportato
yes = Si
yes = Sì
no = No
info.title = Info
error.title = [scarlet]Si è verificato un errore
@@ -875,7 +877,7 @@ stat.poweruse = Consumo Energetico
stat.powerdamage = Energia/Danno
stat.itemcapacity = Capacità Oggetti
stat.memorycapacity = Capacità di Memoria
stat.basepowergeneration = Generazione Minina di Energia
stat.basepowergeneration = Generazione Minima di Energia
stat.productiontime = Tempo di Produzione
stat.repairtime = Tempo di Riparazione Completa
stat.repairspeed = Velocità di riparazione
@@ -892,7 +894,7 @@ stat.maxunits = Unità Attive Massime
stat.health = Salute
stat.armor = Armatura
stat.buildtime = Tempo di Costruzione
stat.maxconsecutive = Limite Consecutive
stat.maxconsecutive = Limite Consecutivi
stat.buildcost = Costo di Costruzione
stat.inaccuracy = Inaccuratezza
stat.shots = Colpi
@@ -985,9 +987,9 @@ bullet.knockback = [stat]{0}[lightgray] contraccolpo
bullet.pierce = [stat]{0}[lightgray]x perforazione
bullet.infinitepierce = [stat]perforazione
bullet.healpercent = [stat]{0}[lightgray]% guarigione
bullet.healamount = [stat]{0}[lightgray] qquantità di cura
bullet.healamount = [stat]{0}[lightgray] quantità di cura
bullet.multiplier = [stat]{0}[lightgray]x moltiplicatore munizioni
bullet.reload = [stat]{0}[lightgray]x ricarica
bullet.reload = [stat]{0}%[lightgray] ricarica
bullet.range = [stat]{0}[lightgray] raggio in blocchi
unit.blocks = blocchi
@@ -1026,7 +1028,7 @@ setting.shadows.name = Ombre
setting.blockreplace.name = Suggerimento Blocchi Automatico
setting.linear.name = Filtro Lineare
setting.hints.name = Suggerimenti
setting.logichints.name = Suggerimenti
setting.logichints.name = Suggerimenti sulla logica
setting.backgroundpause.name = Metti in pausa quando in background
setting.buildautopause.name = Pausa Automatica nella Costruzione
setting.doubletapmine.name = Doppio click per minare
@@ -1052,7 +1054,7 @@ setting.difficulty.hard = Difficile
setting.difficulty.insane = Impossibile
setting.difficulty.name = Difficoltà:
setting.screenshake.name = Movimento dello Schermo
setting.bloomintensity.name = Intensità d'illuminazione (bloom)
setting.bloomintensity.name = Intensità d'illuminazione (Bloom Intensity)
setting.bloomblur.name = Illuminazione sfocata (Bloom Blur)
setting.effects.name = Visualizza Effetti
setting.destroyedblocks.name = Visualizza Blocchi Distrutti
@@ -1072,7 +1074,7 @@ setting.smoothcamera.name = Visuale fluida
setting.vsync.name = VSync
setting.pixelate.name = Pixellato
setting.minimap.name = Mostra Minimappa
setting.coreitems.name = Mostra Oggetti Nucleo (WIP)
setting.coreitems.name = Mostra Oggetti Nucleo
setting.position.name = Mostra Posizione Giocatori
setting.mouseposition.name = Mostra mouse
setting.musicvol.name = Volume Musica
@@ -1162,9 +1164,9 @@ keybind.chat.name = Chat
keybind.player_list.name = Lista dei Giocatori
keybind.console.name = Console
keybind.rotate.name = Ruota
keybind.rotateplaced.name = Ruota Blocco Esistente (premuto)
keybind.rotateplaced.name = Ruota Blocco Esistente (mantenere premuto)
keybind.toggle_menus.name = Mostra/Nascondi Menu
keybind.chat_history_prev.name = Scorri Chat vero l'alto
keybind.chat_history_prev.name = Scorri Chat verso l'alto
keybind.chat_history_next.name = Scorri Chat verso il basso
keybind.chat_scroll.name = Scorri Chat
keybind.chat_mode.name = Cambia modalità chat
@@ -1193,8 +1195,8 @@ rules.wavesending = Wave Sending
rules.waves = Ondate
rules.attack = Modalità Attacco
rules.rtsai = RTS AI
rules.rtsminsquadsize = Dimensione squadra minima
rules.rtsmaxsquadsize = Dimensione squadra massima
rules.rtsminsquadsize = Dimensione minima squadra
rules.rtsmaxsquadsize = Dimensione massima squadra
rules.rtsminattackweight = Min Attack Weight
rules.cleanupdeadteams = Cancella costruzioni delle squadre sconfitte (PvP)
rules.corecapture = Cattura nucleo alla distruzione
@@ -1219,6 +1221,7 @@ rules.buildcostmultiplier = Moltiplicatore Costo Costruzione
rules.buildspeedmultiplier = Moltiplicatore Velocità Costruzione
rules.deconstructrefundmultiplier = Moltiplicatore Rimborso di Smantellamento
rules.waitForWaveToEnd = Le ondate aspettano fino a quando l'ondata precedente finisce
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Raggio di Generazione:[lightgray] (blocchi)
rules.unitammo = Unità Richiedono Munizioni
rules.enemyteam = Squadra avversaria
@@ -1416,7 +1419,7 @@ block.dirt.name = Terra
block.dirt-wall.name = Muro di Terra
block.mud.name = Fango
block.white-tree-dead.name = Albero Bianco Morto
block.white-tree.name = Albero Morto
block.white-tree.name = Albero Bianco
block.spore-cluster.name = Agglomerato di Spore
block.metal-floor.name = Pavimento Metallico 1
block.metal-floor-2.name = Pavimento Metallico 2
@@ -1550,7 +1553,7 @@ block.segment.name = Segmentatore
block.ground-factory.name = Fabbrica Terrestre
block.air-factory.name = Fabbrica Aerea
block.naval-factory.name = Fabbrica Navale
block.additive-reconstructor.name = Ricostruttore Adattivo
block.additive-reconstructor.name = Ricostruttore Additivo
block.multiplicative-reconstructor.name = Ricostruttore Moltiplicativo
block.exponential-reconstructor.name = Ricostruttore Esponenziale
block.tetrative-reconstructor.name = Ricostruttore Tetrattivo

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = 降順
waves.sort.begin = 開始
waves.sort.health = 体力
waves.sort.type = タイプ
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = すべて非表示
waves.units.show = すべて表示
@@ -1225,6 +1227,7 @@ rules.buildcostmultiplier = 建設コストの倍率
rules.buildspeedmultiplier = 建設速度の倍率
rules.deconstructrefundmultiplier = ブロック破壊時の還元倍率
rules.waitForWaveToEnd = 敵が倒されるまでウェーブの進行を中断
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = 出現範囲の半径:[lightgray] (タイル)
rules.unitammo = ユニットは弾丸が必要
rules.enemyteam = 敵チーム

View File

@@ -457,6 +457,8 @@ waves.sort.reverse = 정렬 뒤집기
waves.sort.begin = 시작 단계
waves.sort.health = 체력
waves.sort.type = 기체 유형
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = 모두 숨기기
waves.units.show = 모두 보이기
@@ -1225,6 +1227,7 @@ rules.buildcostmultiplier = 건설 비용 배수
rules.buildspeedmultiplier = 건설 속도 배수
rules.deconstructrefundmultiplier = 철거 환불 배수
rules.waitForWaveToEnd = 한 단계가 끝날때까지 대기
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = 스폰 구역 범위: [lightgray] (타일)
rules.unitammo = 기체 탄약 필요
rules.enemyteam = 적 팀

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin
waves.sort.health = Health
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Statymo Kainų Daugiklis
rules.buildspeedmultiplier = Statymo Greičio Daugiklis
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Laukti, kol pasibaigs banga
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Išmetimo Zonos Spindulys:[lightgray] (blokais)
rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team

View File

@@ -462,6 +462,8 @@ waves.sort.reverse = Omgekeerd Sorteren
waves.sort.begin = Begin
waves.sort.health = Levenspunten
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Verberg Alle
waves.units.show = Toon Alle
@@ -1225,6 +1227,7 @@ rules.buildcostmultiplier = Bouwkosten Vermenigvuldiger
rules.buildspeedmultiplier = Bouwsnelheid Vermenigvuldiger
rules.deconstructrefundmultiplier = Deconstructie Terugbetalings Vermenigvuldiger
rules.waitForWaveToEnd = Golven wachten tot alle vijanden zijn verslagen
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Vijandelijke Spawn Diameter:[lightgray] (tegels)
rules.unitammo = Eenheden Gebruiken Ammunitie
rules.enemyteam = Vijandelijk Team

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin
waves.sort.health = Health
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves wait for enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Odwrotne Sortowanie
waves.sort.begin = Rozpocznij
waves.sort.health = Zdrowie
waves.sort.type = Typ
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Schowaj Wszystkie
waves.units.show = Pokaż Wszystkie
@@ -1223,6 +1225,7 @@ rules.buildcostmultiplier = Mnożnik Kosztów Budowania
rules.buildspeedmultiplier = Mnożnik Prędkości Budowania
rules.deconstructrefundmultiplier = Mnożnik Zwrotu Dekonstrukcji
rules.waitForWaveToEnd = Fale Czekają Na Przeciwników
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Zasięg Strefy Zrzutu:[lightgray] (kratki)
rules.unitammo = Jednostki Potrzebują Amunicji
rules.enemyteam = Drużyna Wroga

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Inverter ordem
waves.sort.begin = Começar
waves.sort.health = Vida
waves.sort.type = Tipo
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Esconder tudo
waves.units.show = Mostrar tudo
@@ -1234,6 +1236,7 @@ rules.buildcostmultiplier = Multiplicador de custo de construção
rules.buildspeedmultiplier = Multiplicador de velocidade de construção
rules.deconstructrefundmultiplier = Multiplicador de reembolso de desconstrução
rules.waitForWaveToEnd = Hordas esperam inimigos
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Raio da zona de spawn:[lightgray] (blocos)
rules.unitammo = Unidades requerem munição
rules.enemyteam = Time Inimigo

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin
waves.sort.health = Health
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Multiplicador de custo de construção
rules.buildspeedmultiplier = Multiplicador de velocidade de construção
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = hordas esperam inimigos
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Raio da zona de spawn:[lightgray] (blocos)
rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Inversează Sortarea
waves.sort.begin = Început
waves.sort.health = Viață
waves.sort.type = Tip
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Ascunde
waves.units.show = Vezi Tot
@@ -1225,6 +1227,7 @@ rules.buildcostmultiplier = Multiplicatorul Costului Construcției
rules.buildspeedmultiplier = Multiplicatorul Vitezei de Construcție
rules.deconstructrefundmultiplier = Multiplicatorul Recompensei la Deconstrucție
rules.waitForWaveToEnd = Valurile Așteaptă Inamicii
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Raza Zonei de Lansare:[lightgray] (pătrate)
rules.unitammo = Unitățile Necesită Muniție
rules.enemyteam = Echipa Inamică

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Обратная сортировка
waves.sort.begin = Начало
waves.sort.health = Здоровье
waves.sort.type = Тип
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Скрыть все
waves.units.show = Показать все
@@ -889,7 +891,7 @@ stat.repairspeed = Скорость ремонта
stat.weapons = Орудия
stat.bullet = Снаряд
stat.moduletier = Уровень модуля
stat.unittype = Unit Type
stat.unittype = Боевая единица
stat.speedincrease = Увеличение скорости
stat.range = Радиус действия
stat.drilltier = Бурит
@@ -983,8 +985,8 @@ bullet.splashdamage = [stat]{0}[lightgray] урона в радиусе ~[stat]
bullet.incendiary = [stat]зажигательный
bullet.homing = [stat]самонаводящийся
bullet.armorpierce = [stat]бронебойный
bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles
bullet.interval = [stat]{0}/sec[lightgray] interval bullets:
bullet.suppression = [stat]{0} сек[lightgray] подавления регенерации в радиусе ~ [stat]{1}[lightgray] блоков
bullet.interval = [stat]{0}/сек[lightgray] интервальный(ых) снаряд(ов):
bullet.frags = [stat]{0}[lightgray]x осколочный(ых) снаряд(ов):
bullet.lightning = [stat]{0}[lightgray]x молнии ~ [stat]{1}[lightgray] урона
bullet.buildingdamage = [stat]{0}%[lightgray] урона по постройкам
@@ -1098,8 +1100,8 @@ setting.bridgeopacity.name = Непрозрачность мостов
setting.playerchat.name = Отображать облака чата над игроками
setting.showweather.name = Отображать погоду
setting.hidedisplays.name = Скрыть логические дисплеи
steam.friendsonly = Friends Only
steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join.
steam.friendsonly = Только друзья
steam.friendsonly.tooltip = Только ли друзья из Steam могут присоединяться к вашей игре.\nУбрав эту галочку, вы сделаете вашу игру публичной - присоединиться сможет любой желающий.
public.beta = Имейте в виду, что бета-версия игры не может делать игры публичными.
uiscale.reset = Масштаб пользовательского интерфейса был изменён.\nНажмите «ОК» для подтверждения этого масштаба.\n[scarlet]Возврат настроек и выход через[accent] {0}[] секунд…
uiscale.cancel = Отменить & Выйти
@@ -1226,6 +1228,7 @@ rules.buildcostmultiplier = Множитель затрат на строите
rules.buildspeedmultiplier = Множитель скорости строительства
rules.deconstructrefundmultiplier = Множитель возврата ресурсов при разборке
rules.waitForWaveToEnd = Волны ожидают врагов
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Радиус зоны высадки врагов:[lightgray] (блоков)
rules.unitammo = Боев. ед. требуют боеприпасы
rules.enemyteam = Команда Врагов
@@ -2208,7 +2211,7 @@ lst.flushmessage = Отображает сообщение из текстово
lst.cutscene = Управляет камерой игрока.
lst.setflag = Устанавливает глобальный флаг, который может быть прочитан всеми процессорами.
lst.getflag = Проверяет, установлен ли глобальный флаг.
lst.setprop = Sets a property of a unit or building.
lst.setprop = Устанавливает свойство единицы или постройки.
logic.nounitbuild = [red]Строительство с помощью процессоров здесь запрещено.

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Suprotno Sortiraj
waves.sort.begin = Početak
waves.sort.health = Snaga
waves.sort.type = Tip
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Sakrij Sve
waves.units.show = Pokaži Sve
@@ -1227,6 +1229,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Talasi Čekaju Za Neprijatelje
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Radijus Zone Prijema:[lightgray] (polja)
rules.unitammo = Jedinice Zahtevaju Municiju [red](može biti uklonjena)
rules.enemyteam = Neprilateljski Tim

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin
waves.sort.health = Health
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves wait for enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team

File diff suppressed because it is too large Load Diff

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin
waves.sort.health = Health
waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All
waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves wait for enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Ters Sırala
waves.sort.begin = Başla
waves.sort.health = Can
waves.sort.type = Tür
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hepsini Gizle
waves.units.show = Hepsini Göster
@@ -1224,6 +1226,7 @@ rules.buildcostmultiplier = İnşa Ücreti Çarpanı
rules.buildspeedmultiplier = İnşa Hızı Çarpanı
rules.deconstructrefundmultiplier = Yıkım İade Çarpanı
rules.waitForWaveToEnd = Dalgalar Düşmanı Bekler
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = İniş Noktası Yarıçapı: [lightgray](kare)
rules.unitammo = Birlikler Mermi Gerektirir
rules.enemyteam = Düşman Takım

View File

@@ -150,15 +150,16 @@ mod.incompatiblemod = [red]Несумісно
mod.blacklisted = [red]Не підтримується
mod.unmetdependencies = [red]Відсутні залежності
mod.erroredcontent = [scarlet]Помилки під час завантаження
mod.circulardependencies = [red]Circular Dependencies
mod.incompletedependencies = [red]Incomplete Dependencies
mod.requiresversion.details = Необхідна версія гри: [accent]{0}[]\nВаша гра застаріла. Мод потребує новішу версію гри (можливо бета- чи альфа-версію) для роботи.mod.outdatedv7.details = Ця модифікація не сумісна з останньою версією гри. Розробник модифікації має оновити її та додати [accent]minGameVersion: 136[] у свій [accent]mod.json[] файл.
mod.outdatedv7.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 136[] to its [accent]mod.json[] file.
mod.circulardependencies = [red]Кругові залежності
mod.incompletedependencies = [red]Неповні залежності
mod.requiresversion.details = Необхідна версія гри: [accent]{0}[]\nВаша гра застаріла. Мод потребує новішу версію гри (можливо бета- чи альфа-версію) для роботи.
mod.outdatedv7.details = Ця модифікація не сумісна з останньою версією гри. Розробник модифікації має оновити її та додати [accent]minGameVersion: 136[] у свій [accent]mod.json[] файл.
mod.blacklisted.details = Цю модифікацію було вручну внесено у чорний список за постійні збої або інші проблеми з цією версією гри. Не використовуйте її.
mod.missingdependencies.details = This mod is missing dependencies: {0}
mod.missingdependencies.details = У цій модифікації відсутні наступні залежності: {0}
mod.erroredcontent.details = Ця модифікація спричинила помилки при завантаженні. Попросіть автора виправити їх.
mod.circulardependencies.details = This mod has dependencies that depends on each other.
mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}.
mod.circulardependencies.details = Цей мод має залежності, які залежать одна від одної.
mod.incompletedependencies.details = Цей мод неможливо завантажити через недійсні або відсутні залежності: {0}
mod.requiresversion = Необхідна версія гри: [red]{0}
mod.errors = Виникли помилки під час завантаження змісту.
mod.noerrorplay = [red]Ви маєте модифікації з помилками.[] Або вимкніть проблемні модифікації, або виправте їх.
@@ -293,7 +294,7 @@ server.invalidport = Недійсний номер порту!
server.error = [crimson]Помилка створення сервера.
save.new = Нове збереження
save.overwrite = Ви дійсно хочете перезаписати це місце збереження?
save.nocampaign = Individual save files from the campaign cannot be imported.
save.nocampaign = Окремі файли збереження з кампанії не можна імпортувати.
overwrite = Перезаписати
save.none = Збережень не знайдено!
savefail = Не вдалося зберегти гру!
@@ -336,7 +337,7 @@ command.repair = Ремонтувати
command.rebuild = Відбудовувати
command.assist = Допомагати гравцеві
command.move = Рухатися
command.boost = Boost
command.boost = Летіти
openlink = Перейти за посиланням
copylink = Скопіювати посилання
back = Назад
@@ -459,6 +460,8 @@ waves.sort.reverse = Зворотне сортування
waves.sort.begin = Хвилями
waves.sort.health = Здоров’ям
waves.sort.type = Типом
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Сховати все
waves.units.show = Показати все
@@ -661,7 +664,7 @@ resources.max = Максимум
bannedblocks = Заборонені блоки
objectives = Завдання
bannedunits = Заборонені одиниці
rules.hidebannedblocks = Приховати заборені блоки
rules.hidebannedblocks = Приховати заборонені блоки
bannedunits.whitelist = Заборонені одиниці як білий список
bannedblocks.whitelist = Заборонені блоки як білий список
addall = Додати все
@@ -897,7 +900,7 @@ stat.repairspeed = Швидкість відновлення
stat.weapons = Зброя
stat.bullet = Кулі
stat.moduletier = Рівень модуля
stat.unittype = Unit Type
stat.unittype = Тип одиниці
stat.speedincrease = Збільшення швидкості
stat.range = Радіус дії
stat.drilltier = Видобуває
@@ -949,8 +952,8 @@ ability.statusfield = {0} Поле підсилення
ability.unitspawn = Завод одиниць «{0}»
ability.shieldregenfield = Щитовідновлювальне поле
ability.movelightning = Блискавки під час руху
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.shieldarc = Щитова дуга
ability.suppressionfield = Поле пригнічення відновлення
ability.energyfield = Енергетичне поле: [accent]{0}[] шкоди ~ [accent]{1}[] блоків / [accent]{2}[] цілей
bar.onlycoredeposit = Передача предметів дозволена лише до ядра
@@ -991,11 +994,11 @@ bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat
bullet.incendiary = [stat]запальний
bullet.homing = [stat]самонаведення
bullet.armorpierce = [stat]бронебійність
bullet.suppression = [stat]{0} sec[lightgray] repair suppression ~ [stat]{1}[lightgray] tiles
bullet.interval = [stat]{0}/sec[lightgray] interval bullets:
bullet.suppression = [stat]{0}[lightgray] сек. пригнічення відновлення ~ [stat]{1}[lightgray] плит.
bullet.interval = [stat]{0} за сек. [lightgray] період між кулями:
bullet.frags = [stat]{0}[lightgray]x шкода по ділянці від снарядів:
bullet.lightning = [stat]{0}[lightgray]x блискавки ~ [stat]{1}[lightgray] шкоди
bullet.buildingdamage = [stat]{0}%[lightgray] шкода по будівлям
bullet.buildingdamage = [stat]{0}%[lightgray] шкода по будівлях
bullet.knockback = [stat]{0}[lightgray] відкидання
bullet.pierce = [stat]{0}[lightgray]x пробиття
bullet.infinitepierce = [stat]пробиття
@@ -1042,7 +1045,7 @@ setting.blockreplace.name = Пропонування щодо автоматич
setting.linear.name = Лінійна фільтрація
setting.hints.name = Підказки
setting.logichints.name = Підказки при роботі з логікою
setting.backgroundpause.name = Пауза в разі згортанні
setting.backgroundpause.name = Пауза в разі згортання
setting.buildautopause.name = Автоматичне призупинення будування
setting.doubletapmine.name = Подвійне швидке натискання для початку видобутку
setting.commandmodehold.name = Утримуйте для переходу в режим командування
@@ -1106,8 +1109,8 @@ setting.bridgeopacity.name = Непрозорість мостів
setting.playerchat.name = Показувати хмару чата над гравцями
setting.showweather.name = Показувати погоду
setting.hidedisplays.name = Приховувати логічні дисплеї
steam.friendsonly = Friends Only
steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join.
steam.friendsonly = Лише друзі
steam.friendsonly.tooltip = Чи лише друзі Steam зможуть приєднатися до вашої гри.Якщо зняти цей прапорець, ваша гра стане загальнодоступною будь-хто зможе приєднатися.
public.beta = Зауважте, що в бета-версії гри ви не можете робити публічні ігри.
uiscale.reset = Масштаб користувацького інтерфейсу було змінено.\nНатисніть «Гаразд» для підтвердження цього масштабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] секунд…
uiscale.cancel = Скасувати й вийти
@@ -1160,7 +1163,7 @@ keybind.diagonal_placement.name = Діагональне розміщення
keybind.pick.name = Вибрати блок
keybind.break_block.name = Зламати блок
keybind.select_all_units.name = Вибрати всі одиниці
keybind.select_all_unit_factories.name = Вибрати всі заводи зі створення одиниць
keybind.select_all_unit_factories.name = Вибрати всі заводи одиниць
keybind.deselect.name = Скасувати
keybind.pickupCargo.name = Взяти вантаж
keybind.dropCargo.name = Скинути вантаж
@@ -1222,7 +1225,7 @@ rules.unitbuildspeedmultiplier = Множник швидкості виробн
rules.unitcostmultiplier = Множник вартості одиниць
rules.unithealthmultiplier = Множник здоров’я бойових одиниць
rules.unitdamagemultiplier = Множник шкоди бойових одиниць
rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier
rules.unitcrashdamagemultiplier = Множник шкоди одиниці при зіткненні одиниць
rules.solarmultiplier = Множник сонячної енергії
rules.unitcapvariable = Ядра збільшують обмеження на кількість одиниць
rules.unitcap = Початкове обмеження одиниць
@@ -1234,6 +1237,7 @@ rules.buildcostmultiplier = Множник затрат на будування
rules.buildspeedmultiplier = Множник швидкості будування
rules.deconstructrefundmultiplier = Множник відшкодування в разі демонтажу
rules.waitForWaveToEnd = Хвилі чекають на завершення попередньої
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Радіус зони висадки:[lightgray] (плитки)
rules.unitammo = Бойові одиниці потребують боєприпасів
rules.enemyteam = Ворожа команда
@@ -1581,17 +1585,17 @@ block.silicon-crucible.name = Кремнієвий тигель
block.overdrive-dome.name = Великий прискорювач
block.interplanetary-accelerator.name = Міжпланетний прискорювач
block.constructor.name = Конструктор
block.constructor.description = Збирає споруди. Доступні розміри для збирання: 1x1, 2x2.
block.constructor.description = Англійська назва: Constructor\nЗбирає споруди. Доступні розміри для збирання: 1x1, 2x2.
block.large-constructor.name = Великий конструктор
block.large-constructor.description = Збирає споруди. Доступні розміри для збирання: 1x1, 2x2, 3x3 та 4x4.
block.large-constructor.description = Англійська назва: Large Constructor\nЗбирає споруди. Доступні розміри для збирання: 1x1, 2x2, 3x3 та 4x4.
block.deconstructor.name = Деконструктор
block.deconstructor.description = Деконструює споруди та одиниці. Повертає 100% вартості збірки.
block.deconstructor.description = Англійська назва: Deconstructor\nДеконструює споруди та одиниці. Повертає 100% вартості збірки.
block.payload-loader.name = Вантажний завантажувач
block.payload-loader.description = Завантажує рідини та предмети в блоки.
block.payload-loader.description = Англійська назва: Payload Loader\nЗавантажує рідини та предмети в блоки.
block.payload-unloader.name = Вантажний розвантажувач
block.payload-unloader.description = Розвантажує рідини та предмети з блоків.
block.payload-unloader.description = Англійська назва: Payload Unloader\nРозвантажує рідини та предмети з блоків.
block.heat-source.name = Джерело тепла
block.heat-source.description = Блок, що нескінченно виробляє тепло.
block.heat-source.description = Англійська назва: Heat Source\nБлок, що нескінченно виробляє тепло.
#Erekir
block.empty.name = Порожнеча
@@ -1668,7 +1672,7 @@ block.beryllium-wall.name = Берилієва стіна
block.beryllium-wall-large.name = Велика берилієва стіна
block.tungsten-wall.name = Вольфрамова стіна
block.tungsten-wall-large.name = Велика вольфрамова стіна
block.blast-door.name = Двері з вибухонебезпечного з’єднання
block.blast-door.name = Посилені двері
block.carbide-wall.name = Карбідна стіна
block.carbide-wall-large.name = Велика карбідна стіна
block.reinforced-surge-wall.name = Посилена кінетична стіна
@@ -1779,7 +1783,7 @@ hint.unitControl = Утримуйте [accent][[лівий Ctrl][] і [accent]н
hint.unitControl.mobile = [accent][Зробіть коротке натискання двічі[], щоби контролювати союзні одиниці чи башти.
hint.unitSelectControl = Для керування одиницями увійдіть в [accent]режим командування[], утримуючи [accent]лівий Shift[].\nПеребуваючи в командному режимі, натисніть і протягуйте для вибору одиниць. Натисніть [accent]ПКМ[] на позицію або ціль, щоби віддати наказ одиницям, які там знаходяться.
hint.unitSelectControl.mobile = Для керування одиницями увійдіть в [accent]режим командування[], натиснувши кнопку [accent]командувати[] ліворуч знизу.\nПеребуваючи в командному режимі, зробіть довгий натиск і протягуйте для вибору одиниць. Торкніться позиції або цілі, щоби віддати наказ одиницям, які там знаходяться.
hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the bottom right.
hint.launch = Як тільки буде зібрано достатньо ресурсів, ви зможете зробити [accent]Запуск[] за допомогою вибору найближчих секторів \ue827 [accent]мапи[] внизу праворуч.
hint.launch.mobile = Як тільки буде зібрано достатньо ресурсів, ви зможете зробити [accent]Запуск[] за допомогою вибору найближчих секторів з \ue827 [accent]мапи[] у \ue88c [accent]меню[].
hint.schematicSelect = Утримуйте [accent][[F][] і тягніть, щоби вибрати блоки для їхнього подальшого копіювання і вставлення.\n\nНатисніть [accent][[СКМ][], щоби скопіювати певний тип блоку.
hint.rebuildSelect = Утримуючи [accent][[B][], протягніть, щоби вибрати зруйновані проєкти блоків.\nЦе призведе до їхнього автоматичного відновлення.
@@ -1808,7 +1812,7 @@ gz.research.mobile = Відкрийте \ue875 дерево технологій
gz.conveyors = Дослідіть і розташуйте\uf896 [accent]конвеєри[], щоби переміщувати видобуті ресурси\nвід бурів до ядра.\n\nНатисніть і протягніть для розміщення кількох конвеєрів.\n[accent]Прокручуйте[] для обертання.
gz.conveyors.mobile = Дослідіть і розташуйте \uf896 [accent]конвеєри[], щоби переміщувати видобуті ресурси\nвід бурів до ядра.\n\nУтримуйте свій палець близько секунди протягніть його для розміщення кількох конвеєрів.
gz.drills = Наростіть видобуток корисних копалин.\nРозмістіть більше механічних бурів.\nВидобудьте 100 міді.
gz.lead = \uf837 [accent]Свинець[]є ще одним часто використовуваним ресурсом.\nУстановіть бури, щоби розпочати видобуток.
gz.lead = \uf837 [accent]Свинець[] є ще одним часто використовуваним ресурсом.\nУстановіть бури, щоби розпочати видобуток.
gz.moveup = \ue804 Рухайтеся вперед до подальших цілей.
gz.turrets = Дослідіть і розмістіть 2 \uf861 [accent]подвійні[] башти, щоби захистити ядро.\nПодвійні башти потребують \uf838 [accent]боєприпаси[] з конвеєрів.
gz.duoammo = Забезпечте подвійні башти [accent]міддю[], використовуючи конвеєри.
@@ -1850,353 +1854,353 @@ split.acquire = Ви повинні дістати трохи вольфраму
split.build = Одиниці повинні бути перенесені на іншу сторону стіни.\nУстановіть дві [accent]великі вантажні катапульти[], по одній на кожну сторону стіни.\nУстановіть зв’язок, натиснувши на одну з них, а потім вибравши іншу.
split.container = Подібно до контейнера, одиниці також можуть бути перевезені за допомогою [accent]великої вантажної катапульти[].\nРозмістіть завод, що створює одиниці, поруч з вантажною катапультою, щоби завантажити одиниць, а потім відправити їх через стіну в атаку на базу противника.
item.copper.description = Використовується у всіх типах блоків і боєприпасах.
item.copper.description = Англійська назва: Copper\nВикористовується у всіх типах блоків і боєприпасах.
item.copper.details = Мідь. Напрочуд багато жил цієї руди на Серпуло. За своєю структурою слабка, якщо не зміцнена.
item.lead.description = Широко використовується в електроніці та в транспортуванні рідин.
item.lead.description = Англійська назва: Lead\nШироко використовується в електроніці та в транспортуванні рідин.
item.lead.details = Інертний сплав, що широко використовується в акумуляторах.\nПримітка. Мабуть, токсичний для біологічних форм життя. Не те щоби їх тут залишилося багато…
item.metaglass.description = Використовується для розподілу чи зберігання рідини.
item.graphite.description = Використовується для боєприпасів та електричних компонентів.
item.sand.description = Використовується для виробництва інших удосконалених матеріалів.
item.coal.description = Використовується для виробництва палива і вдосконалених матеріалів.
item.metaglass.description = Англійська назва: Metaglass\nВикористовується для розподілу чи зберігання рідини.
item.graphite.description = Англійська назва: Graphite\nВикористовується для боєприпасів та електричних компонентів.
item.sand.description = Англійська назва: Sand\nВикористовується для виробництва інших удосконалених матеріалів.
item.coal.description = Англійська назва: Coal\nВикористовується для виробництва палива і вдосконалених матеріалів.
item.coal.details = Виглядає скам’янілою рослинною речовиною, утвореною задовго до Сівби.
item.titanium.description = Використовується в транспортуванні будівель, бурів та в заводах.
item.thorium.description = Використовується в міцних конструкціях і як ядерне паливо.
item.scrap.description = Використовується в Плавильнях і Подрібнювачах для перероблення в інші матеріали.
item.titanium.description = Англійська назва: Titanium\nВикористовується в транспортуванні будівель, бурів та в заводах.
item.thorium.description = Англійська назва: Thorium\nВикористовується в міцних конструкціях і як ядерне паливо.
item.scrap.description = Англійська назва: Scrap\nВикористовується в Плавильнях і Подрібнювачах для перероблення в інші матеріали.
item.scrap.details = Залишки старих споруд та підрозділів.
item.silicon.description = Використовується в сонячних панелях, складній електроніці та боєприпасах самонаведення для башт.
item.plastanium.description = Використовується в передових одиницях та у фрагментованих боєприпасах.
item.phase-fabric.description = Використовується в передовій електроніці й технології самовідновлення.
item.surge-alloy.description = Використовується в передовій зброї та реактивних захисних конструкціях.
item.spore-pod.description = Використовується для перетворення на нафту, вибухівку та паливо.
item.silicon.description = Англійська назва: Silicon\nВикористовується в сонячних панелях, складній електроніці та боєприпасах самонаведення для башт.
item.plastanium.description = Англійська назва: Plastanium\nВикористовується в передових одиницях та у фрагментованих боєприпасах.
item.phase-fabric.description = Англійська назва: Phase Fabric\nВикористовується в передовій електроніці й технології самовідновлення.
item.surge-alloy.description = Англійська назва: Surge Alloy\nВикористовується в передовій зброї та реактивних захисних конструкціях.
item.spore-pod.description = Англійська назва: Spore Pod\nВикористовується для перетворення на нафту, вибухівку та паливо.
item.spore-pod.details = Спори. Найімовірніше, синтетична форма життя. Виділяють гази, токсичні для іншого біологічного життя. Надзвичайно загарбницька поведінка. Легкозаймисті при певних умовах.
item.blast-compound.description = Використовується в бомбах та в розривних боєприпасах.
item.pyratite.description = Використовується в запальній зброї й твердопаливних генераторах.
item.blast-compound.description = Англійська назва: Blast Compound\nВикористовується в бомбах та в розривних боєприпасах.
item.pyratite.description = Англійська назва: Pyratite\nВикористовується в запальній зброї й твердопаливних генераторах.
#Erekir
item.beryllium.description = Використовується в багатьох типах будівництва та боєприпасів на Ерекірі.
item.tungsten.description = Використовується в бурах, броні та боєприпасах. Необхідний при будівництві більш досконалих конструкцій.
item.oxide.description = Використовується як теплопровідник та ізолятор для електроенергії.
item.carbide.description = Використовується у передових конструкціях, важких одиницях та боєприпасах.
item.beryllium.description = Англійська назва: Beryllium\nВикористовується в багатьох типах будівництва та боєприпасів на Ерекірі.
item.tungsten.description = Англійська назва: Tungsten\nВикористовується в бурах, броні та боєприпасах. Необхідний при будівництві більш досконалих конструкцій.
item.oxide.description = Англійська назва: Oxide\nВикористовується як теплопровідник та ізолятор для електроенергії.
item.carbide.description = Англійська назва: Carbide\nВикористовується у передових конструкціях, важких одиницях та боєприпасах.
liquid.water.description = Використовується для охолодження машин та перероблювання відходів.
liquid.slag.description = Переробляється у відокремлювачах у складові метали або розпорошується на ворогів як зброя.
liquid.oil.description = Використовується у виробництві передових матеріалів і як запальні боєприпаси.
liquid.cryofluid.description = Використовується як теплоносій у реакторах, баштах і заводах.
liquid.water.description = Англійська назва: Water\nВикористовується для охолодження машин та перероблювання відходів.
liquid.slag.description = Англійська назва: Slag\nПереробляється у відокремлювачах у складові метали або розпорошується на ворогів як зброя.
liquid.oil.description = Англійська назва: Oil\nВикористовується у виробництві передових матеріалів і як запальні боєприпаси.
liquid.cryofluid.description = Англійська назва: Cryofluid\nВикористовується як теплоносій у реакторах, баштах і заводах.
#Erekir
liquid.arkycite.description = Використовується в хімічних реакціях для виробництва електроенергії та синтезу матеріалів.
liquid.ozone.description = Використовується як окислювач у матеріальному виробництві, а також як паливо. Трохи вибухонебезпечний.
liquid.hydrogen.description = Застосовується при видобутку корисних копалин, виробництві одиниць та ремонті споруд. Легкозаймистий.
liquid.cyanogen.description = Використовується для виготовлення боєприпасів, будівництва передових одиниць, проведення різних реакцій в передових блоках. Легкозаймистий.
liquid.nitrogen.description = Використовується при видобутку корисних копалин, газоутворенні та агрегатному виробництві. Інертний.
liquid.neoplasm.description = Небезпечний біологічний побічний продукт неоплазмового реактора. Швидко поширюється на будь-які сусідні водовмісні блоки, яких торкається, пошкоджуючи їх в процесі. В’язка.
liquid.arkycite.description = Англійська назва: Arkycite\nВикористовується в хімічних реакціях для виробництва електроенергії та синтезу матеріалів.
liquid.ozone.description = Англійська назва: Ozone\nВикористовується як окислювач у матеріальному виробництві, а також як паливо. Трохи вибухонебезпечний.
liquid.hydrogen.description = Англійська назва: Hydrogen\nЗастосовується при видобутку корисних копалин, виробництві одиниць та ремонті споруд. Легкозаймистий.
liquid.cyanogen.description = Англійська назва: Cyanogen\nВикористовується для виготовлення боєприпасів, будівництва передових одиниць, проведення різних реакцій в передових блоках. Легкозаймистий.
liquid.nitrogen.description = Англійська назва: Nitrogen\nВикористовується при видобутку корисних копалин, газоутворенні та агрегатному виробництві. Інертний.
liquid.neoplasm.description = Англійська назва: Neoplasm\nНебезпечний біологічний побічний продукт неоплазмового реактора. Швидко поширюється на будь-які сусідні водовмісні блоки, яких торкається, пошкоджуючи їх в процесі. В’язка.
liquid.neoplasm.details = Неоплазма. Неконтрольована маса синтетичних клітин, що швидко діляться, з консистенцією, подібною до осаду. Термостійка. Надзвичайно небезпечна для будь-яких конструкцій, пов’язаних з водою.\n\nЗанадто складна і нестабільна для звичайного аналізу. Потенційне застосування невідоме. Рекомендується спалювання в шлакових басейнах.
block.derelict = \uf77e [lightgray]Переможені
block.armored-conveyor.description = Переміщує предмети вперед. Не приймає введення з боків ні з чого, крім інших конвеєрних стрічок.
block.illuminator.description = Випромінює світло.
block.message.description = Зберігає повідомлення для комунікації між союзниками.
block.reinforced-message.description = Зберігає повідомлення для комунікації між союзниками.
block.world-message.description = Блок повідомлення для використання у створенні мап. Не можна знищити.
block.graphite-press.description = Стискає вугілля в графіт.
block.multi-press.description = Стискає вугілля в графіт. Потребує воду для охолодження.
block.silicon-smelter.description = Синтезує пісок із вугіллям для отримання кремнію.
block.kiln.description = Виплавляє пісок та свинець у метаскло.
block.plastanium-compressor.description = Виробляє пластаній із нафти й титану.
block.phase-weaver.description = Синтезує фазову тканину з торію та піску.
block.surge-smelter.description = Поєднує титан, свинець, кремній і мідь у кінетичний сплав.
block.cryofluid-mixer.description = Змішує воду й подрібнений титан, щоби виробити кріогенну рідину.
block.blast-mixer.description = Виробляє вибухову суміш із пиротиту і спорових стручків.
block.pyratite-mixer.description = Змішує вугілля, свинець та пісок у легкозаймистий пиротит.
block.melter.description = Розплавляє брухт у шлак.
block.separator.description = Відокремлює шлак на його мінеральні компоненти.
block.spore-press.description = Стискає спорові стручки для синтезування нафти.
block.pulverizer.description = Подрібнює брухт у дрібний пісок.
block.coal-centrifuge.description = Нафта перетворюється у вугілля.
block.incinerator.description = Випаровує будь-який предмет або рідину, що отримує.
block.power-void.description = Знищує будь-яку під’єднану енергію. Тільки пісочниця.
block.power-source.description = Постійно генерує енергію. Тільки пісочниця.
block.item-source.description = Постійно створює предмети. Тільки пісочниця.
block.item-void.description = Руйнує будь-які предмети. Тільки пісочниця.
block.liquid-source.description = Постійно виробляє рідини. Тільки пісочниця.
block.liquid-void.description = Випаровує будь-які рідини. Тільки пісочниця.
block.payload-source.description = Нескінченно створює і виводить вантажі. Тільки пісочниця.
block.payload-void.description = Знищує будь-які вантажі. Тільки пісочниця.
block.copper-wall.description = Захищає споруди від ворожих снарядів.
block.copper-wall-large.description = Захищає споруди від ворожих снарядів.
block.titanium-wall.description = Захищає споруди від ворожих снарядів.
block.titanium-wall-large.description = Захищає споруди від ворожих снарядів.
block.plastanium-wall.description = Захищає споруди від ворожих снарядів. Поглинає електричні дуги й лазери. Блокує автоматичні з’єднання енергетичних вузлів.
block.plastanium-wall-large.description = Захищає споруди від ворожих снарядів. Поглинає електричні дуги й лазери. Блокує автоматичні з’єднання енергетичних вузлів.
block.thorium-wall.description = Захищає споруди від ворожих снарядів.
block.thorium-wall-large.description = Захищає споруди від ворожих снарядів.
block.phase-wall.description = Захищає споруди від ворожих снарядів, відбиває більшість куль у разі зіткненні.
block.phase-wall-large.description = Захищає споруди від ворожих снарядів, відбиває більшість куль у разі зіткненні.
block.surge-wall.description = Захищає споруди від ворожих снарядів, періодично випускає електричні дуги в разі зіткненні.
block.surge-wall-large.description = Захищає споруди від ворожих снарядів, періодично випускає електричні дуги в разі зіткненні.
block.door.description = Стіна, яку можна відчинити й зачинити.
block.door-large.description = Стіна, яку можна відчинити й зачинити.
block.mender.description = Періодично ремонтує блоки у своєму радіусі дії.\nЗа бажанням можна використати кремній задля підвищення радіусу дії й ефективності.
block.mend-projector.description = Ремонтує блоки у своєму радіусі дії.\nЗа бажанням можна використати фазову тканину задля підвищення радіусу дії й ефективності.
block.overdrive-projector.description = Збільшує швидкість найближчих будівель.\nЗа бажанням можна використати фазову тканину задля підвищення радіусу дії й ефективності.
block.force-projector.description = Створює навколо себе шестикутне силове поле, захищаючи будівлі та блоки всередині від пошкоджень.\nПерегрівається, якщо завдано занадто великої шкоди. За бажанням можна використати теплоносій для запобігання перегріву. Для збільшення розміру щита можна використовувати фазову тканину.
block.shock-mine.description = Випускає електричні дуги в разі контакту з ворогом.
block.conveyor.description = Переміщує предмети вперед.
block.titanium-conveyor.description = Переміщує предмети швидше, ніж звичайний конвеєр.
block.plastanium-conveyor.description = Переміщує предмети партіями. Приймає предмети на задній частині та вивантажує їх у трьох напрямках спереду. Потребує кілька точок завантаження та розвантаження для максимальної пропускної здатності.
block.junction.description = Діє як міст для двох перехресних конвеєрних стрічок.
block.bridge-conveyor.description = Транспортує предмети через будівлі або місцевість
block.phase-conveyor.description = Миттєво транспортує предмети через місцевості або будівлі. Більший діапазон, ніж у мостового конвеєра, але потребує енергії.
block.sorter.description = Якщо предмет відповідає вибраному, його можна передати. В іншому випадку предмет виводиться ліворуч та праворуч.
block.inverted-sorter.description = Схожий на звичайний сортувальник, але виводить обрані предмети на бокові сторони.
block.router.description = Розподіляє предмети, що надходять, порівну на 3 різні напрямки.
block.armored-conveyor.description = Англійська назва: Armored Conveyor\nПереміщує предмети вперед. Не приймає введення з боків ні з чого, крім інших конвеєрних стрічок.
block.illuminator.description = Англійська назва: Illuminator\nВипромінює світло.
block.message.description = Англійська назва: Message\nЗберігає повідомлення для комунікації між союзниками.
block.reinforced-message.description = Англійська назва: Reinforced Message\nЗберігає повідомлення для комунікації між союзниками.
block.world-message.description = Англійська назва: World Message\nБлок повідомлення для використання у створенні мап. Не можна знищити.
block.graphite-press.description = Англійська назва: Graphite Press\nСтискає вугілля в графіт.
block.multi-press.description = Англійська назва: Multi Press\nСтискає вугілля в графіт. Потребує воду для охолодження.
block.silicon-smelter.description = Англійська назва: Silicon Smelter\nСинтезує пісок із вугіллям для отримання кремнію.
block.kiln.description = Англійська назва: Kiln\nВиплавляє пісок та свинець у метаскло.
block.plastanium-compressor.description = Англійська назва: Plastanium Compressor\nВиробляє пластаній із нафти й титану.
block.phase-weaver.description = Англійська назва: Phase Weaver\nСинтезує фазову тканину з торію та піску.
block.surge-smelter.description = Англійська назва: Surge Smelter\nПоєднує титан, свинець, кремній і мідь у кінетичний сплав.
block.cryofluid-mixer.description = Англійська назва: Cryofluid Mixer\nЗмішує воду й подрібнений титан, щоби виробити кріогенну рідину.
block.blast-mixer.description = Англійська назва: Blast Mixer\nВиробляє вибухову суміш із пиротиту і спорових стручків.
block.pyratite-mixer.description = Англійська назва: Pyratite Mixer\nЗмішує вугілля, свинець та пісок у легкозаймистий пиротит.
block.melter.description = Англійська назва: Melter\nРозплавляє брухт у шлак.
block.separator.description = Англійська назва: Separator\nВідокремлює шлак на його мінеральні компоненти.
block.spore-press.description = Англійська назва: Spore Press\nСтискає спорові стручки для синтезування нафти.
block.pulverizer.description = Англійська назва: Pulverizer\nПодрібнює брухт у дрібний пісок.
block.coal-centrifuge.description = Англійська назва: Coal Centrifuge\nНафта перетворюється у вугілля.
block.incinerator.description = Англійська назва: Incinerator\nВипаровує будь-який предмет або рідину, що отримує.
block.power-void.description = Англійська назва: Power Void\nЗнищує будь-яку під’єднану енергію. Тільки пісочниця.
block.power-source.description = Англійська назва: Power Source\nПостійно генерує енергію. Тільки пісочниця.
block.item-source.description = Англійська назва: Item Source\nПостійно створює предмети. Тільки пісочниця.
block.item-void.description = Англійська назва: Item Void\nРуйнує будь-які предмети. Тільки пісочниця.
block.liquid-source.description = Англійська назва: Liquid Source\nПостійно виробляє рідини. Тільки пісочниця.
block.liquid-void.description = Англійська назва: Liquid Void\nВипаровує будь-які рідини. Тільки пісочниця.
block.payload-source.description = Англійська назва: Payload Source\nНескінченно створює і виводить вантажі. Тільки пісочниця.
block.payload-void.description = Англійська назва: Payload Void\nЗнищує будь-які вантажі. Тільки пісочниця.
block.copper-wall.description = Англійська назва: Copper Wall\nЗахищає споруди від ворожих снарядів.
block.copper-wall-large.description = Англійська назва: Copper Wall Large\nЗахищає споруди від ворожих снарядів.
block.titanium-wall.description = Англійська назва: Titanium Wall\nЗахищає споруди від ворожих снарядів.
block.titanium-wall-large.description = Англійська назва: Titanium Wall Large\nЗахищає споруди від ворожих снарядів.
block.plastanium-wall.description = Англійська назва: Plastanium Wall\nЗахищає споруди від ворожих снарядів. Поглинає електричні дуги й лазери. Блокує автоматичні з’єднання енергетичних вузлів.
block.plastanium-wall-large.description = Англійська назва: Plastanium Wall Large\nЗахищає споруди від ворожих снарядів. Поглинає електричні дуги й лазери. Блокує автоматичні з’єднання енергетичних вузлів.
block.thorium-wall.description = Англійська назва: Thorium Wall\nЗахищає споруди від ворожих снарядів.
block.thorium-wall-large.description = Англійська назва: Thorium Wall Large\nЗахищає споруди від ворожих снарядів.
block.phase-wall.description = Англійська назва: Phase Wall\nЗахищає споруди від ворожих снарядів, відбиває більшість куль у разі зіткненні.
block.phase-wall-large.description = Англійська назва: Phase Wall Large\nЗахищає споруди від ворожих снарядів, відбиває більшість куль у разі зіткненні.
block.surge-wall.description = Англійська назва: Surge Wall\nЗахищає споруди від ворожих снарядів, періодично випускає електричні дуги в разі зіткненні.
block.surge-wall-large.description = Англійська назва: Surge Wall Large\nЗахищає споруди від ворожих снарядів, періодично випускає електричні дуги в разі зіткненні.
block.door.description = Англійська назва: Door\nСтіна, яку можна відчинити й зачинити.
block.door-large.description = Англійська назва: Door Large\nСтіна, яку можна відчинити й зачинити.
block.mender.description = Англійська назва: Mender\nПеріодично ремонтує блоки у своєму радіусі дії.\nЗа бажанням можна використати кремній задля підвищення радіусу дії й ефективності.
block.mend-projector.description = Англійська назва: Mend Projector\nРемонтує блоки у своєму радіусі дії.\nЗа бажанням можна використати фазову тканину задля підвищення радіусу дії й ефективності.
block.overdrive-projector.description = Англійська назва: Overdrive Projector\nЗбільшує швидкість найближчих будівель.\nЗа бажанням можна використати фазову тканину задля підвищення радіусу дії й ефективності.
block.force-projector.description = Англійська назва: Force Projector\nСтворює навколо себе шестикутне силове поле, захищаючи будівлі та блоки всередині від пошкоджень.\nПерегрівається, якщо завдано занадто великої шкоди. За бажанням можна використати теплоносій для запобігання перегріву. Для збільшення розміру щита можна використовувати фазову тканину.
block.shock-mine.description = Англійська назва: Shock Mine\nВипускає електричні дуги в разі контакту з ворогом.
block.conveyor.description = Англійська назва: Conveyor\nПереміщує предмети вперед.
block.titanium-conveyor.description = Англійська назва: Titanium Conveyor\nПереміщує предмети швидше, ніж звичайний конвеєр.
block.plastanium-conveyor.description = Англійська назва: Plastanium Conveyor\nПереміщує предмети партіями. Приймає предмети на задній частині та вивантажує їх у трьох напрямках спереду. Потребує кілька точок завантаження та розвантаження для максимальної пропускної здатності.
block.junction.description = Англійська назва: Junction\nДіє як міст для двох перехресних конвеєрних стрічок.
block.bridge-conveyor.description = Англійська назва: Bridge Conveyor\nТранспортує предмети через будівлі або місцевість
block.phase-conveyor.description = Англійська назва: Phase Conveyor\nМиттєво транспортує предмети через місцевості або будівлі. Більший діапазон, ніж у мостового конвеєра, але потребує енергії.
block.sorter.description = Англійська назва: Sorter\nЯкщо предмет відповідає вибраному, його можна передати. В іншому випадку предмет виводиться ліворуч та праворуч.
block.inverted-sorter.description = Англійська назва: Inverted Sorter\nСхожий на звичайний сортувальник, але виводить обрані предмети на бокові сторони.
block.router.description = Англійська назва: Router\nРозподіляє предмети, що надходять, порівну на 3 різні напрямки.
block.router.details = Необхідне зло. Не використовуйте поруч із входами до механізмів, оскільки вони, входи, будуть забиті вихідними предметами.
block.distributor.description = Розділяє предмети до 7 інших напрямків порівну.
block.overflow-gate.description = Вивантажує лише ліворуч і праворуч, якщо передній шлях заблокований.
block.underflow-gate.description = Повна протилежність надмірному затвору. Виводить предмет прямо, якщо лівий і правий шлях заблоковано.
block.mass-driver.description = Найкращий блок для транспортування предметів. Збирає кілька предметів, а потім вистрілює їх до іншої електромагнітної катапульти на велику відстань. Для роботи потребує енергію.
block.mechanical-pump.description = Дешева помпа із повільним виходом, але не потребує енергоспоживання.
block.rotary-pump.description = Поліпшена механічна помпа. Більше викачує, але потребує енергію.
block.impulse-pump.description = Найкраща помпа.
block.conduit.description = Пересуває рідини вперед. Застосовується спільно з помпами та іншими трубопроводами.
block.pulse-conduit.description = Пересуває рідини вперед. Швидше транспортує і зберігає більше рідини, ніж стандартні трубопроводи.
block.plated-conduit.description = Пересуває рідини вперед. Не приймає рідин із боків окрім інших трубопроводів. Не протікає.
block.liquid-router.description = Приймає рідини з одного напрямку та виводить їх до трьох інших напрямків порівну. Також може зберігати певну кількість рідини.
block.liquid-container.description = Зберігає чималу кількість рідини. Виводить у всі сторони, подібно до рідинного маршрутизатора.
block.liquid-tank.description = Зберігає велику кількість рідини. Виводить воду на всі сторони, через це схожий на рідинний маршрутизатор.
block.liquid-junction.description = Діє як міст для двох трубопроводів.
block.bridge-conduit.description = Транспортує рідину через місцевість і будівлі.
block.phase-conduit.description = Транспортує рідину через місцевість і будівлі. Діапазон дії більший ніж у мостового трубопроводу.
block.power-node.description = Передає живлення на приєднані вузли. Вузол буде отримувати живлення від будь-яких сусідніх блоків або подавати живлення до них.
block.power-node-large.description = Передовий вузол живлення з більшим радіусом дії.
block.surge-tower.description = Вузол живлення з меншою кількістю доступних з’єднань і з найбільшим радіусом дії.
block.diode.description = Живлення акумулятора може протікати через цей блок лише в одному напрямку, але лише в тому випадку, якщо інша сторона має менше енергії.
block.battery.description = Зберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту.
block.battery-large.description = Зберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту. Більша ємність ніж у звичайного акумулятора.
block.combustion-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали, як-от вугілля.
block.thermal-generator.description = Виробляє енергію в разі розміщення в гарячих місцях.
block.steam-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали й перетворює воду в пару.
block.differential-generator.description = Виробляє велику кількість енергії. Використовує різницю температур між кріогенною рідиною й пиротитом, що горить.
block.rtg-generator.description = Використовує тепло радіоактивних сполук, що розкладаються, для отримання енергії з повільною швидкістю.
block.solar-panel.description = Забезпечує невелику кількість енергії від сонця.
block.solar-panel-large.description = Забезпечує невелику кількість енергії від сонця. Значно ефективніша ніж стандартна сонячна панель.
block.thorium-reactor.description = Виробляє значну кількість енергії з торію. Потребує постійного охолодження. Сильно вибухне, якщо подаватиметься недостатня кількість теплоносія.
block.impact-reactor.description = Здатний створювати величезну кількість енергії за максимальної ефективності. Для запуску процесу потрібно значні обсяги енергії.
block.mechanical-drill.description = Якщо розмістити на доречних плитках, то виводитиме предмети постійно, але повільно. Придатний лише для базових ресурсів.
block.pneumatic-drill.description = Поліпшений бур, здатний видобувати титан. Видобуває швидше, ніж механічний бур.
block.laser-drill.description = Дає змогу видобувати ще швидше за допомогою лазерної технології, але потребує енергії. Здатний видобувати торій.
block.blast-drill.description = Найкращий бур. Потребує великої кількості енергії.
block.water-extractor.description = Викачує підземні води. Використовується в місцях, де немає поверхневої води.
block.cultivator.description = Культивує невеликі концентрації спор у стручки.
block.distributor.description = Англійська назва: Distributor\nРозділяє предмети до 7 інших напрямків порівну.
block.overflow-gate.description = Англійська назва: Overflow Gate\nВивантажує лише ліворуч і праворуч, якщо передній шлях заблокований.
block.underflow-gate.description = Англійська назва: Underflow Gate\nПовна протилежність надмірному затвору. Виводить предмет прямо, якщо лівий і правий шлях заблоковано.
block.mass-driver.description = Англійська назва: Mass Driver\nНайкращий блок для транспортування предметів. Збирає кілька предметів, а потім вистрілює їх до іншої електромагнітної катапульти на велику відстань. Для роботи потребує енергію.
block.mechanical-pump.description = Англійська назва: Mechanical Pump\nДешева помпа із повільним виходом, але не потребує енергоспоживання.
block.rotary-pump.description = Англійська назва: Rotary Pump\nПоліпшена механічна помпа. Більше викачує, але потребує енергію.
block.impulse-pump.description = Англійська назва: Impulse Pump\nНайкраща помпа.
block.conduit.description = Англійська назва: Conduit\nПересуває рідини вперед. Застосовується спільно з помпами та іншими трубопроводами.
block.pulse-conduit.description = Англійська назва: Pulse Conduit\nПересуває рідини вперед. Швидше транспортує і зберігає більше рідини, ніж стандартні трубопроводи.
block.plated-conduit.description = Англійська назва: Plated Conduit\nПересуває рідини вперед. Не приймає рідин із боків окрім інших трубопроводів. Не протікає.
block.liquid-router.description = Англійська назва: Liquid Router\nПриймає рідини з одного напрямку та виводить їх до трьох інших напрямків порівну. Також може зберігати певну кількість рідини.
block.liquid-container.description = Англійська назва: Liquid Container\nЗберігає чималу кількість рідини. Виводить у всі сторони, подібно до рідинного маршрутизатора.
block.liquid-tank.description = Англійська назва: Liquid Tank\nЗберігає велику кількість рідини. Виводить воду на всі сторони, через це схожий на рідинний маршрутизатор.
block.liquid-junction.description = Англійська назва: Liquid Junction\nДіє як міст для двох трубопроводів.
block.bridge-conduit.description = Англійська назва: Bridge Conduit\nТранспортує рідину через місцевість і будівлі.
block.phase-conduit.description = Англійська назва: Phase Conduit\nТранспортує рідину через місцевість і будівлі. Діапазон дії більший ніж у мостового трубопроводу.
block.power-node.description = Англійська назва: Power Node\nПередає живлення на приєднані вузли. Вузол буде отримувати живлення від будь-яких сусідніх блоків або подавати живлення до них.
block.power-node-large.description = Англійська назва: Power Node Large\nПередовий вузол живлення з більшим радіусом дії.
block.surge-tower.description = Англійська назва: Surge Tower\nВузол живлення з меншою кількістю доступних з’єднань і з найбільшим радіусом дії.
block.diode.description = Англійська назва: Diode\nЖивлення акумулятора може протікати через цей блок лише в одному напрямку, але лише в тому випадку, якщо інша сторона має менше енергії.
block.battery.description = Англійська назва: Battery\nЗберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту.
block.battery-large.description = Англійська назва: Battery Large\nЗберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту. Більша ємність ніж у звичайного акумулятора.
block.combustion-generator.description = Англійська назва: Combustion Generator\nВиробляє енергію, спалюючи легкозаймисті матеріали, як-от вугілля.
block.thermal-generator.description = Англійська назва: Thermal Generator\nВиробляє енергію в разі розміщення в гарячих місцях.
block.steam-generator.description = Англійська назва: Steam Generator\nВиробляє енергію, спалюючи легкозаймисті матеріали й перетворює воду в пару.
block.differential-generator.description = Англійська назва: Differential Generator\nВиробляє велику кількість енергії. Використовує різницю температур між кріогенною рідиною й пиротитом, що горить.
block.rtg-generator.description = Англійська назва: Rtg Generator\nВикористовує тепло радіоактивних сполук, що розкладаються, для отримання енергії з повільною швидкістю.
block.solar-panel.description = Англійська назва: Solar Panel\nЗабезпечує невелику кількість енергії від сонця.
block.solar-panel-large.description = Англійська назва: Solar Panel Large\nЗабезпечує невелику кількість енергії від сонця. Значно ефективніша ніж стандартна сонячна панель.
block.thorium-reactor.description = Англійська назва: Thorium Reactor\nВиробляє значну кількість енергії з торію. Потребує постійного охолодження. Сильно вибухне, якщо подаватиметься недостатня кількість теплоносія.
block.impact-reactor.description = Англійська назва: Impact Reactor\nЗдатний створювати величезну кількість енергії за максимальної ефективності. Для запуску процесу потрібно значні обсяги енергії.
block.mechanical-drill.description = Англійська назва: Mechanical Drill\nЯкщо розмістити на доречних плитках, то виводитиме предмети постійно, але повільно. Придатний лише для базових ресурсів.
block.pneumatic-drill.description = Англійська назва: Pneumatic Drill\nПоліпшений бур, здатний видобувати титан. Видобуває швидше, ніж механічний бур.
block.laser-drill.description = Англійська назва: Laser Drill\nДає змогу видобувати ще швидше за допомогою лазерної технології, але потребує енергії. Здатний видобувати торій.
block.blast-drill.description = Англійська назва: Blast Drill\nНайкращий бур. Потребує великої кількості енергії.
block.water-extractor.description = Англійська назва: Water Extractor\nВикачує підземні води. Використовується в місцях, де немає поверхневої води.
block.cultivator.description = Англійська назва: Cultivator\nКультивує невеликі концентрації спор у стручки.
block.cultivator.details = Відновлена технологія. Використовується для отримання великої кількості біомаси якомога ефективніше. Ймовірно, початковий інкубатор спор, що зараз покриває Серпуло.
block.oil-extractor.description = Використовується велика кількість енергії, піску та води для отримання нафти.
block.core-shard.description = Ядро бази. Після знищення сектор втрачається. Найперша версія капсули ядра. Після його знищення всі контакти з регіоном втрачаються. Не допустіть цього.
block.oil-extractor.description = Англійська назва: Oil Extractor\nВикористовується велика кількість енергії, піску та води для отримання нафти.
block.core-shard.description = Англійська назва: Core Shard\nЯдро бази. Після знищення сектор втрачається. Найперша версія капсули ядра. Після його знищення всі контакти з регіоном втрачаються. Не допустіть цього.
block.core-shard.details = Найперша версія капсули ядра. Компактне. Самовідтворюване. Оснащене одноразовими пусковими рушіями. Не призначено для міжпланетних подорожей.
block.core-foundation.description = Ядро бази. Добре броньоване. Зберігає більше ресурсів.
block.core-foundation.description = Англійська назва: Core Foundation\nЯдро бази. Добре броньоване. Зберігає більше ресурсів.
block.core-foundation.details = Друга версія ядра.
block.core-nucleus.description = Ядро бази. Напрочуд добре броньовано. Зберігає величезну кількість ресурсів.
block.core-nucleus.description = Англійська назва: Core Nucleus\nЯдро бази. Напрочуд добре броньовано. Зберігає величезну кількість ресурсів.
block.core-nucleus.details = Третя і фінальна версія ядра.
block.vault.description = Зберігає велику кількість предметів кожного типу. Блок розвантажувача може використовуватися для отримання предметів зі сховища.
block.container.description = Зберігає малу кількість предметів кожного типу. Блок розвантажувача може використовуватися для отримання предметів зі сховища.
block.unloader.description = Вивантажує предмети з найближчих блоків
block.launch-pad.description = Запускає партії предметів без необхідності запуску ядра.
block.vault.description = Англійська назва: Vault\nЗберігає велику кількість предметів кожного типу. Блок розвантажувача може використовуватися для отримання предметів зі сховища.
block.container.description = Англійська назва: Container\nЗберігає малу кількість предметів кожного типу. Блок розвантажувача може використовуватися для отримання предметів зі сховища.
block.unloader.description = Англійська назва: Unloader\nВивантажує предмети з найближчих блоків
block.launch-pad.description = Англійська назва: Launch Pad\nЗапускає партії предметів без необхідності запуску ядра.
block.launch-pad.details = Суборбітальна система для транспортування ресурсів від точки А до точки Б. Корпуси вантажу крихкі й не здатні вижити при повторному вході.
block.duo.description = Вистрілює чергами куль у ворогів.
block.scatter.description = Вистрілює скупченням свинцю, брухту чи метаскла в повітряних противників.
block.scorch.description = Підпалює будь-яких наземних противників поблизу. Високоефективна на близькій відстані.
block.hail.description = Вистрілює невеликі снаряди в наземних ворогів на великі відстані.
block.wave.description = Вистрілює потоки рідин у ворогів. Автоматично гасить пожежі в разі постачання води.
block.lancer.description = Заряджає і вистрілює потужні пучки енергії в наземних противників.
block.arc.description = Вистрілює дугами електрики в наземних противників.
block.swarmer.description = Запускає ракети, що автоматично наводяться в противників.
block.salvo.description = Вистрілює швидкий залп куль у противника.
block.fuse.description = Вистрілює трьома променями, що пронизують броню, у малому радіусі в противників.
block.ripple.description = Вистрілює скупченням снарядів у противників.
block.cyclone.description = Підпалює вибухові грудки й вистрілює їх у скупчення противників.
block.spectre.description = Вистрілює великі бронебійні кулі в повітряні та наземні цілі.
block.meltdown.description = Заряджає і вистрілює лазерним променем у найближчих противників. Для роботи потрібен теплоносій.
block.foreshadow.description = Вистрілює великим болтом в одну ціль на велику дистанцію.
block.repair-point.description = Безперервно ремонтує найближчу пошкоджену бойову одиницю у своєму радіусі дії. Пріоритетні союзники з вищим максимальним здоров’ям.
block.segment.description = Пошкоджує та руйнує вхідні снаряди. Окрім лазерних.
block.parallax.description = Притягає ворожі повітряні одиниці, пошкоджуючи їх у процесі.
block.tsunami.description = Вистрілює потужними потоками рідини у ворогів. Автоматично гасить пожежі в разі постачання води.
block.silicon-crucible.description = Очищає кремній від піску та вугілля, використовуючи пиратит як додаткове джерело тепла. Більш ефективний у жарких місцях.
block.disassembler.description = Поділяє шлак на незначні кількості екзотичних мінеральних компонентів за низької ефективності. Може виробляти торій.
block.overdrive-dome.description = Збільшує швидкість найближчих будівель. Потребує фазову тканину і кремній.
block.payload-conveyor.description = Переміщує великі вантажі, як-от одиниці з заводів.
block.payload-router.description = Розділяє вантажі, що надходять, у 3 різні сторони.
block.ground-factory.description = Виробляє наземних одиниць. Вивід одиниць можна здійснити безпосередньо на місцевість, або спрямувати до реконструкторів для поліпшення.
block.air-factory.description = Виробляє повітряних одиниць. Вивід одиниць можна здійснити безпосередньо на місцевість, або спрямувати до реконструкторів для поліпшення.
block.naval-factory.description = Виробляє одиниць. Вивід одиниць можна здійснити безпосередньо на місцевість, або спрямувати до реконструкторів для поліпшення.
block.additive-reconstructor.description = Поліпшує введених одиниць до другого рівня.
block.multiplicative-reconstructor.description = Поліпшує введених одиниць до третього рівня.
block.exponential-reconstructor.description = Поліпшує введених одиниць до четвертого рівня.
block.tetrative-reconstructor.description = Поліпшує введених одиниць до п’ятого і фінального рівня.
block.switch.description = Перемикач. Стан можна читати й контролювати за допомогою логічних процесорів.
block.micro-processor.description = Запускає послідовність логічних вказівок (операцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель.
block.logic-processor.description = Запускає послідовність логічних вказівок (операцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Мікропроцесор.
block.hyper-processor.description = Запускає послідовність логічних вказівок (операцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Логічний процесор
block.memory-cell.description = Зберігає інформацію для логічного процесора.
block.memory-bank.description = Зберігає інформацію для логічного процесора. Висока місткість.
block.logic-display.description = Показує довільну графіку з логічного процесора.
block.large-logic-display.description = Показує довільну графіку з логічного процесора.
block.interplanetary-accelerator.description = Велика електромагнітна башта-рейкотрон. Прискорює ядра, щоби подолати планетне тяжіння для міжпланетного розгортання.
block.repair-turret.description = Безпервно ремонтує найближчу пошкоджену одиницю. Для прискорення ремонтування можна охолодити.
block.payload-propulsion-tower.description = Структура транспортування вантажу на великі відстані. Вистрілює вантаж в інші вантажні катапульти.
block.duo.description = Англійська назва: Duo\nВистрілює чергами куль у ворогів.
block.scatter.description = Англійська назва: Scatter\nВистрілює скупченням свинцю, брухту чи метаскла в повітряних противників.
block.scorch.description = Англійська назва: Scorch\nПідпалює будь-яких наземних противників поблизу. Високоефективна на близькій відстані.
block.hail.description = Англійська назва: Hail\nВистрілює невеликі снаряди в наземних ворогів на великі відстані.
block.wave.description = Англійська назва: Wave\nВистрілює потоки рідин у ворогів. Автоматично гасить пожежі в разі постачання води.
block.lancer.description = Англійська назва: Lancer\nЗаряджає і вистрілює потужні пучки енергії в наземних противників.
block.arc.description = Англійська назва: Arc\nВистрілює дугами електрики в наземних противників.
block.swarmer.description = Англійська назва: Swarmer\nЗапускає ракети, що автоматично наводяться в противників.
block.salvo.description = Англійська назва: Salvo\nВистрілює швидкий залп куль у противника.
block.fuse.description = Англійська назва: Fuse\nВистрілює трьома променями, що пронизують броню, у малому радіусі в противників.
block.ripple.description = Англійська назва: Ripple\nВистрілює скупченням снарядів у противників.
block.cyclone.description = Англійська назва: Cyclone\nПідпалює вибухові грудки й вистрілює їх у скупчення противників.
block.spectre.description = Англійська назва: Spectre\nВистрілює великі бронебійні кулі в повітряні та наземні цілі.
block.meltdown.description = Англійська назва: Meltdown\nЗаряджає і вистрілює лазерним променем у найближчих противників. Для роботи потрібен теплоносій.
block.foreshadow.description = Англійська назва: Foreshadow\nВистрілює великим болтом в одну ціль на велику дистанцію.
block.repair-point.description = Англійська назва: Repair Point\nБезперервно ремонтує найближчу пошкоджену бойову одиницю у своєму радіусі дії. Пріоритетні союзники з вищим максимальним здоров’ям.
block.segment.description = Англійська назва: Segment\nПошкоджує та руйнує вхідні снаряди. Окрім лазерних.
block.parallax.description = Англійська назва: Parallax\nПритягає ворожі повітряні одиниці, пошкоджуючи їх у процесі.
block.tsunami.description = Англійська назва: Tsunami\nВистрілює потужними потоками рідини у ворогів. Автоматично гасить пожежі в разі постачання води.
block.silicon-crucible.description = Англійська назва: Silicon Crucible\nОчищає кремній від піску та вугілля, використовуючи пиратит як додаткове джерело тепла. Більш ефективний у жарких місцях.
block.disassembler.description = Англійська назва: Disassembler\nПоділяє шлак на незначні кількості екзотичних мінеральних компонентів за низької ефективності. Може виробляти торій.
block.overdrive-dome.description = Англійська назва: Overdrive Dome\nЗбільшує швидкість найближчих будівель. Потребує фазову тканину і кремній.
block.payload-conveyor.description = Англійська назва: Payload Conveyor\nПереміщує великі вантажі, як-от одиниці з заводів.
block.payload-router.description = Англійська назва: Payload Router\nРозділяє вантажі, що надходять, у 3 різні сторони.
block.ground-factory.description = Англійська назва: Ground Factory\nВиробляє наземних одиниць. Вивід одиниць можна здійснити безпосередньо на місцевість, або спрямувати до реконструкторів для поліпшення.
block.air-factory.description = Англійська назва: Air Factory\nВиробляє повітряних одиниць. Вивід одиниць можна здійснити безпосередньо на місцевість, або спрямувати до реконструкторів для поліпшення.
block.naval-factory.description = Англійська назва: Naval Factory\nВиробляє одиниць. Вивід одиниць можна здійснити безпосередньо на місцевість, або спрямувати до реконструкторів для поліпшення.
block.additive-reconstructor.description = Англійська назва: Additive Reconstructor\nПоліпшує введених одиниць до другого рівня.
block.multiplicative-reconstructor.description = Англійська назва: Multiplicative Reconstructor\nПоліпшує введених одиниць до третього рівня.
block.exponential-reconstructor.description = Англійська назва: Exponential Reconstructor\nПоліпшує введених одиниць до четвертого рівня.
block.tetrative-reconstructor.description = Англійська назва: Tetrative Reconstructor\nПоліпшує введених одиниць до п’ятого і фінального рівня.
block.switch.description = Англійська назва: Switch\nПеремикач. Стан можна читати й контролювати за допомогою логічних процесорів.
block.micro-processor.description = Англійська назва: Micro Processor\nЗапускає послідовність логічних вказівок (операцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель.
block.logic-processor.description = Англійська назва: Logic Processor\nЗапускає послідовність логічних вказівок (операцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Мікропроцесор.
block.hyper-processor.description = Англійська назва: Hyper Processor\nЗапускає послідовність логічних вказівок (операцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Логічний процесор
block.memory-cell.description = Англійська назва: Memory Cell\nЗберігає інформацію для логічного процесора.
block.memory-bank.description = Англійська назва: Memory Bank\nЗберігає інформацію для логічного процесора. Висока місткість.
block.logic-display.description = Англійська назва: Logic Display\nПоказує довільну графіку з логічного процесора.
block.large-logic-display.description = Англійська назва: Large Logic Display\nПоказує довільну графіку з логічного процесора.
block.interplanetary-accelerator.description = Англійська назва: Interplanetary Accelerator\nВелика електромагнітна башта-рейкотрон. Прискорює ядра, щоби подолати планетне тяжіння для міжпланетного розгортання.
block.repair-turret.description = Англійська назва: Repair Turret\nБезпервно ремонтує найближчу пошкоджену одиницю. Для прискорення ремонтування можна охолодити.
block.payload-propulsion-tower.description = Англійська назва: Payload Propulsion Tower\nСтруктура транспортування вантажу на великі відстані. Вистрілює вантаж в інші вантажні катапульти.
#Erekir
block.core-bastion.description = Ядро бази. Броньоване. Після знищення сектор втрачається.
block.core-citadel.description = Ядро бази. Дуже добре броньоване. Зберігає більше ресурсів, ніж ядро «Бастіон».
block.core-acropolis.description = Ядро бази. Надзвичайно добре броньоване. Зберігає більше ресурсів, ніж ядро «Цитадель».
block.breach.description = Веде вогонь по ворожих цілях бронебійними берилієвими або вольфрамовими боєприпасами.
block.diffuse.description = Вистрілює шквалом куль у формі широкого конуса. Відкидає ворожі цілі назад.
block.sublimate.description = Веде вогонь безперервним струменем полум’я по ворожих цілях. Пробиває броню.
block.titan.description = Веде вогонь осколково-фугасним артилерійським снарядом по наземних цілях. Потребує водню.
block.afflict.description = Стріляє масивною зарядженою кулею осколково-фугасних снарядів. Потребує підігріву.
block.disperse.description = Веде вогонь зенітними чергами по повітряних цілям.
block.lustre.description = Веде вогонь по ворожих цілях повільно рухомим одноцільовим лазером.
block.scathe.description = Запускає потужну ракету по наземних цілям на величезні відстані.
block.smite.description = Вогонь вівся чергами зі шрапнельних, блискавичних куль.
block.malign.description = Випускає шквал самонавідних лазерних зарядів по ворожих цілях. Потребує значного нагріву.
block.silicon-arc-furnace.description = Рафінує кремній з піску і графіту.
block.oxidation-chamber.description = Перетворює берилій та озон в оксид. Виділяє тепло як побічний продукт.
block.electric-heater.description = Нагріває лицьові блоки. Вимагає великої кількості електроенергії.
block.slag-heater.description = Нагріває лицьові блоки. Потребує шлаку.
block.phase-heater.description = Нагріває лицьові блоки. Потрібна фазова тканина.
block.heat-redirector.description = Перенаправляє отримане тепло на інші блоки.
block.heat-router.description = Розподіляє отримане тепло в трьох вихідних напрямках.
block.electrolyzer.description = Перетворює воду на водень та озоновий газ.
block.atmospheric-concentrator.description = Вбирає азот з атмосфери. Потребує тепла.
block.surge-crucible.description = Утворює кінетичний сплав зі шлаку і кремнію. Потребує тепла.
block.phase-synthesizer.description = Синтезує фазову тканину з торію, піску та озону. Потребує тепла.
block.carbide-crucible.description = Переплавляє графіт і вольфрам в карбід. Потребує тепла.
block.cyanogen-synthesizer.description = Синтезує ціаноген з аркициту і графіту. Потребує тепла.
block.slag-incinerator.description = Спалює нелеткі предмети або рідини. Потребує шлаку.
block.vent-condenser.description = Конденсує гази із джерела у воду. Споживає енергію.
block.plasma-bore.description = При розміщенні лицем до рудної стіни видає предмети нескінченно довго. Потребує невеликої кількості енергії.
block.large-plasma-bore.description = Більший плазмовий бурильник. Здатний видобувати вольфрам і торій. Потребує водню та енергії.
block.cliff-crusher.description = Дробить стіни, виводячи пісок нескінченно довго. Вимагає енергію. Ефективність залежить від типу стіни.
block.impact-drill.description = При розміщенні на руді видає предмети серіями до нескінченності. Потребує енергії та води.
block.eruption-drill.description = Поліпшений імпульсний бур. Здатний видобувати торій. Потребує водню.
block.reinforced-conduit.description = Переміщує рідини вперед. Не приймає нетрубоповідні входи з боків.
block.reinforced-liquid-router.description = Рівномірно розподіляє рідини на всі сторони.
block.reinforced-junction.description = Виконує роль моста для двох пересічних водоводів.
block.reinforced-liquid-tank.description = Зберігає велику кількість рідини.
block.reinforced-liquid-container.description = Зберігає значну кількість рідини.
block.reinforced-bridge-conduit.description = Транспортує рідини над спорудами та місцевістю.
block.reinforced-pump.description = Перекачує і виводить рідини. Потребує водню.
block.beryllium-wall.description = Захищає споруди від ворожих снарядів.
block.beryllium-wall-large.description = Захищає споруди від ворожих снарядів.
block.tungsten-wall.description = Захищає споруди від ворожих снарядів.
block.tungsten-wall-large.description = Захищає споруди від ворожих снарядів.
block.carbide-wall.description = Захищає споруди від ворожих снарядів.
block.carbide-wall-large.description = Захищає споруди від ворожих снарядів.
block.reinforced-surge-wall.description = Захищає споруди від ворожих снарядів, періодично випускаючи електричні дуги при зіткненні зі снарядом.
block.reinforced-surge-wall-large.description = Захищає споруди від ворожих снарядів, періодично випускаючи електричні дуги при зіткненні зі снарядом.
block.shielded-wall.description = Захищає споруди від ворожих снарядів. Розгортає щит, який поглинає більшість снарядів при подачі живлення. Проводить енергію.
block.blast-door.description = Стіна, яка відкривається, коли наземні одиниці союзників знаходяться в межах досяжності. Не може управлятися вручну.
block.duct.description = Переміщує предмети вперед. Здатний зберігати лише один предмет.
block.armored-duct.description = Переміщує предмети вперед. Не приймає неканальні входи з боків.
block.duct-router.description = Розподіляє речі рівномірно по трьох напрямках. Приймає предмети тільки зі зворотного боку. Може бути налаштований як сортувальник предметів.
block.overflow-duct.description = Виводить предмети в сторони тільки в тому випадку, якщо передній шлях заблокований.
block.duct-bridge.description = Переміщує предмети по спорудах та місцевості.
block.duct-unloader.description = Вивантажує вибраний елемент з блоку, що знаходиться за ним. Неможливо вивантажити з ядер.
block.underflow-duct.description = Антонім до надмірного затвора. Виводить на передню частину, якщо лівий і правий шляхи заблоковані.
block.reinforced-liquid-junction.description = Виконує функцію з’єднання між двома перехресними каналами.
block.surge-conveyor.description = Переміщує предмети партіями. Можна прискорити за допомогою енергії. Проводить енергію.
block.surge-router.description = Рівномірно розподіляє предмети в трьох напрямках від кінетичних конвеєрів. Можна прискорити за допомогою енергії. Проводить енергію.
block.unit-cargo-loader.description = Створює вантажні дрони. Дрони автоматично розподіляють предмети по пунктах розвантаження за допомогою відповідного фільтра.
block.unit-cargo-unload-point.description = Виступає в якості пункта розвантаження для вантажних дронів. Приймає вантажі, які відповідають вибраному фільтру.
block.beam-node.description = Передає енергію іншим блокам ортогонально. Запасає невелику кількість енергії.
block.beam-tower.description = Передає енергію іншим блокам ортогонально. Зберігає велику кількість енергії. Має великий радіус дії.
block.turbine-condenser.description = Виробляє енергію при розміщенні на джерелах. Виробляє невелику кількість води.
block.chemical-combustion-chamber.description = Виробляє енергію з аркициту та озону.
block.pyrolysis-generator.description = Виробляє велику кількість електроенергії з аркициту та шлаку. Виробляє воду як побічний продукт.
block.flux-reactor.description = При нагріванні виділяє велику кількість енергії. Потребує ціаногену як стабілізатора. Вихідна енергія і потреба в ціаногені пропорційні тепловому навантаженню.\nВибухає при недостатній кількості ціаногену.
block.neoplasia-reactor.description = Використовує аркіцит, воду і фазову тканину для виробництва великої кількості енергії. Виробляє тепло і небезпечні новоутворення як побічний продукт.\nВибухає з силою, якщо новоутворення не видалити з реактора через трубопроводи.
block.build-tower.description = Автоматично перебудовує споруди в зоні досяжності та допомагає іншим одиницям у будівництві.
block.regen-projector.description = Повільно ремонтує суміжні споруди у квадратному периметрі. Потребує водню.
block.reinforced-container.description = Зберігає невелику кількість предметів. Вміст можна отримати за допомогою розвантажувачів. Не збільшує ємність основного сховища.
block.reinforced-vault.description = Зберігає велику кількість предметів. Вміст можна отримати за допомогою розвантажувачів. Не збільшує ємність ядра.
block.tank-fabricator.description = Створює одиниці «Стел». Випущені одиниці можна використовувати безпосередньо або перемістити в переробний завод для поліпшення.
block.ship-fabricator.description = Створює одиниці «Ухиляч». Випущені одиниці можна використовувати безпосередньо або перемістити в переробний завод для поліпшення.
block.mech-fabricator.description = Створює одиниці «Меруй». Випущені одиниці можна використовувати безпосередньо або перемістити в переробний завод для поліпшення.
block.tank-assembler.description = Збирає великі танки з введених блоків та одиниць. Рівень виходу може бути збільшений шляхом додавання модулів.
block.ship-assembler.description = Збирає великі кораблі з введених блоків та одиниць. Рівень виходу може бути збільшений шляхом додавання модулів.
block.mech-assembler.description = Збирає великі мехи з введених блоків та одиниць. Рівень виходу може бути збільшений шляхом додавання модулів.
block.tank-refabricator.description = Поліпшує введені танкові одиниці до другого рівня.
block.ship-refabricator.description = Поліпшує введені корабельні одиниці до другого рівня.
block.mech-refabricator.description = Поліпшує введені мехові одиниці до другого рівня.
block.prime-refabricator.description = Поліпшує введені одиниці до другого рівня.
block.basic-assembler-module.description = Підвищує рівень збирача, якщо його розмістити поруч з межею будівлі. Потребує енергії. Може використовуватися як вхід для вантажу.
block.small-deconstructor.description = Деконструює введені конструкції та блоки. Повертає 100% вартості побудови.
block.reinforced-payload-conveyor.description = Переміщує вантаж вперед.
block.reinforced-payload-router.description = Розподіляє вантажі в сусідні блоки. Функціонує як сортувальник при встановленому фільтрі.
block.payload-mass-driver.description = Структура транспортування вантажу великої дальності. Вистрілює отриманий вантаж на зв’язані вантажні катапульти.
block.large-payload-mass-driver.description = Структура транспортування вантажу великої дальності. Вистрілює отриманий вантаж на зв’язані вантажні катапульти.
block.unit-repair-tower.description = Ремонтує всі одиниці, що знаходяться поблизу. Потребує озону.
block.radar.description = Поступово проявляє місцевість та одиниці противника у великому радіусі. Вимагає енергії.
block.shockwave-tower.description = Пошкоджує та знищує ворожі снаряди в радіусі. Потребує ціаногену.
block.canvas.description = Показує просте зображення із заздалегідь визначеною палітрою. Можна редагувати.
block.core-bastion.description = Англійська назва: Core Bastion\nЯдро бази. Броньоване. Після знищення сектор втрачається.
block.core-citadel.description = Англійська назва: Core Citadel\nЯдро бази. Дуже добре броньоване. Зберігає більше ресурсів, ніж ядро «Бастіон».
block.core-acropolis.description = Англійська назва: Core Acropolis\nЯдро бази. Надзвичайно добре броньоване. Зберігає більше ресурсів, ніж ядро «Цитадель».
block.breach.description = Англійська назва: Breach\nВеде вогонь по ворожих цілях бронебійними берилієвими або вольфрамовими боєприпасами.
block.diffuse.description = Англійська назва: Diffuse\nВистрілює шквалом куль у формі широкого конуса. Відкидає ворожі цілі назад.
block.sublimate.description = Англійська назва: Sublimate\nВеде вогонь безперервним струменем полум’я по ворожих цілях. Пробиває броню.
block.titan.description = Англійська назва: Titan\nВеде вогонь осколково-фугасним артилерійським снарядом по наземних цілях. Потребує водню.
block.afflict.description = Англійська назва: Afflict\nСтріляє масивною зарядженою кулею осколково-фугасних снарядів. Потребує підігріву.
block.disperse.description = Англійська назва: Disperse\nВеде вогонь зенітними чергами по повітряних цілям.
block.lustre.description = Англійська назва: Lustre\nВеде вогонь по ворожих цілях повільно рухомим одноцільовим лазером.
block.scathe.description = Англійська назва: Scathe\nЗапускає потужну ракету по наземних цілям на величезні відстані.
block.smite.description = Англійська назва: Smite\nВогонь веде чергами зі шрапнельних, блискавичних куль.
block.malign.description = Англійська назва: Malign\nВипускає шквал самонавідних лазерних зарядів по ворожих цілях. Потребує значного нагріву.
block.silicon-arc-furnace.description = Англійська назва: Silicon Arc Furnace\nРафінує кремній з піску і графіту.
block.oxidation-chamber.description = Англійська назва: Oxidation Chamber\nПеретворює берилій та озон в оксид. Виділяє тепло як побічний продукт.
block.electric-heater.description = Англійська назва: Electric Heater\nНагріває лицьові блоки. Вимагає великої кількості електроенергії.
block.slag-heater.description = Англійська назва: Slag Heater\nНагріває лицьові блоки. Потребує шлаку.
block.phase-heater.description = Англійська назва: Phase Heater\nНагріває лицьові блоки. Потрібна фазова тканина.
block.heat-redirector.description = Англійська назва: Heat Redirector\nПеренаправляє отримане тепло на інші блоки.
block.heat-router.description = Англійська назва: Heat Router\nРозподіляє отримане тепло в трьох вихідних напрямках.
block.electrolyzer.description = Англійська назва: Electrolyzer\nПеретворює воду на водень та озоновий газ.
block.atmospheric-concentrator.description = Англійська назва: Atmospheric Concentrator\nВбирає азот з атмосфери. Потребує тепла.
block.surge-crucible.description = Англійська назва: Surge Crucible\nУтворює кінетичний сплав зі шлаку і кремнію. Потребує тепла.
block.phase-synthesizer.description = Англійська назва: Phase Synthesizer\nСинтезує фазову тканину з торію, піску та озону. Потребує тепла.
block.carbide-crucible.description = Англійська назва: Carbide Crucible\nПереплавляє графіт і вольфрам в карбід. Потребує тепла.
block.cyanogen-synthesizer.description = Англійська назва: Cyanogen Synthesizer\nСинтезує ціаноген з аркициту і графіту. Потребує тепла.
block.slag-incinerator.description = Англійська назва: Slag Incinerator\nСпалює нелеткі предмети або рідини. Потребує шлаку.
block.vent-condenser.description = Англійська назва: Vent Condenser\nКонденсує гази із джерела у воду. Споживає енергію.
block.plasma-bore.description = Англійська назва: Plasma Bore\nПри розміщенні лицем до рудної стіни видає предмети нескінченно довго. Потребує невеликої кількості енергії.
block.large-plasma-bore.description = Англійська назва: Large Plasma Bore\nБільший плазмовий бурильник. Здатний видобувати вольфрам і торій. Потребує водню та енергії.
block.cliff-crusher.description = Англійська назва: Cliff Crusher\nДробить стіни, виводячи пісок нескінченно довго. Вимагає енергію. Ефективність залежить від типу стіни.
block.impact-drill.description = Англійська назва: Impact Drill\nПри розміщенні на руді видає предмети серіями до нескінченності. Потребує енергії та води.
block.eruption-drill.description = Англійська назва: Eruption Drill\nПоліпшений імпульсний бур. Здатний видобувати торій. Потребує водню.
block.reinforced-conduit.description = Англійська назва: Reinforced Conduit\nПереміщує рідини вперед. Не приймає нетрубоповідні входи з боків.
block.reinforced-liquid-router.description = Англійська назва: Reinforced Liquid Router\nРівномірно розподіляє рідини на всі сторони.
block.reinforced-junction.description = Англійська назва: Reinforced Junction\nВиконує роль моста для двох пересічних водоводів.
block.reinforced-liquid-tank.description = Англійська назва: Reinforced Liquid Tank\nЗберігає велику кількість рідини.
block.reinforced-liquid-container.description = Англійська назва: Reinforced Liquid Container\nЗберігає значну кількість рідини.
block.reinforced-bridge-conduit.description = Англійська назва: Reinforced Bridge Conduit\nТранспортує рідини над спорудами та місцевістю.
block.reinforced-pump.description = Англійська назва: Reinforced Pump\nПерекачує і виводить рідини. Потребує водню.
block.beryllium-wall.description = Англійська назва: Beryllium Wall\nЗахищає споруди від ворожих снарядів.
block.beryllium-wall-large.description = Англійська назва: Beryllium Wall Large\nЗахищає споруди від ворожих снарядів.
block.tungsten-wall.description = Англійська назва: Tungsten Wall\nЗахищає споруди від ворожих снарядів.
block.tungsten-wall-large.description = Англійська назва: Tungsten Wall Large\nЗахищає споруди від ворожих снарядів.
block.carbide-wall.description = Англійська назва: Carbide Wall\nЗахищає споруди від ворожих снарядів.
block.carbide-wall-large.description = Англійська назва: Carbide Wall Large\nЗахищає споруди від ворожих снарядів.
block.reinforced-surge-wall.description = Англійська назва: Reinforced Surge Wall\nЗахищає споруди від ворожих снарядів, періодично випускаючи електричні дуги при зіткненні зі снарядом.
block.reinforced-surge-wall-large.description = Англійська назва: Reinforced Surge Wall Large\nЗахищає споруди від ворожих снарядів, періодично випускаючи електричні дуги при зіткненні зі снарядом.
block.shielded-wall.description = Англійська назва: Shielded Wall\nЗахищає споруди від ворожих снарядів. Розгортає щит, який поглинає більшість снарядів при подачі живлення. Проводить енергію.
block.blast-door.description = Англійська назва: Blast Door\nСтіна, яка відкривається, коли наземні одиниці союзників знаходяться в межах досяжності. Не може управлятися вручну.
block.duct.description = Англійська назва: Duct\nПереміщує предмети вперед. Здатний зберігати лише один предмет.
block.armored-duct.description = Англійська назва: Armored Duct\nПереміщує предмети вперед. Не приймає неканальні входи з боків.
block.duct-router.description = Англійська назва: Duct Router\nРозподіляє речі рівномірно по трьох напрямках. Приймає предмети тільки зі зворотного боку. Може бути налаштований як сортувальник предметів.
block.overflow-duct.description = Англійська назва: Overflow Duct\nВиводить предмети в сторони тільки в тому випадку, якщо передній шлях заблокований.
block.duct-bridge.description = Англійська назва: Duct Bridge\nПереміщує предмети по спорудах та місцевості.
block.duct-unloader.description = Англійська назва: Duct Unloader\nВивантажує вибраний елемент з блоку, що знаходиться за ним. Неможливо вивантажити з ядер.
block.underflow-duct.description = Англійська назва: Underflow Duct\nАнтонім до надмірного затвора. Виводить на передню частину, якщо лівий і правий шляхи заблоковані.
block.reinforced-liquid-junction.description = Англійська назва: Reinforced Liquid Junction\nВиконує функцію з’єднання між двома перехресними каналами.
block.surge-conveyor.description = Англійська назва: Surge Conveyor\nПереміщує предмети партіями. Можна прискорити за допомогою енергії. Проводить енергію.
block.surge-router.description = Англійська назва: Surge Router\nРівномірно розподіляє предмети в трьох напрямках від кінетичних конвеєрів. Можна прискорити за допомогою енергії. Проводить енергію.
block.unit-cargo-loader.description = Англійська назва: Unit Cargo Loader\nСтворює вантажні дрони. Дрони автоматично розподіляють предмети по пунктах розвантаження за допомогою відповідного фільтра.
block.unit-cargo-unload-point.description = Англійська назва: Unit Cargo Unload Point\nВиступає в якості пункта розвантаження для вантажних дронів. Приймає вантажі, які відповідають вибраному фільтру.
block.beam-node.description = Англійська назва: Beam Node\nПередає енергію іншим блокам ортогонально. Запасає невелику кількість енергії.
block.beam-tower.description = Англійська назва: Beam Tower\nПередає енергію іншим блокам ортогонально. Зберігає велику кількість енергії. Має великий радіус дії.
block.turbine-condenser.description = Англійська назва: Turbine Condenser\nВиробляє енергію при розміщенні на джерелах. Виробляє невелику кількість води.
block.chemical-combustion-chamber.description = Англійська назва: Chemical Combustion Chamber\nВиробляє енергію з аркициту та озону.
block.pyrolysis-generator.description = Англійська назва: Pyrolysis Generator\nВиробляє велику кількість електроенергії з аркициту та шлаку. Виробляє воду як побічний продукт.
block.flux-reactor.description = Англійська назва: Flux Reactor\nПри нагріванні виділяє велику кількість енергії. Потребує ціаногену як стабілізатора. Вихідна енергія і потреба в ціаногені пропорційні тепловому навантаженню.\nВибухає при недостатній кількості ціаногену.
block.neoplasia-reactor.description = Англійська назва: Neoplasia Reactor\nВикористовує аркіцит, воду і фазову тканину для виробництва великої кількості енергії. Виробляє тепло і небезпечні новоутворення як побічний продукт.\nВибухає з силою, якщо новоутворення не видалити з реактора через трубопроводи.
block.build-tower.description = Англійська назва: Build Tower\nАвтоматично перебудовує споруди в зоні досяжності та допомагає іншим одиницям у будівництві.
block.regen-projector.description = Англійська назва: Regen Projector\nПовільно ремонтує суміжні споруди у квадратному периметрі. Потребує водню.
block.reinforced-container.description = Англійська назва: Reinforced Container\nЗберігає невелику кількість предметів. Вміст можна отримати за допомогою розвантажувачів. Не збільшує ємність основного сховища.
block.reinforced-vault.description = Англійська назва: Reinforced Vault\nЗберігає велику кількість предметів. Вміст можна отримати за допомогою розвантажувачів. Не збільшує ємність ядра.
block.tank-fabricator.description = Англійська назва: Tank Fabricator\nСтворює одиниці «Стел». Випущені одиниці можна використовувати безпосередньо або перемістити в переробний завод для поліпшення.
block.ship-fabricator.description = Англійська назва: Ship Fabricator\nСтворює одиниці «Ухиляч». Випущені одиниці можна використовувати безпосередньо або перемістити в переробний завод для поліпшення.
block.mech-fabricator.description = Англійська назва: Mech Fabricator\nСтворює одиниці «Меруй». Випущені одиниці можна використовувати безпосередньо або перемістити в переробний завод для поліпшення.
block.tank-assembler.description = Англійська назва: Tank Assembler\nЗбирає великі танки з введених блоків та одиниць. Рівень виходу може бути збільшений шляхом додавання модулів.
block.ship-assembler.description = Англійська назва: Ship Assembler\nЗбирає великі кораблі з введених блоків та одиниць. Рівень виходу може бути збільшений шляхом додавання модулів.
block.mech-assembler.description = Англійська назва: Mech Assembler\nЗбирає великі мехи з введених блоків та одиниць. Рівень виходу може бути збільшений шляхом додавання модулів.
block.tank-refabricator.description = Англійська назва: Tank Refabricator\nПоліпшує введені танкові одиниці до другого рівня.
block.ship-refabricator.description = Англійська назва: Ship Refabricator\nПоліпшує введені корабельні одиниці до другого рівня.
block.mech-refabricator.description = Англійська назва: Mech Refabricator\nПоліпшує введені мехові одиниці до другого рівня.
block.prime-refabricator.description = Англійська назва: Prime Refabricator\nПоліпшує введені одиниці до другого рівня.
block.basic-assembler-module.description = Англійська назва: Basic Assembler Module\nПідвищує рівень збирача, якщо його розмістити поруч з межею будівлі. Потребує енергії. Може використовуватися як вхід для вантажу.
block.small-deconstructor.description = Англійська назва: Small Deconstructor\nДеконструює введені конструкції та блоки. Повертає 100% вартості побудови.
block.reinforced-payload-conveyor.description = Англійська назва: Reinforced Payload Conveyor\nПереміщує вантаж вперед.
block.reinforced-payload-router.description = Англійська назва: Reinforced Payload Router\nРозподіляє вантажі в сусідні блоки. Функціонує як сортувальник при встановленому фільтрі.
block.payload-mass-driver.description = Англійська назва: Payload Mass Driver\nСтруктура транспортування вантажу великої дальності. Вистрілює отриманий вантаж на зв’язані вантажні катапульти.
block.large-payload-mass-driver.description = Англійська назва: Large Payload Mass Driver\nСтруктура транспортування вантажу великої дальності. Вистрілює отриманий вантаж на зв’язані вантажні катапульти.
block.unit-repair-tower.description = Англійська назва: Unit Repair Tower\nРемонтує всі одиниці, що знаходяться поблизу. Потребує озону.
block.radar.description = Англійська назва: Radar\nПоступово проявляє місцевість та одиниці противника у великому радіусі. Вимагає енергії.
block.shockwave-tower.description = Англійська назва: Shockwave Tower\nПошкоджує та знищує ворожі снаряди в радіусі. Потребує ціаногену.
block.canvas.description = Англійська назва: Canvas\nПоказує просте зображення із заздалегідь визначеною палітрою. Можна редагувати.
unit.dagger.description = Вистрілює стандартними кулями в найближчих ворогах.
unit.mace.description = Вистрілює потоками полум’я в найближчих ворогів.
unit.fortress.description = Вистрілює з далекобійної артилерії в наземних цілей.
unit.scepter.description = Вистрілює шквалом заряджених куль у найближчих ворогів.
unit.reign.description = Вистрілює шквалом масивних пронизливих куль у найближчих ворогів.
unit.nova.description = Вистрілює лазерними болтами, що завдають шкоди ворогам та відновлюють союзні споруди. Здатний до польоту.
unit.pulsar.description = Випускає дуги електрики, що завдають шкоди ворогам та відновлюють союзні споруди. Здатний до польоту.
unit.quasar.description = Вистрілює пробивними лазерними променями, що пошкоджують ворогів та відновлюють союзні споруди. Здатний до польоту. Захищений.
unit.vela.description = Вистрілює масивним безперервним лазерним променем, що завдає шкоди ворогам, спричиняє пожежі та відновлює союзні споруди. Здатний до польоту.
unit.corvus.description = Спричиняє масивний лазерний вибух, що завдає шкоди ворогам та відновлює споріднені споруди. Може переступати через більшість місцевості.
unit.crawler.description = Біжить до ворогів і самознищується, викликаючи великий вибух.
unit.atrax.description = Випалює виснажливі шари шлаку в наземних цілях. Може переступити більшість місцевості.
unit.spiroct.description = Вистрілює виснажливими лазерними променями у ворогів, відновлюючись водночас. Може переступати через більшість місцевості.
unit.arkyid.description = Вистрілює у ворогів великими виснажливими лазерними променями, відновлюючись при цьому.
unit.toxopid.description = Вистрілює у ворогів великими електричними касетними снарядами та пробивними лазерами. Може переступати через більшість місцевості.
unit.flare.description = Вистрілює стандартними кулями в найближчі цілі.
unit.horizon.description = Кидає купу бомб на наземні цілі.
unit.zenith.description = Вистрілює залпи ракет у всіх найближчих ворогів.
unit.antumbra.description = Вистрілює шквал куль у всіх найближчих ворогів.
unit.eclipse.description = Вистрілює двома пронизливими лазерами та шквалом куль у всіх найближчих ворогів.
unit.mono.description = Автоматично видобуває мідь і свинець і кладе їх у ядро.
unit.poly.description = Автоматично перебудовує зруйновані споруди та допомагає іншим одиницям у будівництві.
unit.mega.description = Автоматично відновлює пошкоджені споруди. Здатний нести блоки та невеликі наземні одиниці.
unit.quad.description = Кидає великі бомби на наземні цілі, відновлюючи союзні споруди та завдаючи шкоди ворогам. Здатний нести середні наземні одиниці.
unit.oct.description = Захищає найближчих союзників своїм відновлювальним щитом. Здатний нести більшість наземних одиниць.
unit.risso.description = Вистрілює шквалом ракет і куль по всіх найближчих ворогах.
unit.minke.description = Вистрілює запальними снарядами та стандартними кулями по найближчих наземних цілях.
unit.bryde.description = Вистрілює у ворогів артилерійськими снарядами та ракетами великої дальності.
unit.sei.description = Вистрілює у ворогів шквалом ракет і бронебійних куль.
unit.omura.description = Вистрілює у ворогів далекобійним болтом, що пробиває броню. Виробляє повітряних Фальшфеєрів.
unit.alpha.description = Захищає ядро «Уламок» від противників. Будує споруди.
unit.beta.description = Захищає ядро «Штаб» від противників. Будує споруди.
unit.gamma.description = Захищає ядро «Атом» від противників. Будує споруди.
unit.retusa.description = Вистрілює самонаведеними торпедами по ворогах. Ремонтує найближчі одиниці.
unit.oxynoe.description = Вистрілює потоками полум’я, що ремонтують споруди та завдають шкоду ворогам. Захищає від ворожих снарядів за допомогою башти точкової оборони.
unit.cyerce.description = Вистрілює у ворогів навідними касетними ракетами. Ремонтує найближчі одиниці.
unit.aegires.description = Електризує ворожі одиниці та будівлі, що входять до його енергетичного поля. Ремонтує всіх союзників.
unit.navanax.description = Вистрілює вибухонебезпечні снаряди електромагнітного імпульсу, завдаючи значної шкоди ворожим енергетичним мережам та ремонтуючи союзницькі споруди. Розплавляє сусідніх ворогів за допомогою 4 автономних лазерних веж.
unit.dagger.description = Англійська назва: Dagger\nВистрілює стандартними кулями в найближчих ворогах.
unit.mace.description = Англійська назва: Mace\nВистрілює потоками полум’я в найближчих ворогів.
unit.fortress.description = Англійська назва: Fortress\nВистрілює з далекобійної артилерії в наземних цілей.
unit.scepter.description = Англійська назва: Scepter\nВистрілює шквалом заряджених куль у найближчих ворогів.
unit.reign.description = Англійська назва: Reign\nВистрілює шквалом масивних пронизливих куль у найближчих ворогів.
unit.nova.description = Англійська назва: Nova\nВистрілює лазерними болтами, що завдають шкоди ворогам та відновлюють союзні споруди. Здатний до польоту.
unit.pulsar.description = Англійська назва: Pulsar\nВипускає дуги електрики, що завдають шкоди ворогам та відновлюють союзні споруди. Здатний до польоту.
unit.quasar.description = Англійська назва: Quasar\nВистрілює пробивними лазерними променями, що пошкоджують ворогів та відновлюють союзні споруди. Здатний до польоту. Захищений.
unit.vela.description = Англійська назва: Vela\nВистрілює масивним безперервним лазерним променем, що завдає шкоди ворогам, спричиняє пожежі та відновлює союзні споруди. Здатний до польоту.
unit.corvus.description = Англійська назва: Corvus\nСпричиняє масивний лазерний вибух, що завдає шкоди ворогам та відновлює споріднені споруди. Може переступати через більшість місцевості.
unit.crawler.description = Англійська назва: Crawler\nБіжить до ворогів і самознищується, викликаючи великий вибух.
unit.atrax.description = Англійська назва: Atrax\nВипалює виснажливі шари шлаку в наземних цілях. Може переступити більшість місцевості.
unit.spiroct.description = Англійська назва: Spiroct\nВистрілює виснажливими лазерними променями у ворогів, відновлюючись водночас. Може переступати через більшість місцевості.
unit.arkyid.description = Англійська назва: Arkyid\nВистрілює у ворогів великими виснажливими лазерними променями, відновлюючись при цьому.
unit.toxopid.description = Англійська назва: Toxopid\nВистрілює у ворогів великими електричними касетними снарядами та пробивними лазерами. Може переступати через більшість місцевості.
unit.flare.description = Англійська назва: Flare\nВистрілює стандартними кулями в найближчі цілі.
unit.horizon.description = Англійська назва: Horizon\nКидає купу бомб на наземні цілі.
unit.zenith.description = Англійська назва: Zenith\nВистрілює залпи ракет у всіх найближчих ворогів.
unit.antumbra.description = Англійська назва: Antumbra\nВистрілює шквал куль у всіх найближчих ворогів.
unit.eclipse.description = Англійська назва: Eclipse\nВистрілює двома пронизливими лазерами та шквалом куль у всіх найближчих ворогів.
unit.mono.description = Англійська назва: Mono\nАвтоматично видобуває мідь і свинець і кладе їх у ядро.
unit.poly.description = Англійська назва: Poly\nАвтоматично перебудовує зруйновані споруди та допомагає іншим одиницям у будівництві.
unit.mega.description = Англійська назва: Mega\nАвтоматично відновлює пошкоджені споруди. Здатний нести блоки та невеликі наземні одиниці.
unit.quad.description = Англійська назва: Quad\nКидає великі бомби на наземні цілі, відновлюючи союзні споруди та завдаючи шкоди ворогам. Здатний нести середні наземні одиниці.
unit.oct.description = Англійська назва: Oct\nЗахищає найближчих союзників своїм відновлювальним щитом. Здатний нести більшість наземних одиниць.
unit.risso.description = Англійська назва: Risso\nВистрілює шквалом ракет і куль по всіх найближчих ворогах.
unit.minke.description = Англійська назва: Minke\nВистрілює запальними снарядами та стандартними кулями по найближчих наземних цілях.
unit.bryde.description = Англійська назва: Bryde\nВистрілює у ворогів артилерійськими снарядами та ракетами великої дальності.
unit.sei.description = Англійська назва: Sei\nВистрілює у ворогів шквалом ракет і бронебійних куль.
unit.omura.description = Англійська назва: Omura\nВистрілює у ворогів далекобійним болтом, що пробиває броню. Виробляє повітряних Фальшфеєрів.
unit.alpha.description = Англійська назва: Alpha\nЗахищає ядро «Уламок» від противників. Будує споруди.
unit.beta.description = Англійська назва: Beta\nЗахищає ядро «Штаб» від противників. Будує споруди.
unit.gamma.description = Англійська назва: Gamma\nЗахищає ядро «Атом» від противників. Будує споруди.
unit.retusa.description = Англійська назва: Retusa\nВистрілює самонаведеними торпедами по ворогах. Ремонтує найближчі одиниці.
unit.oxynoe.description = Англійська назва: Oxynoe\nВистрілює потоками полум’я, що ремонтують споруди та завдають шкоду ворогам. Захищає від ворожих снарядів за допомогою башти точкової оборони.
unit.cyerce.description = Англійська назва: Cyerce\nВистрілює у ворогів навідними касетними ракетами. Ремонтує найближчі одиниці.
unit.aegires.description = Англійська назва: Aegires\nЕлектризує ворожі одиниці та будівлі, що входять до його енергетичного поля. Ремонтує всіх союзників.
unit.navanax.description = Англійська назва: Navanax\nВистрілює вибухонебезпечні снаряди електромагнітного імпульсу, завдаючи значної шкоди ворожим енергетичним мережам та ремонтуючи союзницькі споруди. Розплавляє сусідніх ворогів за допомогою 4 автономних лазерних веж.
#Erekir
unit.stell.description = Веде вогонь по ворожих цілях звичайними кулями.
unit.locus.description = Веде почерговий вогонь по ворожих цілях.
unit.precept.description = Веде вогонь по ворожих цілях касетними кумулятивними кулями.
unit.vanquish.description = Веде вогонь по ворожих цілях великими пробивними осколково-фугасними кулями.
unit.conquer.description = Веде вогонь великими пробивними каскадами куль по ворожих цілях.
unit.merui.description = Веде вогонь з далекобійної артилерії по наземних цілях противника. Може пересуватися по більшості видів місцевості.
unit.cleroi.description = Веде вогонь здвоєними снарядами по ворожих цілях. Прицільно знищує снаряди противника за допомогою точкових захисних башт. Може пересуватися по більшості видів місцевості.
unit.anthicus.description = Веде вогонь по ворожих цілях ракетами дальнього радіуса дії з самонаведенням. Може пересуватися по більшості видів місцевості.
unit.tecta.description = Веде вогонь самонавідними плазмовими ракетами по ворожих цілях. Захищається за допомогою щита спрямованої дії. Може пересуватися по більшості видів місцевості.
unit.collaris.description = Веде дальній осколково-фугасний вогонь по ворожих цілях. Може пересуватися по більшості видів місцевості.
unit.elude.description = Стріляє парами самонавідних куль по ворожих цілях. Може парити над об’єктами з рідиною.
unit.avert.description = Веде вогонь по ворожих цілях закрученими парами куль.
unit.obviate.description = Стріляє по ворожих цілях закрученими парами блискавичних куль.
unit.quell.description = Веде вогонь далекобійними самонавідними ракетами по об’єктах противника. Блокує ремонтні пункти супротивника.
unit.disrupt.description = Веде вогонь ракетами дальнього радіуса дії з самонаведенням по об’єктах противника. Блокує ремонтні пункти супротивника.
unit.evoke.description = Будує споруди для захисту ядра «Бастіон». Ремонтує споруди за допомогою променя.
unit.incite.description = Будує споруди для захисту ядра «Цитадель». Ремонтує споруди за допомогою променя.
unit.emanate.description = Будує споруди для захисту ядра «Акрополь». Ремонтує споруди за допомогою променя.
unit.stell.description = Англійська назва: Stell\nВеде вогонь по ворожих цілях звичайними кулями.
unit.locus.description = Англійська назва: Locus\nВеде почерговий вогонь по ворожих цілях.
unit.precept.description = Англійська назва: Precept\nВеде вогонь по ворожих цілях касетними кумулятивними кулями.
unit.vanquish.description = Англійська назва: Vanquish\nВеде вогонь по ворожих цілях великими пробивними осколково-фугасними кулями.
unit.conquer.description = Англійська назва: Conquer\nВеде вогонь великими пробивними каскадами куль по ворожих цілях.
unit.merui.description = Англійська назва: Merui\nВеде вогонь з далекобійної артилерії по наземних цілях противника. Може пересуватися по більшості видів місцевості.
unit.cleroi.description = Англійська назва: Cleroi\nВеде вогонь здвоєними снарядами по ворожих цілях. Прицільно знищує снаряди противника за допомогою точкових захисних башт. Може пересуватися по більшості видів місцевості.
unit.anthicus.description = Англійська назва: Anthicus\nВеде вогонь по ворожих цілях ракетами дальнього радіуса дії з самонаведенням. Може пересуватися по більшості видів місцевості.
unit.tecta.description = Англійська назва: Tecta\nВеде вогонь самонавідними плазмовими ракетами по ворожих цілях. Захищається за допомогою щита спрямованої дії. Може пересуватися по більшості видів місцевості.
unit.collaris.description = Англійська назва: Collaris\nВеде дальній осколково-фугасний вогонь по ворожих цілях. Може пересуватися по більшості видів місцевості.
unit.elude.description = Англійська назва: Elude\nСтріляє парами самонавідних куль по ворожих цілях. Може парити над об’єктами з рідиною.
unit.avert.description = Англійська назва: Avert\nВеде вогонь по ворожих цілях закрученими парами куль.
unit.obviate.description = Англійська назва: Obviate\nСтріляє по ворожих цілях закрученими парами блискавичних куль.
unit.quell.description = Англійська назва: Quell\nВеде вогонь далекобійними самонавідними ракетами по об’єктах противника. Блокує ремонтні пункти супротивника.
unit.disrupt.description = Англійська назва: Disrupt\nВеде вогонь ракетами дальнього радіуса дії з самонаведенням по об’єктах противника. Блокує ремонтні пункти супротивника.
unit.evoke.description = Англійська назва: Evoke\nБудує споруди для захисту ядра «Бастіон». Ремонтує споруди за допомогою променя.
unit.incite.description = Англійська назва: Incite\nБудує споруди для захисту ядра «Цитадель». Ремонтує споруди за допомогою променя.
unit.emanate.description = Англійська назва: Emanate\nБудує споруди для захисту ядра «Акрополь». Ремонтує споруди за допомогою променя.
lst.read = Зчитує число із з’єднаної комірки пам’яті.
lst.write = Записує числу у з’єднану комірку пам’яті.
@@ -2233,7 +2237,7 @@ lst.flushmessage = Показує повідомлення на екрані з
lst.cutscene = Керує камерою гравця.
lst.setflag = Установлює глобальний прапорець, який можуть прочитати усі процесори.
lst.getflag = Перевіряє, чи встановлено глобальний прапорець.
lst.setprop = Sets a property of a unit or building.
lst.setprop = Установлює властивість одиниці чи будівлі.
logic.nounitbuild = [red]Будування за допомогою процесорів заборено.

View File

@@ -459,6 +459,8 @@ waves.sort.reverse = Đảo ngược sắp xếp
waves.sort.begin = Bắt đầu
waves.sort.health = Máu
waves.sort.type = Thể loại
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Ẩn tất cả
waves.units.show = Hiện tất cả
@@ -1228,6 +1230,7 @@ rules.buildcostmultiplier = Hệ số chi phí xây dựng
rules.buildspeedmultiplier = Hệ số tốc độ xây dựng
rules.deconstructrefundmultiplier = Hệ số số vật phẩm hoàn lại khi phá công trình
rules.waitForWaveToEnd = Đợt chờ hết kẻ địch
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Bán kính vùng thả:[lightgray] (ô)
rules.unitammo = Quân lính cần đạn
rules.enemyteam = Đội quân địch

View File

@@ -461,6 +461,8 @@ waves.sort.reverse = 反向排序
waves.sort.begin = 出场顺序
waves.sort.health = 生命值
waves.sort.type = 类型
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = 全部隐藏
waves.units.show = 全部显示
@@ -1236,6 +1238,7 @@ rules.buildcostmultiplier = 建造花费倍率
rules.buildspeedmultiplier = 建造速度倍率
rules.deconstructrefundmultiplier = 拆除返还倍率
rules.waitForWaveToEnd = 等待波次结束
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = 敌人出生点禁区大小:[lightgray](格)
rules.unitammo = 单位有弹药限制
rules.enemyteam = 敌方队伍

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = 反向排序
waves.sort.begin = 開始
waves.sort.health = 血量
waves.sort.type = 兵種
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = 全部隱藏
waves.units.show = 全部顯示
@@ -1232,6 +1234,7 @@ rules.buildcostmultiplier = 建設成本倍數
rules.buildspeedmultiplier = 建設速度倍數
rules.deconstructrefundmultiplier = 拆除資源返還比例
rules.waitForWaveToEnd = 等待所有敵人毀滅才開始下一波次
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = 空降區半徑:[lightgray](格)
rules.unitammo = 單位需要彈藥
rules.enemyteam = 敵方隊伍

View File

@@ -38,7 +38,6 @@ Jaiun Lee
Gab_351
Carter Gale
Jan Polák
JrTRinny
JustYanns
BasedUser
Rex Aliis
@@ -130,6 +129,7 @@ Skat
WilloIzCitron
SAMBUYYA
genNAowl
JniTrRny
TranquillyUnpleasant
Darkness6030
hortiSquash

View File

@@ -149,7 +149,7 @@ public class Vars implements Loadable{
/** max GL texture size */
public static int maxTextureSize = 2048;
/** Maximum schematic size.*/
public static int maxSchematicSize = 32;
public static int maxSchematicSize = 64;
/** Whether to show sector info upon landing. */
public static boolean showSectorLandInfo = true;
/** Whether to check for memory use before taking screenshots. */

View File

@@ -3,6 +3,7 @@ package mindustry.ai.types;
import arc.math.*;
import arc.struct.*;
import arc.util.*;
import mindustry.*;
import mindustry.entities.units.*;
import mindustry.gen.*;
import mindustry.logic.*;
@@ -36,9 +37,18 @@ public class LogicAI extends AIController{
public PosTeam posTarget = PosTeam.create();
private ObjectSet<Object> radars = new ObjectSet<>();
private float lastMoveX, lastMoveY;
private int lastPathId = 0;
@Override
public void updateMovement(){
if(control == LUnitControl.pathfind){
if(!Mathf.equal(moveX, lastMoveX, 0.1f) || !Mathf.equal(moveY, lastMoveY, 0.1f)){
lastPathId ++;
lastMoveX = moveX;
lastMoveY = moveY;
}
}
if(targetTimer > 0f){
targetTimer -= Time.delta;
@@ -62,6 +72,15 @@ public class LogicAI extends AIController{
case approach -> {
moveTo(Tmp.v1.set(moveX, moveY), moveRad - 7f, 7, true, null);
}
case pathfind -> {
if(unit.isFlying()){
moveTo(Tmp.v1.set(moveX, moveY), 1f, 30f);
}else{
if(Vars.controlPath.getPathPosition(unit, lastPathId, Tmp.v2.set(moveX, moveY), Tmp.v1, null)){
moveTo(Tmp.v1, 1f, Tmp.v2.epsilonEquals(Tmp.v1, 4.1f) ? 30f : 0f);
}
}
}
case stop -> {
unit.clearBuilding();
}

View File

@@ -68,6 +68,9 @@ public class Planets{
hiddenItems.addAll(Items.serpuloItems).removeAll(Items.erekirItems);
enemyBuildSpeedMultiplier = 0.4f;
//TODO disallowed for now
allowLaunchToNumbered = false;
//TODO SHOULD there be lighting?
updateLighting = false;

View File

@@ -49,6 +49,7 @@ public class Control implements ApplicationListener, Loadable{
public Saves saves;
public SoundControl sound;
public InputHandler input;
public AttackIndicators indicators;
private Interval timer = new Interval(2);
private boolean hiscore = false;
@@ -58,6 +59,13 @@ public class Control implements ApplicationListener, Loadable{
public Control(){
saves = new Saves();
sound = new SoundControl();
indicators = new AttackIndicators();
Events.on(BuildDamageEvent.class, e -> {
if(e.build.team == Vars.player.team()){
indicators.add(e.build.tileX(), e.build.tileY());
}
});
//show dialog saying that mod loading was skipped.
Events.on(ClientLoadEvent.class, e -> {
@@ -100,6 +108,7 @@ public class Control implements ApplicationListener, Loadable{
Events.on(ResetEvent.class, event -> {
player.reset();
toBePlaced.clear();
indicators.clear();
hiscore = false;
saves.resetSave();
@@ -628,6 +637,9 @@ public class Control implements ApplicationListener, Loadable{
if(state.isGame()){
input.update();
if(!state.isPaused()){
indicators.update();
}
//auto-update rpc every 5 seconds
if(timer.get(0, 60 * 5)){

View File

@@ -310,6 +310,9 @@ public class Logic implements ApplicationListener{
Events.fire(new GameOverEvent(left == null ? Team.derelict : left.team));
state.gameOver = true;
}
}else if(!state.gameOver && state.rules.waves && (state.enemies == 0 && state.rules.winWave > 0 && state.wave >= state.rules.winWave && !spawner.isSpawning())){
state.gameOver = true;
Events.fire(new GameOverEvent(state.rules.defaultTeam));
}
}
}

View File

@@ -279,7 +279,8 @@ public class UI implements ApplicationListener, Loadable{
cont.margin(30).add(text).padRight(6f);
TextFieldFilter filter = numbers ? TextFieldFilter.digitsOnly : (f, c) -> true;
TextField field = cont.field(def, t -> {}).size(330f, 50f).get();
field.setFilter((f, c) -> field.getText().length() < textLength && filter.acceptChar(f, c));
field.setMaxLength(textLength);
field.setFilter(filter);
buttons.defaults().size(120, 54).pad(4);
buttons.button("@cancel", () -> {
closed.run();

View File

@@ -752,9 +752,9 @@ public class MapEditorDialog extends Dialog implements Disposable{
cont.table(search -> {
search.image(Icon.zoom).padRight(8);
search.field("", this::rebuildBlockSelection)
search.field("", this::rebuildBlockSelection).growX()
.name("editor/search").maxTextLength(maxNameLength).get().setMessageText("@players.search");
}).pad(-2);
}).growX().pad(-2).padLeft(6f);
cont.row();
cont.table(Tex.underline, extra -> extra.labelWrap(() -> editor.drawBlock.localizedName).width(200f).center()).growX();
cont.row();
@@ -803,7 +803,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
}
if(i == 0){
blockSelection.add("@none").color(Color.lightGray).padLeft(80f).padTop(10f);
blockSelection.add("@none.found").color(Color.lightGray).padLeft(54f).padTop(10f);
}
}
}

View File

@@ -30,6 +30,7 @@ public class MapLoadDialog extends BaseDialog{
buttons.defaults().size(200f, 50f);
buttons.button("@cancel", this::hide);
buttons.add(button);
addCloseListener();
}
public void rebuild(){
@@ -48,13 +49,13 @@ public class MapLoadDialog extends BaseDialog{
table.defaults().size(200f, 90f).pad(4f);
table.margin(10f);
ScrollPane pane = new ScrollPane(table, Styles.horizontalPane);
ScrollPane pane = new ScrollPane(table);
pane.setFadeScrollBars(false);
for(Map map : maps.all()){
TextButton button = new TextButton(map.name(), Styles.togglet);
button.add(new BorderImage(map.safeTexture(), 2f).setScaling(Scaling.fit)).size(16 * 4f);
TextButton button = new TextButton(map.name(), Styles.flatTogglet);
button.add(new BorderImage(map.safeTexture(), 2f).setScaling(Scaling.fit)).padLeft(5f).size(16 * 4f);
button.getCells().reverse();
button.clicked(() -> selected = map);
button.getLabelCell().grow().left().padLeft(5f);
@@ -63,14 +64,12 @@ public class MapLoadDialog extends BaseDialog{
if(++i % maxcol == 0) table.row();
}
if(maps.all().size == 0){
if(maps.all().isEmpty()){
table.add("@maps.none").center();
}else{
cont.add("@editor.loadmap");
}
cont.row();
cont.add(pane);
cont.add(pane).growX();
}
}

View File

@@ -482,7 +482,9 @@ public class MapObjectivesDialog extends BaseDialog{
loop:
for(int y = 0; y < rows; y++){
for(int x = 0; x < columns; x++){
canvas.tilemap.createTile(x * w, bounds - 1 - y * 2, objectives.get(i++));
if(canvas.tilemap.createTile(x * w, y, objectives.get(i))){
i++;
}
if(i >= objectives.size) break loop;
}
}

View File

@@ -1,7 +1,9 @@
package mindustry.editor;
import arc.*;
import arc.func.*;
import arc.graphics.*;
import arc.input.*;
import arc.math.*;
import arc.math.geom.*;
import arc.scene.event.*;
@@ -21,19 +23,18 @@ import mindustry.type.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
import java.util.*;
import static mindustry.Vars.*;
import static mindustry.game.SpawnGroup.*;
public class WaveInfoDialog extends BaseDialog{
private int displayed = 20;
private int start = 0, displayed = 20;
Seq<SpawnGroup> groups = new Seq<>();
private SpawnGroup expandedGroup;
private @Nullable SpawnGroup expandedGroup;
private Table table;
private int start = 0;
private int search = -1;
private UnitType lastType = UnitTypes.dagger;
private @Nullable UnitType filterType;
private Sort sort = Sort.begin;
private boolean reverseSort = false;
private float updateTimer, updatePeriod = 1f;
@@ -49,45 +50,22 @@ public class WaveInfoDialog extends BaseDialog{
});
hidden(() -> state.rules.spawns = groups);
addCloseListener();
onResize(this::setup);
buttons.button(Icon.filter, () -> {
BaseDialog dialog = new BaseDialog("@waves.sort");
dialog.setFillParent(false);
dialog.cont.table(Tex.button, t -> {
for(Sort s : Sort.all){
t.button("@waves.sort." + s, Styles.flatTogglet, () -> {
sort = s;
dialog.hide();
buildGroups();
}).size(150f, 60f).checked(s == sort);
}
}).row();
dialog.cont.check("@waves.sort.reverse", b -> {
reverseSort = b;
buildGroups();
}).padTop(4).checked(reverseSort).padBottom(8f);
dialog.addCloseButton();
dialog.show();
buildGroups();
}).size(60f, 64f);
addCloseButton();
buttons.button("@waves.edit", Icon.pencil, () -> {
buttons.button("@waves.edit", Icon.edit, () -> {
BaseDialog dialog = new BaseDialog("@waves.edit");
dialog.addCloseButton();
dialog.setFillParent(false);
dialog.cont.table(Tex.button, t -> {
var style = Styles.flatt;
t.defaults().size(210f, 58f);
var style = Styles.cleart;
t.defaults().size(280f, 64f).pad(2f);
t.button("@waves.copy", Icon.copy, style, () -> {
ui.showInfoFade("@waves.copied");
Core.app.setClipboardText(maps.writeWaves(groups));
dialog.hide();
}).disabled(b -> groups == null).marginLeft(12f).row();
}).disabled(b -> groups == null || groups.isEmpty()).marginLeft(12f).row();
t.button("@waves.load", Icon.download, style, () -> {
try{
@@ -98,16 +76,16 @@ public class WaveInfoDialog extends BaseDialog{
ui.showErrorMessage("@waves.invalid");
}
dialog.hide();
}).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null || Core.app.getClipboardText().isEmpty()).row();
}).disabled(Core.app.getClipboardText() == null || !Core.app.getClipboardText().startsWith("[")).marginLeft(12f).row();
t.button("@settings.reset", Icon.upload, style, () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
groups = JsonIO.copy(waves.get());
t.button("@clear", Icon.none, style, () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
groups.clear();
buildGroups();
dialog.hide();
})).marginLeft(12f).row();
t.button("@clear", Icon.cancel, style, () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
groups.clear();
t.button("@settings.reset", Icon.refresh, style, () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
groups = JsonIO.copy(waves.get());
buildGroups();
dialog.hide();
})).marginLeft(12f);
@@ -144,7 +122,7 @@ public class WaveInfoDialog extends BaseDialog{
buttons.button(Core.bundle.get("waves.random"), Icon.refresh, () -> {
groups.clear();
groups = Waves.generate(1f / 10f);
updateWaves();
buildGroups();
}).width(200f);
}
}
@@ -171,19 +149,53 @@ public class WaveInfoDialog extends BaseDialog{
void setup(){
groups = JsonIO.copy(state.rules.spawns.isEmpty() ? waves.get() : state.rules.spawns);
if(groups == null) groups = new Seq<>();
cont.clear();
cont.stack(new Table(Tex.clear, main -> {
main.pane(t -> table = t).growX().growY().padRight(8f).scrollX(false);
main.row();
main.button("@add", () -> {
if(groups == null) groups = new Seq<>();
SpawnGroup newGroup = new SpawnGroup(lastType);
groups.add(newGroup);
expandedGroup = newGroup;
showUpdate(newGroup);
buildGroups();
}).growX().height(70f);
main.table(s -> {
s.image(Icon.zoom).padRight(8);
s.field(search < 0 ? "" : (search + 1) + "", TextFieldFilter.digitsOnly, text -> {
search = groups.any() ? Strings.parseInt(text, 0) - 1 : -1;
start = Math.max(search - (displayed / 2) - (displayed % 2), 0);
buildGroups();
}).growX().maxTextLength(8).get().setMessageText("@waves.search");
s.button(Icon.units, Styles.emptyi, () -> showUnits(type -> filterType = type, true)).size(46f).tooltip("@waves.filter.unit")
.update(b -> b.getStyle().imageUp = filterType != null ? new TextureRegionDrawable(filterType.uiIcon) : Icon.filter);
}).growX().pad(6f).row();
main.pane(t -> table = t).grow().padRight(8f).scrollX(false).row();
main.table(t -> {
t.button("@add", () -> {
SpawnGroup newGroup = new SpawnGroup(lastType);
groups.add(newGroup);
expandedGroup = newGroup;
showUnits(type -> newGroup.type = lastType = type, false);
buildGroups();
}).growX().height(70f);
t.button(Icon.filter, () -> {
BaseDialog dialog = new BaseDialog("@waves.sort");
dialog.setFillParent(false);
dialog.cont.table(Tex.button, f -> {
for(Sort s : Sort.all){
f.button("@waves.sort." + s, Styles.flatTogglet, () -> {
sort = s;
dialog.hide();
buildGroups();
}).size(150f, 60f).checked(s == sort);
}
}).row();
dialog.cont.check("@waves.sort.reverse", b -> {
reverseSort = b;
buildGroups();
}).padTop(4).checked(reverseSort).padBottom(8f);
dialog.addCloseButton();
dialog.show();
}).size(64f, 70f).padLeft(6f);
}).growX();
}), new Label("@waves.none"){{
visible(() -> groups.isEmpty());
this.touchable = Touchable.disabled;
@@ -202,10 +214,13 @@ public class WaveInfoDialog extends BaseDialog{
table.margin(10f);
if(groups != null){
groups.sort(sort.sort);
groups.sort(Structs.comps(Structs.comparingFloat(sort.sort), Structs.comparingFloat(sort.secondary)));
if(reverseSort) groups.reverse();
for(SpawnGroup group : groups){
if(group.effect == StatusEffects.none) group.effect = null;
if((search >= 0 && group.getSpawned(search) <= 0) || (filterType != null && group.type != filterType)) continue;
table.table(Tex.button, t -> {
t.margin(0).defaults().pad(3).padLeft(5f).growX().left();
t.button(b -> {
@@ -218,24 +233,31 @@ public class WaveInfoDialog extends BaseDialog{
b.label(() -> (group.begin + 1) + "").color(Color.lightGray).minWidth(45f).labelAlign(Align.left).left();
b.button(Icon.copySmall, Styles.emptyi, () -> {
SpawnGroup newGroup = group.copy();
expandedGroup = newGroup;
groups.add(newGroup);
SpawnGroup copy = group.copy();
expandedGroup = copy;
groups.insert(groups.indexOf(group) + 1, copy);
buildGroups();
}).pad(-6).size(46f);
}).pad(-6).size(46f).tooltip("@editor.copy");
b.button(group.effect != null && group.effect != StatusEffects.none ?
b.button(group.effect != null ?
new TextureRegionDrawable(group.effect.uiIcon) :
Icon.logicSmall,
Styles.emptyi, () -> showEffect(group)).pad(-6).size(46f);
Styles.emptyi, () -> showEffects(group)).pad(-6).size(46f).scaling(Scaling.fit).tooltip(group.effect != null ? group.effect.localizedName : "@none");
b.button(Icon.unitsSmall, Styles.emptyi, () -> showUpdate(group)).pad(-6).size(46f);
b.button(Icon.unitsSmall, Styles.emptyi, () -> showUnits(type -> group.type = lastType = type, false)).pad(-6).size(46f).tooltip("@stat.unittype");
b.button(Icon.cancel, Styles.emptyi, () -> {
groups.remove(group);
if(expandedGroup == group) expandedGroup = null;
table.getCell(t).pad(0f);
t.remove();
buildGroups();
}).pad(-6).size(46f).padRight(-12f);
}).pad(-6).size(46f).padRight(-12f).tooltip("@waves.remove");
b.clicked(KeyCode.mouseMiddle, () -> {
SpawnGroup copy = group.copy();
groups.insert(groups.indexOf(group) + 1, copy);
expandedGroup = copy;
buildGroups();
});
}, () -> {
expandedGroup = expandedGroup == group ? null : group;
buildGroups();
@@ -369,7 +391,7 @@ public class WaveInfoDialog extends BaseDialog{
dialog.hide();
}).size(110f, 45f).checked(-1 == group.spawn);
}
});
}).grow();
dialog.setFillParent(false);
dialog.addCloseButton();
dialog.show();
@@ -381,6 +403,10 @@ public class WaveInfoDialog extends BaseDialog{
table.row();
}
if(table.getChildren().isEmpty() && groups.any()){
table.add("@none.found");
}
}else{
table.add("@editor.default");
}
@@ -388,11 +414,23 @@ public class WaveInfoDialog extends BaseDialog{
updateWaves();
}
void showUpdate(SpawnGroup group){
void showUnits(Cons<UnitType> cons, boolean reset){
BaseDialog dialog = new BaseDialog("");
dialog.setFillParent(true);
dialog.cont.pane(p -> {
int i = 0;
p.defaults().pad(2).fillX();
if(reset){
p.button(t -> {
t.left();
t.image(Icon.none).size(8 * 4).scaling(Scaling.fit).padRight(2f);
t.add("@settings.resetKey");
}, () -> {
cons.get(null);
dialog.hide();
buildGroups();
}).margin(12f);
}
int i = reset ? 1 : 0;
for(UnitType type : content.units()){
if(type.isHidden()) continue;
p.button(t -> {
@@ -400,19 +438,18 @@ public class WaveInfoDialog extends BaseDialog{
t.image(type.uiIcon).size(8 * 4).scaling(Scaling.fit).padRight(2f);
t.add(type.localizedName);
}, () -> {
lastType = type;
group.type = type;
cons.get(type);
dialog.hide();
buildGroups();
}).pad(2).margin(12f).fillX();
}).margin(12f);
if(++i % 3 == 0) p.row();
}
});
}).growX().scrollX(false);
dialog.addCloseButton();
dialog.show();
}
void showEffect(SpawnGroup group){
void showEffects(SpawnGroup group){
BaseDialog dialog = new BaseDialog("");
dialog.setFillParent(true);
dialog.cont.pane(p -> {
@@ -434,28 +471,33 @@ public class WaveInfoDialog extends BaseDialog{
t.add("@settings.resetKey");
}
}, () -> {
group.effect = effect;
group.effect = effect != StatusEffects.none ? effect : null;
dialog.hide();
buildGroups();
}).pad(2).margin(12f).fillX();
if(++i % 3 == 0) p.row();
}
});
}).growX().scrollX(false);
dialog.addCloseButton();
dialog.show();
}
enum Sort{
begin(Structs.comps(Structs.comparingFloat(g -> g.begin), Structs.comparingFloat(g -> g.type.id))),
health(Structs.comps(Structs.comparingFloat(g -> g.type.health), Structs.comparingFloat(g -> g.begin))),
type(Structs.comps(Structs.comparingFloat(g -> g.type.id), Structs.comparingFloat(g -> g.begin)));
begin(g -> g.begin, g -> g.type.id),
health(g -> g.type.health),
type(g -> g.type.id);
static final Sort[] all = values();
final Comparator<SpawnGroup> sort;
final Floatf<SpawnGroup> sort, secondary;
Sort(Comparator<SpawnGroup> sort){
Sort(Floatf<SpawnGroup> sort){
this(sort, g -> g.begin);
}
Sort(Floatf<SpawnGroup> sort, Floatf<SpawnGroup> secondary){
this.sort = sort;
this.secondary = secondary;
}
}

View File

@@ -224,6 +224,8 @@ public class BulletType extends Content implements Cloneable{
/** Use a negative value to disable splash damage. */
public float splashDamageRadius = -1f;
/** If true, splash damage pierces through tiles. */
public boolean splashDamagePierce = false;
/** Amount of fires attempted around bullet. */
public int incendAmount = 0;
@@ -394,9 +396,9 @@ public class BulletType extends Content implements Cloneable{
}
public void handlePierce(Bullet b, float initialHealth, float x, float y){
float sub = Math.max(initialHealth*pierceDamageFactor, 0);
float sub = Mathf.zero(pierceDamageFactor) ? 0f : Math.max(initialHealth * pierceDamageFactor, 0);
//subtract health from each consecutive pierce
b.damage -= Math.min(b.damage, sub);
b.damage -= Float.isNaN(sub) ? b.damage : Math.min(b.damage, sub);
if(removeAfterPierce && b.damage <= 0){
b.hit = true;
@@ -457,7 +459,7 @@ public class BulletType extends Content implements Cloneable{
public void createSplashDamage(Bullet b, float x, float y){
if(splashDamageRadius > 0 && !b.absorbed){
Damage.damage(b.team, x, y, splashDamageRadius, splashDamage * b.damageMultiplier(), false, collidesAir, collidesGround, scaledSplashDamage, b);
Damage.damage(b.team, x, y, splashDamageRadius, splashDamage * b.damageMultiplier(), splashDamagePierce, collidesAir, collidesGround, scaledSplashDamage, b);
if(status != StatusEffects.none){
Damage.status(b.team, x, y, splashDamageRadius, status, statusDuration, collidesAir, collidesGround);

View File

@@ -68,7 +68,7 @@ abstract class BlockUnitComp implements Unitc{
if(tile != null && this.team != team){
this.team = team;
if(tile.team != team){
tile.team(team);
tile.changeTeam(team);
}
}
}

View File

@@ -99,7 +99,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
private transient boolean sleeping;
private transient float sleepTime;
private transient boolean initialized;
private transient boolean initialized, wasAdded;
/** Sets this tile entity data to this and adds it if necessary. */
public Building init(Tile tile, Team team, boolean shouldAdd, int rotation){
@@ -174,6 +174,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
//endregion
//region io
/** certain blocks merge liquid graphs, so it is necessary to provide a fake one at write-time */
public LiquidModule writeLiquids(){
return liquids;
}
public final void writeBase(Writes write){
boolean writeVisibility = state.rules.fog && visibleFlags != 0;
@@ -186,7 +191,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
write.b(moduleBitmask());
if(items != null) items.write(write);
if(power != null) power.write(write);
if(liquids != null) liquids.write(write);
if(liquids != null) writeLiquids().write(write);
//efficiency is written as two bytes to save space
write.b((byte)(Mathf.clamp(efficiency) * 255f));
@@ -820,6 +825,8 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
if(!net.client() && state.isCampaign() && team == state.rules.defaultTeam) liquid.unlock();
float selfCapacity = liquidCapacity();
for(int i = 0; i < proximity.size; i++){
incrementDump(proximity.size);
@@ -829,10 +836,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
other = other.getLiquidDestination(self(), liquid);
if(other != null && other.team == team && other.block.hasLiquids && canDumpLiquid(other, liquid) && other.liquids != null){
float ofract = other.liquids.get(liquid) / other.block.liquidCapacity;
float fract = liquids.get(liquid) / block.liquidCapacity;
float ofract = other.liquids.get(liquid) / other.liquidCapacity();
float fract = liquids.get(liquid) / selfCapacity;
if(ofract < fract) transferLiquid(other, (fract - ofract) * block.liquidCapacity / scaling, liquid);
if(ofract < fract) transferLiquid(other, (fract - ofract) * selfCapacity / scaling, liquid);
}
}
}
@@ -842,7 +849,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
}
public void transferLiquid(Building next, float amount, Liquid liquid){
float flow = Math.min(next.block.liquidCapacity - next.liquids.get(liquid), amount);
float flow = Math.min(next.liquidCapacity() - next.liquids.get(liquid), amount);
if(next.acceptLiquid(self(), liquid)){
next.handleLiquid(self(), liquid, flow);
@@ -869,19 +876,20 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
if(next == null) return 0;
next = next.getLiquidDestination(self(), liquid);
float selfCapacity = liquidCapacity(), nextCapacity = next.liquidCapacity();
if(next.team == team && next.block.hasLiquids && liquids.get(liquid) > 0f){
float ofract = next.liquids.get(liquid) / next.block.liquidCapacity;
float fract = liquids.get(liquid) / block.liquidCapacity * block.liquidPressure;
float flow = Math.min(Mathf.clamp((fract - ofract)) * (block.liquidCapacity), liquids.get(liquid));
flow = Math.min(flow, next.block.liquidCapacity - next.liquids.get(liquid));
float ofract = next.liquids.get(liquid) / nextCapacity;
float fract = liquids.get(liquid) / selfCapacity * block.liquidPressure;
float flow = Math.min(Mathf.clamp((fract - ofract)) * selfCapacity, liquids.get(liquid));
flow = Math.min(flow, nextCapacity - next.liquids.get(liquid));
if(flow > 0f && ofract <= fract && next.acceptLiquid(self(), liquid)){
next.handleLiquid(self(), liquid, flow);
liquids.remove(liquid, flow);
return flow;
//handle reactions between different liquid types ▼
}else if(!next.block.consumesLiquid(liquid) && next.liquids.currentAmount() / next.block.liquidCapacity > 0.1f && fract > 0.1f){
}else if(!next.block.consumesLiquid(liquid) && next.liquids.currentAmount() / nextCapacity > 0.1f && fract > 0.1f){
//TODO !IMPORTANT! uses current(), which is 1) wrong for multi-liquid blocks and 2) causes unwanted reactions, e.g. hydrogen + slag in pump
//TODO these are incorrect effect positions
float fx = (x + next.x) / 2f, fy = (y + next.y) / 2f;
@@ -907,6 +915,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
return 0;
}
/** Override to set a custom liquid capacity, e.g. for blocks with shared inventories. */
public float liquidCapacity(){
return block.liquidCapacity;
}
public Building getLiquidDestination(Building from, Liquid liquid){
return self();
}
@@ -1074,6 +1087,9 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
noSleep();
}
/** Like onProximityAdded, but only called once. Essentially does what onProximityAdded was supposed to. */
public void onAdded(){}
public void updatePowerGraph(){
for(Building other : getPowerConnections(tempBuilds)){
if(other.power != null){
@@ -1679,6 +1695,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
other.onProximityUpdate();
}
proximity.clear();
wasAdded = false;
}
public void rotated(int prevRotation, int newRotation){
}
public void updateProximity(){
@@ -1701,6 +1722,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
proximity.add(tile);
}
if(!wasAdded){
onAdded();
wasAdded = true;
}
onProximityAdded();
onProximityUpdate();
@@ -1758,8 +1783,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
return;
}
//TODO why check for old state?
boolean prevValid = efficiency > 0, update = shouldConsume() && productionValid();
boolean update = shouldConsume() && productionValid();
float minEfficiency = 1f;
@@ -1791,7 +1815,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
updateEfficiencyMultiplier();
//second pass: update every consumer based on efficiency
if(update && prevValid && efficiency > 0){
if(update && efficiency > 0){
for(var cons : block.updateConsumers){
cons.update(self());
}

View File

@@ -0,0 +1,16 @@
package mindustry.entities.comp;
import mindustry.annotations.Annotations.*;
import mindustry.gen.*;
import mindustry.world.blocks.liquid.Conduit.*;
@EntityDef(value = ConduitGraphUpdaterc.class, serialize = false, genio = false)
@Component
abstract class ConduitGraphUpdaterComp implements Entityc{
public transient ConduitGraph graph;
@Override
public void update(){
graph.update();
}
}

View File

@@ -30,9 +30,8 @@ abstract class FireComp implements Timedc, Posc, Syncc, Drawc{
@Import float time, lifetime, x, y;
Tile tile;
private transient Block block;
private transient float
baseFlammability = -1, puddleFlammability, damageTimer = Mathf.random(40f),
puddleFlammability, damageTimer = Mathf.random(40f),
spreadTimer = Mathf.random(spreadDelay), fireballTimer = Mathf.random(fireballDelay),
warmup = 0f,
animation = Mathf.random(frames - 1);
@@ -64,12 +63,7 @@ abstract class FireComp implements Timedc, Posc, Syncc, Drawc{
Building entity = tile.build;
boolean damage = entity != null;
if(baseFlammability < 0 || block != tile.block()){
baseFlammability = tile.getFlammability();
block = tile.block();
}
float flammability = baseFlammability + puddleFlammability;
float flammability = tile.getFlammability() + puddleFlammability;
if(!damage && flammability <= 0){
time += Time.delta * 8;

View File

@@ -1,6 +1,7 @@
package mindustry.entities.comp;
import arc.util.*;
import mindustry.*;
import mindustry.annotations.Annotations.*;
import mindustry.content.*;
import mindustry.entities.*;
@@ -26,7 +27,7 @@ abstract class ShieldComp implements Healthc, Posc{
@Override
public void damage(float amount){
//apply armor and scaling effects
rawDamage(Damage.applyArmor(amount, armor) / healthMultiplier);
rawDamage(Damage.applyArmor(amount, armor) / healthMultiplier / Vars.state.rules.unitHealth(team));
}
@Replace
@@ -34,7 +35,7 @@ abstract class ShieldComp implements Healthc, Posc{
public void damagePierce(float amount, boolean withEffect){
float pre = hitTime;
rawDamage(amount / healthMultiplier);
rawDamage(amount / healthMultiplier / Vars.state.rules.unitHealth(team));
if(!withEffect){
hitTime = pre;

View File

@@ -35,7 +35,7 @@ public class ShootMulti extends ShootPattern{
if(move != null) move.move(b);
if(mover != null) mover.move(b);
});
});
}, null);
}
}, barrelIncrementer);
}

View File

@@ -14,14 +14,15 @@ public class ShootPattern implements Cloneable{
/** Called on a single "trigger pull". This function should call the handler with any bullets that result. */
public void shoot(int totalShots, BulletHandler handler, @Nullable Runnable barrelIncrementer){
for(int i = 0; i < shots; i++){
handler.shoot(0, 0, 0, firstShotDelay + shotDelay * i);
}
//the default implementation calls the "soft deprecated" variant for mod compatibility, so overrides from older mods can function properly
shoot(totalShots, handler);
}
/** Called on a single "trigger pull". This function should call the handler with any bullets that result. */
public void shoot(int totalShots, BulletHandler handler){
shoot(totalShots, handler, null);
for(int i = 0; i < shots; i++){
handler.shoot(0, 0, 0, firstShotDelay + shotDelay * i);
}
}
/** Subclasses should override this to flip its sides. */

View File

@@ -25,8 +25,10 @@ public class BuildPlan implements Position, QuadTreeObject{
/** Last progress.*/
public float progress;
/** Whether construction has started for this plan, and other special variables.*/
public boolean initialized, worldContext = true, stuck, cachedValid;
/** Whether construction has started for this plan. */
public boolean initialized, stuck, cachedValid;
/** If true, this plan is in the world. If false, it is being rendered in a schematic. */
public boolean worldContext = true;
/** Visual scale. Used only for rendering.*/
public float animScale = 0f;

View File

@@ -0,0 +1,66 @@
package mindustry.game;
import arc.math.geom.*;
import arc.struct.*;
import arc.util.*;
import mindustry.annotations.Annotations.*;
import mindustry.gen.*;
/** Updates and stores attack indicators for the minimap. */
public class AttackIndicators{
private static final float duration = 15f * 60f;
private LongSeq indicators = new LongSeq(false, 16);
private IntIntMap posToIndex = new IntIntMap();
public LongSeq list(){
return indicators;
}
public void clear(){
indicators.clear();
posToIndex.clear();
}
public void add(int x, int y){
int pos = Point2.pack(x, y);
int index = posToIndex.get(pos, -1);
//there is an existing indicator...
if(index != -1){
//reset its time (new attack)
indicators.items[index] = Indicator.time(indicators.items[index], 0f);
}else{
//new indicator created
indicators.add(Indicator.get(pos, 0f));
posToIndex.put(pos, indicators.size - 1);
}
}
public void update(){
long[] items = indicators.items;
for(int i = 0; i < indicators.size; i ++){
long l = items[i];
items[i] = l = Indicator.time(l, Indicator.time(l) + Time.delta);
if(Indicator.time(l) >= duration){
//remove the indicator as it has timed out, make sure to not skip the next one
indicators.removeIndex(i);
posToIndex.remove(Indicator.pos(l));
if(indicators.size > 0){
//relocation of head to this new index
posToIndex.put(Indicator.pos(items[i]), i);
}
i --;
}
}
}
@Struct
class IndicatorStruct{
int pos;
float time;
}
}

View File

@@ -69,6 +69,8 @@ public class Rules{
public float unitCostMultiplier = 1f;
/** How much damage units deal. */
public float unitDamageMultiplier = 1f;
/** How much health units start with. */
public float unitHealthMultiplier = 1f;
/** How much damage unit crash damage deals. (Compounds with unitDamageMultiplier) */
public float unitCrashDamageMultiplier = 1f;
/** If true, ghost blocks will appear upon destruction, letting builder blocks/units rebuild them. */
@@ -111,7 +113,7 @@ public class Rules{
public float waveSpacing = 2 * Time.toMinutes;
/** Starting wave spacing; if <=0, uses waveSpacing * 2. */
public float initialWaveSpacing = 0f;
/** Wave after which the player 'wins'. Used in sectors. Use a value <= 0 to disable. */
/** Wave after which the player 'wins'. Use a value <= 0 to disable. */
public int winWave = 0;
/** Base unit cap. Can still be increased by blocks. */
public int unitCap = 0;
@@ -226,6 +228,11 @@ public class Rules{
return unitDamageMultiplier * teams.get(team).unitDamageMultiplier;
}
public float unitHealth(Team team){
//a 0 here would be a very bad idea.
return Math.max(unitHealthMultiplier * teams.get(team).unitHealthMultiplier, 0.000001f);
}
public float unitCrashDamage(Team team){
return unitDamage(team) * unitCrashDamageMultiplier * teams.get(team).unitCrashDamageMultiplier;
}
@@ -233,7 +240,6 @@ public class Rules{
public float blockHealth(Team team){
return blockHealthMultiplier * teams.get(team).blockHealthMultiplier;
}
public float blockDamage(Team team){
return blockDamageMultiplier * teams.get(team).blockDamageMultiplier;
}
@@ -278,6 +284,8 @@ public class Rules{
public float unitCrashDamageMultiplier = 1f;
/** Multiplier of resources that units take to build. */
public float unitCostMultiplier = 1f;
/** How much health units start with. */
public float unitHealthMultiplier = 1f;
/** How much health blocks start with. */
public float blockHealthMultiplier = 1f;
/** How much damage blocks (turrets) deal. */

View File

@@ -17,6 +17,7 @@ import mindustry.type.*;
import java.io.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import static mindustry.Vars.*;
@@ -47,11 +48,24 @@ public class Saves{
public void load(){
saves.clear();
//read saves in parallel
Seq<Future<SaveSlot>> futures = new Seq<>();
for(Fi file : saveDirectory.list()){
if(!file.name().contains("backup") && SaveIO.isSaveValid(file)){
SaveSlot slot = new SaveSlot(file);
saves.add(slot);
slot.meta = SaveIO.getMeta(file);
futures.add(mainExecutor.submit(() -> {
SaveSlot slot = new SaveSlot(file);
slot.meta = SaveIO.getMeta(file);
return slot;
}));
}
}
for(var future : futures){
try{
saves.add(future.get());
}catch(Exception e){
Log.err(e);
}
}

View File

@@ -320,11 +320,24 @@ public class Schematics implements Loadable{
return block.size + maxLoadoutSchematicPad*2;
}
Fi findFile(String schematicName){
if(schematicName.isEmpty()) schematicName = "empty";
Fi result = null;
int index = 0;
while(result == null || result.exists()){
result = schematicDirectory.child(schematicName + (index == 0 ? "" : "_" + index) + "." + schematicExtension);
index ++;
}
return result;
}
/** Adds a schematic to the list, also copying it into the files.*/
public void add(Schematic schematic){
all.add(schematic);
try{
Fi file = schematicDirectory.child(Time.millis() + "." + schematicExtension);
Fi file = findFile(Strings.sanitizeFilename(schematic.name()));
write(schematic, file);
schematic.file = file;
}catch(Exception e){

View File

@@ -118,7 +118,7 @@ public class SpawnGroup implements JsonSerializable, Cloneable{
if(unitAmount != 1) json.writeValue("amount", unitAmount);
if(effect != null) json.writeValue("effect", effect.name);
if(spawn != -1) json.writeValue("spawn", spawn);
if(payloads != null && payloads.size > 0) json.writeValue("payloads", payloads.map(u -> u.name).toArray(String.class));
if(payloads != null && payloads.any()) json.writeValue("payloads", payloads.map(u -> u.name).toArray(String.class));
if(items != null && items.amount > 0) json.writeValue("items", items);
}
@@ -127,7 +127,7 @@ public class SpawnGroup implements JsonSerializable, Cloneable{
public void read(Json json, JsonValue data){
String tname = data.getString("type", "dagger");
type = content.getByName(ContentType.unit, LegacyIO.unitMap.get(tname, tname));
type = content.unit(LegacyIO.unitMap.get(tname, tname));
if(type == null) type = UnitTypes.dagger;
begin = data.getInt("begin", 0);
end = data.getInt("end", never);
@@ -138,7 +138,7 @@ public class SpawnGroup implements JsonSerializable, Cloneable{
shieldScaling = data.getFloat("shieldScaling", 0);
unitAmount = data.getInt("amount", 1);
spawn = data.getInt("spawn", -1);
if(data.has("payloads")) payloads = Seq.with(json.readValue(String[].class, data.get("payloads"))).map(s -> content.getByName(ContentType.unit, s));
if(data.has("payloads")) payloads = Seq.with(json.readValue(String[].class, data.get("payloads"))).map(s -> content.unit(s));
if(data.has("items")) items = json.readValue(ItemStack.class, data.get("items"));
@@ -146,7 +146,7 @@ public class SpawnGroup implements JsonSerializable, Cloneable{
if(data.has("effect") && data.get("effect").isNumber() && data.getInt("effect", -1) == 8){
effect = StatusEffects.boss;
}else{
effect = content.getByName(ContentType.status, data.has("effect") && data.get("effect").isString() ? data.getString("effect", "none") : "none");
effect = content.statusEffect(data.has("effect") && data.get("effect").isString() ? data.getString("effect", "none") : "none");
}
}

View File

@@ -82,12 +82,11 @@ public class Universe{
}
}
if(state.hasSector() && state.getSector().planet.updateLighting){
boolean disable = state.getSector().preset != null && state.getSector().preset.noLighting;
if(state.hasSector() && state.getSector().planet.updateLighting && !(state.getSector().preset != null && state.getSector().preset.noLighting)){
var planet = state.getSector().planet;
//update sector light
float light = state.getSector().getLight();
float alpha = disable ? 1f : Mathf.clamp(Mathf.map(light, planet.lightSrcFrom, planet.lightSrcTo, planet.lightDstFrom, planet.lightDstTo));
float alpha = Mathf.clamp(Mathf.map(light, planet.lightSrcFrom, planet.lightSrcTo, planet.lightDstFrom, planet.lightDstTo));
//assign and map so darkness is not 100% dark
state.rules.ambientLight.a = 1f - alpha;

View File

@@ -85,6 +85,10 @@ public class BlockRenderer{
updateFloors.add(new UpdateRenderState(tile, tile.floor()));
}
if(tile.overlay().updateRender(tile)){
updateFloors.add(new UpdateRenderState(tile, tile.overlay()));
}
if(tile.build != null && (tile.team() == player.team() || !state.rules.fog || (tile.build.visibleFlags & (1L << player.team().id)) != 0)){
tile.build.wasVisible = true;
}

View File

@@ -21,7 +21,8 @@ import mindustry.world.*;
import static mindustry.Vars.*;
public class MinimapRenderer{
private static final float baseSize = 16f;
private static final float baseSize = 16f, updateInterval = 2f;
private final Seq<Unit> units = new Seq<>();
private Pixmap pixmap;
private Texture texture;
@@ -31,6 +32,8 @@ public class MinimapRenderer{
private float lastX, lastY, lastW, lastH, lastScl;
private boolean worldSpace;
private IntSet updates = new IntSet();
private float updateCounter = 0f;
public MinimapRenderer(){
Events.on(WorldLoadEvent.class, event -> {
@@ -65,6 +68,26 @@ public class MinimapRenderer{
});
Events.on(BuildTeamChangeEvent.class, event -> update(event.build.tile));
Events.run(Trigger.update, () -> {
//updates are batched to occur every 2 frames
if((updateCounter += Time.delta) >= updateInterval){
updateCounter %= updateInterval;
updates.each(pos -> {
Tile tile = world.tile(pos);
if(tile == null) return;
int color = colorFor(tile);
pixmap.set(tile.x, pixmap.height - 1 - tile.y, color);
//yes, this calls glTexSubImage2D every time, with a 1x1 region
Pixmaps.drawPixel(texture, tile.x, pixmap.height - 1 - tile.y, color);
});
updates.clear();
}
});
}
public Pixmap getPixmap(){
@@ -89,6 +112,7 @@ public class MinimapRenderer{
}
public void reset(){
updates.clear();
if(pixmap != null){
pixmap.dispose();
texture.dispose();
@@ -99,15 +123,15 @@ public class MinimapRenderer{
region = new TextureRegion(texture);
}
public void drawEntities(float x, float y, float w, float h, float scaling, boolean withLabels){
public void drawEntities(float x, float y, float w, float h, float scaling, boolean fullView){
lastX = x;
lastY = y;
lastW = w;
lastH = h;
lastScl = scaling;
worldSpace = withLabels;
worldSpace = fullView;
if(!withLabels){
if(!fullView){
updateUnitArray();
}else{
units.clear();
@@ -125,8 +149,8 @@ public class MinimapRenderer{
for(Unit unit : units){
if(unit.inFogTo(player.team()) || !unit.type.drawMinimap) continue;
float rx = !withLabels ? (unit.x - rect.x) / rect.width * w : unit.x / (world.width() * tilesize) * w;
float ry = !withLabels ? (unit.y - rect.y) / rect.width * h : unit.y / (world.height() * tilesize) * h;
float rx = !fullView ? (unit.x - rect.x) / rect.width * w : unit.x / (world.width() * tilesize) * w;
float ry = !fullView ? (unit.y - rect.y) / rect.width * h : unit.y / (world.height() * tilesize) * h;
Draw.mixcol(unit.team.color, 1f);
float scale = Scl.scl(1f) / 2f * scaling * 32f;
@@ -135,7 +159,7 @@ public class MinimapRenderer{
Draw.reset();
}
if(withLabels && net.active()){
if(fullView && net.active()){
for(Player player : Groups.player){
if(!player.dead()){
float rx = player.x / (world.width() * tilesize) * w;
@@ -149,7 +173,7 @@ public class MinimapRenderer{
Draw.reset();
if(state.rules.fog){
if(withLabels){
if(fullView){
float z = zoom;
//max zoom out fixes everything, somehow?
setZoom(99999f);
@@ -186,12 +210,53 @@ public class MinimapRenderer{
}
//TODO might be useful in the standard minimap too
if(withLabels){
if(fullView){
drawSpawns(x, y, w, h, scaling);
if(!mobile){
//draw bounds for camera - not drawn on mobile because you can't shift it by tapping anyway
Rect r = Core.camera.bounds(Tmp.r1);
Vec2 bot = transform(Tmp.v1.set(r.x, r.y));
Vec2 top = transform(Tmp.v2.set(r.x + r.width, r.y + r.height));
Lines.stroke(Scl.scl(3f));
Draw.color(Pal.accent);
Lines.rect(bot.x,bot.y, top.x - bot.x, top.y - bot.y);
Draw.reset();
}
}
LongSeq indicators = control.indicators.list();
float fin = ((Time.globalTime / 30f) % 1f);
float rad = scale(fin * 5f + tilesize - 2f);
Lines.stroke(Scl.scl((1f - fin) * 4f + 0.5f));
for(int i = 0; i < indicators.size; i++){
long ind = indicators.items[i];
int
pos = Indicator.pos(ind),
ix = Point2.x(pos),
iy = Point2.y(pos);
float time = Indicator.time(ind), offset = 0f;
//fix multiblock offset - this is suboptimal
Building build = world.build(pos);
if(build != null){
offset = build.block.offset / tilesize;
}
Vec2 v = transform(Tmp.v1.set((ix + 0.5f + offset) * tilesize, (iy + 0.5f + offset) * tilesize));
Draw.color(Color.orange, Color.scarlet, Mathf.clamp(time / 70f));
Lines.square(v.x, v.y, rad);
}
Draw.reset();
state.rules.objectives.eachRunning(obj -> {
for(var marker : obj.markers) marker.drawMinimap(this);
for(var marker : obj.markers){
marker.drawMinimap(this);
}
});
}
@@ -278,10 +343,7 @@ public class MinimapRenderer{
}
void updatePixel(Tile tile){
int color = colorFor(tile);
pixmap.set(tile.x, pixmap.height - 1 - tile.y, color);
Pixmaps.drawPixel(texture, tile.x, pixmap.height - 1 - tile.y, color);
updates.add(tile.pos());
}
public void updateUnitArray(){

View File

@@ -770,6 +770,14 @@ public class DesktopInput extends InputHandler{
}
}
@Override
public void panCamera(Vec2 position){
if(!locked()){
panning = true;
camera.position.set(position);
}
}
protected void updateMovement(Unit unit){
boolean omni = unit.type.omniMovement;

View File

@@ -464,8 +464,10 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
}
if(player != null) build.lastAccessed = player.name;
build.rotation = Mathf.mod(build.rotation + Mathf.sign(direction), 4);
int newRotation = Mathf.mod(build.rotation + Mathf.sign(direction), 4), prev = build.rotation;
build.rotation = newRotation;
build.updateProximity();
build.rotated(prev, newRotation);
build.noSleep();
Fx.rotateBlock.at(build.x, build.y, build.block.size);
}
@@ -1482,6 +1484,13 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
return World.toTile(vec.y);
}
/** Forces the camera to a position and enables panning on desktop. */
public void panCamera(Vec2 position){
if(!locked()){
camera.position.set(position);
}
}
public boolean selectedBlock(){
return isPlacing();
}

View File

@@ -394,7 +394,7 @@ public class LExecutor{
case idle -> {
ai.control = type;
}
case move, stop, approach -> {
case move, stop, approach, pathfind -> {
ai.control = type;
ai.moveX = x1;
ai.moveY = y1;
@@ -1433,12 +1433,13 @@ public class LExecutor{
}
case ambientLight -> state.rules.ambientLight.fromDouble(exec.num(value));
case solarMultiplier -> state.rules.solarMultiplier = exec.numf(value);
case unitBuildSpeed, unitCost, unitDamage, blockHealth, blockDamage, buildSpeed, rtsMinSquad, rtsMinWeight -> {
case unitHealth, unitBuildSpeed, unitCost, unitDamage, blockHealth, blockDamage, buildSpeed, rtsMinSquad, rtsMinWeight -> {
Team team = exec.team(p1);
if(team != null){
float num = exec.numf(value);
switch(rule){
case buildSpeed -> team.rules().buildSpeedMultiplier = Mathf.clamp(num, 0.001f, 50f);
case unitHealth -> team.rules().unitHealthMultiplier = Math.max(num, 0.001f);
case unitBuildSpeed -> team.rules().unitBuildSpeedMultiplier = Mathf.clamp(num, 0f, 50f);
case unitCost -> team.rules().unitCostMultiplier = Math.max(num, 0f);
case unitDamage -> team.rules().unitDamageMultiplier = Math.max(num, 0f);

View File

@@ -1370,7 +1370,7 @@ public class LStatements{
fields(table, "w", p3, s -> p3 = s);
fields(table, "h", p4, s -> p4 = s);
}
case buildSpeed, unitBuildSpeed, unitCost, unitDamage, blockHealth, blockDamage, rtsMinSquad, rtsMinWeight -> {
case buildSpeed, unitHealth, unitBuildSpeed, unitCost, unitDamage, blockHealth, blockDamage, rtsMinSquad, rtsMinWeight -> {
if(p1.equals("0")){
p1 = "@sharded";
}

View File

@@ -5,6 +5,7 @@ public enum LUnitControl{
stop,
move("x", "y"),
approach("x", "y", "radius"),
pathfind("x", "y"),
boost("enable"),
target("x", "y", "shoot"),
targetp("unit", "shoot"),

View File

@@ -18,6 +18,7 @@ public enum LogicRule{
//team specific
buildSpeed,
unitHealth,
unitBuildSpeed,
unitCost,
unitDamage,

View File

@@ -190,7 +190,7 @@ public class Maps{
maps.remove(other);
file = other.file;
}else{
file = findFile();
file = findFile(name);
}
//create map, write it, etc etc etc
@@ -239,7 +239,7 @@ public class Maps{
/** Import a map, then save it. This updates all values and stored data necessary. */
public void importMap(Fi file) throws IOException{
Fi dest = findFile();
Fi dest = findFile(file.name());
file.copyTo(dest);
Map map = loadMap(dest, true);
@@ -429,13 +429,19 @@ public class Maps{
}
/** Find a new filename to put a map to. */
private Fi findFile(){
//find a map name that isn't used.
int i = maps.size;
while(customMapDirectory.child("map_" + i + "." + mapExtension).exists()){
i++;
private Fi findFile(String unsanitizedName){
String name = Strings.sanitizeFilename(unsanitizedName);
if(name.isEmpty()) name = "blank";
Fi result = null;
int index = 0;
while(result == null || result.exists()){
result = customMapDirectory.child(name + (index == 0 ? "" : "_" + index) + "." + mapExtension);
index ++;
}
return customMapDirectory.child("map_" + i + "." + mapExtension);
return result;
}
private Map loadMap(Fi file, boolean custom) throws IOException{

View File

@@ -108,6 +108,7 @@ public abstract class FilterOption{
.setRegion(supplier.get() == Blocks.air ? Icon.none.getRegion() : supplier.get().uiIcon)).size(iconSmall), () -> {
BaseDialog dialog = new BaseDialog("@filter.option." + name);
dialog.cont.pane(t -> {
t.margin(14f);
int i = 0;
for(Block block : Vars.content.blocks()){
if(!filter.get(block)) continue;
@@ -120,7 +121,7 @@ public abstract class FilterOption{
if(++i % 10 == 0) t.row();
}
dialog.setFillParent(i > 100);
}).padRight(8f).scrollX(false);
}).scrollX(false);
dialog.addCloseButton();

View File

@@ -16,6 +16,7 @@ import mindustry.world.*;
import mindustry.world.blocks.defense.*;
import mindustry.world.blocks.payloads.*;
import mindustry.world.blocks.power.*;
import mindustry.world.blocks.power.PowerNode.*;
import mindustry.world.blocks.production.*;
import mindustry.world.meta.*;
@@ -172,6 +173,7 @@ public class BaseGenerator{
for(Tile tile : tiles){
if(tile.isCenter() && tile.block() instanceof PowerNode && tile.team() == state.rules.waveTeam){
tile.build.configure(new Point2[0]);
tile.build.placed();
}
}

View File

@@ -55,7 +55,7 @@ public abstract class PlanetGenerator extends BasicGenerator implements HexMeshe
/** @return whether to allow landing on the specified procedural sector */
public boolean allowLanding(Sector sector){
return sector.hasBase() || sector.near().contains(Sector::hasBase);
return sector.planet.allowLaunchToNumbered && (sector.hasBase() || sector.near().contains(Sector::hasBase));
}
public void addWeather(Sector sector, Rules rules){

View File

@@ -62,12 +62,6 @@ public class ErekirPlanetGenerator extends PlanetGenerator{
return 2000 * 1.07f * 6f / 5f;
}
@Override
public boolean allowLanding(Sector sector){
//TODO disallowed for now
return false;
}
float rawHeight(Vec3 position){
return Simplex.noise3d(seed, octaves, persistence, 1f/heightScl, 10f + position.x, 10f + position.y, 10f + position.z);
}

View File

@@ -476,7 +476,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
//tar
if(floor == Blocks.darksand){
if(Math.abs(0.5f - noise(x - 40, y, 2, 0.7, 80)) > 0.25f &&
Math.abs(0.5f - noise(x, y + sector.id*10, 1, 1, 60)) > 0.41f && !(roomseq.contains(r -> Mathf.within(x, y, r.x, r.y, 15)))){
Math.abs(0.5f - noise(x, y + sector.id*10, 1, 1, 60)) > 0.41f && !(roomseq.contains(r -> Mathf.within(x, y, r.x, r.y, 30)))){
floor = Blocks.tar;
}
}

View File

@@ -575,7 +575,7 @@ public class ContentParser{
if(!value.has("sector") || !value.get("sector").isNumber()) throw new RuntimeException("SectorPresets must have a sector number.");
SectorPreset out = new SectorPreset(name);
SectorPreset out = new SectorPreset(mod + "-" + name);
currentContent = out;
read(() -> {
@@ -596,7 +596,7 @@ public class ContentParser{
if(value.isString()) return locate(ContentType.planet, name);
Planet parent = locate(ContentType.planet, value.getString("parent"));
Planet planet = new Planet(name, parent, value.getFloat("radius", 1f), value.getInt("sectorSize", 0));
Planet planet = new Planet(mod + "-" + name, parent, value.getFloat("radius", 1f), value.getInt("sectorSize", 0));
if(value.has("mesh")){
var mesh = value.get("mesh");
@@ -781,13 +781,14 @@ public class ContentParser{
json = json.replace("#", "\\#");
}
currentMod = mod;
JsonValue value = parser.fromJson(null, Jval.read(json).toString(Jformat.plain));
if(!parsers.containsKey(type)){
throw new SerializationException("No parsers for content type '" + type + "'");
}
currentMod = mod;
boolean located = locate(type, name) != null;
Content c = parsers.get(type).parse(mod.name, name, value);
c.minfo.sourceFile = file;

View File

@@ -1,6 +1,8 @@
package mindustry.type;
import arc.func.*;
import arc.struct.*;
import arc.struct.ObjectIntMap.*;
import arc.util.io.*;
import mindustry.*;
import mindustry.ctype.*;
@@ -26,6 +28,7 @@ public class PayloadSeq{
}
public void add(UnlockableContent block, int amount){
if(block == null) return;
payloads.increment(block, amount);
total += amount;
}
@@ -42,6 +45,19 @@ public class PayloadSeq{
stacks.each(b -> remove(b.item, b.amount));
}
/** @return this object */
public PayloadSeq removeAll(Boolf<UnlockableContent> pred){
Entries<UnlockableContent> iter = payloads.iterator();
while(iter.hasNext()){
Entry<UnlockableContent> e = iter.next();
if(pred.get(e.key)){
iter.remove();
total -= e.value;
}
}
return this;
}
public void clear(){
payloads.clear();
total = 0;
@@ -90,7 +106,7 @@ public class PayloadSeq{
}else{
//new format
for(int i = 0; i < -amount; i++){
add((UnlockableContent)Vars.content.getBy(ContentType.all[read.ub()]).get(read.s()), read.i());
add(Vars.content.getByID(ContentType.all[read.ub()], read.s()), read.i());
}
}

View File

@@ -13,6 +13,7 @@ import mindustry.content.*;
import mindustry.content.TechTree.*;
import mindustry.ctype.*;
import mindustry.game.*;
import mindustry.game.EventType.ContentInitEvent;
import mindustry.graphics.*;
import mindustry.graphics.g3d.*;
import mindustry.graphics.g3d.PlanetGrid.*;
@@ -114,6 +115,8 @@ public class Planet extends UnlockableContent{
public boolean prebuildBase = true;
/** If true, waves are created on sector loss. TODO remove. */
public boolean allowWaves = false;
/** If false, players are unable to land on this planet's numbered sectors. */
public boolean allowLaunchToNumbered = true;
/** Icon as displayed in the planet selection dialog. This is a string, as drawables are null at load time. */
public String icon = "planet";
/** Default core block for launching. */
@@ -130,8 +133,10 @@ public class Planet extends UnlockableContent{
public @Nullable TechNode techTree;
/** TODO remove? Planets that can be launched to from this one. Made mutual in init(). */
public Seq<Planet> launchCandidates = new Seq<>();
/** Items not available on this planet. */
/** Items not available on this planet. Left out for backwards compatibility. */
public Seq<Item> hiddenItems = new Seq<>();
/** The only items available on this planet, if defined. */
public Seq<Item> itemWhitelist = new Seq<>();
/** Content (usually planet-specific) that is unlocked upon landing here. */
public Seq<UnlockableContent> unlockedOnLand = new Seq<>();
/** Loads the mesh. Clientside only. Defaults to a boring sphere mesh. */
@@ -159,6 +164,13 @@ public class Planet extends UnlockableContent{
parent.updateTotalRadius();
}
//if an item whitelist exists, add everything else not in that whitelist to hidden items
Events.on(ContentInitEvent.class, e -> {
if(itemWhitelist.size > 0){
hiddenItems.addAll(content.items().select(i -> !itemWhitelist.contains(i)));
}
});
//calculate solar system
for(solarSystem = this; solarSystem.parent != null; solarSystem = solarSystem.parent);
}

View File

@@ -711,10 +711,14 @@ public class UnitType extends UnlockableContent{
//assume slight range margin
float margin = 4f;
boolean skipWeapons = !weapons.contains(w -> !w.useAttackRange);
//set up default range
if(range < 0){
range = Float.MAX_VALUE;
for(Weapon weapon : weapons){
if(!weapon.useAttackRange && skipWeapons) continue;
range = Math.min(range, weapon.range() - margin);
maxRange = Math.max(maxRange, weapon.range() - margin);
}
@@ -724,6 +728,8 @@ public class UnitType extends UnlockableContent{
maxRange = Math.max(0f, range);
for(Weapon weapon : weapons){
if(!weapon.useAttackRange && skipWeapons) continue;
maxRange = Math.max(maxRange, weapon.range() - margin);
}
}

View File

@@ -63,6 +63,8 @@ public class Weapon implements Cloneable{
public boolean autoTarget = false;
/** whether to perform target trajectory prediction */
public boolean predictTarget = true;
/** if true, this weapon is used for attack range calculations */
public boolean useAttackRange = true;
/** ticks to wait in-between targets */
public float targetInterval = 40f, targetSwitchInterval = 70f;
/** rotation speed of weapon when rotation is enabled, in degrees/t*/
@@ -396,7 +398,7 @@ public class Weapon implements Cloneable{
mount.warmup >= minWarmup && //must be warmed up
unit.vel.len() >= minShootVelocity && //check velocity requirements
(mount.reload <= 0.0001f || (alwaysContinuous && mount.bullet == null)) && //reload has to be 0, or it has to be an always-continuous weapon
Angles.within(rotate ? mount.rotation : unit.rotation + baseRotation, mount.targetRotation, shootCone) //has to be within the cone
(alwaysShooting || Angles.within(rotate ? mount.rotation : unit.rotation + baseRotation, mount.targetRotation, shootCone)) //has to be within the cone
){
shoot(unit, mount, bulletX, bulletY, shootAngle);

View File

@@ -24,6 +24,7 @@ public class BuildWeapon extends Weapon{
predictTarget = false;
display = false;
bullet = new BulletType();
useAttackRange = false;
}
@Override

View File

@@ -32,6 +32,7 @@ public class PointDefenseWeapon extends Weapon{
controllable = false;
rotate = true;
useAmmo = false;
useAttackRange = false;
}
@Override

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