Compare commits

..

195 Commits
v120 ... v121

Author SHA1 Message Date
Anuken
18b19e964a Merge pull request #3773 from Diegator04/patch-2
Complete bundle_it
2020-12-06 09:32:24 -05:00
Anuken
bf1ace4791 Merge pull request #3747 from VitLogArx/patch-1
Update bundle_be.properties
2020-12-06 09:31:52 -05:00
Anuken
dcd56a2d87 Merge pull request #3751 from Angel-24/patch-3
Update bundle_es.properties
2020-12-06 09:31:41 -05:00
Anuken
67c1db0fcc Merge pull request #3765 from YellOw139/patch-2
[Bundle][RO][Ready-for-Stable] Translation Update
2020-12-06 09:31:24 -05:00
Anuken
6027fff543 Merge pull request #3811 from Prosta4okua/patch-2
[Bundle][Uk_ua]Update translation
2020-12-06 09:31:04 -05:00
Anuken
0c3c9fce2a Merge pull request #3815 from sharlotte-mobile/patch-2
Update bundle_ko.properties
2020-12-06 09:30:50 -05:00
Anuken
78c2f82adf Merge pull request #3817 from Quick-korkc/patch-16
more id translate
2020-12-06 09:28:50 -05:00
Quick-Korc
2d3b33bd9c more id translate 2020-12-06 14:33:57 +07:00
Sharlotte
304bfb5a40 Update bundle_ko.properties
translated new hint value.
removed over-translated value.
checked some values and fix.
and do unification of some terms, reinforce poor translation etc
2020-12-06 15:18:57 +09:00
Anuken
29fe5dab06 Allow client research 2020-12-05 21:24:27 -05:00
Anuken
f9024e5500 Consider sectors with bases unlocked 2020-12-05 21:14:10 -05:00
Anuken
25b77d1430 Merge remote-tracking branch 'origin/master' 2020-12-05 20:49:03 -05:00
Anuken
f9cfc8a2b8 Fixed #3812 / Fixed #3813 2020-12-05 20:48:56 -05:00
Anuken
8e74870857 Merge pull request #3804 from King-BR/patch-1
Brazillian servers V6
2020-12-05 19:20:29 -05:00
Prosta4okua
b32e4005dd Update description.txt 2020-12-06 02:17:57 +02:00
Prosta4okua
7094f3c848 Update description.txt 2020-12-06 02:16:47 +02:00
Prosta4okua
c8adfbce96 Update description.txt 2020-12-06 02:12:23 +02:00
Prosta4okua
ff94dd4d75 Виправлено досягнення у звʼязку з виходом 6.0 2020-12-06 01:34:00 +02:00
Anuken
d61bb66418 Fixed capture wave being set to 0 in some situations 2020-12-05 18:03:21 -05:00
Anuken
b0f62f25e6 No suggested mods 2020-12-05 17:53:49 -05:00
Anuken
bdbc9b865b Fixed distort artifacts 2020-12-05 17:50:29 -05:00
Prosta4okua
21c97571e0 Update bundle_uk_UA.properties 2020-12-06 00:45:30 +02:00
Prosta4okua
8e92be9037 Update bundle_uk_UA.properties 2020-12-06 00:42:18 +02:00
Anuken
f6428b8857 Fixed #3808 2020-12-05 16:40:54 -05:00
Anuken
cb3b43cc48 Disabled cursor scaling 2020-12-05 14:23:29 -05:00
Anuken
587c63fc92 Merge remote-tracking branch 'origin/master' 2020-12-05 14:16:06 -05:00
Anuken
97fa8057ba Fixed #3805 2020-12-05 14:16:02 -05:00
Fernando
d792956056 Brazillian servers V6
get in, we are going to Brazil
2020-12-05 15:46:55 -03:00
Anuken
6a2bb7b01f Merge pull request #3794 from sharlotte-mobile/patch-1
ko hotfix
2020-12-05 11:05:55 -05:00
Anuken
edbced6642 Fixed #3798 2020-12-05 10:58:30 -05:00
Anuken
8c0477f6bd Fixed #3795 2020-12-05 10:30:46 -05:00
Angel_24
4e00c4b015 Update bundle_es.properties 2020-12-05 14:06:20 +01:00
Sharlotte
42f0364319 ko hotfix
translate all missing values
removed over-translated values
and do Uniform some terms, correction of typos.
2020-12-05 20:10:03 +09:00
Anuken
6570d23512 Fixed #3786 2020-12-04 19:24:09 -05:00
Anuken
7ec3ab5a17 Fixed #3784 2020-12-04 18:55:37 -05:00
Anuken
6af015cc05 Round maxProduction up 2020-12-04 15:22:59 -05:00
Anuken
7938e02e78 Fixed maxProduction stat being perSecond 2020-12-04 15:21:43 -05:00
Anuken
bac4bb8c8f Heighten export cap when production is negative 2020-12-04 15:20:15 -05:00
YellOw139
5ac1c32652 coreIncinerate 2020-12-04 22:19:56 +02:00
Anuken
dec5a2aaaf Minor campaign tweaks 2020-12-04 15:07:35 -05:00
Anuken
7b1c60c24f Testing tests 2020-12-04 12:23:02 -05:00
Anuken
8b8d990852 Testing tests 2020-12-04 12:16:47 -05:00
Anuken
6583cc0b5d Testing tests 2020-12-04 11:38:43 -05:00
Anuken
5c3ae425ae Display locked sectors / Core incinerate hint 2020-12-04 11:31:27 -05:00
Anuken
744b1b2037 Looking into test failure 2020-12-04 10:56:47 -05:00
Anuken
a313ca8a26 Checking if tests fail 2020-12-04 10:44:39 -05:00
Anuken
87204df3ee Merge remote-tracking branch 'origin/master' 2020-12-04 10:25:51 -05:00
Anuken
bc70c08820 Fixed #3756 2020-12-04 10:25:41 -05:00
Anuken
2c2828617f Create ISSUES.md 2020-12-04 10:03:54 -05:00
Diegator04
70c6cd2e87 Complete bundle_it
I compared the **@GioIacca9's bundle** with mine so I was able to notice **mistakes** and **missing translations** which I corrected. We worked together and we discussed about a suitable words and phrases in italian. Furthermore I added the **first version** of _unit's names_, we'll improve them in the future.
2020-12-04 13:55:22 +01:00
Angel_24
a8a629c5ef Update bundle_es.properties 2020-12-04 11:24:25 +01:00
Angel_24
8e6dd98a5a Update bundle_es.properties 2020-12-04 10:44:15 +01:00
YellOw139
39b8627a60 [Bundle][RO] Translation Update
This PR was tested in-game and is ready to merge at any time (unless marked as draft).

Changelog:

- New strings/changes up to commit 48c8357ff7
- Abilities should now be clear enough. Less of a mess.
- Typo fixes & various other improvements
2020-12-04 09:32:35 +02:00
Anuken
a451ad895c Slight sei buff 2020-12-03 20:29:58 -05:00
Anuken
d13b69c36f Sort community servers by ping 2020-12-03 16:49:30 -05:00
Angel_24
2af988d71f Update bundle_es.properties
Just one more little tweak
2020-12-03 19:51:51 +01:00
Angel_24
63318f9b67 Update bundle_es.properties
Minnor changes
2020-12-03 19:47:00 +01:00
Angel_24
7f032edd6f Update bundle_es.properties
added servers disclaimer
2020-12-03 19:37:12 +01:00
Angel_24
aff5b8bed6 Update bundle_es.properties
New hints translated
2020-12-03 19:28:01 +01:00
VitLogArx
22a50eec60 Update bundle_be.properties
Partially updated belarusian translation. Fixed some mistakes.
2020-12-03 21:00:41 +03:00
Anuken
d64f603e08 Merge branch 'master' of https://github.com/Anuken/Mindustry 2020-12-03 12:08:35 -05:00
Anuken
3d2c094056 arc 2020-12-03 12:08:31 -05:00
Anuken
64e99f613e Update bug_report.md 2020-12-03 11:08:00 -05:00
Anuken
51b4078288 Clean tests before running 2020-12-03 11:05:02 -05:00
Anuken
db8d099fcc arc 2020-12-03 10:29:19 -05:00
Anuken
002be46915 Updated miniaudio version 2020-12-03 10:28:57 -05:00
Anuken
9fa2691b02 Fixed campaign idle boss spoofing 2020-12-03 10:05:52 -05:00
Anuken
6686584003 Merge remote-tracking branch 'origin/master' 2020-12-02 18:01:49 -05:00
Anuken
78c8c57649 Made water unlocked again 2020-12-02 18:01:46 -05:00
Anuken
ca65fd31e5 Merge pull request #3728 from Vortetty/patch-2
Update surrealment to v6
2020-12-02 17:23:09 -05:00
Vortetty
e2109f2f56 Update servers_be.json 2020-12-02 14:20:55 -08:00
Vortetty
6b63cd7a46 Update servers_v6.json 2020-12-02 14:19:54 -08:00
Anuken
e19c857d74 Possible crash fix 2020-12-02 16:08:53 -05:00
Anuken
b18f418c61 Reduced easy sector difficulty 2020-12-02 14:48:42 -05:00
Anuken
12ee38476c Minor build fix 2020-12-02 14:35:03 -05:00
Anuken
48c8357ff7 Added community server disclaimer 2020-12-02 14:32:51 -05:00
Anuken
a0702559f3 Fixed #3725 2020-12-02 14:14:42 -05:00
Anuken
55db91e53e Cleanup 2020-12-02 13:53:49 -05:00
Anuken
a333fa3722 Added more hints 2020-12-02 13:40:49 -05:00
Anuken
5284750c6a Merge remote-tracking branch 'origin/master' 2020-12-02 13:02:35 -05:00
Anuken
9c616fd03b Possible fix for notched insets 2020-12-02 13:02:27 -05:00
Anuken
d4bee41103 Merge pull request #3722 from Quezler/patch-77
Fast forward boulder deconstruction
2020-12-02 12:58:58 -05:00
Patrick 'Quezler' Mounier
2e586c4403 Update ConstructBlock.java 2020-12-02 18:54:46 +01:00
Patrick 'Quezler' Mounier
129f21e3a9 Update Boulder.java 2020-12-02 18:01:40 +01:00
Patrick 'Quezler' Mounier
435f15a450 Update ConstructBlock.java 2020-12-02 18:00:50 +01:00
Patrick 'Quezler' Mounier
3eac8cb6ad Update Boulder.java 2020-12-02 17:59:20 +01:00
Patrick 'Quezler' Mounier
ea96bf2675 Update Block.java 2020-12-02 17:58:58 +01:00
Patrick 'Quezler' Mounier
e4c3664cc6 Update ConstructBlock.java 2020-12-02 16:36:07 +01:00
Patrick 'Quezler' Mounier
664cd6a3a0 Update ConstructBlock.java 2020-12-02 16:26:22 +01:00
Anuken
c26a9bd123 Merge pull request #3715 from Quezler/patch-75
Keep items inside reconstructor when construction booped
2020-12-02 10:05:51 -05:00
Anuken
5008573aa5 Merge pull request #3714 from Recessive/patch-7
Update servers_v6.json
2020-12-02 09:58:15 -05:00
Anuken
395f7193ea Merge remote-tracking branch 'origin/master' 2020-12-02 09:56:06 -05:00
Anuken
775e17a726 Fixed #3709 2020-12-02 09:56:02 -05:00
Anuken
900ec8db6a Merge pull request #3717 from Quezler/patch-76
Fixes massdriver typo
2020-12-02 09:54:37 -05:00
Anuken
e23a7c213c Merge pull request #3710 from joshuaptfan/master
Spellcheck English Steam achievements
2020-12-02 09:53:46 -05:00
Anuken
96513e4967 Merge pull request #3712 from MEEPofFaith/patch-1
Why is this protected in the first place?
2020-12-02 09:52:31 -05:00
Patrick 'Quezler' Mounier
b64df565a4 Update MassDriver.java 2020-12-02 14:09:19 +01:00
Patrick 'Quezler' Mounier
382e27e1e4 Populate prevBuild when deconstructting 2020-12-02 12:02:49 +01:00
Patrick 'Quezler' Mounier
0dd95e736d Add items back to reconstructor if it overwrote itself 2020-12-02 12:01:21 +01:00
Recessive
0ae6a33971 Update servers_v6.json
Add {AA} Hub and Campaign servers
2020-12-02 21:56:47 +11:00
MEEP of Faith
380c9ab113 Why is this protected in the first place? 2020-12-01 22:17:32 -08:00
joshuaptfan
1028ade80d Fix Poly unit description 2020-12-01 21:07:44 -08:00
joshuaptfan
a8e34381ef Spellcheck Steam store description 2020-12-01 20:37:00 -08:00
joshuaptfan
5f5987cef2 Spellcheck English Steam achievements 2020-12-01 20:20:37 -08:00
Anuken
430538ea7e Possible fix for "unsupported combination of formats" error 2020-12-01 18:17:57 -05:00
Anuken
ee966d1198 Removed requirements for optional inputs of blocks 2020-12-01 18:02:20 -05:00
Anuken
076363ac87 Merge pull request #3651 from Prosta4okua/patch-1
[Bundle][uk_UA]Update translation
2020-12-01 16:53:47 -05:00
Anuken
327442f6fe Merge pull request #3676 from Quezler/patch-74
Fix BlockForge progress bar & recenter payload
2020-12-01 16:53:13 -05:00
Anuken
c03400ccbc Merge pull request #3622 from genNAowl/distributors-come-on
Allow Distributors to Replace Conveyors
2020-12-01 16:46:09 -05:00
Anuken
a5ad45ff30 Fixed #3706 2020-12-01 15:57:20 -05:00
Anuken
3161e23285 Merge remote-tracking branch 'origin/master' 2020-12-01 15:36:53 -05:00
Anuken
e82ee227a5 1-bit stencil buffer, possible green line fix 2020-12-01 15:36:50 -05:00
Anuken
f8a859620d Merge pull request #3669 from Quezler/patch-73
per anuke's request
2020-12-01 14:02:03 -05:00
Anuken
30107db81e Fixed #3702 2020-12-01 13:01:38 -05:00
Anuken
05f7a15115 Merge remote-tracking branch 'origin/master' 2020-12-01 12:48:30 -05:00
Anuken
305e2642ba Minor bugfixes 2020-12-01 12:48:26 -05:00
Anuken
cb95059c3e Merge pull request #3699 from Somka000/patch-10
Update servers_v6.json
2020-12-01 11:40:00 -05:00
Somka000
20aa2384ea Update servers_v6.json
Sorry for second PR but domain is broke
2020-12-01 17:13:16 +01:00
Anuken
c5574d3ae0 Merge pull request #3683 from Recessive/patch-6
Update servers_v6.json
2020-12-01 10:26:57 -05:00
Recessive
45b43e7772 Update servers_v6.json
Added assimilation to {AA} server listing
2020-12-02 02:20:04 +11:00
Anuken
a461c184be Merge pull request #3691 from FruityPear/patch-4
Update server to v6
2020-12-01 09:48:46 -05:00
FruityPear
00e1cf7e9d Update server to v6
Also renaming domain from attack.pearkin.net
2020-12-01 09:46:18 -05:00
Anuken
86887f2ec1 Merge pull request #3689 from Somka000/patch-9
Update servers_v6.json
2020-12-01 09:44:28 -05:00
Somka000
bff0c2e6f3 Update servers_v6.json
New .pl server
2020-12-01 15:42:48 +01:00
Anuken
fcaf1e49cb Merge remote-tracking branch 'origin/master' 2020-12-01 09:39:34 -05:00
Anuken
448fef980b Community server fetch logging 2020-12-01 09:39:30 -05:00
Anuken
7832b6cafd Merge pull request #3688 from fuzzbuck/patch-5
mindustry.io from servers.json -> servers_v6.json
2020-12-01 09:31:05 -05:00
fuzzbuck
3a259d0001 Update servers_v6.json 2020-12-01 15:26:14 +01:00
Anuken
11168efffa Merge pull request #3524 from NgLamVN/master
Vietnamese translations
2020-12-01 09:24:22 -05:00
fuzzbuck
367da94e34 Update servers.json
no longer uses v5
2020-12-01 15:24:11 +01:00
Anuken
f8bce3cea0 Merge pull request #3687 from AmateurPotion/patch-13
Korean Translate Typo fix
2020-12-01 09:24:06 -05:00
EzLam
daed19e79b . 2020-12-01 21:12:35 +07:00
EzLam
0e565f00ff Merge branch 'master' of https://github.com/NgLamVN/Mindustry 2020-12-01 21:12:16 +07:00
EzLam
d4ab674b1c Whyy ?? 2020-12-01 21:11:19 +07:00
Ngọc Lam
884abb54e6 Nooooooo
NOOOOOOOOOOO
2020-12-01 20:57:59 +07:00
EzLam
026d3ef9ab Fix some typos 2020-12-01 20:53:25 +07:00
EzLam
0abf333168 Done. 2020-12-01 20:50:29 +07:00
EzLam
a124c2a2b4 rEaLdY fOr rEvIeW... 2020-12-01 20:46:54 +07:00
AmateurPotion
a43957a1fa Update bundle_ko.properties
Sorry. I think my mind ran away from home.
2020-12-01 22:44:03 +09:00
AmateurPotion
d0f3e413c6 Update bundle_ko.properties 2020-12-01 22:42:07 +09:00
AmateurPotion
469d5945b2 Typo 2020-12-01 22:40:41 +09:00
EzLam
5a8d0071df Yep. 2020-12-01 20:19:35 +07:00
EzLam
6f139641da 85% complete. 2020-12-01 17:12:58 +07:00
Ngọc Lam
c413be3ce0 Thanks for your help @JINODK
Update from lines 1286 to 1490
2020-12-01 17:02:35 +07:00
Ngọc Lam
19a804db91 Update bundle_vi.properties 2020-12-01 17:01:24 +07:00
JINODK
f6d35822fb Update from lines 1286 to 1490
"How to break your hand in 3 hours" in a nutshell 🥴
2020-12-01 16:56:29 +07:00
EzLam
8f1f015f3d Update contributors 2020-12-01 16:43:39 +07:00
EzLam
ed1b3ba608 Block.name.lol 2020-12-01 16:40:35 +07:00
Recessive
f3831eb9c5 Update servers_v6.json
Add {AA} V6 Plague to the server listing
2020-12-01 19:39:42 +11:00
Patrick 'Quezler' Mounier
1ed2b2eb2e Update core/src/mindustry/world/blocks/experimental/BlockForge.java 2020-12-01 09:28:22 +01:00
EzLam
be6b294087 Bruh. 2020-12-01 14:02:31 +07:00
EzLam
67c35e12ae We dont need to translate this. 2020-12-01 13:36:18 +07:00
Ngọc Lam
7acc5e0858 72% complete 2020-12-01 13:16:45 +07:00
Prosta4okua
0553cafbe9 Update bundle_uk_UA.properties 2020-12-01 03:04:30 +02:00
Prosta4okua
9d78459d7d Підготовка до виходу 6.0 ч.1 2020-12-01 02:31:46 +02:00
Patrick 'Quezler' Mounier
4102c380d2 Update BlockForge.java 2020-11-30 22:47:26 +01:00
Patrick 'Quezler' Mounier
bbee3ae9cd Update BuildingComp.java 2020-11-30 18:36:57 +01:00
EzLam
f67f09934e Description. 2020-11-30 18:50:16 +07:00
EzLam
149ce3bccf "Game Over": It doesnt mean you lose the game. 2020-11-30 17:20:05 +07:00
EzLam
00a25f31b8 Description ... 2020-11-30 16:48:23 +07:00
Ngọc Lam
e535f94832 Update. 2020-11-30 15:58:43 +07:00
Prosta4okua
06faa368cc Update bundle_uk_UA.properties 2020-11-29 14:06:41 +02:00
EzLam
8f58f40b1a Ready for review ? 2020-11-29 16:53:22 +07:00
EzLam
7bab4d67e1 vietnamese is harder. 2020-11-29 16:30:38 +07:00
EzLam
3a2514e937 That why English is HARD. 2020-11-29 16:18:33 +07:00
Ngọc Lam
66b540988b happy birthday to me :) 2020-11-29 11:02:00 +07:00
EzLam
c2d808b921 happy birthday to me ._. 2020-11-29 08:51:55 +07:00
EzLam
69960017d3 wwwhat ? 2020-11-28 17:28:31 +07:00
EzLam
b1a4d51210 That why english is hard. 2020-11-28 17:07:00 +07:00
Leonwang4234
4cda52caf7 size >= other.size 2020-11-27 21:15:33 -08:00
EzLam
9c54792341 bruh 2020-11-28 12:10:33 +07:00
NgLamVN
56b947fb9e ... 2020-11-28 11:30:35 +07:00
EzLam
f7170dc39a Fix some typos. 2020-11-27 17:41:49 +07:00
NgLamVN
3aabfaf14b 60% Complete. 2020-11-27 15:28:21 +07:00
EzLam
2cc0ae3d81 What "unit" mean ?? 2020-11-27 15:24:55 +07:00
Leonwang4234
ab8a381ad9 Lol how did it compile without the @Override 2020-11-26 23:33:18 -08:00
Leonwang4234
ced6369b25 Update Router.java 2020-11-26 23:28:05 -08:00
EzLam
49f4b1fd67 Merge branch 'master' of https://github.com/NgLamVN/Mindustry 2020-11-26 15:47:55 +07:00
EzLam
ba6d40cc22 to be continued ... 2020-11-26 15:47:30 +07:00
NgLamVN
dc15c9a7e4 To be continued ... 2020-11-26 15:42:27 +07:00
EzLam
27e22a84d3 to be continued ... 2020-11-26 15:40:35 +07:00
EzLam
f5023aa846 Update bundle_vi.properties 2020-11-25 19:22:28 +07:00
EzLam
d10fd8e738 fix typos. 2020-11-25 17:46:38 +07:00
NgLamVN
c2bedc0210 Update 2020-11-25 16:09:41 +07:00
EzLam
103f5a65b6 LOL I forgot to do that :v 2020-11-25 15:42:30 +07:00
EzLam
7697a21003 ... 2020-11-25 15:36:45 +07:00
EzLam
72a453654e ... 2020-11-25 14:56:15 +07:00
EzLam
25c31c5250 Update to lastest main bundle. 2020-11-25 14:30:53 +07:00
EzLam
77ba760a94 Update to lastest main bundle :) 2020-11-24 15:36:37 +07:00
EzLam
fe01282421 re-trans 2020-11-23 18:06:06 +07:00
EzLam
226ff9aa03 re trans 2020-11-23 17:33:18 +07:00
NgLamVN
5d92b4dd2e I hate to do this in my phone 2020-11-23 13:44:07 +07:00
NgLamVN
3271020e7c merge commit from main repository 2020-11-22 21:17:41 +07:00
EzLam
daf96241e1 re-trans 2020-11-22 21:12:11 +07:00
EzLam
ef7d814049 Re-Trans 2020-11-22 20:14:08 +07:00
99 changed files with 2890 additions and 920 deletions

View File

@@ -21,7 +21,7 @@ assignees: ''
If you remove the line above without reading it properly and understanding what it means, I will reap your soul. Even if you're playing on someone's server, you can still save the game to a slot. If you remove the line above without reading it properly and understanding what it means, I will reap your soul. Even if you're playing on someone's server, you can still save the game to a slot.
**Crash report**: *The contents of relevant crash report files. REQUIRED if you are reporting a crash.* **(Crash) logs**: *Either crash reports from the crash folder, or the file you get when you go into Settings -> Game Data -> Export Crash logs. REQUIRED if you are reporting a crash.*
--- ---

View File

@@ -13,7 +13,7 @@ jobs:
with: with:
java-version: 14 java-version: 14
- name: Run unit tests - name: Run unit tests
run: ./gradlew test run: ./gradlew clean cleanTest test
- name: Trigger BE build - name: Trigger BE build
if: ${{ github.repository == 'Anuken/Mindustry' }} if: ${{ github.repository == 'Anuken/Mindustry' }}
run: | run: |

52
ISSUES.md Normal file
View File

@@ -0,0 +1,52 @@
# Why was my issue closed?
This document goes over some common causes for issue closures.
## You did not fill in the template
I can't debug the problem unless you provide the information the template asks for.
If you cannot put in the effort to fill out a template, then don't expect me to put in the effort to fix it.
## Your issue was already reported
If the problem in your issue has already been encountered before, it will be closed - especially if your report doesn't provide any new information.
Make sure you search the *closed* issues before making an issue.
I do not link the specific issue(s) that report the same problem, because searching takes time - if you're interested in finding them, you should be able to do so without my help.
To be clear: I do **not** expect users to look at *all* previous issues, or do a comprehensive stack trace analysis to see if their crash was already reported.
## Your issue was already fixed
The problem you reported has been addressed. Note that this does **not** mean that the latest stable version of Mindustry has the fix!
It simply means that I have committed (or am about to commit) a patch that fixes it *on the current development branch*.
## Your issue is missing a crash report or log
If the game crashes without a specific cause, and you don't send me a log, I can't fix it. There is no way for me to know what went wrong.
During a normal crash, the game should tell you where the log is saved. If not, you should still be able to look in the game's crash folder on most operating systems, or export the logs in *Settings -> Game Data -> Export Crash Logs*.
## Your issue is missing saves or screenshots
Even if you think your problem happens everywhere and saves/screenshots are redundant, this is frequently not the case.
If I cannot reproduce the problem on my own saves and you have not linked any of your own, then the problem is likely to be save-specific. If you do not send me any, the problem cannot be investigated further.
## Your issue is related to an external program
If Mindustry causes something else to crash or misbehave, I am very unlikely to fix it. Unless the problem is serious, widespread and/or clearly a bug *in Mindustry*, it is not my responsibility.
Similarly, if you use another (invasive) program to change how Mindustry works, and something goes wrong, that is not my problem. Don't do it.
## Your issue is caused by mods
Crashes and bugs related to installed mods should be reported in the relevant mod repository, not here.
*Note that problems with the Mindustry modding API are a separate problem, and do not apply.*
## I cannot reproduce your issue
If I follow your instructions and am repeatedly unable to reproduce the problem you've reported, then it is very unlikely to be fixed.
Either the problem is device-specific, or there is not enough information given for me to be able to reproduce it.
I may attempt to change some code if I think it will make the issue less likely to occur, but without knowing for sure, the issue cannot be considered truly "fixed".
As I cannot make any further progress on the problem, there is no reason to keep it open. If it is a common bug/crash, other people will come along with information that may shed some light on the issue.

View File

@@ -253,18 +253,22 @@ project(":ios"){
task incrementConfig{ task incrementConfig{
def vfile = file('robovm.properties') def vfile = file('robovm.properties')
def bversion = getBuildVersion()
def props = new Properties() def props = new Properties()
if(vfile.exists()){ if(vfile.exists()){
props.load(new FileInputStream(vfile)) props.load(new FileInputStream(vfile))
}else{ }else{
props['app.id'] = 'io.anuke.mindustry' props['app.id'] = 'io.anuke.mindustry'
props['app.version'] = '5.0' props['app.version'] = '6.0'
props['app.mainclass'] = 'mindustry.IOSLauncher' props['app.mainclass'] = 'mindustry.IOSLauncher'
props['app.executable'] = 'IOSLauncher' props['app.executable'] = 'IOSLauncher'
props['app.name'] = 'Mindustry' props['app.name'] = 'Mindustry'
} }
props['app.build'] = (!props.containsKey("app.build") ? 40 : props['app.build'].toInteger() + 1) + "" props['app.build'] = (!props.containsKey("app.build") ? 40 : props['app.build'].toInteger() + 1) + ""
if(bversion != "custom build"){
props['app.version'] = versionNumber + "." + bversion + (bversion.contains(".") ? "" : ".0")
}
props.store(vfile.newWriter(), null) props.store(vfile.newWriter(), null)
} }

View File

@@ -69,7 +69,7 @@ stat.delivered = Resources Launched:
stat.playtime = Time Played:[accent] {0} stat.playtime = Time Played:[accent] {0}
stat.rank = Final Rank: [accent]{0} stat.rank = Final Rank: [accent]{0}
globalitems = [accent]Global Items globalitems = [accent]Total Items
map.delete = Are you sure you want to delete the map "[accent]{0}[]"? map.delete = Are you sure you want to delete the map "[accent]{0}[]"?
level.highscore = High Score: [accent]{0} level.highscore = High Score: [accent]{0}
level.select = Level Select level.select = Level Select
@@ -196,6 +196,7 @@ servers.local = Local Servers
servers.remote = Remote Servers servers.remote = Remote Servers
servers.global = Community Servers servers.global = Community Servers
servers.disclaimer = Community servers are [accent]not[] owned or controlled by the developer.\n\nServers may contain user-generated content that is not appropriate for all ages.
servers.showhidden = Show Hidden Servers servers.showhidden = Show Hidden Servers
server.shown = Shown server.shown = Shown
server.hidden = Hidden server.hidden = Hidden
@@ -1279,6 +1280,10 @@ hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a pay
hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires.
hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[].
hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down. hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down.
hint.coreUpgrade = Cores can be upgraded by [accent]placing higher-tier cores over them[].\n\nPlace a  [accent]Foundation[] core over the  [accent]Shard[] core. Make sure it is free from nearby obstructions.
hint.presetLaunch = Gray [accent]landing zone sectors[], such as [accent]Frozen Forest[], can be launched to from anywhere. They do not require capture of nearby territory.\n\n[accent]Numbered sectors[], such as this one, are [accent]optional[].
hint.coreIncinerate = After the core is filled to capacity with an item, any extra items of that type it receives will be [accent]incinerated[].
hint.coopCampaign = When playing the [accent]co-op campaign[], items that are produced in the current map will also be sent [accent]to your local sectors[].\n\nAny new research done by the host also carries over.
item.copper.description = Used in all types of construction and ammunition. item.copper.description = Used in all types of construction and ammunition.
item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced. item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced.
@@ -1473,7 +1478,7 @@ unit.zenith.description = Fires salvos of missiles at all nearby enemies.
unit.antumbra.description = Fires a barrage of bullets at all nearby enemies. unit.antumbra.description = Fires a barrage of bullets at all nearby enemies.
unit.eclipse.description = Fires two piercing lasers and a barrage of flak at all nearby enemies. unit.eclipse.description = Fires two piercing lasers and a barrage of flak at all nearby enemies.
unit.mono.description = Automatically mines copper and lead, depositing it into the core. unit.mono.description = Automatically mines copper and lead, depositing it into the core.
unit.poly.description = Automatically rebuilds damaged structures and assists other units in construction. unit.poly.description = Automatically rebuilds destroyed structures and assists other units in construction.
unit.mega.description = Automatically repairs damaged structures. Capable of carrying blocks and small ground units. unit.mega.description = Automatically repairs damaged structures. Capable of carrying blocks and small ground units.
unit.quad.description = Drops large bombs on ground targets, repairing allied structures and damaging enemies. Capable of carrying medium-sized ground units. unit.quad.description = Drops large bombs on ground targets, repairing allied structures and damaging enemies. Capable of carrying medium-sized ground units.
unit.oct.description = Protects nearby allies with its regenerating shield. Capable of carrying most ground units. unit.oct.description = Protects nearby allies with its regenerating shield. Capable of carrying most ground units.

View File

@@ -1,4 +1,4 @@
credits.text = Стваральнiк [royal]Anuken[] — [sky]anukendev@gmail.com[]\n\nЁсць недапрацоўкі ў перакладзе або хочаце знайсці саюзнікаў для сумеснай гульні?\nПішыце ў аф. [accent]discord-сервер Mindustry[] у канал [accent]#translations[].\n\nРэдактар і перакладчык на беларускую мову:\n[cyan]K[gray]evi[cyan]TV[gray]#9923 credits.text = Стваральнiк [royal]Anuken[] — [sky]anukendev@gmail.com[]\n\nЁсць недапрацоўкі ў перакладзе або хочаце знайсці саюзнікаў для сумеснай гульні?\nПішыце ў аф. [accent]discord-сервер Mindustry[] у канал [accent]#translations[].\n\nРэдактар і перакладчык на беларускую мову:\n[cyan]K[gray]evi[cyan]TV[gray]#9923\nVit_log выправіў памылкі і дапоўніў пераклад.
credits = Аўтары credits = Аўтары
contributors = Перакладчык contributors = Перакладчык
discord = Далучайцеся да нашага Discord! discord = Далучайцеся да нашага Discord!
@@ -20,8 +20,8 @@ gameover = Гульня скончана
gameover.pvp = [accent]{0}[] каманда перамагла! gameover.pvp = [accent]{0}[] каманда перамагла!
highscore = [accent]Новы рэкорд! highscore = [accent]Новы рэкорд!
copied = Скапіявана. copied = Скапіявана.
indev.popup = [accent]v6[] is currently in [accent]alpha[].\n[lightgray]This means:[]\n[scarlet]- The campaign is completely unfinished[]\n- Content is missing\n - Most [scarlet]Unit AI[] does not work properly\n- Many units are unfinished\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[]. indev.popup = [accent]в6[] яшчэ в [accent]альфе[].\n[lightgray]Гэта значыць:[]\n[scarlet]- Кампанія не завершана[]\n- Часткі гульні адсутнічаюць\n - Большая частка [scarlet]ШІ юнітав[] можа працаваць не правільна\n- Мноства юнітав не дароблена\n- Ўсё што тут ёсць можа быць ізменена.\n\nАб багах і крашах пісаць на [accent]Github[].
indev.notready = This part of the game isn't ready yet indev.notready = Гэта частка гульні яшчэ не зроблена.
load.sound = Звукі load.sound = Звукі
load.map = Карты load.map = Карты
@@ -41,8 +41,8 @@ be.check = Праверыць абнаўленні
schematic = Схема schematic = Схема
schematic.add = Захаваць схему... schematic.add = Захаваць схему...
schematics = Схемы schematics = Схемы
schematic.replace = A schematic by that name already exists. Replace it? schematic.replace = Схема с данным імем ўжо існуе. Замяніць яе?
schematic.exists = A schematic by that name already exists. schematic.exists = Схема с данным імем ўжо існуе.
schematic.import = Імпартаваць схему... schematic.import = Імпартаваць схему...
schematic.exportfile = Экспартаваць файл schematic.exportfile = Экспартаваць файл
schematic.importfile = Імпартаваць файл schematic.importfile = Імпартаваць файл
@@ -55,7 +55,7 @@ schematic.saved = Схема захавана.
schematic.delete.confirm = Гэтая схема будзе выдалена. schematic.delete.confirm = Гэтая схема будзе выдалена.
schematic.rename = Перайменаваць схему schematic.rename = Перайменаваць схему
schematic.info = {0}x{1}, {2} блокаў schematic.info = {0}x{1}, {2} блокаў
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.disabled = [scarlet]Схемы забаронены[]\nВам нельга выкарыстоўваць схемы на гэтай [accent]карце[] альбо [accent]серверы.
stat.wave = Хваляў адлюстравана:[accent] {0} stat.wave = Хваляў адлюстравана:[accent] {0}
stat.enemiesDestroyed = Ворагаў знішчана:[accent] {0} stat.enemiesDestroyed = Ворагаў знішчана:[accent] {0}
@@ -103,19 +103,19 @@ feature.unsupported = Ваша прылада не падтрымлівае гэ
mods.alphainfo = Майце на ўвазе, што мадыфікацыі знаходзяцца ў альфа-версіі і [scarlet]могуць утрымліваць шмат памылак[]. Дакладвайце аб любых праблемах, якія Вы знойдзеце ў Mindustry Github або Discord. mods.alphainfo = Майце на ўвазе, што мадыфікацыі знаходзяцца ў альфа-версіі і [scarlet]могуць утрымліваць шмат памылак[]. Дакладвайце аб любых праблемах, якія Вы знойдзеце ў Mindustry Github або Discord.
mods = Мадыфікацыі mods = Мадыфікацыі
mods.none = [lightgray]Мадыфікацыі не знойдзены! mods.none = [lightgray]Мадыфікацыі не знойдзены!
mods.guide = Кіраўніцтва па модам mods.guide = Кіраўніцтва па мадам
mods.report = Паведаміць пра памылку mods.report = Паведаміць пра памылку
mods.openfolder = Адкрыць тэчку з мадыфікацыямі mods.openfolder = Адкрыць тэчку з мадыфікацыямі
mods.reload = Reload mods.reload = Reload
mods.reloadexit = The game will now exit, to reload mods. mods.reloadexit = Гульня зараз закроецца, каб ўсталяваць мады.
mod.display = [gray]Мадыфікацыя:[orange] {0} mod.display = [gray]Мадыфікацыя:[orange] {0}
mod.enabled = [lightgray]Уключана mod.enabled = [lightgray]Уключана
mod.disabled = [scarlet]Выключана mod.disabled = [scarlet]Выключана
mod.disable = Выкл. mod.disable = Выкл.
mod.content = Content: mod.content = Змест:
mod.delete.error = Немагчыма выдаліць мадыфікацыю. Магчыма, файл выкарыстоўваецца. mod.delete.error = Немагчыма выдаліць мадыфікацыю. Магчыма, файл выкарыстоўваецца.
mod.requiresversion = [scarlet]Мінімальная патрабаваная версія гульні: [accent]{0} mod.requiresversion = [scarlet]Мінімальная патрабаваная версія гульні: [accent]{0}
mod.outdated = [scarlet]Not compatible with V6 (no minGameVersion: 105) mod.outdated = [scarlet]Не сумяшчальна з в6 (няма minGameVersion: 105)
mod.missingdependencies = [scarlet]Не знойдзены бацькоўскія мадыфікацыі: {0} mod.missingdependencies = [scarlet]Не знойдзены бацькоўскія мадыфікацыі: {0}
mod.erroredcontent = [scarlet]Памылкі змесціва mod.erroredcontent = [scarlet]Памылкі змесціва
mod.errors = Памылкі былі выкліканыя загружаным змесцівам. mod.errors = Памылкі былі выкліканыя загружаным змесцівам.
@@ -127,20 +127,20 @@ mod.reloadrequired = [scarlet]Неабходны перазапуск
mod.import = Імпартаваць мадыфікацыю mod.import = Імпартаваць мадыфікацыю
mod.import.file = Import File mod.import.file = Import File
mod.import.github = Імпартаваць мод з GitHub mod.import.github = Імпартаваць мод з GitHub
mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.jarwarn = [scarlet]JAR-мады не бяспечны па прынцыпу.[]\nПраверце, што імпартуеце гэты мод с надзейнай крыніцы!
mod.item.remove = Гэты прадмет з’яўляецца часткай мадыфікацыі [accent]«{0}»[]. Каб выдаліць яго, выдаліце саму мадыфікацыю. mod.item.remove = Гэты прадмет з’яўляецца часткай мадыфікацыі [accent]«{0}»[]. Каб выдаліць яго, выдаліце саму мадыфікацыю.
mod.remove.confirm = Гэтая мадыфікацыя будзе выдалена. mod.remove.confirm = Гэтая мадыфікацыя будзе выдалена.
mod.author = [lightgray]Аўтар:[] {0} mod.author = [lightgray]Аўтар:[] {0}
mod.missing = Гэта захаванне ўтрымлівае мадыфікацыю, якое вы нядаўна абнавілі ці яна больш не ўсталяваная. Можа здарыцца пашкоджанне захавання. Вы ўпэўненыя, што хочаце загрузіць яго?\n[lightgray]Мадыфікацыі:\n{0} mod.missing = Гэта захаванне ўтрымлівае мадыфікацыю, якое вы нядаўна абнавілі ці яна больш не ўсталяваная. Можа здарыцца пашкоджанне захавання. Вы ўпэўненыя, што хочаце загрузіць яго?\n[lightgray]Мадыфікацыі:\n{0}
mod.preview.missing = Перад публікацыяй гэтай мадыфікацыі ў майстэрні, вы павінны дадаць малюнак прадпрагляду.\nРазмесціце малюнак з імем[accent] preview.png[] у тэчцы мадыфікацыі і паспрабуйце зноў. mod.preview.missing = Перад публікацыяй гэтай мадыфікацыі ў майстэрні, вы павінны дадаць малюнак прадпрагляду.\nРазмесціце малюнак з імем[accent] preview.png[] у тэчцы мадыфікацыі і паспрабуйце зноў.
mod.folder.missing = Мадыфікацыі могуць быць апублікаваныя ў майстэрні толькі ў выглядзе тэчкі.\nКаб канвертаваць любы мод у тэчку, проста выміце яго з архіва і выдаліце стары архіў .zip, затым перазапусціце гульню ці перазагрузіце мадыфікацыі. mod.folder.missing = Мадыфікацыі могуць быць апублікаваныя ў майстэрні толькі ў выглядзе тэчкі.\nКаб канвертаваць любы мод у тэчку, проста выміце яго з архіва і выдаліце стары архіў .zip, затым перазапусціце гульню ці перазагрузіце мадыфікацыі.
mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game. mod.scripts.disable = Ваша прылада не падтрымлівае мадыфікацыі з скріптамі. Выключайце такіе мады, как гуляць.
about.button = Аб гульні about.button = Аб гульні
name = Імя: name = Імя:
noname = Для пачатку, прыдумайце[accent] сабе iмя[]. noname = Для пачатку, прыдумайце[accent] сабе iмя[].
planetmap = Planet Map planetmap = Карта планеты
launchcore = Launch Core launchcore = Запусціць ядро
filename = Iмя файла: filename = Iмя файла:
unlocked = Новы кантэнт адмыкнуты! unlocked = Новы кантэнт адмыкнуты!
completed = [accent]Завершаны completed = [accent]Завершаны
@@ -148,12 +148,12 @@ techtree = Дрэва\n тэхналогій
research.list = [lightgray]Дасьледуйце: research.list = [lightgray]Дасьледуйце:
research = Даследаваць research = Даследаваць
researched = [lightgray] {0} даследавана. researched = [lightgray] {0} даследавана.
research.progress = {0}% complete research.progress = {0}% завершана
players = Гульцоў: {0} players = Гульцоў: {0}
players.single = {0} гулец players.single = {0} гулец
players.search = search players.search = search
players.notfound = [gray]no players found players.notfound = [gray]гульцоу не знойдзена
server.closing = [accent] Закрыццё сервера… server.closing = [accent]Закрыццё сервера…
server.kicked.kick = Вас выгналі з сервера! server.kicked.kick = Вас выгналі з сервера!
server.kicked.whitelist = Вы не ў белым спісе сервера. server.kicked.whitelist = Вы не ў белым спісе сервера.
server.kicked.serverClose = Сервер зачынены. server.kicked.serverClose = Сервер зачынены.
@@ -278,7 +278,7 @@ quit.confirm.tutorial = Вы ўпэўненыя, што ведаеце, што
loading = [accent]Загрузка… loading = [accent]Загрузка…
reloading = [accent]Перазагрузка мадыфікацый... reloading = [accent]Перазагрузка мадыфікацый...
saving = [accent]Захаванне… saving = [accent]Захаванне…
respawn = [accent][[{0}][] to respawn in core respawn = [accent][[{0}][] да вазраджэння з ядра
cancelbuilding = [accent][[{0}][] для ачысткі плана cancelbuilding = [accent][[{0}][] для ачысткі плана
selectschematic = [accent][[{0}][] вылучыць і скапіяваць selectschematic = [accent][[{0}][] вылучыць і скапіяваць
pausebuilding = [accent][[{0}][] для прыпынення будаўніцтва pausebuilding = [accent][[{0}][] для прыпынення будаўніцтва
@@ -291,8 +291,8 @@ waiting = [lightgray]Чаканне…
waiting.players = Чаканне гульцоў… waiting.players = Чаканне гульцоў…
wave.enemies = Ворагаў: [lightgray]{0} wave.enemies = Ворагаў: [lightgray]{0}
wave.enemy = Застаўся [lightgray]{0}[] ворагаў wave.enemy = Застаўся [lightgray]{0}[] ворагаў
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves. wave.guardianwarn = Вартаўнік будзе пасля [accent]{0}[] хвалей.
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave. wave.guardianwarn.one = Вартаўнік будзе пасля [accent]{0}[] хвалі.
loadimage = Загрузіць малюнак loadimage = Загрузіць малюнак
saveimage = Захаваць малюнак saveimage = Захаваць малюнак
unknown = Невядома unknown = Невядома
@@ -339,9 +339,9 @@ waves.never = <ніколі>
waves.every = кожны waves.every = кожны
waves.waves = хваля (ы) waves.waves = хваля (ы)
waves.perspawn = за з’яўленне waves.perspawn = за з’яўленне
waves.shields = shields/wave waves.shields = адзінак шчыта/хвалю
waves.to = да waves.to = да
waves.guardian = Guardian waves.guardian = Вартаўнік
waves.preview = Папярэдні прагляд waves.preview = Папярэдні прагляд
waves.edit = Рэдагавацью... waves.edit = Рэдагавацью...
waves.copy = Капіяваць у буфер абмену waves.copy = Капіяваць у буфер абмену
@@ -350,9 +350,9 @@ waves.invalid = Няслушныя хвалі ў буферы абмену.
waves.copied = Хвалі скапіяваныя. waves.copied = Хвалі скапіяваныя.
waves.none = Ворагі не былі вызначаныя. \nЗвярнiце ўвагу, што пустыя хвалі будуць аўтаматычна замененыя звычайнай хваляй. waves.none = Ворагі не былі вызначаныя. \nЗвярнiце ўвагу, што пустыя хвалі будуць аўтаматычна замененыя звычайнай хваляй.
wavemode.counts = counts wavemode.counts = колькацсь адзінак
wavemode.totals = totals wavemode.totals = усяго здароўя
wavemode.health = health wavemode.health = здароўе
editor.default = [lightgray]<Па змаўчанні> editor.default = [lightgray]<Па змаўчанні>
details = Падрабязнасці... details = Падрабязнасці...
@@ -508,11 +508,11 @@ error.io = Сеткавая памылка ўводу-высновы.
error.any = Невядомая сеткавая памылка. error.any = Невядомая сеткавая памылка.
error.bloom = Не атрымалася ініцыялізаваць свячэнне (Bloom). \nМагчыма, зараз Вашая прылада не падтрымлівае яго. error.bloom = Не атрымалася ініцыялізаваць свячэнне (Bloom). \nМагчыма, зараз Вашая прылада не падтрымлівае яго.
weather.rain.name = Rain weather.rain.name = Дождж
weather.snow.name = Snow weather.snow.name = Снег
weather.sandstorm.name = Sandstorm weather.sandstorm.name = Пясочныя бурі
weather.sporestorm.name = Sporestorm weather.sporestorm.name = Споравыя бурі
weather.fog.name = Fog weather.fog.name = Туман
sectors.unexplored = [lightgray]Unexplored sectors.unexplored = [lightgray]Unexplored
sectors.resources = Resources: sectors.resources = Resources:
@@ -891,9 +891,9 @@ rules.enemyLights = Enemy Lights
rules.fire = Fire rules.fire = Fire
rules.explosions = Block/Unit Explosion Damage rules.explosions = Block/Unit Explosion Damage
rules.ambientlight = Навакольны свет rules.ambientlight = Навакольны свет
rules.weather = Weather rules.weather = Надвор'е
rules.weather.frequency = Frequency: rules.weather.frequency = Частата:
rules.weather.duration = Duration: rules.weather.duration = Працягласць:
content.item.name = Рэчывы content.item.name = Рэчывы
content.liquid.name = Вадкасці content.liquid.name = Вадкасці
@@ -922,62 +922,62 @@ liquid.oil.name = Нафта
liquid.cryofluid.name = Крыягенная вадкасць liquid.cryofluid.name = Крыягенная вадкасць
unit.dagger.name = Кінжал unit.dagger.name = Кінжал
unit.mace.name = Mace unit.mace.name = Булава
unit.fortress.name = Крэпасць unit.fortress.name = Крэпасць
unit.nova.name = Nova unit.nova.name = Нова
unit.pulsar.name = Pulsar unit.pulsar.name = Пульсар
unit.quasar.name = Quasar unit.quasar.name = Квазар
unit.crawler.name = Камікадзэ unit.crawler.name = Палзун
unit.atrax.name = Atrax unit.atrax.name = Атракс
unit.spiroct.name = Spiroct unit.spiroct.name = Спірокт
unit.arkyid.name = Arkyid unit.arkyid.name = Аркід
unit.toxopid.name = Toxopid unit.toxopid.name = Токсопойд
unit.flare.name = Flare unit.flare.name = Успышка
unit.horizon.name = Horizon unit.horizon.name = Гарызонт
unit.zenith.name = Zenith unit.zenith.name = Зеніт
unit.antumbra.name = Antumbra unit.antumbra.name = Зацемь
unit.eclipse.name = Eclipse unit.eclipse.name = Затменне
unit.mono.name = Mono unit.mono.name = Моно
unit.poly.name = Poly unit.poly.name = Полі
unit.mega.name = Mega unit.mega.name = Мега
unit.quad.name = Quad unit.quad.name = Квад
unit.oct.name = Oct unit.oct.name = Окт
unit.risso.name = Risso unit.risso.name = Ріссо
unit.minke.name = Minke unit.minke.name = Мінкі
unit.bryde.name = Bryde unit.bryde.name = Брайд
unit.sei.name = Sei unit.sei.name = Сэй
unit.omura.name = Omura unit.omura.name = Амура
unit.alpha.name = Alpha unit.alpha.name = Альфа
unit.beta.name = Beta unit.beta.name = Бэта
unit.gamma.name = Gamma unit.gamma.name = Гамма
unit.scepter.name = Scepter unit.scepter.name = Скіпетр
unit.reign.name = Reign unit.reign.name = Улада
unit.vela.name = Vela unit.vela.name = Ветразь
unit.corvus.name = Corvus unit.corvus.name = Корвус
block.resupply-point.name = Resupply Point block.resupply-point.name = Цэнтр аммуніцыі
block.parallax.name = Parallax block.parallax.name = Парралакс
block.cliff.name = Скала block.cliff.name = Скала
block.sand-boulder.name = Пяшчаны валун block.sand-boulder.name = Пяшчаны валун
block.grass.name = Трава block.grass.name = Трава
block.slag.name = Шлак block.slag.name = Шлак
block.space.name = Space block.space.name = Space
block.salt.name = Соль block.salt.name = Соль
block.salt-wall.name = Salt Wall block.salt-wall.name = Саляная сцяна
block.pebbles.name = Галька block.pebbles.name = Галька
block.tendrils.name = Споравыя вусікі block.tendrils.name = Споравыя вусікі
block.sand-wall.name = Sand Wall block.sand-wall.name = Пяшчаная сцяна
block.spore-pine.name = Спорава хвоя block.spore-pine.name = Спорава хвоя
block.spore-wall.name = Spore Wall block.spore-wall.name = Споравая сцяна
block.boulder.name = Boulder block.boulder.name = Boulder
block.snow-boulder.name = Snow Boulder block.snow-boulder.name = Снежны валун
block.snow-pine.name = Заснежаная хвоя block.snow-pine.name = Заснежаная хвоя
block.shale.name = Сланец block.shale.name = Сланец
block.shale-boulder.name = Сланцавы валун block.shale-boulder.name = Сланцавы валун
block.moss.name = Мох block.moss.name = Мох
block.shrubs.name = Кусты block.shrubs.name = Кусты
block.spore-moss.name = Спорава мох block.spore-moss.name = Спорава мох
block.shale-wall.name = Shale Wall block.shale-wall.name = Сланцавая сцяна
block.scrap-wall.name = Сцяна з металалому block.scrap-wall.name = Сцяна з металалому
block.scrap-wall-large.name = Вялікая сцяна з металалому block.scrap-wall-large.name = Вялікая сцяна з металалому
block.scrap-wall-huge.name = Велізарная сцяна з металалому block.scrap-wall-huge.name = Велізарная сцяна з металалому
@@ -1005,18 +1005,18 @@ block.craters.name = Кратэры
block.sand-water.name = Пясок з вадой block.sand-water.name = Пясок з вадой
block.darksand-water.name = Тёмный пясок з вадой block.darksand-water.name = Тёмный пясок з вадой
block.char.name = Выпаленая зямля block.char.name = Выпаленая зямля
block.dacite.name = Dacite block.dacite.name = Дацыт
block.dacite-wall.name = Dacite Wall block.dacite-wall.name = Дацытавая сцяна
block.dacite-boulder.name = Dacite Boulder block.dacite-boulder.name = Дацытавы валун
block.ice-snow.name = Заснежаны лёд block.ice-snow.name = Заснежаны лёд
block.stone-wall.name = Stone Wall block.stone-wall.name = Каменная сцяна
block.ice-wall.name = Ice Wall block.ice-wall.name = Лядовая сцяна
block.snow-wall.name = Snow Wall block.snow-wall.name = Снежная сцяна
block.dune-wall.name = Dune Wall block.dune-wall.name = Тёмнапясчаная сцяна
block.pine.name = Сасна block.pine.name = Сасна
block.dirt.name = Dirt block.dirt.name = Зямля
block.dirt-wall.name = Dirt Wall block.dirt-wall.name = Брудная сцяна
block.mud.name = Mud block.mud.name = Бруд
block.white-tree-dead.name = Мёртвае белае дрэва block.white-tree-dead.name = Мёртвае белае дрэва
block.white-tree.name = Белае дрэва block.white-tree.name = Белае дрэва
block.spore-cluster.name = Навала спрэчка block.spore-cluster.name = Навала спрэчка
@@ -1147,28 +1147,28 @@ block.container.name = Кантэйнер
block.launch-pad.name = Пускавая пляцоўка block.launch-pad.name = Пускавая пляцоўка
block.launch-pad-large.name = Вялікая пускавая пляцоўка block.launch-pad-large.name = Вялікая пускавая пляцоўка
block.segment.name = Segment block.segment.name = Segment
block.command-center.name = Command Center block.command-center.name = Каммандны цэнтр
block.ground-factory.name = Ground Factory block.ground-factory.name = Завод наземных адзінак
block.air-factory.name = Air Factory block.air-factory.name = Завод паветраных адзінак
block.naval-factory.name = Naval Factory block.naval-factory.name = Завод марскіх адзінак
block.additive-reconstructor.name = Additive Reconstructor block.additive-reconstructor.name = Злучальны рэканструктар
block.multiplicative-reconstructor.name = Multiplicative Reconstructor block.multiplicative-reconstructor.name = Мультыплікацыйны рэканструктар
block.exponential-reconstructor.name = Exponential Reconstructor block.exponential-reconstructor.name = Экспаненцыяльны рэканструктар
block.tetrative-reconstructor.name = Tetrative Reconstructor block.tetrative-reconstructor.name = Тэтрацыйны рэканструктар
block.payload-conveyor.name = Mass Conveyor block.payload-conveyor.name = Канвеер для тяжёлай зброі
block.payload-router.name = Payload Router block.payload-router.name = Роутар для тяжёлай зброі
block.disassembler.name = Disassembler block.disassembler.name = Разборшчык
block.silicon-crucible.name = Silicon Crucible block.silicon-crucible.name = Крэмніевы тыгель
block.overdrive-dome.name = Overdrive Dome block.overdrive-dome.name = Сверхпрывадны купал
block.switch.name = Switch block.switch.name = Пераключальнік
block.micro-processor.name = Micro Processor block.micro-processor.name = Мікропрацэсар
block.logic-processor.name = Logic Processor block.logic-processor.name = Працэсар логікі
block.hyper-processor.name = Hyper Processor block.hyper-processor.name = Гіперпрацэсар
block.logic-display.name = Logic Display block.logic-display.name = Экран
block.large-logic-display.name = Large Logic Display block.large-logic-display.name = Вялікі экран
block.memory-cell.name = Memory Cell block.memory-cell.name = Ячэйка памяці
block.memory-bank.name = Memory Bank block.memory-bank.name = Банк памяці
team.blue.name = Сіняя team.blue.name = Сіняя
team.crux.name = Чырвоная team.crux.name = Чырвоная
@@ -1196,14 +1196,14 @@ tutorial.breaking = Часта, блокі даводзіцца руйнавац
tutorial.breaking.mobile = Часта, блокі даводзіцца руйнаваць. \n [accent] Вылучыце рэжым дэканструкцыі[], пасля чаго націсніце на патрэбны блок, каб разбурыць яго. \nРазрушьте блокі ў абранай зоне, трымаючы палец на некалькі секунд[], і правёўшы яго ў патрэбным кірунку. \nНажмите на галачку, каб пацвердзіць разбурэнне. \n \n [accent] разбурце усе сцены з металалому злева ад Вашага ядра. tutorial.breaking.mobile = Часта, блокі даводзіцца руйнаваць. \n [accent] Вылучыце рэжым дэканструкцыі[], пасля чаго націсніце на патрэбны блок, каб разбурыць яго. \nРазрушьте блокі ў абранай зоне, трымаючы палец на некалькі секунд[], і правёўшы яго ў патрэбным кірунку. \nНажмите на галачку, каб пацвердзіць разбурэнне. \n \n [accent] разбурце усе сцены з металалому злева ад Вашага ядра.
tutorial.withdraw = У некаторых сітуацыях, неабходна забраць прадметы з блокаў ўручную. \nКаб зрабіць гэта, [accent] націсніце на блок[], у якім знаходзяцца прадметы, затым [accent] націсніце на прадмет[] ў інвентары. \nМожно забраць некалькі прадметаў [accent] націскам з заціскам[].\n [accent] Забярыце трохі медзі з ядра[] tutorial.withdraw = У некаторых сітуацыях, неабходна забраць прадметы з блокаў ўручную. \nКаб зрабіць гэта, [accent] націсніце на блок[], у якім знаходзяцца прадметы, затым [accent] націсніце на прадмет[] ў інвентары. \nМожно забраць некалькі прадметаў [accent] націскам з заціскам[].\n [accent] Забярыце трохі медзі з ядра[]
tutorial.deposit = Пакладзеце прадметы ў блок, перацягнуўшы іх ад свайго карабля ў патрэбны блок. \n \n [accent] Перанясіце медзь назад у ядро [] tutorial.deposit = Пакладзеце прадметы ў блок, перацягнуўшы іх ад свайго карабля ў патрэбны блок. \n \n [accent] Перанясіце медзь назад у ядро []
tutorial.waves = [lightgray] Праціўнікі[] набліжаюцца. \nЗащитите ядро ​​ад двух хваль. Выкарыстоўвайце [accent] левую кнопку мышы[] для стральбы. \nПостройте больш турэляў і бураў. Добудьте больш медзі. tutorial.waves = [lightgray] Праціўнікі[] набліжаюцца. \nЗащіціце ядро ​​ад двух хваль. Выкарыстоўвайце [accent] левую кнопку мышы[] для стральбы. \nПостройте больш турэляў і бураў. Добудьте больш медзі.
tutorial.waves.mobile = [lightgray] Праціўнікі[] набліжаюцца. \n \nЗащитите ядро ​​ад двух хваль. Ваш карабель будзе аўтаматычна атакаваць праціўніка. \nПостройте больш турэляў і бураў. Добудьте больш медзі. tutorial.waves.mobile = [lightgray] Праціўнікі[] набліжаюцца. \n \nЗащіціце ядро ​​ад двух хваль. Ваш карабель будзе аўтаматычна атакаваць праціўніка. \nПостройте больш турэляў і бураў. Добудьте больш медзі.
tutorial.launch = Калі Вы дасягаеце пэўнай хвалі, Вы можаце ажыццявіць [accent] запуск ядра[], пакінуўшы базу і [accent] перанесці рэсурсы з ядра.[] \nЭти рэсурсы могуць быць выкарыстаны для вывучэння новых тэхналогій.\n [accent] Націсніце кнопку запуску. tutorial.launch = Калі Вы дасягаеце пэўнай хвалі, Вы можаце ажыццявіць [accent] запуск ядра[], пакінуўшы базу і [accent] перанесці рэсурсы з ядра.[] \nЭти рэсурсы могуць быць выкарыстаны для вывучэння новых тэхналогій.\n [accent] Націсніце кнопку запуску.
item.copper.description = Самы асноўны будаўнічы матэрыял. Шырока выкарыстоўваецца ва ўсіх тыпах блокаў. item.copper.description = Самы асноўны будаўнічы матэрыял. Шырока выкарыстоўваецца ва ўсіх тыпах блокаў.
item.lead.description = Асноўны стартавы матэрыял. Шырока выкарыстоўваецца ў электроніцы і блоках для транспарціроўкі вадкасцяў. item.lead.description = Асноўны стартавы матэрыял. Шырока выкарыстоўваецца ў электроніцы і блоках для транспарціроўкі вадкасцяў.
item.metaglass.description = звышмоцнага сплаў шкла. Шырока выкарыстоўваецца для размеркавання і захоўвання вадкасці. item.metaglass.description = Звышмоцны сплаў шкла. Шырока выкарыстоўваецца для размеркавання і захоўвання вадкасці.
item.graphite.description = мінералізаваныя вуглярод, які выкарыстоўваецца для боепрыпасаў і электрычных кампанентаў. item.graphite.description = Мінералізаваны вуглярод, які выкарыстоўваецца для боепрыпасаў і электрычных кампанентаў.
item.sand.description = Звычайны матэрыял, які шырока выкарыстоўваецца пры выплаўленні, як пры легіравання, так і ў якасці флюсу. item.sand.description = Звычайны матэрыял, які шырока выкарыстоўваецца пры выплаўленні, як пры легіравання, так і ў якасці флюсу.
item.coal.description = Закамянеласцевае мінеральнае рэчыва, якое ўтварылася задоўга да пасева. Шырока выкарыстоўваецца для вытворчасці паліва і рэсурсаў. item.coal.description = Закамянеласцевае мінеральнае рэчыва, якое ўтварылася задоўга да пасева. Шырока выкарыстоўваецца для вытворчасці паліва і рэсурсаў.
item.titanium.description = Рэдкі звышлёгкі метал, шырока выкарыстоўваецца для транспарціроўкі вадкасцяў, бураў і авіяцыі. item.titanium.description = Рэдкі звышлёгкі метал, шырока выкарыстоўваецца для транспарціроўкі вадкасцяў, бураў і авіяцыі.
@@ -1332,4 +1332,4 @@ block.cyclone.description = Вялікая турэль, якая можа ве
block.spectre.description = Масіўная двуствольное гармата. Страляе буйнымі бранябойнымі кулямі па паветраных і наземных мэтах. block.spectre.description = Масіўная двуствольное гармата. Страляе буйнымі бранябойнымі кулямі па паветраных і наземных мэтах.
block.meltdown.description = Масіўная лазерная гармата. Зараджае і страляе пастаянным лазерным прамянём ў бліжэйшых ворагаў. Патрабуецца астуджальная вадкасць для працы. block.meltdown.description = Масіўная лазерная гармата. Зараджае і страляе пастаянным лазерным прамянём ў бліжэйшых ворагаў. Патрабуецца астуджальная вадкасць для працы.
block.repair-point.description = Бесперапынна лечыць бліжэйшую пашкоджаную баявую адзінку або мех у сваім радыусе. block.repair-point.description = Бесперапынна лечыць бліжэйшую пашкоджаную баявую адзінку або мех у сваім радыусе.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Пашкоджвае і знішчае снарады. Лазерныя снарады не шкодзяца.

View File

@@ -139,7 +139,7 @@ mod.preview.missing = Antes de publicar este mod en el Steam Workshop, debe aña
mod.folder.missing = Solo los mods en forma de carpeta se pueden publicar en el Steam Workshop.\nPara convertir cualquier mod en una carpeta, simplemente descomprima su archivo a una carpeta y elimine el zip anterior, luego reinicie su juego o vuelva a cargar sus mods. mod.folder.missing = Solo los mods en forma de carpeta se pueden publicar en el Steam Workshop.\nPara convertir cualquier mod en una carpeta, simplemente descomprima su archivo a una carpeta y elimine el zip anterior, luego reinicie su juego o vuelva a cargar sus mods.
mod.scripts.disable = Tu dispositivo no es compatible con mods con scripts. Debes deshabilitar esos mods para jugar. mod.scripts.disable = Tu dispositivo no es compatible con mods con scripts. Debes deshabilitar esos mods para jugar.
about.button = Acerca del juego about.button = Acerca de...
name = Nombre: name = Nombre:
noname = Elige un[accent] nombre de jugador[] primero. noname = Elige un[accent] nombre de jugador[] primero.
planetmap = Mapa del planeta planetmap = Mapa del planeta
@@ -164,7 +164,7 @@ server.closing = [accent]Cerrando servidor...
server.kicked.kick = ¡Te han echado del servidor! server.kicked.kick = ¡Te han echado del servidor!
server.kicked.whitelist = No estás en la lista blanca de este servidor. server.kicked.whitelist = No estás en la lista blanca de este servidor.
server.kicked.serverClose = El servidor se ha cerrado. server.kicked.serverClose = El servidor se ha cerrado.
server.kicked.vote = Has sido expulsado por votación. ¡Adiós! server.kicked.vote = Has sido expulsado por votación. ¡Hasta luego!
server.kicked.clientOutdated = ¡Cliente desactualizado! ¡Actualiza el juego! server.kicked.clientOutdated = ¡Cliente desactualizado! ¡Actualiza el juego!
server.kicked.serverOutdated = ¡Servidor desactualizado! ¡Pídele al anfitrión que lo actualice! server.kicked.serverOutdated = ¡Servidor desactualizado! ¡Pídele al anfitrión que lo actualice!
server.kicked.banned = Has sido baneado en este servidor. server.kicked.banned = Has sido baneado en este servidor.
@@ -194,9 +194,10 @@ host.invalid = [scarlet]No se pudo conectar con el anfitrión
servers.local = Servidores Locales servers.local = Servidores Locales
servers.remote = Servidores Remotos servers.remote = Servidores Remotos
servers.global = Servidores Globales servers.global = Servidores de la Comunidad
ervers.showhidden = Mostrar servidores ocultos servers.disclaimer = Los servidores de la comunidad [accent]no[] son propiedad del desarrollador, ni administrados por el mismo.\n\nLos servidores podrían tener contenido generado por los usuarios no apropiado para todas las edades.
servers.showhidden = Mostrar servidores ocultos
server.shown = Visibles server.shown = Visibles
server.hidden = Ocultos server.hidden = Ocultos
@@ -702,11 +703,11 @@ ability.forcefield = Zona de Escudo
ability.repairfield = Zona de Reparación ability.repairfield = Zona de Reparación
ability.statusfield = Zona de Estado ability.statusfield = Zona de Estado
ability.unitspawn = {0} Fábrica de Drones ability.unitspawn = {0} Fábrica de Drones
ability.shieldregenfield = Zona de Regeneración de Escudos ability.shieldregenfield = Regeneración de Escudos
ability.movelightning = Movimiento Relámpago ability.movelightning = Movimiento Relámpago
bar.drilltierreq = Se requiere un taladro mejor. bar.drilltierreq = Requiere un taladro mejor
bar.noresources = Recursos faltantes bar.noresources = Recursos insuficientes
bar.corereq = Necesitas un núcleo base bar.corereq = Necesitas un núcleo base
bar.drillspeed = Velocidad del Taladro: {0}/s bar.drillspeed = Velocidad del Taladro: {0}/s
bar.pumpspeed = Velocidad de bombeado: {0}/s bar.pumpspeed = Velocidad de bombeado: {0}/s
@@ -972,14 +973,14 @@ item.silicon.name = Silicio
item.plastanium.name = Plastanio item.plastanium.name = Plastanio
item.phase-fabric.name = Tejido de fase item.phase-fabric.name = Tejido de fase
item.surge-alloy.name = Aleación Eléctrica item.surge-alloy.name = Aleación Eléctrica
item.spore-pod.name = Vaina de esporas item.spore-pod.name = Vaina de Esporas
item.sand.name = Arena item.sand.name = Arena
item.blast-compound.name = Compuesto Explosivo item.blast-compound.name = Compuesto Explosivo
item.pyratite.name = Pirotita item.pyratite.name = Pirotita
item.metaglass.name = Metacristal item.metaglass.name = Metacristal
item.scrap.name = Chatarra item.scrap.name = Chatarra
liquid.water.name = Agua liquid.water.name = Agua
liquid.slag.name = Fundido liquid.slag.name = Magma
liquid.oil.name = Petróleo liquid.oil.name = Petróleo
liquid.cryofluid.name = Líquido criogénico liquid.cryofluid.name = Líquido criogénico
#Names of Units and Turrets look better untranslated, since they are propper/own names #Names of Units and Turrets look better untranslated, since they are propper/own names
@@ -1019,7 +1020,7 @@ unit.corvus.name = Corvus
block.resupply-point.name = Punto de reabastecimiento block.resupply-point.name = Punto de reabastecimiento
block.parallax.name = Parallax block.parallax.name = Parallax
block.cliff.name = Cliff block.cliff.name = Pared
block.sand-boulder.name = Roca de arena block.sand-boulder.name = Roca de arena
block.basalt-boulder.name = Roca de basalto block.basalt-boulder.name = Roca de basalto
block.grass.name = Hierba block.grass.name = Hierba
@@ -1046,14 +1047,14 @@ block.scrap-wall-large.name = Muro de chatarra grande
block.scrap-wall-huge.name = Muro de chatarra muy grande block.scrap-wall-huge.name = Muro de chatarra muy grande
block.scrap-wall-gigantic.name = Muro de chatarra gigante block.scrap-wall-gigantic.name = Muro de chatarra gigante
block.thruster.name = Propulsor block.thruster.name = Propulsor
block.kiln.name = Horno block.kiln.name = Horno para Cristal
block.graphite-press.name = Prensa de grafito block.graphite-press.name = Prensa de grafito
block.multi-press.name = Multi-Prensa block.multi-press.name = Multi-Prensa
block.constructing = {0}\n[lightgray](Construyendo) block.constructing = {0}\n[lightgray](Construyendo)
block.spawn.name = Punto de generación block.spawn.name = Punto de generación
block.core-shard.name = Núcleo: Fragmento block.core-shard.name = Núcleo: Shard
block.core-foundation.name = Núcleo: Fundación block.core-foundation.name = Núcleo: Foundation
block.core-nucleus.name = Núcleo: Núcleo block.core-nucleus.name = Núcleo: Nucleus
block.deepwater.name = Aguas profundas block.deepwater.name = Aguas profundas
block.water.name = Agua block.water.name = Agua
block.tainted-water.name = Agua contaminada block.tainted-water.name = Agua contaminada
@@ -1064,21 +1065,21 @@ block.sand.name = Arena
block.darksand.name = Arena oscura block.darksand.name = Arena oscura
block.ice.name = Hielo block.ice.name = Hielo
block.snow.name = Nieve block.snow.name = Nieve
block.craters.name = Cráteres block.craters.name = Cráter
block.sand-water.name = Agua con arena block.sand-water.name = Agua con arena
block.darksand-water.name = Agua con arena oscura block.darksand-water.name = Agua con arena oscura
block.char.name = Carbonizado block.char.name = Cenizas
block.dacite.name = Dacita block.dacite.name = Dacita
block.dacite-wall.name = Pared de dacita block.dacite-wall.name = Bloque de dacita
block.dacite-boulder.name = Roca de dacita block.dacite-boulder.name = Roca de dacita
block.ice-snow.name = Hielo-Nieve block.ice-snow.name = Hielo-Nieve
block.stone-wall.name = Pared de piedra block.stone-wall.name = Bloque de piedra
block.ice-wall.name = Pared de hielo block.ice-wall.name = Bloque de hielo
block.snow-wall.name = Pared de nieve block.snow-wall.name = Bloque de nieve
block.dune-wall.name = Pared de arena block.dune-wall.name = Bloque de arena
block.pine.name = Pino block.pine.name = Pino
block.dirt.name = Tierra block.dirt.name = Tierra
block.dirt-wall.name = Pared de tierra block.dirt-wall.name = Bloque de tierra
block.mud.name = Lodo block.mud.name = Lodo
block.white-tree-dead.name = Árbol Blanco Muerto block.white-tree-dead.name = Árbol Blanco Muerto
block.white-tree.name = Árbol Blanco block.white-tree.name = Árbol Blanco
@@ -1096,7 +1097,7 @@ block.dark-panel-5.name = Panel Oscuro 5
block.dark-panel-6.name = Panel Oscuro 6 block.dark-panel-6.name = Panel Oscuro 6
block.dark-metal.name = Metal Oscuro block.dark-metal.name = Metal Oscuro
block.basalt.name = Basalto block.basalt.name = Basalto
block.hotrock.name = Roca Caliente block.hotrock.name = Roca volcánica
block.magmarock.name = Roca de Magma block.magmarock.name = Roca de Magma
block.copper-wall.name = Muro de Cobre block.copper-wall.name = Muro de Cobre
block.copper-wall-large.name = Muro de Cobre grande block.copper-wall-large.name = Muro de Cobre grande
@@ -1185,7 +1186,7 @@ block.liquid-junction.name = Cruce de Líquidos
block.bridge-conduit.name = Conducto Puente block.bridge-conduit.name = Conducto Puente
block.rotary-pump.name = Bomba Rotatoria block.rotary-pump.name = Bomba Rotatoria
block.thorium-reactor.name = Reactor de Torio block.thorium-reactor.name = Reactor de Torio
block.mass-driver.name = Teletransportador Masivo block.mass-driver.name = Teletransportador de Masa
block.blast-drill.name = Taladro de explosión block.blast-drill.name = Taladro de explosión
block.thermal-pump.name = Bomba Térmica block.thermal-pump.name = Bomba Térmica
block.thermal-generator.name = Generador Térmico block.thermal-generator.name = Generador Térmico
@@ -1205,8 +1206,8 @@ block.spectre.name = Spectre
block.meltdown.name = Meltdown block.meltdown.name = Meltdown
block.foreshadow.name = Foreshadow block.foreshadow.name = Foreshadow
block.container.name = Contenedor block.container.name = Contenedor
block.launch-pad.name = Pad de Lanzamiento block.launch-pad.name = Plataforma de Lanzamiento
block.launch-pad-large.name = Pad de Lanzamiento Grande block.launch-pad-large.name = Plataforma de Lanzamiento Grande
block.segment.name = Segment block.segment.name = Segment
block.command-center.name = Centro de comando block.command-center.name = Centro de comando
block.ground-factory.name = Fábrica terrestre block.ground-factory.name = Fábrica terrestre
@@ -1279,6 +1280,8 @@ hint.payloadDrop.mobile = [accent]Mantén[] sobre un lugar vacío para soltar la
hint.waveFire = Cuando las torretas [accent]Wave[] usan agua como munición, apagarán fuego e incendios cercanos automáticamente. hint.waveFire = Cuando las torretas [accent]Wave[] usan agua como munición, apagarán fuego e incendios cercanos automáticamente.
hint.generator = Los \uf879[accent]Generadores de combustión[] querman carbón para transmitir energía a bloques adyacentes.\n\nEl alcance de transmisión de energía se puede extender usando \uf87f[accent]Nodos de energía[]. hint.generator = Los \uf879[accent]Generadores de combustión[] querman carbón para transmitir energía a bloques adyacentes.\n\nEl alcance de transmisión de energía se puede extender usando \uf87f[accent]Nodos de energía[].
hint.guardian = Los [accent]Guardianes[] poseen una robusta armadura. Municiones débiles como el [accent]Cobre[] o el [accent]Plomo[] no son [scarlet]effectivas[] contra él.\n\nUsa torretas de mayor categoría o por ejemplo, munición de \uf835[accent]Grafito[] \uf861Duo/\uf859 en torretas Salvo para derribar a los Guardianes. hint.guardian = Los [accent]Guardianes[] poseen una robusta armadura. Municiones débiles como el [accent]Cobre[] o el [accent]Plomo[] no son [scarlet]effectivas[] contra él.\n\nUsa torretas de mayor categoría o por ejemplo, munición de \uf835[accent]Grafito[] \uf861Duo/\uf859 en torretas Salvo para derribar a los Guardianes.
hint.coreUpgrade = Los núcleos se pueden mejorar [accent]construyendo núcleos de mayor calidad encima[].\n\nColoca un  núcleo [accent]Foundation[] sobre el  núcleo [accent]Shard[]. Asegúrate de que no hay obstáculos cerca.
hint.presetLaunch = Las zonas de aterrizaje de los [accent]sectores grises[], como el [accent]Bosque Congelado[], son accesibles desde cualquier lugar. No requieren capturar sectores adyacentes.\n\nLos [accent]sectores numerados[], como este, son [accent]opcionales[].
item.copper.description = Un útil material de estructura. Usado en todo tipo de bloques. item.copper.description = Un útil material de estructura. Usado en todo tipo de bloques.
item.copper.details = Cobre. Metal anormalmente abundante en Serpulo. Estructuralmente débil a menos que sea reforzado. item.copper.details = Cobre. Metal anormalmente abundante en Serpulo. Estructuralmente débil a menos que sea reforzado.
@@ -1402,7 +1405,7 @@ block.cultivator.details = Tecnología recuperada. Usada para producir cantidade
block.oil-extractor.description = Usa grandes cantidades de energía, arena y agua para obtener petróleo. Úsalo cuando no hay fuentes directas de petróleo cerca. block.oil-extractor.description = Usa grandes cantidades de energía, arena y agua para obtener petróleo. Úsalo cuando no hay fuentes directas de petróleo cerca.
block.core-shard.description = El núcleo de la base. Compacto. Puede auto-replicarse. Equipado con propulsores de uso único. block.core-shard.description = El núcleo de la base. Compacto. Puede auto-replicarse. Equipado con propulsores de uso único.
block.core-shard.details = La primera iteración. Si es destruido, todo contacto con el sector está perdido. No designado para viajes interplanetarios. block.core-shard.details = La primera iteración. Si es destruido, todo contacto con el sector está perdido. No designado para viajes interplanetarios.
block.core-foundation.description = El núcleo de la base. Mejor blindado. Almacena más recursos que el modelo Fragmento. block.core-foundation.description = El núcleo de la base. Mejor blindado. Almacena más recursos que el modelo Shard.
block.core-foundation.details = La segunda iteración. block.core-foundation.details = La segunda iteración.
block.core-nucleus.description = El núcleo de la base. Extremadamente bien armado. Almacena cantidades masivas de recursos. block.core-nucleus.description = El núcleo de la base. Extremadamente bien armado. Almacena cantidades masivas de recursos.
block.core-nucleus.details = La tercera y última iteración. block.core-nucleus.details = La tercera y última iteración.
@@ -1473,7 +1476,7 @@ unit.zenith.description = Dispara ráfagas de misiles a enemigos cercanos.
unit.antumbra.description = Dispara un enjambre de balas a cualquer enemigo cercano. unit.antumbra.description = Dispara un enjambre de balas a cualquer enemigo cercano.
unit.eclipse.description = Dispara dos láseres perforantes y un enjambre de balas de fragmentación. unit.eclipse.description = Dispara dos láseres perforantes y un enjambre de balas de fragmentación.
unit.mono.description = Extrae cobre y plomo, y los deposita en el núcleo. unit.mono.description = Extrae cobre y plomo, y los deposita en el núcleo.
unit.poly.description = Recosntruye automáticamente estructuras dañadas y asiste a otros unidades en la construcción. unit.poly.description = Recosntruye automáticamente estructuras dañadas y asiste a otras unidades en la construcción.
unit.mega.description = Repara automáticamente estructuras dañadas. Puede llevar estructuras y unidades terrestres pequeñas. unit.mega.description = Repara automáticamente estructuras dañadas. Puede llevar estructuras y unidades terrestres pequeñas.
unit.quad.description = Suelta grandes bombas sobre objetivos terrestres, repara estructuras aliadas y daña enemigos. Puede cargar con unidades terrestres de tamaño medio. unit.quad.description = Suelta grandes bombas sobre objetivos terrestres, repara estructuras aliadas y daña enemigos. Puede cargar con unidades terrestres de tamaño medio.
unit.oct.description = Protege aliados con su escudo. Puede cargar con la mayoría de unidades terrestres. unit.oct.description = Protege aliados con su escudo. Puede cargar con la mayoría de unidades terrestres.
@@ -1482,6 +1485,6 @@ unit.minke.description = Dispara proyectiles variados a enemigos terrestres.
unit.bryde.description = Dispara misiles de largo alcance a enemigos. unit.bryde.description = Dispara misiles de largo alcance a enemigos.
unit.sei.description = Dispara un enjambre de misiles y proyectiles perforantes a enemigos. unit.sei.description = Dispara un enjambre de misiles y proyectiles perforantes a enemigos.
unit.omura.description = Dispara rayos contínuos perforantes. Construye unidades Flare. unit.omura.description = Dispara rayos contínuos perforantes. Construye unidades Flare.
unit.alpha.description = Defiende el núcleo Fragmento de los enemigos. Construye estructuras. unit.alpha.description = Defiende el núcleo Shard de los enemigos. Construye estructuras.
unit.beta.description = Defiende el núcleo Foundation de los enemigos. Construye estructuras. unit.beta.description = Defiende el núcleo Foundation de los enemigos. Construye estructuras.
unit.gamma.description = Defiende el núcleo Nucleus de los enemigos. Construye estructuras. unit.gamma.description = Defiende el núcleo Nucleus de los enemigos. Construye estructuras.

View File

@@ -537,21 +537,21 @@ sectors.resources = Sumber Daya:
sectors.production = Produksi: sectors.production = Produksi:
sectors.export = Ekspor: sectors.export = Ekspor:
sectors.time = Waktu: sectors.time = Waktu:
sectors.threat = Threat: sectors.threat = Tingkat:
sectors.wave = Gelombang: sectors.wave = Gelombang:
sectors.stored = Terisi: sectors.stored = Terisi:
sectors.resume = Lanjutkan sectors.resume = Lanjutkan
sectors.launch = Luncurkan sectors.launch = Luncurkan
sectors.select = Pilih sectors.select = Pilih
sectors.nonelaunch = [lightgray]tidak ada sectors.nonelaunch = [lightgray]tidak ada (matahari)
sectors.rename = Ganti Nama Sektor sectors.rename = Ganti Nama Sektor
sectors.enemybase = [scarlet]Markas Musuh sectors.enemybase = [scarlet]Markas Musuh
sectors.vulnerable = [scarlet]Vulnerable sectors.vulnerable = [scarlet]Rawan diserang
sectors.underattack = [scarlet]Under attack! [accent]{0}% damaged sectors.underattack = [scarlet]Dalam Serangan! [accent]kerusakan sebesar {0}%
sectors.survives = [accent]Survives {0} waves sectors.survives = [accent]Bertahan sebanyak {0} gelombang
sectors.go = Mulai sectors.go = Mulai
sector.curcapture = Sektor Ditaklukkan sector.curcapture = Sektor Dikuasai
sector.curlost = Sector Lost sector.curlost = Sektor Gagal Bertahan
sector.missingresources = [scarlet]Sumber Daya Inti Tidak Cukup sector.missingresources = [scarlet]Sumber Daya Inti Tidak Cukup
sector.attacked = Sektor [accent]{0}[white] sedang diserang! sector.attacked = Sektor [accent]{0}[white] sedang diserang!
sector.lost = Sektor [accent]{0}[white] telah dihancurkan! sector.lost = Sektor [accent]{0}[white] telah dihancurkan!
@@ -1113,7 +1113,7 @@ block.door-large.name = Pintu Besar
block.duo.name = Duo block.duo.name = Duo
block.scorch.name = Penyembur Api block.scorch.name = Penyembur Api
block.scatter.name = Scatter block.scatter.name = Scatter
block.hail.name = Hail block.hail.name = Meriam
block.lancer.name = Lancer block.lancer.name = Lancer
block.conveyor.name = Pengantar block.conveyor.name = Pengantar
block.titanium-conveyor.name = Pengantar Berbahan Titanium block.titanium-conveyor.name = Pengantar Berbahan Titanium
@@ -1278,7 +1278,11 @@ hint.payloadDrop = Tekan [accent]][] untuk menurunkan muatan.
hint.payloadDrop.mobile = [accent]Tekan dan tahan[] di lokasi yang kosong untuk menurunkan muatan. hint.payloadDrop.mobile = [accent]Tekan dan tahan[] di lokasi yang kosong untuk menurunkan muatan.
hint.waveFire = [accent]Wave[] yang terisi dengan air akan memadamkan air dalam jangkauannya. hint.waveFire = [accent]Wave[] yang terisi dengan air akan memadamkan air dalam jangkauannya.
hint.generator = \uf879 [accent]Generator Pembakar[] membakar batu bara dan menghasilkan energik ke blok yang berdekatan.\n\nTransmisi energi dapat diperluas menggunakan \uf87f [accent]Tiang Listrik[]. hint.generator = \uf879 [accent]Generator Pembakar[] membakar batu bara dan menghasilkan energik ke blok yang berdekatan.\n\nTransmisi energi dapat diperluas menggunakan \uf87f [accent]Tiang Listrik[].
lhint.guardian = Unit [accent]Penjaga[] adalah unit yang diperkuat. Amunisi lemah seperti [accent]Tembaga[] dan [accent]Timah[] [scarlet]tidak berefek pada mereka[].\n\nGunakan turret yang lebih bagus atau gunakan amunisi yang lebih kuat seperti \uf835 [accent]Grafit[] \uf861Duo/\uf859Salvo untuk menghancurkan Penjaga. hint.guardian = Unit [accent]Penjaga[] adalah unit yang diperkuat. Amunisi lemah seperti [accent]Tembaga[] dan [accent]Timah[] [scarlet]tidak berefek pada mereka[].\n\nGunakan turret yang lebih bagus atau gunakan amunisi yang lebih kuat seperti \uf835 [accent]Grafit[] \uf861Duo/\uf859Salvo untuk menghancurkan Penjaga.
hint.coreUpgrade = Inti dapat ditingkatkan dengan cara [accent]meletakkan yang lebih besar diatasnya[].\n\nLetakan sebuah inti  [accent]Fondasi[] diatas inti  [accent]Shard[]. Pastikan terdapat ruang kosong dari bangunan yang lain.
hint.presetLaunch = [accent]Zona pendaratan[]yang berwarna abu-abu, seperti [accent]Hutan yang Beku[], dapat diluncurkan dari mana saja. Sektor seperti ini tidak perlu diluncurkan dari sektor terdekat milik kamu.\n\n[accent]Sektor yang bernomor[], seperti yang ini, bisa [accent]dikuasai atau diabaikan[].
hint.coreIncinerate = Setelah inti penuh dengan suatu barang, barang yang setipe akan [accent]dihancurkan[].
hint.coopCampaign = Ketika bermain [accent]kampanye multiplayer[], barang yang diproduksi di map ini akan diberikan ke [accent]sektor kamu juga[].\n\nSetiap penelitian baru yang dilakukan oleh host juga akan diberikan kepadamu.
item.copper.description = Bahan struktur yang berguna. Digunakan di semua tipe blok. item.copper.description = Bahan struktur yang berguna. Digunakan di semua tipe blok.
item.copper.details = Tembaga. Logam yang sangat melimpah di Serpulo. Lemah secara struktural kecuali jika diperkuat. item.copper.details = Tembaga. Logam yang sangat melimpah di Serpulo. Lemah secara struktural kecuali jika diperkuat.
@@ -1303,10 +1307,11 @@ item.blast-compound.description = Senyawa yang digunakan di bom dan amunisi pele
item.pyratite.description = Digunakan di senjata pembakar dan generator yang membutuhkan bahan mudah terbakar. item.pyratite.description = Digunakan di senjata pembakar dan generator yang membutuhkan bahan mudah terbakar.
liquid.water.description = Umumnya digunakan untuk mendinginkan mesin-mesin dan pendaur ulang. liquid.water.description = Umumnya digunakan untuk mendinginkan mesin-mesin dan pendaur ulang.
liquid.slag.description = Berbagai campuran tipe logam yang meleleh. Dapat dipisahkan menjadi mineral masing-masing, atau disemprokan ke musuh sebagai senjata. liquid.slag.description = Berbagai campuran tipe logam yang meleleh. Dapat dipisahkan menjadi mineral masing-masing, atau disemprotkan ke musuh sebagai senjata.
liquid.oil.description = Digunakan di produksi material lanjutan dan sebagai amunisi yang mudah terbakar. liquid.oil.description = Digunakan di produksi material lanjutan dan sebagai amunisi yang mudah terbakar.
liquid.cryofluid.description = Digunakan sebagai pendingin di reaktor, turret, dan pabrik. liquid.cryofluid.description = Digunakan sebagai pendingin di reaktor, turret, dan pabrik.
block.resupply-point.description = Mengisi ulang amunisi unit terdekat dengan tembaga. Jika tidak bisa berarti unit tersebut membutuhkan baterai.
block.armored-conveyor.description = Memindahkan barang sama cepatnya dengan pengantar titanium, namun memiliki lebih banyak armor. Tidak dapat menerima masukan dari samping dari apapun kecuali dari pengantar. block.armored-conveyor.description = Memindahkan barang sama cepatnya dengan pengantar titanium, namun memiliki lebih banyak armor. Tidak dapat menerima masukan dari samping dari apapun kecuali dari pengantar.
block.illuminator.description = Sebuah lampu kecil untuk menerangi daerah sekitar. Perlu listrik untuk bekerja. block.illuminator.description = Sebuah lampu kecil untuk menerangi daerah sekitar. Perlu listrik untuk bekerja.
block.message.description = Menyimpan pesan. Digunakan untuk komunikasi antar sekutu. block.message.description = Menyimpan pesan. Digunakan untuk komunikasi antar sekutu.
@@ -1450,7 +1455,7 @@ block.memory-cell.description = Menyimpan informasi untuk prosesor.
block.memory-bank.description = Menyimpan informasi untuk prosesor. Berkapasitas besar. block.memory-bank.description = Menyimpan informasi untuk prosesor. Berkapasitas besar.
block.logic-display.description = Menampilkan grafik sembarang dari prosesor. block.logic-display.description = Menampilkan grafik sembarang dari prosesor.
block.large-logic-display.description = Menampilkan grafik sembarang dari prosesor. Lebih besar. block.large-logic-display.description = Menampilkan grafik sembarang dari prosesor. Lebih besar.
block.interplanetary-accelerator.description = Sebuah menara railgun elektromagnetik. Mempercepat Inti dengan kecepatan tinggi untuk peluncuran antarplanet. block.interplanetary-accelerator.description = Sebuah menara railgun elektromagnetik raksasa. Meluncurkan Inti dengan kecepatan tinggi untuk peluncuran antarplanet.
unit.dagger.description = Menembak musuh terdekat dengan amunisi standar. unit.dagger.description = Menembak musuh terdekat dengan amunisi standar.
unit.mace.description = Menyerang musuh terdekat dengan cara membakarnya. unit.mace.description = Menyerang musuh terdekat dengan cara membakarnya.

View File

@@ -1,4 +1,4 @@
credits.text = Creato da [royal]Anuken[] - [sky]anukendev@gmail.com[]\n\nVersione Italiana:[lightgray]\nDeltaRays\nGioIacca9[] credits.text = Creato da [royal]Anuken[] - [sky]anukendev@gmail.com[]\n\nVersione Italiana:[lightgray]\nDeltaRays\nGioIacca9 and Diegator04[]
credits = Crediti credits = Crediti
contributors = Traduttori e Contributori contributors = Traduttori e Contributori
discord = Entra nel server Discord di Mindustry! discord = Entra nel server Discord di Mindustry!
@@ -7,7 +7,7 @@ link.reddit.description = Il subreddit di Mindustry!
link.github.description = Codice sorgente del gioco link.github.description = Codice sorgente del gioco
link.changelog.description = Elenco delle modifiche del gioco link.changelog.description = Elenco delle modifiche del gioco
link.dev-builds.description = Build di sviluppo versioni instabili link.dev-builds.description = Build di sviluppo versioni instabili
link.trello.description = Scheda ufficiale Trello per funzionalità pianificate link.trello.description = Sezione ufficiale Trello per funzionalità pianificate
link.itch.io.description = Pagina di itch.io con download per PC e versione web link.itch.io.description = Pagina di itch.io con download per PC e versione web
link.google-play.description = Elenco di Google Play Store link.google-play.description = Elenco di Google Play Store
link.f-droid.description = Catalogo F-Droid link.f-droid.description = Catalogo F-Droid
@@ -19,10 +19,10 @@ screenshot.invalid = Mappa troppo pesante, probabilmente non c'è abbastanza spa
gameover = Hai Perso. gameover = Hai Perso.
gameover.disconnect = Disconnetti gameover.disconnect = Disconnetti
gameover.pvp = La squadra[accent] {0}[] ha vinto! gameover.pvp = La squadra[accent] {0}[] ha vinto!
gameover.waiting = [accent]Attendendo la prossima mappa... gameover.waiting = [accent]In attesa della prossima mappa...
highscore = [accent]Nuovo record! highscore = [accent]Nuovo record!
copied = Copiato. copied = Copiato.
indev.notready = Questa parte del gioco non è ancora completa indev.notready = Questa parte del gioco non è ancora pronta
indev.campaign = [accent]Congratulazioni! Hai raggiunto la fine della modalità campagna![]\n\nI contenuti per ora si fermano qui. In qualche aggiornamento futuro scoprirai i viaggi interplanetari. indev.campaign = [accent]Congratulazioni! Hai raggiunto la fine della modalità campagna![]\n\nI contenuti per ora si fermano qui. In qualche aggiornamento futuro scoprirai i viaggi interplanetari.
load.sound = Suoni load.sound = Suoni
@@ -57,7 +57,7 @@ schematic.saved = Schematica salvata.
schematic.delete.confirm = Questa schematica sarà cancellata definitivamente. schematic.delete.confirm = Questa schematica sarà cancellata definitivamente.
schematic.rename = Rinomina Schematica schematic.rename = Rinomina Schematica
schematic.info = {0}x{1}, {2} blocchi schematic.info = {0}x{1}, {2} blocchi
schematic.disabled = [scarlet]Schematiche disabilitate[]\nNon puoi usare le schematiche su questa [accent]mappa[] o su questo [accent]server. schematic.disabled = [scarlet]Schematiche disabilitate[]\nNon hai il permesso di usare schematiche in questa [accent]mappa[] o [accent]server.
stats = Statistiche stats = Statistiche
stat.wave = Ondate Sconfitte:[accent] {0} stat.wave = Ondate Sconfitte:[accent] {0}
@@ -69,7 +69,7 @@ stat.delivered = Risorse Lanciate:
stat.playtime = Tempo Di Gioco:[accent] {0} stat.playtime = Tempo Di Gioco:[accent] {0}
stat.rank = Livello Finale: [accent]{0} stat.rank = Livello Finale: [accent]{0}
globalitems = [accent]Item Globali globalitems = [accent]Oggetti Globali
map.delete = Sei sicuro di voler eliminare la mappa '[accent]{0}[]'? map.delete = Sei sicuro di voler eliminare la mappa '[accent]{0}[]'?
level.highscore = Miglior Punteggio: [accent]{0} level.highscore = Miglior Punteggio: [accent]{0}
level.select = Selezione del Livello level.select = Selezione del Livello
@@ -103,7 +103,7 @@ committingchanges = Applicando le Modifiche
done = Fatto done = Fatto
feature.unsupported = Il tuo dispositivo non supporta questa funzione. feature.unsupported = Il tuo dispositivo non supporta questa funzione.
mods.alphainfo = Tieni a mente che queste mod sono in alpha e[scarlet] possono contenere molti bug[]. Segnala tutti i problemi che trovi sulla pagina GitHub di Mindustry. mods.alphainfo = Tieni a mente che queste mod sono in alpha e[scarlet] possono contenere molti bug[]. Segnala eventuali problemi che trovi sulla pagina GitHub o sul server Discord di Mindustry.
mods = Mod mods = Mod
mods.none = [lightgray]Nessuna mod trovata! mods.none = [lightgray]Nessuna mod trovata!
mods.guide = Guida per il modding mods.guide = Guida per il modding
@@ -118,7 +118,7 @@ mod.disable = Disabilita
mod.content = Contenuto: mod.content = Contenuto:
mod.delete.error = Impossibile eliminare questa mod. Il file potrebbe essere in uso. mod.delete.error = Impossibile eliminare questa mod. Il file potrebbe essere in uso.
mod.requiresversion = [scarlet]Versione minima richiesta: [accent]{0} mod.requiresversion = [scarlet]Versione minima richiesta: [accent]{0}
mod.outdated = [scarlet]Questa mod non è compatibile con la v6 (versione minima: 105) mod.outdated = [scarlet]Non compatibile con V6 (Versione minima: 105)
mod.missingdependencies = [scarlet]Dipendenze mancanti: {0} mod.missingdependencies = [scarlet]Dipendenze mancanti: {0}
mod.erroredcontent = [scarlet]Errori di Contenuto mod.erroredcontent = [scarlet]Errori di Contenuto
mod.errors = Si sono verificati degli errori durante il caricamento del contenuto. mod.errors = Si sono verificati degli errori durante il caricamento del contenuto.
@@ -130,7 +130,7 @@ mod.reloadrequired = [scarlet]Riavvio necessario
mod.import = Importa Mod mod.import = Importa Mod
mod.import.file = Importa File mod.import.file = Importa File
mod.import.github = Importa Mod da GitHub mod.import.github = Importa Mod da GitHub
mod.jarwarn = [scarlet]Le mod JAR non sono sicure[]\nAssicurati di importare queste mod solo da fonti affidabili! mod.jarwarn = [scarlet]Le mod JAR mod sono intrinsecamente pericolose.[]\nAssicuratevi di star importando questa mod da una fonte affidabile!!
mod.item.remove = Questo item fa parte della mod[accent] '{0}'[]. Per rimuoverlo, disinstalla questa mod. mod.item.remove = Questo item fa parte della mod[accent] '{0}'[]. Per rimuoverlo, disinstalla questa mod.
mod.remove.confirm = Questa mod verrà eliminata. mod.remove.confirm = Questa mod verrà eliminata.
mod.author = [lightgray]Autore:[] {0} mod.author = [lightgray]Autore:[] {0}
@@ -196,9 +196,10 @@ servers.local = Server Locali
servers.remote = Server Remoti servers.remote = Server Remoti
servers.global = Server Community servers.global = Server Community
servers.disclaimer = I server della Community [accent]non[] appartengono o sono controllati dallo sviluppatore.\n\nI servers potrebbero contenere del contenuto generato dall'utente che non è appropriato per tutte le età.
servers.showhidden = Mostra Server Nascosti servers.showhidden = Mostra Server Nascosti
server.shown = Visibili server.shown = Visibile
server.hidden = Nascosti server.hidden = Nascosto
trace = Traccia Giocatore trace = Traccia Giocatore
trace.playername = Nome del Giocatore: [accent]{0} trace.playername = Nome del Giocatore: [accent]{0}
@@ -233,7 +234,7 @@ disconnect.timeout = Connessione scaduta.
disconnect.data = Errore durante il caricamento del mondo! disconnect.data = Errore durante il caricamento del mondo!
cantconnect = Impossibile unirsi alla partita ([accent]{0}[]). cantconnect = Impossibile unirsi alla partita ([accent]{0}[]).
connecting = [accent]Connessione in corso... connecting = [accent]Connessione in corso...
reconnecting = [accent]Riconnettendo... reconnecting = [accent]Riconnessione in corso...
connecting.data = [accent]Caricamento del mondo... connecting.data = [accent]Caricamento del mondo...
server.port = Porta: server.port = Porta:
server.addressinuse = Indirizzo già in uso! server.addressinuse = Indirizzo già in uso!
@@ -279,9 +280,9 @@ cancel = Annulla
openlink = Apri Link openlink = Apri Link
copylink = Copia link copylink = Copia link
back = Indietro back = Indietro
crash.export = Esporta Log di Crash crash.export = Esporta Logs del Crash
crash.none = Nessun log di crash trovato. crash.none = Nessun Log trovato.
crash.exported = Log di crash esportato. crash.exported = Crash logs esportati.
data.export = Esporta Salvataggio data.export = Esporta Salvataggio
data.import = Importa Salvataggio data.import = Importa Salvataggio
data.openfolder = Apri Cartella\nSalvataggi data.openfolder = Apri Cartella\nSalvataggi
@@ -293,12 +294,12 @@ quit.confirm.tutorial = Sei sicuro di sapere cosa stai facendo? Il tutorial può
loading = [accent]Caricamento in Corso... loading = [accent]Caricamento in Corso...
reloading = [accent]Ricaricamento delle mod... reloading = [accent]Ricaricamento delle mod...
saving = [accent]Salvataggio in corso... saving = [accent]Salvataggio in corso...
respawn = [accent][[{0}][] per rigenerarti nel nucleo respawn = [accent][[{0}][] per rinascere nel nucleo
cancelbuilding = [accent][[{0}][] per pulire la selezione cancelbuilding = [accent][[{0}][] per pulire la selezione
selectschematic = [accent][[{0}][] per selezionare+copiare selectschematic = [accent][[{0}][] per selezionare+copiare
pausebuilding = [accent][[{0}][] per smettere di costruire pausebuilding = [accent][[{0}][] per smettere di costruire
resumebuilding = [scarlet][[{0}][] per riprendere a costruire resumebuilding = [scarlet][[{0}][] per riprendere a costruire
showui = Controlli nascosti.\nPremi [accent][[{0}][] per mostrarli. showui = Interfaccia utente nascosta.\nPremere [accent][[{0}][] per mostrarla nuovamente.
wave = [accent]Ondata {0} wave = [accent]Ondata {0}
wave.cap = [accent]Ondata {0}/{1} wave.cap = [accent]Ondata {0}/{1}
wave.waiting = [lightgray]Ondata tra {0} wave.waiting = [lightgray]Ondata tra {0}
@@ -309,8 +310,8 @@ wave.enemies = [lightgray]{0} Nemici Rimasti
wave.enemycores = [accent]{0}[lightgray] Nuclei Nemici wave.enemycores = [accent]{0}[lightgray] Nuclei Nemici
wave.enemycore = [accent]{0}[lightgray] Nucleo Nemico wave.enemycore = [accent]{0}[lightgray] Nucleo Nemico
wave.enemy = [lightgray]{0} Nemico Rimasto wave.enemy = [lightgray]{0} Nemico Rimasto
wave.guardianwarn = Guardiano in arrivo tra [accent]{0}[] ondate. wave.guardianwarn = Il Guardiano arriverà in [accent]{0}[] ondate.
wave.guardianwarn.one = Guardiano in arrivo tra [accent]{0}[] ondata. wave.guardianwarn.one = Il Guardiano arriverà in [accent]{0}[] ondata.
loadimage = Carica immagine loadimage = Carica immagine
saveimage = Salva Immagine saveimage = Salva Immagine
unknown = Sconosciuto unknown = Sconosciuto
@@ -356,7 +357,7 @@ waves.remove = Rimuovi
waves.never = <mai> waves.never = <mai>
waves.every = sempre waves.every = sempre
waves.waves = ondata/e waves.waves = ondata/e
waves.perspawn = per spawn waves.perspawn = per generazione
waves.shields = scudi/ondata waves.shields = scudi/ondata
waves.to = a waves.to = a
waves.guardian = Guardiano waves.guardian = Guardiano
@@ -368,8 +369,8 @@ waves.invalid = Ondate dagli appunti non valide.
waves.copied = Ondate copiate. waves.copied = Ondate copiate.
waves.none = Nessun nemico impostato.\nNota che le disposizioni di ondate vuote verranno automaticamente rimpiazzate con la disposizione predefinita. waves.none = Nessun nemico impostato.\nNota che le disposizioni di ondate vuote verranno automaticamente rimpiazzate con la disposizione predefinita.
#these are intentionally in lower case #Questi sono intenzionalmente in minuscolo
wavemode.counts = wavemode.counts = conteggi
wavemode.totals = totali wavemode.totals = totali
wavemode.health = salute wavemode.health = salute
@@ -438,8 +439,8 @@ toolmode.drawteams.description = Disegna squadre al posto di blocchi.
filters.empty = [lightgray]Nessun filtro! Aggiungine uno cliccando il tasto sotto. filters.empty = [lightgray]Nessun filtro! Aggiungine uno cliccando il tasto sotto.
filter.distort = Modifica filter.distort = Modifica
filter.noise = Rumore filter.noise = Rumore
filter.enemyspawn = Seleziona Spawn Nemico filter.enemyspawn = Seleziona Punto di Generazione del Nemico
filter.spawnpath = Percorso per lo Spawn filter.spawnpath = Percorso per il Punto di Generazione
filter.corespawn = Seleziona Nucleo filter.corespawn = Seleziona Nucleo
filter.median = Mediana filter.median = Mediana
filter.oremedian = Mediana Minerali filter.oremedian = Mediana Minerali
@@ -464,7 +465,7 @@ filter.option.amount = Quantità
filter.option.block = Blocco filter.option.block = Blocco
filter.option.floor = Terreno filter.option.floor = Terreno
filter.option.flooronto = Terreno Mirato filter.option.flooronto = Terreno Mirato
filter.option.target = Obbiettivo filter.option.target = Obiettivo
filter.option.wall = Muro filter.option.wall = Muro
filter.option.ore = Minerale filter.option.ore = Minerale
filter.option.floor2 = Terreno Secondario filter.option.floor2 = Terreno Secondario
@@ -501,7 +502,7 @@ requirement.produce = Produci {0}
requirement.capture = Cattura {0} requirement.capture = Cattura {0}
launch.text = Lancia launch.text = Lancia
research.multiplayer = Solo l'host può scoprire gli oggetti. research.multiplayer = Solo l'host può scoprire gli oggetti.
map.multiplayer = Only the host can view sectors. map.multiplayer = Solo l'host può vedere i settori.
uncover = Scopri uncover = Scopri
configure = Configura Equipaggiamento configure = Configura Equipaggiamento
@@ -511,14 +512,14 @@ bannedblocks = Blocchi Banditi
addall = Aggiungi Tutti addall = Aggiungi Tutti
launch.from = Partenza da: [accent]{0} launch.from = Partenza da: [accent]{0}
launch.destination = Destinazione: {0} launch.destination = Destinazione: {0}
configure.invalid = Il valore dev'essere un numero compresto tra 0 e {0}. configure.invalid = Il valore deve essere un numero compresto tra 0 e {0}.
add = Aggiungi add = Aggiungi...
boss.health = Vita del Guardiano boss.health = Vita del Guardiano
connectfail = [scarlet]Impossibile connettersi al server:\n\n[accent] {0} connectfail = [scarlet]Impossibile connettersi al server:\n\n[accent] {0}
error.unreachable = Server irraggiungibile. L'indirizzo è scritto correttamente? error.unreachable = Server irraggiungibile. L'indirizzo è scritto correttamente?
error.invalidaddress = Indirizzo non valido. error.invalidaddress = Indirizzo non valido.
error.timedout = Timeout!\nAssicurati che l'host abbia il port forwarding impostato e che l'indirizzo sia corretto! error.timedout = Tempo scaduto!\nAssicurati che l'host abbia il port forwarding impostato e che l'indirizzo sia corretto!
error.mismatch = Errore dei pacchetti:\nPossibile discordanza della versione client/server.\nAssicurati che tu e l'host possiediate l'ultima versione di Mindustry! error.mismatch = Errore dei pacchetti:\nPossibile discordanza della versione client/server.\nAssicurati che tu e l'host possiediate l'ultima versione di Mindustry!
error.alreadyconnected = Già connesso. error.alreadyconnected = Già connesso.
error.mapnotfound = Mappa non trovata! error.mapnotfound = Mappa non trovata!
@@ -528,18 +529,18 @@ error.bloom = Errore dell'avvio delle shaders.\nIl tuo dispositivo potrebbe non
weather.rain.name = Pioggia weather.rain.name = Pioggia
weather.snow.name = Neve weather.snow.name = Neve
weather.sandstorm.name = Tempesta di sabbia weather.sandstorm.name = Tempesta di Sabbia
weather.sporestorm.name = Tempesta di spore weather.sporestorm.name = Tempesta di Spore
weather.fog.name = Nebbia weather.fog.name = Nebbia
sectors.unexplored = [lightgray]Inesplorato sectors.unexplored = [lightgray]Inesplorato
sectors.resources = Risorse: sectors.resources = Risorse:
sectors.production = Produzione: sectors.production = Produzione:
sectors.export = Esportazione: sectors.export = Merce:
sectors.time = Tempo di Gioco: sectors.time = Tempo:
sectors.threat = Minaccia: sectors.threat = Minaccia:
sectors.wave = Ondata: sectors.wave = Ondata:
sectors.stored = Immagazzinate: sectors.stored = Immagazzinato:
sectors.resume = Riprendi sectors.resume = Riprendi
sectors.launch = Lancia sectors.launch = Lancia
sectors.select = Seleziona sectors.select = Seleziona
@@ -548,21 +549,21 @@ sectors.rename = Rinomina Settore
sectors.enemybase = [scarlet]Base Nemica sectors.enemybase = [scarlet]Base Nemica
sectors.vulnerable = [scarlet]Vulnerabile sectors.vulnerable = [scarlet]Vulnerabile
sectors.underattack = [scarlet]Sotto attacco! [accent]{0}% danneggiato sectors.underattack = [scarlet]Sotto attacco! [accent]{0}% danneggiato
sectors.survives = [accent]Sopravissuto a {0} ondate sectors.survives = [accent]Sopravvissuto a {0} ondate
sectors.go = Lancia sectors.go = Lancia
sector.curcapture = Settore Catturato sector.curcapture = Settore Catturato
sector.curlost = Settore Perso sector.curlost = Settore Perso
sector.missingresources = [scarlet]Risorse del Nucleo insufficienti sector.missingresources = [scarlet]Risorse del Nucleo Insufficienti
sector.attacked = Settore [accent]{0}[white] sotto attacco! sector.attacked = Settore [accent]{0}[white] sotto attacco!
sector.lost = Settore [accent]{0}[white] perso! sector.lost = Settore [accent]{0}[white] perso!
#note: the missing space in the line below is intentional #nota: lo spazio mancante nella linea sotto è intenzionale
sector.captured = Settore [accent]{0}[white]catturato! sector.captured = Settore [accent]{0}[white]catturato!
threat.low = Bassa threat.low = Bassa
threat.medium = Media threat.medium = Media
threat.high = Alta threat.high = Alta
threat.extreme = Estrema threat.extreme = Estrema
threat.eradication = Catrastofica threat.eradication = Eradicazione
planets = Pianeti planets = Pianeti
@@ -574,34 +575,34 @@ sector.groundZero.name = Terreno Zero
sector.craters.name = Crateri sector.craters.name = Crateri
sector.frozenForest.name = Foresta Ghiacciata sector.frozenForest.name = Foresta Ghiacciata
sector.ruinousShores.name = Rive in Rovina sector.ruinousShores.name = Rive in Rovina
sector.stainedMountains.name = Montagne Colorate sector.stainedMountains.name = Montagne Macchiate
sector.desolateRift.name = Canyon Desolato sector.desolateRift.name = Spaccatura Desolata
sector.nuclearComplex.name = Complesso Nucleare sector.nuclearComplex.name = Complesso di Produzione Nucleare
sector.overgrowth.name = Supercrescita sector.overgrowth.name = Profilassi
sector.tarFields.name = Distese di Catrame sector.tarFields.name = Distese di Catrame
sector.saltFlats.name = Saline sector.saltFlats.name = Saline
sector.fungalPass.name = Passaggio Fungino sector.fungalPass.name = Passo Fungino
sector.biomassFacility.name = Centrale a Biomasse sector.biomassFacility.name = Struttura di Sintesi di Biomassa
sector.windsweptIslands.name = Isole Ventilate sector.windsweptIslands.name = Isole Ventose
sector.extractionOutpost.name = Avamposto di Estrazione sector.extractionOutpost.name = Avamposto di Estrazione Mineraria
sector.planetaryTerminal.name = Base di Lancio Planetario sector.planetaryTerminal.name = Terminale di Lancio Planetario
sector.groundZero.description = Il posto perfetto per ricominciare. Minaccia nemica bassa. Poche risorse.\nRaccogli più rame e più piombo che puoi.\nContinua. sector.groundZero.description = La posizione ottimale per ricominciare. Bassa minaccia nemica. Poche risorse.\nRaccogli quanto più piombo e rame possibile.\nParti.
sector.frozenForest.description = Qnche qui, vicino alle montagne, le spore si sono diffuse. Le gelide temperature non possono trattenerle per eterno.\n\nEntra nel mondo dell'energia. Costruisci i generatori a combustibile. Impara ad usare i riparatori. sector.frozenForest.description = Anche qui, più vicino alle montagne, le spore si sono diffuse. Le temperature gelide non possono contenerle per sempre.\n\nInizia l'avventura nell'energia. Costruisci generatori a combustione. Impara a usare i riparatori.
sector.saltFlats.description = Ai confini del deserto si trovano le Saline. Poche risorse sono presenti su questi suoli.\n\nI nemici hanno eretto un complesso di immagazzinamento delle risorse qui. Distruggi il loro nucleo. Non lasciare niente in piedi. sector.saltFlats.description = Alla periferia nel deserto si trovano le saline. Si possono ricavare poche risorse in questa posizione.\n\nIl nemico ha costruito un complesso di immagazzinamento delle risorse qui. Elimina il loro nucleo. Non lasciare niente in piedi.
sector.craters.description = L'acqua si è accumulata nel cratere, reliquia delle antiche guerre. Riconquista quest'area. Raccogli la sabbia. Fondi il vetro metallico. Pompa l'acqua per raffreddare trivelle e torrette. sector.craters.description = L'acqua si è accumulata in questo cratere, reliquia delle antiche guerre. Bonifica l'area. Raccogli la sabbia. Fondi il vetro metallico. Pompa acqua per raffreddare torrette e trivelle.
sector.ruinousShores.description = Oltre le distese c'è il litorale. Una volta questo posto ospitava una distesa di difese costiere. Non è rimasto molto. Solo le più semplici strutture difensive sono rimaste illese, tutto il resto è stato ridotto in rottami.\nContinua l'espansione verso l'esterno. Riscopri la tecnologia. sector.ruinousShores.description = Oltre le distese, c'è il litorale. Una volta, questa posizione ospitava uno schieramento difensivo sulla costa. Non ne rimane molto. Solo le strutture di difesa più elementari sono rimaste intatte, tutto il resto è stato ridotto a rottami.\nContinua l'espansione verso l'esterno. Riscopri la tecnologia.
sector.stainedMountains.description = Nell'entroterra si trovano le montagne non ancora contaminate dalle spore.\nEstrai l'abbondante titanio di quest'area. Impara ad usarlo.\n\nLa presenza nemica è maggiore qui. Non dare tempo al nemico di mandare le sue unità più forti. sector.stainedMountains.description = Oltre l'entroterra ci sono le montagne, ma non contaminato da spore.\nEstrai l'abbondante titanio in questa zona. Impara come usarlo.\n\nQui la presenza nemica è maggiore. Non dare loro il tempo di inviare le loro unità più forti.
sector.overgrowth.description = Quest'area, più vicina alle spore, è invasa dalla vegetazione.\nIl nemico ha costruito un avanposto qui. Fabbrica l'unità Mace. Distruggilo. sector.overgrowth.description = Questa zona è ricoperta di vegetazione, più vicina alla fonte delle spore.\nIl nemico ha stabilito un avamposto qui. Costruisci le unità Titano. Distruggilo. Recupera ciò che è stato perso.
sector.tarFields.description = Ai confini di una zona petrolifera, tra le montagne e il deserto. Una delle poche aree con riserve di catrame utilizzabili.\nAnche se abbandonata, quest'area ha alcuni nemici pericolosi nelle vicinanze. Non sottovalutarli.\n\n[lightgray]Scopri la tecnologia per raffinare il petrolio, se riesci. sector.tarFields.description = La periferia di una zona adibita di produzione di petrolio, tra le montagne e il deserto. Una delle poche aree con riserve di catrame utilizzabili.\nAnche se abbandonata, quest'area ha alcune pericolose forze nemiche nelle vicinanze. Non sottovalutarli.\n\n[lightgray]Scopri tecnologie di raffinazione del petrolio, se possibile.
sector.desolateRift.description = Una zona pericolosissima. Risorse abbondanti ma poco spazio. Alto è il riscio di distruzione. Lascia questa zona il prima possibile. Non lasciarti ingannare dalla lunga pausa tra le ondate nemiche. sector.desolateRift.description = Una zona estremamente pericolosa. Risorse abbondanti, ma poco spazio. Alto rischio di distruzione. Parti il prima possibile. Non lasciarti ingannare dalla lunga distanza tra gli attacchi nemici.
sector.nuclearComplex.description = Un ex impianto per la produzione e la lavorazione del torio, ridotto a rudere.\n[lightgray]Scopri il torio e usalo in tutti i modi possibili.\n\nI nemici sono molto presenti in quest'area e costantemente alla ricerca di aggressori. sector.nuclearComplex.description = Una vecchia struttura per la produzione e la lavorazione del torio, ridotta in rovina.\n[lightgray] Fai scoperte sul torio e sui suoi usi.\n\nIl nemico è presente in gran numero, costantemente alla ricerca di attaccanti.
sector.fungalPass.description = Un'area di transizione tra le montagne alte e quelle più basse invasa dalle spore. È presente una piccola base di ricognizione nemica.\nDistruggila.\nUsa il Dagger e il Crawler. Radi al suolo i due nuclei. sector.fungalPass.description = Una zona di transizione tra le alte montagne e le terre inferiori, piene di spore. Una piccola base di ricognizione nemica si trova qui.\nDistruggila.\nUsa le unità come Pugnalatori e Strisciatori. Togli i due nuclei.
sector.biomassFacility.description = L'origine delle spore. Questa è la centrale dove sono state scoperte e prodotte inizialmente.\nScopri le tecnologie utilizzate in essa. Coltivale per produrre plastiche e carburanti.\n\n[lightgray]Prima di essere dismessa, le spore furono rilasciate. Niente nell'ecosistema locale è riuscito a sopravvivere ad un organismo così invasivo. sector.biomassFacility.description = L'origine delle spore. Questa è la struttura nella quale loro sono state studiate ed inizialmente prodotte.\nScopri la tecnologia contenuta all'interno. Coltiva spore per la produzione di carburante e plastica.\n\n[lightgray]Da fallimento di questa struttura, le spore sono state rilasciate. Nulla nell'ecosistema locale potrebbe competere con un orgamismo talmente invasivo.
sector.windsweptIslands.description = Oltre la costa si trova questo arcipelago. Fonti affermano che in questi luoghi, un tempo, si producesse [accent]Plastanio[] in apposite fabbriche.\n\nRespingi le unità navali nemiche. Costruisci una base sulle isole. Scopri queste fabbriche. sector.windsweptIslands.description = Oltre la fascia costiera si trova questo remoto arcipelago. Le registrazioni mostrano che una volta avevano [accent]Plastanio[]-producendo strutture.\n\nRespingi le unità navali nemiche. Stabilisci una base nelle isole. Scopri queste fabbriche.
sector.extractionOutpost.description = Un avamposto remoto, costruito dai nemici per lanciare le risorse su altri settori.\n\nI trasporti intersettoriali sono una tecnologia essenziale per le missioni future. Distruggi la base. Scopri i loro Ascensori Spaziali. sector.extractionOutpost.description = Un avamposto remoto, costruito dai nemici con l'obiettivo di lanciare risorse in altri settori.\n\nLa tecnologia di trasposto a settori-incrociati è essenziale per un ulteriore conquista. Distruggi la base. scopri la loro Rampa di Lancio.
sector.impact0078.description = Qui giaciono i resti della prima nave spaziale mai entrata in questo sistema.\n\nRecupera tutto ciò che puoi dai rottami. Scopri qualsiasi tecnologia conservatasi nel tempo. sector.impact0078.description = Qui giaciono i resti della nave da trasporto interstellare che fu la prima ad entrare in questo sistema.\n\nRecupera per quanto possibile dal relitto. Scopri qualsiasi tecnologia intatta.
sector.planetaryTerminal.description = L'obbiettivo finale.\n\nQuesta base costiera contiene una struttura in grado di lanciare i Nuclei su altri pianeti. È estremamente protetta.\n\nFabbrica le unità navali. Sconfiggi i nemici il più velocemente possibile. Scopri la struttura per il lancio. sector.planetaryTerminal.description = Il bersaglio finale.\n\nQuesta base costiera contiene una struttura capace di lanciare Nuclei ai pianeti locali. È estremamente protetto.\n\nProduci unità navali. Elimina il nemico il più rapidamente possibile. Scopri la struttura di lancio.
settings.language = Lingua settings.language = Lingua
settings.data = Dati di Gioco settings.data = Dati di Gioco
@@ -633,17 +634,17 @@ unit.nobuild = [scarlet]L'unità non può costruire
lastaccessed = [lightgray]Ultimo Accesso: {0} lastaccessed = [lightgray]Ultimo Accesso: {0}
block.unknown = [lightgray]??? block.unknown = [lightgray]???
stat.description = Descrizione stat.description = Obiettivo
stat.input = Ingresso stat.input = Ingresso
stat.output = Uscita stat.output = Uscita
stat.booster = Potenziamenti stat.booster = Potenziamenti
stat.tiles = Terreni Richiesti: stat.tiles = Blocchi Richiesti
stat.affinities = Affinità stat.affinities = Affinità
stat.powercapacity = Capacità Energetica stat.powercapacity = Capacità Energetica
stat.powershot = Energia/Colpo stat.powershot = Energia/Colpo
stat.damage = Danno stat.damage = Danno
stat.targetsair = Nemici Aerei stat.targetsair = Attacca Nemici Aerei
stat.targetsground = Nemici Terreni stat.targetsground = Attacca Nemici Terreni
stat.itemsmoved = Velocità stat.itemsmoved = Velocità
stat.launchtime = Tempo tra Lanci stat.launchtime = Tempo tra Lanci
stat.shootrange = Raggio stat.shootrange = Raggio
@@ -655,10 +656,10 @@ stat.linkrange = Raggio di Collegamento
stat.instructions = Istruzioni stat.instructions = Istruzioni
stat.powerconnections = Connessioni Massime stat.powerconnections = Connessioni Massime
stat.poweruse = Consumo Energetico stat.poweruse = Consumo Energetico
stat.powerdamage = Consumo Energetico/Danno stat.powerdamage = Energia/Danno
stat.itemcapacity = Capacità Oggetti stat.itemcapacity = Capacità Oggetti
stat.memorycapacity = Memoria stat.memorycapacity = Capacità di Memoria
stat.basepowergeneration = Energia Generata stat.basepowergeneration = Generazione Minina di Energia
stat.productiontime = Tempo di Produzione stat.productiontime = Tempo di Produzione
stat.repairtime = Tempo di Riparazione Completa stat.repairtime = Tempo di Riparazione Completa
stat.weapons = Armi stat.weapons = Armi
@@ -673,37 +674,37 @@ stat.health = Salute
stat.buildtime = Tempo di Costruzione stat.buildtime = Tempo di Costruzione
stat.maxconsecutive = Limite Consecutive stat.maxconsecutive = Limite Consecutive
stat.buildcost = Costo di Costruzione stat.buildcost = Costo di Costruzione
stat.inaccuracy = Precisione stat.inaccuracy = Inaccuratezza
stat.shots = Colpi stat.shots = Colpi
stat.reload = Colpi/Secondo stat.reload = Cadenza
stat.ammo = Munizioni stat.ammo = Munizioni
stat.shieldhealth = Salute Scudo stat.shieldhealth = Integrità Scudo
stat.cooldowntime = Tempo di Recupero stat.cooldowntime = Tempo Raffreddamento
stat.explosiveness = Esplosività stat.explosiveness = Esplosività
stat.basedeflectchance = Probabilità di Deviazione stat.basedeflectchance = Probabilità di Deviazione
stat.lightningchance = Probabilità dei Fulmini stat.lightningchance = Probabilità di Fulmine
stat.lightningdamage = Danno Fulmini stat.lightningdamage = Danno Fulmine
stat.flammability = Infiammabilità stat.flammability = Infiammabilità
stat.radioactivity = Radioattività stat.radioactivity = Radioattività
stat.heatcapacity = Capacità Termica stat.heatcapacity = Capacità Termica
stat.viscosity = Viscosità stat.viscosity = Viscosità
stat.temperature = Temperatura stat.temperature = Temperatura
stat.speed = Velocità stat.speed = Velocità
stat.buildspeed = Velcità di Costruzione stat.buildspeed = Velocità Costruzione
stat.minespeed = Velocità di Scavaggio stat.minespeed = Velocità Estrazione
stat.minetier = Livello Trivella stat.minetier = Livello Estrazione
stat.payloadcapacity = Capacità di Carico stat.payloadcapacity = Capacità di Carico
stat.commandlimit = Limite di Comando stat.commandlimit = Limite di Comando
stat.abilities = Abilità stat.abilities = Abilità
stat.canboost = Può Potenziarsi stat.canboost = Capace di Potenziamento
stat.flying = Volo stat.flying = Volo
ability.forcefield = Campo di Forza ability.forcefield = Campo di Forza
ability.repairfield = Ripara Campo ability.repairfield = Campo Riparativo
ability.statusfield = Campo di Stato ability.statusfield = Campo di Stato
ability.unitspawn = {0} Fabbrica ability.unitspawn = {0} Fabbrica
ability.shieldregenfield = Campo di Rigenerazione Scudo ability.shieldregenfield = Campo di Rigenerazione Scudo
ability.movelightning = Fulmini nel Movimento ability.movelightning = Movimento Fulminante
bar.drilltierreq = Miglior Trivella Richiesta bar.drilltierreq = Miglior Trivella Richiesta
bar.noresources = Risorse Mancanti bar.noresources = Risorse Mancanti
@@ -732,7 +733,7 @@ units.processorcontrol = [lightgray]Controllato dal Processore
bullet.damage = [stat]{0}[lightgray] danno bullet.damage = [stat]{0}[lightgray] danno
bullet.splashdamage = [stat]{0}[lightgray] danno ad area ~[stat] {1}[lightgray] blocchi bullet.splashdamage = [stat]{0}[lightgray] danno ad area ~[stat] {1}[lightgray] blocchi
bullet.incendiary = [stat]incendiario bullet.incendiary = [stat]incendiario
bullet.sapping = [stat]indebolente bullet.sapping = [stat]debilitante
bullet.homing = [stat]autoguidato bullet.homing = [stat]autoguidato
bullet.shock = [stat]stordente bullet.shock = [stat]stordente
bullet.frag = [stat]a frammentazione bullet.frag = [stat]a frammentazione
@@ -780,7 +781,7 @@ setting.hints.name = Suggerimenti
setting.flow.name = Visualizza Portata Nastri/Condotti setting.flow.name = Visualizza Portata Nastri/Condotti
setting.backgroundpause.name = Metti in pausa quando in background setting.backgroundpause.name = Metti in pausa quando in background
setting.buildautopause.name = Pausa Automatica nella Costruzione setting.buildautopause.name = Pausa Automatica nella Costruzione
setting.animatedwater.name = Superfici Animate setting.animatedwater.name = Fluidi Animati
setting.animatedshields.name = Scudi Animati setting.animatedshields.name = Scudi Animati
setting.antialias.name = Antialias[lightgray] (richiede riavvio)[] setting.antialias.name = Antialias[lightgray] (richiede riavvio)[]
setting.playerindicators.name = Indicatori Giocatori setting.playerindicators.name = Indicatori Giocatori
@@ -811,11 +812,11 @@ setting.milliseconds = {0} millisecondi
setting.fullscreen.name = Schermo Intero setting.fullscreen.name = Schermo Intero
setting.borderlesswindow.name = Finestra Senza Bordi[lightgray] (potrebbe richiedere il riavvio) setting.borderlesswindow.name = Finestra Senza Bordi[lightgray] (potrebbe richiedere il riavvio)
setting.fps.name = Mostra FPS e Ping setting.fps.name = Mostra FPS e Ping
setting.smoothcamera.name = Inquadratura Fluida setting.smoothcamera.name = Visuale fluida
setting.vsync.name = VSync setting.vsync.name = VSync
setting.pixelate.name = Effetto Pixel[lightgray] (disabilita le animazioni) setting.pixelate.name = Pixellato
setting.minimap.name = Mostra Minimappa setting.minimap.name = Mostra Minimappa
setting.coreitems.name = Visualizza Oggetti nel Nucleo setting.coreitems.name = Mostra Oggetti Nucleo (WIP)
setting.position.name = Mostra Posizione Giocatori setting.position.name = Mostra Posizione Giocatori
setting.musicvol.name = Volume Musica setting.musicvol.name = Volume Musica
setting.atmosphere.name = Mostra Atmosfera Pianeta setting.atmosphere.name = Mostra Atmosfera Pianeta
@@ -847,7 +848,7 @@ command.rally = Guardia
command.retreat = Ritirata command.retreat = Ritirata
command.idle = Inattivo command.idle = Inattivo
placement.blockselectkeys = \n[lightgray]Tasto: [{0}, placement.blockselectkeys = \n[lightgray]Tasto: [{0},
keybind.respawn.name = Rigenerati keybind.respawn.name = Rinasci
keybind.control.name = Controlla Unità keybind.control.name = Controlla Unità
keybind.clear_building.name = Pulisci Costruzione keybind.clear_building.name = Pulisci Costruzione
keybind.press = Premi un tasto... keybind.press = Premi un tasto...
@@ -915,9 +916,9 @@ mode.sandbox.name = Creativa
mode.sandbox.description = Risorse infinite e nessun timer per le ondate. mode.sandbox.description = Risorse infinite e nessun timer per le ondate.
mode.editor.name = Editor mode.editor.name = Editor
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = Lotta contro altri giocatori. mode.pvp.description = Combatti contro altri giocatori in locale.\n[gray]Per giocare la mappa sono necessari almeno due nuclei di colore diverso.
mode.attack.name = Schermaglia mode.attack.name = Schermaglia
mode.attack.description = Distruggi la base nemica. \n[gray]Richiede un Nucleo rosso nella mappa per essere giocata. mode.attack.description = Distruggi la base nemica. \n[gray]Richiede un nucleo rosso nella mappa per essere giocata.
mode.custom = Regole Personalizzate mode.custom = Regole Personalizzate
rules.infiniteresources = Risorse Infinite rules.infiniteresources = Risorse Infinite
@@ -926,9 +927,9 @@ rules.schematic = Schematiche Consentite
rules.wavetimer = Timer Ondate rules.wavetimer = Timer Ondate
rules.waves = Ondate rules.waves = Ondate
rules.attack = Modalità Attacco rules.attack = Modalità Attacco
rules.buildai = AI Costruzioni rules.buildai = Costruzioni dell'AI
rules.enemyCheat = Risorse AI Infinite rules.enemyCheat = Risorse AI (Team Rosso) Infinite
rules.blockhealthmultiplier = Moltiplicatore Danno Blocco rules.blockhealthmultiplier = Moltiplicatore Salute Blocco
rules.blockdamagemultiplier = Moltiplicatore Danno Blocco rules.blockdamagemultiplier = Moltiplicatore Danno Blocco
rules.unitbuildspeedmultiplier = Moltiplicatore Velocità Costruzione Unità rules.unitbuildspeedmultiplier = Moltiplicatore Velocità Costruzione Unità
rules.unithealthmultiplier = Moltiplicatore Vita Unità rules.unithealthmultiplier = Moltiplicatore Vita Unità
@@ -983,41 +984,41 @@ liquid.slag.name = Scoria
liquid.oil.name = Petrolio liquid.oil.name = Petrolio
liquid.cryofluid.name = Criofluido liquid.cryofluid.name = Criofluido
unit.dagger.name = Dagger unit.dagger.name = Pugnalatore
unit.mace.name = Mace unit.mace.name = Randellatore
unit.fortress.name = Fortress unit.fortress.name = Fortezza
unit.nova.name = Nova unit.nova.name = Scintilla
unit.pulsar.name = Pulsar unit.pulsar.name = Folgore
unit.quasar.name = Quasar unit.quasar.name = Lampo
unit.crawler.name = Crawler unit.crawler.name = Strisciatore
unit.atrax.name = Atrax unit.atrax.name = Atrax
unit.spiroct.name = Spiroct unit.spiroct.name = Aracnideto
unit.arkyid.name = Arkyid unit.arkyid.name = Treppiede
unit.toxopid.name = Toxopid unit.toxopid.name = Cataclisma
unit.flare.name = Flare unit.flare.name = Sentinella
unit.horizon.name = Horizon unit.horizon.name = Orizzonte
unit.zenith.name = Zenith unit.zenith.name = Apice
unit.antumbra.name = Antumbra unit.antumbra.name = Penombra
unit.eclipse.name = Eclipse unit.eclipse.name = Eclisse
unit.mono.name = Mono unit.mono.name = Minatore
unit.poly.name = Poly unit.poly.name = Costruttore
unit.mega.name = Mega unit.mega.name = Riparatore
unit.quad.name = Quad unit.quad.name = Bombardiere
unit.oct.name = Oct unit.oct.name = Curatore
unit.risso.name = Risso unit.risso.name = Corvetta
unit.minke.name = Minke unit.minke.name = Cacciatorpediniere
unit.bryde.name = Bryde unit.bryde.name = Incrociatore
unit.sei.name = Sei unit.sei.name = Nave da Guerra
unit.omura.name = Omura unit.omura.name = Portaerei
unit.alpha.name = Alpha unit.alpha.name = Alpha
unit.beta.name = Beta unit.beta.name = Beta
unit.gamma.name = Gamma unit.gamma.name = Gamma
unit.scepter.name = Scepter unit.scepter.name = Infiltratore
unit.reign.name = Reign unit.reign.name = Conquistatore
unit.vela.name = Vela unit.vela.name = Radiante
unit.corvus.name = Corvus unit.corvus.name = Disgregatore
block.resupply-point.name = Rifornitore block.resupply-point.name = Punto di Rifornimento
block.parallax.name = Parallasse block.parallax.name = Parallasse
block.cliff.name = Scogliera block.cliff.name = Scogliera
block.sand-boulder.name = Masso di Sabbia block.sand-boulder.name = Masso di Sabbia
@@ -1029,11 +1030,11 @@ block.salt.name = Sale
block.salt-wall.name = Muro di Sale block.salt-wall.name = Muro di Sale
block.pebbles.name = Ciottoli block.pebbles.name = Ciottoli
block.tendrils.name = Viticci block.tendrils.name = Viticci
block.sand-wall.name = Muro Di Sabbia block.sand-wall.name = Muro di Sabbia
block.spore-pine.name = Pino di Spore block.spore-pine.name = Pino di Spore
block.spore-wall.name = Muro di Spore block.spore-wall.name = Muro di Spore
block.boulder.name = Masso block.boulder.name = Masso
block.snow-boulder.name = Masso Innevato block.snow-boulder.name = Masso di Neve
block.snow-pine.name = Pino Innevato block.snow-pine.name = Pino Innevato
block.shale.name = Scisto block.shale.name = Scisto
block.shale-boulder.name = Masso di Scisto block.shale-boulder.name = Masso di Scisto
@@ -1050,7 +1051,7 @@ block.kiln.name = Forno
block.graphite-press.name = Pressa per Grafite block.graphite-press.name = Pressa per Grafite
block.multi-press.name = Multi Pressa block.multi-press.name = Multi Pressa
block.constructing = {0}\n[lightgray](In Costruzione) block.constructing = {0}\n[lightgray](In Costruzione)
block.spawn.name = Spawn Nemico block.spawn.name = Punto di Generazione Nemico
block.core-shard.name = Nucleo: Frammento block.core-shard.name = Nucleo: Frammento
block.core-foundation.name = Nucleo: Fondamento block.core-foundation.name = Nucleo: Fondamento
block.core-nucleus.name = Nucleo: Kernel block.core-nucleus.name = Nucleo: Kernel
@@ -1075,7 +1076,7 @@ block.ice-snow.name = Neve Ghiacciata
block.stone-wall.name = Muro di Pietra block.stone-wall.name = Muro di Pietra
block.ice-wall.name = Muro di Ghiaccio block.ice-wall.name = Muro di Ghiaccio
block.snow-wall.name = Muro di Neve block.snow-wall.name = Muro di Neve
block.dune-wall.name = Duna block.dune-wall.name = Muro di Duna
block.pine.name = Pino block.pine.name = Pino
block.dirt.name = Terra block.dirt.name = Terra
block.dirt-wall.name = Muro di Terra block.dirt-wall.name = Muro di Terra
@@ -1203,36 +1204,36 @@ block.arc.name = Arco Elettrico
block.rtg-generator.name = Generatore RTG block.rtg-generator.name = Generatore RTG
block.spectre.name = Spettro block.spectre.name = Spettro
block.meltdown.name = Fusione block.meltdown.name = Fusione
block.foreshadow.name = Ombratore block.foreshadow.name = Tenebra
block.container.name = Contenitore block.container.name = Contenitore
block.launch-pad.name = Ascensore Spaziale block.launch-pad.name = Ascensore Spaziale
block.launch-pad-large.name = Ascensore Spaziale Avanzato block.launch-pad-large.name = Ascensore Spaziale Avanzato
block.segment.name = Frazionatore block.segment.name = Segmentatore
block.command-center.name = Centro di Controllo block.command-center.name = Centro di Controllo
block.ground-factory.name = Fabbrica Terrena block.ground-factory.name = Fabbrica Terrestre
block.air-factory.name = Fabbrica Aerea block.air-factory.name = Fabbrica Aerea
block.naval-factory.name = Fabbrica Navale block.naval-factory.name = Fabbrica Navale
block.additive-reconstructor.name = Ricostruttore Additivo block.additive-reconstructor.name = Ricostruttore Adattivo
block.multiplicative-reconstructor.name = Ricostruttore Moltiplicativo block.multiplicative-reconstructor.name = Ricostruttore Moltiplicativo
block.exponential-reconstructor.name = Ricostruttore Esponenziale block.exponential-reconstructor.name = Ricostruttore Esponenziale
block.tetrative-reconstructor.name = Ricostruttore Tetrativo block.tetrative-reconstructor.name = Ricostruttore Tetrattivo
block.payload-conveyor.name = Trasportatore di Massa block.payload-conveyor.name = Trasportatore di Massa
block.payload-router.name = Distributore di Carico block.payload-router.name = Distributore di Carico
block.disassembler.name = Disassemblatore block.disassembler.name = Disassemblatore
block.silicon-crucible.name = Fornace di Silicio block.silicon-crucible.name = Crogiolo per Silicio
block.overdrive-dome.name = Overdrive Dome block.overdrive-dome.name = Cupola di Overdrive
#experimental, may be removed #sperimentale, potrebbero esseri rimossi
block.block-forge.name = Forgia per Blocchi block.block-forge.name = Forgia per Blocco
block.block-loader.name = Caricatore per Blocchi block.block-loader.name = Caricatore Blocchi
block.block-unloader.name = Scaricatore per Blocchi block.block-unloader.name = Scaricatore Blocchi
block.interplanetary-accelerator.name = Acceleratore Interplanetare block.interplanetary-accelerator.name = Acceleratore Interplanetario
block.switch.name = Interruttore block.switch.name = Interruttore
block.micro-processor.name = Micro Processore block.micro-processor.name = Micro Processore
block.logic-processor.name = Processore Logico block.logic-processor.name = Processore Logico
block.hyper-processor.name = Super Processore block.hyper-processor.name = Iper Processore
block.logic-display.name = Display Logico block.logic-display.name = Display Logico
block.large-logic-display.name = Display Logico Grande block.large-logic-display.name = Grande Display Logico
block.memory-cell.name = Cella di Memoria block.memory-cell.name = Cella di Memoria
block.memory-bank.name = Banca di Memoria block.memory-bank.name = Banca di Memoria
@@ -1246,44 +1247,46 @@ team.purple.name = viola
hint.skip = Salta hint.skip = Salta
hint.desktopMove = Usa [accent][[WASD][] per muoverti. hint.desktopMove = Usa [accent][[WASD][] per muoverti.
hint.zoom = [accent]Scorri[] per ingrandire/rimpicciolire. hint.zoom = [accent]Scorri[] per aumentare o ridurre la visuale.
hint.mine = Spostati vicino al \uf8c4 rame e [accent]cliccaci[] sopra per scavarlo manualmente. hint.mine = Muoviti vicino il \uf8c4 minerale di rame e[accent]toccalo[] per minare manualmente.
hint.desktopShoot = [accent][[Tasto sinistro][] per sparare. hint.desktopShoot = [accent][[Click-sinistro][] per sparare.
hint.depositItems = Per scaricare degli oggetti, trascinali dalla tua navicella al nucleo. hint.depositItems = Per trasferire oggetti, trascinadalla tua nave al nucleo.
hint.respawn = Per rigenerarti come navicella, premi [accent][[V][]. hint.respawn = Per rinascere come nave, premi [accent][[V][].
hint.respawn.mobile = Sei passato al controllo di un'unità/struttura. Per rigenerarti come navicella, [accent]premi l'avatar in alto a sinistra[]. hint.respawn.mobile = Hai cambiato il controllo a unità/strutture. Per rinascere come nave, [accent]tocca the l'avatar in alto a sinistra.[]
hint.desktopPause = Premi [accent][[Spazio][] per mettere in pausa o riprendere la partita. hint.desktopPause = Premi[accent][[Space][] per mettere in pausa o riprendere il gioco.
hint.placeDrill = Accedi alla sezione \ue85e [accent]Trivelle[] dal menu in basso a destra, seleziona la \uf870 [accent]Trivella[] e clicca sulla vena di rame per costruirla. hint.placeDrill = Seleziona la sezione delle \ue85e [accent]Trivelle[] nel menu in fondo a destra, dopo seleziona una \uf870 [accent]Trivella[] e cliccala su una risorsa di rame per piazzarla.
hint.placeDrill.mobile = Accedi alla sezione \ue85e [accent]Trivelle[] dal menu in basso a destra, seleziona la \uf870 [accent]Trivella[] e fai un tap sulla vena di rame per costruirla.\n\nPremi \ue800 in basso a destra per confermare. hint.placeDrill.mobile = Seleziona la sezione \ue85e [accent]Trivelle[] nel menu in fondo a destra, dopo seleziona una \uf870 [accent]Drill[] e cliccalo su una risorsa di rame per piazzarlo.\n\nPremi il \ue800 [accent]checkmark[] in fonod a destra per confermare.
hint.placeConveyor = I nastri trasportatori muovono gli oggetti dalle trivelle ad altri blocchi. Seleziona un \uf896 [accent]Nastro Trasportatore[] dal menu \ue814 [accent]Distribuzione[].\n\nClicca e trascina il cursore per disporre più nastri contemporaneamente.\n[accent]Scorri[] per ruotarli. hint.placeConveyor = I nastri trasportatori muovono oggetti dalle trivelle in altri blocchi. Seleziona un \uf896 [accent]Nastro[] dalla sezione \ue814 [accent]Distribuzione[].\n\nClicca e trascina per piazziare più nastri.\n[accent]Scorri[] per ruotare.
hint.placeConveyor.mobile = I nastri trasportatori muovono gli oggetti dalle trivelle ad altri blocchi. Seleziona un \uf896 [accent]Nastro Trasportatore[] dal menu \ue814 [accent]Distribuzione[].\n\nTieni premuto il dito per un secondo e trascinalo per disporre più nastri contemporaneamente. hint.placeConveyor.mobile = I nastri trasportatori muovono gli oggetti dalle trivelle ad altri blocchi. Seleziona un \uf896 [accent]Nastro Trasportatore[] dal menu \ue814 [accent]Distribuzione[].\n\nTieni premuto il dito per un secondo e trascinalo per disporre più nastri contemporaneamente.
hint.placeTurret = Posiziona le \uf861 [accent]Torrette[] per difendere la tua base dai nemici.\n\nLe torrette hanno bisogno delle munizioni - in questo caso, \uf838 rame.\nUtilizza i nastri trasportatori e le trivelle per rifornirle. hint.placeTurret = Posiziona \uf861 [accent]Torrette[] per difendere la tua base dai nemici.\n\n Le torrette richiedono munizioni- in questo caso, \uf838rame.\nUsa nastri e trivelle per rifornirli.
hint.breaking = [accent]Click Destro[] e trascina il mouse per selezionare i blocchi da distruggere. hint.breaking = [accent]Click-destro[] e trascina per distruggere blocchi.
hint.breaking.mobile = Attiva il \ue817 [accent]martello[] in basso a destra e tocca i blocchi da distruggere.\n\nTieni premuto il dito per un secondo e trascinalo per creare selezionare più blocchi contemporaneamente. hint.breaking.mobile = Attivita il \ue817 [accent]martello[] in fondo a destra e tocca per distruggere blocchi.\n\nTieni premuto il tuo dito per un secondo e trascina per distruggere blocchi in una selezione.
hint.research = Clicca sul tasto \ue875 [accent]Albero Scoperte[] per scoprire nuove tecnologie. hint.research = Usa il pulsante \ue875 [accent]Scopri[] per scoprire nuova tecnologia.
hint.research.mobile = Clicca sul tasto \ue875 [accent]Albero Scoperte[] nel \ue88c [accent]Menu[] per scoprire nuove tecnologie. hint.research.mobile = Usa il pulsante \ue875 [accent]Research[] nel \ue88c [accent]menu[] per scoprire una nuova tecnologia.
hint.unitControl = Tieni premuto [accent][[L-ctrl][] e [accent]Tasto Sinistro[] per controllare le tue unità o le tue torrette. hint.unitControl = Tieni premuto [accent][[L-ctrl][] e [accent]clic[] per controllare unità o torrette amichevoli.
hint.unitControl.mobile = [accent][[Doppio tap][] per controllare le tue unità o le tue torrette. hint.unitControl.mobile = [accent][[Doppio-tocco][] per controllare unità o torrette amichevoli.
hint.launch = Una volta raccolte abbastanza risorse, puoi [accent]Lanciarti[] su un settore vicino a te selezionandolo dalla \ue827 [accent]Mappa[] in basso a destra. hint.launch = Una volta che sono state raccolte abbastanza risorse, puoi[accent]Lanciare[] selezionando settori vicini dalla \ue827 [accent]Mappa[] in fondo a destra.
hint.launch.mobile = Una volta raccolte abbastanza risorse, puoi [accent]Lanciarti[] su un settore vicino a te selezionandolo dalla \ue827 [accent]Mappa[] nel \ue88c [accent]Menu[]. hint.launch.mobile = Una volta che sono state raccolte abbastanza risorse, puoi[accent]Lanciare[] selezionando settori vicini dalla \ue827 [accent]Mappa[] nel \ue88c [accent]menu[].
hint.schematicSelect = Tieni premuto [accent][[F][] e trascina il cursore per selezionare i blocchi da copiare e incollare.\n\n[accent][[Tasto Centrale][] per copiare solamente un blocco. hint.schematicSelect = Tieni premuto [accent][[F][] e trascina per selezionare blocchi da copiare ed incollare.\n\n[accent][[Middle Click][] per copiare un singolo tipo di blocco.
hint.conveyorPathfind = Tieni premuto [accent][[L-Ctrl][] mentre posizioni i nastri trasportatori per fargli seguire il percorso migliore automaticamente. hint.conveyorPathfind = Tieni premuto [accent][[L-Ctrl][] mentre trascini nastri per generare automaticamente un percorso.
hint.conveyorPathfind.mobile = Abilita \ue844 [accent]modalità diagonale[] e trascina i nastri trasportatori per fargli seguire il percorso migliore automaticamente. hint.conveyorPathfind.mobile = Attiva la \ue844 [accent]modalità diagonale[] e trascina nastri per generare automaticamente un percorso.
hint.boost = Tieni premuto [accent][[L-Shift][] per volare sopra gli ostacoli con l'unità che stai controllando.\n\nNon tutte le unità possono volare. hint.boost = Tieni premuto [accent][[L-Shift][] per volare sopra gli ostacoli con la tua unità attuale.\n\nSolo poche unità terrestri possono farlo.
hint.command = Premi [accent][[G][] per formare un gruppo con le unità dello [accent]stesso tipo[] vicine e comandarlo.\n\nPer comandare le unitù di terra devi prima controllare un'altra unità di terra. hint.command = Premi [accent][[G][] per comandare le unità vicine di [accent]simile tipologia[] in formazione.\n\nPer comandare unità terrestri, devi prima controllare un'altra unità terrestre.
hint.command.mobile = [accent][[Doppio tap][] sulla tua unità per formare un gruppo con le unità vicine e comandarlo. hint.command.mobile = [accent][[Double-tap][] per comandare le unità vicine in formazione.
hint.payloadPickup = Premi [accent][[[] per caricare piccoli blocchi o unità. hint.payloadPickup = Premi [accent][[[] per raccogliere piccoli blocchi o unità.
hint.payloadPickup.mobile = [accent]Tieni premuto[] su un piccolo blocco o un'unità per caricarla. hint.payloadPickup.mobile = [accent]Clicca e trattieni[] piccoli blocchi o unità per raccglierla.
hint.payloadDrop = Premi [accent]][] per rilasciare il carico. hint.payloadDrop = Premi [accent]][] per rilasciare un carico.
hint.payloadDrop.mobile = [accent]Tieni premuto[] su un posto libero per rilasciare il carico. hint.payloadDrop.mobile = [accent]Clicca e trattieni[] una posizione vuota per rilasciarci un carico.
hint.waveFire = Le torrette a [accent]Getto[] che utilizzano l'acqua come munizione spegneranno automaticamente gli incendi nelle vicinanze. hint.waveFire = [accent]Idrogetto[] torrette con acqua per munizioni spegneranno automaticamente incendi.
hint.generator = Il \uf879 [accent]Generatore a Combustibile[] brucia carbone per produrre energia che trasmette ai blocchi adiacenti.\n\nIl raggio di trasmissione può essere esteso con i \uf87f [accent]Nodi Energetici[]. hint.generator = \uf879 [accent]Generatori a Combustibile[] bruciano carbone e trasferiscono energia ai blocchi adiacenti.\n\nIl raggio di trasmissione dell'enrgia può essere esteso con \uf87f [accent]Nodo Energetico[].
hint.guardian = Le unità [accent]Guardian[] sono corazzate. Le munizioni deboli come il [accent]Rame[] e il [accent]Piombo[] sono [scarlet]poco efficaci[].\n\nUsa torrette più potenti o \uf835 [accent]Grafite[] \uf861Torretta Duo/\uf859 Cannone Leggero per abbattere i Guardians. hint.guardian = Unità [accent]Guardiano[] sono corazzate. Munizioni deboli come [accent]Rame[] e [accent]Piombo[] sono [scarlet]inefficaci[].\n\nUsa torrette di grado superiore o \uf835 [accent]Grafite[] \uf861Duo/\uf859Cannone Leggero per buttare giù il boss.
hint.coreUpgrade = I nuclei possono essere aggiornati [accent]piazzando nuclei di un livello superiore sopra di loro[].\n\nPiazzia un nucleo  [accent]Fondazione[] sopra il nucleo  [accent]Frammento[]. Assicurati che sia libero da ostacoli.
hint.presetLaunch = [accent]Settori grigi d'atterraggio[], come [accent]Foresta Ghiacciata[], possono essere lanciati da ovunque. Non richiedono la cattura nei terrotori circostanti.\n\n[accent]Settori numerati[], come questo qui, sono [accent]opzionali[].
item.copper.description = Usato in molti tipi di costruzioni e munizioni. item.copper.description = Usato in molti tipi di costruzioni e munizioni.
item.copper.details = Rame. Abbondante su Serpulo. Strutturalmente debole se non rinforzato. item.copper.details = Rame. Metallo anormalmente abbondante su Serpulo. Strutturalmente debole se non rinforzato.
item.lead.description = Usato nel trasporto di liquidi e strutture elettriche. item.lead.description = Usato nel trasporto di liquidi e strutture elettriche.
item.lead.details = Denso. Inerte. usato molto nelle batterie.\nNota: probabilmente tossico per le forme di vita qui. Non che ne siano rimaste molte. item.lead.details = Denso. Inerte. Ampiamente utilizzato in batterie.\nNota: Probabilmente tossico per le forme di vita biologica. Non che siano rimaste in molti qui.
item.metaglass.description = Usato nelle strutture per il trasporto/immagazzinamento dei liquidi. item.metaglass.description = Usato nelle strutture per il trasporto/immagazzinamento dei liquidi.
item.graphite.description = Usato nei componenti elettrici e come munizione per le torrette. item.graphite.description = Usato nei componenti elettrici e come munizione per le torrette.
item.sand.description = Usata per la produzione di altri materiali raffinati. item.sand.description = Usata per la produzione di altri materiali raffinati.
@@ -1298,16 +1301,16 @@ item.plastanium.description = Utilizzato per le unità avanzate e come munizione
item.phase-fabric.description = Usato nei circuiti avanzati e per le strutture autoriparanti. item.phase-fabric.description = Usato nei circuiti avanzati e per le strutture autoriparanti.
item.surge-alloy.description = Usato come munizione per torrette avanzate. item.surge-alloy.description = Usato come munizione per torrette avanzate.
item.spore-pod.description = Utilizzato per la conversione in petrolio, esplosivi e carburante. item.spore-pod.description = Utilizzato per la conversione in petrolio, esplosivi e carburante.
item.spore-pod.details = Spore. Probabilmente una forma di vita sintetica. Emettono gas tossici per altre forme di vita. Estremamente invasive. In certe condizioni sono altamente infiammabili. item.spore-pod.details = Spore. Probabilmente una forma di vita sintetica. Emettono gas tossici alle vita biologica. Estremamente invasive. Altamente infiammabili in certe condizioni.
item.blast-compound.description = Usato per bombe e munizioni esplosive. item.blast-compound.description = Un composto altamente volatile, utilizzato nella produzione di bombe ed esplosivi. Può essere utilizzato come combustibile anche se non è consigliabile.
item.pyratite.description = Usata per certe munizioni incendiarie e nei generatori a combustibile. item.pyratite.description = Una sostanza molto infiammabile che viene utilizzata nelle armi da fuoco.
liquid.water.description = Usata per raffreddare i macchinari e per il trattamento dei rifiuti. liquid.water.description = Usato per il raffreddamento di macchinari ed il trattamento dei rifiuti.
liquid.slag.description = Raffinata nei separatori in diversi metalli o spruzzata sui nemici come munizione. liquid.slag.description = Raffinata nei separatori in diversi metalli o spruzzata sui nemici come munizione.
liquid.oil.description = Usato nella produzione di materiali avanzati e come munizione incendiaria. liquid.oil.description = Usato nella produzione di materiali avanzati e come munizione incendiaria.
liquid.cryofluid.description = Usato come refrigerante in reattori, torrette e macchinari. liquid.cryofluid.description = Usato come refrigerante in reattori, torrette e macchinari.
block.resupply-point.description = Rifornisce le unità vicine con le munizioni. Non è compatibile con le unità che richiedono energia. block.resupply-point.description = Rifornisce untià vicine con munizioni in rame. Incompatibile con unità che richiedono energia.
block.armored-conveyor.description = Trasporta gli oggetti. Non accetta oggetti dai lati. block.armored-conveyor.description = Trasporta gli oggetti. Non accetta oggetti dai lati.
block.illuminator.description = Emette luce. block.illuminator.description = Emette luce.
block.message.description = Memorizza un messaggio per le comunicazioni tra alleati. block.message.description = Memorizza un messaggio per le comunicazioni tra alleati.
@@ -1341,8 +1344,8 @@ block.plastanium-wall.description = Protegge le strutture dai proiettili nemici.
block.plastanium-wall-large.description = Protegge le strutture dai proiettili nemici. Assorbe i raggi laser e gli archi elettrici. Absorbs lasers and electric arcs. Blocca le connessioni automatiche dei nodi energetici. block.plastanium-wall-large.description = Protegge le strutture dai proiettili nemici. Assorbe i raggi laser e gli archi elettrici. Absorbs lasers and electric arcs. Blocca le connessioni automatiche dei nodi energetici.
block.thorium-wall.description = Protegge le strutture dai proiettili nemici. block.thorium-wall.description = Protegge le strutture dai proiettili nemici.
block.thorium-wall-large.description = Protegge le strutture dai proiettili nemici. block.thorium-wall-large.description = Protegge le strutture dai proiettili nemici.
block.phase-wall.description = Protegge le strutture dai proiettili nemici riflettendone la maggirparte all'impatto. block.phase-wall.description = Protegge le strutture dai proiettili nemici riflettendone la maggior parte all'impatto.
block.phase-wall-large.description = Protegge le strutture dai proiettili nemici riflettendone la maggirparte all'impatto. block.phase-wall-large.description = Protegge le strutture dai proiettili nemici riflettendone la maggior parte all'impatto.
block.surge-wall.description = Protegge le strutture dai proiettili nemici rilasciando periodicamente archi elettrici al contatto. block.surge-wall.description = Protegge le strutture dai proiettili nemici rilasciando periodicamente archi elettrici al contatto.
block.surge-wall-large.description = Protegge le strutture dai proiettili nemici rilasciando periodicamente archi elettrici al contatto. block.surge-wall-large.description = Protegge le strutture dai proiettili nemici rilasciando periodicamente archi elettrici al contatto.
block.door.description = Un muro che può essere aperto o chiuso. block.door.description = Un muro che può essere aperto o chiuso.
@@ -1450,7 +1453,7 @@ block.memory-cell.description = Imagazzina le informazioni elaborate dai process
block.memory-bank.description = Imagazzina le informazioni elaborate dai processori. Alta capacità. block.memory-bank.description = Imagazzina le informazioni elaborate dai processori. Alta capacità.
block.logic-display.description = Visualizza la grafica arbitraria elaborata dal processore. block.logic-display.description = Visualizza la grafica arbitraria elaborata dal processore.
block.large-logic-display.description = Visualizza la grafica arbitraria elaborata dal processore. block.large-logic-display.description = Visualizza la grafica arbitraria elaborata dal processore.
block.interplanetary-accelerator.description = Un enorme torre di dispersori elettromagnetici. Accelera i nuclei alla velocità di fuga per il lancio interplanetario. block.interplanetary-accelerator.description = Una massiccia torre che utilizza potenti campi elettromagnetici. Accelera nuclei fino alla velocità di fuga per un impiego interplanetario.
unit.dagger.description = Spara proiettili standard ai nemici vicini. unit.dagger.description = Spara proiettili standard ai nemici vicini.
unit.mace.description = Spara raffiche infuocate ai nemici vicini. unit.mace.description = Spara raffiche infuocate ai nemici vicini.
@@ -1481,7 +1484,7 @@ unit.risso.description = Spara una raffica di missili e proiettili ai nemici nel
unit.minke.description = Spara proiettili incendiari e standard alle unità terrene. unit.minke.description = Spara proiettili incendiari e standard alle unità terrene.
unit.bryde.description = Spara proiettili e missili a lungo raggio ai nemici. unit.bryde.description = Spara proiettili e missili a lungo raggio ai nemici.
unit.sei.description = Spara raffiche di missili e proiettili corazzati e perforanti ai nemici. unit.sei.description = Spara raffiche di missili e proiettili corazzati e perforanti ai nemici.
unit.omura.description = Spara fulmini perforanti a lungo raggio ai nemici. Genera unità flare. unit.omura.description = Utilizza un bullone sparatato grazie a due binari a scorrimento accelerati da un campo elettromagnetico. Lunga gittata e perforazione estrema. Costruisce unità flare.
unit.alpha.description = Difende il nucleo Frammento dai nemici. Costruisce strutture. unit.alpha.description = Difende il nucleo Frammento dai nemici. Costruisce strutture.
unit.beta.description = Difende il nucleo Fondamento dai nemici. Costruisce strutture. unit.beta.description = Difende il nucleo Fondamento dai nemici. Costruisce strutture.
unit.gamma.description = Difende il nucleo Kernel dai nemici. Costruisce strutture. unit.gamma.description = Difende il nucleo Kernel dai nemici. Costruisce strutture.

View File

@@ -1,5 +1,5 @@
credits.text = 만든이: [royal]Anuken[] - [sky]anukendev@gmail.com[] credits.text = 만든이: [royal]Anuken[] - [sky]anukendev@gmail.com[]
credits = 제작 credits = 제작
contributors = 번역가와 기여자 contributors = 번역가와 기여자
discord = Mindustry Discord 서버에 가입하세요! discord = Mindustry Discord 서버에 가입하세요!
link.discord.description = Mindustry Discord 공식 대화방 link.discord.description = Mindustry Discord 공식 대화방
@@ -15,9 +15,9 @@ link.wiki.description = 공식 Mindustry 위키
link.suggestions.description = 새 기능 제안하기 link.suggestions.description = 새 기능 제안하기
linkfail = 링크를 열지 못했습니다!\nURL이 클립보드에 복사되었습니다. linkfail = 링크를 열지 못했습니다!\nURL이 클립보드에 복사되었습니다.
screenshot = 스크린 캡처가 {0} 에 저장되었습니다. screenshot = 스크린 캡처가 {0} 에 저장되었습니다.
screenshot.invalid = 맵이 너무 커서 스크린 캡처에 사용될 메모리가 부족할 수 있습니다. screenshot.invalid = 맵이 너무 커서 스크린 캡처에 사용될 메모리가 부족니다.
gameover = 게임 오버 gameover = 게임 오버
gameover.disconnect = 연결 끊 gameover.disconnect = 연결 끊
gameover.pvp = [accent]{0}[] 팀이 승리했습니다! gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
gameover.waiting = [accent]다음 맵 기다리는 중... gameover.waiting = [accent]다음 맵 기다리는 중...
highscore = [accent]새로운 최고 점수! highscore = [accent]새로운 최고 점수!
@@ -69,13 +69,13 @@ stat.delivered = 얻은 자원:
stat.playtime = 플레이 시간: [accent] {0} stat.playtime = 플레이 시간: [accent] {0}
stat.rank = 최종 순위: [accent]{0} stat.rank = 최종 순위: [accent]{0}
globalitems = [accent]Global Items globalitems = [accent]전체 자원
map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까? map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까?
level.highscore = 최고 점수: [accent]{0} level.highscore = 최고 점수: [accent]{0}
level.select = 맵 선택 level.select = 맵 선택
level.mode = 게임 모드: level.mode = 게임 모드:
coreattack = < 코어가 공격을 받고 있습니다! > coreattack = < 코어가 공격을 받고 있습니다! >
nearpoint = [[ [scarlet]즉시 적 소환구역에서 떠나세요[] ]\n인근 건물들과 유닛들은 초토화됩니다! nearpoint = [[ [scarlet]즉시 적 소환구역에서 떠나십시오[] ]\n단계가 시작하는 순간 인근 건물들과 유닛들이 전멸됩니다!
database = 코어 데이터베이스 database = 코어 데이터베이스
savegame = 게임 저장 savegame = 게임 저장
loadgame = 게임 불러오기 loadgame = 게임 불러오기
@@ -149,7 +149,7 @@ unlocked = 새로운 콘텐츠가 해금되었습니다!
available = 새로운 콘텐츠 해금이 가능합니다! available = 새로운 콘텐츠 해금이 가능합니다!
completed = [accent]완료됨 completed = [accent]완료됨
techtree = 연구 기록 techtree = 연구 기록
research.legacy = [accent]5.0[] 연구 데이터를 찾았습니다.\n[accent]이 데이터를 불러오시겠습니까?[], 아니면 이 데이터를 무시하고 캠페인을 새로 시작하시겠습니까? [accent]무시한 데이터는 삭제됩니다.[] (권장됨)? research.legacy = [accent]5.0[] 연구 데이터를 찾았습니다.\n[accent]이 데이터를 불러오시겠습니까?[], 아니면 이 데이터를 무시하고 캠페인을 새로 시작하시겠습니까? [accent]무시한 데이터는 삭제됩니다.[] (권장됨)
research.load = 불러오기 research.load = 불러오기
research.discard = 무시하기 research.discard = 무시하기
research.list = [lightgray]연구: research.list = [lightgray]연구:
@@ -167,7 +167,7 @@ server.kicked.serverClose = 서버 닫힘.
server.kicked.vote = 당신은 투표로 추방되었습니다. 안녕히 가세요! server.kicked.vote = 당신은 투표로 추방되었습니다. 안녕히 가세요!
server.kicked.clientOutdated = 구버전 클라이언트입니다! 게임을 업데이트하세요! server.kicked.clientOutdated = 구버전 클라이언트입니다! 게임을 업데이트하세요!
server.kicked.serverOutdated = 구버전 서버입니다! 호스트에게 업데이트를 요청하세요! server.kicked.serverOutdated = 구버전 서버입니다! 호스트에게 업데이트를 요청하세요!
server.kicked.banned = 당신은 이 서버에서 차단되었습니다. server.kicked.banned = 당신은 이 서버에서 영구적으로 차단되었습니다.
server.kicked.typeMismatch = 이 서버는 현재 빌드 유형과 호환되지 않습니다. server.kicked.typeMismatch = 이 서버는 현재 빌드 유형과 호환되지 않습니다.
server.kicked.playerLimit = 서버의 인원이 꽉 찼습니다. 빈 슬롯이 생길 때까지 기다려주세요. server.kicked.playerLimit = 서버의 인원이 꽉 찼습니다. 빈 슬롯이 생길 때까지 기다려주세요.
server.kicked.recentKick = 최근에 추방되었습니다.\n추방 쿨타임이 끝날 때까지 기다리세요. server.kicked.recentKick = 최근에 추방되었습니다.\n추방 쿨타임이 끝날 때까지 기다리세요.
@@ -196,6 +196,7 @@ servers.local = 로컬 서버
servers.remote = 원격 서버 servers.remote = 원격 서버
servers.global = 커뮤니티 서버 servers.global = 커뮤니티 서버
servers.disclaimer = 커뮤니티 서버는 개발자가 소유하거나 제어하지 [accent]않습니다[].\n\n서버들은 전연령대에 적합하지 않은 사용자 지정 콘텐츠를 보유할 수도 있습니다.
servers.showhidden = 서버 숨기기 / 보이기 servers.showhidden = 서버 숨기기 / 보이기
server.shown = 서버 숨기기 server.shown = 서버 숨기기
server.hidden = 서버 보이기 server.hidden = 서버 보이기
@@ -222,8 +223,8 @@ confirmban = 정말로 "{0}[white]" 을(를) 차단하시겠습니까?
confirmkick = 정말로 "{0}[white]" 을(를) 추방하시겠습니까? confirmkick = 정말로 "{0}[white]" 을(를) 추방하시겠습니까?
confirmvotekick = 정말로 "{0}[white]" 을(를) 투표로 추방하시겠습니까? confirmvotekick = 정말로 "{0}[white]" 을(를) 투표로 추방하시겠습니까?
confirmunban = 정말로 이 플레이어를 차단 해제하시겠습니까? confirmunban = 정말로 이 플레이어를 차단 해제하시겠습니까?
confirmadmin = 정말로 "{0}[white]" 을(를) 관리자로 만들겠습니까? confirmadmin = 정말로 "{0}[white]" 을(를) 관리자로 임명하겠습니까?
confirmunadmin = 정말로 "{0}[white]"의 관리자 상태를 제거하시겠습니까? confirmunadmin = 정말로 "{0}[white]"의 관리자를 박탈하시겠습니까?
joingame.title = 게임 참가 joingame.title = 게임 참가
joingame.ip = 주소: joingame.ip = 주소:
disconnect = 연결이 끊어졌습니다. disconnect = 연결이 끊어졌습니다.
@@ -294,11 +295,11 @@ loading = [accent]불러오는중...
reloading = [accent]모드 새로고침하는중... reloading = [accent]모드 새로고침하는중...
saving = [accent]저장중... saving = [accent]저장중...
respawn = [accent][[{0}][] 키를 눌러 코어에서 부활 respawn = [accent][[{0}][] 키를 눌러 코어에서 부활
cancelbuilding = [accent][[{0}][] 를 눌러 계획 초기화 cancelbuilding = [accent][[{0}][] 를 눌러 건설 계획 초기화
selectschematic = [accent][[{0}][] 를 눌러 선택+복사 selectschematic = [accent][[{0}][] 를 눌러 선택+복사
pausebuilding = [accent][[{0}][] 를 눌러 건설 일시중지 pausebuilding = [accent][[{0}][] 를 눌러 건설 일시중지
resumebuilding = [scarlet][[{0}][] 를 눌러 건설 재개 resumebuilding = [scarlet][[{0}][] 를 눌러 건설 재개
showui = UI를 .\n[accent][[{0}][] 키를 눌러 UI를 활성화하세요. showui = UI를 .\n[accent][[{0}][] 키를 눌러 UI를 활성화
wave = [accent]{0} 단계 wave = [accent]{0} 단계
wave.cap = [accent]단계 {0}/{1} wave.cap = [accent]단계 {0}/{1}
wave.waiting = 다음 단계까지[lightgray] {0}초 wave.waiting = 다음 단계까지[lightgray] {0}초
@@ -356,8 +357,8 @@ waves.remove = 삭제
waves.never = 여기까지 유닛 생성 waves.never = 여기까지 유닛 생성
waves.every = waves.every =
waves.waves = 단계마다 waves.waves = 단계마다
waves.perspawn = 마리 생성 waves.perspawn = 마리 생성
waves.shields = 방어막/단계 waves.shields = 방어막 hp/단계
waves.to = 부터 waves.to = 부터
waves.guardian = 수호자 waves.guardian = 수호자
waves.preview = 미리보기 waves.preview = 미리보기
@@ -386,7 +387,7 @@ editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n3.5/build 40
editor.errorlegacy = 이 맵은 너무 오래되어 더 이상 지원되지 않는 구형 맵 형식을 사용합니다. editor.errorlegacy = 이 맵은 너무 오래되어 더 이상 지원되지 않는 구형 맵 형식을 사용합니다.
editor.errornot = 맵 파일이 아닙니다. editor.errornot = 맵 파일이 아닙니다.
editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다. editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다.
editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러오려 합니까? editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러오려고 시도하는 건가요?
editor.update = 업데이트 editor.update = 업데이트
editor.randomize = 무작위 editor.randomize = 무작위
editor.apply = 적용 editor.apply = 적용
@@ -427,13 +428,13 @@ toolmode.replaceall.description = 맵에 있는 모든 블록을 재배치합니
toolmode.orthogonal = 직각 toolmode.orthogonal = 직각
toolmode.orthogonal.description = 직각으로 블록을 배치합니다. toolmode.orthogonal.description = 직각으로 블록을 배치합니다.
toolmode.square = 정사각형 toolmode.square = 정사각형
toolmode.square.description = 정사각형 형태의 브러시. toolmode.square.description = 정사각형 형태의 브러시로 교체합니다.
toolmode.eraseores = 자원 초기화 toolmode.eraseores = 자원 초기화
toolmode.eraseores.description = 자원만 초기화합니다. toolmode.eraseores.description = 자원만 초기화합니다.
toolmode.fillteams = 팀 채우기 toolmode.fillteams = 팀 채우기
toolmode.fillteams.description = 블록 대신 팀 건물로 채웁니다. toolmode.fillteams.description = 블록 대신 선택한 팀으로 블록 팀을 채웁니다.
toolmode.drawteams = 색상으로 그리기 toolmode.drawteams = 팀 그리기
toolmode.drawteams.description = 블록 대신 팀 건물을 배치합니다. toolmode.drawteams.description = 블록 대신 선택한 팀으로 블록 팀을 그립니다.
filters.empty = [lightgray]필터가 없습니다! 아래 버튼을 눌러 하나를 추가하세요. filters.empty = [lightgray]필터가 없습니다! 아래 버튼을 눌러 하나를 추가하세요.
filter.distort = 왜곡 filter.distort = 왜곡
@@ -486,11 +487,11 @@ memory2 = Mem:\n {0}mb +\n {1}mb
language.restart = 언어 설정을 적용하려면 게임을 다시 시작하세요. language.restart = 언어 설정을 적용하려면 게임을 다시 시작하세요.
settings = 설정 settings = 설정
tutorial = 튜토리얼 tutorial = 튜토리얼
tutorial.retake = 튜토리얼 다시 시작 tutorial.retake = 튜토리얼 다시 시작하기
editor = 편집기 editor = 편집기
mapeditor = 맵 편집기 mapeditor = 맵 편집기
abandon = 포기 abandon = 포기하기
abandon.text = 이 지역과 모든 자원이 적에게 넘어갑니다. abandon.text = 이 지역과 모든 자원이 적에게 넘어갑니다.
locked = 잠김 locked = 잠김
complete = [lightgray]해금 조건 : complete = [lightgray]해금 조건 :
@@ -500,8 +501,8 @@ requirement.research = {0} 연구
requirement.capture = {0} 점령 requirement.capture = {0} 점령
bestwave = [lightgray]최고 단계: {0} bestwave = [lightgray]최고 단계: {0}
launch.text = 출격 launch.text = 출격
research.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 주최자만 연구할 수 있습니다. research.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 호스트만 연구할 수 있습니다.
map.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 주최자만 다른 섹터들을 보고, 이동이 가능합니다. map.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 호스트만 다른 섹터들을 보고, 이동이 가능합니다.
uncover = 지역 개방 uncover = 지역 개방
configure = 초기자원 설정 configure = 초기자원 설정
@@ -518,7 +519,7 @@ boss.health = 수호자 체력
connectfail = [scarlet]연결 오류:\n\n[accent]{0} connectfail = [scarlet]연결 오류:\n\n[accent]{0}
error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요? error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요?
error.invalidaddress = 잘못된 주소입니다. error.invalidaddress = 잘못된 주소입니다.
error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오. error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하세요.
error.mismatch = 패킷 오류\n클라이언트/서버 버전이 일치하지 않습니다.\n접속하려는 서버가 최신 버전인지 확인하세요! error.mismatch = 패킷 오류\n클라이언트/서버 버전이 일치하지 않습니다.\n접속하려는 서버가 최신 버전인지 확인하세요!
error.alreadyconnected = 이미 접속 중입니다. error.alreadyconnected = 이미 접속 중입니다.
error.mapnotfound = 맵 파일을 찾을 수 없습니다! error.mapnotfound = 맵 파일을 찾을 수 없습니다!
@@ -535,7 +536,7 @@ weather.fog.name = 안개
sectors.unexplored = [lightgray]미개척지 sectors.unexplored = [lightgray]미개척지
sectors.resources = 자원: sectors.resources = 자원:
sectors.production = 분당 자원 생산량: sectors.production = 분당 자원 생산량:
sectors.export = Export: sectors.export = 분당 자원 수출량:
sectors.time = 지역 진행 시간: sectors.time = 지역 진행 시간:
sectors.threat = 지역 위험도: sectors.threat = 지역 위험도:
sectors.wave = 진행 중 단계: sectors.wave = 진행 중 단계:
@@ -546,7 +547,7 @@ sectors.select = 선택
sectors.nonelaunch = [lightgray]없음 (sun) sectors.nonelaunch = [lightgray]없음 (sun)
sectors.rename = 구역 이름 변경 sectors.rename = 구역 이름 변경
sectors.enemybase = [scarlet]적 기지 sectors.enemybase = [scarlet]적 기지
sectors.vulnerable = [scarlet]]취약 sectors.vulnerable = [scarlet]취약
sectors.underattack = [scarlet]공격받고 있습니다! [accent]{0}% 손상됨. sectors.underattack = [scarlet]공격받고 있습니다! [accent]{0}% 손상됨.
sectors.survives = [accent]{0} 단계 이상 버티세요. sectors.survives = [accent]{0} 단계 이상 버티세요.
sectors.go = 지역 진입 sectors.go = 지역 진입
@@ -566,14 +567,14 @@ threat.eradication = 극한
planets = 태양계 planets = 태양계
planet.serpulo.name = 세르 planet.serpulo.name = 세르
planet.sun.name = 태양 planet.sun.name = 태양
sector.impact0078.name = 폐허 : Impact 0078 sector.impact0078.name = 폐허 : Impact 0078
sector.groundZero.name = Zero 전초기지 sector.groundZero.name = Zero 전초기지
sector.craters.name = 크레이터 sector.craters.name = 크레이터
sector.frozenForest.name = 얼어붙은 숲 sector.frozenForest.name = 얼어붙은 숲
sector.ruinousShores.name = 폐허 : 해안가 sector.ruinousShores.name = 파괴된 해안가
sector.stainedMountains.name = 얼룩진 산맥 sector.stainedMountains.name = 얼룩진 산맥
sector.desolateRift.name = 황폐한 협곡 sector.desolateRift.name = 황폐한 협곡
sector.nuclearComplex.name = 핵 생산 단지 sector.nuclearComplex.name = 핵 생산 단지
@@ -606,15 +607,15 @@ sector.planetaryTerminal.description = 이 행성에서의 마지막 전투를
settings.language = 언어 settings.language = 언어
settings.data = 게임 데이터 settings.data = 게임 데이터
settings.reset = 설정 초기화 settings.reset = 설정 초기화
settings.rebind = 키 설정 settings.rebind = 조작키 설정
settings.resetKey = 초기화 settings.resetKey = 조작키 설정 초기화
settings.controls = 조작 settings.controls = 조작
settings.game = 게임 settings.game = 게임
settings.sound = 소리 settings.sound = 소리
settings.graphics = 그래픽 settings.graphics = 그래픽
settings.cleardata = 게임 데이터 초기화 settings.cleardata = 게임 데이터 초기화
settings.clear.confirm = 정말로 이 데이터를 지우시겠습니까?\n되돌릴 수 없습니다! settings.clear.confirm = 정말로 이 데이터를 지우시겠습니까?\n되돌릴 수 없습니다!
settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다. settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 조작키 설정, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다.
settings.clearsaves.confirm = 정말로 모든 저장된 파일들을 삭제하시겠습니까? settings.clearsaves.confirm = 정말로 모든 저장된 파일들을 삭제하시겠습니까?
settings.clearsaves = 저장 초기화 settings.clearsaves = 저장 초기화
settings.clearresearch = 연구 초기화 settings.clearresearch = 연구 초기화
@@ -628,7 +629,7 @@ yes = O
no = X no = X
info.title = 정보 info.title = 정보
error.title = [scarlet]오류가 발생했습니다. error.title = [scarlet]오류가 발생했습니다.
error.crashtitle = 오류가 발생했습니다 error.crashtitle = 오류가 발생했습니다.
unit.nobuild = [scarlet]건설 불가 unit.nobuild = [scarlet]건설 불가
lastaccessed = [lightgray]마지막 조작: {0} lastaccessed = [lightgray]마지막 조작: {0}
block.unknown = [lightgray]??? block.unknown = [lightgray]???
@@ -698,9 +699,9 @@ stat.abilities = 능력
stat.canboost = 부스터 stat.canboost = 부스터
stat.flying = 비행 stat.flying = 비행
ability.forcefield = 수호 역장 ability.forcefield = 보호막 필드
ability.repairfield = 수리 파동 ability.repairfield = 수리 필드
ability.statusfield = 강화 오오라 ability.statusfield = 상태이상 필드
ability.unitspawn = {0} 공장 ability.unitspawn = {0} 공장
ability.shieldregenfield = 방어막 복구 필드 ability.shieldregenfield = 방어막 복구 필드
ability.movelightning = 가속 전격 ability.movelightning = 가속 전격
@@ -837,7 +838,7 @@ uiscale.reset = UI 스케일이 변경되었습니다.\n"확인"버튼을 눌러
uiscale.cancel = 취소 후 나가기 uiscale.cancel = 취소 후 나가기
setting.bloom.name = 화려한 효과 setting.bloom.name = 화려한 효과
keybind.title = 조작키 설정 keybind.title = 조작키 설정
keybinds.mobile = [scarlet]대부분의 키 맵핑은 모바일에서 작동하지 않습니다. 기본 이동만 지원됩니다. keybinds.mobile = [scarlet]대부분의 조작키 설정은 모바일에서 작동하지 않습니다. 기본 이동만 지원됩니다.
category.general.name = 일반 category.general.name = 일반
category.view.name = 보기 category.view.name = 보기
category.multiplayer.name = 멀티플레이어 category.multiplayer.name = 멀티플레이어
@@ -910,9 +911,9 @@ keybind.drop_unit.name = 유닛 떨구기
keybind.zoom_minimap.name = 미니맵 확대 keybind.zoom_minimap.name = 미니맵 확대
mode.help.title = 모드 설명 mode.help.title = 모드 설명
mode.survival.name = 생존 mode.survival.name = 생존
mode.survival.description = 이것은 일반 모드입니다. 제한된 자원과 자동으로 시작되는 단계가 있습니다.\n[gray]플레이하려면 맵에 적의 스폰지점이 필요합니다. mode.survival.description = 기본 모드. 제한된 자원이 있으며, 단계가 자동으로 시작합니다.\n[gray]플레이하려면 맵에 적의 스폰지점이 필요합니다.
mode.sandbox.name = 샌드박스 mode.sandbox.name = 샌드박스
mode.sandbox.description = 무한한 자원과 단계 시작 타이머가 없습니다. mode.sandbox.description = 무한한 자원이 있으며, 단계 타이머가 없습니다.
mode.editor.name = 편집기 mode.editor.name = 편집기
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = 다른 플레이어와 현장에서 싸우십시오.\n[gray]플레이하려면 맵에 다른 색상의 코어가 2개 이상 있어야 합니다. mode.pvp.description = 다른 플레이어와 현장에서 싸우십시오.\n[gray]플레이하려면 맵에 다른 색상의 코어가 2개 이상 있어야 합니다.
@@ -947,10 +948,10 @@ rules.title.enemy = 적
rules.title.unit = 유닛 rules.title.unit = 유닛
rules.title.experimental = 실험적인 기능 rules.title.experimental = 실험적인 기능
rules.title.environment = 환경 rules.title.environment = 환경
rules.lighting = 조명 활성화 rules.lighting = 조명
rules.enemyLights = 에게 조명 표시 활성화 rules.enemyLights = 상대에게 조명
rules.fire = 방화 활성화 rules.fire = 방화
rules.explosions = 블록/유닛 폭발 데미지 활성화 rules.explosions = 블록/유닛 폭발 데미지
rules.ambientlight = 자연 조명 rules.ambientlight = 자연 조명
rules.weather = 날씨 rules.weather = 날씨
rules.weather.frequency = 빈도: rules.weather.frequency = 빈도:
@@ -980,7 +981,7 @@ item.metaglass.name = 강화 유리
item.scrap.name = 고철 item.scrap.name = 고철
liquid.water.name = liquid.water.name =
liquid.slag.name = 광재 liquid.slag.name = 광재
liquid.oil.name = 기름 liquid.oil.name = 석유
liquid.cryofluid.name = 냉각수 liquid.cryofluid.name = 냉각수
unit.dagger.name = 대거 unit.dagger.name = 대거
@@ -992,8 +993,8 @@ unit.quasar.name = 퀘이사
unit.crawler.name = 크롤러 unit.crawler.name = 크롤러
unit.atrax.name = 아트락스 unit.atrax.name = 아트락스
unit.spiroct.name = 스피록트 unit.spiroct.name = 스피록트
unit.arkyid.name = 알카이 unit.arkyid.name = 아키
unit.toxopid.name = 톡소피드 unit.toxopid.name = 톡소피드
unit.flare.name = 플레어 unit.flare.name = 플레어
unit.horizon.name = 호라이즌 unit.horizon.name = 호라이즌
unit.zenith.name = 제니스 unit.zenith.name = 제니스
@@ -1005,7 +1006,7 @@ unit.mega.name = 메가
unit.quad.name = 쿼드 unit.quad.name = 쿼드
unit.oct.name = 옥트 unit.oct.name = 옥트
unit.risso.name = 리소 unit.risso.name = 리소
unit.minke.name = unit.minke.name =
unit.bryde.name = 브라이드 unit.bryde.name = 브라이드
unit.sei.name = 세이 unit.sei.name = 세이
unit.omura.name = 오무라 unit.omura.name = 오무라
@@ -1013,13 +1014,13 @@ unit.alpha.name = 알파
unit.beta.name = 베타 unit.beta.name = 베타
unit.gamma.name = 감마 unit.gamma.name = 감마
unit.scepter.name = 셉터 unit.scepter.name = 셉터
unit.reign.name = unit.reign.name = 레인
unit.vela.name = 벨라 unit.vela.name = 벨라
unit.corvus.name = 코르 unit.corvus.name = 코르
block.resupply-point.name = 보급 지점 block.resupply-point.name = 보급 지점
block.parallax.name = 패럴랙스 block.parallax.name = 패럴랙스
block.cliff.name = 낭떠러지 block.cliff.name = 언덕
block.sand-boulder.name = 사암 block.sand-boulder.name = 사암
block.basalt-boulder.name = 현무암 block.basalt-boulder.name = 현무암
block.grass.name = 잔디 block.grass.name = 잔디
@@ -1058,7 +1059,7 @@ block.deepwater.name = 깊은 물
block.water.name = block.water.name =
block.tainted-water.name = 오염된 물 block.tainted-water.name = 오염된 물
block.darksand-tainted-water.name = 오염된 젖은 검은 모래 block.darksand-tainted-water.name = 오염된 젖은 검은 모래
block.tar.name = 석유 block.tar.name = 타르
block.stone.name = 바위 block.stone.name = 바위
block.sand.name = 모래 block.sand.name = 모래
block.darksand.name = 검은 모래 block.darksand.name = 검은 모래
@@ -1198,7 +1199,7 @@ block.cyclone.name = 사이클론
block.fuse.name = 퓨즈 block.fuse.name = 퓨즈
block.shock-mine.name = 전격 지뢰 block.shock-mine.name = 전격 지뢰
block.overdrive-projector.name = 과부하 프로젝터 block.overdrive-projector.name = 과부하 프로젝터
block.force-projector.name = 포스 프로젝터 block.force-projector.name = 보호막 프로젝터
block.arc.name = 아크 block.arc.name = 아크
block.rtg-generator.name = RTG 발전기 block.rtg-generator.name = RTG 발전기
block.spectre.name = 스펙터 block.spectre.name = 스펙터
@@ -1251,19 +1252,19 @@ hint.mine = \uf8c4 주변의 구리광석을 수동으로 채굴하려면 광
hint.desktopShoot = [accent][[마우스 왼클릭][]으로 발사할수 있습니다. hint.desktopShoot = [accent][[마우스 왼클릭][]으로 발사할수 있습니다.
hint.depositItems = 아이템을 코어로 옮기려면, 당신의 기체의 아이템을 코어로 끌어놓으세요. hint.depositItems = 아이템을 코어로 옮기려면, 당신의 기체의 아이템을 코어로 끌어놓으세요.
hint.respawn = 당신의 기체를 떠나려면 [accent][[V][]를 누르십시오. hint.respawn = 당신의 기체를 떠나려면 [accent][[V][]를 누르십시오.
hint.respawn.mobile = 당신은 유닛과 구조물을 바꿔가며 조종할 수 있습니다. 당신의 기체를 떠나려면 [accent]왼쪽 위에 있는 아바타를 누르십시오.[] hint.respawn.mobile = 당신은 유닛 혹은 포탑을 조종할 수 있습니다. 당신의 기체를 떠나려면 [accent]왼쪽 위에 있는 아바타를 누르십시오.[]
hint.desktopPause = 게임을 일시정지/재시작 하기 위해 [accent][[Space][]를 누르십시오. hint.desktopPause = 게임을 일시정지/재시작 하기 위해 [accent][[Space][]를 누르십시오.
hint.placeDrill = 드릴을 설치하려면 오른쪽 아래의 \ue85e [accent]드릴[]을 선택하고, \uf870 [accent]드릴[]을 선택해서 구리 광석 위를 누르십시오. hint.placeDrill = 드릴을 설치하려면 오른쪽 아래의 \ue85e [accent]드릴[]을 선택하고, \uf870 [accent]드릴[]을 선택해서 구리 광석 위를 누르십시오.
hint.placeDrill.mobile = 오른쪽 아래 메뉴의 \ue85e[accent]드릴[]을 선택하고, \uf870 [accent]드릴[] 를 선택해서 구리 광석 위를 누르십시오.\n\n설치를 완료하려면 오른쪽 아래의 \ue800 [accent]완료 버튼[]을 누르십시오. hint.placeDrill.mobile = 오른쪽 아래 메뉴의 \ue85e [accent]드릴[]을 선택하고, \uf870 [accent]드릴[] 를 선택해서 구리 광석 위를 누르십시오.\n\n설치를 완료하려면 오른쪽 아래의 \ue800 [accent]완료 버튼[]을 누르십시오.
hint.placeConveyor = 컨베이어는 아이템을 드릴에서 다른 블록으로 이동시켜줍니다. \ue814 [accent]분배[] 카테고리에서 \uf896 [accent]컨베이어[]를 선택하십시오.\n\n클릭하거나 드래그로 다수의 컨베이어를 설치할 수 있습니다.\n클릭하고 놓지 않은채로 마우스 [accent]휠을 돌리면 돌아갑니다. hint.placeConveyor = 컨베이어는 아이템을 드릴에서 다른 블록으로 이동시켜줍니다. \ue814 [accent]분배[] 카테고리에서 \uf896 [accent]컨베이어[]를 선택하십시오.\n\n클릭하거나 드래그로 다수의 컨베이어를 설치할 수 있습니다.\n클릭하고 놓지 않은채로 마우스 [accent]휠을 돌리면 돌아갑니다.
hint.placeConveyor.mobile = 컨베이어는 아이템을 드릴에서 다른 블록으로 이동시켜줍니다. \ue814 [accent]분배[] 카테고리에서 \uf896 [accent]컨베이어[]를 선택하십시오.\n\n여러개의 컨베이어를 놓으려면 손가락으로 누른채로 끌어서 설치 범위를 지정하십시오. hint.placeConveyor.mobile = 컨베이어는 아이템을 드릴에서 다른 블록으로 이동시켜줍니다. \ue814 [accent]분배[] 카테고리에서 \uf896 [accent]컨베이어[]를 선택하십시오.\n\n여러개의 컨베이어를 놓으려면 손가락으로 누른채로 끌어서 설치 범위를 지정하십시오.
hint.placeTurret = 적에게서 당신의 기지를 막아내려면 \uf861 [accent]포탑[]를 설치하십시오.\n\n포탑 탄약 필요 - 지금은 \uf838구리가 필요합니다.\n컨베이어를 사용해 드릴에 구리를 공급하십시오. hint.placeTurret = 적에게서 당신의 기지를 막아내려면 \uf861 [accent]포탑[]를 설치하십시오.\n\n포탑 탄약 필요 - 지금은 \uf838 구리가 필요합니다.\n컨베이어를 사용해 드릴에 구리를 공급하십시오.
hint.breaking = 블록을 부수려면 [accent]오른클릭[]이나 드래그를 하십시오. hint.breaking = 블록을 부수려면 [accent]오른클릭[]이나 드래그를 하십시오.
hint.breaking.mobile = 블럭을 부수려면 오른쪽 아래의 \ue817 [accent]망치[]를 눌러 해체 모드를 활성화 하십시오.\n\n손가락으로 누른채로 끌어서 해체 범위를 지정하십시오. hint.breaking.mobile = 블럭을 부수려면 오른쪽 아래의 \ue817 [accent]망치[]를 눌러 해체 모드를 활성화 하십시오.\n\n손가락으로 누른채로 끌어서 해체 범위를 지정하십시오.
hint.research = 새 기술을 연구하려면 \ue875 [accent]연구[]버튼을 누르십시오. hint.research = 새 기술을 연구하려면 \ue875 [accent]연구[]버튼을 누르십시오.
hint.research.mobile = 새 기술을 연구하려면 \ue88c [accent]메뉴[] 아래의 \ue875 [accent]연구[]버튼을 누르십시오. hint.research.mobile = 새 기술을 연구하려면 \ue88c [accent]메뉴[] 아래의 \ue875 [accent]연구[]버튼을 누르십시오.
hint.unitControl = 아군 유닛과 포탑을 조종하려면 [accent][[왼쪽 ctrl][]을 누른채로 [accent]클릭[] 하십시오. hint.unitControl = 아군 유닛과 포탑을 조종하려면 [accent][[왼쪽 ctrl][]을 누른채로 [accent]클릭[] 하십시오.
hint.unitControl.mobile = 아군 유닛과 포탑을 조종하려면 [accent]빠르게 두번 누르십시오[]. hint.unitControl.mobile = 아군 유닛과 포탑을 조종하려면 해당 개체를 [accent]빠르게 두번 누르십시오[].
hint.launch = 충분한 자원을 모았으면, 오른쪽 아래의 \ue827 [accent]Map[]에서 주변 지역을 선택해서 [accent]Launch[]할 수 있습니다. hint.launch = 충분한 자원을 모았으면, 오른쪽 아래의 \ue827 [accent]Map[]에서 주변 지역을 선택해서 [accent]Launch[]할 수 있습니다.
hint.launch.mobile = 충분한 자원을 모았으면, 오른쪽 아래의 \ue88c [accent]메뉴[]에 있는 \ue827 [accent]Map[]에서 주변 지역을 선택해서 [accent]Launch[]할 수 있습니다. hint.launch.mobile = 충분한 자원을 모았으면, 오른쪽 아래의 \ue88c [accent]메뉴[]에 있는 \ue827 [accent]Map[]에서 주변 지역을 선택해서 [accent]Launch[]할 수 있습니다.
hint.schematicSelect = 블록을 복사하고 붙여넣으려면 [accent][[F][]를 누른채로 끌어서 구역을 지정하십시오. \n\n [accent][[마우스 휠][]을 누르면 한개의 블록만 복사할 수 있습니다. hint.schematicSelect = 블록을 복사하고 붙여넣으려면 [accent][[F][]를 누른채로 끌어서 구역을 지정하십시오. \n\n [accent][[마우스 휠][]을 누르면 한개의 블록만 복사할 수 있습니다.
@@ -1274,14 +1275,18 @@ hint.command = 주변의 아군 유닛을 데리고 다니려면 비슷한 단
hint.command.mobile = 아군 유닛을 데리고 다니려면 비슷한 단계의 유닛 무리 주변에서 [accent]빠르게 두번 누르십시오[]. hint.command.mobile = 아군 유닛을 데리고 다니려면 비슷한 단계의 유닛 무리 주변에서 [accent]빠르게 두번 누르십시오[].
hint.payloadPickup = 작은 블럭이나 유닛을 집으려면 [accent][[[]를 누르십시오. hint.payloadPickup = 작은 블럭이나 유닛을 집으려면 [accent][[[]를 누르십시오.
hint.payloadPickup.mobile = 작은 블럭이나 유닛을 집으려면 [accent]잠깐 누르십시오[]. hint.payloadPickup.mobile = 작은 블럭이나 유닛을 집으려면 [accent]잠깐 누르십시오[].
hint.payloadDrop = 다시 내려놓으려면 [accent]][]를 누르십시오 hint.payloadDrop = 다시 내려놓으려면 [accent]][]를 누르십시오.
hint.payloadDrop.mobile = 다시 내려놓으려면 빈 공간에서 [accent]화면을 잠깐 누르십시오[]. hint.payloadDrop.mobile = 다시 내려놓으려면 빈 공간에서 [accent]화면을 잠깐 누르십시오[].
hint.waveFire = [accent]Wave[]포탑에 탄약으로 물을 넣으면 주변의 불을 자동으로 꺼줍니다. hint.waveFire = [accent]Wave[]포탑에 탄약으로 물을 넣으면 주변의 불을 자동으로 꺼줍니다.
hint.generator = \uf879 [accent]화력 발전기[]는 석탄을 태워서 주변 블록에 전력을 전달합니다.\n\n \uf87f 더 넓은 범위의 블록에 전력을 전달하려면 [accent]Power Nodes[]를 사용하십시오. hint.generator = \uf879 [accent]화력 발전기[]는 석탄을 태워서 주변 블록에 전력을 전달합니다.\n\n \uf87f 더 넓은 범위의 블록에 전력을 전달하려면 [accent]Power Nodes[]를 사용하십시오.
hint.guardian = [accent]수호자[] 유닛들은 방어력을 가집니다. [accent]구리[]와 [accent]납[]같은 약한 탄약으로는 [scarlet]아무런 효과도 없습니다[].\n\n그런 수호자를 없애려면 높은 단계의 포탑 또는 \uf835 [accent]흑연[]을 탄약으로 넣은 \uf861듀오/\uf859살보를 사용하십시오. hint.guardian = [accent]수호자[] 유닛들은 방어력을 가집니다. [accent]구리[]와 [accent]납[]같은 약한 탄약으로는 [scarlet]아무런 효과도 없습니다[].\n\n그런 수호자를 없애려면 높은 단계의 포탑 또는 \uf835 [accent]흑연[]을 탄약으로 넣은 \uf861듀오/\uf859살보를 사용하십시오.
hint.coreUpgrade = 코어는 [accent]상위 코어를 위에 설치함[]으로써 업그레이드할 수 있습니다.\n\n [accent]기반[] 코어를  [accent]조각[] 코어 위에 설치하십시오. 주변에 장애물이 없는지도 확인하십시오.
hint.presetLaunch = [accent]얼어붙은 숲[]과 같은 회색[accent]캠페인 지역[]은 어디에서나 출격해서 올 수 있습니다. 주변 지역을 점령하지 않아도 됩니다.\n\n이와 같은 [accent]네임드 지역[]들은 [accent]선택적[]입니다.
hint.coreIncinerate = 코어가 아이템으로 가득 찬 후에 받는 모든 아이템들은 [accent]소각[]될 것입니다.
hint.coopCampaign = [accent]협동 캠페인[]을 할 떄, 현재 맵에서 생산된 아이템들은 [accent]당신의 캠페인 지역으로[]도 보내집니다.\n\n호스트가 새로 해금한 모든 것들도 가져갑니다.
item.copper.description = 가장 기본적인 건설 재료. 모든 유형의 블록에서 광범위하게 사용됩니다. item.copper.description = 가장 기본적인 건설 재료. 모든 유형의 블록에서 광범위하게 사용됩니다.
item.copper.details = 평범한 구리. 세르로에 비정상적으로 많이 분포되어 있습니다. 별다른 보강재 없이는 구조적 문제 때문에 내구성이 비교적 약합니다. item.copper.details = 평범한 구리. 세르로에 비정상적으로 많이 분포되어 있습니다. 별다른 보강재 없이는 구조적 문제 때문에 내구성이 비교적 약합니다.
item.lead.description = 기본 초반 재료. 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다. item.lead.description = 기본 초반 재료. 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
item.lead.details = 밀도가 높으며 반응성이 적은 자원. 배터리에 주로 사용됩니다. item.lead.details = 밀도가 높으며 반응성이 적은 자원. 배터리에 주로 사용됩니다.
item.metaglass.description = 초강력 방탄유리. 액체 분배 및 저장에 광범위하게 사용됩니다. item.metaglass.description = 초강력 방탄유리. 액체 분배 및 저장에 광범위하게 사용됩니다.
@@ -1307,23 +1312,23 @@ liquid.slag.description = 다양한 종류의 금속들이 함께 섞여 녹아
liquid.oil.description = 고급 재료 생산에 사용되는 액체. 석탄으로 전환하거나 무기로 뿌려서 불을 지를 수 있습니다. liquid.oil.description = 고급 재료 생산에 사용되는 액체. 석탄으로 전환하거나 무기로 뿌려서 불을 지를 수 있습니다.
liquid.cryofluid.description = 물과 티타늄으로 만든 비 부식성 액체. 열 용량이 매우 높으며 냉각수로 광범위하게 사용됩니다. liquid.cryofluid.description = 물과 티타늄으로 만든 비 부식성 액체. 열 용량이 매우 높으며 냉각수로 광범위하게 사용됩니다.
block.resupply-point.description = 구리를 소모하여 인근 유닛들에게 탄약을 충전합니다. 베터리 전력을 탄약으로 필요한 유닛들은 호환되지 않습니다. block.resupply-point.description = 주변 유닛들에게 구리 탄약을 보급합니다. 베터리 전력 필요한 유닛들은 호환되지 않습니다.
block.armored-conveyor.description = 앞으로 아이템들을 운반합니다. 측면에서 아이템들을 받아들이지 않습니다. block.armored-conveyor.description = 앞으로 아이템들을 운반합니다. 측면에서 아이템들을 받아들이지 않습니다.
block.illuminator.description = 발광합니다. block.illuminator.description = 발광합니다.
block.message.description = 아군 간의 소통을 위한 메시지를 저장합니다. block.message.description = 아군 간의 소통을 위한 메시지를 저장합니다.
block.graphite-press.description = 석탄들을 압축하여 흑연으로 만듭니다. block.graphite-press.description = 석탄 흑연으로 압축합니다.
block.multi-press.description = 흑연 압축기의 강화 버전. 전기와 물을 추가로 사용하여 빠르게 석탄을 압축합니다. block.multi-press.description = 석탄을 흑연으로 압축합니다. 냉각수로써 물이 필요합니다.
block.silicon-smelter.description = 석탄과 모래로부터 실리콘을 정제합니다. block.silicon-smelter.description = 석탄과 모래로부터 실리콘을 정제합니다.
block.kiln.description = 모래와 납을 제련하여 강화 유리를 만듭니다. 작동하려면 소량의 전력이 필요합니다. block.kiln.description = 모래와 납을 강화 유리로 재련합니다.
block.plastanium-compressor.description = 석유와 티타늄으로 플라스터늄을 생산합니다. block.plastanium-compressor.description = 석유와 티타늄으로 플라스터늄을 생산합니다.
block.phase-weaver.description = 토륨과 모래를 이용해 메타를 합성합니다. 작동하려면 엄청난 양의 전력이 필요합니다. block.phase-weaver.description = 토륨과 모래 메타를 합성합니다.
block.alloy-smelter.description = 티타늄, 납, 실리콘, 구리를 결합하여 설금을 생산합니다. block.alloy-smelter.description = 티타늄, 납, 실리콘, 구리를 결합하여 설금을 생산합니다.
block.cryofluid-mixer.description = 물과 미세 티타늄 분말을 냉각수로 혼합합니다. 토륨 원자로 사용에 필수적입니다. block.cryofluid-mixer.description = 물과 미세 티타늄 분말을 냉각수로 혼합합니다.
block.blast-mixer.description = 포자를 파이라타이트와 혼합하여 폭발물을 만듭니다. block.blast-mixer.description = 파이라타이트와 포자로 폭발물을 생산합니다.
block.pyratite-mixer.description = 석탄, 납, 모래를 합성하여 가연성이 높은 파이라타이트로 만듭니다. block.pyratite-mixer.description = 석탄, 납, 그리고 모래를 파이라타이트로 혼합합니다.
block.melter.description = 파도 포탑에서 추가 처리 또는 사용을 위해 고철을 광재로 녹입니다. block.melter.description = 고철을 광재로 녹입니다.
block.separator.description = 광재를 미네랄 성분으로 분리합니다. 그리고 냉각된 결과를 출력합니다. block.separator.description = 광재를 광물들로 분리합니다.
block.spore-press.description = 포자를 압축하여 석유를 추출합니다. block.spore-press.description = 포자를 석유로 압축합니다.
block.pulverizer.description = 고철을 갈아 모래로 만듭니다. block.pulverizer.description = 고철을 갈아 모래로 만듭니다.
block.coal-centrifuge.description = 석유에서 석탄을 추출합니다. block.coal-centrifuge.description = 석유에서 석탄을 추출합니다.
block.incinerator.description = 넘치는 자원이나 액체를 증발시킵니다. block.incinerator.description = 넘치는 자원이나 액체를 증발시킵니다.
@@ -1371,7 +1376,7 @@ block.rotary-pump.description = 고급 펌프. 더 많은 액체를 퍼 올리
block.thermal-pump.description = 가장 강력한 펌프. block.thermal-pump.description = 가장 강력한 펌프.
block.conduit.description = 기본 액체 운송 블록. 액체를 앞으로 이동시킵니다. 펌프 및 기타 파이프와 함께 사용됩니다. block.conduit.description = 기본 액체 운송 블록. 액체를 앞으로 이동시킵니다. 펌프 및 기타 파이프와 함께 사용됩니다.
block.pulse-conduit.description = 고급 액체 운송 블록. 액체를 더 빠르게 운반하고 표준 파이프보다 더 많이 저장합니다. block.pulse-conduit.description = 고급 액체 운송 블록. 액체를 더 빠르게 운반하고 표준 파이프보다 더 많이 저장합니다.
block.plated-conduit.description = 펄스 파이프와 같은 속도로 이동하지만 더 높은 방어력을 가지고 있습니다. 파이프 이외의 물체로 측면의 액체 받아들이지 않습니다.\n누설이 적습니다. block.plated-conduit.description = 펄스 파이프와 같은 속도로 이동하지만 더 높은 방어력을 가지고 있습니다. 측면에서 액체들을 받아들이지 않습니다.\n액체가 누설하지 않습니다.
block.liquid-router.description = 한 방향에서 액체를 받아 최대 3개의 다른 방향으로 동일하게 출력합니다. 일정량의 액체를 저장할 수도 있으며 한 소스에서 여러 대상으로 액체를 분할하는 데 유용합니다. block.liquid-router.description = 한 방향에서 액체를 받아 최대 3개의 다른 방향으로 동일하게 출력합니다. 일정량의 액체를 저장할 수도 있으며 한 소스에서 여러 대상으로 액체를 분할하는 데 유용합니다.
block.liquid-tank.description = 대량의 액체를 저장합니다. 재료가 일정하지 않은 상황에서 버퍼를 생성하거나 중요한 블록을 냉각하기 위한 보호 장치로 사용하세요. block.liquid-tank.description = 대량의 액체를 저장합니다. 재료가 일정하지 않은 상황에서 버퍼를 생성하거나 중요한 블록을 냉각하기 위한 보호 장치로 사용하세요.
block.liquid-junction.description = 두 개의 교차 파이프를 위한 다리 역할을 합니다. 다른 액체를 다른 위치로 운반하는 두 개의 다른 파이프가 있는 상황에서 유용합니다. block.liquid-junction.description = 두 개의 교차 파이프를 위한 다리 역할을 합니다. 다른 액체를 다른 위치로 운반하는 두 개의 다른 파이프가 있는 상황에서 유용합니다.
@@ -1398,7 +1403,7 @@ block.laser-drill.description = 레이저 기술을 통해 더욱 빠르게 채
block.blast-drill.description = 최상위 드릴. 많은 양의 전력이 필요합니다. block.blast-drill.description = 최상위 드릴. 많은 양의 전력이 필요합니다.
block.water-extractor.description = 지하수를 추출합니다. 물을 구하기 어려운 곳에서 사용합니다. block.water-extractor.description = 지하수를 추출합니다. 물을 구하기 어려운 곳에서 사용합니다.
block.cultivator.description = 대기 중의 작은 농도의 포자를 산업용 포자로 배양합니다. block.cultivator.description = 대기 중의 작은 농도의 포자를 산업용 포자로 배양합니다.
block.cultivator.details = 재발견된 기술. 가장 효율적으로 대량의 유기체를 생산할 때 사용된다. 과거, 세르플을 뒤덮은 포자의 최초 배양지로 판단된다. block.cultivator.details = 재발견된 기술. 가장 효율적으로 대량의 유기체를 생산할 때 사용된다. 과거, 세르플을 뒤덮은 포자의 최초 배양지로 판단된다.
block.oil-extractor.description = 석유를 추출하기 위해 많은 양의 전력과 모래 및 물을 사용합니다. block.oil-extractor.description = 석유를 추출하기 위해 많은 양의 전력과 모래 및 물을 사용합니다.
block.core-shard.description = 기지의 핵심입니다. 파괴되면 해당 지역과의 모든 연결이 끊어집니다. 이런 일이 일어나지 않도록 하십시오. block.core-shard.description = 기지의 핵심입니다. 파괴되면 해당 지역과의 모든 연결이 끊어집니다. 이런 일이 일어나지 않도록 하십시오.
block.core-shard.details = 첫 번째 버전. 휴대용. 자가복제 가능. 일회용 출격 추진기를 가졌으며, 행성간 이동에는 부적합함. block.core-shard.details = 첫 번째 버전. 휴대용. 자가복제 가능. 일회용 출격 추진기를 가졌으며, 행성간 이동에는 부적합함.
@@ -1410,23 +1415,23 @@ block.vault.description = 각 유형의 많은 양의 자원을 저장합니다.
block.container.description = 각 유형의 자원을 소량 저장합니다. 언로더 블록을 사용하여 컨테이너에서 자원을 빼낼 수 있습니다. block.container.description = 각 유형의 자원을 소량 저장합니다. 언로더 블록을 사용하여 컨테이너에서 자원을 빼낼 수 있습니다.
block.unloader.description = 근처의 비 수송 블록에서 자원을 빼냅니다. 눌러서 빼낼 자원을 변경할 수 있십니다. block.unloader.description = 근처의 비 수송 블록에서 자원을 빼냅니다. 눌러서 빼낼 자원을 변경할 수 있십니다.
block.launch-pad.description = 코어 출격 없이도 자원을 묶어 출격시킬 수 있습니다. block.launch-pad.description = 코어 출격 없이도 자원을 묶어 출격시킬 수 있습니다.
block.duo.description = 작고 저렴한 포탑. 지상 유닛에 유용합니다. block.duo.description = 적에게 탄환을 교대하며 발사합니다.
block.scatter.description = 저렴한 대공 포탑. 적군에게 납덩어리, 고철, 또는 강화 유리 조각 덩어리를 뿌립니다. block.scatter.description = 적군에게 납, 고철, 또는 강화 유리 조각 덩어리를 발사합니다.
block.scorch.description = 주변의 모든 적을 불태웁니다. 근거리에서 매우 효과적입니다. block.scorch.description = 주변의 모든 지상 적을 불태웁니다. 근거리에서 매우 효과적입니다.
block.hail.description = 작은 장거리 포병 포탑입니다. block.hail.description = 장거리에 걸쳐 지상 적에게 작은 포탄을 발사합니다.
block.wave.description = 중형 포탑. 적에게 액체를 발사합니다. 물이 공급되면 자동으로 화재를 진압합니다. block.wave.description = 적에게 액체 줄기를 발사합니다. 물이 공급되면 자동으로 화재를 진압합니다.
block.lancer.description = 중형 대지 레이저 포탑. 강력한 에너지 빔을 충전하여 발사합니다. block.lancer.description = 지상 목표물에게 강력한 에너지 빔을 충전하여 발사합니다.
block.arc.description = 작은 근거리 전격 포탑. 적에게 전격 아크를 발사합니다. block.arc.description = 지상 목표물에게 전격 아크를 발사합니다.
block.swarmer.description = 중형 미사일 포탑. 공중과 지상의 적을 모두 공격하며, 유도탄을 발사합니다. block.swarmer.description = 적에게 유도탄을 발사합니다.
block.salvo.description = 더 큰 고급 듀오 포탑입니다. 적에게 총알을 빠르게 발사합니다. block.salvo.description = 적에게 총알을 빠르게 일제히 발사합니다.
block.fuse.description = 넓은 근거리 파편 포탑. 근처의 적에게 3개의 관통 총알을 발사합니다. block.fuse.description = 주변 적에게 3개의 단거리 관통 레이저를 발사합니다.
block.ripple.description = 매우 강력한 포병 포탑. 원거리에 있는 적에게 포탄 무리를 쏘세요. block.ripple.description = 장거리에 걸쳐 지상 적에게 포탄 무리를 발사합니다.
block.cyclone.description = 대공 및 대지 포탑. 근처 적에게 폭발탄을 발사합니다. block.cyclone.description = 근처 적에게 폭발 파편 덩어리를 발사합니다.
block.spectre.description = 거대한 이중 배럴 대포. 공중 및 지상 목표물에 큰 관통 철갑탄을 발사합니다. block.spectre.description = 공중 및 지상 목표물에 큰 관통 철갑탄을 발사합니다.
block.meltdown.description = 거대한 레이저 대포. 근처의 적에게 지속적인 레이저 빔을 충전하여 발사합니다. 냉각가 있어야 작동합니다. block.meltdown.description = 주변 적에게 지속적인 레이저 빔을 충전하여 발사합니다. 냉각 액체가 있어야 작동합니다.
block.foreshadow.description = 거리에 걸친 거대한 단일 목표 볼트를 발사합니다. block.foreshadow.description = 거리에 걸친 거대한 단일 목표 저격탄을 발사합니다.
block.repair-point.description = 주변에서 가장 가까운 유닛을 지속적으로 치료합니다. block.repair-point.description = 인근에 가장 가까운 유닛을 지속적으로 치료합니다.
block.segment.description = 날아오는 발사체를 요격합니다. 레이저는 목표 대상이 아닙니다. block.segment.description = 날아오는 발사체를 요격합니다. 큰 발사체에겐 조준되지 않습니다.
block.parallax.description = 공중 목표물을 끌어오는 견인 광선을 발사하며, 견인 과정에서 데미지를 줍니다. block.parallax.description = 공중 목표물을 끌어오는 견인 광선을 발사하며, 견인 과정에서 데미지를 줍니다.
block.tsunami.description = 적에게 강력한 액체 줄기를 발사합니다. 물이 공급되면 자동으로 주변의 화재를 진압합니다. block.tsunami.description = 적에게 강력한 액체 줄기를 발사합니다. 물이 공급되면 자동으로 주변의 화재를 진압합니다.
block.silicon-crucible.description = 추가적으로 파이라타이트를 사용하여 더 높은 온도에서 석탄과 모래를 제련합니다. 뜨거운 곳에서 더 효율적입니다. block.silicon-crucible.description = 추가적으로 파이라타이트를 사용하여 더 높은 온도에서 석탄과 모래를 제련합니다. 뜨거운 곳에서 더 효율적입니다.
@@ -1465,8 +1470,8 @@ unit.corvus.description = 적에게 피해를 주고, 아군 구조물을 수리
unit.crawler.description = 적에게 달려들어서 거대한 폭발을 일으키는 자폭을 합니다. unit.crawler.description = 적에게 달려들어서 거대한 폭발을 일으키는 자폭을 합니다.
unit.atrax.description = 지상 목표물을 약화하는 광재 구체를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다. unit.atrax.description = 지상 목표물을 약화하는 광재 구체를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다.
unit.spiroct.description = 적에게 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다. unit.spiroct.description = 적에게 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다.
unit.arkyid.description = 적에게 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다. unit.arkyid.description = 적에게 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다.
unit.toxopid.description = 적에게 큰 전기 확산탄과 관통 레이저를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다. unit.toxopid.description = 적에게 큰 전격 포탄 무리와 관통 레이저를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다.
unit.flare.description = 지상 목표물에 일반적인 탄환을 발사합니다. unit.flare.description = 지상 목표물에 일반적인 탄환을 발사합니다.
unit.horizon.description = 지상 목표물에 폭탄을 투하합니다. unit.horizon.description = 지상 목표물에 폭탄을 투하합니다.
unit.zenith.description = 주변 모든 적에게 미사일을 살포합니다. unit.zenith.description = 주변 모든 적에게 미사일을 살포합니다.

View File

@@ -69,7 +69,7 @@ stat.delivered = Resurse Lansate:
stat.playtime = Timp Joc:[accent] {0} stat.playtime = Timp Joc:[accent] {0}
stat.rank = Rang Final: [accent]{0} stat.rank = Rang Final: [accent]{0}
globalitems = [accent]Materiale Globale globalitems = [accent]Materiale Totale
map.delete = Sigur vrei să ștergi harta "[accent]{0}[]"? map.delete = Sigur vrei să ștergi harta "[accent]{0}[]"?
level.highscore = Scor Maxim: [accent]{0} level.highscore = Scor Maxim: [accent]{0}
level.select = Selectează Nivelul level.select = Selectează Nivelul
@@ -196,6 +196,7 @@ servers.local = Servere Locale
servers.remote = Servere de la Distanță servers.remote = Servere de la Distanță
servers.global = Servere ale Comunității servers.global = Servere ale Comunității
servers.disclaimer = Serverele comunității [accent]nu[] sunt deținute sau controlate de către dezvoltator.\n\nServerele pot prezenta conținut generat de utilizatori care nu este potrivit tuturor vârstelor.
servers.showhidden = Vezi Serverele Ascunse servers.showhidden = Vezi Serverele Ascunse
server.shown = Afișate server.shown = Afișate
server.hidden = Ascunse server.hidden = Ascunse
@@ -702,7 +703,7 @@ ability.forcefield = Câmp de Forță
ability.repairfield = Câmp de Reparare ability.repairfield = Câmp de Reparare
ability.statusfield = Câmp Suprasolicitare Unități ability.statusfield = Câmp Suprasolicitare Unități
ability.unitspawn = Fabrică de {0} ability.unitspawn = Fabrică de {0}
ability.shieldregenfield = Câmp de Regenerare a Scutului ability.shieldregenfield = Regenerare Câmpuri de Forță
ability.movelightning = Mișcare Fulger ability.movelightning = Mișcare Fulger
bar.drilltierreq = Burghiu Mai Bun Necesar bar.drilltierreq = Burghiu Mai Bun Necesar
@@ -1254,7 +1255,7 @@ hint.respawn = Pt a te regenera ca navă în nucleu, apasă [accent][[V][].
hint.respawn.mobile = Acum controlezi o unitate/structură. Pt a te regenera ca navă în nucleu, [accent]dă click pe avatarul din colțul din stânga-sus.[] hint.respawn.mobile = Acum controlezi o unitate/structură. Pt a te regenera ca navă în nucleu, [accent]dă click pe avatarul din colțul din stânga-sus.[]
hint.desktopPause = Apasă pe [accent][[Space][] pt a da pauză jocului. Apasă din nou pt a ieși din modul pauză. hint.desktopPause = Apasă pe [accent][[Space][] pt a da pauză jocului. Apasă din nou pt a ieși din modul pauză.
hint.placeDrill = Selectează tabul \ue85e [accent]Burghie[] din meniul din dreapta-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click pe un minereu de cupru pt a mina. hint.placeDrill = Selectează tabul \ue85e [accent]Burghie[] din meniul din dreapta-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click pe un minereu de cupru pt a mina.
hint.placeDrill.mobile = Selectează tabul \ue85e[accent]Burghie[] din meniul din dreapta-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click un minereu de cupru pt a mina.\n\nApasă pe \ue800 [accent]bifa[] din dreapta-jos pt confirmare. hint.placeDrill.mobile = Selectează tabul \ue85e [accent]Burghie[] din meniul din dreapta-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click un minereu de cupru pt a mina.\n\nApasă pe \ue800 [accent]bifa[] din dreapta-jos pt confirmare.
hint.placeConveyor = Benzile transportă materiale din burghie către alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\nDă click pe ecran și trage pt a desena o linie de bandă.\nFolosește [accent]rotița mouseului[] pt rotire. hint.placeConveyor = Benzile transportă materiale din burghie către alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\nDă click pe ecran și trage pt a desena o linie de bandă.\nFolosește [accent]rotița mouseului[] pt rotire.
hint.placeConveyor.mobile = Benzile transportă materiale din burghie către alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\nȚine apăsat cu degetul pt o secundă și trage pt a desena o linie de bandă. hint.placeConveyor.mobile = Benzile transportă materiale din burghie către alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\nȚine apăsat cu degetul pt o secundă și trage pt a desena o linie de bandă.
hint.placeTurret = Construiește \uf861 [accent]Arme[] pt a-ți apăra baza de inamici.\n\nArmele necesită muniție. Putem folosi \uf838cupru.\nAlimentează arma folosind benzi și burghie. hint.placeTurret = Construiește \uf861 [accent]Arme[] pt a-ți apăra baza de inamici.\n\nArmele necesită muniție. Putem folosi \uf838cupru.\nAlimentează arma folosind benzi și burghie.
@@ -1263,7 +1264,7 @@ hint.breaking.mobile = Activează \ue817 [accent]ciocanul[] din dreapta-jos și
hint.research = Folosește butonul \ue875 [accent]Cercetează[] pt a cerceta noi tehnologii. hint.research = Folosește butonul \ue875 [accent]Cercetează[] pt a cerceta noi tehnologii.
hint.research.mobile = Folosește butonul \ue875 [accent]Cercetează[] din \ue88c [accent]Meniu[] pt a cerceta noi tehnologii. hint.research.mobile = Folosește butonul \ue875 [accent]Cercetează[] din \ue88c [accent]Meniu[] pt a cerceta noi tehnologii.
hint.unitControl = Ține apăsat [accent][[Ctrl][] și [accent]dă click[] pt a controla unități aliate sau arme. hint.unitControl = Ține apăsat [accent][[Ctrl][] și [accent]dă click[] pt a controla unități aliate sau arme.
hint.unitControl.mobile = [accent][Dă dublu click[] pt a controla unități aliate sau arme. hint.unitControl.mobile = [accent][[Dă dublu click][] pt a controla unități aliate sau arme.
hint.launch = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către o altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din dreapta-jos. hint.launch = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către o altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din dreapta-jos.
hint.launch.mobile = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către o altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din \ue88c [accent]Meniu[]. hint.launch.mobile = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către o altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din \ue88c [accent]Meniu[].
hint.schematicSelect = Ține apăsat [accent][[F][] și trage pt a selecta blocuri pt copiere.\n\n[accent][[Click pe rotiță][] pt a copia un singur tip de bloc. hint.schematicSelect = Ține apăsat [accent][[F][] și trage pt a selecta blocuri pt copiere.\n\n[accent][[Click pe rotiță][] pt a copia un singur tip de bloc.
@@ -1279,6 +1280,9 @@ hint.payloadDrop.mobile = [accent]Ține apăsat[] pe o locație goală pt a desc
hint.waveFire = Armele [accent]Wave[] încărcate cu apă vor stinge incendiile automat. hint.waveFire = Armele [accent]Wave[] încărcate cu apă vor stinge incendiile automat.
hint.generator = \uf879 [accent]Generatoarele pe Combustie[] ard cărbunele și transmit electricitatea blocurilor învecinate.\n\nElectricitatea poate fi transmisă pe distanțe lungi folosind \uf87f [accent]Noduri Electrice[]. hint.generator = \uf879 [accent]Generatoarele pe Combustie[] ard cărbunele și transmit electricitatea blocurilor învecinate.\n\nElectricitatea poate fi transmisă pe distanțe lungi folosind \uf87f [accent]Noduri Electrice[].
hint.guardian = Unitățile [accent]Gardian[] au armuri puternice. Munițiile slabe precum [accent]Cuprul[] și [accent]Plumbul[] [scarlet]nu sunt eficiente[].\n\nFolosește arme mai bune sau muniție de \uf835 [accent]Grafit[] pt \uf861Duo/\uf859Salvo pt a nimici Gardianul. hint.guardian = Unitățile [accent]Gardian[] au armuri puternice. Munițiile slabe precum [accent]Cuprul[] și [accent]Plumbul[] [scarlet]nu sunt eficiente[].\n\nFolosește arme mai bune sau muniție de \uf835 [accent]Grafit[] pt \uf861Duo/\uf859Salvo pt a nimici Gardianul.
hint.coreUpgrade = Un nucleu poate pot fi îmbunătățit [accent]plasând o alt nucleu mai bun peste el[].\n\nPlasează un nucleu  [accent]Foundation[] peste nucleul  [accent]Shard[]. Nucleul nu poate fi plasat decât pe alte nuclee. Asigură-te că nu sunt alte benzi sau obstacole care să împiedice plasarea.
hint.presetLaunch = Poți lansa de oriunde în sectoarele gri, precum [accent]Pădurea Glacială[]. Ele sunt [accent]zone[] speciale [accent]de aterizare[]. Nu ai nevoie să capturezi sectoarele învecinate pt a lansa.\n\n[accent]Sectoarele numerotate[], ca acesta, sunt [accent]opționale[].
hint.coreIncinerate = După ce nucleul se umple până la refuz cu un tip de material, toate materialele în plus de acel tip care încearcă să între în nucleu sunt [accent]incinerate[].
item.copper.description = Folosit în tot felul de construcții și muniție. item.copper.description = Folosit în tot felul de construcții și muniție.
item.copper.details = Cupru. Metal anormal de abundent pe Serpulo. Structural slab dacă nu este consolidat. item.copper.details = Cupru. Metal anormal de abundent pe Serpulo. Structural slab dacă nu este consolidat.
@@ -1472,7 +1476,7 @@ unit.zenith.description = Trage cu salve de rachete către inamicii din apropier
unit.antumbra.description = Trage cu un baraj de gloanțe către inamicii din apropiere. unit.antumbra.description = Trage cu un baraj de gloanțe către inamicii din apropiere.
unit.eclipse.description = Trage cu un baraj de grămezi de material și două lasere care penetrează scuturile tuturor inamicilor din apropiere. unit.eclipse.description = Trage cu un baraj de grămezi de material și două lasere care penetrează scuturile tuturor inamicilor din apropiere.
unit.mono.description = Minează automat cupru și plumb, depozitându-le în nucleu. unit.mono.description = Minează automat cupru și plumb, depozitându-le în nucleu.
unit.poly.description = Reconstruiește automat structurile deteriorate și asistă alte unități la construire. unit.poly.description = Reconstruiește automat structurile distruse și asistă alte unități la construire.
unit.mega.description = Repară automat structurile deteriorate. Capabilă să care blocuri și mici unități de artilerie. unit.mega.description = Repară automat structurile deteriorate. Capabilă să care blocuri și mici unități de artilerie.
unit.quad.description = Aruncă bombe mari peste artileria inamică, reparând structurile aliate și deteriorând inamicii. Capabilă să care unități de artilerie de dimensiuni medii. unit.quad.description = Aruncă bombe mari peste artileria inamică, reparând structurile aliate și deteriorând inamicii. Capabilă să care unități de artilerie de dimensiuni medii.
unit.oct.description = Protejează aliații din apropiere cu scutul său care se regenerează. Capabilă să care majoritatea unităților de artilerie. unit.oct.description = Protejează aliații din apropiere cu scutul său care se regenerează. Capabilă să care majoritatea unităților de artilerie.

View File

@@ -1,4 +1,4 @@
credits.text = Створив [royal]Anuken[] — [sky]anukendev@gmail.com[]\n\nМаєте питання по грі або знайшли помилки в перекладі?\nДолучайтеся до офіційного сервера Mindustry у Discord\nв канал #українська.\nУкраїнський перекладач — Prosta4ok_ua#6336. credits.text = Створив [royal]Anuken[] — [sky]anukendev@gmail.com[]\n\nМаєте питання за грою або знайшли помилки в перекладі?\nДолучайтеся до офіційного сервера Mindustry у Discord\nв канал #українська.\nУкраїнський перекладач — Prosta4ok_ua#6336.
credits = Творці credits = Творці
contributors = Перекладачі та помічники contributors = Перекладачі та помічники
discord = Офіційний сервер Mindustry в Discord discord = Офіційний сервер Mindustry в Discord
@@ -22,9 +22,8 @@ gameover.pvp = [accent]{0}[] команда перемогла!
gameover.waiting = [accent]Очікуємо наступно мапу… gameover.waiting = [accent]Очікуємо наступно мапу…
highscore = [accent]Новий рекорд! highscore = [accent]Новий рекорд!
copied = Скопійовано. copied = Скопійовано.
indev.popup = Наразі [accent]6.0[] знаходиться у стадії [accent]бета-тестування[].\n[lightgray]Це означає наступне:[]\n- Не вистачає наповнення кампанії;\n- Кампанія повністю не є завершеною;\n- Усе, що ви бачите, може змінитися або видалитися.\n\nПовідомляйте про вади або збої на [accent]Github[], а про помилки в перекладі в Discord.
indev.notready = Ця частина гри ще не готова. indev.notready = Ця частина гри ще не готова.
indev.campaign = [accent]Вітання! Ви досягли кінця кампанії![]\n\nНаразі це все, що може запропонувати вам гра. Міжпланетні подорожі зʼявляться в наступних оновленнях.
load.sound = Звуки load.sound = Звуки
load.map = Мапи load.map = Мапи
load.image = Зображення load.image = Зображення
@@ -32,14 +31,12 @@ load.content = Зміст
load.system = Система load.system = Система
load.mod = Модифікації load.mod = Модифікації
load.scripts = Скрипти load.scripts = Скрипти
be.update = Доступна нова збірка Bleeding Edge: be.update = Доступна нова збірка Bleeding Edge:
be.update.confirm = Завантажити та перезавантажити зараз? be.update.confirm = Завантажити та перезавантажити зараз?
be.updating = Оновлення… be.updating = Оновлення…
be.ignore = Ігнорувати be.ignore = Ігнорувати
be.noupdates = Оновлень не знайдено. be.noupdates = Оновлень не знайдено.
be.check = Перевірити на наявність оновлень be.check = Перевірити на наявність оновлень
schematic = Схема schematic = Схема
schematic.add = Зберегти схему… schematic.add = Зберегти схему…
schematics = Схеми schematics = Схеми
@@ -58,7 +55,6 @@ schematic.delete.confirm = Ви справді хочете видалити ц
schematic.rename = Перейменувати схему schematic.rename = Перейменувати схему
schematic.info = {0}x{1}, блоків: {2} schematic.info = {0}x{1}, блоків: {2}
schematic.disabled = [scarlet]Схеми вимкнені[]\nВам не дозволяється використовувати схеми на цій [accent]мапі[] чи [accent]сервері. schematic.disabled = [scarlet]Схеми вимкнені[]\nВам не дозволяється використовувати схеми на цій [accent]мапі[] чи [accent]сервері.
stats = Статистика stats = Статистика
stat.wave = Хвиль відбито:[accent] {0} stat.wave = Хвиль відбито:[accent] {0}
stat.enemiesDestroyed = Противників знищено:[accent] {0} stat.enemiesDestroyed = Противників знищено:[accent] {0}
@@ -68,8 +64,7 @@ stat.deconstructed = Будівель деконструйовано:[accent] {0
stat.delivered = Ресурсів запущено: stat.delivered = Ресурсів запущено:
stat.playtime = Час у грі:[accent] {0} stat.playtime = Час у грі:[accent] {0}
stat.rank = Фінальний рахунок:[accent] {0} stat.rank = Фінальний рахунок:[accent] {0}
globalitems = [accent]Усього предметів
globalitems = [accent]Глобальні предмети
map.delete = Ви впевнені, що хочете видалити мапу «[accent]{0}[]»? map.delete = Ви впевнені, що хочете видалити мапу «[accent]{0}[]»?
level.highscore = Рекорд: [accent]{0} level.highscore = Рекорд: [accent]{0}
level.select = Вибір мапи level.select = Вибір мапи
@@ -102,7 +97,6 @@ uploadingpreviewfile = Вивантаження файлу попередньо
committingchanges = Здійснення змін committingchanges = Здійснення змін
done = Зроблено done = Зроблено
feature.unsupported = Ваш пристрій не підтримує цю функцію feature.unsupported = Ваш пристрій не підтримує цю функцію
mods.alphainfo = Майте на увазі, що модифікації перебувають в альфі, і [scarlet]можуть бути дуже несправними[].\nПовідомте про будь-які проблеми, які ви знайдете до Mindustry Github або Discord. mods.alphainfo = Майте на увазі, що модифікації перебувають в альфі, і [scarlet]можуть бути дуже несправними[].\nПовідомте про будь-які проблеми, які ви знайдете до Mindustry Github або Discord.
mods = Модифікації mods = Модифікації
mods.none = [lightgray]Модифікацій не знайдено! mods.none = [lightgray]Модифікацій не знайдено!
@@ -118,7 +112,7 @@ mod.disable = Вимкнути
mod.content = Зміст: mod.content = Зміст:
mod.delete.error = Неможливо видалити модифікацію. Файл, можливо, використовується. mod.delete.error = Неможливо видалити модифікацію. Файл, можливо, використовується.
mod.requiresversion = [scarlet]Необхідна мінімальна версія гри: [accent]{0} mod.requiresversion = [scarlet]Необхідна мінімальна версія гри: [accent]{0}
mod.outdated = [scarlet]Не сумісна з V6 (немає мінімальної версі гри (англ. min-game-version): 105) mod.outdated = [scarlet]Не сумісна з V6
mod.missingdependencies = [scarlet]Відсутні залежності: {0} mod.missingdependencies = [scarlet]Відсутні залежності: {0}
mod.erroredcontent = [scarlet]Помилки під час завантаження mod.erroredcontent = [scarlet]Помилки під час завантаження
mod.errors = Виникли помилки під час завантаження змісту. mod.errors = Виникли помилки під час завантаження змісту.
@@ -138,7 +132,6 @@ mod.missing = Це збереження містить модифікації,
mod.preview.missing = До публікації цієї модифікації в Майстерні, ви мусите додати зображення попереднього перегляду.\nПомістіть зображення з назвою [accent] preview.png[] у теку з модифікаціями та спробуйте знову. mod.preview.missing = До публікації цієї модифікації в Майстерні, ви мусите додати зображення попереднього перегляду.\nПомістіть зображення з назвою [accent] preview.png[] у теку з модифікаціями та спробуйте знову.
mod.folder.missing = Тільки модифікації у формі теці можуть бути опубліковані в Майстерні.\nЩоб перетворити будь-яку модифікацію в теку, просто розархівуйте цей файл у теку та видаліть старий архів, і потім перезапустіть гру або перезавантажте ваші модифікації. mod.folder.missing = Тільки модифікації у формі теці можуть бути опубліковані в Майстерні.\nЩоб перетворити будь-яку модифікацію в теку, просто розархівуйте цей файл у теку та видаліть старий архів, і потім перезапустіть гру або перезавантажте ваші модифікації.
mod.scripts.disable = Ваш пристрій не підтримує модифікації зі скриптами. Вимкніть модифікацію для запуску гри. mod.scripts.disable = Ваш пристрій не підтримує модифікації зі скриптами. Вимкніть модифікацію для запуску гри.
about.button = Про гру about.button = Про гру
name = Ім’я: name = Ім’я:
noname = Спочатку придумайте[accent] собі ім’я[]. noname = Спочатку придумайте[accent] собі ім’я[].
@@ -146,8 +139,12 @@ planetmap = Планетна мапа
launchcore = Запустити ядро launchcore = Запустити ядро
filename = Назва файлу: filename = Назва файлу:
unlocked = Доступний новий вміст! unlocked = Доступний новий вміст!
available = Нове дослідження доступно!
completed = [accent]Завершено completed = [accent]Завершено
techtree = Дерево технологій techtree = Дерево технологій
research.legacy = Були знайдені дослідження з [accent]5.0[].\nЧи бажаєте ви [accent]завантажити ці дані[] або [accent]ви хочете відмовитися від цього[] і почати досліджувати із самого початку в новій кампанії (рекомендовано)?
research.load = Завантажити
research.discard = Відмовитися
research.list = [lightgray]Дослідження: research.list = [lightgray]Дослідження:
research = Дослідження research = Дослідження
researched = [lightgray]{0} досліджено. researched = [lightgray]{0} досліджено.
@@ -174,7 +171,7 @@ server.kicked.customClient = Цей сервер не підтримує кор
server.kicked.gameover = Гру завершено! server.kicked.gameover = Гру завершено!
server.kicked.serverRestarting = Сервер перезавантажується server.kicked.serverRestarting = Сервер перезавантажується
server.versions = Ваша версія:[accent] {0}[]\nВерсія на сервері:[accent] {1}[] server.versions = Ваша версія:[accent] {0}[]\nВерсія на сервері:[accent] {1}[]
host.info = Кнопка [accent]Сервер[] розміщує сервер на порті [scarlet]6567[].\nКористувачі, які перебувають в тій же [lightgray]WiFi або локальній мережах[], мають побачити ваш сервер у своєму списку серверів.\n\nЯкщо ви хочете, щоби люди могли приєднуватися з будь-якої точки планети через IP, то потрібно зробити[accent] переадресація порту[].\n\n[lightgray]Примітка. Якщо у вас виникли проблеми з приєднанням до вашої локальної гри, переконайтеся, що ви надали Mindustry доступ до вашої локальної мережі в налаштуваннях брандмауера. Зауважте, що публічні мережі іноді не дають змогу виявити сервер. host.info = Кнопка [accent]Сервер[] розміщує сервер на порті [scarlet]6567[].\nКористувачі, які перебувають у тій же [lightgray]WiFi або локальній мережах[], мають побачити ваш сервер у своєму списку серверів.\n\nЯкщо ви хочете, щоби люди могли приєднуватися з будь-якої точки планети через IP, то потрібно зробити[accent] переадресація порту[].\n\n[lightgray]Примітка. Якщо у вас виникли проблеми з приєднанням до вашої локальної гри, переконайтеся, що ви надали Mindustry доступ до вашої локальної мережі в налаштуваннях брандмауера. Зауважте, що публічні мережі іноді не дають змогу виявити сервер.
join.info = Тут ви можете ввести [accent]IP сервера[] для під’єднання або знайти сервери у [accent]локальній[] чи [accent]глобальній мережі[] для приєднання до них.\nПідтримується локальна мережа(LAN) і широкосмугова мережа(WAN).\n\n[lightgray] Примітка. Це не є автоматичним глобальним списком серверів; якщо ви хочете приєднатися до когось через IP, вам доведеться попросити власника сервера дати свій ip. join.info = Тут ви можете ввести [accent]IP сервера[] для під’єднання або знайти сервери у [accent]локальній[] чи [accent]глобальній мережі[] для приєднання до них.\nПідтримується локальна мережа(LAN) і широкосмугова мережа(WAN).\n\n[lightgray] Примітка. Це не є автоматичним глобальним списком серверів; якщо ви хочете приєднатися до когось через IP, вам доведеться попросити власника сервера дати свій ip.
hostserver = Запустити багатокористувацький сервер hostserver = Запустити багатокористувацький сервер
invitefriends = Запросити друзів invitefriends = Запросити друзів
@@ -187,15 +184,14 @@ hosts.discovering.any = Пошук ігор
server.refreshing = Оновлення сервера server.refreshing = Оновлення сервера
hosts.none = [lightgray]Локальних ігор не знайдено hosts.none = [lightgray]Локальних ігор не знайдено
host.invalid = [scarlet]Не вдалося під’єднатися до сервера. host.invalid = [scarlet]Не вдалося під’єднатися до сервера.
servers.local = Локальні сервери servers.local = Локальні сервери
servers.remote = Віддалені сервери servers.remote = Віддалені сервери
servers.global = Глобальні сервери servers.global = Глобальні сервери
servers.disclaimer = Сервери спільноли [accent]не[] належать чи контролюються власником.\n\nСервери можуть містити користувацький вміст, який не підходить для якогось віку.
servers.showhidden = Показати приховані сервери servers.showhidden = Показати приховані сервери
server.shown = Показано server.shown = Показано
server.hidden = Приховано server.hidden = Приховано
trace = Стежити за гравцем trace = Стежити за гравцем
trace.playername = Ім’я гравця: [accent]{0} trace.playername = Ім’я гравця: [accent]{0}
trace.ip = IP: [accent]{0} trace.ip = IP: [accent]{0}
@@ -229,6 +225,7 @@ disconnect.timeout = Час вийшов.
disconnect.data = Не вдалося завантажити світові дані! disconnect.data = Не вдалося завантажити світові дані!
cantconnect = Не вдалося під’єднатися до гри ([accent]{0}[]). cantconnect = Не вдалося під’єднатися до гри ([accent]{0}[]).
connecting = [accent]Приєднання… connecting = [accent]Приєднання…
reconnecting = [accent]Повторне зʼєднання…
connecting.data = [accent]Завантаження даних світу… connecting.data = [accent]Завантаження даних світу…
server.port = Порт: server.port = Порт:
server.addressinuse = Ця адреса вже використовується! server.addressinuse = Ця адреса вже використовується!
@@ -284,7 +281,7 @@ data.exported = Дані вивантажено.
data.invalid = Це не дійсні ігрові дані. data.invalid = Це не дійсні ігрові дані.
data.import.confirm = Вивантаження зовнішніх даних перезапише[scarlet] ВСІ[] ваші поточні ігрові дані.\n[accent]Це неможливо скасувати![]\n\nЯк тільки дані імпортуються, гра негайно закриється. data.import.confirm = Вивантаження зовнішніх даних перезапише[scarlet] ВСІ[] ваші поточні ігрові дані.\n[accent]Це неможливо скасувати![]\n\nЯк тільки дані імпортуються, гра негайно закриється.
quit.confirm = Ви дійсно хочете вийти? quit.confirm = Ви дійсно хочете вийти?
quit.confirm.tutorial = Ви впевнені, що знаєте що робите?\nНавчання можна пройти наново[accent] Налаштування->Гра->Пройти навчання ще раз.[] quit.confirm.tutorial = Ви впевнені, що знаєте, що робите?\nНавчання можна пройти наново[accent] Налаштування->Гра->Пройти навчання ще раз.[]
loading = [accent]Завантаження… loading = [accent]Завантаження…
reloading = [accent]Перезавантаження модифікацій… reloading = [accent]Перезавантаження модифікацій…
saving = [accent]Збереження… saving = [accent]Збереження…
@@ -304,7 +301,7 @@ wave.enemies = Залишилося\n[lightgray]{0} противник.
wave.enemycores = Ворожих ядер: [accent]{0}[lightgray] wave.enemycores = Ворожих ядер: [accent]{0}[lightgray]
wave.enemycore = [accent]{0}[lightgray] вороже ядро wave.enemycore = [accent]{0}[lightgray] вороже ядро
wave.enemy = Залишився\n[lightgray]{0} противник wave.enemy = Залишився\n[lightgray]{0} противник
wave.guardianwarn = Хвиль до появи Вартового: [accent]{0}[] . wave.guardianwarn = Хвиль до появи Вартового: [accent]{0}[].
wave.guardianwarn.one = Вартовий з’явиться через [accent]{0}[] хвилю. wave.guardianwarn.one = Вартовий з’явиться через [accent]{0}[] хвилю.
loadimage = Завантажити зображення loadimage = Завантажити зображення
saveimage = Зберегти зображення saveimage = Зберегти зображення
@@ -329,7 +326,6 @@ publishing = [accent]Публікація…
publish.confirm = Ви дійсно хочете опублікувати це?\n\n[lightgray]Переконайтеся, що ви спочатку погоджуєтеся з EULA Майстерні, або ваші предмети не з’являться! publish.confirm = Ви дійсно хочете опублікувати це?\n\n[lightgray]Переконайтеся, що ви спочатку погоджуєтеся з EULA Майстерні, або ваші предмети не з’являться!
publish.error = Виникла помилка під час публікації предмета: {0} publish.error = Виникла помилка під час публікації предмета: {0}
steam.error = Не вдалося ініціалізувати сервіси Steam.\nПомилка: {0} steam.error = Не вдалося ініціалізувати сервіси Steam.\nПомилка: {0}
editor.brush = Пензлик editor.brush = Пензлик
editor.openin = Відкрити в редакторі editor.openin = Відкрити в редакторі
editor.oregen = Генерація руд editor.oregen = Генерація руд
@@ -362,12 +358,9 @@ waves.load = Завантажити з буфера обміну
waves.invalid = Недійсні хвилі в буфері обміну. waves.invalid = Недійсні хвилі в буфері обміну.
waves.copied = Хвилі скопійовані. waves.copied = Хвилі скопійовані.
waves.none = Противники не були встановлені.\nЗазначимо, що пусті хвилі будуть автоматично замінені звичайною хвилею. waves.none = Противники не були встановлені.\nЗазначимо, що пусті хвилі будуть автоматично замінені звичайною хвилею.
#these are intentionally in lower case
wavemode.counts = кількість wavemode.counts = кількість
wavemode.totals = усього wavemode.totals = усього
wavemode.health = здоров’я wavemode.health = здоров’я
editor.default = [lightgray]<За замовчуванням> editor.default = [lightgray]<За замовчуванням>
details = Подробиці… details = Подробиці…
edit = Редагувати… edit = Редагувати…
@@ -414,7 +407,6 @@ editor.overwrite = [accent]Попередження!\nЦе перезапису
editor.overwrite.confirm = [scarlet]Попередження![] Мапа з такою назвою вже є. Ви впевнені, що хочете переписати її?\n«[accent]{0}[]» editor.overwrite.confirm = [scarlet]Попередження![] Мапа з такою назвою вже є. Ви впевнені, що хочете переписати її?\n«[accent]{0}[]»
editor.exists = Мапа з такою назвою вже є. editor.exists = Мапа з такою назвою вже є.
editor.selectmap = Виберіть мапу для завантаження: editor.selectmap = Виберіть мапу для завантаження:
toolmode.replace = Замінити toolmode.replace = Замінити
toolmode.replace.description = Малює тільки\nна суцільних блоках. toolmode.replace.description = Малює тільки\nна суцільних блоках.
toolmode.replaceall = Замінити все toolmode.replaceall = Замінити все
@@ -429,7 +421,6 @@ toolmode.fillteams = Змінити блок у команді
toolmode.fillteams.description = Змінює належність\nблоків до команди. toolmode.fillteams.description = Змінює належність\nблоків до команди.
toolmode.drawteams = Змінити команду блока toolmode.drawteams = Змінити команду блока
toolmode.drawteams.description = Змінює належність\nблока до команди. toolmode.drawteams.description = Змінює належність\nблока до команди.
filters.empty = [lightgray]Немає фільтрів! Додайте хоча б один за допомогою кнопки нижче. filters.empty = [lightgray]Немає фільтрів! Додайте хоча б один за допомогою кнопки нижче.
filter.distort = Спотворення filter.distort = Спотворення
filter.noise = Шум filter.noise = Шум
@@ -466,7 +457,6 @@ filter.option.floor2 = Друга поверхня
filter.option.threshold2 = Вторинний граничний поріг filter.option.threshold2 = Вторинний граничний поріг
filter.option.radius = Радіус filter.option.radius = Радіус
filter.option.percentile = Спад filter.option.percentile = Спад
width = Ширина: width = Ширина:
height = Висота: height = Висота:
menu = Меню menu = Меню
@@ -484,7 +474,6 @@ tutorial = Навчання
tutorial.retake = Пройти навчання ще раз tutorial.retake = Пройти навчання ще раз
editor = Редактор editor = Редактор
mapeditor = Редактор мап mapeditor = Редактор мап
abandon = Покинути abandon = Покинути
abandon.text = Ця зона і всі її ресурси будуть утрачені. abandon.text = Ця зона і всі її ресурси будуть утрачені.
locked = Заблоковано locked = Заблоковано
@@ -494,28 +483,20 @@ requirement.core = Знищте вороже ядро в зоні «{0}»
requirement.research = Дослідіть {0} requirement.research = Дослідіть {0}
requirement.produce = Виробіть {0} requirement.produce = Виробіть {0}
requirement.capture = Захопіть {0} requirement.capture = Захопіть {0}
bestwave = [lightgray]Найкраща хвиля: {0}
launch.text = Запуск launch.text = Запуск
research.multiplayer = Лише власник сервера має змогу досліджувати предмети. research.multiplayer = Лише власник сервера має змогу досліджувати предмети.
map.multiplayer = Лише власник може переглядати сектори.
uncover = Розкрити uncover = Розкрити
configure = Налаштувати вивантаження configure = Налаштувати вивантаження
#TODO
loadout = Вивантаження loadout = Вивантаження
resources = Ресурси resources = Ресурси
bannedblocks = Заборонені блоки bannedblocks = Заборонені блоки
addall = Додати все addall = Додати все
launch.from = Запуск з [accent]{0}
launch.destination = Пункт призначення: {0} launch.destination = Пункт призначення: {0}
configure.invalid = Кількість має бути числом між 0 та {0}. configure.invalid = Кількість має бути числом між 0 та {0}.
zone.unlocked = Зона «[lightgray]{0}» тепер розблокована.
zone.requirement.complete = Вимоги до зони «{0}» виконані:[lightgray]\n{1}
zone.resources = [lightgray]Виявлені ресурси:
zone.objective = [lightgray]Мета: [accent]{0}
zone.objective.survival = вижити
zone.objective.attack = знищити вороже ядро
add = Додати… add = Додати…
boss.health = Здоров’я Вартового boss.health = Здоров’я Вартового
connectfail = [crimson]Помилка з’єднання:\n\n[accent]{0} connectfail = [crimson]Помилка з’єднання:\n\n[accent]{0}
error.unreachable = Сервер не є доступним.\nЧи правильно написана адреса? error.unreachable = Сервер не є доступним.\nЧи правильно написана адреса?
error.invalidaddress = Некоректна адреса. error.invalidaddress = Некоректна адреса.
@@ -526,13 +507,11 @@ error.mapnotfound = Файл мапи не знайдено!
error.io = Мережева помилка введення-виведення. error.io = Мережева помилка введення-виведення.
error.any = Невідома мережева помилка error.any = Невідома мережева помилка
error.bloom = Не вдалося ініціалізувати світіння.\nВаш пристрій, мабуть, не підтримує це. error.bloom = Не вдалося ініціалізувати світіння.\nВаш пристрій, мабуть, не підтримує це.
weather.rain.name = Дощ weather.rain.name = Дощ
weather.snow.name = Сніг weather.snow.name = Сніг
weather.sandstorm.name = Піщана буря weather.sandstorm.name = Піщана буря
weather.sporestorm.name = Спорова буря weather.sporestorm.name = Спорова буря
weather.fog.name = Туман weather.fog.name = Туман
sectors.unexplored = [lightgray]Не досліджено sectors.unexplored = [lightgray]Не досліджено
sectors.resources = Ресурси: sectors.resources = Ресурси:
sectors.production = Виробництво: sectors.production = Виробництво:
@@ -545,27 +524,26 @@ sectors.resume = Продовжити
sectors.launch = Запустити sectors.launch = Запустити
sectors.select = Вибрати sectors.select = Вибрати
sectors.nonelaunch = [lightgray]нічого (сонце) sectors.nonelaunch = [lightgray]нічого (сонце)
sectors.rename = Перейменування сектора sectors.rename = Перейменування сектору
sectors.enemybase = [scarlet]Ворожа база
sectors.vulnerable = [scarlet]Уразливий
sectors.underattack = [scarlet]Атаковано! [accent]{0}% пошкоджено
sectors.survives = [accent]Протримайтеся {0} хвиль
sectors.go = Перейти
sector.curcapture = Сектор захоплено sector.curcapture = Сектор захоплено
sector.missingresources = [scarlet]Недостатньо ресурсів в ядрі sector.curlost = Сектор втрачено
sector.missingresources = [scarlet]Недостатньо ресурсів у ядрі
sector.attacked = Сектор [accent]{0}[white] під атакою! sector.attacked = Сектор [accent]{0}[white] під атакою!
sector.lost = Сектор [accent]{0}[white] втрачено! sector.lost = Сектор [accent]{0}[white] втрачено!
#note: the missing space in the line below is intentional
sector.captured = Сектор [accent]{0}[white]захоплено! sector.captured = Сектор [accent]{0}[white]захоплено!
threat.low = низька threat.low = низька
threat.medium = середня threat.medium = середня
threat.high = висока threat.high = висока
threat.extreme = екстремальна threat.extreme = екстремальна
threat.eradication = викорінювальна threat.eradication = викорінювальна
planets = Планети planets = Планети
planet.serpulo.name = Cерпуло planet.serpulo.name = Cерпуло
#TODO better name
planet.sun.name = Сонце planet.sun.name = Сонце
#NOTE TO TRANSLATORS: don't bother editing these, they'll be removed and/or rewritten anyway
sector.impact0078.name = Аварійне приземлення 0078 sector.impact0078.name = Аварійне приземлення 0078
sector.groundZero.name = Відправний пункт sector.groundZero.name = Відправний пункт
sector.craters.name = Кратери sector.craters.name = Кратери
@@ -581,22 +559,23 @@ sector.fungalPass.name = Грибний перевал
sector.biomassFacility.name = Центр дослідження синтезу біомаси sector.biomassFacility.name = Центр дослідження синтезу біомаси
sector.windsweptIslands.name = Вітряні острови sector.windsweptIslands.name = Вітряні острови
sector.extractionOutpost.name = Видобувна застава sector.extractionOutpost.name = Видобувна застава
sector.planetaryTerminal.name = Термінал планетарного запуску
#unused sector.groundZero.description = Оптимальне місце для повторних ігор. Низька ворожа загроза. Мало ресурсів.\nЗберіть якомога більше свинцю та міді.\nНе затримуйтесь і йдіть далі.
#sector.crags.name = Crags sector.frozenForest.description = Навіть тут, ближче до гір, уже поширилися спори. Холодна температура не змогла стримати їх назавжди.\n\nЗважтесь створити енергію. Побудуйте генератори внутрішнього згорання. Навчіться користуватися регенераторами.
sector.saltFlats.description = На околицях пустелі лежать Соляні рівнини. У цьому місці небагато ресурсів.\n\nСаме тут противники спорудили комплекс зі зберігання ресурсів. Викорініть їхнє ядро. Не лишайте нічого цінного.
sector.groundZero.description = Оптимальне місце для повторних ігор. Низька ворожа загроза. Мало ресурсів.\nЗбирайте якомога більше свинцю та міді.\nНе затримуйтесь і йдіть далі. sector.craters.description = У цьому кратері накопичилася вода — пережиток старих воєн. Відновіть місцевість. Видобудьте пісок. Виплавте метаскло. Качайте воду, щоб охолоджувати башти та бури.
sector.frozenForest.description = Спори поширилися навіть тут, ближче до гір. Холодна температура не може стримувати їх завжди.\n\nЗважтесь створити енергію. Побудуйте генератори внутрішнього згорання. Навчіться користуватися регенераторами. sector.ruinousShores.description = Повз пусток — берегова лінія. Колись у цьому місці розташувався береговий оборонний масив. Проте з тих давніх залишилося не дуже й багато чого. Тільки основні оборонні споруди лишилися неушкодженими, а все інше перетворилося на брухт.\nПродовжуйте експансію назовні. Дослідіть повторно забуті технології.
sector.saltFlats.description = На околицях пустелі лежать Соляні рівнини. У цьому місці можна знайти небагато ресурсів.\n\nСаме тут противники спорудили комплекс сховищ ресурсів. Викорініть їхнє ядро. Не залишайте нічого цінного. sector.stainedMountains.description = Якщо йти далі у вглиб материка, то можна побачити гори, що ще не заражені спорами.\nВидобудьте надлишковий титан у цій місцевості й дізнайтеся як використовувати його.\n\nВорожа присутність у цій місцевості значно більша. Не дайте ворогам часу надіслати свої найсильніші одиниці.
sector.craters.description = У цьому кратері накопичилася вода, пережиток старих воєн. Відновіть місцевість. Зберіть пісок. Виплавте метаскло. Качайте воду, щоб охолодити турелі та бури. sector.overgrowth.description = Ближче до джерела спор є територія, що заросла.\nПротивник установив тут свій форпост. Побудуйте Титанів. Зруйнуйте укріплення.
sector.ruinousShores.description = Саме берегова лінія є минулим цих відходів. Колись у цьому місці розташувався береговий оборонний масив. Проте залишилося не так багато чого. Тільки основні оборонні споруди залишилися неушкодженими, а все інше перетворилося на брухт.\nПродовжуйте експансію назовні. Повторно розкрийте технології. sector.tarFields.description = Між горами та пустелею простягається край зони видобутку нафти. Це один із небагатьох районів із корисними для використання запасами дьогтю.\nНе зважаючи на те, що ця територія покинута, вона має поблизу небезпечні сили противника. Не варто їх недооцінювати.\n\n[lightgray]За можливістю дослідіть технологію перероблювання нафти.
sector.stainedMountains.description = Якщо йти далі у вглиб материка, то можна побачити гори, які ще не заражені спорами.\nВидобудьте надлишковий титан у цій місцевості. Дізнайтеся, як використовувати його.\n\nНа жаль, тут більше противників ніж в інших місцевостях. Не дайте їм часу надіслати свої найсильніші одиниці. sector.desolateRift.description = Надзвичайно небезпечна зона. Багато ресурсів, але мало місця. Високий ризик знищення. Евакуюватися потрібно якомога швидше. Не розслабляйтеся між ворожими атаками та знайдіть ахіллесову п’яту ворога.
sector.overgrowth.description = Ближче до джерела спор є територія, що заросла.\nНе дивуйтеся, що противник встановив тут свій форпост. Побудуйте бойові одиниці під кодовою назвою «Титан». Зруйнуйте її. Поверніть те, що колись належало нам.
sector.tarFields.description = Між горами та пустелею простягається окраїна зони видобутку нафти. Це один із небагатьох районів із корисними для використання запасами смоли.\nНе зважаючи на те, що територія покинута, вона має поблизу небезпечні сили противника. Не варто їх недооцінювати.\n\n[lightgray]Якщо можливо, дослідіть технологію перероблювання нафти.
sector.desolateRift.description = Надзвичайно небезпечна зона. Багато ресурсів, але мало місця. Високий ризик знищення. Евакуюватися потрібно якомога швидше. Не розслабляйтеся між ворожими атаками та знайдіть ахіллесову п’яту супротивника.
sector.nuclearComplex.description = Колишній об’єкт для виробництва та перероблювання торію було зведено до руїн.\n[lightgray]Дослідіть торій та його нескінченну кількість застосувань.\n\n Противник, який постійно шукає нападників, присутній тут у великій кількості, тому не баріться з евакуацією. sector.nuclearComplex.description = Колишній об’єкт для виробництва та перероблювання торію було зведено до руїн.\n[lightgray]Дослідіть торій та його нескінченну кількість застосувань.\n\n Противник, який постійно шукає нападників, присутній тут у великій кількості, тому не баріться з евакуацією.
sector.fungalPass.description = Перехідна зона між високими і низькими горами, що заповнені спорами. A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. sector.fungalPass.description = Перехідна зона між високими й низькими горами, що заповнені спорами. Тут розташована невелика розвідувальна база противника.\nЗнищте її.\nВикористовуйте Кинджалів і Плазунів. Зруйнуйте два ядра.
sector.biomassFacility.description = Батьківщина спор. Це саме той обʼєкт, у якому вони вперше були досліджені та виготовлені.\nДослідіть технологію, що міститься всередині. Вирощуйте спори для виробництва палива та пластмас. \n\n[lightgray]Після руйнації цього обʼєкта спори стали вільними. Ніщо в місцевій екосистемі не змогло скласти конкуренцію такому загарбницькому організму.
sector.windsweptIslands.description = Далі, за береговою лінією, розташовується цей віддалений ланцюжок островів. Записи чітко вказують на те, що колись вони мали структури, що виробляли [accent]пластаній[] \n\nВідбивайтесь від морських підрозділів противника. Створіть базу на островах. Дослідіть ці заводи.
sector.extractionOutpost.description = Віддалений форпост, побудований ворогом для запуску ресурсів в інші сектори. \n\nМіжсекторна транспортна технологія має важливе значення для подальшого завоювання. Знищте базу. Дослідіть їхні пускові майданчики.
sector.impact0078.description = Тут лежать залишки міжзоряного транспортного судна, яке вперше потрапило в цю систему. \n\nВилучіть якомога більше корисного з уламків. Дослідіть будь-яку вцілілу технологію.
sector.planetaryTerminal.description = Кінцева мета.\n\nЦя прибережна база містить структуру, здатну запускати ядра на навколишні планети. Надзвичайно добре охороняється.\n\nВиробляє військово-морські підрозділи. Усуньте ворога якомога швидше. Дослідіть структуру запуску.
settings.language = Мова settings.language = Мова
settings.data = Ігрові дані settings.data = Ігрові дані
settings.reset = За замовчуванням settings.reset = За замовчуванням
@@ -608,7 +587,7 @@ settings.sound = Звук
settings.graphics = Графіка settings.graphics = Графіка
settings.cleardata = Очистити дані… settings.cleardata = Очистити дані…
settings.clear.confirm = Ви дійсно хочете очистити ці дані?\nЦю дію не можна скасувати! settings.clear.confirm = Ви дійсно хочете очистити ці дані?\nЦю дію не можна скасувати!
settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить усі дані, включно із збереженнями, мапами, розблокованим та налаштуваннями керування.\nПісля натискання «Гаразд» гра видалить усі дані та автоматично закриється. settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить усі дані, включно зі збереженнями, мапами, розблокованим та налаштуваннями керування.\nПісля натискання «Гаразд» гра видалить усі дані та автоматично закриється.
settings.clearsaves.confirm = Ви справді хочете видалити всі ваші збереження? settings.clearsaves.confirm = Ви справді хочете видалити всі ваші збереження?
settings.clearsaves = Очистити збереження settings.clearsaves = Очистити збереження
settings.clearresearch = Очистити дослідження settings.clearresearch = Очистити дослідження
@@ -626,7 +605,6 @@ error.crashtitle = Виникла помилка
unit.nobuild = [scarlet]Ця одиниця не може будувати unit.nobuild = [scarlet]Ця одиниця не може будувати
lastaccessed = [lightgray]Остання зміна від {0} lastaccessed = [lightgray]Остання зміна від {0}
block.unknown = [lightgray]??? block.unknown = [lightgray]???
stat.description = Призначення stat.description = Призначення
stat.input = Ввід stat.input = Ввід
stat.output = Вивід stat.output = Вивід
@@ -679,26 +657,24 @@ stat.lightningchance = Шанс удару блискавки
stat.lightningdamage = Шкода від удару блискавки stat.lightningdamage = Шкода від удару блискавки
stat.flammability = Займистість stat.flammability = Займистість
stat.radioactivity = Радіоактивність stat.radioactivity = Радіоактивність
stat.heatcapacity = Теплоємність stat.heatcapacity = Тепломісткість
stat.viscosity = В’язкість stat.viscosity = В’язкість
stat.temperature = Температура stat.temperature = Температура
stat.speed = Швидкість stat.speed = Швидкість
stat.buildspeed = Швидкість будування stat.buildspeed = Швидкість будування
stat.minespeed = Швидкість видобутку stat.minespeed = Швидкість видобутку
stat.minetier = Рівень видобутку stat.minetier = Рівень видобутку
stat.payloadcapacity = Вантажопідйомність stat.payloadcapacity = Вантажність
stat.commandlimit = Максимум в загоні stat.commandlimit = Максимум у загоні
stat.abilities = Здібності stat.abilities = Здібності
stat.canboost = Можна прискорити stat.canboost = Можна прискорити
stat.flying = Літає stat.flying = Літає
ability.forcefield = Щитове поле ability.forcefield = Щитове поле
ability.repairfield = Ремонтувальне поле ability.repairfield = Ремонтувальне поле
ability.statusfield = Поле підсилення ability.statusfield = Поле підсилення
ability.unitspawn = Завод одиниць «{0}» ability.unitspawn = Завод одиниць «{0}»
ability.shieldregenfield = Поле, що відновлює щити ability.shieldregenfield = Поле, що відновлює щити
ability.movelightning = Блискавки при русі ability.movelightning = Блискавки під час руху
bar.drilltierreq = Потребується кращий бур bar.drilltierreq = Потребується кращий бур
bar.noresources = Бракує ресурсів bar.noresources = Бракує ресурсів
bar.corereq = Необхідне основне ядро bar.corereq = Необхідне основне ядро
@@ -720,13 +696,11 @@ bar.power = Енергія
bar.progress = Хід будування bar.progress = Хід будування
bar.input = Ввід bar.input = Ввід
bar.output = Вивід bar.output = Вивід
units.processorcontrol = [lightgray]Керується процесором units.processorcontrol = [lightgray]Керується процесором
bullet.damage = [stat]{0}[lightgray] шкода bullet.damage = [stat]{0}[lightgray] шкода
bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat] {1}[lightgray] плиток bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat] {1}[lightgray] плиток
bullet.incendiary = [stat]запальний bullet.incendiary = [stat]запальний
bullet.sapping = [stat]виснажує bullet.sapping = [stat]виснажує
bullet.homing = [stat]самонаведення bullet.homing = [stat]самонаведення
bullet.shock = [stat]шок bullet.shock = [stat]шок
bullet.frag = [stat]шкода по ділянці bullet.frag = [stat]шкода по ділянці
@@ -738,7 +712,6 @@ bullet.freezing = [stat]заморожування
bullet.tarred = [stat]дьогтьовий bullet.tarred = [stat]дьогтьовий
bullet.multiplier = [stat]{0}[lightgray]x патронів bullet.multiplier = [stat]{0}[lightgray]x патронів
bullet.reload = [stat]{0}[lightgray]x швидкість перезаряджання bullet.reload = [stat]{0}[lightgray]x швидкість перезаряджання
unit.blocks = блоки unit.blocks = блоки
unit.blockssquared = блоків² unit.blockssquared = блоків²
unit.powersecond = одиниць енергії за секунду unit.powersecond = одиниць енергії за секунду
@@ -772,7 +745,7 @@ setting.blockreplace.name = Пропонування щодо автоматич
setting.linear.name = Лінійна фільтрація setting.linear.name = Лінійна фільтрація
setting.hints.name = Підказки setting.hints.name = Підказки
setting.flow.name = Показувати темп швидкості ресурсів setting.flow.name = Показувати темп швидкості ресурсів
setting.backgroundpause.name = Пауза при згортанн setting.backgroundpause.name = Пауза в разі згортанні
setting.buildautopause.name = Автоматичне призупинення будування setting.buildautopause.name = Автоматичне призупинення будування
setting.animatedwater.name = Анімаційні рідини setting.animatedwater.name = Анімаційні рідини
setting.animatedshields.name = Анімаційні щити setting.animatedshields.name = Анімаційні щити
@@ -780,12 +753,12 @@ setting.antialias.name = Згладжування[lightgray] (потребує
setting.playerindicators.name = Позначки гравців setting.playerindicators.name = Позначки гравців
setting.indicators.name = Позначки противників setting.indicators.name = Позначки противників
setting.autotarget.name = Автострільба setting.autotarget.name = Автострільба
setting.keyboard.name = Миш+Керування з клавіатури setting.keyboard.name = Миш + Керування з клавіатури
setting.touchscreen.name = Керування сенсорним екраном setting.touchscreen.name = Керування сенсорним екраном
setting.fpscap.name = Максимальний FPS setting.fpscap.name = Максимальний FPS
setting.fpscap.none = Жодне setting.fpscap.none = Жодне
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.uiscale.name = Масштабування користувацького інтерфейсу[lightgray] (потребує перезапуск)[] setting.uiscale.name = Масштабування користувацького інтерфейсу[lightgray] (потребує перезапуску)[]
setting.swapdiagonal.name = Завжди діагональне розміщення setting.swapdiagonal.name = Завжди діагональне розміщення
setting.difficulty.training = Навчання setting.difficulty.training = Навчання
setting.difficulty.easy = Легка setting.difficulty.easy = Легка
@@ -801,7 +774,6 @@ setting.conveyorpathfinding.name = Пошук шляху для встановл
setting.sensitivity.name = Чутливість контролера setting.sensitivity.name = Чутливість контролера
setting.saveinterval.name = Інтервал збереження setting.saveinterval.name = Інтервал збереження
setting.seconds = {0} секунд setting.seconds = {0} секунд
setting.blockselecttimeout.name = Час вибору блока
setting.milliseconds = {0} мілісекунд setting.milliseconds = {0} мілісекунд
setting.fullscreen.name = Повноекранний режим setting.fullscreen.name = Повноекранний режим
setting.borderlesswindow.name = Вікно без полів[lightgray] (може потребувати перезапуску) setting.borderlesswindow.name = Вікно без полів[lightgray] (може потребувати перезапуску)
@@ -810,7 +782,7 @@ setting.smoothcamera.name = Гладка камера
setting.vsync.name = Вертикальна синхронізація setting.vsync.name = Вертикальна синхронізація
setting.pixelate.name = Пікселізація setting.pixelate.name = Пікселізація
setting.minimap.name = Показувати мінімапу setting.minimap.name = Показувати мінімапу
setting.coreitems.name = Показувати предмети в ядрі (дороблюється) setting.coreitems.name = Показувати предмети в ядрі
setting.position.name = Показувати координати гравця setting.position.name = Показувати координати гравця
setting.musicvol.name = Гучність музики setting.musicvol.name = Гучність музики
setting.atmosphere.name = Показувати планетарну атмосферу setting.atmosphere.name = Показувати планетарну атмосферу
@@ -829,7 +801,7 @@ setting.playerchat.name = Показувати хмару чата над гра
public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[accent]Будь-хто може приєднатися до вашої гри.\n[lightgray]Це можна змінити в Налаштування->Гра->Загальнодоступність гри. public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[accent]Будь-хто може приєднатися до вашої гри.\n[lightgray]Це можна змінити в Налаштування->Гра->Загальнодоступність гри.
public.beta = Зауважте, що в бета-версії гри ви не можете робити публічні ігри. public.beta = Зауважте, що в бета-версії гри ви не можете робити публічні ігри.
uiscale.reset = Масштаб користувацького інтерфейсу було змінено.\nНатисніть «Гаразд» для підтвердження цього масштабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] секунд… uiscale.reset = Масштаб користувацького інтерфейсу було змінено.\nНатисніть «Гаразд» для підтвердження цього масштабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] секунд…
uiscale.cancel = Скасувати & Вийти uiscale.cancel = Скасувати і вийти
setting.bloom.name = Світіння setting.bloom.name = Світіння
keybind.title = Налаштування керування keybind.title = Налаштування керування
keybinds.mobile = [scarlet]Більшість прив’язаних клавіш не функціональні для мобільних пристроїв. Підтримується лише базовий рух. keybinds.mobile = [scarlet]Більшість прив’язаних клавіш не функціональні для мобільних пристроїв. Підтримується лише базовий рух.
@@ -840,8 +812,8 @@ category.blocks.name = Вибір блока
command.attack = Атака command.attack = Атака
command.rally = Точка збору command.rally = Точка збору
command.retreat = Відступити command.retreat = Відступити
command.idle = Бездіяти command.idle = Бездіяльність
placement.blockselectkeys = \n[lightgray]Ключ: [{0}, placement.blockselectkeys = \n[lightgray]Клавіші: [{0},
keybind.respawn.name = Відродження keybind.respawn.name = Відродження
keybind.control.name = Контролювання одиниці keybind.control.name = Контролювання одиниці
keybind.clear_building.name = Очистити план будування keybind.clear_building.name = Очистити план будування
@@ -850,15 +822,15 @@ keybind.press.axis = Натисніть клавішу…
keybind.screenshot.name = Зняток мапи keybind.screenshot.name = Зняток мапи
keybind.toggle_power_lines.name = Показувати лазери енергопостачання keybind.toggle_power_lines.name = Показувати лазери енергопостачання
keybind.toggle_block_status.name = Показувати стан блоків keybind.toggle_block_status.name = Показувати стан блоків
keybind.move_x.name = Рух по осі X keybind.move_x.name = Рух за віссю X
keybind.move_y.name = Рух по осі Y keybind.move_y.name = Рух за віссю Y
keybind.mouse_move.name = Рухатися за мишею keybind.mouse_move.name = Рухатися за мишею
keybind.pan.name = Політ камери за мишею keybind.pan.name = Політ камери за мишею
keybind.boost.name = Прискорення keybind.boost.name = Прискорення
keybind.schematic_select.name = Вибрати ділянку keybind.schematic_select.name = Вибрати ділянку
keybind.schematic_menu.name = Меню схем keybind.schematic_menu.name = Меню схем
keybind.schematic_flip_x.name = Віддзеркалити по осі X keybind.schematic_flip_x.name = Віддзеркалити за віссю X
keybind.schematic_flip_y.name = Віддзеркалити по осі Y keybind.schematic_flip_y.name = Віддзеркалити за віссю Y
keybind.category_prev.name = Попередня категорія keybind.category_prev.name = Попередня категорія
keybind.category_next.name = Наступна категорія keybind.category_next.name = Наступна категорія
keybind.block_select_left.name = Вибрати блок ліворуч keybind.block_select_left.name = Вибрати блок ліворуч
@@ -890,6 +862,8 @@ keybind.menu.name = Меню
keybind.pause.name = Пауза keybind.pause.name = Пауза
keybind.pause_building.name = Призупинити/продовжити будування keybind.pause_building.name = Призупинити/продовжити будування
keybind.minimap.name = Мінімапа keybind.minimap.name = Мінімапа
keybind.planet_map.name = Планетна мапа
keybind.research.name = Дослідження
keybind.chat.name = Чат keybind.chat.name = Чат
keybind.player_list.name = Список гравців keybind.player_list.name = Список гравців
keybind.console.name = Консоль keybind.console.name = Консоль
@@ -912,7 +886,6 @@ mode.pvp.description = Боріться проти інших гравців.\n[
mode.attack.name = Атака mode.attack.name = Атака
mode.attack.description = Зруйнуйте ворожу базу. \n[gray]Потрібно червоне ядро на мапі для гри. mode.attack.description = Зруйнуйте ворожу базу. \n[gray]Потрібно червоне ядро на мапі для гри.
mode.custom = Користувацькі правила mode.custom = Користувацькі правила
rules.infiniteresources = Нескінченні ресурси rules.infiniteresources = Нескінченні ресурси
rules.reactorexplosions = Вибухи реактора rules.reactorexplosions = Вибухи реактора
rules.schematic = Використання схем дозволено rules.schematic = Використання схем дозволено
@@ -930,7 +903,7 @@ rules.enemycorebuildradius = Радіус оборони для ворожого
rules.wavespacing = Інтервал хвиль:[lightgray] (секунди) rules.wavespacing = Інтервал хвиль:[lightgray] (секунди)
rules.buildcostmultiplier = Множник затрат на будування rules.buildcostmultiplier = Множник затрат на будування
rules.buildspeedmultiplier = Множник швидкості будування rules.buildspeedmultiplier = Множник швидкості будування
rules.deconstructrefundmultiplier = Множник відшкодування у разі демонтажу rules.deconstructrefundmultiplier = Множник відшкодування в разі демонтажу
rules.waitForWaveToEnd = Хвилі чекають на завершення попередньої rules.waitForWaveToEnd = Хвилі чекають на завершення попередньої
rules.dropzoneradius = Радіус зони висадки:[lightgray] (у плитках) rules.dropzoneradius = Радіус зони висадки:[lightgray] (у плитках)
rules.unitammo = Бойові одиниці потребують боєприпасів rules.unitammo = Бойові одиниці потребують боєприпасів
@@ -948,12 +921,11 @@ rules.ambientlight = Навколишнє світло
rules.weather = Погода rules.weather = Погода
rules.weather.frequency = Повторюваність: rules.weather.frequency = Повторюваність:
rules.weather.duration = Тривалість: rules.weather.duration = Тривалість:
content.item.name = Предмети content.item.name = Предмети
content.liquid.name = Рідини content.liquid.name = Рідини
content.unit.name = Бойові одиниці content.unit.name = Бойові одиниці
content.block.name = Блоки content.block.name = Блоки
content.sector.name = Cектори
item.copper.name = Мідь item.copper.name = Мідь
item.lead.name = Свинець item.lead.name = Свинець
item.coal.name = Вугілля item.coal.name = Вугілля
@@ -974,7 +946,6 @@ liquid.water.name = Вода
liquid.slag.name = Шлак liquid.slag.name = Шлак
liquid.oil.name = Нафта liquid.oil.name = Нафта
liquid.cryofluid.name = Кріогенна рідина liquid.cryofluid.name = Кріогенна рідина
unit.dagger.name = Кинджал unit.dagger.name = Кинджал
unit.mace.name = Булава unit.mace.name = Булава
unit.fortress.name = Фортеця unit.fortress.name = Фортеця
@@ -1008,11 +979,11 @@ unit.scepter.name = Верховна влада
unit.reign.name = Верховний Порядок unit.reign.name = Верховний Порядок
unit.vela.name = Пульсар Вітрил unit.vela.name = Пульсар Вітрил
unit.corvus.name = Ворон unit.corvus.name = Ворон
block.resupply-point.name = Пункт постачання block.resupply-point.name = Пункт постачання
block.parallax.name = Паралакс block.parallax.name = Паралакс
block.cliff.name = Скеля block.cliff.name = Скеля
block.sand-boulder.name = Пісочний валун block.sand-boulder.name = Пісочний валун
block.basalt-boulder.name = Базальтовий валун
block.grass.name = Трава block.grass.name = Трава
block.slag.name = Шлак block.slag.name = Шлак
block.space.name = Космос block.space.name = Космос
@@ -1196,8 +1167,8 @@ block.spectre.name = Спектр
block.meltdown.name = Розплавлювач block.meltdown.name = Розплавлювач
block.foreshadow.name = Передвісник block.foreshadow.name = Передвісник
block.container.name = Сховище block.container.name = Сховище
block.launch-pad.name = Стартовий майданчик block.launch-pad.name = Пусковий майданчик
block.launch-pad-large.name = Великий стартовий майданчик block.launch-pad-large.name = Великий пусковий майданчик
block.segment.name = Сегмент block.segment.name = Сегмент
block.command-center.name = Командний центр block.command-center.name = Командний центр
block.ground-factory.name = Наземний завод block.ground-factory.name = Наземний завод
@@ -1212,11 +1183,10 @@ block.payload-router.name = Розвантажувальний маршрути
block.disassembler.name = Розбирач block.disassembler.name = Розбирач
block.silicon-crucible.name = Кремнієвий тигель block.silicon-crucible.name = Кремнієвий тигель
block.overdrive-dome.name = Великий прискорювач block.overdrive-dome.name = Великий прискорювач
#experimental, may be removed
block.block-forge.name = Блок-кузня block.block-forge.name = Блок-кузня
block.block-loader.name = Блок-завантажувач block.block-loader.name = Блок-завантажувач
block.block-unloader.name = Блок-вивантажувач block.block-unloader.name = Блок-вивантажувач
block.interplanetary-accelerator.name = Міжпланетний прискорювач
block.switch.name = Перемикач block.switch.name = Перемикач
block.micro-processor.name = Мікропроцесор block.micro-processor.name = Мікропроцесор
block.logic-processor.name = Логічний процесор block.logic-processor.name = Логічний процесор
@@ -1225,7 +1195,6 @@ block.logic-display.name = Логічний дисплей
block.large-logic-display.name = Великий логічний дисплей block.large-logic-display.name = Великий логічний дисплей
block.memory-cell.name = Комірка пам’яті block.memory-cell.name = Комірка пам’яті
block.memory-bank.name = Блок пам’яті block.memory-bank.name = Блок пам’яті
team.blue.name = Синя team.blue.name = Синя
team.crux.name = Червона team.crux.name = Червона
team.sharded.name = Помаранчева team.sharded.name = Помаранчева
@@ -1233,45 +1202,61 @@ team.orange.name = Помаранчева
team.derelict.name = Знедолена team.derelict.name = Знедолена
team.green.name = Зелена team.green.name = Зелена
team.purple.name = Фіолетова team.purple.name = Фіолетова
hint.skip = Пропустити
tutorial.next = [lightgray]<Натисніть для продовження> hint.desktopMove = Використовуйте [accent][[WASD][], щоби рухатися.
tutorial.intro = Ви розпочали[scarlet] навчання з Mindustry.[]\nВикористовуйте[accent] [[WASD][] для руху.\n[accent]Прокручуйте миш[] для приближення і віддалення.\nРозпочніть з [accent]видобування міді[]. Наблизьтесь до мідної жили біля вашого ядра, а потім натисніть на неї, щоби розпочати видобуток.\n\n[accent]{0}/{1} міді hint.zoom = [accent]Прокручуйте коліщатком миші[], щоби збільшити чи зменшити масштаб мапи.
tutorial.intro.mobile = Ви розпочали[scarlet] навчання з Mindustry.[]\nПроведіть по екрану для руху.\n[accent] Зведіть або розведіть 2 пальця[] для приближення і віддалення відповідно.\nРозпочніть з [accent]видобування міді[]. Наблизьтесь до мідної жили біля вашого ядра, а потім натисніть на неї, щоби розпочати видобуток.\n\n[accent]{0}/{1} міді hint.mine = Наблизьтесь до  мідної руди і [accent]торкніться[] її, щоби видобувати вручну.
tutorial.drill = Добування вручну не є ефективним.\n[accent]Бури[] можуть видобувати автоматично.\nНатисніть на вкладку із зображенням свердла праворуч знизу.\n\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням.\nВи також можете вибрати бур, натиснувши [accent][[2][], а потім швидко натиснувши [accent][[1][], незалежно від розгорнутої вкладки.\n[accent]Натисніть ПКМ[], щоби зупинити будування. hint.desktopShoot = [accent][[ЛКМ][] для стрільби.
tutorial.drill.mobile = Добування вручну не є ефективним.\n[accent]Бури[] можуть видобувати автоматично.\nНатисніть на вкладку із зображенням свердла праворуч знизу.\nВиберіть[accent] механічний бур[].\nРозмістіть його на мідній жилі натисканням, потім натисніть на [accent]галочку[] нижче, щоби підтвердити розміщення.\nНатисніть [accent]кнопку X[], щоби скасувати розміщення. hint.depositItems = Для передачі предметів просто перетягніть із корабля в ядро.
tutorial.blockinfo = Кожний блок має різні характеристики. Кожний бур може видобувати тільки певні руди.\nЩоб переглянути інформацію та характеристики блока,[accent] натисніть на кнопку «?», коли ви вибрали блок у меню будування.[]\n\n[accent]Перегляньте характеристику Механічного бура негайно.[] hint.respawn = Для відродження кораблем натисніть [accent][[V][].
tutorial.conveyor = [accent]Конвеєри[] використовуються для транспортування предметів до ядра.\nПобудуйте лінію конвеєрів від бура до ядра.\n[accent]Утримуйте миш для розміщення в лінію.[]\nУтримуйте[accent] CTRL[] під час вибору лінії для розміщення по діагоналі.\nПрокручуйте, щоб обертати блоки до їх установлення.\n[accent]Розмістіть 2 конвеєри в лінію, а потім доставте предмет у ядро. hint.respawn.mobile = Ви контролюєте одиницю чи структуру. Щоби відродитися як корабель, [accent]торкніться свого аватара вгорі ліворуч.[]
tutorial.conveyor.mobile = [accent]Конвеєри[] використовуються для транспортування предметів до ядра.\nПобудуйте лінію конвеєрів від бура до ядра.\n[accent] Розмістить у лінію, утримуючи палець кілька секунд[] і тягніть у напрямку, який Ви обрали.\n\n[accent]Розмістіть 2 конвеєри в лінію, а потім доставте предмет у ядро. hint.desktopPause = Натисніть [accent][[Пробіл][], щоби зупинити чи продовжити гру.
tutorial.turret = Щойно предмет потрапить до ядра, він може бути використаний у будівництві.\nМайте на увазі, не всі предмети придатні для будівництва.\nПредмети що не використовуються в будівництві, такі як[accent] вугілля[] чи[accent] брухт[], не можуть потрапити до ядра.\nОборонні споруди мають бути побудовані для відбиття[lightgray] противників[].\nПобудуйте[accent] башту «Подвійна»[] біля вашої бази. hint.placeDrill = Виберіть у меню внизу праворуч вкладку  [accent]Бур[], потім виберіть  [accent]Механічний бур[] та натисніть на мідний клаптик для його розміщення.
tutorial.drillturret = «Подвійна» потребує [accent]мідні боєприпаси[] для стрільби.\nРозмістіть бур біля башти.\nПроведіть конвеєри до башти, щоби заповнити її боєприпасами.\n\n [accent]Доставлено боєприпасів: 0/1 hint.placeDrill.mobile = Виберіть у меню внизу праворуч вкладку  [accent]Бур[], потім виберіть  [accent]Механічний бур[] та натисніть на мідний клаптик для його розміщення.\n\nНатисніть внизу праворуч  [accent]галку[] для підтвердження.
tutorial.pause = Під час гри ви можете[accent] поставити на паузу.[]\nВи можете зробити чергу на будування під час паузи.\n\n [accent]Натисніть пробіл для паузи. hint.placeConveyor = Конвеєри переміщують предмети з бурів до інших блоків. Виберіть  [accent]конвеєр[] з вкладки  [accent]Транспортування[].\n\nНатисніть і тягніть, щоби розмістити декілька конвеєрів.\n[accent]Прокручуйте коліщатком миші[], щоб обертати їх.
tutorial.pause.mobile = Під час гри ви можете[accent] поставити на паузу.[]\nВи можете зробити чергу на будування під час паузи.\n\n[accent]Натисніть кнопку вгорі ліворуч для паузи. hint.placeConveyor.mobile = Конвеєри переміщують предмети з бурів до інших блоків. Виберіть  [accent]конвеєр[] з вкладки  [accent]Транспортування[].\n\nУтримуйте палець протягом секунди і протягніть, щоби розмістити декілька конвеєрів.
tutorial.unpause = Призупиніть гру, натиснувши на пробіл. hint.placeTurret = Розмістіть  [accent]башти[], щоби захистити базу від ворогів.\n\nБашти потребують боєприпасів. У цьому випадку \uf838мідь.\nДля її подачі використовуйте конвеєри та бури.
tutorial.unpause.mobile = Тепер натисніть туди ще раз, щоби зняти паузу. hhint.breaking = Натисніть [accent]ПКМ[] і тягніть, щоби зруйнувати блоки.
tutorial.breaking = Блоки часто треба знищувати.\n[accent]Утримуючи ПКМ[] ви знищите всі виділені блоки.[]\n\n[accent]Необхідно знищити всі стіни з брухту ліворуч від вашого ядра використовуючи видалення в зоні. hint.breaking.mobile = Активуйте  [accent]молот[] внизу праворуч і торкніться блоків, щоби їх розібрати.\n\nУтримуйте палець протягом секунди і протягніть, щоби розібрати виділене.
tutorial.breaking.mobile = Блоки часто треба знищувати.\n[accent]Виберіть режим руйнування[], потім натисніть на блок, щоби зламати його.\nВидаліть ділянку, утримуючи палець упродовж декількох секунд [] і потягнувши в потрібному напрямку.\nНатисніть кнопку галочки, щоби підтвердити руйнування.\n\n[accent]Необхідно знищити всі стіни з брухту ліворуч від вашого ядра використовуючи видалення в зоні. hint.research = Використовуйте кнопку  [accent]Дослідження[] для дослідження нової технології.
tutorial.withdraw = У деяких ситуаціях потрібно брати предмети безпосередньо з блоків.\nЩоб зробити це, [accent]натисніть на блок[] з предметами, і потім [accent]натисніть на предмет[] в інвентарі.\nМожна вилучити кілька предметів [accent]натискаючи та утримуючи[].\n\n [accent]Вилучіть трохи міді з ядра.[] hint.research.mobile = Використовуйте  [accent]Дослідження[] в  [accent]меню[] для дослідження нової технології.
tutorial.deposit = Покладіть предмети в блок, перетягнувши з вашого корабля в потрібний блок.\n\n[accent]Покладіть мідь назад у ядро.[] hint.unitControl = Утримуйте [accent][[лівий Ctrl][] і [accent]натисніть[] на одиницю чи башту, щоби контролювати її.
tutorial.waves = [lightgray]Противник[] з’явився.\n\nЗахистіть ядро від двох хвиль.[accent] Натисніть ЛКМ[], щоби стріляти.\nПобудуйте більше башт і бурів. Добудьте більше міді. hint.unitControl.mobile = [accent][Торкніться двічі[], щоби контролювати союзні одиниці чи башти.
tutorial.waves.mobile = [lightgray]Противник[] з’явився.\n\nЗахистіть ядро від двох хвиль. Ваш корабель буде автоматично атакувати противників.\nПобудуйте більше башт і бурів. Добудьте більше міді. hint.launch = Як тільки буде зібрано достатньо ресурсів, ви зможете зробити [accent]Запуск[] за допомогою вибору найближчих секторів  [accent]мапи[] внизу праворуч.
tutorial.launch = Як тільки ви досягнете певної хвилі, ви зможете[accent] запустити ядро[], залишивши свою базу позаду, та [accent]отримати всі ресурси у вашому ядрі.[]\nЦі отримані ресурси можуть бути використані для дослідження нових технологій.\n\n[accent]Натисніть кнопку запуску. hint.launch.mobile = Як тільки буде зібрано достатньо ресурсів, ви зможете зробити [accent]Запуск[] за допомогою вибору найближчих секторів з  [accent]мапи[] у  [accent]меню[].
hint.schematicSelect = Утримуйте [accent][[F][] і тягніть, щоби вибрати блоки для їхнього подальшого копіювання і вставлення.\n\nНатисніть [accent][[СКМ][], щоби скопіювати певний тип блоку.
hint.conveyorPathfind = Утримуйте [accent][[лівий Ctrl][], коли тягнете конвеєри, щоб автоматично прокласти шлях.
hint.conveyorPathfind.mobile = Увімкніть  [accent]діагональний режим[] і тягніть конвеєри, щоб автоматично прокласти шлях.
hint.boost = Утримуйте [accent][[лівий Shift][], щоби літати над перешкодами поточною одиницею.\n\nЛише декілька наземних одиниць мають цю перевагу.
hint.command = Натисніть [accent][[G][], щоб узяти командування над найближчими одиницями [accent]схожого типу[] і сформувати загін.\n\nЩоб командувати наземними одиницями, ви мусите спершу взяти контроль над іншою наземною одиницею.
hint.command.mobile = [accent][[Торкніться двічі][] своєї одиниці, щоб узяти командування над найближчими союзними одиницями і сформувати загін.
hint.payloadPickup = Натисніть [accent][[[], щоби підібрати невеличкі блоки чи одиниці.
hint.payloadPickup.mobile = [accent]Торкніться й утримуйте[] невеличкий блок чи одиницю, щоби підібрати їх.
hint.payloadDrop = Натисніть [accent]][], щоби вивантажити вантаж.
hint.payloadDrop.mobile = [accent]Торкніться[] вільного місця й [accent]утримуйте[], щоби вивантажити туди вантаж.
hint.waveFire = Башта [accent]Хвиля[] з водою буде автоматично гасити найближчі пожежі.
hint.generator =  [accent]Генератори внутрішнього згорання[] спалюють вугілля і передають енергію прилеглим блокам.\n\nРадіус передачі енергії можна збільшити за допомогою  [accent]силових вузлів[].
hint.guardian = [accent]Вартові[] одиниці броньовані. Слабкі боєприпаси, як-от [accent]мідь[] чи [accent]свинець[], [scarlet]не є ефективними[].\n\nВикористовуйте башти вищого рангу чи  [accent]графітові боєприпаси[] для Подвійної башти чиЗалпу, щоб убити Вартових.
hint.coreUpgrade = Ядро можна покращити, якщо [accent]розмістити поверх нього ядро вищого рівня[].\n\nРозмістіть  ядро [accent]«Штаб»[] поверх  ядра [accent]«Уламок»[]. Переконайтесь, що поблизу ядер немає перешкод (зайвих блоків).
hint.presetLaunch = Сірі [accent]сектори зони посадки[], як-от [accent]Крижаний ліс[], можна запустити з будь-якого місця. Вони не вимагають захоплення сусідньої території.\n\n[accent]Нумеровані сектори[], як цей, [accent]необовʼязкові[].
hint.coreIncinerate = Після того, як ядро наповниться предметом, будь-які додаткові предмети того ж типу, які воно отримує, будуть [accent]спалені[].
item.copper.description = Використовується у всіх типах блоків і боєприпасах. item.copper.description = Використовується у всіх типах блоків і боєприпасах.
item.copper.details = Мідь. Напрочуд багато жил цієї руди на Серпуло. За своєю структурою слабка, якщо не зміцнена. item.copper.details = Мідь. Напрочуд багато жил цієї руди на Серпуло. За своєю структурою слабка, якщо не зміцнена.
item.lead.description = Широко використовується в електроніці та в транспортуванні рідин. item.lead.description = Широко використовується в електроніці та в транспортуванні рідин.
item.lead.details = Сплав. Інертний. Широко використовується в акумуляторах.\nПримітка. Мабуть, токсичний для біологічних форм життя. Не те щоб тут залишилося багато... item.lead.details = Сплав. Інертний. Широко використовується в акумуляторах.\nПримітка. Мабуть, токсичний для біологічних форм життя. Не те щоби тут залишилося багато
item.metaglass.description = Використовується для розподілу чи зберігання рідини. item.metaglass.description = Використовується для розподілу чи зберігання рідини.
item.graphite.description = Використовується для боєприпасів та електричних компонентів. item.graphite.description = Використовується для боєприпасів та електричних компонентів.
item.sand.description = Використовується для виробництва інших удосконалених матеріалів. item.sand.description = Використовується для виробництва інших удосконалених матеріалів.
item.coal.description = Використовується для виробництва палива і вдосноналених матеріалів. item.coal.description = Використовується для виробництва палива і вдосконалених матеріалів.
item.coal.details = Виглядає скам’янілою рослинною речовиною, утвореною задовго до Сівби. item.coal.details = Виглядає скам’янілою рослинною речовиною, утвореною задовго до Сівби.
item.titanium.description = Використовується в транспортуванні рідин, бурів та авіації. item.titanium.description = Використовується в транспортуванні рідин, бурів та авіації.
item.thorium.description = Використовується в міцних конструкціях і як ядерне паливо. item.thorium.description = Використовується в міцних конструкціях і як ядерне паливо.
item.scrap.description = Використовується у Плавильнях і Подрібнювачах для переробки в інші матеріали в інші матеріали. item.scrap.description = Використовується в Плавильнях і Подрібнювачах для перероблення в інші матеріали в інші матеріали.
item.scrap.details = Залишки старих споруд та підрозділів. item.scrap.details = Залишки старих споруд та підрозділів.
item.silicon.description = Використовується в сонячних панелях, складній електроніці та боєприпасах самонаведення для башт. item.silicon.description = Використовується в сонячних панелях, складній електроніці та боєприпасах самонаведення для башт.
item.plastanium.description = Використовується в передових одиницях та у фрагментованих боєприпасах. item.plastanium.description = Використовується в передових одиницях та у фрагментованих боєприпасах.
item.phase-fabric.description = Використовується в передовій електроніці і технології самовідновлення. item.phase-fabric.description = Використовується в передовій електроніці й технології самовідновлення.
item.surge-alloy.description = Використовується в передовій зброї та реактивних захисних конструкціях. item.surge-alloy.description = Використовується в передовій зброї та реактивних захисних конструкціях.
item.spore-pod.description = Використовується для перетворення на нафту, вибухівку та паливо. item.spore-pod.description = Використовується для перетворення на нафту, вибухівку та паливо.
item.spore-pod.details = Спори. Найімовірніше, синтетична форма життя. Виділяють гази, токсичні для іншого біологічного життя. Надзвичайно загарбницька поведінка. Легкозаймисті при певних умовах. item.spore-pod.details = Спори. Найімовірніше, синтетична форма життя. Виділяють гази, токсичні для іншого біологічного життя. Надзвичайно загарбницька поведінка. Легкозаймисті при певних умовах.
@@ -1280,20 +1265,20 @@ item.pyratite.description = Використовується в запальні
liquid.water.description = Використовується для охолодження машин та перероблювання відходів. liquid.water.description = Використовується для охолодження машин та перероблювання відходів.
liquid.slag.description = Переробляється у відокремлювачах у складові метали або розпорошується на ворогів як зброя. liquid.slag.description = Переробляється у відокремлювачах у складові метали або розпорошується на ворогів як зброя.
liquid.oil.description = Використовується у виробництві передових матеріалів і як запальні боєприпаси. liquid.oil.description = Використовується у виробництві передових матеріалів і як запальні боєприпаси.
liquid.cryofluid.description = Використовується як теплоносій в реакторах, баштах і заводах. liquid.cryofluid.description = Використовується як теплоносій у реакторах, баштах і заводах.
block.resupply-point.description = Поповнює найближчі одиниці мідними боєприпасами. Несумісний з одиницями, що потребують заряду акумулятора.
block.armored-conveyor.description = Переміщує предмети вперед. Не приймає введення з боків ні з чого, крім інших конвеєрних стрічок. block.armored-conveyor.description = Переміщує предмети вперед. Не приймає введення з боків ні з чого, крім інших конвеєрних стрічок.
block.illuminator.description = Випромінює світло. block.illuminator.description = Випромінює світло.
block.message.description = Зберігає повідомлення для комунікації між союзниками. block.message.description = Зберігає повідомлення для комунікації між союзниками.
block.graphite-press.description = Стискає вугілля в графіт. block.graphite-press.description = Стискає вугілля в графіт.
block.multi-press.description = Стискає вугілля в графіт. Потребує воду для охолодження. block.multi-press.description = Стискає вугілля в графіт. Потребує воду для охолодження.
block.silicon-smelter.description = Синтезує пісок з вугіллям для отримання кремнію. block.silicon-smelter.description = Синтезує пісок із вугіллям для отримання кремнію.
block.kiln.description = Виплавляє пісок та свинець у метаскло. block.kiln.description = Виплавляє пісок та свинець у метаскло.
block.plastanium-compressor.description = Виробляє пластаній із нафти і титану. block.plastanium-compressor.description = Виробляє пластаній із нафти й титану.
block.phase-weaver.description = Синтезує фазову тканину з торію та піску. block.phase-weaver.description = Синтезує фазову тканину з торію та піску.
block.alloy-smelter.description = Поєднує титан, свинець, кремній і мідь для отримання кінетичного сплаву. block.alloy-smelter.description = Поєднує титан, свинець, кремній і мідь для отримання кінетичного сплаву.
block.cryofluid-mixer.description = Змішує воду і подрібнений титан, щоб виробити кріогенну рідину. block.cryofluid-mixer.description = Змішує воду й подрібнений титан, щоби виробити кріогенну рідину.
block.blast-mixer.description = Виробляє вибухову суміш з піратиту і спорових стручків. block.blast-mixer.description = Виробляє вибухову суміш із піратиту і спорових стручків.
block.pyratite-mixer.description = Змішує вугілля, свинець та пісок у легкозаймистий пиротит. block.pyratite-mixer.description = Змішує вугілля, свинець та пісок у легкозаймистий пиротит.
block.melter.description = Розплавляє брухт у шлак. block.melter.description = Розплавляє брухт у шлак.
block.separator.description = Відокремлює шлак на його мінеральні компоненти. block.separator.description = Відокремлює шлак на його мінеральні компоненти.
@@ -1311,21 +1296,21 @@ block.copper-wall.description = Захищає споруди від ворож
block.copper-wall-large.description = Захищає споруди від ворожих снарядів. block.copper-wall-large.description = Захищає споруди від ворожих снарядів.
block.titanium-wall.description = Захищає споруди від ворожих снарядів. block.titanium-wall.description = Захищає споруди від ворожих снарядів.
block.titanium-wall-large.description = Захищає споруди від ворожих снарядів. block.titanium-wall-large.description = Захищає споруди від ворожих снарядів.
block.plastanium-wall.description = Захищає споруди від ворожих снарядів. Поглинає електричні дуги і лазери. Блокує автоматичні з’єднання енергетичних вузлів. block.plastanium-wall.description = Захищає споруди від ворожих снарядів. Поглинає електричні дуги й лазери. Блокує автоматичні з’єднання енергетичних вузлів.
block.plastanium-wall-large.description = Захищає споруди від ворожих снарядів. Поглинає електричні дуги і лазери. Блокує автоматичні з’єднання енергетичних вузлів. block.plastanium-wall-large.description = Захищає споруди від ворожих снарядів. Поглинає електричні дуги й лазери. Блокує автоматичні з’єднання енергетичних вузлів.
block.thorium-wall.description = Захищає споруди від ворожих снарядів. block.thorium-wall.description = Захищає споруди від ворожих снарядів.
block.thorium-wall-large.description = Захищає споруди від ворожих снарядів. block.thorium-wall-large.description = Захищає споруди від ворожих снарядів.
block.phase-wall.description = Захищає споруди від ворожих снарядів, відбиває більшість куль при зіткненні. block.phase-wall.description = Захищає споруди від ворожих снарядів, відбиває більшість куль у разі зіткненні.
block.phase-wall-large.description = Захищає споруди від ворожих снарядів, відбиває більшість куль при зіткненні. block.phase-wall-large.description = Захищає споруди від ворожих снарядів, відбиває більшість куль у разі зіткненні.
block.surge-wall.description = Захищає споруди від ворожих снарядів, періодично випускає електричні дуги при зіткненні. block.surge-wall.description = Захищає споруди від ворожих снарядів, періодично випускає електричні дуги в разі зіткненні.
block.surge-wall-large.description = Захищає споруди від ворожих снарядів, періодично випускає електричні дуги при зіткненні. block.surge-wall-large.description = Захищає споруди від ворожих снарядів, періодично випускає електричні дуги в разі зіткненні.
block.door.description = Стіна, яку можна відкрити і закрити. block.door.description = Стіна, яку можна відчинити й зачинити.
block.door-large.description = Стіна, яку можна відкрити і закрити. block.door-large.description = Стіна, яку можна відчинити й зачинити.
block.mender.description = Періодично ремонтує блоки в своєму радіусі дії.\nЗа бажанням можна використати кремній задля підвищення радіусу дії й ефективності. block.mender.description = Періодично ремонтує блоки у своєму радіусі дії.\nЗа бажанням можна використати кремній задля підвищення радіусу дії й ефективності.
block.mend-projector.description = Ремонтує блоки в своєму радіусі дії.\nЗа бажанням можна використати фазову тканину задля підвищення радіусу дії й ефективності. block.mend-projector.description = Ремонтує блоки у своєму радіусі дії.\nЗа бажанням можна використати фазову тканину задля підвищення радіусу дії й ефективності.
block.overdrive-projector.description = Збільшує швидкість найближчих будівель.\nЗа бажанням можна використати фазову тканину задля підвищення радіусу дії й ефективності. block.overdrive-projector.description = Збільшує швидкість найближчих будівель.\nЗа бажанням можна використати фазову тканину задля підвищення радіусу дії й ефективності.
block.force-projector.description = Створює навколо себе шестикутне силове поле, захищаючи будівлі та блоки всередині від пошкоджень.\nПерегрівається, якщо завдано занадто великої шкоди. За бажанням можна використати теплоносій для запобігання перегріву. Для збільшення розміру щита можна використовувати фазову тканину. block.force-projector.description = Створює навколо себе шестикутне силове поле, захищаючи будівлі та блоки всередині від пошкоджень.\nПерегрівається, якщо завдано занадто великої шкоди. За бажанням можна використати теплоносій для запобігання перегріву. Для збільшення розміру щита можна використовувати фазову тканину.
block.shock-mine.description = Випускає електричні дуги при контакті з ворогом. block.shock-mine.description = Випускає електричні дуги в разі контакту з ворогом.
block.conveyor.description = Переміщує елементи вперед. block.conveyor.description = Переміщує елементи вперед.
block.titanium-conveyor.description = Переміщує предмети швидше, ніж звичайний конвеєр. block.titanium-conveyor.description = Переміщує предмети швидше, ніж звичайний конвеєр.
block.plastanium-conveyor.description = Переміщує предмети партіями. Приймає елементи на задній частині та вивантажує їх у трьох напрямках спереду. Потребує кілька точок завантаження та розвантаження для максимальної пропускної здатності. block.plastanium-conveyor.description = Переміщує предмети партіями. Приймає елементи на задній частині та вивантажує їх у трьох напрямках спереду. Потребує кілька точок завантаження та розвантаження для максимальної пропускної здатності.
@@ -1350,7 +1335,7 @@ block.liquid-router.description = Приймає рідини з одного н
block.liquid-tank.description = Зберігає велику кількість рідини. Виводить воду на всі сторони, через це схожий на рідинний маршрутизатор. block.liquid-tank.description = Зберігає велику кількість рідини. Виводить воду на всі сторони, через це схожий на рідинний маршрутизатор.
block.liquid-junction.description = Діє як міст для двох трубопроводів. block.liquid-junction.description = Діє як міст для двох трубопроводів.
block.bridge-conduit.description = Транспортує рідину через місцевість і будівлі. block.bridge-conduit.description = Транспортує рідину через місцевість і будівлі.
block.phase-conduit.description = Транспортує рідину через місцевість і будівлі. Діапазон дії більший ніж у мостового трубопровода block.phase-conduit.description = Транспортує рідину через місцевість і будівлі. Діапазон дії більший ніж у мостового трубопроводу
block.power-node.description = Передає живлення на приєднані вузли. Вузол буде отримувати живлення від будь-яких сусідніх блоків або подавати живлення до них. block.power-node.description = Передає живлення на приєднані вузли. Вузол буде отримувати живлення від будь-яких сусідніх блоків або подавати живлення до них.
block.power-node-large.description = Передовий вузол живлення з більшим радіусом дії. block.power-node-large.description = Передовий вузол живлення з більшим радіусом дії.
block.surge-tower.description = Вузол живлення з меншою кількістю доступних з’єднань і з найбільшим радіусом дії. block.surge-tower.description = Вузол живлення з меншою кількістю доступних з’єднань і з найбільшим радіусом дії.
@@ -1358,20 +1343,20 @@ block.diode.description = Живлення акумулятора може пр
block.battery.description = Зберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту. block.battery.description = Зберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту.
block.battery-large.description = Зберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту. Більша ємність ніж у звичайного акумулятора. block.battery-large.description = Зберігає енергію як буфер у часи надлишкової енергії. Виводить енергію в періоди дефіциту. Більша ємність ніж у звичайного акумулятора.
block.combustion-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали, як-от вугілля. block.combustion-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали, як-от вугілля.
block.thermal-generator.description = Виробляє енергію при розміщенні в спекотних місцях. block.thermal-generator.description = Виробляє енергію в разі розміщення в спекотних місцях.
block.steam-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали і перетворює воду в пару. block.steam-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали й перетворює воду в пару.
block.differential-generator.description = Виробляє велику кількість енергії. Використовує різницю температур між кріогенною рідиною й пиротитом, що горить. block.differential-generator.description = Виробляє велику кількість енергії. Використовує різницю температур між кріогенною рідиною й пиротитом, що горить.
block.rtg-generator.description = Використовує тепло радіоактивних сполук, які розкладаються, для отримання енергії з повільною швидкістю. block.rtg-generator.description = Використовує тепло радіоактивних сполук, які розкладаються, для отримання енергії з повільною швидкістю.
block.solar-panel.description = Забезпечує невелику кількість енергії від сонця. block.solar-panel.description = Забезпечує невелику кількість енергії від сонця.
block.solar-panel-large.description = Забезпечує невелику кількість енергії від сонця. Значно ефективніша ніж стандартна сонячна панель. block.solar-panel-large.description = Забезпечує невелику кількість енергії від сонця. Значно ефективніша ніж стандартна сонячна панель.
block.thorium-reactor.description = Виробляє значну кількість енергії з торію. Потребує постійного охолодження. Сильно вибухне, якщо подаватиметься недостатня кількість теплоносія. block.thorium-reactor.description = Виробляє значну кількість енергії з торію. Потребує постійного охолодження. Сильно вибухне, якщо подаватиметься недостатня кількість теплоносія.
block.impact-reactor.description = Здатний створювати величезну кількість енергії за максимальною ефективності. Для запуску процесу потрібно значні обсяги енергії. block.impact-reactor.description = Здатний створювати величезну кількість енергії за максимальної ефективності. Для запуску процесу потрібно значні обсяги енергії.
block.mechanical-drill.description = Якщо розмістити на доречних плитках, то виводитиме предмети постійно, але повільно. Придатний лише для базових ресурсів. block.mechanical-drill.description = Якщо розмістити на доречних плитках, то виводитиме предмети постійно, але повільно. Придатний лише для базових ресурсів.
block.pneumatic-drill.description = Поліпшений бур, здатний видобувати титан. Видобуває швидше, ніж механічний бур. block.pneumatic-drill.description = Поліпшений бур, здатний видобувати титан. Видобуває швидше, ніж механічний бур.
block.laser-drill.description = Дає змогу видобувати ще швидше за допомогою лазерної технології, але потребує енергії. здатний видобувати торій. block.laser-drill.description = Дає змогу видобувати ще швидше за допомогою лазерної технології, але потребує енергії. Здатний видобувати торій.
block.blast-drill.description = Найкращий бур. Потрібує великої кількості енергії. block.blast-drill.description = Найкращий бур. Потребує великої кількості енергії.
block.water-extractor.description = Викачує підземні води. Використовується в місцях, де немає поверхневої води. block.water-extractor.description = Викачує підземні води. Використовується в місцях, де немає поверхневої води.
block.cultivator.description = Культивує невеликі концентрації спор в стручки. block.cultivator.description = Культивує невеликі концентрації спор у стручки.
block.cultivator.details = Відновлена технологія. Використовується для отримання величезної кількості біомаси якомога ефективніше. Ймовірно, початковий інкубатор спор, що зараз покриває Серпуло. block.cultivator.details = Відновлена технологія. Використовується для отримання величезної кількості біомаси якомога ефективніше. Ймовірно, початковий інкубатор спор, що зараз покриває Серпуло.
block.oil-extractor.description = Використовується велика кількість енергії, піску та води для отримання нафти. block.oil-extractor.description = Використовується велика кількість енергії, піску та води для отримання нафти.
block.core-shard.description = Ядро бази. Після знищення сектор втрачається. Найперша версія капсули ядра. Після його знищення всі контакти з регіоном втрачаються. Не допустіть цього. block.core-shard.description = Ядро бази. Після знищення сектор втрачається. Найперша версія капсули ядра. Після його знищення всі контакти з регіоном втрачаються. Не допустіть цього.
@@ -1384,28 +1369,28 @@ block.vault.description = Зберігає велику кількість пр
block.container.description = Зберігає малу кількість предметів кожного типу. Блок розвантажувача може використовуватися для отримання предметів зі сховища. block.container.description = Зберігає малу кількість предметів кожного типу. Блок розвантажувача може використовуватися для отримання предметів зі сховища.
block.unloader.description = Вивантажує предмети з найближчих блоків block.unloader.description = Вивантажує предмети з найближчих блоків
block.launch-pad.description = Запускає партії предметів без необхідності запуску ядра. block.launch-pad.description = Запускає партії предметів без необхідності запуску ядра.
block.duo.description = Вистрілює по черзі кулями по ворогах. block.duo.description = Вистрілює чергами куль у ворогів.
block.scatter.description = Вистрілює скупченням свинцю, брухту чи метаскла в повітряних противників. block.scatter.description = Вистрілює скупченням свинцю, брухту чи метаскла в повітряних противників.
block.scorch.description = Підпалює будь-яких наземних противників поблизу. Високоефективна на близькій відстані. block.scorch.description = Підпалює будь-яких наземних противників поблизу. Високоефективна на близькій відстані.
block.hail.description = Вистрілює невеликі снаряди в наземних ворогів на великі відстані. block.hail.description = Вистрілює невеликі снаряди в наземних ворогів на великі відстані.
block.wave.description = Вистрілює потоки рідин в ворогів. Автоматично гасить пожежі при постачанні води. block.wave.description = Вистрілює потоки рідин у ворогів. Автоматично гасить пожежі в разі постачання води.
block.lancer.description = Заряджає і вистрілює потужні пучки енергії в наземних противників. block.lancer.description = Заряджає і вистрілює потужні пучки енергії в наземних противників.
block.arc.description = Вистрілює дугами електрики в наземних противників. block.arc.description = Вистрілює дугами електрики в наземних противників.
block.swarmer.description = Запускає ракети, що автоматично наводяться у противників. block.swarmer.description = Запускає ракети, що автоматично наводяться в противників.
block.salvo.description = Вистрілює швидкий залп куль у противника. block.salvo.description = Вистрілює швидкий залп куль у противника.
block.fuse.description = Вистрілює трьома променями, що пронизують броню, у малому радіусі у противників. block.fuse.description = Вистрілює трьома променями, що пронизують броню, у малому радіусі в противників.
block.ripple.description = Вистрілює скупченням снарядів у противників. block.ripple.description = Вистрілює скупченням снарядів у противників.
block.cyclone.description = Підпалює вибухові грудки скупчення противників. block.cyclone.description = Підпалює вибухові грудки скупчення противників.
block.spectre.description = Вистрілює великі бронебійні кулі у повітряні та наземні цілі. block.spectre.description = Вистрілює великі бронебійні кулі в повітряні та наземні цілі.
block.meltdown.description = Заряджає і вистріляє лазерним променем у найближчих противників. Для роботи потрібен теплоносій. block.meltdown.description = Заряджає і вистрілює лазерним променем у найближчих противників. Для роботи потрібен теплоносій.
block.foreshadow.description = Вистрілює великим болтом в одну ціль на велику дистанцію block.foreshadow.description = Вистрілює великим болтом в одну ціль на велику дистанцію
block.repair-point.description = Безперервно ремонтує найближчу пошкоджену бойову одиницю у своєму радіусі дії. block.repair-point.description = Безперервно ремонтує найближчу пошкоджену бойову одиницю у своєму радіусі дії.
block.segment.description = Пошкоджує та руйнує вхідні снаряди. Окрім лазерних. block.segment.description = Пошкоджує та руйнує вхідні снаряди. Окрім лазерних.
block.parallax.description = Притягає ворожі повітряні одиниці, пошкоджуючи їх в процесі. block.parallax.description = Притягає ворожі повітряні одиниці, пошкоджуючи їх у процесі.
block.tsunami.description = Вистрілює потужними потоками рідини у ворогів. Автоматично гасить пожежі при постачанні води. block.tsunami.description = Вистрілює потужними потоками рідини у ворогів. Автоматично гасить пожежі в разі постачання води.
block.silicon-crucible.description = Очищує кремній від піску та вугілля, використовуючи пиратит як додаткове джерело тепла. Більш ефективний у жарких місцях. block.silicon-crucible.description = Очищає кремній від піску та вугілля, використовуючи пиратит як додаткове джерело тепла. Більш ефективний у жарких місцях.
block.disassembler.description = Поділяє шлак на незначні кількості екзотичних мінеральних компонентів при низькій ефективності. Може виробляти торій. block.disassembler.description = Поділяє шлак на незначні кількості екзотичних мінеральних компонентів за низькою ефективності. Може виробляти торій.
block.overdrive-dome.description = Збільшує швидкість найближчих будівль. Потребує фазову тканину і кремній. block.overdrive-dome.description = Збільшує швидкість найближчих будівель. Потребує фазову тканину і кремній.
block.payload-conveyor.description = Переміщує великі вантажі, як-от одиниці з заводів. block.payload-conveyor.description = Переміщує великі вантажі, як-от одиниці з заводів.
block.payload-router.description = Розділяє вантажі, що надходять, у 3 різні сторони. block.payload-router.description = Розділяє вантажі, що надходять, у 3 різні сторони.
block.command-center.description = Контролює поведінку одиниць за допомогою декількох різних команд. block.command-center.description = Контролює поведінку одиниць за допомогою декількох різних команд.
@@ -1416,45 +1401,45 @@ block.additive-reconstructor.description = Поліпшує введених о
block.multiplicative-reconstructor.description = Поліпшує введених одиниць до третього рівня. block.multiplicative-reconstructor.description = Поліпшує введених одиниць до третього рівня.
block.exponential-reconstructor.description = Поліпшує введених одиниць до четвертого рівня. block.exponential-reconstructor.description = Поліпшує введених одиниць до четвертого рівня.
block.tetrative-reconstructor.description = Поліпшує введених одиниць до п’ятого і фінального рівня. block.tetrative-reconstructor.description = Поліпшує введених одиниць до п’ятого і фінального рівня.
block.switch.description = Перемикач. Стан можна читати і контролювати за допомогою логічних процесорів. block.switch.description = Перемикач. Стан можна читати й контролювати за допомогою логічних процесорів.
block.micro-processor.description = Запускає послідовність логічних вказівок (інструкцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. block.micro-processor.description = Запускає послідовність логічних вказівок (інструкцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель.
block.logic-processor.description = Запускає послідовність логічних вказівок (інструкцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Мікропроцесор. block.logic-processor.description = Запускає послідовність логічних вказівок (інструкцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Мікропроцесор.
block.hyper-processor.description = Запускає послідовність логічних вказівок (інструкцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Логічний процесор block.hyper-processor.description = Запускає послідовність логічних вказівок (інструкцій) у нескінченному циклі. Може використовуватися для керування блоків та будівель. Швидше ніж Логічний процесор
block.memory-cell.description = Зберігає інформацію для логічного процесора. block.memory-cell.description = Зберігає інформацію для логічного процесора.
block.memory-bank.description = Зберігає інформацію для логічного процесора. Висока місткість. block.memory-bank.description = Зберігає інформацію для логічного процесора. Висока місткість.
block.logic-display.description = Відображає довільну графіку з логічного процесора. block.logic-display.description = Показує довільну графіку з логічного процесора.
block.large-logic-display.description = Відображає довільну графіку з логічного процесора. block.large-logic-display.description = Показує довільну графіку з логічного процесора.
block.interplanetary-accelerator.description = Велика електромагнітна башта-рейкотрон. Прискорює ядра, щоби подолати планетне тяжіння для міжпланетного розгортання.
unit.dagger.description = Вистрілює стандартними кулями по найближчих ворогах. unit.dagger.description = Вистрілює стандартними кулями в найближчих ворогах.
unit.mace.description = Вистрілює потоками полум'я у найближчих ворогів. unit.mace.description = Вистрілює потоками полумя в найближчих ворогів.
unit.fortress.description = Вистрілює з дальнобійної артилерії по наземних цілях. unit.fortress.description = Вистрілює з дальнобійної артилерії в наземних цілей.
unit.scepter.description = Вистрілює шквалом заряджених куль у найближчих ворогів. unit.scepter.description = Вистрілює шквалом заряджених куль у найближчих ворогів.
unit.reign.description = Вистрілює шквалом масивних пронизливих куль по найближчих ворогах. unit.reign.description = Вистрілює шквалом масивних пронизливих куль у найближчих ворогів.
unit.nova.description = Вистрілює лазерними болтами, які пошкоджують ворогів та відновлюють союзні споруди. Здатний до польоту. unit.nova.description = Вистрілює лазерними болтами, які пошкоджують ворогів та відновлюють союзні споруди. Здатний до польоту.
unit.pulsar.description = Випускає дуги електрики, які завдають шкоди ворогам та відновлюють союзні споруди. Здатний до польоту. unit.pulsar.description = Випускає дуги електрики, які завдають шкоди ворогам та відновлюють союзні споруди. Здатний до польоту.
unit.quasar.description = Вистрілює пробивними лазерними промені, які пошкоджують ворогів та відновлюють споріднені конструкції. Здатний до польоту. Захищений. unit.quasar.description = Вистрілює пробивними лазерними промені, які пошкоджують ворогів та відновлюють споріднені конструкції. Здатний до польоту. Захищений.
unit.vela.description = Вистрілює масивним безперервним лазерним промінем, який завдає шкоди ворогам, спричиняє пожежі та відновлює союзні споруди. Здатний до польоту. unit.vela.description = Вистрілює масивним безперервним лазерним променем, який завдає шкоди ворогам, спричиняє пожежі та відновлює союзні споруди. Здатний до польоту.
unit.corvus.description = Спричиняє масивний лазерний вибух, який завдає шкоди ворогам та відновлює споріднені споруди. Може переступати через більшість місцевості. unit.corvus.description = Спричиняє масивний лазерний вибух, який завдає шкоди ворогам та відновлює споріднені споруди. Може переступати через більшість місцевості.
unit.crawler.description = Біжить до ворогів і самознищується, викликаючи великий вибух. unit.crawler.description = Біжить до ворогів і самознищується, викликаючи великий вибух.
unit.atrax.description = Випалює виснажливі шари шлаку в наземних цілях. Може переступити більшість місцевості. unit.atrax.description = Випалює виснажливі шари шлаку в наземних цілях. Може переступити більшість місцевості.
unit.spiroct.description = Вистрілює виснажливими лазерними променями у ворогів, відновлюючись при цьому. Може переступати через більшість місцевості. unit.spiroct.description = Вистрілює виснажливими лазерними променями у ворогів, відновлюючись водночас. Може переступати через більшість місцевості.
unit.arkyid.description = Вистрілює у ворогів великими виснажливими лазерними променями, відновлюючись при цьому. unit.arkyid.description = Вистрілює у ворогів великими виснажливими лазерними променями, відновлюючись при цьому.
unit.toxopid.description = Вистрілює у ворогів великими електричними касетними снарядами та пробивними лазерами. Може переступати через більшість місцевості. unit.toxopid.description = Вистрілює у ворогів великими електричними касетними снарядами та пробивними лазерами. Може переступати через більшість місцевості.
unit.flare.description = Вистрілює стандартними кулями в найближчі цілі. unit.flare.description = Вистрілює стандартними кулями в найближчі цілі.
unit.horizon.description = Кидає купу бомб на наземні цілі. unit.horizon.description = Кидає купу бомб на наземні цілі.
unit.zenith.description = Вистрілює залпи ракет по всіх найближчих ворогів. unit.zenith.description = Вистрілює залпи ракет у всіх найближчих ворогів.
unit.antumbra.description = Вистрілює шквал куль у всіх найближчих ворогів. unit.antumbra.description = Вистрілює шквал куль у всіх найближчих ворогів.
unit.eclipse.description = Вистрілює два пронизливі лазери та шквал луски по всіх найближчих ворогах. unit.eclipse.description = Вистрілює двома пронизливими лазерами та шквалом куль у всіх найближчих ворогів.
unit.mono.description = Автоматично видобуває мідь і свинець і кладе їх в ядро. unit.mono.description = Автоматично видобуває мідь і свинець і кладе їх у ядро.
unit.poly.description = Автоматично перебудовує зруйновані споруди та допомагає іншим одиницям у будівництві. unit.poly.description = Автоматично перебудовує зруйновані споруди та допомагає іншим одиницям у будівництві.
unit.mega.description = Автоматично відновлює пошкоджені конструкції. Здатний нести блоки та невеликі наземні блоки. unit.mega.description = Автоматично відновлює пошкоджені конструкції. Здатний нести блоки та невеликі наземні блоки.
unit.quad.description = Кидає великі бомби на наземні цілі, відновлюючи союзні споруди та завдаючи шкоди ворогам. Здатний нести середні наземні одиниці. unit.quad.description = Кидає великі бомби на наземні цілі, відновлюючи союзні споруди та завдаючи шкоди ворогам. Здатний нести середні наземні одиниці.
unit.oct.description = Захищає найближчих союзників своїм відновлювальним щитом. Здатний нести більшість наземних одиниць. unit.oct.description = Захищає найближчих союзників своїм відновлювальним щитом. Здатний нести більшість наземних одиниць.
unit.risso.description = Вистрілює шквалом ракет і куль по всіх найближчих ворогах. unit.risso.description = Вистрілює шквалом ракет і куль по всіх найближчих ворогах.
unit.minke.description = Вистрілює запальними снарядами та стандартнами кулями по найближчих наземних цілях. unit.minke.description = Вистрілює запальними снарядами та стандартними кулями по найближчих наземних цілях.
unit.bryde.description = Вистрілює по ворогам артилерійськими снарядами та ракетами великої дальності. unit.bryde.description = Вистрілює у ворогів артилерійськими снарядами та ракетами великої дальності.
unit.sei.description = Вистрілює по ворогам шквалом ракет і бронебійних куль. unit.sei.description = Вистрілює у ворогів шквалом ракет і бронебійних куль.
unit.omura.description = Вистрілює по ворогах дальнобійним болтом, що пробиває броню. Виробляє повітряних Фальшфеєрів. unit.omura.description = Вистрілює у ворогів далекобійним болтом, що пробиває броню. Виробляє повітряних Фальшфеєрів.
unit.alpha.description = Захищає ядро «Уламок» від противників. Будує споруди. unit.alpha.description = Захищає ядро «Уламок» від противників. Будує споруди.
unit.beta.description = Захищає ядро «Штаб» від противників. Будує споруди. unit.beta.description = Захищає ядро «Штаб» від противників. Будує споруди.
unit.gamma.description = Захищає ядро «Атом» від противників. Будує споруди. unit.gamma.description = Захищає ядро «Атом» від противників. Будує споруди.

File diff suppressed because it is too large Load Diff

View File

@@ -93,6 +93,8 @@ sk7725
The Slaylord The Slaylord
ThePlayerA ThePlayerA
YellOw139 YellOw139
NgLamVN
JINODK
PetrGasparik PetrGasparik
LeoDog896 LeoDog896
Summet Summet

View File

@@ -47,8 +47,6 @@ public class Vars implements Loadable{
public static final int bufferSize = 8192; public static final int bufferSize = 8192;
/** global charset, since Android doesn't support the Charsets class */ /** global charset, since Android doesn't support the Charsets class */
public static final Charset charset = Charset.forName("UTF-8"); public static final Charset charset = Charset.forName("UTF-8");
/** mods suggested for import */
public static final String[] suggestedMods = {""};
/** main application name, capitalized */ /** main application name, capitalized */
public static final String appName = "Mindustry"; public static final String appName = "Mindustry";
/** URL for itch.io donations. */ /** URL for itch.io donations. */

View File

@@ -36,7 +36,7 @@ public class BaseAI{
private static int correct = 0, incorrect = 0; private static int correct = 0, incorrect = 0;
private int lastX, lastY, lastW, lastH; private int lastX, lastY, lastW, lastH;
private boolean triedWalls; private boolean triedWalls, foundPath;
TeamData data; TeamData data;
Interval timer = new Interval(4); Interval timer = new Interval(4);
@@ -114,6 +114,9 @@ public class BaseAI{
} }
calcPath.add(calcTile.pos()); calcPath.add(calcTile.pos());
for(Point2 p : Geometry.d8){
calcPath.add(Point2.pack(p.x + calcTile.x, p.y + calcTile.y));
}
//found the end. //found the end.
if(calcTile.build instanceof CoreBuild b && b.team == state.rules.defaultTeam){ if(calcTile.build instanceof CoreBuild b && b.team == state.rules.defaultTeam){
@@ -125,6 +128,7 @@ public class BaseAI{
calcPath.clear(); calcPath.clear();
calcTile = null; calcTile = null;
totalCalcs ++; totalCalcs ++;
foundPath = true;
break; break;
} }
@@ -135,7 +139,7 @@ public class BaseAI{
} }
//only schedule when there's something to build. //only schedule when there's something to build.
if(totalCalcs > 0 && data.blocks.isEmpty() && timer.get(timerStep, Mathf.lerp(20f, 4f, data.team.rules().aiTier))){ if(foundPath && data.blocks.isEmpty() && timer.get(timerStep, Mathf.lerp(20f, 4f, data.team.rules().aiTier))){
if(!triedWalls){ if(!triedWalls){
tryWalls(); tryWalls();
triedWalls = true; triedWalls = true;

View File

@@ -12,6 +12,7 @@ public class Liquids implements ContentList{
water = new Liquid("water", Color.valueOf("596ab8")){{ water = new Liquid("water", Color.valueOf("596ab8")){{
heatCapacity = 0.4f; heatCapacity = 0.4f;
alwaysUnlocked = true;
effect = StatusEffects.wet; effect = StatusEffects.wet;
}}; }};

View File

@@ -154,22 +154,22 @@ public class TechTree implements ContentList{
}); });
node(kiln, Seq.with(new SectorComplete(craters)), () -> { node(kiln, Seq.with(new SectorComplete(craters)), () -> {
node(incinerator, () -> { node(pulverizer, () -> {
node(melter, () -> { node(incinerator, () -> {
node(surgeSmelter, () -> { node(melter, () -> {
node(surgeSmelter, () -> {
}); });
node(separator, () -> { node(separator, () -> {
node(pulverizer, () -> {
node(disassembler, () -> { node(disassembler, () -> {
}); });
}); });
});
node(cryofluidMixer, () -> { node(cryofluidMixer, () -> {
});
}); });
}); });
}); });
@@ -462,10 +462,11 @@ public class TechTree implements ContentList{
new Research(conduit), new Research(conduit),
new Research(wave) new Research(wave)
), () -> { ), () -> {
//TODO change positions?
node(impact0078, Seq.with( node(impact0078, Seq.with(
new SectorComplete(tarFields), new SectorComplete(tarFields),
new Research(Items.thorium), new Research(Items.thorium),
new Research(lancer),
new Research(salvo),
new Research(coreFoundation) new Research(coreFoundation)
), () -> { ), () -> {
node(desolateRift, Seq.with( node(desolateRift, Seq.with(
@@ -714,8 +715,14 @@ public class TechTree implements ContentList{
finishedRequirements[i] = new ItemStack(requirements[i].item, Core.settings == null ? 0 : Core.settings.getInt("req-" + content.name + "-" + requirements[i].item.name)); finishedRequirements[i] = new ItemStack(requirements[i].item, Core.settings == null ? 0 : Core.settings.getInt("req-" + content.name + "-" + requirements[i].item.name));
} }
var used = new ObjectSet<Content>();
//add dependencies as objectives. //add dependencies as objectives.
content.getDependencies(d -> objectives.add(new Research(d))); content.getDependencies(d -> {
if(used.add(d)){
objectives.add(new Research(d));
}
});
map.put(content, this); map.put(content, this);
all.add(this); all.add(this);

View File

@@ -1624,7 +1624,7 @@ public class UnitTypes implements ContentList{
xRand = 8f; xRand = 8f;
shotDelay = 1f; shotDelay = 1f;
bullet = new MissileBulletType(4.2f, 40){{ bullet = new MissileBulletType(4.2f, 42){{
homingPower = 0.12f; homingPower = 0.12f;
width = 8f; width = 8f;
height = 8f; height = 8f;
@@ -1634,7 +1634,7 @@ public class UnitTypes implements ContentList{
keepVelocity = false; keepVelocity = false;
splashDamageRadius = 35f; splashDamageRadius = 35f;
splashDamage = 45f; splashDamage = 45f;
lifetime = 56f; lifetime = 62f;
trailColor = Pal.bulletYellowBack; trailColor = Pal.bulletYellowBack;
backColor = Pal.bulletYellowBack; backColor = Pal.bulletYellowBack;
frontColor = Pal.bulletYellow; frontColor = Pal.bulletYellow;
@@ -1662,11 +1662,11 @@ public class UnitTypes implements ContentList{
shots = 3; shots = 3;
shotDelay = 4f; shotDelay = 4f;
inaccuracy = 1f; inaccuracy = 1f;
bullet = new BasicBulletType(7f, 55){{ bullet = new BasicBulletType(7f, 57){{
width = 13f; width = 13f;
height = 19f; height = 19f;
shootEffect = Fx.shootBig; shootEffect = Fx.shootBig;
lifetime = 30f; lifetime = 35f;
}}; }};
}}); }});
}}; }};

View File

@@ -75,7 +75,7 @@ public class Weathers implements ContentList{
attrs.set(Attribute.spores, 1f); attrs.set(Attribute.spores, 1f);
attrs.set(Attribute.light, -0.15f); attrs.set(Attribute.light, -0.15f);
status = StatusEffects.sporeSlowed; status = StatusEffects.sporeSlowed;
opacityMultiplier = 0.75f; opacityMultiplier = 0.5f;
force = 0.1f; force = 0.1f;
sound = Sounds.wind; sound = Sounds.wind;
soundVol = 0.7f; soundVol = 0.7f;

View File

@@ -10,21 +10,22 @@ import arc.scene.style.*;
import arc.scene.ui.*; import arc.scene.ui.*;
import arc.struct.*; import arc.struct.*;
import arc.util.*; import arc.util.*;
import mindustry.*;
import mindustry.audio.*; import mindustry.audio.*;
import mindustry.content.*; import mindustry.content.*;
import mindustry.content.TechTree.*; import mindustry.content.TechTree.*;
import mindustry.core.GameState.*; import mindustry.core.GameState.*;
import mindustry.entities.*; import mindustry.entities.*;
import mindustry.game.EventType.*; import mindustry.game.EventType.*;
import mindustry.game.*;
import mindustry.game.Objectives.*; import mindustry.game.Objectives.*;
import mindustry.game.*;
import mindustry.game.Saves.*; import mindustry.game.Saves.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.input.*; import mindustry.input.*;
import mindustry.io.*; import mindustry.io.*;
import mindustry.io.SaveIO.*; import mindustry.io.SaveIO.*;
import mindustry.maps.*;
import mindustry.maps.Map; import mindustry.maps.Map;
import mindustry.maps.*;
import mindustry.net.*; import mindustry.net.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.ui.*; import mindustry.ui.*;
@@ -340,7 +341,7 @@ public class Control implements ApplicationListener, Loadable{
state.rules.waves = true; state.rules.waves = true;
//reset win wave?? //reset win wave??
state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : state.rules.winWave > state.wave ? state.rules.winWave : 40; state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null && sector.preset.captureWave > 0 ? sector.preset.captureWave : state.rules.winWave > state.wave ? state.rules.winWave : 40;
//if there's still an enemy base left, fix it //if there's still an enemy base left, fix it
if(state.rules.attackMode){ if(state.rules.attackMode){
@@ -506,6 +507,13 @@ public class Control implements ApplicationListener, Loadable{
settings.put("fullscreen", !full); settings.put("fullscreen", !full);
} }
if(Float.isNaN(Vars.player.x) || Float.isNaN(Vars.player.y)){
player.set(0, 0);
if(!player.dead()) player.unit().kill();
}
if(Float.isNaN(camera.position.x)) camera.position.x = world.unitWidth()/2f;
if(Float.isNaN(camera.position.y)) camera.position.y = world.unitHeight()/2f;
if(state.isGame()){ if(state.isGame()){
input.update(); input.update();

View File

@@ -123,7 +123,7 @@ public class Logic implements ApplicationListener{
}); });
//sync research //sync research
Events.on(ResearchEvent.class, e -> { Events.on(UnlockEvent.class, e -> {
if(net.server()){ if(net.server()){
Call.researched(e.content); Call.researched(e.content);
} }
@@ -153,6 +153,18 @@ public class Logic implements ApplicationListener{
} }
}); });
//send out items to each client
Events.on(TurnEvent.class, e -> {
if(net.server() && state.isCampaign()){
int[] out = new int[content.items().size];
state.getSector().info.production.each((item, stat) -> {
out[item.id] = Math.max(0, (int)(stat.mean * turnDuration / 60));
});
Call.sectorProduced(out);
}
});
} }
/** Adds starting items, resets wave time, and sets state to playing. */ /** Adds starting items, resets wave time, and sets state to playing. */
@@ -243,8 +255,10 @@ public class Logic implements ApplicationListener{
} }
private void updateWeather(){ private void updateWeather(){
state.rules.weather.removeAll(w -> w.weather == null);
for(WeatherEntry entry : state.rules.weather){ for(WeatherEntry entry : state.rules.weather){
if(entry.weather == null) continue;
//update cooldown //update cooldown
entry.cooldown -= Time.delta; entry.cooldown -= Time.delta;
@@ -295,8 +309,46 @@ public class Logic implements ApplicationListener{
public static void researched(Content content){ public static void researched(Content content){
if(!(content instanceof UnlockableContent u)) return; if(!(content instanceof UnlockableContent u)) return;
var node = u.node();
//unlock all direct dependencies on client, permanently
while(node != null){
node.content.unlock();
node = node.parent;
}
state.rules.researched.add(u.name); state.rules.researched.add(u.name);
Events.fire(new UnlockEvent(u)); }
//called when the remote server runs a turn and produces something
@Remote
public static void sectorProduced(int[] amounts){
if(!state.isCampaign()) return;
Planet planet = state.rules.sector.planet;
boolean any = false;
for(Item item : content.items()){
int am = amounts[item.id];
if(am > 0){
int sumMissing = planet.sectors.sum(s -> s.hasBase() ? s.info.storageCapacity - s.info.items.get(item) : 0);
if(sumMissing == 0) continue;
//how much % to add
double percent = Math.min((double)am / sumMissing, 1);
for(Sector sec : planet.sectors){
if(sec.hasBase()){
int added = (int)Math.ceil(((sec.info.storageCapacity - sec.info.items.get(item)) * percent));
sec.info.items.add(item, added);
any = true;
}
}
}
}
if(any){
for(Sector sec : planet.sectors){
sec.saveInfo();
}
}
} }
@Override @Override

View File

@@ -705,9 +705,9 @@ public class NetServer implements ApplicationListener{
@Remote(targets = Loc.client, called = Loc.server) @Remote(targets = Loc.client, called = Loc.server)
public static void adminRequest(Player player, Player other, AdminAction action){ public static void adminRequest(Player player, Player other, AdminAction action){
if(!player.admin){ if(!player.admin && !player.isLocal()){
warn("ACCESS DENIED: Player @ / @ attempted to perform admin action '@' on '@' without proper security access.", warn("ACCESS DENIED: Player @ / @ attempted to perform admin action '@' on '@' without proper security access.",
player.name, player.con.address, action.name(), other == null ? null : other.name); player.name, player.con == null ? "null" : player.con.address, action.name(), other == null ? null : other.name);
return; return;
} }

View File

@@ -92,6 +92,12 @@ public class UI implements ApplicationListener, Loadable{
Core.scene = new Scene(); Core.scene = new Scene();
Core.input.addProcessor(Core.scene); Core.input.addProcessor(Core.scene);
int[] insets = Core.graphics.getSafeInsets();
Core.scene.marginLeft = insets[0];
Core.scene.marginRight = insets[1];
Core.scene.marginTop = insets[2];
Core.scene.marginBottom = insets[3];
Tex.load(); Tex.load();
Icon.load(); Icon.load();
Styles.load(); Styles.load();

View File

@@ -615,6 +615,7 @@ public class World{
GenerateInput input = new GenerateInput(); GenerateInput input = new GenerateInput();
for(GenerateFilter filter : filters){ for(GenerateFilter filter : filters){
filter.randomize();
input.begin(filter, width(), height(), (x, y) -> tiles.getn(x, y)); input.begin(filter, width(), height(), (x, y) -> tiles.getn(x, y));
filter.apply(tiles, input); filter.apply(tiles, input);
} }

View File

@@ -6,6 +6,8 @@ import arc.graphics.g2d.*;
import arc.scene.ui.layout.*; import arc.scene.ui.layout.*;
import arc.util.*; import arc.util.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import mindustry.content.*;
import mindustry.content.TechTree.*;
import mindustry.game.EventType.*; import mindustry.game.EventType.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.type.*; import mindustry.type.*;
@@ -42,6 +44,11 @@ public abstract class UnlockableContent extends MappableContent{
this.unlocked = Core.settings != null && Core.settings.getBool(this.name + "-unlocked", false); this.unlocked = Core.settings != null && Core.settings.getBool(this.name + "-unlocked", false);
} }
/** @return the tech node for this content. may be null. */
public @Nullable TechNode node(){
return TechTree.get(this);
}
public String displayDescription(){ public String displayDescription(){
return minfo.mod == null ? description : description + "\n" + Core.bundle.format("mod.display", minfo.mod.meta.displayName()); return minfo.mod == null ? description : description + "\n" + Core.bundle.format("mod.display", minfo.mod.meta.displayName());
} }
@@ -110,7 +117,7 @@ public abstract class UnlockableContent extends MappableContent{
/** Makes this piece of content unlocked; if it already unlocked, nothing happens. */ /** Makes this piece of content unlocked; if it already unlocked, nothing happens. */
public void unlock(){ public void unlock(){
if(!net.client() && !unlocked()){ if(!unlocked && !alwaysUnlocked){
unlocked = true; unlocked = true;
Core.settings.put(name + "-unlocked", true); Core.settings.put(name + "-unlocked", true);
@@ -128,7 +135,7 @@ public abstract class UnlockableContent extends MappableContent{
} }
public boolean unlocked(){ public boolean unlocked(){
if(net != null && net.client()) return alwaysUnlocked || state.rules.researched.contains(name); if(net != null && net.client()) return unlocked || alwaysUnlocked || state.rules.researched.contains(name);
return unlocked || alwaysUnlocked; return unlocked || alwaysUnlocked;
} }

View File

@@ -347,7 +347,7 @@ public abstract class BulletType extends Content{
bullet.damage = (damage < 0 ? this.damage : damage) * bullet.damageMultiplier(); bullet.damage = (damage < 0 ? this.damage : damage) * bullet.damageMultiplier();
bullet.add(); bullet.add();
if(keepVelocity && owner instanceof Velc) bullet.vel.add(((Velc)owner).vel().x, ((Velc)owner).vel().y); if(keepVelocity && owner instanceof Velc v) bullet.vel.add(v.vel().x, v.vel().y);
return bullet; return bullet;
} }
@@ -357,6 +357,7 @@ public abstract class BulletType extends Content{
@Remote(called = Loc.server, unreliable = true) @Remote(called = Loc.server, unreliable = true)
public static void createBullet(BulletType type, Team team, float x, float y, float angle, float damage, float velocityScl, float lifetimeScl){ public static void createBullet(BulletType type, Team team, float x, float y, float angle, float damage, float velocityScl, float lifetimeScl){
if(type == null) return;
type.create(null, team, x, y, angle, damage, velocityScl, lifetimeScl, null); type.create(null, team, x, y, angle, damage, velocityScl, lifetimeScl, null);
} }
} }

View File

@@ -49,7 +49,8 @@ public class ContinuousLaserBulletType extends BulletType{
@Override @Override
public float estimateDPS(){ public float estimateDPS(){
//assume firing duration is about 100 by default, may not be accurate there's no way of knowing in this method //assume firing duration is about 100 by default, may not be accurate there's no way of knowing in this method
return damage * 100f / 5f; //assume it pierces 3 blocks/units
return damage * 100f / 5f * 3f;
} }
@Override @Override

View File

@@ -6,7 +6,7 @@ import mindustry.gen.*;
import mindustry.content.*; import mindustry.content.*;
public class LaserBoltBulletType extends BasicBulletType{ public class LaserBoltBulletType extends BasicBulletType{
protected float height = 7f, width = 2f; public float width = 2f, height = 7f;
public LaserBoltBulletType(float speed, float damage){ public LaserBoltBulletType(float speed, float damage){
super(speed, damage); super(speed, damage);

View File

@@ -40,9 +40,10 @@ public class LaserBulletType extends BulletType{
this(1f); this(1f);
} }
//assume it pierces at least 3 blocks
@Override @Override
public float estimateDPS(){ public float estimateDPS(){
return super.estimateDPS() * 2f; return super.estimateDPS() * 3f;
} }
@Override @Override

View File

@@ -91,7 +91,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{
plans.removeFirst(); plans.removeFirst();
return; return;
} }
}else if(tile.team() != team){ }else if(tile.team() != team && tile.team() != Team.derelict){
plans.removeFirst(); plans.removeFirst();
return; return;
} }

View File

@@ -197,7 +197,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
//region utility methods //region utility methods
public void addPlan(boolean checkPrevious){ public void addPlan(boolean checkPrevious){
if(!block.rebuildable) return; if(!block.rebuildable || (team == state.rules.defaultTeam && state.isCampaign() && !block.isVisible())) return;
if(self() instanceof ConstructBuild entity){ if(self() instanceof ConstructBuild entity){
//update block to reflect the fact that something was being constructed //update block to reflect the fact that something was being constructed
@@ -929,7 +929,9 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
//null is of type void.class; anonymous classes use their superclass. //null is of type void.class; anonymous classes use their superclass.
Class<?> type = value == null ? void.class : value.getClass().isAnonymousClass() || value.getClass().getSimpleName().startsWith("adapter") ? value.getClass().getSuperclass() : value.getClass(); Class<?> type = value == null ? void.class : value.getClass().isAnonymousClass() || value.getClass().getSimpleName().startsWith("adapter") ? value.getClass().getSuperclass() : value.getClass();
if(value instanceof Item) type = Item.class;
if(value instanceof Block) type = Block.class; if(value instanceof Block) type = Block.class;
if(value instanceof Liquid) type = Liquid.class;
if(builder != null && builder.isPlayer()){ if(builder != null && builder.isPlayer()){
lastAccessed = builder.getPlayer().name; lastAccessed = builder.getPlayer().name;
@@ -1097,8 +1099,13 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
public void displayBars(Table table){ public void displayBars(Table table){
for(Func<Building, Bar> bar : block.bars.list()){ for(Func<Building, Bar> bar : block.bars.list()){
table.add(bar.get(self())).growX(); //TODO fix conclusively
table.row(); try{
table.add(bar.get(self())).growX();
table.row();
}catch(ClassCastException e){
break;
}
} }
} }

View File

@@ -68,13 +68,12 @@ public class Schematics implements Loadable{
shadowBuffer.dispose(); shadowBuffer.dispose();
if(errorTexture != null){ if(errorTexture != null){
errorTexture.dispose(); errorTexture.dispose();
errorTexture = null;
} }
}); });
Events.on(ClientLoadEvent.class, event -> { Events.on(ClientLoadEvent.class, event -> {
Pixmap pixmap = Core.atlas.getPixmap("error").crop(); errorTexture = new Texture("sprites/error.png");
errorTexture = new Texture(pixmap);
pixmap.dispose();
}); });
} }

View File

@@ -73,7 +73,7 @@ public class SectorInfo{
public boolean shown = false; public boolean shown = false;
/** Special variables for simulation. */ /** Special variables for simulation. */
public float sumHealth, sumRps, sumDps, waveHealthBase, waveHealthSlope, waveDpsBase, waveDpsSlope, bossHealth, bossDps; public float sumHealth, sumRps, sumDps, waveHealthBase, waveHealthSlope, waveDpsBase, waveDpsSlope, bossHealth, bossDps, curEnemyHealth, curEnemyDps;
/** Wave where first boss shows up. */ /** Wave where first boss shows up. */
public int bossWave = -1; public int bossWave = -1;
@@ -130,7 +130,7 @@ public class SectorInfo{
} }
//if there are infinite waves and no win wave, add a win wave. //if there are infinite waves and no win wave, add a win wave.
if(waves && winWave <= 0 && !attack){ if(winWave <= 0 && !attack){
winWave = 30; winWave = 30;
} }
@@ -229,8 +229,9 @@ public class SectorInfo{
//cap production/export by production //cap production/export by production
production.get(item).mean = Math.min(production.get(item).mean, rawProduction.get(item).mean); production.get(item).mean = Math.min(production.get(item).mean, rawProduction.get(item).mean);
if(export.containsKey(item)){ if(export.containsKey(item)){
export.get(item).mean = Math.min(export.get(item).mean, rawProduction.get(item).mean); export.get(item).mean = Math.min(export.get(item).mean, Math.max(rawProduction.get(item).mean, -production.get(item).mean));
} }
} }

View File

@@ -84,7 +84,7 @@ public class Universe{
if(state.hasSector()){ if(state.hasSector()){
//update sector light //update sector light
float light = state.getSector().getLight(); float light = state.getSector().getLight();
float alpha = Mathf.clamp(Mathf.map(light, 0f, 0.8f, 0.2f, 1f)); float alpha = Mathf.clamp(Mathf.map(light, 0f, 0.8f, 0.3f, 1f));
//assign and map so darkness is not 100% dark //assign and map so darkness is not 100% dark
state.rules.ambientLight.a = 1f - alpha; state.rules.ambientLight.a = 1f - alpha;

View File

@@ -10,7 +10,7 @@ import mindustry.type.*;
import static mindustry.content.UnitTypes.*; import static mindustry.content.UnitTypes.*;
public class Waves{ public class Waves{
public static final int waveVersion = 4; public static final int waveVersion = 5;
private Seq<SpawnGroup> spawns; private Seq<SpawnGroup> spawns;
@@ -277,7 +277,7 @@ public class Waves{
int cap = 150; int cap = 150;
float shieldStart = 30, shieldsPerWave = 20 + difficulty*30f; float shieldStart = 30, shieldsPerWave = 20 + difficulty*30f;
float[] scaling = {1, 1.5f, 3f, 4f, 5f}; float[] scaling = {1, 2f, 3f, 4f, 5f};
Intc createProgression = start -> { Intc createProgression = start -> {
//main sequence //main sequence

View File

@@ -35,11 +35,18 @@ public class LoadRenderer implements Disposable{
private Mesh mesh = MeshBuilder.buildHex(colorRed, 2, true, 1f); private Mesh mesh = MeshBuilder.buildHex(colorRed, 2, true, 1f);
private Camera3D cam = new Camera3D(); private Camera3D cam = new Camera3D();
private int lastLength = -1; private int lastLength = -1;
private FxProcessor fx = new FxProcessor(Format.rgba8888, 2, 2, false, true); private FxProcessor fx;
private WindowedMean renderTimes = new WindowedMean(20); private WindowedMean renderTimes = new WindowedMean(20);
private long lastFrameTime; private long lastFrameTime;
{ {
//some systems don't support rgba8888 w/ a stencil buffer
try{
fx = new FxProcessor(Format.rgba8888, 2, 2, false, true);
}catch(Exception e){
fx = new FxProcessor(Format.rgb565, 2, 2, false, true);
}
//vignetting is probably too much //vignetting is probably too much
//fx.addEffect(new VignettingFilter(false)); //fx.addEffect(new VignettingFilter(false));
fx.addEffect(new BloomFilter()); fx.addEffect(new BloomFilter());

View File

@@ -836,7 +836,6 @@ public class MobileInput extends InputHandler implements GestureListener{
if(type == null) return; if(type == null) return;
boolean omni = unit.type.omniMovement; boolean omni = unit.type.omniMovement;
boolean ground = unit.isGrounded();
boolean allowHealing = type.canHeal; boolean allowHealing = type.canHeal;
boolean validHealTarget = allowHealing && target instanceof Building && ((Building)target).isValid() && target.team() == unit.team && boolean validHealTarget = allowHealing && target instanceof Building && ((Building)target).isValid() && target.team() == unit.team &&
((Building)target).damaged() && target.within(unit, type.range); ((Building)target).damaged() && target.within(unit, type.range);

View File

@@ -83,8 +83,9 @@ public class JsonIO{
@Override @Override
public Sector read(Json json, JsonValue jsonData, Class type){ public Sector read(Json json, JsonValue jsonData, Class type){
String[] split = jsonData.asString().split("-"); String name = jsonData.asString();
return Vars.content.<Planet>getByName(ContentType.planet, split[0]).sectors.get(Integer.parseInt(split[1])); int idx = name.lastIndexOf('-');
return Vars.content.<Planet>getByName(ContentType.planet, name.substring(0, idx)).sectors.get(Integer.parseInt(name.substring(idx + 1)));
} }
}); });

View File

@@ -296,7 +296,7 @@ public class TypeIO{
if(control instanceof Player p){ if(control instanceof Player p){
write.b(0); write.b(0);
write.i(p.id); write.i(p.id);
}else if(control instanceof FormationAI form){ }else if(control instanceof FormationAI form && form.leader != null){
write.b(1); write.b(1);
write.i(form.leader.id); write.i(form.leader.id);
}else if(control instanceof LogicAI logic && logic.controller != null){ }else if(control instanceof LogicAI logic && logic.controller != null){
@@ -547,6 +547,22 @@ public class TypeIO{
return read.b(new byte[length]); return read.b(new byte[length]);
} }
public static void writeInts(Writes write, int[] ints){
write.s((short)ints.length);
for(int i : ints){
write.i(i);
}
}
public static int[] readInts(Reads read){
short length = read.s();
int[] out = new int[length];
for(int i = 0; i < length; i++){
out[i] = read.i();
}
return out;
}
public static void writeTraceInfo(Writes write, TraceInfo trace){ public static void writeTraceInfo(Writes write, TraceInfo trace){
writeString(write, trace.ip); writeString(write, trace.ip);
writeString(write, trace.uuid); writeString(write, trace.uuid);

View File

@@ -114,6 +114,7 @@ public abstract class LStatement{
t.actions(Actions.alpha(0), Actions.fadeIn(0.3f, Interp.fade)); t.actions(Actions.alpha(0), Actions.fadeIn(0.3f, Interp.fade));
t.top().pane(inner -> { t.top().pane(inner -> {
inner.marginRight(24f);
inner.top(); inner.top();
hideCons.get(inner, hide); hideCons.get(inner, hide);
}).top(); }).top();

View File

@@ -528,7 +528,9 @@ public class LStatements{
stack.clearChildren(); stack.clearChildren();
stack.addChild(tables[selected]); stack.addChild(tables[selected]);
t.pack();
t.parent.parent.pack();
t.parent.parent.invalidateHierarchy();
}).size(80f, 50f).growX().checked(selected == fi).group(group); }).size(80f, 50f).growX().checked(selected == fi).group(group);
} }
t.row(); t.row();

View File

@@ -73,6 +73,11 @@ public class SectorDamage{
enemyHealth += info.bossHealth; enemyHealth += info.bossHealth;
} }
if(i == waveBegin){
enemyDps += info.curEnemyDps;
enemyHealth += info.curEnemyHealth;
}
//happens due to certain regressions //happens due to certain regressions
if(enemyHealth < 0 || enemyDps < 0) continue; if(enemyHealth < 0 || enemyDps < 0) continue;
@@ -293,18 +298,19 @@ public class SectorDamage{
//skip player //skip player
if(unit.isPlayer()) continue; if(unit.isPlayer()) continue;
if(unit.team == state.rules.defaultTeam){ //scale health based on armor - yes, this is inaccurate, but better than nothing
//scale health based on armor - yes, this is inaccurate, but better than nothing float healthMult = 1f + Mathf.clamp(unit.armor / 20f);
float healthMult = 1f + Mathf.clamp(unit.armor / 20f);
if(unit.team == state.rules.defaultTeam){
sumHealth += unit.health*healthMult + unit.shield; sumHealth += unit.health*healthMult + unit.shield;
sumDps += unit.type.dpsEstimate; sumDps += unit.type.dpsEstimate;
if(unit.abilities.find(a -> a instanceof RepairFieldAbility) instanceof RepairFieldAbility h){ if(unit.abilities.find(a -> a instanceof RepairFieldAbility) instanceof RepairFieldAbility h){
sumRps += h.amount / h.reload * 60f; sumRps += h.amount / h.reload * 60f;
} }
}else{ }else{
curEnemyDps += unit.type.dpsEstimate; float bossMult = unit.isBoss() ? 3f : 1f;
curEnemyHealth += unit.health; curEnemyDps += unit.type.dpsEstimate * unit.damageMultiplier() * bossMult;
curEnemyHealth += unit.health * healthMult * unit.healthMultiplier() * bossMult + unit.shield;
} }
} }
@@ -316,12 +322,6 @@ public class SectorDamage{
for(int wave = state.wave; wave < state.wave + 10; wave ++){ for(int wave = state.wave; wave < state.wave + 10; wave ++){
float sumWaveDps = 0f, sumWaveHealth = 0f; float sumWaveDps = 0f, sumWaveHealth = 0f;
//first wave has to take into account current dps
if(wave == state.wave){
sumWaveDps += curEnemyDps;
sumWaveHealth += curEnemyHealth;
}
for(SpawnGroup group : state.rules.spawns){ for(SpawnGroup group : state.rules.spawns){
float healthMult = 1f + Mathf.clamp(group.type.armor / 20f); float healthMult = 1f + Mathf.clamp(group.type.armor / 20f);
StatusEffect effect = (group.effect == null ? StatusEffects.none : group.effect); StatusEffect effect = (group.effect == null ? StatusEffects.none : group.effect);
@@ -340,7 +340,7 @@ public class SectorDamage{
} }
if(bossGroup != null){ if(bossGroup != null){
float bossMult = 1.1f; float bossMult = 1.2f;
//calculate first boss appearaance //calculate first boss appearaance
for(int wave = state.wave; wave < state.wave + 60; wave++){ for(int wave = state.wave; wave < state.wave + 60; wave++){
int spawned = bossGroup.getSpawned(wave - 1); int spawned = bossGroup.getSpawned(wave - 1);
@@ -369,6 +369,11 @@ public class SectorDamage{
info.sumDps = sumDps * 1.05f; info.sumDps = sumDps * 1.05f;
info.sumRps = sumRps; info.sumRps = sumRps;
float cmult = 1.5f;
info.curEnemyDps = curEnemyDps*cmult;
info.curEnemyHealth = curEnemyHealth*cmult;
info.wavesSurvived = getWavesSurvived(info); info.wavesSurvived = getWavesSurvived(info);
} }

View File

@@ -23,24 +23,27 @@ public abstract class GenerateFilter{
//buffer of tiles used, each tile packed into a long struct //buffer of tiles used, each tile packed into a long struct
long[] buffer = new long[tiles.width * tiles.height]; long[] buffer = new long[tiles.width * tiles.height];
//save to buffer
for(int i = 0; i < tiles.width * tiles.height; i++){ for(int i = 0; i < tiles.width * tiles.height; i++){
Tile tile = tiles.geti(i); Tile tile = tiles.geti(i);
buffer[i] = PackTile.get(tile.blockID(), tile.floorID(), tile.overlayID());
in.apply(tile.x, tile.y, tile.block(), tile.floor(), tile.overlay());
apply();
buffer[i] = PackTile.get(in.block.id, in.floor.id, in.overlay.id);
} }
//write to buffer
for(int i = 0; i < tiles.width * tiles.height; i++){ for(int i = 0; i < tiles.width * tiles.height; i++){
Tile tile = tiles.geti(i); Tile tile = tiles.geti(i);
long b = buffer[i]; long b = buffer[i];
in.apply(tile.x, tile.y, Vars.content.block(PackTile.block(b)), Vars.content.block(PackTile.floor(b)), Vars.content.block(PackTile.overlay(b))); Block block = Vars.content.block(PackTile.block(b)), floor = Vars.content.block(PackTile.floor(b)), overlay = Vars.content.block(PackTile.overlay(b));
apply();
tile.setFloor(in.floor.asFloor()); tile.setFloor(floor.asFloor());
tile.setOverlay(!in.floor.asFloor().hasSurface() && in.overlay.asFloor().needsSurface ? Blocks.air : in.overlay); tile.setOverlay(!floor.asFloor().hasSurface() && overlay.asFloor().needsSurface ? Blocks.air : overlay);
if(!tile.block().synthetic() && !in.block.synthetic()){ if(!tile.block().synthetic() && !block.synthetic()){
tile.setBlock(in.block); tile.setBlock(block);
} }
} }
}else{ }else{

View File

@@ -151,8 +151,17 @@ public class BaseGenerator{
//clear path for ground units //clear path for ground units
for(Tile tile : cores){ for(Tile tile : cores){
Astar.pathfind(tile, spawn, t -> t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8) ? 100000 : t.floor().hasSurface() ? 1 : 10, t -> !t.block().isStatic()).each(t -> { Astar.pathfind(tile, spawn, t -> t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8) ? 100000 : t.floor().hasSurface() ? 1 : 10, t -> !t.block().isStatic()).each(t -> {
if(t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8)){ if(!t.within(tile, 25f * 8)){
t.setBlock(Blocks.air); if(t.team() == state.rules.waveTeam){
t.setBlock(Blocks.air);
}
for(Point2 p : Geometry.d8){
Tile other = t.nearby(p);
if(other != null && other.team() == state.rules.waveTeam){
other.setBlock(Blocks.air);
}
}
} }
}); });
} }

View File

@@ -68,7 +68,7 @@ public class ArcNetProvider implements NetProvider{
} }
}); });
server = new Server(8192, 8192, new PacketSerializer()); server = new Server(32768, 8192, new PacketSerializer());
server.setMulticast(multicastGroup, multicastPort); server.setMulticast(multicastGroup, multicastPort);
server.setDiscoveryHandler((address, handler) -> { server.setDiscoveryHandler((address, handler) -> {
ByteBuffer buffer = NetworkIO.writeServerData(); ByteBuffer buffer = NetworkIO.writeServerData();

View File

@@ -109,6 +109,8 @@ public class UnitType extends UnlockableContent{
occlusionRegion, jointRegion, footRegion, legBaseRegion, baseJointRegion, outlineRegion; occlusionRegion, jointRegion, footRegion, legBaseRegion, baseJointRegion, outlineRegion;
public TextureRegion[] wreckRegions; public TextureRegion[] wreckRegions;
protected @Nullable ItemStack[] cachedRequirements;
public UnitType(String name){ public UnitType(String name){
super(name); super(name);
@@ -193,6 +195,10 @@ public class UnitType extends UnlockableContent{
} }
} }
} }
for(ItemStack stack : researchRequirements()){
cons.get(stack.item);
}
} }
@Override @Override
@@ -357,6 +363,10 @@ public class UnitType extends UnlockableContent{
@Override @Override
public ItemStack[] researchRequirements(){ public ItemStack[] researchRequirements(){
if(cachedRequirements != null){
return cachedRequirements;
}
ItemStack[] stacks = null; ItemStack[] stacks = null;
//calculate costs based on reconstructors or factories found //calculate costs based on reconstructors or factories found
@@ -377,6 +387,8 @@ public class UnitType extends UnlockableContent{
out[i] = new ItemStack(stacks[i].item, UI.roundAmount((int)(Math.pow(stacks[i].amount, 1.1) * 50))); out[i] = new ItemStack(stacks[i].item, UI.roundAmount((int)(Math.pow(stacks[i].amount, 1.1) * 50)));
} }
cachedRequirements = out;
return out; return out;
} }

View File

@@ -67,7 +67,7 @@ public class Fonts{
} }
public static int cursorScale(){ public static int cursorScale(){
return Math.max(1, Mathf.round(Scl.scl(1f))); return 1;
} }
public static void loadFonts(){ public static void loadFonts(){

View File

@@ -1,6 +1,7 @@
package mindustry.ui.dialogs; package mindustry.ui.dialogs;
import arc.*; import arc.*;
import arc.Net.*;
import arc.graphics.*; import arc.graphics.*;
import arc.input.*; import arc.input.*;
import arc.math.*; import arc.math.*;
@@ -355,43 +356,45 @@ public class JoinDialog extends BaseDialog{
continue; continue;
} }
Table[] groupTable = {null};
//table containing all groups //table containing all groups
global.table(g -> { for(String address : group.addresses){
for(String address : group.addresses){ String resaddress = address.contains(":") ? address.split(":")[0] : address;
String resaddress = address.contains(":") ? address.split(":")[0] : address; int resport = address.contains(":") ? Strings.parseInt(address.split(":")[1]) : port;
int resport = address.contains(":") ? Strings.parseInt(address.split(":")[1]) : port; net.pingHost(resaddress, resport, res -> {
net.pingHost(resaddress, resport, res -> { if(refreshes != cur) return;
if(refreshes != cur) return; res.port = resport;
res.port = resport;
//add header //add header
if(g.getChildren().isEmpty()){ if(groupTable[0] == null){
g.table(head -> { global.table(t -> groupTable[0] = t).row();
if(!group.name.isEmpty()){
head.add(group.name).color(Color.lightGray).padRight(4);
}
head.image().height(3f).growX().color(Color.lightGray);
//button for showing/hiding servers groupTable[0].table(head -> {
ImageButton[] image = {null}; if(!group.name.isEmpty()){
image[0] = head.button(hidden ? Icon.eyeOffSmall : Icon.eyeSmall, Styles.accenti, () -> { head.add(group.name).color(Color.lightGray).padRight(4);
group.setHidden(!group.hidden()); }
image[0].getStyle().imageUp = group.hidden() ? Icon.eyeOffSmall : Icon.eyeSmall; head.image().height(3f).growX().color(Color.lightGray);
if(group.hidden() && !showHidden){
g.remove();
}
}).size(40f).get();
image[0].addListener(new Tooltip(t -> t.background(Styles.black6).margin(4).label(() -> !group.hidden() ? "@server.shown" : "@server.hidden")));
}).width(targetWidth()).padBottom(-2).row();
}
addGlobalHost(res, g); //button for showing/hiding servers
ImageButton[] image = {null};
image[0] = head.button(hidden ? Icon.eyeOffSmall : Icon.eyeSmall, Styles.accenti, () -> {
group.setHidden(!group.hidden());
image[0].getStyle().imageUp = group.hidden() ? Icon.eyeOffSmall : Icon.eyeSmall;
if(group.hidden() && !showHidden){
groupTable[0].remove();
}
}).size(40f).get();
image[0].addListener(new Tooltip(t -> t.background(Styles.black6).margin(4).label(() -> !group.hidden() ? "@server.shown" : "@server.hidden")));
}).width(targetWidth()).padBottom(-2).row();
}
g.margin(5f); addGlobalHost(res, groupTable[0]);
g.pack();
}, e -> {}); groupTable[0].margin(5f);
} groupTable[0].pack();
}).row(); }, e -> {});
}
} }
} }
@@ -401,7 +404,16 @@ public class JoinDialog extends BaseDialog{
container.button(b -> buildServer(host, b), Styles.cleart, () -> { container.button(b -> buildServer(host, b), Styles.cleart, () -> {
Events.fire(new ClientPreConnectEvent(host)); Events.fire(new ClientPreConnectEvent(host));
safeConnect(host.address, host.port, host.version); if(!Core.settings.getBool("server-disclaimer", false)){
ui.showCustomConfirm("@warning", "@servers.disclaimer", "@ok", "@back", () -> {
Core.settings.put("server-disclaimer", true);
safeConnect(host.address, host.port, host.version);
}, () -> {
Core.settings.put("server-disclaimer", false);
});
}else{
safeConnect(host.address, host.port, host.version);
}
}).width(w).row(); }).width(w).row();
} }
@@ -501,9 +513,16 @@ public class JoinDialog extends BaseDialog{
Core.settings.remove("server-list"); Core.settings.remove("server-list");
} }
var url = becontrol.active() ? serverJsonBeURL : serverJsonV6URL;
Log.info("Fetching community servers at @", url);
//get servers //get servers
Core.net.httpGet(becontrol.active() ? serverJsonBeURL : serverJsonV6URL, result -> { Core.net.httpGet(url, result -> {
try{ try{
if(result.getStatus() != HttpStatus.OK){
Log.warn("Failed to fetch community servers: @", result.getStatus());
return;
}
Jval val = Jval.read(result.getResultAsString()); Jval val = Jval.read(result.getResultAsString());
Core.app.post(() -> { Core.app.post(() -> {
@@ -519,15 +538,17 @@ public class JoinDialog extends BaseDialog{
} }
defaultServers.add(new ServerGroup(name, addresses)); defaultServers.add(new ServerGroup(name, addresses));
}); });
Log.info("Fetched @ global servers.", defaultServers.size); Log.info("Fetched @ community servers.", defaultServers.size);
}catch(Throwable ignored){ }catch(Throwable e){
Log.err("Failed to parse community servers."); Log.err("Failed to parse community servers.");
Log.err(e);
} }
}); });
}catch(Throwable e){ }catch(Throwable e){
Log.err("Failed to fetch community servers."); Log.err("Failed to fetch community servers.");
Log.err(e);
} }
}, t -> {}); }, Log::err);
} }
private void saveServers(){ private void saveServers(){

View File

@@ -6,9 +6,12 @@ import arc.files.*;
import arc.func.*; import arc.func.*;
import arc.graphics.*; import arc.graphics.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
import arc.scene.style.*;
import arc.scene.ui.TextButton.*; import arc.scene.ui.TextButton.*;
import arc.struct.*;
import arc.util.*; import arc.util.*;
import arc.util.io.*; import arc.util.io.*;
import mindustry.ctype.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.mod.Mods.*; import mindustry.mod.Mods.*;
@@ -102,13 +105,9 @@ public class ModsDialog extends BaseDialog{
t.button("@mod.import.github", Icon.github, bstyle, () -> { t.button("@mod.import.github", Icon.github, bstyle, () -> {
dialog.hide(); dialog.hide();
var modString = Core.settings.getString("lastmod", "");
var suggested = Structs.random(suggestedMods);
ui.showTextInput("@mod.import.github", "", 64, modString.isEmpty() ? suggested : modString, text -> { ui.showTextInput("@mod.import.github", "", 64, Core.settings.getString("lastmod", ""), text -> {
if(!modString.isEmpty() || !Structs.eq(suggested, text)){ Core.settings.put("lastmod", text);
Core.settings.put("lastmod", text);
}
ui.loadfrag.show(); ui.loadfrag.show();
//Try to download the 6.0 branch first, but if it doesn't exist, try master. //Try to download the 6.0 branch first, but if it doesn't exist, try master.
@@ -266,54 +265,73 @@ public class ModsDialog extends BaseDialog{
desc.add("@editor.description").padRight(10).color(Color.gray).top(); desc.add("@editor.description").padRight(10).color(Color.gray).top();
desc.row(); desc.row();
desc.add(mod.meta.description).growX().wrap().padTop(2); desc.add(mod.meta.description).growX().wrap().padTop(2);
desc.row();
} }
//TODO add this when mods work properly }).width(400f);
/*
Array<UnlockableContent> all = Array.with(content.getContentMap()).<Content>flatten().select(c -> c.minfo.mod == mod && c instanceof UnlockableContent).as(UnlockableContent.class); //TODO maybe enable later
if(false){
Seq<UnlockableContent> all = Seq.with(content.getContentMap()).<Content>flatten().select(c -> c.minfo.mod == mod && c instanceof UnlockableContent).as();
if(all.any()){ if(all.any()){
desc.add("@mod.content").padRight(10).color(Color.gray).top(); dialog.cont.row();
desc.row(); dialog.cont.pane(cs -> {
desc.pane(cs -> {
int i = 0; int i = 0;
for(UnlockableContent c : all){ for(UnlockableContent c : all){
cs.addImageButton(new TextureRegionDrawable(c.icon(Cicon.medium)), () -> { cs.button(new TextureRegionDrawable(c.icon(Cicon.medium)), Styles.cleari, Cicon.medium.size, () -> {
ui.content.show(c); ui.content.show(c);
}).size(50f).with(im -> {
var click = im.getClickListener();
im.update(() -> im.getImage().color.lerp(!click.isOver() ? Color.lightGray : Color.white, 0.4f * Time.delta));
}); });
if(++i % 8 == 0) cs.row(); if(++i % 8 == 0) cs.row();
} }
}).growX().minHeight(60f); }).growX().minHeight(60f);
}*/ }
}).width(400f); }
dialog.show(); dialog.show();
} }
private void githubImport(String branch, String repo, Cons<HttpStatus> err){ private void handleMod(String repo, HttpResponse result){
Core.net.httpGet("http://api.github.com/repos/" + repo + "/zipball/" + branch, loc -> { try{
Core.net.httpGet(loc.getHeader("Location"), result -> { Fi file = tmpDirectory.child(repo.replace("/", "") + ".zip");
if(result.getStatus() != HttpStatus.OK){ Streams.copy(result.getResultAsStream(), file.write(false));
err.get(result.getStatus()); mods.importMod(file);
}else{ file.delete();
try{ Core.app.post(() -> {
Fi file = tmpDirectory.child(repo.replace("/", "") + ".zip"); try{
Streams.copy(result.getResultAsStream(), file.write(false)); setup();
mods.importMod(file); ui.loadfrag.hide();
file.delete(); }catch(Throwable e){
Core.app.post(() -> { ui.showException(e);
try{
setup();
ui.loadfrag.hide();
}catch(Throwable e){
ui.showException(e);
}
});
}catch(Throwable e){
modError(e);
}
} }
}, t2 -> Core.app.post(() -> modError(t2))); });
}catch(Throwable e){
modError(e);
}
}
private void githubImport(String branch, String repo, Cons<HttpStatus> err){
Core.net.httpGet("https://api.github.com/repos/" + repo + "/zipball/" + branch, loc -> {
if(loc.getStatus() == HttpStatus.OK){
if(loc.getHeader("Location") != null){
Core.net.httpGet(loc.getHeader("Location"), result -> {
if(result.getStatus() != HttpStatus.OK){
err.get(result.getStatus());
}else{
handleMod(repo, result);
}
}, t2 -> Core.app.post(() -> modError(t2)));
}else{
handleMod(repo, loc);
}
}else{
err.get(loc.getStatus());
}
}, t2 -> Core.app.post(() -> modError(t2))); }, t2 -> Core.app.post(() -> modError(t2)));
} }
} }

View File

@@ -15,8 +15,10 @@ import arc.scene.ui.layout.*;
import arc.struct.*; import arc.struct.*;
import arc.util.*; import arc.util.*;
import mindustry.content.*; import mindustry.content.*;
import mindustry.content.TechTree.*;
import mindustry.core.*; import mindustry.core.*;
import mindustry.ctype.*; import mindustry.ctype.*;
import mindustry.game.Objectives.*;
import mindustry.game.SectorInfo.*; import mindustry.game.SectorInfo.*;
import mindustry.game.*; import mindustry.game.*;
import mindustry.gen.*; import mindustry.gen.*;
@@ -144,7 +146,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
//load legacy research //load legacy research
if(Core.settings.has("unlocks") && !Core.settings.has("junction-unlocked")){ if(Core.settings.has("unlocks") && !Core.settings.has("junction-unlocked")){
Core.app.post(() -> { Core.app.post(() -> {
ui.showCustomConfirm("@research", "@research.legacy", "@research.load", "@research.discard", LegacyIO::readResearch, () -> Core.settings.remove("unlocks")); ui.showCustomConfirm("@research", "@research.legacy", "@research.load", "@research.discard", () -> {
LegacyIO.readResearch();
Core.settings.remove("unlocks");
}, () -> Core.settings.remove("unlocks"));
}); });
} }
@@ -249,8 +254,12 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
boolean canSelect(Sector sector){ boolean canSelect(Sector sector){
if(mode == select) return sector.hasBase(); if(mode == select) return sector.hasBase();
if(sector.hasBase()) return true;
//preset sectors can only be selected once unlocked //preset sectors can only be selected once unlocked
if(sector.preset != null) return sector.preset.unlocked() || sector.hasBase(); if(sector.preset != null){
TechNode node = sector.preset.node();
return node == null || node.parent == null || node.parent.content.unlocked();
}
return sector.hasBase() || sector.near().contains(Sector::hasBase); //near an occupied sector return sector.hasBase() || sector.near().contains(Sector::hasBase); //near an occupied sector
} }
@@ -288,7 +297,9 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
Color color = Color color =
sec.hasBase() ? Tmp.c2.set(Team.sharded.color).lerp(Team.crux.color, sec.hasEnemyBase() ? 0.5f : 0f) : sec.hasBase() ? Tmp.c2.set(Team.sharded.color).lerp(Team.crux.color, sec.hasEnemyBase() ? 0.5f : 0f) :
sec.preset != null ? Tmp.c2.set(Team.derelict.color).lerp(Color.white, Mathf.absin(Time.time, 10f, 1f)) : sec.preset != null ?
sec.preset.unlocked() ? Tmp.c2.set(Team.derelict.color).lerp(Color.white, Mathf.absin(Time.time, 10f, 1f)) :
Color.gray :
sec.hasEnemyBase() ? Team.crux.color : sec.hasEnemyBase() ? Team.crux.color :
null; null;
@@ -349,7 +360,12 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
for(Sector sec : planet.sectors){ for(Sector sec : planet.sectors){
if(sec != hovered){ if(sec != hovered){
var preficon = sec.icon(); var preficon = sec.icon();
var icon = (sec.isAttacked() ? Fonts.getLargeIcon("warning") : !sec.hasBase() && sec.preset != null && sec.preset.unlocked() && preficon == null ? Fonts.getLargeIcon("terrain") : preficon); var icon =
sec.isAttacked() ? Fonts.getLargeIcon("warning") :
!sec.hasBase() && sec.preset != null && sec.preset.unlocked() && preficon == null ?
Fonts.getLargeIcon("terrain") :
sec.preset != null && sec.preset.locked() && sec.preset.node() != null && !sec.preset.node().parent.content.locked() ? Fonts.getLargeIcon("lock") :
preficon;
var color = sec.preset != null && !sec.hasBase() ? Team.derelict.color : Team.sharded.color; var color = sec.preset != null && !sec.hasBase() ? Team.derelict.color : Team.sharded.color;
if(icon != null){ if(icon != null){
@@ -490,7 +506,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
hoverLabel.touchable = Touchable.disabled; hoverLabel.touchable = Touchable.disabled;
Vec3 pos = planets.cam.project(Tmp.v31.set(hovered.tile.v).setLength(PlanetRenderer.outlineRad).rotate(Vec3.Y, -planets.planet.getRotation()).add(planets.planet.position)); Vec3 pos = planets.cam.project(Tmp.v31.set(hovered.tile.v).setLength(PlanetRenderer.outlineRad).rotate(Vec3.Y, -planets.planet.getRotation()).add(planets.planet.position));
hoverLabel.setPosition(pos.x, pos.y, Align.center); hoverLabel.setPosition(pos.x, pos.y - Core.scene.marginBottom, Align.center);
hoverLabel.getText().setLength(0); hoverLabel.getText().setLength(0);
if(hovered != null){ if(hovered != null){
@@ -687,7 +703,21 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
stable.image().color(Pal.accent).fillX().height(3f).pad(3f).row(); stable.image().color(Pal.accent).fillX().height(3f).pad(3f).row();
if(!sector.hasBase()){ boolean locked = sector.preset != null && sector.preset.locked() && !sector.hasBase() && sector.preset.node() != null;
if(locked){
stable.table(r -> {
r.add("@complete").colspan(2).left();
r.row();
for(Objective o : sector.preset.node().objectives){
if(o.complete()) continue;
r.add("> " + o.display()).color(Color.lightGray).left();
r.image(o.complete() ? Icon.ok : Icon.cancel, o.complete() ? Color.lightGray : Color.scarlet).padLeft(3);
r.row();
}
}).row();
}else if(!sector.hasBase()){
stable.add(Core.bundle.get("sectors.threat") + " [accent]" + sector.displayThreat()).row(); stable.add(Core.bundle.get("sectors.threat") + " [accent]" + sector.displayThreat()).row();
} }
@@ -727,13 +757,23 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
} }
if((sector.hasBase() && mode == look) || canSelect(sector) || (sector.preset != null && sector.preset.alwaysUnlocked) || debugSelect){ if((sector.hasBase() && mode == look) || canSelect(sector) || (sector.preset != null && sector.preset.alwaysUnlocked) || debugSelect){
stable.button(mode == select ? "@sectors.select" : sector.isBeingPlayed() ? "@sectors.resume" : sector.hasBase() ? "@sectors.go" : "@sectors.launch", Icon.play, () -> { stable.button(
mode == select ? "@sectors.select" :
sector.isBeingPlayed() ? "@sectors.resume" :
sector.hasBase() ? "@sectors.go" :
locked ? "@locked" : "@sectors.launch",
locked ? Icon.lock :Icon.play, () -> {
if(sector.isBeingPlayed()){ if(sector.isBeingPlayed()){
//already at this sector //already at this sector
hide(); hide();
return; return;
} }
if(sector.preset != null && sector.preset.locked() && !sector.hasBase()){
return;
}
boolean shouldHide = true; boolean shouldHide = true;
//save before launch. //save before launch.
@@ -775,7 +815,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
} }
if(shouldHide) hide(); if(shouldHide) hide();
}).growX().height(54f).minWidth(170f).padTop(4); }).growX().height(54f).minWidth(170f).padTop(4).disabled(locked);
} }
stable.pack(); stable.pack();

View File

@@ -172,16 +172,6 @@ public class ResearchDialog extends BaseDialog{
}); });
} }
@Override
public Dialog show(){
if(net.client()){
ui.showInfo("@research.multiplayer");
return this;
}
return super.show();
}
void treeLayout(){ void treeLayout(){
float spacing = 20f; float spacing = 20f;
LayoutNode node = new LayoutNode(root, null); LayoutNode node = new LayoutNode(root, null);
@@ -439,6 +429,14 @@ public class ResearchDialog extends BaseDialog{
void unlock(TechNode node){ void unlock(TechNode node){
node.content.unlock(); node.content.unlock();
//unlock parent nodes in multiplayer.
TechNode parent = node.parent;
while(parent != null){
parent.content.unlock();
parent = parent.parent;
}
checkNodes(root); checkNodes(root);
hoverNode = null; hoverNode = null;
treeLayout(); treeLayout();

View File

@@ -124,7 +124,7 @@ public class ChatFragment extends Table{
Draw.color(shadowColor); Draw.color(shadowColor);
if(shown){ if(shown){
Fill.crect(offsetx, chatfield.y, chatfield.getWidth() + 15f, chatfield.getHeight() - 1); Fill.crect(offsetx, chatfield.y + scene.marginBottom, chatfield.getWidth() + 15f, chatfield.getHeight() - 1);
} }
super.draw(); super.draw();
@@ -137,7 +137,7 @@ public class ChatFragment extends Table{
Draw.color(shadowColor); Draw.color(shadowColor);
Draw.alpha(shadowColor.a * opacity); Draw.alpha(shadowColor.a * opacity);
float theight = offsety + spacing + getMarginBottom(); float theight = offsety + spacing + getMarginBottom() + scene.marginBottom;
for(int i = scrollPos; i < messages.size && i < messagesShown + scrollPos && (i < fadetime || shown); i++){ for(int i = scrollPos; i < messages.size && i < messagesShown + scrollPos && (i < fadetime || shown); i++){
layout.setText(font, messages.get(i).formattedMessage, Color.white, textWidth, Align.bottomLeft, true); layout.setText(font, messages.get(i).formattedMessage, Color.white, textWidth, Align.bottomLeft, true);

View File

@@ -162,6 +162,18 @@ public class HintsFragment extends Fragment{
waveFire(() -> Groups.fire.size() > 0 && Blocks.wave.unlockedNow(), () -> indexer.getAllied(state.rules.defaultTeam, BlockFlag.extinguisher).size() > 0), waveFire(() -> Groups.fire.size() > 0 && Blocks.wave.unlockedNow(), () -> indexer.getAllied(state.rules.defaultTeam, BlockFlag.extinguisher).size() > 0),
generator(() -> control.input.block == Blocks.combustionGenerator, () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator)), generator(() -> control.input.block == Blocks.combustionGenerator, () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator)),
guardian(() -> state.boss() != null && state.boss().armor >= 4, () -> state.boss() == null), guardian(() -> state.boss() != null && state.boss().armor >= 4, () -> state.boss() == null),
coreUpgrade(() -> state.isCampaign() && Blocks.coreFoundation.unlocked()
&& state.rules.defaultTeam.core() != null
&& state.rules.defaultTeam.core().block == Blocks.coreShard
&& state.rules.defaultTeam.core().items.has(Blocks.coreFoundation.requirements),
() -> ui.hints.placedBlocks.contains(Blocks.coreFoundation)),
presetLaunch(() -> state.isCampaign()
&& state.getSector().preset == null
&& SectorPresets.frozenForest.unlocked()
&& SectorPresets.frozenForest.sector.save == null,
() -> state.isCampaign() && state.getSector().preset == SectorPresets.frozenForest),
coreIncinerate(() -> state.isCampaign() && state.rules.defaultTeam.core() != null && state.rules.defaultTeam.core().items.get(Items.copper) >= state.rules.defaultTeam.core().storageCapacity - 10, () -> false),
coopCampaign(() -> net.client() && state.isCampaign() && SectorPresets.groundZero.sector.hasBase(), () -> false),
; ;
@Nullable @Nullable

View File

@@ -1,7 +1,9 @@
package mindustry.ui.fragments; package mindustry.ui.fragments;
import arc.*;
import arc.func.*; import arc.func.*;
import arc.graphics.*; import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.scene.*; import arc.scene.*;
import arc.scene.actions.*; import arc.scene.actions.*;
import arc.scene.event.*; import arc.scene.event.*;
@@ -18,7 +20,12 @@ public class LoadingFragment extends Fragment{
@Override @Override
public void build(Group parent){ public void build(Group parent){
parent.fill(Styles.black8, t -> { parent.fill(t -> {
//rect must fill screen completely.
t.rect((x, y, w, h) -> {
Draw.alpha(t.color.a);
Styles.black8.draw(0, 0, Core.graphics.getWidth(), Core.graphics.getHeight());
});
t.visible = false; t.visible = false;
t.touchable = Touchable.enabled; t.touchable = Touchable.enabled;
t.add().height(133f).row(); t.add().height(133f).row();

View File

@@ -77,12 +77,13 @@ public class MenuFragment extends Fragment{
String versionText = ((Version.build == -1) ? "[#fc8140aa]" : "[#ffffffba]") + Version.combined(); String versionText = ((Version.build == -1) ? "[#fc8140aa]" : "[#ffffffba]") + Version.combined();
parent.fill((x, y, w, h) -> { parent.fill((x, y, w, h) -> {
TextureRegion logo = Core.atlas.find("logo"); TextureRegion logo = Core.atlas.find("logo");
float width = Core.graphics.getWidth(), height = Core.graphics.getHeight() - Core.scene.marginTop;
float logoscl = Scl.scl(1); float logoscl = Scl.scl(1);
float logow = Math.min(logo.width * logoscl, Core.graphics.getWidth() - Scl.scl(20)); float logow = Math.min(logo.width * logoscl, Core.graphics.getWidth() - Scl.scl(20));
float logoh = logow * (float)logo.height / logo.width; float logoh = logow * (float)logo.height / logo.width;
float fx = (int)(Core.graphics.getWidth() / 2f); float fx = (int)(width / 2f);
float fy = (int)(Core.graphics.getHeight() - 6 - logoh) + logoh / 2 - (Core.graphics.isPortrait() ? Scl.scl(30f) : 0f); float fy = (int)(height - 6 - logoh) + logoh / 2 - (Core.graphics.isPortrait() ? Scl.scl(30f) : 0f);
Draw.color(); Draw.color();
Draw.rect(logo, fx, fy, logow, logoh); Draw.rect(logo, fx, fy, logow, logoh);
@@ -230,7 +231,7 @@ public class MenuFragment extends Fragment{
submenu.clearChildren(); submenu.clearChildren();
fadeInMenu(); fadeInMenu();
//correctly offset the button //correctly offset the button
submenu.add().height((Core.graphics.getHeight() - out[0].getY(Align.topLeft)) / Scl.scl(1f)); submenu.add().height((Core.graphics.getHeight() - Core.scene.marginTop - Core.scene.marginBottom - out[0].getY(Align.topLeft)) / Scl.scl(1f));
submenu.row(); submenu.row();
buttons(submenu, b.submenu); buttons(submenu, b.submenu);
}else{ }else{

View File

@@ -28,7 +28,7 @@ public class MinimapFragment extends Fragment{
float size = baseSize * zoom * world.width(); float size = baseSize * zoom * world.width();
Draw.color(Color.black); Draw.color(Color.black);
Fill.crect(x, y, w, h); Fill.crect(0, 0, w, h);
if(renderer.minimap.getTexture() != null){ if(renderer.minimap.getTexture() != null){
Draw.color(); Draw.color();

View File

@@ -112,7 +112,7 @@ public class ScriptConsoleFragment extends Table{
Draw.color(shadowColor); Draw.color(shadowColor);
if(open){ if(open){
Fill.crect(offsetx, chatfield.y, chatfield.getWidth() + 15f, chatfield.getHeight() - 1); Fill.crect(offsetx, chatfield.y + scene.marginBottom, chatfield.getWidth() + 15f, chatfield.getHeight() - 1);
} }
super.draw(); super.draw();
@@ -125,7 +125,7 @@ public class ScriptConsoleFragment extends Table{
Draw.color(shadowColor); Draw.color(shadowColor);
Draw.alpha(shadowColor.a * opacity); Draw.alpha(shadowColor.a * opacity);
float theight = offsety + spacing + getMarginBottom(); float theight = offsety + spacing + getMarginBottom() + scene.marginBottom;
for(int i = scrollPos; i < messages.size && i < messagesShown + scrollPos; i++){ for(int i = scrollPos; i < messages.size && i < messagesShown + scrollPos; i++){
layout.setText(font, messages.get(i), Color.white, textWidth, Align.bottomLeft, true); layout.setText(font, messages.get(i), Color.white, textWidth, Align.bottomLeft, true);

View File

@@ -126,7 +126,7 @@ public class Block extends UnlockableContent{
public BlockGroup group = BlockGroup.none; public BlockGroup group = BlockGroup.none;
/** List of block flags. Used for AI indexing. */ /** List of block flags. Used for AI indexing. */
public EnumSet<BlockFlag> flags = EnumSet.of(); public EnumSet<BlockFlag> flags = EnumSet.of();
/** Targeting priority of this block, as seen by enemies.*/ /** Targeting priority of this block, as seen by enemies .*/
public TargetPriority priority = TargetPriority.base; public TargetPriority priority = TargetPriority.base;
/** How much this block affects the unit cap by. /** How much this block affects the unit cap by.
* The block flags must contain unitModifier in order for this to work. */ * The block flags must contain unitModifier in order for this to work. */
@@ -139,9 +139,9 @@ public class Block extends UnlockableContent{
public boolean consumesTap; public boolean consumesTap;
/** Whether to draw the glow of the liquid for this block, if it has one. */ /** Whether to draw the glow of the liquid for this block, if it has one. */
public boolean drawLiquidLight = true; public boolean drawLiquidLight = true;
/** Whether to periodically sync this block across the network.*/ /** Whether to periodically sync this block across the network. */
public boolean sync; public boolean sync;
/** Whether this block uses conveyor-type placement mode.*/ /** Whether this block uses conveyor-type placement mode. */
public boolean conveyorPlacement; public boolean conveyorPlacement;
/** /**
* The color of this block when displayed on the minimap or map preview. * The color of this block when displayed on the minimap or map preview.
@@ -173,12 +173,12 @@ public class Block extends UnlockableContent{
/** Radius of the light emitted by this block. */ /** Radius of the light emitted by this block. */
public float lightRadius = 60f; public float lightRadius = 60f;
/** The sound that this block makes while active. One sound loop. Do not overuse.*/ /** The sound that this block makes while active. One sound loop. Do not overuse. */
public Sound loopSound = Sounds.none; public Sound loopSound = Sounds.none;
/** Active sound base volume. */ /** Active sound base volume. */
public float loopSoundVolume = 0.5f; public float loopSoundVolume = 0.5f;
/** The sound that this block makes while idle. Uses one sound loop for all blocks.*/ /** The sound that this block makes while idle. Uses one sound loop for all blocks. */
public Sound ambientSound = Sounds.none; public Sound ambientSound = Sounds.none;
/** Idle sound base volume. */ /** Idle sound base volume. */
public float ambientSoundVolume = 0.05f; public float ambientSoundVolume = 0.05f;
@@ -193,6 +193,8 @@ public class Block extends UnlockableContent{
public BuildVisibility buildVisibility = BuildVisibility.hidden; public BuildVisibility buildVisibility = BuildVisibility.hidden;
/** Multiplier for speed of building this block. */ /** Multiplier for speed of building this block. */
public float buildCostMultiplier = 1f; public float buildCostMultiplier = 1f;
/** Build completion at which deconstruction finishes. */
public float deconstructThreshold = 0f;
/** Multiplier for cost of research in tech tree. */ /** Multiplier for cost of research in tech tree. */
public float researchCostMultiplier = 1; public float researchCostMultiplier = 1;
/** Whether this block has instant transfer.*/ /** Whether this block has instant transfer.*/
@@ -634,6 +636,8 @@ public class Block extends UnlockableContent{
//also requires inputs //also requires inputs
consumes.each(c -> { consumes.each(c -> {
if(c.isOptional()) return;
if(c instanceof ConsumeItems i){ if(c instanceof ConsumeItems i){
for(ItemStack stack : i.items){ for(ItemStack stack : i.items){
cons.get(stack.item); cons.get(stack.item);

View File

@@ -37,8 +37,12 @@ public class Build{
Block previous = tile.block(); Block previous = tile.block();
Block sub = ConstructBlock.get(previous.size); Block sub = ConstructBlock.get(previous.size);
Seq<Building> prevBuild = new Seq<>(1);
if(tile.build != null) prevBuild.add(tile.build);
tile.setBlock(sub, team, rotation); tile.setBlock(sub, team, rotation);
tile.<ConstructBuild>bc().setDeconstruct(previous); tile.<ConstructBuild>bc().setDeconstruct(previous);
tile.<ConstructBuild>bc().prevBuild = prevBuild;
tile.build.health = tile.build.maxHealth * prevPercent; tile.build.health = tile.build.maxHealth * prevPercent;
if(unit != null && unit.isPlayer()) tile.build.lastAccessed = unit.getPlayer().name; if(unit != null && unit.isPlayer()) tile.build.lastAccessed = unit.getPlayer().name;

View File

@@ -289,7 +289,7 @@ public class ConstructBlock extends Block{
progress = Mathf.clamp(progress - amount); progress = Mathf.clamp(progress - amount);
if(progress <= 0 || state.rules.infiniteResources){ if(progress <= (previous == null ? 0 : previous.deconstructThreshold) || state.rules.infiniteResources){
if(lastBuilder == null) lastBuilder = builder; if(lastBuilder == null) lastBuilder = builder;
Call.deconstructFinish(tile, this.cblock == null ? previous : this.cblock, lastBuilder); Call.deconstructFinish(tile, this.cblock == null ? previous : this.cblock, lastBuilder);
} }

View File

@@ -255,7 +255,7 @@ public class Conveyor extends Block implements Autotiler{
} }
public boolean pass(Item item){ public boolean pass(Item item){
if(next != null && next.team == team && next.acceptItem(this, item)){ if(item != null && next != null && next.team == team && next.acceptItem(this, item)){
next.handleItem(this, item); next.handleItem(this, item);
return true; return true;
} }

View File

@@ -242,7 +242,7 @@ public class MassDriver extends Block{
@Override @Override
public boolean acceptItem(Building source, Item item){ public boolean acceptItem(Building source, Item item){
//mass drivers that ouput only cannot accept items //mass drivers that output only cannot accept items
return items.total() < itemCapacity && linkValid(); return items.total() < itemCapacity && linkValid();
} }

View File

@@ -23,6 +23,12 @@ public class Router extends Block{
noUpdateDisabled = true; noUpdateDisabled = true;
} }
@Override
public boolean canReplace(Block other){
if(other.alwaysReplace) return true;
return (other != this || rotate) && this.group != BlockGroup.none && other.group == this.group && size >= other.size;
}
public class RouterBuild extends Building implements ControlBlock{ public class RouterBuild extends Building implements ControlBlock{
public Item lastItem; public Item lastItem;
public Tile lastInput; public Tile lastInput;

View File

@@ -12,6 +12,8 @@ public class Boulder extends Block{
super(name); super(name);
breakable = true; breakable = true;
alwaysReplace = true; alwaysReplace = true;
deconstructThreshold = 0.35f;
} }
@Override @Override

View File

@@ -41,7 +41,7 @@ public class BlockForge extends PayloadAcceptor{
public void setBars(){ public void setBars(){
super.setBars(); super.setBars();
bars.add("progress", entity -> new Bar("bar.progress", Pal.ammo, () -> ((BlockForgeBuild)entity).progress)); bars.add("progress", (BlockForgeBuild entity) -> new Bar("bar.progress", Pal.ammo, () -> entity.recipe == null ? 0f : (float)(entity.progress / entity.recipe.buildCost)));
} }
@Override @Override
@@ -83,6 +83,7 @@ public class BlockForge extends PayloadAcceptor{
if(progress >= recipe.buildCost){ if(progress >= recipe.buildCost){
consume(); consume();
payload = new BuildPayload(recipe, team); payload = new BuildPayload(recipe, team);
payVector.setZero();
progress = 0f; progress = 0f;
} }
}else{ }else{

View File

@@ -27,6 +27,8 @@ import java.util.zip.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public class LogicBlock extends Block{ public class LogicBlock extends Block{
private static final int maxByteLen = 1024 * 500;
public int maxInstructionScale = 5; public int maxInstructionScale = 5;
public int instructionsPerTick = 1; public int instructionsPerTick = 1;
public float range = 8 * 10; public float range = 8 * 10;
@@ -137,6 +139,9 @@ public class LogicBlock extends Block{
stream.read(); stream.read();
int bytelen = stream.readInt(); int bytelen = stream.readInt();
if(bytelen > maxByteLen) throw new RuntimeException("Malformed logic data! Length: " + bytelen);
byte[] bytes = new byte[bytelen]; byte[] bytes = new byte[bytelen];
stream.readFully(bytes); stream.readFully(bytes);
@@ -197,6 +202,7 @@ public class LogicBlock extends Block{
int version = stream.read(); int version = stream.read();
int bytelen = stream.readInt(); int bytelen = stream.readInt();
if(bytelen > maxByteLen) throw new RuntimeException("Malformed logic data! Length: " + bytelen);
byte[] bytes = new byte[bytelen]; byte[] bytes = new byte[bytelen];
stream.readFully(bytes); stream.readFully(bytes);
@@ -312,9 +318,10 @@ public class LogicBlock extends Block{
//store any older variables //store any older variables
for(Var var : executor.vars){ for(Var var : executor.vars){
if(!var.constant){ boolean unit = var.name.equals("@unit");
if(!var.constant || unit){
BVar dest = asm.getVar(var.name); BVar dest = asm.getVar(var.name);
if(dest != null && !dest.constant){ if(dest != null && (!dest.constant || unit)){
dest.value = var.isobj ? var.objval : var.numval; dest.value = var.isobj ? var.objval : var.numval;
} }
} }

View File

@@ -6,6 +6,7 @@ import arc.graphics.g2d.*;
import arc.math.*; import arc.math.*;
import arc.math.geom.*; import arc.math.geom.*;
import arc.struct.*; import arc.struct.*;
import arc.util.*;
import mindustry.*; import mindustry.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import mindustry.content.*; import mindustry.content.*;
@@ -246,17 +247,18 @@ public class CoreBlock extends StorageBlock{
} }
state.teams.registerCore(this); state.teams.registerCore(this);
storageCapacity = itemCapacity + proximity().sum(e -> isContainer(e) && owns(e) ? e.block.itemCapacity : 0); storageCapacity = itemCapacity + proximity().sum(e -> owns(e) ? e.block.itemCapacity : 0);
proximity.each(e -> isContainer(e) && owns(e), t -> { proximity.each(e -> owns(e), t -> {
t.items = items; t.items = items;
((StorageBuild)t).linkedCore = this; ((StorageBuild)t).linkedCore = this;
}); });
for(Building other : state.teams.cores(team)){ for(Building other : state.teams.cores(team)){
if(other.tile() == tile) continue; if(other.tile() == tile) continue;
storageCapacity += other.block.itemCapacity + other.proximity().sum(e -> isContainer(e) && owns(other, e) ? e.block.itemCapacity : 0); storageCapacity += other.block.itemCapacity + other.proximity().sum(e -> owns(e) && owns(other, e) ? e.block.itemCapacity : 0);
} }
//Team.sharded.core().items.set(Items.surgeAlloy, 12000)
if(!world.isGenerating()){ if(!world.isGenerating()){
for(Item item : content.items()){ for(Item item : content.items()){
items.set(item, Math.min(items.get(item), storageCapacity)); items.set(item, Math.min(items.get(item), storageCapacity));
@@ -303,24 +305,19 @@ public class CoreBlock extends StorageBlock{
Draw.rect("block-select", t.x + offset * p.x, t.y + offset * p.y, i * 90); Draw.rect("block-select", t.x + offset * p.x, t.y + offset * p.y, i * 90);
} }
}; };
if(proximity.contains(e -> isContainer(e) && e.items == items)){ if(proximity.contains(e -> owns(e) && e.items == items)){
outline.get(this); outline.get(this);
} }
proximity.each(e -> isContainer(e) && e.items == items, outline); proximity.each(e -> owns(e) && e.items == items, outline);
Draw.reset(); Draw.reset();
} }
public boolean isContainer(Building tile){
return tile instanceof StorageBuild && (((StorageBuild)tile).linkedCore == this || ((StorageBuild)tile).linkedCore == null);
}
public boolean owns(Building tile){ public boolean owns(Building tile){
return tile instanceof StorageBuild && (((StorageBuild)tile).linkedCore == this || ((StorageBuild)tile).linkedCore == null); return owns(this, tile);
} }
public boolean owns(Building core, Building tile){ public boolean owns(Building core, Building tile){
return tile instanceof StorageBuild && (((StorageBuild)tile).linkedCore == core || ((StorageBuild)tile).linkedCore == null); return tile instanceof StorageBuild b && (b.linkedCore == core || b.linkedCore == null);
} }
public boolean incinerate(){ public boolean incinerate(){
@@ -340,7 +337,7 @@ public class CoreBlock extends StorageBlock{
int total = proximity.count(e -> e.items != null && e.items == items); int total = proximity.count(e -> e.items != null && e.items == items);
float fract = 1f / total / state.teams.cores(team).size; float fract = 1f / total / state.teams.cores(team).size;
proximity.each(e -> isContainer(e) && e.items == items && owns(e), t -> { proximity.each(e -> owns(e) && e.items == items && owns(e), t -> {
StorageBuild ent = (StorageBuild)t; StorageBuild ent = (StorageBuild)t;
ent.linkedCore = null; ent.linkedCore = null;
ent.items = new ItemModule(); ent.items = new ItemModule();

View File

@@ -91,14 +91,16 @@ public class StorageBlock extends Block{
@Override @Override
public void overwrote(Seq<Building> previous){ public void overwrote(Seq<Building> previous){
for(Building other : previous){ //only add prev items when core is not linked
if(other.items != null){ if(linkedCore == null){
items.add(other.items); for(Building other : previous){
if(other.items != null && other.items != items){
items.add(other.items);
}
} }
}
//ensure item counts are not too high items.each((i, a) -> items.set(i, Math.min(a, itemCapacity)));
items.each((i, a) -> items.set(i, Math.min(a, itemCapacity))); }
} }
@Override @Override

View File

@@ -114,6 +114,13 @@ public class Reconstructor extends UnitBlock{
return capacities[item.id]; return capacities[item.id];
} }
@Override
public void overwrote(Seq<Building> builds){
if(builds.first().block == block){
items.add(builds.first().items);
}
}
@Override @Override
public void draw(){ public void draw(){
Draw.rect(region, x, y); Draw.rect(region, x, y);

View File

@@ -88,23 +88,13 @@
"jre/lib/amd64/libdt_socket.so", "jre/lib/amd64/libdt_socket.so",
"jre/lib/amd64/libsplashscreen.so", "jre/lib/amd64/libsplashscreen.so",
"jre/lib/amd64/libunpack.so", "jre/lib/amd64/libunpack.so",
"jre/lib/amd64/liblcms.so",
"jre/lib/amd64/libnpt.so", "jre/lib/amd64/libnpt.so",
"jre/lib/amd64/libmlib_image.so", "jre/lib/amd64/libmlib_image.so",
"jre/lib/amd64/libjsig.so",
"jre/lib/amd64/libinstrument.so", "jre/lib/amd64/libinstrument.so",
"jre/lib/amd64/libjaas_unix.so",
"jre/lib/amd64/libj2pcsc.so",
"jre/lib/amd64/libsaproc.so",
"jre/lib/amd64/libsunec.so",
"jre/lib/amd64/libj2pkcs11.so",
"jre/lib/amd64/libjsdt.so",
"jre/lib/amd64/libjdwp.so",
"jre/lib/amd64/libjava_crw_demo.so", "jre/lib/amd64/libjava_crw_demo.so",
"jre/lib/amd64/libfreetype.so", "jre/lib/amd64/libfreetype.so",
"jre/lib/amd64/libmanagement.so", "jre/lib/amd64/libmanagement.so",
"jre/lib/amd64/libsctp.so", "jre/lib/amd64/libsctp.so",
"jre/lib/amd64/libj2gss.so",
"jre/lib/amd64/libjpeg.so", "jre/lib/amd64/libjpeg.so",
"jre/lib/amd64/libfreetype.so.6", "jre/lib/amd64/libfreetype.so.6",
"jre/lib/amd64/libjsoundalsa.so", "jre/lib/amd64/libjsoundalsa.so",

View File

@@ -36,7 +36,7 @@ public class DesktopLauncher extends ClientLauncher{
new SdlApplication(new DesktopLauncher(arg), new SdlConfig(){{ new SdlApplication(new DesktopLauncher(arg), new SdlConfig(){{
title = "Mindustry"; title = "Mindustry";
maximized = true; maximized = true;
stencil = 8; stencil = 1;
width = 900; width = 900;
height = 700; height = 700;
setWindowIcon(FileType.internal, "icons/icon_64.png"); setWindowIcon(FileType.internal, "icons/icon_64.png");

View File

@@ -31,8 +31,8 @@ public class SNet implements SteamNetworkingCallback, SteamMatchmakingCallback,
final NetProvider provider; final NetProvider provider;
final PacketSerializer serializer = new PacketSerializer(); final PacketSerializer serializer = new PacketSerializer();
final ByteBuffer writeBuffer = ByteBuffer.allocateDirect(1024 * 4); final ByteBuffer writeBuffer = ByteBuffer.allocateDirect(16384);
final ByteBuffer readBuffer = ByteBuffer.allocateDirect(1024 * 4); final ByteBuffer readBuffer = ByteBuffer.allocateDirect(16384);
final CopyOnWriteArrayList<SteamConnection> connections = new CopyOnWriteArrayList<>(); final CopyOnWriteArrayList<SteamConnection> connections = new CopyOnWriteArrayList<>();
final IntMap<SteamConnection> steamConnections = new IntMap<>(); //maps steam ID -> valid net connection final IntMap<SteamConnection> steamConnections = new IntMap<>(); //maps steam ID -> valid net connection
@@ -131,9 +131,10 @@ public class SNet implements SteamNetworkingCallback, SteamMatchmakingCallback,
writeBuffer.limit(writeBuffer.capacity()); writeBuffer.limit(writeBuffer.capacity());
writeBuffer.position(0); writeBuffer.position(0);
serializer.write(writeBuffer, object); serializer.write(writeBuffer, object);
int length = writeBuffer.position();
writeBuffer.flip(); writeBuffer.flip();
snet.sendP2PPacket(currentServer, writeBuffer, mode == SendMode.tcp ? P2PSend.Reliable : P2PSend.UnreliableNoDelay, 0); snet.sendP2PPacket(currentServer, writeBuffer, mode == SendMode.tcp || length >= 1200 ? P2PSend.Reliable : P2PSend.UnreliableNoDelay, 0);
}catch(Exception e){ }catch(Exception e){
net.showError(e); net.showError(e);
} }

View File

@@ -1,6 +1,7 @@
package mindustry.desktop.steam; package mindustry.desktop.steam;
import arc.*; import arc.*;
import arc.math.*;
import arc.struct.*; import arc.struct.*;
import arc.util.*; import arc.util.*;
import com.codedisaster.steamworks.*; import com.codedisaster.steamworks.*;
@@ -99,13 +100,13 @@ public class SStats implements SteamUserStatsCallback{
for(Sector sec : planet.sectors){ for(Sector sec : planet.sectors){
if(sec.hasBase()){ if(sec.hasBase()){
for(var v : sec.info.production.values()){ for(var v : sec.info.production.values()){
total += v.mean; if(v.mean > 0) total += v.mean * 60;
} }
} }
} }
} }
SStat.maxProduction.max((int)total); SStat.maxProduction.max(Mathf.round(total));
}); });
Events.run(Trigger.newGame, () -> Core.app.post(() -> { Events.run(Trigger.newGame, () -> Core.app.post(() -> {

View File

@@ -0,0 +1,23 @@
[This is a truncated changelog, see Github for full notes]
After more than 9 months of development, 6.0 is finally here. There have been far too many changes to reasonably list here, so I'll go over the highlights.
Units:
- The unit system has been completely reworked
- All unit sprites have been re-drawn and cleaned up
- Many new unit types have been added
- Player-specific pads and unit-specific factories have been removed
Campaign:
Maps:

View File

@@ -0,0 +1,23 @@
[This is a truncated changelog, see Github for full notes]
After more than 9 months of development, 6.0 is finally here. There have been far too many changes to reasonably list here, so I'll go over the highlights.
Units:
- The unit system has been completely reworked
- All unit sprites have been re-drawn and cleaned up
- Many new unit types have been added
- Player-specific pads and unit-specific factories have been removed
Campaign:
Maps:

View File

@@ -0,0 +1,5 @@
[This is a truncated changelog, see Github for full notes]
- Fixed two rare crashes
- Made units depend on their production materials in tech tree
- Made conveyors replaceable by distributors
- Translation updates

View File

@@ -0,0 +1,5 @@
[This is a truncated changelog, see Github for full notes]
Yeah, it's another hotfix. I missed these during earlier testing.
- Fixed research deadlock caused by blocks requiring optional inputs as research
- Possible fix for "Unsupported combination of formats" startup error

View File

@@ -0,0 +1,8 @@
[This is a truncated changelog, see Github for full notes]
- Added disclaimer for community servers
- Added hints concerning core upgrades and numbered sectors
- Decreased spore storm opacity
- Made items stay inside reconstructors when rebuilding (Contributed by @Quezler)
- Made early game procedural sectors slightly easier
- Fixed some blocks having duplicate research dependencies
- Fixed legacy research not being cleared after first import

View File

@@ -0,0 +1,6 @@
[This is a truncated changelog, see Github for full notes]
- Leaving sectors while guardians are present is now heavily penalized
- Made community servers sort by ping
- Changed "global items" to "total items"
- Added hint about core item incineration
- Made sector landing zones display on map when visible but not unlocked

View File

@@ -0,0 +1,6 @@
[This is a truncated changelog, see Github for full notes]
- Leaving sectors while guardians are present is now heavily penalized
- Made community servers sort by ping
- Changed "global items" to "total items"
- Added hint about core item incineration
- Made sector landing zones display on map when visible but not unlocked

View File

@@ -0,0 +1,6 @@
[This is a truncated changelog, see Github for full notes]
- Leaving sectors while guardians are present is now heavily penalized
- Made community servers sort by ping
- Changed "global items" to "total items"
- Added hint about core item incineration
- Made sector landing zones display on map when visible but not unlocked

View File

@@ -0,0 +1,6 @@
[This is a truncated changelog, see Github for full notes]
- Leaving sectors while guardians are present is now heavily penalized
- Made community servers sort by ping
- Changed "global items" to "total items"
- Added hint about core item incineration
- Made sector landing zones display on map when visible but not unlocked

View File

@@ -0,0 +1,6 @@
[This is a truncated changelog, see Github for full notes]
- Leaving sectors while guardians are present is now heavily penalized
- Made community servers sort by ping
- Changed "global items" to "total items"
- Added hint about core item incineration
- Made sector landing zones display on map when visible but not unlocked

View File

@@ -0,0 +1,6 @@
[This is a truncated changelog, see Github for full notes]
- Leaving sectors while guardians are present is now heavily penalized
- Made community servers sort by ping
- Changed "global items" to "total items"
- Added hint about core item incineration
- Made sector landing zones display on map when visible but not unlocked

View File

@@ -0,0 +1,6 @@
[This is a truncated changelog, see Github for full notes]
- Leaving sectors while guardians are present is now heavily penalized
- Made community servers sort by ping
- Changed "global items" to "total items"
- Added hint about core item incineration
- Made sector landing zones display on map when visible but not unlocked

View File

@@ -0,0 +1,9 @@
[This is a truncated changelog, see Github for full notes]
- Fixed certain sectors having infinite waves in very specific situations
- Fixed various crashes
- Fixed community servers not displaying on Linux
- Fixed some logic UI bugs
- Fixed Distort filter not working in map post-generation
- Fixed clients in multiplayer not getting item unlocks
- Fixed enemy AI blocking ground unit paths in some circumstances
- Made night in campaign slightly less dark

View File

@@ -56,21 +56,21 @@
"NEW_ACHIEVEMENT_21_3_NAME" "Swarm" "NEW_ACHIEVEMENT_21_3_NAME" "Swarm"
"NEW_ACHIEVEMENT_21_3_DESC" "Have 100 units active at once." "NEW_ACHIEVEMENT_21_3_DESC" "Have 100 units active at once."
"NEW_ACHIEVEMENT_21_4_NAME" "Flock" "NEW_ACHIEVEMENT_21_4_NAME" "Flock"
"NEW_ACHIEVEMENT_21_4_DESC" "Have 10 Phantom Poly drones active at once." "NEW_ACHIEVEMENT_21_4_DESC" "Have 10 Poly drones active at once."
"NEW_ACHIEVEMENT_21_5_NAME" "Roboticist" "NEW_ACHIEVEMENT_21_5_NAME" "Roboticist"
"NEW_ACHIEVEMENT_21_5_DESC" "Build every type of unit." "NEW_ACHIEVEMENT_21_5_DESC" "Build every type of unit."
"NEW_ACHIEVEMENT_21_6_NAME" "Legions" "NEW_ACHIEVEMENT_21_6_NAME" "Legions"
"NEW_ACHIEVEMENT_21_6_DESC" "Build 1000 units total." "NEW_ACHIEVEMENT_21_6_DESC" "Build 1000 units total."
"NEW_ACHIEVEMENT_21_9_NAME" "You Should've Listened" "NEW_ACHIEVEMENT_21_9_NAME" "You Should've Listened"
"NEW_ACHIEVEMENT_21_9_DESC" "Die in the drop point exclusion zone." "NEW_ACHIEVEMENT_21_9_DESC" "Die in the drop point exclusion zone."
"NEW_ACHIEVEMENT_21_10_NAME" "There are naval units for that." "NEW_ACHIEVEMENT_21_10_NAME" "There Are Naval Units For That"
"NEW_ACHIEVEMENT_21_10_DESC" "Drown." "NEW_ACHIEVEMENT_21_10_DESC" "Drown."
"NEW_ACHIEVEMENT_21_11_NAME" "Collector" "NEW_ACHIEVEMENT_21_11_NAME" "Collector"
"NEW_ACHIEVEMENT_21_11_DESC" "Fill the core to maximum capacity with every type of material." "NEW_ACHIEVEMENT_21_11_DESC" "Fill the core to maximum capacity with every type of material."
"NEW_ACHIEVEMENT_21_12_NAME" "Crowd" "NEW_ACHIEVEMENT_21_12_NAME" "Crowd"
"NEW_ACHIEVEMENT_21_12_DESC" "Host a server with 10 players on it." "NEW_ACHIEVEMENT_21_12_DESC" "Host a server with 10 players on it."
"NEW_ACHIEVEMENT_21_13_NAME" "Invulnerable" "NEW_ACHIEVEMENT_21_13_NAME" "Invulnerable"
"NEW_ACHIEVEMENT_21_13_DESC" "Build the Meltdown and, Spectre and Foreshadow.." "NEW_ACHIEVEMENT_21_13_DESC" "Build the Meltdown, Spectre and Foreshadow."
"NEW_ACHIEVEMENT_21_14_NAME" "Liftoff" "NEW_ACHIEVEMENT_21_14_NAME" "Liftoff"
"NEW_ACHIEVEMENT_21_14_DESC" "Use the Launch Pad." "NEW_ACHIEVEMENT_21_14_DESC" "Use the Launch Pad."
"NEW_ACHIEVEMENT_21_16_NAME" "Heresy" "NEW_ACHIEVEMENT_21_16_NAME" "Heresy"
@@ -90,7 +90,7 @@
"NEW_ACHIEVEMENT_21_23_NAME" "Ignition" "NEW_ACHIEVEMENT_21_23_NAME" "Ignition"
"NEW_ACHIEVEMENT_21_23_DESC" "Power up an Impact Reactor." "NEW_ACHIEVEMENT_21_23_DESC" "Power up an Impact Reactor."
"NEW_ACHIEVEMENT_21_24_NAME" "Acceleration" "NEW_ACHIEVEMENT_21_24_NAME" "Acceleration"
"NEW_ACHIEVEMENT_21_24_DESC" "Activate the Interplanteary Accelerator." "NEW_ACHIEVEMENT_21_24_DESC" "Activate the Interplanetary Accelerator."
"NEW_ACHIEVEMENT_21_25_NAME" "The Spiral" "NEW_ACHIEVEMENT_21_25_NAME" "The Spiral"
"NEW_ACHIEVEMENT_21_25_DESC" "Round and round it goes..." "NEW_ACHIEVEMENT_21_25_DESC" "Round and round it goes..."
"NEW_ACHIEVEMENT_21_26_NAME" "Escalation" "NEW_ACHIEVEMENT_21_26_NAME" "Escalation"

View File

@@ -43,10 +43,10 @@
[list] [list]
[*] 16 built in maps for custom games, in addition to campaign [*] 16 built in maps for custom games, in addition to campaign
[*] Play Co-op, PvP or sandbox [*] Play co-op, PvP or sandbox
[*] Join a public dedicated server, or invite friends to your own private session [*] Join a public dedicated server, or invite friends to your own private session
[*] Customizable game rules: Change block costs, enemy stats, starting items, wave timing and more [*] Customizable game rules: Change block costs, enemy stats, starting items, wave timing and more
[*] Mix&match gamemodes: Combine PvP and PvE gamemodes together [*] Mix & match gamemodes: Combine PvP and PvE gamemodes together
[/list] [/list]
[h2]Custom Map Editor[/h2] [h2]Custom Map Editor[/h2]

View File

@@ -3,16 +3,12 @@
"Language" "ukrainian" "Language" "ukrainian"
"Tokens" "Tokens"
{ {
"NEW_ACHIEVEMENT_20_0_NAME" "Перевірений"
"NEW_ACHIEVEMENT_20_0_DESC" "Завершіть навчання."
"NEW_ACHIEVEMENT_20_1_NAME" "Забіяка" "NEW_ACHIEVEMENT_20_1_NAME" "Забіяка"
"NEW_ACHIEVEMENT_20_1_DESC" "Знищте 1 000 ворожих одиниць." "NEW_ACHIEVEMENT_20_1_DESC" "Знищте 1000 ворожих одиниць."
"NEW_ACHIEVEMENT_20_2_NAME" "Чистка" "NEW_ACHIEVEMENT_20_2_NAME" "Чистка"
"NEW_ACHIEVEMENT_20_2_DESC" "Знищте 100 000 ворожих одиниць." "NEW_ACHIEVEMENT_20_2_DESC" "Знищте 100 000 ворожих одиниць."
"NEW_ACHIEVEMENT_20_3_NAME" "Атмосферне перевезення"
"NEW_ACHIEVEMENT_20_3_DESC" "Запустіть 10 000 предметів загалом."
"NEW_ACHIEVEMENT_20_5_NAME" "Нескінченне постачання" "NEW_ACHIEVEMENT_20_5_NAME" "Нескінченне постачання"
"NEW_ACHIEVEMENT_20_5_DESC" "Запустіть 1 000 000 предметів загалом." "NEW_ACHIEVEMENT_20_5_DESC" "Запустіть 100 000 предметів загалом."
"NEW_ACHIEVEMENT_20_6_NAME" "Завойовник" "NEW_ACHIEVEMENT_20_6_NAME" "Завойовник"
"NEW_ACHIEVEMENT_20_6_DESC" "Виграйте 10 матчів у режимі атаки." "NEW_ACHIEVEMENT_20_6_DESC" "Виграйте 10 матчів у режимі атаки."
"NEW_ACHIEVEMENT_20_7_NAME" "Чемпіон" "NEW_ACHIEVEMENT_20_7_NAME" "Чемпіон"
@@ -23,18 +19,14 @@
"NEW_ACHIEVEMENT_20_9_DESC" "Запустіть своє ядро в зону 30 разів." "NEW_ACHIEVEMENT_20_9_DESC" "Запустіть своє ядро в зону 30 разів."
"NEW_ACHIEVEMENT_20_10_NAME" "Наполегливий" "NEW_ACHIEVEMENT_20_10_NAME" "Наполегливий"
"NEW_ACHIEVEMENT_20_10_DESC" "Протримайтесь 100 хвиль." "NEW_ACHIEVEMENT_20_10_DESC" "Протримайтесь 100 хвиль."
"NEW_ACHIEVEMENT_20_11_NAME" "Неперевершений"
"NEW_ACHIEVEMENT_20_11_DESC" "Протримайтесь 500 хвиль."
"NEW_ACHIEVEMENT_20_12_NAME" "Дослідник" "NEW_ACHIEVEMENT_20_12_NAME" "Дослідник"
"NEW_ACHIEVEMENT_20_12_DESC" "Дослідіть все." "NEW_ACHIEVEMENT_20_12_DESC" "Дослідіть все."
"NEW_ACHIEVEMENT_20_13_NAME" "Перевертень"
"NEW_ACHIEVEMENT_20_13_DESC" "Розблокуйте та перетворіться на кожного меха у грі."
"NEW_ACHIEVEMENT_20_14_NAME" "Перевантаження" "NEW_ACHIEVEMENT_20_14_NAME" "Перевантаження"
"NEW_ACHIEVEMENT_20_14_DESC" "Нанесіть шкоду мокрому ворогу електрикою." "NEW_ACHIEVEMENT_20_14_DESC" "Нанесіть шкоду мокрому ворогу електрикою."
"NEW_ACHIEVEMENT_20_15_NAME" "Рикошет" "NEW_ACHIEVEMENT_20_15_NAME" "Рикошет"
"NEW_ACHIEVEMENT_20_15_DESC" "Знищте ворога його же власною відбитою кулею." "NEW_ACHIEVEMENT_20_15_DESC" "Знищте ворога його же відбитою кулею."
"NEW_ACHIEVEMENT_20_17_NAME" "ВЕЛИЧЕЗНА ПОМИЛКА" "NEW_ACHIEVEMENT_20_17_NAME" "ВЕЛИЧЕЗНА ПОМИЛКА"
"NEW_ACHIEVEMENT_20_17_DESC" "Дослідіть маршрутизатора." "NEW_ACHIEVEMENT_20_17_DESC" "Дослідіть маршрутизатор."
"NEW_ACHIEVEMENT_20_18_NAME" "Створення" "NEW_ACHIEVEMENT_20_18_NAME" "Створення"
"NEW_ACHIEVEMENT_20_18_DESC" "Побудуйте 10 000 блоків." "NEW_ACHIEVEMENT_20_18_DESC" "Побудуйте 10 000 блоків."
"NEW_ACHIEVEMENT_20_19_NAME" "Зрівняти з землею" "NEW_ACHIEVEMENT_20_19_NAME" "Зрівняти з землею"
@@ -51,8 +43,6 @@
"NEW_ACHIEVEMENT_20_24_DESC" "Здолайте боса." "NEW_ACHIEVEMENT_20_24_DESC" "Здолайте боса."
"NEW_ACHIEVEMENT_20_25_NAME" "Дослідник" "NEW_ACHIEVEMENT_20_25_NAME" "Дослідник"
"NEW_ACHIEVEMENT_20_25_DESC" "Розблокуйте всі зони в кампанії." "NEW_ACHIEVEMENT_20_25_DESC" "Розблокуйте всі зони в кампанії."
"NEW_ACHIEVEMENT_20_26_NAME" "Завершувач"
"NEW_ACHIEVEMENT_20_26_DESC" "Досягніть необхідної хвилі для розблокування конфігурації у всіх зонах."
"NEW_ACHIEVEMENT_20_29_NAME" "Матеріал II" "NEW_ACHIEVEMENT_20_29_NAME" "Матеріал II"
"NEW_ACHIEVEMENT_20_29_DESC" "Розблокуйте торій." "NEW_ACHIEVEMENT_20_29_DESC" "Розблокуйте торій."
"NEW_ACHIEVEMENT_20_31_NAME" "Матеріал I" "NEW_ACHIEVEMENT_20_31_NAME" "Матеріал I"
@@ -60,41 +50,35 @@
"NEW_ACHIEVEMENT_21_0_NAME" "Камікадзе" "NEW_ACHIEVEMENT_21_0_NAME" "Камікадзе"
"NEW_ACHIEVEMENT_21_0_DESC" "Заповніть свого меха вибуховими матеріалами й помріть, створивши вибух." "NEW_ACHIEVEMENT_21_0_DESC" "Заповніть свого меха вибуховими матеріалами й помріть, створивши вибух."
"NEW_ACHIEVEMENT_21_1_NAME" "Це починається" "NEW_ACHIEVEMENT_21_1_NAME" "Це починається"
"NEW_ACHIEVEMENT_21_1_DESC" "Побудуйте завод мехів «Кинджал»." "NEW_ACHIEVEMENT_21_1_DESC" "Побудуйте наземний завод."
"NEW_ACHIEVEMENT_21_2_NAME" "Прямий наступ" "NEW_ACHIEVEMENT_21_2_NAME" "Прямий наступ"
"NEW_ACHIEVEMENT_21_2_DESC" "Видайте команду «Атакувати» за допомогою командного центру." "NEW_ACHIEVEMENT_21_2_DESC" "Видайте команду «Атакувати» за допомогою командного центру."
"NEW_ACHIEVEMENT_21_3_NAME" "Рій" "NEW_ACHIEVEMENT_21_3_NAME" "Рій"
"NEW_ACHIEVEMENT_21_3_DESC" "100 бойових одиниць повинні бути активними одночасно." "NEW_ACHIEVEMENT_21_3_DESC" "100 бойових одиниць повинні бути активними одночасно."
"NEW_ACHIEVEMENT_21_4_NAME" "Зграя" "NEW_ACHIEVEMENT_21_4_NAME" "Зграя"
"NEW_ACHIEVEMENT_21_4_DESC" "10 фантомних дронів повинні бути активними одночасно." "NEW_ACHIEVEMENT_21_4_DESC" "10 Полі повинні літати одночасно."
"NEW_ACHIEVEMENT_21_5_NAME" "Летуча армія" "NEW_ACHIEVEMENT_21_5_NAME" "Робототехнік"
"NEW_ACHIEVEMENT_21_5_DESC" "50 Камікадзе повинні бути активними одночасно." "NEW_ACHIEVEMENT_21_5_DESC" "Створіть усі типи одиниць."
"NEW_ACHIEVEMENT_21_6_NAME" "Легіони" "NEW_ACHIEVEMENT_21_6_NAME" "Легіони"
"NEW_ACHIEVEMENT_21_6_DESC" "Побудуйте 1000 одиниць загалом." "NEW_ACHIEVEMENT_21_6_DESC" "Побудуйте 1000 одиниць загалом."
"NEW_ACHIEVEMENT_21_7_NAME" "Супер"
"NEW_ACHIEVEMENT_21_7_DESC" "Досягніть рангу S на будь-якій зоні."
"NEW_ACHIEVEMENT_21_8_NAME" "А ти молодець"
"NEW_ACHIEVEMENT_21_8_DESC" "Досягніть рангу SS на будь-якій зоні."
"NEW_ACHIEVEMENT_21_9_NAME" "Ти не послухався" "NEW_ACHIEVEMENT_21_9_NAME" "Ти не послухався"
"NEW_ACHIEVEMENT_21_9_DESC" "Помріть у зоні анігіляції." "NEW_ACHIEVEMENT_21_9_DESC" "Помріть у зоні висадки ворогів."
"NEW_ACHIEVEMENT_21_10_NAME" "Просто натисни Shift" "NEW_ACHIEVEMENT_21_10_NAME" "Для цього є флот"
"NEW_ACHIEVEMENT_21_10_DESC" "Потоніть, якось." "NEW_ACHIEVEMENT_21_10_DESC" "Потоніть."
"NEW_ACHIEVEMENT_21_11_NAME" "Збирач" "NEW_ACHIEVEMENT_21_11_NAME" "Збирач"
"NEW_ACHIEVEMENT_21_11_DESC" "Наповніть ядро повністю кожним типом матеріалу." "NEW_ACHIEVEMENT_21_11_DESC" "Заповніть ядро повністю кожним типом матеріалу."
"NEW_ACHIEVEMENT_21_12_NAME" "Натовп" "NEW_ACHIEVEMENT_21_12_NAME" "Натовп"
"NEW_ACHIEVEMENT_21_12_DESC" "Створіть сервер, на якому буде 10 гравців одночасно." "NEW_ACHIEVEMENT_21_12_DESC" "Створіть сервер, на якому гратимуть десять гравців одночасно."
"NEW_ACHIEVEMENT_21_13_NAME" "Невразливий" "NEW_ACHIEVEMENT_21_13_NAME" "Невразливий"
"NEW_ACHIEVEMENT_21_13_DESC" "Побудуйте Катастрофу і Випалювач." "NEW_ACHIEVEMENT_21_13_DESC" "Побудуйте Катастрофу, Випалювач і Передвісник."
"NEW_ACHIEVEMENT_21_14_NAME" "Зліт" "NEW_ACHIEVEMENT_21_14_NAME" "Зліт"
"NEW_ACHIEVEMENT_21_14_DESC" "Запустіть." "NEW_ACHIEVEMENT_21_14_DESC" "Використайте Пусковий майданчик."
"NEW_ACHIEVEMENT_21_15_NAME" "Компенсація" "NEW_ACHIEVEMENT_21_16_NAME" "Поганство"
"NEW_ACHIEVEMENT_21_15_DESC" "Двічі пропустіть запуск і допустіть знищення ядра ворогом."
"NEW_ACHIEVEMENT_21_16_NAME" "Єресь"
"NEW_ACHIEVEMENT_21_16_DESC" "Побудуйте два маршрутизатори поруч." "NEW_ACHIEVEMENT_21_16_DESC" "Побудуйте два маршрутизатори поруч."
"NEW_ACHIEVEMENT_21_17_NAME" "Одинокий захисник" "NEW_ACHIEVEMENT_21_17_NAME" "Одинокий захисник"
"NEW_ACHIEVEMENT_21_17_DESC" "Протримайтесь 10 хвиль в першій-ліпшій зоні без будування будування будь-яких блоків." "NEW_ACHIEVEMENT_21_17_DESC" "Протримайтесь 10 хвиль в першій-ліпшій зоні без будування будь-яких блоків."
"NEW_ACHIEVEMENT_21_18_NAME" "Спалити" "NEW_ACHIEVEMENT_21_18_NAME" "Спалити і викорінити"
"NEW_ACHIEVEMENT_21_18_DESC" "Використайте піротит в будь-якій башті." "NEW_ACHIEVEMENT_21_18_DESC" "Використайте пиротит у будь-якій башті."
"NEW_ACHIEVEMENT_21_19_NAME" "Ефективність" "NEW_ACHIEVEMENT_21_19_NAME" "Ефективність"
"NEW_ACHIEVEMENT_21_19_DESC" "Охолодіть башту водою чи кріогенною рідиною." "NEW_ACHIEVEMENT_21_19_DESC" "Охолодіть башту водою чи кріогенною рідиною."
"NEW_ACHIEVEMENT_21_20_NAME" "Класичний режим" "NEW_ACHIEVEMENT_21_20_NAME" "Класичний режим"
@@ -104,6 +88,28 @@
"NEW_ACHIEVEMENT_21_22_NAME" "Упевнений початок" "NEW_ACHIEVEMENT_21_22_NAME" "Упевнений початок"
"NEW_ACHIEVEMENT_21_22_DESC" "Вивантажіть в зону 10 000 або більше предметів." "NEW_ACHIEVEMENT_21_22_DESC" "Вивантажіть в зону 10 000 або більше предметів."
"NEW_ACHIEVEMENT_21_23_NAME" "Запалювання" "NEW_ACHIEVEMENT_21_23_NAME" "Запалювання"
"NEW_ACHIEVEMENT_21_23_DESC" "Підвищте потужність імпульсного реактора." "NEW_ACHIEVEMENT_21_23_DESC" "Запустіть імпульсний реактор."
"NEW_ACHIEVEMENT_21_24_NAME" "Прискорення"
"NEW_ACHIEVEMENT_21_24_DESC" "Активуйте Міжпланетний прискорювач."
"NEW_ACHIEVEMENT_21_25_NAME" "Спираль"
"NEW_ACHIEVEMENT_21_25_DESC" "Закручується і закручується…"
"NEW_ACHIEVEMENT_21_26_NAME" "Посилення"
"NEW_ACHIEVEMENT_21_26_DESC" "Побудуйте одиницю пʼятого рівня."
"NEW_ACHIEVEMENT_21_27_NAME" "Архітектор"
"NEW_ACHIEVEMENT_21_27_DESC" "Створіть 20 схем."
"NEW_ACHIEVEMENT_21_28_NAME" "Глобальне панування"
"NEW_ACHIEVEMENT_21_28_DESC" "Захопіть кожний сектор на Серпуло."
"NEW_ACHIEVEMENT_21_29_NAME" "Ерліфт"
"NEW_ACHIEVEMENT_21_29_DESC" "Завантажте одиницю пʼятого рівня в Окта."
"NEW_ACHIEVEMENT_21_30_NAME" "Кінцева форма"
"NEW_ACHIEVEMENT_21_30_DESC" "Долучіться до них."
"NEW_ACHIEVEMENT_21_31_NAME" "Виробництво I"
"NEW_ACHIEVEMENT_21_31_DESC" "Досягніть загального виробництва у 5000 предметів за хв. в кампанії."
"NEW_ACHIEVEMENT_26_0_NAME" "Виробництво II"
"NEW_ACHIEVEMENT_26_0_DESC" "Досягніть загального виробництва у 50 000 предметів за хв. в кампанії."
"NEW_ACHIEVEMENT_26_1_NAME" "Гарантована перемога"
"NEW_ACHIEVEMENT_26_1_DESC" "Захопіть сектор, поки граєте на іншому."
"NEW_ACHIEVEMENT_26_2_NAME" "Мала імперія"
"NEW_ACHIEVEMENT_26_2_DESC" "Контролюйте 10 секторів одночасно."
} }
} }

View File

@@ -1,44 +1,50 @@
Створюйте складні системи логістики для перенесення боєприпасів у башти, видобувайте ресурси для будівництва, і захищайте своє ядро від різних хвиль ворогів. Грайте з друзями на різних платформах у кооперативні ігри, або киньте їм виклик у командних PvP-матчах.
[img]{STEAM_APP_IMAGE}/extras/ezgif-4-0e70c282f775.gif[/img] [img]{STEAM_APP_IMAGE}/extras/ezgif-4-0e70c282f775.gif[/img]
[h2]Ігровий процес[/h2] [h2]Ігровий процес[/h2]
[list] [list]
[*] Створіть бури і конвеєри для переміщення ресурсів в ядро. [*] Створюйте складні системи логістики для перенесення боєприпасів у башти і видобувайте ресурси для будівництва.
[*] Використовуйте виробничі блоки для створення передових матеріалів. [*] Використовуйте виробничі блоки для створення численних передових матеріалів.
[*] Створюйте дронів для автоматичного видобутку ресурсів, допомоги в будівництві. [*] Захищайте своє ядро від різних ворожих хвиль.
[*] Доставляйте рідини й боріться з осередками вогню. [*] Грайте з друзями на різних платформах у кооперативні ігри, або киньте їм виклик у командних PvP-матчах.
[*] Доставляйте рідини й боріться з постійними проблемами, такими як спалахи вогню або рейди ворожих літаків.
[*] Збільшуйте виробництво, постачаючи необов’язкові теплоносії та мастила до ваших оборонно-виробничих блоків. [*] Збільшуйте виробництво, постачаючи необов’язкові теплоносії та мастила до ваших оборонно-виробничих блоків.
[*] Отримайте максимум від свого виробництва, поставляючи додаткові теплоносії та мастило.
[*] Виробляйте численних одиниць для автоматичного управління своєю базою або для наступу на ворожі бази.
[/list] [/list]
[img]{STEAM_APP_IMAGE}/extras/ezgif-1-8679abe089cd.gif[/img]
[h2]Кампанія[/h2] [h2]Кампанія[/h2]
[list] [list][*] Підкорюйте планету Серпуло, просуваючись через більш ніж 250 процедурно створених секторів та 16 рукотворних мап.
[*] Просуньтесь через 12 вбудованих зон з випадковим розташуванням точок появи ворогів. [*] Захоплюйте територію та створюйте заводи для видобутку ресурсів, поки ви граєте на інших секторах.
[*] Збирайте і запускайте ресурси. [*] Захищайте свої сектори від періодичних вторгнень.
[*] Координуйте розподіл ресурсів між секторами за допомогою пускових майданчиків.
[*] Дослідження нових блоків для сприяння прогресу. [*] Дослідження нових блоків для сприяння прогресу.
[*] Налаштовуйте початкові ресурси для кожної зони [*] Налаштовуйте початкові ресурси для кожної зони.
[*] Різноманітність цілей та завдань місій. [*] Різноманітність цілей та завдань місій.
[*] Запросіть своїх друзів для спільного виконання місій. [*] Запросіть своїх друзів для спільного виконання місій.
[*] Понад 120 технологічних блоків для освоєння. [*] Понад 120 технологічних блоків для освоєння.
[*] 19 різних типів дронів, мехів і кораблів. [*] 33 різних типів дронів, мехів і кораблів.
[*] Понад 50 досягнень для завершення. [*] Понад 50 досягнень для виконання.
[/list] [/list]
[h2][h2]Ігрові режими[/h2][/h2] [h2][h2]Ігрові режими[/h2][/h2]
[list] [list]
[*] [b]Виживання[/b]: створіть башти для захисту від ворогів в ігровому процесі, заснованому на захисті башт. Виживайте якомога довше, за бажанням можна запустити своє ядро, щоб використовувати зібрані ресурси для досліджень. Підготуйте свою базу для періодичних атак повітряних босів. [*] [b]Виживання[/b]: створіть башти для захисту від ворогів в ігровому процесі, заснованому на захисті башт. Виживайте якомога довше, за бажанням можна запустити своє ядро, щоб використовувати зібрані ресурси для досліджень. Підготуйте свою базу для періодичних атак повітряних босів.
[*] [b]Атака[/b]: будуйте заводи бойових одиниць для знищення ворожих ядер, одночасно захищаючи свою базу від хвиль ворожих одиниць. [*] [b]Атака[/b]: будуйте заводи бойових одиниць для знищення ворожих ядер, одночасно захищаючи свою базу від хвиль ворожих одиниць. За бажанням увімкніть ШІ, що будує оборонні споруди, для випробування себе на міцність.
[*] [b]PvP[/b]: змагайтеся з іншими гравцями, щоб знищити ядра один одного. Створюйте бойові одиниці або нападайте на інші бази безпосередньо зі своїми мехами. Створіть різноманітні типи підрозділів підтримки та наступу, що допоможуть вам у досягненні цілей. [*] [b]PvP[/b]: змагайтеся з іншими гравцями, щоб знищити ядра один одного. Створюйте бойові одиниці або нападайте на інші бази безпосередньо зі своїми мехами. Створіть різноманітні типи підрозділів підтримки та наступу, що допоможуть вам у досягненні цілей.
[*] [b]Пісочниця[/b]: грайте з нескінченними ресурсами без загрози з боку ворога. Використовуйте специфічні для пісочниці елементи та блоки рідких джерел для тестування конструкцій та появи ворогів за запитом. [*] [b]Пісочниця[/b]: грайте з нескінченними ресурсами без загрози з боку ворога. Використовуйте специфічні для пісочниці елементи та блоки рідких джерел для тестування конструкцій та появи ворогів за запитом.
[/list] [/list]
[h2]Користувацькі ігри & багатоплатформовий мультиплеєр[/h2] [img]{STEAM_APP_IMAGE}/extras/2020-11-30_10-46-02.gif[/img]
[h2]Користувацькі ігри і багатоплатформовий мультиплеєр[/h2]
[list] [list]
[*] 12 вбудованих мап на додаток кампанії. [*] 16 вбудованих мап на додачу до кампанії.
[*] Грайте в кооперативі, PvP чи пісочниці. [*] Грайте в кооперативі, PvP чи пісочниці.
[*] Приєднуйтесь до загальнодоступного сервера, або запросіть друзів на свій приватний сеанс. [*] Приєднуйтесь до загальнодоступного сервера, або запросіть друзів на свій приватний сеанс.
[*] Користувацькі налаштування гри — ціна блоків, сила ворогів, кількість початкових ресурсів, інтервал між хвилями, тощо. [*] Користувацькі налаштування гри — ціна блоків, сила ворогів, кількість початкових ресурсів, інтервал між хвилями, тощо.
@@ -57,5 +63,5 @@
[*] Розкладки хвиль для мап можна налаштувати. [*] Розкладки хвиль для мап можна налаштувати.
[*] Поширюйте експортовані мапи в Майстерні Steam. [*] Поширюйте експортовані мапи в Майстерні Steam.
[*] Правила для мап можна налаштувати. [*] Правила для мап можна налаштувати.
[*] Використовуйте понад 75 видів блоків навколишнього середовища. [*] Використовуйте понад 80 видів блоків навколишнього середовища.
[/list] [/list]

View File

@@ -1,3 +1,3 @@
org.gradle.daemon=true org.gradle.daemon=true
org.gradle.jvmargs=-Xms256m -Xmx1024m org.gradle.jvmargs=-Xms256m -Xmx1024m
archash=e13f9a192be0bad00766ff15a6bf7d2897ba00d1 archash=d9f2b846e51e511aa4985c32297f6cdc8552ca87

View File

@@ -17,18 +17,6 @@
{ {
"address": "Mindustry.pl" "address": "Mindustry.pl"
}, },
{
"address": "mindustry.io"
},
{
"address": "mindustry.io:1000"
},
{
"address": "mindustry.io:2000"
},
{
"address": "mindustry.io:3000"
},
{ {
"address": "aamindustry.play.ai" "address": "aamindustry.play.ai"
}, },

View File

@@ -5,9 +5,6 @@
{ {
"address": "nydustry.nydus.app:6060" "address": "nydustry.nydus.app:6060"
}, },
{
"address": "md.surrealment.com"
},
{ {
"address": "routerchain.ddns.net:6568" "address": "routerchain.ddns.net:6568"
}, },

View File

@@ -1,7 +1,11 @@
[ [
{ {
"name": "mindustry.pl", "name": "mindustry.pl",
"address": ["mindustry.pl:6000", "mindustry.pl:6666"] "address": ["mindustry.pl:6000", "mindustry.pl:6666", "91.134.217.10:6006"]
},
{
"name": "{AA}",
"address": ["aamindustry.play.ai", "aamindustry.play.ai:6571", "aamindustry.play.ai:6572", "aamindustry.play.ai:6573"]
}, },
{ {
"name": "Atanner", "name": "Atanner",
@@ -11,6 +15,10 @@
"name": "C.A.M.S.", "name": "C.A.M.S.",
"address": ["routerchain.ddns.net", "pandorum.su:8000"] "address": ["routerchain.ddns.net", "pandorum.su:8000"]
}, },
{
"name": "io",
"address": ["mindustry.io", "mindustry.io:1000", "mindustry.io:2000", "mindustry.io:3000"]
},
{ {
"name": "ECAN", "name": "ECAN",
"address": ["mindustry.ecansol.com:6597", "mindustry.ecansol.com:6499", "mindustry.ecansol.com:6599"] "address": ["mindustry.ecansol.com:6597", "mindustry.ecansol.com:6499", "mindustry.ecansol.com:6599"]
@@ -30,5 +38,17 @@
{ {
"name": "mindustry.ddns.net", "name": "mindustry.ddns.net",
"address": ["mindustry.ddns.net:1000", "mindustry.ddns.net:2000", "mindustry.ddns.net:3000", "mindustry.ddns.net:4000"] "address": ["mindustry.ddns.net:1000", "mindustry.ddns.net:2000", "mindustry.ddns.net:3000", "mindustry.ddns.net:4000"]
},
{
"name": "Gearblock",
"address": ["attack.gearblock.app"]
},
{
"name": "Surrealment",
"address": ["md.surrealment.com"]
},
{
"name": "MindustryBR",
"address": ["mindustryptbr.ddns.net", "mindustryptbr.ddns.net:4444", "mindustryptbr.myddns.me:6666", "mindustryptbr.myddns.me:5555"]
} }
] ]

View File

@@ -58,6 +58,7 @@ public class ApplicationTests{
add(netServer = new NetServer()); add(netServer = new NetServer());
content.init(); content.init();
} }
@Override @Override
@@ -77,6 +78,10 @@ public class ApplicationTests{
} }
Thread.sleep(10); Thread.sleep(10);
} }
Block block = content.getByName(ContentType.block, "build2");
assertEquals("build2", block == null ? null : block.name, "2x2 construct block doesn't exist?");
}catch(Throwable r){ }catch(Throwable r){
fail(r); fail(r);
} }
@@ -496,8 +501,8 @@ public class ApplicationTests{
void buildingOverlap(){ void buildingOverlap(){
initBuilding(); initBuilding();
Builderc d1 = (Builderc)UnitTypes.poly.create(Team.sharded); Unit d1 = UnitTypes.poly.create(Team.sharded);
Builderc d2 = (Builderc)UnitTypes.poly.create(Team.sharded); Unit d2 = UnitTypes.poly.create(Team.sharded);
//infinite build range //infinite build range
state.rules.editor = true; state.rules.editor = true;
@@ -523,8 +528,8 @@ public class ApplicationTests{
void buildingDestruction(){ void buildingDestruction(){
initBuilding(); initBuilding();
Builderc d1 = (Builderc)UnitTypes.poly.create(Team.sharded); Builderc d1 = UnitTypes.poly.create(Team.sharded);
Builderc d2 = (Builderc)UnitTypes.poly.create(Team.sharded); Builderc d2 = UnitTypes.poly.create(Team.sharded);
d1.set(10f, 20f); d1.set(10f, 20f);
d2.set(10f, 20f); d2.set(10f, 20f);

View File

@@ -34,7 +34,7 @@ public class ItemLiquidGeneratorTests extends PowerTestFixture{
public void createGenerator(InputType inputType){ public void createGenerator(InputType inputType){
Vars.state = new GameState(); Vars.state = new GameState();
Vars.state.rules = new Rules(); Vars.state.rules = new Rules();
generator = new ItemLiquidGenerator(inputType != InputType.liquids, inputType != InputType.items, "fakegen"){ generator = new ItemLiquidGenerator(inputType != InputType.liquids, inputType != InputType.items, "fakegen" + System.nanoTime()){
{ {
powerProduction = 0.1f; powerProduction = 0.1f;
itemDuration = fakeItemDuration; itemDuration = fakeItemDuration;

View File

@@ -28,35 +28,42 @@ public class PowerTestFixture{
headless = true; headless = true;
Core.graphics = new FakeGraphics(); Core.graphics = new FakeGraphics();
Core.files = new MockFiles(); Core.files = new MockFiles();
Vars.content = new ContentLoader(){
@Override
public void handleMappableContent(MappableContent content){
} boolean make = content == null;
};
if(make){
Vars.content = new ContentLoader(){
@Override
public void handleMappableContent(MappableContent content){
}
};
}
Vars.state = new GameState(); Vars.state = new GameState();
Vars.tree = new FileTree(); Vars.tree = new FileTree();
content.createBaseContent(); if(make){
content.createBaseContent();
}
Log.useColors = false; Log.useColors = false;
Time.setDeltaProvider(() -> 0.5f); Time.setDeltaProvider(() -> 0.5f);
} }
protected static PowerGenerator createFakeProducerBlock(float producedPower){ protected static PowerGenerator createFakeProducerBlock(float producedPower){
return new PowerGenerator("fakegen"){{ return new PowerGenerator("fakegen" + System.nanoTime()){{
buildType = () -> new GeneratorBuild(); buildType = () -> new GeneratorBuild();
powerProduction = producedPower; powerProduction = producedPower;
}}; }};
} }
protected static Battery createFakeBattery(float capacity){ protected static Battery createFakeBattery(float capacity){
return new Battery("fakebattery"){{ return new Battery("fakebattery" + System.nanoTime()){{
buildType = () -> new BatteryBuild(); buildType = () -> new BatteryBuild();
consumes.powerBuffered(capacity); consumes.powerBuffered(capacity);
}}; }};
} }
protected static Block createFakeDirectConsumer(float powerPerTick){ protected static Block createFakeDirectConsumer(float powerPerTick){
return new PowerBlock("fakedirectconsumer"){{ return new PowerBlock("fakedirectconsumer" + System.nanoTime()){{
buildType = Building::create; buildType = Building::create;
consumes.power(powerPerTick); consumes.power(powerPerTick);
}}; }};