Compare commits

..

262 Commits
v110 ... v112

Author SHA1 Message Date
Anuken
8f417ef2d7 Merge pull request #3241 from Alstin112/patch-3
Update bundle_pt_BR.properties
2020-11-02 18:10:21 -05:00
Anuken
8b4014876e Merge pull request #3229 from skykatik/patch-4
Cleanup and code formatting
2020-11-02 17:59:49 -05:00
Anuken
75d8d4f407 Merge pull request #3226 from Virtox/patch-1
Some fixes and additions for NL language file
2020-11-02 17:58:31 -05:00
Anuken
5aef551bd2 Merge pull request #3195 from QmelZ/master
Turkish translation and some fixes
2020-11-02 17:58:14 -05:00
Anuken
efcd84735d Merge pull request #3190 from TheJaaju/patch-5
Update bundle_fi.properties
2020-11-02 17:58:00 -05:00
Anuken
edef90da58 Merge pull request #3177 from PetrGasparik/v112
Czech translation for latest version
2020-11-02 17:57:46 -05:00
Anuken
534cfcfdaf Merge pull request #3134 from L0615T1C5-216AC-9437/patch-1
Add Chaotic Neutral to the V6 Server list
2020-11-02 17:55:55 -05:00
Anuken
fa42dc9e17 Merge pull request #3113 from YellOw139/patch-2
[Bundle][RO] Translation Update
2020-11-02 17:54:54 -05:00
Anuken
9779478fe7 Merge pull request #3111 from laohuaji233/patch-40
Update bundle_zh_CN.properties
2020-11-02 17:54:41 -05:00
Anuken
3a4e939dee Merge pull request #3110 from Catchears/german-v6
Improve german translation for v6
2020-11-02 17:54:30 -05:00
Anuken
006e27b61f Merge pull request #3109 from Prosta4okua/patch-7
[Bundle][Uk_ua] Update Ukrainian bundle.
2020-11-02 17:53:55 -05:00
Anuken
544678009a Merge pull request #3092 from Prosta4okua/master
[Bundle][RU] actual L10n
2020-11-02 17:53:42 -05:00
Anuken
aa81805f19 Merge pull request #3103 from MEEPofFaith/patch-1
[Modding] Custom Base Support
2020-11-02 17:53:14 -05:00
Anuken
51fa2bf30c blast should be after pyratite 2020-11-02 16:50:50 -05:00
Anuken
d035a3925b arc 2020-11-02 16:49:46 -05:00
Anuken
304f5b62b3 Sprites repacked 2020-11-02 16:49:24 -05:00
Anuken
e853ed6419 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	core/src/mindustry/logic/LCanvas.java
2020-11-02 16:47:33 -05:00
Anuken
8f53d44278 Various fixes 2020-11-02 16:46:11 -05:00
Anuken
075b7d7dc6 Merge pull request #3225 from Voz-Duh/new-texture-for-blast-mixer
New Texture For Blast Mixer
2020-11-02 15:31:43 -05:00
Voz-Duh
cda8a9b3e9 Texture Fix 2020-11-02 23:02:56 +03:00
Voz-Duh
6e2f097803 Texture Fix 2020-11-02 22:16:46 +03:00
Alstin112
4f46486a14 Update bundle_pt_BR.properties 2020-11-01 22:17:18 -03:00
Anuken
f44cad4c08 Merge pull request #3230 from Quentinchampenois/translation/fr_keys
Translates few keys in french
2020-11-01 20:11:41 -05:00
Anuken
9adb3af430 Merge pull request #3239 from DeltaNedas/logicerr
properly log logic build errors
2020-11-01 19:16:41 -05:00
DeltaNedas
fc94d68e10 remove redundant stack trace 2020-11-01 23:16:41 +00:00
DeltaNedas
47844e0204 properly log logic build errors 2020-11-01 23:01:18 +00:00
Anuken
082d157c86 Merge pull request #3236 from DeltaNedas/publiclogic
make logic stuff public and clean up
2020-11-01 15:18:36 -05:00
DeltaNedas
1f9ed90cc0 remove unused DataType.java 2020-11-01 19:35:46 +00:00
DeltaNedas
cda6a6973d make logic stuff public, cleanup 2020-11-01 19:35:22 +00:00
Anuken
a13f7f633e Fixed serverside error 2020-11-01 10:42:16 -05:00
Anuken
d786c8668e Fixed logic config() called in clients / JSON-compatible effects 2020-11-01 10:30:30 -05:00
Anuken
187cb79265 Fixed #3222 / Fixed #3218 / Fixed #3228 / Fixed #3217 2020-11-01 09:28:03 -05:00
quentinchampenois
692c4733e8 light translations from english to french keys 2020-11-01 14:11:09 +01:00
Skat
ab604ec1c0 Update BaseProcessor.java 2020-11-01 16:04:30 +03:00
Skat
801251e1a6 Cleanup and code formatting 2020-11-01 15:59:43 +03:00
Voz-Duh
e8cfd63bc4 Texture Fix 2020-11-01 14:12:52 +03:00
Stijn van der Linden
e778f1ab5d Update bundle_nl.properties 2020-11-01 11:45:13 +01:00
Stijn van der Linden
5f1d048eea Update bundle_nl.properties
Fixed some typo's, added couple more translated lines.
2020-11-01 11:37:11 +01:00
Voz-Duh
3e03c3e49b New Texture For Blast Mixer 2020-11-01 13:27:09 +03:00
Anuken
54ba4b31a1 Fixed casing eject effects 2020-10-31 20:19:24 -04:00
Anuken
b5e2812d0b Bugfixes 2020-10-31 16:25:50 -04:00
Anuken
95c444a004 Merge remote-tracking branch 'origin/master' 2020-10-31 16:11:54 -04:00
Anuken
b1b03a7503 Extra legacy block substitution / iOS fixes 2020-10-31 16:11:51 -04:00
Anuken
440c035367 Merge pull request #3215 from summetdev/groups/unit-factory
[QoL] Add Unit Factories to the Common Block Group.
2020-10-31 16:11:28 -04:00
summetdev
e6f60505e6 Add group to UnitBlock 2020-10-31 23:03:25 +03:00
summetdev
afe3b0d111 Group for unit factory 2020-10-31 22:30:37 +03:00
Anuken
05dcd7622b Campaign tweaks 2020-10-31 14:52:03 -04:00
YellOw139
ae595b4564 [stat] where [stat] is needed 2020-10-31 20:47:36 +02:00
Anuken
9c54fcee2e Sector damage calculation fix 2020-10-31 13:42:43 -04:00
Anuken
4d34f16fcd Merge remote-tracking branch 'origin/master' 2020-10-31 13:03:22 -04:00
Anuken
2079cfaece Fixed #3208 2020-10-31 13:03:19 -04:00
Anuken
df54fb0534 Merge pull request #3209 from summetdev/database-button
Show Core Database Button in Custom Game.
2020-10-31 12:57:45 -04:00
summetdev
51e490e667 Core database button 2020-10-31 19:26:50 +03:00
Anuken
04fcf06ad5 Merge remote-tracking branch 'origin/master' 2020-10-31 12:03:38 -04:00
Anuken
9af8b64046 #3191 2020-10-31 12:03:35 -04:00
Anuken
dc1c132e03 Merge pull request #3207 from DeltaNedas/bullet
fix modded bullets
2020-10-31 11:56:35 -04:00
DeltaNedas
865beac7fb fix modded bullets 2020-10-31 15:35:45 +00:00
Anuken
13334451bf arc 2020-10-31 11:01:49 -04:00
Anuken
d68ef73407 Fixed bloom resizing improperly 2020-10-31 11:01:39 -04:00
Anuken
8d6ea6b197 Correct team display on maps 2020-10-31 10:35:21 -04:00
Anuken
2c29a06eb5 Fixed #3206 2020-10-31 10:07:01 -04:00
Anuken
b75a03aed8 Fixed #3204 2020-10-31 09:56:35 -04:00
Anuken
583e286ada Merge remote-tracking branch 'origin/master' 2020-10-31 09:01:10 -04:00
Anuken
42b8ece85a Fixed #3200 / Fixed #3196 / Fixed #3198 2020-10-31 09:01:06 -04:00
Anuken
82ee71013e Merge pull request #3202 from TheEvilSkeleton/master
Make the Downloads section a bit more pretty
2020-10-31 08:55:03 -04:00
Proprietary Chrome-chan
38fad6e15f Update README.md 2020-10-31 08:43:55 -04:00
Prosta4okua
ab947c4fe7 Update bundle_uk_UA.properties 2020-10-31 02:25:38 +02:00
Anuken
4ec8e24bd8 Cleanup of merged PR 2020-10-30 19:03:05 -04:00
Anuken
e02458122b Merge pull request #2970 from genNAowl/ground-support-heal
Allow Ground Support Units to Heal Blocks
2020-10-30 18:52:04 -04:00
QmelZ
d837879bd8 translation 2020-10-31 00:51:34 +03:00
Anuken
181ad1016c Reduced tech costs / Added missing blocks to fungal pass 2020-10-30 16:05:40 -04:00
Anuken
466183ffd0 Possibly more accurate wave linear regressions 2020-10-30 15:39:49 -04:00
genNAowl
60f2c67bde Merge branch 'master' into ground-support-heal 2020-10-30 12:37:33 -07:00
Anuken
28240f730f Don't show guardian warning when above win wave 2020-10-30 14:57:34 -04:00
Anuken
ed93fa45d3 Preset tweaks 2020-10-30 13:16:59 -04:00
Anuken
a12583eb4d Campaign survival wave display tweaks 2020-10-30 12:54:24 -04:00
Leonwang4234
de483990ef formatting
Why do I always make these mistakes?

And I saw that I did the same thing in my incendiary-fire PR too...
2020-10-30 09:04:44 -07:00
Anuken
76ff55d7f1 Campaign tweaks 2020-10-30 11:50:38 -04:00
Anuken
784a280bef Merge remote-tracking branch 'origin/master' 2020-10-30 10:36:11 -04:00
Anuken
14869041b8 Cleanup 2020-10-30 10:36:07 -04:00
Anuken
17fd3d0bc1 Merge pull request #3099 from skykatik/patch-2
Removing spaces at start and end of a message (trim)
2020-10-30 10:29:42 -04:00
Anuken
968d94904a Merge pull request #3058 from MEEPofFaith/speed-lightning
v5 Javelin Movement Lightning Ability
2020-10-30 09:40:21 -04:00
Anuken
c8e5994b2f Merge pull request #3174 from genNAowl/alternate-recalculation
Change "Alternate" calculation in Turret.java
2020-10-30 09:30:59 -04:00
Anuken
d48f02ff4a Merge pull request #3156 from summetdev/formatting
Lots Of Cleanup
2020-10-30 09:26:56 -04:00
Anuken
73035b9211 Merge branch 'master' into formatting 2020-10-30 09:26:51 -04:00
Anuken
513ccfe581 Merge remote-tracking branch 'origin/master' 2020-10-30 09:24:09 -04:00
Anuken
782307374f Fixed #3189 / Fixed #3187 2020-10-30 09:24:05 -04:00
Anuken
c0d1ff0f08 Merge pull request #3192 from Voz-Duh/full-unit-in-menu
Full Unit In Menu
2020-10-30 09:21:58 -04:00
Anuken
7cac70010e Merge pull request #3188 from sk7725/patch-26
Field for LiquidTurrets that do not care about the fires around it
2020-10-30 09:17:40 -04:00
Voz-Duh
36fdf4afbc Full Unit In Menu 2020-10-30 14:21:13 +03:00
YellOw139
790a802236 Indev pop-up slip-by fix 2020-10-30 12:33:40 +02:00
TheJaaju
b45e7cd8f3 Update bundle_fi.properties
More translations
2020-10-30 11:17:58 +02:00
Sunny Kim
ecaa0a4eaa Some liquid turrets are not caring enough 2020-10-30 16:44:54 +09:00
Anuken
a9f5aa9220 suffering 2020-10-29 19:58:10 -04:00
Anuken
150343b5f9 suffering 2020-10-29 19:33:07 -04:00
Anuken
ae35b2ff7e arc 2020-10-29 19:04:37 -04:00
Anuken
1663497e6c Better save validation 2020-10-29 19:03:58 -04:00
YellOw139
fca8d6741c Yet another typo 2020-10-29 23:27:15 +02:00
YellOw139
97e9cdc1fd Fixed real confusing entry 2020-10-29 23:25:44 +02:00
Anuken
cd6516786b suffering 2020-10-29 16:07:01 -04:00
YellOw139
e9089aae68 Update bundle_ro.properties 2020-10-29 21:53:18 +02:00
Anuken
c899cb6a93 suffering 2020-10-29 15:44:06 -04:00
Anuken
acc9a5aa9e Merge remote-tracking branch 'origin/master' 2020-10-29 15:10:17 -04:00
Anuken
d7cdfbb02d suffering 2020-10-29 15:10:09 -04:00
Anuken
afed4c4239 Merge pull request #3184 from MEEPofFaith/any-layer-effects
Any Layer Effects
2020-10-29 13:58:55 -04:00
Anuken
3eb655402f Merge pull request #2978 from Volas171/patch-1
Update bundle_es.properties
2020-10-29 13:39:11 -04:00
Anuken
fc7887399f suffering 2020-10-29 13:29:54 -04:00
Anuken
0c1c41efc0 Libs 2020-10-29 13:03:48 -04:00
Anuken
43937037db Libs 2020-10-29 12:30:39 -04:00
Anuken
0c418d1a09 Libs 2020-10-29 11:51:17 -04:00
Anuken
2ad14cc884 Merge remote-tracking branch 'origin/master' 2020-10-29 10:26:35 -04:00
Anuken
77e6030c59 Fixed #3173 2020-10-29 10:26:32 -04:00
Anuken
79624ff7cd Merge pull request #3181 from sk7725/patch-23
Make LiquidTurret not need to have water as an ammo(bugfix)
2020-10-29 10:22:26 -04:00
Sunny Kim
f2b5553f54 bug squish 2020-10-29 19:04:38 +09:00
Petr Gašparík
bced413810 Czech translation for latest version
up to commit 44286ce
2020-10-29 09:08:14 +01:00
MEEP of Faith
a14ae1bdf8 Lightning chance fix. 2020-10-28 21:00:24 -07:00
MEEP of Faith
1e3b498671 Any Layer Effects 2020-10-28 20:46:50 -07:00
Leonwang4234
19bc6f6e48 Update Turret.java 2020-10-28 20:09:45 -07:00
Anuken
3dae157a5e Extra validation 2020-10-28 19:35:15 -04:00
Anuken
55a7089a3d Merge remote-tracking branch 'origin/master' 2020-10-28 18:51:49 -04:00
Anuken
44286cee59 Wave versions 2020-10-28 18:51:42 -04:00
Anuken
89c35db811 Merge pull request #3168 from Yakuzet/patch-3
Update bundle_tr.properties
2020-10-28 16:40:10 -04:00
Anuken
68ab48a1d3 Fixed #3170 2020-10-28 14:05:09 -04:00
老滑稽
e4a8d2cb33 Update bundle_zh_CN.properties 2020-10-28 23:43:57 +08:00
Anuken
e92d26b9e8 arc 2020-10-28 10:29:45 -04:00
Anuken
d77f1b4fc0 Merge remote-tracking branch 'origin/master' 2020-10-28 10:29:40 -04:00
Anuken
e1fefd1664 Updated RoboVM version 2020-10-28 10:29:32 -04:00
Anuken
9e15434904 Merge pull request #3165 from summetdev/payload-group
Add transportation group to payload conveyors.
2020-10-28 09:53:02 -04:00
Anuken
d539bc0b43 Merge pull request #3118 from summetdev/patch-7
Make run_server.sh executable.
2020-10-28 09:51:10 -04:00
Anuken
4940c277f6 Fixed #3166 2020-10-28 09:42:41 -04:00
Yakuzet
fc317939e2 Update bundle_tr.properties
I fixed all googled things
2020-10-28 16:36:22 +03:00
Volas171
53e655698b Update bundle_es.properties 2020-10-28 08:32:23 -05:00
Anuken
63e4bca098 Partial fix of editor multiblock undo/redo 2020-10-28 09:22:27 -04:00
summetdev
a7d1f98f7e PayloadConveyor with transportation group 2020-10-28 13:50:32 +03:00
Volas171
d91dd2548d Merge branch 'master' into patch-1 2020-10-27 15:05:36 -05:00
Prosta4okua
a644b64c1c Update bundle_uk_UA.properties 2020-10-27 21:55:22 +02:00
summetdev
2918a0ea86 Newlines 2020-10-27 22:08:53 +03:00
summetdev
a3abadd8c2 Revert "Newlines"
This reverts commit a78faa57
2020-10-27 21:55:40 +03:00
summetdev
9a7e0fb45e Removed spaces in brackets 2020-10-27 21:54:48 +03:00
summetdev
a78faa57f3 Newlines 2020-10-27 21:36:02 +03:00
Anuken
024f64678c Merge remote-tracking branch 'origin/master' 2020-10-27 14:29:19 -04:00
Anuken
a31e182905 Fixed nodes not connecting to batteries when placed 2020-10-27 14:29:15 -04:00
summetdev
a4f54a890a Add spaces to operations 2020-10-27 21:13:36 +03:00
Wiki Updater
7fa9902ee7 änderungen von Ansraer 2020-10-27 19:05:37 +01:00
Prosta4okua
d84f2e1993 27.10.2020 2020-10-27 19:54:50 +02:00
summetdev
41f79b995d Removed repeating patterns 2020-10-27 20:50:48 +03:00
Anuken
c122aa85bf Merge pull request #3155 from summetdev/processor-units
Hovering over a processor will show the unit it's controlling.
2020-10-27 13:42:37 -04:00
summetdev
76124c1b19 Show controlled units on processor hover 2020-10-27 20:30:41 +03:00
Anuken
5582a8bf1b Fixed #3153 / Fixed #3152 2020-10-27 13:13:54 -04:00
summetdev
8cffab46e0 Drawf.square with rotation 2020-10-27 18:52:23 +03:00
老滑稽
624f004800 Update bundle_zh_CN.properties 2020-10-27 23:35:38 +08:00
Anuken
6eab4ebd1c Fixed #3145 / Fixed #3144 2020-10-27 10:27:57 -04:00
老滑稽
c32c500ad2 Update bundle_zh_CN.properties 2020-10-27 12:48:11 +08:00
Anuken
c0d0edfc89 Bugfixes & cleanup 2020-10-26 23:09:51 -04:00
Anuken
8d7f96bf00 Fixed #3140 2020-10-26 16:54:47 -04:00
Anuken
909da9de3c Bugfixes 2020-10-26 16:06:50 -04:00
Summet
899f4fe994 use user's env 2020-10-26 21:54:51 +03:00
Anuken
73ca6eeb74 Fixed #3136 2020-10-26 13:38:27 -04:00
Anuken
8770bb2422 Fixed #3133 (probably) / Logic icon draw command 2020-10-26 13:31:32 -04:00
LOGISTICAL NIGHTMARE
308320b4e7 Add Chaotic Neutral to the V6 Server list 2020-10-26 12:11:42 -04:00
Vanguard
928a831bc4 1 line changed
editor.exportimage
2020-10-26 19:09:13 +03:00
Anuken
a2181fec48 Merge remote-tracking branch 'origin/master' 2020-10-26 11:52:37 -04:00
Anuken
db5298e40c Headless cleanup 2020-10-26 11:52:33 -04:00
Anuken
0b7c8bdcd8 Merge pull request #3129 from DeltaNedas/patch-12
minor serverside optimisation in roomba
2020-10-26 11:19:22 -04:00
Anuken
f814fa861c Merge remote-tracking branch 'origin/master' 2020-10-26 10:07:38 -04:00
Anuken
7370e398cc #3125 2020-10-26 10:07:33 -04:00
Anuken
ca572163d4 Merge pull request #3115 from YellOw139/patch-5
Add Vietnamese characters to font.woff
2020-10-26 10:00:41 -04:00
Anuken
78afbb3e95 Merge remote-tracking branch 'origin/master' 2020-10-26 09:57:04 -04:00
Anuken
23b9556105 #3121 2020-10-26 09:56:56 -04:00
Anuken
ad080036c2 Merge pull request #3120 from genNAowl/source/void-replacements
Give Sources/Voids BlockGroups
2020-10-26 09:51:09 -04:00
DeltaNedas
1e12faaf65 h
h is for headless, which i am
2020-10-26 13:37:53 +00:00
DeltaNedas
6c7428a1fb minor serverside optimisation 2020-10-26 13:32:50 +00:00
Felix Corvus
0ab06392c1 Update bundle_ru.properties 2020-10-26 14:54:35 +03:00
Leonwang4234
2a8a00afab source/void replacement 2020-10-25 17:28:11 -07:00
Anuken
526b1add26 Unused bullet cleanup 2020-10-25 20:04:14 -04:00
Anuken
514aa26054 Minor rendering & AI tweaks 2020-10-25 18:34:12 -04:00
Anuken
baf6bdf6a5 Increased sector damage calculation radius 2020-10-25 17:21:34 -04:00
Summet
5e9c64391e Add shebang 2020-10-25 23:17:41 +03:00
Anuken
889fd64656 arc 2020-10-25 15:55:34 -04:00
Anuken
59b5d809db Balance 2020-10-25 15:55:23 -04:00
Anuken
6c3372e71c Slightly more reasonable waves 2020-10-25 15:07:51 -04:00
Anuken
1cdea49383 Merge remote-tracking branch 'origin/master' 2020-10-25 12:35:52 -04:00
Anuken
a6307039b0 Fixed some nullability issues 2020-10-25 12:35:48 -04:00
Anuken
aaacf244d2 Merge pull request #3096 from azureblue/placement-direction
make ending direction follow the path
2020-10-25 12:28:41 -04:00
Anuken
2a0af620be Sector land announcement 2020-10-25 12:00:57 -04:00
Anuken
b801093597 Merge remote-tracking branch 'origin/master' 2020-10-25 11:22:19 -04:00
Anuken
81dae580a4 Bugfixes / Removed tile unit multi-mining 2020-10-25 11:22:10 -04:00
YellOw139
1d54e939cb Add new font.woff 2020-10-25 17:02:04 +02:00
YellOw139
a40c49a915 Delete font.woff 2020-10-25 17:01:29 +02:00
Anuken
03f58a1b02 Merge pull request #2972 from sk7725/patch-20
Add colors to StatusEffects
2020-10-25 10:35:42 -04:00
YellOw139
103e408cb7 [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 41d388aa7f
- Typo fixes & various other improvements
2020-10-25 15:45:57 +02:00
Anuken
b2b0082c7d Fixed #3108 / Fixed #3112 2020-10-25 09:23:13 -04:00
Wiki Updater
1d4da170ef änderungen von shawak 2020-10-25 14:22:36 +01:00
老滑稽
3b75527e4c Update bundle_zh_CN.properties 2020-10-25 19:24:57 +08:00
老滑稽
83d4825bf2 Update bundle_zh_CN.properties 2020-10-25 18:57:57 +08:00
Prosta4okua
3d47389a39 Update bundle_uk_UA.properties 2020-10-25 11:19:09 +02:00
MEEP of Faith
2c03516998 I thought this failed. I guess not.. 2020-10-24 17:27:01 -07:00
MEEP of Faith
062b319ab3 ok, then try this? 2020-10-24 17:16:56 -07:00
MEEP of Faith
8ad4349d18 test this 2020-10-24 17:12:44 -07:00
Anuken
1d85495f7a Merge remote-tracking branch 'origin/master' 2020-10-24 19:06:09 -04:00
Anuken
41d388aa7f Item sprite cleanup 2020-10-24 19:06:05 -04:00
MEEP of Faith
2ec3eee138 Custom Base Support 2020-10-24 15:02:36 -07:00
Anuken
e88921c77e Merge pull request #3100 from MEEPofFaith/patch-1
"diable"
2020-10-24 16:56:49 -04:00
MEEP of Faith
705728f16a "diable"
oh no
2020-10-24 13:49:30 -07:00
Skat
6b94cbd089 Oh 2020-10-24 23:44:16 +03:00
Skat
7b8a9ff15e Update ChatFragment.java
This will avoid exceeding the message length limit if player send a message with spaces in end/start message
2020-10-24 23:34:18 +03:00
azureblue
a7c24d4bfd fixing formatting 2020-10-24 22:10:02 +02:00
Anuken
79ace277ed Merge remote-tracking branch 'origin/master' 2020-10-24 15:55:25 -04:00
Anuken
bc035f9490 Fixed #3095 2020-10-24 15:55:20 -04:00
azureblue
73a5af2e5e make ending direction follow the path 2020-10-24 21:34:47 +02:00
Anuken
ee7bdbf44e Merge pull request #3081 from genNAowl/standardize-liquid-stats
Remove timePeriod in LiquidBaseValue
2020-10-24 15:18:47 -04:00
Anuken
b611726c3e Merge remote-tracking branch 'origin/master' 2020-10-24 15:11:31 -04:00
Anuken
819686e812 Unit factory production list 2020-10-24 15:11:27 -04:00
Anuken
94e40a32b9 Merge pull request #3093 from DeltaNedas/patch-11
add more info to print object
2020-10-24 15:09:50 -04:00
DeltaNedas
3b2669fa21 pattern variables? 2020-10-24 17:23:54 +00:00
DeltaNedas
801ff1701e silly 2020-10-24 17:19:50 +00:00
Vanguard
b4deb6caca 1 line changed
unit.nobuild
2020-10-24 20:06:02 +03:00
DeltaNedas
364a2b43c2 add Content fallback 2020-10-24 17:04:58 +00:00
DeltaNedas
279d898d68 add more info to print object 2020-10-24 16:37:55 +00:00
Felix Corvus
ba7645e531 Update bundle_ru.properties 2020-10-24 19:14:18 +03:00
Anuken
a930b34c3e Merge pull request #3090 from QmelZ/master
Turkish Translation
2020-10-24 11:58:21 -04:00
QmelZ
232a3dfe87 one last little fix 2020-10-24 17:28:10 +03:00
Anuken
ddbca62f92 Merge remote-tracking branch 'origin/master' 2020-10-24 10:22:04 -04:00
Anuken
646b022d38 Bugfixes 2020-10-24 10:21:57 -04:00
QmelZ
19ef414e5c even more fixes 2020-10-24 17:18:56 +03:00
QmelZ
f46eb24615 some other fixes 2020-10-24 17:07:52 +03:00
Anuken
4e6faf3bac Merge pull request #3083 from genNAowl/titanium-ammo-fuse
Switch places of titanium and thorium ammo in `Blocks.java`
2020-10-24 09:47:21 -04:00
Anuken
48f5007306 Merge pull request #2990 from driver1748/patch-5
Update bundle_zh_CN.properties
2020-10-24 09:46:09 -04:00
Anuken
56acbcecfd Merge branch 'master' into patch-5 2020-10-24 09:46:02 -04:00
QmelZ
7d0952d858 small fix 2020-10-24 15:59:28 +03:00
QmelZ
ef40a2e78e Update bundle_tr.properties 2020-10-24 15:56:51 +03:00
Wiki Updater
280f0d6e21 Improve german translation for v6 2020-10-24 09:20:57 +02:00
QmelZ
b4abd3b23d Merge pull request #1 from SilentOwl476/patch-1
Update bundle_tr.properties
2020-10-24 09:10:32 +03:00
Leonwang4234
f2a984f3e7 Lets hope this compiles because I don't have time to test it 2020-10-23 19:53:21 -07:00
Anuken
1ffa3f21f0 (2) 2020-10-23 20:41:32 -04:00
Anuken
7e323f1ebf Logic locate fix 2020-10-23 20:38:33 -04:00
SilentOwl476
bff79d7c27 Update bundle_tr.properties 2020-10-24 01:46:02 +03:00
Anuken
117f002545 Fixed #3082 2020-10-23 18:24:18 -04:00
Anuken
953c1889b5 Fixed #3080 2020-10-23 17:18:49 -04:00
Leonwang4234
cc024a0bac remove timePeriod in LiquidBaseValue 2020-10-23 13:34:07 -07:00
Anuken
42bfab6e40 Fixed #3079 2020-10-23 16:12:36 -04:00
Anuken
c8ef7ebafb Fixed #3078 + action listeners for player control events 2020-10-23 15:59:52 -04:00
Anuken
5512c1817d Extra scrap for debris field map 2020-10-23 14:09:05 -04:00
MEEP of Faith
5203d17910 Comment stuff 2020-10-22 15:18:12 -07:00
MEEP of Faith
da3c11a201 Comments 2020-10-21 23:14:54 -07:00
MEEP of Faith
e7b6013d8d doot 2020-10-21 21:39:55 -07:00
MEEP of Faith
ed2825b0d9 doot 2020-10-21 21:37:52 -07:00
MEEP of Faith
50410be90a Define color instead of based on team 2020-10-21 21:33:57 -07:00
MEEP of Faith
0bd07866d8 m hm 2020-10-21 19:51:32 -07:00
MEEP of Faith
2dd234d960 oopeth 2020-10-21 19:32:29 -07:00
MEEP of Faith
43d1f363e5 Lightning Ability 2020-10-21 19:12:24 -07:00
Volas171
dec9e8d4aa Merge branch 'master' into patch-1 2020-10-21 10:53:20 -05:00
WinterUnderTheSnow
877999dd1e Update bundle_zh_CN.properties 2020-10-20 07:13:10 +08:00
Volas171
f364892fce Merge branch 'master' into patch-1 2020-10-17 10:50:53 -05:00
WinterUnderTheSnow
699f2ca5a2 Update bundle_zh_CN.properties
Confirmed units,name this may be the final version of translation by main translating team for v108
2020-10-17 17:38:12 +08:00
Volas171
df0bb9583b Update bundle_es.properties
Added 6.0 new block translation and fixed some misspells/english missed words
2020-10-16 13:08:40 -05:00
Sunny Kim
89f04ed3e9 oh no 2020-10-17 01:22:07 +09:00
Leonwang4234
9b95b97568 (Should) prevent vela from setting fires to friendly tiles 2020-10-16 08:54:29 -07:00
Leonwang4234
69b7d15beb Merge remote-tracking branch 'upstream/master' into ground-support-heal 2020-10-16 08:49:55 -07:00
Sunny Kim
956840b50b oops 2020-10-16 20:59:40 +09:00
Sunny Kim
b79e0373f4 Add colors to StatusEffects 2020-10-16 20:12:54 +09:00
Leonwang4234
ba77f8e2aa implement content 2020-10-15 17:59:03 -07:00
274 changed files with 6720 additions and 3099 deletions

8
.gitignore vendored
View File

@@ -19,7 +19,6 @@ logs/
/annotations/out/ /annotations/out/
/net/build/ /net/build/
/tools/build/ /tools/build/
/core/build/
/tests/build/ /tests/build/
/server/build/ /server/build/
changelog changelog
@@ -143,13 +142,6 @@ nb-configuration.xml
/local.properties /local.properties
.gradle/ .gradle/
gradle-app.setting gradle-app.setting
/build/
/android/build/
/core/build/
/desktop/build/
/html/build/
/ios/build/
/ios-moe/build/
## OS Specific ## OS Specific
.DS_Store .DS_Store

View File

@@ -61,18 +61,5 @@ Post feature requests and feedback [here](https://github.com/Anuken/Mindustry-Su
## Downloads ## Downloads
[<img src="https://static.itch.io/images/badge.svg" | [![](https://static.itch.io/images/badge.svg)](https://anuke.itch.io/mindustry) | [![](https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png)](https://play.google.com/store/apps/details?id=io.anuke.mindustry) | [![](https://fdroid.gitlab.io/artwork/badge/get-it-on.png)](https://f-droid.org/packages/io.anuke.mindustry) | [![](https://flathub.org/assets/badges/flathub-badge-en.svg)](https://flathub.org/apps/details/com.github.Anuken.Mindustry) |
alt="Get it on Itch.io" |--- |--- |--- |--- |
height="60">](https://anuke.itch.io/mindustry)
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png"
alt="Get it on Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.anuke.mindustry)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/io.anuke.mindustry/)
[<img src="https://flathub.org/assets/badges/flathub-badge-en.svg"
alt="Download On Flathub"
height="60">](https://flathub.org/apps/details/com.github.Anuken.Mindustry)

View File

@@ -27,7 +27,6 @@ import java.util.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public class AndroidLauncher extends AndroidApplication{ public class AndroidLauncher extends AndroidApplication{
public static final int PERMISSION_REQUEST_CODE = 1; public static final int PERMISSION_REQUEST_CODE = 1;
boolean doubleScaleTablets = true; boolean doubleScaleTablets = true;

View File

@@ -115,12 +115,12 @@ public abstract class BaseProcessor extends AbstractProcessor{
return ClassName.get(c).box(); return ClassName.get(c).box();
} }
public static TypeVariableName getTVN(TypeParameterElement element) { public static TypeVariableName getTVN(TypeParameterElement element){
String name = element.getSimpleName().toString(); String name = element.getSimpleName().toString();
List<? extends TypeMirror> boundsMirrors = element.getBounds(); List<? extends TypeMirror> boundsMirrors = element.getBounds();
List<TypeName> boundsTypeNames = new ArrayList<>(); List<TypeName> boundsTypeNames = new ArrayList<>();
for (TypeMirror typeMirror : boundsMirrors) { for(TypeMirror typeMirror : boundsMirrors){
boundsTypeNames.add(TypeName.get(typeMirror)); boundsTypeNames.add(TypeName.get(typeMirror));
} }
@@ -137,11 +137,11 @@ public abstract class BaseProcessor extends AbstractProcessor{
if(imports != null){ if(imports != null){
String rawSource = file.toString(); String rawSource = file.toString();
Seq<String> result = new Seq<>(); Seq<String> result = new Seq<>();
for (String s : rawSource.split("\n", -1)) { for(String s : rawSource.split("\n", -1)){
result.add(s); result.add(s);
if (s.startsWith("package ")) { if (s.startsWith("package ")){
result.add(""); result.add("");
for (String i : imports) { for (String i : imports){
result.add(i); result.add(i);
} }
} }

View File

@@ -41,7 +41,7 @@ public class AssetsProcess extends BaseProcessor{
texIcons.each((key, val) -> { texIcons.each((key, val) -> {
String[] split = val.split("\\|"); String[] split = val.split("\\|");
String name = Strings.kebabToCamel(split[1]).replace("Medium", "").replace("Icon", ""); String name = Strings.kebabToCamel(split[1]).replace("Medium", "").replace("Icon", "");
if(SourceVersion.isKeyword(name) || name.equals("char")) name = name + "i"; if(SourceVersion.isKeyword(name) || name.equals("char")) name += "i";
ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("(char)" + key).build()); ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("(char)" + key).build());
}); });
@@ -78,7 +78,7 @@ public class AssetsProcess extends BaseProcessor{
if(SourceVersion.isKeyword(varname)) varname += "s"; if(SourceVersion.isKeyword(varname)) varname += "s";
type.addField(ClassName.bestGuess(dtype), varname, Modifier.STATIC, Modifier.PUBLIC); type.addField(ClassName.bestGuess(dtype), varname, Modifier.STATIC, Modifier.PUBLIC);
load.addStatement(varname + " = ("+dtype+")arc.Core.atlas.drawable($S)", sfilen); load.addStatement(varname + " = (" + dtype + ")arc.Core.atlas.drawable($S)", sfilen);
}); });
for(Element elem : elements){ for(Element elem : elements){
@@ -115,23 +115,21 @@ public class AssetsProcess extends BaseProcessor{
names.add(name); names.add(name);
} }
if(SourceVersion.isKeyword(name)){ if(SourceVersion.isKeyword(name)) name += "s";
name = name + "s";
}
String filepath = path.substring(path.lastIndexOf("/") + 1) + "/" + fname; String filepath = path.substring(path.lastIndexOf("/") + 1) + "/" + fname;
String filename = "arc.Core.app.getType() != arc.Application.ApplicationType.iOS ? \"" + filepath + "\" : \"" + filepath.replace(".ogg", ".mp3")+"\""; String filename = "arc.Core.app.getType() != arc.Application.ApplicationType.iOS ? \"" + filepath + "\" : \"" + filepath.replace(".ogg", ".mp3") + "\"";
loadBegin.addStatement("arc.Core.assets.load("+filename +", "+rtype+".class).loaded = a -> " + name + " = ("+rtype+")a", filepath, filepath.replace(".ogg", ".mp3")); loadBegin.addStatement("arc.Core.assets.load(" + filename + ", " + rtype + ".class).loaded = a -> " + name + " = (" + rtype + ")a", filepath, filepath.replace(".ogg", ".mp3"));
dispose.addStatement("arc.Core.assets.unload(" + filename + ")"); dispose.addStatement("arc.Core.assets.unload(" + filename + ")");
dispose.addStatement(name + " = null"); dispose.addStatement(name + " = null");
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), name, Modifier.STATIC, Modifier.PUBLIC).initializer("new arc.mock.Mock" + rtype.substring(rtype.lastIndexOf(".") + 1)+ "()").build()); type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), name, Modifier.STATIC, Modifier.PUBLIC).initializer("new arc.mock.Mock" + rtype.substring(rtype.lastIndexOf(".") + 1) + "()").build());
}); });
if(classname.equals("Sounds")){ if(classname.equals("Sounds")){
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), "none", Modifier.STATIC, Modifier.PUBLIC).initializer("new arc.mock.Mock" + rtype.substring(rtype.lastIndexOf(".") + 1)+ "()").build()); type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), "none", Modifier.STATIC, Modifier.PUBLIC).initializer("new arc.mock.Mock" + rtype.substring(rtype.lastIndexOf(".") + 1) + "()").build());
} }
type.addMethod(loadBegin.build()); type.addMethod(loadBegin.build());

View File

@@ -17,7 +17,7 @@ buildscript{
} }
dependencies{ dependencies{
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.8' classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.11'
classpath "com.github.anuken:packr:-SNAPSHOT" classpath "com.github.anuken:packr:-SNAPSHOT"
classpath "com.github.Anuken.Arc:packer:$arcHash" classpath "com.github.Anuken.Arc:packer:$arcHash"
classpath "com.github.Anuken.Arc:arc-core:$arcHash" classpath "com.github.Anuken.Arc:arc-core:$arcHash"
@@ -36,7 +36,7 @@ allprojects{
if(!project.hasProperty("versionType")) versionType = 'official' if(!project.hasProperty("versionType")) versionType = 'official'
appName = 'Mindustry' appName = 'Mindustry'
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256' steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256'
rhinoVersion = '8437435dab9993769d72739608580d40c5343285' rhinoVersion = '2c3ad8c29560f695ad147a8e8cf5ed9f0ae834b3'
loadVersionProps = { loadVersionProps = {
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p } return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 744 B

After

Width:  |  Height:  |  Size: 743 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

After

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 B

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 B

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 B

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 B

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 B

After

Width:  |  Height:  |  Size: 519 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -463,7 +463,7 @@ load = Load
save = Save save = Save
fps = FPS: {0} fps = FPS: {0}
ping = Ping: {0}ms ping = Ping: {0}ms
language.restart = Please restart your game for the language settings to take effect. language.restart = Restart your game for the language settings to take effect.
settings = Settings settings = Settings
tutorial = Tutorial tutorial = Tutorial
tutorial.retake = Re-Take Tutorial tutorial.retake = Re-Take Tutorial
@@ -483,6 +483,7 @@ launch.text = Launch
research.multiplayer = Only the host can research items. research.multiplayer = Only the host can research items.
uncover = Uncover uncover = Uncover
configure = Configure Loadout configure = Configure Loadout
#TODO #TODO
loadout = Loadout loadout = Loadout
resources = Resources resources = Resources
@@ -581,7 +582,6 @@ settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your
paused = [accent]< Paused > paused = [accent]< Paused >
clear = Clear clear = Clear
banned = [scarlet]Banned banned = [scarlet]Banned
unplaceable.sectorcaptured = [scarlet]Requires captured sector
yes = Yes yes = Yes
no = No no = No
info.title = Info info.title = Info
@@ -591,6 +591,7 @@ unit.nobuild = [scarlet]Unit can't build
lastaccessed = [lightgray]Last Accessed: {0} lastaccessed = [lightgray]Last Accessed: {0}
block.unknown = [lightgray]??? block.unknown = [lightgray]???
stat.description = Purpose
stat.input = Input stat.input = Input
stat.output = Output stat.output = Output
stat.booster = Booster stat.booster = Booster
@@ -640,7 +641,7 @@ stat.lightningchance = Lightning Chance
stat.lightningdamage = Lightning Damage stat.lightningdamage = Lightning Damage
stat.flammability = Flammability stat.flammability = Flammability
stat.radioactivity = Radioactivity stat.radioactivity = Radioactivity
stat.heatcapacity = HeatCapacity stat.heatcapacity = Heat Capacity
stat.viscosity = Viscosity stat.viscosity = Viscosity
stat.temperature = Temperature stat.temperature = Temperature
stat.speed = Speed stat.speed = Speed
@@ -650,6 +651,8 @@ stat.minetier = Mine Tier
stat.payloadcapacity = Payload Capacity stat.payloadcapacity = Payload Capacity
stat.commandlimit = Command Limit stat.commandlimit = Command Limit
stat.abilities = Abilities stat.abilities = Abilities
stat.canboost = Can Boost
stat.flying = Flying
ability.forcefield = Force Field ability.forcefield = Force Field
ability.repairfield = Repair Field ability.repairfield = Repair Field
@@ -714,6 +717,7 @@ unit.items = items
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = mil
unit.billions = b unit.billions = b
category.purpose = Purpose
category.general = General category.general = General
category.power = Power category.power = Power
category.liquids = Liquids category.liquids = Liquids
@@ -727,6 +731,7 @@ setting.blockreplace.name = Automatic Block Suggestions
setting.linear.name = Linear Filtering setting.linear.name = Linear Filtering
setting.hints.name = Hints setting.hints.name = Hints
setting.flow.name = Display Resource Flow Rate setting.flow.name = Display Resource Flow Rate
setting.backgroundpause.name = Pause In Background
setting.buildautopause.name = Auto-Pause Building setting.buildautopause.name = Auto-Pause Building
setting.animatedwater.name = Animated Surfaces setting.animatedwater.name = Animated Surfaces
setting.animatedshields.name = Animated Shields setting.animatedshields.name = Animated Shields
@@ -1064,7 +1069,6 @@ block.conveyor.name = Conveyor
block.titanium-conveyor.name = Titanium Conveyor block.titanium-conveyor.name = Titanium Conveyor
block.plastanium-conveyor.name = Plastanium Conveyor block.plastanium-conveyor.name = Plastanium Conveyor
block.armored-conveyor.name = Armored Conveyor block.armored-conveyor.name = Armored Conveyor
block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyor belts.
block.junction.name = Junction block.junction.name = Junction
block.router.name = Router block.router.name = Router
block.distributor.name = Distributor block.distributor.name = Distributor
@@ -1072,7 +1076,6 @@ block.sorter.name = Sorter
block.inverted-sorter.name = Inverted Sorter block.inverted-sorter.name = Inverted Sorter
block.message.name = Message block.message.name = Message
block.illuminator.name = Illuminator block.illuminator.name = Illuminator
block.illuminator.description = A small, compact, configurable light source. Requires power to function.
block.overflow-gate.name = Overflow Gate block.overflow-gate.name = Overflow Gate
block.underflow-gate.name = Underflow Gate block.underflow-gate.name = Underflow Gate
block.silicon-smelter.name = Silicon Smelter block.silicon-smelter.name = Silicon Smelter
@@ -1208,136 +1211,205 @@ tutorial.waves = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 wav
tutorial.waves.mobile = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves. Your ship will automatically fire at enemies.\nBuild more turrets and drills. Mine more copper. tutorial.waves.mobile = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves. Your ship will automatically fire at enemies.\nBuild more turrets and drills. Mine more copper.
tutorial.launch = Once you reach a specific wave, you are able to[accent] launch the core[], leaving your defenses behind and[accent] obtaining all the resources in your core.[]\nThese obtained resources can then be used to research new technology.\n\n[accent]Press the launch button. tutorial.launch = Once you reach a specific wave, you are able to[accent] launch the core[], leaving your defenses behind and[accent] obtaining all the resources in your core.[]\nThese obtained resources can then be used to research new technology.\n\n[accent]Press the launch button.
item.copper.description = The most basic structural material. Used extensively in all types of blocks. item.copper.description = Used in all types of construction and ammunition.
item.lead.description = A basic starter material. Used extensively in electronics and liquid transportation blocks. item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced.
item.metaglass.description = A super-tough glass compound. Extensively used for liquid distribution and storage. item.lead.description = Used in liquid transportation and electrical structures.
item.graphite.description = Mineralized carbon, used for ammunition and electrical components. item.lead.details = Dense. Inert. Extensively used in batteries.\nNote: Likely toxic to biological life forms. Not that there are many left here.
item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux. item.metaglass.description = Used in liquid distribution/storage structures.
item.coal.description = Fossilized plant matter, formed long before the seeding event. Used extensively for fuel and resource production. item.graphite.description = Used in electrical components and turret ammunition.
item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft. item.sand.description = Used for production of other refined materials.
item.thorium.description = A dense, radioactive metal used as structural support and nuclear fuel. item.coal.description = Used for fuel and refined material production.
item.scrap.description = Leftover remnants of old structures and units. Contains trace amounts of many different metals. item.coal.details = Appears to be fossilized plant matter, formed long before the seeding event.
item.silicon.description = An extremely useful semiconductor. Applications in solar panels, complex electronics and homing turret ammunition. item.titanium.description = Used in liquid transportation structures, drills and aircraft.
item.plastanium.description = A light, ductile material used in advanced aircraft and fragmentation ammunition. item.thorium.description = Used in durable structures and as nuclear fuel.
item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology. item.scrap.description = Melted down and refined into other materials.
item.surge-alloy.description = An advanced alloy with unique electrical properties. item.scrap.details = Leftover remnants of old structures and units.
item.spore-pod.description = A pod of synthetic spores, synthesized from atmospheric concentrations for industrial purposes. Used for conversion into oil, explosives and fuel. item.silicon.description = Used in solar panels, complex electronics and homing turret ammunition.
item.blast-compound.description = An unstable compound used in bombs and explosives. Synthesized from spore pods and other volatile substances. Use as fuel is not advised. item.plastanium.description = Used in advanced units, insulation and fragmentation ammunition.
item.pyratite.description = An extremely flammable substance used in incendiary weapons. item.phase-fabric.description = Used in advanced electronics and self-repairing structures.
liquid.water.description = The most useful liquid. Commonly used for cooling machines and waste processing. item.surge-alloy.description = Used in advanced weaponry and reactive defense structures.
liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. item.spore-pod.description = Used for conversion into oil, explosives and fuel.
liquid.oil.description = A liquid used in advanced material production. Can be converted into coal as fuel, or sprayed and set on fire as a weapon. item.spore-pod.details = Spores. Likely a synthetic life form. Emit gases toxic to other biological life. Extremely invasive. Highly flammable in certain conditions.
liquid.cryofluid.description = An inert, non-corrosive liquid created from water and titanium. Has extremely high heat capacity. Extensively used as coolant. item.blast-compound.description = Used in bombs and explosive ammunition.
item.pyratite.description = Used in incendiary weapons and combustion-fueled generators.
liquid.water.description = Used for cooling machines and waste processing.
liquid.slag.description = Refined in separators into constituent metals, or sprayed at enemies as a weapon.
liquid.oil.description = Used in advanced material production and as incendiary ammunition.
liquid.cryofluid.description = Used as coolant in reactors, turrets and factories.
block.message.description = Stores a message. Used for communication between allies. block.armored-conveyor.description = Moves items forward. Does not accept inputs from the sides.
block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. block.illuminator.description = Emits light.
block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. block.message.description = Stores a message for communication between allies.
block.silicon-smelter.description = Reduces sand with pure coal. Produces silicon. block.graphite-press.description = Compresses coal into graphite.
block.kiln.description = Smelts sand and lead into the compound known as metaglass. Requires small amounts of power to run. block.multi-press.description = Compresses coal into graphite. Requires water as coolant.
block.silicon-smelter.description = Refines silicon from sand and coal.
block.kiln.description = Smelts sand and lead into metaglass.
block.plastanium-compressor.description = Produces plastanium from oil and titanium. block.plastanium-compressor.description = Produces plastanium from oil and titanium.
block.phase-weaver.description = Synthesizes phase fabric from radioactive thorium and sand. Requires massive amounts of power to function. block.phase-weaver.description = Synthesizes phase fabric from thorium and sand.
block.alloy-smelter.description = Combines titanium, lead, silicon and copper to produce surge alloy. block.alloy-smelter.description = Fuses titanium, lead, silicon and copper into surge alloy.
block.cryofluid-mixer.description = Mixes water and fine titanium powder into cryofluid. Essential for thorium reactor usage. block.cryofluid-mixer.description = Mixes water and fine titanium powder to produce cryofluid.
block.blast-mixer.description = Crushes and mixes clusters of spores with pyratite to produce blast compound. block.blast-mixer.description = Produces blast compound from pyratite and spore pods.
block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite. block.pyratite-mixer.description = Mixes coal, lead and sand into pyratite.
block.melter.description = Melts down scrap into slag for further processing or usage in wave turrets. block.melter.description = Melts down scrap into slag.
block.separator.description = Separates slag into its mineral components. Outputs the cooled result. block.separator.description = Separates slag into its mineral components.
block.spore-press.description = Compresses spore pods under extreme pressure to synthesize oil. block.spore-press.description = Compresses spore pods into oil.
block.pulverizer.description = Crushes scrap into fine sand. block.pulverizer.description = Crushes scrap into fine sand.
block.coal-centrifuge.description = Solidifes oil into chunks of coal. block.coal-centrifuge.description = Transforms oil into coal.
block.incinerator.description = Vaporizes any excess item or liquid it receives. block.incinerator.description = Vaporizes any item or liquid it receives.
block.power-void.description = Voids all power inputted into it. Sandbox only. block.power-void.description = Voids all power inputted.
block.power-source.description = Infinitely outputs power. Sandbox only. block.power-source.description = Infinitely outputs power. Sandbox only.
block.item-source.description = Infinitely outputs items. Sandbox only. block.item-source.description = Infinitely outputs items. Sandbox only.
block.item-void.description = Destroys any items. Sandbox only. block.item-void.description = Destroys any items. Sandbox only.
block.liquid-source.description = Infinitely outputs liquids. Sandbox only. block.liquid-source.description = Infinitely outputs liquids. Sandbox only.
block.liquid-void.description = Removes any liquids. Sandbox only. block.liquid-void.description = Removes any liquids. Sandbox only.
block.copper-wall.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves. block.copper-wall.description = Protects structures from enemy projectiles.
block.copper-wall-large.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves.\nSpans multiple tiles. block.copper-wall-large.description = Protects structures from enemy projectiles.
block.titanium-wall.description = A moderately strong defensive block.\nProvides moderate protection from enemies. block.titanium-wall.description = Protects structures from enemy projectiles.
block.titanium-wall-large.description = A moderately strong defensive block.\nProvides moderate protection from enemies.\nSpans multiple tiles. block.titanium-wall-large.description = Protects structures from enemy projectiles.
block.plastanium-wall.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections. block.plastanium-wall.description = Protects structures from enemy projectiles. Absorbs lasers and electric arcs. Blocks automatic power connections.
block.plastanium-wall-large.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections.\nSpans multiple tiles. block.plastanium-wall-large.description = Protects structures from enemy projectiles. Absorbs lasers and electric arcs. Blocks automatic power connections.
block.thorium-wall.description = A strong defensive block.\nDecent protection from enemies. block.thorium-wall.description = Protects structures from enemy projectiles.
block.thorium-wall-large.description = A strong defensive block.\nDecent protection from enemies.\nSpans multiple tiles. block.thorium-wall-large.description = Protects structures from enemy projectiles.
block.phase-wall.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact. block.phase-wall.description = Protects structures from enemy projectiles, reflecting most bullets upon impact.
block.phase-wall-large.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact.\nSpans multiple tiles. block.phase-wall-large.description = Protects structures from enemy projectiles, reflecting most bullets upon impact.
block.surge-wall.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly. block.surge-wall.description = Protects structures from enemy projectiles, periodically releasing electric arcs upon contact.
block.surge-wall-large.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly.\nSpans multiple tiles. block.surge-wall-large.description = Protects structures from enemy projectiles, periodically releasing electric arcs upon contact.
block.door.description = A small door. Can be opened or closed by tapping. block.door.description = A wall that can be opened and closed.
block.door-large.description = A large door. Can be opened and closed by tapping.\nSpans multiple tiles. block.door-large.description = A wall that can be opened and closed.
block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. block.mender.description = Periodically repairs blocks in its vicinity.\nOptionally uses silicon to boost range and efficiency.
block.mend-projector.description = An upgraded version of the Mender. Repairs blocks in its vicinity.\nOptionally uses phase fabric to boost range and efficiency. block.mend-projector.description = Repairs blocks in its vicinity.\nOptionally uses phase fabric to boost range and efficiency.
block.overdrive-projector.description = Increases the speed of nearby buildings.\nOptionally uses phase fabric to boost range and efficiency. block.overdrive-projector.description = Increases the speed of nearby buildings.\nOptionally uses phase fabric to boost range and efficiency.
block.force-projector.description = Creates a hexagonal force field around itself, protecting buildings and units inside from damage.\nOverheats if too much damage is sustained. Optionally uses coolant to prevent overheating. Phase fabric can be used to increase shield size. block.force-projector.description = Creates a hexagonal force field around itself, protecting buildings and units inside from damage.\nOverheats if too much damage is sustained. Optionally uses coolant to prevent overheating. Phase fabric increases shield size.
block.shock-mine.description = Damages enemies stepping on the mine. Nearly invisible to the enemy. block.shock-mine.description = Releases electric arcs upon enemy unit contact.
block.conveyor.description = Basic item transport block. Moves items forward and automatically deposits them into blocks. Rotatable. block.conveyor.description = Transports items forward.
block.titanium-conveyor.description = Advanced item transport block. Moves items faster than standard conveyors. block.titanium-conveyor.description = Transports items forward. Faster than a standard conveyor.
block.plastanium-conveyor.description = Moves items in batches.\nAccepts items at the back, and unloads them in three directions at the front.\nRequires multiple loading and unloading points for peak throughput. block.plastanium-conveyor.description = Transports items forward in batches. Accepts items at the back, and unloads them in three directions at the front. Requires multiple loading and unloading points for peak throughput.
block.junction.description = Acts as a bridge for two crossing conveyor belts. Useful in situations with two different conveyors carrying different materials to different locations. block.junction.description = Acts as a bridge for two crossing conveyor belts.
block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.bridge-conveyor.description = Transports items over terrain or buildings.
block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. block.phase-conveyor.description = Instantly transports items over terrain or buildings. Longer range than the item bridge, but requires power.
block.sorter.description = Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right. block.sorter.description = If an input item matches the selection, it passes forward. Otherwise, the item is outputted to the left and right.
block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead. block.inverted-sorter.description = Similar to a standard sorter, but outputs selected items to the sides instead.
block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[] block.router.description = Distributes input items to 3 output directions equally.
block.distributor.description = An advanced router. Splits items to up to 7 other directions equally. block.router.details = A necessary evil. Using next to production inputs is not advised, as they will get clogged by output.
block.overflow-gate.description = Only outputs to the left and right if the front path is blocked. block.distributor.description = Distributes input items to 7 output directions equally.
block.underflow-gate.description = The opposite of an overflow gate. Outputs to the front if the left and right paths are blocked. block.overflow-gate.description = Only outputs items to the left and right if the front path is blocked.
block.mass-driver.description = The ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. Requires power to operate. block.underflow-gate.description = Opposite of an overflow gate. Outputs to the front if the left and right paths are blocked.
block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. block.mass-driver.description = Long-range item transport structure. Collects batches of items and shoots them to other mass drivers.
block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power. block.mechanical-pump.description = Pumps and outputs liquids. Does not require power.
block.thermal-pump.description = The ultimate pump. block.rotary-pump.description = Pumps and outputs liquids. Requires power.
block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits. block.thermal-pump.description = Pumps and outputs liquids.
block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits. block.conduit.description = Moves liquids forward. Used in conjunction with pumps and other conduits.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nDoes not leak. block.pulse-conduit.description = Moves liquids forward. Transports faster and stores more than standard conduits.
block.liquid-router.description = Accepts liquids from one direction and outputs them to up to 3 other directions equally. Can also store a certain amount of liquid. Useful for splitting the liquids from one source to multiple targets. block.plated-conduit.description = Moves liquids forward. Does not accept input from the sides. Does not leak.
block.liquid-tank.description = Stores a large amount of liquids. Use for creating buffers in situations with non-constant demand of materials or as a safeguard for cooling vital blocks. block.liquid-router.description = Accepts liquids from one direction and outputs them to up to 3 other directions equally. Can also store a certain amount of liquid.
block.liquid-junction.description = Acts as a bridge for two crossing conduits. Useful in situations with two different conduits carrying different liquids to different locations. block.liquid-tank.description = Stores a large amount of liquid. Outputs to all sides, similarly to a liquid router.
block.bridge-conduit.description = Advanced liquid transport block. Allows transporting liquids over up to 3 tiles of any terrain or building. block.liquid-junction.description = Acts as a bridge for two crossing conduits.
block.phase-conduit.description = Advanced liquid transport block. Uses power to teleport liquids to a connected phase conduit over several tiles. block.bridge-conduit.description = Transports liquids over terrain or buildings.
block.phase-conduit.description = Transports liquids over terrain or buildings. Longer range than the bridge conduit, but requires power.
block.power-node.description = Transmits power to connected nodes. The node will receive power from or supply power to any adjacent blocks. block.power-node.description = Transmits power to connected nodes. The node will receive power from or supply power to any adjacent blocks.
block.power-node-large.description = An advanced power node with greater range. block.power-node-large.description = An advanced power node with greater range.
block.surge-tower.description = An extremely long-range power node with fewer available connections. block.surge-tower.description = A long-range power node with fewer available connections.
block.diode.description = Battery power can flow through this block in only one direction, but only if the other side has less power stored. block.diode.description = Moves battery power in one direction, but only if the other side has less power stored.
block.battery.description = Stores power as a buffer in times of surplus energy. Outputs power in times of deficit. block.battery.description = Stores power in times of surplus energy. Outputs power in times of deficit.
block.battery-large.description = Stores much more power than a regular battery. block.battery-large.description = Stores power in times of surplus energy. Outputs power in times of deficit. Higher capacity than a regular battery.
block.combustion-generator.description = Generates power by burning flammable materials, such as coal. block.combustion-generator.description = Generates power by burning flammable materials, such as coal.
block.thermal-generator.description = Generates power when placed in hot locations. block.thermal-generator.description = Generates power when placed in hot locations.
block.steam-generator.description = An advanced combustion generator. More efficient, but requires additional water for generating steam. block.steam-generator.description = Generates power by burning flammable materials and converting water to steam.
block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite. block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite.
block.rtg-generator.description = A simple, reliable generator. Uses the heat of decaying radioactive compounds to produce energy at a slow rate. block.rtg-generator.description = Uses the heat of decaying radioactive compounds to produce energy at a slow rate.
block.solar-panel.description = Provides a small amount of power from the sun. block.solar-panel.description = Provides a small amount of power from the sun.
block.solar-panel-large.description = A significantly more efficient version of the standard solar panel. block.solar-panel-large.description = Provides a small amount of power from the sun. More efficient than the standard solar panel.
block.thorium-reactor.description = Generates significant amounts of power from thorium. Requires constant cooling. Will explode violently if insufficient amounts of coolant are supplied. Power output depends on fullness, with base power generated at full capacity. block.thorium-reactor.description = Generates significant amounts of power from thorium. Requires constant cooling. Will explode violently if insufficient amounts of coolant are supplied.
block.impact-reactor.description = An advanced generator, capable of creating massive amounts of power at peak efficiency. Requires a significant power input to kickstart the process. block.impact-reactor.description = Creates massive amounts of power at peak efficiency. Requires a significant power input to kickstart the process.
block.mechanical-drill.description = A cheap drill. When placed on appropriate tiles, outputs items at a slow pace indefinitely. Only capable of mining basic resources. block.mechanical-drill.description = When placed on ore, outputs items at a slow pace indefinitely. Only capable of mining basic resources.
block.pneumatic-drill.description = An improved drill, capable of mining titanium. Mines at a faster pace than a mechanical drill. block.pneumatic-drill.description = An improved drill, capable of mining titanium. Mines at a faster pace than a mechanical drill.
block.laser-drill.description = Allows drilling even faster through laser technology, but requires power. Capable of mining thorium. block.laser-drill.description = Allows drilling even faster through laser technology, but requires power. Capable of mining thorium.
block.blast-drill.description = The ultimate drill. Requires large amounts of power. block.blast-drill.description = The ultimate drill. Requires large amounts of power.
block.water-extractor.description = Extracts groundwater. Used in locations with no surface water available. block.water-extractor.description = Extracts groundwater. Used in locations with no surface water available.
block.cultivator.description = Cultivates tiny concentrations of spores in the atmosphere into industry-ready pods. block.cultivator.description = Cultivates tiny concentrations of atmospheric spores into spore pods.
block.cultivator.details = Recovered technology. Used to produce massive amounts of biomass as efficiently as possible. Likely the initial incubator of the spores now covering Serpulo.
block.oil-extractor.description = Uses large amounts of power, sand and water to drill for oil. block.oil-extractor.description = Uses large amounts of power, sand and water to drill for oil.
block.core-shard.description = The first iteration of the core capsule. Once destroyed, all contact to the region is lost. Do not let this happen. block.core-shard.description = Core of the base. Once destroyed, the sector is lost.
block.core-foundation.description = The second version of the core. Better armored. Stores more resources. block.core-shard.details = The first iteration. Compact. Self-replicating. Equipped with single-use launch thrusters. Not designed for interplanetary travel.
block.core-nucleus.description = The third and final iteration of the core capsule. Extremely well armored. Stores massive amounts of resources. block.core-foundation.description = Core of the base. Well armored. Stores more resources than a Shard.
block.vault.description = Stores a large amount of items of each type. An unloader block can be used to retrieve items from the vault. block.core-foundation.details = The second iteration.
block.container.description = Stores a small amount of items of each type. An unloader block can be used to retrieve items from the container. block.core-nucleus.description = Core of the base. Extremely well armored. Stores massive amounts of resources.
block.unloader.description = Unloads items from any nearby non-transportation block. The type of item to be unloaded can be changed by tapping. block.core-nucleus.details = The third and final iteration.
block.launch-pad.description = Launches batches of items without any need for a core launch. block.vault.description = Stores a large amount of items of each type. Contents can be retrieved with an unloader.
block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently. block.container.description = Stores a small amount of items of each type. Contents can be retrieved with an unloader.
block.duo.description = A small, cheap turret. Useful against ground units. block.unloader.description = Unloads the selected item from nearby blocks.
block.scatter.description = An essential anti-air turret. Sprays clumps of lead, scrap or metaglass flak at enemy units. block.launch-pad.description = Launches batches of items to selected sectors.
block.duo.description = Fires alternating bullets at enemies.
block.scatter.description = Fires clumps of lead, scrap or metaglass flak at enemy aircraft.
block.scorch.description = Burns any ground enemies close to it. Highly effective at close range. block.scorch.description = Burns any ground enemies close to it. Highly effective at close range.
block.hail.description = A small, long-range artillery turret. block.hail.description = Fires small shells at ground enemies over long distances.
block.wave.description = A medium-sized turret. Shoots streams of liquid at enemies. Automatically extinguishes fires when supplied with water. block.wave.description = Fires streams of liquid at enemies. Automatically extinguishes fires when supplied with water.
block.lancer.description = A medium-sized anti-ground laser turret. Charges and fires powerful beams of energy. block.lancer.description = Charges and fires powerful beams of energy at ground targets.
block.arc.description = A small close-range electric turret. Fires arcs of electricity at enemies. block.arc.description = Fires arcs of electricity at ground targets.
block.swarmer.description = A medium-sized missile turret. Attacks both air and ground enemies. Fires homing missiles. block.swarmer.description = Fires homing missiles at enemies.
block.salvo.description = A larger, more advanced version of the Duo turret. Fires quick salvos of bullets at the enemy. block.salvo.description = Fires quick salvos of bullets at enemies.
block.fuse.description = A large, close-range shrapnel turret. Fires three piercing blasts at nearby enemies. block.fuse.description = Fires three close-range piercing blasts at nearby enemies.
block.ripple.description = An extremely powerful artillery turret. Shoots clusters of shells at enemies over long distances. block.ripple.description = Shoots clusters of shells at ground enemies over long distances.
block.cyclone.description = A large anti-air and anti-ground turret. Fires explosive clumps of flak at nearby units. block.cyclone.description = Fires explosive clumps of flak at nearby enemies.
block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. block.spectre.description = Fires large armor-piercing bullets at air and ground targets.
block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. block.meltdown.description = Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.foreshadow.description = Fires a large single-target bolt over long distances.
block.repair-point.description = Continuously repairs the closest damaged unit in its vicinity.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.
block.parallax.description = Fires a tractor beam that pulls in air targets, damaging them in the process.
block.tsunami.description = Fires powerful streams of liquid at enemies. Automatically extinguishes fires when supplied with water.
block.silicon-crucible.description = Refines silicon from sand and coal, using pyratite as an additional heat source. More efficient in hot locations.
block.disassembler.description = Separates slag into trace amounts of exotic mineral components at low efficiency. Can produce thorium.
block.overdrive-dome.description = Increases the speed of nearby buildings. Requires phase fabric and silicon to operate.
block.payload-conveyor.description = Moves large payloads, such as units from factories.
block.payload-router.description = Splits input payloads into 3 output directions.
block.command-center.description = Controls unit behavior with several different commands.
block.ground-factory.description = Produces ground units. Output units can be used directly, or moved into reconstructors for upgrading.
block.air-factory.description = Produces air units. Output units can be used directly, or moved into reconstructors for upgrading.
block.naval-factory.description = Produces naval units. Output units can be used directly, or moved into reconstructors for upgrading.
block.additive-reconstructor.description = Upgrades inputted units to the second tier.
block.multiplicative-reconstructor.description = Upgrades inputted units to the third tier.
block.exponential-reconstructor.description = Upgrades inputted units to the fourth tier.
block.tetrative-reconstructor.description = Upgrades inputted units to the fifth and final tier.
block.switch.description = A toggleable switch. State can be read and controlled with logic processors.
block.micro-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings.
block.logic-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings. Faster than the micro processor.
block.hyper-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings. Faster than the logic processor.
block.memory-cell.description = Stores information for a logic processor.
block.memory-bank.description = Stores information for a logic processor. High capacity.
block.logic-display.description = Displays arbitrary graphics from a logic processor.
block.large-logic-display.description = Displays arbitrary graphics from a logic processor.
unit.dagger.description = Fires standard bullets at all nearby enemies.
unit.mace.description = Fires streams of flame at all nearby enemies.
unit.fortress.description = Fires long-range artillery at ground targets.
unit.scepter.description = Fires a barrage of charged bullets at all nearby enemies.
unit.reign.description = Fires a barrage of massive piercing bullets at all nearby enemies.
unit.nova.description = Fires laser bolts that damage enemies and repair allied structures. Capable of flight.
unit.pulsar.description = Fires arcs of electricity that damage enemies and repair allied structures. Capable of flight.
unit.quasar.description = Fires piercing laser beams that damage enemies and repair allied structures. Capable of flight. Shielded.
unit.vela.description = Fires a massive continuous laser beam that damages enemies, causes fires and repair allied structures. Capable of flight.
unit.corvus.description = Fires a massive laser blast that damages enemies and repairs allied structures. Can step over most terrain.
unit.crawler.description = Runs toward enemies and self-destructs, causing a large explosion.
unit.atrax.description = Fires debilitating orbs of slag at ground targets. Can step over most terrain.
unit.spiroct.description = Fires sapping laser beams at enemies, repairing itself in the process. Can step over most terrain.
unit.arkyid.description = Fires large sapping laser beams at enemies, repairing itself in the process. Can step over most terrain.
unit.toxopid.description = Fires large electric cluster-shells and piercing lasers at enemies. Can step over most terrain.
unit.flare.description = Fires standard bullets at nearby ground targets.
unit.horizon.description = Drops clusters of bombs on ground targets.
unit.zenith.description = Fires salvos of missiles 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.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.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.oct.description = Protects nearby allies with its regenerating shield. Capable of carrying most ground units.
unit.risso.description = Fires a barrage of missiles and bullets at all nearby enemies.
unit.minke.description = Fires incendiary shells and standard bullets at nearby ground targets.
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.

View File

@@ -350,6 +350,7 @@ waves.invalid = Neplatné vlny ve schránce.
waves.copied = Vlny byly zkopírovány. waves.copied = Vlny byly zkopírovány.
waves.none = Žádní nepřátelé nebyli definováni.\nVlny s prázdným rozložením budou automaticky upraveny na výchozí rozložení. waves.none = Žádní nepřátelé nebyli definováni.\nVlny s prázdným rozložením budou automaticky upraveny na výchozí rozložení.
#toto je záměrně malými písmeny
wavemode.counts = počty wavemode.counts = počty
wavemode.totals = součty wavemode.totals = součty
wavemode.health = zdraví wavemode.health = zdraví
@@ -419,9 +420,9 @@ toolmode.drawteams.description = Kreslí týmy místo bloků.
filters.empty = [lightgray]Nejsou zadány žádné filtry, přidej filtr tlačítkem níže.[] filters.empty = [lightgray]Nejsou zadány žádné filtry, přidej filtr tlačítkem níže.[]
filter.distort = Zkreslení filter.distort = Zkreslení
filter.noise = Zašumění filter.noise = Zašumění
filter.enemyspawn = Enemy Spawn Select filter.enemyspawn = Výběr nepřítelské líhně
filter.spawnpath = Path To Spawn filter.spawnpath = Cesta k líhni
filter.corespawn = Core Select filter.corespawn = Váběr ládra
filter.median = Medián filter.median = Medián
filter.oremedian = Medián rud filter.oremedian = Medián rud
filter.blend = Prolnutí filter.blend = Prolnutí
@@ -445,7 +446,7 @@ filter.option.amount = Amount
filter.option.block = Blok filter.option.block = Blok
filter.option.floor = Povrch filter.option.floor = Povrch
filter.option.flooronto = Cílový povrch filter.option.flooronto = Cílový povrch
filter.option.target = Target filter.option.target = Cíl
filter.option.wall = Stěna filter.option.wall = Stěna
filter.option.ore = Ruda filter.option.ore = Ruda
filter.option.floor2 = Druhotný povrch filter.option.floor2 = Druhotný povrch
@@ -482,6 +483,7 @@ launch.text = Vyslat
research.multiplayer = Jen hostitel hry může vynalézat nové technologie. research.multiplayer = Jen hostitel hry může vynalézat nové technologie.
uncover = Odkrýt mapu uncover = Odkrýt mapu
configure = Přizpůsobit vybavení configure = Přizpůsobit vybavení
#TODO
loadout = Načtení loadout = Načtení
resources = Zdroje resources = Zdroje
bannedblocks = Zakázané bloky bannedblocks = Zakázané bloky
@@ -512,7 +514,7 @@ weather.rain.name = Déšť
weather.snow.name = Sníh weather.snow.name = Sníh
weather.sandstorm.name = Písečná ouře weather.sandstorm.name = Písečná ouře
weather.sporestorm.name = Spórová bouře weather.sporestorm.name = Spórová bouře
weather.fog.name = Fog weather.fog.name = Mlha
sectors.unexplored = [lightgray]Neprozkoumáno sectors.unexplored = [lightgray]Neprozkoumáno
sectors.resources = Zdroje: sectors.resources = Zdroje:
@@ -523,11 +525,13 @@ sectors.launch = Vyslat
sectors.select = Vybrat sectors.select = Vybrat
sectors.nonelaunch = [lightgray]bez (slunce)[] sectors.nonelaunch = [lightgray]bez (slunce)[]
sectors.rename = Přejmenovat sektor sectors.rename = Přejmenovat sektor
sector.missingresources = [scarlet]Insufficient Core Resources sector.missingresources = [scarlet]Nedostatečné zdroje v jádře[]
planet.serpulo.name = Serpulo planet.serpulo.name = Serpulo
#TODO better name
planet.sun.name = Sol planet.sun.name = Sol
#NOTE TO TRANSLATORS: don't bother editing these, they'll be removed and/or rewritten anyway
sector.groundZero.name = Základní tábor sector.groundZero.name = Základní tábor
sector.craters.name = Krátery sector.craters.name = Krátery
sector.frozenForest.name = Zamrzlý les sector.frozenForest.name = Zamrzlý les
@@ -540,6 +544,10 @@ sector.tarFields.name = Dehtová pole
sector.saltFlats.name = Solné nížiny sector.saltFlats.name = Solné nížiny
sector.fungalPass.name = Plísňový průsmyk sector.fungalPass.name = Plísňový průsmyk
#unused
#sector.impact0078.name = Impact 0078
#sector.crags.name = Crags
sector.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál. sector.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál.
sector.frozenForest.description = Dokonce až sem, blízko hor, se dokázaly spóry rozrůst. Mráz je však nemůže zadržet navěky.\n\nPusť se do práce za pomocí energie. Stav spalovací generátory. Nauč se, jak používat opravovací věže. sector.frozenForest.description = Dokonce až sem, blízko hor, se dokázaly spóry rozrůst. Mráz je však nemůže zadržet navěky.\n\nPusť se do práce za pomocí energie. Stav spalovací generátory. Nauč se, jak používat opravovací věže.
sector.saltFlats.description = Na okraji pouště leží Solné nížiny. V této lokaci se nachází jen několik málo surovin.\n\nNepřítel zde vybudoval zásobovací komplex. Znič jádro v jeho základně. Nenechej kámen na kameni. sector.saltFlats.description = Na okraji pouště leží Solné nížiny. V této lokaci se nachází jen několik málo surovin.\n\nNepřítel zde vybudoval zásobovací komplex. Znič jádro v jeho základně. Nenechej kámen na kameni.
@@ -566,14 +574,13 @@ settings.clear.confirm = Jsi si jistý, že chceš vymazat Tvá data ve hře?\nT
settings.clearall.confirm = [scarlet]Varování![]\nToto vyresetuje všechna Tvá data ve hře, včetně uložení hry, map, odemknutého postupu v kampani a nastavení ovládání.\nJakmile stiskneš "OK", všechna data se vymažou a hra se automaticky ukončí. settings.clearall.confirm = [scarlet]Varování![]\nToto vyresetuje všechna Tvá data ve hře, včetně uložení hry, map, odemknutého postupu v kampani a nastavení ovládání.\nJakmile stiskneš "OK", všechna data se vymažou a hra se automaticky ukončí.
settings.clearsaves.confirm = Opravdu chceš vymazat veškeré Tvé uložené hry? settings.clearsaves.confirm = Opravdu chceš vymazat veškeré Tvé uložené hry?
settings.clearsaves = Vymazat uložené hry settings.clearsaves = Vymazat uložené hry
settings.clearresearch = Clear Research settings.clearresearch = Vymazat výzkum
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research? settings.clearresearch.confirm = Jsi si jist, že opravdu chceš vymazat veškerý dosažený výzkum v této kampani?
settings.clearcampaignsaves = Clear Campaign Saves settings.clearcampaignsaves = Vymazat uložené hry kampaně
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves? settings.clearcampaignsaves.confirm = Jsi si jist, že opravdu chceš vymazat všechny uložené hry v této kampani?
paused = [accent]< Pozastaveno >[] paused = [accent]< Pozastaveno >[]
clear = Vyčistit clear = Vyčistit
banned = [scarlet]Zakázán[] banned = [scarlet]Zakázán[]
unplaceable.sectorcaptured = [scarlet]Vyžaduje polapený sektor[]
yes = Ano yes = Ano
no = Ne no = Ne
info.title = Informace info.title = Informace
@@ -626,28 +633,30 @@ stat.reload = Střel za 1s
stat.ammo = Střelivo stat.ammo = Střelivo
stat.shieldhealth = Zdraví štítu stat.shieldhealth = Zdraví štítu
stat.cooldowntime = Čas na zchladnutí stat.cooldowntime = Čas na zchladnutí
stat.explosiveness = Explosiveness stat.explosiveness = Výbušnost
stat.basedeflectchance = Base Deflect Chance stat.basedeflectchance = Základní pravděpobnost odražení
stat.lightningchance = Lightning Chance stat.lightningchance = Pravděpodobnost blesku
stat.lightningdamage = Lightning Damage stat.lightningdamage = Poškození bleskem
stat.flammability = Flammability stat.flammability = Hořlavost
stat.radioactivity = Radioactivity stat.radioactivity = Radioaktivita
stat.heatcapacity = HeatCapacity stat.heatcapacity = Tepelná kapacita
stat.viscosity = Viscosity stat.viscosity = Vazkost
stat.temperature = Temperature stat.temperature = Teplota
stat.speed = Speed stat.speed = Rychlost
stat.buildspeed = Build Speed stat.buildspeed = Rychlost stavění
stat.minespeed = Mine Speed stat.minespeed = Rychlost těžení
stat.minetier = Mine Tier stat.minetier = Těžící úroveň
stat.payloadcapacity = Payload Capacity stat.payloadcapacity = Kapacita pro náklad
stat.commandlimit = Command Limit stat.commandlimit = Limit ovládání
stat.abilities = Abilities stat.abilities = Schopnosti
stat.canboost = Umí posilovat
stat.flying = Létající
ability.forcefield = Force Field ability.forcefield = Silové pole
ability.repairfield = Repair Field ability.repairfield = Opravit pole
ability.statusfield = Status Field ability.statusfield = Stav pole
ability.unitspawn = {0} Factory ability.unitspawn = {0} továrna
ability.shieldregenfield = Shield Regen Field ability.shieldregenfield = Silově opravné pole
bar.drilltierreq = Je vyžadován lepší vrt bar.drilltierreq = Je vyžadován lepší vrt
bar.noresources = Chybějí zdroje bar.noresources = Chybějí zdroje
@@ -688,7 +697,7 @@ bullet.multiplier = [stat]{0}[lightgray]x více střel[]
bullet.reload = [stat]{0}[lightgray]x rychlost střelby[] bullet.reload = [stat]{0}[lightgray]x rychlost střelby[]
unit.blocks = bloky unit.blocks = bloky
unit.blockssquared = blocks² unit.blockssquared = bloky²
unit.powersecond = energie/sekunda unit.powersecond = energie/sekunda
unit.liquidsecond = kapalin/sekundu unit.liquidsecond = kapalin/sekundu
unit.itemssecond = předmětů/sekundu unit.itemssecond = předmětů/sekundu
@@ -711,7 +720,7 @@ category.power = Energie
category.liquids = Kapaliny category.liquids = Kapaliny
category.items = Předměty category.items = Předměty
category.crafting = Vstup/Výstup category.crafting = Vstup/Výstup
category.function = Function category.function = Funkce
category.optional = Volitelné vylepšení category.optional = Volitelné vylepšení
setting.landscape.name = Uzamknout krajinu setting.landscape.name = Uzamknout krajinu
setting.shadows.name = Stíny setting.shadows.name = Stíny
@@ -719,8 +728,9 @@ setting.blockreplace.name = Automatický návrh bloků
setting.linear.name = Lineární filtrování setting.linear.name = Lineární filtrování
setting.hints.name = Rady a tipy setting.hints.name = Rady a tipy
setting.flow.name = Zobrazit rychlost toku zdroje [scarlet](experimentální)[] setting.flow.name = Zobrazit rychlost toku zdroje [scarlet](experimentální)[]
setting.backgroundpause.name = Pozastavit na pozadí
setting.buildautopause.name = Automaticky pozastavit stavění setting.buildautopause.name = Automaticky pozastavit stavění
setting.animatedwater.name = Animované tekutiny setting.animatedwater.name = Animované povrchy
setting.animatedshields.name = Animované štíty setting.animatedshields.name = Animované štíty
setting.antialias.name = Použít antialias [lightgray](vyžaduje restart)[] setting.antialias.name = Použít antialias [lightgray](vyžaduje restart)[]
setting.playerindicators.name = Indikátor pro hráče setting.playerindicators.name = Indikátor pro hráče

View File

@@ -20,8 +20,8 @@ gameover = Der Kern wurde zerstört.
gameover.pvp = Das[accent] {0}[] Team ist siegreich! gameover.pvp = Das[accent] {0}[] Team ist siegreich!
highscore = [accent]Neuer Highscore! highscore = [accent]Neuer Highscore!
copied = Kopiert. copied = Kopiert.
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]v6[] ist gerade in der [accent]Beta-Phase[].\n[lightgray]Das bedeutet:[]\n[scarlet]- Die Kampagne ist unfertig[]\n- Musik/SFX sind unfertig\n- Alles kann jederzeit verändert oder entfernt werden\n\nMelde Bugs und Abstürze auf [accent]Github[].
indev.notready = This part of the game isn't ready yet indev.notready = Dieser Teil vom Spiel ist noch unfertig.
load.sound = Audio load.sound = Audio
load.map = Karten load.map = Karten
@@ -55,7 +55,7 @@ schematic.saved = Entwurf gespeichert.
schematic.delete.confirm = Dieser Entwurf wird vollständig vernichtet. schematic.delete.confirm = Dieser Entwurf wird vollständig vernichtet.
schematic.rename = Entwurf umbenennen schematic.rename = Entwurf umbenennen
schematic.info = {0}x{1}, {2} Blöcke schematic.info = {0}x{1}, {2} Blöcke
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.disabled = [scarlet]Entwürfe deaktiviert[]\nAuf dieser [accent]Karte[] oder [accent]Server[] dürfen keine Entwürfe verwendet werden.
stat.wave = Wellen besiegt:[accent] {0} stat.wave = Wellen besiegt:[accent] {0}
stat.enemiesDestroyed = Gegner zerstört:[accent] {0} stat.enemiesDestroyed = Gegner zerstört:[accent] {0}
@@ -63,15 +63,15 @@ stat.built = Gebäude gebaut:[accent] {0}
stat.destroyed = Gebäude zerstört:[accent] {0} stat.destroyed = Gebäude zerstört:[accent] {0}
stat.deconstructed = Gebäude abgebaut:[accent] {0} stat.deconstructed = Gebäude abgebaut:[accent] {0}
stat.delivered = Übertragene Ressourcen: stat.delivered = Übertragene Ressourcen:
stat.playtime = Time Played:[accent] {0} stat.playtime = Spielzeit:[accent] {0}
stat.rank = Finaler Rang:[accent] {0} stat.rank = Finaler Rang:[accent] {0}
globalitems = [accent]Global Items globalitems = [accent]Globale Items
map.delete = Bist du sicher, dass du die Karte "[accent]{0}[]" löschen möchtest? map.delete = Bist du sicher, dass du die Karte "[accent]{0}[]" löschen möchtest?
level.highscore = Highscore: [accent]{0} level.highscore = Highscore: [accent]{0}
level.select = Level-Auswahl level.select = Level-Auswahl
level.mode = Spielmodus: level.mode = Spielmodus:
coreattack = < Die Basis wird angegriffen! > coreattack = < Der Kern wird angegriffen! >
nearpoint = [[ [scarlet]SOFORT DEN SPAWNPUNKT VERLASSEN[] ]\nVernichtung droht nearpoint = [[ [scarlet]SOFORT DEN SPAWNPUNKT VERLASSEN[] ]\nVernichtung droht
database = Kern-Datenbank database = Kern-Datenbank
savegame = Spiel speichern savegame = Spiel speichern
@@ -107,28 +107,28 @@ mods.guide = Modding-Anleitung
mods.report = Problem melden mods.report = Problem melden
mods.openfolder = Mod-Verzeichnis öffnen mods.openfolder = Mod-Verzeichnis öffnen
mods.reload = Neu laden mods.reload = Neu laden
mods.reloadexit = The game will now exit, to reload mods. mods.reloadexit = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden.
mod.display = [gray]Mod:[orange] {0} mod.display = [gray]Mod:[orange] {0}
mod.enabled = [lightgray]Aktiviert mod.enabled = [lightgray]Aktiviert
mod.disabled = [scarlet]Deaktiviert mod.disabled = [scarlet]Deaktiviert
mod.disable = Deaktivieren mod.disable = Deaktivieren
mod.content = Content: mod.content = Inhalt:
mod.delete.error = Unfähig Mod zu löschen. Datei könnte in Benutzung sein. mod.delete.error = Unfähig Mod zu löschen. Datei könnte in Benutzung sein.
mod.requiresversion = [scarlet]Benötigt mindestens Version:[accent] {0} mod.requiresversion = [scarlet]Benötigt mindestens Version:[accent] {0}
mod.outdated = [scarlet]Not compatible with V6 (no minGameVersion: 105) mod.outdated = [scarlet]Nicht mit V6 kompatibel (no minGameVersion: 105)
mod.missingdependencies = [scarlet]Fehlende Abhängigkeiten: {0} mod.missingdependencies = [scarlet]Fehlende Abhängigkeiten: {0}
mod.erroredcontent = [scarlet]Inhalt-Fehler mod.erroredcontent = [scarlet]Inhalt-Fehler
mod.errors = Beim Laden von Inhalt sind Fehler aufgetreten. mod.errors = Beim Laden von Inhalt sind Fehler aufgetreten.
mod.noerrorplay = [scarlet]Du hast Mods mit Fehlern.[] Deaktiviere die Mods oder fixe die Fehler, bevor du spielst. mod.noerrorplay = [scarlet]Du hast Mods mit Fehlern.[] Deaktiviere die Mods oder behebe die Fehler, bevor du spielst.
mod.nowdisabled = [scarlet]Mod '{0}' fehlen Abhängigkeiten:[accent] {1}\n[lightgray]Diese Mods müssen erst installiert werden.\nDieser Mod wird automatisch deaktiviert. mod.nowdisabled = [scarlet]Mod '{0}' fehlen Abhängigkeiten:[accent] {1}\n[lightgray]Diese Mods müssen erst installiert werden.\nDieser Mod wird automatisch deaktiviert.
mod.enable = Aktivieren mod.enable = Aktivieren
mod.requiresrestart = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden. mod.requiresrestart = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden.
mod.reloadrequired = [scarlet]Neuladen benötigt mod.reloadrequired = [scarlet]Neuladen benötigt
mod.import = Mod importieren mod.import = Mod importieren
mod.import.file = Import File mod.import.file = Datei importieren
mod.import.github = GitHub-Mod importieren mod.import.github = GitHub-Mod importieren
mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.jarwarn = [scarlet]JAR Mods sind nicht sicher.[]\nInstalliere nur Mods von vertrauenswürdigen Quellen!
mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod. mod.item.remove = Dies ist Teil vom [accent] '{0}'[] Mod. Deaktivieren sie diesen Mod, um dies zu entfernen.
mod.remove.confirm = Dieser Mod wird gelöscht. mod.remove.confirm = Dieser Mod wird gelöscht.
mod.author = [lightgray]Autor:[] {0} mod.author = [lightgray]Autor:[] {0}
mod.missing = Dieser Spielstand enthält Mods, welche nicht mehr vorhanden oder aktualisiert wurden. Spielstandfehler könnten passieren. Bist du dir sicher, das du ihn laden möchtest?\n[lightgray]Mods:\n{0} mod.missing = Dieser Spielstand enthält Mods, welche nicht mehr vorhanden oder aktualisiert wurden. Spielstandfehler könnten passieren. Bist du dir sicher, das du ihn laden möchtest?\n[lightgray]Mods:\n{0}
@@ -139,8 +139,8 @@ mod.scripts.disable = Ihr Gerät unterstüzt keine Mods mit Scripts. Du musst di
about.button = Info about.button = Info
name = Name: name = Name:
noname = Wähle zunächst einen[accent] Spielernamen[]. noname = Wähle zunächst einen[accent] Spielernamen[].
planetmap = Planet Map planetmap = Planetenkarte
launchcore = Launch Core launchcore = Kern starten
filename = Dateiname: filename = Dateiname:
unlocked = Neuer Inhalt freigeschaltet! unlocked = Neuer Inhalt freigeschaltet!
completed = [accent]Abgeschlossen completed = [accent]Abgeschlossen
@@ -148,11 +148,11 @@ techtree = Forschung
research.list = [lightgray]Forschung: research.list = [lightgray]Forschung:
research = Erforschen research = Erforschen
researched = [lightgray]{0} erforscht. researched = [lightgray]{0} erforscht.
research.progress = {0}% complete research.progress = Fortschritt: {0}%
players = {0} Spieler online players = {0} Spieler online
players.single = {0} Spieler online players.single = {0} Spieler online
players.search = search players.search = Suche
players.notfound = [gray]no players found players.notfound = [gray]Keine Spieler gefunden
server.closing = [accent]Schließe den Server ... server.closing = [accent]Schließe den Server ...
server.kicked.kick = Du wurdest vom Server geworfen! server.kicked.kick = Du wurdest vom Server geworfen!
server.kicked.whitelist = Du befindest dich nicht auf der Whitelist des Servers. server.kicked.whitelist = Du befindest dich nicht auf der Whitelist des Servers.
@@ -185,9 +185,9 @@ server.refreshing = Server wird aktualisiert
hosts.none = [lightgray]Keine LAN-Spiele gefunden! hosts.none = [lightgray]Keine LAN-Spiele gefunden!
host.invalid = [scarlet]Kann keine Verbindung zum Host herstellen. host.invalid = [scarlet]Kann keine Verbindung zum Host herstellen.
servers.local = Local Servers servers.local = Lokale Server
servers.remote = Remote Servers servers.remote = Andere Server
servers.global = Community Servers servers.global = Community-Server
trace = Spieler verfolgen trace = Spieler verfolgen
trace.playername = Spielername: [accent]{0} trace.playername = Spielername: [accent]{0}
@@ -212,7 +212,7 @@ confirmkick = Bist du sicher, dass du diesen Spieler rauswerfen willst?
confirmvotekick = Bist du sicher, dass du darüber abstimmen willst, diesen Spieler rauszuwerfen? confirmvotekick = Bist du sicher, dass du darüber abstimmen willst, diesen Spieler rauszuwerfen?
confirmunban = Bist du sicher, dass du die Verbannung des Spielers rückgängig machen willst? confirmunban = Bist du sicher, dass du die Verbannung des Spielers rückgängig machen willst?
confirmadmin = Bist du sicher, dass du diesen Spieler zu einem Administrator machen möchtest? confirmadmin = Bist du sicher, dass du diesen Spieler zu einem Administrator machen möchtest?
confirmunadmin = Bis du sicher, dass dieser Spieler kein Administrator mehr sein soll? confirmunadmin = Bist du sicher, dass dieser Spieler kein Administrator mehr sein soll?
joingame.title = Spiel beitreten joingame.title = Spiel beitreten
joingame.ip = IP: joingame.ip = IP:
disconnect = Verbindung unterbrochen. disconnect = Verbindung unterbrochen.
@@ -269,7 +269,7 @@ copylink = Link kopieren
back = Zurück back = Zurück
data.export = Daten exportieren data.export = Daten exportieren
data.import = Daten importieren data.import = Daten importieren
data.openfolder = Open Data Folder data.openfolder = Datenordner öffnen
data.exported = Daten exportiert. data.exported = Daten exportiert.
data.invalid = Dies sind keine gültigen Spieldaten. data.invalid = Dies sind keine gültigen Spieldaten.
data.import.confirm = Der Import von externen Daten wird [scarlet] alle[] deine gegenwärtigen Spieldaten löschen.\n[accent]Das kann nicht rückgängig gemacht werden![]Sobald der Import abeschlossen ist, wird dein Spiel sofort beendet. data.import.confirm = Der Import von externen Daten wird [scarlet] alle[] deine gegenwärtigen Spieldaten löschen.\n[accent]Das kann nicht rückgängig gemacht werden![]Sobald der Import abeschlossen ist, wird dein Spiel sofort beendet.
@@ -278,21 +278,21 @@ quit.confirm.tutorial = Weißt du, was du tust?\nDu kannst das Tutorial unter[ac
loading = [accent]Wird geladen... loading = [accent]Wird geladen...
reloading = [accent]Lade Mods neu... reloading = [accent]Lade Mods neu...
saving = [accent]Speichere... saving = [accent]Speichere...
respawn = [accent][[{0}][] to respawn in core respawn = [accent][[{0}][] um im Kern zu spawnen
cancelbuilding = [accent][[{0}][] um den Plan zu leeren cancelbuilding = [accent][[{0}][] um den Plan zu leeren
selectschematic = [accent][[{0}][] zum Auswählen+Kopieren selectschematic = [accent][[{0}][] zum Auswählen+Kopieren
pausebuilding = [accent][[{0}][] um das Bauen zu pausieren pausebuilding = [accent][[{0}][] um das Bauen zu pausieren
resumebuilding = [scarlet][[{0}][] um das Bauen fortzusetzen resumebuilding = [scarlet][[{0}][] um das Bauen fortzusetzen
wave = [accent]Welle {0} wave = [accent]Welle {0}
wave.cap = [accent]Wave {0}/{1} wave.cap = [accent]Welle {0}/{1}
wave.waiting = Welle in {0} wave.waiting = Welle in {0}
wave.waveInProgress = [lightgray]Welle im Gange wave.waveInProgress = [lightgray]Welle im Gange
waiting = Warten... waiting = Warten...
waiting.players = Warte auf Spieler... waiting.players = Warte auf Spieler...
wave.enemies = [lightgray]{0} Gegner verbleiben wave.enemies = [lightgray]{0} Gegner verbleiben
wave.enemy = [lightgray]{0} Gegner verbleiben wave.enemy = [lightgray]{0} Gegner verbleiben
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves. wave.guardianwarn = Boss erscheint in [accent]{0}[] Wellen.
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave. wave.guardianwarn.one = Boss erscheint in [accent]{0}[] Welle.
loadimage = Bild laden loadimage = Bild laden
saveimage = Bild speichern saveimage = Bild speichern
unknown = Unbekannt unknown = Unbekannt
@@ -309,7 +309,7 @@ workshop.error = Fehler beim Laden von Workshop-Details: {0}
map.publish.confirm = Willst du diese Karte wirklich veröffentlichen?\n\n[lightgray]Vergewissere dich, dass du der Workshop-EULA zugestimmt hast, sonst tauchen deine Karten nicht auf! map.publish.confirm = Willst du diese Karte wirklich veröffentlichen?\n\n[lightgray]Vergewissere dich, dass du der Workshop-EULA zugestimmt hast, sonst tauchen deine Karten nicht auf!
workshop.menu = Wähle aus, was du mit diesem Objekt tun willst. workshop.menu = Wähle aus, was du mit diesem Objekt tun willst.
workshop.info = Objekt-Info workshop.info = Objekt-Info
changelog = Changelog (optional): changelog = Änderungen (optional):
eula = Steam EULA eula = Steam EULA
missing = Dieses Objekt wurde gelöscht oder verschoben.\n[lightgray]Die Workshop-Auflistung ist nun automatisch getrennt worden. missing = Dieses Objekt wurde gelöscht oder verschoben.\n[lightgray]Die Workshop-Auflistung ist nun automatisch getrennt worden.
publishing = [accent]Veröffentlichen... publishing = [accent]Veröffentlichen...
@@ -331,17 +331,17 @@ editor.generation = Generator:
editor.ingame = Im Spiel Bearbeiten editor.ingame = Im Spiel Bearbeiten
editor.publish.workshop = Im Workshop veröffentlichen editor.publish.workshop = Im Workshop veröffentlichen
editor.newmap = Neue Karte editor.newmap = Neue Karte
editor.center = Center editor.center = Zur Mitte
workshop = Workshop workshop = Workshop
waves.title = Wellen waves.title = Wellen
waves.remove = Entfernen waves.remove = Entfernen
waves.never = <nie> waves.never = <nie>
waves.every = alle waves.every = alle
waves.waves = Welle(n) waves.waves = Welle(n)
waves.perspawn = per Spawn waves.perspawn = pro Spawn
waves.shields = shields/wave waves.shields = Schilder pro Welle
waves.to = bis waves.to = bis
waves.guardian = Guardian waves.guardian = Boss
waves.preview = Vorschau waves.preview = Vorschau
waves.edit = Bearbeiten... waves.edit = Bearbeiten...
waves.copy = Aus der Zwischenablage kopieren waves.copy = Aus der Zwischenablage kopieren
@@ -350,9 +350,9 @@ waves.invalid = Ungültige Wellen in der Zwischenablage.
waves.copied = Wellen kopiert. waves.copied = Wellen kopiert.
waves.none = Keine Gegner definiert.\nInfo: Leere Wellenentwürfe werden automatisch mit dem Standard-Entwurf ersetzt. waves.none = Keine Gegner definiert.\nInfo: Leere Wellenentwürfe werden automatisch mit dem Standard-Entwurf ersetzt.
wavemode.counts = counts wavemode.counts = Menge
wavemode.totals = totals wavemode.totals = Gesamtmenge
wavemode.health = health wavemode.health = Lebenspunkte
editor.default = [lightgray]<Standard> editor.default = [lightgray]<Standard>
details = Details details = Details
@@ -419,9 +419,9 @@ toolmode.drawteams.description = Zeichnet Teams statt Blöcke.
filters.empty = [lightgray]Keine Filter! Füge einen mit dem unteren Knopf hinzu. filters.empty = [lightgray]Keine Filter! Füge einen mit dem unteren Knopf hinzu.
filter.distort = Verzerren filter.distort = Verzerren
filter.noise = Rauschen filter.noise = Rauschen
filter.enemyspawn = Enemy Spawn Select filter.enemyspawn = Gegnerischer Spawn Auswahl
filter.spawnpath = Path To Spawn filter.spawnpath = Weg zum Spawn
filter.corespawn = Core Select filter.corespawn = Kernauswahl
filter.median = Median filter.median = Median
filter.oremedian = Erzmedian filter.oremedian = Erzmedian
filter.blend = Mischen filter.blend = Mischen
@@ -432,7 +432,7 @@ filter.mirror = Spiegel
filter.clear = Löschen filter.clear = Löschen
filter.option.ignore = Ignorieren filter.option.ignore = Ignorieren
filter.scatter = Streuen filter.scatter = Streuen
filter.terrain = Terrain filter.terrain = Landschaft
filter.option.scale = Skalierung filter.option.scale = Skalierung
filter.option.chance = Wahrscheinlichkeit filter.option.chance = Wahrscheinlichkeit
filter.option.mag = Größe filter.option.mag = Größe
@@ -441,11 +441,11 @@ filter.option.circle-scale = Kreisskalierung
filter.option.octaves = Oktaven filter.option.octaves = Oktaven
filter.option.falloff = Rückgang filter.option.falloff = Rückgang
filter.option.angle = Winkel filter.option.angle = Winkel
filter.option.amount = Amount filter.option.amount = Menge
filter.option.block = Block filter.option.block = Block
filter.option.floor = Boden filter.option.floor = Boden
filter.option.flooronto = Ziel Boden filter.option.flooronto = Ziel Boden
filter.option.target = Target filter.option.target = Ziel
filter.option.wall = Wand filter.option.wall = Wand
filter.option.ore = Erz filter.option.ore = Erz
filter.option.floor2 = Sekundärer Boden filter.option.floor2 = Sekundärer Boden
@@ -475,18 +475,18 @@ locked = Gesperrt
complete = [lightgray]Abschließen: complete = [lightgray]Abschließen:
requirement.wave = Erreiche Welle {0} in {1} requirement.wave = Erreiche Welle {0} in {1}
requirement.core = Zerstöre den feindlichen Kern in {0} requirement.core = Zerstöre den feindlichen Kern in {0}
requirement.research = Research {0} requirement.research = Erforsche {0}
requirement.capture = Capture {0} requirement.capture = Erobere {0}
bestwave = [lightgray]Beste Welle: {0} bestwave = [lightgray]Beste Welle: {0}
launch.text = Launch launch.text = Start
research.multiplayer = Only the host can research items. research.multiplayer = Nur der Host kann forschen.
uncover = Freischalten uncover = Freischalten
configure = Startitems festlegen configure = Startitems festlegen
loadout = Loadout loadout = Startitems
resources = Resources resources = Ressourcen
bannedblocks = Gesperrte Blöcke bannedblocks = Gesperrte Blöcke
addall = Alle hinzufügen addall = Alle hinzufügen
launch.destination = Destination: {0} launch.destination = Ziel: {0}
configure.invalid = Anzahl muss eine Zahl zwischen 0 und {0} sein. configure.invalid = Anzahl muss eine Zahl zwischen 0 und {0} sein.
zone.unlocked = [lightgray]{0} freigeschaltet. zone.unlocked = [lightgray]{0} freigeschaltet.
zone.requirement.complete = Welle {0} erreicht:\n{1} Anforderungen der Zone erfüllt. zone.requirement.complete = Welle {0} erreicht:\n{1} Anforderungen der Zone erfüllt.
@@ -495,7 +495,7 @@ zone.objective = [lightgray]Ziel: [accent]{0}
zone.objective.survival = Überlebe zone.objective.survival = Überlebe
zone.objective.attack = Zerstöre den feindlichen Kern zone.objective.attack = Zerstöre den feindlichen Kern
add = Hinzufügen... add = Hinzufügen...
boss.health = Boss-Lebenskraft boss.health = Boss-Lebenspunkte
connectfail = [crimson] Verbindung zum Server konnte nicht hergestellt werden: [accent]{0} connectfail = [crimson] Verbindung zum Server konnte nicht hergestellt werden: [accent]{0}
error.unreachable = Server nicht erreichbar. error.unreachable = Server nicht erreichbar.
@@ -508,25 +508,25 @@ error.io = Netzwerk-I/O-Fehler.
error.any = Unbekannter Netzwerkfehler. error.any = Unbekannter Netzwerkfehler.
error.bloom = Bloom konnte nicht initialisiert werden.\nEs kann sein, dass dein Gerät es nicht unterstützt. error.bloom = Bloom konnte nicht initialisiert werden.\nEs kann sein, dass dein Gerät es nicht unterstützt.
weather.rain.name = Rain weather.rain.name = Regen
weather.snow.name = Snow weather.snow.name = Schnee
weather.sandstorm.name = Sandstorm weather.sandstorm.name = Sandsturm
weather.sporestorm.name = Sporestorm weather.sporestorm.name = Sporensturm
weather.fog.name = Fog weather.fog.name = Nebel
sectors.unexplored = [lightgray]Unexplored sectors.unexplored = [lightgray]Unentdeckt
sectors.resources = Resources: sectors.resources = Ressourcen:
sectors.production = Production: sectors.production = Produktion:
sectors.stored = Stored: sectors.stored = Gelagert:
sectors.resume = Resume sectors.resume = Weiterspielen
sectors.launch = Launch sectors.launch = Start
sectors.select = Select sectors.select = Select
sectors.nonelaunch = [lightgray]none (sun) sectors.nonelaunch = [lightgray]none (sun)
sectors.rename = Rename Sector sectors.rename = Sektor umbenennen
sector.missingresources = [scarlet]Insufficient Core Resources sector.missingresources = [scarlet]Fehlende Kernressourcen
planet.serpulo.name = Serpulo planet.serpulo.name = Serpulo
planet.sun.name = Sun planet.sun.name = Sonne
sector.groundZero.name = Ground Zero sector.groundZero.name = Ground Zero
sector.craters.name = The Craters sector.craters.name = The Craters
@@ -556,7 +556,7 @@ settings.language = Sprache
settings.data = Spieldaten settings.data = Spieldaten
settings.reset = Auf Standard zurücksetzen settings.reset = Auf Standard zurücksetzen
settings.rebind = Zuweisen settings.rebind = Zuweisen
settings.resetKey = Reset settings.resetKey = Zurücksetzen
settings.controls = Steuerung settings.controls = Steuerung
settings.game = Spiel settings.game = Spiel
settings.sound = Audio settings.sound = Audio
@@ -564,30 +564,30 @@ settings.graphics = Grafik
settings.cleardata = Spieldaten zurücksetzen... settings.cleardata = Spieldaten zurücksetzen...
settings.clear.confirm = Bist du sicher, dass du die Spieldaten zurücksetzen willst?\n Diese Aktion kann nicht rückgängig gemacht werden! settings.clear.confirm = Bist du sicher, dass du die Spieldaten zurücksetzen willst?\n Diese Aktion kann nicht rückgängig gemacht werden!
settings.clearall.confirm = [scarlet]WARNUNG![]\nDas wird jegliche Spieldaten zurücksetzen, inklusive Speicherstände, Karten, Freischaltungen und Tastenbelegungen.\n Sobald du 'OK' drückst, wird alles zurückgesetzt und das Spiel schließt sich automatisch. settings.clearall.confirm = [scarlet]WARNUNG![]\nDas wird jegliche Spieldaten zurücksetzen, inklusive Speicherstände, Karten, Freischaltungen und Tastenbelegungen.\n Sobald du 'OK' drückst, wird alles zurückgesetzt und das Spiel schließt sich automatisch.
settings.clearsaves.confirm = Are you sure you want to clear all your saves? settings.clearsaves.confirm = Möchtest du wirklich alle Speicherstände löschen?
settings.clearsaves = Clear Saves settings.clearsaves = Speicherstände löschen
settings.clearresearch = Clear Research settings.clearresearch = Erforschungen löschen
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research? settings.clearresearch.confirm = Möchtest du wirklich alle Erforschungen löschen?
settings.clearcampaignsaves = Clear Campaign Saves settings.clearcampaignsaves = Kampagne-Speicherstände löschen
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves? settings.clearcampaignsaves.confirm = Möchtest du wirklich alle Kampagne-Speicherstände löschen?
paused = [accent]< Pausiert > paused = [accent]< Pausiert >
clear = Leeren clear = Leeren
banned = [scarlet]Verbannt banned = [scarlet]Verbannt
unplaceable.sectorcaptured = [scarlet]Requires captured sector unplaceable.sectorcaptured = [scarlet]Erfordert erforderter Sektor
yes = Ja yes = Ja
no = Nein no = Nein
info.title = Info info.title = Info
error.title = [crimson]Ein Fehler ist aufgetreten error.title = [crimson]Ein Fehler ist aufgetreten
error.crashtitle = Ein Fehler ist aufgetreten! error.crashtitle = Ein Fehler ist aufgetreten!
unit.nobuild = [scarlet]Einheit kann nicht bauen! unit.nobuild = [scarlet]Einheit kann nicht bauen!
lastaccessed = [lightgray]Last Accessed: {0} lastaccessed = [lightgray]Zuletzt konfiguriert: {0}
block.unknown = [lightgray]??? block.unknown = [lightgray]???
stat.input = Eingang stat.input = Eingang
stat.output = Ausgang stat.output = Ausgang
stat.booster = Verstärkung stat.booster = Verstärkung
stat.tiles = Required Tiles stat.tiles = Erforderte Untergründe
stat.affinities = Affinities stat.affinities = Affinitäten
stat.powercapacity = Kapazität stat.powercapacity = Kapazität
stat.powershot = Stromverbrauch/Schuss stat.powershot = Stromverbrauch/Schuss
stat.damage = Schaden stat.damage = Schaden
@@ -597,16 +597,16 @@ stat.itemsmoved = Bewegungsgeschwindigkeit
stat.launchtime = Zeit zwischen Starts stat.launchtime = Zeit zwischen Starts
stat.shootrange = Reichweite stat.shootrange = Reichweite
stat.size = Größe stat.size = Größe
stat.displaysize = Display Size stat.displaysize = Bildschirmgröße
stat.liquidcapacity = Flüssigkeitskapazität stat.liquidcapacity = Flüssigkeitskapazität
stat.powerrange = Stromreichweite stat.powerrange = Stromreichweite
stat.linkrange = Link Range stat.linkrange = Verbindungsradius
stat.instructions = Instructions stat.instructions = Befehle
stat.powerconnections = Maximale Stromverbindungen stat.powerconnections = Maximale Stromverbindungen
stat.poweruse = Stromverbrauch stat.poweruse = Stromverbrauch
stat.powerdamage = Stromverbrauch/Schadenspunkt stat.powerdamage = Stromverbrauch/Schadenspunkt
stat.itemcapacity = Materialkapazität stat.itemcapacity = Materialkapazität
stat.memorycapacity = Memory Capacity stat.memorycapacity = Speicherkapazität
stat.basepowergeneration = Basis-Stromerzeugung stat.basepowergeneration = Basis-Stromerzeugung
stat.productiontime = Produktionszeit stat.productiontime = Produktionszeit
stat.repairtime = Zeit zur vollständigen Reparatur stat.repairtime = Zeit zur vollständigen Reparatur
@@ -618,52 +618,52 @@ stat.boosteffect = Verstärkungseffekt
stat.maxunits = Max. aktive Einheiten stat.maxunits = Max. aktive Einheiten
stat.health = Lebenspunkte stat.health = Lebenspunkte
stat.buildtime = Baudauer stat.buildtime = Baudauer
stat.maxconsecutive = Max Consecutive stat.maxconsecutive = Max. Konsekutive
stat.buildcost = Baukosten stat.buildcost = Baukosten
stat.inaccuracy = Ungenauigkeit stat.inaccuracy = Ungenauigkeit
stat.shots = Schüsse stat.shots = Schüsse
stat.reload = Schüsse/Sekunde stat.reload = Schüsse/Sekunde
stat.ammo = Munition stat.ammo = Munition
stat.shieldhealth = Shield Health stat.shieldhealth = Schildlebenspunkte
stat.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown-Zeit
stat.explosiveness = Explosiveness stat.explosiveness = Sprengkraft
stat.basedeflectchance = Base Deflect Chance stat.basedeflectchance = Grundreflektionschance
stat.lightningchance = Lightning Chance stat.lightningchance = Blitzwahr­schein­lich­keit
stat.lightningdamage = Lightning Damage stat.lightningdamage = Blitzschaden
stat.flammability = Flammability stat.flammability = Brennbarkeit
stat.radioactivity = Radioactivity stat.radioactivity = Radioaktivität
stat.heatcapacity = HeatCapacity stat.heatcapacity = Hitzekapazität
stat.viscosity = Viscosity stat.viscosity = Viskosität
stat.temperature = Temperature stat.temperature = Temperatur
stat.speed = Speed stat.speed = Geschwindigkeit
stat.buildspeed = Build Speed stat.buildspeed = Baugeschwindigkeit
stat.minespeed = Mine Speed stat.minespeed = Abbaugeschwindigkeit
stat.minetier = Mine Tier stat.minetier = Abbau-Kraft
stat.payloadcapacity = Payload Capacity stat.payloadcapacity = Payload Capacity
stat.commandlimit = Command Limit stat.commandlimit = Kommandier-Limit
stat.abilities = Abilities stat.abilities = Fähigkeiten
ability.forcefield = Force Field ability.forcefield = Kraftfeld
ability.repairfield = Repair Field ability.repairfield = Heilungsfeld
ability.statusfield = Status Field ability.statusfield = Statusfeld
ability.unitspawn = {0} Factory ability.unitspawn = {0} Fabrik
ability.shieldregenfield = Shield Regen Field ability.shieldregenfield = Schild-regenerations-Feld
bar.drilltierreq = Besserer Bohrer Benötigt bar.drilltierreq = Besserer Bohrer Benötigt
bar.noresources = Missing Resources bar.noresources = Fehlende Ressourcen
bar.corereq = Core Base Required bar.corereq = Kern-Basis erforderlich
bar.drillspeed = Bohrgeschwindigkeit: {0}/s bar.drillspeed = Bohrgeschwindigkeit: {0}/s
bar.pumpspeed = Pump Speed: {0}/s bar.pumpspeed = Pumpengeschwindigkeit: {0}/s
bar.efficiency = Effizienz: {0}% bar.efficiency = Effizienz: {0}%
bar.powerbalance = Strom: {0}/s bar.powerbalance = Strom: {0}/s
bar.powerstored = Gespeichert: {0}/{1} bar.powerstored = Gespeichert: {0}/{1}
bar.poweramount = Strom: {0} bar.poweramount = Strom: {0}
bar.poweroutput = Stromgenerierung: {0} bar.poweroutput = Stromgenerierung: {0}
bar.powerlines = Connections: {0}/{1} bar.powerlines = Verbindungen: {0}/{1}
bar.items = Items: {0} bar.items = Items: {0}
bar.capacity = Kapazität: {0} bar.capacity = Kapazität: {0}
bar.unitcap = {0} {1}/{2} bar.unitcap = {0} {1}/{2}
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[Einheit deaktiviert]
bar.liquid = Flüssigkeit bar.liquid = Flüssigkeit
bar.heat = Hitze bar.heat = Hitze
bar.power = Strom bar.power = Strom
@@ -671,7 +671,7 @@ bar.progress = Baufortschritt
bar.input = Input bar.input = Input
bar.output = Output bar.output = Output
units.processorcontrol = [lightgray]Processor Controlled units.processorcontrol = [lightgray]Prozessorgesteuert
bullet.damage = [stat]{0}[lightgray] Schaden bullet.damage = [stat]{0}[lightgray] Schaden
bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray] Kacheln bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray] Kacheln
@@ -680,15 +680,15 @@ bullet.homing = [stat]zielsuchend
bullet.shock = [stat]schockend bullet.shock = [stat]schockend
bullet.frag = [stat]explosiv bullet.frag = [stat]explosiv
bullet.knockback = [stat]{0}[lightgray] zurückstoßend bullet.knockback = [stat]{0}[lightgray] zurückstoßend
bullet.pierce = [stat]{0}[lightgray]x pierce bullet.pierce = [stat]{0}[lightgray]x Durchstechkraft
bullet.infinitepierce = [stat]pierce bullet.infinitepierce = [stat]Durchstechkraft
bullet.freezing = [stat]frierend bullet.freezing = [stat]frierend
bullet.tarred = [stat]teerend bullet.tarred = [stat]teerend
bullet.multiplier = [stat]{0}[lightgray]x Munition Multiplikator bullet.multiplier = [stat]{0}[lightgray]x Munition Multiplikator
bullet.reload = [stat]{0}[lightgray]x Feuerrate bullet.reload = [stat]{0}[lightgray]x Feuerrate
unit.blocks = Blöcke unit.blocks = Blöcke
unit.blockssquared = blocks² unit.blockssquared = Blöcke²
unit.powersecond = Stromeinheiten/Sekunde unit.powersecond = Stromeinheiten/Sekunde
unit.liquidsecond = Flüssigkeitseinheiten/Sekunde unit.liquidsecond = Flüssigkeitseinheiten/Sekunde
unit.itemssecond = Materialeinheiten/Sekunde unit.itemssecond = Materialeinheiten/Sekunde
@@ -701,29 +701,29 @@ unit.persecond = /sek
unit.perminute = /min unit.perminute = /min
unit.timesspeed = x Geschwindigkeit unit.timesspeed = x Geschwindigkeit
unit.percent = % unit.percent = %
unit.shieldhealth = shield health unit.shieldhealth = Schildlebenspunkte
unit.items = Materialeinheiten unit.items = Materialeinheiten
unit.thousands = k unit.thousands = k
unit.millions = mil unit.millions = Mio
unit.billions = b unit.billions = Mrd
category.general = Allgemeines category.general = Allgemeines
category.power = Strom category.power = Strom
category.liquids = Flüssigkeiten category.liquids = Flüssigkeiten
category.items = Materialien category.items = Materialien
category.crafting = Erzeugung category.crafting = Erzeugung
category.function = Function category.function = Funktion
category.optional = Optionale Zusätze category.optional = Optionale Zusätze
setting.landscape.name = Landschaft sperren setting.landscape.name = Landschaft sperren
setting.shadows.name = Schatten setting.shadows.name = Schatten
setting.blockreplace.name = Automatische Blockvorschläge setting.blockreplace.name = Automatische Blockvorschläge
setting.linear.name = Lineare Filterung setting.linear.name = Lineare Filterung
setting.hints.name = Tipps setting.hints.name = Tipps
setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.flow.name = Ressourcen-Fluss anzeigen [scarlet] (experimentell)
setting.buildautopause.name = Bauen automatisch pausieren setting.buildautopause.name = Bauen automatisch pausieren
setting.animatedwater.name = Animiertes Wasser setting.animatedwater.name = Animiertes Wasser
setting.animatedshields.name = Animierte Schilde setting.animatedshields.name = Animierte Schilde
setting.antialias.name = Antialias[lightgray] (Neustart erforderlich)[] setting.antialias.name = Antialias[lightgray] (Neustart erforderlich)[]
setting.playerindicators.name = Player Indicators setting.playerindicators.name = Spieler-Indikatoren
setting.indicators.name = Verbündeten-Indikatoren setting.indicators.name = Verbündeten-Indikatoren
setting.autotarget.name = Auto-Zielauswahl setting.autotarget.name = Auto-Zielauswahl
setting.keyboard.name = Maus+Tastatur Steuerung setting.keyboard.name = Maus+Tastatur Steuerung
@@ -742,7 +742,7 @@ setting.difficulty.name = Schwierigkeit:
setting.screenshake.name = Wackeleffekt setting.screenshake.name = Wackeleffekt
setting.effects.name = Effekte anzeigen setting.effects.name = Effekte anzeigen
setting.destroyedblocks.name = Zerstörte Blöcke anzeigen setting.destroyedblocks.name = Zerstörte Blöcke anzeigen
setting.blockstatus.name = Display Block Status setting.blockstatus.name = Block-Status anzeigen
setting.conveyorpathfinding.name = Automatische Wegfindung beim Bau von Förderbändern setting.conveyorpathfinding.name = Automatische Wegfindung beim Bau von Förderbändern
setting.sensitivity.name = Controller-Empfindlichkeit setting.sensitivity.name = Controller-Empfindlichkeit
setting.saveinterval.name = Autosave-Häufigkeit setting.saveinterval.name = Autosave-Häufigkeit
@@ -751,15 +751,15 @@ setting.blockselecttimeout.name = Block-Auswahl Timeout
setting.milliseconds = {0} Millisekunden setting.milliseconds = {0} Millisekunden
setting.fullscreen.name = Vollbild setting.fullscreen.name = Vollbild
setting.borderlesswindow.name = Randloses Fenster [lightgray](Neustart vielleicht erforderlich) setting.borderlesswindow.name = Randloses Fenster [lightgray](Neustart vielleicht erforderlich)
setting.fps.name = FPS zeigen setting.fps.name = FPS anzeigen
setting.smoothcamera.name = Smooth Camera setting.smoothcamera.name = Sanfte Kamerabewegungen
setting.vsync.name = VSync setting.vsync.name = VSync
setting.pixelate.name = Verpixeln [lightgray](Könnte die Leistung beeinträchtigen) setting.pixelate.name = Verpixeln [lightgray](Könnte die Leistung beeinträchtigen)
setting.minimap.name = Zeige die Minimap setting.minimap.name = Zeige die Minimap
setting.coreitems.name = Display Core Items (WIP) setting.coreitems.name = Kern-Items anzeigen (WIP)
setting.position.name = Spieler-Position anzeigen setting.position.name = Spieler-Position anzeigen
setting.musicvol.name = Musiklautstärke setting.musicvol.name = Musiklautstärke
setting.atmosphere.name = Show Planet Atmosphere setting.atmosphere.name = Planetatmosphäre zeigen
setting.ambientvol.name = Ambient-Lautstärke setting.ambientvol.name = Ambient-Lautstärke
setting.mutemusic.name = Musik stummschalten setting.mutemusic.name = Musik stummschalten
setting.sfxvol.name = Audioeffekt-Lautstärke setting.sfxvol.name = Audioeffekt-Lautstärke
@@ -767,10 +767,10 @@ setting.mutesound.name = Audioeffekte stummschalten
setting.crashreport.name = Anonyme Absturzberichte senden setting.crashreport.name = Anonyme Absturzberichte senden
setting.savecreate.name = Automatisch speichern setting.savecreate.name = Automatisch speichern
setting.publichost.name = Öffentliche Sichtbarkeit des Spiels setting.publichost.name = Öffentliche Sichtbarkeit des Spiels
setting.playerlimit.name = Player Limit setting.playerlimit.name = Spielerbegrenzung
setting.chatopacity.name = Chat-Deckkraft setting.chatopacity.name = Chat-Deckkraft
setting.lasersopacity.name = Power-Laser-Deckkraft setting.lasersopacity.name = Power-Laser-Deckkraft
setting.bridgeopacity.name = Bridge Opacity setting.bridgeopacity.name = Brücken-Deckkraft
setting.playerchat.name = Chat im Spiel anzeigen setting.playerchat.name = Chat im Spiel anzeigen
public.confirm = Willst du dein Spiel öffentlich zugänglich machen?\n[accent]Jeder kann deinem Spiel beitreten.\n[lightgray]Dies kann später in den Einstellung->Spielt->Öffentliches Spiel geändert werden. public.confirm = Willst du dein Spiel öffentlich zugänglich machen?\n[accent]Jeder kann deinem Spiel beitreten.\n[lightgray]Dies kann später in den Einstellung->Spielt->Öffentliches Spiel geändert werden.
public.beta = Bemerke: Beta-Versionen des Spiels können keine öffentlichen Spiele machen. public.beta = Bemerke: Beta-Versionen des Spiels können keine öffentlichen Spiele machen.
@@ -782,24 +782,24 @@ keybinds.mobile = [scarlet]Die meisten Tastenzuweisungen hier funktionieren auf
category.general.name = Allgemein category.general.name = Allgemein
category.view.name = Ansicht category.view.name = Ansicht
category.multiplayer.name = Mehrspieler category.multiplayer.name = Mehrspieler
category.blocks.name = Block Select category.blocks.name = Blockauswahl
command.attack = Angreifen command.attack = Angreifen
command.rally = Patrouillieren command.rally = Patrouillieren
command.retreat = Rückzug command.retreat = Rückzug
command.idle = Idle command.idle = Idle
placement.blockselectkeys = \n[lightgray]Taste: [{0}, placement.blockselectkeys = \n[lightgray]Taste: [{0},
keybind.respawn.name = Respawn keybind.respawn.name = Respawn
keybind.control.name = Control Unit keybind.control.name = Einheit steuern
keybind.clear_building.name = Bauplan löschen keybind.clear_building.name = Bauplan löschen
keybind.press = Drücke eine Taste... keybind.press = Drücke eine Taste...
keybind.press.axis = Drücke eine Taste oder bewege eine Achse... keybind.press.axis = Drücke eine Taste oder bewege eine Achse...
keybind.screenshot.name = Karten-Screenshot keybind.screenshot.name = Karten-Screenshot
keybind.toggle_power_lines.name = Power Lasers umschalten keybind.toggle_power_lines.name = Power Lasers umschalten
keybind.toggle_block_status.name = Toggle Block Statuses keybind.toggle_block_status.name = Blockstatus umschalten
keybind.move_x.name = X-Achse keybind.move_x.name = X-Achse
keybind.move_y.name = Y-Achse keybind.move_y.name = Y-Achse
keybind.mouse_move.name = Der Maus folgen keybind.mouse_move.name = Der Maus folgen
keybind.pan.name = Pan View keybind.pan.name = Kamera alleine bewegen
keybind.boost.name = Boost keybind.boost.name = Boost
keybind.schematic_select.name = Bereich auswählen keybind.schematic_select.name = Bereich auswählen
keybind.schematic_menu.name = Entwurfsmenü keybind.schematic_menu.name = Entwurfsmenü
@@ -827,9 +827,9 @@ keybind.diagonal_placement.name = Diagonal platzieren
keybind.pick.name = Block auswählen keybind.pick.name = Block auswählen
keybind.break_block.name = Block zerstören keybind.break_block.name = Block zerstören
keybind.deselect.name = Auswahl aufheben keybind.deselect.name = Auswahl aufheben
keybind.pickupCargo.name = Pickup Cargo keybind.pickupCargo.name = Block aufheben
keybind.dropCargo.name = Drop Cargo keybind.dropCargo.name = Block fallen lassen
keybind.command.name = Command keybind.command.name = Eineiten kommandieren
keybind.shoot.name = Schießen keybind.shoot.name = Schießen
keybind.zoom.name = Zoomen keybind.zoom.name = Zoomen
keybind.menu.name = Menü keybind.menu.name = Menü
@@ -840,7 +840,7 @@ keybind.chat.name = Chat
keybind.player_list.name = Spielerliste keybind.player_list.name = Spielerliste
keybind.console.name = Konsole keybind.console.name = Konsole
keybind.rotate.name = Drehen keybind.rotate.name = Drehen
keybind.rotateplaced.name = Rotate Existing (Hold) keybind.rotateplaced.name = Gebauten Block drehen (gedrückt halten)
keybind.toggle_menus.name = Menüs umschalten keybind.toggle_menus.name = Menüs umschalten
keybind.chat_history_prev.name = Chat Historie zurück keybind.chat_history_prev.name = Chat Historie zurück
keybind.chat_history_next.name = Chat Historie vor keybind.chat_history_next.name = Chat Historie vor
@@ -861,14 +861,14 @@ mode.custom = Angepasste Regeln
rules.infiniteresources = Unbegrenzte Ressourcen rules.infiniteresources = Unbegrenzte Ressourcen
rules.reactorexplosions = Reaktor-Explosionen rules.reactorexplosions = Reaktor-Explosionen
rules.schematic = Schematics Allowed rules.schematic = Entwürfe erlaubt
rules.wavetimer = Wellen-Timer rules.wavetimer = Wellen-Timer
rules.waves = Wellen rules.waves = Wellen
rules.attack = Angriff-Modus rules.attack = Angriff-Modus
rules.buildai = AI Building rules.buildai = KI kann bauen
rules.enemyCheat = Unbegrenzte Ressourcen für die KI (Rotes Team) rules.enemyCheat = Unbegrenzte Ressourcen für die KI (Rotes Team)
rules.blockhealthmultiplier = Block Health Multiplier rules.blockhealthmultiplier = Block-Lebenspunkte-Multiplikator
rules.blockdamagemultiplier = Block Damage Multiplier rules.blockdamagemultiplier = Block-Schaden-Multiplikator
rules.unitbuildspeedmultiplier = Baugeschwindigkeit-Einheit Multiplikator rules.unitbuildspeedmultiplier = Baugeschwindigkeit-Einheit Multiplikator
rules.unithealthmultiplier = Lebenspunkte-Einheit Multiplikator rules.unithealthmultiplier = Lebenspunkte-Einheit Multiplikator
rules.unitdamagemultiplier = Schaden-Einheit Multiplikator rules.unitdamagemultiplier = Schaden-Einheit Multiplikator
@@ -876,30 +876,29 @@ rules.enemycorebuildradius = Bauverbot Radius druch feindlichen Kern:[lightgray]
rules.wavespacing = Wellen-Abstand:[lightgray] (Sek) rules.wavespacing = Wellen-Abstand:[lightgray] (Sek)
rules.buildcostmultiplier = Bau-Kosten Multiplikator rules.buildcostmultiplier = Bau-Kosten Multiplikator
rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Abbau Ressourcen-Rückerstattung
rules.waitForWaveToEnd = Warten bis Welle endet rules.waitForWaveToEnd = Warten bis Welle endet
rules.dropzoneradius = Drop-Zonen-Radius:[lightgray] (Kacheln) rules.dropzoneradius = Drop-Zonen-Radius:[lightgray] (Kacheln)
rules.unitammo = Units Require Ammo rules.unitammo = Einheiten benötigen Munition
rules.title.waves = Wellen rules.title.waves = Wellen
rules.title.resourcesbuilding = Ressourcen & Gebäude rules.title.resourcesbuilding = Ressourcen & Gebäude
rules.title.enemy = Gegner rules.title.enemy = Gegner
rules.title.unit = Einheiten rules.title.unit = Einheiten
rules.title.experimental = Experimentell rules.title.experimental = Experimentell
rules.title.environment = Environment rules.title.environment = Umgebung
rules.lighting = Lighting rules.lighting = Blitze
rules.enemyLights = Enemy Lights rules.enemyLights = Gegnerisches Licht
rules.fire = Fire rules.fire = Feuer
rules.explosions = Block/Unit Explosion Damage rules.explosions = Explosionsschaden
rules.ambientlight = Ambient Light rules.ambientlight = Umgebungslicht
rules.weather = Weather rules.weather = Wetter
rules.weather.frequency = Frequency: rules.weather.frequency = Häufigkeit:
rules.weather.duration = Duration: rules.weather.duration = Dauer:
content.item.name = Materialien content.item.name = Materialien
content.liquid.name = Flüssigkeiten content.liquid.name = Flüssigkeiten
content.unit.name = Einheiten content.unit.name = Einheiten
content.block.name = Blöcke content.block.name = Blöcke
item.copper.name = Kupfer item.copper.name = Kupfer
item.lead.name = Blei item.lead.name = Blei
item.coal.name = Kohle item.coal.name = Kohle
@@ -929,11 +928,11 @@ unit.pulsar.name = Pulsar
unit.quasar.name = Quasar unit.quasar.name = Quasar
unit.crawler.name = Crawler unit.crawler.name = Crawler
unit.atrax.name = Atrax unit.atrax.name = Atrax
unit.spiroct.name = Spiroct unit.spiroct.name = Spirokt
unit.arkyid.name = Arkyid unit.arkyid.name = Arkyid
unit.toxopid.name = Toxopid unit.toxopid.name = Toxopid
unit.flare.name = Flare unit.flare.name = Flare
unit.horizon.name = Horizon unit.horizon.name = Horizont
unit.zenith.name = Zenith unit.zenith.name = Zenith
unit.antumbra.name = Antumbra unit.antumbra.name = Antumbra
unit.eclipse.name = Eclipse unit.eclipse.name = Eclipse
@@ -941,7 +940,7 @@ unit.mono.name = Mono
unit.poly.name = Poly unit.poly.name = Poly
unit.mega.name = Mega unit.mega.name = Mega
unit.quad.name = Quad unit.quad.name = Quad
unit.oct.name = Oct unit.oct.name = Okt
unit.risso.name = Risso unit.risso.name = Risso
unit.minke.name = Minke unit.minke.name = Minke
unit.bryde.name = Bryde unit.bryde.name = Bryde
@@ -953,31 +952,31 @@ unit.gamma.name = Gamma
unit.scepter.name = Scepter unit.scepter.name = Scepter
unit.reign.name = Reign unit.reign.name = Reign
unit.vela.name = Vela unit.vela.name = Vela
unit.corvus.name = Corvus unit.corvus.name = Korvus
block.resupply-point.name = Resupply Point block.resupply-point.name = Nachlade-Punkt
block.parallax.name = Parallax block.parallax.name = Parallax
block.cliff.name = Cliff block.cliff.name = Klippe
block.sand-boulder.name = Sandbrocken block.sand-boulder.name = Sandbrocken
block.grass.name = Gras block.grass.name = Gras
block.slag.name = Slag block.slag.name = Schlacke
block.space.name = Space block.space.name = Weltall
block.salt.name = Salz block.salt.name = Salz
block.salt-wall.name = Salt Wall block.salt-wall.name = Salzwand
block.pebbles.name = Geröll block.pebbles.name = Geröll
block.tendrils.name = Ranken block.tendrils.name = Ranken
block.sand-wall.name = Sand Wall block.sand-wall.name = Sandwand
block.spore-pine.name = Sporenkiefer block.spore-pine.name = Sporenkiefer
block.spore-wall.name = Spore Wall block.spore-wall.name = Sporenwand
block.boulder.name = Boulder block.boulder.name = Felsbrocken
block.snow-boulder.name = Snow Boulder block.snow-boulder.name = Schneebrocken
block.snow-pine.name = Schnee-Kiefer block.snow-pine.name = Schnee-Kiefer
block.shale.name = Schiefer block.shale.name = Schiefer
block.shale-boulder.name = Schiefergeröll block.shale-boulder.name = Schiefergeröll
block.moss.name = Moos block.moss.name = Moos
block.shrubs.name = Gestrüpp block.shrubs.name = Gestrüpp
block.spore-moss.name = Moossporen block.spore-moss.name = Moossporen
block.shale-wall.name = Shale Wall block.shale-wall.name = Schieferwand
block.scrap-wall.name = Schrottmauer block.scrap-wall.name = Schrottmauer
block.scrap-wall-large.name = Große Schrottmauer block.scrap-wall-large.name = Große Schrottmauer
block.scrap-wall-huge.name = Riesige Schrottmauer block.scrap-wall-huge.name = Riesige Schrottmauer
@@ -993,8 +992,8 @@ block.core-foundation.name = Kern: Fundament
block.core-nucleus.name = Kern: Nukleus block.core-nucleus.name = Kern: Nukleus
block.deepwater.name = Tiefes Wasser block.deepwater.name = Tiefes Wasser
block.water.name = Wasser block.water.name = Wasser
block.tainted-water.name = Unreines Wasser block.tainted-water.name = Dreckiges Wasser
block.darksand-tainted-water.name = Unreines Wasser (Dunkler Sand) block.darksand-tainted-water.name = Dreckiges Wasser (Dunkler Sand)
block.tar.name = Teer block.tar.name = Teer
block.stone.name = Stein block.stone.name = Stein
block.sand.name = Sand block.sand.name = Sand
@@ -1005,18 +1004,18 @@ block.craters.name = Krater
block.sand-water.name = Sandiges Wasser block.sand-water.name = Sandiges Wasser
block.darksand-water.name = Dunkles sandiges Wasser block.darksand-water.name = Dunkles sandiges Wasser
block.char.name = Holzkohle block.char.name = Holzkohle
block.dacite.name = Dacite block.dacite.name = Dazit
block.dacite-wall.name = Dacite Wall block.dacite-wall.name = Dazitwand
block.dacite-boulder.name = Dacite Boulder block.dacite-boulder.name = Dazitgeröll
block.ice-snow.name = Eisschnee block.ice-snow.name = Eisschnee
block.stone-wall.name = Stone Wall block.stone-wall.name = Steinwand
block.ice-wall.name = Ice Wall block.ice-wall.name = Eiswand
block.snow-wall.name = Snow Wall block.snow-wall.name = Schneewand
block.dune-wall.name = Dune Wall block.dune-wall.name = Dünenwand
block.pine.name = Kiefer block.pine.name = Kiefer
block.dirt.name = Dirt block.dirt.name = Erde
block.dirt-wall.name = Dirt Wall block.dirt-wall.name = Erdwand
block.mud.name = Mud block.mud.name = Schlamm
block.white-tree-dead.name = Weißer Baum (tot) block.white-tree-dead.name = Weißer Baum (tot)
block.white-tree.name = Weißer Baum block.white-tree.name = Weißer Baum
block.spore-cluster.name = Sporen-Cluster block.spore-cluster.name = Sporen-Cluster
@@ -1054,7 +1053,7 @@ block.hail.name = Hail
block.lancer.name = Lancer block.lancer.name = Lancer
block.conveyor.name = Förderband block.conveyor.name = Förderband
block.titanium-conveyor.name = Titan-Förderband block.titanium-conveyor.name = Titan-Förderband
block.plastanium-conveyor.name = Plastanium Förderband block.plastanium-conveyor.name = Plastanium-Förderband
block.armored-conveyor.name = Gepanzertes Förderband block.armored-conveyor.name = Gepanzertes Förderband
block.armored-conveyor.description = Bewegt Gegenstände genauso schnell wie das Titan-Förderband, ist aber besser gepanzert. Akzeptiert nur Verbindungen mit anderen Förderbändern. block.armored-conveyor.description = Bewegt Gegenstände genauso schnell wie das Titan-Förderband, ist aber besser gepanzert. Akzeptiert nur Verbindungen mit anderen Förderbändern.
block.junction.name = Kreuzung block.junction.name = Kreuzung
@@ -1143,38 +1142,38 @@ block.rtg-generator.name = RTG-Generator
block.spectre.name = Phantom block.spectre.name = Phantom
block.meltdown.name = Meltdown block.meltdown.name = Meltdown
block.foreshadow.name = Foreshadow block.foreshadow.name = Foreshadow
block.container.name = Container block.container.name = Behälter
block.launch-pad.name = Launchpad block.launch-pad.name = Launchpad
block.launch-pad-large.name = Großes Launchpad block.launch-pad-large.name = Großes Launchpad
block.segment.name = Segment block.segment.name = Segment
block.command-center.name = Command Center block.command-center.name = Kommandozentrale
block.ground-factory.name = Ground Factory block.ground-factory.name = Bodenfabrik
block.air-factory.name = Air Factory block.air-factory.name = Luftfabrik
block.naval-factory.name = Naval Factory block.naval-factory.name = Wasserfabrik
block.additive-reconstructor.name = Additive Reconstructor block.additive-reconstructor.name = Hinzufügender Rekonstrukteur
block.multiplicative-reconstructor.name = Multiplicative Reconstructor block.multiplicative-reconstructor.name = Multiplikativer Rekonstrukteur
block.exponential-reconstructor.name = Exponential Reconstructor block.exponential-reconstructor.name = Exponentieller Rekonstrukteur
block.tetrative-reconstructor.name = Tetrative Reconstructor block.tetrative-reconstructor.name = Tetrativer Rekonstrukteur
block.payload-conveyor.name = Mass Conveyor block.payload-conveyor.name = Einheitenförderband
block.payload-router.name = Payload Router block.payload-router.name = Einheitverteiler
block.disassembler.name = Disassembler block.disassembler.name = Großer Trenner
block.silicon-crucible.name = Silicon Crucible block.silicon-crucible.name = Silizium Schmelztiegel
block.overdrive-dome.name = Overdrive Dome block.overdrive-dome.name = Beschleunigungs-Maschine
block.switch.name = Switch block.switch.name = Schalter
block.micro-processor.name = Micro Processor block.micro-processor.name = Mikroprozessor
block.logic-processor.name = Logic Processor block.logic-processor.name = Logikprozessor
block.hyper-processor.name = Hyper Processor block.hyper-processor.name = Hyperprocessor
block.logic-display.name = Logic Display block.logic-display.name = Logik-Bildschirm
block.large-logic-display.name = Large Logic Display block.large-logic-display.name = Großer Logik-Bildschirm
block.memory-cell.name = Memory Cell block.memory-cell.name = Speicherzelle
block.memory-bank.name = Memory Bank block.memory-bank.name = Große Speicherzelle
team.blue.name = Blau team.blue.name = Blau
team.crux.name = Rot team.crux.name = Rot
team.sharded.name = Orange team.sharded.name = Orange
team.orange.name = Orange team.orange.name = Orange
team.derelict.name = Derelict team.derelict.name = Derelikt
team.green.name = Grün team.green.name = Grün
team.purple.name = Lila team.purple.name = Lila
@@ -1332,4 +1331,4 @@ block.cyclone.description = Ein großer Schnellfeuer-Geschützturm.
block.spectre.description = Ein großer Geschützturm, der zwei starke Schüsse gleichzeitig abfeuert. block.spectre.description = Ein großer Geschützturm, der zwei starke Schüsse gleichzeitig abfeuert.
block.meltdown.description = Ein großer Geschützturm, der starke Strahlen mit großer Reichweite abfeuert. block.meltdown.description = Ein großer Geschützturm, der starke Strahlen mit großer Reichweite abfeuert.
block.repair-point.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung. block.repair-point.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Beschädigt und zerstört gegnerische Projektile. Laser werden nicht anvisiert.

View File

@@ -8,8 +8,8 @@ link.github.description = Código fuente del juego
link.changelog.description = Lista de actualizaciones link.changelog.description = Lista de actualizaciones
link.dev-builds.description = Versiones en desarrollo inestables link.dev-builds.description = Versiones en desarrollo inestables
link.trello.description = Tablero de Trello oficial para las características planificadas link.trello.description = Tablero de Trello oficial para las características planificadas
link.itch.io.description = itch.io es la página donde podes descargar las versiones para PC y web link.itch.io.description = itch.io es la página donde podes descargar las versiones para PC y Servidor
link.google-play.description = Página de Mindustry en Google Play Store link.google-play.description = Ficha en la Google Play Store
link.f-droid.description = Página de F-Droid del juego link.f-droid.description = Página de F-Droid del juego
link.wiki.description = Wiki oficial de Mindustry link.wiki.description = Wiki oficial de Mindustry
link.suggestions.description = Sugerir nuevas funciones link.suggestions.description = Sugerir nuevas funciones
@@ -20,8 +20,10 @@ gameover = Tu núcleo ha sido destruido.
gameover.pvp = ¡El equipo[accent] {0}[] ha ganado! gameover.pvp = ¡El equipo[accent] {0}[] ha ganado!
highscore = [accent]¡Nuevo récord de puntuación! highscore = [accent]¡Nuevo récord de puntuación!
copied = Copiado. copied = Copiado.
indev.popup = La [accent]v6[] esta actualmente en la [accent]alpha[].\n[lightgray]Esto significa:[]\n[scarlet]- La campaña no esta completada[]\n- Falta contenido\n - La mayoría de la [scarlet]Inteligencia Artificial[] no funciona correctamente\n- Muchas unidades no están terminadas\n- Todo lo que ves puede ser modificado o eliminado en la versión final.\n\nReporta bugs o crasheos en [accent]Github[].
indev.notready = Esta parte del juego no esta lista aún. indev.popup = [accent]v6[] esta actualmente en [accent]alpha[].\n[lightgray]Esto significa que:[]\n[scarlet]- El modo de campaña no esta totalmente acabado[]\n-Falta contenido dentro del juego\n - Mucha de la [scarlet]AI de enemigos[] no funciona totalmente\n- Algunas unidades todavia no estan acabadas\n- Todo lo que ves es probable que sea cambiado o removido.\n\nReporta bugs o crasheos en [accent]Github[].
indev.notready = Esta parte del juego no esta lista todavia.
load.sound = Sonidos load.sound = Sonidos
load.map = Mapas load.map = Mapas
@@ -125,9 +127,11 @@ mod.enable = Activar
mod.requiresrestart = El juego se cerrará para aplicar los mods. mod.requiresrestart = El juego se cerrará para aplicar los mods.
mod.reloadrequired = [scarlet]Se requiere actualizar mod.reloadrequired = [scarlet]Se requiere actualizar
mod.import = Importar mod mod.import = Importar mod
mod.import.file = Importar archivo mod.import.file = Importar archivo
mod.import.github = Importar Mod de Github mod.import.github = Importar Mod de Github
mod.jarwarn = [scarlet]Los mods JAR pueden ser inseguros.[]\nAsegúrate de que los descargaste de una fuente segura! mod.jarwarn = [scarlet]Los mods JAR pueden ser inseguros.[]\nAsegúrate de que los descargaste de una fuente segura!
mod.item.remove = Este objeto es parte del[accent] '{0}'[] mod. Para eliminarlo, desinstala ese mod. mod.item.remove = Este objeto es parte del[accent] '{0}'[] mod. Para eliminarlo, desinstala ese mod.
mod.remove.confirm = Este mod va a ser eliminado.\n¿Quieres continuar? mod.remove.confirm = Este mod va a ser eliminado.\n¿Quieres continuar?
mod.author = [lightgray]Autor:[] {0} mod.author = [lightgray]Autor:[] {0}
@@ -148,7 +152,7 @@ techtree = Árbol de Tecnologías
research.list = [lightgray]investigación: research.list = [lightgray]investigación:
research = Investigación research = Investigación
researched = [lightgray]{0} investigado. researched = [lightgray]{0} investigado.
research.progress = {0}% complete research.progress = {0}% completado
players = {0} jugadores online players = {0} jugadores online
players.single = {0} jugador online players.single = {0} jugador online
players.search = buscar players.search = buscar
@@ -278,7 +282,9 @@ quit.confirm.tutorial = ¿Estás seguro de que sabes qué estas haciendo?\nSe pu
loading = [accent]Cargando... loading = [accent]Cargando...
reloading = [accent]Recargando mods... reloading = [accent]Recargando mods...
saving = [accent]Guardando... saving = [accent]Guardando...
respawn = [accent][[{0}][] para reaparecer en el núcleo
respawn = [accent][[{0}][] para respawnear en el nucleo
cancelbuilding = [accent][[{0}][] para limpiar el plan cancelbuilding = [accent][[{0}][] para limpiar el plan
selectschematic = [accent][[{0}][] para seleccionar+copiar selectschematic = [accent][[{0}][] para seleccionar+copiar
pausebuilding = [accent][[{0}][] para pausar la construcción pausebuilding = [accent][[{0}][] para pausar la construcción
@@ -350,10 +356,12 @@ waves.invalid = Oleadas inválidaas en el portapapeles.
waves.copied = Oleadas copiadas. waves.copied = Oleadas copiadas.
waves.none = No hay enemigos definidos.\nNótese que las listas de oleadas vacías se sustituirán por la lista por defecto. waves.none = No hay enemigos definidos.\nNótese que las listas de oleadas vacías se sustituirán por la lista por defecto.
wavemode.counts = Cuentas wavemode.counts = Cuentas
wavemode.totals = Totales wavemode.totals = Totales
wavemode.health = Salud wavemode.health = Salud
editor.default = [lightgray]<Por defecto> editor.default = [lightgray]<Por defecto>
details = Detalles... details = Detalles...
edit = Editar... edit = Editar...
@@ -512,7 +520,8 @@ weather.rain.name = Lluvia
weather.snow.name = Nieve weather.snow.name = Nieve
weather.sandstorm.name = Tormenta de arena weather.sandstorm.name = Tormenta de arena
weather.sporestorm.name = Tormenta de esporas weather.sporestorm.name = Tormenta de esporas
weather.fog.name = Fog
weather.fog.name = Niebla
sectors.unexplored = [lightgray]No explorado sectors.unexplored = [lightgray]No explorado
sectors.resources = Recursos: sectors.resources = Recursos:
@@ -523,12 +532,12 @@ sectors.launch = Lanzar
sectors.select = Elegir sectors.select = Elegir
sectors.nonelaunch = [lightgray]ninguno (sun) sectors.nonelaunch = [lightgray]ninguno (sun)
sectors.rename = Rename Sector sectors.rename = Rename Sector
sector.missingresources = [scarlet]Insufficient Core Resources sector.missingresources = [scarlet]Insuficientes recursos
planet.serpulo.name = Serpulo planet.serpulo.name = Serpulo
planet.sun.name = Sun planet.sun.name = Sol
sector.groundZero.name = Terreno Zero sector.groundZero.name = Zona de impacto
sector.craters.name = Los Cráteres sector.craters.name = Los Cráteres
sector.frozenForest.name = Bosque Congelado sector.frozenForest.name = Bosque Congelado
sector.ruinousShores.name = Costas Ruinosas sector.ruinousShores.name = Costas Ruinosas
@@ -540,17 +549,18 @@ sector.tarFields.name = Campos de alquitrán
sector.saltFlats.name = Llanuras de sal sector.saltFlats.name = Llanuras de sal
sector.fungalPass.name = Paso de hongos sector.fungalPass.name = Paso de hongos
sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. sector.groundZero.description = La ubicación óptima para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\nReúna la mayor cantidad de plomo y cobre posible.\nSiga adelante.
sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. sector.frozenForest.description = Incluso aquí, más cerca de las montañas, las esporas se han extendido. Las gélidas temperaturas no pueden contenerlos para siempre.\n\nComienza la aventura hacia el poder. Construye generadores de combustión. Aprenda a usar reparadores.
sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. sector.saltFlats.description = En las afueras del desierto se encuentran las Salinas. Se pueden encontrar pocos recursos en esta ubicación.\n\nEl enemigo ha erigido un complejo de almacenamiento de recursos aquí. Erradicar su núcleo. No dejes nada en pie.
sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. sector.craters.description = El agua se ha acumulado en este cráter, reliquia de las viejas guerras. Recupere el área. Recoge arena. Fundir metavidrio. Bombee agua para enfriar torretas y taladros.
sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. sector.ruinousShores.description = Más allá de los páramos, está la costa. Una vez, esta ubicación albergó una serie de defensa costera. No queda mucho. Solo las estructuras de defensa más básicas han quedado ilesas, todo lo demás reducido a chatarra.\nContinúe la expansión hacia afuera. Redescubra la tecnología.
sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. sector.stainedMountains.description = Más tierra adentro se encuentran las montañas, pero no contaminadas por esporas.\nExtraiga el abundante titanio de esta zona. Aprenda como usarlo.\n\nLa presencia enemiga es mayor aquí. No les des tiempo para enviar sus unidades más fuertes.
sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. sector.overgrowth.description = Esta área está cubierta de maleza, más cerca de la fuente de las esporas.\nEl enemigo ha establecido un puesto de avanzada aquí. Construye unidades Titán. Destruyelo. Recupera lo que se perdió.
sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. sector.tarFields.description = Las afueras de una zona de producción de petróleo, entre la montaña y el desierto. Una de las pocas áreas con reservas de alquitrán utilizables.\nAunque está abandonada, esta zona tiene algunas fuerzas enemigas peligrosas cerca. No los subestimes.\n\n[lightgray]Investigue la tecnología de procesamiento de aceite si es posible.
sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. sector.desolateRift.description = Una zona extremadamente peligrosa. Recursos abundantes, pero poco espacio. Alto riesgo de destrucción. Vete lo antes posible. No se deje engañar por el gran intervalo entre los ataques enemigos.
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.nuclearComplex.description = Antigua instalación de producción y procesamiento de torio, reducida a ruinas.\n[lightgray] Investiga el torio y sus múltiples usos.\n\nEl enemigo está presente aquí en gran número, constantemente en busca de atacantes.
sector.fungalPass.description = Un área de transición entre montañas altas y tierras bajas plagadas de esporas. Aquí se encuentra una pequeña base de reconocimiento enemiga.\nDestroy it.\nUsa unidades Dagger y Crawler. Saca los dos núcleos de funcionamiento!
settings.language = Idioma settings.language = Idioma
settings.data = Datos del Juego settings.data = Datos del Juego
@@ -564,12 +574,14 @@ settings.graphics = Gráficos
settings.cleardata = Limpiar Datos del Juego... settings.cleardata = Limpiar Datos del Juego...
settings.clear.confirm = ¿Estas seguro de querer limpiar estos datos?\n¡Esta acción no puede deshacerse! settings.clear.confirm = ¿Estas seguro de querer limpiar estos datos?\n¡Esta acción no puede deshacerse!
settings.clearall.confirm = [scarlet]ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y atajos de teclado.\nUna vez presiones 'ok', el juego va a borrrar todos tus datos y saldrá del juego automáticamente. settings.clearall.confirm = [scarlet]ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y atajos de teclado.\nUna vez presiones 'ok', el juego va a borrrar todos tus datos y saldrá del juego automáticamente.
settings.clearsaves.confirm = Estas seguro de que quieres borrar tus partidas guardadas? settings.clearsaves.confirm = Estas seguro de que quieres borrar tus partidas guardadas?
settings.clearsaves = Limpiar partidas guardadas settings.clearsaves = Limpiar partidas guardadas
settings.clearresearch = Clear Research settings.clearresearch = Borrar descubrimientos
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research? settings.clearresearch.confirm = Estas seguro?
settings.clearcampaignsaves = Clear Campaign Saves settings.clearcampaignsaves = Borrar Guardados de campaña
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves? settings.clearcampaignsaves.confirm = Estas seguro de que quieres borrar tus partidas guardadas en el modo campaña?
paused = [accent] < Pausado > paused = [accent] < Pausado >
clear = Limpiar clear = Limpiar
banned = [scarlet]Baneado banned = [scarlet]Baneado
@@ -579,8 +591,9 @@ no = No
info.title = [accent]Información info.title = [accent]Información
error.title = [crimson]Un error ha ocurrido. error.title = [crimson]Un error ha ocurrido.
error.crashtitle = Un error ha ocurrido. error.crashtitle = Un error ha ocurrido.
unit.nobuild = [scarlet]La unidad no puede construir unit.nobuild = [scarlet]La unidad no puede construir
lastaccessed = [lightgray]Last Accessed: {0} lastaccessed = [lightgray]Anteriormente usado: {0}
block.unknown = [lightgray]??? block.unknown = [lightgray]???
stat.input = Entrada stat.input = Entrada
@@ -627,31 +640,32 @@ stat.ammo = Munición
stat.shieldhealth = Salud del escudo stat.shieldhealth = Salud del escudo
stat.cooldowntime = Tiempo de enfriamiento stat.cooldowntime = Tiempo de enfriamiento
stat.explosiveness = Explosiveness stat.explosiveness = Explosiveness
stat.basedeflectchance = Base Deflect Chance stat.basedeflectchance = Probabilidad de desvío base
stat.lightningchance = Lightning Chance stat.lightningchance = Probabilidad de rayo
stat.lightningdamage = Lightning Damage stat.lightningdamage = Daño por rayo
stat.flammability = Flammability stat.flammability = Inflamabilidad
stat.radioactivity = Radioactivity stat.radioactivity = Radiactividad
stat.heatcapacity = HeatCapacity stat.heatcapacity = HeatCapacity
stat.viscosity = Viscosity stat.viscosity = Viscosidad
stat.temperature = Temperature stat.temperature = Temperatura
stat.speed = Speed stat.speed = Velocidad
stat.buildspeed = Build Speed stat.buildspeed = Velocidad de construcción
stat.minespeed = Mine Speed stat.minespeed = Velocidad de la mina
stat.minetier = Mine Tier stat.minetier = Nivel de mina
stat.payloadcapacity = Payload Capacity stat.payloadcapacity = Capacidad de carga útil
stat.commandlimit = Command Limit stat.commandlimit = Límite de comando
stat.abilities = Abilities stat.abilities = Habilidades
ability.forcefield = Force Field skill.forcefield = Campo de fuerza
ability.repairfield = Repair Field skill.repairfield = Campo de reparación
ability.statusfield = Status Field skill.statusfield = Campo de estado
ability.unitspawn = {0} Factory skill.unitspawn = {0} Fábrica
ability.shieldregenfield = Shield Regen Field skill.shieldregenfield = Campo de regeneración del escudo
bar.drilltierreq = Se requiere un mejor taladro. bar.drilltierreq = Se requiere un mejor taladro.
bar.noresources = Recursos faltantes bar.noresources = Recursos faltantes
bar.corereq = Se requiere de un núcleo base bar.corereq = Se requiere de 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
bar.efficiency = Eficiencia: {0}% bar.efficiency = Eficiencia: {0}%
@@ -701,7 +715,9 @@ unit.persecond = /seg
unit.perminute = /min unit.perminute = /min
unit.timesspeed = x velocidad unit.timesspeed = x velocidad
unit.percent = % unit.percent = %
unit.shieldhealth = salud del escudo
unit.shieldhealth = Vida del escudo
unit.items = objetos unit.items = objetos
unit.thousands = k unit.thousands = k
unit.millions = M unit.millions = M
@@ -718,8 +734,10 @@ setting.shadows.name = Sombras
setting.blockreplace.name = Sugerir bloques al construir setting.blockreplace.name = Sugerir bloques al construir
setting.linear.name = Filtrado Lineal setting.linear.name = Filtrado Lineal
setting.hints.name = Pistas setting.hints.name = Pistas
setting.flow.name = Mostrar flujo de recursos[scarlet] (experimental)
setting.flow.name = Mostrar tasa de flujo de recursos[scarlet] (experimental)
setting.buildautopause.name = Auto-pausar construcción setting.buildautopause.name = Auto-pausar construcción
setting.animatedwater.name = Agua Animada setting.animatedwater.name = Agua Animada
setting.animatedshields.name = Escudos Animados setting.animatedshields.name = Escudos Animados
setting.antialias.name = Antialias[lightgray] (necesita un reinicio)[] setting.antialias.name = Antialias[lightgray] (necesita un reinicio)[]
@@ -753,13 +771,15 @@ setting.fullscreen.name = Pantalla Completa
setting.borderlesswindow.name = Ventana sin Bordes[lightgray] (podría requerir un reinicio) setting.borderlesswindow.name = Ventana sin Bordes[lightgray] (podría requerir un reinicio)
setting.fps.name = Mostrar FPS setting.fps.name = Mostrar FPS
setting.smoothcamera.name = Cámara suave setting.smoothcamera.name = Cámara suave
setting.vsync.name = Vsync (Limita los fps a los Hz de tu pantalla) setting.vsync.name = Vsync (Limita los fps a los Hz de tu pantalla)
setting.pixelate.name = Pixelar [lightgray](podría reducir el rendimiento) setting.pixelate.name = Pixelar [lightgray](podría reducir el rendimiento)
setting.minimap.name = Mostrar Minimapa setting.minimap.name = Mostrar Minimapa
setting.coreitems.name = Display Core Items (WIP) setting.coreitems.name = Mostrar elementos en el nucleo (WIP)
setting.position.name = Mostrar posición del jugador. setting.position.name = Mostrar posición del jugador.
setting.musicvol.name = Volumen de la Música setting.musicvol.name = Volumen de la Música
setting.atmosphere.name = Show Planet Atmosphere setting.atmosphere.name = Mostrar atmosfera del planeta
setting.ambientvol.name = Volumen del Ambiente setting.ambientvol.name = Volumen del Ambiente
setting.mutemusic.name = Silenciar Musica setting.mutemusic.name = Silenciar Musica
setting.sfxvol.name = Volumen de los efectos de sonido setting.sfxvol.name = Volumen de los efectos de sonido
@@ -799,8 +819,10 @@ keybind.toggle_block_status.name = Cambiar estado de los bloques
keybind.move_x.name = Mover x keybind.move_x.name = Mover x
keybind.move_y.name = Mover y keybind.move_y.name = Mover y
keybind.mouse_move.name = Seguír al ratón keybind.mouse_move.name = Seguír al ratón
keybind.pan.name = Vista Pan
keybind.boost.name = Potenciar keybind.pan.name = Vista panorámica
keybind.boost.name = Impulsar
keybind.schematic_select.name = Seleccionar región keybind.schematic_select.name = Seleccionar región
keybind.schematic_menu.name = Menu de esquemas keybind.schematic_menu.name = Menu de esquemas
keybind.schematic_flip_x.name = Girar esquemático desde X keybind.schematic_flip_x.name = Girar esquemático desde X
@@ -850,7 +872,7 @@ keybind.zoom_minimap.name = Zoom del minimapa
mode.help.title = Descripción de modos mode.help.title = Descripción de modos
mode.survival.name = Supervivencia mode.survival.name = Supervivencia
mode.survival.description = El modo normal. Recursos limitados y oleadas automáticas. mode.survival.description = El modo normal. Recursos limitados y oleadas automáticas.
mode.sandbox.name = Caja de arena mode.sandbox.name = Arenero
mode.sandbox.description = Recursos ilimitados y sin temporizador para las oleadas. mode.sandbox.description = Recursos ilimitados y sin temporizador para las oleadas.
mode.editor.name = Editor mode.editor.name = Editor
mode.pvp.name = JcJ mode.pvp.name = JcJ
@@ -865,10 +887,10 @@ rules.schematic = Schematics Allowed
rules.wavetimer = Temportzador de Oleadas rules.wavetimer = Temportzador de Oleadas
rules.waves = Oleadas rules.waves = Oleadas
rules.attack = Modo de Ataque rules.attack = Modo de Ataque
rules.buildai = AI Building rules.buildai = Construccion de la IA
rules.enemyCheat = Recursos infinitos de la IA rules.enemyCheat = Recursos infinitos de la IA
rules.blockhealthmultiplier = Multiplicador de salud de bloque rules.blockhealthmultiplier = Multiplicador de salud de bloque
rules.blockdamagemultiplier = Block Damage Multiplier rules.blockdamagemultiplier = Multiplicador de daño de bloque
rules.unitbuildspeedmultiplier = Multiplicador de velocidad de creación de unidades rules.unitbuildspeedmultiplier = Multiplicador de velocidad de creación de unidades
rules.unithealthmultiplier = Multiplicador de la vida de las unidades rules.unithealthmultiplier = Multiplicador de la vida de las unidades
rules.unitdamagemultiplier = Multiplicador del daño de unidades rules.unitdamagemultiplier = Multiplicador del daño de unidades
@@ -885,15 +907,17 @@ rules.title.resourcesbuilding = Recursos y Construcción
rules.title.enemy = Enemigos rules.title.enemy = Enemigos
rules.title.unit = Unidades rules.title.unit = Unidades
rules.title.experimental = Experimental rules.title.experimental = Experimental
rules.title.environment = Entorno rules.title.environment = Entorno
rules.lighting = Iluminación rules.lighting = Iluminación
rules.enemyLights = Enemy Lights rules.enemyLights = Luces enemigas
rules.fire = Fire rules.fire = Fuego
rules.explosions = Daño de explosiones de Bloques/Unidades rules.explosions = Daño de explosiones de Bloques/Unidades
rules.ambientlight = Iluminación ambiental rules.ambientlight = Iluminación ambiental
rules.weather = Clima rules.weather = Clima
rules.weather.frequency = Frecuencia: rules.weather.frequency = Frequencia:
rules.weather.duration = Duración: rules.weather.duration = Duracion:
content.item.name = Objetos content.item.name = Objetos
content.liquid.name = Líquidos content.liquid.name = Líquidos
@@ -921,6 +945,7 @@ liquid.slag.name = Fundido
liquid.oil.name = Petróleo liquid.oil.name = Petróleo
liquid.cryofluid.name = Criogénico liquid.cryofluid.name = Criogénico
unit.dagger.name = Daga unit.dagger.name = Daga
unit.mace.name = Mazo unit.mace.name = Mazo
unit.fortress.name = Fortaleza unit.fortress.name = Fortaleza
@@ -931,10 +956,10 @@ unit.crawler.name = Oruga
unit.atrax.name = Atrax unit.atrax.name = Atrax
unit.spiroct.name = Spiroct unit.spiroct.name = Spiroct
unit.arkyid.name = Arkyid unit.arkyid.name = Arkyid
unit.toxopid.name = Toxopid unit.toxopid.name = Toxopodo
unit.flare.name = Llama unit.flare.name = Bengala
unit.horizon.name = Horizonte unit.horizon.name = Horizonte
unit.zenith.name = Zenith unit.zenith.name = Cenit
unit.antumbra.name = Antumbra unit.antumbra.name = Antumbra
unit.eclipse.name = Eclipse unit.eclipse.name = Eclipse
unit.mono.name = Mono unit.mono.name = Mono
@@ -956,28 +981,34 @@ unit.vela.name = Vela
unit.corvus.name = Corvo unit.corvus.name = Corvo
block.resupply-point.name = Punto de reabastecimiento block.resupply-point.name = Punto de reabastecimiento
block.parallax.name = Parallax
block.parallax.name = Paralaje
block.cliff.name = Acantilado block.cliff.name = Acantilado
block.sand-boulder.name = Piedra de Arena block.sand-boulder.name = Piedra de Arena
block.grass.name = Hierba block.grass.name = Hierba
block.slag.name = Escoria block.slag.name = Escoria
block.space.name = Space block.space.name = Space
block.salt.name = Sal block.salt.name = Sal
block.salt-wall.name = Pared de sal
block.salt-wall.name = Muro de sal
block.pebbles.name = Guijarros block.pebbles.name = Guijarros
block.tendrils.name = Zarcillos block.tendrils.name = Zarcillos
block.sand-wall.name = Pared de arena block.sand-wall.name = Muro de arena
block.spore-pine.name = Pino de esporas block.spore-pine.name = Pino de esporas
block.spore-wall.name = Pared de esporas block.spore-wall.name = Muro de esporas
block.boulder.name = Boulder block.boulder.name = Roca
block.snow-boulder.name = Piedra nevosa block.snow-boulder.name = Roca de nieve
block.snow-pine.name = Pino de nieve block.snow-pine.name = Pino de nieve
block.shale.name = Pizarra block.shale.name = Pizarra
block.shale-boulder.name = Piedra de Pizarra block.shale-boulder.name = Piedra de Pizarra
block.moss.name = Musgo block.moss.name = Musgo
block.shrubs.name = Arbustos block.shrubs.name = Arbustos
block.spore-moss.name = Musgo de esporas block.spore-moss.name = Musgo de esporas
block.shale-wall.name = Pared de shale
block.shale-wall.name = Muro de pizarra
block.scrap-wall.name = Muro de Chatarra block.scrap-wall.name = Muro de Chatarra
block.scrap-wall-large.name = Muro de Chatarra grande 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
@@ -1148,33 +1179,39 @@ block.launch-pad.name = Pad de Lanzamiento
block.launch-pad-large.name = Pad de Lanzamiento Grande block.launch-pad-large.name = Pad de Lanzamiento Grande
block.segment.name = Segmento block.segment.name = Segmento
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
block.air-factory.name = Fábrica aérea block.air-factory.name = Fábrica aérea
block.naval-factory.name = Fábrica naval block.naval-factory.name = Fábrica naval
block.additive-reconstructor.name = Reconstructor aditivo block.additive-reconstructor.name = Reconstructor aditivo
block.multiplicative-reconstructor.name = Reconstructor multiplicativo block.multiplicative-reconstructor.name = Reconstructor multiplicativo
block.exponential-reconstructor.name = Reconstructor exponencial block.exponential-reconstructor.name = Reconstructor exponencial
block.tetrative-reconstructor.name = Reconstructor tetrativo block.tetrative-reconstructor.name = Reconstructor tetrativo
block.payload-conveyor.name = Cinta de transporte masivo
block.payload-router.name = Enrutador Payload
block.disassembler.name = Desmontador
block.silicon-crucible.name = Crisol de Silicio
block.overdrive-dome.name = Domo de sobremarcha
block.switch.name = Cambio block.payload-conveyor.name = Transportador masivo
block.micro-processor.name = Micro Procesador block.payload-router.name = Enrutador de carga útil
block.logic-processor.name = Procesador Lógico block.disassembler.name = Desensamblador
block.hyper-processor.name = Hiper Procesador block.silicon-crucible.name = Crisol de silicio
block.logic-display.name = Pantalla Lógica block.overdrive-dome.name = Cupula de sobremarcha
block.large-logic-display.name = Pantalla Lógica grande
block.memory-cell.name = Célula de memoria block.switch.name = Interruptor
block.memory-bank.name = Memory Bank block.micro-processor.name = Micro Processador
block.logic-processor.name = Procesador lógico
block.hyper-processor.name = Hiperprocesador
block.logic-display.name = Pantalla lógica
block.large-logic-display.name = Gran pantalla lógica
block.memory-cell.name = Celda de memoria
block.memory-bank.name = Banco de memoria
team.blue.name = Azul team.blue.name = Azul
team.crux.name = rojo team.crux.name = rojo
team.sharded.name = naranja team.sharded.name = naranja
team.orange.name = Naranja team.orange.name = Naranja
team.derelict.name = Abandonado
team.derelict.name = derelicto
team.green.name = Verde team.green.name = Verde
team.purple.name = Púrpura team.purple.name = Púrpura

View File

@@ -21,7 +21,7 @@ gameover.pvp = [accent] {0}[] joukkue voittaa!
highscore = [accent]Uusi ennätys! highscore = [accent]Uusi ennätys!
copied = Kopioitu. copied = Kopioitu.
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]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.notready = This part of the game isn't ready yet indev.notready = Tämä osa peliä ei ole vielä valmis
load.sound = Ääniä load.sound = Ääniä
load.map = Karttoja load.map = Karttoja
@@ -42,7 +42,7 @@ schematic = Kaavio
schematic.add = Tallenna kaavio... schematic.add = Tallenna kaavio...
schematics = Kaaviot schematics = Kaaviot
schematic.replace = Kaavio tällä nimellä on jo olemassa. Haluatko korvata sen? schematic.replace = Kaavio tällä nimellä on jo olemassa. Haluatko korvata sen?
schematic.exists = A schematic by that name already exists. schematic.exists = Kaavio tällä nimellä on jo olemassa.
schematic.import = Tuo kaavio... schematic.import = Tuo kaavio...
schematic.exportfile = Vie tiedosto schematic.exportfile = Vie tiedosto
schematic.importfile = Tuo tiedosto schematic.importfile = Tuo tiedosto
@@ -55,7 +55,7 @@ schematic.saved = Kaavio tallennettu.
schematic.delete.confirm = Tämä kaavio poistetaan. schematic.delete.confirm = Tämä kaavio poistetaan.
schematic.rename = Nimeä kaavio uudelleen schematic.rename = Nimeä kaavio uudelleen
schematic.info = {0}x{1}, {2} palikkaa schematic.info = {0}x{1}, {2} palikkaa
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.disabled = [scarlet]Kaaviot poistettu käytöstä[]\nEt pysty käyttämään kaavioita tällä [accent]kartalla[] tai [accent]palvelimella.
stat.wave = Tasoja voitettu:[accent] {0} stat.wave = Tasoja voitettu:[accent] {0}
stat.enemiesDestroyed = Vihollisia tuhottu:[accent] {0} stat.enemiesDestroyed = Vihollisia tuhottu:[accent] {0}
@@ -63,7 +63,7 @@ stat.built = Rakennuksia rakennettu:[accent] {0}
stat.destroyed = Rakennuksia tuhottu:[accent] {0} stat.destroyed = Rakennuksia tuhottu:[accent] {0}
stat.deconstructed = Rakennuksia purettu:[accent] {0} stat.deconstructed = Rakennuksia purettu:[accent] {0}
stat.delivered = Resursseja laukaistu: stat.delivered = Resursseja laukaistu:
stat.playtime = Time Played:[accent] {0} stat.playtime = Pelattu aika:[accent] {0}
stat.rank = Lopullinen arvosana: [accent]{0} stat.rank = Lopullinen arvosana: [accent]{0}
globalitems = [accent]Global Items globalitems = [accent]Global Items
@@ -236,8 +236,8 @@ save.delete.confirm = Oletko varma että haluat poistaa tämän tallennuksen?
save.delete = Poista save.delete = Poista
save.export = Vie tallennus save.export = Vie tallennus
save.import.invalid = [accent]This save is invalid! save.import.invalid = [accent]This save is invalid!
save.import.fail = [crimson]Failed to import save: [accent]{0} save.import.fail = [crimson]Tallennuksen tuominen epäonnistui: [accent]{0}
save.export.fail = [crimson]Failed to export save: [accent]{0} save.export.fail = [crimson]Tallennuksen vieminen epäonnistui: [accent]{0}
save.import = Tuo tallennus save.import = Tuo tallennus
save.newslot = Tallennuksen nimi: save.newslot = Tallennuksen nimi:
save.rename = Nimeä uudelleen save.rename = Nimeä uudelleen

View File

@@ -284,15 +284,15 @@ selectschematic = [accent][[{0}][] pour sélectionner et copier
pausebuilding = [accent][[{0}][] pour mettre la construction en pause pausebuilding = [accent][[{0}][] pour mettre la construction en pause
resumebuilding = [scarlet][[{0}][] pour reprendre la construction resumebuilding = [scarlet][[{0}][] pour reprendre la construction
wave = [accent]Vague {0} wave = [accent]Vague {0}
wave.cap = [accent]Wave {0}/{1} wave.cap = [accent]Vague {0}/{1}
wave.waiting = [lightgray]Vague dans {0} wave.waiting = [lightgray]Vague dans {0}
wave.waveInProgress = [lightgray]Vague en cours wave.waveInProgress = [lightgray]Vague en cours
waiting = [lightgray]En attente... waiting = [lightgray]En attente...
waiting.players = En attente de joueurs... waiting.players = En attente de joueurs...
wave.enemies = [lightgray]{0} Ennemis restants wave.enemies = [lightgray]{0} Ennemis restants
wave.enemy = [lightgray]{0} Ennemi restant wave.enemy = [lightgray]{0} Ennemi restant
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves. wave.guardianwarn = Gardien à l'approche dans [accent]{0}[] vagues.
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave. wave.guardianwarn.one = Gardien à l'approche dans [accent]{0}[] vague.
loadimage = Charger l'image loadimage = Charger l'image
saveimage = Sauvegarder l'image saveimage = Sauvegarder l'image
unknown = Inconnu unknown = Inconnu
@@ -331,7 +331,7 @@ editor.generation = Génération:
editor.ingame = Éditer dans le jeu editor.ingame = Éditer dans le jeu
editor.publish.workshop = Publier sur le Workshop editor.publish.workshop = Publier sur le Workshop
editor.newmap = Nouvelle carte editor.newmap = Nouvelle carte
editor.center = Center editor.center = Centrer
workshop = Steam Workshop workshop = Steam Workshop
waves.title = Vagues waves.title = Vagues
waves.remove = Supprimer waves.remove = Supprimer
@@ -445,7 +445,7 @@ filter.option.amount = Quantité
filter.option.block = Bloc filter.option.block = Bloc
filter.option.floor = Sol filter.option.floor = Sol
filter.option.flooronto = Sol en question filter.option.flooronto = Sol en question
filter.option.target = Target filter.option.target = Cible
filter.option.wall = Mur filter.option.wall = Mur
filter.option.ore = Minerai filter.option.ore = Minerai
filter.option.floor2 = Sol secondaire filter.option.floor2 = Sol secondaire

View File

@@ -1066,7 +1066,7 @@ block.message.name = Message
block.illuminator.name = Illuminator block.illuminator.name = Illuminator
block.illuminator.description = A small, compact, configurable light source. Requires power to function. block.illuminator.description = A small, compact, configurable light source. Requires power to function.
block.overflow-gate.name = Barrière de Débordement block.overflow-gate.name = Barrière de Débordement
block.underflow-gate.name = Underflow Gate block.underflow-gate.name = Barrière de Refoulement
block.silicon-smelter.name = Fonderie de silicium block.silicon-smelter.name = Fonderie de silicium
block.phase-weaver.name = Tisseur à phase block.phase-weaver.name = Tisseur à phase
block.pulverizer.name = Pulvérisateur block.pulverizer.name = Pulvérisateur
@@ -1274,7 +1274,7 @@ block.inverted-sorter.description = Processes items like a standard sorter, but
block.router.description = Accepte les éléments d'une direction et les envoie dans 3 autres directions de manière égale. Utile pour séparer les matériaux d'une source en plusieurs cibles. block.router.description = Accepte les éléments d'une direction et les envoie dans 3 autres directions de manière égale. Utile pour séparer les matériaux d'une source en plusieurs cibles.
block.distributor.description = Un routeur avancé qui divise les articles en 7 autres directions de manière égale. [scarlet]Seule et unique ![] block.distributor.description = Un routeur avancé qui divise les articles en 7 autres directions de manière égale. [scarlet]Seule et unique ![]
block.overflow-gate.description = C'est la combinaison entre un routeur et un diviseur qui peut seulement distribuer à gauche et à droite si le chemin de devant est bloqué. block.overflow-gate.description = C'est la combinaison entre un routeur et un diviseur qui peut seulement distribuer à gauche et à droite si le chemin de devant est bloqué.
block.underflow-gate.description = The opposite of an overflow gate. Outputs to the front if the left and right paths are blocked. block.underflow-gate.description = Le contraire d'une barrière de débordement.\nEnvoie les ressources vers l'avant si les chemins de gauche et de droite sont bloqués.
block.mass-driver.description = Bloc de transport d'articles ultime.\nRecueille plusieurs objets et les envoie ensuite à un autre pilote de masse sur une longue distance. block.mass-driver.description = Bloc de transport d'articles ultime.\nRecueille plusieurs objets et les envoie ensuite à un autre pilote de masse sur une longue distance.
block.mechanical-pump.description = Une pompe bon marché avec un débit lent, mais aucune consommation d'énergie. block.mechanical-pump.description = Une pompe bon marché avec un débit lent, mais aucune consommation d'énergie.
block.rotary-pump.description = Une pompe avancée qui double la vitesse en utilisant lénergie. block.rotary-pump.description = Une pompe avancée qui double la vitesse en utilisant lénergie.

View File

@@ -473,7 +473,7 @@ abandon = Verlaat
abandon.text = Je verliest deze kaart met alles erop en eraan aan de vijand. abandon.text = Je verliest deze kaart met alles erop en eraan aan de vijand.
locked = Op slot locked = Op slot
complete = [lightgray]Voltooid: complete = [lightgray]Voltooid:
requirement.wave = Berijk ronde {0} in {1} requirement.wave = Bereik ronde {0} in {1}
requirement.core = Vernietig vijandige core in {0} requirement.core = Vernietig vijandige core in {0}
requirement.research = Research {0} requirement.research = Research {0}
requirement.capture = Capture {0} requirement.capture = Capture {0}
@@ -489,7 +489,7 @@ addall = Voeg Alles Toe
launch.destination = Destination: {0} launch.destination = Destination: {0}
configure.invalid = Hoeveelheid moet een getal zijn tussen 0 en {0}. configure.invalid = Hoeveelheid moet een getal zijn tussen 0 en {0}.
zone.unlocked = [lightgray]{0} vrijgespeeld. zone.unlocked = [lightgray]{0} vrijgespeeld.
zone.requirement.complete = Ronde {0} berijkt:\n{1} zone vrijgespeeld. zone.requirement.complete = Ronde {0} bereikt:\n{1} zone vrijgespeeld.
zone.resources = Vindbare grondstoffen: zone.resources = Vindbare grondstoffen:
zone.objective = [lightgray]Doel: [accent]{0} zone.objective = [lightgray]Doel: [accent]{0}
zone.objective.survival = Overleef zone.objective.survival = Overleef
@@ -1064,7 +1064,7 @@ block.sorter.name = Sorteerder
block.inverted-sorter.name = Omgekeerder Sorteerder block.inverted-sorter.name = Omgekeerder Sorteerder
block.message.name = Bericht block.message.name = Bericht
block.illuminator.name = Lamp block.illuminator.name = Lamp
block.illuminator.description = Een kleine aanpasbare lamp, heef stroom nodig. block.illuminator.description = Een kleine aanpasbare lamp, heeft stroom nodig.
block.overflow-gate.name = Overflow Gate block.overflow-gate.name = Overflow Gate
block.underflow-gate.name = Underflow Gate block.underflow-gate.name = Underflow Gate
block.silicon-smelter.name = Siliciumsmelter block.silicon-smelter.name = Siliciumsmelter
@@ -1201,9 +1201,9 @@ tutorial.waves.mobile = De[lightgray] vijand[] naderd.\n\nVerdedig je core voor
tutorial.launch = Tijdens sommige waves, kan je je core[accent] lanceren[], hiermee verlaat je de basis permanent[accent] maar je neemt wel alles dat in de core zit met je mee.[]\nMet deze grondstoffen kan je nieuwe technologieën onderzoeken.\n\n[accent]Druk op de lanceerknop. tutorial.launch = Tijdens sommige waves, kan je je core[accent] lanceren[], hiermee verlaat je de basis permanent[accent] maar je neemt wel alles dat in de core zit met je mee.[]\nMet deze grondstoffen kan je nieuwe technologieën onderzoeken.\n\n[accent]Druk op de lanceerknop.
item.copper.description = Een nuttig materiaal voor gebouwen. Wordt erg vaak in blokken gebruikt. item.copper.description = Een nuttig materiaal voor gebouwen. Wordt erg vaak in blokken gebruikt.
item.lead.description = Een basismateriaal. Wordt vaak gebruikt in elektronica en vloeistoftransport. item.lead.description = Een basismateriaal. Wordt veel gebruikt in elektronica en vloeistoftransport.
item.metaglass.description = A super-tough glass compound. Extensively used for liquid distribution and storage. item.metaglass.description = Een supersterke glas-samenstelling. Veel gebruikt voor vloeistof transport en opslag.
item.graphite.description = Mineralized carbon, used for ammunition and electrical insulation. item.graphite.description = Gemineraliseerde koolstof, gebruikt voor ammunitie en elektrische isolatie.
item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux. item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux.
item.coal.description = A common and readily available fuel. item.coal.description = A common and readily available fuel.
item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft. item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft.

View File

@@ -20,8 +20,8 @@ gameover = O núcleo foi destruído.
gameover.pvp = O time[accent] {0}[] ganhou! gameover.pvp = O time[accent] {0}[] ganhou!
highscore = [accent]Novo recorde! highscore = [accent]Novo recorde!
copied = Copiado copied = Copiado
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]v6[] está atualmente em [accent]alpha[].\n[lightgray]Isso significa:[]\n[scarlet]- A campanha está inacabada[]\n- Está faltando conteúdo\n - A maioria das [scarlet]IAs das unidades[] não funciona adequadamente\n- A maioria das unidades estão inacabadas\n- Tudo o que você ver está sujeito a mudanças ou remoção.\n\nReporte bugs ou crashes em [accent]Github[].
indev.notready = This part of the game isn't ready yet indev.notready = Essa parte do jogo ainda não esta pronta
load.sound = Sons load.sound = Sons
load.map = Mapas load.map = Mapas
@@ -55,7 +55,7 @@ schematic.saved = Esquema salvo.
schematic.delete.confirm = Esse esquema será apagado. Tem certeza? schematic.delete.confirm = Esse esquema será apagado. Tem certeza?
schematic.rename = Renomear esquema schematic.rename = Renomear esquema
schematic.info = {0}x{1}, {2} blocos schematic.info = {0}x{1}, {2} blocos
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.disabled = [scarlet]Esquemas desativados[]\nVocê precisa de permissão para usar esquemas nesse [accent]mapa[] ou [accent]servidor.
stat.wave = Hordas derrotadas:[accent] {0} stat.wave = Hordas derrotadas:[accent] {0}
stat.enemiesDestroyed = Inimigos destruídos:[accent] {0} stat.enemiesDestroyed = Inimigos destruídos:[accent] {0}
@@ -66,7 +66,7 @@ stat.delivered = Recursos lançados:
stat.playtime = Tempo jogado:[accent] {0} stat.playtime = Tempo jogado:[accent] {0}
stat.rank = Classificação final: [accent]{0} stat.rank = Classificação final: [accent]{0}
globalitems = [accent]Global Items globalitems = [accent]Itens Globais
map.delete = Certeza que quer deletar o mapa "[accent]{0}[]"? map.delete = Certeza que quer deletar o mapa "[accent]{0}[]"?
level.highscore = Melhor\npontuação: [accent] {0} level.highscore = Melhor\npontuação: [accent] {0}
level.select = Seleção de fase level.select = Seleção de fase
@@ -106,16 +106,16 @@ mods.none = [lightgray]Nenhum mod encontrado!
mods.guide = Guia de mods mods.guide = Guia de mods
mods.report = Reportar um Bug mods.report = Reportar um Bug
mods.openfolder = Abrir pasta de mods mods.openfolder = Abrir pasta de mods
mods.reload = Reload mods.reload = Recarregar
mods.reloadexit = The game will now exit, to reload mods. mods.reloadexit = O jogo vai fechar, para poder recarregar os mods.
mod.display = [gray]Mod:[orange] {0} mod.display = [gray]Mod:[orange] {0}
mod.enabled = [lightgray]Ativado mod.enabled = [lightgray]Ativado
mod.disabled = [scarlet]Desativado mod.disabled = [scarlet]Desativado
mod.disable = Desati-\nvar mod.disable = Desati-\nvar
mod.content = Content: mod.content = Conteúdo:
mod.delete.error = Incapaz de deletar o mod. O arquivo talvez esteja em uso. mod.delete.error = Incapaz de deletar o mod. O arquivo talvez esteja em uso.
mod.requiresversion = [scarlet]Requer no mínimo versão [accent]{0} [scarlet]do jogo. mod.requiresversion = [scarlet]Requer no mínimo versão [accent]{0} [scarlet]do jogo.
mod.outdated = [scarlet]Not compatible with V6 (no minGameVersion: 105) mod.outdated = [scarlet]Não compatível com a V6 (sem minGameVersion: 105)
mod.missingdependencies = [scarlet]Dependências ausentes: {0} mod.missingdependencies = [scarlet]Dependências ausentes: {0}
mod.erroredcontent = [scarlet]Erros no conteúdo mod.erroredcontent = [scarlet]Erros no conteúdo
mod.errors = Ocorreram erros ao carregar o conteúdo. mod.errors = Ocorreram erros ao carregar o conteúdo.
@@ -125,22 +125,22 @@ mod.enable = Ativar
mod.requiresrestart = O jogo irá fechar para aplicar as mudanças do mod. mod.requiresrestart = O jogo irá fechar para aplicar as mudanças do mod.
mod.reloadrequired = [scarlet]Recarregamento necessário mod.reloadrequired = [scarlet]Recarregamento necessário
mod.import = Importar mod mod.import = Importar mod
mod.import.file = Import File mod.import.file = Importar Arquivo
mod.import.github = Importar mod do GitHub mod.import.github = Importar mod do GitHub
mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.jarwarn = [scarlet]mods JAR são altamente inseguros.[]\nTenha certeza que esse mod tenha uma fonte confiável!
mod.item.remove = Este item é parte do mod[accent] '{0}'[]. Para removê-lo, desinstale esse mod. mod.item.remove = Este item é parte do mod[accent] '{0}'[]. Para removê-lo, desinstale esse mod.
mod.remove.confirm = Este mod será deletado. mod.remove.confirm = Este mod será deletado.
mod.author = [lightgray]Autor:[] {0} mod.author = [lightgray]Autor:[] {0}
mod.missing = Esse jogo salvo foi criado antes de você atualizar ou desinstalar um mod. Pode ocorrer uma corrupção no salvamento. Você tem certeza que quer carregar?\n[lightgray]Mods:\n{0} mod.missing = Esse jogo salvo foi criado antes de você atualizar ou desinstalar um mod. Pode ocorrer uma corrupção no salvamento. Você tem certeza que quer carregar?\n[lightgray]Mods:\n{0}
mod.preview.missing = Antes de publicar esse mod na oficina, você deve adicionar uma imagem de pré-visualização.\nColoque uma imagem com o nome[accent] preview.png[] na pasta do mod e tente novamente. mod.preview.missing = Antes de publicar esse mod na oficina, você deve adicionar uma imagem de pré-visualização.\nColoque uma imagem com o nome[accent] preview.png[] na pasta do mod e tente novamente.
mod.folder.missing = Somente mods no formato de pasta serão publicados na oficina.\nPara converter qualquer Mod em uma pasta, Simplesmente descompacte seu arquivo numa pasta e delete a compactação antiga, então reinicie seu jogo ou recarregue os mods. mod.folder.missing = Somente mods no formato de pasta serão publicados na oficina.\nPara converter qualquer Mod em uma pasta, Simplesmente descompacte seu arquivo numa pasta e delete a compactação antiga, então reinicie seu jogo ou recarregue os mods.
mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game. mod.scripts.disable = Seu dispositivo não suporta mods com scripts. Você precisa desabilitar esses mods para conseguir jogar.
about.button = Sobre about.button = Sobre
name = Nome: name = Nome:
noname = Escolha[accent] um nome[] primeiro. noname = Escolha[accent] um nome[] primeiro.
planetmap = Planet Map planetmap = Mapa do Planeta
launchcore = Launch Core launchcore = Lançar núcleo
filename = Nome do arquivo: filename = Nome do arquivo:
unlocked = Novo bloco desbloqueado! unlocked = Novo bloco desbloqueado!
completed = [accent]Completado completed = [accent]Completado
@@ -148,7 +148,7 @@ techtree = Árvore Tecnológica
research.list = [lightgray]Pesquise: research.list = [lightgray]Pesquise:
research = Pesquisar research = Pesquisar
researched = [lightgray]{0} Pesquisado. researched = [lightgray]{0} Pesquisado.
research.progress = {0}% complete research.progress = {0}% completo
players = {0} Jogadores ativos players = {0} Jogadores ativos
players.single = {0} Jogador ativo players.single = {0} Jogador ativo
players.search = Procurar players.search = Procurar
@@ -278,21 +278,21 @@ quit.confirm.tutorial = Você tem certeza que você sabe o que você esta fazend
loading = [accent]Carregando... loading = [accent]Carregando...
reloading = [accent]Recarregando mods... reloading = [accent]Recarregando mods...
saving = [accent]Salvando... saving = [accent]Salvando...
respawn = [accent][[{0}][] to respawn in core respawn = [accent][[{0}][] para nascer no núcleo
cancelbuilding = [accent][[{0}][] para cancelar a construção cancelbuilding = [accent][[{0}][] para cancelar a construção
selectschematic = [accent][[{0}][] para selecionar + copiar selectschematic = [accent][[{0}][] para selecionar + copiar
pausebuilding = [accent][[{0}][] para parar a construção pausebuilding = [accent][[{0}][] para parar a construção
resumebuilding = [scarlet][[{0}][] para continuar a construção resumebuilding = [scarlet][[{0}][] para continuar a construção
wave = [accent]Horda {0} wave = [accent]Horda {0}
wave.cap = [accent]Wave {0}/{1} wave.cap = [accent]Horda {0}/{1}
wave.waiting = Proxima horda em {0} wave.waiting = Proxima horda em {0}
wave.waveInProgress = [lightgray]Horda em progresso wave.waveInProgress = [lightgray]Horda em progresso
waiting = Aguardando... waiting = Aguardando...
waiting.players = Esperando por jogadores... waiting.players = Esperando por jogadores...
wave.enemies = [lightgray]{0} inimigos restantes wave.enemies = [lightgray]{0} inimigos restantes
wave.enemy = [lightgray]{0} inimigo restante wave.enemy = [lightgray]{0} inimigo restante
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves. wave.guardianwarn = Guardião se aproximando em [accent]{0}[] Hordas.
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave. wave.guardianwarn.one = Guardião se aproximando em [accent]{0}[] Horda.
loadimage = Carregar\nimagem loadimage = Carregar\nimagem
saveimage = Salvar\nimagem saveimage = Salvar\nimagem
unknown = Desconhecido unknown = Desconhecido
@@ -339,7 +339,7 @@ waves.never = <nunca>
waves.every = a cada waves.every = a cada
waves.waves = Horda(s) waves.waves = Horda(s)
waves.perspawn = por spawn waves.perspawn = por spawn
waves.shields = shields/wave waves.shields = Escudo/Horda
waves.to = para waves.to = para
waves.guardian = Guardian waves.guardian = Guardian
waves.preview = Pré-visualizar waves.preview = Pré-visualizar
@@ -350,9 +350,9 @@ waves.invalid = Hordas inválidas na área de transferência.
waves.copied = Hordas copiadas. waves.copied = Hordas copiadas.
waves.none = Sem hordas definidas.\nNote que layouts vazios de hordas serão automaticamente substituídos pelo layout padrão. waves.none = Sem hordas definidas.\nNote que layouts vazios de hordas serão automaticamente substituídos pelo layout padrão.
wavemode.counts = counts wavemode.counts = quantidade
wavemode.totals = totals wavemode.totals = total
wavemode.health = health wavemode.health = vida
editor.default = [lightgray]<padrão> editor.default = [lightgray]<padrão>
details = Detalhes... details = Detalhes...

View File

@@ -20,7 +20,7 @@ gameover = Jocul s-a încheiat
gameover.pvp = Echipa [accent] {0}[] este câștigătoare! gameover.pvp = Echipa [accent] {0}[] este câștigătoare!
highscore = [accent]Scor maxim nou! highscore = [accent]Scor maxim nou!
copied = Copiat. copied = Copiat.
indev.popup = [accent]v6[] este momentan în [accent]beta[].\n[lightgray]Asta înseamnă că:[]\n[scarlet]- Campania este complet neterminată[]\n- Efectele sonore și muzica sunt neterminate/lipsesc\n- Majoritatea [scarlet]AI-ului unităților[] nu funcționează bine\n- Multe unități sunt neterminate\n- Modul campanie nu este terminat \n- Tot ce vedeți se poate schimba sau poate fi eliminat.\n\nPentru a raporta buguri și crashuri intrați pe [accent]Github[]. indev.popup = [accent]v6[] este momentan în [accent]beta[].\n[lightgray]Asta înseamnă că:[]\n[scarlet]- Campania este complet neterminată[]\n- Efectele sonore și muzica sunt neterminate/lipsesc\n- Tot ce vedeți se poate schimba sau poate fi eliminat.\n\nPentru a raporta buguri și crashuri intrați pe [accent]Github[].
indev.notready = Această secțiune a jocului nu este gata încă. indev.notready = Această secțiune a jocului nu este gata încă.
load.sound = Sunete load.sound = Sunete
@@ -100,7 +100,7 @@ committingchanges = Se Încarcă Schimbările
done = Gata done = Gata
feature.unsupported = Dispozitivul tău nu suportă această funcție. feature.unsupported = Dispozitivul tău nu suportă această funcție.
mods.alphainfo = Modurile sunt încă în alpha și[scarlet] pot avea multe buguri[].\nRaportați orice probleme apărute pe Githubul Mindustry. mods.alphainfo = Modurile sunt încă în alpha și[scarlet] pot avea multe buguri[].\nRaportează orice probleme apărute pe Githubul Mindustry.
mods = Moduri mods = Moduri
mods.none = [lightgray]Nu s-au găsit moduri! mods.none = [lightgray]Nu s-au găsit moduri!
mods.guide = Ghid de Modding mods.guide = Ghid de Modding
@@ -127,11 +127,11 @@ mod.reloadrequired = [scarlet]E Nevoie de o Repornire
mod.import = Importă Mod mod.import = Importă Mod
mod.import.file = Importă Fișier mod.import.file = Importă Fișier
mod.import.github = Importă din GitHub mod.import.github = Importă din GitHub
mod.jarwarn = [scarlet]Modurile în format JAR nu sunt sigure.[]\nAi grijă să importezi acest mod dintr-o sursă de încredere! mod.jarwarn = [scarlet]Modurile în format JAR nu sunt sigure.[]\nAi grijă să imporți acest mod dintr-o sursă de încredere!
mod.item.remove = Acest obiect este parte din modul [accent] '{0}'[]. Ca să îl poți elimina, dezinstalează acel mod. mod.item.remove = Acest obiect face parte din modul [accent] '{0}'[]. Ca să îl poți elimina, dezinstalează acel mod.
mod.remove.confirm = Acest mod va fi șters. mod.remove.confirm = Acest mod va fi șters.
mod.author = [lightgray]Autor:[] {0} mod.author = [lightgray]Autor:[] {0}
mod.missing = Această salvare conține moduri cărora le-ai făcut update recent sau nu mai sunt instalate. Fișierul poate fi corupt. Sigur vrei să îl încarci?\n[lightgray]Moduri:\n{0} mod.missing = Această salvare conține moduri cărora le-ai făcut update recent sau care nu mai sunt instalate. Fișierul poate fi corupt. Sigur vrei să îl încarci?\n[lightgray]Moduri:\n{0}
mod.preview.missing = Înainte să publici acest mod pe Workshop, trebuie să adaugi o imagine pt previzualizare.\nPune o imagine numită[accent] preview.png[] în folderul modului și încearcă din nou. mod.preview.missing = Înainte să publici acest mod pe Workshop, trebuie să adaugi o imagine pt previzualizare.\nPune o imagine numită[accent] preview.png[] în folderul modului și încearcă din nou.
mod.folder.missing = Doar modurile din câmpul folder pot fi publicate pe Workshop.\nPt a converti orice mod într-un folder, dezarhivează zipul într-un folder și șterge vechiul zip, apoi repornește jocul sau reîncărcă-ți modurile. mod.folder.missing = Doar modurile din câmpul folder pot fi publicate pe Workshop.\nPt a converti orice mod într-un folder, dezarhivează zipul într-un folder și șterge vechiul zip, apoi repornește jocul sau reîncărcă-ți modurile.
mod.scripts.disable = Dispozitivul tău nu suportă moduri cu scripturi. Trebuie să dezactivezi aceste moduri ca să joci jocul. mod.scripts.disable = Dispozitivul tău nu suportă moduri cu scripturi. Trebuie să dezactivezi aceste moduri ca să joci jocul.
@@ -172,7 +172,7 @@ server.kicked.gameover = Joc încheiat!
server.kicked.serverRestarting = Acest server se repornește. server.kicked.serverRestarting = Acest server se repornește.
server.versions = Versiunea ta:[accent] {0}[]versiunea serverului:[accent] {1}[] server.versions = Versiunea ta:[accent] {0}[]versiunea serverului:[accent] {1}[]
host.info = Butonul [accent]găzduiește[] va găzdui un server pe portul [scarlet]6567[]. \nOrice persoană de pe același port [lightgray]wifi sau rețea locală[] ar trebui să-ți vadă serverul în lista lor de servere.\n\nDacă vrei ca lumea să se poată conecta de oriunde cu IP-ul, este nevoie de [accent]port forwarding[].\n\n[lightgray]Notă: Dacă cineva are probleme în a se conecta la jocul tău LAN, verifică dacă ai lăsat Mindustry să acceseze rețeaua locală în setările de firewall. De menționat este faptul că uneori rețelele publice nu permit descoperirea serverului. host.info = Butonul [accent]găzduiește[] va găzdui un server pe portul [scarlet]6567[]. \nOrice persoană de pe același port [lightgray]wifi sau rețea locală[] ar trebui să-ți vadă serverul în lista lor de servere.\n\nDacă vrei ca lumea să se poată conecta de oriunde cu IP-ul, este nevoie de [accent]port forwarding[].\n\n[lightgray]Notă: Dacă cineva are probleme în a se conecta la jocul tău LAN, verifică dacă ai lăsat Mindustry să acceseze rețeaua locală în setările de firewall. De menționat este faptul că uneori rețelele publice nu permit descoperirea serverului.
join.info = Aici poți scrie un [accent]IP de server[] pt a te conecta, a descoperi [accent]rețeaua locală[] sau serverele [accent]globale[] pt a te conecta la ele.\nAtât multiplayerul LAN cât și cel WAN este suportat.\n\n[lightgray]Dacă vrei să te conectezi la cineva cu IP-ul, trebuie să ceri gazdei IP-ul său, care poate fi găsit căutând pe Google "my ip' de pe dispozitivul lor. join.info = Aici poți scrie un [accent]IP de server[] pt a te conecta sau pt a descoperi [accent]rețeaua locală[] sau serverele [accent]globale[] la care să te conectezi.\nAtât multiplayerul LAN cât și cel WAN sunt suportate.\n\n[lightgray]Dacă vrei să te conectezi la cineva cu IP-ul, trebuie să ceri gazdei IP-ul său, care poate fi găsit căutând pe Google "my ip" de pe dispozitivul său.
hostserver = Găzduiește Joc Multiplayer hostserver = Găzduiește Joc Multiplayer
invitefriends = Invită Prieteni invitefriends = Invită Prieteni
hostserver.mobile = Găzduiește Joc hostserver.mobile = Găzduiește Joc
@@ -350,6 +350,7 @@ waves.invalid = Valuri invalide în clipboard.
waves.copied = Valuri copiate. waves.copied = Valuri copiate.
waves.none = Niciun inamic definit.\nDe reținut că o listă de valuri goală va fi înlocuită automat cu lista de valuri prestabilită. waves.none = Niciun inamic definit.\nDe reținut că o listă de valuri goală va fi înlocuită automat cu lista de valuri prestabilită.
#intenționat cu literă mică
wavemode.counts = numere wavemode.counts = numere
wavemode.totals = totaluri wavemode.totals = totaluri
wavemode.health = viață wavemode.health = viață
@@ -462,7 +463,7 @@ load = Încarcă
save = Salvează save = Salvează
fps = FPS: {0} fps = FPS: {0}
ping = Ping: {0}ms ping = Ping: {0}ms
language.restart = Vă rugăm să reporniți jocul pentru că setările de limbă să aibă efect. language.restart = Repornește jocul pentru ca setările de limbă să aibă efect.
settings = Setări settings = Setări
tutorial = Tutorial tutorial = Tutorial
tutorial.retake = Reia Tutorial tutorial.retake = Reia Tutorial
@@ -482,6 +483,8 @@ launch.text = Lansează
research.multiplayer = Doar gazda poate cerceta noi tehnologii. research.multiplayer = Doar gazda poate cerceta noi tehnologii.
uncover = Descoperă uncover = Descoperă
configure = Configurează Încărcarea configure = Configurează Încărcarea
#Spațiu Necesar
loadout = Încărcare loadout = Încărcare
resources = Resurse resources = Resurse
bannedblocks = Blocuri Interzise bannedblocks = Blocuri Interzise
@@ -526,8 +529,10 @@ sectors.rename = Redenumește Sectorul
sector.missingresources = [scarlet]Resurse din Nucleu Insuficiente sector.missingresources = [scarlet]Resurse din Nucleu Insuficiente
planet.serpulo.name = Serpulo planet.serpulo.name = Serpulo
#Spațiu Necesar
planet.sun.name = Soare planet.sun.name = Soare
#Spațiu Necesar
sector.groundZero.name = Ground Zero sector.groundZero.name = Ground Zero
sector.craters.name = The Craters sector.craters.name = The Craters
sector.frozenForest.name = Frozen Forest sector.frozenForest.name = Frozen Forest
@@ -540,6 +545,10 @@ sector.tarFields.name = Tar Fields
sector.saltFlats.name = Salt Flats sector.saltFlats.name = Salt Flats
sector.fungalPass.name = Fungal Pass sector.fungalPass.name = Fungal Pass
#Spațiu
#Absolut
#Necesar
sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe. sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe.
sector.frozenForest.description = Chiar și aici, aproape de munți, sporii s-au împrăștiat. Temperaturile reci nu-i pot reține la infinit.\n\nÎncepe călătoria către electricitate. Construiește generatoare de combustie. Învață să folosești reparatoare. sector.frozenForest.description = Chiar și aici, aproape de munți, sporii s-au împrăștiat. Temperaturile reci nu-i pot reține la infinit.\n\nÎncepe călătoria către electricitate. Construiește generatoare de combustie. Învață să folosești reparatoare.
sector.saltFlats.description = La periferia deșertului stau Salt Flats. Puține resurse pot fi găsite în această locație.\n\nInamicul a ridicat un complex-depozit aici. Distruge-le nucleul. Nu lăsa nimic în urmă. sector.saltFlats.description = La periferia deșertului stau Salt Flats. Puține resurse pot fi găsite în această locație.\n\nInamicul a ridicat un complex-depozit aici. Distruge-le nucleul. Nu lăsa nimic în urmă.
@@ -573,7 +582,6 @@ settings.clearcampaignsaves.confirm = Sigur vrei să ștergi toate salvările di
paused = [accent]< Pauză > paused = [accent]< Pauză >
clear = Curăță clear = Curăță
banned = [scarlet]Interzis banned = [scarlet]Interzis
unplaceable.sectorcaptured = [scarlet]Ai nevoie de un sector capturat
yes = Da yes = Da
no = Nu no = Nu
info.title = Info info.title = Info
@@ -585,7 +593,7 @@ block.unknown = [lightgray]???
stat.input = Necesită stat.input = Necesită
stat.output = Produce stat.output = Produce
stat.booster = Booster stat.booster = Îmbunătățiri
stat.tiles = Teren Necesar stat.tiles = Teren Necesar
stat.affinities = Efecte Teren stat.affinities = Efecte Teren
stat.powercapacity = Capacitate electrică stat.powercapacity = Capacitate electrică
@@ -614,7 +622,7 @@ stat.speedincrease = Creștere Viteză
stat.range = Rază stat.range = Rază
stat.drilltier = Minabile stat.drilltier = Minabile
stat.drillspeed = Viteză Burghiu (Bază) stat.drillspeed = Viteză Burghiu (Bază)
stat.boosteffect = Efect de Boost stat.boosteffect = Efect de Îmbunătățire
stat.maxunits = Maxim Unități Active stat.maxunits = Maxim Unități Active
stat.health = Viață stat.health = Viață
stat.buildtime = Timp Construcție stat.buildtime = Timp Construcție
@@ -642,6 +650,8 @@ stat.minetier = Putere Minare
stat.payloadcapacity = Capacitate Încărcătură stat.payloadcapacity = Capacitate Încărcătură
stat.commandlimit = Nr Unități Comandate stat.commandlimit = Nr Unități Comandate
stat.abilities = Abilități stat.abilities = Abilități
stat.canboost = Poate Îmbunătăți
stat.flying = Zboară
ability.forcefield = Câmp de Forță ability.forcefield = Câmp de Forță
ability.repairfield = Câmp de Reparare ability.repairfield = Câmp de Reparare
@@ -681,7 +691,7 @@ bullet.shock = [stat]șoc
bullet.frag = [stat]fragil bullet.frag = [stat]fragil
bullet.knockback = [stat]{0} [lightgray]împingere bullet.knockback = [stat]{0} [lightgray]împingere
bullet.pierce = [stat]{0}[lightgray]x penetrare bullet.pierce = [stat]{0}[lightgray]x penetrare
bullet.infinitepierce = penetrare [stat] bullet.infinitepierce = [stat]penetrare
bullet.freezing = [stat]înghețat bullet.freezing = [stat]înghețat
bullet.tarred = [stat]lipicios bullet.tarred = [stat]lipicios
bullet.multiplier = [stat]{0}[lightgray]x multiplicator muniție bullet.multiplier = [stat]{0}[lightgray]x multiplicator muniție
@@ -720,6 +730,7 @@ setting.linear.name = Filtrare Liniară
setting.hints.name = Indicii setting.hints.name = Indicii
setting.flow.name = Afișează Rata de Curgere a lichidelor setting.flow.name = Afișează Rata de Curgere a lichidelor
setting.buildautopause.name = Autopauză de la Construit setting.buildautopause.name = Autopauză de la Construit
setting.backgroundpause.name = Pune Pauză în Fundal
setting.animatedwater.name = Suprafețe Animate setting.animatedwater.name = Suprafețe Animate
setting.animatedshields.name = Scuturi Animate setting.animatedshields.name = Scuturi Animate
setting.antialias.name = Antialiasing[lightgray] (necesită repornire)[] setting.antialias.name = Antialiasing[lightgray] (necesită repornire)[]
@@ -1006,8 +1017,8 @@ block.sand-water.name = Apă cu Nisip
block.darksand-water.name = Apă cu Nisip Negru block.darksand-water.name = Apă cu Nisip Negru
block.char.name = Turbă block.char.name = Turbă
block.dacite.name = Dacit block.dacite.name = Dacit
block.dacite-wall.name = Perete de Dacit
block.dacite-boulder.name = Bolovan de Dacit block.dacite-boulder.name = Bolovan de Dacit
block.dacite-wall.name = Perete de Dacit
block.ice-snow.name = Gheață Înzăpezită block.ice-snow.name = Gheață Înzăpezită
block.stone-wall.name = Perete de Piatră block.stone-wall.name = Perete de Piatră
block.ice-wall.name = Perete de Gheață block.ice-wall.name = Perete de Gheață

View File

@@ -390,7 +390,7 @@ editor.importimage.description = Импортировать изображени
editor.export = Экспорт… editor.export = Экспорт…
editor.exportfile = Экспортировать файл editor.exportfile = Экспортировать файл
editor.exportfile.description = Экспорт файла карты editor.exportfile.description = Экспорт файла карты
editor.exportimage = Экспортировать изображение ландшафта editor.exportimage = Экспортировать ландшафт
editor.exportimage.description = Экспортировать файл изображения, содержащего только базовую местность editor.exportimage.description = Экспортировать файл изображения, содержащего только базовую местность
editor.loadimage = Импортировать\nизображение editor.loadimage = Импортировать\nизображение
editor.saveimage = Экспортировать\nизображение editor.saveimage = Экспортировать\nизображение
@@ -581,13 +581,12 @@ settings.clearcampaignsaves.confirm = Вы уверены, что хотите
paused = [accent]< Пауза > paused = [accent]< Пауза >
clear = Очистить clear = Очистить
banned = [scarlet]Запрещено banned = [scarlet]Запрещено
unplaceable.sectorcaptured = [scarlet]Требуется захватить сектор
yes = Да yes = Да
no = Нет no = Нет
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]???
@@ -653,8 +652,7 @@ stat.abilities = Способности
ability.forcefield = Силовое поле ability.forcefield = Силовое поле
ability.repairfield = Ремонтирующее поле ability.repairfield = Ремонтирующее поле
#TODO туду тудум ability.statusfield = Усиливающее поле
ability.statusfield = Status Field
ability.unitspawn = Завод единиц «{0}» ability.unitspawn = Завод единиц «{0}»
ability.shieldregenfield = Поле восстановления щита ability.shieldregenfield = Поле восстановления щита
@@ -728,6 +726,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.buildautopause.name = Автоматическая приостановка строительства setting.buildautopause.name = Автоматическая приостановка строительства
setting.animatedwater.name = Анимированные поверхности setting.animatedwater.name = Анимированные поверхности
setting.animatedshields.name = Анимированные щиты setting.animatedshields.name = Анимированные щиты

File diff suppressed because it is too large Load Diff

View File

@@ -420,7 +420,7 @@ filters.empty = [lightgray]Немає фільтрів! Додайте хоча
filter.distort = Спотворення filter.distort = Спотворення
filter.noise = Шум filter.noise = Шум
filter.enemyspawn = Вибір точки появи противників filter.enemyspawn = Вибір точки появи противників
filter.spawnpath = Path To Spawn filter.spawnpath = Шлях до точки появи
filter.corespawn = Вибір ядра filter.corespawn = Вибір ядра
filter.median = Медіана filter.median = Медіана
filter.oremedian = Рудна медіана filter.oremedian = Рудна медіана
@@ -445,7 +445,7 @@ filter.option.amount = Кількість
filter.option.block = Блок filter.option.block = Блок
filter.option.floor = Поверхня filter.option.floor = Поверхня
filter.option.flooronto = Цільова поверхня filter.option.flooronto = Цільова поверхня
filter.option.target = Target filter.option.target = Ціль
filter.option.wall = Стіна filter.option.wall = Стіна
filter.option.ore = Руда filter.option.ore = Руда
filter.option.floor2 = Друга поверхня filter.option.floor2 = Друга поверхня
@@ -462,7 +462,7 @@ load = Завантажити
save = Зберегти save = Зберегти
fps = FPS: {0} fps = FPS: {0}
ping = Затримка: {0} мс ping = Затримка: {0} мс
language.restart = Будь ласка, перезапустіть свою гру, щоби налаштування мови набули чинності. language.restart = Перезапустіть свою гру, щоби налаштування мови набули чинності.
settings = Налаштування settings = Налаштування
tutorial = Навчання tutorial = Навчання
tutorial.retake = Пройти навчання ще раз tutorial.retake = Пройти навчання ще раз
@@ -482,6 +482,8 @@ launch.text = Запуск
research.multiplayer = Лише власник сервера має змогу досліджувати предмети. research.multiplayer = Лише власник сервера має змогу досліджувати предмети.
uncover = Розкрити uncover = Розкрити
configure = Налаштувати вивантаження configure = Налаштувати вивантаження
#TODO
loadout = Вивантаження loadout = Вивантаження
resources = Ресурси resources = Ресурси
bannedblocks = Заборонені блоки bannedblocks = Заборонені блоки
@@ -512,7 +514,7 @@ weather.rain.name = Дощ
weather.snow.name = Сніг weather.snow.name = Сніг
weather.sandstorm.name = Піщана буря weather.sandstorm.name = Піщана буря
weather.sporestorm.name = Спорова буря weather.sporestorm.name = Спорова буря
weather.fog.name = Fog weather.fog.name = Туман
sectors.unexplored = [lightgray]Не досліджено sectors.unexplored = [lightgray]Не досліджено
sectors.resources = Ресурси: sectors.resources = Ресурси:
@@ -523,7 +525,7 @@ sectors.launch = Запустити
sectors.select = Вибрати sectors.select = Вибрати
sectors.nonelaunch = [lightgray]нічого (сонце) sectors.nonelaunch = [lightgray]нічого (сонце)
sectors.rename = Перейменування сектора sectors.rename = Перейменування сектора
sector.missingresources = [scarlet]Insufficient Core Resources sector.missingresources = [scarlet]Недостатньо ресурсів в ядрі
planet.serpulo.name = Cерпуло planet.serpulo.name = Cерпуло
planet.sun.name = Сонце planet.sun.name = Сонце
@@ -550,7 +552,7 @@ sector.overgrowth.description = Ближче до джерела спор є т
sector.tarFields.description = Між горами та пустелею простягається окраїна зони видобутку нафти. Це один із небагатьох районів із корисними для використання запасами смоли.\nНе зважаючи на те, що територія покинута, вона має поблизу небезпечні сили противника. Не варто їх недооцінювати.\n\n[lightgray]Якщо можливо, дослідіть технологію перероблювання нафти. sector.tarFields.description = Між горами та пустелею простягається окраїна зони видобутку нафти. Це один із небагатьох районів із корисними для використання запасами смоли.\nНе зважаючи на те, що територія покинута, вона має поблизу небезпечні сили противника. Не варто їх недооцінювати.\n\n[lightgray]Якщо можливо, дослідіть технологію перероблювання нафти.
sector.desolateRift.description = Надзвичайно небезпечна зона. Багато ресурсів, але мало місця. Високий ризик знищення. Евакуюватися потрібно якомога швидше. Не розслабляйтеся між ворожими атаками та знайдіть ахіллесову п’яту супротивника. 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 = Перехідна зона між високими і низькими горами, що заповнені спорами. 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.
settings.language = Мова settings.language = Мова
settings.data = Ігрові дані settings.data = Ігрові дані
@@ -566,14 +568,13 @@ settings.clear.confirm = Ви дійсно хочете очистити ці д
settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить усі дані, включно із збереженнями, мапами, розблокованим та налаштуваннями керування.\nПісля натискання «Гаразд» гра видалить усі дані та автоматично закриється. settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить усі дані, включно із збереженнями, мапами, розблокованим та налаштуваннями керування.\nПісля натискання «Гаразд» гра видалить усі дані та автоматично закриється.
settings.clearsaves.confirm = Ви справді хочете видалити всі ваші збереження? settings.clearsaves.confirm = Ви справді хочете видалити всі ваші збереження?
settings.clearsaves = Очистити збереження settings.clearsaves = Очистити збереження
settings.clearresearch = Clear Research settings.clearresearch = Очистити дослідження
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research? settings.clearresearch.confirm = Ви справді хочете очистити дослідження кампанії?
settings.clearcampaignsaves = Clear Campaign Saves settings.clearcampaignsaves = Очистити збереження в кампанії
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves? settings.clearcampaignsaves.confirm = Ви справді хочете очистити всі збереженні в кампанії?
paused = [accent]< Пауза> paused = [accent]< Пауза >
clear = Очистити clear = Очистити
banned = [scarlet]Заблоковано banned = [scarlet]Заблоковано
unplaceable.sectorcaptured = [scarlet]Вимагає захопленого сектору
yes = Так yes = Так
no = Ні no = Ні
info.title = Інформація info.title = Інформація
@@ -581,7 +582,7 @@ error.title = [crimson]Виникла помилка
error.crashtitle = Виникла помилка error.crashtitle = Виникла помилка
unit.nobuild = [scarlet]Ця одиниця не може будувати unit.nobuild = [scarlet]Ця одиниця не може будувати
lastaccessed = [lightgray]Остання зміна від {0} lastaccessed = [lightgray]Остання зміна від {0}
block.unknown = [lightgray]??? block.unknown = [lightgray]ШО ЗА???
stat.input = Ввід stat.input = Ввід
stat.output = Вивід stat.output = Вивід
@@ -626,28 +627,30 @@ stat.reload = Постріли/секунду
stat.ammo = Боєприпаси stat.ammo = Боєприпаси
stat.shieldhealth = Міцність щита stat.shieldhealth = Міцність щита
stat.cooldowntime = Тривалість охолодження stat.cooldowntime = Тривалість охолодження
stat.explosiveness = Explosiveness stat.explosiveness = Вибухонебезпечність
stat.basedeflectchance = Base Deflect Chance stat.basedeflectchance = Базовий шанс відбиття
stat.lightningchance = Lightning Chance stat.lightningchance = Шанс удару блискавки
stat.lightningdamage = Lightning Damage stat.lightningdamage = Шкода від удару блискавки
stat.flammability = Flammability stat.flammability = Займистість
stat.radioactivity = Radioactivity stat.radioactivity = Радіоактивність
stat.heatcapacity = HeatCapacity stat.heatcapacity = Теплоємність
stat.viscosity = Viscosity stat.viscosity = В'язкість
stat.temperature = Temperature stat.temperature = Температура
stat.speed = Speed stat.speed = Швидкість
stat.buildspeed = Build Speed stat.buildspeed = Швидкість будування
stat.minespeed = Mine Speed stat.minespeed = Швидкість видобутку
stat.minetier = Mine Tier stat.minetier = Рівень видобутку
stat.payloadcapacity = Payload Capacity stat.payloadcapacity = Вантажопідйомність
stat.commandlimit = Command Limit stat.commandlimit = Максимум в загоні
stat.abilities = Abilities stat.abilities = Здібності
stat.canboost = Можна прискорити
stat.flying = Літає
ability.forcefield = Force Field ability.forcefield = Щитове поле
ability.repairfield = Repair Field ability.repairfield = Ремонтувальне поле
ability.statusfield = Status Field ability.statusfield = Поле підсилення
ability.unitspawn = {0} Factory ability.unitspawn = Завод одиниць «{0}»
ability.shieldregenfield = Shield Regen Field ability.shieldregenfield = Поле, що відновлює щити
bar.drilltierreq = Потребується кращий бур bar.drilltierreq = Потребується кращий бур
bar.noresources = Бракує ресурсів bar.noresources = Бракує ресурсів
@@ -688,7 +691,7 @@ bullet.multiplier = [stat]{0}[lightgray]x патронів
bullet.reload = [stat]{0}[lightgray]x швидкість перезаряджання bullet.reload = [stat]{0}[lightgray]x швидкість перезаряджання
unit.blocks = блоки unit.blocks = блоки
unit.blockssquared = blocks² unit.blockssquared = блоків²
unit.powersecond = одиниць енергії за секунду unit.powersecond = одиниць енергії за секунду
unit.liquidsecond = одиниць рідини за секунду unit.liquidsecond = одиниць рідини за секунду
unit.itemssecond = предметів за секунду unit.itemssecond = предметів за секунду
@@ -711,7 +714,7 @@ category.power = Енергія
category.liquids = Рідини category.liquids = Рідини
category.items = Предмети category.items = Предмети
category.crafting = Виробництво category.crafting = Виробництво
category.function = Function category.function = Стрільба
category.optional = Додаткові поліпшення category.optional = Додаткові поліпшення
setting.landscape.name = Тільки альбомний (горизонтальний) режим setting.landscape.name = Тільки альбомний (горизонтальний) режим
setting.shadows.name = Тіні setting.shadows.name = Тіні
@@ -940,13 +943,13 @@ unit.eclipse.name = Затьмарник
unit.mono.name = Моно unit.mono.name = Моно
unit.poly.name = Полі unit.poly.name = Полі
unit.mega.name = Мега 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 = Sei unit.sei.name = Смугач Сейвал
unit.omura.name = Omura unit.omura.name = Смугач Омури
unit.alpha.name = Альфа unit.alpha.name = Альфа
unit.beta.name = Бета unit.beta.name = Бета
unit.gamma.name = Гамма unit.gamma.name = Гамма
@@ -1100,7 +1103,7 @@ block.liquid-void.name = Рідинний вакуум
block.power-void.name = Енергетичний вакуум block.power-void.name = Енергетичний вакуум
block.power-source.name = Нескінченне джерело енергії block.power-source.name = Нескінченне джерело енергії
block.unloader.name = Розвантажувач block.unloader.name = Розвантажувач
block.vault.name = Вмістилище block.vault.name = Склад
block.wave.name = Хвиля block.wave.name = Хвиля
block.tsunami.name = Цунамі block.tsunami.name = Цунамі
block.swarmer.name = Роєвик block.swarmer.name = Роєвик

View File

@@ -1,4 +1,4 @@
credits.text = 作者[royal]Anuken[] - [sky]anukendev@gmail.com[] 译者[orange]老滑稽[] - [cyan]QQ1290419934[] credits.text = 作者[royal]Anuken[] - [sky]anukendev@gmail.com[]
credits = 致谢 credits = 致谢
contributors = 翻译者和贡献者 contributors = 翻译者和贡献者
discord = 加入 Mindustry 的 Discord discord = 加入 Mindustry 的 Discord
@@ -20,8 +20,8 @@ gameover = 游戏结束
gameover.pvp = [accent] {0}[]队获胜! gameover.pvp = [accent] {0}[]队获胜!
highscore = [accent]新纪录! highscore = [accent]新纪录!
copied = 已复制。 copied = 已复制。
indev.popup = [accent]v6[]仍在[accent]测试版[].\n[lightgray]这意味着:[]\n[scarlet]- 战役不完善[]\n- 内容不完整\n - 大多[scarlet]单位AI[]运行不佳\n- 单位系统不完整\n- 一切内容都可能发生变动或调整。\n\n[accent]主群QQ681962751[]提交错误报告。 indev.popup = [accent]6.0[]仍在[accent]测试版[].\n[lightgray]这意味着:[]\n[scarlet]- 战役玩法完全没有完成[]\n- 很多内容还没有做完\n - 大多[scarlet]单位AI[]无法正确地运行\n- 单位系统完全没有完成\n- 一切您所看到的内容都可能会移除或调整。\n\n[accent]Github[]提交错误报告。\n[#66ccff]来自译者WinterUnderTheSnow的忠告不建议新玩家游玩还在测试阶段的6.0!建议您先从[orange]v104.6[#66ccff]或[orange]v104.10[#66ccff]开始游玩!
indev.notready = 还没做好看NM indev.notready = 这部分玩法还未开发完成。
load.sound = 音乐加载中 load.sound = 音乐加载中
load.map = 地图加载中 load.map = 地图加载中
@@ -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}
@@ -66,7 +66,7 @@ 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 = 选择关卡
@@ -115,7 +115,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]模组不兼容6.0(缺失 minGameVersion: 105) mod.outdated = [scarlet]模组可能不能在6.0上正确地运行(缺失 minGameVersion: 105)
mod.missingdependencies = [scarlet]缺少前置模组:{0} mod.missingdependencies = [scarlet]缺少前置模组:{0}
mod.erroredcontent = [scarlet]内容错误 mod.erroredcontent = [scarlet]内容错误
mod.errors = 读取内容时发生错误. mod.errors = 读取内容时发生错误.
@@ -127,14 +127,14 @@ mod.reloadrequired = [scarlet]需要重启
mod.import = 导入模组 mod.import = 导入模组
mod.import.file = 导入文件 mod.import.file = 导入文件
mod.import.github = 从 GitHub 导入模组 mod.import.github = 从 GitHub 导入模组
mod.jarwarn = [scarlet]JAR模组存在危险性。[]\n请确保此模组来源安全可靠 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若要将任何模组转换为文件夹只需将其文件解压缩到文件夹中并删除旧压缩包然后重新启动游戏或重新加载模组。 mod.folder.missing = 只有文件夹形式的模组能在创意工坊上发布。\n若要将任何模组转换为文件夹只需将其文件解压缩到文件夹中并删除旧压缩包然后重新启动游戏或重新加载模组。
mod.scripts.disable = 的设备不支持含有脚本的模组。必须禁用相关模组以进入游戏。 mod.scripts.disable = 的设备不支持含有脚本的模组。必须禁用相关模组以进入游戏。
about.button = 关于 about.button = 关于
name = 名字: name = 名字:
@@ -151,28 +151,28 @@ researched = [lightgray]{0}己研究。
research.progress = {0}% 完成度 research.progress = {0}% 完成度
players = {0} 位玩家在线 players = {0} 位玩家在线
players.single = {0} 位玩家在线 players.single = {0} 位玩家在线
players.search = search players.search = 研究
players.notfound = [gray]没有找到玩家。 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 = 服务器已关闭。
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请稍后重新连接
server.kicked.nameInUse = 的名字与服务器中的一个人重复了。 server.kicked.nameInUse = 的名字与服务器中的一个人重复了。
server.kicked.nameEmpty = 无效的名字! server.kicked.nameEmpty = 无效的名字!
server.kicked.idInUse = 已经连接了这个服务器!不允许在一台电脑上用两个客户端连接。 server.kicked.idInUse = 已经连接了这个服务器!不允许在一台设备上用两个客户端连接。
server.kicked.customClient = 这个服务器不支持自定义客户端。请下载官方版本。 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] Wi-Fi 或本地网络[]下的人应该都可以在服务器列表中看到你的服务器。\n\n如果你想让别人在任何地方都能通过 IP 地址连接,你需要设定[accent]端口转发[]。\n\n[lightgray]注意:如果某人无法连接到你的局域网游戏,请确保你在防火墙设置里允许了 Mindustry 访问本地网络。 host.info = [accent]创建局域网游戏[]按钮会在[scarlet] 6567 []端口运行一个服务器。[]\n任何在同一个[lightgray] Wi-Fi 或本地网络[]下的人应该都可以在服务器列表中看到你的服务器。\n\n如果你想让别人在任何地方都能通过 IP 地址连接,你需要设定[accent]端口转发[]。\n\n[lightgray]注意:如果某人无法连接到你的局域网游戏,请确保你在防火墙设置里允许了 Mindustry 访问本地网络。
join.info = 您可以输入[accent]服务器的 IP 地址[]来连接,或寻找[accent]本地网络[]中的服务器来连接。\n支持局域网或广域网的多人游戏。\n\n[lightgray]注意:没有全球服务器列表;如果你想通过 IP 地址连接某个服务器,你需要向主询问 IP 地址。 join.info = 您可以输入[accent]服务器的 IP 地址[]来连接,或寻找[accent]本地网络[]中的服务器来连接。\n支持局域网或广域网的多人游戏。\n\n[lightgray]注意:没有全球服务器列表;如果你想通过 IP 地址连接某个服务器,你需要向主询问 IP 地址。
hostserver = 创建服务器 hostserver = 创建服务器
invitefriends = 邀请朋友 invitefriends = 邀请朋友
hostserver.mobile = 创建\n服务器 hostserver.mobile = 创建\n服务器
@@ -201,7 +201,7 @@ server.bans.none = 没有被封禁的玩家!
server.admins = 管理员 server.admins = 管理员
server.admins.none = 该服务器没有管理员! server.admins.none = 该服务器没有管理员!
server.add = 添加服务器 server.add = 添加服务器
server.delete = 确定要删除这个服务器吗? server.delete = 确定要删除这个服务器吗?
server.edit = 编辑服务器 server.edit = 编辑服务器
server.outdated = [crimson]服务器过旧![] server.outdated = [crimson]服务器过旧![]
server.outdated.client = [crimson]客户端过旧![] server.outdated.client = [crimson]客户端过旧![]
@@ -228,11 +228,11 @@ server.addressinuse = 地址已在使用!
server.invalidport = 无效的端口! server.invalidport = 无效的端口!
server.error = [crimson]创建服务器错误:[accent]{0} server.error = [crimson]创建服务器错误:[accent]{0}
save.new = 新存档 save.new = 新存档
save.overwrite = 确定要覆盖这个存档吗? save.overwrite = 确定要覆盖这个存档吗?
overwrite = 覆盖 overwrite = 覆盖
save.none = 没有找到存档! save.none = 没有找到存档!
savefail = 保存失败! savefail = 保存失败!
save.delete.confirm = 确定要删除这个存档吗? save.delete.confirm = 确定要删除这个存档吗?
save.delete = 删除 save.delete = 删除
save.export = 导出存档 save.export = 导出存档
save.import.invalid = [accent]此存档无效! save.import.invalid = [accent]此存档无效!
@@ -245,7 +245,7 @@ save.rename.text = 新名称:
selectslot = 选择一个存档。 selectslot = 选择一个存档。
slot = [accent]存档位 {0} slot = [accent]存档位 {0}
editmessage = 编辑消息 editmessage = 编辑消息
save.corrupted = [accent]存档损坏或无效!\n如果刚刚升级了游戏,那么这可能是因为存档格式改变了,而[scarlet]不是[] bug 。 save.corrupted = [accent]存档损坏或无效!\n如果刚刚升级了游戏,那么这可能是因为存档格式改变了,而[scarlet]不是[] bug 。
empty = < 空 > empty = < 空 >
on = on =
off = off =
@@ -291,14 +291,14 @@ 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 = Boss 将在[accent]{0}[]波后到来。
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave. wave.guardianwarn.one = Boss 将在[accent]{0}[]波后到来。
loadimage = 加载图片 loadimage = 加载图片
saveimage = 保存图片 saveimage = 保存图片
unknown = 未知 unknown = 未知
custom = 自定义 custom = 自定义
builtin = builtin =
map.delete.confirm = 确定你想要删除这张地图吗?这个操作无法撤销! map.delete.confirm = 确定你想要删除这张地图吗?这个操作无法撤销!
map.random = [accent]随机地图 map.random = [accent]随机地图
map.nospawn = 这个地图没有核心!请在编辑器中添加一个[royal]己方[]的核心。 map.nospawn = 这个地图没有核心!请在编辑器中添加一个[royal]己方[]的核心。
map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[royal]敌人[]的核心。 map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[royal]敌人[]的核心。
@@ -331,7 +331,7 @@ editor.generation = 筛选器:
editor.ingame = 游戏内编辑 editor.ingame = 游戏内编辑
editor.publish.workshop = 上传到创意工坊 editor.publish.workshop = 上传到创意工坊
editor.newmap = 新地图 editor.newmap = 新地图
editor.center = Center editor.center = 居中
workshop = 创意工坊 workshop = 创意工坊
waves.title = 波数 waves.title = 波数
waves.remove = 移除 waves.remove = 移除
@@ -339,9 +339,9 @@ waves.never = < 无限 >
waves.every = waves.every =
waves.waves = waves.waves =
waves.perspawn = 每次生成 waves.perspawn = 每次生成
waves.shields = 护盾/波 waves.shields = 护盾/波
waves.to = waves.to =
waves.guardian = 首领 waves.guardian = Boss
waves.preview = 预览 waves.preview = 预览
waves.edit = 编辑… waves.edit = 编辑…
waves.copy = 复制到剪贴板 waves.copy = 复制到剪贴板
@@ -363,7 +363,7 @@ editor.removeunit = 移除单位
editor.teams = 队伍 editor.teams = 队伍
editor.errorload = 读取文件出错:\n[accent]{0} editor.errorload = 读取文件出错:\n[accent]{0}
editor.errorsave = 保存文件出错:\n[accent]{0} editor.errorsave = 保存文件出错:\n[accent]{0}
editor.errorimage = 这是一幅图片,不是地图。请不要更改文件的扩展名来导入。\n\n如果想导入地图,请在编辑器中使用“导入地图”按钮。 editor.errorimage = 这是一幅图片,不是地图。请不要更改文件的扩展名来导入。\n\n如果想导入地图,请在编辑器中使用“导入地图”按钮。
editor.errorlegacy = 此地图太旧了,旧的地图格式已不再支持。 editor.errorlegacy = 此地图太旧了,旧的地图格式已不再支持。
editor.errornot = 这不是地图文件。 editor.errornot = 这不是地图文件。
editor.errorheader = 此地图文件无效或已损坏。 editor.errorheader = 此地图文件无效或已损坏。
@@ -376,8 +376,8 @@ editor.resize = 调整大小
editor.loadmap = 载入地图 editor.loadmap = 载入地图
editor.savemap = 保存地图 editor.savemap = 保存地图
editor.saved = 已保存! editor.saved = 已保存!
editor.save.noname = 的地图没有名字!在“地图信息”菜单里设置一个。 editor.save.noname = 的地图没有名字!在“地图信息”菜单里设置一个。
editor.save.overwrite = 的地图覆盖了一个内置的地图!在“地图信息”菜单里重新设置一个不同的名称。 editor.save.overwrite = 的地图覆盖了一个内置的地图!在“地图信息”菜单里重新设置一个不同的名称。
editor.import.exists = [scarlet]无法导入:[]存在名为“{0}”的内置地图! editor.import.exists = [scarlet]无法导入:[]存在名为“{0}”的内置地图!
editor.import = 导入… editor.import = 导入…
editor.importmap = 导入地图 editor.importmap = 导入地图
@@ -420,7 +420,7 @@ filters.empty = [lightgray]没有过滤条件!用下方的按钮添加。
filter.distort = 扭曲程度 filter.distort = 扭曲程度
filter.noise = 波动程度 filter.noise = 波动程度
filter.enemyspawn = 敌人生成点选择 filter.enemyspawn = 敌人生成点选择
filter.spawnpath = Path To Spawn filter.spawnpath = 敌人生成途径
filter.corespawn = 核心降落点选择 filter.corespawn = 核心降落点选择
filter.median = 平均数 filter.median = 平均数
filter.oremedian = 矿石平均数 filter.oremedian = 矿石平均数
@@ -445,7 +445,7 @@ filter.option.amount = 数量
filter.option.block = 方块 filter.option.block = 方块
filter.option.floor = 地面 filter.option.floor = 地面
filter.option.flooronto = 地面目标 filter.option.flooronto = 地面目标
filter.option.target = Target filter.option.target = 目标
filter.option.wall = filter.option.wall =
filter.option.ore = 矿石 filter.option.ore = 矿石
filter.option.floor2 = 二重地面 filter.option.floor2 = 二重地面
@@ -479,7 +479,7 @@ requirement.research = 研究 {0}
requirement.capture = 占领 {0} requirement.capture = 占领 {0}
bestwave = [lightgray]最高波次:{0} bestwave = [lightgray]最高波次:{0}
launch.text = 发射 launch.text = 发射
research.multiplayer = Only the host can research items. research.multiplayer = 仅有服主可研究物品。
uncover = 解锁 uncover = 解锁
configure = 设定装运的数量 configure = 设定装运的数量
loadout = 装运 loadout = 装运
@@ -495,7 +495,7 @@ zone.objective = [lightgray]目标:[accent]{0}
zone.objective.survival = 生存 zone.objective.survival = 生存
zone.objective.attack = 摧毁敌方核心 zone.objective.attack = 摧毁敌方核心
add = 添加… add = 添加…
boss.health = BOSS 生命值 boss.health = Boss 生命值
connectfail = [crimson]服务器连接失败:[accent]{0} connectfail = [crimson]服务器连接失败:[accent]{0}
error.unreachable = 无法访问服务器。\n确定输对地址了吗 error.unreachable = 无法访问服务器。\n确定输对地址了吗
@@ -512,7 +512,7 @@ weather.rain.name = 降雨
weather.snow.name = 降雪 weather.snow.name = 降雪
weather.sandstorm.name = 沙尘暴 weather.sandstorm.name = 沙尘暴
weather.sporestorm.name = 孢子雾 weather.sporestorm.name = 孢子雾
weather.fog.name = Fog weather.fog.name =
sectors.unexplored = [lightgray]未探索 sectors.unexplored = [lightgray]未探索
sectors.resources = 资源: sectors.resources = 资源:
@@ -522,11 +522,11 @@ sectors.resume = 继续
sectors.launch = 发射 sectors.launch = 发射
sectors.select = 选择 sectors.select = 选择
sectors.nonelaunch = [lightgray]无 (太阳) sectors.nonelaunch = [lightgray]无 (太阳)
sectors.rename = Rename Sector sectors.rename = 重命名区块
sector.missingresources = [scarlet]Insufficient Core Resources sector.missingresources = [scarlet]核心资源不足
planet.serpulo.name = Serpulo planet.serpulo.name = 塞普罗
planet.sun.name = Sun planet.sun.name = 太阳
sector.groundZero.name = 零号地区 sector.groundZero.name = 零号地区
sector.craters.name = 陨石带 sector.craters.name = 陨石带
@@ -538,7 +538,7 @@ sector.nuclearComplex.name = 核裂阵
sector.overgrowth.name = 增生区 sector.overgrowth.name = 增生区
sector.tarFields.name = 油田 sector.tarFields.name = 油田
sector.saltFlats.name = 盐碱荒滩 sector.saltFlats.name = 盐碱荒滩
sector.fungalPass.name = Fungal Pass sector.fungalPass.name = 真菌通道
sector.groundZero.description = 踏上旅程的最佳位置。这儿的敌人威胁很小,但资源也少。\n收集尽可能多的铅和铜。\n出发吧 sector.groundZero.description = 踏上旅程的最佳位置。这儿的敌人威胁很小,但资源也少。\n收集尽可能多的铅和铜。\n出发吧
sector.frozenForest.description = 即使是靠近山脉的这里,孢子也已经扩散。他们不能长期停留在寒冷的温度中。\n\n开始运用电力。建造火力发电机并学会使用修理者。 sector.frozenForest.description = 即使是靠近山脉的这里,孢子也已经扩散。他们不能长期停留在寒冷的温度中。\n\n开始运用电力。建造火力发电机并学会使用修理者。
@@ -566,10 +566,10 @@ 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 = Clear Research settings.clearresearch = 清除研究进度
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research? settings.clearresearch.confirm = 您确定要清除战役研究进度?
settings.clearcampaignsaves = Clear Campaign Saves settings.clearcampaignsaves = 清除战役进度
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves? settings.clearcampaignsaves.confirm = 您确定要清除战役进度?
paused = [accent]< 暂停 > paused = [accent]< 暂停 >
clear = 清除 clear = 清除
banned = [scarlet]已禁止 banned = [scarlet]已禁止
@@ -580,7 +580,7 @@ info.title = [accent]详情
error.title = [crimson]发生了一个错误 error.title = [crimson]发生了一个错误
error.crashtitle = 发生了一个错误 error.crashtitle = 发生了一个错误
unit.nobuild = [scarlet]单位未能建造 unit.nobuild = [scarlet]单位未能建造
lastaccessed = [lightgray]Last Accessed: {0} lastaccessed = [lightgray]上次操作: {0}
block.unknown = [lightgray]??? block.unknown = [lightgray]???
stat.input = 输入 stat.input = 输入
@@ -606,7 +606,7 @@ stat.powerconnections = 最多连接
stat.poweruse = 使用能量 stat.poweruse = 使用能量
stat.powerdamage = 功率/损伤 stat.powerdamage = 功率/损伤
stat.itemcapacity = 物品容量 stat.itemcapacity = 物品容量
stat.memorycapacity = Memory Capacity stat.memorycapacity = 内存容量
stat.basepowergeneration = 基础能源输出 stat.basepowergeneration = 基础能源输出
stat.productiontime = 生产时间 stat.productiontime = 生产时间
stat.repairtime = 建筑完全修复时间 stat.repairtime = 建筑完全修复时间
@@ -626,28 +626,28 @@ stat.reload = 每秒发射数
stat.ammo = 弹药 stat.ammo = 弹药
stat.shieldhealth = 盾容 stat.shieldhealth = 盾容
stat.cooldowntime = 冷却时间 stat.cooldowntime = 冷却时间
stat.explosiveness = Explosiveness stat.explosiveness = 爆炸性
stat.basedeflectchance = Base Deflect Chance stat.basedeflectchance = 基础反射几率
stat.lightningchance = Lightning Chance stat.lightningchance = 激发闪电几率
stat.lightningdamage = Lightning Damage stat.lightningdamage = 激发闪电伤害
stat.flammability = Flammability stat.flammability = 燃烧性
stat.radioactivity = Radioactivity stat.radioactivity = 放射性
stat.heatcapacity = HeatCapacity stat.heatcapacity = 热容量
stat.viscosity = Viscosity stat.viscosity = 粘度
stat.temperature = Temperature stat.temperature = 温度
stat.speed = Speed stat.speed = 速度
stat.buildspeed = Build Speed stat.buildspeed = 建造速度
stat.minespeed = Mine Speed stat.minespeed = 采矿速度
stat.minetier = Mine Tier stat.minetier = 采矿等级
stat.payloadcapacity = Payload Capacity stat.payloadcapacity = 载货容量
stat.commandlimit = Command Limit stat.commandlimit = 指挥上限
stat.abilities = Abilities stat.abilities = 能力
ability.forcefield = Force Field ability.forcefield = 力墙场
ability.repairfield = Repair Field ability.repairfield = 修复场
ability.statusfield = Status Field ability.statusfield = 状态场
ability.unitspawn = {0} Factory ability.unitspawn = {0} 工厂
ability.shieldregenfield = Shield Regen Field ability.shieldregenfield = 护盾再生场
bar.drilltierreq = 需要更好的钻头 bar.drilltierreq = 需要更好的钻头
bar.noresources = 缺失资源 bar.noresources = 缺失资源
@@ -659,7 +659,7 @@ bar.powerbalance = 能量:{0}/秒
bar.powerstored = 储能:{0}/{1} bar.powerstored = 储能:{0}/{1}
bar.poweramount = 能量:{0} bar.poweramount = 能量:{0}
bar.poweroutput = 能量输出:{0} bar.poweroutput = 能量输出:{0}
bar.powerlines = Connections: {0}/{1} bar.powerlines = 链接: {0}/{1}
bar.items = 物品:{0} bar.items = 物品:{0}
bar.capacity = 容量:{0} bar.capacity = 容量:{0}
bar.unitcap = {0} {1}/{2} bar.unitcap = {0} {1}/{2}
@@ -671,7 +671,7 @@ bar.progress = 制造进度
bar.input = 输入 bar.input = 输入
bar.output = 输出 bar.output = 输出
units.processorcontrol = [lightgray]Processor Controlled 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] 格
@@ -680,7 +680,7 @@ bullet.homing = [stat] 追踪
bullet.shock = [stat] 电击 bullet.shock = [stat] 电击
bullet.frag = [stat] 分裂 bullet.frag = [stat] 分裂
bullet.knockback = [stat]{0}[lightgray] 击退 bullet.knockback = [stat]{0}[lightgray] 击退
bullet.pierce = [stat]{0}[lightgray]x pierce bullet.pierce = [stat]{0}[lightgray]x 穿透
bullet.infinitepierce = [stat]pierce bullet.infinitepierce = [stat]pierce
bullet.freezing = [stat] 冰冻 bullet.freezing = [stat] 冰冻
bullet.tarred = [stat] 减速 bullet.tarred = [stat] 减速
@@ -688,7 +688,7 @@ bullet.multiplier = [stat]{0}[lightgray]x 装弹数量
bullet.reload = [stat]{0}[lightgray]x 装弹速度 bullet.reload = [stat]{0}[lightgray]x 装弹速度
unit.blocks = 方块 unit.blocks = 方块
unit.blockssquared = blocks² unit.blockssquared = 方块²
unit.powersecond = 能量/秒 unit.powersecond = 能量/秒
unit.liquidsecond = 液体/秒 unit.liquidsecond = 液体/秒
unit.itemssecond = 物品/秒 unit.itemssecond = 物品/秒
@@ -711,7 +711,7 @@ category.power = 能量
category.liquids = 液体 category.liquids = 液体
category.items = 物品 category.items = 物品
category.crafting = 制造 category.crafting = 制造
category.function = Function category.function = 功能
category.optional = 可选的增强 category.optional = 可选的增强
setting.landscape.name = 锁定横屏 setting.landscape.name = 锁定横屏
setting.shadows.name = 影子 setting.shadows.name = 影子
@@ -794,8 +794,8 @@ keybind.clear_building.name = 清除建筑
keybind.press = 请按一个键… keybind.press = 请按一个键…
keybind.press.axis = 请按一个轴或键… 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 = 水平移动 keybind.move_x.name = 水平移动
keybind.move_y.name = 竖直移动 keybind.move_y.name = 竖直移动
keybind.mouse_move.name = 跟随鼠标 keybind.mouse_move.name = 跟随鼠标
@@ -861,7 +861,7 @@ mode.custom = 自定义模式
rules.infiniteresources = 无限资源 rules.infiniteresources = 无限资源
rules.reactorexplosions = 反应堆爆炸 rules.reactorexplosions = 反应堆爆炸
rules.schematic = Schematics Allowed rules.schematic = 启用蓝图
rules.wavetimer = 波次计时器 rules.wavetimer = 波次计时器
rules.waves = 波次 rules.waves = 波次
rules.attack = 攻击模式 rules.attack = 攻击模式
@@ -887,8 +887,8 @@ rules.title.unit = 单位
rules.title.experimental = 实验性 rules.title.experimental = 实验性
rules.title.environment = 环境性 rules.title.environment = 环境性
rules.lighting = 光照 rules.lighting = 光照
rules.enemyLights = Enemy Lights rules.enemyLights = 单位光照
rules.fire = Fire rules.fire = 火焰
rules.explosions = 建筑/单位爆炸伤害 rules.explosions = 建筑/单位爆炸伤害
rules.ambientlight = 环境光 rules.ambientlight = 环境光
rules.weather = 气候 rules.weather = 气候
@@ -922,46 +922,46 @@ 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 = 堡垒
unit.nova.name = 新星 unit.nova.name = 新星
unit.pulsar.name = 脉冲 unit.pulsar.name =
unit.quasar.name = 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 = 苍穹
unit.antumbra.name = unit.antumbra.name =
unit.eclipse.name = 日蚀 unit.eclipse.name = 日蚀
unit.mono.name = 独影 unit.mono.name = 独影
unit.poly.name = 聚幻 unit.poly.name = 聚幻
unit.mega.name = 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 = 海神
unit.alpha.name = 阿尔法 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.grass.name = 草地 block.grass.name = 草地
block.slag.name = 矿渣 block.slag.name = 矿渣
block.space.name = Space block.space.name = 太空
block.salt.name = 盐碱地 block.salt.name = 盐碱地
block.salt-wall.name = 盐墙 block.salt-wall.name = 盐墙
block.pebbles.name = 鹅卵石 block.pebbles.name = 鹅卵石
@@ -1007,7 +1007,7 @@ block.darksand-water.name = 暗沙 水
block.char.name = 焦土 block.char.name = 焦土
block.dacite.name = 英安岩 block.dacite.name = 英安岩
block.dacite-wall.name = 英安岩墙 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 = 石墙 block.stone-wall.name = 石墙
block.ice-wall.name = 冰墙 block.ice-wall.name = 冰墙
@@ -1041,7 +1041,7 @@ block.titanium-wall.name = 钛墙
block.titanium-wall-large.name = 大型钛墙 block.titanium-wall-large.name = 大型钛墙
block.plastanium-wall.name = 塑钢墙 block.plastanium-wall.name = 塑钢墙
block.plastanium-wall-large.name = 大型塑钢墙 block.plastanium-wall-large.name = 大型塑钢墙
block.phase-wall.name = 相织 block.phase-wall.name = 相织
block.phase-wall-large.name = 大型相织物墙 block.phase-wall-large.name = 大型相织物墙
block.thorium-wall.name = 钍墙 block.thorium-wall.name = 钍墙
block.thorium-wall-large.name = 大型钍墙 block.thorium-wall-large.name = 大型钍墙
@@ -1056,7 +1056,7 @@ block.conveyor.name = 传送带
block.titanium-conveyor.name = 钛传送带 block.titanium-conveyor.name = 钛传送带
block.plastanium-conveyor.name = 塑钢传送带 block.plastanium-conveyor.name = 塑钢传送带
block.armored-conveyor.name = 装甲传送带 block.armored-conveyor.name = 装甲传送带
block.armored-conveyor.description = 运送物品,与钛传送带一样的速度,但有更强的装甲。除其他传送带,不接受任何边的输入。 block.armored-conveyor.description = 运送物品,与钛传送带一样的速度,但有更强的装甲。除其他传送带,不接受任何边的输入。
block.junction.name = 连接器 block.junction.name = 连接器
block.router.name = 路由器 block.router.name = 路由器
block.distributor.name = 分配器 block.distributor.name = 分配器
@@ -1102,7 +1102,7 @@ block.power-source.name = 无限能源
block.unloader.name = 装卸器 block.unloader.name = 装卸器
block.vault.name = 仓库 block.vault.name = 仓库
block.wave.name = 波浪 block.wave.name = 波浪
block.tsunami.name = Tsunami block.tsunami.name = 海啸
block.swarmer.name = 蜂群 block.swarmer.name = 蜂群
block.salvo.name = 齐射炮 block.salvo.name = 齐射炮
block.ripple.name = 浪涌 block.ripple.name = 浪涌
@@ -1142,33 +1142,33 @@ block.arc.name = 电弧
block.rtg-generator.name = RTG 发电机 block.rtg-generator.name = RTG 发电机
block.spectre.name = 幽灵 block.spectre.name = 幽灵
block.meltdown.name = 熔毁 block.meltdown.name = 熔毁
block.foreshadow.name = Foreshadow 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 = 工厂
block.air-factory.name = 战单位工厂 block.air-factory.name = 工厂
block.naval-factory.name = 战单位工厂 block.naval-factory.name = 工厂
block.additive-reconstructor.name = 数增级单位重构工厂 block.additive-reconstructor.name = 数增级单位重构工厂
block.multiplicative-reconstructor.name = 级单位重构工厂 block.multiplicative-reconstructor.name = 级单位重构工厂
block.exponential-reconstructor.name = 级单位重构工厂 block.exponential-reconstructor.name = 幂级单位重构工厂
block.tetrative-reconstructor.name = 无量级单位重构工厂 block.tetrative-reconstructor.name = 无量级单位重构工厂
block.payload-conveyor.name = 载荷传送带 block.payload-conveyor.name = 载荷传送带
block.payload-router.name = 载荷路由器 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 = 超速穹顶投射器
block.switch.name = 开关 block.switch.name = 开关
block.micro-processor.name = 微型处理器 block.micro-processor.name = 微型处理器
block.logic-processor.name = 逻辑处理器 block.logic-processor.name = 逻辑处理器
block.hyper-processor.name = 处理器 block.hyper-processor.name = 处理器
block.logic-display.name = 逻辑显示屏 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 = Memory Bank block.memory-bank.name = 内存库
team.blue.name = team.blue.name =
team.crux.name = team.crux.name =

Binary file not shown.

View File

@@ -314,3 +314,5 @@
63422=foreshadow|block-foreshadow-medium 63422=foreshadow|block-foreshadow-medium
63421=tsunami|block-tsunami-medium 63421=tsunami|block-tsunami-medium
63420=space|block-space-medium 63420=space|block-space-medium
63419=legacy-unit-factory-air|block-legacy-unit-factory-air-medium
63418=legacy-unit-factory-ground|block-legacy-unit-factory-ground-medium

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -11,8 +11,8 @@ const readBytes = path => Vars.mods.getScripts().readBytes(path)
const loadMusic = path => Vars.mods.getScripts().loadMusic(path) const loadMusic = path => Vars.mods.getScripts().loadMusic(path)
const loadSound = path => Vars.mods.getScripts().loadSound(path) const loadSound = path => Vars.mods.getScripts().loadSound(path)
var scriptName = "base.js" let scriptName = "base.js"
var modName = "none" let modName = "none"
const print = text => log(modName + "/" + scriptName, text); const print = text => log(modName + "/" + scriptName, text);
@@ -82,6 +82,7 @@ importPackage(Packages.mindustry.maps.generators)
importPackage(Packages.mindustry.maps.planet) importPackage(Packages.mindustry.maps.planet)
importPackage(Packages.mindustry.net) importPackage(Packages.mindustry.net)
importPackage(Packages.mindustry.type) importPackage(Packages.mindustry.type)
importPackage(Packages.mindustry.type.weather)
importPackage(Packages.mindustry.ui) importPackage(Packages.mindustry.ui)
importPackage(Packages.mindustry.ui.dialogs) importPackage(Packages.mindustry.ui.dialogs)
importPackage(Packages.mindustry.ui.fragments) importPackage(Packages.mindustry.ui.fragments)
@@ -137,6 +138,7 @@ const PlayerChatEvent = Packages.mindustry.game.EventType.PlayerChatEvent
const ClientPreConnectEvent = Packages.mindustry.game.EventType.ClientPreConnectEvent const ClientPreConnectEvent = Packages.mindustry.game.EventType.ClientPreConnectEvent
const CommandIssueEvent = Packages.mindustry.game.EventType.CommandIssueEvent const CommandIssueEvent = Packages.mindustry.game.EventType.CommandIssueEvent
const LaunchItemEvent = Packages.mindustry.game.EventType.LaunchItemEvent const LaunchItemEvent = Packages.mindustry.game.EventType.LaunchItemEvent
const SectorInvasionEvent = Packages.mindustry.game.EventType.SectorInvasionEvent
const SectorLoseEvent = Packages.mindustry.game.EventType.SectorLoseEvent const SectorLoseEvent = Packages.mindustry.game.EventType.SectorLoseEvent
const WorldLoadEvent = Packages.mindustry.game.EventType.WorldLoadEvent const WorldLoadEvent = Packages.mindustry.game.EventType.WorldLoadEvent
const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent

View File

@@ -27,12 +27,12 @@ uniform vec3 u_rcampos;
uniform mat4 u_invproj; uniform mat4 u_invproj;
uniform vec3 u_light; uniform vec3 u_light;
vec2 rayIntersection(vec3 p, vec3 dir, float radius) { vec2 rayIntersection(vec3 p, vec3 dir, float radius){
float b = dot(p, dir); float b = dot(p, dir);
float c = dot(p, p) - radius * radius; float c = dot(p, p) - radius * radius;
float d = b * b - c; float d = b * b - c;
if (d < 0.0) { if(d < 0.0){
return vec2(MAX, -MAX); return vec2(MAX, -MAX);
} }
d = sqrt(d); d = sqrt(d);
@@ -43,7 +43,7 @@ vec2 rayIntersection(vec3 p, vec3 dir, float radius) {
return vec2(near, far); return vec2(near, far);
} }
float miePhase(float g, float c, float cc) { float miePhase(float g, float c, float cc){
float gg = g * g; float gg = g * g;
float a = (1.0 - gg) * (1.0 + cc); float a = (1.0 - gg) * (1.0 + cc);
@@ -55,20 +55,20 @@ float miePhase(float g, float c, float cc) {
return 1.5 * a / b; return 1.5 * a / b;
} }
float rayleighPhase(float cc) { float rayleighPhase(float cc){
return 0.75 * (1.0 + cc); return 0.75 * (1.0 + cc);
} }
float density(vec3 p) { float density(vec3 p){
return exp(-(length(p) - u_innerRadius) * (4.0 / (u_outerRadius - u_innerRadius))); return exp(-(length(p) - u_innerRadius) * (4.0 / (u_outerRadius - u_innerRadius)));
} }
float optic(vec3 p, vec3 q) { float optic(vec3 p, vec3 q){
vec3 step = (q - p) / fNumOutScatter; vec3 step = (q - p) / fNumOutScatter;
vec3 v = p + step * 0.5; vec3 v = p + step * 0.5;
float sum = 0.0; float sum = 0.0;
for (int i = 0; i < numOutScatter; i++) { for(int i = 0; i < numOutScatter; i++){
sum += density(v); sum += density(v);
v += step; v += step;
} }
@@ -76,7 +76,7 @@ float optic(vec3 p, vec3 q) {
return sum; return sum;
} }
vec3 inScatter(vec3 o, vec3 dir, vec2 e, vec3 l) { vec3 inScatter(vec3 o, vec3 dir, vec2 e, vec3 l){
float len = (e.y - e.x) / fNumInScatter; float len = (e.y - e.x) / fNumInScatter;
vec3 step = dir * len; vec3 step = dir * len;
vec3 p = o + dir * e.x; vec3 p = o + dir * e.x;

View File

@@ -24,7 +24,7 @@ bool cont(vec2 T, vec2 v){
id(T + vec2(step, 0) * v, base) || id(T + vec2(-step, 0) * v, base)); id(T + vec2(step, 0) * v, base) || id(T + vec2(-step, 0) * v, base));
} }
void main() { void main(){
vec2 t = v_texCoords.xy; vec2 t = v_texCoords.xy;

View File

@@ -7,7 +7,7 @@ uniform mat4 u_trans;
varying vec4 v_col; varying vec4 v_col;
varying vec4 v_position; varying vec4 v_position;
void main() { void main(){
gl_Position = u_proj * u_trans * a_position; gl_Position = u_proj * u_trans * a_position;
v_col = a_color; v_col = a_color;
v_position = a_position; v_position = a_position;

View File

@@ -30,7 +30,7 @@ bool cont(vec2 T, vec2 v){
id(T + vec2(step, -step) * v, base) || id(T + vec2(-step, step) * v, base)); id(T + vec2(step, -step) * v, base) || id(T + vec2(-step, step) * v, base));
} }
void main() { void main(){
vec2 coords = (v_texCoords.xy - u_uv) / (u_uv2 - u_uv); vec2 coords = (v_texCoords.xy - u_uv) / (u_uv2 - u_uv);
vec2 t = v_texCoords.xy; vec2 t = v_texCoords.xy;
vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y); vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 826 B

After

Width:  |  Height:  |  Size: 826 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 917 KiB

After

Width:  |  Height:  |  Size: 917 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 562 KiB

After

Width:  |  Height:  |  Size: 608 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 KiB

After

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 426 KiB

After

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@@ -36,8 +36,8 @@ public class Vars implements Loadable{
public static boolean loadLocales = true; public static boolean loadLocales = true;
/** Whether the logger is loaded. */ /** Whether the logger is loaded. */
public static boolean loadedLogger = false, loadedFileLogger = false; public static boolean loadedLogger = false, loadedFileLogger = false;
/** Whether to show the cliff button in the editor*/ /** Whether to enable various experimental features (e.g. cliffs) */
public static boolean addCliffButton = false; public static boolean experimental = false;
/** Maximum extra padding around deployment schematics. */ /** Maximum extra padding around deployment schematics. */
public static final int maxLoadoutSchematicPad = 5; public static final int maxLoadoutSchematicPad = 5;
/** Maximum schematic size.*/ /** Maximum schematic size.*/
@@ -187,7 +187,7 @@ public class Vars implements Loadable{
public static ContentLoader content; public static ContentLoader content;
public static GameState state; public static GameState state;
public static EntityCollisions collisions; public static EntityCollisions collisions;
public static DefaultWaves defaultWaves; public static Waves waves;
public static LoopControl loops; public static LoopControl loops;
public static Platform platform = new Platform(){}; public static Platform platform = new Platform(){};
public static Mods mods; public static Mods mods;
@@ -256,7 +256,7 @@ public class Vars implements Loadable{
content = new ContentLoader(); content = new ContentLoader();
loops = new LoopControl(); loops = new LoopControl();
defaultWaves = new DefaultWaves(); waves = new Waves();
collisions = new EntityCollisions(); collisions = new EntityCollisions();
world = new World(); world = new World();
universe = new Universe(); universe = new Universe();
@@ -318,20 +318,25 @@ public class Vars implements Loadable{
settings.setAppName(appName); settings.setAppName(appName);
Writer writer = settings.getDataDirectory().child("last_log.txt").writer(false); try{
LogHandler log = Log.logger; Writer writer = settings.getDataDirectory().child("last_log.txt").writer(false);
//ignore it LogHandler log = Log.logger;
Log.logger = (level, text) -> { //ignore it
log.log(level, text); Log.logger = (level, text) -> {
log.log(level, text);
try{ try{
writer.write("[" + Character.toUpperCase(level.name().charAt(0)) +"] " + Log.removeColors(text) + "\n"); writer.write("[" + Character.toUpperCase(level.name().charAt(0)) +"] " + Log.removeColors(text) + "\n");
writer.flush(); writer.flush();
}catch(IOException e){ }catch(IOException e){
e.printStackTrace(); e.printStackTrace();
//ignore it //ignore it
} }
}; };
}catch(Exception e){
//handle log file not being found
Log.err(e);
}
loadedFileLogger = true; loadedFileLogger = true;
} }

View File

@@ -312,6 +312,11 @@ public class BlockIndexer{
return null; return null;
} }
/** Find the closest ore block relative to a position. */
public Tile findClosestOre(Unit unit, Item item){
return findClosestOre(unit.x, unit.y, item);
}
/** @return extra unit cap of a team. This is added onto the base value. */ /** @return extra unit cap of a team. This is added onto the base value. */
public int getExtraUnits(Team team){ public int getExtraUnits(Team team){
return unitCaps[team.id]; return unitCaps[team.id];
@@ -457,8 +462,8 @@ public class BlockIndexer{
} }
public static class TileArray implements Iterable<Tile>{ public static class TileArray implements Iterable<Tile>{
private Seq<Tile> tiles = new Seq<>(false, 16); Seq<Tile> tiles = new Seq<>(false, 16);
private IntSet contained = new IntSet(); IntSet contained = new IntSet();
public void add(Tile tile){ public void add(Tile tile){
if(contained.add(tile.pos())){ if(contained.add(tile.pos())){

View File

@@ -7,6 +7,7 @@ import arc.struct.*;
import arc.util.*; import arc.util.*;
import arc.util.async.*; import arc.util.async.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import mindustry.content.*;
import mindustry.core.*; import mindustry.core.*;
import mindustry.game.EventType.*; import mindustry.game.EventType.*;
import mindustry.game.*; import mindustry.game.*;
@@ -116,7 +117,7 @@ public class Pathfinder implements Runnable{
tile.getTeamID(), tile.getTeamID(),
tile.solid(), tile.solid(),
tile.floor().isLiquid, tile.floor().isLiquid,
tile.staticDarkness() >= 2, tile.staticDarkness() >= 2 || (tile.floor().solid && tile.block() == Blocks.air),
nearLiquid, nearLiquid,
nearGround, nearGround,
nearSolid, nearSolid,

View File

@@ -2,14 +2,17 @@ package mindustry.ai.types;
import arc.math.*; import arc.math.*;
import arc.math.geom.*; import arc.math.geom.*;
import arc.struct.*;
import arc.util.*; import arc.util.*;
import mindustry.ai.formations.*; import mindustry.ai.formations.*;
import mindustry.entities.units.*; import mindustry.entities.units.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.world.*;
import mindustry.world.blocks.storage.CoreBlock.*; import mindustry.world.blocks.storage.CoreBlock.*;
public class FormationAI extends AIController implements FormationMember{ public class FormationAI extends AIController implements FormationMember{
private static Seq<Tile> tiles = new Seq<>();
public Unit leader; public Unit leader;
private Vec3 target = new Vec3(); private Vec3 target = new Vec3();
@@ -51,18 +54,18 @@ public class FormationAI extends AIController implements FormationMember{
Vec2 realtarget = vec.set(target); Vec2 realtarget = vec.set(target);
float margin = 3f; float margin = 4f;
float speed = unit.realSpeed(); float speed = unit.realSpeed();
if(unit.dst(realtarget) <= margin){ if(unit.dst(realtarget) <= margin){
unit.vel.approachDelta(Vec2.ZERO, speed * type.accel / 2f); //unit.vel.approachDelta(Vec2.ZERO, speed * type.accel / 2f);
}else{ }else{
unit.moveAt(realtarget.sub(unit).limit(speed)); unit.moveAt(realtarget.sub(unit).limit(speed));
} }
if(unit instanceof Minerc mine && leader instanceof Minerc com){ if(unit instanceof Minerc mine && leader instanceof Minerc com){
if(mine.validMine(com.mineTile())){ if(com.mineTile() != null && mine.validMine(com.mineTile())){
mine.mineTile(com.mineTile()); mine.mineTile(com.mineTile());
CoreBuild core = unit.team.core(); CoreBuild core = unit.team.core();
@@ -77,7 +80,6 @@ public class FormationAI extends AIController implements FormationMember{
}else{ }else{
mine.mineTile(null); mine.mineTile(null);
} }
} }
if(unit instanceof Builderc build && leader instanceof Builderc com && com.activelyBuilding()){ if(unit instanceof Builderc build && leader instanceof Builderc com && com.activelyBuilding()){

View File

@@ -14,7 +14,7 @@ import static mindustry.Vars.*;
public class LogicAI extends AIController{ public class LogicAI extends AIController{
/** Minimum delay between item transfers. */ /** Minimum delay between item transfers. */
public static final float transferDelay = 60f * 3f; public static final float transferDelay = 60f * 2f;
/** Time after which the unit resets its controlled and reverts to a normal unit. */ /** Time after which the unit resets its controlled and reverts to a normal unit. */
public static final float logicControlTimeout = 10f * 60f; public static final float logicControlTimeout = 10f * 60f;
@@ -44,8 +44,8 @@ public class LogicAI extends AIController{
@Override @Override
protected void updateMovement(){ protected void updateMovement(){
if(itemTimer > 0) itemTimer -= Time.delta; if(itemTimer >= 0) itemTimer -= Time.delta;
if(payTimer > 0) payTimer -= Time.delta; if(payTimer >= 0) payTimer -= Time.delta;
if(targetTimer > 0f){ if(targetTimer > 0f){
targetTimer -= Time.delta; targetTimer -= Time.delta;

View File

@@ -39,12 +39,12 @@ public class MinerAI extends AIController{
if(unit.stack.amount >= unit.type.itemCapacity || (targetItem != null && !unit.acceptsItem(targetItem))){ if(unit.stack.amount >= unit.type.itemCapacity || (targetItem != null && !unit.acceptsItem(targetItem))){
mining = false; mining = false;
}else{ }else{
if(retarget() && targetItem != null){ if(timer.get(timerTarget, 60) && targetItem != null){
ore = indexer.findClosestOre(unit.x, unit.y, targetItem); ore = indexer.findClosestOre(unit, targetItem);
} }
if(ore != null){ if(ore != null){
moveTo(ore, unit.type.range / 2f); moveTo(ore, unit.type.range / 2f, 20f);
if(unit.within(ore, unit.type.range)){ if(unit.within(ore, unit.type.range)){
miner.mineTile(ore); miner.mineTile(ore);

View File

@@ -103,6 +103,7 @@ public class Blocks implements ContentList{
alwaysReplace = true; alwaysReplace = true;
hasShadow = false; hasShadow = false;
useColor = false; useColor = false;
wall = this;
} }
@Override public void drawBase(Tile tile){} @Override public void drawBase(Tile tile){}
@@ -173,12 +174,14 @@ public class Blocks implements ContentList{
isLiquid = true; isLiquid = true;
cacheLayer = CacheLayer.water; cacheLayer = CacheLayer.water;
albedo = 0.5f; albedo = 0.5f;
attributes.set(Attribute.spores, 0.15f);
}}; }};
darksandTaintedWater = new ShallowLiquid("darksand-tainted-water"){{ darksandTaintedWater = new ShallowLiquid("darksand-tainted-water"){{
speedMultiplier = 0.75f; speedMultiplier = 0.75f;
statusDuration = 60f; statusDuration = 60f;
albedo = 0.5f; albedo = 0.5f;
attributes.set(Attribute.spores, 0.1f);
}}; }};
sandWater = new ShallowLiquid("sand-water"){{ sandWater = new ShallowLiquid("sand-water"){{
@@ -624,17 +627,6 @@ public class Blocks implements ContentList{
consumes.liquid(Liquids.water, 0.2f); consumes.liquid(Liquids.water, 0.2f);
}}; }};
blastMixer = new GenericCrafter("blast-mixer"){{
requirements(Category.crafting, with(Items.lead, 30, Items.titanium, 20));
hasItems = true;
hasPower = true;
outputItem = new ItemStack(Items.blastCompound, 1);
size = 2;
consumes.items(new ItemStack(Items.pyratite, 1), new ItemStack(Items.sporePod, 1));
consumes.power(0.40f);
}};
pyratiteMixer = new GenericSmelter("pyratite-mixer"){{ pyratiteMixer = new GenericSmelter("pyratite-mixer"){{
requirements(Category.crafting, with(Items.copper, 50, Items.lead, 25)); requirements(Category.crafting, with(Items.copper, 50, Items.lead, 25));
flameColor = Color.clear; flameColor = Color.clear;
@@ -648,6 +640,17 @@ public class Blocks implements ContentList{
consumes.items(new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2)); consumes.items(new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2));
}}; }};
blastMixer = new GenericCrafter("blast-mixer"){{
requirements(Category.crafting, with(Items.lead, 30, Items.titanium, 20));
hasItems = true;
hasPower = true;
outputItem = new ItemStack(Items.blastCompound, 1);
size = 2;
consumes.items(new ItemStack(Items.pyratite, 1), new ItemStack(Items.sporePod, 1));
consumes.power(0.40f);
}};
melter = new GenericCrafter("melter"){{ melter = new GenericCrafter("melter"){{
requirements(Category.crafting, with(Items.copper, 30, Items.lead, 35, Items.graphite, 45)); requirements(Category.crafting, with(Items.copper, 30, Items.lead, 35, Items.graphite, 45));
health = 200; health = 200;
@@ -913,7 +916,7 @@ public class Blocks implements ContentList{
size = 3; size = 3;
phaseRadiusBoost = 80f; phaseRadiusBoost = 80f;
radius = 101.7f; radius = 101.7f;
breakage = 750f; shieldHealth = 750f;
cooldownNormal = 1.5f; cooldownNormal = 1.5f;
cooldownLiquid = 1.2f; cooldownLiquid = 1.2f;
cooldownBrokenBase = 0.35f; cooldownBrokenBase = 0.35f;
@@ -1190,7 +1193,7 @@ public class Blocks implements ContentList{
requirements(Category.power, with(Items.lead, 100, Items.silicon, 75, Items.phaseFabric, 25, Items.plastanium, 75, Items.thorium, 50)); requirements(Category.power, with(Items.lead, 100, Items.silicon, 75, Items.phaseFabric, 25, Items.plastanium, 75, Items.thorium, 50));
size = 2; size = 2;
powerProduction = 4.5f; powerProduction = 4.5f;
itemDuration = 60 * 18f; itemDuration = 60 * 15f;
}}; }};
solarPanel = new SolarGenerator("solar-panel"){{ solarPanel = new SolarGenerator("solar-panel"){{
@@ -1327,7 +1330,7 @@ public class Blocks implements ContentList{
//region storage //region storage
coreShard = new CoreBlock("core-shard"){{ coreShard = new CoreBlock("core-shard"){{
requirements(Category.effect, BuildVisibility.hidden, with(Items.copper, 2000, Items.lead, 1000)); requirements(Category.effect, BuildVisibility.editorOnly, with(Items.copper, 2000, Items.lead, 1000));
alwaysUnlocked = true; alwaysUnlocked = true;
unitType = UnitTypes.alpha; unitType = UnitTypes.alpha;
@@ -1401,7 +1404,7 @@ public class Blocks implements ContentList{
restitution = 0.03f; restitution = 0.03f;
range = 100; range = 100;
shootCone = 15f; shootCone = 15f;
ammoUseEffect = Fx.shellEjectSmall; ammoUseEffect = Fx.casing1;
health = 250; health = 250;
inaccuracy = 2f; inaccuracy = 2f;
rotateSpeed = 10f; rotateSpeed = 10f;
@@ -1542,10 +1545,10 @@ public class Blocks implements ContentList{
hasPower = true; hasPower = true;
size = 2; size = 2;
force = 5f; force = 8f;
scaledForce = 5.5f; scaledForce = 7f;
range = 160f; range = 230f;
damage = 0.4f; damage = 0.3f;
health = 160 * size * size; health = 160 * size * size;
rotateSpeed = 10; rotateSpeed = 10;
@@ -1590,7 +1593,7 @@ public class Blocks implements ContentList{
shootShake = 1f; shootShake = 1f;
burstSpacing = 3f; burstSpacing = 3f;
shots = 4; shots = 4;
ammoUseEffect = Fx.shellEjectBig; ammoUseEffect = Fx.casing2;
health = 240 * size * size; health = 240 * size * size;
shootSound = Sounds.shootBig; shootSound = Sounds.shootBig;
}}; }};
@@ -1651,17 +1654,19 @@ public class Blocks implements ContentList{
float brange = range + 10f; float brange = range + 10f;
ammo( ammo(
Items.thorium, new ShrapnelBulletType(){{
length = brange;
damage = 105f;
ammoMultiplier = 5f;
}},
Items.titanium, new ShrapnelBulletType(){{ Items.titanium, new ShrapnelBulletType(){{
length = brange; length = brange;
damage = 66f; damage = 66f;
ammoMultiplier = 4f; ammoMultiplier = 4f;
width = 17f; width = 17f;
reloadMultiplier = 1.3f; reloadMultiplier = 1.3f;
}},
Items.thorium, new ShrapnelBulletType(){{
length = brange;
damage = 105f;
ammoMultiplier = 5f;
toColor = Pal.thoriumPink;
shootEffect = smokeEffect = Fx.thoriumShoot;
}} }}
); );
}}; }};
@@ -1682,7 +1687,7 @@ public class Blocks implements ContentList{
inaccuracy = 12f; inaccuracy = 12f;
reloadTime = 60f; reloadTime = 60f;
ammoEjectBack = 5f; ammoEjectBack = 5f;
ammoUseEffect = Fx.shellEjectBig; ammoUseEffect = Fx.casing3Double;
ammoPerShot = 2; ammoPerShot = 2;
cooldown = 0.03f; cooldown = 0.03f;
velocityInaccuracy = 0.2f; velocityInaccuracy = 0.2f;
@@ -1740,7 +1745,7 @@ public class Blocks implements ContentList{
rotateSpeed = 2.5f; rotateSpeed = 2.5f;
reloadTime = 200f; reloadTime = 200f;
restitution = 0.2f; restitution = 0.2f;
ammoUseEffect = Fx.shellEjectBig; ammoUseEffect = Fx.casing3Double;
recoilAmount = 5f; recoilAmount = 5f;
restitution = 0.009f; restitution = 0.009f;
cooldown = 0.009f; cooldown = 0.009f;
@@ -1769,7 +1774,7 @@ public class Blocks implements ContentList{
reloadTime = 6f; reloadTime = 6f;
coolantMultiplier = 0.5f; coolantMultiplier = 0.5f;
restitution = 0.1f; restitution = 0.1f;
ammoUseEffect = Fx.shellEjectBig; ammoUseEffect = Fx.casing3Double;
range = 200f; range = 200f;
inaccuracy = 3f; inaccuracy = 3f;
recoilAmount = 3f; recoilAmount = 3f;
@@ -1988,9 +1993,9 @@ public class Blocks implements ContentList{
illuminator = new LightBlock("illuminator"){{ illuminator = new LightBlock("illuminator"){{
requirements(Category.effect, BuildVisibility.lightingOnly, with(Items.graphite, 12, Items.silicon, 8)); requirements(Category.effect, BuildVisibility.lightingOnly, with(Items.graphite, 12, Items.silicon, 8));
brightness = 0.67f; brightness = 0.75f;
radius = 140f; radius = 120f;
consumes.power(0.06f); consumes.power(0.05f);
}}; }};
//endregion //endregion
@@ -1999,6 +2004,12 @@ public class Blocks implements ContentList{
//looked up by name, no ref needed //looked up by name, no ref needed
new LegacyMechPad("legacy-mech-pad"); new LegacyMechPad("legacy-mech-pad");
new LegacyUnitFactory("legacy-unit-factory"); new LegacyUnitFactory("legacy-unit-factory");
new LegacyUnitFactory("legacy-unit-factory-air"){{
replacement = Blocks.airFactory;
}};
new LegacyUnitFactory("legacy-unit-factory-ground"){{
replacement = Blocks.groundFactory;
}};
//endregion //endregion
//region campaign //region campaign
@@ -2034,7 +2045,7 @@ public class Blocks implements ContentList{
}}; }};
microProcessor = new LogicBlock("micro-processor"){{ microProcessor = new LogicBlock("micro-processor"){{
requirements(Category.logic, with(Items.copper, 80, Items.lead, 50, Items.silicon, 50)); requirements(Category.logic, with(Items.copper, 80, Items.lead, 50, Items.silicon, 30));
instructionsPerTick = 2; instructionsPerTick = 2;
@@ -2042,7 +2053,7 @@ public class Blocks implements ContentList{
}}; }};
logicProcessor = new LogicBlock("logic-processor"){{ logicProcessor = new LogicBlock("logic-processor"){{
requirements(Category.logic, with(Items.lead, 320, Items.silicon, 100, Items.graphite, 60, Items.thorium, 50)); requirements(Category.logic, with(Items.lead, 320, Items.silicon, 60, Items.graphite, 60, Items.thorium, 50));
instructionsPerTick = 8; instructionsPerTick = 8;
@@ -2052,7 +2063,7 @@ public class Blocks implements ContentList{
}}; }};
hyperProcessor = new LogicBlock("hyper-processor"){{ hyperProcessor = new LogicBlock("hyper-processor"){{
requirements(Category.logic, with(Items.lead, 450, Items.silicon, 150, Items.thorium, 75, Items.surgeAlloy, 50)); requirements(Category.logic, with(Items.lead, 450, Items.silicon, 130, Items.thorium, 75, Items.surgeAlloy, 50));
consumes.liquid(Liquids.cryofluid, 0.08f); consumes.liquid(Liquids.cryofluid, 0.08f);
hasLiquids = true; hasLiquids = true;

View File

@@ -30,18 +30,33 @@ public class Bullets implements ContentList{
missileExplosive, missileIncendiary, missileSurge, missileExplosive, missileIncendiary, missileSurge,
//standard //standard
standardCopper, standardDense, standardThorium, standardHoming, standardIncendiary, standardMechSmall, standardCopper, standardDense, standardThorium, standardHoming, standardIncendiary,
standardGlaive, standardDenseBig, standardThoriumBig, standardIncendiaryBig, standardDenseBig, standardThoriumBig, standardIncendiaryBig,
//liquid //liquid
waterShot, cryoShot, slagShot, oilShot, heavyWaterShot, heavyCryoShot, heavySlagShot, heavyOilShot, waterShot, cryoShot, slagShot, oilShot, heavyWaterShot, heavyCryoShot, heavySlagShot, heavyOilShot,
//environment, misc. //environment, misc.
damageLightning, damageLightningGround, fireball, basicFlame, pyraFlame, driverBolt, healBullet, healBulletBig, frag; damageLightning, damageLightningGround, fireball, basicFlame, pyraFlame, driverBolt, healBullet, healBulletBig;
@Override @Override
public void load(){ public void load(){
//lightning bullets need to be initialized first.
damageLightning = new BulletType(0.0001f, 0f){{
lifetime = Fx.lightning.lifetime;
hitEffect = Fx.hitLancer;
despawnEffect = Fx.none;
status = StatusEffects.shocked;
statusDuration = 10f;
hittable = false;
}};
//this is just a copy of the damage lightning bullet that doesn't damage air units
damageLightningGround = new BulletType(0.0001f, 0f){};
JsonIO.copy(damageLightning, damageLightningGround);
damageLightningGround.collidesAir = false;
artilleryDense = new ArtilleryBulletType(3f, 20, "shell"){{ artilleryDense = new ArtilleryBulletType(3f, 20, "shell"){{
hitEffect = Fx.flakExplosion; hitEffect = Fx.flakExplosion;
knockback = 0.8f; knockback = 0.8f;
@@ -102,6 +117,7 @@ public class Bullets implements ContentList{
status = StatusEffects.burning; status = StatusEffects.burning;
frontColor = Pal.lightishOrange; frontColor = Pal.lightishOrange;
backColor = Pal.lightOrange; backColor = Pal.lightOrange;
makeFire = true;
trailEffect = Fx.incendTrail; trailEffect = Fx.incendTrail;
}}; }};
@@ -265,6 +281,7 @@ public class Bullets implements ContentList{
homingPower = 0.08f; homingPower = 0.08f;
splashDamageRadius = 20f; splashDamageRadius = 20f;
splashDamage = 20f; splashDamage = 20f;
makeFire = true;
hitEffect = Fx.blastExplosion; hitEffect = Fx.blastExplosion;
status = StatusEffects.burning; status = StatusEffects.burning;
}}; }};
@@ -278,6 +295,7 @@ public class Bullets implements ContentList{
splashDamage = 25f; splashDamage = 25f;
hitEffect = Fx.blastExplosion; hitEffect = Fx.blastExplosion;
despawnEffect = Fx.blastExplosion; despawnEffect = Fx.blastExplosion;
lightningDamage = 10;
lightning = 2; lightning = 2;
lightningLength = 10; lightningLength = 10;
}}; }};
@@ -323,27 +341,11 @@ public class Bullets implements ContentList{
frontColor = Pal.lightishOrange; frontColor = Pal.lightishOrange;
backColor = Pal.lightOrange; backColor = Pal.lightOrange;
status = StatusEffects.burning; status = StatusEffects.burning;
makeFire = true;
inaccuracy = 3f; inaccuracy = 3f;
lifetime = 60f; lifetime = 60f;
}}; }};
standardGlaive = new BasicBulletType(4f, 7.5f, "bullet"){{
width = 10f;
height = 12f;
frontColor = Color.valueOf("feb380");
backColor = Color.valueOf("ea8878");
status = StatusEffects.burning;
lifetime = 60f;
}};
standardMechSmall = new BasicBulletType(4f, 9, "bullet"){{
width = 11f;
height = 14f;
lifetime = 40f;
inaccuracy = 5f;
despawnEffect = Fx.hitBulletSmall;
}};
standardDenseBig = new BasicBulletType(7f, 55, "bullet"){{ standardDenseBig = new BasicBulletType(7f, 55, "bullet"){{
width = 15f; width = 15f;
height = 21f; height = 21f;
@@ -365,24 +367,11 @@ public class Bullets implements ContentList{
backColor = Pal.lightOrange; backColor = Pal.lightOrange;
status = StatusEffects.burning; status = StatusEffects.burning;
shootEffect = Fx.shootBig; shootEffect = Fx.shootBig;
makeFire = true;
pierceCap = 2; pierceCap = 2;
pierceBuilding = true; pierceBuilding = true;
}}; }};
damageLightning = new BulletType(0.0001f, 0f){{
lifetime = Fx.lightning.lifetime;
hitEffect = Fx.hitLancer;
despawnEffect = Fx.none;
status = StatusEffects.shocked;
statusDuration = 10f;
hittable = false;
}};
//this is just a copy of the damage lightning bullet that doesn't damage air units
damageLightningGround = new BulletType(0.0001f, 0f){};
JsonIO.copy(damageLightning, damageLightningGround);
damageLightningGround.collidesAir = false;
healBullet = new LaserBoltBulletType(5.2f, 13){{ healBullet = new LaserBoltBulletType(5.2f, 13){{
healPercent = 3f; healPercent = 3f;
collidesTeam = true; collidesTeam = true;
@@ -437,7 +426,7 @@ public class Bullets implements ContentList{
} }
}; };
basicFlame = new BulletType(3.35f, 15f){{ basicFlame = new BulletType(3.35f, 16f){{
ammoMultiplier = 3f; ammoMultiplier = 3f;
hitSize = 7f; hitSize = 7f;
lifetime = 18f; lifetime = 18f;
@@ -452,7 +441,7 @@ public class Bullets implements ContentList{
hittable = false; hittable = false;
}}; }};
pyraFlame = new BulletType(3.35f, 22f){{ pyraFlame = new BulletType(3.35f, 25f){{
ammoMultiplier = 4f; ammoMultiplier = 4f;
hitSize = 7f; hitSize = 7f;
lifetime = 18f; lifetime = 18f;
@@ -489,9 +478,9 @@ public class Bullets implements ContentList{
knockback = 1.7f; knockback = 1.7f;
puddleSize = 8f; puddleSize = 8f;
drag = 0.001f; drag = 0.001f;
ammoMultiplier = 2f; ammoMultiplier = 0.4f;
statusDuration = 60f * 4f; statusDuration = 60f * 4f;
damage = 0.1f; damage = 0.2f;
}}; }};
heavyCryoShot = new LiquidBulletType(Liquids.cryofluid){{ heavyCryoShot = new LiquidBulletType(Liquids.cryofluid){{
@@ -500,9 +489,9 @@ public class Bullets implements ContentList{
knockback = 1.3f; knockback = 1.3f;
puddleSize = 8f; puddleSize = 8f;
drag = 0.001f; drag = 0.001f;
ammoMultiplier = 2f; ammoMultiplier = 0.4f;
statusDuration = 60f * 4f; statusDuration = 60f * 4f;
damage = 0.1f; damage = 0.2f;
}}; }};
heavySlagShot = new LiquidBulletType(Liquids.slag){{ heavySlagShot = new LiquidBulletType(Liquids.slag){{
@@ -510,9 +499,9 @@ public class Bullets implements ContentList{
speed = 4f; speed = 4f;
knockback = 1.3f; knockback = 1.3f;
puddleSize = 8f; puddleSize = 8f;
damage = 5f; damage = 4.75f;
drag = 0.001f; drag = 0.001f;
ammoMultiplier = 2f; ammoMultiplier = 0.4f;
statusDuration = 60f * 4f; statusDuration = 60f * 4f;
}}; }};
@@ -522,19 +511,11 @@ public class Bullets implements ContentList{
knockback = 1.3f; knockback = 1.3f;
puddleSize = 8f; puddleSize = 8f;
drag = 0.001f; drag = 0.001f;
ammoMultiplier = 2f; ammoMultiplier = 0.4f;
statusDuration = 60f * 4f; statusDuration = 60f * 4f;
damage = 0.1f; damage = 0.2f;
}}; }};
driverBolt = new MassDriverBolt(); driverBolt = new MassDriverBolt();
frag = new BasicBulletType(5f, 8, "bullet"){{
width = 8f;
height = 9f;
shrinkY = 0.5f;
lifetime = 50f;
drag = 0.04f;
}};
} }
} }

View File

@@ -257,33 +257,33 @@ public class Fx{
randLenVectors(e.id, 9, 3 + 20f * e.finpow(), (x, y) -> { randLenVectors(e.id, 9, 3 + 20f * e.finpow(), (x, y) -> {
Fill.circle(e.x + x, e.y + y, e.fout() * 4f + 0.4f); Fill.circle(e.x + x, e.y + y, e.fout() * 4f + 0.4f);
}); });
}).ground(), }).layer(Layer.debris),
unitLand = new Effect(30, e -> { unitLand = new Effect(30, e -> {
color(Tmp.c1.set(e.color).mul(1.1f)); color(Tmp.c1.set(e.color).mul(1.1f));
randLenVectors(e.id, 6, 17f * e.finpow(), (x, y) -> { randLenVectors(e.id, 6, 17f * e.finpow(), (x, y) -> {
Fill.circle(e.x + x, e.y + y, e.fout() * 4f + 0.3f); Fill.circle(e.x + x, e.y + y, e.fout() * 4f + 0.3f);
}); });
}).ground(), }).layer(Layer.debris),
unitLandSmall = new Effect(30, e -> { unitLandSmall = new Effect(30, e -> {
color(Tmp.c1.set(e.color).mul(1.1f)); color(Tmp.c1.set(e.color).mul(1.1f));
randLenVectors(e.id, (int)(6 * e.rotation), 12f * e.finpow() * e.rotation, (x, y) -> { randLenVectors(e.id, (int)(6 * e.rotation), 12f * e.finpow() * e.rotation, (x, y) -> {
Fill.circle(e.x + x, e.y + y, e.fout() * 3f + 0.1f); Fill.circle(e.x + x, e.y + y, e.fout() * 3f + 0.1f);
}); });
}).ground(), }).layer(Layer.debris),
unitPickup = new Effect(18, e -> { unitPickup = new Effect(18, e -> {
color(Pal.lightishGray); color(Pal.lightishGray);
stroke(e.fin() * 2f); stroke(e.fin() * 2f);
Lines.poly(e.x, e.y, 4, 13f * e.fout()); Lines.poly(e.x, e.y, 4, 13f * e.fout());
}).ground(), }).layer(Layer.debris),
landShock = new Effect(12, e -> { landShock = new Effect(12, e -> {
color(Pal.lancerLaser); color(Pal.lancerLaser);
stroke(e.fout() * 3f); stroke(e.fout() * 3f);
Lines.poly(e.x, e.y, 12, 20f * e.fout()); Lines.poly(e.x, e.y, 12, 20f * e.fout());
}).ground(), }).layer(Layer.debris),
pickup = new Effect(18, e -> { pickup = new Effect(18, e -> {
color(Pal.lightishGray); color(Pal.lightishGray);
@@ -1064,66 +1064,102 @@ public class Fx{
}), }),
shellEjectSmall = new Effect(30f, e -> { casing1 = new Effect(30f, e -> {
color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin()); color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin());
alpha(e.fout(0.3f));
float rot = Math.abs(e.rotation) + 90f; float rot = Math.abs(e.rotation) + 90f;
int i = -Mathf.sign(e.rotation);
int i = Mathf.sign(e.rotation);
float len = (2f + e.finpow() * 6f) * i; float len = (2f + e.finpow() * 6f) * i;
float lr = rot + e.fin() * 30f * i; float lr = rot + e.fin() * 30f * i;
Fill.rect(e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()), Fill.rect(
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()), e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
1f, 2f, rot + e.fin() * 50f * i); e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
1f, 2f, rot + e.fin() * 50f * i
);
}).ground(400f), }).layer(Layer.bullet),
shellEjectMedium = new Effect(34f, e -> { casing2 = new Effect(34f, e -> {
color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin()); color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin());
float rot = e.rotation + 90f; alpha(e.fout(0.5f));
float rot = Math.abs(e.rotation) + 90f;
int i = -Mathf.sign(e.rotation);
float len = (2f + e.finpow() * 10f) * i;
float lr = rot + e.fin() * 20f * i;
rect(Core.atlas.find("casing"),
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
2f, 3f, rot + e.fin() * 50f * i
);
}).layer(Layer.bullet),
casing3 = new Effect(40f, e -> {
color(Pal.lightOrange, Pal.lightishGray, Pal.lightishGray, e.fin());
alpha(e.fout(0.5f));
float rot = Math.abs(e.rotation) + 90f;
int i = -Mathf.sign(e.rotation);
float len = (4f + e.finpow() * 9f) * i;
float lr = rot + Mathf.randomSeedRange(e.id + i + 6, 20f * e.fin()) * i;
rect(Core.atlas.find("casing"),
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
2.5f, 4f,
rot + e.fin() * 50f * i
);
}).layer(Layer.bullet),
casing4 = new Effect(45f, e -> {
color(Pal.lightOrange, Pal.lightishGray, Pal.lightishGray, e.fin());
alpha(e.fout(0.5f));
float rot = Math.abs(e.rotation) + 90f;
int i = -Mathf.sign(e.rotation);
float len = (4f + e.finpow() * 9f) * i;
float lr = rot + Mathf.randomSeedRange(e.id + i + 6, 20f * e.fin()) * i;
rect(Core.atlas.find("casing"),
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
3f, 6f,
rot + e.fin() * 50f * i
);
}).layer(Layer.bullet),
casing2Double = new Effect(34f, e -> {
color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin());
alpha(e.fout(0.5f));
float rot = Math.abs(e.rotation) + 90f;
for(int i : Mathf.signs){ for(int i : Mathf.signs){
float len = (2f + e.finpow() * 10f) * i; float len = (2f + e.finpow() * 10f) * i;
float lr = rot + e.fin() * 20f * i; float lr = rot + e.fin() * 20f * i;
rect(Core.atlas.find("casing"), rect(Core.atlas.find("casing"),
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()), e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()), e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
2f, 3f, rot); 2f, 3f, rot + e.fin() * 50f * i
);
} }
color(Color.lightGray, Color.gray, e.fin()); }).layer(Layer.bullet),
casing3Double = new Effect(40f, e -> {
color(Pal.lightOrange, Pal.lightishGray, Pal.lightishGray, e.fin());
alpha(e.fout(0.5f));
float rot = Math.abs(e.rotation) + 90f;
for(int i : Mathf.signs){ for(int i : Mathf.signs){
float ex = e.x, ey = e.y, fout = e.fout(); float len = (4f + e.finpow() * 9f) * i;
randLenVectors(e.id, 4, 1f + e.finpow() * 11f, e.rotation + 90f * i, 20f, (x, y) -> {
Fill.circle(ex + x, ey + y, fout * 1.5f);
});
}
}).ground(400f),
shellEjectBig = new Effect(22f, e -> {
color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin());
float rot = e.rotation + 90f;
for(int i : Mathf.signs){
float len = (4f + e.finpow() * 8f) * i;
float lr = rot + Mathf.randomSeedRange(e.id + i + 6, 20f * e.fin()) * i; float lr = rot + Mathf.randomSeedRange(e.id + i + 6, 20f * e.fin()) * i;
rect(Core.atlas.find("casing"), rect(Core.atlas.find("casing"),
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()), e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()), e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
2.5f, 4f, 2.5f, 4f,
rot + e.fin() * 30f * i + Mathf.randomSeedRange(e.id + i + 9, 40f * e.fin())); rot + e.fin() * 50f * i
);
} }
color(Color.lightGray); }).layer(Layer.bullet),
for(int i : Mathf.signs){
float ex = e.x, ey = e.y, fout = e.fout();
randLenVectors(e.id, 4, -e.finpow() * 15f, e.rotation + 90f * i, 25f, (x, y) -> {
Fill.circle(ex + x, ey + y, fout * 2f);
});
}
}).ground(400f),
railShoot = new Effect(24f, e -> { railShoot = new Effect(24f, e -> {
e.scaled(10f, b -> { e.scaled(10f, b -> {
@@ -1217,7 +1253,15 @@ public class Fx{
randLenVectors(e.id, 7, 25f * e.finpow(), e.rotation, 50f, (x, y) -> { randLenVectors(e.id, 7, 25f * e.finpow(), e.rotation, 50f, (x, y) -> {
lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), e.fin() * 5f + 2f); lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), e.fin() * 5f + 2f);
}); });
}),
thoriumShoot = new Effect(12f, e -> {
color(Color.white, Pal.thoriumPink, e.fin());
stroke(e.fout() * 1.2f + 0.5f);
randLenVectors(e.id, 7, 25f * e.finpow(), e.rotation, 50f, (x, y) -> {
lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), e.fin() * 5f + 2f);
});
}), }),
reactorsmoke = new Effect(17, e -> { reactorsmoke = new Effect(17, e -> {
@@ -1492,7 +1536,7 @@ public class Fx{
color(Tmp.c1.set(e.color).mul(1.5f)); color(Tmp.c1.set(e.color).mul(1.5f));
stroke(e.fout() * 1.4f); stroke(e.fout() * 1.4f);
Lines.circle(e.x, e.y, (2f + e.fin() * 4f) * e.rotation); Lines.circle(e.x, e.y, (2f + e.fin() * 4f) * e.rotation);
}).ground(), }).layer(Layer.debris),
bubble = new Effect(20, e -> { bubble = new Effect(20, e -> {
color(Tmp.c1.set(e.color).shiftValue(0.1f)); color(Tmp.c1.set(e.color).shiftValue(0.1f));

View File

@@ -17,6 +17,7 @@ public class SectorPresets implements ContentList{
groundZero = new SectorPreset("groundZero", serpulo, 15){{ groundZero = new SectorPreset("groundZero", serpulo, 15){{
alwaysUnlocked = true; alwaysUnlocked = true;
addStartingItems = true;
captureWave = 10; captureWave = 10;
difficulty = 1; difficulty = 1;
}}; }};

View File

@@ -6,6 +6,8 @@ import arc.math.*;
import mindustry.ctype.*; import mindustry.ctype.*;
import mindustry.game.EventType.*; import mindustry.game.EventType.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.graphics.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
@@ -18,6 +20,7 @@ public class StatusEffects implements ContentList{
none = new StatusEffect("none"); none = new StatusEffect("none");
burning = new StatusEffect("burning"){{ burning = new StatusEffect("burning"){{
color = Pal.lightFlame;
damage = 0.12f; //over 8 seconds, this would be 60 damage damage = 0.12f; //over 8 seconds, this would be 60 damage
effect = Fx.burning; effect = Fx.burning;
@@ -32,6 +35,7 @@ public class StatusEffects implements ContentList{
}}; }};
freezing = new StatusEffect("freezing"){{ freezing = new StatusEffect("freezing"){{
color = Color.valueOf("6ecdec");
speedMultiplier = 0.6f; speedMultiplier = 0.6f;
healthMultiplier = 0.8f; healthMultiplier = 0.8f;
effect = Fx.freezing; effect = Fx.freezing;
@@ -47,10 +51,12 @@ public class StatusEffects implements ContentList{
}}; }};
unmoving = new StatusEffect("unmoving"){{ unmoving = new StatusEffect("unmoving"){{
color = Pal.gray;
speedMultiplier = 0.001f; speedMultiplier = 0.001f;
}}; }};
slow = new StatusEffect("slow"){{ slow = new StatusEffect("slow"){{
color = Pal.lightishGray;
speedMultiplier = 0.4f; speedMultiplier = 0.4f;
}}; }};
@@ -80,6 +86,7 @@ public class StatusEffects implements ContentList{
}}; }};
melting = new StatusEffect("melting"){{ melting = new StatusEffect("melting"){{
color = Color.valueOf("ffa166");
speedMultiplier = 0.8f; speedMultiplier = 0.8f;
healthMultiplier = 0.8f; healthMultiplier = 0.8f;
damage = 0.3f; damage = 0.3f;
@@ -92,6 +99,7 @@ public class StatusEffects implements ContentList{
}}; }};
sapped = new StatusEffect("sapped"){{ sapped = new StatusEffect("sapped"){{
color = Pal.sap;
speedMultiplier = 0.7f; speedMultiplier = 0.7f;
healthMultiplier = 0.8f; healthMultiplier = 0.8f;
effect = Fx.sapped; effect = Fx.sapped;
@@ -99,12 +107,14 @@ public class StatusEffects implements ContentList{
}}; }};
sporeSlowed = new StatusEffect("spore-slowed"){{ sporeSlowed = new StatusEffect("spore-slowed"){{
color = Pal.spore;
speedMultiplier = 0.8f; speedMultiplier = 0.8f;
effect = Fx.sapped; effect = Fx.sapped;
effectChance = 0.04f; effectChance = 0.04f;
}}; }};
tarred = new StatusEffect("tarred"){{ tarred = new StatusEffect("tarred"){{
color = Color.valueOf("313131");
speedMultiplier = 0.6f; speedMultiplier = 0.6f;
effect = Fx.oily; effect = Fx.oily;
@@ -115,6 +125,7 @@ public class StatusEffects implements ContentList{
}}; }};
overdrive = new StatusEffect("overdrive"){{ overdrive = new StatusEffect("overdrive"){{
color = Pal.accent;
healthMultiplier = 0.95f; healthMultiplier = 0.95f;
speedMultiplier = 1.15f; speedMultiplier = 1.15f;
damageMultiplier = 1.4f; damageMultiplier = 1.4f;
@@ -124,6 +135,7 @@ public class StatusEffects implements ContentList{
}}; }};
overclock = new StatusEffect("overclock"){{ overclock = new StatusEffect("overclock"){{
color = Pal.accent;
speedMultiplier = 1.15f; speedMultiplier = 1.15f;
damageMultiplier = 1.15f; damageMultiplier = 1.15f;
reloadMultiplier = 1.25f; reloadMultiplier = 1.25f;
@@ -132,20 +144,27 @@ public class StatusEffects implements ContentList{
}}; }};
shielded = new StatusEffect("shielded"){{ shielded = new StatusEffect("shielded"){{
color = Pal.accent;
healthMultiplier = 3f; healthMultiplier = 3f;
}}; }};
boss = new StatusEffect("boss"){{ boss = new StatusEffect("boss"){{
color = Pal.health;
permanent = true; permanent = true;
damageMultiplier = 2f; damageMultiplier = 1.5f;
healthMultiplier = 2f; healthMultiplier = 1.5f;
}}; }};
shocked = new StatusEffect("shocked"); shocked = new StatusEffect("shocked"){{
color = Pal.lancerLaser;
}};
blasted = new StatusEffect("blasted"); blasted = new StatusEffect("blasted"){{
color = Color.valueOf("ff795e");
}};
corroded = new StatusEffect("corroded"){{ corroded = new StatusEffect("corroded"){{
color = Pal.plastanium;
damage = 0.1f; damage = 0.1f;
}}; }};
} }

View File

@@ -112,15 +112,15 @@ public class TechTree implements ContentList{
node(Items.graphite, with(Items.coal, 1000), () -> { node(Items.graphite, with(Items.coal, 1000), () -> {
node(graphitePress, () -> { node(graphitePress, () -> {
node(Items.titanium, with(Items.graphite, 6000, Items.copper, 10000, Items.lead, 10000), () -> { node(Items.titanium, with(Items.graphite, 3000, Items.copper, 7000, Items.lead, 7000), () -> {
node(pneumaticDrill, () -> { node(pneumaticDrill, () -> {
node(Items.sporePod, with(Items.coal, 5000, Items.graphite, 5000, Items.lead, 5000), () -> { node(Items.sporePod, with(Items.coal, 4000, Items.graphite, 4000, Items.lead, 4000), () -> {
node(cultivator, () -> { node(cultivator, () -> {
}); });
}); });
node(Items.thorium, with(Items.titanium, 10000, Items.lead, 15000, Items.copper, 30000), () -> { node(Items.thorium, with(Items.titanium, 8000, Items.lead, 12000, Items.copper, 20000), () -> {
node(laserDrill, () -> { node(laserDrill, () -> {
node(blastDrill, () -> { node(blastDrill, () -> {
@@ -136,7 +136,7 @@ public class TechTree implements ContentList{
}); });
}); });
node(Items.pyratite, with(Items.coal, 6000, Items.lead, 10000, Items.sand, 5000), () -> { node(Items.pyratite, with(Items.coal, 6000, Items.lead, 8000, Items.sand, 4000), () -> {
node(pyratiteMixer, () -> { node(pyratiteMixer, () -> {
node(Items.blastCompound, with(Items.pyratite, 3000, Items.sporePod, 3000), () -> { node(Items.blastCompound, with(Items.pyratite, 3000, Items.sporePod, 3000), () -> {
node(blastMixer, () -> { node(blastMixer, () -> {
@@ -146,10 +146,10 @@ public class TechTree implements ContentList{
}); });
}); });
node(Items.silicon, with(Items.coal, 4000, Items.sand, 4000), () -> { node(Items.silicon, with(Items.coal, 3000, Items.sand, 4000), () -> {
node(siliconSmelter, () -> { node(siliconSmelter, () -> {
node(Liquids.oil, with(Items.coal, 8000, Items.pyratite, 6000, Items.sand, 20000), () -> { node(Liquids.oil, with(Items.coal, 8000, Items.pyratite, 6000, Items.sand, 8000), () -> {
node(sporePress, () -> { node(sporePress, () -> {
node(coalCentrifuge, () -> { node(coalCentrifuge, () -> {
node(multiPress, () -> { node(multiPress, () -> {
@@ -159,9 +159,9 @@ public class TechTree implements ContentList{
}); });
}); });
node(Items.plastanium, with(Items.titanium, 10000, Items.silicon, 10000), () -> { node(Items.plastanium, with(Items.titanium, 8000, Items.silicon, 8000), () -> {
node(plastaniumCompressor, () -> { node(plastaniumCompressor, () -> {
node(Items.phaseFabric, with(Items.thorium, 15000, Items.sand, 30000, Items.silicon, 5000), () -> { node(Items.phaseFabric, with(Items.thorium, 12000, Items.sand, 8000, Items.silicon, 5000), () -> {
node(phaseWeaver, () -> { node(phaseWeaver, () -> {
}); });
@@ -171,13 +171,13 @@ public class TechTree implements ContentList{
}); });
}); });
node(Items.metaglass, with(Items.sand, 6000, Items.lead, 10000), () -> { node(Items.metaglass, with(Items.sand, 4000, Items.lead, 10000), () -> {
node(kiln, () -> { node(kiln, () -> {
node(incinerator, () -> { node(incinerator, () -> {
node(Items.scrap, with(Items.copper, 20000, Items.sand, 10000), () -> { node(Items.scrap, with(Items.copper, 8000, Items.sand, 4000), () -> {
node(Liquids.slag, with(Items.scrap, 4000), () -> { node(Liquids.slag, with(Items.scrap, 4000), () -> {
node(melter, () -> { node(melter, () -> {
node(Items.surgeAlloy, with(Items.thorium, 20000, Items.silicon, 30000, Items.lead, 40000), () -> { node(Items.surgeAlloy, with(Items.thorium, 20000, Items.silicon, 20000, Items.lead, 40000), () -> {
node(surgeSmelter, () -> { node(surgeSmelter, () -> {
}); });
@@ -191,7 +191,7 @@ public class TechTree implements ContentList{
}); });
}); });
node(Liquids.cryofluid, with(Items.titanium, 8000, Items.metaglass, 5000), () -> { node(Liquids.cryofluid, with(Items.titanium, 8000, Items.metaglass, 4000), () -> {
node(cryofluidMixer, () -> { node(cryofluidMixer, () -> {
}); });

View File

@@ -74,7 +74,7 @@ public class UnitTypes implements ContentList{
x = 4f; x = 4f;
y = 2f; y = 2f;
top = false; top = false;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
bullet = Bullets.standardCopper; bullet = Bullets.standardCopper;
}}); }});
}}; }};
@@ -126,7 +126,7 @@ public class UnitTypes implements ContentList{
reload = 60f; reload = 60f;
recoil = 4f; recoil = 4f;
shake = 2f; shake = 2f;
ejectEffect = Fx.shellEjectMedium; ejectEffect = Fx.casing2;
shootSound = Sounds.artillery; shootSound = Sounds.artillery;
bullet = new ArtilleryBulletType(2f, 8, "shell"){{ bullet = new ArtilleryBulletType(2f, 8, "shell"){{
hitEffect = Fx.blastExplosion; hitEffect = Fx.blastExplosion;
@@ -165,7 +165,7 @@ public class UnitTypes implements ContentList{
reload = 45f; reload = 45f;
recoil = 5f; recoil = 5f;
shake = 2f; shake = 2f;
ejectEffect = Fx.shellEjectBig; ejectEffect = Fx.casing3;
shootSound = Sounds.artillery; shootSound = Sounds.artillery;
shots = 3; shots = 3;
inaccuracy = 3f; inaccuracy = 3f;
@@ -189,7 +189,7 @@ public class UnitTypes implements ContentList{
x = 8.5f; x = 8.5f;
y = 6f; y = 6f;
rotate = true; rotate = true;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
bullet = Bullets.standardCopper; bullet = Bullets.standardCopper;
}}, }},
new Weapon("mount-weapon"){{ new Weapon("mount-weapon"){{
@@ -197,7 +197,7 @@ public class UnitTypes implements ContentList{
x = 8.5f; x = 8.5f;
y = -7f; y = -7f;
rotate = true; rotate = true;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
bullet = Bullets.standardCopper; bullet = Bullets.standardCopper;
}} }}
@@ -225,7 +225,7 @@ public class UnitTypes implements ContentList{
reload = 9f; reload = 9f;
recoil = 5f; recoil = 5f;
shake = 2f; shake = 2f;
ejectEffect = Fx.shellEjectBig; ejectEffect = Fx.casing4;
shootSound = Sounds.artillery; shootSound = Sounds.artillery;
bullet = new BasicBulletType(13f, 60){{ bullet = new BasicBulletType(13f, 60){{
@@ -331,6 +331,17 @@ public class UnitTypes implements ContentList{
lightningLength = 7; lightningLength = 7;
lightningLengthRand = 7; lightningLengthRand = 7;
shootEffect = Fx.shootHeal; shootEffect = Fx.shootHeal;
lightningType = new BulletType(0.0001f, 0f){{
lifetime = Fx.lightning.lifetime;
hitEffect = Fx.hitLancer;
despawnEffect = Fx.none;
status = StatusEffects.shocked;
statusDuration = 10f;
hittable = false;
healPercent = 2f;
collidesTeam = true;
}};
}}; }};
}}); }});
}}; }};
@@ -372,6 +383,8 @@ public class UnitTypes implements ContentList{
sideAngle = 45f; sideAngle = 45f;
sideWidth = 1f; sideWidth = 1f;
sideLength = 70f; sideLength = 70f;
healPercent = 10f;
collidesTeam = true;
colors = new Color[]{Pal.heal.cpy().a(0.4f), Pal.heal, Color.white}; colors = new Color[]{Pal.heal.cpy().a(0.4f), Pal.heal, Color.white};
}}; }};
}}); }});
@@ -416,8 +429,8 @@ public class UnitTypes implements ContentList{
continuous = true; continuous = true;
cooldownTime = 200f; cooldownTime = 200f;
bullet = new ContinuousLaserBulletType(20){{ bullet = new ContinuousLaserBulletType(22){{
length = 150f; length = 160f;
hitEffect = Fx.hitMeltHeal; hitEffect = Fx.hitMeltHeal;
drawSize = 420f; drawSize = 420f;
lifetime = 160f; lifetime = 160f;
@@ -431,6 +444,10 @@ public class UnitTypes implements ContentList{
incendSpread = 5f; incendSpread = 5f;
incendAmount = 1; incendAmount = 1;
//constant healing
healPercent = 1f;
collidesTeam = true;
colors = new Color[]{Pal.heal.cpy().a(.2f), Pal.heal.cpy().a(.5f), Pal.heal.cpy().mul(1.2f), Color.white}; colors = new Color[]{Pal.heal.cpy().a(.2f), Pal.heal.cpy().a(.5f), Pal.heal.cpy().mul(1.2f), Color.white};
}}; }};
@@ -501,6 +518,9 @@ public class UnitTypes implements ContentList{
shootEffect = Fx.greenLaserCharge; shootEffect = Fx.greenLaserCharge;
healPercent = 25f;
collidesTeam = true;
sideAngle = 15f; sideAngle = 15f;
sideWidth = 0f; sideWidth = 0f;
sideLength = 0f; sideLength = 0f;
@@ -717,7 +737,7 @@ public class UnitTypes implements ContentList{
reload = 45; reload = 45;
shake = 3f; shake = 3f;
rotateSpeed = 2f; rotateSpeed = 2f;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
shootSound = Sounds.shootBig; shootSound = Sounds.shootBig;
rotate = true; rotate = true;
occlusion = 8f; occlusion = 8f;
@@ -783,7 +803,7 @@ public class UnitTypes implements ContentList{
reload = 30; reload = 30;
shake = 4f; shake = 4f;
rotateSpeed = 2f; rotateSpeed = 2f;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
shootSound = Sounds.shootBig; shootSound = Sounds.shootBig;
rotate = true; rotate = true;
occlusion = 12f; occlusion = 12f;
@@ -815,7 +835,7 @@ public class UnitTypes implements ContentList{
shake = 10f; shake = 10f;
recoil = 10f; recoil = 10f;
rotateSpeed = 1f; rotateSpeed = 1f;
ejectEffect = Fx.shellEjectBig; ejectEffect = Fx.casing3;
shootSound = Sounds.shootBig; shootSound = Sounds.shootBig;
rotate = true; rotate = true;
occlusion = 30f; occlusion = 30f;
@@ -875,12 +895,13 @@ public class UnitTypes implements ContentList{
health = 75; health = 75;
engineOffset = 5.5f; engineOffset = 5.5f;
range = 140f; range = 140f;
targetAir = false;
weapons.add(new Weapon(){{ weapons.add(new Weapon(){{
y = 0f; y = 0f;
x = 2f; x = 2f;
reload = 13f; reload = 13f;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
bullet = Bullets.standardCopper; bullet = Bullets.standardCopper;
shootSound = Sounds.shoot; shootSound = Sounds.shoot;
}}); }});
@@ -888,7 +909,7 @@ public class UnitTypes implements ContentList{
horizon = new UnitType("horizon"){{ horizon = new UnitType("horizon"){{
health = 350; health = 350;
speed = 2f; speed = 1.8f;
accel = 0.08f; accel = 0.08f;
drag = 0.016f; drag = 0.016f;
flying = true; flying = true;
@@ -910,7 +931,7 @@ public class UnitTypes implements ContentList{
inaccuracy = 15f; inaccuracy = 15f;
ignoreRotation = true; ignoreRotation = true;
shootSound = Sounds.none; shootSound = Sounds.none;
bullet = new BombBulletType(28f, 25f){{ bullet = new BombBulletType(27f, 25f){{
width = 10f; width = 10f;
height = 14f; height = 14f;
hitEffect = Fx.flakExplosion; hitEffect = Fx.flakExplosion;
@@ -1002,7 +1023,7 @@ public class UnitTypes implements ContentList{
y = 8f; y = 8f;
x = 17f; x = 17f;
reload = 20f; reload = 20f;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
rotateSpeed = 8f; rotateSpeed = 8f;
bullet = missiles; bullet = missiles;
shootSound = Sounds.shoot; shootSound = Sounds.shoot;
@@ -1014,7 +1035,7 @@ public class UnitTypes implements ContentList{
x = 17f; x = 17f;
reload = 35; reload = 35;
rotateSpeed = 8f; rotateSpeed = 8f;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
bullet = missiles; bullet = missiles;
shootSound = Sounds.shoot; shootSound = Sounds.shoot;
rotate = true; rotate = true;
@@ -1027,7 +1048,7 @@ public class UnitTypes implements ContentList{
reload = 12; reload = 12;
shake = 1f; shake = 1f;
rotateSpeed = 2f; rotateSpeed = 2f;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
shootSound = Sounds.shootBig; shootSound = Sounds.shootBig;
rotate = true; rotate = true;
occlusion = 8f; occlusion = 8f;
@@ -1108,7 +1129,7 @@ public class UnitTypes implements ContentList{
y = -13f; y = -13f;
x = 20f; x = 20f;
reload = 12f; reload = 12f;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
rotateSpeed = 7f; rotateSpeed = 7f;
shake = 1f; shake = 1f;
shootSound = Sounds.shoot; shootSound = Sounds.shoot;
@@ -1127,7 +1148,7 @@ public class UnitTypes implements ContentList{
flying = true; flying = true;
drag = 0.06f; drag = 0.06f;
accel = 0.12f; accel = 0.12f;
speed = 1.1f; speed = 1.5f;
health = 100; health = 100;
engineSize = 1.8f; engineSize = 1.8f;
engineOffset = 5.7f; engineOffset = 5.7f;
@@ -1200,7 +1221,7 @@ public class UnitTypes implements ContentList{
mineTier = 3; mineTier = 3;
health = 500; health = 500;
armor = 5f; armor = 5f;
speed = 2.3f; speed = 2.4f;
accel = 0.06f; accel = 0.06f;
drag = 0.017f; drag = 0.017f;
lowAltitude = true; lowAltitude = true;
@@ -1290,7 +1311,7 @@ public class UnitTypes implements ContentList{
collides = false; collides = false;
healPercent = 15f; healPercent = 15f;
splashDamage = 320f; splashDamage = 240f;
splashDamageRadius = 120f; splashDamageRadius = 120f;
}}; }};
}}); }});
@@ -1341,7 +1362,7 @@ public class UnitTypes implements ContentList{
shootY = 4f; shootY = 4f;
y = 1.5f; y = 1.5f;
rotate = true; rotate = true;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
bullet = Bullets.standardCopper; bullet = Bullets.standardCopper;
}}); }});
@@ -1351,7 +1372,7 @@ public class UnitTypes implements ContentList{
x = 0f; x = 0f;
y = -5f; y = -5f;
rotate = true; rotate = true;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
bullet = new MissileBulletType(2.7f, 12, "missile"){{ bullet = new MissileBulletType(2.7f, 12, "missile"){{
width = 8f; width = 8f;
height = 8f; height = 8f;
@@ -1397,7 +1418,7 @@ public class UnitTypes implements ContentList{
rotate = true; rotate = true;
rotateSpeed = 5f; rotateSpeed = 5f;
inaccuracy = 10f; inaccuracy = 10f;
ejectEffect = Fx.shellEjectSmall; ejectEffect = Fx.casing1;
bullet = Bullets.flakLead; bullet = Bullets.flakLead;
}}); }});
@@ -1409,7 +1430,7 @@ public class UnitTypes implements ContentList{
inaccuracy = 2f; inaccuracy = 2f;
rotateSpeed = 2f; rotateSpeed = 2f;
shake = 1.5f; shake = 1.5f;
ejectEffect = Fx.shellEjectMedium; ejectEffect = Fx.casing2;
bullet = Bullets.artilleryIncendiary; bullet = Bullets.artilleryIncendiary;
}}); }});
}}; }};
@@ -1445,7 +1466,7 @@ public class UnitTypes implements ContentList{
shots = 1; shots = 1;
inaccuracy = 3f; inaccuracy = 3f;
ejectEffect = Fx.shellEjectBig; ejectEffect = Fx.casing3;
bullet = new ArtilleryBulletType(3.2f, 12){{ bullet = new ArtilleryBulletType(3.2f, 12){{
trailMult = 0.8f; trailMult = 0.8f;
@@ -1546,7 +1567,7 @@ public class UnitTypes implements ContentList{
xRand = 8f; xRand = 8f;
shotDelay = 1f; shotDelay = 1f;
bullet = new MissileBulletType(4.2f, 30){{ bullet = new MissileBulletType(4.2f, 40){{
homingPower = 0.12f; homingPower = 0.12f;
width = 8f; width = 8f;
height = 8f; height = 8f;
@@ -1554,8 +1575,8 @@ public class UnitTypes implements ContentList{
drag = -0.003f; drag = -0.003f;
homingRange = 80f; homingRange = 80f;
keepVelocity = false; keepVelocity = false;
splashDamageRadius = 30f; splashDamageRadius = 35f;
splashDamage = 35f; splashDamage = 45f;
lifetime = 56f; lifetime = 56f;
trailColor = Pal.bulletYellowBack; trailColor = Pal.bulletYellowBack;
backColor = Pal.bulletYellowBack; backColor = Pal.bulletYellowBack;
@@ -1568,7 +1589,7 @@ public class UnitTypes implements ContentList{
}}); }});
weapons.add(new Weapon("large-bullet-mount"){{ weapons.add(new Weapon("large-bullet-mount"){{
reload = 80f; reload = 60f;
cooldownTime = 90f; cooldownTime = 90f;
x = 70f/4f; x = 70f/4f;
y = -66f/4f; y = -66f/4f;
@@ -1578,12 +1599,12 @@ public class UnitTypes implements ContentList{
shake = 2f; shake = 2f;
recoil = 3f; recoil = 3f;
occlusion = 12f; occlusion = 12f;
ejectEffect = Fx.shellEjectBig; ejectEffect = Fx.casing3;
shots = 3; shots = 3;
shotDelay = 4f; shotDelay = 4f;
inaccuracy = 1f; inaccuracy = 1f;
bullet = new BasicBulletType(7f, 50){{ bullet = new BasicBulletType(7f, 55){{
width = 13f; width = 13f;
height = 19f; height = 19f;
shootEffect = Fx.shootBig; shootEffect = Fx.shootBig;
@@ -1649,7 +1670,7 @@ public class UnitTypes implements ContentList{
isCounted = false; isCounted = false;
flying = true; flying = true;
mineSpeed = 6f; mineSpeed = 6.5f;
mineTier = 1; mineTier = 1;
buildSpeed = 0.5f; buildSpeed = 0.5f;
drag = 0.05f; drag = 0.05f;
@@ -1735,7 +1756,7 @@ public class UnitTypes implements ContentList{
itemCapacity = 70; itemCapacity = 70;
health = 220f; health = 220f;
engineOffset = 6f; engineOffset = 6f;
hitSize = 10f; hitSize = 11f;
commandLimit = 7; commandLimit = 7;
weapons.add(new Weapon("small-mount-weapon"){{ weapons.add(new Weapon("small-mount-weapon"){{
@@ -1770,6 +1791,7 @@ public class UnitTypes implements ContentList{
health = 1; health = 1;
rotateSpeed = 360f; rotateSpeed = 360f;
itemCapacity = 0; itemCapacity = 0;
commandLimit = 0;
} }
@Override @Override

View File

@@ -18,6 +18,7 @@ public class Weathers implements ContentList{
@Override @Override
public void load(){ public void load(){
snow = new ParticleWeather("snow"){{ snow = new ParticleWeather("snow"){{
particleRegion = "particle";
sizeMax = 13f; sizeMax = 13f;
sizeMin = 2.6f; sizeMin = 2.6f;
density = 1200f; density = 1200f;
@@ -32,6 +33,7 @@ public class Weathers implements ContentList{
sandstorm = new ParticleWeather("sandstorm"){{ sandstorm = new ParticleWeather("sandstorm"){{
color = noiseColor = Color.valueOf("f7cba4"); color = noiseColor = Color.valueOf("f7cba4");
particleRegion = "particle";
drawNoise = true; drawNoise = true;
useWindVector = true; useWindVector = true;
sizeMax = 140f; sizeMax = 140f;
@@ -39,7 +41,7 @@ public class Weathers implements ContentList{
minAlpha = 0f; minAlpha = 0f;
maxAlpha = 0.2f; maxAlpha = 0.2f;
density = 1500f; density = 1500f;
baseSpeed = 6.1f; baseSpeed = 5.4f;
attrs.set(Attribute.light, -0.1f); attrs.set(Attribute.light, -0.1f);
attrs.set(Attribute.water, -0.1f); attrs.set(Attribute.water, -0.1f);
opacityMultiplier = 0.8f; opacityMultiplier = 0.8f;
@@ -48,7 +50,7 @@ public class Weathers implements ContentList{
sporestorm = new ParticleWeather("sporestorm"){{ sporestorm = new ParticleWeather("sporestorm"){{
color = noiseColor = Color.valueOf("7457ce"); color = noiseColor = Color.valueOf("7457ce");
particleRegion = "circle"; particleRegion = "circle-small";
drawNoise = true; drawNoise = true;
statusGround = false; statusGround = false;
useWindVector = true; useWindVector = true;

View File

@@ -181,6 +181,12 @@ public class Control implements ApplicationListener, Loadable{
Time.run(Fx.coreLand.lifetime, () -> { Time.run(Fx.coreLand.lifetime, () -> {
Fx.launch.at(core); Fx.launch.at(core);
Effect.shake(5f, 5f, core); Effect.shake(5f, 5f, core);
if(state.isCampaign()){
ui.announce("[accent]" + state.rules.sector.name() + "\n" +
(state.rules.sector.info.resources.any() ? "[lightgray]" + bundle.get("sectors.resources") + "[white] " +
state.rules.sector.info.resources.toString(" ", u -> u.emoji()) : ""), 5);
}
}); });
}); });
@@ -264,7 +270,6 @@ public class Control implements ApplicationListener, Loadable{
slot.load(); slot.load();
slot.setAutosave(true); slot.setAutosave(true);
state.rules.sector = sector; state.rules.sector = sector;
state.secinfo = state.rules.sector.info;
//if there is no base, simulate a new game and place the right loadout at the spawn position //if there is no base, simulate a new game and place the right loadout at the spawn position
if(state.rules.defaultTeam.cores().isEmpty()){ if(state.rules.defaultTeam.cores().isEmpty()){
@@ -282,8 +287,12 @@ public class Control implements ApplicationListener, Loadable{
//reset wave so things are more fair //reset wave so things are more fair
state.wave = 1; state.wave = 1;
//reset win wave??
state.rules.winWave = sector.preset != null ? sector.preset.captureWave : 40;
//kill all units, since they should be dead anwyay //kill all units, since they should be dead anwyay
Groups.unit.clear(); Groups.unit.clear();
Groups.fire.clear();
Tile spawn = world.tile(sector.info.spawnPosition); Tile spawn = world.tile(sector.info.spawnPosition);
Schematics.placeLaunchLoadout(spawn.x, spawn.y); Schematics.placeLaunchLoadout(spawn.x, spawn.y);
@@ -311,8 +320,8 @@ public class Control implements ApplicationListener, Loadable{
world.loadSector(sector); world.loadSector(sector);
state.rules.sector = sector; state.rules.sector = sector;
//assign origin when launching //assign origin when launching
state.secinfo.origin = origin; sector.info.origin = origin;
state.secinfo.destination = origin; sector.info.destination = origin;
logic.play(); logic.play();
control.saves.saveSector(sector); control.saves.saveSector(sector);
Events.fire(Trigger.newGame); Events.fire(Trigger.newGame);
@@ -403,13 +412,15 @@ public class Control implements ApplicationListener, Loadable{
@Override @Override
public void pause(){ public void pause(){
wasPaused = state.is(State.paused); if(settings.getBool("backgroundpause", true)){
if(state.is(State.playing)) state.set(State.paused); wasPaused = state.is(State.paused);
if(state.is(State.playing)) state.set(State.paused);
}
} }
@Override @Override
public void resume(){ public void resume(){
if(state.is(State.paused) && !wasPaused){ if(state.is(State.paused) && !wasPaused && settings.getBool("backgroundpause", true)){
state.set(State.playing); state.set(State.playing);
} }
} }

View File

@@ -26,8 +26,6 @@ public class GameState{
public GameStats stats = new GameStats(); public GameStats stats = new GameStats();
/** Global attributes of the environment, calculated by weather. */ /** Global attributes of the environment, calculated by weather. */
public Attributes envAttrs = new Attributes(); public Attributes envAttrs = new Attributes();
/** Sector information. Only valid in the campaign. */
public SectorInfo secinfo = new SectorInfo();
/** Team data. Gets reset every new game. */ /** Team data. Gets reset every new game. */
public Teams teams = new Teams(); public Teams teams = new Teams();
/** Number of enemies in the game; only used clientside in servers. */ /** Number of enemies in the game; only used clientside in servers. */

View File

@@ -55,15 +55,14 @@ public class Logic implements ApplicationListener{
} }
}); });
Events.on(LaunchItemEvent.class, e -> state.secinfo.handleItemExport(e.stack));
//when loading a 'damaged' sector, propagate the damage //when loading a 'damaged' sector, propagate the damage
Events.on(SaveLoadEvent.class, e -> { Events.on(SaveLoadEvent.class, e -> {
if(state.isCampaign()){ if(state.isCampaign()){
state.secinfo.write(); SectorInfo info = state.rules.sector.info;
info.write();
//how much wave time has passed //how much wave time has passed
int wavesPassed = state.secinfo.wavesPassed; int wavesPassed = info.wavesPassed;
//wave has passed, remove all enemies, they are assumed to be dead //wave has passed, remove all enemies, they are assumed to be dead
if(wavesPassed > 0){ if(wavesPassed > 0){
@@ -84,10 +83,10 @@ public class Logic implements ApplicationListener{
} }
//reset values //reset values
state.secinfo.damage = 0f; info.damage = 0f;
state.secinfo.wavesPassed = 0; info.wavesPassed = 0;
state.secinfo.hasCore = true; info.hasCore = true;
state.secinfo.secondsPassed = 0; info.secondsPassed = 0;
state.rules.sector.saveInfo(); state.rules.sector.saveInfo();
} }
@@ -181,18 +180,8 @@ public class Logic implements ApplicationListener{
//if there's a "win" wave and no enemies are present, win automatically //if there's a "win" wave and no enemies are present, win automatically
if(state.rules.waves && (state.enemies == 0 && state.rules.winWave > 0 && state.wave >= state.rules.winWave && !spawner.isSpawning()) || if(state.rules.waves && (state.enemies == 0 && state.rules.winWave > 0 && state.wave >= state.rules.winWave && !spawner.isSpawning()) ||
(state.rules.attackMode && state.rules.waveTeam.cores().isEmpty())){ (state.rules.attackMode && state.rules.waveTeam.cores().isEmpty())){
//the sector has been conquered - waves get disabled
state.rules.waves = false;
//disable attack mode
state.rules.attackMode = false;
//fire capture event Call.sectorCapture();
Events.fire(new SectorCaptureEvent(state.rules.sector));
//save, just in case
if(!headless){
control.saves.saveSector(state.rules.sector);
}
} }
}else{ }else{
if(!state.rules.attackMode && state.teams.playerCores().size == 0 && !state.gameOver){ if(!state.rules.attackMode && state.teams.playerCores().size == 0 && !state.gameOver){
@@ -228,6 +217,24 @@ public class Logic implements ApplicationListener{
} }
} }
@Remote(called = Loc.server)
public static void sectorCapture(){
//the sector has been conquered - waves get disabled
state.rules.waves = false;
//disable attack mode
state.rules.attackMode = false;
if(state.rules.sector == null) return;
//fire capture event
Events.fire(new SectorCaptureEvent(state.rules.sector));
//save, just in case
if(!headless){
control.saves.saveSector(state.rules.sector);
}
}
@Remote(called = Loc.both) @Remote(called = Loc.both)
public static void updateGameOver(Team winner){ public static void updateGameOver(Team winner){
state.gameOver = true; state.gameOver = true;
@@ -246,7 +253,7 @@ public class Logic implements ApplicationListener{
if(!(content instanceof UnlockableContent u)) return; if(!(content instanceof UnlockableContent u)) return;
state.rules.researched.add(u.name); state.rules.researched.add(u.name);
ui.hudfrag.showUnlock(u); Events.fire(new UnlockEvent(u));
} }
@Override @Override
@@ -273,7 +280,7 @@ public class Logic implements ApplicationListener{
state.teams.updateTeamStats(); state.teams.updateTeamStats();
if(state.isCampaign()){ if(state.isCampaign()){
state.secinfo.update(); state.rules.sector.info.update();
} }
if(state.isCampaign()){ if(state.isCampaign()){

View File

@@ -293,6 +293,13 @@ public class NetClient implements ApplicationListener{
setHudText(message); setHudText(message);
} }
@Remote(variants = Variant.both)
public static void announce(String message){
if(message == null) return;
ui.announce(message);
}
@Remote(variants = Variant.both) @Remote(variants = Variant.both)
public static void infoMessage(String message){ public static void infoMessage(String message){
if(message == null) return; if(message == null) return;
@@ -358,7 +365,6 @@ public class NetClient implements ApplicationListener{
@Remote(variants = Variant.one) @Remote(variants = Variant.one)
public static void setPosition(float x, float y){ public static void setPosition(float x, float y){
player.unit().set(x, y);
player.set(x, y); player.set(x, y);
} }

View File

@@ -27,10 +27,11 @@ public class Renderer implements ApplicationListener{
public final Pixelator pixelator = new Pixelator(); public final Pixelator pixelator = new Pixelator();
public PlanetRenderer planets; public PlanetRenderer planets;
public @Nullable Bloom bloom;
public FrameBuffer effectBuffer = new FrameBuffer(); public FrameBuffer effectBuffer = new FrameBuffer();
public float laserOpacity = 1f; public float laserOpacity = 1f;
private Bloom bloom; //TODO unused
private FxProcessor fx = new FxProcessor(); private FxProcessor fx = new FxProcessor();
private Color clearColor = new Color(0f, 0f, 0f, 1f); private Color clearColor = new Color(0f, 0f, 0f, 1f);
private float targetscale = Scl.scl(4); private float targetscale = Scl.scl(4);
@@ -53,7 +54,7 @@ public class Renderer implements ApplicationListener{
public void init(){ public void init(){
planets = new PlanetRenderer(); planets = new PlanetRenderer();
if(settings.getBool("bloom")){ if(settings.getBool("bloom", !ios)){
setupBloom(); setupBloom();
} }
} }
@@ -120,10 +121,6 @@ public class Renderer implements ApplicationListener{
@Override @Override
public void resize(int width, int height){ public void resize(int width, int height){
if(settings.getBool("bloom")){
setupBloom();
}
fx.resize(width, height); fx.resize(width, height);
} }
@@ -239,6 +236,7 @@ public class Renderer implements ApplicationListener{
} }
if(bloom != null){ if(bloom != null){
bloom.resize(graphics.getWidth() / 4, graphics.getHeight() / 4);
Draw.draw(Layer.bullet - 0.01f, bloom::capture); Draw.draw(Layer.bullet - 0.01f, bloom::capture);
Draw.draw(Layer.effect + 0.01f, bloom::render); Draw.draw(Layer.effect + 0.01f, bloom::render);
} }

View File

@@ -328,20 +328,21 @@ public class UI implements ApplicationListener, Loadable{
/** Shows a label in the world. This label is behind everything. Does not fade. */ /** Shows a label in the world. This label is behind everything. Does not fade. */
public void showLabel(String info, float duration, float worldx, float worldy){ public void showLabel(String info, float duration, float worldx, float worldy){
Table table = new Table(); var table = new Table(Styles.black3).margin(4);
table.setFillParent(true);
table.touchable = Touchable.disabled; table.touchable = Touchable.disabled;
table.update(() -> { table.update(() -> {
if(state.isMenu()) table.remove(); if(state.isMenu()) table.remove();
Vec2 v = Core.camera.project(worldx, worldy);
table.setPosition(v.x, v.y, Align.center);
}); });
table.actions(Actions.delay(duration), Actions.remove()); table.actions(Actions.delay(duration), Actions.remove());
table.align(Align.center).table(Styles.black3, t -> t.margin(4).add(info).style(Styles.outlineLabel)).update(t -> { table.add(info).style(Styles.outlineLabel);
Vec2 v = Core.camera.project(worldx, worldy); table.pack();
t.setPosition(v.x, v.y, Align.center);
});
table.act(0f); table.act(0f);
//make sure it's at the back //make sure it's at the back
Core.scene.root.addChildAt(0, table); Core.scene.root.addChildAt(0, table);
table.getChildren().first().act(0f);
} }
public void showInfo(String info){ public void showInfo(String info){
@@ -378,6 +379,7 @@ public class UI implements ApplicationListener, Loadable{
cont.add(text).pad(2f).growX().wrap().get().setAlignment(Align.center); cont.add(text).pad(2f).growX().wrap().get().setAlignment(Align.center);
cont.row(); cont.row();
cont.button("@ok", this::hide).size(120, 50).pad(4); cont.button("@ok", this::hide).size(120, 50).pad(4);
closeOnBack();
}}.show(); }}.show();
} }
@@ -388,7 +390,7 @@ public class UI implements ApplicationListener, Loadable{
public void showException(String text, Throwable exc){ public void showException(String text, Throwable exc){
loadfrag.hide(); loadfrag.hide();
new Dialog(""){{ new Dialog(""){{
String message = Strings.getFinalMesage(exc); String message = Strings.getFinalMessage(exc);
setFillParent(true); setFillParent(true);
cont.margin(15); cont.margin(15);
@@ -405,6 +407,7 @@ public class UI implements ApplicationListener, Loadable{
cont.button("@ok", this::hide).size(110, 50).fillX().left(); cont.button("@ok", this::hide).size(110, 50).fillX().left();
cont.row(); cont.row();
cont.add(col).colspan(2).pad(2); cont.add(col).colspan(2).pad(2);
closeOnBack();
}}.show(); }}.show();
} }
@@ -420,6 +423,7 @@ public class UI implements ApplicationListener, Loadable{
cont.add(text).width(400f).wrap().get().setAlignment(align, align); cont.add(text).width(400f).wrap().get().setAlignment(align, align);
cont.row(); cont.row();
buttons.button("@ok", this::hide).size(110, 50).pad(4); buttons.button("@ok", this::hide).size(110, 50).pad(4);
closeOnBack();
}}.show(); }}.show();
} }
@@ -427,6 +431,7 @@ public class UI implements ApplicationListener, Loadable{
new Dialog(titleText){{ new Dialog(titleText){{
cont.margin(15).add(text).width(400f).wrap().left().get().setAlignment(Align.left, Align.left); cont.margin(15).add(text).width(400f).wrap().left().get().setAlignment(Align.left, Align.left);
buttons.button("@ok", this::hide).size(110, 50).pad(4); buttons.button("@ok", this::hide).size(110, 50).pad(4);
closeOnBack();
}}.show(); }}.show();
} }
@@ -436,6 +441,7 @@ public class UI implements ApplicationListener, Loadable{
titleTable.row(); titleTable.row();
titleTable.image().color(Pal.accent).height(3f).growX().pad(2f); titleTable.image().color(Pal.accent).height(3f).growX().pad(2f);
buttons.button("@ok", this::hide).size(110, 50).pad(4); buttons.button("@ok", this::hide).size(110, 50).pad(4);
closeOnBack();
}}.show(); }}.show();
} }
@@ -487,13 +493,19 @@ public class UI implements ApplicationListener, Loadable{
dialog.show(); dialog.show();
} }
/** Display text in the middle of the screen, then fade out. */
public void announce(String text){ public void announce(String text){
Table t = new Table(); announce(text, 3);
}
/** Display text in the middle of the screen, then fade out. */
public void announce(String text, float duration){
Table t = new Table(Styles.black3);
t.touchable = Touchable.disabled; t.touchable = Touchable.disabled;
t.background(Styles.black3).margin(8f) t.margin(8f).add(text).style(Styles.outlineLabel).labelAlign(Align.center);
.add(text).style(Styles.outlineLabel).labelAlign(Align.center);
t.update(() -> t.setPosition(Core.graphics.getWidth()/2f, Core.graphics.getHeight()/2f, Align.center)); t.update(() -> t.setPosition(Core.graphics.getWidth()/2f, Core.graphics.getHeight()/2f, Align.center));
t.actions(Actions.fadeOut(3, Interp.pow4In), Actions.remove()); t.actions(Actions.fadeOut(duration, Interp.pow4In), Actions.remove());
t.pack();
Core.scene.add(t); Core.scene.add(t);
} }

View File

@@ -200,8 +200,8 @@ public class World{
for(Tile tile : tiles){ for(Tile tile : tiles){
//remove legacy blocks; they need to stop existing //remove legacy blocks; they need to stop existing
if(tile.block() instanceof LegacyBlock){ if(tile.block() instanceof LegacyBlock l){
tile.remove(); l.removeSelf(tile);
continue; continue;
} }

View File

@@ -20,10 +20,12 @@ public abstract class UnlockableContent extends MappableContent{
public Stats stats = new Stats(); public Stats stats = new Stats();
/** Localized, formal name. Never null. Set to internal name if not found in bundle. */ /** Localized, formal name. Never null. Set to internal name if not found in bundle. */
public String localizedName; public String localizedName;
/** Localized description. May be null. */ /** Localized description & details. May be null. */
public @Nullable String description; public @Nullable String description, details;
/** Whether this content is always unlocked in the tech tree. */ /** Whether this content is always unlocked in the tech tree. */
public boolean alwaysUnlocked = false; public boolean alwaysUnlocked = false;
/** Special logic icon ID. */
public int iconId = 0;
/** Icons by Cicon ID.*/ /** Icons by Cicon ID.*/
protected TextureRegion[] cicons = new TextureRegion[Cicon.all.length]; protected TextureRegion[] cicons = new TextureRegion[Cicon.all.length];
/** Unlock state. Loaded from settings. Do not modify outside of the constructor. */ /** Unlock state. Loaded from settings. Do not modify outside of the constructor. */
@@ -34,6 +36,7 @@ public abstract class UnlockableContent extends MappableContent{
this.localizedName = Core.bundle.get(getContentType() + "." + this.name + ".name", this.name); this.localizedName = Core.bundle.get(getContentType() + "." + this.name + ".name", this.name);
this.description = Core.bundle.getOrNull(getContentType() + "." + this.name + ".description"); this.description = Core.bundle.getOrNull(getContentType() + "." + this.name + ".description");
this.details = Core.bundle.getOrNull(getContentType() + "." + this.name + ".details");
this.unlocked = Core.settings != null && Core.settings.getBool(this.name + "-unlocked", false); this.unlocked = Core.settings != null && Core.settings.getBool(this.name + "-unlocked", false);
} }
@@ -49,7 +52,7 @@ public abstract class UnlockableContent extends MappableContent{
} }
} }
/** Intializes stats on demand. Should only be called once. Only called before something is displayed. */ /** Initializes stats on demand. Should only be called once. Only called before something is displayed. */
public void setStats(){ public void setStats(){
} }
@@ -123,7 +126,7 @@ public abstract class UnlockableContent extends MappableContent{
} }
public boolean unlocked(){ public boolean unlocked(){
if(net.client()) return state.rules.researched.contains(name); if(net != null && net.client()) return state.rules.researched.contains(name);
return unlocked || alwaysUnlocked; return unlocked || alwaysUnlocked;
} }

View File

@@ -13,7 +13,7 @@ public class DrawOperation{
private MapEditor editor; private MapEditor editor;
private LongSeq array = new LongSeq(); private LongSeq array = new LongSeq();
public DrawOperation(MapEditor editor) { public DrawOperation(MapEditor editor){
this.editor = editor; this.editor = editor;
} }
@@ -37,7 +37,7 @@ public class DrawOperation{
} }
} }
private void updateTile(int i) { private void updateTile(int i){
long l = array.get(i); long l = array.get(i);
array.set(i, TileOp.get(TileOp.x(l), TileOp.y(l), TileOp.type(l), getTile(editor.tile(TileOp.x(l), TileOp.y(l)), TileOp.type(l)))); array.set(i, TileOp.get(TileOp.x(l), TileOp.y(l), TileOp.type(l), getTile(editor.tile(TileOp.x(l), TileOp.y(l)), TileOp.type(l))));
setTile(editor.tile(TileOp.x(l), TileOp.y(l)), TileOp.type(l), TileOp.value(l)); setTile(editor.tile(TileOp.x(l), TileOp.y(l)), TileOp.type(l), TileOp.value(l));

View File

@@ -50,9 +50,19 @@ public class EditorTile extends Tile{
return; return;
} }
op(OpType.block, block.id); if(!isCenter()){
if(rotation != 0) op(OpType.rotation, (byte)rotation); EditorTile cen = (EditorTile)build.tile;
if(team != Team.derelict) op(OpType.team, (byte)team.id); cen.op(OpType.rotation, (byte)build.rotation);
cen.op(OpType.team, (byte)build.team.id);
cen.op(OpType.block, block.id);
update();
}else{
if(build != null) op(OpType.rotation, (byte)build.rotation);
if(build != null) op(OpType.team, (byte)build.team.id);
op(OpType.block, block.id);
}
super.setBlock(type, team, rotation); super.setBlock(type, team, rotation);
} }

View File

@@ -137,7 +137,7 @@ public class MapEditor{
if(isFloor){ if(isFloor){
tile.setFloor(drawBlock.asFloor()); tile.setFloor(drawBlock.asFloor());
}else{ }else if(!(tile.block().isMultiblock() && !drawBlock.isMultiblock())){
if(drawBlock.rotate && tile.build != null && tile.build.rotation != rotation){ if(drawBlock.rotate && tile.build != null && tile.build.rotation != rotation){
addTileOp(TileOp.get(tile.x, tile.y, (byte)OpType.rotation.ordinal(), (byte)rotation)); addTileOp(TileOp.get(tile.x, tile.y, (byte)OpType.rotation.ordinal(), (byte)rotation));
} }
@@ -157,7 +157,7 @@ public class MapEditor{
boolean hasOverlap(int x, int y){ boolean hasOverlap(int x, int y){
Tile tile = world.tile(x, y); Tile tile = world.tile(x, y);
//allow direct replacement of blocks of the same size //allow direct replacement of blocks of the same size
if(tile != null && tile.isCenter() && tile.block() != drawBlock && tile.block().size == drawBlock.size){ if(tile != null && tile.isCenter() && tile.block() != drawBlock && tile.block().size == drawBlock.size && tile.x == x && tile.y == y){
return false; return false;
} }
@@ -168,12 +168,10 @@ public class MapEditor{
for(int dy = 0; dy < drawBlock.size; dy++){ for(int dy = 0; dy < drawBlock.size; dy++){
int worldx = dx + offsetx + x; int worldx = dx + offsetx + x;
int worldy = dy + offsety + y; int worldy = dy + offsety + y;
if(!(worldx == x && worldy == y)){ Tile other = world.tile(worldx, worldy);
Tile other = world.tile(worldx, worldy);
if(other != null && other.block().isMultiblock()){ if(other != null && other.block().isMultiblock()){
return true; return true;
}
} }
} }
} }

View File

@@ -570,7 +570,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
}).growX().top(); }).growX().top();
} }
if(addCliffButton){ if(experimental){
mid.row(); mid.row();
mid.table(t -> { mid.table(t -> {

View File

@@ -54,6 +54,11 @@ public class MapGenerateDialog extends BaseDialog{
protected void changeBuild(Team team, Prov<Building> entityprov, int rotation){ protected void changeBuild(Team team, Prov<Building> entityprov, int rotation){
} }
@Override
public void setBlock(Block type, Team team, int rotation, Prov<Building> entityprov){
this.block = type;
}
}; };
/** @param applied whether or not to use the applied in-game mode. */ /** @param applied whether or not to use the applied in-game mode. */

View File

@@ -81,7 +81,7 @@ public class WaveGraph extends Table{
for(int i = 0; i < values.length; i++){ for(int i = 0; i < values.length; i++){
float sum = 0; float sum = 0;
for(UnitType type : used.orderedItems()){ for(UnitType type : used.orderedItems()){
sum += type.health * values[i][type.id]; sum += (type.health) * values[i][type.id];
} }
float cx = graphX + i*spacing, cy = 2f + graphY + sum * (graphH - 4f) / maxHealth; float cx = graphX + i*spacing, cy = 2f + graphY + sum * (graphH - 4f) / maxHealth;
@@ -160,7 +160,7 @@ public class WaveGraph extends Table{
used.add(spawn.type); used.add(spawn.type);
} }
max = Math.max(max, values[index][spawn.type.id]); max = Math.max(max, values[index][spawn.type.id]);
healthsum += spawned * spawn.type.health; healthsum += spawned * (spawn.type.health);
sum += spawned; sum += spawned;
} }
maxTotal = Math.max(maxTotal, sum); maxTotal = Math.max(maxTotal, sum);

View File

@@ -34,9 +34,7 @@ public class WaveInfoDialog extends BaseDialog{
super("@waves.title"); super("@waves.title");
shown(this::setup); shown(this::setup);
hidden(() -> { hidden(() -> state.rules.spawns = groups);
state.rules.spawns = groups;
});
addCloseListener(); addCloseListener();
@@ -66,7 +64,7 @@ public class WaveInfoDialog extends BaseDialog{
}).disabled(b -> Core.app.getClipboardText() == null || Core.app.getClipboardText().isEmpty()); }).disabled(b -> Core.app.getClipboardText() == null || Core.app.getClipboardText().isEmpty());
dialog.cont.row(); dialog.cont.row();
dialog.cont.button("@settings.reset", () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> { dialog.cont.button("@settings.reset", () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
groups = JsonIO.copy(defaultWaves.get()); groups = JsonIO.copy(waves.get());
buildGroups(); buildGroups();
dialog.hide(); dialog.hide();
})); }));
@@ -96,6 +94,14 @@ public class WaveInfoDialog extends BaseDialog{
view(1); view(1);
} }
}); });
if(experimental){
buttons.button("Random", Icon.refresh, () -> {
groups.clear();
groups = Waves.generate(1f / 10f);
updateWaves();
}).width(200f);
}
} }
void view(int amount){ void view(int amount){
@@ -119,7 +125,7 @@ public class WaveInfoDialog extends BaseDialog{
} }
void setup(){ void setup(){
groups = JsonIO.copy(state.rules.spawns.isEmpty() ? defaultWaves.get() : state.rules.spawns); groups = JsonIO.copy(state.rules.spawns.isEmpty() ? waves.get() : state.rules.spawns);
cont.clear(); cont.clear();
cont.stack(new Table(Tex.clear, main -> { cont.stack(new Table(Tex.clear, main -> {

View File

@@ -115,11 +115,17 @@ public class Damage{
tr.trns(angle, length); tr.trns(angle, length);
Intc2 collider = (cx, cy) -> { Intc2 collider = (cx, cy) -> {
Building tile = world.build(cx, cy); Building tile = world.build(cx, cy);
if(tile != null && !collidedBlocks.contains(tile.pos()) && tile.team != team && tile.collide(hitter)){ boolean collide = tile != null && collidedBlocks.add(tile.pos());
if(collide && tile.team != team && tile.collide(hitter)){
tile.collision(hitter); tile.collision(hitter);
collidedBlocks.add(tile.pos());
hitter.type.hit(hitter, tile.x, tile.y); hitter.type.hit(hitter, tile.x, tile.y);
} }
//try to heal the tile
if(collide && hitter.type.collides(hitter, tile)){
hitter.type.hitTile(hitter, tile, 0f);
}
}; };
if(hitter.type.collidesGround){ if(hitter.type.collidesGround){

View File

@@ -21,35 +21,46 @@ public class Effect{
private static final EffectContainer container = new EffectContainer(); private static final EffectContainer container = new EffectContainer();
private static final Seq<Effect> all = new Seq<>(); private static final Seq<Effect> all = new Seq<>();
public final int id; private boolean initialized;
public final Cons<EffectContainer> renderer;
public final float lifetime;
/** Clip size. */
public float size;
public boolean ground; public final int id;
public float groundDuration;
public Cons<EffectContainer> renderer = e -> {};
public float lifetime = 50f;
/** Clip size. */
public float clip;
public float layer = Layer.effect;
public float layerDuration;
public Effect(float life, float clipsize, Cons<EffectContainer> renderer){ public Effect(float life, float clipsize, Cons<EffectContainer> renderer){
this.id = all.size; this.id = all.size;
this.lifetime = life; this.lifetime = life;
this.renderer = renderer; this.renderer = renderer;
this.size = clipsize; this.clip = clipsize;
all.add(this); all.add(this);
} }
public Effect(float life, Cons<EffectContainer> renderer){ public Effect(float life, Cons<EffectContainer> renderer){
this(life,50f, renderer); this(life, 50f, renderer);
} }
public Effect ground(){ //for custom implementations
ground = true; public Effect(){
this.id = all.size;
all.add(this);
}
public void init(){}
public Effect layer(float l){
layer = l;
return this; return this;
} }
public Effect ground(float duration){ public Effect layer(float l, float duration){
ground = true; layer = l;
this.groundDuration = duration; this.layerDuration = duration;
return this; return this;
} }
@@ -87,14 +98,18 @@ public class Effect{
public float render(int id, Color color, float life, float lifetime, float rotation, float x, float y, Object data){ public float render(int id, Color color, float life, float lifetime, float rotation, float x, float y, Object data){
container.set(id, color, life, lifetime, rotation, x, y, data); container.set(id, color, life, lifetime, rotation, x, y, data);
Draw.z(ground ? Layer.debris : Layer.effect); Draw.z(layer);
Draw.reset(); Draw.reset();
renderer.get(container); render(container);
Draw.reset(); Draw.reset();
return container.lifetime; return container.lifetime;
} }
public void render(EffectContainer e){
renderer.get(e);
}
public static @Nullable Effect get(int id){ public static @Nullable Effect get(int id){
return id >= all.size || id < 0 ? null : all.get(id); return id >= all.size || id < 0 ? null : all.get(id);
} }
@@ -122,9 +137,14 @@ public class Effect{
if(headless || effect == Fx.none) return; if(headless || effect == Fx.none) return;
if(Core.settings.getBool("effects")){ if(Core.settings.getBool("effects")){
Rect view = Core.camera.bounds(Tmp.r1); Rect view = Core.camera.bounds(Tmp.r1);
Rect pos = Tmp.r2.setSize(effect.size).setCenter(x, y); Rect pos = Tmp.r2.setSize(effect.clip).setCenter(x, y);
if(view.overlaps(pos)){ if(view.overlaps(pos)){
if(!effect.initialized){
effect.initialized = true;
effect.init();
}
EffectState entity = EffectState.create(); EffectState entity = EffectState.create();
entity.effect = effect; entity.effect = effect;
entity.rotation = rotation; entity.rotation = rotation;

View File

@@ -11,5 +11,6 @@ class GroupDefs<G>{
@GroupDef(value = Buildingc.class) G build; @GroupDef(value = Buildingc.class) G build;
@GroupDef(value = Syncc.class, mapping = true) G sync; @GroupDef(value = Syncc.class, mapping = true) G sync;
@GroupDef(value = Drawc.class) G draw; @GroupDef(value = Drawc.class) G draw;
@GroupDef(value = Firec.class) G fire;
@GroupDef(value = WeatherStatec.class) G weather; @GroupDef(value = WeatherStatec.class) G weather;
} }

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