Compare commits
560 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07d11f02d8 | ||
|
|
fce30e6ae5 | ||
|
|
24195dac81 | ||
|
|
830fe03898 | ||
|
|
4690aae197 | ||
|
|
b82dca89b3 | ||
|
|
dce79a621a | ||
|
|
d6f00a5d2d | ||
|
|
545b75a091 | ||
|
|
979daca221 | ||
|
|
fb2fed7c28 | ||
|
|
0ec71750b7 | ||
|
|
51f7858b78 | ||
|
|
ab83b872a2 | ||
|
|
879adb7458 | ||
|
|
39cbd607ef | ||
|
|
7478cdf4a4 | ||
|
|
b75a8d5260 | ||
|
|
120c694a42 | ||
|
|
569293e577 | ||
|
|
4f0f2499be | ||
|
|
d34dd0c603 | ||
|
|
b6c645b701 | ||
|
|
0c28bb7dcf | ||
|
|
2bb303e709 | ||
|
|
cc65feb392 | ||
|
|
c12b9ee3e3 | ||
|
|
d863c971c2 | ||
|
|
3ccdf45ed1 | ||
|
|
efa5c5db7b | ||
|
|
d73cf9fcff | ||
|
|
93dafc82eb | ||
|
|
87142b06c3 | ||
|
|
3075616b03 | ||
|
|
019898dfc3 | ||
|
|
ae838b9392 | ||
|
|
4d9a30b7c7 | ||
|
|
ea82773157 | ||
|
|
8289da1415 | ||
|
|
19eb6334b7 | ||
|
|
e992be1bfb | ||
|
|
7e216d198e | ||
|
|
a89d50e74d | ||
|
|
05dc13c922 | ||
|
|
1de4dd1bfe | ||
|
|
72aa87128e | ||
|
|
8f91576f85 | ||
|
|
4019c49fff | ||
|
|
5f83c92829 | ||
|
|
4c9cda7e40 | ||
|
|
01f7b1c9a6 | ||
|
|
1a30edc55f | ||
|
|
49bccffd7c | ||
|
|
526157a514 | ||
|
|
d025ba63e1 | ||
|
|
662515ce2e | ||
|
|
c55ff4ad5e | ||
|
|
666c0f3582 | ||
|
|
0c00760ae0 | ||
|
|
2146b35e5a | ||
|
|
44d10a355e | ||
|
|
5037c4e00e | ||
|
|
e4ecfc4ee7 | ||
|
|
ae6be1db3b | ||
|
|
d06eee99ba | ||
|
|
8349c8a5b8 | ||
|
|
2df7484649 | ||
|
|
1bb97cae39 | ||
|
|
f5ac3ff7b0 | ||
|
|
f6eba3edae | ||
|
|
781410ea04 | ||
|
|
c0d9712beb | ||
|
|
0672878920 | ||
|
|
b0cdac59f0 | ||
|
|
4b6a83dd82 | ||
|
|
25ae7b97aa | ||
|
|
afbde49fa2 | ||
|
|
befda9baaa | ||
|
|
502c7eb388 | ||
|
|
ad2a18f929 | ||
|
|
830eb86a0f | ||
|
|
e5413cebdc | ||
|
|
1a75951840 | ||
|
|
08e36aca98 | ||
|
|
aabbfd624a | ||
|
|
2f836d779a | ||
|
|
d7f848f8cd | ||
|
|
6f7f980563 | ||
|
|
e2515fc4bf | ||
|
|
d06a7bb7a2 | ||
|
|
dbdfdac94b | ||
|
|
3b2a0cfd66 | ||
|
|
5b652ae51f | ||
|
|
9e8a2b8296 | ||
|
|
e6787c5146 | ||
|
|
d8552915f7 | ||
|
|
61d9dea487 | ||
|
|
02d8f679b5 | ||
|
|
544828d9fb | ||
|
|
ca726d579e | ||
|
|
8257fb5e11 | ||
|
|
0d287e6d59 | ||
|
|
4d9dc66a96 | ||
|
|
868d4e05f7 | ||
|
|
a3bf39d86b | ||
|
|
d76795e0ae | ||
|
|
a2e075ee54 | ||
|
|
2df2a0971a | ||
|
|
158e23bd5e | ||
|
|
467402ef73 | ||
|
|
f78719afc0 | ||
|
|
e6513702d6 | ||
|
|
aeddf7014c | ||
|
|
1613f49c16 | ||
|
|
57a833c2fb | ||
|
|
6de53343a4 | ||
|
|
7bb4b09308 | ||
|
|
68020fa7d4 | ||
|
|
b94aba0301 | ||
|
|
0316009a9c | ||
|
|
820f7f0ef2 | ||
|
|
6d105ad3e7 | ||
|
|
f043a5f340 | ||
|
|
73d6f95d2e | ||
|
|
fb48070388 | ||
|
|
fa7697fc40 | ||
|
|
b46a5c0bda | ||
|
|
1072c310ad | ||
|
|
d5448b59a2 | ||
|
|
78317e6126 | ||
|
|
5a58f9c71a | ||
|
|
06b8dd61c7 | ||
|
|
a81b5778a0 | ||
|
|
a7188c4884 | ||
|
|
0bf0d48a02 | ||
|
|
dc5cd196ed | ||
|
|
f8f9bf228b | ||
|
|
d0dc1ea132 | ||
|
|
ff9fad6a2c | ||
|
|
76dbdb59ce | ||
|
|
0013402962 | ||
|
|
1ef7ae7079 | ||
|
|
07a39d0da8 | ||
|
|
b8bfb30c56 | ||
|
|
00342ddaae | ||
|
|
fb40c0b9de | ||
|
|
5d9506eb12 | ||
|
|
080fe8c3c4 | ||
|
|
48745d7380 | ||
|
|
41b50d67af | ||
|
|
b65dffca9d | ||
|
|
66bdfcf877 | ||
|
|
b0082c92c5 | ||
|
|
fdd1c01ac3 | ||
|
|
1ffdd9fd99 | ||
|
|
f64ad2db9f | ||
|
|
7bfe9bf914 | ||
|
|
214f3bb9b5 | ||
|
|
3f51149883 | ||
|
|
2c368953f9 | ||
|
|
9d5454e5ce | ||
|
|
631e4d9eef | ||
|
|
957583071d | ||
|
|
c942331117 | ||
|
|
710a55dc2d | ||
|
|
4bbb4b9a19 | ||
|
|
a2e5dae27f | ||
|
|
d5645b8a7b | ||
|
|
a9f9946a39 | ||
|
|
561deacce4 | ||
|
|
e528e35e06 | ||
|
|
af39d6a6ee | ||
|
|
7a21c02476 | ||
|
|
557e5710cd | ||
|
|
fa52255d04 | ||
|
|
e16622afcc | ||
|
|
f2468f0b3d | ||
|
|
30c9231df6 | ||
|
|
7532aadaf8 | ||
|
|
3d226246b9 | ||
|
|
d6c852a082 | ||
|
|
07a27e913c | ||
|
|
092d152bdc | ||
|
|
8b756d221b | ||
|
|
f33d684dce | ||
|
|
56e41309b1 | ||
|
|
91b24433b9 | ||
|
|
9050937900 | ||
|
|
2e6b90d4d5 | ||
|
|
146b2589e2 | ||
|
|
abd07e1525 | ||
|
|
541da5c0c9 | ||
|
|
21f642ad0c | ||
|
|
0d084d380d | ||
|
|
0fe158d080 | ||
|
|
0cc64c6a8d | ||
|
|
cd684996e1 | ||
|
|
0350e6bbf4 | ||
|
|
4fe5972d89 | ||
|
|
27c8efc672 | ||
|
|
aef0faf79c | ||
|
|
ea7d1dd91e | ||
|
|
ea2b57ec4b | ||
|
|
949f5eccd7 | ||
|
|
e525d89e43 | ||
|
|
6498ce3c4f | ||
|
|
cbf30c599b | ||
|
|
54c406f83d | ||
|
|
7b2957ab41 | ||
|
|
e22fccf5b1 | ||
|
|
ce8b32f022 | ||
|
|
0d0aef3dea | ||
|
|
386da22f6e | ||
|
|
f76b514892 | ||
|
|
77dc959e4a | ||
|
|
a99151441c | ||
|
|
852b0a97fe | ||
|
|
38843c25fb | ||
|
|
ce2750ba60 | ||
|
|
1d3dbddaef | ||
|
|
d8177daada | ||
|
|
3cbcd779eb | ||
|
|
33fc36a2d4 | ||
|
|
c06146110d | ||
|
|
1802aab683 | ||
|
|
49fe47f1f8 | ||
|
|
a13c9d0761 | ||
|
|
3d8479355c | ||
|
|
86c702861e | ||
|
|
47ec13eef4 | ||
|
|
d8cd0d867c | ||
|
|
d5ede6b1bb | ||
|
|
fd931564aa | ||
|
|
6b19178a13 | ||
|
|
64acd6c1e4 | ||
|
|
560914bebe | ||
|
|
2edec90dfb | ||
|
|
10c1305eae | ||
|
|
852c98f004 | ||
|
|
292f771eb1 | ||
|
|
1acc771edc | ||
|
|
ee61d0dcfa | ||
|
|
e5f2073de2 | ||
|
|
816be9e9bd | ||
|
|
2107af1f0f | ||
|
|
3bb85b4bda | ||
|
|
e86a3e9d09 | ||
|
|
957426c27f | ||
|
|
8bc90a19d2 | ||
|
|
668144cf2a | ||
|
|
c5ed056601 | ||
|
|
ea9d415b92 | ||
|
|
c181204700 | ||
|
|
ca78cb1a3f | ||
|
|
fdafa0933f | ||
|
|
ae92813169 | ||
|
|
8a248dc787 | ||
|
|
f90f611a6d | ||
|
|
1c0d148607 | ||
|
|
95c8b7ae60 | ||
|
|
25d013b768 | ||
|
|
9de8c4d8ac | ||
|
|
7e4ffe6a7d | ||
|
|
b90372a226 | ||
|
|
9adbfcac0f | ||
|
|
d1eb7743ad | ||
|
|
fc3352bcb1 | ||
|
|
9b3360d932 | ||
|
|
3784bfac77 | ||
|
|
54754cd177 | ||
|
|
c48034e420 | ||
|
|
3299279c89 | ||
|
|
a6c3ebc467 | ||
|
|
9f510f61c7 | ||
|
|
3ae48b8753 | ||
|
|
f41725b8dc | ||
|
|
115df3aedd | ||
|
|
3c136ad0ba | ||
|
|
48ee3d255d | ||
|
|
b05f867800 | ||
|
|
55b790a0d4 | ||
|
|
57f6c9dfd9 | ||
|
|
2f9c95afd0 | ||
|
|
4fe1457d96 | ||
|
|
2589a27cb5 | ||
|
|
8704e14fd7 | ||
|
|
2b17dbe390 | ||
|
|
919012608a | ||
|
|
5675a5b035 | ||
|
|
6724752980 | ||
|
|
0e078a9c60 | ||
|
|
c0b1dfc55a | ||
|
|
3d201f7042 | ||
|
|
f1a5aae30a | ||
|
|
9142da2b70 | ||
|
|
022c76bf45 | ||
|
|
bc6db72df0 | ||
|
|
d512aa5b21 | ||
|
|
7cdf7a21fe | ||
|
|
9a5a6e1ce2 | ||
|
|
5a258d2830 | ||
|
|
96ee32f8ed | ||
|
|
a667a94c8e | ||
|
|
d0572a2a0d | ||
|
|
47eea79b60 | ||
|
|
03b37235b3 | ||
|
|
6969fbb1e7 | ||
|
|
ccc59aa61b | ||
|
|
c658865907 | ||
|
|
a13d51e09a | ||
|
|
f827337259 | ||
|
|
b83c76f728 | ||
|
|
5666fd4999 | ||
|
|
5930e3c350 | ||
|
|
4630e5b3a4 | ||
|
|
f16990edcb | ||
|
|
13896589c2 | ||
|
|
8b5cf5309a | ||
|
|
baedba0d5b | ||
|
|
9f926ef71e | ||
|
|
18a3f8bb68 | ||
|
|
623b7ada11 | ||
|
|
6b6d52e2fd | ||
|
|
fc91b6b135 | ||
|
|
f9c33453f2 | ||
|
|
ad4650f408 | ||
|
|
8ca08a0f14 | ||
|
|
792fdef95d | ||
|
|
457514a2c8 | ||
|
|
027d080c55 | ||
|
|
bf8f059c25 | ||
|
|
a73165353f | ||
|
|
613b5a7703 | ||
|
|
988791f18d | ||
|
|
1fb608220f | ||
|
|
56b87a2141 | ||
|
|
3aee9bddd4 | ||
|
|
65f97edbc5 | ||
|
|
d393230add | ||
|
|
75d2b0fb69 | ||
|
|
0cc9b0b0a3 | ||
|
|
9b6c125233 | ||
|
|
1f2b331bf6 | ||
|
|
ec73426bbc | ||
|
|
770d8506c5 | ||
|
|
10cd15a088 | ||
|
|
481e19b1ec | ||
|
|
e326e3a273 | ||
|
|
d747b1d96a | ||
|
|
f64cb3ad9a | ||
|
|
c4ea5a8256 | ||
|
|
fa8d43bbc9 | ||
|
|
77f31fd86c | ||
|
|
18fe2a1737 | ||
|
|
e816f6110d | ||
|
|
632887ddd2 | ||
|
|
c53a6a7c04 | ||
|
|
532a4bc140 | ||
|
|
88086f5ba9 | ||
|
|
0be39d43a2 | ||
|
|
e9abe273c7 | ||
|
|
775ebd6e94 | ||
|
|
b86201ea9b | ||
|
|
e3ccde31d8 | ||
|
|
32d1d7264c | ||
|
|
27d9718d4f | ||
|
|
f812460164 | ||
|
|
da8ea84397 | ||
|
|
52e47a28c4 | ||
|
|
b9b8fc66b1 | ||
|
|
c026d44cd3 | ||
|
|
eb75cd5ae8 | ||
|
|
7e10487926 | ||
|
|
ae921bf266 | ||
|
|
ca62d2aa07 | ||
|
|
2ba093c640 | ||
|
|
e3f388692f | ||
|
|
4fc805abbf | ||
|
|
cd81482b6b | ||
|
|
3972e34dde | ||
|
|
01b24959c8 | ||
|
|
40908589b9 | ||
|
|
774be56bde | ||
|
|
68f19fdbcf | ||
|
|
50aab01a2e | ||
|
|
ead0158ef9 | ||
|
|
d06a74e7a2 | ||
|
|
8fab335b9d | ||
|
|
25b22b4f93 | ||
|
|
0061690631 | ||
|
|
26ad53ec50 | ||
|
|
4aa2d9097f | ||
|
|
82f8e78ec8 | ||
|
|
f91910e84f | ||
|
|
2da128678a | ||
|
|
18a382b07a | ||
|
|
83a4f56679 | ||
|
|
ffad9cb9a9 | ||
|
|
6a63956b71 | ||
|
|
32a1d91faf | ||
|
|
634d9d1a40 | ||
|
|
f9adcfeed1 | ||
|
|
02ef633529 | ||
|
|
f3b1ef02e3 | ||
|
|
2d3a9b605a | ||
|
|
718a40d742 | ||
|
|
650d47991e | ||
|
|
6ec76409ef | ||
|
|
136c8cfcd2 | ||
|
|
bceb7b5809 | ||
|
|
a342a7d638 | ||
|
|
956f4659c7 | ||
|
|
593a7b060c | ||
|
|
81ce3a28a1 | ||
|
|
32070a37f7 | ||
|
|
95c04eb085 | ||
|
|
c2602fe6a0 | ||
|
|
9ce5164a7e | ||
|
|
ee79bc5501 | ||
|
|
3dc70be516 | ||
|
|
e44c3899e8 | ||
|
|
e7885a405e | ||
|
|
c6b60a2620 | ||
|
|
9b6c44757a | ||
|
|
0cbc4c0cc5 | ||
|
|
e83cfe6cab | ||
|
|
912ea94828 | ||
|
|
6417073a82 | ||
|
|
994194452d | ||
|
|
c716c16746 | ||
|
|
f188563052 | ||
|
|
07e8b4334b | ||
|
|
c0e955dc1f | ||
|
|
2927348a6c | ||
|
|
96c8e0f415 | ||
|
|
21f05c9d8a | ||
|
|
9b1c66ba15 | ||
|
|
8b9b11f77f | ||
|
|
9c846bd2c9 | ||
|
|
7372bf37c2 | ||
|
|
0a5a301573 | ||
|
|
462a5b941e | ||
|
|
21fd20ea5b | ||
|
|
a0c7b33ff1 | ||
|
|
b762a5028b | ||
|
|
2f83ba7f5c | ||
|
|
01d972f015 | ||
|
|
0435140bb5 | ||
|
|
ff84d788a6 | ||
|
|
4c2f330e51 | ||
|
|
bd0f47c325 | ||
|
|
13fbcb9ba8 | ||
|
|
9774095df4 | ||
|
|
f231849a42 | ||
|
|
c7d059a58f | ||
|
|
c420ad1a16 | ||
|
|
99aec4ad15 | ||
|
|
1be91961d6 | ||
|
|
9f51e23206 | ||
|
|
ebf4435af4 | ||
|
|
f4bf8fd998 | ||
|
|
5516435619 | ||
|
|
5c24254d84 | ||
|
|
fdf08ed51d | ||
|
|
42fb6ffa0d | ||
|
|
0c4750781a | ||
|
|
69eb8faf67 | ||
|
|
0ab4f01d5d | ||
|
|
6361b7e57d | ||
|
|
961331c832 | ||
|
|
8cdb4c0831 | ||
|
|
6bd8f99be3 | ||
|
|
4b71b4f80a | ||
|
|
5712190dab | ||
|
|
af636f74fc | ||
|
|
0cfdacdd28 | ||
|
|
3eb0857906 | ||
|
|
0f3716b8dd | ||
|
|
dbe2f7eefa | ||
|
|
3497212b95 | ||
|
|
2ae864f4d3 | ||
|
|
200eb26b78 | ||
|
|
e9c93ab3a0 | ||
|
|
e70221f6dd | ||
|
|
c4d72eef39 | ||
|
|
42ae5e90b0 | ||
|
|
fe92ce557f | ||
|
|
bf81565e93 | ||
|
|
981dec098a | ||
|
|
d65506e420 | ||
|
|
73d009666e | ||
|
|
a9c4ccdf48 | ||
|
|
035d7fed77 | ||
|
|
0374ec5e4a | ||
|
|
0a92e64498 | ||
|
|
0b6194cfc9 | ||
|
|
044fb30b1b | ||
|
|
727b47dba5 | ||
|
|
ab19e6ffbd | ||
|
|
f5410c5712 | ||
|
|
b79a6f6b32 | ||
|
|
b672434e83 | ||
|
|
9b087dc55d | ||
|
|
8d10cafc99 | ||
|
|
6e1eedc1ab | ||
|
|
f5ce75e962 | ||
|
|
0d643a3ece | ||
|
|
9632fc5f1f | ||
|
|
84bb3ee3de | ||
|
|
83b20a90e6 | ||
|
|
f89f1e2346 | ||
|
|
cc6b0c328f | ||
|
|
e17bcd6a01 | ||
|
|
6357c17f8a | ||
|
|
add3fd9fb3 | ||
|
|
98e6303765 | ||
|
|
0e1e399788 | ||
|
|
d84a36b8ee | ||
|
|
db40f154c5 | ||
|
|
e714d44a0e | ||
|
|
6eb604585b | ||
|
|
7555d43418 | ||
|
|
3ef67cab69 | ||
|
|
72686b3ef8 | ||
|
|
990562dd71 | ||
|
|
2239ca6372 | ||
|
|
f174d1b2b4 | ||
|
|
a04e7d5612 | ||
|
|
16778ea16c | ||
|
|
a606d9d85c | ||
|
|
8d18649323 | ||
|
|
c02d603a7a | ||
|
|
8e4b35eb07 | ||
|
|
fda9357b4b | ||
|
|
4517b55f76 | ||
|
|
f014339dbc | ||
|
|
9f8fce72d3 | ||
|
|
834e4f175b | ||
|
|
bba52e99e0 | ||
|
|
42d350f87f | ||
|
|
4339042078 | ||
|
|
946bfa1bfd | ||
|
|
f86291c587 | ||
|
|
da96b23441 | ||
|
|
d2ae9cf809 | ||
|
|
beed2e0b8f | ||
|
|
92e7cec198 | ||
|
|
eda6770e11 | ||
|
|
7cc3e23e9a | ||
|
|
7bf263fdfa | ||
|
|
43757a247e | ||
|
|
1e8621d9d4 | ||
|
|
0940abe98c | ||
|
|
4a71564d03 | ||
|
|
9397bd57c4 | ||
|
|
85a668c202 | ||
|
|
90372171b2 | ||
|
|
2523088b4c | ||
|
|
f5c270347c | ||
|
|
032b254e93 |
34
.github/workflows/deployment.yml
vendored
@@ -17,21 +17,6 @@ jobs:
|
|||||||
java-version: 14
|
java-version: 14
|
||||||
- name: Set env
|
- name: Set env
|
||||||
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
||||||
- name: Create artifacts
|
|
||||||
run: |
|
|
||||||
./gradlew desktop:dist server:dist core:javadoc -Pbuildversion=${RELEASE_VERSION:1}
|
|
||||||
- name: Update docs
|
|
||||||
run: |
|
|
||||||
cd ../
|
|
||||||
git config --global user.email "cli@github.com"
|
|
||||||
git config --global user.name "Github Actions"
|
|
||||||
git clone --depth=1 https://github.com/MindustryGame/docs.git
|
|
||||||
cp -a Mindustry/core/build/docs/javadoc/. docs/
|
|
||||||
cd docs
|
|
||||||
git add .
|
|
||||||
git commit -m "Update ${RELEASE_VERSION:1}"
|
|
||||||
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/MindustryGame/docs
|
|
||||||
cd ../Mindustry
|
|
||||||
- name: Add Arc release
|
- name: Add Arc release
|
||||||
run: |
|
run: |
|
||||||
git clone --depth=1 --branch=master https://github.com/Anuken/Arc ../Arc
|
git clone --depth=1 --branch=master https://github.com/Anuken/Arc ../Arc
|
||||||
@@ -39,6 +24,24 @@ jobs:
|
|||||||
git tag ${RELEASE_VERSION}
|
git tag ${RELEASE_VERSION}
|
||||||
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/Arc ${RELEASE_VERSION};
|
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/Arc ${RELEASE_VERSION};
|
||||||
cd ../Mindustry
|
cd ../Mindustry
|
||||||
|
- name: Create artifacts
|
||||||
|
run: |
|
||||||
|
./gradlew desktop:dist server:dist core:mergedJavadoc -Pbuildversion=${RELEASE_VERSION:1}
|
||||||
|
- name: Update docs
|
||||||
|
run: |
|
||||||
|
cd ../
|
||||||
|
git config --global user.email "cli@github.com"
|
||||||
|
git config --global user.name "Github Actions"
|
||||||
|
git clone --depth=1 https://github.com/MindustryGame/docs.git
|
||||||
|
cd docs
|
||||||
|
find . -maxdepth 1 ! -name ".git" ! -name . -exec rm -r {} \;
|
||||||
|
cd ../
|
||||||
|
cp -a Mindustry/core/build/javadoc/. docs/
|
||||||
|
cd docs
|
||||||
|
git add .
|
||||||
|
git commit -m "Update ${RELEASE_VERSION:1}"
|
||||||
|
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/MindustryGame/docs
|
||||||
|
cd ../Mindustry
|
||||||
- name: Update F-Droid build string
|
- name: Update F-Droid build string
|
||||||
run: |
|
run: |
|
||||||
git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds
|
git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds
|
||||||
@@ -47,6 +50,7 @@ jobs:
|
|||||||
echo versionName=6-fdroid-${RELEASE_VERSION:1}$'\n'versionCode=${RELEASE_VERSION:1} > version_fdroid.txt
|
echo versionName=6-fdroid-${RELEASE_VERSION:1}$'\n'versionCode=${RELEASE_VERSION:1} > version_fdroid.txt
|
||||||
git add .
|
git add .
|
||||||
git commit -m "Updating to build ${RELEASE_VERSION:1}"
|
git commit -m "Updating to build ${RELEASE_VERSION:1}"
|
||||||
|
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/MindustryBuilds
|
||||||
cd ../Mindustry
|
cd ../Mindustry
|
||||||
- name: Upload client artifacts
|
- name: Upload client artifacts
|
||||||
uses: svenstaro/upload-release-action@v2
|
uses: svenstaro/upload-release-action@v2
|
||||||
|
|||||||
1
.gitignore
vendored
@@ -43,6 +43,7 @@ ios/robovm.properties
|
|||||||
packr-out/
|
packr-out/
|
||||||
config/
|
config/
|
||||||
*.gif
|
*.gif
|
||||||
|
/tests/out
|
||||||
|
|
||||||
/core/assets/basepartnames
|
/core/assets/basepartnames
|
||||||
version.properties
|
version.properties
|
||||||
|
|||||||
@@ -15,9 +15,6 @@ If you are submitting a new block, make sure it has a name and description, and
|
|||||||
If you are interested in adding a large mechanic/feature or changing large amounts of code, first contact me (Anuken) via [Discord](https://discord.gg/mindustry) (preferred method) or via e-mail (*anukendev@gmail.com*).
|
If you are interested in adding a large mechanic/feature or changing large amounts of code, first contact me (Anuken) via [Discord](https://discord.gg/mindustry) (preferred method) or via e-mail (*anukendev@gmail.com*).
|
||||||
For most changes, this should not be necessary. I just want to know if you're doing something big so I can offer advice and/or make sure you're not wasting your time on it.
|
For most changes, this should not be necessary. I just want to know if you're doing something big so I can offer advice and/or make sure you're not wasting your time on it.
|
||||||
|
|
||||||
### Do not include packed sprites in your pull request.
|
|
||||||
When making a pull request that changes or adds new sprites, do not add the modified atlas & `spritesX.png` files to your final pull request. These are a frequent source of conflicts.
|
|
||||||
|
|
||||||
|
|
||||||
## Style Guidelines
|
## Style Guidelines
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||

|

|
||||||
|
|
||||||
[](https://travis-ci.org/Anuken/Mindustry)
|
[](https://github.com/Anuken/Mindustry/actions)
|
||||||
[](https://discord.gg/mindustry)
|
[](https://discord.gg/mindustry)
|
||||||
|
|
||||||
A sandbox tower defense game written in Java.
|
A sandbox tower defense game written in Java.
|
||||||
|
|
||||||
|
|||||||
@@ -8,14 +8,15 @@ You may want to add your server to this list. The steps for getting this done ar
|
|||||||
1. **Ensure your server is properly moderated.** For the most part, this applies to survival servers, but PvP servers can be affected as well.
|
1. **Ensure your server is properly moderated.** For the most part, this applies to survival servers, but PvP servers can be affected as well.
|
||||||
You'll need to either hire some moderators, or make use of (currently non-existent) anti-grief and anti-curse plugins.
|
You'll need to either hire some moderators, or make use of (currently non-existent) anti-grief and anti-curse plugins.
|
||||||
*Consider enabling a rate limit:* `config messageRateLimit 2` will make it so that players can only send messages every 2 seconds, for example.
|
*Consider enabling a rate limit:* `config messageRateLimit 2` will make it so that players can only send messages every 2 seconds, for example.
|
||||||
2. **Set an appropriate MOTD, name and description.** This is set with `config <name/desc/motd> <value>`. "Appropriate" means that:
|
2. Make sure that your server is able to handle inappropriate content - this includes NSFW display/sorter art and abusive messages. **Servers that allow such content will be removed immediately.** Consider banning display blocks if it is a problem for your server: `rules add bannedBlocks ["logic-display", "large-logic-display"]`.
|
||||||
|
3. **Set an appropriate MOTD, name and description.** This is set with `config <name/desc/motd> <value>`. "Appropriate" means that:
|
||||||
- Your name or description must reflect the type of server you're hosting.
|
- Your name or description must reflect the type of server you're hosting.
|
||||||
Since new players may be exposed to the server list early on, put in a phrase like "Co-op survival" or "PvP" so players know what they're getting into. Yes, this is also displayed in the server mode info text, but having extra info in the name doesn't hurt.
|
Since new players may be exposed to the server list early on, put in a phrase like "Co-op survival" or "PvP" so players know what they're getting into. Yes, this is also displayed in the server mode info text, but having extra info in the name doesn't hurt.
|
||||||
- Make sure players know where to refer to for server support. It should be fairly clear that the server owner is not me, but you.
|
- Make sure players know where to refer to for server support. It should be fairly clear that the server owner is not me, but you.
|
||||||
- Try to be professional in your text; use common sense.
|
- Try to be professional in your text; use common sense.
|
||||||
3. **Get some good maps.** *(optional, but highly recommended)*. Add some maps to your server and set the map rotation to custom-only. You can get maps from the Steam workshop by subscribing and exporting them; using the `#maps` channel on Discord is also an option.
|
4. **Get some good maps.** *(optional, but highly recommended)*. Add some maps to your server and set the map rotation to custom-only. You can get maps from the Steam workshop by subscribing and exporting them; using the `#maps` channel on Discord is also an option.
|
||||||
4. **Check your server configuration.** *(optional)* I would recommend adding a message rate limit of 1 second (`config messageRateLimit 1`), and disabling connect/disconnect messages to reduce spam (`config showConnectMessages false`).
|
5. **Check your server configuration.** *(optional)* I would recommend adding a message rate limit of 1 second (`config messageRateLimit 1`), and disabling connect/disconnect messages to reduce spam (`config showConnectMessages false`).
|
||||||
5. Finally, **submit a pull request** to add your server's IP to the list.
|
6. Finally, **submit a pull request** to add your server's IP to the list.
|
||||||
This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers_v6.json), then add a JSON object with a single key, indicating your server address.
|
This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers_v6.json), then add a JSON object with a single key, indicating your server address.
|
||||||
For example, if your server address is `google.com`, you would add a comma after the last entry and insert:
|
For example, if your server address is `google.com`, you would add a comma after the last entry and insert:
|
||||||
```json
|
```json
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ buildscript{
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
google()
|
google()
|
||||||
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||||
jcenter()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies{
|
dependencies{
|
||||||
@@ -20,8 +19,8 @@ configurations{ natives }
|
|||||||
|
|
||||||
repositories{
|
repositories{
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
jcenter()
|
|
||||||
maven{ url "https://maven.google.com" }
|
maven{ url "https://maven.google.com" }
|
||||||
|
jcenter() //remove later once google fixes the dependency
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies{
|
dependencies{
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
handler.uncaughtException(thread, error);
|
handler.uncaughtException(thread, error);
|
||||||
}else{
|
}else{
|
||||||
error.printStackTrace();
|
error.printStackTrace();
|
||||||
|
Log.err(error);
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -71,9 +72,8 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Class<?> loadJar(Fi jar, String mainClass) throws Exception{
|
public ClassLoader loadJar(Fi jar, String mainClass) throws Exception{
|
||||||
DexClassLoader loader = new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, getClassLoader());
|
return new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, getClassLoader());
|
||||||
return Class.forName(mainClass, true, loader);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -161,7 +161,6 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
}, new AndroidApplicationConfiguration(){{
|
}, new AndroidApplicationConfiguration(){{
|
||||||
useImmersiveMode = true;
|
useImmersiveMode = true;
|
||||||
hideStatusBar = true;
|
hideStatusBar = true;
|
||||||
stencil = 8;
|
|
||||||
}});
|
}});
|
||||||
checkFiles(getIntent());
|
checkFiles(getIntent());
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class RemoteProcess extends BaseProcessor{
|
|||||||
classes = new Seq<>();
|
classes = new Seq<>();
|
||||||
|
|
||||||
Seq<Smethod> orderedElements = elements.copy();
|
Seq<Smethod> orderedElements = elements.copy();
|
||||||
orderedElements.sortComparing(Object::toString);
|
orderedElements.sort((a, b) -> -a.toString().compareTo(b.toString()));
|
||||||
|
|
||||||
//create methods
|
//create methods
|
||||||
for(Smethod element : orderedElements){
|
for(Smethod element : orderedElements){
|
||||||
@@ -71,12 +71,12 @@ public class RemoteProcess extends BaseProcessor{
|
|||||||
|
|
||||||
//check for static
|
//check for static
|
||||||
if(!element.is(Modifier.STATIC) || !element.is(Modifier.PUBLIC)){
|
if(!element.is(Modifier.STATIC) || !element.is(Modifier.PUBLIC)){
|
||||||
err("All @Remote methods must be public and static: ", element);
|
err("All @Remote methods must be public and static", element);
|
||||||
}
|
}
|
||||||
|
|
||||||
//can't generate none methods
|
//can't generate none methods
|
||||||
if(annotation.targets() == Loc.none){
|
if(annotation.targets() == Loc.none){
|
||||||
err("A @Remote method's targets() cannot be equal to 'none':", element);
|
err("A @Remote method's targets() cannot be equal to 'none'", element);
|
||||||
}
|
}
|
||||||
|
|
||||||
//get and create class entry if needed
|
//get and create class entry if needed
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ public class RemoteReadGenerator{
|
|||||||
}
|
}
|
||||||
|
|
||||||
readBlock.nextControlFlow("catch (java.lang.Exception e)");
|
readBlock.nextControlFlow("catch (java.lang.Exception e)");
|
||||||
readBlock.addStatement("throw new java.lang.RuntimeException(\"Failed to to read remote method '" + entry.element.getSimpleName() + "'!\", e)");
|
readBlock.addStatement("throw new java.lang.RuntimeException(\"Failed to read remote method '" + entry.element.getSimpleName() + "'!\", e)");
|
||||||
readBlock.endControlFlow();
|
readBlock.endControlFlow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
44
build.gradle
@@ -12,7 +12,6 @@ buildscript{
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
google()
|
google()
|
||||||
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||||
jcenter()
|
|
||||||
maven{ url 'https://jitpack.io' }
|
maven{ url 'https://jitpack.io' }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,7 +35,7 @@ allprojects{
|
|||||||
if(!project.hasProperty("versionType")) versionType = 'official'
|
if(!project.hasProperty("versionType")) versionType = 'official'
|
||||||
appName = 'Mindustry'
|
appName = 'Mindustry'
|
||||||
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256'
|
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256'
|
||||||
rhinoVersion = '2617981f706e50b8753155d8e15e326308be3b22'
|
rhinoVersion = '378626d8abc552bba57864358358045d2f2dbe9b'
|
||||||
|
|
||||||
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 }
|
||||||
@@ -184,7 +183,6 @@ allprojects{
|
|||||||
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||||
maven{ url "https://oss.sonatype.org/content/repositories/releases/" }
|
maven{ url "https://oss.sonatype.org/content/repositories/releases/" }
|
||||||
maven{ url 'https://jitpack.io' }
|
maven{ url 'https://jitpack.io' }
|
||||||
jcenter()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task clearCache{
|
task clearCache{
|
||||||
@@ -320,6 +318,15 @@ project(":core"){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task sourcesJar(type: Jar, dependsOn: classes){
|
||||||
|
classifier = 'sources'
|
||||||
|
from sourceSets.main.allSource
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts{
|
||||||
|
archives sourcesJar
|
||||||
|
}
|
||||||
|
|
||||||
dependencies{
|
dependencies{
|
||||||
compileJava.dependsOn(preGen)
|
compileJava.dependsOn(preGen)
|
||||||
|
|
||||||
@@ -337,6 +344,28 @@ project(":core"){
|
|||||||
annotationProcessor 'com.github.Anuken:jabel:34e4c172e65b3928cd9eabe1993654ea79c409cd'
|
annotationProcessor 'com.github.Anuken:jabel:34e4c172e65b3928cd9eabe1993654ea79c409cd'
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
afterEvaluate{
|
||||||
|
task mergedJavadoc(type: Javadoc){
|
||||||
|
def blacklist = [project(":ios"), project(":desktop"), project(":server"), project(":annotations")]
|
||||||
|
if(findProject(":android") != null){
|
||||||
|
blacklist += project(":android")
|
||||||
|
}
|
||||||
|
|
||||||
|
source rootProject.subprojects.collect{ project ->
|
||||||
|
if(!blacklist.contains(project) && project.hasProperty("sourceSets")){
|
||||||
|
return project.sourceSets.main.allJava
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
classpath = files(rootProject.subprojects.collect { project ->
|
||||||
|
if(!blacklist.contains(project) && project.hasProperty("sourceSets")){
|
||||||
|
return project.sourceSets.main.compileClasspath
|
||||||
|
}
|
||||||
|
})
|
||||||
|
destinationDir = new File(buildDir, 'javadoc')
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
project(":server"){
|
project(":server"){
|
||||||
@@ -410,3 +439,12 @@ task deployAll{
|
|||||||
dependsOn "server:deploy"
|
dependsOn "server:deploy"
|
||||||
dependsOn "android:deploy"
|
dependsOn "android:deploy"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task resolveDependencies{
|
||||||
|
doLast{
|
||||||
|
rootProject.allprojects{ project ->
|
||||||
|
Set<Configuration> configurations = project.buildscript.configurations + project.configurations
|
||||||
|
configurations.findAll{c -> c.canBeResolved}.forEach{c -> c.resolve()}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 514 B |
|
Before Width: | Height: | Size: 359 B After Width: | Height: | Size: 536 B |
|
Before Width: | Height: | Size: 290 B After Width: | Height: | Size: 430 B |
BIN
core/assets-raw/sprites/effects/select-arrow.png
Normal file
|
After Width: | Height: | Size: 310 B |
|
Before Width: | Height: | Size: 481 B After Width: | Height: | Size: 320 B |
BIN
core/assets-raw/sprites/ui/pane-solid.9.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 611 B |
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -41,10 +41,13 @@ be.ignore = Ignore
|
|||||||
be.noupdates = No updates found.
|
be.noupdates = No updates found.
|
||||||
be.check = Check for updates
|
be.check = Check for updates
|
||||||
|
|
||||||
mod.featured.dialog.title = Mod Browser (WIP)
|
mods.browser = Mod Browser
|
||||||
mods.browser.selected = Selected mod
|
mods.browser.selected = Selected mod
|
||||||
mods.browser.add = Install
|
mods.browser.add = Install
|
||||||
mods.github.open = View
|
mods.browser.reinstall = Reinstall
|
||||||
|
mods.github.open = Repo
|
||||||
|
mods.browser.sortdate = Sort by recent
|
||||||
|
mods.browser.sortstars = Sort by stars
|
||||||
|
|
||||||
schematic = Schematic
|
schematic = Schematic
|
||||||
schematic.add = Save Schematic...
|
schematic.add = Save Schematic...
|
||||||
@@ -89,6 +92,7 @@ joingame = Join Game
|
|||||||
customgame = Custom Game
|
customgame = Custom Game
|
||||||
newgame = New Game
|
newgame = New Game
|
||||||
none = <none>
|
none = <none>
|
||||||
|
none.found = [lightgray]<none found>
|
||||||
minimap = Minimap
|
minimap = Minimap
|
||||||
position = Position
|
position = Position
|
||||||
close = Close
|
close = Close
|
||||||
@@ -109,17 +113,20 @@ committingchanges = Committing Changes
|
|||||||
done = Done
|
done = Done
|
||||||
feature.unsupported = Your device does not support this feature.
|
feature.unsupported = Your device does not support this feature.
|
||||||
|
|
||||||
mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry GitHub.
|
mods.initfailed = [red]⚠[] The previous Mindustry instance failed to initialize. This was likely caused by misbehaving mods.\n\nTo prevent a crash loop, [red]all mods have been disabled.[]\n\nTo disable this feature, turn it off in [accent]Settings->Game->Disable Mods On Startup Crash[].
|
||||||
mods = Mods
|
mods = Mods
|
||||||
mods.none = [lightgray]No mods found!
|
mods.none = [lightgray]No mods found!
|
||||||
mods.guide = Modding Guide
|
mods.guide = Modding Guide
|
||||||
mods.report = Report Bug
|
mods.report = Report Bug
|
||||||
mods.openfolder = Open Folder
|
mods.openfolder = Open Folder
|
||||||
|
mods.viewcontent = View Content
|
||||||
mods.reload = Reload
|
mods.reload = Reload
|
||||||
mods.reloadexit = The game will now exit, to reload mods.
|
mods.reloadexit = The game will now exit, to reload mods.
|
||||||
|
mod.installed = [[Installed]
|
||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Enabled
|
mod.enabled = [lightgray]Enabled
|
||||||
mod.disabled = [scarlet]Disabled
|
mod.disabled = [scarlet]Disabled
|
||||||
|
mod.multiplayer.compatible = [gray]Multiplayer Compatible
|
||||||
mod.disable = Disable
|
mod.disable = Disable
|
||||||
mod.content = Content:
|
mod.content = Content:
|
||||||
mod.delete.error = Unable to delete mod. File may be in use.
|
mod.delete.error = Unable to delete mod. File may be in use.
|
||||||
@@ -210,9 +217,11 @@ server.hidden = Hidden
|
|||||||
trace = Trace Player
|
trace = Trace Player
|
||||||
trace.playername = Player name: [accent]{0}
|
trace.playername = Player name: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = Unique ID: [accent]{0}
|
trace.id = ID: [accent]{0}
|
||||||
trace.mobile = Mobile Client: [accent]{0}
|
trace.mobile = Mobile Client: [accent]{0}
|
||||||
trace.modclient = Custom Client: [accent]{0}
|
trace.modclient = Custom Client: [accent]{0}
|
||||||
|
trace.times.joined = Times Joined: [accent]{0}
|
||||||
|
trace.times.kicked = Times Kicked: [accent]{0}
|
||||||
invalidid = Invalid client ID! Submit a bug report.
|
invalidid = Invalid client ID! Submit a bug report.
|
||||||
server.bans = Bans
|
server.bans = Bans
|
||||||
server.bans.none = No banned players found!
|
server.bans.none = No banned players found!
|
||||||
@@ -286,6 +295,7 @@ cancel = Cancel
|
|||||||
openlink = Open Link
|
openlink = Open Link
|
||||||
copylink = Copy Link
|
copylink = Copy Link
|
||||||
back = Back
|
back = Back
|
||||||
|
max = Max
|
||||||
crash.export = Export Crash Logs
|
crash.export = Export Crash Logs
|
||||||
crash.none = No crash logs found.
|
crash.none = No crash logs found.
|
||||||
crash.exported = Crash logs exported.
|
crash.exported = Crash logs exported.
|
||||||
@@ -305,6 +315,7 @@ cancelbuilding = [accent][[{0}][] to clear plan
|
|||||||
selectschematic = [accent][[{0}][] to select+copy
|
selectschematic = [accent][[{0}][] to select+copy
|
||||||
pausebuilding = [accent][[{0}][] to pause building
|
pausebuilding = [accent][[{0}][] to pause building
|
||||||
resumebuilding = [scarlet][[{0}][] to resume building
|
resumebuilding = [scarlet][[{0}][] to resume building
|
||||||
|
enablebuilding = [scarlet][[{0}][] to enable building
|
||||||
showui = UI hidden.\nPress [accent][[{0}][] to show UI.
|
showui = UI hidden.\nPress [accent][[{0}][] to show UI.
|
||||||
wave = [accent]Wave {0}
|
wave = [accent]Wave {0}
|
||||||
wave.cap = [accent]Wave {0}/{1}
|
wave.cap = [accent]Wave {0}/{1}
|
||||||
@@ -360,7 +371,6 @@ editor.center = Center
|
|||||||
workshop = Workshop
|
workshop = Workshop
|
||||||
waves.title = Waves
|
waves.title = Waves
|
||||||
waves.remove = Remove
|
waves.remove = Remove
|
||||||
waves.never = <never>
|
|
||||||
waves.every = every
|
waves.every = every
|
||||||
waves.waves = wave(s)
|
waves.waves = wave(s)
|
||||||
waves.perspawn = per spawn
|
waves.perspawn = per spawn
|
||||||
@@ -389,7 +399,7 @@ editor.removeunit = Remove Unit
|
|||||||
editor.teams = Teams
|
editor.teams = Teams
|
||||||
editor.errorload = Error loading file.
|
editor.errorload = Error loading file.
|
||||||
editor.errorsave = Error saving file.
|
editor.errorsave = Error saving file.
|
||||||
editor.errorimage = That's an image, not a map.\n\nIf you want to import a 3.5/build 40 map, use the 'Import Legacy Map' button in the editor.
|
editor.errorimage = That's an image, not a map.
|
||||||
editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported.
|
editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported.
|
||||||
editor.errornot = This is not a map file.
|
editor.errornot = This is not a map file.
|
||||||
editor.errorheader = This map file is either not valid or corrupt.
|
editor.errorheader = This map file is either not valid or corrupt.
|
||||||
@@ -677,6 +687,7 @@ stat.drillspeed = Base Drill Speed
|
|||||||
stat.boosteffect = Boost Effect
|
stat.boosteffect = Boost Effect
|
||||||
stat.maxunits = Max Active Units
|
stat.maxunits = Max Active Units
|
||||||
stat.health = Health
|
stat.health = Health
|
||||||
|
stat.armor = Armor
|
||||||
stat.buildtime = Build Time
|
stat.buildtime = Build Time
|
||||||
stat.maxconsecutive = Max Consecutive
|
stat.maxconsecutive = Max Consecutive
|
||||||
stat.buildcost = Build Cost
|
stat.buildcost = Build Cost
|
||||||
@@ -692,6 +703,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.charge = Charge
|
||||||
stat.heatcapacity = Heat Capacity
|
stat.heatcapacity = Heat Capacity
|
||||||
stat.viscosity = Viscosity
|
stat.viscosity = Viscosity
|
||||||
stat.temperature = Temperature
|
stat.temperature = Temperature
|
||||||
@@ -719,6 +731,7 @@ bar.corereq = Core Base Required
|
|||||||
bar.drillspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
bar.pumpspeed = Pump Speed: {0}/s
|
bar.pumpspeed = Pump Speed: {0}/s
|
||||||
bar.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
|
bar.boost = Boost: {0}%
|
||||||
bar.powerbalance = Power: {0}/s
|
bar.powerbalance = Power: {0}/s
|
||||||
bar.powerstored = Stored: {0}/{1}
|
bar.powerstored = Stored: {0}/{1}
|
||||||
bar.poweramount = Power: {0}
|
bar.poweramount = Power: {0}
|
||||||
@@ -786,9 +799,12 @@ setting.shadows.name = Shadows
|
|||||||
setting.blockreplace.name = Automatic Block Suggestions
|
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.logichints.name = Logic Hints
|
||||||
setting.flow.name = Display Resource Flow Rate
|
setting.flow.name = Display Resource Flow Rate
|
||||||
setting.backgroundpause.name = Pause In Background
|
setting.backgroundpause.name = Pause In Background
|
||||||
setting.buildautopause.name = Auto-Pause Building
|
setting.buildautopause.name = Auto-Pause Building
|
||||||
|
setting.doubletapmine.name = Double-Tap to Mine
|
||||||
|
setting.modcrashdisable.name = Disable Mods On Startup Crash
|
||||||
setting.animatedwater.name = Animated Surfaces
|
setting.animatedwater.name = Animated Surfaces
|
||||||
setting.animatedshields.name = Animated Shields
|
setting.animatedshields.name = Animated Shields
|
||||||
setting.antialias.name = Antialias[lightgray] (requires restart)[]
|
setting.antialias.name = Antialias[lightgray] (requires restart)[]
|
||||||
@@ -917,6 +933,7 @@ keybind.toggle_menus.name = Toggle Menus
|
|||||||
keybind.chat_history_prev.name = Chat History Prev
|
keybind.chat_history_prev.name = Chat History Prev
|
||||||
keybind.chat_history_next.name = Chat History Next
|
keybind.chat_history_next.name = Chat History Next
|
||||||
keybind.chat_scroll.name = Chat Scroll
|
keybind.chat_scroll.name = Chat Scroll
|
||||||
|
keybind.chat_mode.name = Change Chat Mode
|
||||||
keybind.drop_unit.name = Drop Unit
|
keybind.drop_unit.name = Drop Unit
|
||||||
keybind.zoom_minimap.name = Zoom Minimap
|
keybind.zoom_minimap.name = Zoom Minimap
|
||||||
mode.help.title = Description of modes
|
mode.help.title = Description of modes
|
||||||
@@ -933,6 +950,7 @@ mode.custom = Custom Rules
|
|||||||
|
|
||||||
rules.infiniteresources = Infinite Resources
|
rules.infiniteresources = Infinite Resources
|
||||||
rules.reactorexplosions = Reactor Explosions
|
rules.reactorexplosions = Reactor Explosions
|
||||||
|
rules.coreincinerates = Core Incinerates Overflow
|
||||||
rules.schematic = Schematics Allowed
|
rules.schematic = Schematics Allowed
|
||||||
rules.wavetimer = Wave Timer
|
rules.wavetimer = Wave Timer
|
||||||
rules.waves = Waves
|
rules.waves = Waves
|
||||||
@@ -944,6 +962,8 @@ rules.blockdamagemultiplier = Block Damage Multiplier
|
|||||||
rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier
|
rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier
|
||||||
rules.unithealthmultiplier = Unit Health Multiplier
|
rules.unithealthmultiplier = Unit Health Multiplier
|
||||||
rules.unitdamagemultiplier = Unit Damage Multiplier
|
rules.unitdamagemultiplier = Unit Damage Multiplier
|
||||||
|
rules.unitcapvariable = Cores Contribute To Unit Cap
|
||||||
|
rules.unitcap = Base Unit Cap
|
||||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles)
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles)
|
||||||
rules.wavespacing = Wave Spacing:[lightgray] (sec)
|
rules.wavespacing = Wave Spacing:[lightgray] (sec)
|
||||||
rules.buildcostmultiplier = Build Cost Multiplier
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
@@ -1379,8 +1399,8 @@ block.inverted-sorter.description = Similar to a standard sorter, but outputs se
|
|||||||
block.router.description = Distributes input items to 3 output directions equally.
|
block.router.description = Distributes input items to 3 output directions equally.
|
||||||
block.router.details = A necessary evil. Using next to production inputs is not advised, as they will get clogged by output.
|
block.router.details = A necessary evil. Using next to production inputs is not advised, as they will get clogged by output.
|
||||||
block.distributor.description = Distributes input items to 7 output directions equally.
|
block.distributor.description = Distributes input items to 7 output directions equally.
|
||||||
block.overflow-gate.description = Only outputs items to the left and right if the front path is blocked. Cannot be used next to other gates.
|
block.overflow-gate.description = Only outputs items to the left and right if the front path is blocked.
|
||||||
block.underflow-gate.description = Opposite of an overflow gate. Outputs to the front if the left and right paths are blocked. Cannot be used next to other gates.
|
block.underflow-gate.description = Opposite of an overflow gate. Outputs to the front if the left and right paths are blocked.
|
||||||
block.mass-driver.description = Long-range item transport structure. Collects batches of items and shoots them to other mass drivers.
|
block.mass-driver.description = Long-range item transport structure. Collects batches of items and shoots them to other mass drivers.
|
||||||
block.mechanical-pump.description = Pumps and outputs liquids. Does not require power.
|
block.mechanical-pump.description = Pumps and outputs liquids. Does not require power.
|
||||||
block.rotary-pump.description = Pumps and outputs liquids. Requires power.
|
block.rotary-pump.description = Pumps and outputs liquids. Requires power.
|
||||||
@@ -1440,7 +1460,7 @@ block.ripple.description = Shoots clusters of shells at ground enemies over long
|
|||||||
block.cyclone.description = Fires explosive clumps of flak at nearby enemies.
|
block.cyclone.description = Fires explosive clumps of flak at nearby enemies.
|
||||||
block.spectre.description = Fires 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 = 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.foreshadow.description = Fires a large single-target bolt over long distances.
|
block.foreshadow.description = Fires a large single-target bolt over long distances. Prioritizes enemies with higher max health.
|
||||||
block.repair-point.description = Continuously repairs the closest damaged unit in its vicinity.
|
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.parallax.description = Fires a tractor beam that pulls in air targets, damaging them in the process.
|
||||||
@@ -1501,3 +1521,146 @@ unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Co
|
|||||||
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
|
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
|
||||||
unit.beta.description = Defends the Foundation 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.
|
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
|
||||||
|
|
||||||
|
lst.read = Read a number from a linked memory cell.
|
||||||
|
lst.write = Write a number to a linked memory cell.
|
||||||
|
lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used.
|
||||||
|
lst.draw = Add an operation to the drawing buffer.\nDoes not display anything until [accent]Draw Flush[] is used.
|
||||||
|
lst.drawflush = Flush queued [accent]Draw[] operations to a display.
|
||||||
|
lst.printflush = Flush queued [accent]Print[] operations to a message block.
|
||||||
|
lst.getlink = Get a processor link by index. Starts at 0.
|
||||||
|
lst.control = Control a building.
|
||||||
|
lst.radar = Locate units around a building with range.
|
||||||
|
lst.sensor = Get data from a building or unit.
|
||||||
|
lst.set = Set a variable.
|
||||||
|
lst.operation = Perform an operation on 1-2 variables.
|
||||||
|
lst.end = Jump to the top of the instruction stack.
|
||||||
|
lst.jump = Conditionally jump to another statement.
|
||||||
|
lst.unitbind = Bind to the next unit of a type, and store it in [accent]@unit[].
|
||||||
|
lst.unitcontrol = Control the currently bound unit.
|
||||||
|
lst.unitradar = Locate units around the currently bound unit.
|
||||||
|
lst.unitlocate = Locate a specific type of position/building anywhere on the map.\nRequires a bound unit.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||||
|
|
||||||
|
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
|
lenum.shoot = Shoot at a position.
|
||||||
|
lenum.shootp = Shoot at a unit/building with velocity prediction.
|
||||||
|
lenum.configure = Building configuration, e.g. sorter item.
|
||||||
|
lenum.enabled = Whether the block is enabled.
|
||||||
|
|
||||||
|
laccess.color = Illuminator color.
|
||||||
|
laccess.controller = Unit controller. If processor controlled, returns processor.\nIf in a formation, returns leader.\nOtherwise, returns the unit itself.
|
||||||
|
laccess.dead = Whether a unit/building is dead or no longer valid.
|
||||||
|
laccess.controlled = Returns:\n[accent]@ctrlProcessor[] if unit controller is processor\n[accent]@ctrlPlayer[] if unit/building controller is player\n[accent]@ctrlFormation[] if unit is in formation\nOtherwise, 0.
|
||||||
|
laccess.commanded = [red]Deprecated. Will be removed![]\nUse [accent]controlled[] instead.
|
||||||
|
|
||||||
|
graphicstype.clear = Fill the display with a color.
|
||||||
|
graphicstype.color = Set color for next drawing operations.
|
||||||
|
graphicstype.stroke = Set line width.
|
||||||
|
graphicstype.line = Draw line segment.
|
||||||
|
graphicstype.rect = Fill a rectangle.
|
||||||
|
graphicstype.linerect = Draw a rectangle outline.
|
||||||
|
graphicstype.poly = Fill a regular polygon.
|
||||||
|
graphicstype.linepoly = Draw a regular polygon outline.
|
||||||
|
graphicstype.triangle = Fill a triangle.
|
||||||
|
graphicstype.image = Draw an image of some content.\nex: [accent]@router[] or [accent]@dagger[].
|
||||||
|
|
||||||
|
lenum.always = Always true.
|
||||||
|
lenum.idiv = Integer division.
|
||||||
|
lenum.div = Division.\nReturns [accent]null[] on divide-by-zero.
|
||||||
|
lenum.mod = Modulo.
|
||||||
|
lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0.
|
||||||
|
lenum.notequal = Not equal. Coerces types.
|
||||||
|
lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[].
|
||||||
|
lenum.shl = Bit-shift left.
|
||||||
|
lenum.shr = Bit-shift right.
|
||||||
|
lenum.or = Bitwise OR.
|
||||||
|
lenum.land = Logical AND.
|
||||||
|
lenum.and = Bitwise AND.
|
||||||
|
lenum.not = Bitwise flip.
|
||||||
|
lenum.xor = Bitwise XOR.
|
||||||
|
|
||||||
|
lenum.min = Minimum of two numbers.
|
||||||
|
lenum.max = Maximum of two numbers.
|
||||||
|
lenum.angle = Angle of vector in degrees.
|
||||||
|
lenum.len = Length of vector.
|
||||||
|
lenum.sin = Sine, in degrees.
|
||||||
|
lenum.cos = Cosine, in degrees.
|
||||||
|
lenum.tan = Tangent, in degrees.
|
||||||
|
#not a typo, look up 'range notation'
|
||||||
|
lenum.rand = Random decimal in range [0, value).
|
||||||
|
lenum.log = Natural logarithm (ln).
|
||||||
|
lenum.log10 = Base 10 logarithm.
|
||||||
|
lenum.noise = 2D simplex noise.
|
||||||
|
lenum.abs = Absolute value.
|
||||||
|
lenum.sqrt = Square root.
|
||||||
|
|
||||||
|
lenum.any = Any unit.
|
||||||
|
lenum.ally = Ally unit.
|
||||||
|
lenum.attacker = Unit with a weapon.
|
||||||
|
lenum.enemy = Enemy unit.
|
||||||
|
lenum.boss = Guardian unit.
|
||||||
|
lenum.flying = Flying unit.
|
||||||
|
lenum.ground = Ground unit.
|
||||||
|
lenum.player = Unit controlled by a player.
|
||||||
|
|
||||||
|
lenum.ore = Ore deposit.
|
||||||
|
lenum.damaged = Damaged ally building.
|
||||||
|
lenum.spawn = Enemy spawn point.\nMay be a core or a position.
|
||||||
|
lenum.building = Building in a specific group.
|
||||||
|
|
||||||
|
lenum.core = Any core.
|
||||||
|
lenum.storage = Storage building, e.g. Vault.
|
||||||
|
lenum.generator = Buildings that generate power.
|
||||||
|
lenum.factory = Buildings that transform resources.
|
||||||
|
lenum.repair = Repair points.
|
||||||
|
lenum.rally = Command center.
|
||||||
|
lenum.battery = Any battery.
|
||||||
|
lenum.resupply = Resupply points.\nOnly relevant when [accent]"Unit Ammo"[] is enabled.
|
||||||
|
lenum.reactor = Impact/Thorium reactor.
|
||||||
|
lenum.turret = Any turret.
|
||||||
|
|
||||||
|
sensor.in = The building/unit to sense.
|
||||||
|
|
||||||
|
radar.from = Building to sense from.\nSensor range is limited by building range.
|
||||||
|
radar.target = Filter for units to sense.
|
||||||
|
radar.and = Additional filters.
|
||||||
|
radar.order = Sorting order. 0 to reverse.
|
||||||
|
radar.sort = Metric to sort results by.
|
||||||
|
radar.output = Variable to write output unit to.
|
||||||
|
|
||||||
|
unitradar.target = Filter for units to sense.
|
||||||
|
unitradar.and = Additional filters.
|
||||||
|
unitradar.order = Sorting order. 0 to reverse.
|
||||||
|
unitradar.sort = Metric to sort results by.
|
||||||
|
unitradar.output = Variable to write output unit to.
|
||||||
|
|
||||||
|
control.of = Building to control.
|
||||||
|
control.unit = Unit/building to aim at.
|
||||||
|
control.shoot = Whether to shoot.
|
||||||
|
|
||||||
|
unitlocate.enemy = Whether to locate enemy buildings.
|
||||||
|
unitlocate.found = Whether the object was found.
|
||||||
|
unitlocate.building = Output variable for located building.
|
||||||
|
unitlocate.outx = Output X coordinate.
|
||||||
|
unitlocate.outy = Output Y coordinate.
|
||||||
|
unitlocate.group = Building group to look for.
|
||||||
|
|
||||||
|
lenum.idle = Don't move, but keep building/mining.\nThe default state.
|
||||||
|
lenum.stop = Stop moving/mining/building.
|
||||||
|
lenum.move = Move to exact position.
|
||||||
|
lenum.approach = Approach a position with a radius.
|
||||||
|
lenum.pathfind = Pathfind to the enemy spawn.
|
||||||
|
lenum.target = Shoot a position.
|
||||||
|
lenum.targetp = Shoot a target with velocity prediction.
|
||||||
|
lenum.itemdrop = Drop an item.
|
||||||
|
lenum.itemtake = Take an item from a building.
|
||||||
|
lenum.paydrop = Drop current payload.
|
||||||
|
lenum.paytake = Pick up payload at current location.
|
||||||
|
lenum.flag = Numeric unit flag.
|
||||||
|
lenum.mine = Mine at a position.
|
||||||
|
lenum.build = Build a structure.
|
||||||
|
lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[].
|
||||||
|
lenum.within = Check if unit is near a position.
|
||||||
|
lenum.boost = Start/stop boosting.
|
||||||
|
|||||||
@@ -194,6 +194,7 @@ servers.local = Místní servery
|
|||||||
servers.remote = Vzdálené servery
|
servers.remote = Vzdálené servery
|
||||||
servers.global = Komunitní servery
|
servers.global = Komunitní servery
|
||||||
|
|
||||||
|
servers.disclaimer = Komunitní servery [accent]nejsou[] vlastněny ani kontrolovány vývojářem této hry.\n\nServery mohou obsahovat obsah vytvořený uživateli, který může na některé uživatele působit nepatřičně či nevhodně.
|
||||||
servers.showhidden = Zobraz skryté servery
|
servers.showhidden = Zobraz skryté servery
|
||||||
server.shown = Zobrazené
|
server.shown = Zobrazené
|
||||||
server.hidden = Skryté
|
server.hidden = Skryté
|
||||||
@@ -1278,6 +1279,10 @@ hint.payloadDrop.mobile = [accent]Ťupni a drž[] na prázdném místě pro polo
|
|||||||
hint.waveFire = [accent]Naplň[] věže vodou místo munice pro automatické hašení okolních požárů.
|
hint.waveFire = [accent]Naplň[] věže vodou místo munice pro automatické hašení okolních požárů.
|
||||||
hint.generator = \uf879 [accent]Spalovací generátory[] pálí uhlí a přenášení energii do sousedících bloků.\n\nPřenos energie na delší vzdálenost se provádí pomocí \uf87f [accent]Energetických uzlů[].
|
hint.generator = \uf879 [accent]Spalovací generátory[] pálí uhlí a přenášení energii do sousedících bloků.\n\nPřenos energie na delší vzdálenost se provádí pomocí \uf87f [accent]Energetických uzlů[].
|
||||||
hint.guardian = Jednotky [accent]Strážce[] jsou obrněné. Měkká munice, jako je například [accent]měď[] a [accent]olovo[] je [scarlet]neefektivní[].\n\nPoužij vylepšené věže nebo \uf835 [accent]grafitovou[] munici pro \uf861 Střílnu Duo/\uf859 Salvu, abys Strážce sejmul.
|
hint.guardian = Jednotky [accent]Strážce[] jsou obrněné. Měkká munice, jako je například [accent]měď[] a [accent]olovo[] je [scarlet]neefektivní[].\n\nPoužij vylepšené věže nebo \uf835 [accent]grafitovou[] munici pro \uf861 Střílnu Duo/\uf859 Salvu, abys Strážce sejmul.
|
||||||
|
hint.coreUpgrade = Jádro může být vylepšeno [accent]překrytím jádrem vyšší úrovně[].\n\nUmísti jádro typu [accent]Základ[] přes jádro typu [accent]Odštěpek[]. Ujisti se, že v okolí nejsou žádné překážky.
|
||||||
|
hint.presetLaunch = Na šedé [accent]sektory v přistávací zóně[], jako je například [accent]Zamrzlý les[], se lze vyslat kdykoli. Nevyžadují polapení okolního teritoria.\n\n[accent]Číslované sektory[], jako je tento, jsou [accent]volitelné[].
|
||||||
|
hint.coreIncinerate = Poté, co je kapacita jádra určité položky naplněna, jakékoliv další stejné přijaté položky budou [accent]zničeny[].
|
||||||
|
hint.coopCampaign = Když hraješ [accent]kooperativní kampaň[], položky, které jsou vyrobeny v této mapě, budou též zaslány [accent]do Tvých místních sektorů[].\n\nJakýkoliv vývoj dosažený hostitelem se též přenáší.
|
||||||
|
|
||||||
item.copper.description = Používá se ve všech typech bloků a munice.
|
item.copper.description = Používá se ve všech typech bloků a munice.
|
||||||
item.copper.details = Měď. Nezvykle nadpočetný kov na Serpulu. Konstrukčně slabý, pokud není rafinovaná.
|
item.copper.details = Měď. Nezvykle nadpočetný kov na Serpulu. Konstrukčně slabý, pokud není rafinovaná.
|
||||||
@@ -1471,7 +1476,7 @@ unit.zenith.description = Střílí salvy raket na všechny blízké nepřátele
|
|||||||
unit.antumbra.description = Střílí palbu střel na všechny blízké nepřátele.
|
unit.antumbra.description = Střílí palbu střel na všechny blízké nepřátele.
|
||||||
unit.eclipse.description = Vystřelí dva pronikavé lasery a záplavu protivzdušných střel na všechny blízké nepřátele.
|
unit.eclipse.description = Vystřelí dva pronikavé lasery a záplavu protivzdušných střel na všechny blízké nepřátele.
|
||||||
unit.mono.description = Samočinně těží měď a olovo a ukládá je do jádra.
|
unit.mono.description = Samočinně těží měď a olovo a ukládá je do jádra.
|
||||||
unit.poly.description = Samočinně obnovuje poškozené konstrukce a pomáhá ostatním jednotkám při stavbě.
|
unit.poly.description = Samočinně obnovuje zničené konstrukce a pomáhá ostatním jednotkám při stavbě.
|
||||||
unit.mega.description = Samočinně opravuje poškozené konstrukce. Je schopný přenést bloky a malé pozemní jednotky.
|
unit.mega.description = Samočinně opravuje poškozené konstrukce. Je schopný přenést bloky a malé pozemní jednotky.
|
||||||
unit.quad.description = Pouští velké bomby na pozemní cíle, opravuje spojenecké konstrukce a poškozuje nepřátele. Je schopen přenést středně velké pozemní jednotky.
|
unit.quad.description = Pouští velké bomby na pozemní cíle, opravuje spojenecké konstrukce a poškozuje nepřátele. Je schopen přenést středně velké pozemní jednotky.
|
||||||
unit.oct.description = Chrání blízké spojence pomocí regeneračního štítu. Je schopen přenést většinu pozemních jednotek.
|
unit.oct.description = Chrání blízké spojence pomocí regeneračního štítu. Je schopen přenést většinu pozemních jednotek.
|
||||||
|
|||||||
@@ -41,11 +41,13 @@ be.ignore = Ignorieren
|
|||||||
be.noupdates = Keine Aktualisierungen gefunden.
|
be.noupdates = Keine Aktualisierungen gefunden.
|
||||||
be.check = Auf Aktualisierungen prüfen
|
be.check = Auf Aktualisierungen prüfen
|
||||||
|
|
||||||
mod.featured.title = Mod Browser
|
|
||||||
mod.featured.dialog.title = Mod Browser
|
mod.featured.dialog.title = Mod Browser
|
||||||
mods.browser.selected = Ausgewählter Mod
|
mods.browser.selected = Ausgewählter Mod
|
||||||
mods.browser.add = Mod installieren
|
mods.browser.add = Installieren
|
||||||
mods.github.open = Auf GitHub ansehen
|
mods.browser.reinstall = Neu Installieren
|
||||||
|
mods.github.open = Github
|
||||||
|
mods.browser.sortdate = Nach neusten sortieren
|
||||||
|
mods.browser.sortstars = Nach Sternen sortieren
|
||||||
|
|
||||||
schematic = Entwurf
|
schematic = Entwurf
|
||||||
schematic.add = Entwurf speichern...
|
schematic.add = Entwurf speichern...
|
||||||
@@ -69,9 +71,9 @@ schematic.disabled = [scarlet]Entwürfe deaktiviert[]\nAuf dieser [accent]Karte[
|
|||||||
stats = Statistiken
|
stats = Statistiken
|
||||||
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}
|
||||||
stat.built = Gebäude gebaut:[accent] {0}
|
stat.built = Blöcke gebaut:[accent] {0}
|
||||||
stat.destroyed = Gebäude zerstört:[accent] {0}
|
stat.destroyed = Blöcke zerstört:[accent] {0}
|
||||||
stat.deconstructed = Gebäude abgebaut:[accent] {0}
|
stat.deconstructed = Blöcke abgebaut:[accent] {0}
|
||||||
stat.delivered = Übertragene Ressourcen:
|
stat.delivered = Übertragene Ressourcen:
|
||||||
stat.playtime = Spielzeit:[accent] {0}
|
stat.playtime = Spielzeit:[accent] {0}
|
||||||
stat.rank = Finaler Rang:[accent] {0}
|
stat.rank = Finaler Rang:[accent] {0}
|
||||||
@@ -90,6 +92,7 @@ joingame = Spiel beitreten
|
|||||||
customgame = Benutzerdefiniertes Spiel
|
customgame = Benutzerdefiniertes Spiel
|
||||||
newgame = Neues Spiel
|
newgame = Neues Spiel
|
||||||
none = <nichts>
|
none = <nichts>
|
||||||
|
none.found = [lightgray]<keine gefunden>
|
||||||
minimap = Minimap
|
minimap = Minimap
|
||||||
position = Position
|
position = Position
|
||||||
close = Schließen
|
close = Schließen
|
||||||
@@ -110,14 +113,16 @@ committingchanges = Veränderungen werden übernommen
|
|||||||
done = Fertig
|
done = Fertig
|
||||||
feature.unsupported = Dein System unterstützt dieses Feature nicht.
|
feature.unsupported = Dein System unterstützt dieses Feature nicht.
|
||||||
|
|
||||||
mods.alphainfo = Vergiss nicht, dass Mods in der Alpha sind und[scarlet] sehr fehlerhaft sein können[].\nMelde alle Probleme auf GitHub oder Discord.
|
mods.initfailed = [red]⚠[] Die vorherige Mindustry-Instanz konnte nicht starten. Dies lag wahrscheinlich an fehlerhaften Mods.\n\nDamit das Spiel starten kann, [red]wurden alle Mods deaktiviert.[]\n\nWenn du nicht willst, dass das passiert, kannst du es unter [accent]Einstellungen->Spiel->Mods bei Absturz deaktivieren[] ändern.
|
||||||
mods = Mods
|
mods = Mods
|
||||||
mods.none = [lightgray]Keine Mods gefunden!
|
mods.none = [lightgray]Keine Mods gefunden!
|
||||||
mods.guide = Modding-Anleitung
|
mods.guide = Modding-Anleitung
|
||||||
mods.report = Problem melden
|
mods.report = Problem melden
|
||||||
mods.openfolder = Mod-Verzeichnis öffnen
|
mods.openfolder = Mod-Verzeichnis öffnen
|
||||||
|
mods.viewcontent = Inhalt ansehen
|
||||||
mods.reload = Neu laden
|
mods.reload = Neu laden
|
||||||
mods.reloadexit = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden.
|
mods.reloadexit = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden.
|
||||||
|
mod.installed = [[Installiert]
|
||||||
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
|
||||||
@@ -211,9 +216,11 @@ server.hidden = Versteckt
|
|||||||
trace = Spieler verfolgen
|
trace = Spieler verfolgen
|
||||||
trace.playername = Spielername: [accent]{0}
|
trace.playername = Spielername: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = Eindeutige ID: [accent]{0}
|
trace.id = ID: [accent]{0}
|
||||||
trace.mobile = Mobiler Client: [accent]{0}
|
trace.mobile = Mobiler Client: [accent]{0}
|
||||||
trace.modclient = Gemoddeter Client: [accent]{0}
|
trace.modclient = Gemoddeter Client: [accent]{0}
|
||||||
|
trace.times.joined = Beigetreten: [accent]{0}[] Mal
|
||||||
|
trace.times.kicked = Rausgeworfen: [accent]{0}[] Mal
|
||||||
invalidid = Ungültige Client-ID! Berichte den Fehler.
|
invalidid = Ungültige Client-ID! Berichte den Fehler.
|
||||||
server.bans = Verbannungen
|
server.bans = Verbannungen
|
||||||
server.bans.none = Keine verbannten Spieler gefunden!
|
server.bans.none = Keine verbannten Spieler gefunden!
|
||||||
@@ -287,6 +294,7 @@ cancel = Abbruch
|
|||||||
openlink = Link öffnen
|
openlink = Link öffnen
|
||||||
copylink = Link kopieren
|
copylink = Link kopieren
|
||||||
back = Zurück
|
back = Zurück
|
||||||
|
max = Max
|
||||||
crash.export = Crash-Logs exportieren
|
crash.export = Crash-Logs exportieren
|
||||||
crash.none = Keine Crash-Logs gefunden.
|
crash.none = Keine Crash-Logs gefunden.
|
||||||
crash.exported = Crash-Logs wurden erfolgreich exportiert.
|
crash.exported = Crash-Logs wurden erfolgreich exportiert.
|
||||||
@@ -306,6 +314,7 @@ 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
|
||||||
|
enablebuilding = [scarlet][[{0}][] um zu bauen
|
||||||
showui = Bedienflächen versteckt.\nDrücke [accent][[{0}][], um sie wieder anzuzeigen.
|
showui = Bedienflächen versteckt.\nDrücke [accent][[{0}][], um sie wieder anzuzeigen.
|
||||||
wave = [accent]Welle {0}
|
wave = [accent]Welle {0}
|
||||||
wave.cap = [accent]Welle {0}/{1}
|
wave.cap = [accent]Welle {0}/{1}
|
||||||
@@ -361,7 +370,6 @@ editor.center = Zur Mitte
|
|||||||
workshop = Workshop
|
workshop = Workshop
|
||||||
waves.title = Wellen
|
waves.title = Wellen
|
||||||
waves.remove = Entfernen
|
waves.remove = Entfernen
|
||||||
waves.never = <nie>
|
|
||||||
waves.every = alle
|
waves.every = alle
|
||||||
waves.waves = Welle(n)
|
waves.waves = Welle(n)
|
||||||
waves.perspawn = pro Spawn
|
waves.perspawn = pro Spawn
|
||||||
@@ -390,7 +398,7 @@ editor.removeunit = Bereich entfernen
|
|||||||
editor.teams = Teams
|
editor.teams = Teams
|
||||||
editor.errorload = Fehler beim Laden der Datei:\n[accent]{0}
|
editor.errorload = Fehler beim Laden der Datei:\n[accent]{0}
|
||||||
editor.errorsave = Fehler beim Speichern der Datei:\n[accent]{0}
|
editor.errorsave = Fehler beim Speichern der Datei:\n[accent]{0}
|
||||||
editor.errorimage = Das ist ein Bild, keine Karte. Wechsle nicht den Dateityp und erwarte, dass es funktioniert.\n\nWenn du eine 'v3.5/build 40'-Karte importieren möchtest, benutze den 'Importiere Terrainbild'-Knopf im Editor.
|
editor.errorimage = Das ist ein Bild, keine Karte.
|
||||||
editor.errorlegacy = Diese Karte ist zu alt und benutzt ein veraltetes Kartenformat, das nicht mehr unterstützt wird.
|
editor.errorlegacy = Diese Karte ist zu alt und benutzt ein veraltetes Kartenformat, das nicht mehr unterstützt wird.
|
||||||
editor.errornot = Dies ist keine Kartendatei.
|
editor.errornot = Dies ist keine Kartendatei.
|
||||||
editor.errorheader = Diese Karte ist entweder nicht gültig oder beschädigt.
|
editor.errorheader = Diese Karte ist entweder nicht gültig oder beschädigt.
|
||||||
@@ -420,7 +428,7 @@ editor.exportimage = Export in Terrainbild-Datei
|
|||||||
editor.exportimage.description = Exportiere in ein Kartenbild
|
editor.exportimage.description = Exportiere in ein Kartenbild
|
||||||
editor.loadimage = Bild\nladen
|
editor.loadimage = Bild\nladen
|
||||||
editor.saveimage = Bild\nspeichern
|
editor.saveimage = Bild\nspeichern
|
||||||
editor.unsaved = [crimson] Einige Änderungen wurden noch nicht gespeichert! [] Möchtest du den Editor wirklich verlassen?
|
editor.unsaved = Möchtest du den Editor wirklich verlassen? [crimson] Alle ungespeicherten Änderungen werden dann verworfen!
|
||||||
editor.resizemap = Größe der Karte ändern
|
editor.resizemap = Größe der Karte ändern
|
||||||
editor.mapname = Kartenname
|
editor.mapname = Kartenname
|
||||||
editor.overwrite = [accent] Warnung! Dies überschreibt eine vorhandene Karte.
|
editor.overwrite = [accent] Warnung! Dies überschreibt eine vorhandene Karte.
|
||||||
@@ -678,6 +686,7 @@ stat.drillspeed = Bohrgeschwindigkeit
|
|||||||
stat.boosteffect = Verstärkungseffekt
|
stat.boosteffect = Verstärkungseffekt
|
||||||
stat.maxunits = Max. aktive Einheiten
|
stat.maxunits = Max. aktive Einheiten
|
||||||
stat.health = Lebenspunkte
|
stat.health = Lebenspunkte
|
||||||
|
stat.armour = Panzer
|
||||||
stat.buildtime = Baudauer
|
stat.buildtime = Baudauer
|
||||||
stat.maxconsecutive = Max. Konsekutive
|
stat.maxconsecutive = Max. Konsekutive
|
||||||
stat.buildcost = Baukosten
|
stat.buildcost = Baukosten
|
||||||
@@ -693,6 +702,7 @@ stat.lightningchance = Blitzwahrscheinlichkeit
|
|||||||
stat.lightningdamage = Blitzschaden
|
stat.lightningdamage = Blitzschaden
|
||||||
stat.flammability = Brennbarkeit
|
stat.flammability = Brennbarkeit
|
||||||
stat.radioactivity = Radioaktivität
|
stat.radioactivity = Radioaktivität
|
||||||
|
stat.charge = Ladung
|
||||||
stat.heatcapacity = Hitzekapazität
|
stat.heatcapacity = Hitzekapazität
|
||||||
stat.viscosity = Viskosität
|
stat.viscosity = Viskosität
|
||||||
stat.temperature = Temperatur
|
stat.temperature = Temperatur
|
||||||
@@ -720,6 +730,7 @@ bar.corereq = Kern-Basis erforderlich
|
|||||||
bar.drillspeed = Bohrgeschwindigkeit: {0}/s
|
bar.drillspeed = Bohrgeschwindigkeit: {0}/s
|
||||||
bar.pumpspeed = Pumpengeschwindigkeit: {0}/s
|
bar.pumpspeed = Pumpengeschwindigkeit: {0}/s
|
||||||
bar.efficiency = Effizienz: {0}%
|
bar.efficiency = Effizienz: {0}%
|
||||||
|
bar.boost = Beschleunigung: {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}
|
||||||
@@ -787,9 +798,12 @@ 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.logichints.name = Logiktipps
|
||||||
setting.flow.name = Ressourcen-Fluss anzeigen
|
setting.flow.name = Ressourcen-Fluss anzeigen
|
||||||
setting.backgroundpause.name = Im Hintergrund pausieren
|
setting.backgroundpause.name = Im Hintergrund pausieren
|
||||||
setting.buildautopause.name = Bauen automatisch pausieren
|
setting.buildautopause.name = Bauen automatisch pausieren
|
||||||
|
setting.doubletapmine.name = Doppeltippen zum Abbauen
|
||||||
|
setting.modcrashdisable.name = Mods bei Absturz deaktivieren
|
||||||
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)[]
|
||||||
@@ -918,6 +932,7 @@ 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
|
||||||
keybind.chat_scroll.name = Chat scrollen
|
keybind.chat_scroll.name = Chat scrollen
|
||||||
|
keybind.chat_mode.name = Chatmodus ändern
|
||||||
keybind.drop_unit.name = Einheit absetzen
|
keybind.drop_unit.name = Einheit absetzen
|
||||||
keybind.zoom_minimap.name = Minimap-Zoom
|
keybind.zoom_minimap.name = Minimap-Zoom
|
||||||
mode.help.title = Beschreibung der Modi
|
mode.help.title = Beschreibung der Modi
|
||||||
@@ -934,6 +949,7 @@ mode.custom = Angepasste Regeln
|
|||||||
|
|
||||||
rules.infiniteresources = Unbegrenzte Ressourcen
|
rules.infiniteresources = Unbegrenzte Ressourcen
|
||||||
rules.reactorexplosions = Reaktor-Explosionen
|
rules.reactorexplosions = Reaktor-Explosionen
|
||||||
|
rules.coreincinerates = Kern verbrennt überflüssige Materialien
|
||||||
rules.schematic = Entwürfe erlaubt
|
rules.schematic = Entwürfe erlaubt
|
||||||
rules.wavetimer = Wellen-Timer
|
rules.wavetimer = Wellen-Timer
|
||||||
rules.waves = Wellen
|
rules.waves = Wellen
|
||||||
@@ -945,6 +961,8 @@ 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
|
||||||
|
rules.unitcapvariable = Kerne zählen zum Einheiten-Limit dazu
|
||||||
|
rules.unitcap = Einheiten-Limit
|
||||||
rules.enemycorebuildradius = Bauverbot-Radius durch feindlichen Kern:[lightgray] (Kacheln)
|
rules.enemycorebuildradius = Bauverbot-Radius durch feindlichen Kern:[lightgray] (Kacheln)
|
||||||
rules.wavespacing = Wellen-Abstand:[lightgray] (Sek)
|
rules.wavespacing = Wellen-Abstand:[lightgray] (Sek)
|
||||||
rules.buildcostmultiplier = Bau-Kosten Multiplikator
|
rules.buildcostmultiplier = Bau-Kosten Multiplikator
|
||||||
@@ -954,7 +972,7 @@ rules.waitForWaveToEnd = Warten bis Welle endet
|
|||||||
rules.dropzoneradius = Drop-Zonen-Radius:[lightgray] (Kacheln)
|
rules.dropzoneradius = Drop-Zonen-Radius:[lightgray] (Kacheln)
|
||||||
rules.unitammo = Einheiten benötigen Munition
|
rules.unitammo = Einheiten benötigen Munition
|
||||||
rules.title.waves = Wellen
|
rules.title.waves = Wellen
|
||||||
rules.title.resourcesbuilding = Ressourcen & Gebäude
|
rules.title.resourcesbuilding = Ressourcen & Blöcke
|
||||||
rules.title.enemy = Gegner
|
rules.title.enemy = Gegner
|
||||||
rules.title.unit = Einheiten
|
rules.title.unit = Einheiten
|
||||||
rules.title.experimental = Experimentell
|
rules.title.experimental = Experimentell
|
||||||
@@ -1030,7 +1048,7 @@ unit.reign.name = Reign
|
|||||||
unit.vela.name = Vela
|
unit.vela.name = Vela
|
||||||
unit.corvus.name = Korvus
|
unit.corvus.name = Korvus
|
||||||
|
|
||||||
block.resupply-point.name = Nachlade-Punkt
|
block.resupply-point.name = Munitionsvorrat
|
||||||
block.parallax.name = Parallax
|
block.parallax.name = Parallax
|
||||||
block.cliff.name = Klippe
|
block.cliff.name = Klippe
|
||||||
block.sand-boulder.name = Sandbrocken
|
block.sand-boulder.name = Sandbrocken
|
||||||
@@ -1309,7 +1327,7 @@ item.coal.details = Scheint versteinerte Pflanzenmasse zu sein, die sich schon l
|
|||||||
item.titanium.description = Wird im Flüssigkeitsbereich, im Bohrerbereich und für Flugzeuge vielfältig eingesetzt.
|
item.titanium.description = Wird im Flüssigkeitsbereich, im Bohrerbereich und für Flugzeuge vielfältig eingesetzt.
|
||||||
item.thorium.description = Wird als festes Baumaterial oder radioaktiver Kraftstoff verwendet.
|
item.thorium.description = Wird als festes Baumaterial oder radioaktiver Kraftstoff verwendet.
|
||||||
item.scrap.description = Wird in Pulverisierer und Schmelzer zu anderen Materialien bearbeitet.
|
item.scrap.description = Wird in Pulverisierer und Schmelzer zu anderen Materialien bearbeitet.
|
||||||
item.scrap.details = Übriggebliebene Reste alter Gebäude oder Einheiten.
|
item.scrap.details = Übriggebliebene Reste alter Blöcke oder Einheiten.
|
||||||
item.silicon.description = Wird in Solarzellen, komplizierter Elektronik und als zielsuchende Munition verwendet.
|
item.silicon.description = Wird in Solarzellen, komplizierter Elektronik und als zielsuchende Munition verwendet.
|
||||||
item.plastanium.description = Wird für fortgeschrittene Einheiten, Isolation und Munition eingesetzt.
|
item.plastanium.description = Wird für fortgeschrittene Einheiten, Isolation und Munition eingesetzt.
|
||||||
item.phase-fabric.description = Kann in Elektronik und selbstreparierende Blöcke verwendet werden.
|
item.phase-fabric.description = Kann in Elektronik und selbstreparierende Blöcke verwendet werden.
|
||||||
@@ -1380,8 +1398,8 @@ block.inverted-sorter.description = Wie ein normaler Sortierer, aber gibt das au
|
|||||||
block.router.description = Verteilt Materialien auf bis zu drei Richtungen.
|
block.router.description = Verteilt Materialien auf bis zu drei Richtungen.
|
||||||
block.router.details = Ein nötiges Übel. Es ist nicht empfehlenswert, ihn neben Fabriken zu setzen, da er sich dort verstopfen kann.
|
block.router.details = Ein nötiges Übel. Es ist nicht empfehlenswert, ihn neben Fabriken zu setzen, da er sich dort verstopfen kann.
|
||||||
block.distributor.description = Verteilt Materialien auf bis zu sieben Richtungen.
|
block.distributor.description = Verteilt Materialien auf bis zu sieben Richtungen.
|
||||||
block.overflow-gate.description = Gibt Materialien nur zu den Seiten heraus, wenn der fordere Ausgang blockiert ist. Kann nicht neben anderen Überlauf- oder Unterlauftoren verwendet werden.
|
block.overflow-gate.description = Gibt Materialien nur zu den Seiten heraus, wenn der fordere Ausgang blockiert ist.
|
||||||
block.underflow-gate.description = Das Gegenteil eines Überlauftors. Gibt Materialien nur nach vorne heraus, wenn die Seiten blockiert sind. Kann nicht neben anderen Überlauf- oder Unterlauftoren verwendet werden.
|
block.underflow-gate.description = Das Gegenteil eines Überlauftors. Gibt Materialien nur nach vorne heraus, wenn die Seiten blockiert sind.
|
||||||
block.mass-driver.description = Ein Transportblock mit sehr hoher Reichweite. Sammelt mehrere Materialien und schießt sie zu einem verbundenen Massenbeschleuniger.
|
block.mass-driver.description = Ein Transportblock mit sehr hoher Reichweite. Sammelt mehrere Materialien und schießt sie zu einem verbundenen Massenbeschleuniger.
|
||||||
block.mechanical-pump.description = Eine Pumpe, die keinen Strom benötigt.
|
block.mechanical-pump.description = Eine Pumpe, die keinen Strom benötigt.
|
||||||
block.rotary-pump.description = Eine Pumpe, die Strom verbraucht.
|
block.rotary-pump.description = Eine Pumpe, die Strom verbraucht.
|
||||||
@@ -1502,3 +1520,146 @@ unit.omura.description = Schießt eine Railgun mit hoher Reichweite, um Gegner z
|
|||||||
unit.alpha.description = Beschützt den Scherbenkern vor Feinden. Baut Blöcke.
|
unit.alpha.description = Beschützt den Scherbenkern vor Feinden. Baut Blöcke.
|
||||||
unit.beta.description = Beschützt den Fundamentkern vor Feinden. Baut Blöcke.
|
unit.beta.description = Beschützt den Fundamentkern vor Feinden. Baut Blöcke.
|
||||||
unit.gamma.description = Beschützt den Nukleuskern vor Feinden. Baut Blöcke.
|
unit.gamma.description = Beschützt den Nukleuskern vor Feinden. Baut Blöcke.
|
||||||
|
|
||||||
|
lst.read = Liest einen Wert aus einer verbundenen Spiecherzelle.
|
||||||
|
lst.write = Schreibt eine Zahl in einer verbundene Speicherzelle.
|
||||||
|
lst.print = Fügt Text zum Textspeicher hinzu.\nZeigt nichts an, bis [accent]Print Flush[] verwendet wird.
|
||||||
|
lst.draw = Fügt eine [accent]Draw[]-Aufgabe zum Bildspeicher hinzu.\nZeigt nichts an, bis [accent]Draw Flush[] verwendet wird.
|
||||||
|
lst.drawflush = Druckt [accent]Draw[]-Aufgaben aus dem Bildspeicher auf einen Bildschirm.
|
||||||
|
lst.printflush = Druckt [accent]Print[]-Aufgaben aus dem Textspeicher auf einen Nachrichtenblock.
|
||||||
|
lst.getlink = Gibt ein verbundenen Block wieder. Fängt bei 0 an.
|
||||||
|
lst.control = Steuert einen Block.
|
||||||
|
lst.radar = Findet Einheiten.
|
||||||
|
lst.sensor = Gibt Daten über einen Block oder eine Einheit wieder.
|
||||||
|
lst.set = Setzt eine Variable fest.
|
||||||
|
lst.operation = Verändert eine Variable.
|
||||||
|
lst.end = Springt wieder nach oben.
|
||||||
|
lst.jump = Falls die Bedingung erfüllt ist, wird woanders weitergemacht.
|
||||||
|
lst.unitbind = Speichert eine Einheit einer Sorte als [accent]@unit[].
|
||||||
|
lst.unitcontrol = Steuert [accent]@unit[].
|
||||||
|
lst.unitradar = Findet Einheiten in der Nähe von [accent]@unit[].
|
||||||
|
lst.unitlocate = Findet mit [accent]@unit[] bestimmte Positionen / Blöcke auf der ganzen Karte.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Logik, die Blöcke baut, ist hier nicht erlaubt.
|
||||||
|
|
||||||
|
lenum.type = Englischer Name eines Blocks / einer Einheit. Ein Verteiler gibt [accent]@router[] wieder.\nKein string.
|
||||||
|
lenum.shoot = Schießt auf eine Position.
|
||||||
|
lenum.shootp = Schießt auf eine Einheit / einen Block und sagt deren Position voraus.
|
||||||
|
lenum.configure = Blockkonfiguration, z.B. das ausgewählte Item in einem Sortierer.
|
||||||
|
lenum.enabled = Ob der Block an oder aus ist.
|
||||||
|
|
||||||
|
laccess.color = Illuminiererfarbe.
|
||||||
|
laccess.controller = Einheitensteurer. Gibt "processor" zurück, wenn die Einheit prozessorgesteuert ist,.\nGibt den Steuerer zurück, wenn die Einheit Teil einer Formation ist.\nSonst wird einfach die Einheit zurückgegeben.
|
||||||
|
laccess.dead = Ob ein Block / eine Einheit tot oder nicht mehr gültig ist.
|
||||||
|
laccess.controlled = Gibt zurück:\n[accent]@ctrlProcessor[] wenn die Einheit prozessorgesteuert ist\n[accent]@ctrlPlayer[] wenn die Einheit / der Block von einem Spieler gesteuert wird\n[accent]@ctrlFormation[] wenn die Einheit Teil einer Formation ist\nSonst 0.
|
||||||
|
laccess.commanded = [red]Veraltet. Wird bald entfernt![]\nBenutze stattdessen [accent]controlled[].
|
||||||
|
|
||||||
|
graphicstype.stroke = Setzt die Linienbreite fest.
|
||||||
|
graphicstype.line = Zeichnet eine Linie.
|
||||||
|
graphicstype.clear = Füllt den Bildschirm mit einer Farbe.
|
||||||
|
graphicstype.color = Wählt eine Farbe aus.
|
||||||
|
graphicstype.rect = Zeichnet ein Rechteck.
|
||||||
|
graphicstype.linerect = Zeichnet den Umriss eines Rechtecks.
|
||||||
|
graphicstype.poly = Füllt ein gleichmäßiges Polygon.
|
||||||
|
graphicstype.linepoly = Zeichnet den Umriss eines gleichmäßigen Polygons.
|
||||||
|
graphicstype.triangle = Zeichnet ein Dreieck.
|
||||||
|
graphicstype.image = Zeichnet ein Bild von einem englischen Namen.\nz.B. [accent]@router[] oder [accent]@dagger[].
|
||||||
|
|
||||||
|
lenum.always = Immer.
|
||||||
|
lenum.idiv = Division mit ganzen Zahlen.
|
||||||
|
lenum.div = Division.\nGibt bei Teilung durch null [accent]null[] zurück.
|
||||||
|
lenum.mod = Modulo.
|
||||||
|
lenum.equal = Prüft Gleichheit.\nNicht-"null" Objekte, die mit Zahlen verglichen werden, werden 1.
|
||||||
|
lenum.notequal = Prüft Ungleichheit.
|
||||||
|
lenum.strictequal = Prüft strenge Gleichheit.\nKann verwendet werden, um "null" zu finden.
|
||||||
|
lenum.shl = Bit-shift nacht links.
|
||||||
|
lenum.shr = Bit-shift nach rechts.
|
||||||
|
lenum.or = Bitwise ODER.
|
||||||
|
lenum.land = Logisches AND.
|
||||||
|
lenum.and = Bitwise UND.
|
||||||
|
lenum.not = Bitwise NOT.
|
||||||
|
lenum.xor = Bitwise XOR.
|
||||||
|
|
||||||
|
lenum.min = Die Größte von zwei Zahlen.
|
||||||
|
lenum.max = Die Kleinste von zwei Zahlen.
|
||||||
|
lenum.angle = Angle of vector in degrees.
|
||||||
|
lenum.len = Length of vector.
|
||||||
|
lenum.sin = Sinus in Grad.
|
||||||
|
lenum.cos = Cosinus in Grad.
|
||||||
|
lenum.tan = Tangens in Grad.
|
||||||
|
#not a typo, look up 'range notation'
|
||||||
|
lenum.rand = Zufällige Zahl zwischen [0, <wert>).
|
||||||
|
lenum.log = Logarithmus (ln).
|
||||||
|
lenum.log10 = Logarithmus zur Basis 10.
|
||||||
|
lenum.noise = 2D rauschen.
|
||||||
|
lenum.abs = Betrag.
|
||||||
|
lenum.sqrt = Quadratwurzel.
|
||||||
|
|
||||||
|
lenum.any = Irgendeine Einheit.
|
||||||
|
lenum.ally = Freundliche Einheit.
|
||||||
|
lenum.attacker = Einheit mit Waffe.
|
||||||
|
lenum.enemy = Gegnerische Einheit.
|
||||||
|
lenum.boss = Bosseinheit.
|
||||||
|
lenum.flying = Lufteinheit.
|
||||||
|
lenum.ground = Bodeneinheit.
|
||||||
|
lenum.player = Spielergesteuerte Einheit.
|
||||||
|
|
||||||
|
lenum.ore = Erz.
|
||||||
|
lenum.damaged = Beschädigter, alliierter Block.
|
||||||
|
lenum.spawn = Gegnerischer Spawnpunkt.\nKann ein Kern oder eine Position sein.
|
||||||
|
lenum.building = Ein Block einer bestimmten Sorte.
|
||||||
|
|
||||||
|
lenum.core = Irgendein Kern.
|
||||||
|
lenum.storage = Speicherblock, z.B. ein Tresor.
|
||||||
|
lenum.generator = Blöcke, die Strom generieren.
|
||||||
|
lenum.factory = Blöcke, die Ressourcen verarbeiten.
|
||||||
|
lenum.repair = Reperaturpunkt.
|
||||||
|
lenum.rally = Kommandozentrale
|
||||||
|
lenum.battery = Irgendeine Batterie.
|
||||||
|
lenum.resupply = Munitionsvorrat.\nNur wichtig, wenn [accent]"Einheiten benötigen Munition"[] an ist.
|
||||||
|
lenum.reactor = Schlag- / Thoriumreaktor.
|
||||||
|
lenum.turret = Irgendein Geschütz.
|
||||||
|
|
||||||
|
sensor.in = Der Block / die Einheit.
|
||||||
|
|
||||||
|
radar.from = Block zu benutzen. [accent]Sensor[]-Reichweite hängt von der Blockreichweite ab.
|
||||||
|
radar.target = Einheitenfilter.
|
||||||
|
radar.and = Weitere Filter.
|
||||||
|
radar.order = Sortierreihenfolge der Ergebnisse. 0 bedeutet rückwärts.
|
||||||
|
radar.sort = Sortiermethode der Ergebnisse.
|
||||||
|
radar.output = Variable für das Ergebnis.
|
||||||
|
|
||||||
|
unitradar.target = Einheitenfilter.
|
||||||
|
unitradar.and = Weitere Filter.
|
||||||
|
unitradar.order = Sortierreihenfolge der Ergebnisse. 0 bedeutet rückwärts.
|
||||||
|
unitradar.sort = Sortiermethode der Ergebnisse.
|
||||||
|
unitradar.output = Variable für das Ergebnis.
|
||||||
|
|
||||||
|
control.of = Block, der gesteuert werden soll.
|
||||||
|
control.unit = Zieleinheit / Zielblock.
|
||||||
|
control.shoot = Ob geschossen werden soll.
|
||||||
|
|
||||||
|
unitlocate.enemy = Ob gegnerische Blöcke gesucht werden sollen.
|
||||||
|
unitlocate.found = Ob der Block gefunden wurde.
|
||||||
|
unitlocate.building = Variable für das Ergebnis.
|
||||||
|
unitlocate.outx = Variable für die X-Koordinate.
|
||||||
|
unitlocate.outy = Variable für die Y-Koordinate.
|
||||||
|
unitlocate.group = Gesuchter Blocktyp.
|
||||||
|
|
||||||
|
lenum.idle = Bewegt sich nicht, baut aber weiter ab.\nDer normale Zustand.
|
||||||
|
lenum.stop = Bewegung / Abbau / Bau abbrechen.
|
||||||
|
lenum.move = Geht zu diese Position.
|
||||||
|
lenum.approach = Geht auf einen Punkt mit einem bestimmten Radius zu.
|
||||||
|
lenum.pathfind = Geht zum gegnerischen Spawnpunkt.
|
||||||
|
lenum.target = Schießt auf eine Position.
|
||||||
|
lenum.targetp = Schießt auf eine Einheit und sagt deren Position voraus.
|
||||||
|
lenum.itemdrop = Items abwerfen.
|
||||||
|
lenum.itemtake = Items aus einem Block nehmen.
|
||||||
|
lenum.paydrop = Lässt einen Block / eine Einheit wieder fallen.
|
||||||
|
lenum.paytake = Hebt einen Block / eine kleine Einheit auf.
|
||||||
|
lenum.flag = Zahl, mit der eine Einheit identifiziert werden kann.
|
||||||
|
lenum.mine = Erz von einer Position abbauen.
|
||||||
|
lenum.build = Einen Block bauen.
|
||||||
|
lenum.getblock = Gibt den Blocktyp an den Koordinaten zurück.\nEinheiten müssen nah genug dran sein.\nFeste nicht-Blöcke sind [accent]@solid[].
|
||||||
|
lenum.within = Prüft, ob eine Einheit in einem Radius um einen Punkt ist.
|
||||||
|
lenum.boost = Aktiviert / deaktiviert den Boost.
|
||||||
@@ -24,7 +24,7 @@ gameover.waiting = [accent]Esperando el próximo mapa...
|
|||||||
highscore = [accent]¡Nuevo récord de puntuación!
|
highscore = [accent]¡Nuevo récord de puntuación!
|
||||||
copied = Copiado
|
copied = Copiado
|
||||||
indev.notready = Esta parte del juego no esta lista aún.
|
indev.notready = Esta parte del juego no esta lista aún.
|
||||||
indev.campaign = [accent]Has llegado al final de la campaña![]\n\nEsto es todo lo lejos que puedes llegar por ahora.\nLos viajes interplanetarios se añadirán en futuras actualizaciones.
|
indev.campaign = [accent]Has llegado al final de la campaña![]\n\nEsto es lo más lejos que puedes llegar por ahora.\nLos viajes interplanetarios se añadirán en futuras actualizaciones.
|
||||||
|
|
||||||
load.sound = Sonidos
|
load.sound = Sonidos
|
||||||
load.map = Mapas
|
load.map = Mapas
|
||||||
@@ -570,7 +570,7 @@ threat.low = Baja
|
|||||||
threat.medium = Media
|
threat.medium = Media
|
||||||
threat.high = Alta
|
threat.high = Alta
|
||||||
threat.extreme = Extrema
|
threat.extreme = Extrema
|
||||||
threat.eradication = Exterminio
|
threat.eradication = Erradicación
|
||||||
|
|
||||||
planets = Planetas
|
planets = Planetas
|
||||||
|
|
||||||
@@ -585,7 +585,7 @@ sector.ruinousShores.name = Costas Ruinosas
|
|||||||
sector.stainedMountains.name = Montañas manchadas
|
sector.stainedMountains.name = Montañas manchadas
|
||||||
sector.desolateRift.name = Grieta desolada
|
sector.desolateRift.name = Grieta desolada
|
||||||
sector.nuclearComplex.name = Complejo de producción nuclear
|
sector.nuclearComplex.name = Complejo de producción nuclear
|
||||||
sector.overgrowth.name = Crecimiento excesivo
|
sector.overgrowth.name = Sobrecrecimiento
|
||||||
sector.tarFields.name = Campos de alquitrán
|
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
|
||||||
@@ -594,13 +594,13 @@ sector.windsweptIslands.name = Islas Windswept
|
|||||||
sector.extractionOutpost.name = Puesto de avanzada de Extracción
|
sector.extractionOutpost.name = Puesto de avanzada de Extracción
|
||||||
sector.planetaryTerminal.name = Terminal de Lanzamiento Interplanetario
|
sector.planetaryTerminal.name = Terminal de Lanzamiento Interplanetario
|
||||||
|
|
||||||
sector.groundZero.description = La ubicación adecuada para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\nReúna la mayor cantidad de plomo y cobre posible y sigue adelante.
|
sector.groundZero.description = La ubicación adecuada para empezar una vez más. Amenaza enemiga baja. Pocos recursos.\nReúna la mayor cantidad de plomo y cobre posible y sigue adelante.
|
||||||
sector.frozenForest.description = Incluso aquí, más cerca de las montañas, las esporas se han extendido. Las gélidas temperaturas no las contendrán para siempre.\n\nAprende a usar la energía. Construye generadores de combustión. Aprende a usar reparadores.
|
sector.frozenForest.description = Incluso aquí, más cerca de las montañas, las esporas se han extendido. Las gélidas temperaturas no las contendrán para siempre.\n\nAprende a usar la energía. Construye generadores de combustión. Aprende a usar reparadores.
|
||||||
sector.saltFlats.description = En las afueras del desierto se encuentran las Salinas. No hay muchos recursos en esta ubicación.\n\nEl enemigo ha creado un complejo de almacenamiento de recursos aquí. Erradica su núcleo. No dejes nada en pie.
|
sector.saltFlats.description = En las afueras del desierto se encuentran las Salinas. No hay muchos recursos en esta ubicación.\n\nEl enemigo ha creado un complejo de almacenamiento de recursos aquí. Erradica su núcleo. No dejes nada en pie.
|
||||||
sector.craters.description = El agua se ha acumulado en este cráter, reliquia de las viejas guerras. Recupera la zona. Recoge arena. Funde Metacristal. Bombea agua para enfriar torretas y taladros.
|
sector.craters.description = El agua se ha acumulado en este cráter, reliquia de las viejas guerras. Recupera la zona. Recoge arena. Funde Metacristal. Bombea agua para enfriar torretas y taladros.
|
||||||
sector.ruinousShores.description = Más allá de los páramos, se encuentra 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 está reducido a chatarra.\nContinúa la expansión. Redescubre la tecnología.
|
sector.ruinousShores.description = Más allá de los páramos, se encuentra 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 está reducido a chatarra.\nContinúa la expansión. Redescubre la tecnología.
|
||||||
sector.stainedMountains.description = Más adentro se encuentran las montañas, aún intactas por las esporas.\nExtrae el abundante titanio de esta zona. Aprende a usarlo.\n\nLa presencia enemiga es mayor aquí. No les des tiempo para enviar sus unidades más fuertes.
|
sector.stainedMountains.description = Más adentro se encuentran las montañas, aún intactas por las esporas.\nExtrae el abundante titanio de esta zona. Aprende a usarlo.\n\nLa presencia enemiga es mayor aquí. No les des tiempo para enviar sus unidades más fuertes.
|
||||||
sector.overgrowth.description = El á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.overgrowth.description = El á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 Mace. Destruyelo. Recupera lo que se perdió.
|
||||||
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]Investiga la tecnología de procesamiento de petróleo si es posible.
|
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]Investiga la tecnología de procesamiento de petróleo si es posible.
|
||||||
sector.desolateRift.description = Una zona extremadamente peligrosa. Recursos abundantes, pero poco espacio. Alto riesgo de destrucción. Abandona el lugar lo antes posible. No te dejes engañar por el intervalo entre los ataques enemigos.
|
sector.desolateRift.description = Una zona extremadamente peligrosa. Recursos abundantes, pero poco espacio. Alto riesgo de destrucción. Abandona el lugar lo antes posible. No te dejes engañar por el intervalo entre los ataques enemigos.
|
||||||
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í,superando en número a sus atacantes.
|
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í,superando en número a sus atacantes.
|
||||||
@@ -678,6 +678,7 @@ stat.drillspeed = Velocidad del Taladro
|
|||||||
stat.boosteffect = Efecto de Potenciador
|
stat.boosteffect = Efecto de Potenciador
|
||||||
stat.maxunits = Máximo de Unidades Activas
|
stat.maxunits = Máximo de Unidades Activas
|
||||||
stat.health = Vida
|
stat.health = Vida
|
||||||
|
stat.armor = Armadura
|
||||||
stat.buildtime = Tiempo de construcción
|
stat.buildtime = Tiempo de construcción
|
||||||
stat.maxconsecutive = Máximo consecutivo
|
stat.maxconsecutive = Máximo consecutivo
|
||||||
stat.buildcost = Coste de construcción
|
stat.buildcost = Coste de construcción
|
||||||
@@ -693,7 +694,8 @@ stat.lightningchance = Probabilidad de descarga
|
|||||||
stat.lightningdamage = Daño por rayo
|
stat.lightningdamage = Daño por rayo
|
||||||
stat.flammability = Inflamabilidad
|
stat.flammability = Inflamabilidad
|
||||||
stat.radioactivity = Radioactividad
|
stat.radioactivity = Radioactividad
|
||||||
stat.heatcapacity = Resistencia temperatura
|
stat.charge = Carga eléctrica
|
||||||
|
stat.heatcapacity = Resistencia a la temperatura
|
||||||
stat.viscosity = Viscosidad
|
stat.viscosity = Viscosidad
|
||||||
stat.temperature = Temperatura
|
stat.temperature = Temperatura
|
||||||
stat.speed = Velocidad
|
stat.speed = Velocidad
|
||||||
@@ -706,11 +708,11 @@ stat.abilities = Habilidades
|
|||||||
stat.canboost = Tiene Propulsores
|
stat.canboost = Tiene Propulsores
|
||||||
stat.flying = Aéreo
|
stat.flying = Aéreo
|
||||||
|
|
||||||
ability.forcefield = Zona de Escudo
|
ability.forcefield = Campo de Fuerza
|
||||||
ability.repairfield = Zona de Reparación
|
ability.repairfield = Campo de Reparación
|
||||||
ability.statusfield = Zona de Estado
|
ability.statusfield = Campo de Estado
|
||||||
ability.unitspawn = {0} Fábrica de Drones
|
ability.unitspawn = {0} Fábrica de Drones
|
||||||
ability.shieldregenfield = Regeneración de Escudos
|
ability.shieldregenfield = Campo de Regeneración de Escudos
|
||||||
ability.movelightning = Movimiento Relámpago
|
ability.movelightning = Movimiento Relámpago
|
||||||
|
|
||||||
bar.drilltierreq = Requiere un taladro mejor
|
bar.drilltierreq = Requiere un taladro mejor
|
||||||
@@ -735,7 +737,7 @@ bar.progress = Progreso de construcción
|
|||||||
bar.input = Entrada
|
bar.input = Entrada
|
||||||
bar.output = Salida
|
bar.output = Salida
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]Procesador Controlado
|
units.processorcontrol = [lightgray]Controlado por Procesador
|
||||||
|
|
||||||
bullet.damage = [stat]{0}[lightgray] Daño
|
bullet.damage = [stat]{0}[lightgray] Daño
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] daño de área ~[stat] {1}[lightgray] casillas
|
bullet.splashdamage = [stat]{0}[lightgray] daño de área ~[stat] {1}[lightgray] casillas
|
||||||
@@ -744,6 +746,7 @@ bullet.sapping = [stat]Oxidante
|
|||||||
bullet.homing = [stat]Rastreadora
|
bullet.homing = [stat]Rastreadora
|
||||||
bullet.shock = [stat]Electrizante
|
bullet.shock = [stat]Electrizante
|
||||||
bullet.frag = [stat]De fragmentación
|
bullet.frag = [stat]De fragmentación
|
||||||
|
bullet.buildingdamage = [stat]{0}%[lightgray]daño a estructuras
|
||||||
bullet.knockback = [stat]{0}[lightgray] Empuje
|
bullet.knockback = [stat]{0}[lightgray] Empuje
|
||||||
bullet.pierce = [stat]{0}[lightgray]x penetración
|
bullet.pierce = [stat]{0}[lightgray]x penetración
|
||||||
bullet.infinitepierce = [stat]Penetrante
|
bullet.infinitepierce = [stat]Penetrante
|
||||||
@@ -796,7 +799,7 @@ setting.indicators.name = Indicadores de Enemigos
|
|||||||
setting.autotarget.name = Auto-Apuntado
|
setting.autotarget.name = Auto-Apuntado
|
||||||
setting.keyboard.name = Controles de Ratón+Teclado
|
setting.keyboard.name = Controles de Ratón+Teclado
|
||||||
setting.touchscreen.name = Controles Táctiles
|
setting.touchscreen.name = Controles Táctiles
|
||||||
setting.fpscap.name = Máximos FPS
|
setting.fpscap.name = FPS Maxímos
|
||||||
setting.fpscap.none = Nada
|
setting.fpscap.none = Nada
|
||||||
setting.fpscap.text = {0} FPS
|
setting.fpscap.text = {0} FPS
|
||||||
setting.uiscale.name = Escala de Interfaz[lightgray] (necesita reiniciar)[]
|
setting.uiscale.name = Escala de Interfaz[lightgray] (necesita reiniciar)[]
|
||||||
@@ -823,7 +826,7 @@ setting.smoothcamera.name = Movimiento de 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
|
setting.pixelate.name = Pixelar
|
||||||
setting.minimap.name = Mostrar Minimapa
|
setting.minimap.name = Mostrar Minimapa
|
||||||
setting.coreitems.name = Mostrar elementos en el nucleo (WIP)
|
setting.coreitems.name = Mostrar Objetos en el nucleo (WIP)
|
||||||
setting.position.name = Mostrar indicadores de posición de jugadores.
|
setting.position.name = Mostrar indicadores de posición de jugadores.
|
||||||
setting.musicvol.name = Volumen de la Música
|
setting.musicvol.name = Volumen de la Música
|
||||||
setting.atmosphere.name = Mostrar Atmósfera del planeta
|
setting.atmosphere.name = Mostrar Atmósfera del planeta
|
||||||
@@ -852,7 +855,7 @@ category.view.name = Visión
|
|||||||
category.multiplayer.name = Multijugador
|
category.multiplayer.name = Multijugador
|
||||||
category.blocks.name = Seleccionar bloques
|
category.blocks.name = Seleccionar bloques
|
||||||
command.attack = Atacar
|
command.attack = Atacar
|
||||||
command.rally = Patrullar
|
command.rally = Reunirse
|
||||||
command.retreat = Retirarse
|
command.retreat = Retirarse
|
||||||
command.idle = Esperar
|
command.idle = Esperar
|
||||||
placement.blockselectkeys = \n[lightgray]Códigos: [{0},
|
placement.blockselectkeys = \n[lightgray]Códigos: [{0},
|
||||||
@@ -915,6 +918,7 @@ keybind.toggle_menus.name = Ocultar menús
|
|||||||
keybind.chat_history_prev.name = Historial de chat - Anterior
|
keybind.chat_history_prev.name = Historial de chat - Anterior
|
||||||
keybind.chat_history_next.name = Historial de chat - Siguiente
|
keybind.chat_history_next.name = Historial de chat - Siguiente
|
||||||
keybind.chat_scroll.name = Desplazar el chat
|
keybind.chat_scroll.name = Desplazar el chat
|
||||||
|
keybind.chat_mode.name = Cambiar modo de chat
|
||||||
keybind.drop_unit.name = Soltar unidad
|
keybind.drop_unit.name = Soltar unidad
|
||||||
keybind.zoom_minimap.name = Zoom del minimapa
|
keybind.zoom_minimap.name = Zoom del minimapa
|
||||||
mode.help.title = Descripción de modos
|
mode.help.title = Descripción de modos
|
||||||
@@ -1115,7 +1119,7 @@ block.plastanium-wall.name = Muro de Plastanio
|
|||||||
block.plastanium-wall-large.name = Muro de Plastanio grande
|
block.plastanium-wall-large.name = Muro de Plastanio grande
|
||||||
block.phase-wall.name = Muro de Fase grande
|
block.phase-wall.name = Muro de Fase grande
|
||||||
block.phase-wall-large.name = Muro de Fase grande
|
block.phase-wall-large.name = Muro de Fase grande
|
||||||
block.thorium-wall.name = Pared de Torio
|
block.thorium-wall.name = Muro de Torio
|
||||||
block.thorium-wall-large.name = Muro de Torio grande
|
block.thorium-wall-large.name = Muro de Torio grande
|
||||||
block.door.name = Puerta
|
block.door.name = Puerta
|
||||||
block.door-large.name = Puerta Grande
|
block.door-large.name = Puerta Grande
|
||||||
@@ -1231,7 +1235,7 @@ block.disassembler.name = Desensamblador
|
|||||||
block.silicon-crucible.name = Crisol de silicio
|
block.silicon-crucible.name = Crisol de silicio
|
||||||
block.overdrive-dome.name = Campo de Aceleración
|
block.overdrive-dome.name = Campo de Aceleración
|
||||||
#experimental, puede ser eliminado
|
#experimental, puede ser eliminado
|
||||||
block.block-forge.name = Fundidor de Bloques
|
block.block-forge.name = Forja de Bloques
|
||||||
block.block-loader.name = Cargador de Bloques
|
block.block-loader.name = Cargador de Bloques
|
||||||
block.block-unloader.name = Descargador de Bloques
|
block.block-unloader.name = Descargador de Bloques
|
||||||
block.interplanetary-accelerator.name = Acelerador Interplanetario
|
block.interplanetary-accelerator.name = Acelerador Interplanetario
|
||||||
@@ -1246,10 +1250,10 @@ block.memory-cell.name = Unidad de memoria
|
|||||||
block.memory-bank.name = Servidor de memoria
|
block.memory-bank.name = Servidor de memoria
|
||||||
|
|
||||||
team.blue.name = azul
|
team.blue.name = azul
|
||||||
team.crux.name = rojo
|
team.crux.name = crux
|
||||||
team.sharded.name = naranja
|
team.sharded.name = sharded
|
||||||
team.orange.name = naranja
|
team.orange.name = naranja
|
||||||
team.derelict.name = abandonado
|
team.derelict.name = delerict
|
||||||
team.green.name = verde
|
team.green.name = verde
|
||||||
team.purple.name = morado
|
team.purple.name = morado
|
||||||
|
|
||||||
@@ -1268,7 +1272,7 @@ hint.placeConveyor = Las cintas transportadoras pueden sacar objetos de los tala
|
|||||||
hint.placeConveyor.mobile = Las cintas transportadoras pueden mover objetos de los taladros hasta otros bloques. Selecciona un \uf896 [accent]Transportador[] de la pestaña \ue814 [accent]Distribución[].\n\nMantén el dedo un segundo y arrastra para crear múltiples cintas transportadoras.
|
hint.placeConveyor.mobile = Las cintas transportadoras pueden mover objetos de los taladros hasta otros bloques. Selecciona un \uf896 [accent]Transportador[] de la pestaña \ue814 [accent]Distribución[].\n\nMantén el dedo un segundo y arrastra para crear múltiples cintas transportadoras.
|
||||||
hint.placeTurret = Construye \uf861 [accent]Torretas[] para defender tu base de los enemigos.\n\nLas torretas necesitan munición - en este caso, \uf838cobre.\nUsa cintas transportadoras y taladros para abastecerlas con cobre.
|
hint.placeTurret = Construye \uf861 [accent]Torretas[] para defender tu base de los enemigos.\n\nLas torretas necesitan munición - en este caso, \uf838cobre.\nUsa cintas transportadoras y taladros para abastecerlas con cobre.
|
||||||
hint.breaking = Pulsa [accent]Clic-derecho[] y arrastra para destruir bloques.
|
hint.breaking = Pulsa [accent]Clic-derecho[] y arrastra para destruir bloques.
|
||||||
hint.breaking.mobile = Activa el botón con el \ue817 [accent]martillo[] situado abajo a la derecha y selecciona bloque para eliminarlos.\n\nMantén el dedo un segundo y arrastra para eliminar bloques directamente en esa selección.
|
hint.breaking.mobile = Activa el botón con el \ue817 [accent]martillo[] situado abajo a la derecha y selecciona bloques para eliminarlos.\n\nMantén el dedo un segundo y arrastra para eliminar bloques directamente en esa selección.
|
||||||
hint.research = Usa el botón \ue875 [accent]Investigación[] para acceder al menú de descubrimientos tecnológicos.
|
hint.research = Usa el botón \ue875 [accent]Investigación[] para acceder al menú de descubrimientos tecnológicos.
|
||||||
hint.research.mobile = Usa el botón \ue875 [accent]Investigación[] para acceder al menú de descubrimientos tecnológicos.
|
hint.research.mobile = Usa el botón \ue875 [accent]Investigación[] para acceder al menú de descubrimientos tecnológicos.
|
||||||
hint.unitControl = Mantén [accent][[L-ctrl][] y [accent]haz clic[] sobre unidades o torretas aliadas para controlarlas manualmente.
|
hint.unitControl = Mantén [accent][[L-ctrl][] y [accent]haz clic[] sobre unidades o torretas aliadas para controlarlas manualmente.
|
||||||
@@ -1285,7 +1289,7 @@ hint.payloadPickup = Pulsa [accent][[[] para recoger bloques pequeños o unidade
|
|||||||
hint.payloadPickup.mobile = [accent]Mantén[] sobre un bloque pequeño o unidad para recogerlo.
|
hint.payloadPickup.mobile = [accent]Mantén[] sobre un bloque pequeño o unidad para recogerlo.
|
||||||
hint.payloadDrop = Pulsa [accent]][] para soltar la carga.
|
hint.payloadDrop = Pulsa [accent]][] para soltar la carga.
|
||||||
hint.payloadDrop.mobile = [accent]Mantén[] sobre un lugar vacío para soltar la carga.
|
hint.payloadDrop.mobile = [accent]Mantén[] sobre un lugar vacío para soltar la carga.
|
||||||
hint.waveFire = Cuando las torretas [accent]Wave[] usan agua como munición, apagarán fuego e incendios cercanos automáticamente.
|
hint.waveFire = Cuando las torretas [accent]Wave[] usen agua como munición, apagarán fuego e incendios cercanos automáticamente.
|
||||||
hint.generator = Los \uf879[accent]Generadores de combustión[] querman carbón para transmitir energía a bloques adyacentes.\n\nEl alcance de transmisión de energía se puede extender usando \uf87f[accent]Nodos de energía[].
|
hint.generator = Los \uf879[accent]Generadores de combustión[] querman carbón para transmitir energía a bloques adyacentes.\n\nEl alcance de transmisión de energía se puede extender usando \uf87f[accent]Nodos de energía[].
|
||||||
hint.guardian = Los [accent]Guardianes[] poseen una robusta armadura. Municiones débiles como el [accent]Cobre[] o el [accent]Plomo[] no son [scarlet]effectivas[] contra él.\n\nUsa torretas de mayor categoría o por ejemplo, munición de \uf835[accent]Grafito[] \uf861Duo/\uf859 en torretas Salvo para derribar a los Guardianes.
|
hint.guardian = Los [accent]Guardianes[] poseen una robusta armadura. Municiones débiles como el [accent]Cobre[] o el [accent]Plomo[] no son [scarlet]effectivas[] contra él.\n\nUsa torretas de mayor categoría o por ejemplo, munición de \uf835[accent]Grafito[] \uf861Duo/\uf859 en torretas Salvo para derribar a los Guardianes.
|
||||||
hint.coreUpgrade = Los núcleos se pueden mejorar [accent]construyendo núcleos de mayor calidad encima[].\n\nColoca un núcleo [accent]Foundation[] sobre el núcleo [accent]Shard[]. Asegúrate de que no hay obstáculos cerca.
|
hint.coreUpgrade = Los núcleos se pueden mejorar [accent]construyendo núcleos de mayor calidad encima[].\n\nColoca un núcleo [accent]Foundation[] sobre el núcleo [accent]Shard[]. Asegúrate de que no hay obstáculos cerca.
|
||||||
@@ -1293,7 +1297,7 @@ hint.presetLaunch = Las zonas de aterrizaje de los [accent]sectores grises[], co
|
|||||||
hint.coreIncinerate = Tras completar la capacidad máxima de almacenamiento en el núcleo para un tipo de objeto, cualquier recurso adicional de ese tipo que reciba el núcleo será [accent]incinerado[].
|
hint.coreIncinerate = Tras completar la capacidad máxima de almacenamiento en el núcleo para un tipo de objeto, cualquier recurso adicional de ese tipo que reciba el núcleo será [accent]incinerado[].
|
||||||
hint.coopCampaign = Sí estás jugando el modo [accent]campaña en multijugador[], los objetos producidos en el mapa actual también se enviarán [accent]a los sectores locales de cada jugador[].\n\nCualquier nueva investigación tecnológica realizada por el anfitrión también se desbloqueará para los demás jugadores.
|
hint.coopCampaign = Sí estás jugando el modo [accent]campaña en multijugador[], los objetos producidos en el mapa actual también se enviarán [accent]a los sectores locales de cada jugador[].\n\nCualquier nueva investigación tecnológica realizada por el anfitrión también se desbloqueará para los demás jugadores.
|
||||||
|
|
||||||
item.copper.description = Un práctico material de estructura. Usado en todo tipo de bloques.
|
item.copper.description = Un práctico material para construcción. Usado en todo tipo de bloques y munición.
|
||||||
item.copper.details = Cobre. Metal anormalmente abundante en Serpulo. Estructuralmente débil a menos que sea reforzado.
|
item.copper.details = Cobre. Metal anormalmente abundante en Serpulo. Estructuralmente débil a menos que sea reforzado.
|
||||||
item.lead.description = Un material básico. Usado en electrónicos y transferencia de líquidos.
|
item.lead.description = Un material básico. Usado en electrónicos y transferencia de líquidos.
|
||||||
item.lead.details = Denso. Inerte. Extensamente usado en baterías.\nNota: Suele ser tóxico para la mayoría de formas de vida biológicas. Aunque ya no quedan muchas de esas por aquí.
|
item.lead.details = Denso. Inerte. Extensamente usado en baterías.\nNota: Suele ser tóxico para la mayoría de formas de vida biológicas. Aunque ya no quedan muchas de esas por aquí.
|
||||||
@@ -1328,16 +1332,16 @@ block.graphite-press.description = Comprime carbón en piezas de grafito puro.
|
|||||||
block.multi-press.description = Una versión mejorada de la prensa de grafito. Utiliza agua y energía para procesar carbón rápida y eficientemente.
|
block.multi-press.description = Una versión mejorada de la prensa de grafito. Utiliza agua y energía para procesar carbón rápida y eficientemente.
|
||||||
block.silicon-smelter.description = Reduce la arena con carbón puro. Produce silicio.
|
block.silicon-smelter.description = Reduce la arena con carbón puro. Produce silicio.
|
||||||
block.kiln.description = Funde arena y plomo en metacristal. Requiere cantidades pequeñas de energía para funcionar.
|
block.kiln.description = Funde arena y plomo en metacristal. Requiere cantidades pequeñas de energía para funcionar.
|
||||||
block.plastanium-compressor.description = Produce plastanio con aceite y titanio.
|
block.plastanium-compressor.description = Produce plastanio con petróleo y titanio.
|
||||||
block.phase-weaver.description = Produce tejido de fase del torio radioactivo y altas cantidades de arena.
|
block.phase-weaver.description = Produce tejido de fase del torio radioactivo y altas cantidades de arena.
|
||||||
block.alloy-smelter.description = Produce aleación eléctrica con titanio, plomo, silicio y cobre.
|
block.alloy-smelter.description = Produce aleación eléctrica con titanio, plomo, silicio y cobre.
|
||||||
block.cryofluid-mixer.description = Combina agua y titanio en líquido criogénico, que es mucho más eficiente para enfriar.
|
block.cryofluid-mixer.description = Combina agua y titanio en líquido criogénico, que es mucho más eficiente para enfriar.
|
||||||
block.blast-mixer.description = Usa aceite para transformar pirotita en un objeto menos inflamable pero más explosivo: el compuesto explosivo.
|
block.blast-mixer.description = Usa esporas para transformar pirotita en un objeto menos inflamable pero más explosivo: el compuesto explosivo.
|
||||||
block.pyratite-mixer.description = Mezcla carbón, plomo y arena en pirotita altamente inflamable.
|
block.pyratite-mixer.description = Mezcla carbón, plomo y arena en pirotita altamente inflamable.
|
||||||
block.melter.description = Calienta piedra a temperaturas muy altas para obtener lava.
|
block.melter.description = Calienta chatarra a temperaturas muy altas para obtener magma.
|
||||||
block.separator.description = Expone piedra a la presión del agua para obtener diversos minerales contenidos en la piedra.
|
block.separator.description = Separa el magma en sus componentes minerales.
|
||||||
block.spore-press.description = Comprime esporas en petróleo.
|
block.spore-press.description = Comprime esporas en petróleo.
|
||||||
block.pulverizer.description = Despedaza la piedra en arena. Útil cuando no hay arena natural.
|
block.pulverizer.description = Despedaza la chatarra en arena. Útil cuando no hay arena natural.
|
||||||
block.coal-centrifuge.description = Solidifica petróleo en piezas de carbón.
|
block.coal-centrifuge.description = Solidifica petróleo en piezas de carbón.
|
||||||
block.incinerator.description = Se deshace de cualquier líquido o material producido en exceso.
|
block.incinerator.description = Se deshace de cualquier líquido o material producido en exceso.
|
||||||
block.power-void.description = Elimina toda la energía que se le da. Solo en disponible en el modo Libre.
|
block.power-void.description = Elimina toda la energía que se le da. Solo en disponible en el modo Libre.
|
||||||
@@ -1350,7 +1354,7 @@ block.copper-wall.description = Un bloque defensivo barato.\nÚtil para defender
|
|||||||
block.copper-wall-large.description = Un bloque defensivo barato.\nÚtil para defender el núcleo y las torres en las primeras oleadas.\nOcupa múltiples casillas.
|
block.copper-wall-large.description = Un bloque defensivo barato.\nÚtil para defender el núcleo y las torres en las primeras oleadas.\nOcupa múltiples casillas.
|
||||||
block.titanium-wall.description = Un bloque defensivo moderadamente fuerte.\nProporciona protección moderada contra los enemigos.
|
block.titanium-wall.description = Un bloque defensivo moderadamente fuerte.\nProporciona protección moderada contra los enemigos.
|
||||||
block.titanium-wall-large.description = Un bloque defensivo moderadamente fuerte.\nProporciona protección moderada contra los enemigos.\nOcupa múltiples casillas.
|
block.titanium-wall-large.description = Un bloque defensivo moderadamente fuerte.\nProporciona protección moderada contra los enemigos.\nOcupa múltiples casillas.
|
||||||
block.plastanium-wall.description = Un tipo especial de pared que absorbe los arcos eléctricos y bloquea las conexiones automáticas de los nodos de potencia..
|
block.plastanium-wall.description = Un tipo especial de pared que absorbe los arcos eléctricos y bloquea las conexiones automáticas de los nodos de potencia.
|
||||||
block.plastanium-wall-large.description = Un tipo especial de pared que absorbe los arcos eléctricos y bloquea las conexiones automáticas de los nodos de potencia.\nOcupa múltiples casillas.
|
block.plastanium-wall-large.description = Un tipo especial de pared que absorbe los arcos eléctricos y bloquea las conexiones automáticas de los nodos de potencia.\nOcupa múltiples casillas.
|
||||||
block.thorium-wall.description = Un bloque defensivo fuerte.\nBuena protección contra enemigos.
|
block.thorium-wall.description = Un bloque defensivo fuerte.\nBuena protección contra enemigos.
|
||||||
block.thorium-wall-large.description = Un bloque defensivo fuerte.\nBuena protección contra enemigos.\nOcupa múltiples casillas.
|
block.thorium-wall-large.description = Un bloque defensivo fuerte.\nBuena protección contra enemigos.\nOcupa múltiples casillas.
|
||||||
@@ -1358,8 +1362,8 @@ block.phase-wall.description = No es tan fuerte como un muro de torio pero hace
|
|||||||
block.phase-wall-large.description = No es tan fuerte como un muro de torio pero rebota balas al enemigo si no son demasiado fuertes.\nOcupa múltiples casillas.
|
block.phase-wall-large.description = No es tan fuerte como un muro de torio pero rebota balas al enemigo si no son demasiado fuertes.\nOcupa múltiples casillas.
|
||||||
block.surge-wall.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.
|
block.surge-wall.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.
|
||||||
block.surge-wall-large.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.\nOcupa múltiplies casillas.
|
block.surge-wall-large.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.\nOcupa múltiplies casillas.
|
||||||
block.door.description = Una puerta pequeña que puede ser abierta y cerrada tocándola.\nSi está abirta, los enemigos pueden moverse y disparar a través de ella.
|
block.door.description = Una puerta pequeña que puede ser abierta y cerrada tocándola.\nSi está abierta, los enemigos pueden moverse y disparar a través de ella.
|
||||||
block.door-large.description = Una puerta grande que puede ser abierta y cerrada tocándola.\nSi está abirta, los enemigos pueden moverse y disparar a través de ella.\nOcupa múltiples casillas.
|
block.door-large.description = Una puerta grande que puede ser abierta y cerrada tocándola.\nSi está abierta, los enemigos pueden moverse y disparar a través de ella.\nOcupa múltiples casillas.
|
||||||
block.mender.description = Repara bloques cercanos de forma constante. Mantiene a las defensas reparadas entre oleadas. Puede usar silicio opcionalmente para mejorar el alcance y la eficiencia.
|
block.mender.description = Repara bloques cercanos de forma constante. Mantiene a las defensas reparadas entre oleadas. Puede usar silicio opcionalmente para mejorar el alcance y la eficiencia.
|
||||||
block.mend-projector.description = Regenera edificios cercanos de forma constante. Ocupa multiples casillas.
|
block.mend-projector.description = Regenera edificios cercanos de forma constante. Ocupa multiples casillas.
|
||||||
block.overdrive-projector.description = Aumenta la velocidad de edificios cercanos como taladros y transportadores.
|
block.overdrive-projector.description = Aumenta la velocidad de edificios cercanos como taladros y transportadores.
|
||||||
@@ -1387,7 +1391,7 @@ block.pulse-conduit.description = Bloque de transporte de líquidos avanzado. Tr
|
|||||||
block.plated-conduit.description = Mueve líquidos a la misma velocidad que los conductos de pulso, pero posee más armadura. No acepta líquidos de los lados por otra cosa que no sean conductos.\nGotea menos.
|
block.plated-conduit.description = Mueve líquidos a la misma velocidad que los conductos de pulso, pero posee más armadura. No acepta líquidos de los lados por otra cosa que no sean conductos.\nGotea menos.
|
||||||
block.liquid-router.description = Acepta líquidos de una dirección y los deja en hasta 3 direcciones equitativamente. También puede almacenar cierta capacidad de líquido. Útil para dividir los líquidos de una fuente a varios objetivos.
|
block.liquid-router.description = Acepta líquidos de una dirección y los deja en hasta 3 direcciones equitativamente. También puede almacenar cierta capacidad de líquido. Útil para dividir los líquidos de una fuente a varios objetivos.
|
||||||
block.liquid-tank.description = Almacena una gran cantidad de líquidos. Úsalo para crear almacenes cuando no hay una demanda constante de materiales o para asegurarse de enfriar bloques vitales.
|
block.liquid-tank.description = Almacena una gran cantidad de líquidos. Úsalo para crear almacenes cuando no hay una demanda constante de materiales o para asegurarse de enfriar bloques vitales.
|
||||||
block.liquid-junction.description = Actúa como un puente para dos condusctos que se cruzan. Útil en situaciones en las que hay dos conductos con líquidos diferentes a diferentes lugares.
|
block.liquid-junction.description = Actúa como un puente para dos conductos que se cruzan. Útil en situaciones en las que hay dos conductos con líquidos diferentes a diferentes lugares.
|
||||||
block.bridge-conduit.description = Bloque avanzado de transporte de líquidos. Permite transportar líquidos por encima de hasta 3 casillas de cualquier terreno o construcción.
|
block.bridge-conduit.description = Bloque avanzado de transporte de líquidos. Permite transportar líquidos por encima de hasta 3 casillas de cualquier terreno o construcción.
|
||||||
block.phase-conduit.description = Bloque de transporte de líquidos avanzado. Usa energía para transportar líquidos a otro conducto de fase conectado a través de varias casillas.
|
block.phase-conduit.description = Bloque de transporte de líquidos avanzado. Usa energía para transportar líquidos a otro conducto de fase conectado a través de varias casillas.
|
||||||
block.power-node.description = Transmite energía a nodos conectados, conecta hasta diez fuentes de energía, edificios que usan energía o nodos. El nodo obtendrá o transmitirá energía de cualquier bloque adyacente.
|
block.power-node.description = Transmite energía a nodos conectados, conecta hasta diez fuentes de energía, edificios que usan energía o nodos. El nodo obtendrá o transmitirá energía de cualquier bloque adyacente.
|
||||||
@@ -1397,7 +1401,7 @@ block.diode.description = La energía de la batería puede fluir a través de es
|
|||||||
block.battery.description = Guarda energía cuando hay abundancia y proporciona energía cuando hay escasez de energía mientras la batería tenga energía.
|
block.battery.description = Guarda energía cuando hay abundancia y proporciona energía cuando hay escasez de energía mientras la batería tenga energía.
|
||||||
block.battery-large.description = Almacena mucha más energía que una batería normal.
|
block.battery-large.description = Almacena mucha más energía que una batería normal.
|
||||||
block.combustion-generator.description = Genera energía quemando materiales inflamables o petróleo.
|
block.combustion-generator.description = Genera energía quemando materiales inflamables o petróleo.
|
||||||
block.thermal-generator.description = Genera una gran cantidad de energía con la lava.
|
block.thermal-generator.description = Genera una gran cantidad de energía con el magma.
|
||||||
block.steam-generator.description = Más eficiente que un generador de combustión, pero requiere agua adicional.
|
block.steam-generator.description = Más eficiente que un generador de combustión, pero requiere agua adicional.
|
||||||
block.differential-generator.description = Genera grandes cantidades de energía. Utiliza la diferencia de temperatura entre el fluído criogenico y la quema de pirotita.
|
block.differential-generator.description = Genera grandes cantidades de energía. Utiliza la diferencia de temperatura entre el fluído criogenico y la quema de pirotita.
|
||||||
block.rtg-generator.description = Un generador radioisótropo termoeléctrico que no necesita enfriamiento, pero proporciona menos energía que un reactor de torio.
|
block.rtg-generator.description = Un generador radioisótropo termoeléctrico que no necesita enfriamiento, pero proporciona menos energía que un reactor de torio.
|
||||||
@@ -1443,8 +1447,8 @@ block.segment.description = Daña y destruye proyectiles que se acerquen. No afe
|
|||||||
block.parallax.description = Dispara un rayo tractor que atrae enemigos aéreos, dañándolos en el proceso.
|
block.parallax.description = Dispara un rayo tractor que atrae enemigos aéreos, dañándolos en el proceso.
|
||||||
block.tsunami.description = Dispara poderosos torrentes de líquido a los enemigos. También apaga fuegos automáticamente si se lo abastece con agua.
|
block.tsunami.description = Dispara poderosos torrentes de líquido a los enemigos. También apaga fuegos automáticamente si se lo abastece con agua.
|
||||||
block.silicon-crucible.description = Refina silicio a partir de arena y carbón, usando pirotita como una fuente de calor adicional. Es más eficiente en lugares cálidos.
|
block.silicon-crucible.description = Refina silicio a partir de arena y carbón, usando pirotita como una fuente de calor adicional. Es más eficiente en lugares cálidos.
|
||||||
block.disassembler.description = Separa magma cantidades moderadas de componentes minerales exóticos con baja eficiencia. Puede producir Torio.
|
block.disassembler.description = Separa magma en cantidades moderadas de componentes minerales exóticos con baja eficiencia. Puede producir Torio.
|
||||||
block.overdrive-dome.description = Incrementa la velocidad de estructuras cercanas. Requiere Tejido de Fase, y Silicio para operar.
|
block.overdrive-dome.description = Incrementa la velocidad de estructuras cercanas. Requiere Tejido de Fase y Silicio para operar.
|
||||||
block.payload-conveyor.description = Mueve tanto grandes cargas, como unidades recién ensambladas de sus fábricas.
|
block.payload-conveyor.description = Mueve tanto grandes cargas, como unidades recién ensambladas de sus fábricas.
|
||||||
block.payload-router.description = Divide las cargas entrantes en 3 direcciones de salida.
|
block.payload-router.description = Divide las cargas entrantes en 3 direcciones de salida.
|
||||||
block.command-center.description = Controla el comportamiento de las unidades con diferentes órdenes.
|
block.command-center.description = Controla el comportamiento de las unidades con diferentes órdenes.
|
||||||
@@ -1478,7 +1482,7 @@ unit.corvus.description = Dispara poderosos láseres que dañan enemigos, y repa
|
|||||||
unit.crawler.description = Corre hacia enemigos y se autodestruye, provocando una gran explosión.
|
unit.crawler.description = Corre hacia enemigos y se autodestruye, provocando una gran explosión.
|
||||||
unit.atrax.description = Dispara orbes de magma debilitantes a enemigos terrestres. Puede pisar sobre la mayoría de terreno.
|
unit.atrax.description = Dispara orbes de magma debilitantes a enemigos terrestres. Puede pisar sobre la mayoría de terreno.
|
||||||
unit.spiroct.description = Dispara láseres que debilitan al enemigo, reparándose en el proceso. Puede pisar sobre la mayoría de terreno.
|
unit.spiroct.description = Dispara láseres que debilitan al enemigo, reparándose en el proceso. Puede pisar sobre la mayoría de terreno.
|
||||||
unit.arkyid.description = Dispara grandes rayos láser que debilitan al enemigo, repairing itself in the process. Puede pisar sobre la mayoría de terreno.
|
unit.arkyid.description = Dispara grandes rayos láser que debilitan al enemigo, reparándose en el proceso. Puede pisar sobre la mayoría de terreno.
|
||||||
unit.toxopid.description = Dispara grandes fragmentos electrizados y láseres perforantes. Puede pisar sobre la mayoría de terreno.
|
unit.toxopid.description = Dispara grandes fragmentos electrizados y láseres perforantes. Puede pisar sobre la mayoría de terreno.
|
||||||
unit.flare.description = Dispara proyectiles básicos a enemigos cercanos.
|
unit.flare.description = Dispara proyectiles básicos a enemigos cercanos.
|
||||||
unit.horizon.description = Suelta fragmentos explosivos sobre objetivos terrestres.
|
unit.horizon.description = Suelta fragmentos explosivos sobre objetivos terrestres.
|
||||||
@@ -1486,7 +1490,7 @@ unit.zenith.description = Dispara ráfagas de misiles a enemigos cercanos.
|
|||||||
unit.antumbra.description = Dispara un enjambre de balas a cualquer enemigo cercano.
|
unit.antumbra.description = Dispara un enjambre de balas a cualquer enemigo cercano.
|
||||||
unit.eclipse.description = Dispara dos láseres perforantes y un enjambre de balas de fragmentación.
|
unit.eclipse.description = Dispara dos láseres perforantes y un enjambre de balas de fragmentación.
|
||||||
unit.mono.description = Extrae cobre y plomo, y los deposita en el núcleo.
|
unit.mono.description = Extrae cobre y plomo, y los deposita en el núcleo.
|
||||||
unit.poly.description = Recosntruye automáticamente estructuras dañadas y asiste a otras unidades en la construcción.
|
unit.poly.description = Reconstruye automáticamente estructuras dañadas y asiste a otras unidades en la construcción.
|
||||||
unit.mega.description = Repara automáticamente estructuras dañadas. Puede llevar estructuras y unidades terrestres pequeñas.
|
unit.mega.description = Repara automáticamente estructuras dañadas. Puede llevar estructuras y unidades terrestres pequeñas.
|
||||||
unit.quad.description = Suelta grandes bombas sobre objetivos terrestres, repara estructuras aliadas y daña enemigos. Puede cargar con unidades terrestres de tamaño medio.
|
unit.quad.description = Suelta grandes bombas sobre objetivos terrestres, repara estructuras aliadas y daña enemigos. Puede cargar con unidades terrestres de tamaño medio.
|
||||||
unit.oct.description = Protege aliados con su escudo. Puede cargar con la mayoría de unidades terrestres.
|
unit.oct.description = Protege aliados con su escudo. Puede cargar con la mayoría de unidades terrestres.
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
credits.text = Pelin tehnyt [royal]Anuken[] - [sky]anukendev@gmail.com[]
|
credits.text = Pelin on luonut [royal]Anuken[] - [sky]anukendev@gmail.com[]
|
||||||
credits = Tekijät
|
credits = Tekijät
|
||||||
contributors = Kääntäjät ja avustajat
|
contributors = Kääntäjät ja avustajat
|
||||||
discord = Liity Mindustryn Discordiin!
|
discord = Liity Mindustryn Discordiin!
|
||||||
link.discord.description = Mindustryn virallinen Discord-keskusteluhuone
|
link.discord.description = Mindustryn virallinen Discord-keskusteluhuone
|
||||||
link.reddit.description = Mindustryn alireddit
|
link.reddit.description = Mindustryn reddit sivu
|
||||||
link.github.description = Pelin lähdekoodi
|
link.github.description = Pelin lähdekoodi
|
||||||
link.changelog.description = Lista päivityksien muutoksista
|
link.changelog.description = Lista päivityksien muutoksista
|
||||||
link.dev-builds.description = Epävakaat kehitysversiot
|
link.dev-builds.description = Epävakaat kehitysversiot
|
||||||
@@ -15,7 +15,7 @@ link.wiki.description = Virallinen Mindustry wiki
|
|||||||
link.suggestions.description = Ehdota uusia ominaisuuksia
|
link.suggestions.description = Ehdota uusia ominaisuuksia
|
||||||
linkfail = Linkin avaaminen epäonnistui!\nOsoite on kopioitu leikepöydällesi.
|
linkfail = Linkin avaaminen epäonnistui!\nOsoite on kopioitu leikepöydällesi.
|
||||||
screenshot = Kuvankaappaus tallennettu sijaintiin {0}
|
screenshot = Kuvankaappaus tallennettu sijaintiin {0}
|
||||||
screenshot.invalid = Kartta liian laaja, kuvankaappaukselle ei mahdollisesti ole tarpeeksi tilaa.
|
screenshot.invalid = Kartta liian laaja, levytila voi olla liian vähissä kuvankaappausta varten.
|
||||||
gameover = Peli ohi
|
gameover = Peli ohi
|
||||||
gameover.pvp = [accent] {0}[] joukkue voittaa!
|
gameover.pvp = [accent] {0}[] joukkue voittaa!
|
||||||
highscore = [accent]Uusi ennätys!
|
highscore = [accent]Uusi ennätys!
|
||||||
@@ -46,7 +46,7 @@ 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
|
||||||
schematic.browseworkshop = Selaa Workshoppia
|
schematic.browseworkshop = Selaa Steam Workshoppia
|
||||||
schematic.copy = Kopioi leikepöydälle
|
schematic.copy = Kopioi leikepöydälle
|
||||||
schematic.copy.import = Tuo leikepöydältä
|
schematic.copy.import = Tuo leikepöydältä
|
||||||
schematic.shareworkshop = Jaa Workshoppiin
|
schematic.shareworkshop = Jaa Workshoppiin
|
||||||
@@ -64,15 +64,15 @@ 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 = Pelattu aika:[accent] {0}
|
stat.playtime = Pelattu aika:[accent] {0}
|
||||||
stat.rank = Lopullinen arvosana: [accent]{0}
|
stat.rank = Arvosana: [accent]{0}
|
||||||
|
|
||||||
globalitems = [accent]Global Items
|
globalitems = [accent]Yhteiset tavarat
|
||||||
map.delete = Oletko varma että haluat poistaa kartan "[accent]{0}[]"?
|
map.delete = Oletko varma että haluat poistaa kartan: "[accent]{0}[]"?
|
||||||
level.highscore = Ennätys: [accent]{0}
|
level.highscore = Ennätys: [accent]{0}
|
||||||
level.select = Tason valinta
|
level.select = Tason valinta
|
||||||
level.mode = Pelimuoto:
|
level.mode = Pelimuoto:
|
||||||
coreattack = < Ytimeen hyökätään! >
|
coreattack = < Ytimeen hyökätään! >
|
||||||
nearpoint = [[ [scarlet]POISTU PUDOTUSPISTEELTÄ VÄLITTÖMÄSTI[]\nvälitön tuhoutuminen
|
nearpoint = [[ [scarlet]POISTU VIHOLLISEN PUDOTUSPISTEELTÄ VÄLITTÖMÄSTI[]\nvälitön tuhoutuminen
|
||||||
database = Ytimen tietokanta
|
database = Ytimen tietokanta
|
||||||
savegame = Tallenna peli
|
savegame = Tallenna peli
|
||||||
loadgame = Lataa peli
|
loadgame = Lataa peli
|
||||||
@@ -92,11 +92,11 @@ continue = Jatka
|
|||||||
maps.none = [lightgray]Karttoja ei löytynyt!
|
maps.none = [lightgray]Karttoja ei löytynyt!
|
||||||
invalid = Virheellinen
|
invalid = Virheellinen
|
||||||
pickcolor = Valitse väri
|
pickcolor = Valitse väri
|
||||||
preparingconfig = Preparing Config
|
preparingconfig = Valmistellaan asetuksia
|
||||||
preparingcontent = Preparing Content
|
preparingcontent = Valmistellaan sisältöä
|
||||||
uploadingcontent = Uploading Content
|
uploadingcontent = Julkaistaan sisältöä
|
||||||
uploadingpreviewfile = Uploading Preview File
|
uploadingpreviewfile = Julkaistaan esikatseltavaa tiedostoa
|
||||||
committingchanges = Comitting Changes
|
committingchanges = Varmistetaan muutokset
|
||||||
done = Valmis
|
done = Valmis
|
||||||
feature.unsupported = Laitteesi ei tue tätä toimintoa.
|
feature.unsupported = Laitteesi ei tue tätä toimintoa.
|
||||||
|
|
||||||
@@ -139,16 +139,16 @@ mod.scripts.disable = Laitteesi ei tue modeja skripteillä. Sinun on sammutettav
|
|||||||
about.button = Tietoa
|
about.button = Tietoa
|
||||||
name = Nimi:
|
name = Nimi:
|
||||||
noname = Valitse ensin[accent] pelaajanimi[].
|
noname = Valitse ensin[accent] pelaajanimi[].
|
||||||
planetmap = Planet Map
|
planetmap = Avaruuskartta
|
||||||
launchcore = Launch Core
|
launchcore = Laukaise tukikohta
|
||||||
filename = Tiedostonimi:
|
filename = Tiedostonimi:
|
||||||
unlocked = Uutta sisältöä avattu!
|
unlocked = Uutta sisältöä avattu!
|
||||||
completed = [accent]Suoritettu
|
completed = [accent]Suoritettu
|
||||||
techtree = Tekniikkapuu
|
techtree = Edistyspuu
|
||||||
research.list = [lightgray]Tutki:
|
research.list = [lightgray]Tutki:
|
||||||
research = Tutki
|
research = Tutki
|
||||||
researched = [lightgray]{0} tutkittu.
|
researched = [lightgray]{0} tutkittu.
|
||||||
research.progress = {0}% complete
|
research.progress = {0}% valmis
|
||||||
players = {0} pelaajaa paikalla
|
players = {0} pelaajaa paikalla
|
||||||
players.single = {0} pelaaja paikalla
|
players.single = {0} pelaaja paikalla
|
||||||
players.search = etsiä
|
players.search = etsiä
|
||||||
@@ -180,7 +180,7 @@ host = Isäntä
|
|||||||
hosting = [accent]Avataan palvelinta...
|
hosting = [accent]Avataan palvelinta...
|
||||||
hosts.refresh = Päivitä
|
hosts.refresh = Päivitä
|
||||||
hosts.discovering = Etsitään LAN pelejä
|
hosts.discovering = Etsitään LAN pelejä
|
||||||
hosts.discovering.any = Etsitään Pelejä
|
hosts.discovering.any = Etsitään pelejä
|
||||||
server.refreshing = Päivitetään palvelimen tietoja
|
server.refreshing = Päivitetään palvelimen tietoja
|
||||||
hosts.none = [lightgray]Paikallisia pelejä ei löytynyt!
|
hosts.none = [lightgray]Paikallisia pelejä ei löytynyt!
|
||||||
host.invalid = [scarlet]Isäntään ei voitu yhdistää.
|
host.invalid = [scarlet]Isäntään ei voitu yhdistää.
|
||||||
@@ -192,8 +192,8 @@ servers.global = Yhteisön palvelimet
|
|||||||
trace = Seuraa pelaajaa
|
trace = Seuraa pelaajaa
|
||||||
trace.playername = Pelaajanimi: [accent]{0}
|
trace.playername = Pelaajanimi: [accent]{0}
|
||||||
trace.ip = IP-osoite: [accent]{0}
|
trace.ip = IP-osoite: [accent]{0}
|
||||||
trace.id = Uniikki tunniste: [accent]{0}
|
trace.id = Pelaajakohtainen tunniste: [accent]{0}
|
||||||
trace.mobile = Mobile Client: [accent]{0}
|
trace.mobile = Mobiililaite: [accent]{0}
|
||||||
trace.modclient = Custom Client: [accent]{0}
|
trace.modclient = Custom Client: [accent]{0}
|
||||||
invalidid = Invalid client ID! Submit a bug report.
|
invalidid = Invalid client ID! Submit a bug report.
|
||||||
server.bans = Porttikiellot
|
server.bans = Porttikiellot
|
||||||
@@ -225,7 +225,7 @@ connecting = [accent]Yhdistetään...
|
|||||||
connecting.data = [accent]Ladataan maailman tietoja...
|
connecting.data = [accent]Ladataan maailman tietoja...
|
||||||
server.port = Portti:
|
server.port = Portti:
|
||||||
server.addressinuse = Osoite on jo käytössä!
|
server.addressinuse = Osoite on jo käytössä!
|
||||||
server.invalidport = Invalid port number!
|
server.invalidport = Tällä portilla ei löytynyt peliä!
|
||||||
server.error = [crimson]Error hosting server: [accent]{0}
|
server.error = [crimson]Error hosting server: [accent]{0}
|
||||||
save.new = Uusi tallennus
|
save.new = Uusi tallennus
|
||||||
save.overwrite = Haluatko varmasti korvata \ntämän tallennuspaikan??
|
save.overwrite = Haluatko varmasti korvata \ntämän tallennuspaikan??
|
||||||
@@ -260,39 +260,39 @@ confirm = Vahvista
|
|||||||
delete = Poista
|
delete = Poista
|
||||||
view.workshop = View In Workshop
|
view.workshop = View In Workshop
|
||||||
workshop.listing = Edit Workshop Listing
|
workshop.listing = Edit Workshop Listing
|
||||||
ok = OK
|
ok = Juu
|
||||||
open = Avaa
|
open = Avaa
|
||||||
customize = Muokkaa sääntöjä
|
customize = Muokkaa sääntöjä
|
||||||
cancel = Peruuta
|
cancel = Peruuta
|
||||||
openlink = Avaa linkki
|
openlink = Avaa linkki
|
||||||
copylink = Kopioi linkki
|
copylink = Kopioi linkki
|
||||||
back = Takaisin
|
back = Takaisin
|
||||||
data.export = Vie data
|
data.export = Vie dataa
|
||||||
data.import = Tuo data
|
data.import = Tuo dataa
|
||||||
data.openfolder = Avaa datakansio
|
data.openfolder = Avaa datakansio
|
||||||
data.exported = Data viety.
|
data.exported = Dataa on viety.
|
||||||
data.invalid = This isn't valid game data.
|
data.invalid = This isn't valid game data.
|
||||||
data.import.confirm = Importing external data will overwrite[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately.
|
data.import.confirm = Importing external data will overwrite[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately.
|
||||||
quit.confirm = Oletko varma että haluat poistua?
|
quit.confirm = Oletko varma että haluat poistua?
|
||||||
quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial can be re-taken in[accent] Settings->Game->Re-Take Tutorial.[]
|
quit.confirm.tutorial = Oletko varma että tiedät mitä teet?\nVoit tehdä tutoriaalin milloin vain[accent] Asetukset->Peli->Tee Tutoriaali Uudelleen[]
|
||||||
loading = [accent]Ladataan...
|
loading = [accent]Ladataan...
|
||||||
reloading = [accent]Ladataan Modeja...
|
reloading = [accent]Ladataan Modeja...
|
||||||
saving = [accent]Tallennetaan...
|
saving = [accent]Tallennetaan...
|
||||||
respawn = [accent][[{0}][] to respawn in core
|
respawn = [accent][[{0}][] uudelleensyntymiseen ytimessä
|
||||||
cancelbuilding = [accent][[{0}][] to clear plan
|
cancelbuilding = [accent][[{0}][] tyhjentääksesi suunnitelman
|
||||||
selectschematic = [accent][[{0}][] to select+copy
|
selectschematic = [accent][[{0}][] jotta voisit kopioida ja liittää
|
||||||
pausebuilding = [accent][[{0}][] to pause building
|
pausebuilding = [accent][[{0}][] pysäyttääksesi rakentamisen
|
||||||
resumebuilding = [scarlet][[{0}][] to resume building
|
resumebuilding = [scarlet][[{0}][] jatkaaksesi rakentamista
|
||||||
wave = [accent]Taso {0}
|
wave = [accent]Taso {0}
|
||||||
wave.cap = [accent]Wave {0}/{1}
|
wave.cap = [accent]Wave {0}/{1}
|
||||||
wave.waiting = [lightgray]Seuraava taso {0}
|
wave.waiting = [lightgray]Seuraava taso {0}
|
||||||
wave.waveInProgress = [lightgray]Wave in progress
|
wave.waveInProgress = [lightgray]Taso käynnissä
|
||||||
waiting = [lightgray]Odotetaan...
|
waiting = [lightgray]Odotetaan...
|
||||||
waiting.players = Odotetaan pelaajia...
|
waiting.players = Odotetaan pelaajia...
|
||||||
wave.enemies = [lightgray]{0} vihollista jäljellä
|
wave.enemies = [lightgray]{0} vihollista jäljellä
|
||||||
wave.enemy = [lightgray]{0} vihollinen jäljellä
|
wave.enemy = [lightgray]{0} vihollinen jäljellä
|
||||||
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves.
|
wave.guardianwarn = Suojelija tulossa [accent]{0}[] tason päästä.
|
||||||
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave.
|
wave.guardianwarn.one = Suojelija tulee rökittämään sinut [accent]{0}[] tasolla.
|
||||||
loadimage = Lataa kuva
|
loadimage = Lataa kuva
|
||||||
saveimage = Tallenna kuva
|
saveimage = Tallenna kuva
|
||||||
unknown = Tuntematon
|
unknown = Tuntematon
|
||||||
@@ -306,10 +306,10 @@ map.nospawn.attack = This map does not have any enemy cores for player to attack
|
|||||||
map.invalid = Virhe ladatessa karttaa: korruptoitunut tai väärä karttatiedosto.
|
map.invalid = Virhe ladatessa karttaa: korruptoitunut tai väärä karttatiedosto.
|
||||||
workshop.update = Update Item
|
workshop.update = Update Item
|
||||||
workshop.error = Error fetching workshop details: {0}
|
workshop.error = Error fetching workshop details: {0}
|
||||||
map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up!
|
map.publish.confirm = Oletko varma että haluat julkaista tämän kartan?\n\n[lightgray]Hyväksy Workshopin EULA ehdot, muuten karttasi ei tule näkyviin!
|
||||||
workshop.menu = Select what you would like to do with this item.
|
workshop.menu = Mitä haluat tehdä tälle asialle?
|
||||||
workshop.info = Kohteen Tiedot
|
workshop.info = Kohteen Tiedot
|
||||||
changelog = Muutosloki (valinnainen):
|
changelog = Loki (valinnainen):
|
||||||
eula = Steam EULA
|
eula = Steam EULA
|
||||||
missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked.
|
missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked.
|
||||||
publishing = [accent]Publishing...
|
publishing = [accent]Publishing...
|
||||||
@@ -402,9 +402,9 @@ editor.exists = Kartta tällä nimellä on jo olemassa.
|
|||||||
editor.selectmap = Valitse kartta ladattavaksi:
|
editor.selectmap = Valitse kartta ladattavaksi:
|
||||||
|
|
||||||
toolmode.replace = Korvaa
|
toolmode.replace = Korvaa
|
||||||
toolmode.replace.description = Draws only on solid blocks.
|
toolmode.replace.description = Piirtää vain kiinteille objekteille.
|
||||||
toolmode.replaceall = Korvaa kaikki
|
toolmode.replaceall = Korvaa kaikki
|
||||||
toolmode.replaceall.description = Replace all blocks in map.
|
toolmode.replaceall.description = Korvaa kaikki palikat kartassa.
|
||||||
toolmode.orthogonal = Orthogonal
|
toolmode.orthogonal = Orthogonal
|
||||||
toolmode.orthogonal.description = Draws only orthogonal lines.
|
toolmode.orthogonal.description = Draws only orthogonal lines.
|
||||||
toolmode.square = Square
|
toolmode.square = Square
|
||||||
@@ -423,15 +423,15 @@ filter.enemyspawn = Enemy Spawn Select
|
|||||||
filter.spawnpath = Path To Spawn
|
filter.spawnpath = Path To Spawn
|
||||||
filter.corespawn = Valitse Ydin
|
filter.corespawn = Valitse Ydin
|
||||||
filter.median = Mediaani
|
filter.median = Mediaani
|
||||||
filter.oremedian = Malmin mediaani
|
filter.oremedian = Malmin keskiarvo
|
||||||
filter.blend = Sekoitus
|
filter.blend = Sekoitus
|
||||||
filter.defaultores = Oletuksena malmit
|
filter.defaultores = Oletus malmit
|
||||||
filter.ore = Malmi
|
filter.ore = Malmi
|
||||||
filter.rivernoise = Jokien melu
|
filter.rivernoise = Jokien melu
|
||||||
filter.mirror = Peili
|
filter.mirror = Peili
|
||||||
filter.clear = Selkeä
|
filter.clear = Selkeä
|
||||||
filter.option.ignore = Ohittaa
|
filter.option.ignore = Ohitta
|
||||||
filter.scatter = Scatter
|
filter.scatter = Hajauta
|
||||||
filter.terrain = Maasto
|
filter.terrain = Maasto
|
||||||
filter.option.scale = Mittakaava
|
filter.option.scale = Mittakaava
|
||||||
filter.option.chance = Mahdollisuus
|
filter.option.chance = Mahdollisuus
|
||||||
@@ -448,10 +448,10 @@ filter.option.flooronto = Target Floor
|
|||||||
filter.option.target = Target
|
filter.option.target = Target
|
||||||
filter.option.wall = Seinä
|
filter.option.wall = Seinä
|
||||||
filter.option.ore = Malmi
|
filter.option.ore = Malmi
|
||||||
filter.option.floor2 = Secondary Floor
|
filter.option.floor2 = Toinen lattia
|
||||||
filter.option.threshold2 = Secondary Threshold
|
filter.option.threshold2 = Secondary Threshold
|
||||||
filter.option.radius = Radius
|
filter.option.radius = Säde
|
||||||
filter.option.percentile = Percentile
|
filter.option.percentile = Prosentti
|
||||||
|
|
||||||
width = Leveys:
|
width = Leveys:
|
||||||
height = Korkeus:
|
height = Korkeus:
|
||||||
@@ -483,7 +483,7 @@ research.multiplayer = Only the host can research items.
|
|||||||
uncover = Paljasta
|
uncover = Paljasta
|
||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
loadout = Loadout
|
loadout = Loadout
|
||||||
resources = Resources
|
resources = Resurssit
|
||||||
bannedblocks = Kielletyt Palikat
|
bannedblocks = Kielletyt Palikat
|
||||||
addall = Lisää kaikki
|
addall = Lisää kaikki
|
||||||
launch.destination = Destination: {0}
|
launch.destination = Destination: {0}
|
||||||
@@ -508,37 +508,37 @@ error.io = Network I/O error.
|
|||||||
error.any = Unknown network error.
|
error.any = Unknown network error.
|
||||||
error.bloom = Failed to initialize bloom.\nYour device may not support it.
|
error.bloom = Failed to initialize bloom.\nYour device may not support it.
|
||||||
|
|
||||||
weather.rain.name = Rain
|
weather.rain.name = Sade
|
||||||
weather.snow.name = Snow
|
weather.snow.name = Lumi
|
||||||
weather.sandstorm.name = Sandstorm
|
weather.sandstorm.name = Hiekkamyrsky
|
||||||
weather.sporestorm.name = Sporestorm
|
weather.sporestorm.name = Sienimyräkkä
|
||||||
weather.fog.name = Fog
|
weather.fog.name = Sumu
|
||||||
|
|
||||||
sectors.unexplored = [lightgray]Unexplored
|
sectors.unexplored = [lightgray]Unexplored
|
||||||
sectors.resources = Resources:
|
sectors.resources = Resurssit:
|
||||||
sectors.production = Production:
|
sectors.production = Produktio:
|
||||||
sectors.stored = Stored:
|
sectors.stored = Säilötty:
|
||||||
sectors.resume = Resume
|
sectors.resume = Jatka
|
||||||
sectors.launch = Launch
|
sectors.launch = Laukaise
|
||||||
sectors.select = Select
|
sectors.select = Valitse
|
||||||
sectors.nonelaunch = [lightgray]none (sun)
|
sectors.nonelaunch = [lightgray]ei mitään (sun)
|
||||||
sectors.rename = Rename Sector
|
sectors.rename = Nimeä sektori
|
||||||
sector.missingresources = [scarlet]Insufficient Core Resources
|
sector.missingresources = [scarlet]Sinulla ei ole tarpeeksi resursseja.
|
||||||
|
|
||||||
planet.serpulo.name = Serpulo
|
planet.serpulo.name = Serpulo
|
||||||
planet.sun.name = Sun
|
planet.sun.name = Aurinko
|
||||||
|
|
||||||
sector.groundZero.name = Ground Zero
|
sector.groundZero.name = Tapahtumahorisontti
|
||||||
sector.craters.name = The Craters
|
sector.craters.name = Kraatterit
|
||||||
sector.frozenForest.name = Frozen Forest
|
sector.frozenForest.name = Jäätyneet Metsät
|
||||||
sector.ruinousShores.name = Ruinous Shores
|
sector.ruinousShores.name = Taistelujen Ranta
|
||||||
sector.stainedMountains.name = Stained Mountains
|
sector.stainedMountains.name = Kalliovuoret
|
||||||
sector.desolateRift.name = Desolate Rift
|
sector.desolateRift.name = Musta Kanjoni
|
||||||
sector.nuclearComplex.name = Nuclear Production Complex
|
sector.nuclearComplex.name = Hylätty Ydinvoimalaitos
|
||||||
sector.overgrowth.name = Overgrowth
|
sector.overgrowth.name = Jätti Viidakko
|
||||||
sector.tarFields.name = Tar Fields
|
sector.tarFields.name = Tervakentät
|
||||||
sector.saltFlats.name = Salt Flats
|
sector.saltFlats.name = Suola Autio
|
||||||
sector.fungalPass.name = Fungal Pass
|
sector.fungalPass.name = Sienirihmasto
|
||||||
|
|
||||||
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.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.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.
|
||||||
@@ -633,15 +633,15 @@ stat.lightningdamage = Lightning Damage
|
|||||||
stat.flammability = Flammability
|
stat.flammability = Flammability
|
||||||
stat.radioactivity = Radioactivity
|
stat.radioactivity = Radioactivity
|
||||||
stat.heatcapacity = HeatCapacity
|
stat.heatcapacity = HeatCapacity
|
||||||
stat.viscosity = Viscosity
|
stat.viscosity = Tahmeus
|
||||||
stat.temperature = Temperature
|
stat.temperature = Lämpötila
|
||||||
stat.speed = Speed
|
stat.speed = Nopeus
|
||||||
stat.buildspeed = Build Speed
|
stat.buildspeed = Build Speed
|
||||||
stat.minespeed = Mine Speed
|
stat.minespeed = Mine Speed
|
||||||
stat.minetier = Mine Tier
|
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 = Erikoisvoimat
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = Force Field
|
||||||
ability.repairfield = Repair Field
|
ability.repairfield = Repair Field
|
||||||
@@ -684,11 +684,11 @@ bullet.pierce = [stat]{0}[lightgray]x pierce
|
|||||||
bullet.infinitepierce = [stat]pierce
|
bullet.infinitepierce = [stat]pierce
|
||||||
bullet.freezing = [stat]jäädyttävä
|
bullet.freezing = [stat]jäädyttävä
|
||||||
bullet.tarred = [stat]tervattu
|
bullet.tarred = [stat]tervattu
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x ammusten kerroin
|
bullet.multiplier = [stat]{0}[lightgray]x ammusmäärän kerroin
|
||||||
bullet.reload = [stat]{0}[lightgray]x ampumisnopeus
|
bullet.reload = [stat]{0}[lightgray]x ampumisnopeus
|
||||||
|
|
||||||
unit.blocks = palikat
|
unit.blocks = palikat
|
||||||
unit.blockssquared = blocks²
|
unit.blockssquared = palikat²
|
||||||
unit.powersecond = energiayksikköä/sekunti
|
unit.powersecond = energiayksikköä/sekunti
|
||||||
unit.liquidsecond = nesteyksikköä/sekunti
|
unit.liquidsecond = nesteyksikköä/sekunti
|
||||||
unit.itemssecond = esinettä/sekunti
|
unit.itemssecond = esinettä/sekunti
|
||||||
@@ -696,12 +696,12 @@ unit.liquidunits = nesteyksikköä
|
|||||||
unit.powerunits = energiayksikköä
|
unit.powerunits = energiayksikköä
|
||||||
unit.degrees = astetta
|
unit.degrees = astetta
|
||||||
unit.seconds = sekunttia
|
unit.seconds = sekunttia
|
||||||
unit.minutes = mins
|
unit.minutes = minuuttia
|
||||||
unit.persecond = /s
|
unit.persecond = /s
|
||||||
unit.perminute = /min
|
unit.perminute = /min
|
||||||
unit.timesspeed = x nopeus
|
unit.timesspeed = x nopeus
|
||||||
unit.percent = %
|
unit.percent = %
|
||||||
unit.shieldhealth = shield health
|
unit.shieldhealth = suojan elinpisteet
|
||||||
unit.items = esinettä
|
unit.items = esinettä
|
||||||
unit.thousands = t
|
unit.thousands = t
|
||||||
unit.millions = mil
|
unit.millions = mil
|
||||||
@@ -733,24 +733,24 @@ setting.fpscap.none = Ei Mitään
|
|||||||
setting.fpscap.text = {0} FPS
|
setting.fpscap.text = {0} FPS
|
||||||
setting.uiscale.name = UI Koko[lightgray] (vaatii uudelleenkäynnistyksen)[]
|
setting.uiscale.name = UI Koko[lightgray] (vaatii uudelleenkäynnistyksen)[]
|
||||||
setting.swapdiagonal.name = Aina vino korvaus
|
setting.swapdiagonal.name = Aina vino korvaus
|
||||||
setting.difficulty.training = Treeni
|
setting.difficulty.training = Treenaus
|
||||||
setting.difficulty.easy = Helppo
|
setting.difficulty.easy = Huoleton
|
||||||
setting.difficulty.normal = Keskivaikea
|
setting.difficulty.normal = Haasteeton
|
||||||
setting.difficulty.hard = Haastava
|
setting.difficulty.hard = Taidonnäyte
|
||||||
setting.difficulty.insane = Järjetön
|
setting.difficulty.insane = Hullun Vaikea
|
||||||
setting.difficulty.name = Vaikeustaso:
|
setting.difficulty.name = Vaikeustaso:
|
||||||
setting.screenshake.name = Näytön keikkuminen
|
setting.screenshake.name = Näytön keikkuminen
|
||||||
setting.effects.name = Naytön Efektit
|
setting.effects.name = Naytön Efektit
|
||||||
setting.destroyedblocks.name = Näytä tuhoutuneet palikat
|
setting.destroyedblocks.name = Näytä tuhoutuneet palikat
|
||||||
setting.blockstatus.name = Display Block Status
|
setting.blockstatus.name = Näytä Palikan Toimintakunto
|
||||||
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding
|
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding
|
||||||
setting.sensitivity.name = Ohjauksen herkkyys
|
setting.sensitivity.name = Ohjauksen herkkyys
|
||||||
setting.saveinterval.name = Tallennuksen Aikaväli
|
setting.saveinterval.name = Tallennuksen Aikaväli
|
||||||
setting.seconds = {0} Sekunttia
|
setting.seconds = {0} Sekuntia
|
||||||
setting.blockselecttimeout.name = Block Select Timeout
|
setting.blockselecttimeout.name = Block Select Timeout
|
||||||
setting.milliseconds = {0} millisekunttia
|
setting.milliseconds = {0} millisekuntia
|
||||||
setting.fullscreen.name = Fullscreen
|
setting.fullscreen.name = Täysnäyttö
|
||||||
setting.borderlesswindow.name = Borderless Window[lightgray] (vaatii uudelleenkäynnistyksen)
|
setting.borderlesswindow.name = Reunaton Ikkuna[lightgray] (vaatii uudelleenkäynnistyksen)
|
||||||
setting.fps.name = Näytä FPS
|
setting.fps.name = Näytä FPS
|
||||||
setting.smoothcamera.name = Smooth Camera
|
setting.smoothcamera.name = Smooth Camera
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
@@ -776,8 +776,8 @@ public.confirm = Do you want to make your game public?\n[accent]Anyone will be a
|
|||||||
public.beta = Note that beta versions of the game cannot make public lobbies.
|
public.beta = Note that beta versions of the game cannot make public lobbies.
|
||||||
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds...
|
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds...
|
||||||
uiscale.cancel = Peruuta ja poistu
|
uiscale.cancel = Peruuta ja poistu
|
||||||
setting.bloom.name = Bloom
|
setting.bloom.name = Hehkeys
|
||||||
keybind.title = Rebind Keys
|
keybind.title = Kontrollit
|
||||||
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported.
|
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported.
|
||||||
category.general.name = General
|
category.general.name = General
|
||||||
category.view.name = View
|
category.view.name = View
|
||||||
@@ -786,10 +786,10 @@ category.blocks.name = Block Select
|
|||||||
command.attack = Hyökkäys
|
command.attack = Hyökkäys
|
||||||
command.rally = Kokoontuminen
|
command.rally = Kokoontuminen
|
||||||
command.retreat = Perääntyminen
|
command.retreat = Perääntyminen
|
||||||
command.idle = Idle
|
command.idle = AFK
|
||||||
placement.blockselectkeys = \n[lightgray]Key: [{0},
|
placement.blockselectkeys = \n[lightgray]Key: [{0},
|
||||||
keybind.respawn.name = Respawn
|
keybind.respawn.name = Synny Uudelleen
|
||||||
keybind.control.name = Control Unit
|
keybind.control.name = Käytä Yksikköä
|
||||||
keybind.clear_building.name = Clear Building
|
keybind.clear_building.name = Clear Building
|
||||||
keybind.press = Press a key...
|
keybind.press = Press a key...
|
||||||
keybind.press.axis = Press an axis or key...
|
keybind.press.axis = Press an axis or key...
|
||||||
@@ -907,19 +907,19 @@ item.graphite.name = Grafiitti
|
|||||||
item.titanium.name = Titaani
|
item.titanium.name = Titaani
|
||||||
item.thorium.name = Torium
|
item.thorium.name = Torium
|
||||||
item.silicon.name = Pii
|
item.silicon.name = Pii
|
||||||
item.plastanium.name = Plastaniumi
|
item.plastanium.name = Plastiikkaseos
|
||||||
item.phase-fabric.name = Kiihdekuitu
|
item.phase-fabric.name = Kiihtokuitu
|
||||||
item.surge-alloy.name = Taiteseos
|
item.surge-alloy.name = Venttikovete
|
||||||
item.spore-pod.name = Itiöpalko
|
item.spore-pod.name = Itiöpalko
|
||||||
item.sand.name = Hiekka
|
item.sand.name = Hiekka
|
||||||
item.blast-compound.name = Räjähdeyhdiste
|
item.blast-compound.name = Erikoisruuti
|
||||||
item.pyratite.name = Pyratiitti
|
item.pyratite.name = Rikkikiisu
|
||||||
item.metaglass.name = Metallilasi
|
item.metaglass.name = Teräslasi
|
||||||
item.scrap.name = Romu
|
item.scrap.name = Romu
|
||||||
liquid.water.name = Vesi
|
liquid.water.name = Vesi
|
||||||
liquid.slag.name = Kuona
|
liquid.slag.name = Kuona
|
||||||
liquid.oil.name = Öljy
|
liquid.oil.name = Öljy
|
||||||
liquid.cryofluid.name = Kryoneste
|
liquid.cryofluid.name = Kryölitku
|
||||||
|
|
||||||
unit.dagger.name = Tikari
|
unit.dagger.name = Tikari
|
||||||
unit.mace.name = Mace
|
unit.mace.name = Mace
|
||||||
@@ -991,9 +991,9 @@ block.spawn.name = Vihollisten syntymispiste
|
|||||||
block.core-shard.name = Ydin: Siru
|
block.core-shard.name = Ydin: Siru
|
||||||
block.core-foundation.name = Ydin: Pohjaus
|
block.core-foundation.name = Ydin: Pohjaus
|
||||||
block.core-nucleus.name = Ydin: Tuma
|
block.core-nucleus.name = Ydin: Tuma
|
||||||
block.deepwater.name = Syvä vesi
|
block.deepwater.name = Syvää vettä
|
||||||
block.water.name = Vesi
|
block.water.name = Vettä
|
||||||
block.tainted-water.name = Pilaantunut vesi
|
block.tainted-water.name = Saastevettä
|
||||||
block.darksand-tainted-water.name = Dark Sand Tainted Water
|
block.darksand-tainted-water.name = Dark Sand Tainted Water
|
||||||
block.tar.name = Terva
|
block.tar.name = Terva
|
||||||
block.stone.name = Kivi
|
block.stone.name = Kivi
|
||||||
@@ -1057,7 +1057,7 @@ 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.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 = Junktio
|
||||||
block.router.name = Reititin
|
block.router.name = Reititin
|
||||||
block.distributor.name = Distributor
|
block.distributor.name = Distributor
|
||||||
block.sorter.name = Lajittelija
|
block.sorter.name = Lajittelija
|
||||||
|
|||||||
@@ -41,11 +41,12 @@ be.ignore = Abaikan
|
|||||||
be.noupdates = Tidak ada pembaruan yang ditemukan.
|
be.noupdates = Tidak ada pembaruan yang ditemukan.
|
||||||
be.check = Cek versi baru
|
be.check = Cek versi baru
|
||||||
|
|
||||||
mod.featured.title = Browser mod
|
|
||||||
mod.featured.dialog.title = Browser Mod
|
mod.featured.dialog.title = Browser Mod
|
||||||
mods.browser.selected = Mod yang Dipilih
|
mods.browser.selected = Mod yang Dipilih
|
||||||
mods.browser.add = Unduh Mod
|
mods.browser.add = Unduh Mod
|
||||||
mods.github.open = Buka di GitHub
|
mods.github.open = Buka di GitHub
|
||||||
|
mods.browser.sortdate = Urut berdasarkan waktu
|
||||||
|
mods.browser.sortstars = Urut berdasarkan bintang
|
||||||
|
|
||||||
schematic = Skema
|
schematic = Skema
|
||||||
schematic.add = Menyimpan skema...
|
schematic.add = Menyimpan skema...
|
||||||
@@ -90,6 +91,7 @@ joingame = Bermain Bersama
|
|||||||
customgame = Permainan Modifikasi
|
customgame = Permainan Modifikasi
|
||||||
newgame = Permainan Baru
|
newgame = Permainan Baru
|
||||||
none = <kosong>
|
none = <kosong>
|
||||||
|
none.found = [lightgray]<tidak ditemukan>
|
||||||
minimap = Peta Kecil
|
minimap = Peta Kecil
|
||||||
position = Posisi
|
position = Posisi
|
||||||
close = Tutup
|
close = Tutup
|
||||||
@@ -287,9 +289,10 @@ cancel = Batal
|
|||||||
openlink = Buka Tautan
|
openlink = Buka Tautan
|
||||||
copylink = Salin Tautan
|
copylink = Salin Tautan
|
||||||
back = Kembali
|
back = Kembali
|
||||||
crash.export = Export Crash Logs
|
max = Maks
|
||||||
crash.none = No crash logs found.
|
crash.export = Ekspor Crash Log
|
||||||
crash.exported = Crash logs exported.
|
crash.none = Tidak ada crash log ditemukan.
|
||||||
|
crash.exported = Crash log diekspor.
|
||||||
data.export = Ekspor Data
|
data.export = Ekspor Data
|
||||||
data.import = Impor Data
|
data.import = Impor Data
|
||||||
data.openfolder = Buka Folder Data
|
data.openfolder = Buka Folder Data
|
||||||
@@ -361,7 +364,6 @@ editor.center = Pusat
|
|||||||
workshop = Workshop
|
workshop = Workshop
|
||||||
waves.title = Gelombang
|
waves.title = Gelombang
|
||||||
waves.remove = Hapus
|
waves.remove = Hapus
|
||||||
waves.never = <tidak pernah>
|
|
||||||
waves.every = setiap
|
waves.every = setiap
|
||||||
waves.waves = gelombang
|
waves.waves = gelombang
|
||||||
waves.perspawn = per muncul
|
waves.perspawn = per muncul
|
||||||
@@ -705,6 +707,7 @@ stat.commandlimit = Batas Perintah
|
|||||||
stat.abilities = Kemampuan
|
stat.abilities = Kemampuan
|
||||||
stat.canboost = Dapat dipercepat
|
stat.canboost = Dapat dipercepat
|
||||||
stat.flying = Terbang
|
stat.flying = Terbang
|
||||||
|
stat.ammouse = Penggunaan Amunisi
|
||||||
|
|
||||||
ability.forcefield = Bidang Kekuatan
|
ability.forcefield = Bidang Kekuatan
|
||||||
ability.repairfield = Bidang Perbaikan
|
ability.repairfield = Bidang Perbaikan
|
||||||
@@ -719,6 +722,7 @@ bar.corereq = Memerlukan Inti Dasar
|
|||||||
bar.drillspeed = Kecepatan Bor: {0}/s
|
bar.drillspeed = Kecepatan Bor: {0}/s
|
||||||
bar.pumpspeed = Kecepatan Pompa: {0}/s
|
bar.pumpspeed = Kecepatan Pompa: {0}/s
|
||||||
bar.efficiency = Daya Guna: {0}%
|
bar.efficiency = Daya Guna: {0}%
|
||||||
|
bar.boost = Percepatan: {0}%
|
||||||
bar.powerbalance = Tenaga: {0}/s
|
bar.powerbalance = Tenaga: {0}/s
|
||||||
bar.powerstored = Disimpan: {0}/{1}
|
bar.powerstored = Disimpan: {0}/{1}
|
||||||
bar.poweramount = Tenaga: {0}
|
bar.poweramount = Tenaga: {0}
|
||||||
@@ -727,7 +731,6 @@ bar.powerlines = Sambungan: {0}/{1}
|
|||||||
bar.items = Item: {0}
|
bar.items = Item: {0}
|
||||||
bar.capacity = Kapasitas: {0}
|
bar.capacity = Kapasitas: {0}
|
||||||
bar.unitcap = {0} {1}/{2}
|
bar.unitcap = {0} {1}/{2}
|
||||||
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled]
|
|
||||||
bar.liquid = Zat Cair
|
bar.liquid = Zat Cair
|
||||||
bar.heat = Panas
|
bar.heat = Panas
|
||||||
bar.power = Tenaga
|
bar.power = Tenaga
|
||||||
@@ -744,6 +747,7 @@ bullet.sapping = [stat]sapping
|
|||||||
bullet.homing = [stat]mengejar
|
bullet.homing = [stat]mengejar
|
||||||
bullet.shock = [stat]mengkejut
|
bullet.shock = [stat]mengkejut
|
||||||
bullet.frag = [stat]menyebar
|
bullet.frag = [stat]menyebar
|
||||||
|
bullet.buildingdamage = [stat]{0}%[lightgray] kerusakan bangunan
|
||||||
bullet.knockback = [stat]{0}[lightgray] pantulan kembali
|
bullet.knockback = [stat]{0}[lightgray] pantulan kembali
|
||||||
bullet.pierce = [stat]{0}[lightgray]x tembus
|
bullet.pierce = [stat]{0}[lightgray]x tembus
|
||||||
bullet.infinitepierce = [stat]menembus
|
bullet.infinitepierce = [stat]menembus
|
||||||
@@ -772,6 +776,7 @@ unit.items = item
|
|||||||
unit.thousands = rb
|
unit.thousands = rb
|
||||||
unit.millions = jt
|
unit.millions = jt
|
||||||
unit.billions = m
|
unit.billions = m
|
||||||
|
unit.pershot = /tembakan
|
||||||
category.purpose = Kegunaan
|
category.purpose = Kegunaan
|
||||||
category.general = Umum
|
category.general = Umum
|
||||||
category.power = Tenaga
|
category.power = Tenaga
|
||||||
@@ -841,6 +846,7 @@ setting.bridgeopacity.name = Jelas-Beningnya Jembatan
|
|||||||
setting.playerchat.name = Tunjukkan Pesan dalam Permainan
|
setting.playerchat.name = Tunjukkan Pesan dalam Permainan
|
||||||
setting.showweather.name = Perlihatkan Cuaca
|
setting.showweather.name = Perlihatkan Cuaca
|
||||||
public.confirm = Apakah kamu ingin mempublikasi permainanmu?\n[accent]Siapa saja bisa masuk ke permainanmu.\n[lightgray]Ini bisa diganti di Peraturan->Permainan->Visibilitas Game Publik.
|
public.confirm = Apakah kamu ingin mempublikasi permainanmu?\n[accent]Siapa saja bisa masuk ke permainanmu.\n[lightgray]Ini bisa diganti di Peraturan->Permainan->Visibilitas Game Publik.
|
||||||
|
public.confirm.really = Jika kamu ingin bermain dengan temanmu, gunakan [green]Undang Teman[] daripada [scarlet]server publik[]!\nApakah kamu yakin ingin membuat permainanmu [scarlet]publik[]?
|
||||||
public.beta = Ingat bahwa game versi beta tidak dapat membuat lobi publik.
|
public.beta = Ingat bahwa game versi beta tidak dapat membuat lobi publik.
|
||||||
uiscale.reset = Skala UI telah diubah.\nTekan "OK" untuk mengonfirmasi.\n[scarlet]Kembali dan keluar di[accent] {0}[] pengaturan...
|
uiscale.reset = Skala UI telah diubah.\nTekan "OK" untuk mengonfirmasi.\n[scarlet]Kembali dan keluar di[accent] {0}[] pengaturan...
|
||||||
uiscale.cancel = Batal & Keluar
|
uiscale.cancel = Batal & Keluar
|
||||||
@@ -915,6 +921,7 @@ keybind.toggle_menus.name = Muncul Tidaknya Menu
|
|||||||
keybind.chat_history_prev.name = Sejarah Pesan Sebelumnya
|
keybind.chat_history_prev.name = Sejarah Pesan Sebelumnya
|
||||||
keybind.chat_history_next.name = Sejarah Pesan Setelahnya
|
keybind.chat_history_next.name = Sejarah Pesan Setelahnya
|
||||||
keybind.chat_scroll.name = Scroll Pesan
|
keybind.chat_scroll.name = Scroll Pesan
|
||||||
|
keybind.chat_mode.name = Ubah Mode Pesan
|
||||||
keybind.drop_unit.name = Jatuhkan Unit
|
keybind.drop_unit.name = Jatuhkan Unit
|
||||||
keybind.zoom_minimap.name = Perbesar Peta Kecil
|
keybind.zoom_minimap.name = Perbesar Peta Kecil
|
||||||
mode.help.title = Deskripsi mode
|
mode.help.title = Deskripsi mode
|
||||||
@@ -922,7 +929,7 @@ mode.survival.name = Bertahan Hidup
|
|||||||
mode.survival.description = Mode normal. Sumber daya terbatas dan gelombang otomatis.
|
mode.survival.description = Mode normal. Sumber daya terbatas dan gelombang otomatis.
|
||||||
mode.sandbox.name = Mode Sandbox/Bebas
|
mode.sandbox.name = Mode Sandbox/Bebas
|
||||||
mode.sandbox.description = Sumber daya tak terbatas dan tidak ada gelombang otomatis.
|
mode.sandbox.description = Sumber daya tak terbatas dan tidak ada gelombang otomatis.
|
||||||
mode.editor.name = Sunting
|
mode.editor.name = Penyunting
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
mode.pvp.description = Melawan pemain lain. Membutuhkan setidaknya 2 inti berbeda warna didalam peta untuk main.
|
mode.pvp.description = Melawan pemain lain. Membutuhkan setidaknya 2 inti berbeda warna didalam peta untuk main.
|
||||||
mode.attack.name = Penyerangan
|
mode.attack.name = Penyerangan
|
||||||
@@ -931,6 +938,7 @@ mode.custom = Pengaturan Modifikasi
|
|||||||
|
|
||||||
rules.infiniteresources = Sumber Daya Tak Terbatas
|
rules.infiniteresources = Sumber Daya Tak Terbatas
|
||||||
rules.reactorexplosions = Ledakan Reaktor
|
rules.reactorexplosions = Ledakan Reaktor
|
||||||
|
rules.coreincinerates = Penghangusan Luapan Inti
|
||||||
rules.schematic = Skema Diperbolehkan
|
rules.schematic = Skema Diperbolehkan
|
||||||
rules.wavetimer = Pengaturan Waktu Gelombang
|
rules.wavetimer = Pengaturan Waktu Gelombang
|
||||||
rules.waves = Gelombang
|
rules.waves = Gelombang
|
||||||
@@ -963,6 +971,7 @@ rules.explosions = Kekuatan Ledakan Blok/Unit
|
|||||||
rules.ambientlight = Sinar Disekeliling
|
rules.ambientlight = Sinar Disekeliling
|
||||||
rules.weather = Cuaca
|
rules.weather = Cuaca
|
||||||
rules.weather.frequency = Frekuensi:
|
rules.weather.frequency = Frekuensi:
|
||||||
|
rules.weather.always = Selalu
|
||||||
rules.weather.duration = Durasi:
|
rules.weather.duration = Durasi:
|
||||||
|
|
||||||
content.item.name = Item
|
content.item.name = Item
|
||||||
@@ -1139,7 +1148,7 @@ block.overflow-gate.name = Gerbang Luap
|
|||||||
block.underflow-gate.name = Gerbang Luap Terbalik
|
block.underflow-gate.name = Gerbang Luap Terbalik
|
||||||
block.silicon-smelter.name = Pelebur Silikon
|
block.silicon-smelter.name = Pelebur Silikon
|
||||||
block.phase-weaver.name = Pengrajut Phase
|
block.phase-weaver.name = Pengrajut Phase
|
||||||
block.pulverizer.name = Pulverisator
|
block.pulverizer.name = Penghancur
|
||||||
block.cryofluidmixer.name = Penyampur Cairan Dingin
|
block.cryofluidmixer.name = Penyampur Cairan Dingin
|
||||||
block.melter.name = Pencair
|
block.melter.name = Pencair
|
||||||
block.incinerator.name = Penghangus
|
block.incinerator.name = Penghangus
|
||||||
@@ -1171,19 +1180,19 @@ block.power-void.name = Penghilang Tenaga
|
|||||||
block.power-source.name = Sumber Tenaga
|
block.power-source.name = Sumber Tenaga
|
||||||
block.unloader.name = Pembongkar Muatan
|
block.unloader.name = Pembongkar Muatan
|
||||||
block.vault.name = Gudang
|
block.vault.name = Gudang
|
||||||
block.wave.name = Wave
|
block.wave.name = Penyemprot
|
||||||
block.tsunami.name = Tsunami
|
block.tsunami.name = Tsunami
|
||||||
block.swarmer.name = Peluncur Misil
|
block.swarmer.name = Peluncur Misil
|
||||||
block.salvo.name = Salvo
|
block.salvo.name = Salvo
|
||||||
block.ripple.name = Ripple
|
block.ripple.name = Mortir
|
||||||
block.phase-conveyor.name = Pengantar Berbahan Phase
|
block.phase-conveyor.name = Pengantar Berbahan Phase
|
||||||
block.bridge-conveyor.name = Jembatan Pengantar
|
block.bridge-conveyor.name = Jembatan Pengantar
|
||||||
block.plastanium-compressor.name = Kompresor Plastanium
|
block.plastanium-compressor.name = Kompresor Plastanium
|
||||||
block.pyratite-mixer.name = Penyampur Pyratit
|
block.pyratite-mixer.name = Penyampur Pyratit
|
||||||
block.blast-mixer.name = Penyampur Peledak
|
block.blast-mixer.name = Penyampur Bahan Peledak
|
||||||
block.solar-panel.name = Panel Surya
|
block.solar-panel.name = Panel Surya
|
||||||
block.solar-panel-large.name = Panel Surya Besar
|
block.solar-panel-large.name = Panel Surya Besar
|
||||||
block.oil-extractor.name = Penggali Minyak
|
block.oil-extractor.name = Pengekstrak Minyak
|
||||||
block.repair-point.name = Tempat Perbaikan
|
block.repair-point.name = Tempat Perbaikan
|
||||||
block.pulse-conduit.name = Selang Denyut
|
block.pulse-conduit.name = Selang Denyut
|
||||||
block.plated-conduit.name = Pipa Terlapis
|
block.plated-conduit.name = Pipa Terlapis
|
||||||
@@ -1197,8 +1206,8 @@ block.thorium-reactor.name = Reaktor Thorium
|
|||||||
block.mass-driver.name = Penggerak Massal
|
block.mass-driver.name = Penggerak Massal
|
||||||
block.blast-drill.name = Bor Ledakan Udara
|
block.blast-drill.name = Bor Ledakan Udara
|
||||||
block.thermal-pump.name = Pompa Suhu Panas
|
block.thermal-pump.name = Pompa Suhu Panas
|
||||||
block.thermal-generator.name = Generator Suhu Panas
|
block.thermal-generator.name = Generator Panas
|
||||||
block.alloy-smelter.name = Pelebur Paduan Listrik
|
block.alloy-smelter.name = Pelebur Paduan Logam
|
||||||
block.mender.name = Mender
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Mender Projektor
|
block.mend-projector.name = Mender Projektor
|
||||||
block.surge-wall.name = Dinding Listrik
|
block.surge-wall.name = Dinding Listrik
|
||||||
@@ -1206,11 +1215,11 @@ block.surge-wall-large.name = Dinding Listrik Besar
|
|||||||
block.cyclone.name = Cyclone
|
block.cyclone.name = Cyclone
|
||||||
block.fuse.name = Fuse
|
block.fuse.name = Fuse
|
||||||
block.shock-mine.name = Ranjau Listrik
|
block.shock-mine.name = Ranjau Listrik
|
||||||
block.overdrive-projector.name = Proyeksi Pencepat
|
block.overdrive-projector.name = Projektor Pemercepat
|
||||||
block.force-projector.name = Proyeksi Medan Gaya
|
block.force-projector.name = Projektor Pelindung
|
||||||
block.arc.name = Arc
|
block.arc.name = Busur Petir
|
||||||
block.rtg-generator.name = Generator RTG
|
block.rtg-generator.name = Generator Radiasi
|
||||||
block.spectre.name = Spectre
|
block.spectre.name = Meriam Raksasa
|
||||||
block.meltdown.name = Meltdown
|
block.meltdown.name = Meltdown
|
||||||
block.foreshadow.name = Foreshadow
|
block.foreshadow.name = Foreshadow
|
||||||
block.container.name = Kontainer
|
block.container.name = Kontainer
|
||||||
@@ -1218,9 +1227,9 @@ block.launch-pad.name = Alas Peluncur
|
|||||||
block.launch-pad-large.name = Alas Peluncur Besar
|
block.launch-pad-large.name = Alas Peluncur Besar
|
||||||
block.segment.name = Segment
|
block.segment.name = Segment
|
||||||
block.command-center.name = Pusat Perintah
|
block.command-center.name = Pusat Perintah
|
||||||
block.ground-factory.name = Pabrik Angkatan Darat
|
block.ground-factory.name = Pabrik Unit Darat
|
||||||
block.air-factory.name = Pabrik Angkatan Udara
|
block.air-factory.name = Pabrik Unit Udara
|
||||||
block.naval-factory.name = Pabrik Angkatan Laut
|
block.naval-factory.name = Pabrik Unit Laut
|
||||||
block.additive-reconstructor.name = Rekonstruktor Aditif
|
block.additive-reconstructor.name = Rekonstruktor Aditif
|
||||||
block.multiplicative-reconstructor.name = Rekonstruktor Multiplikatif
|
block.multiplicative-reconstructor.name = Rekonstruktor Multiplikatif
|
||||||
block.exponential-reconstructor.name = Rekonstruktor Eksponensial
|
block.exponential-reconstructor.name = Rekonstruktor Eksponensial
|
||||||
@@ -1228,8 +1237,8 @@ block.tetrative-reconstructor.name = Rekonstruktor Tetratif
|
|||||||
block.payload-conveyor.name = Pengantar Massa
|
block.payload-conveyor.name = Pengantar Massa
|
||||||
block.payload-router.name = Pengarah Massa
|
block.payload-router.name = Pengarah Massa
|
||||||
block.disassembler.name = Pembongkar
|
block.disassembler.name = Pembongkar
|
||||||
block.silicon-crucible.name = Multi-Lebur
|
block.silicon-crucible.name = Pelebur Raksasa
|
||||||
block.overdrive-dome.name = Kubah Proyeksi Percepat
|
block.overdrive-dome.name = Kubah Projektor Pemercepat
|
||||||
#experimental, may be removed
|
#experimental, may be removed
|
||||||
block.block-forge.name = Pemadu Blok
|
block.block-forge.name = Pemadu Blok
|
||||||
block.block-loader.name = Pemuat Blok
|
block.block-loader.name = Pemuat Blok
|
||||||
@@ -1312,10 +1321,10 @@ item.phase-fabric.description = Digunakan di elektronik canggih dan teknologi pe
|
|||||||
item.surge-alloy.description = Digunakan di pertahanan yang lebih canggih dan struktur pertahanan reaktif.
|
item.surge-alloy.description = Digunakan di pertahanan yang lebih canggih dan struktur pertahanan reaktif.
|
||||||
item.spore-pod.description = Digunakan untuk produksi minyak, bahan peledak dan bahan bakar.
|
item.spore-pod.description = Digunakan untuk produksi minyak, bahan peledak dan bahan bakar.
|
||||||
item.spore-pod.details = Spora. Sepertinya bentuk kehidupan sintetis. Menghasilkan gas beracun yang meracuni kehidupan biologis lainnya. Sangat mudah menyebar. Sangat mudah terbakar dalam kondisi tertentu.
|
item.spore-pod.details = Spora. Sepertinya bentuk kehidupan sintetis. Menghasilkan gas beracun yang meracuni kehidupan biologis lainnya. Sangat mudah menyebar. Sangat mudah terbakar dalam kondisi tertentu.
|
||||||
item.blast-compound.description = Senyawa yang digunakan di bom dan amunisi peledak.
|
item.blast-compound.description = Senyawa yang digunakan sebagai bom dan amunisi peledak.
|
||||||
item.pyratite.description = Digunakan di senjata pembakar dan generator yang membutuhkan bahan mudah terbakar.
|
item.pyratite.description = Digunakan di senjata pembakar dan generator yang membutuhkan bahan mudah terbakar.
|
||||||
|
|
||||||
liquid.water.description = Umumnya digunakan untuk mendinginkan mesin-mesin dan pendaur ulang.
|
liquid.water.description = Umumnya digunakan untuk mendinginkan bor dan turret.
|
||||||
liquid.slag.description = Berbagai campuran tipe logam yang meleleh. Dapat dipisahkan menjadi mineral masing-masing, atau disemprotkan ke musuh sebagai senjata.
|
liquid.slag.description = Berbagai campuran tipe logam yang meleleh. Dapat dipisahkan menjadi mineral masing-masing, atau disemprotkan ke musuh sebagai senjata.
|
||||||
liquid.oil.description = Digunakan di produksi material lanjutan dan sebagai amunisi yang mudah terbakar.
|
liquid.oil.description = Digunakan di produksi material lanjutan dan sebagai amunisi yang mudah terbakar.
|
||||||
liquid.cryofluid.description = Digunakan sebagai pendingin di reaktor, turret, dan pabrik.
|
liquid.cryofluid.description = Digunakan sebagai pendingin di reaktor, turret, dan pabrik.
|
||||||
@@ -1325,8 +1334,8 @@ block.armored-conveyor.description = Memindahkan barang sama cepatnya dengan pen
|
|||||||
block.illuminator.description = Sebuah lampu kecil untuk menerangi daerah sekitar. Perlu listrik untuk bekerja.
|
block.illuminator.description = Sebuah lampu kecil untuk menerangi daerah sekitar. Perlu listrik untuk bekerja.
|
||||||
block.message.description = Menyimpan pesan. Digunakan untuk komunikasi antar sekutu.
|
block.message.description = Menyimpan pesan. Digunakan untuk komunikasi antar sekutu.
|
||||||
block.graphite-press.description = Memadatkan bongkahan batu bara menjadi lempengan grafit murni.
|
block.graphite-press.description = Memadatkan bongkahan batu bara menjadi lempengan grafit murni.
|
||||||
block.multi-press.description = Versi pemadat grafit yang lebih bagus. Membutuhkan air dan tenaga untuk memproses batu bara lebih cepat dan efisien.
|
block.multi-press.description = Versi pemadat grafit yang lebih bagus. Membutuhkan air sebagai pendingin.
|
||||||
block.silicon-smelter.description = Mengubah pasir dengan batu bara untuk memproduksi silikon.
|
block.silicon-smelter.description = Melebur pasir dengan batu bara untuk memproduksi silikon.
|
||||||
block.kiln.description = Membakar pasir dan timah menjadi kaca meta. Membutuhkan tenaga.
|
block.kiln.description = Membakar pasir dan timah menjadi kaca meta. Membutuhkan tenaga.
|
||||||
block.plastanium-compressor.description = Memproduksi plastanium dari minyak dan titanium.
|
block.plastanium-compressor.description = Memproduksi plastanium dari minyak dan titanium.
|
||||||
block.phase-weaver.description = Memproduksi kain phase dari thorium dan banyak pasir.
|
block.phase-weaver.description = Memproduksi kain phase dari thorium dan banyak pasir.
|
||||||
@@ -1376,7 +1385,7 @@ block.inverted-sorter.description = Sama seperti penyortir, melainkan mengeluark
|
|||||||
block.router.description = Menerima bahan dari satu arah dan mengeluarkannya ke 3 arah yang sama. Bisa juga menyimpan sejumlah bahan. Berguna untuk memisahkan bahan dari satu sumber ke target yang banyak.
|
block.router.description = Menerima bahan dari satu arah dan mengeluarkannya ke 3 arah yang sama. Bisa juga menyimpan sejumlah bahan. Berguna untuk memisahkan bahan dari satu sumber ke target yang banyak.
|
||||||
block.router.details = Bisa sangat menggangu. Jangan meletakannya disamping input produksi, karena bisa tersumbat oleh output.
|
block.router.details = Bisa sangat menggangu. Jangan meletakannya disamping input produksi, karena bisa tersumbat oleh output.
|
||||||
block.distributor.description = Pemisah canggih yang memisah item ke 7 arah berbeda bersamaan.
|
block.distributor.description = Pemisah canggih yang memisah item ke 7 arah berbeda bersamaan.
|
||||||
block.overflow-gate.description = Kombinasi antara pemisah dan penyortir yang hanya mengeluarkan item ke kiri dan/atau ke kanan jika bagian depan tertutup.
|
block.overflow-gate.description = Hanya mengeluarkan item ke kiri dan/atau ke kanan jika bagian depan tertutup.
|
||||||
block.underflow-gate.description = Kebalikan dari gerbang luap. Mengeluarkan ke depan jika kanan dan kiri tertutup.
|
block.underflow-gate.description = Kebalikan dari gerbang luap. Mengeluarkan ke depan jika kanan dan kiri tertutup.
|
||||||
block.mass-driver.description = Blok item transportasi tercanggih. Membawa beberapa item dan menembaknya ke penggerak massal lainnya dari arah yang jauh.
|
block.mass-driver.description = Blok item transportasi tercanggih. Membawa beberapa item dan menembaknya ke penggerak massal lainnya dari arah yang jauh.
|
||||||
block.mechanical-pump.description = Pompa murah dengan pengeluaran yang pelan, tetapi tidak mengkonsumsi tenaga.
|
block.mechanical-pump.description = Pompa murah dengan pengeluaran yang pelan, tetapi tidak mengkonsumsi tenaga.
|
||||||
@@ -1399,18 +1408,18 @@ block.battery-large.description = Menyimpan lebih banyak tenaga daripada baterai
|
|||||||
block.combustion-generator.description = Menghasilkan tenaga dengan membakar minyak atau bahan bakar.
|
block.combustion-generator.description = Menghasilkan tenaga dengan membakar minyak atau bahan bakar.
|
||||||
block.thermal-generator.description = Menghasilkan tenaga disaat ditaruh di lokasi yang panas.
|
block.thermal-generator.description = Menghasilkan tenaga disaat ditaruh di lokasi yang panas.
|
||||||
block.steam-generator.description = Lebih efisien daripada generator pembakar, tetapi membutuhkan tambahan air.
|
block.steam-generator.description = Lebih efisien daripada generator pembakar, tetapi membutuhkan tambahan air.
|
||||||
block.differential-generator.description = Menghasilkan banyak sekali tenaga. Memanfaatkan perbedaan suhu dingin cairan pendingin dan suhu panas pyratite.
|
block.differential-generator.description = Menghasilkan tenaga dalam jumlah banyak. Memanfaatkan perbedaan suhu dingin cairan pendingin dan suhu panas pyratite.
|
||||||
block.rtg-generator.description = Generator yang tidak membutuhkan pendiginan tetapi lebih memberi sedikit tenaga daripada reaktor thorium.
|
block.rtg-generator.description = Generator yang tidak membutuhkan pendiginan tetapi lebih memberi sedikit tenaga daripada reaktor thorium.
|
||||||
block.solar-panel.description = Menghasilkan jumlah tenaga kecil dari matahari.
|
block.solar-panel.description = Menghasilkan tenaga dalam jumlah kecil dari sinar matahari.
|
||||||
block.solar-panel-large.description = Menghasilkan lebih banyak tenaga dari panel surya biasa, tapi lebih mahal untuk dibangun.
|
block.solar-panel-large.description = Menghasilkan lebih banyak tenaga dari panel surya biasa, tapi lebih mahal untuk dibangun.
|
||||||
block.thorium-reactor.description = Menghasilkan tenaga yang besar dari konsumsi thorium. Membutuhkan pendinginan konstan. Akan meledak jika tidak cukup pendingin . Pengeluaran tenaga tergantung kepenuhan.
|
block.thorium-reactor.description = Menghasilkan tenaga yang besar dari konsumsi thorium. Membutuhkan pendinginan konstan. Akan meledak jika tidak cukup pendingin . Pengeluaran tenaga tergantung kepenuhan.
|
||||||
block.impact-reactor.description = Sebuah generator yang lebih maju, dapat menghasilkan tenaga dengan jumlah yang sangat banyak. Memerlukan tenaga untuk menyelakan reaktor terlebih dahulu.
|
block.impact-reactor.description = Sebuah generator yang lebih maju, dapat menghasilkan tenaga dengan jumlah yang sangat banyak. Memerlukan tenaga untuk menyalakan reaktor terlebih dahulu.
|
||||||
block.mechanical-drill.description = Bor murah. Saat ditaruh ditempat yang sesuai, mengeluarkan item dengan pelan tanpa batas.
|
block.mechanical-drill.description = Bor murah. Saat ditaruh ditempat yang sesuai, mengeluarkan item dengan pelan tanpa batas.
|
||||||
block.pneumatic-drill.description = Bor lebih cepat dari bor mekanik dan bisa memproses bahan lebih keras dengan menggunakan tekanan udara.
|
block.pneumatic-drill.description = Bor lebih cepat dari bor mekanik dan bisa memproses bahan lebih keras dengan menggunakan tekanan udara.
|
||||||
block.laser-drill.description = Mengebor lebih cepat lewat teknologi laser, tapi membutuhkan tenaga. Bisa menambang thorium dengan bor ini.
|
block.laser-drill.description = Mengebor lebih cepat lewat teknologi laser, tapi membutuhkan tenaga. Bisa menambang thorium dengan bor ini.
|
||||||
block.blast-drill.description = Bor tercanggih. Membutuhkan banyak tenaga.
|
block.blast-drill.description = Bor tercanggih. Membutuhkan banyak tenaga.
|
||||||
block.water-extractor.description = Mengekstrak air dari tanah. Gunakan jika tidak ada sumber air disekitar.
|
block.water-extractor.description = Mengekstrak air dari tanah. Gunakan jika tidak ada sumber air disekitar.
|
||||||
block.cultivator.description = Membudidaya spora kecil menjadi polong siap diolah.
|
block.cultivator.description = Menumbuhkan konsentrasi spora yang kecil di atmosfer menjadi polong spora.
|
||||||
block.cultivator.details = Teknologi yang dipulihkan. Digunakan untuk memproduksi biomassa secara efesien. Kemungkinan merupakan inkubator awal dari spora yang sekarang menutupi Serpulo.
|
block.cultivator.details = Teknologi yang dipulihkan. Digunakan untuk memproduksi biomassa secara efesien. Kemungkinan merupakan inkubator awal dari spora yang sekarang menutupi Serpulo.
|
||||||
block.oil-extractor.description = Menggunakan tenaga cukup besar untuk mengekstrak minyak dari pasir. Gunakan jika tidak ada sumber minyak disekitar.
|
block.oil-extractor.description = Menggunakan tenaga cukup besar untuk mengekstrak minyak dari pasir. Gunakan jika tidak ada sumber minyak disekitar.
|
||||||
block.core-shard.description = Versi pertama dari pengulangan kapsul inti. Jika hancur, Semua kontak dengan daerah akan hilang. Jangan biarkan ini terjadi.
|
block.core-shard.description = Versi pertama dari pengulangan kapsul inti. Jika hancur, Semua kontak dengan daerah akan hilang. Jangan biarkan ini terjadi.
|
||||||
@@ -1428,7 +1437,7 @@ block.scatter.description = Menembakkan gumpalan timah, rongsokan atau metaglass
|
|||||||
block.scorch.description = Membakar musuh darat yang dekat dengannya. Sangat efektif dalam jarak dekat.
|
block.scorch.description = Membakar musuh darat yang dekat dengannya. Sangat efektif dalam jarak dekat.
|
||||||
block.hail.description = Menembakkan peluru kecil ke musuh darat dari jarak jauh.
|
block.hail.description = Menembakkan peluru kecil ke musuh darat dari jarak jauh.
|
||||||
block.wave.description = Menembakkan aliran cairan ke musuh. Secara otomatis memadamkan api saat disuplai dengan air.
|
block.wave.description = Menembakkan aliran cairan ke musuh. Secara otomatis memadamkan api saat disuplai dengan air.
|
||||||
block.lancer.description = Mengisi dan menembakkan sinar energi yang kuat ke target darat.
|
block.lancer.description = Memuat dan menembakkan sinar energi yang kuat ke target darat.
|
||||||
block.arc.description = Menembak petir ke musuh darat.
|
block.arc.description = Menembak petir ke musuh darat.
|
||||||
block.swarmer.description = Menembakkan misil yang mengejar ke arah musuh.
|
block.swarmer.description = Menembakkan misil yang mengejar ke arah musuh.
|
||||||
block.salvo.description = Menembakkan peluru cepat ke arah musuh.
|
block.salvo.description = Menembakkan peluru cepat ke arah musuh.
|
||||||
|
|||||||
@@ -13,13 +13,14 @@ link.google-play.description = Google Play ストアを開く
|
|||||||
link.f-droid.description = F-Droid を開く
|
link.f-droid.description = F-Droid を開く
|
||||||
link.wiki.description = 公式 Mindustry Wiki
|
link.wiki.description = 公式 Mindustry Wiki
|
||||||
link.suggestions.description = 新機能を提案する
|
link.suggestions.description = 新機能を提案する
|
||||||
|
link.bug.description = Found one? Report it here
|
||||||
linkfail = リンクを開けませんでした!\nURLをクリップボードにコピーしました。
|
linkfail = リンクを開けませんでした!\nURLをクリップボードにコピーしました。
|
||||||
screenshot = スクリーンショットを {0} に保存しました。
|
screenshot = スクリーンショットを {0} に保存しました。
|
||||||
screenshot.invalid = マップが広すぎます。スクリーンショットに必要なメモリが足りない可能性があります。
|
screenshot.invalid = マップが広すぎます。スクリーンショットに必要なメモリが足りない可能性があります。
|
||||||
gameover = ゲームオーバー
|
gameover = ゲームオーバー
|
||||||
gameover.disconnect = Disconnect
|
gameover.disconnect = 切断
|
||||||
gameover.pvp = [accent] {0}[] チームの勝利!
|
gameover.pvp = [accent] {0}[] チームの勝利!
|
||||||
gameover.waiting = [accent]Waiting for next map...
|
gameover.waiting = [accent]次のマップを待っています...
|
||||||
highscore = [accent]ハイスコアを更新!
|
highscore = [accent]ハイスコアを更新!
|
||||||
copied = コピーしました。
|
copied = コピーしました。
|
||||||
indev.notready = This part of the game isn't ready yet
|
indev.notready = This part of the game isn't ready yet
|
||||||
@@ -40,6 +41,11 @@ be.ignore = 無視する
|
|||||||
be.noupdates = 更新が見つかりません。
|
be.noupdates = 更新が見つかりません。
|
||||||
be.check = 更新を確認します。
|
be.check = 更新を確認します。
|
||||||
|
|
||||||
|
mod.featured.dialog.title = Mod ブラウザー (作業中)
|
||||||
|
mods.browser.selected = 選択されたmod
|
||||||
|
mods.browser.add = インストール
|
||||||
|
mods.github.open = 見る
|
||||||
|
|
||||||
schematic = 設計図
|
schematic = 設計図
|
||||||
schematic.add = 設計図を保存
|
schematic.add = 設計図を保存
|
||||||
schematics = 設計図一覧
|
schematics = 設計図一覧
|
||||||
@@ -83,6 +89,7 @@ joingame = マルチプレイ
|
|||||||
customgame = カスタムプレイ
|
customgame = カスタムプレイ
|
||||||
newgame = 新しく始める
|
newgame = 新しく始める
|
||||||
none = <なし>
|
none = <なし>
|
||||||
|
none.found = [lightgray]<見つかりません>
|
||||||
minimap = ミニマップ
|
minimap = ミニマップ
|
||||||
position = 位置
|
position = 位置
|
||||||
close = 閉じる
|
close = 閉じる
|
||||||
@@ -196,9 +203,10 @@ servers.local = ローカルサーバー
|
|||||||
servers.remote = リモートサーバー
|
servers.remote = リモートサーバー
|
||||||
servers.global = コミュニティサーバー
|
servers.global = コミュニティサーバー
|
||||||
|
|
||||||
servers.showhidden = Show Hidden Servers
|
servers.disclaimer = コミュニティサーバーは、[accent]開発者が所有、管理していません。[] \n\nサーバーには全ての年齢層に適さないコンテンツが存在する可能性があります。
|
||||||
server.shown = Shown
|
servers.showhidden = 非表示のサーバーを表示する
|
||||||
server.hidden = Hidden
|
server.shown = 表示
|
||||||
|
server.hidden = 非表示
|
||||||
|
|
||||||
trace = プレイヤーの記録
|
trace = プレイヤーの記録
|
||||||
trace.playername = プレイヤー名: [accent]{0}
|
trace.playername = プレイヤー名: [accent]{0}
|
||||||
@@ -464,7 +472,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 = 2番目の地面
|
filter.option.floor2 = 2番目の地面
|
||||||
@@ -537,7 +545,7 @@ sectors.resources = 資源:
|
|||||||
sectors.production = 生産:
|
sectors.production = 生産:
|
||||||
sectors.export = 搬出:
|
sectors.export = 搬出:
|
||||||
sectors.time = 時間:
|
sectors.time = 時間:
|
||||||
sectors.threat = 難易度:
|
sectors.threat = 脅威:
|
||||||
sectors.wave = ウェーブ:
|
sectors.wave = ウェーブ:
|
||||||
sectors.stored = 保存済み:
|
sectors.stored = 保存済み:
|
||||||
sectors.resume = 再開
|
sectors.resume = 再開
|
||||||
@@ -561,8 +569,8 @@ sector.captured = セクター [accent]{0}[white]制圧!
|
|||||||
threat.low = 低
|
threat.low = 低
|
||||||
threat.medium = 中
|
threat.medium = 中
|
||||||
threat.high = 高
|
threat.high = 高
|
||||||
threat.extreme = Extreme
|
threat.extreme = 過激
|
||||||
threat.eradication = Eradication
|
threat.eradication = 根絶
|
||||||
|
|
||||||
planets = 惑星
|
planets = 惑星
|
||||||
|
|
||||||
@@ -697,6 +705,7 @@ stat.commandlimit = 指揮上限
|
|||||||
stat.abilities = 能力
|
stat.abilities = 能力
|
||||||
stat.canboost = ブースト可能
|
stat.canboost = ブースト可能
|
||||||
stat.flying = 飛行
|
stat.flying = 飛行
|
||||||
|
stat.ammouse = 使用弾薬
|
||||||
|
|
||||||
ability.forcefield = フォースフィールド
|
ability.forcefield = フォースフィールド
|
||||||
ability.repairfield = リペアフィールド
|
ability.repairfield = リペアフィールド
|
||||||
@@ -719,7 +728,6 @@ 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}
|
||||||
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled]
|
|
||||||
bar.liquid = 液体
|
bar.liquid = 液体
|
||||||
bar.heat = 熱
|
bar.heat = 熱
|
||||||
bar.power = 電力
|
bar.power = 電力
|
||||||
@@ -736,6 +744,7 @@ bullet.sapping = [stat]sapping
|
|||||||
bullet.homing = [stat]追尾弾
|
bullet.homing = [stat]追尾弾
|
||||||
bullet.shock = [stat]電撃
|
bullet.shock = [stat]電撃
|
||||||
bullet.frag = [stat]爆発弾
|
bullet.frag = [stat]爆発弾
|
||||||
|
bullet.buildingdamage = [stat]{0}%[lightgray] 対物ダメージ
|
||||||
bullet.knockback = [stat]{0}[lightgray] ノックバック
|
bullet.knockback = [stat]{0}[lightgray] ノックバック
|
||||||
bullet.pierce = [stat]{0}[lightgray]x レーザー弾
|
bullet.pierce = [stat]{0}[lightgray]x レーザー弾
|
||||||
bullet.infinitepierce = [stat]レーザー弾
|
bullet.infinitepierce = [stat]レーザー弾
|
||||||
@@ -764,6 +773,7 @@ unit.items = アイテム
|
|||||||
unit.thousands = k
|
unit.thousands = k
|
||||||
unit.millions = mil
|
unit.millions = mil
|
||||||
unit.billions = b
|
unit.billions = b
|
||||||
|
unit.pershot = /発
|
||||||
category.purpose = 説明
|
category.purpose = 説明
|
||||||
category.general = 一般
|
category.general = 一般
|
||||||
category.power = 電力
|
category.power = 電力
|
||||||
@@ -831,7 +841,9 @@ setting.chatopacity.name = チャットの透明度
|
|||||||
setting.lasersopacity.name = レーザーの透明度
|
setting.lasersopacity.name = レーザーの透明度
|
||||||
setting.bridgeopacity.name = ブリッジの透明度
|
setting.bridgeopacity.name = ブリッジの透明度
|
||||||
setting.playerchat.name = ゲーム内にチャットを表示
|
setting.playerchat.name = ゲーム内にチャットを表示
|
||||||
|
setting.showweather.name = 天気のグラフィックを表示
|
||||||
public.confirm = ゲームを公開しますか?\n[accent]誰でもゲームに参加できるようになります。\n[lightgray]あとから設定で変更できます。
|
public.confirm = ゲームを公開しますか?\n[accent]誰でもゲームに参加できるようになります。\n[lightgray]あとから設定で変更できます。
|
||||||
|
public.confirm.really = If you want to play with friends, use [green]Invite Friend[] instead of a [scarlet]Public server[]!\nAre you sure you want to make your game [scarlet]public[]?
|
||||||
public.beta = ベータ版では使用できません。
|
public.beta = ベータ版では使用できません。
|
||||||
uiscale.reset = UIサイズが変更されました。\nこのままでよければ「OK」を押してください。\n[scarlet][accent]{0}[] 秒で元の設定に戻ります...
|
uiscale.reset = UIサイズが変更されました。\nこのままでよければ「OK」を押してください。\n[scarlet][accent]{0}[] 秒で元の設定に戻ります...
|
||||||
uiscale.cancel = キャンセル & 終了
|
uiscale.cancel = キャンセル & 終了
|
||||||
@@ -906,6 +918,7 @@ keybind.toggle_menus.name = メニュー切り替え
|
|||||||
keybind.chat_history_prev.name = 前のチャット履歴
|
keybind.chat_history_prev.name = 前のチャット履歴
|
||||||
keybind.chat_history_next.name = 次のチャット履歴
|
keybind.chat_history_next.name = 次のチャット履歴
|
||||||
keybind.chat_scroll.name = チャットスクロール
|
keybind.chat_scroll.name = チャットスクロール
|
||||||
|
keybind.chat_mode.name = Change Chat Mode
|
||||||
keybind.drop_unit.name = ドロップユニット
|
keybind.drop_unit.name = ドロップユニット
|
||||||
keybind.zoom_minimap.name = ミニマップのズーム
|
keybind.zoom_minimap.name = ミニマップのズーム
|
||||||
mode.help.title = モード説明
|
mode.help.title = モード説明
|
||||||
@@ -954,6 +967,7 @@ rules.explosions = 爆発ダメージ
|
|||||||
rules.ambientlight = 霧の色
|
rules.ambientlight = 霧の色
|
||||||
rules.weather = 気象
|
rules.weather = 気象
|
||||||
rules.weather.frequency = 頻度:
|
rules.weather.frequency = 頻度:
|
||||||
|
rules.weather.always = Always
|
||||||
rules.weather.duration = 継続時間:
|
rules.weather.duration = 継続時間:
|
||||||
|
|
||||||
content.item.name = アイテム
|
content.item.name = アイテム
|
||||||
@@ -1163,7 +1177,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 = 津波
|
block.tsunami.name = ツナミ
|
||||||
block.swarmer.name = スウォーマー
|
block.swarmer.name = スウォーマー
|
||||||
block.salvo.name = サルボー
|
block.salvo.name = サルボー
|
||||||
block.ripple.name = リップル
|
block.ripple.name = リップル
|
||||||
@@ -1244,7 +1258,7 @@ team.derelict.name = 廃墟
|
|||||||
team.green.name = グリーン
|
team.green.name = グリーン
|
||||||
team.purple.name = パープル
|
team.purple.name = パープル
|
||||||
|
|
||||||
hint.skip = Skip
|
hint.skip = スキップ
|
||||||
hint.desktopMove = Use [accent][[WASD][] to move.
|
hint.desktopMove = Use [accent][[WASD][] to move.
|
||||||
hint.zoom = [accent]Scroll[] to zoom in or out.
|
hint.zoom = [accent]Scroll[] to zoom in or out.
|
||||||
hint.mine = Move near the \uf8c4 copper ore and [accent]tap[] it to mine manually.
|
hint.mine = Move near the \uf8c4 copper ore and [accent]tap[] it to mine manually.
|
||||||
@@ -1279,6 +1293,10 @@ hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a pay
|
|||||||
hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires.
|
hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires.
|
||||||
hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[].
|
hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[].
|
||||||
hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down.
|
hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down.
|
||||||
|
hint.coreUpgrade = Cores can be upgraded by [accent]placing higher-tier cores over them[].\n\nPlace a [accent]Foundation[] core over the [accent]Shard[] core. Make sure it is free from nearby obstructions.
|
||||||
|
hint.presetLaunch = Gray [accent]landing zone sectors[], such as [accent]Frozen Forest[], can be launched to from anywhere. They do not require capture of nearby territory.\n\n[accent]Numbered sectors[], such as this one, are [accent]optional[].
|
||||||
|
hint.coreIncinerate = After the core is filled to capacity with an item, any extra items of that type it receives will be [accent]incinerated[].
|
||||||
|
hint.coopCampaign = When playing the [accent]co-op campaign[], items that are produced in the current map will also be sent [accent]to your local sectors[].\n\nAny new research done by the host also carries over.
|
||||||
|
|
||||||
item.copper.description = 便利な鉱石です。様々なブロックの材料として幅広く使われています。
|
item.copper.description = 便利な鉱石です。様々なブロックの材料として幅広く使われています。
|
||||||
item.copper.details = セルプロに豊富な金属。補強しない限り構造的に弱い。
|
item.copper.details = セルプロに豊富な金属。補強しない限り構造的に弱い。
|
||||||
@@ -1460,7 +1478,7 @@ unit.reign.description = Fires a barrage of massive piercing bullets at all near
|
|||||||
unit.nova.description = Fires laser bolts that damage enemies and repair allied structures. Capable of flight.
|
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.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.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.vela.description = Fires a massive continuous laser beam that damages enemies, causes fires and repairs 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.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.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.atrax.description = Fires debilitating orbs of slag at ground targets. Can step over most terrain.
|
||||||
@@ -1473,12 +1491,12 @@ unit.zenith.description = Fires salvos of missiles at all nearby enemies.
|
|||||||
unit.antumbra.description = Fires a barrage of bullets at all nearby enemies.
|
unit.antumbra.description = Fires a barrage of bullets at all nearby enemies.
|
||||||
unit.eclipse.description = Fires two piercing lasers and a barrage of flak at all nearby enemies.
|
unit.eclipse.description = Fires two piercing lasers and a barrage of flak at all nearby enemies.
|
||||||
unit.mono.description = Automatically mines copper and lead, depositing it into the core.
|
unit.mono.description = Automatically mines copper and lead, depositing it into the core.
|
||||||
unit.poly.description = Automatically rebuilds damaged structures and assists other units in construction.
|
unit.poly.description = Automatically rebuilds destroyed structures and assists other units in construction.
|
||||||
unit.mega.description = Automatically repairs damaged structures. Capable of carrying blocks and small ground units.
|
unit.mega.description = Automatically repairs damaged structures. Capable of carrying blocks and small ground units.
|
||||||
unit.quad.description = Drops large bombs on ground targets, repairing allied structures and damaging enemies. Capable of carrying medium-sized ground units.
|
unit.quad.description = Drops large bombs on ground targets, repairing allied structures and damaging enemies. Capable of carrying medium-sized ground units.
|
||||||
unit.oct.description = Protects nearby allies with its regenerating shield. Capable of carrying most ground units.
|
unit.oct.description = Protects nearby allies with its regenerating shield. Capable of carrying most ground units.
|
||||||
unit.risso.description = Fires a barrage of missiles and bullets at all nearby enemies.
|
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.minke.description = Fires shells and standard bullets at nearby ground targets.
|
||||||
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
|
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.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.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ link.trello.description = Oficjalna tablica Trello z planowanym funkcjami
|
|||||||
link.itch.io.description = Strona itch.io z oficjanymi wersjami do pobrania
|
link.itch.io.description = Strona itch.io z oficjanymi wersjami do pobrania
|
||||||
link.google-play.description = Strona w sklepie Google Play
|
link.google-play.description = Strona w sklepie Google Play
|
||||||
link.f-droid.description = Wykaz Katalogu F-Droid
|
link.f-droid.description = Wykaz Katalogu F-Droid
|
||||||
link.wiki.description = Oficjana Wiki Mindustry
|
link.wiki.description = Oficjalna Wiki Mindustry
|
||||||
link.suggestions.description = Zaproponuj nowe funkcje
|
link.suggestions.description = Zaproponuj nowe funkcje
|
||||||
link.bug.description = Znalazłeś błąd? Zgłoś go tutaj
|
link.bug.description = Znalazłeś błąd? Zgłoś go tutaj
|
||||||
linkfail = Nie udało się otworzyć linku!\nURL został skopiowany.
|
linkfail = Nie udało się otworzyć linku!\nURL został skopiowany.
|
||||||
@@ -41,7 +41,6 @@ be.ignore = Zignoruj
|
|||||||
be.noupdates = Nie znaleziono aktualizacji.
|
be.noupdates = Nie znaleziono aktualizacji.
|
||||||
be.check = Sprawdź aktualizacje
|
be.check = Sprawdź aktualizacje
|
||||||
|
|
||||||
mod.featured.title = Wyszukiwarka Modów
|
|
||||||
mod.featured.dialog.title = Wyszukiwarka Modów
|
mod.featured.dialog.title = Wyszukiwarka Modów
|
||||||
mods.browser.selected = Wybrany Mod
|
mods.browser.selected = Wybrany Mod
|
||||||
mods.browser.add = Zainstaluj Moda
|
mods.browser.add = Zainstaluj Moda
|
||||||
@@ -90,6 +89,7 @@ joingame = Dołącz Do Gry
|
|||||||
customgame = Własna Gra
|
customgame = Własna Gra
|
||||||
newgame = Nowa Gra
|
newgame = Nowa Gra
|
||||||
none = <brak>
|
none = <brak>
|
||||||
|
none.found = [lightgray]<żaden znaleziony>
|
||||||
minimap = Minimapa
|
minimap = Minimapa
|
||||||
position = Pozycja
|
position = Pozycja
|
||||||
close = Zamknij
|
close = Zamknij
|
||||||
@@ -110,7 +110,6 @@ committingchanges = Zatwierdzanie Zmian
|
|||||||
done = Gotowe
|
done = Gotowe
|
||||||
feature.unsupported = Twoje urządzenie nie wspiera tej funkcji.
|
feature.unsupported = Twoje urządzenie nie wspiera tej funkcji.
|
||||||
|
|
||||||
|
|
||||||
mods.alphainfo = Pamiętaj, że mody są wersji alpha, i[scarlet] mogą być pełne błędów[].\nZgłaszaj wszystkie znalezione problemy na Mindustry GitHub lub Discord.
|
mods.alphainfo = Pamiętaj, że mody są wersji alpha, i[scarlet] mogą być pełne błędów[].\nZgłaszaj wszystkie znalezione problemy na Mindustry GitHub lub Discord.
|
||||||
mods = Mody
|
mods = Mody
|
||||||
mods.none = [lightgray]Nie znaleziono modów!
|
mods.none = [lightgray]Nie znaleziono modów!
|
||||||
@@ -288,6 +287,7 @@ cancel = Anuluj
|
|||||||
openlink = Otwórz Link
|
openlink = Otwórz Link
|
||||||
copylink = Kopiuj Link
|
copylink = Kopiuj Link
|
||||||
back = Wróć
|
back = Wróć
|
||||||
|
max = Max
|
||||||
crash.export = Eksportuj logi błędów.
|
crash.export = Eksportuj logi błędów.
|
||||||
crash.none = Nie znaleziono logów błędów.
|
crash.none = Nie znaleziono logów błędów.
|
||||||
crash.exported = Logi zostały przeniesione.
|
crash.exported = Logi zostały przeniesione.
|
||||||
@@ -362,7 +362,6 @@ editor.center = Center
|
|||||||
workshop = Warsztat
|
workshop = Warsztat
|
||||||
waves.title = Fale
|
waves.title = Fale
|
||||||
waves.remove = Usuń
|
waves.remove = Usuń
|
||||||
waves.never = <nigdy>
|
|
||||||
waves.every = co
|
waves.every = co
|
||||||
waves.waves = fal(e)
|
waves.waves = fal(e)
|
||||||
waves.perspawn = co pojawienie
|
waves.perspawn = co pojawienie
|
||||||
@@ -706,6 +705,7 @@ stat.commandlimit = Limit Jednostek Zarządanych
|
|||||||
stat.abilities = Umiejętności
|
stat.abilities = Umiejętności
|
||||||
stat.canboost = Może przyspieszyć
|
stat.canboost = Może przyspieszyć
|
||||||
stat.flying = Latanie
|
stat.flying = Latanie
|
||||||
|
stat.ammouse = Zużycie Amunicji
|
||||||
|
|
||||||
ability.forcefield = Pole Mocy
|
ability.forcefield = Pole Mocy
|
||||||
ability.repairfield = Pole Naprawy
|
ability.repairfield = Pole Naprawy
|
||||||
@@ -720,6 +720,7 @@ bar.corereq = Wymagany Rdzeń
|
|||||||
bar.drillspeed = Prędkość wiertła: {0}/s
|
bar.drillspeed = Prędkość wiertła: {0}/s
|
||||||
bar.pumpspeed = Prędkość pompy: {0}/s
|
bar.pumpspeed = Prędkość pompy: {0}/s
|
||||||
bar.efficiency = Efektywność: {0}%
|
bar.efficiency = Efektywność: {0}%
|
||||||
|
bar.boost = Przyspieszenie: {0}%
|
||||||
bar.powerbalance = Moc: {0}
|
bar.powerbalance = Moc: {0}
|
||||||
bar.powerstored = Zmagazynowano: {0}/{1}
|
bar.powerstored = Zmagazynowano: {0}/{1}
|
||||||
bar.poweramount = Moc: {0}
|
bar.poweramount = Moc: {0}
|
||||||
@@ -728,7 +729,6 @@ bar.powerlines = Połączenia: {0}/{1}
|
|||||||
bar.items = Przedmiotów: {0}
|
bar.items = Przedmiotów: {0}
|
||||||
bar.capacity = Pojemność: {0}
|
bar.capacity = Pojemność: {0}
|
||||||
bar.unitcap = {0} {1}/{2}
|
bar.unitcap = {0} {1}/{2}
|
||||||
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled]
|
|
||||||
bar.liquid = Płyn
|
bar.liquid = Płyn
|
||||||
bar.heat = Ciepło
|
bar.heat = Ciepło
|
||||||
bar.power = Prąd
|
bar.power = Prąd
|
||||||
@@ -745,6 +745,7 @@ bullet.sapping = [stat]wyczerpujący
|
|||||||
bullet.homing = [stat]naprowadzający
|
bullet.homing = [stat]naprowadzający
|
||||||
bullet.shock = [stat]piorunowy
|
bullet.shock = [stat]piorunowy
|
||||||
bullet.frag = [stat]fragmentacyjny
|
bullet.frag = [stat]fragmentacyjny
|
||||||
|
bullet.buildingdamage = [stat]{0}%[lightgray] obrażeń budynkom
|
||||||
bullet.knockback = [stat]{0}[lightgray] odrzut
|
bullet.knockback = [stat]{0}[lightgray] odrzut
|
||||||
bullet.pierce = [stat]{0}[lightgray]x przebicia
|
bullet.pierce = [stat]{0}[lightgray]x przebicia
|
||||||
bullet.infinitepierce = [stat]przebijający
|
bullet.infinitepierce = [stat]przebijający
|
||||||
@@ -773,6 +774,7 @@ unit.items = przedmioty
|
|||||||
unit.thousands = tys.
|
unit.thousands = tys.
|
||||||
unit.millions = mln
|
unit.millions = mln
|
||||||
unit.billions = b
|
unit.billions = b
|
||||||
|
unit.pershot = /szczał
|
||||||
category.purpose = Opis
|
category.purpose = Opis
|
||||||
category.general = Główne
|
category.general = Główne
|
||||||
category.power = Prąd
|
category.power = Prąd
|
||||||
@@ -842,6 +844,7 @@ setting.bridgeopacity.name = Przezroczystość mostów
|
|||||||
setting.playerchat.name = Wyświetlaj czat w grze
|
setting.playerchat.name = Wyświetlaj czat w grze
|
||||||
setting.showweather.name = Pokaż pogodę
|
setting.showweather.name = Pokaż pogodę
|
||||||
public.confirm = Czy chcesz ustawić swoją grę jako publiczną?\n[accent]Każdy będzie mógł dołączyć do Twojej gry.\n[lightgray]Można to później zmienić w Ustawienia->Gra->Widoczność Gry Publicznej.
|
public.confirm = Czy chcesz ustawić swoją grę jako publiczną?\n[accent]Każdy będzie mógł dołączyć do Twojej gry.\n[lightgray]Można to później zmienić w Ustawienia->Gra->Widoczność Gry Publicznej.
|
||||||
|
public.confirm.really = Jeśli chcesz grać z przyjaciółmi, użyj [green]Zaproś Przyjaciela[] zamiast [scarlet]Punliczny serwer[]!\nJesteś pewny że chcesz rozpocząć grę [scarlet]publiczą[]?
|
||||||
public.beta = Wersje beta gry nie mogą tworzyć publicznych pokoi.
|
public.beta = Wersje beta gry nie mogą tworzyć publicznych pokoi.
|
||||||
uiscale.reset = Skala interfejsu uległa zmianie.\nNaciśnij "OK" by potwierdzić zmiany.\n[scarlet]Cofanie zmian i wyjście z gry za[accent] {0}[]
|
uiscale.reset = Skala interfejsu uległa zmianie.\nNaciśnij "OK" by potwierdzić zmiany.\n[scarlet]Cofanie zmian i wyjście z gry za[accent] {0}[]
|
||||||
uiscale.cancel = Anuluj i Wyjdź
|
uiscale.cancel = Anuluj i Wyjdź
|
||||||
@@ -916,6 +919,7 @@ keybind.toggle_menus.name = Zmiana widoczności menu
|
|||||||
keybind.chat_history_prev.name = Przewiń wiadomości w górę
|
keybind.chat_history_prev.name = Przewiń wiadomości w górę
|
||||||
keybind.chat_history_next.name = Przewiń wiadomości w dół
|
keybind.chat_history_next.name = Przewiń wiadomości w dół
|
||||||
keybind.chat_scroll.name = Przewijaj Wiadomości
|
keybind.chat_scroll.name = Przewijaj Wiadomości
|
||||||
|
keybind.chat_mode.name = Zmień tryb czatu
|
||||||
keybind.drop_unit.name = Wyrzucanie przedmiot
|
keybind.drop_unit.name = Wyrzucanie przedmiot
|
||||||
keybind.zoom_minimap.name = Powiększenie mapy
|
keybind.zoom_minimap.name = Powiększenie mapy
|
||||||
mode.help.title = Opis trybów
|
mode.help.title = Opis trybów
|
||||||
@@ -932,6 +936,7 @@ mode.custom = Własny Tryb
|
|||||||
|
|
||||||
rules.infiniteresources = Nieskończone Zasoby
|
rules.infiniteresources = Nieskończone Zasoby
|
||||||
rules.reactorexplosions = Eksplozje Reaktorów
|
rules.reactorexplosions = Eksplozje Reaktorów
|
||||||
|
rules.coreincinerates = Rdzeń Spala Przepełnienie
|
||||||
rules.schematic = Schematy Są Dozwolone
|
rules.schematic = Schematy Są Dozwolone
|
||||||
rules.wavetimer = Zegar Fal
|
rules.wavetimer = Zegar Fal
|
||||||
rules.waves = Fale
|
rules.waves = Fale
|
||||||
@@ -964,6 +969,7 @@ rules.explosions = Uszkodzenia Wybuchu Klocka/Jednostki
|
|||||||
rules.ambientlight = Otaczające Światło
|
rules.ambientlight = Otaczające Światło
|
||||||
rules.weather = Pogoda
|
rules.weather = Pogoda
|
||||||
rules.weather.frequency = Częstotliwość:
|
rules.weather.frequency = Częstotliwość:
|
||||||
|
rules.weather.always = Zawsze
|
||||||
rules.weather.duration = Czas trwania:
|
rules.weather.duration = Czas trwania:
|
||||||
|
|
||||||
content.item.name = Przedmioty
|
content.item.name = Przedmioty
|
||||||
@@ -1078,18 +1084,18 @@ block.craters.name = Kratery
|
|||||||
block.sand-water.name = Woda z Piaskiem
|
block.sand-water.name = Woda z Piaskiem
|
||||||
block.darksand-water.name = Woda z Ciemnym Piaskiem
|
block.darksand-water.name = Woda z Ciemnym Piaskiem
|
||||||
block.char.name = Popiół
|
block.char.name = Popiół
|
||||||
block.dacite.name = Dacite
|
block.dacite.name = Dacyt
|
||||||
block.dacite-wall.name = Dacite Wall
|
block.dacite-wall.name = Dacytowa Ściana
|
||||||
block.dacite-boulder.name = Dacite Boulder
|
block.dacite-boulder.name = Dacytowy Głaz
|
||||||
block.ice-snow.name = Lodowy Śnieg
|
block.ice-snow.name = Lodowy Śnieg
|
||||||
block.stone-wall.name = Stone Wall
|
block.stone-wall.name = Kamienna Ściana
|
||||||
block.ice-wall.name = Ice Wall
|
block.ice-wall.name = Lodowa Ściana
|
||||||
block.snow-wall.name = Snow Wall
|
block.snow-wall.name = Śnieżna Ściana
|
||||||
block.dune-wall.name = Dune Wall
|
block.dune-wall.name = Wydmowa Ściana
|
||||||
block.pine.name = Sosna
|
block.pine.name = Sosna
|
||||||
block.dirt.name = Dirt
|
block.dirt.name = Ziemia
|
||||||
block.dirt-wall.name = Dirt Wall
|
block.dirt-wall.name = Ziemna Ściana
|
||||||
block.mud.name = Mud
|
block.mud.name = Błoto
|
||||||
block.white-tree-dead.name = Białe Martwe Drzewo
|
block.white-tree-dead.name = Białe Martwe Drzewo
|
||||||
block.white-tree.name = Białe Drzewo
|
block.white-tree.name = Białe Drzewo
|
||||||
block.spore-cluster.name = Skupisko Zarodników
|
block.spore-cluster.name = Skupisko Zarodników
|
||||||
@@ -1105,7 +1111,7 @@ block.dark-panel-4.name = Ciemny Panel 4
|
|||||||
block.dark-panel-5.name = Ciemny Panel 5
|
block.dark-panel-5.name = Ciemny Panel 5
|
||||||
block.dark-panel-6.name = Ciemny Panel 6
|
block.dark-panel-6.name = Ciemny Panel 6
|
||||||
block.dark-metal.name = Ciemny Metal
|
block.dark-metal.name = Ciemny Metal
|
||||||
block.basalt.name = Basalt
|
block.basalt.name = Bazalt
|
||||||
block.hotrock.name = Gorący Kamień
|
block.hotrock.name = Gorący Kamień
|
||||||
block.magmarock.name = Skała magmowa
|
block.magmarock.name = Skała magmowa
|
||||||
block.copper-wall.name = Miedziana Ściana
|
block.copper-wall.name = Miedziana Ściana
|
||||||
@@ -1271,10 +1277,10 @@ hint.placeTurret = Postaw \uf861 [accent]Działka[] by bronić się przed wrogam
|
|||||||
hint.breaking = Użyj [accent]Prawego przycisku myszy[] i przeciągnij by zniszczyć bloki.
|
hint.breaking = Użyj [accent]Prawego przycisku myszy[] i przeciągnij by zniszczyć bloki.
|
||||||
hint.breaking.mobile = Aktywuj \ue817 [accent]ikonę młota[] w dolnym prawym rogu by zniszczyć bloki.\n\nPrzytrymaj swój palec i przeciągij by wybrać wiele bloków do zniszczenia.
|
hint.breaking.mobile = Aktywuj \ue817 [accent]ikonę młota[] w dolnym prawym rogu by zniszczyć bloki.\n\nPrzytrymaj swój palec i przeciągij by wybrać wiele bloków do zniszczenia.
|
||||||
hint.research = Klikij przycisk \ue875 [accent]Badań[] by odkrwyać nowe technologie.
|
hint.research = Klikij przycisk \ue875 [accent]Badań[] by odkrwyać nowe technologie.
|
||||||
hint.research.mobile = Użyj przycisku \ue875 [accent]Badań[] w \ue88c [accent]Menu[] by odkrwyać nowe technologie.
|
hint.research.mobile = Użyj przycisku \ue875 [accent]Badań[] w \ue88c [accent]Menu[] by odkrywać nowe technologie.
|
||||||
hint.unitControl = Przytrzymaj [accent][[Lewy CTRL][] i [accent]kliknij[] to control by kontrolować sojusznicze jednostki i działka.
|
hint.unitControl = Przytrzymaj [accent][[Lewy CTRL][] i [accent]kliknij[] by kontrolować sojusznicze jednostki i działka.
|
||||||
hint.unitControl.mobile = [accent][Kliknij dwukrotnie[] by kontrolować sojusznicze jednostki i działka.
|
hint.unitControl.mobile = [accent][Kliknij dwukrotnie[] by kontrolować sojusznicze jednostki i działka.
|
||||||
hint.launch = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] wybierając \ue827 [accent]Mape[] w dolnym prawym rogu.
|
hint.launch = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] wybierając \ue827 [accent]Mapę[] w dolnym prawym rogu.
|
||||||
hint.launch.mobile = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] do pobliskich sektorów klikając w \ue827 [accent]Mape[] w \ue88c [accent]Menu[].
|
hint.launch.mobile = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] do pobliskich sektorów klikając w \ue827 [accent]Mape[] w \ue88c [accent]Menu[].
|
||||||
hint.schematicSelect = Przytrzymaj [accent][[F][] by kopiować i wkleić bloki.\n\n[accent][[Środkowy przycisk myszy][] kopiuje pojedyńczy blok.
|
hint.schematicSelect = Przytrzymaj [accent][[F][] by kopiować i wkleić bloki.\n\n[accent][[Środkowy przycisk myszy][] kopiuje pojedyńczy blok.
|
||||||
hint.conveyorPathfind = Przeciągij i przytrzymaj [accent][[Lewy CTRL][] w trakcie budowania przenośników by wygenerować ścieżkę.
|
hint.conveyorPathfind = Przeciągij i przytrzymaj [accent][[Lewy CTRL][] w trakcie budowania przenośników by wygenerować ścieżkę.
|
||||||
@@ -1284,15 +1290,15 @@ hint.command = Kliknij [accent][[G][] by ukształtować formacje z pobliskich je
|
|||||||
hint.command.mobile = [accent][[Podwójne kliknięcie][] kształtuje formacje z pobliskich jednostek.
|
hint.command.mobile = [accent][[Podwójne kliknięcie][] kształtuje formacje z pobliskich jednostek.
|
||||||
hint.payloadPickup = Kliknij [accent][[[] by podnieść małe bloki lub jednostki.
|
hint.payloadPickup = Kliknij [accent][[[] by podnieść małe bloki lub jednostki.
|
||||||
hint.payloadPickup.mobile = [accent]Kliknij i przytrzymaj[] mały blok by go podnieść.
|
hint.payloadPickup.mobile = [accent]Kliknij i przytrzymaj[] mały blok by go podnieść.
|
||||||
hint.payloadDrop = Kliknij [accent]][] by opuścić podniesoiny towar.
|
hint.payloadDrop = Kliknij [accent]][] by opuścić podniesiony towar.
|
||||||
hint.payloadDrop.mobile = [accent]Kliknij i przytrzymaj[] w puste miejsce by opuścić podniesoiny towar.
|
hint.payloadDrop.mobile = [accent]Kliknij i przytrzymaj[] w puste miejsce by opuścić podniesiony towar.
|
||||||
hint.waveFire = [accent]Strumień[] wypełniony wodą będzie gasić pobiskie pożary.
|
hint.waveFire = [accent]Strumień[] wypełniony wodą będzie gasić pobiskie pożary.
|
||||||
hint.generator = \uf879 [accent]Generatory Spalinowe[] spalają węgiel i przekuzują moc do pobliskich bloków.\n\nMożesz powiększyć odległość transmitowanej mocy używająć \uf87f [accent]Węzeły Prądu[].
|
hint.generator = \uf879 [accent]Generatory Spalinowe[] spalają węgiel i przekazują moc do pobliskich bloków.\n\nMożesz powiększyć odległość transmitowanej mocy używająć \uf87f [accent]Węzły Prądu[].
|
||||||
hint.guardian = Jednostki [accent]Strażnicze[] są uzbrojone. Słaba amunicja - taka jak [accent]Miedź[] oraz [accent]Ołów[] [scarlet]nie jest efektywna[].\n\nUżyj lepszych działek takich jak \uf835 [accent]Naładowane Grafitem[] \uf861Duo/\uf859Salwa by pozbyć się strażników.
|
hint.guardian = Jednostki [accent]Strażnicze[] są uzbrojone. Słaba amunicja - taka jak [accent]Miedź[] oraz [accent]Ołów[] [scarlet]nie jest efektywna[].\n\nUżyj lepszych działek takich jak \uf835 [accent]Naładowane Grafitem[] \uf861Duo/\uf859Salwa by pozbyć się strażników.
|
||||||
hint.coreUpgrade = Rdzenie mogą być ulepszone poprzez [accent]płożenie na nich rdzeń wyższego poziomu[].\n\nPołóż rdzeń [accent]Fundacji[] na rdzeń:[accent]Odłamek[] core. Żadna przeszkoda ani blok nie może stać na miejscu rdzenia.
|
hint.coreUpgrade = Rdzenie mogą być ulepszone poprzez [accent]płożenie na nich rdzeń wyższego poziomu[].\n\nPołóż rdzeń [accent]Fundacji[] na rdzeń:[accent]Odłamek[] core. Żadna przeszkoda ani blok nie może stać na miejscu rdzenia.
|
||||||
hint.presetLaunch = Szare [accent]sektory[], takie jak [accent]Zamrożony Las[], to sektory do których możesz dotrzeć z każdego miejsca. Nie wymagają podbicia pobliskiego terenu.\n\n[accent]Ponumerowane sektory[], takie jak ten, [accent]są dodatkowe[].
|
hint.presetLaunch = Szare [accent]sektory[], takie jak [accent]Zamrożony Las[], to sektory do których możesz dotrzeć z każdego miejsca. Nie wymagają podbicia pobliskiego terenu.\n\n[accent]Ponumerowane sektory[], takie jak ten, [accent]są dodatkowe[].
|
||||||
hint.coreIncinerate = Jak rdzeń zostanie w pełni wypełniony danym przedmiotem, reszta przedmiotów tego typu zostanie [accent]spalona[].
|
hint.coreIncinerate = Jak rdzeń zostanie w pełni wypełniony danym przedmiotem, reszta przedmiotów tego typu zostanie [accent]spalona[].
|
||||||
hint.coopCampaign = Gdy grasz [accent]kooperacyjną kampanie[], przedmioty które są produkowane na mapie trafią także [accent]dotwoich lokalnych sektorów[].\n\nWszelkie nowe badania przeprowadzone przez hosta są również przenoszone.
|
hint.coopCampaign = Gdy grasz [accent]kooperacyjną kampanię[], przedmioty które są produkowane na mapie trafią także [accent]do twoich lokalnych sektorów[].\n\nWszelkie nowe badania przeprowadzone przez hosta są również przenoszone.
|
||||||
|
|
||||||
item.copper.description = Przydatny materiał budowlany. Szeroko używany w prawie każdej konstrukcji.
|
item.copper.description = Przydatny materiał budowlany. Szeroko używany w prawie każdej konstrukcji.
|
||||||
item.copper.details = Miedź. Nienormalnie obfity metal na Serpulo. Strukturalnie słaba, chyba że zostanie wzmocniona.
|
item.copper.details = Miedź. Nienormalnie obfity metal na Serpulo. Strukturalnie słaba, chyba że zostanie wzmocniona.
|
||||||
@@ -1351,8 +1357,8 @@ block.copper-wall.description = Tani blok obronny.\nPrzydatny do ochrony rdzenia
|
|||||||
block.copper-wall-large.description = Tani blok obronny.\nPrzydatny do ochrony rdzenia i wieżyczek w pierwszych kilku falach.\nObejmuje wiele kratek.
|
block.copper-wall-large.description = Tani blok obronny.\nPrzydatny do ochrony rdzenia i wieżyczek w pierwszych kilku falach.\nObejmuje wiele kratek.
|
||||||
block.titanium-wall.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami.
|
block.titanium-wall.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami.
|
||||||
block.titanium-wall-large.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami.\nObejmuje wiele kratek.
|
block.titanium-wall-large.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami.\nObejmuje wiele kratek.
|
||||||
block.plastanium-wall.description = Specjajny typ ściany, który pochłania łuki elektryczne oraz blokuje automatyczne łączenie węzłów.
|
block.plastanium-wall.description = Specjalny typ ściany, który pochłania łuki elektryczne oraz blokuje automatyczne łączenie węzłów.
|
||||||
block.plastanium-wall-large.description = Specjajny typ ściany, który pochłania łuki elektryczne oraz blokuje automatyczne łączenie węzłów.\nObejmuje wiele kratek.
|
block.plastanium-wall-large.description = Specjalny typ ściany, który pochłania łuki elektryczne oraz blokuje automatyczne łączenie węzłów.\nObejmuje wiele kratek.
|
||||||
block.thorium-wall.description = Silny blok obronny.\nDobra ochrona przed wrogami.
|
block.thorium-wall.description = Silny blok obronny.\nDobra ochrona przed wrogami.
|
||||||
block.thorium-wall-large.description = Silny blok obronny.\nDobra ochrona przed wrogami.\nObejmuje wiele kratek.
|
block.thorium-wall-large.description = Silny blok obronny.\nDobra ochrona przed wrogami.\nObejmuje wiele kratek.
|
||||||
block.phase-wall.description = Ściana pokryta specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków.
|
block.phase-wall.description = Ściana pokryta specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków.
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ load.scripts = Scripts
|
|||||||
be.update = Uma nova versão beta está disponível:
|
be.update = Uma nova versão beta está disponível:
|
||||||
be.update.confirm = Baixar e reiniciar o jogo agora?
|
be.update.confirm = Baixar e reiniciar o jogo agora?
|
||||||
be.updating = Atualizando...
|
be.updating = Atualizando...
|
||||||
be.ignore = Ignore
|
be.ignore = Ignorar
|
||||||
be.noupdates = Nenhuma atualização encontrada.
|
be.noupdates = Nenhuma atualização encontrada.
|
||||||
be.check = Cheque por atualizações
|
be.check = Cheque por atualizações
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ schematic.browseworkshop = Navegar pela oficina
|
|||||||
schematic.copy = Copiar para a área de transferência
|
schematic.copy = Copiar para a área de transferência
|
||||||
schematic.copy.import = Importar da área de transferência
|
schematic.copy.import = Importar da área de transferência
|
||||||
schematic.shareworkshop = Compartilhar na Oficina
|
schematic.shareworkshop = Compartilhar na Oficina
|
||||||
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Virar o Esquema
|
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Virar o esquema
|
||||||
schematic.saved = Esquema salvo.
|
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
|
||||||
@@ -71,7 +71,7 @@ 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
|
||||||
level.mode = Modo de jogo:
|
level.mode = Modo de jogo:
|
||||||
coreattack = < O núcleo está sobre ataque! >
|
coreattack = < O núcleo está sob ataque! >
|
||||||
nearpoint = [[ [scarlet]SAIA DO PONTO DE SPAWN IMEDIATAMENTE[] ]\nANIQUILAÇÃO IMINENTE
|
nearpoint = [[ [scarlet]SAIA DO PONTO DE SPAWN IMEDIATAMENTE[] ]\nANIQUILAÇÃO IMINENTE
|
||||||
database = Banco de dados
|
database = Banco de dados
|
||||||
savegame = Salvar jogo
|
savegame = Salvar jogo
|
||||||
@@ -100,7 +100,7 @@ committingchanges = Enviando mudanças
|
|||||||
done = Feito
|
done = Feito
|
||||||
feature.unsupported = Seu dispositivo não suporta essa função.
|
feature.unsupported = Seu dispositivo não suporta essa função.
|
||||||
|
|
||||||
mods.alphainfo = Tenha em mente que os mods estão em alpha, e[scarlet] talvez eles contenham erros e instabilidades[].\nReporte quaisquer problemas no Discord ou GitHub do Mindustry.
|
mods.alphainfo = Lembre-se que o sistema de mods está em alpha, e[scarlet] que eles talvez contenham erros e instabilidades[].\nReporte quaisquer problemas no Discord ou GitHub do Mindustry.
|
||||||
mods = Mods
|
mods = Mods
|
||||||
mods.none = [lightgray]Nenhum mod encontrado!
|
mods.none = [lightgray]Nenhum mod encontrado!
|
||||||
mods.guide = Guia de mods
|
mods.guide = Guia de mods
|
||||||
@@ -133,7 +133,7 @@ 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 o arquivo ZIP antigo, então reinicie seu jogo ou recarregue os mods.
|
||||||
mod.scripts.disable = Seu dispositivo não suporta mods com scripts. Você precisa desabilitar esses mods para conseguir jogar.
|
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
|
||||||
@@ -168,11 +168,11 @@ server.kicked.nameInUse = Este nome já está sendo usado\nneste servidor.
|
|||||||
server.kicked.nameEmpty = Você deve ter pelo menos uma letra ou número no nome.
|
server.kicked.nameEmpty = Você deve ter pelo menos uma letra ou número no nome.
|
||||||
server.kicked.idInUse = Você ja está neste servidor! Conectar com duas contas não é permitido.
|
server.kicked.idInUse = Você ja está neste servidor! Conectar com duas contas não é permitido.
|
||||||
server.kicked.customClient = Este servidor não suporta versões customizadas. Baixe a versão original.
|
server.kicked.customClient = Este servidor não suporta versões customizadas. Baixe a versão original.
|
||||||
server.kicked.gameover = Fim de jogo!
|
server.kicked.gameover = Fim do jogo!
|
||||||
server.kicked.serverRestarting = O servidor esta reiniciando.
|
server.kicked.serverRestarting = O servidor esta reiniciando.
|
||||||
server.versions = Sua versão:[accent] {0}[]\nVersão do servidor:[accent] {1}[]
|
server.versions = Sua versão:[accent] {0}[]\nVersão do servidor:[accent] {1}[]
|
||||||
host.info = O botão de [accent]Hospedar[] hospeda um servidor no Host[scarlet]6567[] e [scarlet]6568.[]\nQualquer um no [lightgray]Wi-fi ou internet local[] pode ver este servidor na lista de servidores.\n\nSe você quer poder entrar em qualquer servidor em seu ip, [accent]port forwarding[] é requerido.\n\n[lightgray]Nota: Se alguém esta com problemas em conectar no seu servidor lan, Tenha certeza que deixou mindustry Acessar sua internet local nas configurações de firewall
|
host.info = O botão de [accent]Hospedar[] hospeda um servidor no Host[scarlet]6567[] e [scarlet]6568.[]\nQualquer um no [lightgray]Wi-fi ou internet local[] pode ver este servidor na lista de servidores.\n\nSe você quiser poder entrar em qualquer servidor em seu ip, [accent]port forwarding[] é necessário.\n\n[lightgray]Nota: Se alguém está com problemas em conectar no seu servidor lan, tenha certeza que mindustry tem acesso a sua internet local nas configurações do seu firewall
|
||||||
join.info = Aqui, você pode entar em um [accent]IP de servidor[] para conectar, ou descobrir [accent]servidores[] da rede local.\nAmbos os servidores LAN e WAN são suportados.\n\n[lightgray]Nota: Não há uma lista de servidores automáticos; Se você quer conectar ao IP de alguém, você precisa pedir o IP ao anfitrião.
|
join.info = Aqui, você pode entar em um [accent]IP de servidor[] para conectar, ou descobrir [accent]servidores[] da rede local.\nAmbos os servidores LAN e WAN são suportados.\n\n[lightgray]Nota: Não há uma lista de servidores automáticos; Se você quiser se conectar ao IP de alguém, você precisa pedir o IP ao anfitrião.
|
||||||
hostserver = Hospedar servidor
|
hostserver = Hospedar servidor
|
||||||
invitefriends = Convidar amigos
|
invitefriends = Convidar amigos
|
||||||
hostserver.mobile = Hospedar\nJogo
|
hostserver.mobile = Hospedar\nJogo
|
||||||
@@ -272,7 +272,7 @@ data.import = Importar dados
|
|||||||
data.openfolder = Abrir pasta de dados
|
data.openfolder = Abrir pasta de dados
|
||||||
data.exported = Dados exportados.
|
data.exported = Dados exportados.
|
||||||
data.invalid = Estes dados de jogo não são válidos.
|
data.invalid = Estes dados de jogo não são válidos.
|
||||||
data.import.confirm = Importar dados externos irá deletar[scarlet] todos[] os seus dados atuais.\n[accent]Isso não pode ser desfeito![]\n\nQuando sua data é importada, seu jogo ira sair imediatamente.
|
data.import.confirm = Importar dados externos irá deletar[scarlet] todos[] os seus dados atuais.\n[accent]Isso não pode ser desfeito![]\n\nQuando seus dados serão importados, seu jogo irá sair imediatamente.
|
||||||
quit.confirm = Você tem certeza que quer sair?
|
quit.confirm = Você tem certeza que quer sair?
|
||||||
quit.confirm.tutorial = Você tem certeza que você sabe o que você esta fazendo?\nO tutorial pode ser refeito nas [accent] Configurações->Jogo->Refazer Tutorial.[]
|
quit.confirm.tutorial = Você tem certeza que você sabe o que você esta fazendo?\nO tutorial pode ser refeito nas [accent] Configurações->Jogo->Refazer Tutorial.[]
|
||||||
loading = [accent]Carregando...
|
loading = [accent]Carregando...
|
||||||
@@ -298,7 +298,7 @@ saveimage = Salvar\nimagem
|
|||||||
unknown = Desconhecido
|
unknown = Desconhecido
|
||||||
custom = Customizado
|
custom = Customizado
|
||||||
builtin = Padrão
|
builtin = Padrão
|
||||||
map.delete.confirm = Certeza que quer deletar este mapa? Isto não pode ser desfeito!
|
map.delete.confirm = Certeza que quer deletar este mapa? Isto não pode ser anulado!
|
||||||
map.random = [accent]Mapa aleatório
|
map.random = [accent]Mapa aleatório
|
||||||
map.nospawn = Este mapa não possui nenhum núcleo para o jogador nascer! Adicione um núcleo[accent] amarelo[] para este mapa no editor.
|
map.nospawn = Este mapa não possui nenhum núcleo para o jogador nascer! Adicione um núcleo[accent] amarelo[] para este mapa no editor.
|
||||||
map.nospawn.pvp = Esse mapa não tem núcleos inimigos para os jogadores nascerem! Adicione[scarlet] núcleos vermelhos[] no mapa no editor.
|
map.nospawn.pvp = Esse mapa não tem núcleos inimigos para os jogadores nascerem! Adicione[scarlet] núcleos vermelhos[] no mapa no editor.
|
||||||
@@ -324,7 +324,7 @@ editor.oregen.info = Geração de minério:
|
|||||||
editor.mapinfo = Informação do mapa
|
editor.mapinfo = Informação do mapa
|
||||||
editor.author = Autor:
|
editor.author = Autor:
|
||||||
editor.description = Descrição:
|
editor.description = Descrição:
|
||||||
editor.nodescription = Um mapa deve ter uma descrição de no mínimo 4 caracteres antes de ser publicado.
|
editor.nodescription = Um mapa deve ter uma descrição de ao mínimo 4 caracteres antes de ser publicado.
|
||||||
editor.waves = Hordas:
|
editor.waves = Hordas:
|
||||||
editor.rules = Regras:
|
editor.rules = Regras:
|
||||||
editor.generation = Geração:
|
editor.generation = Geração:
|
||||||
@@ -341,7 +341,7 @@ waves.waves = Horda(s)
|
|||||||
waves.perspawn = por spawn
|
waves.perspawn = por spawn
|
||||||
waves.shields = Escudo/Horda
|
waves.shields = Escudo/Horda
|
||||||
waves.to = para
|
waves.to = para
|
||||||
waves.guardian = Guardian
|
waves.guardian = Guardião
|
||||||
waves.preview = Pré-visualizar
|
waves.preview = Pré-visualizar
|
||||||
waves.edit = Editar...
|
waves.edit = Editar...
|
||||||
waves.copy = Copiar para área de transferência
|
waves.copy = Copiar para área de transferência
|
||||||
@@ -419,9 +419,9 @@ toolmode.drawteams.description = Muda o time do qual o bloco pertence.
|
|||||||
filters.empty = [lightgray]Sem filtro! Adicione um usando o botão abaixo.
|
filters.empty = [lightgray]Sem filtro! Adicione um usando o botão abaixo.
|
||||||
filter.distort = Distorcedor
|
filter.distort = Distorcedor
|
||||||
filter.noise = Geração aleatória
|
filter.noise = Geração aleatória
|
||||||
filter.enemyspawn = Enemy Spawn Select
|
filter.enemyspawn = Seleção de Spawn do Inimigo
|
||||||
filter.spawnpath = Path To Spawn
|
filter.spawnpath = Caminho para o Spawn
|
||||||
filter.corespawn = Core Select
|
filter.corespawn = Seleção de Núcleo
|
||||||
filter.median = Medio
|
filter.median = Medio
|
||||||
filter.oremedian = Minério mediano
|
filter.oremedian = Minério mediano
|
||||||
filter.blend = Misturar
|
filter.blend = Misturar
|
||||||
@@ -475,18 +475,18 @@ locked = Trancado
|
|||||||
complete = [lightgray]Completo:
|
complete = [lightgray]Completo:
|
||||||
requirement.wave = Alcançar a Horda {0} em {1}
|
requirement.wave = Alcançar a Horda {0} em {1}
|
||||||
requirement.core = Destruir o núcleo inimigo em {0}
|
requirement.core = Destruir o núcleo inimigo em {0}
|
||||||
requirement.research = Research {0}
|
requirement.research = Pesquise {0}
|
||||||
requirement.capture = Capture {0}
|
requirement.capture = Capture {0}
|
||||||
bestwave = [lightgray]Melhor: {0}
|
bestwave = [lightgray]Melhor: {0}
|
||||||
launch.text = Launch
|
launch.text = Lançar
|
||||||
research.multiplayer = Only the host can research items.
|
research.multiplayer = Apenas o host pode pesquisar itens.
|
||||||
uncover = Descobrir
|
uncover = Descobrir
|
||||||
configure = Configurar carregamento
|
configure = Configurar carregamento
|
||||||
loadout = Loadout
|
loadout = Carregamento
|
||||||
resources = Resources
|
resources = Recursos
|
||||||
bannedblocks = Blocos Banidos
|
bannedblocks = Blocos Banidos
|
||||||
addall = Adicionar Todos
|
addall = Adicionar Todos
|
||||||
launch.destination = Destination: {0}
|
launch.destination = Destino: {0}
|
||||||
configure.invalid = A quantidade deve ser um número entre 0 e {0}.
|
configure.invalid = A quantidade deve ser um número entre 0 e {0}.
|
||||||
zone.unlocked = [lightgray]{0} Desbloqueado.
|
zone.unlocked = [lightgray]{0} Desbloqueado.
|
||||||
zone.requirement.complete = Horda {0} alcançada:\n{1} Requerimentos da zona alcançada.
|
zone.requirement.complete = Horda {0} alcançada:\n{1} Requerimentos da zona alcançada.
|
||||||
@@ -500,7 +500,7 @@ boss.health = Vida do Chefão
|
|||||||
connectfail = [crimson]Falha ao entrar no servidor: [accent]{0}
|
connectfail = [crimson]Falha ao entrar no servidor: [accent]{0}
|
||||||
error.unreachable = Servidor fora de alcance.
|
error.unreachable = Servidor fora de alcance.
|
||||||
error.invalidaddress = Endereço inválido.
|
error.invalidaddress = Endereço inválido.
|
||||||
error.timedout = Desconectado!\nTenha certeza que o anfitrião tenha feito redirecionamento de portas e que o endereço esteja correto!
|
error.timedout = Desconectado!\nTenha certeza que o anfitrião tenha feito o port forwarding e que o endereço esteja correto!
|
||||||
error.mismatch = Erro de pacote:\nPossivel incompatibilidade com a versão do cliente/servidor.\nTenha certeza que você e o anfitrião tenham a última versão!
|
error.mismatch = Erro de pacote:\nPossivel incompatibilidade com a versão do cliente/servidor.\nTenha certeza que você e o anfitrião tenham a última versão!
|
||||||
error.alreadyconnected = Já conectado.
|
error.alreadyconnected = Já conectado.
|
||||||
error.mapnotfound = Arquivo de mapa não encontrado!
|
error.mapnotfound = Arquivo de mapa não encontrado!
|
||||||
@@ -508,49 +508,49 @@ error.io = Erro I/O de internet.
|
|||||||
error.any = Erro de rede desconhecido.
|
error.any = Erro de rede desconhecido.
|
||||||
error.bloom = Falha ao inicializar bloom.\nSeu dispositivo talvez não o suporte.
|
error.bloom = Falha ao inicializar bloom.\nSeu dispositivo talvez não o suporte.
|
||||||
|
|
||||||
weather.rain.name = Rain
|
weather.rain.name = Chuva
|
||||||
weather.snow.name = Snow
|
weather.snow.name = Neve
|
||||||
weather.sandstorm.name = Sandstorm
|
weather.sandstorm.name = Tempestade de Areia
|
||||||
weather.sporestorm.name = Sporestorm
|
weather.sporestorm.name = Tempestade de Esporos
|
||||||
weather.fog.name = Fog
|
weather.fog.name = Névoa
|
||||||
|
|
||||||
sectors.unexplored = [lightgray]Unexplored
|
sectors.unexplored = [lightgray]Inexplorado
|
||||||
sectors.resources = Resources:
|
sectors.resources = Recursos:
|
||||||
sectors.production = Production:
|
sectors.production = Produção:
|
||||||
sectors.stored = Stored:
|
sectors.stored = Armazenado:
|
||||||
sectors.resume = Resume
|
sectors.resume = Continuar
|
||||||
sectors.launch = Launch
|
sectors.launch = Lançar
|
||||||
sectors.select = Select
|
sectors.select = Selecione
|
||||||
sectors.nonelaunch = [lightgray]none (sun)
|
sectors.nonelaunch = [lightgray]nenhum (sun)
|
||||||
sectors.rename = Rename Sector
|
sectors.rename = Renomear Setor
|
||||||
sector.missingresources = [scarlet]Insufficient Core Resources
|
sector.missingresources = [scarlet]Recursos Insuficientes no Núcleo
|
||||||
|
|
||||||
planet.serpulo.name = Serpulo
|
planet.serpulo.name = Serpulo
|
||||||
planet.sun.name = Sun
|
planet.sun.name = Sol
|
||||||
|
|
||||||
sector.groundZero.name = Ground Zero
|
sector.groundZero.name = Marco Zero
|
||||||
sector.craters.name = The Craters
|
sector.craters.name = As Crateras
|
||||||
sector.frozenForest.name = Frozen Forest
|
sector.frozenForest.name = Floresta Congelada
|
||||||
sector.ruinousShores.name = Ruinous Shores
|
sector.ruinousShores.name = Costas Ruinosas
|
||||||
sector.stainedMountains.name = Stained Mountains
|
sector.stainedMountains.name = Montanhas Manchadas
|
||||||
sector.desolateRift.name = Desolate Rift
|
sector.desolateRift.name = Fenda Desolada
|
||||||
sector.nuclearComplex.name = Nuclear Production Complex
|
sector.nuclearComplex.name = Complexo de Prodção Nuclear
|
||||||
sector.overgrowth.name = Overgrowth
|
sector.overgrowth.name = Supercrescimento
|
||||||
sector.tarFields.name = Tar Fields
|
sector.tarFields.name = Campos de Piche
|
||||||
sector.saltFlats.name = Salt Flats
|
sector.saltFlats.name = Planícies de Sal
|
||||||
sector.fungalPass.name = Fungal Pass
|
sector.fungalPass.name = Passagem Fúngica
|
||||||
|
|
||||||
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.groundZero.description = Um lugar bom para recomeçar. Baixa ameaça inimiga. Poucos recursos.\nConsiga o máximo possível de chumbo e cobre.\nContinue.
|
||||||
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.frozenForest.description = Mesmo aqui, perto das montanhas, os esporos se espalharam. As temperaturas baixas não conseguirão contê-los para sempre.\n\nComeçe a aventura com energia. Construa geradores a combustão. Aprenda a usar reparadores.
|
||||||
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.saltFlats.description = Nos arredores do deserto ficam as planícies de sal. Muitos recursos podem ser encontrados nesse local.\n\nO inimigo construiu um complexo de armazenamento de recursos aqui. Destrua o núcleo deles. Não deixe nada sobrando.
|
||||||
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.craters.description = A água se acumulou nessa cratera, relíquias de guerras antigas. Re-conquiste a área. Colete areia. Faça metavidro. Use a água para melhorar suas brocas e torretas.
|
||||||
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.ruinousShores.description = Passando o terreno desolado, está localizada a costa. Antigamente, este local abrigava uma rede de defesa costeira. Não restou muita coisa. Apenas as estruturas de defesas básicas permaneceram ilesas, o resto foi reduzido a sucata.\nContinue expandindo seus territórios, re-descubra a tecnologia.
|
||||||
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.stainedMountains.description = Mais para o interior estão as montanhas, ainda não contaminadas pelos esporos.\nExtraia o titânio que é abundante nessa área. Aprenda a usá-lo.\n\nA presença inimiga é maior aqui. Não dê tempo a eles de trazerem fortes unidades.
|
||||||
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.overgrowth.description = Essa área coberta por vegetação, próxima ao local de origem dos esporos.\nO inimigo estabeleceu um posto de controle aqui. Faça unidades Titan. Destrua eles. Recupere o que foi perdido.
|
||||||
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.tarFields.description = Nos arredores de uma zone de produção de petróleo, entre as montanhas e o deserto. Uma das poucas áreas com reservas de piche utilizáveis.\nMesmo abandonada, essa área tem forças inimigas por perto. Não subestime-os.\n\n[lightgray]Pesquise a tecnologia de processamento de petróleo se possível.
|
||||||
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.desolateRift.description = Uma zona extremamente perigosa. Uma zona com recursos abundantes, mas pouco espaço. Grande risco de destruição. Saia o quanto antes. Não se deixe levar pelo tempo entre os ataques inimigos.
|
||||||
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.nuclearComplex.description = Uma antiga instalação de produção e processamento de tório, reduzida a ruínas.\n[lightgray]Pesquise sobre o tório e seu vários usos.\n\nO inimigo está presente aqui em grande número, constantemente procurando por atacantes.
|
||||||
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 = Uma área de transição entre altas montanhas e terras baixas, repletas de esporos. Uma pequena base de reconhecimento inimiga está aqui.\nDestrua o núcleo.
|
||||||
|
|
||||||
settings.language = Idioma
|
settings.language = Idioma
|
||||||
settings.data = Dados do jogo
|
settings.data = Dados do jogo
|
||||||
@@ -564,30 +564,30 @@ settings.graphics = Gráficos
|
|||||||
settings.cleardata = Apagar dados
|
settings.cleardata = Apagar dados
|
||||||
settings.clear.confirm = Certeza que quer limpar a os dados?\nOque é feito não pode ser desfeito!
|
settings.clear.confirm = Certeza que quer limpar a os dados?\nOque é feito não pode ser desfeito!
|
||||||
settings.clearall.confirm = [scarlet]Aviso![]\nIsso vai limpar todo os arquivos, incluindo jogos salvos, mapas, teclas personalizadas e desbloqueados.\nQuando apertar 'ok' todos os arquivos serão apagados e o jogo irá sair automaticamente.
|
settings.clearall.confirm = [scarlet]Aviso![]\nIsso vai limpar todo os arquivos, incluindo jogos salvos, mapas, teclas personalizadas e desbloqueados.\nQuando apertar 'ok' todos os arquivos serão apagados e o jogo irá sair automaticamente.
|
||||||
settings.clearsaves.confirm = Are you sure you want to clear all your saves?
|
settings.clearsaves.confirm = Você tem certeza que quer apagar todos os seus saves?
|
||||||
settings.clearsaves = Clear Saves
|
settings.clearsaves = Apagar Saves
|
||||||
settings.clearresearch = Clear Research
|
settings.clearresearch = Apagar Pesquisas
|
||||||
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research?
|
settings.clearresearch.confirm = Você tem certeza que quer apagar todas as suas pesquisas da campanha?
|
||||||
settings.clearcampaignsaves = Clear Campaign Saves
|
settings.clearcampaignsaves = Apagar Saves da Campanha
|
||||||
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves?
|
settings.clearcampaignsaves.confirm = Você tem certeza que quer apagar todos os seus saves da campanha?
|
||||||
paused = Pausado
|
paused = Pausado
|
||||||
clear = Limpo
|
clear = Limpo
|
||||||
banned = [scarlet]BANIDO
|
banned = [scarlet]BANIDO
|
||||||
unplaceable.sectorcaptured = [scarlet]Requires captured sector
|
unplaceable.sectorcaptured = [scarlet]Requer captura de setor
|
||||||
yes = Sim
|
yes = Sim
|
||||||
no = Não
|
no = Não
|
||||||
info.title = [accent]Informação
|
info.title = [accent]Informação
|
||||||
error.title = [crimson]Ocorreu um Erro.
|
error.title = [crimson]Ocorreu um Erro.
|
||||||
error.crashtitle = Ocorreu um Erro
|
error.crashtitle = Ocorreu um Erro
|
||||||
unit.nobuild = [scarlet]Unit can't build
|
unit.nobuild = [scarlet]Unidades não podem construir
|
||||||
lastaccessed = [lightgray]Last Accessed: {0}
|
lastaccessed = [lightgray]Último Acesso: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
|
|
||||||
stat.input = Entrada
|
stat.input = Entrada
|
||||||
stat.output = Saída
|
stat.output = Saída
|
||||||
stat.booster = Apoio
|
stat.booster = Apoio
|
||||||
stat.tiles = Required Tiles
|
stat.tiles = Required Tiles
|
||||||
stat.affinities = Affinities
|
stat.affinities = Afinidades
|
||||||
stat.powercapacity = Capacidade de Energia
|
stat.powercapacity = Capacidade de Energia
|
||||||
stat.powershot = Energia/tiro
|
stat.powershot = Energia/tiro
|
||||||
stat.damage = Dano
|
stat.damage = Dano
|
||||||
@@ -597,16 +597,16 @@ stat.itemsmoved = Velocidade de movimento
|
|||||||
stat.launchtime = Tempo entre Disparos.
|
stat.launchtime = Tempo entre Disparos.
|
||||||
stat.shootrange = Alcance
|
stat.shootrange = Alcance
|
||||||
stat.size = Tamanho
|
stat.size = Tamanho
|
||||||
stat.displaysize = Display Size
|
stat.displaysize = Tamanho do Display
|
||||||
stat.liquidcapacity = Capacidade de Líquido
|
stat.liquidcapacity = Capacidade de Líquido
|
||||||
stat.powerrange = Alcance da Energia
|
stat.powerrange = Alcance da Energia
|
||||||
stat.linkrange = Link Range
|
stat.linkrange = Alcance do Link
|
||||||
stat.instructions = Instructions
|
stat.instructions = Instruções
|
||||||
stat.powerconnections = Conexões Máximas
|
stat.powerconnections = Conexões Máximas
|
||||||
stat.poweruse = Uso de energia
|
stat.poweruse = Uso de energia
|
||||||
stat.powerdamage = Dano/Poder
|
stat.powerdamage = Dano / Poder
|
||||||
stat.itemcapacity = Capacidade de Itens
|
stat.itemcapacity = Capacidade de Itens
|
||||||
stat.memorycapacity = Memory Capacity
|
stat.memorycapacity = Capacidade de Memória
|
||||||
stat.basepowergeneration = Geração de poder base
|
stat.basepowergeneration = Geração de poder base
|
||||||
stat.productiontime = Tempo de produção
|
stat.productiontime = Tempo de produção
|
||||||
stat.repairtime = Tempo de reparo total do bloco
|
stat.repairtime = Tempo de reparo total do bloco
|
||||||
@@ -624,34 +624,35 @@ stat.inaccuracy = Imprecisão
|
|||||||
stat.shots = Tiros
|
stat.shots = Tiros
|
||||||
stat.reload = Tempo de recarga
|
stat.reload = Tempo de recarga
|
||||||
stat.ammo = Munição
|
stat.ammo = Munição
|
||||||
stat.shieldhealth = Shield Health
|
|
||||||
stat.cooldowntime = Tempo de espera
|
|
||||||
stat.explosiveness = Explosiveness
|
|
||||||
stat.basedeflectchance = Base Deflect Chance
|
|
||||||
stat.lightningchance = Lightning Chance
|
|
||||||
stat.lightningdamage = Lightning Damage
|
|
||||||
stat.flammability = Flammability
|
|
||||||
stat.radioactivity = Radioactivity
|
|
||||||
stat.heatcapacity = HeatCapacity
|
|
||||||
stat.viscosity = Viscosity
|
|
||||||
stat.temperature = Temperature
|
|
||||||
stat.speed = Speed
|
|
||||||
stat.buildspeed = Build Speed
|
|
||||||
stat.minespeed = Mine Speed
|
|
||||||
stat.minetier = Mine Tier
|
|
||||||
stat.payloadcapacity = Payload Capacity
|
|
||||||
stat.commandlimit = Command Limit
|
|
||||||
stat.abilities = Abilities
|
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
stat.shieldhealth = Vida do Escudo
|
||||||
ability.repairfield = Repair Field
|
stat.cooldowntime = Tempo de espera
|
||||||
|
stat.explosiveness = Explosividade
|
||||||
|
stat.basedeflectchance = Chance Base de Esquiva
|
||||||
|
stat.lightningchance = Lightning Chance
|
||||||
|
stat.lightningdamage = Dano por Raio
|
||||||
|
stat.flammability = Inflamabilidade
|
||||||
|
stat.radioactivity = Radioatividade
|
||||||
|
stat.heatcapacity = Capacidade de Aquecimento
|
||||||
|
stat.viscosity = Viscosidade
|
||||||
|
stat.temperature = Temperatura
|
||||||
|
stat.speed = Velocidade
|
||||||
|
stat.buildspeed = Velocidade de Construção
|
||||||
|
stat.minespeed = Velocidade de Mineração
|
||||||
|
stat.minetier = Nível de Mineração
|
||||||
|
stat.payloadcapacity = Capacidade de Carga
|
||||||
|
stat.commandlimit = Limite de Comando
|
||||||
|
stat.abilities = Habilidades
|
||||||
|
|
||||||
|
ability.forcefield = Campo de Força
|
||||||
|
ability.repairfield = Campo de Reparação
|
||||||
ability.statusfield = Status Field
|
ability.statusfield = Status Field
|
||||||
ability.unitspawn = {0} Factory
|
ability.unitspawn = {0} Fábrica
|
||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Raio de Regeneração do Escudo
|
||||||
|
|
||||||
bar.drilltierreq = Broca melhor necessária.
|
bar.drilltierreq = Broca melhor necessária.
|
||||||
bar.noresources = Missing Resources
|
bar.noresources = Recursos Insuficientes
|
||||||
bar.corereq = Core Base Required
|
bar.corereq = Base do Núcleo Necessária
|
||||||
bar.drillspeed = Velocidade da Broca: {0}/s
|
bar.drillspeed = Velocidade da Broca: {0}/s
|
||||||
bar.pumpspeed = Velocidade da Bomba: {0}/s
|
bar.pumpspeed = Velocidade da Bomba: {0}/s
|
||||||
bar.efficiency = Eficiência: {0}%
|
bar.efficiency = Eficiência: {0}%
|
||||||
@@ -659,7 +660,7 @@ bar.powerbalance = Energia: {0}
|
|||||||
bar.powerstored = Armazenada: {0}/{1}
|
bar.powerstored = Armazenada: {0}/{1}
|
||||||
bar.poweramount = Energia: {0}
|
bar.poweramount = Energia: {0}
|
||||||
bar.poweroutput = Saída de energia: {0}
|
bar.poweroutput = Saída de energia: {0}
|
||||||
bar.powerlines = Connections: {0}/{1}
|
bar.powerlines = Conexões: {0}/{1}
|
||||||
bar.items = Itens: {0}
|
bar.items = Itens: {0}
|
||||||
bar.capacity = Capacidade: {0}
|
bar.capacity = Capacidade: {0}
|
||||||
bar.unitcap = {0} {1}/{2}
|
bar.unitcap = {0} {1}/{2}
|
||||||
@@ -669,7 +670,7 @@ bar.heat = Aquecer
|
|||||||
bar.power = Poder
|
bar.power = Poder
|
||||||
bar.progress = Progresso da construção
|
bar.progress = Progresso da construção
|
||||||
bar.input = Entrada
|
bar.input = Entrada
|
||||||
bar.output = Sainda
|
bar.output = Saída
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]Processor Controlled
|
units.processorcontrol = [lightgray]Processor Controlled
|
||||||
|
|
||||||
@@ -680,15 +681,15 @@ bullet.homing = [stat]Guiado
|
|||||||
bullet.shock = [stat]Choque
|
bullet.shock = [stat]Choque
|
||||||
bullet.frag = [stat]Fragmentação
|
bullet.frag = [stat]Fragmentação
|
||||||
bullet.knockback = [stat]{0}[lightgray]Impulso
|
bullet.knockback = [stat]{0}[lightgray]Impulso
|
||||||
bullet.pierce = [stat]{0}[lightgray]x pierce
|
bullet.pierce = [stat]{0}[lightgray]x perfuração
|
||||||
bullet.infinitepierce = [stat]pierce
|
bullet.infinitepierce = [stat]perfuração
|
||||||
bullet.freezing = [stat]Congelamento
|
bullet.freezing = [stat]Congelamento
|
||||||
bullet.tarred = [stat]Grudento
|
bullet.tarred = [stat]Grudento
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munição
|
bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munição
|
||||||
bullet.reload = [stat]{0}[lightgray]x cadência de tiro
|
bullet.reload = [stat]{0}[lightgray]x cadência de tiro
|
||||||
|
|
||||||
unit.blocks = Blocos
|
unit.blocks = Blocos
|
||||||
unit.blockssquared = blocks²
|
unit.blockssquared = Blocos²
|
||||||
unit.powersecond = unidades de energia por segundo
|
unit.powersecond = unidades de energia por segundo
|
||||||
unit.liquidsecond = líquido segundo
|
unit.liquidsecond = líquido segundo
|
||||||
unit.itemssecond = itens por segundo
|
unit.itemssecond = itens por segundo
|
||||||
@@ -701,7 +702,7 @@ unit.persecond = por segundo
|
|||||||
unit.perminute = /min
|
unit.perminute = /min
|
||||||
unit.timesspeed = x Velocidade
|
unit.timesspeed = x Velocidade
|
||||||
unit.percent = %
|
unit.percent = %
|
||||||
unit.shieldhealth = shield health
|
unit.shieldhealth = Saúde do escudo
|
||||||
unit.items = itens
|
unit.items = itens
|
||||||
unit.thousands = k
|
unit.thousands = k
|
||||||
unit.millions = m
|
unit.millions = m
|
||||||
@@ -711,19 +712,19 @@ category.power = Energia
|
|||||||
category.liquids = Líquidos
|
category.liquids = Líquidos
|
||||||
category.items = Itens
|
category.items = Itens
|
||||||
category.crafting = Entrada/Saída
|
category.crafting = Entrada/Saída
|
||||||
category.function = Function
|
category.function = Função
|
||||||
category.optional = Melhoras opcionais
|
category.optional = Melhoras opcionais
|
||||||
setting.landscape.name = Travar panorama
|
setting.landscape.name = Travar panorama
|
||||||
setting.shadows.name = Sombras
|
setting.shadows.name = Sombras
|
||||||
setting.blockreplace.name = Sugestões automáticas de blocos
|
setting.blockreplace.name = Sugestões automáticas de blocos
|
||||||
setting.linear.name = Filtragem linear
|
setting.linear.name = Filtragem linear
|
||||||
setting.hints.name = Dicas
|
setting.hints.name = Dicas
|
||||||
setting.flow.name = Display Resource Flow Rate[scarlet] (experimental)
|
setting.flow.name = Mostrar Fluxo de Recursos[scarlet] (experimental)
|
||||||
setting.buildautopause.name = Pausar construções automaticamente
|
setting.buildautopause.name = Pausar construções automaticamente
|
||||||
setting.animatedwater.name = Água animada
|
setting.animatedwater.name = Água animada
|
||||||
setting.animatedshields.name = Escudos animados
|
setting.animatedshields.name = Escudos animados
|
||||||
setting.antialias.name = Filtro suavizante[lightgray] (reinicialização requerida)[]
|
setting.antialias.name = Filtro suavizante[lightgray] (reinicialização requerida)[]
|
||||||
setting.playerindicators.name = Player Indicators
|
setting.playerindicators.name = Indicador de Jogadores
|
||||||
setting.indicators.name = Indicador de aliados/inimigos
|
setting.indicators.name = Indicador de aliados/inimigos
|
||||||
setting.autotarget.name = Alvo automatico
|
setting.autotarget.name = Alvo automatico
|
||||||
setting.keyboard.name = Controles de mouse e teclado
|
setting.keyboard.name = Controles de mouse e teclado
|
||||||
@@ -756,7 +757,7 @@ setting.smoothcamera.name = Suavizar movimentos da câmera
|
|||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.pixelate.name = Pixelizado [lightgray](Pode diminuir a performace)
|
setting.pixelate.name = Pixelizado [lightgray](Pode diminuir a performace)
|
||||||
setting.minimap.name = Mostrar minimapa
|
setting.minimap.name = Mostrar minimapa
|
||||||
setting.coreitems.name = Display Core Items (WIP)
|
setting.coreitems.name = Mostrar Itens no Núcleo (WIP)
|
||||||
setting.position.name = Mostrar a posição do Jogador
|
setting.position.name = Mostrar a posição do Jogador
|
||||||
setting.musicvol.name = Volume da Música
|
setting.musicvol.name = Volume da Música
|
||||||
setting.atmosphere.name = Mostrar a atmosfera do planeta
|
setting.atmosphere.name = Mostrar a atmosfera do planeta
|
||||||
@@ -767,18 +768,18 @@ setting.mutesound.name = Desligar Som
|
|||||||
setting.crashreport.name = Enviar denúncias anônimas de erros
|
setting.crashreport.name = Enviar denúncias anônimas de erros
|
||||||
setting.savecreate.name = Criar salvamentos automaticamente
|
setting.savecreate.name = Criar salvamentos automaticamente
|
||||||
setting.publichost.name = Visibilidade do jogo público
|
setting.publichost.name = Visibilidade do jogo público
|
||||||
setting.playerlimit.name = Player Limit
|
setting.playerlimit.name = Limites de Player
|
||||||
setting.chatopacity.name = Opacidade do chat
|
setting.chatopacity.name = Opacidade do chat
|
||||||
setting.lasersopacity.name = Opacidade do laser
|
setting.lasersopacity.name = Opacidade do laser
|
||||||
setting.bridgeopacity.name = Opacidade da ponte
|
setting.bridgeopacity.name = Opacidade da ponte
|
||||||
setting.playerchat.name = Mostrar chat em jogo
|
setting.playerchat.name = Mostrar chat em jogo
|
||||||
public.confirm = Você quer fazer sua partida pública?\n[accent]Qualquer um será capaz de entrar na sua partida.\n[lightgray]Isso pode ser mudado depois em Configurações->Jogo->Visibilidade da partida pública.
|
public.confirm = Você quer fazer sua partida pública?\n[accent]Qualquer um será capaz de entrar na sua partida.\n[lightgray]Isso pode ser mudado depois em Configurações->Jogo->Visibilidade da partida pública.
|
||||||
public.beta = Note que as versões beta do jogo não podem fazer salas publicas.
|
public.beta = Note que as versões beta do jogo não podem fazer salas públicas.
|
||||||
uiscale.reset = A escala da interface foi mudada.\nPressione "OK" para confirmar esta escala.\n[scarlet]Revertendo e saindo em[accent] {0}[] segundos...
|
uiscale.reset = A escala da interface foi mudada.\nPressione "OK" para confirmar esta escala.\n[scarlet]Revertendo e saindo em[accent] {0}[] segundos...
|
||||||
uiscale.cancel = Cancelar e sair
|
uiscale.cancel = Cancelar e sair
|
||||||
setting.bloom.name = Bloom
|
setting.bloom.name = Bloom
|
||||||
keybind.title = Refazer teclas
|
keybind.title = Refazer teclas
|
||||||
keybinds.mobile = [scarlet]A maior parte das teclas aqui não são funcionais em dispositivos móveis. Apenas movimento básico é suportado.
|
keybinds.mobile = [scarlet]A maior parte das teclas aqui não são funcionais em dispositivos móveis. É unicamente suportado movimento básico.
|
||||||
category.general.name = Geral
|
category.general.name = Geral
|
||||||
category.view.name = Ver
|
category.view.name = Ver
|
||||||
category.multiplayer.name = Multijogador
|
category.multiplayer.name = Multijogador
|
||||||
@@ -786,7 +787,7 @@ category.blocks.name = Selecionar bloco
|
|||||||
command.attack = Atacar
|
command.attack = Atacar
|
||||||
command.rally = Reunir
|
command.rally = Reunir
|
||||||
command.retreat = Recuar
|
command.retreat = Recuar
|
||||||
command.idle = Ausente
|
command.idle = Parado
|
||||||
placement.blockselectkeys = \n[lightgray]Tecla: [{0},
|
placement.blockselectkeys = \n[lightgray]Tecla: [{0},
|
||||||
keybind.respawn.name = Reaparecer
|
keybind.respawn.name = Reaparecer
|
||||||
keybind.control.name = Controlar unidade
|
keybind.control.name = Controlar unidade
|
||||||
@@ -795,7 +796,7 @@ keybind.press = Pressione uma tecla...
|
|||||||
keybind.press.axis = Pressione um eixo ou tecla...
|
keybind.press.axis = Pressione um eixo ou tecla...
|
||||||
keybind.screenshot.name = Captura do mapa
|
keybind.screenshot.name = Captura do mapa
|
||||||
keybind.toggle_power_lines.name = Mudar lasers
|
keybind.toggle_power_lines.name = Mudar lasers
|
||||||
keybind.toggle_block_status.name = Mostrar a propriedade dos blocos
|
keybind.toggle_block_status.name = Mostrar as propriedades dos blocos
|
||||||
keybind.move_x.name = Mover no eixo x
|
keybind.move_x.name = Mover no eixo x
|
||||||
keybind.move_y.name = Mover no eixo Y
|
keybind.move_y.name = Mover no eixo Y
|
||||||
keybind.mouse_move.name = Seguir o Cursor
|
keybind.mouse_move.name = Seguir o Cursor
|
||||||
@@ -854,25 +855,25 @@ mode.sandbox.name = Criativo
|
|||||||
mode.sandbox.description = Recursos infinitos e sem tempo para ataques.
|
mode.sandbox.description = Recursos infinitos e sem tempo para ataques.
|
||||||
mode.editor.name = Editor
|
mode.editor.name = Editor
|
||||||
mode.pvp.name = JxJ
|
mode.pvp.name = JxJ
|
||||||
mode.pvp.description = Lutar contra outros jogadores locais.
|
mode.pvp.description = Luta contra outros jogadores locais.
|
||||||
mode.attack.name = Ataque
|
mode.attack.name = Ataque
|
||||||
mode.attack.description = Sem hordas, com o objetivo de destruir a base inimiga.
|
mode.attack.description = Sem hordas, com o objetivo de destruir a base inimiga.
|
||||||
mode.custom = Regras personalizadas
|
mode.custom = Regras personalizadas
|
||||||
|
|
||||||
rules.infiniteresources = Recursos infinitos
|
rules.infiniteresources = Recursos infinitos
|
||||||
rules.reactorexplosions = Reatores explodem
|
rules.reactorexplosions = Reatores explodem
|
||||||
rules.schematic = Schematics Allowed
|
rules.schematic = Permitir Esquemas
|
||||||
rules.wavetimer = Tempo de horda
|
rules.wavetimer = Tempo de horda
|
||||||
rules.waves = Hordas
|
rules.waves = Hordas
|
||||||
rules.attack = Modo de ataque
|
rules.attack = Modo de ataque
|
||||||
rules.buildai = Habilitar construção da IA
|
rules.buildai = Habilitar construção da IA
|
||||||
rules.enemyCheat = Recursos de IA Infinitos
|
rules.enemyCheat = Recursos de IA Infinitos
|
||||||
rules.blockhealthmultiplier = Multiplicador de vida do bloco
|
rules.blockhealthmultiplier = Multiplicador de vida do bloco
|
||||||
rules.blockdamagemultiplier = Block Damage Multiplier
|
rules.blockdamagemultiplier = Multiplicador de dano do bloco
|
||||||
rules.unitbuildspeedmultiplier = Multiplicador de velocidade de criação de unidade
|
rules.unitbuildspeedmultiplier = Multiplicador de velocidade de criação de unidade
|
||||||
rules.unithealthmultiplier = Multiplicador de vida de unidade
|
rules.unithealthmultiplier = Multiplicador de vida de unidade
|
||||||
rules.unitdamagemultiplier = Multiplicador de dano de Unidade
|
rules.unitdamagemultiplier = Multiplicador de dano de Unidade
|
||||||
rules.enemycorebuildradius = Raio de "Não-criação" de core inimigo:[lightgray] (blocos)
|
rules.enemycorebuildradius = Raio de "não-criação" de core inimigo:[lightgray] (blocos)
|
||||||
rules.wavespacing = Espaço de tempo entre hordas:[lightgray] (seg)
|
rules.wavespacing = Espaço de tempo entre hordas:[lightgray] (seg)
|
||||||
rules.buildcostmultiplier = Multiplicador de custo de construção
|
rules.buildcostmultiplier = Multiplicador de custo de construção
|
||||||
rules.buildspeedmultiplier = Multiplicador de velocidade de construção
|
rules.buildspeedmultiplier = Multiplicador de velocidade de construção
|
||||||
@@ -887,7 +888,7 @@ rules.title.unit = Unidades
|
|||||||
rules.title.experimental = Experimental
|
rules.title.experimental = Experimental
|
||||||
rules.title.environment = Ambiente
|
rules.title.environment = Ambiente
|
||||||
rules.lighting = Iluminação
|
rules.lighting = Iluminação
|
||||||
rules.enemyLights = Enemy Lights
|
rules.enemyLights = Iluminação Inimiga
|
||||||
rules.fire = Fogo
|
rules.fire = Fogo
|
||||||
rules.explosions = Dano de explosão de unidades/blocos
|
rules.explosions = Dano de explosão de unidades/blocos
|
||||||
rules.ambientlight = Luz ambiente
|
rules.ambientlight = Luz ambiente
|
||||||
@@ -906,13 +907,13 @@ item.coal.name = Carvão
|
|||||||
item.graphite.name = Grafite
|
item.graphite.name = Grafite
|
||||||
item.titanium.name = Titânio
|
item.titanium.name = Titânio
|
||||||
item.thorium.name = Tório
|
item.thorium.name = Tório
|
||||||
item.silicon.name = Sílicio
|
item.silicon.name = Silício
|
||||||
item.plastanium.name = Plastânio
|
item.plastanium.name = Plastânio
|
||||||
item.phase-fabric.name = Tecido de fase
|
item.phase-fabric.name = Tecido de fase
|
||||||
item.surge-alloy.name = Liga de surto
|
item.surge-alloy.name = Liga de súrgio
|
||||||
item.spore-pod.name = Cápsula de esporos
|
item.spore-pod.name = Pedaço de esporo
|
||||||
item.sand.name = Areia
|
item.sand.name = Areia
|
||||||
item.blast-compound.name = Composto de explosão
|
item.blast-compound.name = Composto Explosivo
|
||||||
item.pyratite.name = Piratita
|
item.pyratite.name = Piratita
|
||||||
item.metaglass.name = Metavidro
|
item.metaglass.name = Metavidro
|
||||||
item.scrap.name = Sucata
|
item.scrap.name = Sucata
|
||||||
@@ -934,7 +935,7 @@ 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 = Horizon
|
||||||
unit.zenith.name = Zenith
|
unit.zenith.name = Zênite
|
||||||
unit.antumbra.name = Antumbra
|
unit.antumbra.name = Antumbra
|
||||||
unit.eclipse.name = Eclipse
|
unit.eclipse.name = Eclipse
|
||||||
unit.mono.name = Mono
|
unit.mono.name = Mono
|
||||||
@@ -950,7 +951,7 @@ unit.omura.name = Omura
|
|||||||
unit.alpha.name = Alpha
|
unit.alpha.name = Alpha
|
||||||
unit.beta.name = Beta
|
unit.beta.name = Beta
|
||||||
unit.gamma.name = Gamma
|
unit.gamma.name = Gamma
|
||||||
unit.scepter.name = Scepter
|
unit.scepter.name = Sceptro
|
||||||
unit.reign.name = Reign
|
unit.reign.name = Reign
|
||||||
unit.vela.name = Vela
|
unit.vela.name = Vela
|
||||||
unit.corvus.name = Corvus
|
unit.corvus.name = Corvus
|
||||||
@@ -963,12 +964,12 @@ block.grass.name = Grama
|
|||||||
block.slag.name = Escória
|
block.slag.name = Escória
|
||||||
block.space.name = Space
|
block.space.name = Space
|
||||||
block.salt.name = Sal
|
block.salt.name = Sal
|
||||||
block.salt-wall.name = Parede de Sal
|
block.salt-wall.name = Parede de sal
|
||||||
block.pebbles.name = Pedrinhas
|
block.pebbles.name = Pedrinhas
|
||||||
block.tendrils.name = Gavinhas
|
block.tendrils.name = Gavinhas
|
||||||
block.sand-wall.name = Sand Wall
|
block.sand-wall.name = Muro de Areia
|
||||||
block.spore-pine.name = Pinheiro de esporo
|
block.spore-pine.name = Pinheiro de esporo
|
||||||
block.spore-wall.name = Spore Wall
|
block.spore-wall.name = Muro de Esporos
|
||||||
block.boulder.name = Rochedo
|
block.boulder.name = Rochedo
|
||||||
block.snow-boulder.name = Monte de neve
|
block.snow-boulder.name = Monte de neve
|
||||||
block.snow-pine.name = Pinheiro com neve
|
block.snow-pine.name = Pinheiro com neve
|
||||||
@@ -993,8 +994,8 @@ block.core-foundation.name = Fundação do núcleo
|
|||||||
block.core-nucleus.name = Centro do núcleo
|
block.core-nucleus.name = Centro do núcleo
|
||||||
block.deepwater.name = Água profunda
|
block.deepwater.name = Água profunda
|
||||||
block.water.name = Água
|
block.water.name = Água
|
||||||
block.tainted-water.name = Água contaminada
|
block.tainted-water.name = Água tinta
|
||||||
block.darksand-tainted-water.name = Água contaminada sobre areia escura
|
block.darksand-tainted-water.name = Água tinta sobre areia escura
|
||||||
block.tar.name = Piche
|
block.tar.name = Piche
|
||||||
block.stone.name = Pedra
|
block.stone.name = Pedra
|
||||||
block.sand.name = Areia
|
block.sand.name = Areia
|
||||||
@@ -1064,10 +1065,10 @@ block.sorter.name = Ordenador
|
|||||||
block.inverted-sorter.name = Ordenador invertido
|
block.inverted-sorter.name = Ordenador invertido
|
||||||
block.message.name = Mensagem
|
block.message.name = Mensagem
|
||||||
block.illuminator.name = Iluminador
|
block.illuminator.name = Iluminador
|
||||||
block.illuminator.description = Uma pequena, compacta e configurável fonte de luz. Precisa de energia para funcionar.
|
block.illuminator.description = Uma fonte de luz pequena, configurável e compacta. Precisa de energia para funcionar.
|
||||||
block.overflow-gate.name = Portão de Fluxo
|
block.overflow-gate.name = Portão de Fluxo
|
||||||
block.underflow-gate.name = Portão de Fluxo invertido
|
block.underflow-gate.name = Portão de Fluxo invertido
|
||||||
block.silicon-smelter.name = Fundidora de silicio
|
block.silicon-smelter.name = Fundidora de silício
|
||||||
block.phase-weaver.name = Palheta de fase
|
block.phase-weaver.name = Palheta de fase
|
||||||
block.pulverizer.name = Pulverizador
|
block.pulverizer.name = Pulverizador
|
||||||
block.cryofluid-mixer.name = Misturador de Crio Fluido
|
block.cryofluid-mixer.name = Misturador de Crio Fluido
|
||||||
@@ -1075,10 +1076,10 @@ block.melter.name = Aparelho de fusão
|
|||||||
block.incinerator.name = Incinerador
|
block.incinerator.name = Incinerador
|
||||||
block.spore-press.name = Prensa de Esporo
|
block.spore-press.name = Prensa de Esporo
|
||||||
block.separator.name = Separador
|
block.separator.name = Separador
|
||||||
block.coal-centrifuge.name = Centrífuga de Carvão
|
block.coal-centrifuge.name = Centrífugador de Carvão
|
||||||
block.power-node.name = Célula de energia
|
block.power-node.name = Célula de energia
|
||||||
block.power-node-large.name = Célula de energia grande
|
block.power-node-large.name = Célula de energia grande
|
||||||
block.surge-tower.name = Torre de surto
|
block.surge-tower.name = Torre de súrgio
|
||||||
block.diode.name = Diodo
|
block.diode.name = Diodo
|
||||||
block.battery.name = Bateria
|
block.battery.name = Bateria
|
||||||
block.battery-large.name = Bateria grande
|
block.battery-large.name = Bateria grande
|
||||||
@@ -1105,7 +1106,7 @@ block.wave.name = Onda
|
|||||||
block.tsunami.name = Tsunami
|
block.tsunami.name = Tsunami
|
||||||
block.swarmer.name = Enxame
|
block.swarmer.name = Enxame
|
||||||
block.salvo.name = Salvo
|
block.salvo.name = Salvo
|
||||||
block.ripple.name = Morteiro
|
block.ripple.name = Ondulação
|
||||||
block.phase-conveyor.name = Transportador de Fase
|
block.phase-conveyor.name = Transportador de Fase
|
||||||
block.bridge-conveyor.name = Esteira-Ponte
|
block.bridge-conveyor.name = Esteira-Ponte
|
||||||
block.plastanium-compressor.name = Compressor de Plastânio
|
block.plastanium-compressor.name = Compressor de Plastânio
|
||||||
@@ -1143,7 +1144,7 @@ block.rtg-generator.name = Gerador GTR
|
|||||||
block.spectre.name = Espectro
|
block.spectre.name = Espectro
|
||||||
block.meltdown.name = Fusão
|
block.meltdown.name = Fusão
|
||||||
block.foreshadow.name = Foreshadow
|
block.foreshadow.name = Foreshadow
|
||||||
block.container.name = Contâiner
|
block.container.name = Contêiner
|
||||||
block.launch-pad.name = Plataforma de lançamento
|
block.launch-pad.name = Plataforma de lançamento
|
||||||
block.launch-pad-large.name = Plataforma de lançamento grande
|
block.launch-pad-large.name = Plataforma de lançamento grande
|
||||||
block.segment.name = Segmento
|
block.segment.name = Segmento
|
||||||
@@ -1168,7 +1169,7 @@ block.hyper-processor.name = Hiper Processador
|
|||||||
block.logic-display.name = Monitor Lógico
|
block.logic-display.name = Monitor Lógico
|
||||||
block.large-logic-display.name = Monitor lógico grande
|
block.large-logic-display.name = Monitor lógico grande
|
||||||
block.memory-cell.name = Célula de Memória
|
block.memory-cell.name = Célula de Memória
|
||||||
block.memory-bank.name = Memory Bank
|
block.memory-bank.name = Banco de Memória
|
||||||
|
|
||||||
team.blue.name = Azul
|
team.blue.name = Azul
|
||||||
team.crux.name = Vermelho
|
team.crux.name = Vermelho
|
||||||
@@ -1198,7 +1199,7 @@ tutorial.withdraw = Em algumas situações é necessário pegar itens diretament
|
|||||||
tutorial.deposit = Deposite itens em blocos arrastando da sua nave até o bloco.\n\n[accent]Deposite seu cobre de volta no núcleo.[]
|
tutorial.deposit = Deposite itens em blocos arrastando da sua nave até o bloco.\n\n[accent]Deposite seu cobre de volta no núcleo.[]
|
||||||
tutorial.waves = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Construa mais torretas.
|
tutorial.waves = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Construa mais torretas.
|
||||||
tutorial.waves.mobile = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Seu drone vai atirar nos inimigos automaticamente.\nConstrua mais torretas e brocas. Minere mais cobre.
|
tutorial.waves.mobile = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Seu drone vai atirar nos inimigos automaticamente.\nConstrua mais torretas e brocas. Minere mais cobre.
|
||||||
tutorial.launch = Quando você atinge uma horda específica, Você é capaz de[accent] lançar o núcleo[], deixando suas defesas para trás e[accent] obtendo todos os recursos em seu núcleo.[]\nEstes recursos podem ser usados para pesquisar novas tecnologias.\n\n[accent]Pressione o botão lançar.
|
tutorial.launch = Quando você atinge uma horda específica, você é capaz de[accent] lançar o núcleo[], deixando suas defesas para trás e[accent] obtendo todos os recursos em seu núcleo.[]\nEstes recursos podem ser usados para pesquisar novas tecnologias.\n\n[accent]Pressione o botão lançar.
|
||||||
|
|
||||||
item.copper.description = O material mais básico. Usado em todos os tipos de blocos.
|
item.copper.description = O material mais básico. Usado em todos os tipos de blocos.
|
||||||
item.lead.description = Material de começo basico. usado extensivamente em blocos de transporte de líquidos e eletrônicos.
|
item.lead.description = Material de começo basico. usado extensivamente em blocos de transporte de líquidos e eletrônicos.
|
||||||
@@ -1221,14 +1222,14 @@ liquid.slag.description = Vários metais derretidos misturados juntos. Pode ser
|
|||||||
liquid.oil.description = Um líquido usado na produção de materias avançados. Pode ser convertido em carvão como combustível, ou pulverizado e incendiado como arma.
|
liquid.oil.description = Um líquido usado na produção de materias avançados. Pode ser convertido em carvão como combustível, ou pulverizado e incendiado como arma.
|
||||||
liquid.cryofluid.description = A maneira mais eficiente de resfriar qualquer coisa, até seu corpo quando está calor, mas não faça isto.
|
liquid.cryofluid.description = A maneira mais eficiente de resfriar qualquer coisa, até seu corpo quando está calor, mas não faça isto.
|
||||||
|
|
||||||
block.message.description = Armazena uma mensagem. Usado para comunicação entre aliados.
|
block.message.description = Mostra uma mensagem. Usado para comunicação entre aliados.
|
||||||
block.graphite-press.description = Comprime pedaços de carvão em lâminas de grafite puro.
|
block.graphite-press.description = Comprime pedaços de carvão em lâminas de grafite puro.
|
||||||
block.multi-press.description = Uma versão melhorada da prensa de grafite. Usa água e energia para processar carvão rápida e eficientemente.
|
block.multi-press.description = Uma versão melhorada da prensa de grafite. Usa água e energia para processar carvão rápida e eficientemente.
|
||||||
block.silicon-smelter.description = Reduz areia a silicio usando carvão puro. Produz silício.
|
block.silicon-smelter.description = Reduz areia a silício usando carvão puro. Produz silício.
|
||||||
block.kiln.description = Derrete chumbo e areia no composto conhecido como metavidro. Requer pequenas quantidades de energia.
|
block.kiln.description = Derrete chumbo e areia no composto conhecido como metavidro. Requer pequenas quantidades de energia.
|
||||||
block.plastanium-compressor.description = Produz plastânio usando petróleo e titânio.
|
block.plastanium-compressor.description = Produz plastânio usando petróleo e titânio.
|
||||||
block.phase-weaver.description = Produz tecido de fase usando tório radioativo e areia. Requer massivas quantidades de energia para funcionar.
|
block.phase-weaver.description = Produz tecido de fase usando tório radioativo e areia. Requer massivas quantidades de energia para funcionar.
|
||||||
block.alloy-smelter.description = Combina titânio, chumbo, silicio e cobre para produzir liga de surto.
|
block.alloy-smelter.description = Combina titânio, chumbo, silício e cobre para produzir liga de surto.
|
||||||
block.cryofluid-mixer.description = Mistura água e pó fino de titânio para produzir criofluido. Essencial para o uso do reator a tório.
|
block.cryofluid-mixer.description = Mistura água e pó fino de titânio para produzir criofluido. Essencial para o uso do reator a tório.
|
||||||
block.blast-mixer.description = Quebra e mistura aglomerados de esporos com piratita para produzir composto de explosão.
|
block.blast-mixer.description = Quebra e mistura aglomerados de esporos com piratita para produzir composto de explosão.
|
||||||
block.pyratite-mixer.description = Mistura carvão, chumbo e areia em piratita altamente inflamável.
|
block.pyratite-mixer.description = Mistura carvão, chumbo e areia em piratita altamente inflamável.
|
||||||
@@ -1238,14 +1239,14 @@ block.spore-press.description = Comprime cápsulas de esporos em petróleo.
|
|||||||
block.pulverizer.description = Esmaga sucata em areia. Util quando esta em falta de areia natural.
|
block.pulverizer.description = Esmaga sucata em areia. Util quando esta em falta de areia natural.
|
||||||
block.coal-centrifuge.description = Solidifica petróleo em carvão.
|
block.coal-centrifuge.description = Solidifica petróleo em carvão.
|
||||||
block.incinerator.description = Se livra de itens em excesso ou liquidos.
|
block.incinerator.description = Se livra de itens em excesso ou liquidos.
|
||||||
block.power-void.description = Destroi qualquer energia que entre dentro. Apenas caixa de areia.
|
block.power-void.description = Destroi qualquer energia que entra dentro. Apenas no modo sandbox.
|
||||||
block.power-source.description = Infinitivamente da energia. Apenas caixa de areia.
|
block.power-source.description = Infinitivamente da energia. Apenas no modo sandbox.
|
||||||
block.item-source.description = Infinivamente da itens. Apenas caixa de areia.
|
block.item-source.description = Infinitamente dá itens. Apenas caixa de areia.
|
||||||
block.item-void.description = Destroi qualquer item que entre sem requerir energia. Apenas caixa de areia.
|
block.item-void.description = Destroi qualquer item que entre sem requerir energia. Apenas no modo sandbox.
|
||||||
block.liquid-source.description = Infinitivamente da Liquidos. Apenas caixa de areia.
|
block.liquid-source.description = Infinitivamente dá Liquidos. Apenas no modo sanbox.
|
||||||
block.liquid-void.description = Remove todos os líquidos. Apenas sandbox.
|
block.liquid-void.description = Destroi qualquer líquidos que entrar dentro. Apenas no modo sandbox.
|
||||||
block.copper-wall.description = Um bloco defensivo e barato.\nUtil para proteger o núcleo e torretas no começo.
|
block.copper-wall.description = Um bloco defensivo barato.\nUtil para proteger o núcleo e torretas no começo.
|
||||||
block.copper-wall-large.description = Um bloco defensivo e barato.\nUtil para proteger o núcleo e torretas no começo.\nOcupa múltiplos blocos.
|
block.copper-wall-large.description = Um bloco defensivo barato.\nUtil para proteger o núcleo e torretas no começo.\nOcupa múltiplos blocos.
|
||||||
block.titanium-wall.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.
|
block.titanium-wall.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.
|
||||||
block.titanium-wall-large.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.\nOcupa múltiplos blocos.
|
block.titanium-wall-large.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.\nOcupa múltiplos blocos.
|
||||||
block.plastanium-wall.description = Um tipo especial de muro que absorve arcos elétricos e bloqueia conexões automáticas de células de energia.
|
block.plastanium-wall.description = Um tipo especial de muro que absorve arcos elétricos e bloqueia conexões automáticas de células de energia.
|
||||||
@@ -1253,30 +1254,30 @@ block.plastanium-wall-large.description = Um tipo especial de muro que absorve a
|
|||||||
block.thorium-wall.description = Um bloco defensivo forte.\nBoa proteção contra inimigos.
|
block.thorium-wall.description = Um bloco defensivo forte.\nBoa proteção contra inimigos.
|
||||||
block.thorium-wall-large.description = Um bloco defensivo forte.\nBoa proteção contra inimigos.\nOcupa múltiplos blocos.
|
block.thorium-wall-large.description = Um bloco defensivo forte.\nBoa proteção contra inimigos.\nOcupa múltiplos blocos.
|
||||||
block.phase-wall.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto.
|
block.phase-wall.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto.
|
||||||
block.phase-wall-large.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto.\nOcupa múltiplos blocos.
|
block.phase-wall-large.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas ao impacto.\nOcupa múltiplos blocos.
|
||||||
block.surge-wall.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-s aleatoriamente.
|
block.surge-wall.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-as aleatoriamente.
|
||||||
block.surge-wall-large.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-s aleatoriamente.\nOcupa multiplos blocos.
|
block.surge-wall-large.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-as aleatoriamente.\nOcupa multiplos blocos.
|
||||||
block.door.description = Uma pequeda porta. Pode ser aberta e fechada ao tocar.
|
block.door.description = Uma pequeda porta. Pode ser aberta e fechada ao tocar.
|
||||||
block.door-large.description = Uma grande porta. Pode ser aberta e fechada ao tocar.\nOcupa múltiplos blocos.
|
block.door-large.description = Uma grande porta. Pode ser aberta e fechada ao tocar.\nOcupa múltiplos blocos.
|
||||||
block.mender.description = Periodicamente repara blocos vizinhos. Mantem as defesas reparadas em e entre ondas.\nPode usar silício para aumentar o alcance e a eficiência.
|
block.mender.description = Periodicamente repara blocos vizinhos. Mantem as defesas reparadas em e entre ondas.\nPode usar silício para aumentar o alcance e a eficácia.
|
||||||
block.mend-projector.description = Uma versão melhorada do reparador. Repara blocos vizinhos.\nPode usar tecido de fase para aumentar o alcance e a eficiência.
|
block.mend-projector.description = Uma versão melhorada do reparador. Repara blocos vizinhos.\nPode usar tecido de fase para aumentar o alcance e a eficácia.
|
||||||
block.overdrive-projector.description = Aumenta a velocidade de construções vizinhas.\nPode usar tecido de fase para aumentar o alcance e a eficiência.
|
block.overdrive-projector.description = Aumenta a velocidade de construções vizinhas.\nPode usar tecido de fase para aumentar o alcance e a eficácia.
|
||||||
block.force-projector.description = Cria um campo de força hexagonal ao redor de si, protegendo construções e unidades.\nSuperaquece se suportar muito dano. Pode usar líquidos para evitar superaquecimento. Pode-se usar tecido de fase para aumentar o tamanho do escudo.
|
block.force-projector.description = Cria um campo de força hexagonal ao redor de si, protegendo construções e unidades.\nAquece demais se o escudo tomar dano. Pode usar líquidos para evitar superaquecimento. Pode-se usar tecido de fase para aumentar o tamanho do escudo.
|
||||||
block.shock-mine.description = Danifica inimigos em cima da mina. Quase invisivel ao inimigo.
|
block.shock-mine.description = Danifica inimigos em cima da mina. Quase invisivel ao inimigo.
|
||||||
block.conveyor.description = Bloco de transporte de item basico. Move os itens a frente e os deposita automaticamente em torretas ou construtores. Rotacionável.
|
block.conveyor.description = Bloco de transporte de item basico. Move os itens a frente e os deposita automaticamente em torretas ou construtores. Rotacionável.
|
||||||
block.titanium-conveyor.description = Bloco de transporte de item avançado. Move itens mais rapidos que esteiras padrões.
|
block.titanium-conveyor.description = Bloco de transporte de item avançado. Move itens mais rapidos que esteiras padrões.
|
||||||
block.plastanium-conveyor.description = Moves items in batches.\nAccepts items at the back, and unloads them in three directions at the front.
|
block.plastanium-conveyor.description = Move os itens por grupos.\nRecebe os itens por trás, e despeja eles nas três outras direções.
|
||||||
block.junction.description = Funciona como uma ponte Para duas esteiras que estejam se cruzando. Util em situações que tenha duas esteiras diferentes carregando materiais diferentes para lugares diferentes.
|
block.junction.description = Funciona como uma ponte para duas esteiras que estejam se cruzando. Util em situações que tenha duas esteiras separadas carregando materiais diferentes para lugares diferentes.
|
||||||
block.bridge-conveyor.description = Bloco de transporte de itens avancado. Possibilita o transporte de itens acima de 3 blocos de construção ou paredes.
|
block.bridge-conveyor.description = Bloco de transporte de itens avancado. Possibilita o transporte de itens acima de 3 blocos de construção ou paredes.
|
||||||
block.phase-conveyor.description = Bloco de transporte de item avançado. Usa energia para teleportar itens a uma esteira de fase sobre uma severa distancia.
|
block.phase-conveyor.description = Bloco de transporte de item avançado. Usa energia para teleportar itens a uma esteira de fase sobre uma severa distancia.
|
||||||
block.sorter.description = Filtra itens passando o selecionado para frente e os outros para os lados.
|
block.sorter.description = Filtra itens passando o selecionado para frente e os outros para os lados.
|
||||||
block.inverted-sorter.description = Filtra os itens como um ordenador normal, porém, os itens escolhidos sairão pelas laterais.
|
block.inverted-sorter.description = Filtra os itens como um ordenador normal, porém, os itens escolhidos sairão pelas laterais.
|
||||||
block.router.description = Aceita itens de uma direção e os divide em 3 direções igualmente. Util para espalhar materiais da fonte para multiplos alvos.
|
block.router.description = Aceita itens de uma direção e os divide em 3 direções igualmente. Util para espalhar materiais de uma fonte para multiplos alvos.
|
||||||
block.distributor.description = Um roteador avançado que espalhas os itens em 7 outras direções igualmente.
|
block.distributor.description = Um roteador avançado que espalhas os itens em 7 direções igualmente.
|
||||||
block.overflow-gate.description = Uma combinação de roteador e divisor Que apenas manda para a esquerda e Direita se a frente estiver bloqueada.
|
block.overflow-gate.description = Uma combinação de roteador e divisor que apenas manda para a esquerda e direita se a frente estiver bloqueada.
|
||||||
block.underflow-gate.description = O oposto de um portão de sobrecarga. Manda pra frente se a esquerda e a direita estiverem bloqueadas.
|
block.underflow-gate.description = O oposto de um portão de sobrecarga. Manda pra frente se a esquerda e a direita estiverem bloqueadas.
|
||||||
block.mass-driver.description = Bloco de transporte de itens supremo. Coleta itens severos e atira eles em outro mass driver de uma longa distancia.
|
block.mass-driver.description = Bloco de transporte de itens supremo. Coleta itens severos e atira eles em outro mass driver de uma longa distancia.
|
||||||
block.mechanical-pump.description = Uma bomba barata com baixa saída de líquidos, mas sem consumo de energia.
|
block.mechanical-pump.description = Uma bomba barata com baixa saída de líquidos, sem consumo de energia.
|
||||||
block.rotary-pump.description = Uma bomba avançada. Bombeia mais líquido, mas requer energia.
|
block.rotary-pump.description = Uma bomba avançada. Bombeia mais líquido, mas requer energia.
|
||||||
block.thermal-pump.description = A bomba final.
|
block.thermal-pump.description = A bomba final.
|
||||||
block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos.
|
block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos.
|
||||||
@@ -1290,38 +1291,38 @@ block.phase-conduit.description = Bloco avancado de transporte de liquido. Usa e
|
|||||||
block.power-node.description = Transmite energia para células conectadas. A célula vai receber energia ou alimentar qualquer bloco adjacente.
|
block.power-node.description = Transmite energia para células conectadas. A célula vai receber energia ou alimentar qualquer bloco adjacente.
|
||||||
block.power-node-large.description = Uma célula de energia avançada com maior alcance e mais conexões.
|
block.power-node-large.description = Uma célula de energia avançada com maior alcance e mais conexões.
|
||||||
block.surge-tower.description = Uma célula de energia com um extremo alcance mas com menos conexões disponíveis.
|
block.surge-tower.description = Uma célula de energia com um extremo alcance mas com menos conexões disponíveis.
|
||||||
block.diode.description = A energia de baterias pode fluir através desse bloco em apenas uma direção, mas apenas se o outro lado possuir menos energia armazenada.
|
block.diode.description = A energia de baterias pode fluir através desse bloco em apenas uma direção, mas sómente se o outro lado possuir menos energia armazenada.
|
||||||
block.battery.description = Armazena energia em tempos de energia excedente. Libera energia em tempos de déficit.
|
block.battery.description = Armazena energia em tempos de energia excedente. Libera energia em tempos de déficit.
|
||||||
block.battery-large.description = Guarda muito mais energia que uma bateria comum.
|
block.battery-large.description = Guarda muito mais energia que uma bateria comum.
|
||||||
block.combustion-generator.description = Gera energia queimando materiais inflamáveis, como carvão.
|
block.combustion-generator.description = Gera energia queimando materiais inflamáveis, como carvão.
|
||||||
block.thermal-generator.description = Gera energia quando colocado em lugares quentes.
|
block.thermal-generator.description = Gera energia quando colocado em lugares quentes.
|
||||||
block.steam-generator.description = Mais eficiente que o gerador à combustão, mas requer água adicional para a geração de vapor.
|
block.steam-generator.description = Mais eficiente que o gerador à combustão, mas requer água adicional para a geração de vapor.
|
||||||
block.differential-generator.description = Gera grandes quantidades de energia. Utiliza a diferença de temperatura entre o Fluido Criogênico e a Piratita.
|
block.differential-generator.description = Gera grandes quantidades de energia. Utiliza a diferença de temperatura entre o fluido friogênico e a piratita.
|
||||||
block.rtg-generator.description = Um Gerador termoelétrico de radioisótopos que não precisa de refriamento mas dá muito menos energia que o reator de tório.
|
block.rtg-generator.description = Um Gerador termoelétrico de radioisótopos que não precisa de resfriamento mas dá muito menos energia que o reator de tório.
|
||||||
block.solar-panel.description = Gera pequenas quantidades de energia do sol.
|
block.solar-panel.description = Gera pequenas quantidades de energia do sol.
|
||||||
block.solar-panel-large.description = Uma versão significantemente mais eficiente que o painel solar padrão.
|
block.solar-panel-large.description = Uma versão significantemente mais eficiente que o painel solar padrão.
|
||||||
block.thorium-reactor.description = Gera altas quantidades de energia do torio radioativo. Requer resfriamento constante. Vai explodir violentamente Se resfriamento insuficiente for fornecido.
|
block.thorium-reactor.description = Gera altas quantidades de energia pelo tório radioativo. Requer resfriamento constante. Explodirá violentamente se o resfriamento for insuficiente.
|
||||||
block.impact-reactor.description = Um gerador avançado, capaz de criar quantidades enormes de energia em seu poder total. Requer uma entrada significativa de energia ao iniciar.
|
block.impact-reactor.description = Um gerador avançado, capaz de criar quantidades enormes de energia em seu poder total. Requer uma entrada significativa de energia ao iniciar.
|
||||||
block.mechanical-drill.description = Uma broca barata. Quando colocado em blocos apropriados, retira itens em um ritmo lento e indefinitavamente.
|
block.mechanical-drill.description = Uma broca barata. Quando colocado nos blocos apropriados, retira itens em um ritmo lento, eternamente.
|
||||||
block.pneumatic-drill.description = Uma broca improvisada que é mais rápida e capaz de processar materiais mais duros usando a pressão do ar
|
block.pneumatic-drill.description = Uma broca improvisada que é mais rápida e capaz de extrair materiais mais duros usando a pressão do ar.
|
||||||
block.laser-drill.description = Possibilita a mineração ainda mais rapida usando tecnologia a laser, Mas requer poder adcionalmente torio radioativo pode ser recuperado com essa mineradora
|
block.laser-drill.description = Possibilita mineração ainda mais rapida usando tecnologia a laser, mas requer poder adicionalmente. Tório pode ser recuperado com essa mineradora.
|
||||||
block.blast-drill.description = A melhor mineradora. Requer muita energia.
|
block.blast-drill.description = A melhor mineradora. Requer muita energia.
|
||||||
block.water-extractor.description = Extrai água subterrânea. Usado em locais sem água superficial disponível.
|
block.water-extractor.description = Extrai água subterrânea. Usado em locais sem água disponível na superficie.
|
||||||
block.cultivator.description = Cultiva pequenas concentrações de esporos na atmosfera em cápsulas prontas.
|
block.cultivator.description = Cultiva pequenas concentrações de esporos na atmosfera em cápsulas prontas.
|
||||||
block.oil-extractor.description = Usa altas quantidades de energia para extrair petróleo da areia. Use quando não tiver fontes de petróleo por perto.
|
block.oil-extractor.description = Usa altas quantidades de energia para extrair petróleo da areia. Use quando não tiver fontes de petróleo por perto.
|
||||||
block.core-shard.description = A primeira iteração do núcleo. Uma vez destruído, todo o contato com a região é perdido. Não deixe isso acontecer.
|
block.core-shard.description = A primeira iteração do núcleo. Uma vez destruído, todo o contato com a região é perdido. Não deixe isso acontecer.
|
||||||
block.core-foundation.description = A segunda versão do núcleo. Mais bem armadurado. Armazena mais recursos.
|
block.core-foundation.description = A segunda versão do núcleo. Armadurado melhor. Armazena mais recursos.
|
||||||
block.core-nucleus.description = A terceira e ultima iteração do núcleo. Extremamente bem armadurada. Guarda quantidades massivas de recursos.
|
block.core-nucleus.description = A terceira e última versão do núcleo. Extremamente bem armadurada. Guarda quantidades massivas de recursos.
|
||||||
block.vault.description = Carrega uma alta quantidade de itens. Usado para criar fontes Quando não tem uma necessidade constante de materiais. Um[lightgray] Descarregador[] pode ser usado para recuperar esses itens do container.
|
block.vault.description = Carrega uma alta quantidade de itens. Usado para criar fontes quando não há uma entrada constante de materiais. Um[lightgray] descarregador[] pode ser usado para recuperar esses itens do container.
|
||||||
block.container.description = Carrega uma baixa quantidade de itens. Usado para criar fontes Quando não tem uma necessidade constante de materiais. Um[lightgray] Descarregador[] pode ser usado para recuperar esses itens do container.
|
block.container.description = Guarda uma pequena quantidade de itens. Usado para criar fontes quando não há uma entrada constante de materiais. Um[lightgray] descarregador[] pode ser usado para recuperar esses itens do container.
|
||||||
block.unloader.description = Descarrega itens de um container, Descarrega em uma esteira ou diretamente em um bloco adjacente. O tipo de item que pode ser descarregado pode ser mudado clicando no descarregador.
|
block.unloader.description = Descarrega itens de um container, Descarrega em uma esteira ou diretamente em um bloco adjacente. O tipo de item que pode ser descarregado pode ser mudado clicando no descarregador.
|
||||||
block.launch-pad.description = Lança montes de itens sem qualquer necessidade de um lançamento de núcleo.
|
block.launch-pad.description = Lança montes de itens sem qualquer necessidade de um lançamento de núcleo.
|
||||||
block.launch-pad-large.description = Uma versão melhorada da plataforma de lançamento. Guarda mais itens. Lança mais frequentemente.
|
block.launch-pad-large.description = Uma versão melhorada da plataforma de lançamento. Guarda mais itens. Lança mais frequentemente.
|
||||||
block.duo.description = Uma pequena torre de baixo custo. Útil contra unidades terrestres.
|
block.duo.description = Uma pequena torre de baixo custo. Útil contra unidades terrestres.
|
||||||
block.scatter.description = Uma torre antiaérea essencial para a defesa. Dispara vários tiros aglomerados de chumbo, sucata ou metavidro.
|
block.scatter.description = Uma torre antiaérea essencial para a defesa. Dispara vários tiros aglomerados de chumbo, sucata ou metavidro.
|
||||||
block.scorch.description = Uma torre que queima qualquer unidade que estiver próxima. Altamente efetivo se for a queima-roupa.
|
block.scorch.description = Uma torre que queima qualquer unidade que estiver próxima. Altamente efetivo se for de perto.
|
||||||
block.hail.description = Uma pequena torre de artilharia com grande alcance.
|
block.hail.description = Uma pequena torre de artilharia com grande alcance.
|
||||||
block.wave.description = Uma torre de tamanho médio. Lança jatos de líquidos nos seus inimigos. Automaticamente apaga incêndios se for abastecido com água ou crio fluido.
|
block.wave.description = Uma torre de tamanho médio. Lança jatos de líquidos nos seus inimigos. Automaticamente apaga incêndios se for abastecido com água ou fluido criogênico.
|
||||||
block.lancer.description = Uma torre laser anti-terrestre média. Carrega e dispara poderosos feixes de energia.
|
block.lancer.description = Uma torre laser anti-terrestre média. Carrega e dispara poderosos feixes de energia.
|
||||||
block.arc.description = Uma pequena torre elétrica com curto alcance. Dispara arcos de eletricidade nos seus inimigos.
|
block.arc.description = Uma pequena torre elétrica com curto alcance. Dispara arcos de eletricidade nos seus inimigos.
|
||||||
block.swarmer.description = Uma torre de mísseis de tamanho médio. Ataca ambos terrestre e aéreo disparando misseis teleguiados.
|
block.swarmer.description = Uma torre de mísseis de tamanho médio. Ataca ambos terrestre e aéreo disparando misseis teleguiados.
|
||||||
|
|||||||
@@ -41,6 +41,14 @@ be.ignore = Ignoră
|
|||||||
be.noupdates = Niciun update disponibil.
|
be.noupdates = Niciun update disponibil.
|
||||||
be.check = Verifică updateurile
|
be.check = Verifică updateurile
|
||||||
|
|
||||||
|
mods.browser = Browser de Moduri
|
||||||
|
mods.browser.selected = Mod selectat
|
||||||
|
mods.browser.add = Instalare
|
||||||
|
mods.browser.reinstall = Reinstal.
|
||||||
|
mods.github.open = Github
|
||||||
|
mods.browser.sortdate = Cele mai recente
|
||||||
|
mods.browser.sortstars = Cele mai multe stele
|
||||||
|
|
||||||
schematic = Schemă
|
schematic = Schemă
|
||||||
schematic.add = Salvează Schema...
|
schematic.add = Salvează Schema...
|
||||||
schematics = Scheme
|
schematics = Scheme
|
||||||
@@ -83,6 +91,7 @@ loadgame = Încarcă Jocul
|
|||||||
joingame = Intră în Joc
|
joingame = Intră în Joc
|
||||||
customgame = Personalizat
|
customgame = Personalizat
|
||||||
newgame = Joc Nou
|
newgame = Joc Nou
|
||||||
|
none.found = [lightgray]<nu s-a găsit nimic>
|
||||||
none = <nimic>
|
none = <nimic>
|
||||||
minimap = Minihartă
|
minimap = Minihartă
|
||||||
position = Poziție
|
position = Poziție
|
||||||
@@ -104,14 +113,16 @@ 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[].\nRaportează orice probleme apărute pe Githubul Mindustry.
|
mods.initfailed = [red]⚠[] Instanța Mindustry precedentă a eșuat la inițializare. De obicei se întâmplă din cauza unui mod care nu se acționează cum trebuie.\n\nPt a preveni un lanț de crashuri continue, [red]toate modurile au fost dezactivate.[]\n\nPoți dezactiva asta din [accent]Setări->Joc->Dezactivează Modurile în Cazul unui Crash la Pornire[].
|
||||||
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
|
||||||
mods.report = Raportează Bug
|
mods.report = Raportează Bug
|
||||||
mods.openfolder = Deschide Folder
|
mods.openfolder = Deschide Folder
|
||||||
|
mods.viewcontent = Vezi Conținut
|
||||||
mods.reload = Reîncarcă
|
mods.reload = Reîncarcă
|
||||||
mods.reloadexit = Jocul se va opri ca să reîncarce modurile.
|
mods.reloadexit = Jocul se va opri ca să reîncarce modurile.
|
||||||
|
mod.installed = [[Instalat]
|
||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Activat
|
mod.enabled = [lightgray]Activat
|
||||||
mod.disabled = [scarlet]Dezactivat
|
mod.disabled = [scarlet]Dezactivat
|
||||||
@@ -205,9 +216,11 @@ server.hidden = Ascunse
|
|||||||
trace = Urmărește Jucător
|
trace = Urmărește Jucător
|
||||||
trace.playername = Nume jucător: [accent]{0}
|
trace.playername = Nume jucător: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = ID unic: [accent]{0}
|
trace.id = ID: [accent]{0}
|
||||||
trace.mobile = Client Mobil: [accent]{0}
|
trace.mobile = Client Mobil: [accent]{0}
|
||||||
trace.modclient = Client Personalizat: [accent]{0}
|
trace.modclient = Client Personalizat: [accent]{0}
|
||||||
|
trace.times.joined = A Intrat: de [accent]{0}[] ori
|
||||||
|
trace.times.kicked = Dat Afară: de [accent]{0}[] ori
|
||||||
invalidid = ID client invalid! Raportează bugul.
|
invalidid = ID client invalid! Raportează bugul.
|
||||||
server.bans = Interziși
|
server.bans = Interziși
|
||||||
server.bans.none = Nu s-au găsit jucători intreziși!
|
server.bans.none = Nu s-au găsit jucători intreziși!
|
||||||
@@ -281,6 +294,7 @@ cancel = Anulare
|
|||||||
openlink = Deschide Linkul
|
openlink = Deschide Linkul
|
||||||
copylink = Copiază Linkul
|
copylink = Copiază Linkul
|
||||||
back = Înapoi
|
back = Înapoi
|
||||||
|
max = Maximum
|
||||||
crash.export = Exportă Crash Logs
|
crash.export = Exportă Crash Logs
|
||||||
crash.none = Nu s-au găsit crash logs.
|
crash.none = Nu s-au găsit crash logs.
|
||||||
crash.exported = Crash logs exportate.
|
crash.exported = Crash logs exportate.
|
||||||
@@ -300,6 +314,7 @@ cancelbuilding = [accent][[{0}][] pt a curăța planul
|
|||||||
selectschematic = [accent][[{0}][] pt selectare+copiere
|
selectschematic = [accent][[{0}][] pt selectare+copiere
|
||||||
pausebuilding = [accent][[{0}][] pt a face o pauză de la construit
|
pausebuilding = [accent][[{0}][] pt a face o pauză de la construit
|
||||||
resumebuilding = [scarlet][[{0}][] pt a continua construitul
|
resumebuilding = [scarlet][[{0}][] pt a continua construitul
|
||||||
|
enablebuilding = [scarlet][[{0}][] pt a construi
|
||||||
showui = Interfață ascunsă.\nApasă [accent][[{0}][] pt a vedea interfața.
|
showui = Interfață ascunsă.\nApasă [accent][[{0}][] pt a vedea interfața.
|
||||||
wave = [accent]Valul {0}
|
wave = [accent]Valul {0}
|
||||||
wave.cap = [accent]Valul {0}/{1}
|
wave.cap = [accent]Valul {0}/{1}
|
||||||
@@ -355,7 +370,6 @@ editor.center = Centrează
|
|||||||
workshop = Workshop
|
workshop = Workshop
|
||||||
waves.title = Valuri
|
waves.title = Valuri
|
||||||
waves.remove = Elimină
|
waves.remove = Elimină
|
||||||
waves.never = <niciodată>
|
|
||||||
waves.every = la fiecare
|
waves.every = la fiecare
|
||||||
waves.waves = val(uri)
|
waves.waves = val(uri)
|
||||||
waves.perspawn = per apariție
|
waves.perspawn = per apariție
|
||||||
@@ -386,7 +400,7 @@ editor.errorload = Eroare la încărcarea fișierului.
|
|||||||
memory = Mem: {0}mb
|
memory = Mem: {0}mb
|
||||||
memory2 = Mem:\n {0}mb +\n {1}mb
|
memory2 = Mem:\n {0}mb +\n {1}mb
|
||||||
editor.errorsave = Eroare la salvarea fișierului.
|
editor.errorsave = Eroare la salvarea fișierului.
|
||||||
editor.errorimage = Aceasta este o imagine, nu o hartă.\n\nDacă vrei să imporți o hartă din versiunile 3.5/build 40, folosește butonul 'Importă Hartă Veche' din editor.
|
editor.errorimage = Aceasta este o imagine, nu o hartă.
|
||||||
editor.errorlegacy = Hartă aceasta este prea veche, și folosește un format învechit care nu mai este suportat.
|
editor.errorlegacy = Hartă aceasta este prea veche, și folosește un format învechit care nu mai este suportat.
|
||||||
editor.errornot = Acesta nu este un fișier cu o hartă.
|
editor.errornot = Acesta nu este un fișier cu o hartă.
|
||||||
editor.errorheader = Acest fișier de hartă este invalid sau corupf.
|
editor.errorheader = Acest fișier de hartă este invalid sau corupf.
|
||||||
@@ -592,17 +606,17 @@ sector.groundZero.description = Locația optimă pt a începe încă odată. Ris
|
|||||||
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 Podișurile Saline. Puține resurse pot fi găsite în această locație.\n\nInamicul a ridicat un complex de depozitare aici. Distruge-le nucleul. Nu lăsa nimic în urmă.
|
sector.saltFlats.description = La periferia deșertului stau Podișurile Saline. Puține resurse pot fi găsite în această locație.\n\nInamicul a ridicat un complex de depozitare aici. Distruge-le nucleul. Nu lăsa nimic în urmă.
|
||||||
sector.craters.description = Apa s-a acumulat în acest crater, rămășiță a vechilor războaie. Cucerește din nou zona. Adună nisip. Toarnă-l în metasticlă. Pompează apă pt a răci armele și burghiele.
|
sector.craters.description = Apa s-a acumulat în acest crater, rămășiță a vechilor războaie. Cucerește din nou zona. Adună nisip. Toarnă-l în metasticlă. Pompează apă pt a răci armele și burghiele.
|
||||||
sector.ruinousShores.description = După deșerturi vine țărmul. Odată, locația aceasta a avut un sistem de apărare de coastă. N-a rămas mult din el. Doar structurile de apărare cele mai simple au rămas în picioare, restul fiind redus la fier vechi.\nContinuă expansiunea înspre exterior. Redescoperă tehnologia.
|
sector.ruinousShores.description = După deșerturi vine țărmul. Odată, locația aceasta avea un sistem de apărare de coastă. N-a rămas mult din el. Doar structurile de apărare cele mai simple au rămas în picioare, restul fiind redus la fier vechi.\nContinuă expansiunea înspre exterior. Redescoperă tehnologia.
|
||||||
sector.stainedMountains.description = Mai spre mijlocul continentului sunt munții, încă neatinși de spori.\nExtrage abundentele resurse de titan din zonă. Învață cum să-l folosești.\n\nPrezența inamicului e mai mare aici. Nu le da timp să-și trimită cele mai puternice unități.
|
sector.stainedMountains.description = Mai spre mijlocul continentului sunt munții, încă neatinși de spori.\nExtrage abundentele resurse de titan din zonă. Învață cum să-l folosești.\n\nPrezența inamicului e mai mare aici. Nu le da timp să trimită cele mai puternice unități.
|
||||||
sector.overgrowth.description = Această zonă este plină de buruieni, mai aproape de sursa sporilor.\nInamicul și-a stabilit un avanpost aici. Construiește unități Mace. Distruge-l.
|
sector.overgrowth.description = Această zonă este plină de buruieni, mai aproape de sursa sporilor.\nInamicul și-a stabilit un avanpost aici. Construiește unități Mace. Distruge-l.
|
||||||
sector.tarFields.description = O zonă aflată la periferia unui complex de producție petrolieră, între munți și deșert. Una din puținele zone cu resurse utilizabile de țiței.\nDeși abandonată, în apropierea zonei se află de forțe inamice periculoase. Nu le subestima.\n\n[lightgray]Cercetează tehnologie de procesare a petrolului pe cât posibil.
|
sector.tarFields.description = O zonă aflată la periferia unui complex de producție petrolieră, între munți și deșert. Una din puținele zone cu resurse utilizabile de țiței.\nDeși abandonată, în apropierea zonei se află forțe inamice periculoase. Nu le subestima.\n\n[lightgray]Cercetează tehnologia de procesare a petrolului pe cât posibil.
|
||||||
sector.desolateRift.description = O zonă extrem de periculoasă. Multe resurse, dar puțin spațiu. Mare risc de distrugere. Pleacă curând, cât mai curând. Nu te lăsa păcălit de pauzele mari dintre atacurile inamice.
|
sector.desolateRift.description = O zonă extrem de periculoasă. Multe resurse, dar puțin spațiu. Mare risc de distrugere. Pleacă curând, cât mai curând. Nu te lăsa păcălit de pauzele mari dintre atacurile inamice.
|
||||||
sector.nuclearComplex.description = O fostă facilitate pt producerea și procesarea de toriu, redusă la ruine.\n[lightgray]Cercetează toriul și multele sale utilizări.\n\nInamicul e prezent aici în mari numere, căutând constant atacatori.
|
sector.nuclearComplex.description = O fostă facilitate pt producerea și procesarea de toriu, redusă la ruine.\n[lightgray]Cercetează toriul și multele sale utilizări.\n\nInamicul e prezent aici în mari numere, căutând constant atacatori.
|
||||||
sector.fungalPass.description = O zonă de tranziție dintre munții înalți și zonele joase, pline cu spori. O mică bază de recunoaștere a inamicului este localizată aici.\nDistruge-o.\nFolosește unități Dagger și Crawler. Distruge cele 2 nuclee.
|
sector.fungalPass.description = O zonă de tranziție dintre munții înalți și zonele joase, pline cu spori. O mică bază de recunoaștere a inamicului este localizată aici.\nDistruge-o.\nFolosește unități Dagger și Crawler. Distruge cele 2 nuclee.
|
||||||
sector.biomassFacility.description = Originea sporilor. Aceasta este facilitatea în care au fost cercetați și produși inițial.\nCercetează tehnologia ce poate fi găsită aici. Cultivă spori pt producția de combustibil și mase plastice.\n\n[lightgray]Când facilitatea a decăzut, sporii au fost eliberați. Nimic din din ecosistemul local nu a putut concura cu un organism atât de invaziv.
|
sector.biomassFacility.description = Originea sporilor. Aceasta este facilitatea în care au fost cercetați și produși inițial.\nCercetează tehnologia ce poate fi găsită aici. Cultivă spori pt producția de combustibil și mase plastice.\n\n[lightgray]Când facilitatea a decăzut, sporii au fost eliberați. Nimic din din ecosistemul local nu a putut concura cu un organism atât de invaziv.
|
||||||
sector.windsweptIslands.description = Acest arhipelag izolat se află mai departe, după țărm. Datele arată că odată aveau structuri care produceau [accent]Plastaniu[].\n\nApără-te de unitățile navale ale inamicului. Construiește o bază pe insule. Cercetează fabricile necesare.
|
sector.windsweptIslands.description = Acest arhipelag izolat se află mai departe, după țărm. Datele arată că odată aveau structuri care produceau [accent]Plastaniu[].\n\nApără-te de unitățile navale ale inamicului. Construiește o bază pe insule. Cercetează fabricile necesare.
|
||||||
sector.extractionOutpost.description = Un avanpost izolat, construit de inamic cu scopul de a lansa resurse către alte sectoare.\n\nTehnologia de transport intersectorial este esențială pt cuceririle ce urmează. Distruge baza. Cercetează platformele lor de lansare.
|
sector.extractionOutpost.description = Un avanpost izolat, construit de inamic cu scopul de a lansa resurse către alte sectoare.\n\nTehnologia de transport intersectorial este esențială pt cuceririle ce urmează. Distruge baza. Cercetează platformele lor de lansare.
|
||||||
sector.impact0078.description = Aici se află rămășițele primei nave de transport interstelar care a intrat în acest sistem stelar.\n\nSalvează cât mai mult posibil din epavă. Cercetează orice tehnologie intactă.
|
sector.impact0078.description = Aici se află rămășițele primei nave de transport interstelar care a intrat în acest sistem stelar.\n\nSalvează cât de mult posibil din epavă. Cercetează orice tehnologie intactă.
|
||||||
sector.planetaryTerminal.description = Ținta finală.\n\nAceastă bază de coastă conține o structură capabilă să lanseze nuclee către alte planete locale. Este extrem de bine păzită.\n\nProdu unități navale. Elimină inamicul cât de rapid se poate. Cercetează structura de lansare.
|
sector.planetaryTerminal.description = Ținta finală.\n\nAceastă bază de coastă conține o structură capabilă să lanseze nuclee către alte planete locale. Este extrem de bine păzită.\n\nProdu unități navale. Elimină inamicul cât de rapid se poate. Cercetează structura de lansare.
|
||||||
|
|
||||||
settings.language = Limbă
|
settings.language = Limbă
|
||||||
@@ -672,6 +686,7 @@ stat.drillspeed = Viteză Burghiu (Bază)
|
|||||||
stat.boosteffect = Efect de Îmbunătățire
|
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.armor = Armură
|
||||||
stat.buildtime = Timp Construcție
|
stat.buildtime = Timp Construcție
|
||||||
stat.maxconsecutive = Maxim Consecutive
|
stat.maxconsecutive = Maxim Consecutive
|
||||||
stat.buildcost = Cost Construcție
|
stat.buildcost = Cost Construcție
|
||||||
@@ -690,6 +705,7 @@ stat.radioactivity = Radioactivitate
|
|||||||
stat.heatcapacity = Capacitate de Căldură
|
stat.heatcapacity = Capacitate de Căldură
|
||||||
stat.viscosity = Vâscozitate
|
stat.viscosity = Vâscozitate
|
||||||
stat.temperature = Temperatură
|
stat.temperature = Temperatură
|
||||||
|
stat.charge = Sarcină Electrică
|
||||||
stat.speed = Viteză
|
stat.speed = Viteză
|
||||||
stat.buildspeed = Viteză Construcție
|
stat.buildspeed = Viteză Construcție
|
||||||
stat.minespeed = Viteză Minare
|
stat.minespeed = Viteză Minare
|
||||||
@@ -714,6 +730,7 @@ bar.corereq = Plasare pe Nucleu Necesară
|
|||||||
bar.drillspeed = Viteză Minare: {0}/s
|
bar.drillspeed = Viteză Minare: {0}/s
|
||||||
bar.pumpspeed = Viteză Pompare: {0}/s
|
bar.pumpspeed = Viteză Pompare: {0}/s
|
||||||
bar.efficiency = Eficiență: {0}%
|
bar.efficiency = Eficiență: {0}%
|
||||||
|
bar.boost = Efect Grăbire: {0}%
|
||||||
bar.powerbalance = Electricitate: {0}/s
|
bar.powerbalance = Electricitate: {0}/s
|
||||||
bar.powerstored = Stocată: {0}/{1}
|
bar.powerstored = Stocată: {0}/{1}
|
||||||
bar.poweramount = Electricitate: {0}
|
bar.poweramount = Electricitate: {0}
|
||||||
@@ -781,9 +798,12 @@ setting.shadows.name = Umbre
|
|||||||
setting.blockreplace.name = Sugestii Plasare Automats
|
setting.blockreplace.name = Sugestii Plasare Automats
|
||||||
setting.linear.name = Filtrare Liniară
|
setting.linear.name = Filtrare Liniară
|
||||||
setting.hints.name = Indicii
|
setting.hints.name = Indicii
|
||||||
|
setting.logichints.name = Indicii Procesoare Logice
|
||||||
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.backgroundpause.name = Pune Pauză în Fundal
|
||||||
|
setting.doubletapmine.name = Dublu-Click pt a Mina
|
||||||
|
setting.modcrashdisable.name = Dezactivează Modurile în Cazul unui Crash la Pornire
|
||||||
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)[]
|
||||||
@@ -912,6 +932,7 @@ keybind.toggle_menus.name = Pornește/Oprește Meniuri
|
|||||||
keybind.chat_history_prev.name = Istoric Chat Înapoi
|
keybind.chat_history_prev.name = Istoric Chat Înapoi
|
||||||
keybind.chat_history_next.name = Istoric Chat Mai Departe
|
keybind.chat_history_next.name = Istoric Chat Mai Departe
|
||||||
keybind.chat_scroll.name = Scroll Chat
|
keybind.chat_scroll.name = Scroll Chat
|
||||||
|
keybind.chat_mode.name = Schimbă Modul Chatului
|
||||||
keybind.drop_unit.name = Lasă Unitatea
|
keybind.drop_unit.name = Lasă Unitatea
|
||||||
keybind.zoom_minimap.name = Zoom Minihartă
|
keybind.zoom_minimap.name = Zoom Minihartă
|
||||||
mode.help.title = Descrierea modurilor
|
mode.help.title = Descrierea modurilor
|
||||||
@@ -928,6 +949,7 @@ mode.custom = Reguli Personalizate
|
|||||||
|
|
||||||
rules.infiniteresources = Resurse Infinite
|
rules.infiniteresources = Resurse Infinite
|
||||||
rules.reactorexplosions = Reactoarele Explodează
|
rules.reactorexplosions = Reactoarele Explodează
|
||||||
|
rules.coreincinerates = Nucleul Incinerează Resursele în Plus
|
||||||
rules.schematic = Se Pot Folosi Scheme
|
rules.schematic = Se Pot Folosi Scheme
|
||||||
rules.wavetimer = Valuri pe Timp
|
rules.wavetimer = Valuri pe Timp
|
||||||
rules.waves = Valuri
|
rules.waves = Valuri
|
||||||
@@ -939,6 +961,8 @@ rules.blockdamagemultiplier = Multiplicatorul Deteriorării Blocurilor
|
|||||||
rules.unitbuildspeedmultiplier = Multiplicatorul Vitezei de Producere a Unităților
|
rules.unitbuildspeedmultiplier = Multiplicatorul Vitezei de Producere a Unităților
|
||||||
rules.unithealthmultiplier = Multiplicatorul Vieții Unităților
|
rules.unithealthmultiplier = Multiplicatorul Vieții Unităților
|
||||||
rules.unitdamagemultiplier = Multiplicatorul Deteriorării Unităților
|
rules.unitdamagemultiplier = Multiplicatorul Deteriorării Unităților
|
||||||
|
rules.unitcapvariable = Nucleele Contribuie la Limita Unităților
|
||||||
|
rules.unitcap = Limita de Bază a Unităților
|
||||||
rules.enemycorebuildradius = Interzisă Construirea în Jurul Nucleului Inamic:[lightgray] (pătrate)
|
rules.enemycorebuildradius = Interzisă Construirea în Jurul Nucleului Inamic:[lightgray] (pătrate)
|
||||||
rules.wavespacing = Spațiul Dintre Valuri:[lightgray] (sec)
|
rules.wavespacing = Spațiul Dintre Valuri:[lightgray] (sec)
|
||||||
rules.buildcostmultiplier = Multiplicatorul Costului Construcției
|
rules.buildcostmultiplier = Multiplicatorul Costului Construcției
|
||||||
@@ -1019,7 +1043,7 @@ unit.omura.name = Omura
|
|||||||
unit.alpha.name = Alpha
|
unit.alpha.name = Alpha
|
||||||
unit.beta.name = Beta
|
unit.beta.name = Beta
|
||||||
unit.gamma.name = Gamma
|
unit.gamma.name = Gamma
|
||||||
unit.scepter.name = Septer
|
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 = Corvus
|
||||||
@@ -1129,10 +1153,6 @@ block.armored-conveyor.name = Bandă Armată
|
|||||||
block.junction.name = Intersecție
|
block.junction.name = Intersecție
|
||||||
block.router.name = Router
|
block.router.name = Router
|
||||||
block.distributor.name = Distributor
|
block.distributor.name = Distributor
|
||||||
#experimental, pot fi șterse în viitor
|
|
||||||
block.block-forge.name = Forjă de Blocuri
|
|
||||||
block.block-loader.name = Încărcător de Blocuri
|
|
||||||
block.block-unloader.name = Descărcător de Blocuri
|
|
||||||
block.sorter.name = Sortator
|
block.sorter.name = Sortator
|
||||||
block.inverted-sorter.name = Sortator Invers
|
block.inverted-sorter.name = Sortator Invers
|
||||||
block.message.name = Mesaj
|
block.message.name = Mesaj
|
||||||
@@ -1212,7 +1232,7 @@ block.overdrive-projector.name = Proiector de Suprasolicitare
|
|||||||
block.force-projector.name = Proiector de Forță
|
block.force-projector.name = Proiector de Forță
|
||||||
block.arc.name = Arc
|
block.arc.name = Arc
|
||||||
block.rtg-generator.name = Generator RTG
|
block.rtg-generator.name = Generator RTG
|
||||||
block.spectre.name = Specter
|
block.spectre.name = Spectre
|
||||||
block.meltdown.name = Meltdown
|
block.meltdown.name = Meltdown
|
||||||
block.foreshadow.name = Foreshadow
|
block.foreshadow.name = Foreshadow
|
||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
@@ -1233,6 +1253,10 @@ block.disassembler.name = Dezasamblator
|
|||||||
block.silicon-crucible.name = Creuzet de Silicon
|
block.silicon-crucible.name = Creuzet de Silicon
|
||||||
block.overdrive-dome.name = Dom de Suprasolicitare
|
block.overdrive-dome.name = Dom de Suprasolicitare
|
||||||
block.interplanetary-accelerator.name = Accelerator Interplanetar
|
block.interplanetary-accelerator.name = Accelerator Interplanetar
|
||||||
|
#experimental, pot fi șterse în viitor
|
||||||
|
block.block-forge.name = Forjă de Blocuri
|
||||||
|
block.block-loader.name = Încărcător de Blocuri
|
||||||
|
block.block-unloader.name = Descărcător de Blocuri
|
||||||
|
|
||||||
block.switch.name = Întrerupător
|
block.switch.name = Întrerupător
|
||||||
block.micro-processor.name = Microprocesor
|
block.micro-processor.name = Microprocesor
|
||||||
@@ -1374,8 +1398,8 @@ block.inverted-sorter.description = Similar sortatorului standard, dar materialu
|
|||||||
block.router.description = Distribuie materialele primite în alte 3 direcții în mod egal.
|
block.router.description = Distribuie materialele primite în alte 3 direcții în mod egal.
|
||||||
block.router.details = Un rău necesar. Nu folosi niciodată pt a introduce materiale în blocuri, căci vor fi blocate de produșii blocurilor.
|
block.router.details = Un rău necesar. Nu folosi niciodată pt a introduce materiale în blocuri, căci vor fi blocate de produșii blocurilor.
|
||||||
block.distributor.description = Distribuie materialele primite în alte 7 direcții în mod egal.
|
block.distributor.description = Distribuie materialele primite în alte 7 direcții în mod egal.
|
||||||
block.overflow-gate.description = Transportă materialele doar la stânga și dreapta dacă drumul din față este blocat. Nu poate fi folosită lângă alte porți.
|
block.overflow-gate.description = Transportă materialele doar la stânga și dreapta dacă drumul din față este blocat.
|
||||||
block.underflow-gate.description = Opusul porții de revărsare. Transportă materialele în față dacă benzile din stânga și dreapta sunt blocate. Nu poate fi folosită lângă alte porți.
|
block.underflow-gate.description = Opusul porții de revărsare. Transportă materialele în față dacă benzile din stânga și dreapta sunt blocate.
|
||||||
block.mass-driver.description = Dispozitiv folosit pt transportul materialelor pe distanțe mari. Adună mai multe materiale și apoi le lansează până la un alt distributor în masă pe o rază mare.
|
block.mass-driver.description = Dispozitiv folosit pt transportul materialelor pe distanțe mari. Adună mai multe materiale și apoi le lansează până la un alt distributor în masă pe o rază mare.
|
||||||
block.mechanical-pump.description = Pompează lichide din mediul înconjurător. Nu necesită electricitate.
|
block.mechanical-pump.description = Pompează lichide din mediul înconjurător. Nu necesită electricitate.
|
||||||
block.rotary-pump.description = Pompează lichide din mediul înconjurător. Necesită electricitate.
|
block.rotary-pump.description = Pompează lichide din mediul înconjurător. Necesită electricitate.
|
||||||
@@ -1435,6 +1459,7 @@ block.ripple.description = Lovește cu capsule către inamici pe distanțe mari.
|
|||||||
block.cyclone.description = Trage cu grămezi explozive de material către unitățile inamice din apropiere.
|
block.cyclone.description = Trage cu grămezi explozive de material către unitățile inamice din apropiere.
|
||||||
block.spectre.description = Trage cu gloanțe mari care penetrează scuturile inamicilor din apropiere.
|
block.spectre.description = Trage cu gloanțe mari care penetrează scuturile inamicilor din apropiere.
|
||||||
block.meltdown.description = Se încarcă și trage cu un laser continuu la inamicii din apropiere. Necesită răcitor pt a opera.
|
block.meltdown.description = Se încarcă și trage cu un laser continuu la inamicii din apropiere. Necesită răcitor pt a opera.
|
||||||
|
block.foreshadow.description = Trage către o țintă cu un glonț imens pe distanțe lungi.
|
||||||
block.repair-point.description = Repară încontinuu cea mai deteriorată unitate din vecinătate.
|
block.repair-point.description = Repară încontinuu cea mai deteriorată unitate din vecinătate.
|
||||||
block.segment.description = Deteriorează și distruge proiectilele din apropiere. Laserele nu sunt afectate.
|
block.segment.description = Deteriorează și distruge proiectilele din apropiere. Laserele nu sunt afectate.
|
||||||
block.parallax.description = Trage cu o rază tractoare care atrage aeronavele inamice, deteriorându-le.
|
block.parallax.description = Trage cu o rază tractoare care atrage aeronavele inamice, deteriorându-le.
|
||||||
@@ -1448,10 +1473,10 @@ block.command-center.description = Controlează comportamentul unităților mili
|
|||||||
block.ground-factory.description = Produce unități de artilerie. Unitățile produse pot fi folosite direct sau mutate în reconstructoare pt îmbunătățiri.
|
block.ground-factory.description = Produce unități de artilerie. Unitățile produse pot fi folosite direct sau mutate în reconstructoare pt îmbunătățiri.
|
||||||
block.air-factory.description = Produce unități aeriene. Unitățile produse pot fi folosite direct sau mutate în reconstructoare pt îmbunătățiri.
|
block.air-factory.description = Produce unități aeriene. Unitățile produse pot fi folosite direct sau mutate în reconstructoare pt îmbunătățiri.
|
||||||
block.naval-factory.description = Produce unități navale. Unitățile produse pot fi folosite direct sau mutate în reconstructoare pt îmbunătățiri.
|
block.naval-factory.description = Produce unități navale. Unitățile produse pot fi folosite direct sau mutate în reconstructoare pt îmbunătățiri.
|
||||||
block.additive-reconstructor.description = Îmbunătățește unitățile primite, tranformându-le în unități de nivel doi.
|
block.additive-reconstructor.description = Îmbunătățește unitățile primite, transformându-le în unități de nivel doi.
|
||||||
block.multiplicative-reconstructor.description = Îmbunătățește unitățile primite, tranformându-le în unități de nivel trei.
|
block.multiplicative-reconstructor.description = Îmbunătățește unitățile primite, transformându-le în unități de nivel trei.
|
||||||
block.exponential-reconstructor.description = Îmbunătățește unitățile primite, tranformându-le în unități de nivel patru.
|
block.exponential-reconstructor.description = Îmbunătățește unitățile primite, transformându-le în unități de nivel patru.
|
||||||
block.tetrative-reconstructor.description =Îmbunătățește unitățile primite, tranformându-le în unități de ltimă generație: nivelul cinci.
|
block.tetrative-reconstructor.description = Îmbunătățește unitățile primite, transformându-le în unități de ltimă generație: nivelul cinci.
|
||||||
block.switch.description = Un întrerupător. Poate fi pornit sau oprit. Statusul său poate fi citit și controlat de procesoarele logice.
|
block.switch.description = Un întrerupător. Poate fi pornit sau oprit. Statusul său poate fi citit și controlat de procesoarele logice.
|
||||||
block.micro-processor.description = Rulează într-o buclă continuă o secvență de instrucțiuni logice. Poate fi folosit pt a controla unități și diverse clădiri.
|
block.micro-processor.description = Rulează într-o buclă continuă o secvență de instrucțiuni logice. Poate fi folosit pt a controla unități și diverse clădiri.
|
||||||
block.logic-processor.description = Rulează într-o buclă continuă o secvență de instrucțiuni logice. Poate fi folosit pt a controla unități și diverse clădiri. Mai rapid decât microprocesorul.
|
block.logic-processor.description = Rulează într-o buclă continuă o secvență de instrucțiuni logice. Poate fi folosit pt a controla unități și diverse clădiri. Mai rapid decât microprocesorul.
|
||||||
@@ -1495,3 +1520,146 @@ unit.omura.description = Trage cu un railgun cu gloanțe care penetrează scutur
|
|||||||
unit.alpha.description = Apără nucleul Shard de inamici. Construiește structuri.
|
unit.alpha.description = Apără nucleul Shard de inamici. Construiește structuri.
|
||||||
unit.beta.description = Apără nucleul Foundation de inamici. Construiește structuri.
|
unit.beta.description = Apără nucleul Foundation de inamici. Construiește structuri.
|
||||||
unit.gamma.description = Apără nucleul Core de inamici. Construiește structuri.
|
unit.gamma.description = Apără nucleul Core de inamici. Construiește structuri.
|
||||||
|
|
||||||
|
lst.read = Citește un număr dintr-o celulă de memorie conectată.
|
||||||
|
lst.write = Scrie un număr într-o celulă de memorie conectată.
|
||||||
|
lst.print = Adaugă text în bufferul de tipărire.\nNu tipărește decât când se execută [accent]Print Flush[].
|
||||||
|
lst.draw = Adaugă o operație în bufferul de desenare.\nNu afișează decât când se execută [accent]Draw Flush[].
|
||||||
|
lst.drawflush = Afișează pe un monitor instrucțiunile [accent]Draw[] aflate în așteptare.
|
||||||
|
lst.printflush = Tipărește într-un bloc Mesaj instrucțiunile [accent]Print[] aflate în așteptare.
|
||||||
|
lst.getlink = Obține o conexiune a procesorului după index. Începe de la 0.
|
||||||
|
lst.control = Controlează o clădire.
|
||||||
|
lst.radar = Localizează unitățile aflate în jurul unei clădiri. Are o anumită rază de acțiune.
|
||||||
|
lst.sensor = Obține date de la o clădire sau unitate.
|
||||||
|
lst.set = Setează o variabilă.
|
||||||
|
lst.operation = Efectuează o operație pe 1-2 variabile.
|
||||||
|
lst.end = Sari la începutul listei de instrucțiuni.
|
||||||
|
lst.jump = Dacă condiția este adevărată, mergi la o altă instrucțiune.
|
||||||
|
lst.unitbind = Controlează următoarea unitate de tipul selectat și reține-o în [accent]@unit[].
|
||||||
|
lst.unitcontrol = Controlează unitatea controlată de procesor.
|
||||||
|
lst.unitradar = Localizează unitățile din jurul unității controlate de procesor.
|
||||||
|
lst.unitlocate = Localizează o poziție/clădire specifică oriunde pe hartă.\nNecesită o unitate controlată de procesor.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Nu ai voie să construiești cu unitățile folosind procesoare.
|
||||||
|
|
||||||
|
lenum.type = Tipul clădirii/unității.\nde ex.: pt orice Router, va returna [accent]@router[].\nNu e un șir de caractere.
|
||||||
|
lenum.shoot = Lovește către o locație.
|
||||||
|
lenum.shootp = Lovește către o unitate/clădire. Anticipează viteza țintei și a proiectilului.
|
||||||
|
lenum.configure = Configurația clădirii, de ex. materialul selectat pt Sortator.
|
||||||
|
lenum.enabled = Specifică dacă clădirea este pornită.
|
||||||
|
|
||||||
|
laccess.color = Culoarea iluminatorului.
|
||||||
|
laccess.controller = Controlorul unității. Dacă e controlată de procesor, returnează procesorul.\nDacă e într-o formație, returnează liderul.\nAltfel, returnează unitatea însăși.
|
||||||
|
laccess.dead = Specifică dacă o unitate sau clădire a murit/nu mai e validă.
|
||||||
|
laccess.controlled = Returnează:\n[accent]@ctrlProcessor[] dacă controlorul unității e procesor\n[accent]@ctrlPlayer[] dacă controlorul unității/clădirii e jucător\n[accent]@ctrlFormation[] dacă unitatea e într-o formație\nAltfel dă 0.
|
||||||
|
laccess.commanded = [red]Învechit. Se va șterge![]\nFolosește [accent]controlled[].
|
||||||
|
|
||||||
|
graphicstype.clear = Umple monitorul cu o culoare.
|
||||||
|
graphicstype.color = Setează culoarea pt următoarele instrucțiuni Draw.
|
||||||
|
graphicstype.stroke = Setează grosimea liniei.
|
||||||
|
graphicstype.line = Desenează un segment de linie.
|
||||||
|
graphicstype.rect = Desenează un dreptunghi.
|
||||||
|
graphicstype.linerect = Desenează conturul unui dreptunghi.
|
||||||
|
graphicstype.poly = Desenează un poligon regulat.
|
||||||
|
graphicstype.linepoly = Desenează conturul unui poligon regulat.
|
||||||
|
graphicstype.triangle = Desenează un triunghi.
|
||||||
|
graphicstype.image = Desenează imaginea unui obiect din joc.\nde ex.: [accent]@router[] sau [accent]@dagger[].
|
||||||
|
|
||||||
|
lenum.always = Mereu adevărat.
|
||||||
|
lenum.idiv = Împărțirea naturală a numerelor (int).
|
||||||
|
lenum.div = Împărțirea.\nReturnează [accent]null[] dacă împarți la 0.
|
||||||
|
lenum.mod = Modulo (restul împărțirii).
|
||||||
|
lenum.equal = Egal. Convertește tipurile variabilelor.\nObiectele nenule comparate cu numere devin 1, cele nule devin 0.
|
||||||
|
lenum.notequal = Nu e egal. Convertește tipurile variabilelor.
|
||||||
|
lenum.strictequal = Egalitate strictă. Nu convertește tipurile variabilelor.\nPoate fi folosit pt a verifica dacă ceva este [accent]null[].
|
||||||
|
lenum.shl = Shift left pe biți.
|
||||||
|
lenum.shr = Shift right pe biți.
|
||||||
|
lenum.or = OR/SAU. Ține cont de biți.
|
||||||
|
lenum.land = Logical AND/ȘI logic. Nu ține cont de biți.
|
||||||
|
lenum.and = AND/ȘI. Ține cont de biți.
|
||||||
|
lenum.not = NOT. Inversează biții.
|
||||||
|
lenum.xor = XOR/disjuncție exclusivă. Ține cont de biți.
|
||||||
|
|
||||||
|
lenum.min = Minimul a două numere.
|
||||||
|
lenum.max = Maximul a două numere.
|
||||||
|
lenum.angle = Unghiul unui vector în grade.
|
||||||
|
lenum.len = Lungimea unui vector.
|
||||||
|
lenum.sin = Sinus în grade.
|
||||||
|
lenum.cos = Cosinus în grade.
|
||||||
|
lenum.tan = Tangentă în grade.
|
||||||
|
#cea de mai jos nu-i o greșeală, caută pe net notarea intervalelor în matematică
|
||||||
|
lenum.rand = Număr natural aleatoriu în intervalul [0, val).
|
||||||
|
lenum.log = Logaritm natural (ln).
|
||||||
|
lenum.log10 = Logaritm în baza 10.
|
||||||
|
lenum.noise = 2D simplex noise.
|
||||||
|
lenum.abs = Valoarea absolută.
|
||||||
|
lenum.sqrt = Radical/rădăcina pătrată.
|
||||||
|
|
||||||
|
lenum.any = Orice unitate.
|
||||||
|
lenum.ally = Unitate aliată.
|
||||||
|
lenum.attacker = Unitate cu armă.
|
||||||
|
lenum.enemy = Unitate inamică.
|
||||||
|
lenum.boss = Unitate gardian.
|
||||||
|
lenum.flying = Unitate care zboară.
|
||||||
|
lenum.ground = Unitate de artilerie.
|
||||||
|
lenum.player = Unitate controlată de un jucător.
|
||||||
|
|
||||||
|
lenum.ore = Depozit de minereu.
|
||||||
|
lenum.damaged = Clădire aliată deteriorată.
|
||||||
|
lenum.spawn = Punct de lansare inamic.\nPoate fi un nucleu sau o poziție.
|
||||||
|
lenum.building = Clădire dintr-un grup specific.
|
||||||
|
|
||||||
|
lenum.core = Orice nucleu.
|
||||||
|
lenum.storage = Clădire de stocare, de ex. Containerul.
|
||||||
|
lenum.generator = Clădiri care generează electricitate.
|
||||||
|
lenum.factory = Clădiri care transformă resurse.
|
||||||
|
lenum.repair = Puncte de Reparare.
|
||||||
|
lenum.rally = Centre de Comandă.
|
||||||
|
lenum.battery = Orice baterie.
|
||||||
|
lenum.resupply = Puncte de Realimentare.\nRelevant doar când [accent]"Unitățile Necesită Muniție"[] este activată.
|
||||||
|
lenum.reactor = Reactor de Toriu/Impact.
|
||||||
|
lenum.turret = Orice armă.
|
||||||
|
|
||||||
|
sensor.in = Clădirea/unitatea care trebuie detectată.
|
||||||
|
|
||||||
|
radar.from = Clădirea de la care detectăm.\nRaza senzorului e limitată de raza de costrucție.
|
||||||
|
radar.target = Filtru pt unitățile care trebuie detectate.
|
||||||
|
radar.and = Adaugă filtre.
|
||||||
|
radar.order = Ordinea de sortare. 0 pt a inversa ordinea.
|
||||||
|
radar.sort = Modul cum sortăm rezultatele.
|
||||||
|
radar.output = Variabila în care se va scrie unitatea detectată.
|
||||||
|
|
||||||
|
unitradar.target = Filtru pt unitățile care trebuie detectate.
|
||||||
|
unitradar.and = Adaugă filtre.
|
||||||
|
unitradar.order = Ordinea de sortare. 0 pt a inversa ordinea.
|
||||||
|
unitradar.sort = Modul cum sortăm rezultatele.
|
||||||
|
unitradar.output = Variabila în care se reține unitatea detectată.
|
||||||
|
|
||||||
|
control.of = Clădirea de controlat.
|
||||||
|
control.unit = Unitatea/clădirea către care se țintește.
|
||||||
|
control.shoot = Specifică dacă armele trag.
|
||||||
|
|
||||||
|
unitlocate.enemy = Specifică dacă se detectează clădirile inamice.
|
||||||
|
unitlocate.found = Specifică dacă obiectul a fost găsit.
|
||||||
|
unitlocate.building = Clădirea detectată.
|
||||||
|
unitlocate.outx = Coordonata X a obiectului detectat.
|
||||||
|
unitlocate.outy = Coordonata Y a obiectului detectat.
|
||||||
|
unitlocate.group = Grupul clădirilor de detectat.
|
||||||
|
|
||||||
|
lenum.idle = Nu mișca, dar continuă să construiești/minezi.\nModul prestabilit.
|
||||||
|
lenum.stop = Oprește acțiunea curentă. Nu mișca/mina/construi.
|
||||||
|
lenum.move = Mergi la această poziție.
|
||||||
|
lenum.approach = Apropie-te la o anumită distanță de poziție.
|
||||||
|
lenum.pathfind = Găsește ruta către punctul de lansare inamic. Poate fi un nucleu.
|
||||||
|
lenum.target = Lovește către o poziție.
|
||||||
|
lenum.targetp = Lovește o țintă. Anticipează viteza țintei și a proiectilului.
|
||||||
|
lenum.itemdrop = Descarcă o bucată de material.
|
||||||
|
lenum.itemtake = Ia o bucată de material dintr-o clădire.
|
||||||
|
lenum.paydrop = Descarcă încărcătura curentă.
|
||||||
|
lenum.paytake = Ia o încărcătură de la locația curentă.
|
||||||
|
lenum.flag = Oferă o etichetă numerică unității.
|
||||||
|
lenum.mine = Minează din această locație.
|
||||||
|
lenum.build = Construiește o structură.
|
||||||
|
lenum.getblock = Obține clădirea și tipul clădirii aflate la coordonatele specificate.\nUnitatea trebuie să se afle în raza poziției.\nBlocurile solide care nu sunt clădiri vor avea tipul [accent]@solid[].
|
||||||
|
lenum.within = Verifică dacă unitatea se află în apropierea poziției.
|
||||||
|
lenum.boost = Pornește/oprește propulsorul.
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ link.google-play.description = Скачать для Android с Google Play
|
|||||||
link.f-droid.description = Скачать для Android с F-Droid
|
link.f-droid.description = Скачать для Android с F-Droid
|
||||||
link.wiki.description = Официальная вики
|
link.wiki.description = Официальная вики
|
||||||
link.suggestions.description = Предложить новые возможности
|
link.suggestions.description = Предложить новые возможности
|
||||||
link.bug.description = Нашли одну? Доложите о ней здесь
|
link.bug.description = Нашли ошибку? Доложите о ней здесь
|
||||||
linkfail = Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена.
|
linkfail = Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена.
|
||||||
screenshot = Скриншот сохранён в {0}
|
screenshot = Скриншот сохранён в {0}
|
||||||
screenshot.invalid = Карта слишком большая, возможно, не хватает памяти для скриншота.
|
screenshot.invalid = Карта слишком большая, возможно, не хватает памяти для скриншота.
|
||||||
@@ -41,11 +41,13 @@ be.ignore = Игнорировать
|
|||||||
be.noupdates = Обновления не найдены.
|
be.noupdates = Обновления не найдены.
|
||||||
be.check = Проверить обновления
|
be.check = Проверить обновления
|
||||||
|
|
||||||
mod.featured.title = Обозреватель модов
|
mods.browser = Браузер\nмодификаций
|
||||||
mod.featured.dialog.title = Обозреватель модов
|
|
||||||
mods.browser.selected = Выбранный мод
|
mods.browser.selected = Выбранный мод
|
||||||
mods.browser.add = Установить мод
|
mods.browser.add = Скачать
|
||||||
mods.github.open = Открыть GitHub страницу
|
mods.browser.reinstall = Переустановить
|
||||||
|
mods.github.open = Сайт
|
||||||
|
mods.browser.sortdate = Сортировка по дате
|
||||||
|
mods.browser.sortstars = Сортировка по звёздам
|
||||||
|
|
||||||
schematic = Схема
|
schematic = Схема
|
||||||
schematic.add = Сохранить схему…
|
schematic.add = Сохранить схему…
|
||||||
@@ -64,7 +66,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]Схемы отключены[]\nНа этой [accent]карте[] или [accent]сервере запрещено использование схем.
|
schematic.disabled = [scarlet]Схемы отключены[]\nНа этой [accent]карте[] или [accent]сервере[] запрещено использование схем.
|
||||||
|
|
||||||
stats = Статистика
|
stats = Статистика
|
||||||
stat.wave = Волн отражено:[accent] {0}
|
stat.wave = Волн отражено:[accent] {0}
|
||||||
@@ -90,6 +92,7 @@ joingame = Сетевая игра
|
|||||||
customgame = Пользовательская игра
|
customgame = Пользовательская игра
|
||||||
newgame = Новая игра
|
newgame = Новая игра
|
||||||
none = <ничего>
|
none = <ничего>
|
||||||
|
none.found = [lightgray]<ничего не найдено>
|
||||||
minimap = Мини-карта
|
minimap = Мини-карта
|
||||||
position = Координаты
|
position = Координаты
|
||||||
close = Закрыть
|
close = Закрыть
|
||||||
@@ -110,17 +113,20 @@ committingchanges = Внесение изменений
|
|||||||
done = Готово
|
done = Готово
|
||||||
feature.unsupported = Ваше устройство не поддерживает эту возможность.
|
feature.unsupported = Ваше устройство не поддерживает эту возможность.
|
||||||
|
|
||||||
mods.alphainfo = Имейте в виду, что модификации находятся в альфа-версии и [scarlet]могут содержать много ошибок[]. Докладывайте о любых проблемах, которые вы найдете в Mindustry Github.
|
mods.initfailed = [red]⚠[] Не удалось инициализировать предыдущий запуск Mindustry. Это могло быть вызвано неисправными модификациями.\n\nЧтобы предотвратить зацикленные вылеты игры, [red]все модификации были отключены.[]\n\nЧтобы отключить эту функцию, выключите её в [accent]Настройки->Игра->Отключение модификаций после вылета при запуске[].
|
||||||
mods = Модификации
|
mods = Модификации
|
||||||
mods.none = [lightgray]Модификации не найдены!
|
mods.none = [lightgray]Модификации не найдены!
|
||||||
mods.guide = Руководство по модам
|
mods.guide = Руководство по модификациям
|
||||||
mods.report = Доложить об ошибке
|
mods.report = Доложить об ошибке
|
||||||
mods.openfolder = Открыть папку с модификациями
|
mods.openfolder = Открыть папку с модификациями
|
||||||
|
mods.viewcontent = Просмотреть содержимое
|
||||||
mods.reload = Перезагрузить
|
mods.reload = Перезагрузить
|
||||||
mods.reloadexit = Игра будет закрыта для перезагрузки модификаций.
|
mods.reloadexit = Игра будет закрыта для перезагрузки модификаций.
|
||||||
|
mod.installed = [[Установлено]
|
||||||
mod.display = [gray]Модификация:[orange] {0}
|
mod.display = [gray]Модификация:[orange] {0}
|
||||||
mod.enabled = [lightgray]Включён
|
mod.enabled = [lightgray]Включён
|
||||||
mod.disabled = [scarlet]Выключен
|
mod.disabled = [scarlet]Выключен
|
||||||
|
mod.multiplayer.compatible = [gray]Доступна в игре по сети
|
||||||
mod.disable = Выкл.
|
mod.disable = Выкл.
|
||||||
mod.content = Содержимое:
|
mod.content = Содержимое:
|
||||||
mod.delete.error = Невозможно удалить модификацию. Возможно, файл используется.
|
mod.delete.error = Невозможно удалить модификацию. Возможно, файл используется.
|
||||||
@@ -136,15 +142,15 @@ mod.requiresrestart = Теперь игра закроется, чтобы пр
|
|||||||
mod.reloadrequired = [scarlet]Необходим перезапуск
|
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}[accent]»[white]. Чтобы удалить его, удалите саму модификацию.
|
mod.item.remove = Этот предмет является частью модификации [accent]«{0}[accent]»[white]. Чтобы удалить его, удалите саму модификацию.
|
||||||
mod.remove.confirm = Эта модификация будет удалена.
|
mod.remove.confirm = Эта модификация будет удалена.
|
||||||
mod.author = [lightgray]Автор(ы):[] {0}
|
mod.author = [lightgray]Автор(ы):[] {0}
|
||||||
mod.missing = В этом сохранении есть следы модификации, которая отсутствует или установлена её обновлённая версия. Может произойти повреждение сохранения. Вы уверены, что хотите загрузить его?\n[lightgray]Модификации:\n{0}
|
mod.missing = В этом сохранении есть следы модификации, которая отсутствует или установлена её обновлённая версия. Может произойти повреждение сохранения. Вы уверены, что хотите загрузить его?\n[lightgray]Модификации:\n{0}
|
||||||
mod.preview.missing = Перед публикацией этой модификации в Мастерской, вы должны добавить изображение предпросмотра.\nРазместите изображение с именем[accent] preview.png[] в папке модификации и попробуйте снова.
|
mod.preview.missing = Перед публикацией этой модификации в Мастерской, вы должны добавить изображение предпросмотра.\nРазместите изображение с именем[accent] preview.png[] в папке модификации и попробуйте снова.
|
||||||
mod.folder.missing = Модификации могут быть опубликованы в Мастерской только в виде папки.\nЧтобы конвертировать любой мод в папку, просто извлеките его из архива и удалите старый архив .zip, затем перезапустите игру или перезагрузите модификации.
|
mod.folder.missing = Модификации могут быть опубликованы в Мастерской только в виде папки.\nЧтобы конвертировать любой мод в папку, просто извлеките его из архива и удалите старый архив .zip, затем перезапустите игру или перезагрузите модификации.
|
||||||
mod.scripts.disable = Ваше устройство не поддерживает модификации со скриптами. Отключите такие моды, чтобы играть.
|
mod.scripts.disable = Ваше устройство не поддерживает модификации со скриптами. Отключите такие модификации, чтобы играть.
|
||||||
|
|
||||||
about.button = Об игре
|
about.button = Об игре
|
||||||
name = Имя:
|
name = Имя:
|
||||||
@@ -212,6 +218,8 @@ trace = Отслеживать игрока
|
|||||||
trace.playername = Имя игрока: [accent]{0}
|
trace.playername = Имя игрока: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = ID: [accent]{0}
|
trace.id = ID: [accent]{0}
|
||||||
|
trace.times.joined = Присоединялся раз: [accent]{0}
|
||||||
|
trace.times.kicked = Был выгнан раз: [accent]{0}
|
||||||
trace.mobile = Мобильный клиент: [accent]{0}
|
trace.mobile = Мобильный клиент: [accent]{0}
|
||||||
trace.modclient = Пользовательский клиент: [accent]{0}
|
trace.modclient = Пользовательский клиент: [accent]{0}
|
||||||
invalidid = Недопустимый ID клиента! Отправьте отчёт об ошибке.
|
invalidid = Недопустимый ID клиента! Отправьте отчёт об ошибке.
|
||||||
@@ -287,6 +295,7 @@ cancel = Отмена
|
|||||||
openlink = Открыть ссылку
|
openlink = Открыть ссылку
|
||||||
copylink = Скопировать ссылку
|
copylink = Скопировать ссылку
|
||||||
back = Назад
|
back = Назад
|
||||||
|
max = Заполнить полностью
|
||||||
crash.export = Экспорт отчёта об ошибках
|
crash.export = Экспорт отчёта об ошибках
|
||||||
crash.none = Отчёты об ошибках не найдены.
|
crash.none = Отчёты об ошибках не найдены.
|
||||||
crash.exported = Отчёты об ошибках экспортированы.
|
crash.exported = Отчёты об ошибках экспортированы.
|
||||||
@@ -306,6 +315,7 @@ cancelbuilding = [accent][[{0}][] для очистки плана
|
|||||||
selectschematic = [accent][[{0}][] выделить и скопировать
|
selectschematic = [accent][[{0}][] выделить и скопировать
|
||||||
pausebuilding = [accent][[{0}][] для приостановки строительства
|
pausebuilding = [accent][[{0}][] для приостановки строительства
|
||||||
resumebuilding = [scarlet][[{0}][] для продолжения строительства
|
resumebuilding = [scarlet][[{0}][] для продолжения строительства
|
||||||
|
enablebuilding = [scarlet][[{0}][] для включения строительства
|
||||||
showui = Интерфейс скрыт.\nНажмите [accent][[{0}][] для отображения интерфейса.
|
showui = Интерфейс скрыт.\nНажмите [accent][[{0}][] для отображения интерфейса.
|
||||||
wave = [accent]Волна {0}
|
wave = [accent]Волна {0}
|
||||||
wave.cap = [accent]Волна {0}/{1}
|
wave.cap = [accent]Волна {0}/{1}
|
||||||
@@ -326,9 +336,9 @@ custom = Пользовательская
|
|||||||
builtin = Встроенная
|
builtin = Встроенная
|
||||||
map.delete.confirm = Вы действительно хотите удалить эту карту? Это действие не может быть отменено!
|
map.delete.confirm = Вы действительно хотите удалить эту карту? Это действие не может быть отменено!
|
||||||
map.random = [accent]Случайная карта
|
map.random = [accent]Случайная карта
|
||||||
map.nospawn = Эта карта не имеет ни одного ядра, в котором игрок может появиться! Добавьте[accent] оранжевое[] ядро на эту карту в редакторе.
|
map.nospawn = Эта карта не имеет ни одного ядра, в котором игрок может появиться! Добавьте [accent]оранжевое[] ядро на эту карту в редакторе.
|
||||||
map.nospawn.pvp = У этой карты нет вражеских ядер, в которых игрок может появиться! Добавьте[scarlet] не оранжевое[] ядро на эту карту в редакторе.
|
map.nospawn.pvp = У этой карты нет вражеских ядер, в которых игрок может появиться! Добавьте [scarlet]не оранжевое[] ядро на эту карту в редакторе.
|
||||||
map.nospawn.attack = У этой карты нет вражеских ядер для атаки игроком! Добавьте[scarlet] красное[] ядро на эту карту в редакторе.
|
map.nospawn.attack = У этой карты нет вражеских ядер для атаки игроком! Добавьте [scarlet]красное[] ядро на эту карту в редакторе.
|
||||||
map.invalid = Ошибка загрузки карты: повреждённый или недопустимый файл карты.
|
map.invalid = Ошибка загрузки карты: повреждённый или недопустимый файл карты.
|
||||||
workshop.update = Обновить содержимое
|
workshop.update = Обновить содержимое
|
||||||
workshop.error = Ошибка загрузки информации из Мастерской: {0}
|
workshop.error = Ошибка загрузки информации из Мастерской: {0}
|
||||||
@@ -361,12 +371,11 @@ editor.center = Центрировать
|
|||||||
workshop = Мастерская
|
workshop = Мастерская
|
||||||
waves.title = Волны
|
waves.title = Волны
|
||||||
waves.remove = Удалить
|
waves.remove = Удалить
|
||||||
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 = Страж
|
||||||
waves.preview = Предварительный просмотр
|
waves.preview = Предварительный просмотр
|
||||||
waves.edit = Редактировать…
|
waves.edit = Редактировать…
|
||||||
@@ -390,7 +399,7 @@ editor.removeunit = Удалить боевую единицу
|
|||||||
editor.teams = Команды
|
editor.teams = Команды
|
||||||
editor.errorload = Ошибка загрузки файла.
|
editor.errorload = Ошибка загрузки файла.
|
||||||
editor.errorsave = Ошибка сохранения файла.
|
editor.errorsave = Ошибка сохранения файла.
|
||||||
editor.errorimage = Это изображение, а не карта.\n\nЕсли вы хотите импортировать карту версии 3.5/40 сборки, то используйте кнопку [accent][Импортировать устаревшую карту][] в редакторе.
|
editor.errorimage = Это изображение, а не карта.
|
||||||
editor.errorlegacy = Эта карта слишком старая и использует устаревший формат карты, который больше не поддерживается.
|
editor.errorlegacy = Эта карта слишком старая и использует устаревший формат карты, который больше не поддерживается.
|
||||||
editor.errornot = Это не файл карты.
|
editor.errornot = Это не файл карты.
|
||||||
editor.errorheader = Этот файл карты недействителен или повреждён.
|
editor.errorheader = Этот файл карты недействителен или повреждён.
|
||||||
@@ -678,6 +687,7 @@ stat.drillspeed = Базовая скорость бурения
|
|||||||
stat.boosteffect = Ускоряющий эффект
|
stat.boosteffect = Ускоряющий эффект
|
||||||
stat.maxunits = Максимальное количество активных единиц
|
stat.maxunits = Максимальное количество активных единиц
|
||||||
stat.health = Прочность
|
stat.health = Прочность
|
||||||
|
stat.armor = Броня
|
||||||
stat.buildtime = Время строительства
|
stat.buildtime = Время строительства
|
||||||
stat.maxconsecutive = Макс. последовательность
|
stat.maxconsecutive = Макс. последовательность
|
||||||
stat.buildcost = Стоимость строительства
|
stat.buildcost = Стоимость строительства
|
||||||
@@ -693,6 +703,7 @@ stat.lightningchance = Шанс удара молнии
|
|||||||
stat.lightningdamage = Урон молнии
|
stat.lightningdamage = Урон молнии
|
||||||
stat.flammability = Воспламеняемость
|
stat.flammability = Воспламеняемость
|
||||||
stat.radioactivity = Радиоактивность
|
stat.radioactivity = Радиоактивность
|
||||||
|
stat.charge = Заряд
|
||||||
stat.heatcapacity = Теплоёмкость
|
stat.heatcapacity = Теплоёмкость
|
||||||
stat.viscosity = Вязкость
|
stat.viscosity = Вязкость
|
||||||
stat.temperature = Температура
|
stat.temperature = Температура
|
||||||
@@ -720,6 +731,7 @@ bar.corereq = Требуется основа ядра
|
|||||||
bar.drillspeed = Скорость бурения: {0}/с
|
bar.drillspeed = Скорость бурения: {0}/с
|
||||||
bar.pumpspeed = Скорость выкачивания: {0}/с
|
bar.pumpspeed = Скорость выкачивания: {0}/с
|
||||||
bar.efficiency = Эффективность: {0}%
|
bar.efficiency = Эффективность: {0}%
|
||||||
|
bar.boost = Ускорение: {0}%
|
||||||
bar.powerbalance = Энергия: {0}/с
|
bar.powerbalance = Энергия: {0}/с
|
||||||
bar.powerstored = Накоплено: {0}/{1}
|
bar.powerstored = Накоплено: {0}/{1}
|
||||||
bar.poweramount = Энергия: {0}
|
bar.poweramount = Энергия: {0}
|
||||||
@@ -762,8 +774,8 @@ unit.itemssecond = предметов/секунду
|
|||||||
unit.liquidunits = жидкостных единиц
|
unit.liquidunits = жидкостных единиц
|
||||||
unit.powerunits = энерг. единиц
|
unit.powerunits = энерг. единиц
|
||||||
unit.degrees = °
|
unit.degrees = °
|
||||||
unit.seconds = сек.
|
unit.seconds = сек
|
||||||
unit.minutes = мин.
|
unit.minutes = мин
|
||||||
unit.persecond = /сек
|
unit.persecond = /сек
|
||||||
unit.perminute = /мин
|
unit.perminute = /мин
|
||||||
unit.timesspeed = x скорость
|
unit.timesspeed = x скорость
|
||||||
@@ -787,9 +799,12 @@ setting.shadows.name = Тени
|
|||||||
setting.blockreplace.name = Автоматическая замена блоков
|
setting.blockreplace.name = Автоматическая замена блоков
|
||||||
setting.linear.name = Линейная фильтрация
|
setting.linear.name = Линейная фильтрация
|
||||||
setting.hints.name = Подсказки
|
setting.hints.name = Подсказки
|
||||||
|
setting.logichints.name = Подсказки для логики
|
||||||
setting.flow.name = Показывать скорость потока ресурсов
|
setting.flow.name = Показывать скорость потока ресурсов
|
||||||
setting.backgroundpause.name = Фоновая пауза
|
setting.backgroundpause.name = Фоновая пауза
|
||||||
setting.buildautopause.name = Автоматическая приостановка строительства
|
setting.buildautopause.name = Автоматическая приостановка строительства
|
||||||
|
setting.doubletapmine.name = Добыча руды двойным нажатием
|
||||||
|
setting.modcrashdisable.name = Отключение модификаций после вылета при запуске
|
||||||
setting.animatedwater.name = Анимированные поверхности
|
setting.animatedwater.name = Анимированные поверхности
|
||||||
setting.animatedshields.name = Анимированные щиты
|
setting.animatedshields.name = Анимированные щиты
|
||||||
setting.antialias.name = Сглаживание[lightgray] (требует перезапуска)[]
|
setting.antialias.name = Сглаживание[lightgray] (требует перезапуска)[]
|
||||||
@@ -918,6 +933,7 @@ keybind.toggle_menus.name = Переключение меню
|
|||||||
keybind.chat_history_prev.name = Пред. история чата
|
keybind.chat_history_prev.name = Пред. история чата
|
||||||
keybind.chat_history_next.name = След. история чата
|
keybind.chat_history_next.name = След. история чата
|
||||||
keybind.chat_scroll.name = Прокрутка чата
|
keybind.chat_scroll.name = Прокрутка чата
|
||||||
|
keybind.chat_mode.name = Изменить режим чата
|
||||||
keybind.drop_unit.name = Сбросить боев. ед.
|
keybind.drop_unit.name = Сбросить боев. ед.
|
||||||
keybind.zoom_minimap.name = Масштабировать мини-карту
|
keybind.zoom_minimap.name = Масштабировать мини-карту
|
||||||
mode.help.title = Описание режимов
|
mode.help.title = Описание режимов
|
||||||
@@ -934,6 +950,7 @@ mode.custom = Пользовательские правила
|
|||||||
|
|
||||||
rules.infiniteresources = Бесконечные ресурсы (Игрок)
|
rules.infiniteresources = Бесконечные ресурсы (Игрок)
|
||||||
rules.reactorexplosions = Взрывы реакторов
|
rules.reactorexplosions = Взрывы реакторов
|
||||||
|
rules.coreincinerates = Ядро сжигает избыток ресурсов
|
||||||
rules.schematic = Схемы разрешены
|
rules.schematic = Схемы разрешены
|
||||||
rules.wavetimer = Интервал волн
|
rules.wavetimer = Интервал волн
|
||||||
rules.waves = Волны
|
rules.waves = Волны
|
||||||
@@ -945,6 +962,8 @@ rules.blockdamagemultiplier = Множитель урона блоков
|
|||||||
rules.unitbuildspeedmultiplier = Множитель скорости производства боев. ед.
|
rules.unitbuildspeedmultiplier = Множитель скорости производства боев. ед.
|
||||||
rules.unithealthmultiplier = Множитель здоровья боев. ед.
|
rules.unithealthmultiplier = Множитель здоровья боев. ед.
|
||||||
rules.unitdamagemultiplier = Множитель урона боев. ед.
|
rules.unitdamagemultiplier = Множитель урона боев. ед.
|
||||||
|
rules.unitcapvariable = Ядра увеличивают лимит единиц
|
||||||
|
rules.unitcap = Начальный лимит единиц
|
||||||
rules.enemycorebuildradius = Радиус защиты враж. ядер:[lightgray] (блок.)
|
rules.enemycorebuildradius = Радиус защиты враж. ядер:[lightgray] (блок.)
|
||||||
rules.wavespacing = Интервал волн:[lightgray] (сек)
|
rules.wavespacing = Интервал волн:[lightgray] (сек)
|
||||||
rules.buildcostmultiplier = Множитель затрат на строительство
|
rules.buildcostmultiplier = Множитель затрат на строительство
|
||||||
@@ -1307,7 +1326,7 @@ item.sand.description = Используется в производстве д
|
|||||||
item.coal.description = Используется как топливо и в производстве обработанных материалов.
|
item.coal.description = Используется как топливо и в производстве обработанных материалов.
|
||||||
item.coal.details = Похоже, что это окаменевшее растительное вещество, образовавшееся задолго до Посева.
|
item.coal.details = Похоже, что это окаменевшее растительное вещество, образовавшееся задолго до Посева.
|
||||||
item.titanium.description = Широко используется в транспортировке жидкостей, бурах и авиации.
|
item.titanium.description = Широко используется в транспортировке жидкостей, бурах и авиации.
|
||||||
item.thorium.description = Используется в прочных постройках и как ядерного топлива.
|
item.thorium.description = Используется в прочных постройках и как ядерное топливо.
|
||||||
item.scrap.description = Используется в плавильнях и измельчителях для получения других материалов.
|
item.scrap.description = Используется в плавильнях и измельчителях для получения других материалов.
|
||||||
item.scrap.details = Остатки старых построек и единиц.
|
item.scrap.details = Остатки старых построек и единиц.
|
||||||
item.silicon.description = Используется в солнечных панелях, сложной электронике и самонаводящихся боеприпасах для турелей.
|
item.silicon.description = Используется в солнечных панелях, сложной электронике и самонаводящихся боеприпасах для турелей.
|
||||||
@@ -1380,8 +1399,8 @@ block.inverted-sorter.description = Работает так же, как и ст
|
|||||||
block.router.description = Равномерно распределяет входящие предметы по 3 выходящим направлениям.
|
block.router.description = Равномерно распределяет входящие предметы по 3 выходящим направлениям.
|
||||||
block.router.details = Необходимое зло. Не рекомендуется к использованию как блок ввода возле производственных зданий, т.к. может случиться затор выходным материалом.
|
block.router.details = Необходимое зло. Не рекомендуется к использованию как блок ввода возле производственных зданий, т.к. может случиться затор выходным материалом.
|
||||||
block.distributor.description = Равномерно распределяет входящие предметы по 7 выходящим направлениям.
|
block.distributor.description = Равномерно распределяет входящие предметы по 7 выходящим направлениям.
|
||||||
block.overflow-gate.description = Выводит предметы по бокам, только если передний путь заблокирован. Нельзя использовать вплотную к другим затворам или шлюзам.
|
block.overflow-gate.description = Выводит предметы по бокам, только если передний путь заблокирован.
|
||||||
block.underflow-gate.description = Противоположность избыточного затвора. Выводит предметы вперёд только в том случае, если боковые пути заблокированы. Нельзя использовать вплотную к другим шлюзам или затворам.
|
block.underflow-gate.description = Противоположность избыточного затвора. Выводит предметы вперёд только в том случае, если боковые пути заблокированы.
|
||||||
block.mass-driver.description = Постройка для дальней транспортировки предметов. Собирает несколько предметов и затем стреляет ими в другие катапульты.
|
block.mass-driver.description = Постройка для дальней транспортировки предметов. Собирает несколько предметов и затем стреляет ими в другие катапульты.
|
||||||
block.mechanical-pump.description = Перекачивает и выводит жидкости. Не требует энергию.
|
block.mechanical-pump.description = Перекачивает и выводит жидкости. Не требует энергию.
|
||||||
block.rotary-pump.description = Перекачивает и выводит жидкости. Требует энергию.
|
block.rotary-pump.description = Перекачивает и выводит жидкости. Требует энергию.
|
||||||
@@ -1494,11 +1513,154 @@ unit.poly.description = Автоматически восстанавливае
|
|||||||
unit.mega.description = Автоматически ремонтирует повреждённые постройки. Может переносить блоки и небольшие единицы.
|
unit.mega.description = Автоматически ремонтирует повреждённые постройки. Может переносить блоки и небольшие единицы.
|
||||||
unit.quad.description = Сбрасывает большие бомбы на наземные цели, восстанавливая союзные постройки и повреждая врагов. Может переносить единицы среднего размера.
|
unit.quad.description = Сбрасывает большие бомбы на наземные цели, восстанавливая союзные постройки и повреждая врагов. Может переносить единицы среднего размера.
|
||||||
unit.oct.description = Защищает союзников поблизости при помощи своего восстанавливающегося щита. Может переносить большинство наземных единиц.
|
unit.oct.description = Защищает союзников поблизости при помощи своего восстанавливающегося щита. Может переносить большинство наземных единиц.
|
||||||
unit.risso.description = Стреляет залпом ракет и пуль по всем врагам поблизости.
|
unit.risso.description = Стреляет залпами ракет и пуль по всем врагам поблизости.
|
||||||
unit.minke.description = Стреляет зажигательными снарядами и стандартными пулями по наземным целям.
|
unit.minke.description = Стреляет зажигательными снарядами и стандартными пулями по наземным целям.
|
||||||
unit.bryde.description = Стреляет дальнобойными артиллерийскими снарядами и ракетами по врагам.
|
unit.bryde.description = Стреляет дальнобойными артиллерийскими снарядами и ракетами по врагам.
|
||||||
unit.sei.description = Стреляет залпом ракет и бронебойных пуль по врагам.
|
unit.sei.description = Стреляет залпами ракет и бронебойных пуль по врагам.
|
||||||
unit.omura.description = Стреляет дальнобойным пробивающим снарядом из рельсотрона по врагам. Производит единицы «Вспышка».
|
unit.omura.description = Стреляет дальнобойным пробивающим снарядом из рельсотрона по врагам. Производит единицы «Вспышка».
|
||||||
unit.alpha.description = Защищает ядро «Осколок» от врагов. Основная строительная единица.
|
unit.alpha.description = Защищает ядро «Осколок» от врагов. Основная строительная единица.
|
||||||
unit.beta.description = Защищает ядро «Штаб» от врагов. Основная строительная единица.
|
unit.beta.description = Защищает ядро «Штаб» от врагов. Основная строительная единица.
|
||||||
unit.gamma.description = Защищает ядро «Атом» от врагов. Основная строительная единица.
|
unit.gamma.description = Защищает ядро «Атом» от врагов. Основная строительная единица.
|
||||||
|
|
||||||
|
lst.read = Считывает число из соединённой ячейки памяти.
|
||||||
|
lst.write = Записывает число в соединённую ячейку памяти.
|
||||||
|
lst.print = Добавляет текст в текстовый буфер. Ничего не отображает, пока не будет вызван [accent]Print Flush[].
|
||||||
|
lst.draw = Добавляет операцию в буфер отрисовки. Ничего не отображает, пока не будет вызван [accent]Draw Flush[].
|
||||||
|
lst.drawflush = Сбрасывает буфер [accent]Draw[] операций на дисплей.
|
||||||
|
lst.printflush = Сбрасывает буфер [accent]Print[] операций в блок-сообщение.
|
||||||
|
lst.getlink = Получает соединение процессора по индексу. Начинает с 0.
|
||||||
|
lst.control = Контролирует блок.
|
||||||
|
lst.radar = Обнаруживает единицы вокруг постройки с заданным радиусом.
|
||||||
|
lst.sensor = Получает данные из постройки или единицы.
|
||||||
|
lst.set = Устанавливает переменную.
|
||||||
|
lst.operation = Совершает операцию над 1-2 переменными.
|
||||||
|
lst.end = Переходит к началу стека операций.
|
||||||
|
lst.jump = Условно переходит к другой операции.
|
||||||
|
lst.unitbind = Привязывается к единице определённого типа и сохраняет её в [accent]@unit[].
|
||||||
|
lst.unitcontrol = Управляет привязанной в данный момент единицей.
|
||||||
|
lst.unitradar = Обнаруживает единицы вокруг привязанной в данный момент единицы.
|
||||||
|
lst.unitlocate = Обнаруживает позицию/постройку определённого типа где-либо на карте. Требует привязанную единицу.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Строительство с помощью процессоров здесь запрещено.
|
||||||
|
|
||||||
|
lenum.type = Тип постройки/единицы. \nНапример, для маршрутизатора это будет [accent]@router[].\nНе строка.
|
||||||
|
lenum.shoot = Стрельба в определённую позицию.
|
||||||
|
lenum.shootp = Стрельба в единицу/постройку с расчётом скорости.
|
||||||
|
lenum.configure = Конфигурация постройки, например, предмет сортировки.
|
||||||
|
lenum.enabled = Включён ли блок.
|
||||||
|
|
||||||
|
laccess.color = Цвет осветителя.
|
||||||
|
laccess.controller = Командующий единицей. Если единица управляется процессором, возвращает процессор. Если в строю, возращает командуещего.\nВ противном случае возвращает саму единицу.
|
||||||
|
laccess.dead = Является ли единица/постройка неработающей или несуществующей.
|
||||||
|
laccess.controlled = Возвращает:\n[accent]@ctrlProcessor[] если единица управляется процессором\n[accent]@ctrlPlayer[] если единица/постройка управляется игроком\n[accent]@ctrlFormation[] если единица в строю\nВ противном случае — 0.
|
||||||
|
laccess.commanded = [red]Устарело. Будет удалено![]\nВместо этого, используйте [accent]controlled[].
|
||||||
|
|
||||||
|
graphicstype.clear = Заливка дисплея цветом.
|
||||||
|
graphicstype.color = Установка цвета для следующих операций отрисовки.
|
||||||
|
graphicstype.stroke = Установка толщины линии.
|
||||||
|
graphicstype.line = Отрисовка отрезка.
|
||||||
|
graphicstype.rect = Отрисовка закрашенного прямоугольника.
|
||||||
|
graphicstype.linerect = Отрисовка контура прямоугольника.
|
||||||
|
graphicstype.poly = Отрисовка закрашенного правильного многоугольника.
|
||||||
|
graphicstype.linepoly = Отрисовка контура правильного многоугольника.
|
||||||
|
graphicstype.triangle = Отрисовка закрашенного треугольника.
|
||||||
|
graphicstype.image = Отрисовка внутриигровых спрайтов.\nНапример: [accent]@router[] или [accent]@dagger[].
|
||||||
|
|
||||||
|
lenum.always = Всегда истина.
|
||||||
|
lenum.idiv = Целочисленное деление.
|
||||||
|
lenum.div = Деление.\nВозвращает [accent]null[] при делении на ноль.
|
||||||
|
lenum.mod = Остаток от деления.
|
||||||
|
lenum.equal = Равно. Приводит типы.\nНе-null объекты, по сравнению с числами, становятся 1, иначе — 0.
|
||||||
|
lenum.notequal = Не равно. Приводит типы.
|
||||||
|
lenum.strictequal = Строгое равенство. Не приводит типы.\nМожет быть использовано для проверки на [accent]null[].
|
||||||
|
lenum.shl = Побитовый сдвиг влево.
|
||||||
|
lenum.shr = Побитовый сдвиг вправо.
|
||||||
|
lenum.or = Побитовое ИЛИ.
|
||||||
|
lenum.land = Булевое И.
|
||||||
|
lenum.and = Побитовое И.
|
||||||
|
lenum.not = Побитовое НЕ.
|
||||||
|
lenum.xor = Побитовое исключающее ИЛИ.
|
||||||
|
|
||||||
|
lenum.min = Минимальное из двух чисел.
|
||||||
|
lenum.max = Максимальное из двух чисел.
|
||||||
|
lenum.angle = Угол вектора в градусах.
|
||||||
|
lenum.len = Длина вектора.
|
||||||
|
lenum.sin = Синус, в градусах.
|
||||||
|
lenum.cos = Косинус, в градусах.
|
||||||
|
lenum.tan = Тангенс, в градусах.
|
||||||
|
#это не ошибка, поищите 'обозначение диапазонов'
|
||||||
|
lenum.rand = Случайное число в диапазоне [0, значение).
|
||||||
|
lenum.log = Натуральный логарифм (ln).
|
||||||
|
lenum.log10 = Логарифм по основанию 10.
|
||||||
|
lenum.noise = Симплексный шум, 2D.
|
||||||
|
lenum.abs = Абсолютная величина.
|
||||||
|
lenum.sqrt = Квадратный корень.
|
||||||
|
|
||||||
|
lenum.any = Любая единица.
|
||||||
|
lenum.ally = Дружеская единица.
|
||||||
|
lenum.attacker = Единица с оружием.
|
||||||
|
lenum.enemy = Вражеская единица.
|
||||||
|
lenum.boss = Страж.
|
||||||
|
lenum.flying = Летающая единица.
|
||||||
|
lenum.ground = Наземная единица.
|
||||||
|
lenum.player = Единица, управляемая игроком.
|
||||||
|
|
||||||
|
lenum.ore = Источник руды.
|
||||||
|
lenum.damaged = Повреждённая дружеская постройка.
|
||||||
|
lenum.spawn = Точка появления врагов.\nМожет быть ядром или позицией на карте.
|
||||||
|
lenum.building = Постройка определённой группы.
|
||||||
|
|
||||||
|
lenum.core = Любое ядро.
|
||||||
|
lenum.storage = Здание хранения, например, хранилище.
|
||||||
|
lenum.generator = Постройки, вырабатывающие энергию.
|
||||||
|
lenum.factory = Постройки, перерабатывающие предметы.
|
||||||
|
lenum.repair = Ремонтные пункты.
|
||||||
|
lenum.rally = Командный центр.
|
||||||
|
lenum.battery = Любой аккумулятор.
|
||||||
|
lenum.resupply = Пункты снабжения.\nАктуально только при включённом [accent]"Боев. ед. требуют боеприпасы"[].
|
||||||
|
lenum.reactor = Импульсный/ториевый реактор.
|
||||||
|
lenum.turret = Любая турель.
|
||||||
|
|
||||||
|
sensor.in = Постройка/единица для распознавания.
|
||||||
|
|
||||||
|
radar.from = Постройка, от которой распознавать.\nДальность сенсора ограничена дальностью постройки.
|
||||||
|
radar.target = Фильтр для распознавания единиц.
|
||||||
|
radar.and = Дополнительные фильтры.
|
||||||
|
radar.order = Порядок сортировки. 0 для обратного.
|
||||||
|
radar.sort = Показатель для сортировки результатов.
|
||||||
|
radar.output = Переменная для записи конечной единицы.
|
||||||
|
|
||||||
|
unitradar.target = Фильтр для распознавания единиц.
|
||||||
|
unitradar.and = Дополнительные фильтры.
|
||||||
|
unitradar.order = Порядок сортировки. 0 для обратного.
|
||||||
|
unitradar.sort = Показатель для сортировки результатов.
|
||||||
|
unitradar.output = Переменная для записи конечной единицы.
|
||||||
|
|
||||||
|
control.of = Постройка для контролирования.
|
||||||
|
control.unit = Единица/постройка для прицеливания.
|
||||||
|
control.shoot = Стрелять ли.
|
||||||
|
|
||||||
|
unitlocate.enemy = Обнаруживать ли вражеские постройки.
|
||||||
|
unitlocate.found = Найден ли объект.
|
||||||
|
unitlocate.building = Переменная для записи обнаруженной постройки.
|
||||||
|
unitlocate.outx = Вывод X координаты.
|
||||||
|
unitlocate.outy = Вывод Y координаты.
|
||||||
|
unitlocate.group = Группа построек для поиска.
|
||||||
|
|
||||||
|
lenum.idle = Остановка движения, но продолжение строительства/копания.\nСостояние по умолчанию.
|
||||||
|
lenum.stop = Остановка передвижения/копания/строительства.
|
||||||
|
lenum.move = Перемещение в определённую позицию.
|
||||||
|
lenum.approach = Приближение к позиции с указанным радиусом.
|
||||||
|
lenum.pathfind = Перемещение к точке появления врагов.
|
||||||
|
lenum.target = Стрельба в определённую позицию.
|
||||||
|
lenum.targetp = Стрельба в единицу/постройку с расчётом скорости.
|
||||||
|
lenum.itemdrop = Сбрасывание предметов.
|
||||||
|
lenum.itemtake = Взятие предметов из постройки.
|
||||||
|
lenum.paydrop = Сбрасывание текущего груза.
|
||||||
|
lenum.paytake = Взятие груза на текущей позиции.
|
||||||
|
lenum.flag = Числовой флаг единицы.
|
||||||
|
lenum.mine = Копание в позиции.
|
||||||
|
lenum.build = Строительство структур.
|
||||||
|
lenum.getblock = Распознавание блока и его типа на координатах.\nЕдиница должна находиться в пределах досягаемости.\nТвёрдые не-постройки будут иметь тип [accent]@solid[].
|
||||||
|
lenum.within = Проверка на нахождение единицы рядом с позицией.
|
||||||
|
lenum.boost = Включение/выключение полёта.
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ editor.generation = การเกิด:
|
|||||||
editor.ingame = แก้ไขในเกม
|
editor.ingame = แก้ไขในเกม
|
||||||
editor.publish.workshop = เผยแพร่บน Workshop
|
editor.publish.workshop = เผยแพร่บน Workshop
|
||||||
editor.newmap = แมพใหม่
|
editor.newmap = แมพใหม่
|
||||||
editor.center = Center
|
editor.center = ศูนย์กลางแมพ
|
||||||
workshop = Workshop
|
workshop = Workshop
|
||||||
waves.title = Waves
|
waves.title = Waves
|
||||||
waves.remove = ลบ
|
waves.remove = ลบ
|
||||||
@@ -352,7 +352,7 @@ waves.none = ไม่ได้กำหนดศัตรู\nwave layouts เ
|
|||||||
|
|
||||||
wavemode.counts = จำนวน
|
wavemode.counts = จำนวน
|
||||||
wavemode.totals = ทั้งหมด
|
wavemode.totals = ทั้งหมด
|
||||||
wavemode.health = health
|
wavemode.health = เลือด
|
||||||
|
|
||||||
editor.default = [lightgray]<ค่าเริ่่มต้น>
|
editor.default = [lightgray]<ค่าเริ่่มต้น>
|
||||||
details = รสยละเอียด...
|
details = รสยละเอียด...
|
||||||
@@ -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 = ทรัพยากร:
|
||||||
@@ -523,7 +523,7 @@ sectors.launch = ส่ง
|
|||||||
sectors.select = เลือก
|
sectors.select = เลือก
|
||||||
sectors.nonelaunch = [lightgray]none (sun)
|
sectors.nonelaunch = [lightgray]none (sun)
|
||||||
sectors.rename = Rename Sector
|
sectors.rename = Rename Sector
|
||||||
sector.missingresources = [scarlet]Insufficient Core Resources
|
sector.missingresources = [scarlet]สิ่งของทำ core ไม่ครบ
|
||||||
|
|
||||||
planet.serpulo.name = Serpulo
|
planet.serpulo.name = Serpulo
|
||||||
planet.sun.name = Sun
|
planet.sun.name = Sun
|
||||||
@@ -566,10 +566,10 @@ settings.clear.confirm = คุณแน่ใจหรือว่าจะเ
|
|||||||
settings.clearall.confirm = [scarlet]คำเตือน![]\nการกระทำนี้จะลบข้อมูลทั้งหมด นั้นรวมไปถึงเซฟ, แมพ, สิ่งที่ปลดล็อคแล้วและ keybinds.\nเมื่อคุณกด 'โอเค' เกมจะลบข้อมูลทุกอย่างและออกโดยอัตโนมัติ
|
settings.clearall.confirm = [scarlet]คำเตือน![]\nการกระทำนี้จะลบข้อมูลทั้งหมด นั้นรวมไปถึงเซฟ, แมพ, สิ่งที่ปลดล็อคแล้วและ keybinds.\nเมื่อคุณกด 'โอเค' เกมจะลบข้อมูลทุกอย่างและออกโดยอัตโนมัติ
|
||||||
settings.clearsaves.confirm = คุณแน่ใจหรือว่าคุณต้องการเคลียร์เซฟทั้งหมด?
|
settings.clearsaves.confirm = คุณแน่ใจหรือว่าคุณต้องการเคลียร์เซฟทั้งหมด?
|
||||||
settings.clearsaves = เคลียร์เซฟ
|
settings.clearsaves = เคลียร์เซฟ
|
||||||
settings.clearresearch = Clear Research
|
settings.clearresearch = ลบการ Research
|
||||||
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research?
|
settings.clearresearch.confirm = แน่ใจที่จะลบการ Research หรือไม่?
|
||||||
settings.clearcampaignsaves = Clear Campaign Saves
|
settings.clearcampaignsaves = ลบเซฟ Campaign
|
||||||
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves?
|
settings.clearcampaignsaves.confirm = แน่ใจที่จะลบเซฟ Campaign หรือไม่?
|
||||||
paused = [accent]< หยุดชั่วคราว >
|
paused = [accent]< หยุดชั่วคราว >
|
||||||
clear = เคลียร์
|
clear = เคลียร์
|
||||||
banned = [scarlet]แบน
|
banned = [scarlet]แบน
|
||||||
@@ -580,14 +580,14 @@ info.title = ข้อมูล
|
|||||||
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 = นำเข้า
|
||||||
stat.output = ส่งออก
|
stat.output = ส่งออก
|
||||||
stat.booster = บูสเตอร์
|
stat.booster = บูสเตอร์
|
||||||
stat.tiles = ต้องการ Tiles
|
stat.tiles = ต้องการ Tiles
|
||||||
stat.affinities = Affinities
|
stat.affinities = affinities
|
||||||
stat.powercapacity = ความจุพลังงาน
|
stat.powercapacity = ความจุพลังงาน
|
||||||
stat.powershot = หน่วยพลังงาน/นัด
|
stat.powershot = หน่วยพลังงาน/นัด
|
||||||
stat.damage = ดาเมจ
|
stat.damage = ดาเมจ
|
||||||
@@ -600,13 +600,13 @@ stat.size = ขนาด
|
|||||||
stat.displaysize = ขนาดที่โชว์
|
stat.displaysize = ขนาดที่โชว์
|
||||||
stat.liquidcapacity = จุของเหลว
|
stat.liquidcapacity = จุของเหลว
|
||||||
stat.powerrange = ระยะพลังงาน
|
stat.powerrange = ระยะพลังงาน
|
||||||
stat.linkrange = Link Range
|
stat.linkrange = ระยะการเชื่อมต่อ
|
||||||
stat.instructions = คำแนะนำ
|
stat.instructions = คำแนะนำ
|
||||||
stat.powerconnections = จำนวนการเชื่อมต่อสูงสุด
|
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 = เวลา Cooldown
|
stat.cooldowntime = เวลา Cooldown
|
||||||
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 = 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 = จำนวน Unit ที่สามารถสูงสุด
|
||||||
stat.abilities = Abilities
|
stat.abilities = ทักษะ
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = สนามพลัง
|
||||||
ability.repairfield = Repair Field
|
ability.repairfield = รักษา Unit รอบข้าง
|
||||||
ability.statusfield = Status Field
|
ability.statusfield = บัฟ Unit รอบข้าง
|
||||||
ability.unitspawn = {0} Factory
|
ability.unitspawn = โรงงานทำ {0}
|
||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = บัฟโล่รอบข้าง
|
||||||
|
|
||||||
bar.drilltierreq = จำเป็นต้องใช้เครื่องขุดที่ดีกว่า
|
bar.drilltierreq = จำเป็นต้องใช้เครื่องขุดที่ดีกว่า
|
||||||
bar.noresources = ทรัพยากรหาย
|
bar.noresources = ทรัพยากรหาย
|
||||||
@@ -671,7 +671,7 @@ bar.progress = ความคืบหน้าในการสร้าง
|
|||||||
bar.input = นำเข้า
|
bar.input = นำเข้า
|
||||||
bar.output = ส่งออก
|
bar.output = ส่งออก
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]Processor Controlled
|
units.processorcontrol = [lightgray]ถูก Processor ควบคุม
|
||||||
|
|
||||||
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,8 +680,8 @@ 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]ทะลุ
|
||||||
bullet.freezing = [stat]แช่แข็ง
|
bullet.freezing = [stat]แช่แข็ง
|
||||||
bullet.tarred = [stat]เปื้อนน้ำมัน
|
bullet.tarred = [stat]เปื้อนน้ำมัน
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x จำนวนกระสุนต่อ 1 ไอเท็ม
|
bullet.multiplier = [stat]{0}[lightgray]x จำนวนกระสุนต่อ 1 ไอเท็ม
|
||||||
@@ -696,9 +696,9 @@ unit.liquidunits = หน่วยของเหลว
|
|||||||
unit.powerunits = หน่วยพลังงาน
|
unit.powerunits = หน่วยพลังงาน
|
||||||
unit.degrees = องศา
|
unit.degrees = องศา
|
||||||
unit.seconds = วินาที
|
unit.seconds = วินาที
|
||||||
unit.minutes = mins
|
unit.minutes = นาที
|
||||||
unit.persecond = /วินาที
|
unit.persecond = /วินาที
|
||||||
unit.perminute = /min
|
unit.perminute = /ต่อนาที
|
||||||
unit.timesspeed = เท่าเร็วขึ้น
|
unit.timesspeed = เท่าเร็วขึ้น
|
||||||
unit.percent = %
|
unit.percent = %
|
||||||
unit.shieldhealth = เลือดเกราะ
|
unit.shieldhealth = เลือดเกราะ
|
||||||
@@ -729,7 +729,7 @@ setting.autotarget.name = เล็งเป้าอัตโนมัติ
|
|||||||
setting.keyboard.name = การควบคุมแบบ เม้าส์+คีย์บอร์ด
|
setting.keyboard.name = การควบคุมแบบ เม้าส์+คีย์บอร์ด
|
||||||
setting.touchscreen.name = การควบคุมแบบหน้าจอสัมผัส
|
setting.touchscreen.name = การควบคุมแบบหน้าจอสัมผัส
|
||||||
setting.fpscap.name = FPS
|
setting.fpscap.name = FPS
|
||||||
setting.fpscap.none = ไม่มี
|
setting.fpscap.none = ∞
|
||||||
setting.fpscap.text = {0} FPS
|
setting.fpscap.text = {0} FPS
|
||||||
setting.uiscale.name = ขนาด UI[lightgray] (จำเป็นต้องรีสตาร์ท)[]
|
setting.uiscale.name = ขนาด UI[lightgray] (จำเป็นต้องรีสตาร์ท)[]
|
||||||
setting.swapdiagonal.name = การวางเป็นเส้นทแยงเสมอ
|
setting.swapdiagonal.name = การวางเป็นเส้นทแยงเสมอ
|
||||||
@@ -803,8 +803,8 @@ keybind.pan.name = แพนวิว
|
|||||||
keybind.boost.name = บูสต์
|
keybind.boost.name = บูสต์
|
||||||
keybind.schematic_select.name = เลือกภูมิภาค
|
keybind.schematic_select.name = เลือกภูมิภาค
|
||||||
keybind.schematic_menu.name = เมนู Schematic
|
keybind.schematic_menu.name = เมนู Schematic
|
||||||
keybind.schematic_flip_x.name = กลับ Schematic ในแกน X
|
keybind.schematic_flip_x.name = กลับแผนผังแกน X
|
||||||
keybind.schematic_flip_y.name = กลับ Schematic ในแกน Y
|
keybind.schematic_flip_y.name = กลับแผนผังแกน Y
|
||||||
keybind.category_prev.name = หมวดหมู่ก่อนหน้า
|
keybind.category_prev.name = หมวดหมู่ก่อนหน้า
|
||||||
keybind.category_next.name = หมวดหมู่ถ้ดไป
|
keybind.category_next.name = หมวดหมู่ถ้ดไป
|
||||||
keybind.block_select_left.name = เลือกบล็อค ซ้าย
|
keybind.block_select_left.name = เลือกบล็อค ซ้าย
|
||||||
@@ -821,7 +821,7 @@ keybind.block_select_07.name = หมวดหมู่/เลือกบล็
|
|||||||
keybind.block_select_08.name = หมวดหมู่/เลือกบล็อค 8
|
keybind.block_select_08.name = หมวดหมู่/เลือกบล็อค 8
|
||||||
keybind.block_select_09.name = หมวดหมู่/เลือกบล็อค 9
|
keybind.block_select_09.name = หมวดหมู่/เลือกบล็อค 9
|
||||||
keybind.block_select_10.name = หมวดหมู่/เลือกบล็อค 10
|
keybind.block_select_10.name = หมวดหมู่/เลือกบล็อค 10
|
||||||
keybind.fullscreen.name = เปิด/ปิด Fullscreen
|
keybind.fullscreen.name = เปิด/ปิด เต็มจอ
|
||||||
keybind.select.name = เลือก/ยิง
|
keybind.select.name = เลือก/ยิง
|
||||||
keybind.diagonal_placement.name = วางเป็นแนวทแยง
|
keybind.diagonal_placement.name = วางเป็นแนวทแยง
|
||||||
keybind.pick.name = เลือกบล็อค
|
keybind.pick.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 = โหมดการโจมตี
|
||||||
@@ -884,10 +884,10 @@ rules.title.waves = คลื่น(รอบ)
|
|||||||
rules.title.resourcesbuilding = ทรัพยากรและสิ่งก่อสร้าง
|
rules.title.resourcesbuilding = ทรัพยากรและสิ่งก่อสร้าง
|
||||||
rules.title.enemy = ศัตรู
|
rules.title.enemy = ศัตรู
|
||||||
rules.title.unit = ยูนิต
|
rules.title.unit = ยูนิต
|
||||||
rules.title.experimental = Experimental
|
rules.title.experimental = ทดลอง
|
||||||
rules.title.environment = สิ่งแวดล้อม
|
rules.title.environment = สิ่งแวดล้อม
|
||||||
rules.lighting = แสง
|
rules.lighting = แสง
|
||||||
rules.enemyLights = Enemy Lights
|
rules.enemyLights = ไฟศัตรู
|
||||||
rules.fire = ไฟ
|
rules.fire = ไฟ
|
||||||
rules.explosions = ดาเมจบล็อค/ยูนิตระเบิด
|
rules.explosions = ดาเมจบล็อค/ยูนิตระเบิด
|
||||||
rules.ambientlight = แสงจากแวดล้อม
|
rules.ambientlight = แสงจากแวดล้อม
|
||||||
@@ -960,8 +960,8 @@ 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 = Slag
|
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 = กำแพงน้ำแข็ง
|
||||||
@@ -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,11 +1142,11 @@ 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 = Segment
|
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 = โรงงานภาคอากาศ
|
||||||
|
|||||||
@@ -59,8 +59,10 @@ schematic.disabled = [scarlet]Схеми вимкнені[]\nВам не доз
|
|||||||
mod.featured.title = Переглядач модифікацій
|
mod.featured.title = Переглядач модифікацій
|
||||||
mod.featured.dialog.title = Переглядач модифікацій
|
mod.featured.dialog.title = Переглядач модифікацій
|
||||||
mods.browser.selected = Обрана модифікація
|
mods.browser.selected = Обрана модифікація
|
||||||
mods.browser.add = Установити модифікацію
|
mods.browser.add = Установити
|
||||||
mods.github.open = Відкрити в Github
|
mods.github.open = Відкрити
|
||||||
|
mods.browser.sortdate = Сортувати за давністю
|
||||||
|
mods.browser.sortstars = Сортувати за кількостю зірок
|
||||||
|
|
||||||
stats = Статистика
|
stats = Статистика
|
||||||
stat.wave = Хвиль відбито:[accent] {0}
|
stat.wave = Хвиль відбито:[accent] {0}
|
||||||
@@ -85,6 +87,7 @@ joingame = Мережева гра
|
|||||||
customgame = Користувацька гра
|
customgame = Користувацька гра
|
||||||
newgame = Нова гра
|
newgame = Нова гра
|
||||||
none = <нічого>
|
none = <нічого>
|
||||||
|
none.found = [lightgray]<нічого не знайдено>
|
||||||
minimap = Мінімапа
|
minimap = Мінімапа
|
||||||
position = Місцезнаходження
|
position = Місцезнаходження
|
||||||
close = Закрити
|
close = Закрити
|
||||||
@@ -278,6 +281,7 @@ cancel = Скасувати
|
|||||||
openlink = Перейти за посиланням
|
openlink = Перейти за посиланням
|
||||||
copylink = Скопіювати посилання
|
copylink = Скопіювати посилання
|
||||||
back = Назад
|
back = Назад
|
||||||
|
max = Макс.
|
||||||
crash.export = Експортувати аварійні звіти
|
crash.export = Експортувати аварійні звіти
|
||||||
crash.none = Аварійних звітів не знайдено
|
crash.none = Аварійних звітів не знайдено
|
||||||
crash.exported = Аварійні звіти експортовано
|
crash.exported = Аварійні звіти експортовано
|
||||||
@@ -351,7 +355,6 @@ editor.center = Центрувати
|
|||||||
workshop = Майстерня
|
workshop = Майстерня
|
||||||
waves.title = Хвилі
|
waves.title = Хвилі
|
||||||
waves.remove = Видалити
|
waves.remove = Видалити
|
||||||
waves.never = <ніколи>
|
|
||||||
waves.every = кожен
|
waves.every = кожен
|
||||||
waves.waves = хвиля(і)
|
waves.waves = хвиля(і)
|
||||||
waves.perspawn = за появу
|
waves.perspawn = за появу
|
||||||
@@ -377,7 +380,7 @@ editor.removeunit = Видалити бойову одиницю
|
|||||||
editor.teams = Команди
|
editor.teams = Команди
|
||||||
editor.errorload = Помилка завантаження зображення.
|
editor.errorload = Помилка завантаження зображення.
|
||||||
editor.errorsave = Помилка збереження зображення.
|
editor.errorsave = Помилка збереження зображення.
|
||||||
editor.errorimage = Це зображення, а не мапа.\n\nЯкщо ви хочете імпортувати застарілу мапу, то використовуйте кнопку «Імпортувати застарілу мапу» в редакторі.
|
editor.errorimage = Це зображення, а не мапа.
|
||||||
editor.errorlegacy = Ця мапа занадто стара і використовує попередній формат мапи, який більше не підтримується.
|
editor.errorlegacy = Ця мапа занадто стара і використовує попередній формат мапи, який більше не підтримується.
|
||||||
editor.errornot = Це не мапа.
|
editor.errornot = Це не мапа.
|
||||||
editor.errorheader = Цей файл мапи недійсний або пошкоджений.
|
editor.errorheader = Цей файл мапи недійсний або пошкоджений.
|
||||||
@@ -676,6 +679,7 @@ stat.commandlimit = Максимум у загоні
|
|||||||
stat.abilities = Здібності
|
stat.abilities = Здібності
|
||||||
stat.canboost = Можна прискорити
|
stat.canboost = Можна прискорити
|
||||||
stat.flying = Літає
|
stat.flying = Літає
|
||||||
|
stat.ammouse = Патронів використовує
|
||||||
ability.forcefield = Щитове поле
|
ability.forcefield = Щитове поле
|
||||||
ability.repairfield = Ремонтувальне поле
|
ability.repairfield = Ремонтувальне поле
|
||||||
ability.statusfield = Поле підсилення
|
ability.statusfield = Поле підсилення
|
||||||
@@ -688,6 +692,7 @@ bar.corereq = Необхідне основне ядро
|
|||||||
bar.drillspeed = Швидкість буріння: {0} за с.
|
bar.drillspeed = Швидкість буріння: {0} за с.
|
||||||
bar.pumpspeed = Швидкість викачування: {0} за с.
|
bar.pumpspeed = Швидкість викачування: {0} за с.
|
||||||
bar.efficiency = Ефективність: {0}%
|
bar.efficiency = Ефективність: {0}%
|
||||||
|
bar.boost = Підсилення: {0}%
|
||||||
bar.powerbalance = Енергія: {0} за с.
|
bar.powerbalance = Енергія: {0} за с.
|
||||||
bar.powerstored = Зберігає: {0}/{1}
|
bar.powerstored = Зберігає: {0}/{1}
|
||||||
bar.poweramount = Енергія: {0}
|
bar.poweramount = Енергія: {0}
|
||||||
@@ -696,7 +701,6 @@ 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}
|
||||||
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[одиниця вимкнена]
|
|
||||||
bar.liquid = Рідина
|
bar.liquid = Рідина
|
||||||
bar.heat = Нагрівання
|
bar.heat = Нагрівання
|
||||||
bar.power = Енергія
|
bar.power = Енергія
|
||||||
@@ -711,6 +715,7 @@ bullet.sapping = [stat]виснажує
|
|||||||
bullet.homing = [stat]самонаведення
|
bullet.homing = [stat]самонаведення
|
||||||
bullet.shock = [stat]шок
|
bullet.shock = [stat]шок
|
||||||
bullet.frag = [stat]шкода по ділянці
|
bullet.frag = [stat]шкода по ділянці
|
||||||
|
bullet.buildingdamage = [stat]{0}%[lightgray] шкода по будівлям
|
||||||
bullet.knockback = [stat]{0}[lightgray] відкидання
|
bullet.knockback = [stat]{0}[lightgray] відкидання
|
||||||
bullet.pierce = [stat]{0}[lightgray]x пробиття
|
bullet.pierce = [stat]{0}[lightgray]x пробиття
|
||||||
bullet.infinitepierce = [stat]пробиття
|
bullet.infinitepierce = [stat]пробиття
|
||||||
@@ -738,6 +743,7 @@ unit.items = предм.
|
|||||||
unit.thousands = тис
|
unit.thousands = тис
|
||||||
unit.millions = млн
|
unit.millions = млн
|
||||||
unit.billions = млрд
|
unit.billions = млрд
|
||||||
|
unit.pershot = за постріл
|
||||||
category.purpose = Призначення
|
category.purpose = Призначення
|
||||||
category.general = Загальне
|
category.general = Загальне
|
||||||
category.power = Енергія
|
category.power = Енергія
|
||||||
@@ -806,6 +812,7 @@ setting.lasersopacity.name = Непрозорість лазерів енерг
|
|||||||
setting.bridgeopacity.name = Непрозорість мостів
|
setting.bridgeopacity.name = Непрозорість мостів
|
||||||
setting.playerchat.name = Показувати хмару чата над гравцями
|
setting.playerchat.name = Показувати хмару чата над гравцями
|
||||||
public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[accent]Будь-хто може приєднатися до вашої гри.\n[lightgray]Це можна змінити в Налаштування->Гра->Загальнодоступність гри.
|
public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[accent]Будь-хто може приєднатися до вашої гри.\n[lightgray]Це можна змінити в Налаштування->Гра->Загальнодоступність гри.
|
||||||
|
public.confirm.really = Якщо ви хочете грати з друзями, використовуйте [green]Запросити друзів[] замість [scarlet]Публічного серверу[]!\nВи справді хочете зробити свою гру [scarlet]публічною[]?
|
||||||
public.beta = Зауважте, що в бета-версії гри ви не можете робити публічні ігри.
|
public.beta = Зауважте, що в бета-версії гри ви не можете робити публічні ігри.
|
||||||
uiscale.reset = Масштаб користувацького інтерфейсу було змінено.\nНатисніть «Гаразд» для підтвердження цього масштабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] секунд…
|
uiscale.reset = Масштаб користувацького інтерфейсу було змінено.\nНатисніть «Гаразд» для підтвердження цього масштабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] секунд…
|
||||||
uiscale.cancel = Скасувати і вийти
|
uiscale.cancel = Скасувати і вийти
|
||||||
@@ -880,6 +887,7 @@ keybind.toggle_menus.name = Меню перемикання
|
|||||||
keybind.chat_history_prev.name = Попередня історія чату
|
keybind.chat_history_prev.name = Попередня історія чату
|
||||||
keybind.chat_history_next.name = Наступна історія чату
|
keybind.chat_history_next.name = Наступна історія чату
|
||||||
keybind.chat_scroll.name = Прокрутка чату
|
keybind.chat_scroll.name = Прокрутка чату
|
||||||
|
keybind.chat_mode.name = Змінити режим чату
|
||||||
keybind.drop_unit.name = Скинути бойову одиницю
|
keybind.drop_unit.name = Скинути бойову одиницю
|
||||||
keybind.zoom_minimap.name = Збільшити мінімапу
|
keybind.zoom_minimap.name = Збільшити мінімапу
|
||||||
mode.help.title = Опис режимів гри
|
mode.help.title = Опис режимів гри
|
||||||
@@ -895,6 +903,7 @@ mode.attack.description = Зруйнуйте ворожу базу. \n[gray]По
|
|||||||
mode.custom = Користувацькі правила
|
mode.custom = Користувацькі правила
|
||||||
rules.infiniteresources = Нескінченні ресурси
|
rules.infiniteresources = Нескінченні ресурси
|
||||||
rules.reactorexplosions = Вибухи реактора
|
rules.reactorexplosions = Вибухи реактора
|
||||||
|
rules.coreincinerates = Ядро спалює надлишкові предмети
|
||||||
rules.schematic = Використання схем дозволено
|
rules.schematic = Використання схем дозволено
|
||||||
rules.wavetimer = Таймер для хвиль
|
rules.wavetimer = Таймер для хвиль
|
||||||
rules.waves = Хвилі
|
rules.waves = Хвилі
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ link.google-play.description = Google Play store listing
|
|||||||
link.f-droid.description = F-Droid listing
|
link.f-droid.description = F-Droid listing
|
||||||
link.wiki.description = Mindustry wiki chính thức
|
link.wiki.description = Mindustry wiki chính thức
|
||||||
link.suggestions.description = Đề xuất các tính năng mới
|
link.suggestions.description = Đề xuất các tính năng mới
|
||||||
|
link.bug.description = Tìm thấy lỗi? Báo cáo nó ở đây
|
||||||
linkfail = Không mở được liên kết!\nURL đã được sao chép vào bộ nhớ tạm.
|
linkfail = Không mở được liên kết!\nURL đã được sao chép vào bộ nhớ tạm.
|
||||||
screenshot = Ảnh chụp màn hình được lưu vào {0}
|
screenshot = Ảnh chụp màn hình được lưu vào {0}
|
||||||
screenshot.invalid = Bản đồ quá lớn, có khả năng không đủ bộ nhớ để chụp ảnh màn hình.
|
screenshot.invalid = Bản đồ quá lớn, có khả năng không đủ bộ nhớ để chụp ảnh màn hình.
|
||||||
@@ -40,24 +41,32 @@ be.ignore = Bỏ qua
|
|||||||
be.noupdates = Không tìm thấy bản cập nhật mới.
|
be.noupdates = Không tìm thấy bản cập nhật mới.
|
||||||
be.check = Kiểm tra các bản cập nhật.
|
be.check = Kiểm tra các bản cập nhật.
|
||||||
|
|
||||||
schematic = Schematic
|
mods.browser = Duyệt mod
|
||||||
schematic.add = Lưu Schematic...
|
mods.browser.selected = Mod Đã chọn
|
||||||
schematics = Schematics
|
mods.browser.add = Cài đặt
|
||||||
schematic.replace = Schematics có tên đó đã tồn tại. Thay thế nó?
|
mods.browser.reinstall = Cài đặt lại
|
||||||
schematic.exists = Schematics có tên đó đã tồn tại.
|
mods.github.open = Repo
|
||||||
schematic.import = Nhập Schematic...
|
mods.browser.sortdate = Sắp xếp theo gần đây
|
||||||
|
mods.browser.sortstars = Sắp xếp theo sao
|
||||||
|
|
||||||
|
schematic = Bản thiết kế
|
||||||
|
schematic.add = Lưu bản thiết kế...
|
||||||
|
schematics = Các bản thiết kế
|
||||||
|
schematic.replace = Bản thiết kế có tên đó đã tồn tại. Thay thế nó?
|
||||||
|
schematic.exists = Bản thiết kế có tên đó đã tồn tại.
|
||||||
|
schematic.import = Nhập Bản thiết kế...
|
||||||
schematic.exportfile = Xuất tệp
|
schematic.exportfile = Xuất tệp
|
||||||
schematic.importfile = Nhập tệp
|
schematic.importfile = Nhập tệp
|
||||||
schematic.browseworkshop = Duyệt qua Workshop
|
schematic.browseworkshop = Duyệt qua Workshop
|
||||||
schematic.copy = Sao chép vào bộ nhớ tạm
|
schematic.copy = Sao chép vào bộ nhớ tạm
|
||||||
schematic.copy.import = Nhập từ bộ nhớ tạm
|
schematic.copy.import = Thêm từ bộ nhớ tạm
|
||||||
schematic.shareworkshop = Chia sẻ từ Workshop
|
schematic.shareworkshop = Chia sẻ từ Workshop
|
||||||
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Lật Schematic
|
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Lật bản thiết kế
|
||||||
schematic.saved = Đã lưu Schematic.
|
schematic.saved = Đã lưu bản thiết kế.
|
||||||
schematic.delete.confirm = Schematic này sẽ bị xóa hoàn toàn.
|
schematic.delete.confirm = Bản thiết kế này sẽ bị xóa hoàn toàn.
|
||||||
schematic.rename = Đổi tên Schematic
|
schematic.rename = Đổi tên bản thiết kế
|
||||||
schematic.info = {0}x{1}, {2} khối
|
schematic.info = {0}x{1}, {2} khối
|
||||||
schematic.disabled = [scarlet]Tính năng Schematics đã bị tắt[]\nBạn không được sử dụng schematic trong [accent]bản đồ[] hoặc [accent]máy chủ.
|
schematic.disabled = [scarlet]Tính năng bản thiết kế đã bị tắt[]\nBạn không được sử dụng bản thiết kế trong [accent]bản đồ[] hoặc [accent]máy chủ.
|
||||||
|
|
||||||
stats = Thống kê
|
stats = Thống kê
|
||||||
stat.wave = Đợt đã vượt qua:[accent] {0}
|
stat.wave = Đợt đã vượt qua:[accent] {0}
|
||||||
@@ -75,24 +84,25 @@ level.highscore = Điểm cao nhất: [accent]{0}
|
|||||||
level.select = Chọn cấp độ
|
level.select = Chọn cấp độ
|
||||||
level.mode = Chế độ:
|
level.mode = Chế độ:
|
||||||
coreattack = < Căn cứ đang bị tấn công! >
|
coreattack = < Căn cứ đang bị tấn công! >
|
||||||
nearpoint = [[ [scarlet]RỜI KHỎI ĐIỂM THẢ NGAY LẬP TỨC[] ]\nsự hủy diệt sắp xảy ra
|
nearpoint = [[ [scarlet]RỜI KHỎI KHU VỰC ĐÁP NGAY LẬP TỨC[] ]\nsự hủy diệt sắp xảy ra
|
||||||
database = Cơ sở dữ liệu căn cứ
|
database = Cơ sở dữ liệu
|
||||||
savegame = Lưu trò chơi
|
savegame = Lưu trò chơi
|
||||||
loadgame = Tải trò chơi
|
loadgame = Tải lại màn chơi
|
||||||
joingame = Tham gia trò chơi
|
joingame = Tham gia trò chơi
|
||||||
customgame = Tùy chỉnh
|
customgame = Tùy chỉnh
|
||||||
newgame = Trò chơi mới
|
newgame = Trò chơi mới
|
||||||
none = <trống>
|
none = <trống>
|
||||||
minimap = Bản đồ mini
|
none.found = [lightgray]<không tìm thấy>
|
||||||
|
minimap = Bản đồ nhỏ
|
||||||
position = Vị trí
|
position = Vị trí
|
||||||
close = Đóng
|
close = Đóng
|
||||||
website = Website
|
website = Website
|
||||||
quit = Thoát
|
quit = Thoát
|
||||||
save.quit = Lưu & Thoát
|
save.quit = Lưu & Thoát
|
||||||
maps = Maps
|
maps = Bản đồ
|
||||||
maps.browse = Duyệt bản đồ
|
maps.browse = Chọn bản đồ
|
||||||
continue = Tiếp tục
|
continue = Tiếp tục
|
||||||
maps.none = [lightgray]Không có bản đồ nào được tìm thấy!
|
maps.none = [lightgray]Không tìm thấy bản đồ!
|
||||||
invalid = Không hợp lệ
|
invalid = Không hợp lệ
|
||||||
pickcolor = Chọn màu
|
pickcolor = Chọn màu
|
||||||
preparingconfig = Đang chuẩn bị cấu hình
|
preparingconfig = Đang chuẩn bị cấu hình
|
||||||
@@ -103,14 +113,16 @@ committingchanges = Đang cập nhật các thay đổi
|
|||||||
done = Hoàn tất
|
done = Hoàn tất
|
||||||
feature.unsupported = Thiết bị của bạn không hỗ trợ tính năng này.
|
feature.unsupported = Thiết bị của bạn không hỗ trợ tính năng này.
|
||||||
|
|
||||||
mods.alphainfo = Hãy nhớ rằng các bản mod đang ở giai đoạn alpha, và[scarlet] có thể chứa rất rất lỗi[].\nBáo cáo bất kỳ vấn đề nào bạn gặp phải tại Mindustry GitHub.
|
mods.initfailed = [red]⚠[] Mindustry không khởi chạy được. Điều này có thể do các mod bị lỗi.\n\nĐể tránh gặp sự cố liên tiếp, [red]tất cả các mod đã bị tắt.[]\n\nĐể tắt tính năng này, vào [accent]Cài đặt->Trò chơi->Tắt các mod khi gặp sự cố trong khởi động[].
|
||||||
mods = Mods
|
mods = Mods
|
||||||
mods.none = [lightgray]Không có mod nào được tìm thấy!
|
mods.none = [lightgray]Không tìm thấy mod!
|
||||||
mods.guide = Hướng dẫn mod
|
mods.guide = Hướng dẫn mod
|
||||||
mods.report = Báo lỗi
|
mods.report = Báo lỗi
|
||||||
mods.openfolder = Mở thư mục
|
mods.openfolder = Mở thư mục
|
||||||
|
mods.viewcontent = Xem nội dung
|
||||||
mods.reload = Tải lại
|
mods.reload = Tải lại
|
||||||
mods.reloadexit = Trò chơi sẽ đóng để tải lại mod.
|
mods.reloadexit = Trò chơi sẽ đóng để mod được tải.
|
||||||
|
mod.installed = [[Đã cài đặt]
|
||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Đã Bật
|
mod.enabled = [lightgray]Đã Bật
|
||||||
mod.disabled = [scarlet]Đã Tắt
|
mod.disabled = [scarlet]Đã Tắt
|
||||||
@@ -122,21 +134,21 @@ mod.outdated = [scarlet]Không tương thích với V6 (no minGameVersion: 105)
|
|||||||
mod.missingdependencies = [scarlet]Thiếu phụ thuộc: {0}
|
mod.missingdependencies = [scarlet]Thiếu phụ thuộc: {0}
|
||||||
mod.erroredcontent = [scarlet]Lỗi nội dung
|
mod.erroredcontent = [scarlet]Lỗi nội dung
|
||||||
mod.errors = Đã xảy ra lỗi khi tải nội dung.
|
mod.errors = Đã xảy ra lỗi khi tải nội dung.
|
||||||
mod.noerrorplay = [scarlet]Bạn có mod bị lỗi.[]Tắt các mod bị ảnh hưởng hoặc sửa chữa các lỗi trước khi chơi.
|
mod.noerrorplay = [scarlet]Bạn có mod bị lỗi.[]Tắt các mod bị lỗi hoặc sửa các lỗi trước khi chơi.
|
||||||
mod.nowdisabled = [scarlet]Mod '{0}' cần mod này để chạy:[accent] {1}\n[lightgray]Trước tiên bạn cần tải các mod này xuống.\nBản mod này sẽ tự động tắt.
|
mod.nowdisabled = [scarlet]Mod '{0}' cần mod này để chạy:[accent] {1}\n[lightgray]Trước tiên bạn cần tải các mod này xuống.\nBản mod này sẽ tự động tắt.
|
||||||
mod.enable = Bật
|
mod.enable = Bật
|
||||||
mod.requiresrestart = Trò chơi sẽ đóng để áp dụng các thay đổi của mod.
|
mod.requiresrestart = Trò chơi sẽ đóng để áp dụng các thay đổi của mod.
|
||||||
mod.reloadrequired = [scarlet]Yêu cầu khởi động lại
|
mod.reloadrequired = [scarlet]Yêu cầu khởi động lại
|
||||||
mod.import = Nhập Mod
|
mod.import = Thêm Mod
|
||||||
mod.import.file = Nhập tệp
|
mod.import.file = Thêm từ tệp
|
||||||
mod.import.github = Nhập từ GitHub
|
mod.import.github = Thêm từ GitHub
|
||||||
mod.jarwarn = [scarlet]JAR mod vốn dĩ không an toàn.[]\nĐảm bảo rằng bạn đang nhập bản mod này từ một nguồn đáng tin cậy!
|
mod.jarwarn = [scarlet]Các JAR mod vốn dĩ không an toàn.[]\nĐảm bảo rằng bạn đang thêm mod này từ một nguồn đáng tin cậy!
|
||||||
mod.item.remove = Mục này là một phần của[accent] '{0}'[] mod. Để xóa nó, hãy gỡ cài đặt mod này.
|
mod.item.remove = Mục này là một phần của[accent] '{0}'[] mod. Để xóa nó, hãy gỡ cài đặt mod này.
|
||||||
mod.remove.confirm = Mod này sẽ bị xóa.
|
mod.remove.confirm = Mod này sẽ bị xóa.
|
||||||
mod.author = [lightgray]Tác giả:[] {0}
|
mod.author = [lightgray]Tác giả:[] {0}
|
||||||
mod.missing = Bản lưu này chứa các mod mà bạn đã cập nhật gần đây hoặc không còn cài đặt nữa. Có thể gây ra lỗi khi mở. Bạn có chắc muốn mở nó?\n[lightgray]Mods:\n{0}
|
mod.missing = Bản lưu này chứa các mod mà bạn đã cập nhật gần đây hoặc không được cài đặt. Có thể gây ra lỗi khi mở. Bạn có chắc muốn mở nó?\n[lightgray]Mods:\n{0}
|
||||||
mod.preview.missing = Trước khi xuất bản bản mod này lên workshop, bạn phải thêm hình ảnh xem trước.\nĐặt một hình ảnh có tên[accent] preview.png[] vào thư mục của mod và thử lại.
|
mod.preview.missing = Trước khi đăng bản mod này lên workshop, bạn phải thêm hình ảnh xem trước.\nĐặt một hình ảnh có tên[accent] preview.png[] vào thư mục của mod và thử lại.
|
||||||
mod.folder.missing = Chỉ có thể xuất bản các mod ở dạng thư mục lên workshop.\nĐể chuyển đổi bất kỳ mod nào thành một thư mục, chỉ cần giải nén tệp của nó vào một thư mục và xóa tệp nén cũ, sau đó khởi động lại trò chơi của bạn hoặc tải lại các bản mod của bạn.
|
mod.folder.missing = Chỉ có thể đăng các mod ở dạng thư mục lên workshop.\nĐể chuyển đổi bất kỳ mod nào thành một thư mục, chỉ cần giải nén tệp của nó vào một thư mục và xóa tệp nén cũ, sau đó khởi động lại trò chơi của bạn hoặc tải lại các bản mod của bạn.
|
||||||
mod.scripts.disable = Thiết bị của bạn không hổ trợ mod chứa scripts này. Bạn phải tắt các mod này để chơi trò chơi.
|
mod.scripts.disable = Thiết bị của bạn không hổ trợ mod chứa scripts này. Bạn phải tắt các mod này để chơi trò chơi.
|
||||||
|
|
||||||
about.button = Thông tin
|
about.button = Thông tin
|
||||||
@@ -196,6 +208,7 @@ servers.local = Máy chủ cục bộ
|
|||||||
servers.remote = Máy chủ tùy chỉnh
|
servers.remote = Máy chủ tùy chỉnh
|
||||||
servers.global = Máy chủ từ cộng đồng
|
servers.global = Máy chủ từ cộng đồng
|
||||||
|
|
||||||
|
servers.disclaimer = Nhà phát triển [accent]không[] sở hữu và kiểm soát máy chủ cộng đồng.\n\nMáy chủ có thể chứa nội dung do người dùng tạo và không phù hợp với mọi lứa tuổi.
|
||||||
servers.showhidden = Hiển thị Máy chủ Ẩn
|
servers.showhidden = Hiển thị Máy chủ Ẩn
|
||||||
server.shown = Hiện
|
server.shown = Hiện
|
||||||
server.hidden = Ẩn
|
server.hidden = Ẩn
|
||||||
@@ -279,6 +292,7 @@ cancel = Hủy
|
|||||||
openlink = Mở link
|
openlink = Mở link
|
||||||
copylink = Sao chép link
|
copylink = Sao chép link
|
||||||
back = Quay lại
|
back = Quay lại
|
||||||
|
max = Tối đa
|
||||||
crash.export = Xuất Crash Logs
|
crash.export = Xuất Crash Logs
|
||||||
crash.none = Không có Crash Logs nào được tìm thấy.
|
crash.none = Không có Crash Logs nào được tìm thấy.
|
||||||
crash.exported = Crash logs đã được xuất.
|
crash.exported = Crash logs đã được xuất.
|
||||||
@@ -298,6 +312,7 @@ cancelbuilding = [accent][[{0}][] để hủy xây
|
|||||||
selectschematic = [accent][[{0}][] to để chọn+sao chép
|
selectschematic = [accent][[{0}][] to để chọn+sao chép
|
||||||
pausebuilding = [accent][[{0}][] để tạm dừng xây dựng
|
pausebuilding = [accent][[{0}][] để tạm dừng xây dựng
|
||||||
resumebuilding = [scarlet][[{0}][] để tiếp tục xây dựng
|
resumebuilding = [scarlet][[{0}][] để tiếp tục xây dựng
|
||||||
|
enablebuilding = [scarlet][[{0}][] để bật xây dựng
|
||||||
showui = UI hidden.\nPress [accent][[{0}][] để hiện UI.
|
showui = UI hidden.\nPress [accent][[{0}][] để hiện UI.
|
||||||
wave = [accent]Đợt {0}
|
wave = [accent]Đợt {0}
|
||||||
wave.cap = [accent]Đợt {0}/{1}
|
wave.cap = [accent]Đợt {0}/{1}
|
||||||
@@ -353,7 +368,6 @@ editor.center = Trung tâm
|
|||||||
workshop = Workshop
|
workshop = Workshop
|
||||||
waves.title = Đợt
|
waves.title = Đợt
|
||||||
waves.remove = Xóa
|
waves.remove = Xóa
|
||||||
waves.never = <vô hạn>
|
|
||||||
waves.every = mỗi
|
waves.every = mỗi
|
||||||
waves.waves = đợt
|
waves.waves = đợt
|
||||||
waves.perspawn = mỗi lần xuất hiện
|
waves.perspawn = mỗi lần xuất hiện
|
||||||
@@ -382,7 +396,7 @@ editor.removeunit = Xóa kẻ địch
|
|||||||
editor.teams = Đội
|
editor.teams = Đội
|
||||||
editor.errorload = Lỗi khi tải tệp.
|
editor.errorload = Lỗi khi tải tệp.
|
||||||
editor.errorsave = Lỗi khi lưu tệp.
|
editor.errorsave = Lỗi khi lưu tệp.
|
||||||
editor.errorimage = Đó là một hình ảnh, không phải bản đồ.\n\nNếu bạn muốn nhập một bản đồ 3.5/build 40, sử dụng nút 'Nhập bản đồ thay thế' trong trình chỉnh sửa.
|
editor.errorimage = Đó là một hình ảnh, không phải bản đồ.
|
||||||
editor.errorlegacy = Bản đồ này quá cũ, và sử dụng định dạng bản đồ cũ không còn được hỗ trợ.
|
editor.errorlegacy = Bản đồ này quá cũ, và sử dụng định dạng bản đồ cũ không còn được hỗ trợ.
|
||||||
editor.errornot = Đây không phải là tệp bản đồ.
|
editor.errornot = Đây không phải là tệp bản đồ.
|
||||||
editor.errorheader = Tệp bản đồ này không hợp lệ hoặc bị hỏng.
|
editor.errorheader = Tệp bản đồ này không hợp lệ hoặc bị hỏng.
|
||||||
@@ -672,9 +686,10 @@ stat.drillspeed = Tốc độ khoang cơ bản
|
|||||||
stat.boosteffect = Hiệu ứng tăng cường
|
stat.boosteffect = Hiệu ứng tăng cường
|
||||||
stat.maxunits = Số quân lính hoạt động tối đa
|
stat.maxunits = Số quân lính hoạt động tối đa
|
||||||
stat.health = Độ bền
|
stat.health = Độ bền
|
||||||
|
stat.armor = Giáp
|
||||||
stat.buildtime = Thời gian xây
|
stat.buildtime = Thời gian xây
|
||||||
stat.maxconsecutive = Đầu ra tối đa
|
stat.maxconsecutive = Đầu ra tối đa
|
||||||
stat.buildcost = Chi phí
|
stat.buildcost = Yêu cầu
|
||||||
stat.inaccuracy = Độ lệch
|
stat.inaccuracy = Độ lệch
|
||||||
stat.shots = Phát bắn
|
stat.shots = Phát bắn
|
||||||
stat.reload = Phát bắn/Giây
|
stat.reload = Phát bắn/Giây
|
||||||
@@ -687,6 +702,7 @@ stat.lightningchance = Tỷ lệ phóng điện
|
|||||||
stat.lightningdamage = Sát thương tia điện
|
stat.lightningdamage = Sát thương tia điện
|
||||||
stat.flammability = Dễ cháy
|
stat.flammability = Dễ cháy
|
||||||
stat.radioactivity = Phóng xạ
|
stat.radioactivity = Phóng xạ
|
||||||
|
stat.charge = Phóng điện
|
||||||
stat.heatcapacity = Nhiệt dung
|
stat.heatcapacity = Nhiệt dung
|
||||||
stat.viscosity = Độ nhớt
|
stat.viscosity = Độ nhớt
|
||||||
stat.temperature = Nhiệt độ
|
stat.temperature = Nhiệt độ
|
||||||
@@ -699,12 +715,13 @@ stat.commandlimit = Giới hạn lệnh
|
|||||||
stat.abilities = Khả năng
|
stat.abilities = Khả năng
|
||||||
stat.canboost = Nâng cấp
|
stat.canboost = Nâng cấp
|
||||||
stat.flying = Bay
|
stat.flying = Bay
|
||||||
|
stat.ammouse = Sử dụng đạn
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = Tạo khiên
|
||||||
ability.repairfield = Repair Field
|
ability.repairfield = Sửa chữa/Xây dựng
|
||||||
ability.statusfield = Status Field
|
ability.statusfield = Status Field
|
||||||
ability.unitspawn = {0} Factory
|
ability.unitspawn = Sản xuất {0}
|
||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Tạo khiên nhỏ
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
|
|
||||||
bar.drilltierreq = Cần máy khoan tốt hơn
|
bar.drilltierreq = Cần máy khoan tốt hơn
|
||||||
@@ -713,6 +730,7 @@ bar.corereq = Yêu cầu căn cứ
|
|||||||
bar.drillspeed = Tốc độ khoan: {0}/giây
|
bar.drillspeed = Tốc độ khoan: {0}/giây
|
||||||
bar.pumpspeed = Tốc độ bơm: {0}/giây
|
bar.pumpspeed = Tốc độ bơm: {0}/giây
|
||||||
bar.efficiency = Hiệu suất: {0}%
|
bar.efficiency = Hiệu suất: {0}%
|
||||||
|
bar.boost = Tăng tốc: {0}%
|
||||||
bar.powerbalance = Năng lượng: {0}/giây
|
bar.powerbalance = Năng lượng: {0}/giây
|
||||||
bar.powerstored = Lưu trữ: {0}/{1}
|
bar.powerstored = Lưu trữ: {0}/{1}
|
||||||
bar.poweramount = Năng lượng: {0}
|
bar.poweramount = Năng lượng: {0}
|
||||||
@@ -721,7 +739,6 @@ bar.powerlines = Số lượng kết nối: {0}/{1}
|
|||||||
bar.items = Vật phẩm: {0}
|
bar.items = Vật phẩm: {0}
|
||||||
bar.capacity = Sức chứa: {0}
|
bar.capacity = Sức chứa: {0}
|
||||||
bar.unitcap = {0} {1}/{2}
|
bar.unitcap = {0} {1}/{2}
|
||||||
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[quân lính bị vô hiệu hóa]
|
|
||||||
bar.liquid = Chất lỏng
|
bar.liquid = Chất lỏng
|
||||||
bar.heat = Nhiệt độ
|
bar.heat = Nhiệt độ
|
||||||
bar.power = Năng lượng
|
bar.power = Năng lượng
|
||||||
@@ -735,12 +752,13 @@ bullet.damage = [stat]{0}[lightgray] sát thương
|
|||||||
bullet.splashdamage = [stat]{0}[lightgray] sát thương diện rộng ~[stat] {1}[lightgray] ô
|
bullet.splashdamage = [stat]{0}[lightgray] sát thương diện rộng ~[stat] {1}[lightgray] ô
|
||||||
bullet.incendiary = [stat]cháy
|
bullet.incendiary = [stat]cháy
|
||||||
bullet.sapping = [stat]sapping
|
bullet.sapping = [stat]sapping
|
||||||
bullet.homing = [stat]homing
|
bullet.homing = [stat]truy đuổi
|
||||||
bullet.shock = [stat]sốc
|
bullet.shock = [stat]sốc
|
||||||
bullet.frag = [stat]frag
|
bullet.buildingdamage = [stat]{0}%[lightgray] sát thương khối
|
||||||
|
bullet.frag = [stat]phá mảnh
|
||||||
bullet.knockback = [stat]{0}[lightgray] bật lùi
|
bullet.knockback = [stat]{0}[lightgray] bật lùi
|
||||||
bullet.pierce = [stat]{0}[lightgray]x xuyên giáp
|
bullet.pierce = [stat]{0}[lightgray]x xuyên giáp
|
||||||
bullet.infinitepierce = [stat]pierce
|
bullet.infinitepierce = [stat]xuyên thấu
|
||||||
bullet.healpercent = [stat]{0}[lightgray]% sửa chửa
|
bullet.healpercent = [stat]{0}[lightgray]% sửa chửa
|
||||||
bullet.freezing = [stat]đóng băng
|
bullet.freezing = [stat]đóng băng
|
||||||
bullet.tarred = [stat]tarred
|
bullet.tarred = [stat]tarred
|
||||||
@@ -763,9 +781,10 @@ unit.timesspeed = x tốc độ
|
|||||||
unit.percent = %
|
unit.percent = %
|
||||||
unit.shieldhealth = độ bền khiên
|
unit.shieldhealth = độ bền khiên
|
||||||
unit.items = vật phẩm
|
unit.items = vật phẩm
|
||||||
unit.thousands = nghìn
|
unit.thousands = k
|
||||||
unit.millions = triệu
|
unit.millions = mil
|
||||||
unit.billions = tỷ
|
unit.billions = b
|
||||||
|
unit.pershot = /shot
|
||||||
category.purpose = Mô tả
|
category.purpose = Mô tả
|
||||||
category.general = Chung
|
category.general = Chung
|
||||||
category.power = Năng lượng
|
category.power = Năng lượng
|
||||||
@@ -782,14 +801,15 @@ setting.hints.name = Gợi ý
|
|||||||
setting.flow.name = Hiện thị tốc độ chuyền tài nguyên
|
setting.flow.name = Hiện thị tốc độ chuyền tài nguyên
|
||||||
setting.backgroundpause.name = Tạm dừng trong nền
|
setting.backgroundpause.name = Tạm dừng trong nền
|
||||||
setting.buildautopause.name = Tự động dừng xây dựng
|
setting.buildautopause.name = Tự động dừng xây dựng
|
||||||
|
setting.modcrashdisable.name = Tắt các mod khi gặp sự cố trong khởi động
|
||||||
setting.animatedwater.name = Hiệu ứng nước
|
setting.animatedwater.name = Hiệu ứng nước
|
||||||
setting.animatedshields.name = Hiệu ứng khiên
|
setting.animatedshields.name = Hiệu ứng khiên
|
||||||
setting.antialias.name = Khử răng cưa[lightgray] (yêu cầu khởi động lại)[]
|
setting.antialias.name = Khử răng cưa[lightgray] (yêu cầu khởi động lại)[]
|
||||||
setting.playerindicators.name = Hướng người chơi
|
setting.playerindicators.name = Hướng người chơi
|
||||||
setting.indicators.name = Hướng kẻ địch
|
setting.indicators.name = Hướng kẻ địch
|
||||||
setting.autotarget.name = Tự động nhắm mục tiêu
|
setting.autotarget.name = Tự động nhắm mục tiêu
|
||||||
setting.keyboard.name = Điều khiển bằng chuột+bàn phím
|
setting.keyboard.name = Điều khiển bằng chuột + bàn phím
|
||||||
setting.touchscreen.name = Điều khiển bằng màng hình cảm ứng
|
setting.touchscreen.name = Điều khiển bằng màn hình cảm ứng
|
||||||
setting.fpscap.name = FPS tối đa
|
setting.fpscap.name = FPS tối đa
|
||||||
setting.fpscap.none = Không giới hạn
|
setting.fpscap.none = Không giới hạn
|
||||||
setting.fpscap.text = {0} FPS
|
setting.fpscap.text = {0} FPS
|
||||||
@@ -810,13 +830,13 @@ setting.sensitivity.name = Độ nhạy điều khiển
|
|||||||
setting.saveinterval.name = Khoảng thời gian lưu
|
setting.saveinterval.name = Khoảng thời gian lưu
|
||||||
setting.seconds = {0} giây
|
setting.seconds = {0} giây
|
||||||
setting.milliseconds = {0} mili giây
|
setting.milliseconds = {0} mili giây
|
||||||
setting.fullscreen.name = Toàn màng hình
|
setting.fullscreen.name = Toàn màn hình
|
||||||
setting.borderlesswindow.name = Không viền[lightgray] (yêu cầu khởi động lại)
|
setting.borderlesswindow.name = Không viền[lightgray] (yêu cầu khởi động lại)
|
||||||
setting.fps.name = Hiển thị FPS & Ping
|
setting.fps.name = Hiển thị FPS & Ping
|
||||||
setting.smoothcamera.name = Chế độ mượt mà
|
setting.smoothcamera.name = Chế độ mượt mà
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.pixelate.name = Đồ họa pixel
|
setting.pixelate.name = Đồ họa pixel
|
||||||
setting.minimap.name = Hiển thị bảng đồ mini
|
setting.minimap.name = Hiển thị bản đồ mini
|
||||||
setting.coreitems.name = Hiển thị vật phẩm trong căn cứ
|
setting.coreitems.name = Hiển thị vật phẩm trong căn cứ
|
||||||
setting.position.name = Hiển thị vị trí người chơi
|
setting.position.name = Hiển thị vị trí người chơi
|
||||||
setting.musicvol.name = Âm lượng nhạc
|
setting.musicvol.name = Âm lượng nhạc
|
||||||
@@ -833,7 +853,9 @@ setting.chatopacity.name = Độ mờ trò chuyện
|
|||||||
setting.lasersopacity.name = Độ mờ kết nối năng lượng
|
setting.lasersopacity.name = Độ mờ kết nối năng lượng
|
||||||
setting.bridgeopacity.name = Độ mờ cầu
|
setting.bridgeopacity.name = Độ mờ cầu
|
||||||
setting.playerchat.name = Hiển thị bong bóng trò chuyện của người chơi
|
setting.playerchat.name = Hiển thị bong bóng trò chuyện của người chơi
|
||||||
|
setting.showweather.name = Hiển thị đồ họa thời tiết
|
||||||
public.confirm = Bạn có muốn công khai trò chơi của mình không?\n[accent]Bất kỳ ai cũng có thể tham gia trò chơi của bạn.\n[lightgray]Điều này có thể được thay đổi sau trong Cài đặt-> Trò chơi-> Hiển thị trò chơi công khai.
|
public.confirm = Bạn có muốn công khai trò chơi của mình không?\n[accent]Bất kỳ ai cũng có thể tham gia trò chơi của bạn.\n[lightgray]Điều này có thể được thay đổi sau trong Cài đặt-> Trò chơi-> Hiển thị trò chơi công khai.
|
||||||
|
public.confirm.really = Nếu bạn muốn chơi với bạn bè, sử dụng [green]Invite Friend[] thay vì [scarlet]Public server[]!\nBạn có chắc chắn muốn làm trò chơi của mình [scarlet]công khai[]?
|
||||||
public.beta = Lưu ý rằng phiên bản beta của trò chơi không thể tạo sảnh công khai.
|
public.beta = Lưu ý rằng phiên bản beta của trò chơi không thể tạo sảnh công khai.
|
||||||
uiscale.reset = Kích thước UI đã được thay đổi.\nNhấn "OK" để xác nhận.\n[scarlet]Hoàn lại và thoát trong[accent] {0}[] giây...
|
uiscale.reset = Kích thước UI đã được thay đổi.\nNhấn "OK" để xác nhận.\n[scarlet]Hoàn lại và thoát trong[accent] {0}[] giây...
|
||||||
uiscale.cancel = Hủy & Thoát
|
uiscale.cancel = Hủy & Thoát
|
||||||
@@ -855,17 +877,17 @@ keybind.clear_building.name = Xóa công trình
|
|||||||
keybind.press = Nhấn một phím...
|
keybind.press = Nhấn một phím...
|
||||||
keybind.press.axis = Nhấn một tổ hợp phím hoặc một phím...
|
keybind.press.axis = Nhấn một tổ hợp phím hoặc một phím...
|
||||||
keybind.screenshot.name = Chụp ảnh bản đồ
|
keybind.screenshot.name = Chụp ảnh bản đồ
|
||||||
keybind.toggle_power_lines.name = Toggle Power Lasers
|
keybind.toggle_power_lines.name = Ẩn/Hiện đường truyền năng lượng
|
||||||
keybind.toggle_block_status.name = Toggle Block Statuses
|
keybind.toggle_block_status.name = Ẩn/Hiện trạng thái khối
|
||||||
keybind.move_x.name = Di chuyển X
|
keybind.move_x.name = Di chuyển X
|
||||||
keybind.move_y.name = Di chuyển Y
|
keybind.move_y.name = Di chuyển Y
|
||||||
keybind.mouse_move.name = Theo chuột
|
keybind.mouse_move.name = Theo chuột
|
||||||
keybind.pan.name = Xem Pan
|
keybind.pan.name = Di chuyển góc nhìn
|
||||||
keybind.boost.name = Tăng tốc
|
keybind.boost.name = Tăng tốc
|
||||||
keybind.schematic_select.name = Chọn khu vực
|
keybind.schematic_select.name = Chọn khu vực
|
||||||
keybind.schematic_menu.name = Menu Schematic
|
keybind.schematic_menu.name = Menu bản thiết kế
|
||||||
keybind.schematic_flip_x.name = Lật Schematic X
|
keybind.schematic_flip_x.name = Lật bản thiết kế X
|
||||||
keybind.schematic_flip_y.name = Lật Schematic Y
|
keybind.schematic_flip_y.name = Lật bản thiết kế Y
|
||||||
keybind.category_prev.name = Danh mục trước
|
keybind.category_prev.name = Danh mục trước
|
||||||
keybind.category_next.name = Danh mục tiếp theo
|
keybind.category_next.name = Danh mục tiếp theo
|
||||||
keybind.block_select_left.name = Chọn khối trái
|
keybind.block_select_left.name = Chọn khối trái
|
||||||
@@ -903,11 +925,12 @@ keybind.chat.name = Trò chuyện
|
|||||||
keybind.player_list.name = Danh sách người chơi
|
keybind.player_list.name = Danh sách người chơi
|
||||||
keybind.console.name = Bảng điều khiển
|
keybind.console.name = Bảng điều khiển
|
||||||
keybind.rotate.name = Xoay
|
keybind.rotate.name = Xoay
|
||||||
keybind.rotateplaced.name = Xoay hiện có (Giữ)
|
keybind.rotateplaced.name = Xoay khối (Giữ)
|
||||||
keybind.toggle_menus.name = Chuyển đổi Menus
|
keybind.toggle_menus.name = Ẩn/Hiện Menus
|
||||||
keybind.chat_history_prev.name = Lịch sử trò chuyện trước
|
keybind.chat_history_prev.name = Lịch sử trò chuyện trước
|
||||||
keybind.chat_history_next.name = Lịch sử trò chuyện sau
|
keybind.chat_history_next.name = Lịch sử trò chuyện sau
|
||||||
keybind.chat_scroll.name = Cuộn trò chuyện
|
keybind.chat_scroll.name = Cuộn trò chuyện
|
||||||
|
keybind.chat_mode.name = Thay đổi chế độ trò chuyện
|
||||||
keybind.drop_unit.name = Thả quân
|
keybind.drop_unit.name = Thả quân
|
||||||
keybind.zoom_minimap.name = Thu phóng bản đồ mini
|
keybind.zoom_minimap.name = Thu phóng bản đồ mini
|
||||||
mode.help.title = Mô tả chế độ
|
mode.help.title = Mô tả chế độ
|
||||||
@@ -924,7 +947,8 @@ mode.custom = Tùy chỉnh luật
|
|||||||
|
|
||||||
rules.infiniteresources = Tài nguyên vô hạn
|
rules.infiniteresources = Tài nguyên vô hạn
|
||||||
rules.reactorexplosions = Nổ lò phản ứng
|
rules.reactorexplosions = Nổ lò phản ứng
|
||||||
rules.schematic = Cho phép dùng schematic
|
rules.coreincinerates = Hủy vật phẩm khi căn cứ đầy
|
||||||
|
rules.schematic = Cho phép dùng bản thiết kế
|
||||||
rules.wavetimer = Đếm ngược đợt
|
rules.wavetimer = Đếm ngược đợt
|
||||||
rules.waves = Đợt
|
rules.waves = Đợt
|
||||||
rules.attack = Chế độ tấn công
|
rules.attack = Chế độ tấn công
|
||||||
@@ -935,6 +959,8 @@ rules.blockdamagemultiplier = Hệ số sát thương của khối
|
|||||||
rules.unitbuildspeedmultiplier = Hệ số tốc độ sản xuất lính
|
rules.unitbuildspeedmultiplier = Hệ số tốc độ sản xuất lính
|
||||||
rules.unithealthmultiplier = Hệ số máu của quân lính
|
rules.unithealthmultiplier = Hệ số máu của quân lính
|
||||||
rules.unitdamagemultiplier = Hệ số sát thương của quân lính
|
rules.unitdamagemultiplier = Hệ số sát thương của quân lính
|
||||||
|
rules.unitcapvariable = Căn cứ tăng giới hạn quân lính
|
||||||
|
rules.unitcap = Giới hạn quân lính
|
||||||
rules.enemycorebuildradius = Bán kính không xây dựng trong căn cứ của kẻ địch:[lightgray] (ô)
|
rules.enemycorebuildradius = Bán kính không xây dựng trong căn cứ của kẻ địch:[lightgray] (ô)
|
||||||
rules.wavespacing = Thời gian giữa các đợt:[lightgray] (giây)
|
rules.wavespacing = Thời gian giữa các đợt:[lightgray] (giây)
|
||||||
rules.buildcostmultiplier = Hệ số chi phí xây dựng
|
rules.buildcostmultiplier = Hệ số chi phí xây dựng
|
||||||
@@ -956,6 +982,7 @@ rules.explosions = Sát thương nổ của Khối/Quân lính
|
|||||||
rules.ambientlight = Ánh sáng môi trường
|
rules.ambientlight = Ánh sáng môi trường
|
||||||
rules.weather = Thời tiết
|
rules.weather = Thời tiết
|
||||||
rules.weather.frequency = Tần suất:
|
rules.weather.frequency = Tần suất:
|
||||||
|
rules.weather.always = Luôn luôn
|
||||||
rules.weather.duration = Thời gian:
|
rules.weather.duration = Thời gian:
|
||||||
|
|
||||||
content.item.name = Vật phẩm
|
content.item.name = Vật phẩm
|
||||||
@@ -971,19 +998,19 @@ item.graphite.name = Than chì
|
|||||||
item.titanium.name = Titan
|
item.titanium.name = Titan
|
||||||
item.thorium.name = Thorium
|
item.thorium.name = Thorium
|
||||||
item.silicon.name = Silicon
|
item.silicon.name = Silicon
|
||||||
item.plastanium.name = Plastanium
|
item.plastanium.name = Nhựa
|
||||||
item.phase-fabric.name = Phase Fabric
|
item.phase-fabric.name = Phase Fabric
|
||||||
item.surge-alloy.name = Surge Alloy
|
item.surge-alloy.name = Hợp kim
|
||||||
item.spore-pod.name = Vỏ bào tử
|
item.spore-pod.name = Vỏ bào tử
|
||||||
item.sand.name = Cát
|
item.sand.name = Cát
|
||||||
item.blast-compound.name = Chất nổ
|
item.blast-compound.name = Chất nổ
|
||||||
item.pyratite.name = Pyratite
|
item.pyratite.name = Nhiệt thạch
|
||||||
item.metaglass.name = Metaglass
|
item.metaglass.name = Thuỷ tinh
|
||||||
item.scrap.name = Phế liệu
|
item.scrap.name = Phế liệu
|
||||||
liquid.water.name = Nước
|
liquid.water.name = Nước
|
||||||
liquid.slag.name = Xỉ nóng chảy
|
liquid.slag.name = Xỉ nóng chảy
|
||||||
liquid.oil.name = Dầu
|
liquid.oil.name = Dầu
|
||||||
liquid.cryofluid.name = Cryofluid
|
liquid.cryofluid.name = Chất làm lạnh
|
||||||
|
|
||||||
#Why we should translate this ???
|
#Why we should translate this ???
|
||||||
unit.dagger.name = Dagger
|
unit.dagger.name = Dagger
|
||||||
@@ -1044,14 +1071,14 @@ block.moss.name = Rêu
|
|||||||
block.shrubs.name = Bụi cây
|
block.shrubs.name = Bụi cây
|
||||||
block.spore-moss.name = Rêu bào tử
|
block.spore-moss.name = Rêu bào tử
|
||||||
block.shale-wall.name = Tường đá phiến sét
|
block.shale-wall.name = Tường đá phiến sét
|
||||||
block.scrap-wall.name = Tường sắt vụn
|
block.scrap-wall.name = Tường phế liệu
|
||||||
block.scrap-wall-large.name = Tường phế liệu lớn
|
block.scrap-wall-large.name = Tường phế liệu lớn
|
||||||
block.scrap-wall-huge.name = Tường phế liệu khổng lồ
|
block.scrap-wall-huge.name = Tường phế liệu khổng lồ
|
||||||
block.scrap-wall-gigantic.name = Tường phế liệu siêu khổng lồ
|
block.scrap-wall-gigantic.name = Tường phế liệu siêu khổng lồ
|
||||||
block.thruster.name = Thruster
|
block.thruster.name = Thruster
|
||||||
block.kiln.name = Lò nung
|
block.kiln.name = Lò nung
|
||||||
block.graphite-press.name = Máy nén thang chì
|
block.graphite-press.name = Máy nén than chì
|
||||||
block.multi-press.name = Máy nén thang chì lớn
|
block.multi-press.name = Máy nén than chì lớn
|
||||||
block.constructing = {0} [lightgray](Đang xây dựng)
|
block.constructing = {0} [lightgray](Đang xây dựng)
|
||||||
block.spawn.name = Khu vực tạo ra kẻ địch
|
block.spawn.name = Khu vực tạo ra kẻ địch
|
||||||
block.core-shard.name = Căn cứ: Cơ sở
|
block.core-shard.name = Căn cứ: Cơ sở
|
||||||
@@ -1105,8 +1132,8 @@ block.copper-wall.name = Tường đồng
|
|||||||
block.copper-wall-large.name = Tường đồng lớn
|
block.copper-wall-large.name = Tường đồng lớn
|
||||||
block.titanium-wall.name = Tường titan
|
block.titanium-wall.name = Tường titan
|
||||||
block.titanium-wall-large.name = Tường titan lớn
|
block.titanium-wall-large.name = Tường titan lớn
|
||||||
block.plastanium-wall.name = Tường Plastanium
|
block.plastanium-wall.name = Tường Nhựa
|
||||||
block.plastanium-wall-large.name = Tường Plastanium lớn
|
block.plastanium-wall-large.name = Tường Nhựa lớn
|
||||||
block.phase-wall.name = Tường Phase
|
block.phase-wall.name = Tường Phase
|
||||||
block.phase-wall-large.name = Tường Phase lớn
|
block.phase-wall-large.name = Tường Phase lớn
|
||||||
block.thorium-wall.name = Tường Thorium
|
block.thorium-wall.name = Tường Thorium
|
||||||
@@ -1120,29 +1147,29 @@ block.hail.name = Hail
|
|||||||
block.lancer.name = Lancer
|
block.lancer.name = Lancer
|
||||||
block.conveyor.name = Băng chuyền
|
block.conveyor.name = Băng chuyền
|
||||||
block.titanium-conveyor.name = Băng chuyền titan
|
block.titanium-conveyor.name = Băng chuyền titan
|
||||||
block.plastanium-conveyor.name = Băng chuyền Plastanium
|
block.plastanium-conveyor.name = Băng chuyền nhựa
|
||||||
block.armored-conveyor.name = Băng chuyền bọc thép
|
block.armored-conveyor.name = Băng chuyền bọc giáp
|
||||||
block.junction.name = Junction
|
block.junction.name = Giao điểm
|
||||||
block.router.name = Router
|
block.router.name = Bộ phân phát
|
||||||
block.distributor.name = Distributor
|
block.distributor.name = Bộ phân phát lớn
|
||||||
block.sorter.name = Sorter
|
block.sorter.name = Bộ lọc
|
||||||
block.inverted-sorter.name = Sorter ngược
|
block.inverted-sorter.name = Bộ lọc ngược
|
||||||
block.message.name = Thông điệp
|
block.message.name = Thông điệp
|
||||||
block.illuminator.name = Đèn
|
block.illuminator.name = Đèn
|
||||||
block.overflow-gate.name = Overflow Gate
|
block.overflow-gate.name = Cổng tràn
|
||||||
block.underflow-gate.name = Underflow Gate
|
block.underflow-gate.name = Cổng tràn ngược
|
||||||
block.silicon-smelter.name = Máy nấu silicon
|
block.silicon-smelter.name = Máy nấu silicon
|
||||||
block.phase-weaver.name = Máy tạo Phase
|
block.phase-weaver.name = Máy tạo Phase
|
||||||
block.pulverizer.name = Máy nghiền
|
block.pulverizer.name = Máy nghiền
|
||||||
block.cryofluid-mixer.name = Máy trộn Cryofluid
|
block.cryofluid-mixer.name = Máy sản xuất chất làm lạnh
|
||||||
block.melter.name = Máy nung chảy
|
block.melter.name = Lò nung chảy
|
||||||
block.incinerator.name = Máy phân hủy
|
block.incinerator.name = Máy phân hủy
|
||||||
block.spore-press.name = Máy nén bào tử
|
block.spore-press.name = Máy nén bào tử
|
||||||
block.separator.name = Máy phân tách
|
block.separator.name = Máy phân tách
|
||||||
block.coal-centrifuge.name = Máy tạo than
|
block.coal-centrifuge.name = Máy tạo than
|
||||||
block.power-node.name = Chốt điện
|
block.power-node.name = Chốt điện
|
||||||
block.power-node-large.name = Chốt điện lớn
|
block.power-node-large.name = Chốt điện lớn
|
||||||
block.surge-tower.name = Tháp Surge
|
block.surge-tower.name = Tháp điện
|
||||||
block.diode.name = Diode pin
|
block.diode.name = Diode pin
|
||||||
block.battery.name = Pin
|
block.battery.name = Pin
|
||||||
block.battery-large.name = Pin lớn
|
block.battery-large.name = Pin lớn
|
||||||
@@ -1151,7 +1178,7 @@ block.steam-generator.name = Máy phát điện hơi nước
|
|||||||
block.differential-generator.name = Máy phát điện vi sai
|
block.differential-generator.name = Máy phát điện vi sai
|
||||||
block.impact-reactor.name = Lò phản ứng nhiệt hạch
|
block.impact-reactor.name = Lò phản ứng nhiệt hạch
|
||||||
block.mechanical-drill.name = Máy khoan cơ khí
|
block.mechanical-drill.name = Máy khoan cơ khí
|
||||||
block.pneumatic-drill.name = Khoan khí nén
|
block.pneumatic-drill.name = Máy khoan khí nén
|
||||||
block.laser-drill.name = Máy khoan laser
|
block.laser-drill.name = Máy khoan laser
|
||||||
block.water-extractor.name = Máy khoan nước
|
block.water-extractor.name = Máy khoan nước
|
||||||
block.cultivator.name = Máy nuôi cấy bào tử
|
block.cultivator.name = Máy nuôi cấy bào tử
|
||||||
@@ -1162,41 +1189,41 @@ block.item-void.name = Hủy vật phẩm
|
|||||||
block.liquid-source.name = Nguồn chất lỏng
|
block.liquid-source.name = Nguồn chất lỏng
|
||||||
block.liquid-void.name = Hủy chất lỏng
|
block.liquid-void.name = Hủy chất lỏng
|
||||||
block.power-void.name = Hủy năng lượng
|
block.power-void.name = Hủy năng lượng
|
||||||
block.power-source.name = Vô hạn năng lượng
|
block.power-source.name = Nguồn năng lượng
|
||||||
block.unloader.name = Unloader
|
block.unloader.name = Điểm dỡ hàng
|
||||||
block.vault.name = Vault
|
block.vault.name = Nhà kho
|
||||||
block.wave.name = Wave
|
block.wave.name = Wave
|
||||||
block.tsunami.name = Tsunami
|
block.tsunami.name = Tsunami
|
||||||
block.swarmer.name = Swarmer
|
block.swarmer.name = Swarmer
|
||||||
block.salvo.name = Salvo
|
block.salvo.name = Salvo
|
||||||
block.ripple.name = Ripple
|
block.ripple.name = Ripple
|
||||||
block.phase-conveyor.name = Phase Conveyor
|
block.phase-conveyor.name = Phase Conveyor
|
||||||
block.bridge-conveyor.name = Bridge Conveyor
|
block.bridge-conveyor.name = Cầu dẫn
|
||||||
block.plastanium-compressor.name = Máy nén Plastanium
|
block.plastanium-compressor.name = Máy sản xuất nhựa
|
||||||
block.pyratite-mixer.name = Máy trộn Pyratite
|
block.pyratite-mixer.name = Máy trộn nhiệt thạch
|
||||||
block.blast-mixer.name = Máy trộn chất nổ
|
block.blast-mixer.name = Máy trộn chất nổ
|
||||||
block.solar-panel.name = Pin mặt trời
|
block.solar-panel.name = Pin mặt trời
|
||||||
block.solar-panel-large.name = Pin mặt trời lớn
|
block.solar-panel-large.name = Pin mặt trời lớn
|
||||||
block.oil-extractor.name = Máy khoan dầu
|
block.oil-extractor.name = Máy khoan dầu
|
||||||
block.repair-point.name = Điểm sửa chữa
|
block.repair-point.name = Điểm sửa chữa
|
||||||
block.pulse-conduit.name = Ống dẫn titan
|
block.pulse-conduit.name = Ống dẫn titan
|
||||||
block.plated-conduit.name = Ống dẫn bọc thép
|
block.plated-conduit.name = Ống dẫn bọc giáp
|
||||||
block.phase-conduit.name = Ống dẫn Phase
|
block.phase-conduit.name = Ống dẫn Phase
|
||||||
block.liquid-router.name = Liquid Router
|
block.liquid-router.name = Bộ phân phát chất lỏng
|
||||||
block.liquid-tank.name = Thùng chất lỏng
|
block.liquid-tank.name = Thùng chất lỏng
|
||||||
block.liquid-junction.name = Liquid Junction
|
block.liquid-junction.name = Giao điểm chất lỏng
|
||||||
block.bridge-conduit.name = Bridge Conduit
|
block.bridge-conduit.name = Cầu dẫn chất lỏng
|
||||||
block.rotary-pump.name = Bơm điện
|
block.rotary-pump.name = Bơm điện
|
||||||
block.thorium-reactor.name = Lò phản ứng Thorium
|
block.thorium-reactor.name = Lò phản ứng Thorium
|
||||||
block.mass-driver.name = Mass Driver
|
block.mass-driver.name = Máy phóng điện từ
|
||||||
block.blast-drill.name = Máy khoang thủy lực
|
block.blast-drill.name = Máy khoan thủy lực
|
||||||
block.thermal-pump.name = Bơm nhiệt
|
block.thermal-pump.name = Bơm nhiệt
|
||||||
block.thermal-generator.name = Máy phát nhiệt điện
|
block.thermal-generator.name = Máy phát nhiệt điện
|
||||||
block.alloy-smelter.name = Lò luyện hợp kim
|
block.alloy-smelter.name = Lò luyện hợp kim
|
||||||
block.mender.name = Máy sửa chữa
|
block.mender.name = Máy sửa chữa
|
||||||
block.mend-projector.name = Máy sửa lớn
|
block.mend-projector.name = Máy sửa lớn
|
||||||
block.surge-wall.name = Tường Surge
|
block.surge-wall.name = Tường hợp kim
|
||||||
block.surge-wall-large.name = Tường Surge lớn
|
block.surge-wall-large.name = Tường hợp kim lớn
|
||||||
block.cyclone.name = Cyclone
|
block.cyclone.name = Cyclone
|
||||||
block.fuse.name = Fuse
|
block.fuse.name = Fuse
|
||||||
block.shock-mine.name = Mìn gây sốc
|
block.shock-mine.name = Mìn gây sốc
|
||||||
@@ -1220,22 +1247,22 @@ block.multiplicative-reconstructor.name = Máy nâng cấp quân đội cấp 3
|
|||||||
block.exponential-reconstructor.name = Máy nâng cấp quân đội cấp 4
|
block.exponential-reconstructor.name = Máy nâng cấp quân đội cấp 4
|
||||||
block.tetrative-reconstructor.name = Máy nâng cấp quân đội cấp 5
|
block.tetrative-reconstructor.name = Máy nâng cấp quân đội cấp 5
|
||||||
block.payload-conveyor.name = Băng chuyền khối hàng
|
block.payload-conveyor.name = Băng chuyền khối hàng
|
||||||
block.payload-router.name = Payload Router
|
block.payload-router.name = Bộ định tuyến khối hàng
|
||||||
block.disassembler.name = Máy phân tách lớn
|
block.disassembler.name = Máy phân tách lớn
|
||||||
block.silicon-crucible.name = Máy nấu Silicon lớn
|
block.silicon-crucible.name = Máy nấu Silicon lớn
|
||||||
block.overdrive-dome.name = Máy tăng tốc lớn
|
block.overdrive-dome.name = Máy tăng tốc lớn
|
||||||
#experimental, may be removed
|
#experimental, may be removed
|
||||||
block.block-forge.name = Block Forge
|
block.block-forge.name = Block Forge
|
||||||
block.block-loader.name = Block Loader
|
block.block-loader.name = Block Loader
|
||||||
block.block-unloader.name = Block Unloader
|
block.block-unloader.name = Điểm dỡ hàng
|
||||||
block.interplanetary-accelerator.name = Máy gia tốc liên hành tinh
|
block.interplanetary-accelerator.name = Máy gia tốc liên hành tinh
|
||||||
|
|
||||||
block.switch.name = Công tắc
|
block.switch.name = Công tắc
|
||||||
block.micro-processor.name = Bộ xử lí mini
|
block.micro-processor.name = Bộ xử lí nhỏ
|
||||||
block.logic-processor.name = Bộ xử lý
|
block.logic-processor.name = Bộ xử lý
|
||||||
block.hyper-processor.name = Bộ xử lý lớn
|
block.hyper-processor.name = Bộ xử lý lớn
|
||||||
block.logic-display.name = Màng hình
|
block.logic-display.name = Màn hình
|
||||||
block.large-logic-display.name = Màng hình lớn
|
block.large-logic-display.name = Màn hình lớn
|
||||||
block.memory-cell.name = Bộ nhớ
|
block.memory-cell.name = Bộ nhớ
|
||||||
block.memory-bank.name = Bộ nhớ lớn
|
block.memory-bank.name = Bộ nhớ lớn
|
||||||
|
|
||||||
@@ -1282,6 +1309,9 @@ hint.payloadDrop.mobile = [accent]Nhấn và giữ[] tại một khu vực trố
|
|||||||
hint.waveFire = [accent]Wave[] súng có nước làm đạn dược sẽ tự động dập tắt các đám cháy gần đó.
|
hint.waveFire = [accent]Wave[] súng có nước làm đạn dược sẽ tự động dập tắt các đám cháy gần đó.
|
||||||
hint.generator = \uf879 [accent]Máy phát điện đốt cháy[] đốt than và truyền năng lượng cho các khối liền kề.\n\nPhạm vi truyền tải năng lượng có thể được mở rộng với \uf87f [accent]Chốt điện[].
|
hint.generator = \uf879 [accent]Máy phát điện đốt cháy[] đốt than và truyền năng lượng cho các khối liền kề.\n\nPhạm vi truyền tải năng lượng có thể được mở rộng với \uf87f [accent]Chốt điện[].
|
||||||
hint.guardian = [accent]Boss[] được bọc giáp. Sử dụng loại đạn yếu chẳng hạn như [accent]Đồng[] và [accent]Chì[] là [scarlet]không hiệu quả[].\n\nSử dụng súng tiên tiến hơn hoặc sử dụng \uf835 [accent]Than chì làm đạn [] \uf861Duo/\uf859Salvo đạn dược để hạ gục Boss.
|
hint.guardian = [accent]Boss[] được bọc giáp. Sử dụng loại đạn yếu chẳng hạn như [accent]Đồng[] và [accent]Chì[] là [scarlet]không hiệu quả[].\n\nSử dụng súng tiên tiến hơn hoặc sử dụng \uf835 [accent]Than chì làm đạn [] \uf861Duo/\uf859Salvo đạn dược để hạ gục Boss.
|
||||||
|
hint.coreUpgrade = Các căn cứ có thể được nâng cấp bằng cách [accent]đặt căn cứ cấp cao hơn trên chúng[].\n\nĐặt một căn cứ [accent]Trụ sở[] trên căn cứ [accent]Cơ sở[]. Đảm bảo không có vật cản gần đó.
|
||||||
|
hint.presetLaunch = Khác khu vực đáp [accent] xám[], như [accent]Frozen Forest[], có thể được phóng đến từ bất cứ đâu. Nó không yêu cầu chiếm các khu vực lân cận.\n\n[accent]Các khu vực được đánh số[], chẳng hạn như cái này, là [accent]không bắt buộc[].
|
||||||
|
hint.coopCampaign = Khi chơi chiến dịch[accent]co-op[], các vật phẩm được sản xuất trong bản đồ hiện tại cũng sẽ được gửi [accent]đến các khu vực của bạn[].\n\nBất kỳ nghiên cứu mới nào được thực hiện đều được lưu lại.
|
||||||
|
|
||||||
item.copper.description = Dùng trong tất cả các khu xây dựng và các loại đạn dược.
|
item.copper.description = Dùng trong tất cả các khu xây dựng và các loại đạn dược.
|
||||||
item.copper.details = Đồng, là kim loại phổ biến trên Serpulo. Có cấu trúc yếu trừ khi được tôi luyện.
|
item.copper.details = Đồng, là kim loại phổ biến trên Serpulo. Có cấu trúc yếu trừ khi được tôi luyện.
|
||||||
@@ -1307,41 +1337,41 @@ item.pyratite.description = Dùng trong vũ khí gây cháy và máy phát đi
|
|||||||
|
|
||||||
liquid.water.description = Dùng để làm mát máy móc và xử lý chất thải.
|
liquid.water.description = Dùng để làm mát máy móc và xử lý chất thải.
|
||||||
liquid.slag.description = Dùng để tách các kim loại, hoặc phun vào kẻ thù như một loại vũ khí.
|
liquid.slag.description = Dùng để tách các kim loại, hoặc phun vào kẻ thù như một loại vũ khí.
|
||||||
liquid.oil.description = Dùng trong sản xuất vật liệu tiên tiến và làm đạn gây cháycháy.
|
liquid.oil.description = Dùng trong sản xuất vật liệu tiên tiến và làm đạn gây cháy.
|
||||||
liquid.cryofluid.description = Dùng làm chất làm mát trong lò phản ứng, súng và nhà máy.
|
liquid.cryofluid.description = Dùng làm chất làm mát trong lò phản ứng, súng và nhà máy.
|
||||||
|
|
||||||
block.resupply-point.description = Cung cấp đạn đồng cho các quân lính ở gần. Không tương thích với quân lính sử dụng điện.
|
block.resupply-point.description = Cung cấp đạn đồng cho các quân lính ở gần. Không tương thích với quân lính sử dụng điện.
|
||||||
block.armored-conveyor.description = Vận chuyển vật phẩm về phía . Không nhận đầu vào từ phía bên.
|
block.armored-conveyor.description = Vận chuyển vật phẩm về phía. Không nhận đầu vào từ phía bên.
|
||||||
block.illuminator.description = Phát sáng.
|
block.illuminator.description = Phát sáng.
|
||||||
block.message.description = Lưu trữ tin nhắn giao tiếp giữa đồng đội.
|
block.message.description = Lưu trữ tin nhắn giao tiếp giữa đồng đội.
|
||||||
block.graphite-press.description = Nén than thành than chì.
|
block.graphite-press.description = Nén than thành than chì.
|
||||||
block.multi-press.description = Nén than thành than chì. Cần nước làm chất làm mát.
|
block.multi-press.description = Nén than thành than chì. Cần nước làm mát.
|
||||||
block.silicon-smelter.description = Tinh chế silicon từ cát và than.
|
block.silicon-smelter.description = Tinh chế silicon từ cát và than.
|
||||||
block.kiln.description = Nấu chảy cát và chì thành metaglass.
|
block.kiln.description = Nấu chảy cát và chì thành thuỷ tinh.
|
||||||
block.plastanium-compressor.description = Sản xuất plastanium từ dầu và titan.
|
block.plastanium-compressor.description = Sản xuất nhựa từ dầu và titan.
|
||||||
block.phase-weaver.description = Tổng hợp phase fabric từ thorium và cát.
|
block.phase-weaver.description = Tổng hợp phase fabric từ thorium và cát.
|
||||||
block.alloy-smelter.description = Trộn titan, chì, silicon và đồng thành hợp kim surge.
|
block.alloy-smelter.description = Trộn titan, chì, silicon và đồng thành hợp kim.
|
||||||
block.cryofluid-mixer.description = Trộn nước và bột titan để sản xuất cryofluid.
|
block.cryofluid-mixer.description = Trộn nước và bột titan để sản xuất chất làm mát.
|
||||||
block.blast-mixer.description = Tạo ra hợp chất nổ từ pyratite và vỏ bào tử.
|
block.blast-mixer.description = Tạo ra hợp chất nổ từ nhiệt thạch và vỏ bào tử.
|
||||||
block.pyratite-mixer.description = Trộn than, chì và cát thành pyratite.
|
block.pyratite-mixer.description = Trộn than, chì và cát thành nhiệt thạch.
|
||||||
block.melter.description = Nung phế liệu thành xỉ.
|
block.melter.description = Nung phế liệu thành xỉ.
|
||||||
block.separator.description = Tách xỉ thành các thành phần khoáng của nó.
|
block.separator.description = Tách xỉ thành các thành phần khoáng của nó.
|
||||||
block.spore-press.description = Nén vỏ bào tử thành dầu.
|
block.spore-press.description = Nén vỏ bào tử thành dầu.
|
||||||
block.pulverizer.description = Nghiền phế liệu thành cát.
|
block.pulverizer.description = Nghiền phế liệu thành cát.
|
||||||
block.coal-centrifuge.description = Biến dầu thành than.
|
block.coal-centrifuge.description = Biến dầu thành than.
|
||||||
block.incinerator.description = Tiêu hủy bất kỳ vật phẩm hoặc chất lỏng nào mà nó nhận được.
|
block.incinerator.description = Tiêu hủy bất kỳ vật phẩm hoặc chất lỏng nào mà nó nhận được.
|
||||||
block.power-void.description = Hủy tất cả năng lượng nhận được. Chỉ có trong chế độ Sandbox.
|
block.power-void.description = Hủy tất cả năng lượng nhận được. Chỉ có trong chế độ tự do.
|
||||||
block.power-source.description = Tạo ra năng lượng mãi mãi. Chỉ có trong chế độ Sandbox.
|
block.power-source.description = Tạo ra năng lượng mãi mãi. Chỉ có trong chế độ tự do.
|
||||||
block.item-source.description = Tạo ra vật phẩm mãi mãi. Chỉ có trong chế độ Sandbox.
|
block.item-source.description = Tạo ra vật phẩm mãi mãi. Chỉ có trong chế độ tự do.
|
||||||
block.item-void.description = Hủy mọi vật phẩm. Chỉ có trong chế độ Sandbox.
|
block.item-void.description = Hủy mọi vật phẩm. Chỉ có trong chế độ tự do.
|
||||||
block.liquid-source.description = Tạo ra chất lỏng mãi mãi. Chỉ có trong chế độ Sandbox.
|
block.liquid-source.description = Tạo ra chất lỏng mãi mãi. Chỉ có trong chế độ tự do.
|
||||||
block.liquid-void.description = Loại bỏ mọi chất lỏng. Chỉ có trong chế độ Sandbox.
|
block.liquid-void.description = Loại bỏ mọi chất lỏng. Chỉ có trong chế độ tự do.
|
||||||
block.copper-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù.
|
block.copper-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù.
|
||||||
block.copper-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù.
|
block.copper-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù.
|
||||||
block.titanium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù.
|
block.titanium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù.
|
||||||
block.titanium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù.
|
block.titanium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù.
|
||||||
block.plastanium-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù. Hấp thụ tia laser và tia điện. Chặn kết nối nguồn tự động.
|
block.plastanium-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù. Hấp thụ tia laser và tia điện. Chặn kết nối điện tự động.
|
||||||
block.plastanium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù. Hấp thụ tia laser và tia điện. Chặn kết nối nguồn tự động.
|
block.plastanium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù. Hấp thụ tia laser và tia điện. Chặn kết nối điện tự động.
|
||||||
block.thorium-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù.
|
block.thorium-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù.
|
||||||
block.thorium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù.
|
block.thorium-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù.
|
||||||
block.phase-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù, phản hầu hết đạn khi va chạm.
|
block.phase-wall.description = Bảo vệ công trình khỏi đạn của kẻ thù, phản hầu hết đạn khi va chạm.
|
||||||
@@ -1350,10 +1380,10 @@ block.surge-wall.description = Bảo vệ công trình khỏi đạn của kẻ
|
|||||||
block.surge-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù, đôi khi tạo ra tia điện khi bị bắn.
|
block.surge-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù, đôi khi tạo ra tia điện khi bị bắn.
|
||||||
block.door.description = Một bức tường có thể đóng mở.
|
block.door.description = Một bức tường có thể đóng mở.
|
||||||
block.door-large.description = Một bức tường có thể đóng mở.
|
block.door-large.description = Một bức tường có thể đóng mở.
|
||||||
block.mender.description = Sửa chữa định kỳ các khối trong vùng lân cận.\nSử dụng silicon để tăng phạm vi và hiệu quả.
|
block.mender.description = Sửa chữa định kỳ các khối trong vùng lân cận.\nSử dụng Phase Fabric để tăng phạm vi và hiệu quả.
|
||||||
block.mend-projector.description = Sửa chữa các khối lân cận.\nSử dụng silicon để tăng phạm vi và hiệu quả.
|
block.mend-projector.description = Sửa chữa các khối lân cận.\nSử dụng Phase Fabric để tăng phạm vi và hiệu quả.
|
||||||
block.overdrive-projector.description = Tăng tốc độ làm việc của các công trình lân cận.\nSử dụng phase fabric để tăng phạm vi và hiệu quả.
|
block.overdrive-projector.description = Tăng tốc độ làm việc của các công trình lân cận.\nSử dụng phase fabric để tăng phạm vi và hiệu quả.
|
||||||
block.force-projector.description = Tạo ra một trường lực lục giác xung quanh nó, bảo vệ các tòa nhà và quân lính bên trong khỏi bị hư hại.\nQuá nóng nếu chịu quá nhiều sát thương. Sử dụng chất làm mát để giảm nhiệt độ. Sử dụng Phase fabric để tăng kích thước lá chắn.
|
block.force-projector.description = Tạo ra một trường lực lục giác xung quanh nó, bảo vệ các công trình và quân lính bên trong khỏi bị hư hại.\nQuá nóng nếu chịu quá nhiều sát thương. Sử dụng chất làm mát để giảm nhiệt độ. Sử dụng Phase fabric để tăng kích thước lá chắn.
|
||||||
block.shock-mine.description = Giải phóng tia điện khi tiếp xúc với quân lính đối phương.
|
block.shock-mine.description = Giải phóng tia điện khi tiếp xúc với quân lính đối phương.
|
||||||
block.conveyor.description = Vận chuyển vật phẩm về phía trước.
|
block.conveyor.description = Vận chuyển vật phẩm về phía trước.
|
||||||
block.titanium-conveyor.description = Vận chuyển vật phẩm về phía trước. Nhanh hơn băng chuyền tiêu chuẩn.
|
block.titanium-conveyor.description = Vận chuyển vật phẩm về phía trước. Nhanh hơn băng chuyền tiêu chuẩn.
|
||||||
@@ -1366,9 +1396,9 @@ block.inverted-sorter.description = Giống như máy phân loại, nhưng vật
|
|||||||
block.router.description = Phân phối các vật phẩm đầu vào thành 3 hướng đầu ra như nhau.
|
block.router.description = Phân phối các vật phẩm đầu vào thành 3 hướng đầu ra như nhau.
|
||||||
block.router.details = Không khuyên dùng cạnh đầu vào dây chuyền vì sẽ bị kẹt bởi đầu ra.
|
block.router.details = Không khuyên dùng cạnh đầu vào dây chuyền vì sẽ bị kẹt bởi đầu ra.
|
||||||
block.distributor.description = Phân phối các vật phẩm đầu vào thành 7 hướng đầu ra như nhau.
|
block.distributor.description = Phân phối các vật phẩm đầu vào thành 7 hướng đầu ra như nhau.
|
||||||
block.overflow-gate.description = Chỉ đưa vật phẩm ra 2 phía nếu phía trước bị chặn, không thể đặt cạnh nhau.
|
block.overflow-gate.description = Chỉ đưa vật phẩm ra 2 phía nếu phía trước bị chặn.
|
||||||
block.underflow-gate.description = Ngược với cổng tràn, chỉ đưa vật phẩm đến trước khi hai bên bị chặn, không thể đặt cạnh nhau.
|
block.underflow-gate.description = Ngược với cổng tràn, chỉ đưa vật phẩm đến trước khi hai bên bị chặn.
|
||||||
block.mass-driver.description = Cấu trúc vận chuyển vật phẩm tầm xa. Thu thập các lô vật phẩm và bắn chúng cho các mass driver khác.
|
block.mass-driver.description = Cấu trúc vận chuyển vật phẩm tầm xa. Thu thập các lô vật phẩm và bắn chúng cho các máy phóng điện từ khác.
|
||||||
block.mechanical-pump.description = Bơm chất lỏng, không yêu cầu năng lượng.
|
block.mechanical-pump.description = Bơm chất lỏng, không yêu cầu năng lượng.
|
||||||
block.rotary-pump.description = Bơm chất lỏng, yêu cầu năng lượng.
|
block.rotary-pump.description = Bơm chất lỏng, yêu cầu năng lượng.
|
||||||
block.thermal-pump.description = Bơm chất lỏng.
|
block.thermal-pump.description = Bơm chất lỏng.
|
||||||
@@ -1389,7 +1419,7 @@ block.battery-large.description = Tích trữ năng lượng khi dư thừa. Xu
|
|||||||
block.combustion-generator.description = Tạo ra năng lượng bằng cách đốt các vật liệu dễ cháy như than.
|
block.combustion-generator.description = Tạo ra năng lượng bằng cách đốt các vật liệu dễ cháy như than.
|
||||||
block.thermal-generator.description = Tạo ra năng lượng khi đặt ở những nơi nóng.
|
block.thermal-generator.description = Tạo ra năng lượng khi đặt ở những nơi nóng.
|
||||||
block.steam-generator.description = Tạo ra năng lượng bằng cách đốt cháy các vật liệu dễ cháy và chuyển nước thành hơi nước.
|
block.steam-generator.description = Tạo ra năng lượng bằng cách đốt cháy các vật liệu dễ cháy và chuyển nước thành hơi nước.
|
||||||
block.differential-generator.description = Tạo ra một lượng lớn năng lượng. Sử dụng sự chênh lệch nhiệt độ giữa cryofluid và pyratite đang cháy.
|
block.differential-generator.description = Tạo ra một lượng lớn năng lượng. Sử dụng sự chênh lệch nhiệt độ giữa chất làm lạnh và nhiệt thạch đang cháy.
|
||||||
block.rtg-generator.description = Sử dụng nhiệt của các hợp chất phóng xạ đang phân hủy để tạo ra năng lượng với tốc độ chậm.
|
block.rtg-generator.description = Sử dụng nhiệt của các hợp chất phóng xạ đang phân hủy để tạo ra năng lượng với tốc độ chậm.
|
||||||
block.solar-panel.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời.
|
block.solar-panel.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời.
|
||||||
block.solar-panel-large.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời. Hiệu quả hơn pin mặt trời tiêu chuẩn.
|
block.solar-panel-large.description = Cung cấp một lượng nhỏ năng lượng từ mặt trời. Hiệu quả hơn pin mặt trời tiêu chuẩn.
|
||||||
@@ -1405,34 +1435,34 @@ block.cultivator.details = Công nghệ được phục hồi. Được sử d
|
|||||||
block.oil-extractor.description = Sử dụng lượng năng lượng năng lớn, sử dụng cát và nước để khoan dầu.
|
block.oil-extractor.description = Sử dụng lượng năng lượng năng lớn, sử dụng cát và nước để khoan dầu.
|
||||||
block.core-shard.description = Trung tâm của căn cứ. Sau khi bị phá hủy, khu vực này sẽ bị mất.
|
block.core-shard.description = Trung tâm của căn cứ. Sau khi bị phá hủy, khu vực này sẽ bị mất.
|
||||||
block.core-shard.details = Lần thử đầu tiên. Gọn nhẹ. Tự thay thế. Được trang bị tên lửa đẩy dùng một lần. Không được thiết kế để di chuyển giữa các hành tinh.
|
block.core-shard.details = Lần thử đầu tiên. Gọn nhẹ. Tự thay thế. Được trang bị tên lửa đẩy dùng một lần. Không được thiết kế để di chuyển giữa các hành tinh.
|
||||||
block.core-foundation.description = Core of the base. Well armored. Stores more resources than a Shard.
|
block.core-foundation.description = Trung tâm của căn cứ. Được bọc giáp. Chứa được nhiều tài nguyên hơn Căn cứ: Cơ sỏ.
|
||||||
block.core-foundation.details = The second iteration.
|
block.core-foundation.details = Căn cứ cấp 2.
|
||||||
block.core-nucleus.description = Lõi của căn cứ. Bọc giáp chắc chắn. Lưu trữ lượng lớn tài nguyên.
|
block.core-nucleus.description = Lõi của căn cứ. Bọc giáp chắc chắn. Lưu trữ lượng lớn tài nguyên.
|
||||||
block.core-nucleus.details = Lần thử thứ ba và lần thử cuối.
|
block.core-nucleus.details = Căn cứ cấp 3 và cũng là cấp cao nhất.
|
||||||
block.vault.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với Unloader.
|
block.vault.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với điểm dỡ hàng.
|
||||||
block.container.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với Unloader.
|
block.container.description = Lưu trữ lượng lớn vật phẩm mỗi loại. Nội dung có thể được lấy ra với điểm dỡ hàng.
|
||||||
block.unloader.description = Lấy các vật phẩm được chọn từ các ô gần đó.
|
block.unloader.description = Lấy các vật phẩm được chọn từ các ô gần đó.
|
||||||
block.launch-pad.description = Phóng lô vật phẩm vào phân vùng.
|
block.launch-pad.description = Phóng lô vật phẩm vào phân vùng.
|
||||||
block.duo.description = Bắn xen kẽ đạn vào kẻ địch.
|
block.duo.description = Bắn xen kẽ đạn vào kẻ địch.
|
||||||
block.scatter.description = Bắn chì, phế liệu hoặc metaglass vào máy bay địch.
|
block.scatter.description = Bắn chì, phế liệu hoặc thuỷ tinh vào kẻ địch trên không.
|
||||||
block.scorch.description = Đốt mọi kẻ địch trên mặt đất. Hiệu quả cao ở tầm gần.
|
block.scorch.description = Đốt mọi kẻ địch trên mặt đất. Hiệu quả cao ở tầm gần.
|
||||||
block.hail.description = Phóng đạn nhỏ vào kẻ địch trên mặt đất ở tầm xa.
|
block.hail.description = Phóng đạn nhỏ vào kẻ địch trên mặt đất ở tầm xa.
|
||||||
block.wave.description = Phóng một tia chất lỏng vào kẻ địch. Tự chữa cháy nếu được cung cấp nước.
|
block.wave.description = Phóng một tia chất lỏng vào kẻ địch. Tự chữa cháy nếu được cung cấp nước.
|
||||||
block.lancer.description = Tích tụ và phóng tia năng lượng mạnh vào kẻ địch trên mặt đất.
|
block.lancer.description = Tích tụ và phóng tia năng lượng mạnh vào kẻ địch trên mặt đất.
|
||||||
block.arc.description = Phóng tia điện vào kẻ địch trên mặt đất.
|
block.arc.description = Phóng tia điện vào kẻ địch trên mặt đất.
|
||||||
block.swarmer.description = Bắn tên lửa homing vào kẻ địch.
|
block.swarmer.description = Bắn tên lửa truy đuổi vào kẻ địch.
|
||||||
block.salvo.description = Bắn đạn salvo vào kẻ địch.
|
block.salvo.description = Bắn loạt đạn vào kẻ địch.
|
||||||
block.fuse.description = Bắn ba đạn xuyên giáp tầm gần vào kẻ địch.
|
block.fuse.description = Bắn ba đạn xuyên giáp tầm gần vào kẻ địch.
|
||||||
block.ripple.description = Bắn cụm đạn vào kẻ địch trên mặt đất ở tầm xa.
|
block.ripple.description = Bắn cụm đạn vào kẻ địch trên mặt đất ở tầm xa.
|
||||||
block.cyclone.description = Bắn đạn nổ vào kẻ địch ở gần.
|
block.cyclone.description = Bắn đạn nổ vào kẻ địch ở gần.
|
||||||
block.spectre.description = Bắn đạn xuyên giáp lớn ở kẻ địch trên không và trên mặt đất.
|
block.spectre.description = Bắn đạn xuyên giáp lớn ở kẻ địch trên không và trên mặt đất.
|
||||||
block.meltdown.description = Nạp và bắn một tia laser liên tục vào kẻ địch ở gần. Cần có chất làm mát để hoạt động.
|
block.meltdown.description = Nạp và bắn một tia laser liên tục vào kẻ địch ở gần. Cần có chất làm mát để hoạt động.
|
||||||
block.foreshadow.description = Bắn viên một viên đạn tỉa lớn ở tầm xa.
|
block.foreshadow.description = Bắn viên một viên đạn tỉa lớn ở tầm xa.
|
||||||
block.repair-point.description = Liên tục sửa chữa robot ở gần trong phạm vi hoạt động.
|
block.repair-point.description = Liên tục sửa chữa robot ở trong phạm vi hoạt động.
|
||||||
block.segment.description = Gây hư hại và phá hủy đạn đến. Ngoại trừ tia laser.
|
block.segment.description = Gây hư hại và phá hủy đạn đến. Ngoại trừ tia laser.
|
||||||
block.parallax.description = Bắn một tia kéo máy bay địch và làm hư hỏng nó trong quá trình kéo.
|
block.parallax.description = Bắn một tia kéo máy bay địch và làm hư hỏng nó trong quá trình kéo.
|
||||||
block.tsunami.description = Phóng một tia chất lỏng mạnh vào kẻ địch. Tự chữa cháy nếu được cung cấp nước.
|
block.tsunami.description = Phóng một tia chất lỏng mạnh vào kẻ địch. Tự chữa cháy nếu được cung cấp nước hoặc chất làm mát.
|
||||||
block.silicon-crucible.description = Tinh chế silicon từ cát và than, sử dụng pyratite làm nguồn nhiệt phụ. Có hiệu quả cao hơn khi ở nơi nóng.
|
block.silicon-crucible.description = Tinh chế silicon từ cát và than, sử dụng tiền chất nổ làm nguồn nhiệt phụ. Có hiệu quả cao hơn khi ở nơi nóng.
|
||||||
block.disassembler.description = Tách xỉ thành các kim loại khác nhau với hiệu suất thấp. Có thể sản xuất thorium.
|
block.disassembler.description = Tách xỉ thành các kim loại khác nhau với hiệu suất thấp. Có thể sản xuất thorium.
|
||||||
block.overdrive-dome.description = Tăng tốc độ làm việc của các công trình lân cận. Sử dụng phase fabric and silicon để hoạt động.
|
block.overdrive-dome.description = Tăng tốc độ làm việc của các công trình lân cận. Sử dụng phase fabric and silicon để hoạt động.
|
||||||
block.payload-conveyor.description = Di chuyển những khối hàng lớn, chẳng hạn như các quân lính từ nhà máy.
|
block.payload-conveyor.description = Di chuyển những khối hàng lớn, chẳng hạn như các quân lính từ nhà máy.
|
||||||
@@ -1447,12 +1477,12 @@ block.exponential-reconstructor.description = Nâng cấp quân của bạn lên
|
|||||||
block.tetrative-reconstructor.description = Nâng cấp quân của bạn nên cấp năm (cuối cùng).
|
block.tetrative-reconstructor.description = Nâng cấp quân của bạn nên cấp năm (cuối cùng).
|
||||||
block.switch.description = Công tắc, trạng thái có thể được đọc và điều khiển với vi xử lí logic.
|
block.switch.description = Công tắc, trạng thái có thể được đọc và điều khiển với vi xử lí logic.
|
||||||
block.micro-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình.
|
block.micro-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình.
|
||||||
block.logic-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn vi xử lí micro.
|
block.logic-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn bộ xử lí nhỏ.
|
||||||
block.hyper-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn vi xử lí logic.
|
block.hyper-processor.description = Chạy tập hợp các chỉ dẫn trong một vòng lặp, có thể dùng để điều khiển robot và công trình. Nhanh hơn bộ xử lí.
|
||||||
block.memory-cell.description = Lưu trữ thông tin cho bộ xử lí logic.
|
block.memory-cell.description = Lưu trữ thông tin cho bộ xử lí.
|
||||||
block.memory-bank.description = Lưu trữ thông tin cho bộ xử lí logic. Dung lượng cao.
|
block.memory-bank.description = Lưu trữ thông tin cho bộ xử lí. Dung lượng cao.
|
||||||
block.logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí logic.
|
block.logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí.
|
||||||
block.large-logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí logic.
|
block.large-logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí.
|
||||||
block.interplanetary-accelerator.description = Tòa súng từ trường cỡ lớn. Tăng tốc vật phóng đến vận tốc thoát để di chuyển giữa các hành tinh.
|
block.interplanetary-accelerator.description = Tòa súng từ trường cỡ lớn. Tăng tốc vật phóng đến vận tốc thoát để di chuyển giữa các hành tinh.
|
||||||
|
|
||||||
unit.dagger.description = Bắn đạn tiêu chuẩn vào tất cả kẻ địch xung quanh.
|
unit.dagger.description = Bắn đạn tiêu chuẩn vào tất cả kẻ địch xung quanh.
|
||||||
@@ -1466,7 +1496,7 @@ unit.quasar.description = Bắn tia laser xuyên giáp làm tổn hại kẻ đ
|
|||||||
unit.vela.description = Bắn tia laser liên tục xuyên giáp làm tổn hại kẻ địch, gây cháy và sửa chữa các tòa nhà. Có khả năng bay.
|
unit.vela.description = Bắn tia laser liên tục xuyên giáp làm tổn hại kẻ địch, gây cháy và sửa chữa các tòa nhà. Có khả năng bay.
|
||||||
unit.corvus.description = Bắn đia laser đánh bật kẻ địch và sửa chữa các tòa nhà. Có thể đi qua đa số địa hình.
|
unit.corvus.description = Bắn đia laser đánh bật kẻ địch và sửa chữa các tòa nhà. Có thể đi qua đa số địa hình.
|
||||||
unit.crawler.description = Chạy đến kẻ địch và nổ.
|
unit.crawler.description = Chạy đến kẻ địch và nổ.
|
||||||
unit.atrax.description = Bắn cục xỉ vào kẻ địch trên mặt đất. Có thể đi qua đa số địa hình.
|
unit.atrax.description = Phun xỉ nóng chảy vào kẻ địch trên mặt đất. Có thể đi qua đa số địa hình.
|
||||||
unit.spiroct.description = Bắn tia laser vào kẻ địch trên mặt đất và tự sửa chữa nó. Có thể đi qua đa số địa hình.
|
unit.spiroct.description = Bắn tia laser vào kẻ địch trên mặt đất và tự sửa chữa nó. Có thể đi qua đa số địa hình.
|
||||||
unit.arkyid.description = Bắn tia laser lớn vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình.
|
unit.arkyid.description = Bắn tia laser lớn vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình.
|
||||||
unit.toxopid.description = Bắn chùm đạn điện và tia laser xuyên giáp vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình.
|
unit.toxopid.description = Bắn chùm đạn điện và tia laser xuyên giáp vào kẻ địch trên mặt đất và tự sửa chữa chính nó. Có thể đi qua đa số địa hình.
|
||||||
@@ -1479,12 +1509,148 @@ unit.mono.description = Tự động khai thác đồng và chì, và vận chuy
|
|||||||
unit.poly.description = Tự động xây dựng lại các công trình bị hỏng và hỗ trợ các quân lính khác thi công.
|
unit.poly.description = Tự động xây dựng lại các công trình bị hỏng và hỗ trợ các quân lính khác thi công.
|
||||||
unit.mega.description = Tự động sửa chữa các công trình bị hỏng. Có khả năng mang bộ binh nhỏ.
|
unit.mega.description = Tự động sửa chữa các công trình bị hỏng. Có khả năng mang bộ binh nhỏ.
|
||||||
unit.quad.description = Thả bom to lên kẻ địch, sửa chữa các tòa nhà và tổn hại kẻ địch. Có khả năng mang bộ binh vừa.
|
unit.quad.description = Thả bom to lên kẻ địch, sửa chữa các tòa nhà và tổn hại kẻ địch. Có khả năng mang bộ binh vừa.
|
||||||
unit.oct.description = Bảo vệ đồng minh với giáp. Có kả năng mang đa số bộ binh.
|
unit.oct.description = Bảo vệ đồng minh với giáp. Có khả năng mang đa số bộ binh.
|
||||||
unit.risso.description = Bắn chùm tên lửa và đạn lên kẻ địch tầm gần.
|
unit.risso.description = Bắn chùm tên lửa và đạn lên kẻ địch tầm gần.
|
||||||
unit.minke.description = Bắn đạn và đạn thường lên kẻ địch tầm gần trên mặt đất.
|
unit.minke.description = Bắn đạn và đạn thường lên kẻ địch tầm gần trên mặt đất.
|
||||||
unit.bryde.description = Bắn đạn tầm xa và tên lửa vào kẻ địch.
|
unit.bryde.description = Bắn đạn tầm xa và tên lửa vào kẻ địch.
|
||||||
unit.sei.description = Bắn chùm tên lửa và đạn xuyên giáp vào kẻ địch.
|
unit.sei.description = Bắn chùm tên lửa và đạn xuyên giáp vào kẻ địch.
|
||||||
unit.omura.description = Bắn đạn từ trường xuyên giáp tầm xa vào kẻ địch. Tạo nên robot báo hiệu.
|
unit.omura.description = Bắn đạn từ trường xuyên giáp tầm xa vào kẻ địch. Tạo nên Flare.
|
||||||
unit.alpha.description = Bảo vệ căn cứ cơ sở khỏi kẻ thù. Có thể xây dựng.
|
unit.alpha.description = Bảo vệ căn cứ cơ sở khỏi kẻ thù. Có thể xây dựng.
|
||||||
unit.beta.description = Bảo vệ căn cứ trụ sở khỏi kẻ thù. Có thể xây dựng.
|
unit.beta.description = Bảo vệ căn cứ trụ sở khỏi kẻ thù. Có thể xây dựng.
|
||||||
unit.gamma.description = Bảo vệ căn cứ trung tâm khỏi kẻ thù. Có thể xây dựng.
|
unit.gamma.description = Bảo vệ căn cứ trung tâm khỏi kẻ thù. Có thể xây dựng.
|
||||||
|
|
||||||
|
lst.read = Đọc một số từ bộ nhớ được liên kết.
|
||||||
|
lst.write = Ghi một số vào bộ nhớ được liên kết.
|
||||||
|
lst.print = Thêm văn bản vào bộ nhớ in.\nKhông hiển thị gì cho đến khi sử dụng [accent]Print Flush[].
|
||||||
|
lst.draw = Thêm một thao tác vào bộ nhớ vẽ.\nKhông hiển thị gì cho đến khi sử dụng [accent]Draw Flush[].
|
||||||
|
lst.drawflush = Chuyển các thao tác [accent]Draw[] đến màng hình.
|
||||||
|
lst.printflush = Chuyển các thao tác [accent]Print[] đến khối tin nhắn.
|
||||||
|
lst.getlink = Nhận liên kết bộ xử lý theo thứ tự. Bắt đầu từ 0.
|
||||||
|
lst.control = Điều khiển một khối.
|
||||||
|
lst.radar = Định vị các quân lính trong phạm vi xung quanh một khối.
|
||||||
|
lst.sensor = Lấy dữ liệu từ một khối hoặc quân lính.
|
||||||
|
lst.set = Đặt một biến.
|
||||||
|
lst.operation = Thực hiện thao tác trên 1-2 biến.
|
||||||
|
lst.end = Chuyển đến lệnh đầu tiên.
|
||||||
|
lst.jump = Chuyển qua lệnh khác nếu điều kiện đúng.
|
||||||
|
lst.unitbind = Bind to the next unit of a type, and store it in [accent]@unit[].
|
||||||
|
lst.unitcontrol = Control the currently bound unit.
|
||||||
|
lst.unitradar = Locate units around the currently bound unit.
|
||||||
|
lst.unitlocate = Locate a specific type of position/building anywhere on the map.\nRequires a bound unit.
|
||||||
|
|
||||||
|
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
|
lenum.shoot = Bắn vào vị trí xác định.
|
||||||
|
lenum.shootp = Shoot at a unit/building with velocity prediction.
|
||||||
|
lenum.configure = Building configuration, e.g. sorter item.
|
||||||
|
lenum.enabled = Bất cứ khi nào khối hoạt động.
|
||||||
|
|
||||||
|
laccess.color = Màu đèn chiếu sáng.
|
||||||
|
|
||||||
|
graphicstype.clear = Tô màu cho màn hình.
|
||||||
|
graphicstype.color = Đặt màu cho thao tác vẽ tiếp theo.
|
||||||
|
graphicstype.stroke = Đặt chiều rộng đoạn thẳng.
|
||||||
|
graphicstype.line = Vẽ đoạn thẳng.
|
||||||
|
graphicstype.rect = Tô một hình chữ nhật.
|
||||||
|
graphicstype.linerect = Vẽ đường viền hình chữ nhật.
|
||||||
|
graphicstype.poly = Tô vào đa giác đều.
|
||||||
|
graphicstype.linepoly = Vẽ đường viền đa giác đều.
|
||||||
|
graphicstype.triangle = Tô một hình tam giác.
|
||||||
|
graphicstype.image = Vẽ hình ảnh một số nội dung.\nVd: [accent]@router[] hoặc [accent]@dagger[].
|
||||||
|
|
||||||
|
lenum.always = Luôn đúng.
|
||||||
|
lenum.idiv = Chia lấy phần nguyên.
|
||||||
|
lenum.div = Phép chia.\nTrả về [accent]null[] khi chia cho 0.
|
||||||
|
lenum.mod = Chia lấy phần dư.
|
||||||
|
lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0.
|
||||||
|
lenum.notequal = Not equal. Coerces types.
|
||||||
|
lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[].
|
||||||
|
lenum.shl = Bit-shift left.
|
||||||
|
lenum.shr = Bit-shift right.
|
||||||
|
lenum.or = Bitwise OR.
|
||||||
|
lenum.land = Logical AND.
|
||||||
|
lenum.and = Bitwise AND.
|
||||||
|
lenum.not = Bitwise flip.
|
||||||
|
lenum.xor = Bitwise XOR.
|
||||||
|
|
||||||
|
lenum.min = Số nhỏ nhất giữa hai số.
|
||||||
|
lenum.max = Số lớn nhất giữa hai số.
|
||||||
|
lenum.angle = Góc của vectơ tính bằng độ.
|
||||||
|
lenum.len = Chiều dài của vectơ.
|
||||||
|
lenum.sin = Sin, tính bằng độ.
|
||||||
|
lenum.cos = Cos, tính bằng độ.
|
||||||
|
lenum.tan = Tan, tính bằng độ.
|
||||||
|
#not a typo, look up 'range notation'
|
||||||
|
lenum.rand = Số ngẫu nhiên trong phạm vi [0, giá trị).
|
||||||
|
lenum.log = Lôgarit tự nhiên (ln).
|
||||||
|
lenum.log10 = Lôgarit cơ số 10.
|
||||||
|
lenum.noise = 2D simplex noise.
|
||||||
|
lenum.abs = Giá trị tuyệt đối.
|
||||||
|
lenum.sqrt = Căn bậc hai.
|
||||||
|
|
||||||
|
lenum.any = Bất kì quân lính.
|
||||||
|
lenum.ally = Quân lính cùng đội.
|
||||||
|
lenum.attacker = Quân lính với vũ khí.
|
||||||
|
lenum.enemy = Quân lính địch.
|
||||||
|
lenum.boss = Boss.
|
||||||
|
lenum.flying = Không quân.
|
||||||
|
lenum.ground = Bộ binh.
|
||||||
|
lenum.player = Quân lính do người chơi điều khiển.
|
||||||
|
|
||||||
|
lenum.ore = Ore deposit.
|
||||||
|
lenum.damaged = Damaged ally building.
|
||||||
|
lenum.spawn = Enemy spawn point.\nMay be a core or a position.
|
||||||
|
lenum.building = Building in a specific group.
|
||||||
|
|
||||||
|
lenum.core = Bất kì căn cứ.
|
||||||
|
lenum.storage = Khối lưu trữ, Ví dụ Nhà kho.
|
||||||
|
lenum.generator = Khối có thể tạo ra năng lượng.
|
||||||
|
lenum.factory = Khối có thể biến đổi vật phẩm.
|
||||||
|
lenum.repair = Điểm sửa chữa.
|
||||||
|
lenum.rally = Trung tâm chỉ huy.
|
||||||
|
lenum.battery = Bất kì pin.
|
||||||
|
lenum.resupply = Điểm tiếp tế.\nChỉ phù hợp khi [accent]"Quân lính cần đạn"[] được bật.
|
||||||
|
lenum.reactor = Lò phản ứng Thorium\Nhiệt hạch.
|
||||||
|
lenum.turret = Bất kì súng.
|
||||||
|
|
||||||
|
sensor.in = The building/unit to sense.
|
||||||
|
|
||||||
|
radar.from = Building to sense from.\nSensor range is limited by building range.
|
||||||
|
radar.target = Filter for units to sense.
|
||||||
|
radar.and = Additional filters.
|
||||||
|
radar.order = Sorting order. 0 to reverse.
|
||||||
|
radar.sort = Metric to sort results by.
|
||||||
|
radar.output = Variable to write output unit to.
|
||||||
|
|
||||||
|
unitradar.target = Filter for units to sense.
|
||||||
|
unitradar.and = Additional filters.
|
||||||
|
unitradar.order = Sorting order. 0 to reverse.
|
||||||
|
unitradar.sort = Metric to sort results by.
|
||||||
|
unitradar.output = Variable to write output unit to.
|
||||||
|
|
||||||
|
control.of = Building to control.
|
||||||
|
control.unit = Unit/building to aim at.
|
||||||
|
control.shoot = Whether to shoot.
|
||||||
|
|
||||||
|
unitlocate.enemy = Whether to locate enemy buildings.
|
||||||
|
unitlocate.found = Whether the object was found.
|
||||||
|
unitlocate.building = Output variable for located building.
|
||||||
|
unitlocate.outx = Output X coordinate.
|
||||||
|
unitlocate.outy = Output Y coordinate.
|
||||||
|
unitlocate.group = Building group to look for.
|
||||||
|
|
||||||
|
lenum.stop = Dừng di chuyển/Đào/Xây dựng.
|
||||||
|
lenum.move = Di chuyển đến vị trí xác định.
|
||||||
|
lenum.approach = Approach a position with a radius.
|
||||||
|
lenum.pathfind = Tìm đường đến nơi tạo ra kẻ địch.
|
||||||
|
lenum.target = Bắn vào vị trí xác định.
|
||||||
|
lenum.targetp = Shoot a target with velocity prediction.
|
||||||
|
lenum.itemdrop = Thả vật phẩm.
|
||||||
|
lenum.itemtake = Lấy vật phẩm từ khối.
|
||||||
|
lenum.paydrop = Thả khối hàng hiện tại.
|
||||||
|
lenum.paytake = Nhất khối hàng tại vị trí hiện tại.
|
||||||
|
lenum.flag = Numeric unit flag.
|
||||||
|
lenum.mine = Đào tại vị trí.
|
||||||
|
lenum.build = Xây công trình.
|
||||||
|
lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[].
|
||||||
|
lenum.within = Kiểm tra xem quân lính có gần vị trí không.
|
||||||
|
lenum.boost = Start/stop boosting.
|
||||||
@@ -13,6 +13,7 @@ link.google-play.description = Google Play 页面
|
|||||||
link.f-droid.description = F-Droid 页面
|
link.f-droid.description = F-Droid 页面
|
||||||
link.wiki.description = Mindustry 官方 Wiki
|
link.wiki.description = Mindustry 官方 Wiki
|
||||||
link.suggestions.description = 提出新特性的建议
|
link.suggestions.description = 提出新特性的建议
|
||||||
|
link.bug.description = 发现了 Bug ?在这里报告
|
||||||
linkfail = 打开链接失败!\n网址已复制到您的剪贴板。
|
linkfail = 打开链接失败!\n网址已复制到您的剪贴板。
|
||||||
screenshot = 屏幕截图已保存到 {0}
|
screenshot = 屏幕截图已保存到 {0}
|
||||||
screenshot.invalid = 地图太大,可能没有足够的内存用于截图。
|
screenshot.invalid = 地图太大,可能没有足够的内存用于截图。
|
||||||
@@ -22,7 +23,6 @@ gameover.pvp = [accent] {0}[]队获胜!
|
|||||||
gameover.waiting = [accent]正在更换下一张地图...
|
gameover.waiting = [accent]正在更换下一张地图...
|
||||||
highscore = [accent]新纪录!
|
highscore = [accent]新纪录!
|
||||||
copied = 已复制
|
copied = 已复制
|
||||||
indev.popup = [accent]6.0[]仍在[accent]测试版[].\n[lightgray]这意味着:[]\n[scarlet]- 战役玩法完全没有完成[]\n- 很多内容还没有做完\n- 大多[scarlet]单位AI[]无法正确地运行\n- 单位系统完全没有完成\n- 一切您所看到的内容都可能会移除或调整。\n\n在[accent]Github[]提交错误报告。
|
|
||||||
indev.notready = 这部分玩法还未开发完成。
|
indev.notready = 这部分玩法还未开发完成。
|
||||||
indev.campaign = [accent]恭喜!您已经到达战役模式的结尾![]\n\n这是目前内容的全部。 未来的更新中将添加行星际旅行。
|
indev.campaign = [accent]恭喜!您已经到达战役模式的结尾![]\n\n这是目前内容的全部。 未来的更新中将添加行星际旅行。
|
||||||
|
|
||||||
@@ -41,6 +41,11 @@ be.ignore = 忽略
|
|||||||
be.noupdates = 未发现更新。
|
be.noupdates = 未发现更新。
|
||||||
be.check = 检测更新
|
be.check = 检测更新
|
||||||
|
|
||||||
|
mod.featured.dialog.title = 模组浏览器 (尚未完成)
|
||||||
|
mods.browser.selected = 已选模组
|
||||||
|
mods.browser.add=安装
|
||||||
|
mods.github.open=查看
|
||||||
|
|
||||||
schematic = 蓝图
|
schematic = 蓝图
|
||||||
schematic.add = 保存蓝图…
|
schematic.add = 保存蓝图…
|
||||||
schematics = 蓝图
|
schematics = 蓝图
|
||||||
@@ -84,6 +89,7 @@ joingame = 加入游戏
|
|||||||
customgame = 自定义游戏
|
customgame = 自定义游戏
|
||||||
newgame = 新游戏
|
newgame = 新游戏
|
||||||
none = <无>
|
none = <无>
|
||||||
|
none.found = [lightgray]<未找到>
|
||||||
minimap = 小地图
|
minimap = 小地图
|
||||||
position = 位置
|
position = 位置
|
||||||
close = 关闭
|
close = 关闭
|
||||||
@@ -147,8 +153,12 @@ planetmap = 行星地图
|
|||||||
launchcore = 发射核心
|
launchcore = 发射核心
|
||||||
filename = 文件名:
|
filename = 文件名:
|
||||||
unlocked = 解锁了新内容!
|
unlocked = 解锁了新内容!
|
||||||
|
available = 可研究新科技!
|
||||||
completed = [accent]己研究
|
completed = [accent]己研究
|
||||||
techtree = 科技树
|
techtree = 科技树
|
||||||
|
research.legacy = 发现了 [accent]5.0[] 的研究数据。\n您想要[accent]加载数据[],还是[accent]丢弃数据[]并在新战役中重新研究(建议)?
|
||||||
|
research.load = 加载
|
||||||
|
research.discard = 丢弃
|
||||||
research.list = [lightgray]研究:
|
research.list = [lightgray]研究:
|
||||||
research = 研究
|
research = 研究
|
||||||
researched = [lightgray]{0}己研究。
|
researched = [lightgray]{0}己研究。
|
||||||
@@ -193,6 +203,7 @@ servers.local = 本地服务器
|
|||||||
servers.remote = 远程服务器
|
servers.remote = 远程服务器
|
||||||
servers.global = 全球服务器
|
servers.global = 全球服务器
|
||||||
|
|
||||||
|
servers.disclaimer=社区服务器[accent]不是[]由开发者拥有或管理。\n\n服务器中可能有其他玩家制作的不适当的内容。
|
||||||
servers.showhidden = 显示隐藏的服务器
|
servers.showhidden = 显示隐藏的服务器
|
||||||
server.shown = 显示
|
server.shown = 显示
|
||||||
server.hidden = 隐藏
|
server.hidden = 隐藏
|
||||||
@@ -230,6 +241,7 @@ disconnect.timeout = 连接超时。
|
|||||||
disconnect.data = 读取服务器数据失败!
|
disconnect.data = 读取服务器数据失败!
|
||||||
cantconnect = 无法加入([accent]{0}[])。
|
cantconnect = 无法加入([accent]{0}[])。
|
||||||
connecting = [accent]连接中…
|
connecting = [accent]连接中…
|
||||||
|
reconnecting = [accent]重新连接中…
|
||||||
connecting.data = [accent]加载中…
|
connecting.data = [accent]加载中…
|
||||||
server.port = 端口:
|
server.port = 端口:
|
||||||
server.addressinuse = 地址已在使用!
|
server.addressinuse = 地址已在使用!
|
||||||
@@ -593,6 +605,11 @@ sector.tarFields.description = 产油区边缘,位于山脉和沙漠之间。
|
|||||||
sector.desolateRift.description = 非常危险的区域。这儿的资源丰富但空间很小。敌人十分危险。尽快离开,不要被敌人的攻击间隔太长所愚弄。
|
sector.desolateRift.description = 非常危险的区域。这儿的资源丰富但空间很小。敌人十分危险。尽快离开,不要被敌人的攻击间隔太长所愚弄。
|
||||||
sector.nuclearComplex.description = 以前生产和加工钍的设施已变成废墟。\n[lightgray]研究钍及其多种用途。\n\n敌人在这里大量存在,不断消灭入侵者。
|
sector.nuclearComplex.description = 以前生产和加工钍的设施已变成废墟。\n[lightgray]研究钍及其多种用途。\n\n敌人在这里大量存在,不断消灭入侵者。
|
||||||
sector.fungalPass.description = 介于高山和低矮孢子丛生的土地之间的过渡地带。这里有一个小型的敌方侦察基地。\n侦察它。\n使用尖刀和爬行者单位来摧毁两个核心。
|
sector.fungalPass.description = 介于高山和低矮孢子丛生的土地之间的过渡地带。这里有一个小型的敌方侦察基地。\n侦察它。\n使用尖刀和爬行者单位来摧毁两个核心。
|
||||||
|
sector.biomassFacility.description = 孢子的发源地。这里有最初研究和生产孢子的设施。\n研究这里的科技,培养孢子来制造燃料和聚合物。\n\n[lightgray]设施损毁后,孢子散播了出去,原生生态系统无法抵挡这种外来物种。
|
||||||
|
sector.windsweptIslands.description = 海岸线之外坐落着这一串群岛。据记载这里曾有生产[accent]塑钢[]的建筑。\n\n抵御敌人的海军,在岛上建立基地,研究这些工厂。
|
||||||
|
sector.extractionOutpost.description = 一座遥远的前哨,敌人为了向其他区域发射资源而建立。\n\n跨区域运输技术是征服这个星球不可或缺的技术。摧毁敌人基地,研究发射台。
|
||||||
|
sector.impact0078.description = 这里有最初进入这个星系的星际运输船的遗迹。\n\n回收可以利用的资源,研究科技。
|
||||||
|
sector.planetaryTerminal.description = 最终目标。\n\n这座滨海基地有一个可以将核心发射到其他行星的建筑,防卫森严。\n\n制造海军单位,尽快消灭敌人,研究发射建筑。
|
||||||
|
|
||||||
settings.language = 语言
|
settings.language = 语言
|
||||||
settings.data = 游戏数据
|
settings.data = 游戏数据
|
||||||
@@ -688,6 +705,7 @@ stat.commandlimit = 指挥上限
|
|||||||
stat.abilities = 能力
|
stat.abilities = 能力
|
||||||
stat.canboost = 可助推
|
stat.canboost = 可助推
|
||||||
stat.flying = 可飞行
|
stat.flying = 可飞行
|
||||||
|
stat.ammouse = 弹药消耗
|
||||||
|
|
||||||
ability.forcefield = 力墙场
|
ability.forcefield = 力墙场
|
||||||
ability.repairfield = 修复场
|
ability.repairfield = 修复场
|
||||||
@@ -710,7 +728,6 @@ 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}
|
||||||
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[已达单位上限]
|
|
||||||
bar.liquid = 液体
|
bar.liquid = 液体
|
||||||
bar.heat = 热量
|
bar.heat = 热量
|
||||||
bar.power = 电力
|
bar.power = 电力
|
||||||
@@ -727,6 +744,7 @@ bullet.sapping = [stat] 削弱
|
|||||||
bullet.homing = [stat] 追踪
|
bullet.homing = [stat] 追踪
|
||||||
bullet.shock = [stat] 电击
|
bullet.shock = [stat] 电击
|
||||||
bullet.frag = [stat] 分裂
|
bullet.frag = [stat] 分裂
|
||||||
|
bullet.buildingdamage = [stat]{0}%[lightgray] 对建筑伤害
|
||||||
bullet.knockback = [stat]{0}[lightgray] 击退
|
bullet.knockback = [stat]{0}[lightgray] 击退
|
||||||
bullet.pierce = [stat]{0}[lightgray]x 穿透
|
bullet.pierce = [stat]{0}[lightgray]x 穿透
|
||||||
bullet.infinitepierce = [stat] 穿透
|
bullet.infinitepierce = [stat] 穿透
|
||||||
@@ -755,6 +773,7 @@ unit.items = 物品
|
|||||||
unit.thousands = K
|
unit.thousands = K
|
||||||
unit.millions = M
|
unit.millions = M
|
||||||
unit.billions = B
|
unit.billions = B
|
||||||
|
unit.pershot = /发
|
||||||
category.purpose = 介绍
|
category.purpose = 介绍
|
||||||
category.general = 普通
|
category.general = 普通
|
||||||
category.power = 能量
|
category.power = 能量
|
||||||
@@ -822,7 +841,9 @@ setting.chatopacity.name = 聊天界面不透明度
|
|||||||
setting.lasersopacity.name = 能量激光不透明度
|
setting.lasersopacity.name = 能量激光不透明度
|
||||||
setting.bridgeopacity.name = 桥梁不透明度
|
setting.bridgeopacity.name = 桥梁不透明度
|
||||||
setting.playerchat.name = 显示玩家聊天气泡
|
setting.playerchat.name = 显示玩家聊天气泡
|
||||||
|
setting.showweather.name = 显示天气效果
|
||||||
public.confirm = 确定使您的游戏公开可见?\n[accent]其他人将可以加入到您的游戏。\n[lightgray]您之后可以在 设置->游戏->游戏公开可见 更改。
|
public.confirm = 确定使您的游戏公开可见?\n[accent]其他人将可以加入到您的游戏。\n[lightgray]您之后可以在 设置->游戏->游戏公开可见 更改。
|
||||||
|
public.confirm.really = 如果您想与朋友游玩,可以使用[green]邀请朋友[]而不是[scarlet]公开游戏[]!\n您确定要使游戏[scarlet]公开可见[]吗?
|
||||||
public.beta = 请注意,测试版的游戏不能公开可见。
|
public.beta = 请注意,测试版的游戏不能公开可见。
|
||||||
uiscale.reset = UI 缩放比例已更改。\n按下“确定”来执行缩放比例的更改。\n[accent]{0}[]秒后[scarlet]将自动退出并还原设置。
|
uiscale.reset = UI 缩放比例已更改。\n按下“确定”来执行缩放比例的更改。\n[accent]{0}[]秒后[scarlet]将自动退出并还原设置。
|
||||||
uiscale.cancel = 取消并退出
|
uiscale.cancel = 取消并退出
|
||||||
@@ -897,6 +918,7 @@ keybind.toggle_menus.name = 显隐选项
|
|||||||
keybind.chat_history_prev.name = 聊天记录向前
|
keybind.chat_history_prev.name = 聊天记录向前
|
||||||
keybind.chat_history_next.name = 聊天记录向后
|
keybind.chat_history_next.name = 聊天记录向后
|
||||||
keybind.chat_scroll.name = 聊天记录滚动
|
keybind.chat_scroll.name = 聊天记录滚动
|
||||||
|
keybind.chat_mode.name = 切换聊天模式
|
||||||
keybind.drop_unit.name = 松开单位
|
keybind.drop_unit.name = 松开单位
|
||||||
keybind.zoom_minimap.name = 小地图缩放
|
keybind.zoom_minimap.name = 小地图缩放
|
||||||
mode.help.title = 模式说明
|
mode.help.title = 模式说明
|
||||||
@@ -945,6 +967,7 @@ rules.explosions = 建筑/单位爆炸伤害
|
|||||||
rules.ambientlight = 环境光
|
rules.ambientlight = 环境光
|
||||||
rules.weather = 气候
|
rules.weather = 气候
|
||||||
rules.weather.frequency = 频率:
|
rules.weather.frequency = 频率:
|
||||||
|
rules.weather.always = 持续
|
||||||
rules.weather.duration = 时长:
|
rules.weather.duration = 时长:
|
||||||
|
|
||||||
content.item.name = 物品
|
content.item.name = 物品
|
||||||
@@ -969,7 +992,6 @@ item.blast-compound.name = 爆炸混合物
|
|||||||
item.pyratite.name = 硫
|
item.pyratite.name = 硫
|
||||||
item.metaglass.name = 钢化玻璃
|
item.metaglass.name = 钢化玻璃
|
||||||
item.scrap.name = 废料
|
item.scrap.name = 废料
|
||||||
|
|
||||||
liquid.water.name = 水
|
liquid.water.name = 水
|
||||||
liquid.slag.name = 矿渣
|
liquid.slag.name = 矿渣
|
||||||
liquid.oil.name = 石油
|
liquid.oil.name = 石油
|
||||||
@@ -1271,11 +1293,15 @@ hint.payloadDrop.mobile = [accent]点住[]一个空的位置将有效载荷丢
|
|||||||
hint.waveFire = [accent]波浪[]炮塔加水弹药会自动扑灭附近的火.
|
hint.waveFire = [accent]波浪[]炮塔加水弹药会自动扑灭附近的火.
|
||||||
hint.generator = \uf879 [accent]燃烧发电机[]燃烧煤炭并将电力传输到相邻方块.\n\n用\uf87f [accent]能量节点[]可以扩展电力传输范围.
|
hint.generator = \uf879 [accent]燃烧发电机[]燃烧煤炭并将电力传输到相邻方块.\n\n用\uf87f [accent]能量节点[]可以扩展电力传输范围.
|
||||||
hint.guardian = [accent]Boss[]单位装甲厚重.[accent]铜[]和[accent]铅[]这类较弱的子弹对其[scarlet]作用不佳[].\n\n使用高级别炮塔或使用\uf835 [accent]石墨[]作为\uf861 双管炮及\uf859 齐射炮的弹药来消灭Boss.
|
hint.guardian = [accent]Boss[]单位装甲厚重.[accent]铜[]和[accent]铅[]这类较弱的子弹对其[scarlet]作用不佳[].\n\n使用高级别炮塔或使用\uf835 [accent]石墨[]作为\uf861 双管炮及\uf859 齐射炮的弹药来消灭Boss.
|
||||||
|
hint.coreUpgrade = 核心可以通过[accent]在上面覆盖高等级核心[]进行升级。\n\n在[accent]初代核心[]上放置一个[accent]次代核心[]。确保周围没有障碍物。
|
||||||
|
hint.presetLaunch = 灰色的[accent]降落地区[],如[accent]冰冻森林[],可以从任何区域发射,不需要占领附近的区块。\n\n[accent]数字编号的区域[],如这个,是[accent]可选的[]。
|
||||||
|
hint.coreIncinerate = 核心存满一种物品后,再进入的同种物品会被[accent]摧毁[]。
|
||||||
|
hint.coopCampaign = 游玩[accent]合作战役[]时,当前地图生产的资源也会被送入[accent]你本地的区域[]。\n\n新科技也会同步解锁。
|
||||||
|
|
||||||
item.copper.description = 用于所有类型的建筑和弹药。
|
item.copper.description = 用于所有类型的建筑和弹药。
|
||||||
item.copper.details = 铜。在塞普罗上的异常丰富的金属。不经加固,结构会较脆弱。
|
item.copper.details = 铜。在塞普罗上的异常丰富的金属。不经加固,结构会较脆弱。
|
||||||
item.lead.description = 用于液体输送和电气结构。
|
item.lead.description = 用于液体输送和电气结构。
|
||||||
item.lead.details = 致密且呈惰性。广泛用于电池中。\n注意:可能对生物生命体有毒。虽说这里还有很多。
|
item.lead.details = 致密且呈惰性。广泛用于电池中。\n注意:可能对生物生命体有毒。虽说这里已经没有多少生物了。
|
||||||
item.metaglass.description = 用于液体传输/储存结构。
|
item.metaglass.description = 用于液体传输/储存结构。
|
||||||
item.graphite.description = 用于电子元件和炮塔弹药。
|
item.graphite.description = 用于电子元件和炮塔弹药。
|
||||||
item.sand.description = 用于生产其他精炼材料。
|
item.sand.description = 用于生产其他精炼材料。
|
||||||
@@ -1342,9 +1368,8 @@ block.door-large.description = 可以开关的墙。
|
|||||||
block.mender.description = 定期修复附近的区块。\n可使用硅来提高范围和效率。
|
block.mender.description = 定期修复附近的区块。\n可使用硅来提高范围和效率。
|
||||||
block.mend-projector.description = 修复其附近的区块。\n可使用相位物来提高射程和效率。
|
block.mend-projector.description = 修复其附近的区块。\n可使用相位物来提高射程和效率。
|
||||||
block.overdrive-projector.description = 提高附近建筑物的速度。\n可使用相位物来提高射程和效率。
|
block.overdrive-projector.description = 提高附近建筑物的速度。\n可使用相位物来提高射程和效率。
|
||||||
block.force-projector.description = 在自身周围创建一个六角形力场,使里面的建筑物和单位免受伤害。\n持续承受高伤害会导致过热,可以使用冷却液降温。相织物可用于增加护盾大小。
|
block.force-projector.description = 在自身周围创建一个六角形力场,使里面的建筑物和单位免受伤害。\n持续承受高伤害会导致过热,可以使用冷却液降温。相位物可用于增加护盾大小。
|
||||||
block.shock-mine.description = 对踩到它的敌人释放电弧进行攻击。
|
block.shock-mine.description = 对踩到它的敌人释放电弧进行攻击。
|
||||||
block.thermal-pump.description = 终级液泵。
|
|
||||||
block.conveyor.description = 将物品向前输送。
|
block.conveyor.description = 将物品向前输送。
|
||||||
block.titanium-conveyor.description = 将物品向前输送。快于初级传送带。
|
block.titanium-conveyor.description = 将物品向前输送。快于初级传送带。
|
||||||
block.plastanium-conveyor.description = 打包物品进行运输。\n在后方输入物品,在前方三个方向输出物品。需要多个装载和卸载点才能达到峰值载量。
|
block.plastanium-conveyor.description = 打包物品进行运输。\n在后方输入物品,在前方三个方向输出物品。需要多个装载和卸载点才能达到峰值载量。
|
||||||
|
|||||||
@@ -109,3 +109,8 @@ VolasYouKnow
|
|||||||
Quick-Korx
|
Quick-Korx
|
||||||
Ángel Rodríguez Aguilera
|
Ángel Rodríguez Aguilera
|
||||||
Catchears
|
Catchears
|
||||||
|
younggam
|
||||||
|
simba-fs
|
||||||
|
RedRadiation
|
||||||
|
Marko Zajc
|
||||||
|
CPX MC
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
63730=magmarock|block-magmarock-medium
|
63730=magmarock|block-magmarock-medium
|
||||||
63729=sand|block-sand-medium
|
63729=sand|block-sand-medium
|
||||||
63728=darksand|block-darksand-medium
|
63728=darksand|block-darksand-medium
|
||||||
63727=holostone|block-holostone-medium
|
|
||||||
63726=grass|block-grass-medium
|
63726=grass|block-grass-medium
|
||||||
63725=salt|block-salt-medium
|
63725=salt|block-salt-medium
|
||||||
63724=snow|block-snow-medium
|
63724=snow|block-snow-medium
|
||||||
@@ -285,7 +284,6 @@
|
|||||||
63451=scepter|unit-scepter-medium
|
63451=scepter|unit-scepter-medium
|
||||||
63450=reign|unit-reign-medium
|
63450=reign|unit-reign-medium
|
||||||
63449=dirt|block-dirt-medium
|
63449=dirt|block-dirt-medium
|
||||||
63448=dirtwall|block-dirtwall-medium
|
|
||||||
63447=stone-wall|block-stone-wall-medium
|
63447=stone-wall|block-stone-wall-medium
|
||||||
63446=spore-wall|block-spore-wall-medium
|
63446=spore-wall|block-spore-wall-medium
|
||||||
63445=ice-wall|block-ice-wall-medium
|
63445=ice-wall|block-ice-wall-medium
|
||||||
@@ -295,7 +293,6 @@
|
|||||||
63441=salt-wall|block-salt-wall-medium
|
63441=salt-wall|block-salt-wall-medium
|
||||||
63440=shale-wall|block-shale-wall-medium
|
63440=shale-wall|block-shale-wall-medium
|
||||||
63439=dirt-wall|block-dirt-wall-medium
|
63439=dirt-wall|block-dirt-wall-medium
|
||||||
63438=holostone-wall|block-holostone-wall-medium
|
|
||||||
63437=basalt|block-basalt-medium
|
63437=basalt|block-basalt-medium
|
||||||
63436=dacite|block-dacite-medium
|
63436=dacite|block-dacite-medium
|
||||||
63435=boulder|block-boulder-medium
|
63435=boulder|block-boulder-medium
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
function log(context, obj){
|
let scriptName = "base.js"
|
||||||
Vars.mods.scripts.log(context, String(obj))
|
let modName = "none"
|
||||||
}
|
|
||||||
|
|
||||||
|
const log = (context, obj) => Vars.mods.scripts.log(context, String(obj))
|
||||||
|
const print = text => log(modName + "/" + scriptName, text)
|
||||||
const readString = path => Vars.mods.scripts.readString(path)
|
const readString = path => Vars.mods.scripts.readString(path)
|
||||||
const readBytes = path => Vars.mods.scripts.readBytes(path)
|
const readBytes = path => Vars.mods.scripts.readBytes(path)
|
||||||
const loadMusic = path => Vars.mods.scripts.loadMusic(path)
|
const loadMusic = path => Vars.mods.scripts.loadMusic(path)
|
||||||
@@ -13,11 +14,20 @@ const readFile = (purpose, ext, cons) => Vars.mods.scripts.readFile(purpose, ext
|
|||||||
const readBinFile = (purpose, ext, cons) => Vars.mods.scripts.readBinFile(purpose, ext, cons);
|
const readBinFile = (purpose, ext, cons) => Vars.mods.scripts.readBinFile(purpose, ext, cons);
|
||||||
const writeFile = (purpose, ext, str) => Vars.mods.scripts.writeFile(purpose, ext, str);
|
const writeFile = (purpose, ext, str) => Vars.mods.scripts.writeFile(purpose, ext, str);
|
||||||
const writeBinFile = (purpose, ext, bytes) => Vars.mods.scripts.writeBinFile(purpose, ext, bytes);
|
const writeBinFile = (purpose, ext, bytes) => Vars.mods.scripts.writeBinFile(purpose, ext, bytes);
|
||||||
|
const newFloats = cap => Vars.mods.getScripts().newFloats(cap);
|
||||||
|
|
||||||
let scriptName = "base.js"
|
//these are not strictly necessary, but are kept for edge cases
|
||||||
let modName = "none"
|
const run = method => new java.lang.Runnable(){run: method}
|
||||||
|
const boolf = method => new Boolf(){get: method}
|
||||||
|
const boolp = method => new Boolp(){get: method}
|
||||||
|
const floatf = method => new Floatf(){get: method}
|
||||||
|
const floatp = method => new Floatp(){get: method}
|
||||||
|
const cons = method => new Cons(){get: method}
|
||||||
|
const prov = method => new Prov(){get: method}
|
||||||
|
const func = method => new Func(){get: method}
|
||||||
|
|
||||||
const print = text => log(modName + "/" + scriptName, text);
|
const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer}))
|
||||||
|
Call = Packages.mindustry.gen.Call
|
||||||
|
|
||||||
//js 'extend(Base, ..., {})' = java 'new Base(...) {}'
|
//js 'extend(Base, ..., {})' = java 'new Base(...) {}'
|
||||||
function extend(/*Base, ..., def*/){
|
function extend(/*Base, ..., def*/){
|
||||||
@@ -39,16 +49,3 @@ function extend(/*Base, ..., def*/){
|
|||||||
|
|
||||||
//For backwards compatibility, use extend instead
|
//For backwards compatibility, use extend instead
|
||||||
const extendContent = extend;
|
const extendContent = extend;
|
||||||
|
|
||||||
//these are not strictly necessary, but are kept for edge cases
|
|
||||||
const run = method => new java.lang.Runnable(){run: method}
|
|
||||||
const boolf = method => new Boolf(){get: method}
|
|
||||||
const boolp = method => new Boolp(){get: method}
|
|
||||||
const floatf = method => new Floatf(){get: method}
|
|
||||||
const floatp = method => new Floatp(){get: method}
|
|
||||||
const cons = method => new Cons(){get: method}
|
|
||||||
const prov = method => new Prov(){get: method}
|
|
||||||
const func = method => new Func(){get: method}
|
|
||||||
|
|
||||||
const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer}))
|
|
||||||
Call = Packages.mindustry.gen.Call
|
|
||||||
|
|||||||
@@ -2,10 +2,11 @@
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
function log(context, obj){
|
let scriptName = "base.js"
|
||||||
Vars.mods.scripts.log(context, String(obj))
|
let modName = "none"
|
||||||
}
|
|
||||||
|
|
||||||
|
const log = (context, obj) => Vars.mods.scripts.log(context, String(obj))
|
||||||
|
const print = text => log(modName + "/" + scriptName, text)
|
||||||
const readString = path => Vars.mods.scripts.readString(path)
|
const readString = path => Vars.mods.scripts.readString(path)
|
||||||
const readBytes = path => Vars.mods.scripts.readBytes(path)
|
const readBytes = path => Vars.mods.scripts.readBytes(path)
|
||||||
const loadMusic = path => Vars.mods.scripts.loadMusic(path)
|
const loadMusic = path => Vars.mods.scripts.loadMusic(path)
|
||||||
@@ -15,11 +16,20 @@ const readFile = (purpose, ext, cons) => Vars.mods.scripts.readFile(purpose, ext
|
|||||||
const readBinFile = (purpose, ext, cons) => Vars.mods.scripts.readBinFile(purpose, ext, cons);
|
const readBinFile = (purpose, ext, cons) => Vars.mods.scripts.readBinFile(purpose, ext, cons);
|
||||||
const writeFile = (purpose, ext, str) => Vars.mods.scripts.writeFile(purpose, ext, str);
|
const writeFile = (purpose, ext, str) => Vars.mods.scripts.writeFile(purpose, ext, str);
|
||||||
const writeBinFile = (purpose, ext, bytes) => Vars.mods.scripts.writeBinFile(purpose, ext, bytes);
|
const writeBinFile = (purpose, ext, bytes) => Vars.mods.scripts.writeBinFile(purpose, ext, bytes);
|
||||||
|
const newFloats = cap => Vars.mods.getScripts().newFloats(cap);
|
||||||
|
|
||||||
let scriptName = "base.js"
|
//these are not strictly necessary, but are kept for edge cases
|
||||||
let modName = "none"
|
const run = method => new java.lang.Runnable(){run: method}
|
||||||
|
const boolf = method => new Boolf(){get: method}
|
||||||
|
const boolp = method => new Boolp(){get: method}
|
||||||
|
const floatf = method => new Floatf(){get: method}
|
||||||
|
const floatp = method => new Floatp(){get: method}
|
||||||
|
const cons = method => new Cons(){get: method}
|
||||||
|
const prov = method => new Prov(){get: method}
|
||||||
|
const func = method => new Func(){get: method}
|
||||||
|
|
||||||
const print = text => log(modName + "/" + scriptName, text);
|
const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer}))
|
||||||
|
Call = Packages.mindustry.gen.Call
|
||||||
|
|
||||||
//js 'extend(Base, ..., {})' = java 'new Base(...) {}'
|
//js 'extend(Base, ..., {})' = java 'new Base(...) {}'
|
||||||
function extend(/*Base, ..., def*/){
|
function extend(/*Base, ..., def*/){
|
||||||
@@ -42,19 +52,6 @@ function extend(/*Base, ..., def*/){
|
|||||||
//For backwards compatibility, use extend instead
|
//For backwards compatibility, use extend instead
|
||||||
const extendContent = extend;
|
const extendContent = extend;
|
||||||
|
|
||||||
//these are not strictly necessary, but are kept for edge cases
|
|
||||||
const run = method => new java.lang.Runnable(){run: method}
|
|
||||||
const boolf = method => new Boolf(){get: method}
|
|
||||||
const boolp = method => new Boolp(){get: method}
|
|
||||||
const floatf = method => new Floatf(){get: method}
|
|
||||||
const floatp = method => new Floatp(){get: method}
|
|
||||||
const cons = method => new Cons(){get: method}
|
|
||||||
const prov = method => new Prov(){get: method}
|
|
||||||
const func = method => new Func(){get: method}
|
|
||||||
|
|
||||||
const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer}))
|
|
||||||
Call = Packages.mindustry.gen.Call
|
|
||||||
|
|
||||||
importPackage(Packages.arc)
|
importPackage(Packages.arc)
|
||||||
importPackage(Packages.arc.func)
|
importPackage(Packages.arc.func)
|
||||||
importPackage(Packages.arc.graphics)
|
importPackage(Packages.arc.graphics)
|
||||||
@@ -136,6 +133,7 @@ const PlayerLeave = Packages.mindustry.game.EventType.PlayerLeave
|
|||||||
const PlayerConnect = Packages.mindustry.game.EventType.PlayerConnect
|
const PlayerConnect = Packages.mindustry.game.EventType.PlayerConnect
|
||||||
const PlayerJoin = Packages.mindustry.game.EventType.PlayerJoin
|
const PlayerJoin = Packages.mindustry.game.EventType.PlayerJoin
|
||||||
const UnitChangeEvent = Packages.mindustry.game.EventType.UnitChangeEvent
|
const UnitChangeEvent = Packages.mindustry.game.EventType.UnitChangeEvent
|
||||||
|
const UnitUnloadEvent = Packages.mindustry.game.EventType.UnitUnloadEvent
|
||||||
const UnitCreateEvent = Packages.mindustry.game.EventType.UnitCreateEvent
|
const UnitCreateEvent = Packages.mindustry.game.EventType.UnitCreateEvent
|
||||||
const UnitDrownEvent = Packages.mindustry.game.EventType.UnitDrownEvent
|
const UnitDrownEvent = Packages.mindustry.game.EventType.UnitDrownEvent
|
||||||
const UnitDestroyEvent = Packages.mindustry.game.EventType.UnitDestroyEvent
|
const UnitDestroyEvent = Packages.mindustry.game.EventType.UnitDestroyEvent
|
||||||
@@ -164,6 +162,7 @@ const LaunchItemEvent = Packages.mindustry.game.EventType.LaunchItemEvent
|
|||||||
const SectorInvasionEvent = Packages.mindustry.game.EventType.SectorInvasionEvent
|
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 FileTreeInitEvent = Packages.mindustry.game.EventType.FileTreeInitEvent
|
||||||
const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent
|
const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent
|
||||||
const ContentInitEvent = Packages.mindustry.game.EventType.ContentInitEvent
|
const ContentInitEvent = Packages.mindustry.game.EventType.ContentInitEvent
|
||||||
const BlockInfoEvent = Packages.mindustry.game.EventType.BlockInfoEvent
|
const BlockInfoEvent = Packages.mindustry.game.EventType.BlockInfoEvent
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
uniform sampler2D u_texture;
|
uniform sampler2D u_texture;
|
||||||
|
|
||||||
uniform vec4 u_color;
|
|
||||||
uniform vec2 u_texsize;
|
uniform vec2 u_texsize;
|
||||||
uniform vec2 u_uv;
|
uniform vec2 u_uv;
|
||||||
uniform vec2 u_uv2;
|
uniform vec2 u_uv2;
|
||||||
@@ -38,11 +37,11 @@ void main(){
|
|||||||
float dst = (abs(center.x - coords.x) + abs(center.y - coords.y))/2.0;
|
float dst = (abs(center.x - coords.x) + abs(center.y - coords.y))/2.0;
|
||||||
|
|
||||||
if((mod(u_time / 1.5 + value, 20.0) < 15.0 && cont(t, v))){
|
if((mod(u_time / 1.5 + value, 20.0) < 15.0 && cont(t, v))){
|
||||||
gl_FragColor = u_color;
|
gl_FragColor = v_color;
|
||||||
}else if(dst > (1.0-u_progress) * (center.x)){
|
}else if(dst > (1.0-u_progress) * (center.x)){
|
||||||
gl_FragColor = color;
|
gl_FragColor = color;
|
||||||
}else if((dst + 1.0 > (1.0-u_progress) * (center.x)) && color.a > 0.1){
|
}else if((dst + 1.0 > (1.0-u_progress) * (center.x)) && color.a > 0.1){
|
||||||
gl_FragColor = u_color;
|
gl_FragColor = v_color;
|
||||||
}else{
|
}else{
|
||||||
gl_FragColor = vec4(0.0);
|
gl_FragColor = vec4(0.0);
|
||||||
}
|
}
|
||||||
|
|||||||
18
core/assets/shaders/buildbeam.frag
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#define HIGHP
|
||||||
|
|
||||||
|
uniform sampler2D u_texture;
|
||||||
|
uniform vec2 u_texsize;
|
||||||
|
uniform vec2 u_invsize;
|
||||||
|
uniform float u_time;
|
||||||
|
uniform float u_dp;
|
||||||
|
uniform vec2 u_offset;
|
||||||
|
varying vec2 v_texCoords;
|
||||||
|
|
||||||
|
void main(){
|
||||||
|
vec2 T = v_texCoords.xy;
|
||||||
|
vec2 coords = (T * u_texsize) + u_offset;
|
||||||
|
vec4 color = texture2D(u_texture, T);
|
||||||
|
|
||||||
|
color.a *= (0.37 + abs(sin(u_time / 15.0)) * .05 + 0.2 * (step(mod(coords.x / u_dp + coords.y / u_dp + u_time / 4.0, 10.0), 3.0)));
|
||||||
|
gl_FragColor = color;
|
||||||
|
}
|
||||||
@@ -34,6 +34,12 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setup(){
|
public void setup(){
|
||||||
|
String dataDir = OS.env("MINDUSTRY_DATA_DIR");
|
||||||
|
if(dataDir != null){
|
||||||
|
Core.settings.setDataDirectory(files.absolute(dataDir));
|
||||||
|
}
|
||||||
|
|
||||||
|
checkLaunch();
|
||||||
loadLogger();
|
loadLogger();
|
||||||
|
|
||||||
loader = new LoadRenderer();
|
loader = new LoadRenderer();
|
||||||
@@ -145,7 +151,12 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
|||||||
finished = true;
|
finished = true;
|
||||||
Events.fire(new ClientLoadEvent());
|
Events.fire(new ClientLoadEvent());
|
||||||
super.resize(graphics.getWidth(), graphics.getHeight());
|
super.resize(graphics.getWidth(), graphics.getHeight());
|
||||||
app.post(() -> app.post(() -> app.post(() -> app.post(() -> super.resize(graphics.getWidth(), graphics.getHeight())))));
|
app.post(() -> app.post(() -> app.post(() -> app.post(() -> {
|
||||||
|
super.resize(graphics.getWidth(), graphics.getHeight());
|
||||||
|
|
||||||
|
//mark initialization as complete
|
||||||
|
finishLaunch();
|
||||||
|
}))));
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
asyncCore.begin();
|
asyncCore.begin();
|
||||||
@@ -168,6 +179,12 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
|||||||
lastTime = Time.nanos();
|
lastTime = Time.nanos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exit(){
|
||||||
|
//on graceful exit, finish the launch normally.
|
||||||
|
Vars.finishLaunch();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(){
|
public void init(){
|
||||||
setup();
|
setup();
|
||||||
@@ -182,6 +199,11 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void pause(){
|
public void pause(){
|
||||||
|
//when the user tabs out on mobile, the exit() event doesn't fire reliably - in that case, just assume they're about to kill the app
|
||||||
|
//this isn't 100% reliable but it should work for most cases
|
||||||
|
if(mobile){
|
||||||
|
Vars.finishLaunch();
|
||||||
|
}
|
||||||
if(finished){
|
if(finished){
|
||||||
super.pause();
|
super.pause();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,12 +32,16 @@ import java.util.*;
|
|||||||
import static arc.Core.*;
|
import static arc.Core.*;
|
||||||
|
|
||||||
public class Vars implements Loadable{
|
public class Vars implements Loadable{
|
||||||
|
/** Whether the game failed to launch last time. */
|
||||||
|
public static boolean failedToLaunch = false;
|
||||||
/** Whether to load locales.*/
|
/** Whether to load locales.*/
|
||||||
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 enable various experimental features (e.g. cliffs) */
|
/** Whether to enable various experimental features (e.g. cliffs) */
|
||||||
public static boolean experimental = false;
|
public static boolean experimental = false;
|
||||||
|
/** Name of current Steam player. */
|
||||||
|
public static String steamPlayerName = "";
|
||||||
/** 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.*/
|
||||||
@@ -50,20 +54,18 @@ public class Vars implements Loadable{
|
|||||||
public static final Charset charset = Charset.forName("UTF-8");
|
public static final Charset charset = Charset.forName("UTF-8");
|
||||||
/** main application name, capitalized */
|
/** main application name, capitalized */
|
||||||
public static final String appName = "Mindustry";
|
public static final String appName = "Mindustry";
|
||||||
/** URL for itch.io donations. */
|
/** Github API URL. */
|
||||||
public static final String donationURL = "https://anuke.itch.io/mindustry/purchase";
|
public static final String ghApi = "https://api.github.com";
|
||||||
/** URL for discord invite. */
|
/** URL for discord invite. */
|
||||||
public static final String discordURL = "https://discord.gg/mindustry";
|
public static final String discordURL = "https://discord.gg/mindustry";
|
||||||
/** URL for sending crash reports to */
|
/** URL for sending crash reports to. Currently offline. */
|
||||||
public static final String crashReportURL = "http://192.99.169.18/report";
|
public static final String crashReportURL = "http://192.99.169.18/report";
|
||||||
/** URL the links to the wiki's modding guide.*/
|
/** URL the links to the wiki's modding guide.*/
|
||||||
public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/1-modding/";
|
public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/1-modding/";
|
||||||
/** URL to the JSON file containing all the global, public servers. Not queried in BE. */
|
|
||||||
public static final String serverJsonURL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers.json";
|
|
||||||
/** URL to the JSON file containing all the BE servers. Only queried in BE. */
|
/** URL to the JSON file containing all the BE servers. Only queried in BE. */
|
||||||
public static final String serverJsonBeURL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers_be.json";
|
public static final String serverJsonBeURL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers_be.json";
|
||||||
/** URL to the JSON file containing all the BE servers. Only queried in the V6 alpha (will be removed once it's out). */
|
/** URL to the JSON file containing all the stable servers. */
|
||||||
public static final String serverJsonV6URL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers_v6.json";
|
public static final String serverJsonURL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers_v6.json";
|
||||||
/** URL of the github issue report template.*/
|
/** URL of the github issue report template.*/
|
||||||
public static final String reportIssueURL = "https://github.com/Anuken/Mindustry/issues/new?labels=bug&template=bug_report.md";
|
public static final String reportIssueURL = "https://github.com/Anuken/Mindustry/issues/new?labels=bug&template=bug_report.md";
|
||||||
/** list of built-in servers.*/
|
/** list of built-in servers.*/
|
||||||
@@ -92,8 +94,8 @@ public class Vars implements Loadable{
|
|||||||
public static final float turnDuration = 2 * Time.toMinutes;
|
public static final float turnDuration = 2 * Time.toMinutes;
|
||||||
/** chance of an invasion per turn, 1 = 100% */
|
/** chance of an invasion per turn, 1 = 100% */
|
||||||
public static final float baseInvasionChance = 1f / 100f;
|
public static final float baseInvasionChance = 1f / 100f;
|
||||||
/** how many turns have to pass before invasions start */
|
/** how many minutes have to pass before invasions in a *captured* sector start */
|
||||||
public static final int invasionGracePeriod = 20;
|
public static final float invasionGracePeriod = 20;
|
||||||
/** min armor fraction damage; e.g. 0.05 = at least 5% damage */
|
/** min armor fraction damage; e.g. 0.05 = at least 5% damage */
|
||||||
public static final float minArmorDamage = 0.1f;
|
public static final float minArmorDamage = 0.1f;
|
||||||
/** launch animation duration */
|
/** launch animation duration */
|
||||||
@@ -172,6 +174,8 @@ public class Vars implements Loadable{
|
|||||||
public static Fi schematicDirectory;
|
public static Fi schematicDirectory;
|
||||||
/** data subdirectory used for bleeding edge build versions */
|
/** data subdirectory used for bleeding edge build versions */
|
||||||
public static Fi bebuildDirectory;
|
public static Fi bebuildDirectory;
|
||||||
|
/** file used to store launch ID */
|
||||||
|
public static Fi launchIDFile;
|
||||||
/** empty map, indicates no current map */
|
/** empty map, indicates no current map */
|
||||||
public static Map emptyMap;
|
public static Map emptyMap;
|
||||||
/** map file extension */
|
/** map file extension */
|
||||||
@@ -284,6 +288,27 @@ public class Vars implements Loadable{
|
|||||||
maps.load();
|
maps.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Checks if a launch failure occurred.
|
||||||
|
* If this is the case, failedToLaunch is set to true. */
|
||||||
|
public static void checkLaunch(){
|
||||||
|
settings.setAppName(appName);
|
||||||
|
launchIDFile = settings.getDataDirectory().child("launchid.dat");
|
||||||
|
|
||||||
|
if(launchIDFile.exists()){
|
||||||
|
failedToLaunch = true;
|
||||||
|
}else{
|
||||||
|
failedToLaunch = false;
|
||||||
|
launchIDFile.writeString("go away");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Cleans up after a successful launch. */
|
||||||
|
public static void finishLaunch(){
|
||||||
|
if(launchIDFile != null){
|
||||||
|
launchIDFile.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void loadLogger(){
|
public static void loadLogger(){
|
||||||
if(loadedLogger) return;
|
if(loadedLogger) return;
|
||||||
|
|
||||||
@@ -345,7 +370,7 @@ public class Vars implements Loadable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void loadSettings(){
|
public static void loadSettings(){
|
||||||
settings.setJson(JsonIO.json());
|
settings.setJson(JsonIO.json);
|
||||||
settings.setAppName(appName);
|
settings.setAppName(appName);
|
||||||
|
|
||||||
if(steam || (Version.modifier != null && Version.modifier.contains("steam"))){
|
if(steam || (Version.modifier != null && Version.modifier.contains("steam"))){
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public class BaseAI{
|
|||||||
private static final Seq<Tile> tmpTiles = new Seq<>();
|
private static final Seq<Tile> tmpTiles = new Seq<>();
|
||||||
|
|
||||||
private static int correct = 0, incorrect = 0;
|
private static int correct = 0, incorrect = 0;
|
||||||
|
private static boolean anyDrills;
|
||||||
|
|
||||||
private int lastX, lastY, lastW, lastH;
|
private int lastX, lastY, lastW, lastH;
|
||||||
private boolean triedWalls, foundPath;
|
private boolean triedWalls, foundPath;
|
||||||
@@ -200,7 +201,7 @@ public class BaseAI{
|
|||||||
int cx = x - (int)rotator.x;
|
int cx = x - (int)rotator.x;
|
||||||
int cy = y - (int)rotator.y;
|
int cy = y - (int)rotator.y;
|
||||||
|
|
||||||
//chekc valid placeability
|
//check valid placeability
|
||||||
for(Stile tile : result.tiles){
|
for(Stile tile : result.tiles){
|
||||||
int realX = tile.x + cx, realY = tile.y + cy;
|
int realX = tile.x + cx, realY = tile.y + cy;
|
||||||
if(!Build.validPlace(tile.block, data.team, realX, realY, tile.rotation)){
|
if(!Build.validPlace(tile.block, data.team, realX, realY, tile.rotation)){
|
||||||
@@ -208,6 +209,16 @@ public class BaseAI{
|
|||||||
}
|
}
|
||||||
Tile wtile = world.tile(realX, realY);
|
Tile wtile = world.tile(realX, realY);
|
||||||
|
|
||||||
|
if(tile.block instanceof PayloadConveyor || tile.block instanceof PayloadAcceptor){
|
||||||
|
//near a building
|
||||||
|
for(Point2 point : Edges.getEdges(tile.block.size)){
|
||||||
|
var t = world.build(tile.x + point.x, tile.y + point.y);
|
||||||
|
if(t != null){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//may intersect AI path
|
//may intersect AI path
|
||||||
tmpTiles.clear();
|
tmpTiles.clear();
|
||||||
if(tile.block.solid && wtile != null && wtile.getLinkedTilesAs(tile.block, tmpTiles).contains(t -> path.contains(t.pos()))){
|
if(tile.block.solid && wtile != null && wtile.getLinkedTilesAs(tile.block, tmpTiles).contains(t -> path.contains(t.pos()))){
|
||||||
@@ -217,16 +228,18 @@ public class BaseAI{
|
|||||||
|
|
||||||
//make sure at least X% of resource requirements are met
|
//make sure at least X% of resource requirements are met
|
||||||
correct = incorrect = 0;
|
correct = incorrect = 0;
|
||||||
|
anyDrills = false;
|
||||||
|
|
||||||
if(part.required instanceof Item){
|
if(part.required instanceof Item){
|
||||||
for(Stile tile : result.tiles){
|
for(Stile tile : result.tiles){
|
||||||
if(tile.block instanceof Drill){
|
if(tile.block instanceof Drill){
|
||||||
|
anyDrills = true;
|
||||||
|
|
||||||
tile.block.iterateTaken(tile.x + cx, tile.y + cy, (ex, ey) -> {
|
tile.block.iterateTaken(tile.x + cx, tile.y + cy, (ex, ey) -> {
|
||||||
Tile res = world.rawTile(ex, ey);
|
Tile res = world.rawTile(ex, ey);
|
||||||
if(res.drop() == part.required){
|
if(res.drop() == part.required){
|
||||||
correct ++;
|
correct ++;
|
||||||
}else{
|
}else if(res.drop() != null){
|
||||||
incorrect ++;
|
incorrect ++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -235,7 +248,7 @@ public class BaseAI{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//fail if not enough fit requirements
|
//fail if not enough fit requirements
|
||||||
if((float)correct / incorrect < correctPercent){
|
if(anyDrills && (incorrect != 0 || correct == 0)){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,6 +275,7 @@ public class BaseAI{
|
|||||||
if(spawn == null) return;
|
if(spawn == null) return;
|
||||||
|
|
||||||
for(int wx = lastX; wx <= lastX + lastW; wx++){
|
for(int wx = lastX; wx <= lastX + lastW; wx++){
|
||||||
|
outer:
|
||||||
for(int wy = lastY; wy <= lastY + lastH; wy++){
|
for(int wy = lastY; wy <= lastY + lastH; wy++){
|
||||||
Tile tile = world.tile(wx, wy);
|
Tile tile = world.tile(wx, wy);
|
||||||
|
|
||||||
@@ -276,12 +290,11 @@ public class BaseAI{
|
|||||||
|
|
||||||
Tile o = world.tile(tile.x + p.x, tile.y + p.y);
|
Tile o = world.tile(tile.x + p.x, tile.y + p.y);
|
||||||
if(o != null && (o.block() instanceof PayloadAcceptor || o.block() instanceof PayloadConveyor)){
|
if(o != null && (o.block() instanceof PayloadAcceptor || o.block() instanceof PayloadConveyor)){
|
||||||
break;
|
continue outer;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(o != null && o.team() == data.team && !(o.block() instanceof Wall)){
|
if(o != null && o.team() == data.team && !(o.block() instanceof Wall)){
|
||||||
any = true;
|
any = true;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -269,7 +269,6 @@ public class BlockIndexer{
|
|||||||
public Building findTile(Team team, float x, float y, float range, Boolf<Building> pred, boolean usePriority){
|
public Building findTile(Team team, float x, float y, float range, Boolf<Building> pred, boolean usePriority){
|
||||||
Building closest = null;
|
Building closest = null;
|
||||||
float dst = 0;
|
float dst = 0;
|
||||||
float range2 = range * range;
|
|
||||||
|
|
||||||
for(int rx = Math.max((int)((x - range) / tilesize / quadrantSize), 0); rx <= (int)((x + range) / tilesize / quadrantSize) && rx < quadWidth(); rx++){
|
for(int rx = Math.max((int)((x - range) / tilesize / quadrantSize), 0); rx <= (int)((x + range) / tilesize / quadrantSize) && rx < quadWidth(); rx++){
|
||||||
for(int ry = Math.max((int)((y - range) / tilesize / quadrantSize), 0); ry <= (int)((y + range) / tilesize / quadrantSize) && ry < quadHeight(); ry++){
|
for(int ry = Math.max((int)((y - range) / tilesize / quadrantSize), 0); ry <= (int)((y + range) / tilesize / quadrantSize) && ry < quadHeight(); ry++){
|
||||||
@@ -282,13 +281,13 @@ public class BlockIndexer{
|
|||||||
|
|
||||||
if(e == null || e.team != team || !pred.get(e) || !e.block.targetable || e.team == Team.derelict) continue;
|
if(e == null || e.team != team || !pred.get(e) || !e.block.targetable || e.team == Team.derelict) continue;
|
||||||
|
|
||||||
float ndst = e.dst2(x, y);
|
float bdst = e.dst(x, y) - e.hitSize() / 2f;
|
||||||
if(ndst < range2 && (closest == null ||
|
if(bdst < range && (closest == null ||
|
||||||
//this one is closer, and it is at least of equal priority
|
//this one is closer, and it is at least of equal priority
|
||||||
(ndst < dst && (!usePriority || closest.block.priority.ordinal() <= e.block.priority.ordinal())) ||
|
(bdst < dst && (!usePriority || closest.block.priority.ordinal() <= e.block.priority.ordinal())) ||
|
||||||
//priority is used, and new block has higher priority regardless of range
|
//priority is used, and new block has higher priority regardless of range
|
||||||
(usePriority && closest.block.priority.ordinal() < e.block.priority.ordinal()))){
|
(usePriority && closest.block.priority.ordinal() < e.block.priority.ordinal()))){
|
||||||
dst = ndst;
|
dst = bdst;
|
||||||
closest = e;
|
closest = e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,11 +19,10 @@ import mindustry.world.meta.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class Pathfinder implements Runnable{
|
public class Pathfinder implements Runnable{
|
||||||
private static final long maxUpdate = Time.millisToNanos(6);
|
private static final long maxUpdate = Time.millisToNanos(7);
|
||||||
private static final int updateFPS = 60;
|
private static final int updateFPS = 60;
|
||||||
private static final int updateInterval = 1000 / updateFPS;
|
private static final int updateInterval = 1000 / updateFPS;
|
||||||
private static final int impassable = -1;
|
private static final int impassable = -1;
|
||||||
private static final int fieldTimeout = 1000 * 60 * 2;
|
|
||||||
|
|
||||||
public static final int
|
public static final int
|
||||||
fieldCore = 0,
|
fieldCore = 0,
|
||||||
@@ -37,7 +36,7 @@ public class Pathfinder implements Runnable{
|
|||||||
public static final int
|
public static final int
|
||||||
costGround = 0,
|
costGround = 0,
|
||||||
costLegs = 1,
|
costLegs = 1,
|
||||||
costWater = 2;
|
costNaval = 2;
|
||||||
|
|
||||||
public static final Seq<PathCost> costTypes = Seq.with(
|
public static final Seq<PathCost> costTypes = Seq.with(
|
||||||
//ground
|
//ground
|
||||||
@@ -90,6 +89,11 @@ public class Pathfinder implements Runnable{
|
|||||||
|
|
||||||
preloadPath(getField(state.rules.waveTeam, costGround, fieldCore));
|
preloadPath(getField(state.rules.waveTeam, costGround, fieldCore));
|
||||||
|
|
||||||
|
//preload water on naval maps
|
||||||
|
if(spawner.getSpawns().contains(t -> t.floor().isLiquid)){
|
||||||
|
preloadPath(getField(state.rules.waveTeam, costNaval, fieldCore));
|
||||||
|
}
|
||||||
|
|
||||||
start();
|
start();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -187,31 +191,6 @@ public class Pathfinder implements Runnable{
|
|||||||
//total update time no longer than maxUpdate
|
//total update time no longer than maxUpdate
|
||||||
for(Flowfield data : threadList){
|
for(Flowfield data : threadList){
|
||||||
updateFrontier(data, maxUpdate / threadList.size);
|
updateFrontier(data, maxUpdate / threadList.size);
|
||||||
|
|
||||||
//TODO implement timeouts... or don't
|
|
||||||
/*
|
|
||||||
//remove flowfields that have 'timed out' so they can be garbage collected and no longer waste space
|
|
||||||
if(data.refreshRate > 0 && Time.timeSinceMillis(data.lastUpdateTime) > fieldTimeout){
|
|
||||||
//make sure it doesn't get removed twice
|
|
||||||
data.lastUpdateTime = Time.millis();
|
|
||||||
|
|
||||||
Team team = data.team;
|
|
||||||
|
|
||||||
Core.app.post(() -> {
|
|
||||||
//remove its used state
|
|
||||||
if(fieldMap[team.id] != null){
|
|
||||||
fieldMap[team.id].remove(data.target);
|
|
||||||
fieldMapUsed[team.id].remove(data.target);
|
|
||||||
}
|
|
||||||
//remove from main thread list
|
|
||||||
mainList.remove(data);
|
|
||||||
});
|
|
||||||
|
|
||||||
queue.post(() -> {
|
|
||||||
//remove from this thread list with a delay
|
|
||||||
threadList.remove(data);
|
|
||||||
});
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,7 +266,7 @@ public class Pathfinder implements Runnable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(current == null || tl == impassable) return tile;
|
if(current == null || tl == impassable || (path.cost == costTypes.items[costGround] && current.dangerous() && !tile.dangerous())) return tile;
|
||||||
|
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public class WaveSpawner{
|
|||||||
for(int i = 0; i < spawned; i++){
|
for(int i = 0; i < spawned; i++){
|
||||||
Unit unit = group.createUnit(state.rules.waveTeam, state.wave - 1);
|
Unit unit = group.createUnit(state.rules.waveTeam, state.wave - 1);
|
||||||
unit.set(spawnX + Mathf.range(spread), spawnY + Mathf.range(spread));
|
unit.set(spawnX + Mathf.range(spread), spawnY + Mathf.range(spread));
|
||||||
unit.add();
|
spawnEffect(unit);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}else{
|
}else{
|
||||||
@@ -92,7 +92,7 @@ public class WaveSpawner{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Time.runTask(121f, () -> spawning = false);
|
Time.run(121f, () -> spawning = false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doShockwave(float x, float y){
|
public void doShockwave(float x, float y){
|
||||||
@@ -148,8 +148,7 @@ public class WaveSpawner{
|
|||||||
|
|
||||||
private void eachFlyerSpawn(Floatc2 cons){
|
private void eachFlyerSpawn(Floatc2 cons){
|
||||||
for(Tile tile : spawns){
|
for(Tile tile : spawns){
|
||||||
float angle = Angles.angle(world.width() / 2, world.height() / 2, tile.x, tile.y);
|
float angle = Angles.angle(world.width() / 2f, world.height() / 2f, tile.x, tile.y);
|
||||||
|
|
||||||
float trns = Math.max(world.width(), world.height()) * Mathf.sqrt2 * tilesize;
|
float trns = Math.max(world.width(), world.height()) * Mathf.sqrt2 * tilesize;
|
||||||
float spawnX = Mathf.clamp(world.width() * tilesize / 2f + Angles.trnsx(angle, trns), -margin, world.width() * tilesize + margin);
|
float spawnX = Mathf.clamp(world.width() * tilesize / 2f + Angles.trnsx(angle, trns), -margin, world.width() * tilesize + margin);
|
||||||
float spawnY = Mathf.clamp(world.height() * tilesize / 2f + Angles.trnsy(angle, trns), -margin, world.height() * tilesize + margin);
|
float spawnY = Mathf.clamp(world.height() * tilesize / 2f + Angles.trnsy(angle, trns), -margin, world.height() * tilesize + margin);
|
||||||
@@ -168,6 +167,7 @@ public class WaveSpawner{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void reset(){
|
private void reset(){
|
||||||
|
spawning = false;
|
||||||
spawns.clear();
|
spawns.clear();
|
||||||
|
|
||||||
for(Tile tile : world.tiles){
|
for(Tile tile : world.tiles){
|
||||||
@@ -178,8 +178,11 @@ public class WaveSpawner{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void spawnEffect(Unit unit){
|
private void spawnEffect(Unit unit){
|
||||||
Call.spawnEffect(unit.x, unit.y, unit.type);
|
unit.rotation = unit.angleTo(world.width()/2f * tilesize, world.height()/2f * tilesize);
|
||||||
Time.run(30f, unit::add);
|
unit.apply(StatusEffects.unmoving, 30f);
|
||||||
|
unit.add();
|
||||||
|
|
||||||
|
Call.spawnEffect(unit.x, unit.y, unit.rotation, unit.type);
|
||||||
}
|
}
|
||||||
|
|
||||||
private interface SpawnConsumer{
|
private interface SpawnConsumer{
|
||||||
@@ -187,8 +190,8 @@ public class WaveSpawner{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Remote(called = Loc.server, unreliable = true)
|
@Remote(called = Loc.server, unreliable = true)
|
||||||
public static void spawnEffect(float x, float y, UnitType type){
|
public static void spawnEffect(float x, float y, float rotation, UnitType u){
|
||||||
Fx.unitSpawn.at(x, y, 0f, type);
|
Fx.unitSpawn.at(x, y, rotation, u);
|
||||||
|
|
||||||
Time.run(30f, () -> Fx.spawn.at(x, y));
|
Time.run(30f, () -> Fx.spawn.at(x, y));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,9 +13,12 @@ import mindustry.world.blocks.ConstructBlock.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class BuilderAI extends AIController{
|
public class BuilderAI extends AIController{
|
||||||
float buildRadius = 1500;
|
public static float buildRadius = 1500, retreatDst = 110f, fleeRange = 370f, retreatDelay = Time.toSeconds * 2f;
|
||||||
|
|
||||||
boolean found = false;
|
boolean found = false;
|
||||||
@Nullable Unit following;
|
@Nullable Unit following;
|
||||||
|
@Nullable Teamc enemy;
|
||||||
|
float retreatTimer;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateMovement(){
|
public void updateMovement(){
|
||||||
@@ -27,6 +30,7 @@ public class BuilderAI extends AIController{
|
|||||||
unit.updateBuilding = true;
|
unit.updateBuilding = true;
|
||||||
|
|
||||||
if(following != null){
|
if(following != null){
|
||||||
|
retreatTimer = 0f;
|
||||||
//try to follow and mimic someone
|
//try to follow and mimic someone
|
||||||
|
|
||||||
//validate follower
|
//validate follower
|
||||||
@@ -39,9 +43,25 @@ public class BuilderAI extends AIController{
|
|||||||
//set to follower's first build plan, whatever that is
|
//set to follower's first build plan, whatever that is
|
||||||
unit.plans.clear();
|
unit.plans.clear();
|
||||||
unit.plans.addFirst(following.buildPlan());
|
unit.plans.addFirst(following.buildPlan());
|
||||||
|
}else if(unit.buildPlan() == null){
|
||||||
|
//not following anyone or building
|
||||||
|
if(timer.get(timerTarget4, 40)){
|
||||||
|
enemy = target(unit.x, unit.y, fleeRange, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//fly away from enemy when not doing anything, but only after a delay
|
||||||
|
if((retreatTimer += Time.delta) >= retreatDelay){
|
||||||
|
if(enemy != null){
|
||||||
|
var core = unit.closestCore();
|
||||||
|
if(core != null && !unit.within(core, retreatDst)){
|
||||||
|
moveTo(core, retreatDst);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(unit.buildPlan() != null){
|
if(unit.buildPlan() != null){
|
||||||
|
retreatTimer = 0f;
|
||||||
//approach request if building
|
//approach request if building
|
||||||
BuildPlan req = unit.buildPlan();
|
BuildPlan req = unit.buildPlan();
|
||||||
|
|
||||||
|
|||||||
40
core/src/mindustry/ai/types/DefenderAI.java
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
package mindustry.ai.types;
|
||||||
|
|
||||||
|
import arc.math.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
|
import mindustry.entities.comp.*;
|
||||||
|
import mindustry.entities.units.*;
|
||||||
|
import mindustry.gen.*;
|
||||||
|
import mindustry.world.meta.*;
|
||||||
|
|
||||||
|
public class DefenderAI extends AIController{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateMovement(){
|
||||||
|
if(target != null){
|
||||||
|
moveTo(target, (target instanceof Sized s ? s.hitSize()/2f * 1.1f : 0f) + unit.hitSize/2f + 15f, 50f);
|
||||||
|
unit.lookAt(target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void updateTargeting(){
|
||||||
|
if(retarget()) target = findTarget(unit.x, unit.y, unit.range(), true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Teamc findTarget(float x, float y, float range, boolean air, boolean ground){
|
||||||
|
//find unit to follow if not in rally mode
|
||||||
|
if(command() != UnitCommand.rally){
|
||||||
|
//Sort by max health and closer target.
|
||||||
|
var result = Units.closest(unit.team, x, y, Math.max(range, 400f), u -> !u.dead() && u.type != unit.type, (u, tx, ty) -> -u.maxHealth + Mathf.dst2(u.x, u.y, tx, ty) / 800f);
|
||||||
|
if(result != null) return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//find rally point
|
||||||
|
var block = targetFlag(unit.x, unit.y, BlockFlag.rally, false);
|
||||||
|
if(block != null) return block;
|
||||||
|
//return core if found
|
||||||
|
return unit.closestCore();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@ public class FlyingAI extends AIController{
|
|||||||
public void updateMovement(){
|
public void updateMovement(){
|
||||||
if(target != null && unit.hasWeapons() && command() == UnitCommand.attack){
|
if(target != null && unit.hasWeapons() && command() == UnitCommand.attack){
|
||||||
if(!unit.type.circleTarget){
|
if(!unit.type.circleTarget){
|
||||||
moveTo(target, unit.range() * 0.8f);
|
moveTo(target, unit.type.range * 0.8f);
|
||||||
unit.lookAt(target);
|
unit.lookAt(target);
|
||||||
}else{
|
}else{
|
||||||
attack(120f);
|
attack(120f);
|
||||||
@@ -49,10 +49,10 @@ public class FlyingAI extends AIController{
|
|||||||
float ang = unit.angleTo(target);
|
float ang = unit.angleTo(target);
|
||||||
float diff = Angles.angleDist(ang, unit.rotation());
|
float diff = Angles.angleDist(ang, unit.rotation());
|
||||||
|
|
||||||
if(diff > 100f && vec.len() < circleLength){
|
if(diff > 70f && vec.len() < circleLength){
|
||||||
vec.setAngle(unit.vel().angle());
|
vec.setAngle(unit.vel().angle());
|
||||||
}else{
|
}else{
|
||||||
vec.setAngle(Mathf.slerpDelta(unit.vel().angle(), vec.angle(), 0.6f));
|
vec.setAngle(Angles.moveToward(unit.vel().angle(), vec.angle(), 6f));
|
||||||
}
|
}
|
||||||
|
|
||||||
vec.setLength(unit.speed());
|
vec.setLength(unit.speed());
|
||||||
|
|||||||
@@ -46,10 +46,10 @@ public class FormationAI extends AIController implements FormationMember{
|
|||||||
unit.lookAt(unit.vel.angle());
|
unit.lookAt(unit.vel.angle());
|
||||||
}
|
}
|
||||||
|
|
||||||
Vec2 realtarget = vec.set(target).add(leader.vel.x, leader.vel.y);
|
Vec2 realtarget = vec.set(target).add(leader.vel);
|
||||||
|
|
||||||
float speed = unit.realSpeed() * unit.floorSpeedMultiplier();
|
float speed = unit.realSpeed() * Time.delta;
|
||||||
unit.approach(Mathf.arrive(unit.x, unit.y, realtarget.x, realtarget.y, unit.vel, 0f, 0.01f, speed, 1f));
|
unit.approach(Mathf.arrive(unit.x, unit.y, realtarget.x, realtarget.y, unit.vel, speed, 0f, speed, 1f).scl(1f / Time.delta));
|
||||||
|
|
||||||
if(unit.canMine() && leader.canMine()){
|
if(unit.canMine() && leader.canMine()){
|
||||||
if(leader.mineTile != null && unit.validMine(leader.mineTile)){
|
if(leader.mineTile != null && unit.validMine(leader.mineTile)){
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class LogicAI extends AIController{
|
|||||||
/** 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;
|
||||||
|
|
||||||
public LUnitControl control = LUnitControl.stop;
|
public LUnitControl control = LUnitControl.idle;
|
||||||
public float moveX, moveY, moveRad;
|
public float moveX, moveY, moveRad;
|
||||||
public float itemTimer, payTimer, controlTimer = logicControlTimeout, targetTimer;
|
public float itemTimer, payTimer, controlTimer = logicControlTimeout, targetTimer;
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -128,9 +128,17 @@ public class LogicAI extends AIController{
|
|||||||
vec.setZero();
|
vec.setZero();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//do not move when infinite vectors are used.
|
||||||
|
if(vec.isNaN() || vec.isInfinite()) return;
|
||||||
|
|
||||||
unit.approach(vec);
|
unit.approach(vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean checkTarget(Teamc target, float x, float y, float range){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//always retarget
|
//always retarget
|
||||||
@Override
|
@Override
|
||||||
protected boolean retarget(){
|
protected boolean retarget(){
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
package mindustry.ai.types;
|
package mindustry.ai.types;
|
||||||
|
|
||||||
|
import arc.util.*;
|
||||||
import mindustry.entities.*;
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.world.blocks.ConstructBlock.*;
|
import mindustry.world.blocks.ConstructBlock.*;
|
||||||
|
|
||||||
public class RepairAI extends AIController{
|
public class RepairAI extends AIController{
|
||||||
|
public static float retreatDst = 160f, fleeRange = 310f, retreatDelay = Time.toSeconds * 3f;
|
||||||
|
|
||||||
|
@Nullable Teamc avoid;
|
||||||
|
float retreatTimer;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateMovement(){
|
protected void updateMovement(){
|
||||||
@@ -29,6 +34,25 @@ public class RepairAI extends AIController{
|
|||||||
|
|
||||||
unit.lookAt(target);
|
unit.lookAt(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//not repairing
|
||||||
|
if(!(target instanceof Building)){
|
||||||
|
if(timer.get(timerTarget4, 40)){
|
||||||
|
avoid = target(unit.x, unit.y, fleeRange, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if((retreatTimer += Time.delta) >= retreatDelay){
|
||||||
|
//fly away from enemy when not doing anything
|
||||||
|
if(avoid != null){
|
||||||
|
var core = unit.closestCore();
|
||||||
|
if(core != null && !unit.within(core, retreatDst)){
|
||||||
|
moveTo(core, retreatDst);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
retreatTimer = 0f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package mindustry.ai.types;
|
package mindustry.ai.types;
|
||||||
|
|
||||||
|
import arc.math.geom.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.ai.*;
|
import mindustry.ai.*;
|
||||||
import mindustry.entities.*;
|
import mindustry.entities.*;
|
||||||
@@ -47,14 +48,17 @@ public class SuicideAI extends GroundAI{
|
|||||||
|
|
||||||
//raycast for target
|
//raycast for target
|
||||||
boolean blocked = Vars.world.raycast(unit.tileX(), unit.tileY(), target.tileX(), target.tileY(), (x, y) -> {
|
boolean blocked = Vars.world.raycast(unit.tileX(), unit.tileY(), target.tileX(), target.tileY(), (x, y) -> {
|
||||||
Tile tile = Vars.world.tile(x, y);
|
for(Point2 p : Geometry.d4c){
|
||||||
if(tile != null && tile.build == target) return false;
|
Tile tile = Vars.world.tile(x + p.x, y + p.y);
|
||||||
if(tile != null && tile.build != null && tile.build.team != unit.team()){
|
if(tile != null && tile.build == target) return false;
|
||||||
blockedByBlock = true;
|
if(tile != null && tile.build != null && tile.build.team != unit.team()){
|
||||||
return true;
|
blockedByBlock = true;
|
||||||
}else{
|
return true;
|
||||||
return tile == null || tile.solid();
|
}else{
|
||||||
|
return tile == null || tile.solid();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
//shoot when there's an enemy block in the way
|
//shoot when there's an enemy block in the way
|
||||||
|
|||||||
@@ -37,8 +37,9 @@ public class PhysicsProcess implements AsyncProcess{
|
|||||||
|
|
||||||
//find Unit without bodies and assign them
|
//find Unit without bodies and assign them
|
||||||
for(Unit entity : group){
|
for(Unit entity : group){
|
||||||
|
if(entity.type == null) continue;
|
||||||
|
|
||||||
if(entity.physref() == null){
|
if(entity.physref == null){
|
||||||
PhysicsBody body = new PhysicsBody();
|
PhysicsBody body = new PhysicsBody();
|
||||||
body.x = entity.x();
|
body.x = entity.x();
|
||||||
body.y = entity.y();
|
body.y = entity.y();
|
||||||
@@ -48,13 +49,13 @@ public class PhysicsProcess implements AsyncProcess{
|
|||||||
PhysicRef ref = new PhysicRef(entity, body);
|
PhysicRef ref = new PhysicRef(entity, body);
|
||||||
refs.add(ref);
|
refs.add(ref);
|
||||||
|
|
||||||
entity.physref(ref);
|
entity.physref = ref;
|
||||||
|
|
||||||
physics.add(body);
|
physics.add(body);
|
||||||
}
|
}
|
||||||
|
|
||||||
//save last position
|
//save last position
|
||||||
PhysicRef ref = entity.physref();
|
PhysicRef ref = entity.physref;
|
||||||
|
|
||||||
ref.body.layer =
|
ref.body.layer =
|
||||||
entity.type.allowLegStep ? layerLegs :
|
entity.type.allowLegStep ? layerLegs :
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public class SoundControl{
|
|||||||
Core.audio.soundBus.play();
|
Core.audio.soundBus.play();
|
||||||
setupFilters();
|
setupFilters();
|
||||||
}else{
|
}else{
|
||||||
Core.audio.soundBus.stop();
|
Core.audio.soundBus.replay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package mindustry.content;
|
package mindustry.content;
|
||||||
|
|
||||||
import arc.*;
|
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.graphics.g2d.*;
|
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
@@ -97,36 +95,9 @@ public class Blocks implements ContentList{
|
|||||||
public void load(){
|
public void load(){
|
||||||
//region environment
|
//region environment
|
||||||
|
|
||||||
air = new Floor("air"){
|
air = new AirBlock("air");
|
||||||
{
|
|
||||||
alwaysReplace = true;
|
|
||||||
hasShadow = false;
|
|
||||||
useColor = false;
|
|
||||||
wall = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public void drawBase(Tile tile){}
|
spawn = new SpawnBlock("spawn");
|
||||||
@Override public void load(){}
|
|
||||||
@Override public void init(){}
|
|
||||||
@Override public boolean isHidden(){ return true; }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TextureRegion[] variantRegions(){
|
|
||||||
if(variantRegions == null){
|
|
||||||
variantRegions = new TextureRegion[]{Core.atlas.find("clear")};
|
|
||||||
}
|
|
||||||
return variantRegions;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
spawn = new OverlayFloor("spawn"){
|
|
||||||
{
|
|
||||||
variants = 0;
|
|
||||||
needsSurface = false;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void drawBase(Tile tile){}
|
|
||||||
};
|
|
||||||
|
|
||||||
cliff = new Cliff("cliff"){{
|
cliff = new Cliff("cliff"){{
|
||||||
inEditor = false;
|
inEditor = false;
|
||||||
@@ -676,10 +647,10 @@ public class Blocks implements ContentList{
|
|||||||
separator = new Separator("separator"){{
|
separator = new Separator("separator"){{
|
||||||
requirements(Category.crafting, with(Items.copper, 30, Items.titanium, 25));
|
requirements(Category.crafting, with(Items.copper, 30, Items.titanium, 25));
|
||||||
results = with(
|
results = with(
|
||||||
Items.copper, 5,
|
Items.copper, 5,
|
||||||
Items.lead, 3,
|
Items.lead, 3,
|
||||||
Items.graphite, 2,
|
Items.graphite, 2,
|
||||||
Items.titanium, 2
|
Items.titanium, 2
|
||||||
);
|
);
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
craftTime = 35f;
|
craftTime = 35f;
|
||||||
@@ -692,10 +663,10 @@ public class Blocks implements ContentList{
|
|||||||
disassembler = new Separator("disassembler"){{
|
disassembler = new Separator("disassembler"){{
|
||||||
requirements(Category.crafting, with(Items.graphite, 140, Items.titanium, 100, Items.silicon, 150, Items.surgeAlloy, 70));
|
requirements(Category.crafting, with(Items.graphite, 140, Items.titanium, 100, Items.silicon, 150, Items.surgeAlloy, 70));
|
||||||
results = with(
|
results = with(
|
||||||
Items.sand, 4,
|
Items.sand, 4,
|
||||||
Items.graphite, 2,
|
Items.graphite, 2,
|
||||||
Items.titanium, 2,
|
Items.titanium, 2,
|
||||||
Items.thorium, 1
|
Items.thorium, 1
|
||||||
);
|
);
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
craftTime = 15f;
|
craftTime = 15f;
|
||||||
@@ -788,6 +759,7 @@ public class Blocks implements ContentList{
|
|||||||
health = 130 * wallHealthMultiplier;
|
health = 130 * wallHealthMultiplier;
|
||||||
insulated = true;
|
insulated = true;
|
||||||
absorbLasers = true;
|
absorbLasers = true;
|
||||||
|
schematicPriority = 10;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
plastaniumWallLarge = new Wall("plastanium-wall-large"){{
|
plastaniumWallLarge = new Wall("plastanium-wall-large"){{
|
||||||
@@ -796,6 +768,7 @@ public class Blocks implements ContentList{
|
|||||||
size = 2;
|
size = 2;
|
||||||
insulated = true;
|
insulated = true;
|
||||||
absorbLasers = true;
|
absorbLasers = true;
|
||||||
|
schematicPriority = 10;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
thoriumWall = new Wall("thorium-wall"){{
|
thoriumWall = new Wall("thorium-wall"){{
|
||||||
@@ -1312,7 +1285,7 @@ public class Blocks implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
waterExtractor = new SolidPump("water-extractor"){{
|
waterExtractor = new SolidPump("water-extractor"){{
|
||||||
requirements(Category.production, with(Items.copper, 25, Items.graphite, 25, Items.lead, 20));
|
requirements(Category.production, with(Items.metaglass, 30, Items.graphite, 30, Items.lead, 30));
|
||||||
result = Liquids.water;
|
result = Liquids.water;
|
||||||
pumpAmount = 0.11f;
|
pumpAmount = 0.11f;
|
||||||
size = 2;
|
size = 2;
|
||||||
@@ -1397,14 +1370,12 @@ public class Blocks implements ContentList{
|
|||||||
requirements(Category.effect, with(Items.titanium, 250, Items.thorium, 125));
|
requirements(Category.effect, with(Items.titanium, 250, Items.thorium, 125));
|
||||||
size = 3;
|
size = 3;
|
||||||
itemCapacity = 1000;
|
itemCapacity = 1000;
|
||||||
flags = EnumSet.of(BlockFlag.storage);
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
container = new StorageBlock("container"){{
|
container = new StorageBlock("container"){{
|
||||||
requirements(Category.effect, with(Items.titanium, 100));
|
requirements(Category.effect, with(Items.titanium, 100));
|
||||||
size = 2;
|
size = 2;
|
||||||
itemCapacity = 300;
|
itemCapacity = 300;
|
||||||
flags = EnumSet.of(BlockFlag.storage);
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
unloader = new Unloader("unloader"){{
|
unloader = new Unloader("unloader"){{
|
||||||
@@ -1419,10 +1390,10 @@ public class Blocks implements ContentList{
|
|||||||
duo = new ItemTurret("duo"){{
|
duo = new ItemTurret("duo"){{
|
||||||
requirements(Category.turret, with(Items.copper, 35), true);
|
requirements(Category.turret, with(Items.copper, 35), true);
|
||||||
ammo(
|
ammo(
|
||||||
Items.copper, Bullets.standardCopper,
|
Items.copper, Bullets.standardCopper,
|
||||||
Items.graphite, Bullets.standardDense,
|
Items.graphite, Bullets.standardDense,
|
||||||
Items.pyratite, Bullets.standardIncendiary,
|
Items.pyratite, Bullets.standardIncendiary,
|
||||||
Items.silicon, Bullets.standardHoming
|
Items.silicon, Bullets.standardHoming
|
||||||
);
|
);
|
||||||
|
|
||||||
spread = 4f;
|
spread = 4f;
|
||||||
@@ -1441,9 +1412,9 @@ public class Blocks implements ContentList{
|
|||||||
scatter = new ItemTurret("scatter"){{
|
scatter = new ItemTurret("scatter"){{
|
||||||
requirements(Category.turret, with(Items.copper, 85, Items.lead, 45));
|
requirements(Category.turret, with(Items.copper, 85, Items.lead, 45));
|
||||||
ammo(
|
ammo(
|
||||||
Items.scrap, Bullets.flakScrap,
|
Items.scrap, Bullets.flakScrap,
|
||||||
Items.lead, Bullets.flakLead,
|
Items.lead, Bullets.flakLead,
|
||||||
Items.metaglass, Bullets.flakGlass
|
Items.metaglass, Bullets.flakGlass
|
||||||
);
|
);
|
||||||
reloadTime = 18f;
|
reloadTime = 18f;
|
||||||
range = 160f;
|
range = 160f;
|
||||||
@@ -1464,8 +1435,8 @@ public class Blocks implements ContentList{
|
|||||||
scorch = new ItemTurret("scorch"){{
|
scorch = new ItemTurret("scorch"){{
|
||||||
requirements(Category.turret, with(Items.copper, 25, Items.graphite, 22));
|
requirements(Category.turret, with(Items.copper, 25, Items.graphite, 22));
|
||||||
ammo(
|
ammo(
|
||||||
Items.coal, Bullets.basicFlame,
|
Items.coal, Bullets.basicFlame,
|
||||||
Items.pyratite, Bullets.pyraFlame
|
Items.pyratite, Bullets.pyraFlame
|
||||||
);
|
);
|
||||||
recoilAmount = 0f;
|
recoilAmount = 0f;
|
||||||
reloadTime = 6f;
|
reloadTime = 6f;
|
||||||
@@ -1481,9 +1452,9 @@ public class Blocks implements ContentList{
|
|||||||
hail = new ItemTurret("hail"){{
|
hail = new ItemTurret("hail"){{
|
||||||
requirements(Category.turret, with(Items.copper, 40, Items.graphite, 17));
|
requirements(Category.turret, with(Items.copper, 40, Items.graphite, 17));
|
||||||
ammo(
|
ammo(
|
||||||
Items.graphite, Bullets.artilleryDense,
|
Items.graphite, Bullets.artilleryDense,
|
||||||
Items.silicon, Bullets.artilleryHoming,
|
Items.silicon, Bullets.artilleryHoming,
|
||||||
Items.pyratite, Bullets.artilleryIncendiary
|
Items.pyratite, Bullets.artilleryIncendiary
|
||||||
);
|
);
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
reloadTime = 60f;
|
reloadTime = 60f;
|
||||||
@@ -1498,10 +1469,10 @@ public class Blocks implements ContentList{
|
|||||||
wave = new LiquidTurret("wave"){{
|
wave = new LiquidTurret("wave"){{
|
||||||
requirements(Category.turret, with(Items.metaglass, 45, Items.lead, 75));
|
requirements(Category.turret, with(Items.metaglass, 45, Items.lead, 75));
|
||||||
ammo(
|
ammo(
|
||||||
Liquids.water, Bullets.waterShot,
|
Liquids.water, Bullets.waterShot,
|
||||||
Liquids.slag, Bullets.slagShot,
|
Liquids.slag, Bullets.slagShot,
|
||||||
Liquids.cryofluid, Bullets.cryoShot,
|
Liquids.cryofluid, Bullets.cryoShot,
|
||||||
Liquids.oil, Bullets.oilShot
|
Liquids.oil, Bullets.oilShot
|
||||||
);
|
);
|
||||||
size = 2;
|
size = 2;
|
||||||
recoilAmount = 0f;
|
recoilAmount = 0f;
|
||||||
@@ -1537,7 +1508,7 @@ public class Blocks implements ContentList{
|
|||||||
shootSound = Sounds.laser;
|
shootSound = Sounds.laser;
|
||||||
|
|
||||||
shootType = new LaserBulletType(140){{
|
shootType = new LaserBulletType(140){{
|
||||||
colors = new Color[]{Pal.lancerLaser.cpy().mul(1f, 1f, 1f, 0.4f), Pal.lancerLaser, Color.white};
|
colors = new Color[]{Pal.lancerLaser.cpy().a(0.4f), Pal.lancerLaser, Color.white};
|
||||||
hitEffect = Fx.hitLancer;
|
hitEffect = Fx.hitLancer;
|
||||||
despawnEffect = Fx.none;
|
despawnEffect = Fx.none;
|
||||||
hitSize = 4;
|
hitSize = 4;
|
||||||
@@ -1587,15 +1558,15 @@ public class Blocks implements ContentList{
|
|||||||
swarmer = new ItemTurret("swarmer"){{
|
swarmer = new ItemTurret("swarmer"){{
|
||||||
requirements(Category.turret, with(Items.graphite, 35, Items.titanium, 35, Items.plastanium, 45, Items.silicon, 30));
|
requirements(Category.turret, with(Items.graphite, 35, Items.titanium, 35, Items.plastanium, 45, Items.silicon, 30));
|
||||||
ammo(
|
ammo(
|
||||||
Items.blastCompound, Bullets.missileExplosive,
|
Items.blastCompound, Bullets.missileExplosive,
|
||||||
Items.pyratite, Bullets.missileIncendiary,
|
Items.pyratite, Bullets.missileIncendiary,
|
||||||
Items.surgeAlloy, Bullets.missileSurge
|
Items.surgeAlloy, Bullets.missileSurge
|
||||||
);
|
);
|
||||||
reloadTime = 30f;
|
reloadTime = 30f;
|
||||||
shots = 4;
|
shots = 4;
|
||||||
burstSpacing = 5;
|
burstSpacing = 5;
|
||||||
inaccuracy = 10f;
|
inaccuracy = 10f;
|
||||||
range = 190f;
|
range = 200f;
|
||||||
xRand = 6f;
|
xRand = 6f;
|
||||||
size = 2;
|
size = 2;
|
||||||
health = 300 * size * size;
|
health = 300 * size * size;
|
||||||
@@ -1605,11 +1576,11 @@ public class Blocks implements ContentList{
|
|||||||
salvo = new ItemTurret("salvo"){{
|
salvo = new ItemTurret("salvo"){{
|
||||||
requirements(Category.turret, with(Items.copper, 100, Items.graphite, 90, Items.titanium, 60));
|
requirements(Category.turret, with(Items.copper, 100, Items.graphite, 90, Items.titanium, 60));
|
||||||
ammo(
|
ammo(
|
||||||
Items.copper, Bullets.standardCopper,
|
Items.copper, Bullets.standardCopper,
|
||||||
Items.graphite, Bullets.standardDense,
|
Items.graphite, Bullets.standardDense,
|
||||||
Items.pyratite, Bullets.standardIncendiary,
|
Items.pyratite, Bullets.standardIncendiary,
|
||||||
Items.silicon, Bullets.standardHoming,
|
Items.silicon, Bullets.standardHoming,
|
||||||
Items.thorium, Bullets.standardThorium
|
Items.thorium, Bullets.standardThorium
|
||||||
);
|
);
|
||||||
|
|
||||||
size = 2;
|
size = 2;
|
||||||
@@ -1631,12 +1602,12 @@ public class Blocks implements ContentList{
|
|||||||
requirements(Category.turret, with(Items.silicon, 130, Items.thorium, 80, Items.phaseFabric, 40));
|
requirements(Category.turret, with(Items.silicon, 130, Items.thorium, 80, Items.phaseFabric, 40));
|
||||||
|
|
||||||
health = 250 * size * size;
|
health = 250 * size * size;
|
||||||
range = 160f;
|
range = 180f;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
consumes.powerCond(8f, (PointDefenseBuild b) -> b.target != null);
|
consumes.powerCond(8f, (PointDefenseBuild b) -> b.target != null);
|
||||||
size = 2;
|
size = 2;
|
||||||
shootLength = 5f;
|
shootLength = 5f;
|
||||||
bulletDamage = 25f;
|
bulletDamage = 30f;
|
||||||
reloadTime = 9f;
|
reloadTime = 9f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -1649,7 +1620,6 @@ public class Blocks implements ContentList{
|
|||||||
Liquids.oil, Bullets.heavyOilShot
|
Liquids.oil, Bullets.heavyOilShot
|
||||||
);
|
);
|
||||||
size = 3;
|
size = 3;
|
||||||
recoilAmount = 0f;
|
|
||||||
reloadTime = 2f;
|
reloadTime = 2f;
|
||||||
shots = 2;
|
shots = 2;
|
||||||
velocityInaccuracy = 0.1f;
|
velocityInaccuracy = 0.1f;
|
||||||
@@ -1661,6 +1631,7 @@ public class Blocks implements ContentList{
|
|||||||
shootEffect = Fx.shootLiquid;
|
shootEffect = Fx.shootLiquid;
|
||||||
range = 190f;
|
range = 190f;
|
||||||
health = 250 * size * size;
|
health = 250 * size * size;
|
||||||
|
flags = EnumSet.of(BlockFlag.turret, BlockFlag.extinguisher);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
fuse = new ItemTurret("fuse"){{
|
fuse = new ItemTurret("fuse"){{
|
||||||
@@ -1682,31 +1653,31 @@ public class Blocks implements ContentList{
|
|||||||
float brange = range + 10f;
|
float brange = range + 10f;
|
||||||
|
|
||||||
ammo(
|
ammo(
|
||||||
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(){{
|
Items.thorium, new ShrapnelBulletType(){{
|
||||||
length = brange;
|
length = brange;
|
||||||
damage = 105f;
|
damage = 105f;
|
||||||
ammoMultiplier = 5f;
|
ammoMultiplier = 5f;
|
||||||
toColor = Pal.thoriumPink;
|
toColor = Pal.thoriumPink;
|
||||||
shootEffect = smokeEffect = Fx.thoriumShoot;
|
shootEffect = smokeEffect = Fx.thoriumShoot;
|
||||||
}}
|
}}
|
||||||
);
|
);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
ripple = new ItemTurret("ripple"){{
|
ripple = new ItemTurret("ripple"){{
|
||||||
requirements(Category.turret, with(Items.copper, 150, Items.graphite, 135, Items.titanium, 60));
|
requirements(Category.turret, with(Items.copper, 150, Items.graphite, 135, Items.titanium, 60));
|
||||||
ammo(
|
ammo(
|
||||||
Items.graphite, Bullets.artilleryDense,
|
Items.graphite, Bullets.artilleryDense,
|
||||||
Items.silicon, Bullets.artilleryHoming,
|
Items.silicon, Bullets.artilleryHoming,
|
||||||
Items.pyratite, Bullets.artilleryIncendiary,
|
Items.pyratite, Bullets.artilleryIncendiary,
|
||||||
Items.blastCompound, Bullets.artilleryExplosive,
|
Items.blastCompound, Bullets.artilleryExplosive,
|
||||||
Items.plastanium, Bullets.artilleryPlastic
|
Items.plastanium, Bullets.artilleryPlastic
|
||||||
);
|
);
|
||||||
|
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
@@ -1732,10 +1703,10 @@ public class Blocks implements ContentList{
|
|||||||
cyclone = new ItemTurret("cyclone"){{
|
cyclone = new ItemTurret("cyclone"){{
|
||||||
requirements(Category.turret, with(Items.copper, 200, Items.titanium, 125, Items.plastanium, 80));
|
requirements(Category.turret, with(Items.copper, 200, Items.titanium, 125, Items.plastanium, 80));
|
||||||
ammo(
|
ammo(
|
||||||
Items.metaglass, Bullets.fragGlass,
|
Items.metaglass, Bullets.fragGlass,
|
||||||
Items.blastCompound, Bullets.fragExplosive,
|
Items.blastCompound, Bullets.fragExplosive,
|
||||||
Items.plastanium, Bullets.fragPlastic,
|
Items.plastanium, Bullets.fragPlastic,
|
||||||
Items.surgeAlloy, Bullets.fragSurge
|
Items.surgeAlloy, Bullets.fragSurge
|
||||||
);
|
);
|
||||||
xRand = 4f;
|
xRand = 4f;
|
||||||
reloadTime = 8f;
|
reloadTime = 8f;
|
||||||
@@ -1755,19 +1726,19 @@ public class Blocks implements ContentList{
|
|||||||
|
|
||||||
requirements(Category.turret, with(Items.copper, 1000, Items.metaglass, 600, Items.surgeAlloy, 300, Items.plastanium, 200, Items.silicon, 600));
|
requirements(Category.turret, with(Items.copper, 1000, Items.metaglass, 600, Items.surgeAlloy, 300, Items.plastanium, 200, Items.silicon, 600));
|
||||||
ammo(
|
ammo(
|
||||||
Items.surgeAlloy, new PointBulletType(){{
|
Items.surgeAlloy, new PointBulletType(){{
|
||||||
shootEffect = Fx.instShoot;
|
shootEffect = Fx.instShoot;
|
||||||
hitEffect = Fx.instHit;
|
hitEffect = Fx.instHit;
|
||||||
smokeEffect = Fx.smokeCloud;
|
smokeEffect = Fx.smokeCloud;
|
||||||
trailEffect = Fx.instTrail;
|
trailEffect = Fx.instTrail;
|
||||||
despawnEffect = Fx.instBomb;
|
despawnEffect = Fx.instBomb;
|
||||||
trailSpacing = 20f;
|
trailSpacing = 20f;
|
||||||
damage = 1350;
|
damage = 1350;
|
||||||
buildingDamageMultiplier = 0.3f;
|
buildingDamageMultiplier = 0.3f;
|
||||||
speed = brange;
|
speed = brange;
|
||||||
hitShake = 6f;
|
hitShake = 6f;
|
||||||
ammoMultiplier = 1f;
|
ammoMultiplier = 1f;
|
||||||
}}
|
}}
|
||||||
);
|
);
|
||||||
|
|
||||||
maxAmmo = 40;
|
maxAmmo = 40;
|
||||||
@@ -1796,9 +1767,9 @@ public class Blocks implements ContentList{
|
|||||||
spectre = new ItemTurret("spectre"){{
|
spectre = new ItemTurret("spectre"){{
|
||||||
requirements(Category.turret, with(Items.copper, 900, Items.graphite, 300, Items.surgeAlloy, 250, Items.plastanium, 175, Items.thorium, 250));
|
requirements(Category.turret, with(Items.copper, 900, Items.graphite, 300, Items.surgeAlloy, 250, Items.plastanium, 175, Items.thorium, 250));
|
||||||
ammo(
|
ammo(
|
||||||
Items.graphite, Bullets.standardDenseBig,
|
Items.graphite, Bullets.standardDenseBig,
|
||||||
Items.pyratite, Bullets.standardIncendiaryBig,
|
Items.pyratite, Bullets.standardIncendiaryBig,
|
||||||
Items.thorium, Bullets.standardThoriumBig
|
Items.thorium, Bullets.standardThoriumBig
|
||||||
);
|
);
|
||||||
reloadTime = 6f;
|
reloadTime = 6f;
|
||||||
coolantMultiplier = 0.5f;
|
coolantMultiplier = 0.5f;
|
||||||
@@ -1838,6 +1809,7 @@ public class Blocks implements ContentList{
|
|||||||
shootType = new ContinuousLaserBulletType(70){{
|
shootType = new ContinuousLaserBulletType(70){{
|
||||||
length = 200f;
|
length = 200f;
|
||||||
hitEffect = Fx.hitMeltdown;
|
hitEffect = Fx.hitMeltdown;
|
||||||
|
hitColor = Pal.meltdownHit;
|
||||||
drawSize = 420f;
|
drawSize = 420f;
|
||||||
|
|
||||||
incendChance = 0.4f;
|
incendChance = 0.4f;
|
||||||
@@ -1992,7 +1964,7 @@ public class Blocks implements ContentList{
|
|||||||
|
|
||||||
powerSource = new PowerSource("power-source"){{
|
powerSource = new PowerSource("power-source"){{
|
||||||
requirements(Category.power, BuildVisibility.sandboxOnly, with());
|
requirements(Category.power, BuildVisibility.sandboxOnly, with());
|
||||||
powerProduction = 10000f / 60f;
|
powerProduction = 1000000f / 60f;
|
||||||
alwaysUnlocked = true;
|
alwaysUnlocked = true;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -2055,6 +2027,7 @@ public class Blocks implements ContentList{
|
|||||||
|
|
||||||
//TODO remove
|
//TODO remove
|
||||||
launchPadLarge = new LaunchPad("launch-pad-large"){{
|
launchPadLarge = new LaunchPad("launch-pad-large"){{
|
||||||
|
requirements(Category.effect, BuildVisibility.debugOnly, ItemStack.with(Items.titanium, 200, Items.silicon, 150, Items.lead, 250, Items.plastanium, 75));
|
||||||
size = 4;
|
size = 4;
|
||||||
itemCapacity = 300;
|
itemCapacity = 300;
|
||||||
launchTime = 60f * 35;
|
launchTime = 60f * 35;
|
||||||
@@ -2069,6 +2042,7 @@ public class Blocks implements ContentList{
|
|||||||
hasPower = true;
|
hasPower = true;
|
||||||
consumes.power(10f);
|
consumes.power(10f);
|
||||||
buildCostMultiplier = 0.5f;
|
buildCostMultiplier = 0.5f;
|
||||||
|
health = size * size * 80;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
//endregion campaign
|
//endregion campaign
|
||||||
@@ -2146,21 +2120,21 @@ public class Blocks implements ContentList{
|
|||||||
//region experimental
|
//region experimental
|
||||||
|
|
||||||
blockForge = new BlockForge("block-forge"){{
|
blockForge = new BlockForge("block-forge"){{
|
||||||
requirements(Category.production, BuildVisibility.debugOnly, with(Items.thorium, 100));
|
requirements(Category.crafting, BuildVisibility.debugOnly, with(Items.thorium, 100));
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
consumes.power(2f);
|
consumes.power(2f);
|
||||||
size = 3;
|
size = 3;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
blockLoader = new BlockLoader("block-loader"){{
|
blockLoader = new BlockLoader("block-loader"){{
|
||||||
requirements(Category.production, BuildVisibility.debugOnly, with(Items.thorium, 100));
|
requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.thorium, 100));
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
consumes.power(2f);
|
consumes.power(2f);
|
||||||
size = 3;
|
size = 3;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
blockUnloader = new BlockUnloader("block-unloader"){{
|
blockUnloader = new BlockUnloader("block-unloader"){{
|
||||||
requirements(Category.production, BuildVisibility.debugOnly, with(Items.thorium, 100));
|
requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.thorium, 100));
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
consumes.power(2f);
|
consumes.power(2f);
|
||||||
size = 3;
|
size = 3;
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class Bullets implements ContentList{
|
|||||||
lifetime = 80f;
|
lifetime = 80f;
|
||||||
width = height = 11f;
|
width = height = 11f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
splashDamageRadius = 25f;
|
splashDamageRadius = 25f * 0.75f;
|
||||||
splashDamage = 33f;
|
splashDamage = 33f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ public class Bullets implements ContentList{
|
|||||||
lifetime = 80f;
|
lifetime = 80f;
|
||||||
width = height = 13f;
|
width = height = 13f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
splashDamageRadius = 35f;
|
splashDamageRadius = 35f * 0.75f;
|
||||||
splashDamage = 45f;
|
splashDamage = 45f;
|
||||||
fragBullet = artilleryPlasticFrag;
|
fragBullet = artilleryPlasticFrag;
|
||||||
fragBullets = 10;
|
fragBullets = 10;
|
||||||
@@ -98,7 +98,7 @@ public class Bullets implements ContentList{
|
|||||||
lifetime = 80f;
|
lifetime = 80f;
|
||||||
width = height = 11f;
|
width = height = 11f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
splashDamageRadius = 25f;
|
splashDamageRadius = 25f * 0.75f;
|
||||||
splashDamage = 33f;
|
splashDamage = 33f;
|
||||||
reloadMultiplier = 1.2f;
|
reloadMultiplier = 1.2f;
|
||||||
ammoMultiplier = 3f;
|
ammoMultiplier = 3f;
|
||||||
@@ -112,7 +112,7 @@ public class Bullets implements ContentList{
|
|||||||
lifetime = 80f;
|
lifetime = 80f;
|
||||||
width = height = 13f;
|
width = height = 13f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
splashDamageRadius = 25f;
|
splashDamageRadius = 25f * 0.75f;
|
||||||
splashDamage = 35f;
|
splashDamage = 35f;
|
||||||
status = StatusEffects.burning;
|
status = StatusEffects.burning;
|
||||||
frontColor = Pal.lightishOrange;
|
frontColor = Pal.lightishOrange;
|
||||||
@@ -128,7 +128,7 @@ public class Bullets implements ContentList{
|
|||||||
width = height = 14f;
|
width = height = 14f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
splashDamageRadius = 45f;
|
splashDamageRadius = 45f * 0.75f;
|
||||||
splashDamage = 50f;
|
splashDamage = 50f;
|
||||||
backColor = Pal.missileYellowBack;
|
backColor = Pal.missileYellowBack;
|
||||||
frontColor = Pal.missileYellow;
|
frontColor = Pal.missileYellow;
|
||||||
@@ -155,7 +155,7 @@ public class Bullets implements ContentList{
|
|||||||
width = 6f;
|
width = 6f;
|
||||||
height = 8f;
|
height = 8f;
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
splashDamage = 27f;
|
splashDamage = 27f * 1.5f;
|
||||||
splashDamageRadius = 15f;
|
splashDamageRadius = 15f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@ public class Bullets implements ContentList{
|
|||||||
width = 6f;
|
width = 6f;
|
||||||
height = 8f;
|
height = 8f;
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
splashDamage = 22f;
|
splashDamage = 22f * 1.5f;
|
||||||
splashDamageRadius = 24f;
|
splashDamageRadius = 24f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -179,10 +179,10 @@ public class Bullets implements ContentList{
|
|||||||
width = 6f;
|
width = 6f;
|
||||||
height = 8f;
|
height = 8f;
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
splashDamage = 22f;
|
splashDamage = 22f * 1.5f;
|
||||||
splashDamageRadius = 20f;
|
splashDamageRadius = 20f;
|
||||||
fragBullet = flakGlassFrag;
|
fragBullet = flakGlassFrag;
|
||||||
fragBullets = 5;
|
fragBullets = 6;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
fragGlassFrag = new BasicBulletType(3f, 5, "bullet"){{
|
fragGlassFrag = new BasicBulletType(3f, 5, "bullet"){{
|
||||||
@@ -212,19 +212,19 @@ public class Bullets implements ContentList{
|
|||||||
width = 6f;
|
width = 6f;
|
||||||
height = 8f;
|
height = 8f;
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
splashDamage = 18f;
|
splashDamage = 18f * 1.5f;
|
||||||
splashDamageRadius = 16f;
|
splashDamageRadius = 16f;
|
||||||
fragBullet = fragGlassFrag;
|
fragBullet = fragGlassFrag;
|
||||||
fragBullets = 3;
|
fragBullets = 4;
|
||||||
explodeRange = 20f;
|
explodeRange = 20f;
|
||||||
collidesGround = true;
|
collidesGround = true;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
fragPlastic = new FlakBulletType(4f, 6){{
|
fragPlastic = new FlakBulletType(4f, 6){{
|
||||||
splashDamageRadius = 40f;
|
splashDamageRadius = 40f;
|
||||||
splashDamage = 25f;
|
splashDamage = 25f * 1.5f;
|
||||||
fragBullet = fragPlasticFrag;
|
fragBullet = fragPlasticFrag;
|
||||||
fragBullets = 5;
|
fragBullets = 6;
|
||||||
hitEffect = Fx.plasticExplosion;
|
hitEffect = Fx.plasticExplosion;
|
||||||
frontColor = Pal.plastaniumFront;
|
frontColor = Pal.plastaniumFront;
|
||||||
backColor = Pal.plastaniumBack;
|
backColor = Pal.plastaniumBack;
|
||||||
@@ -235,9 +235,9 @@ public class Bullets implements ContentList{
|
|||||||
|
|
||||||
fragExplosive = new FlakBulletType(4f, 5){{
|
fragExplosive = new FlakBulletType(4f, 5){{
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 5f;
|
||||||
splashDamage = 18f;
|
splashDamage = 26f * 1.5f;
|
||||||
splashDamageRadius = 55f;
|
splashDamageRadius = 60f;
|
||||||
collidesGround = true;
|
collidesGround = true;
|
||||||
|
|
||||||
status = StatusEffects.blasted;
|
status = StatusEffects.blasted;
|
||||||
@@ -245,9 +245,9 @@ public class Bullets implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
fragSurge = new FlakBulletType(4.5f, 13){{
|
fragSurge = new FlakBulletType(4.5f, 13){{
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 5f;
|
||||||
splashDamage = 50f;
|
splashDamage = 50f * 1.5f;
|
||||||
splashDamageRadius = 40f;
|
splashDamageRadius = 38f;
|
||||||
lightning = 2;
|
lightning = 2;
|
||||||
lightningLength = 7;
|
lightningLength = 7;
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
@@ -261,7 +261,7 @@ public class Bullets implements ContentList{
|
|||||||
shrinkY = 0f;
|
shrinkY = 0f;
|
||||||
drag = -0.01f;
|
drag = -0.01f;
|
||||||
splashDamageRadius = 30f;
|
splashDamageRadius = 30f;
|
||||||
splashDamage = 30f;
|
splashDamage = 30f * 1.5f;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
despawnEffect = Fx.blastExplosion;
|
despawnEffect = Fx.blastExplosion;
|
||||||
@@ -279,7 +279,7 @@ public class Bullets implements ContentList{
|
|||||||
drag = -0.01f;
|
drag = -0.01f;
|
||||||
homingPower = 0.08f;
|
homingPower = 0.08f;
|
||||||
splashDamageRadius = 20f;
|
splashDamageRadius = 20f;
|
||||||
splashDamage = 20f;
|
splashDamage = 20f * 1.5f;
|
||||||
makeFire = true;
|
makeFire = true;
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
status = StatusEffects.burning;
|
status = StatusEffects.burning;
|
||||||
@@ -291,7 +291,7 @@ public class Bullets implements ContentList{
|
|||||||
shrinkY = 0f;
|
shrinkY = 0f;
|
||||||
drag = -0.01f;
|
drag = -0.01f;
|
||||||
splashDamageRadius = 25f;
|
splashDamageRadius = 25f;
|
||||||
splashDamage = 25f;
|
splashDamage = 25f * 1.5f;
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
despawnEffect = Fx.blastExplosion;
|
despawnEffect = Fx.blastExplosion;
|
||||||
lightningDamage = 10;
|
lightningDamage = 10;
|
||||||
|
|||||||
@@ -26,17 +26,23 @@ public class Fx{
|
|||||||
none = new Effect(0, 0f, e -> {}),
|
none = new Effect(0, 0f, e -> {}),
|
||||||
|
|
||||||
unitSpawn = new Effect(30f, e -> {
|
unitSpawn = new Effect(30f, e -> {
|
||||||
if(!(e.data instanceof UnitType)) return;
|
if(!(e.data instanceof UnitType unit)) return;
|
||||||
|
|
||||||
alpha(e.fin());
|
|
||||||
|
|
||||||
float scl = 1f + e.fout() * 2f;
|
float scl = 1f + e.fout() * 2f;
|
||||||
|
|
||||||
UnitType unit = e.data();
|
|
||||||
TextureRegion region = unit.icon(Cicon.full);
|
TextureRegion region = unit.icon(Cicon.full);
|
||||||
|
|
||||||
|
alpha(e.fout());
|
||||||
|
mixcol(Color.white, e.fin());
|
||||||
|
|
||||||
|
rect(region, e.x, e.y, 180f);
|
||||||
|
|
||||||
|
reset();
|
||||||
|
|
||||||
|
alpha(e.fin());
|
||||||
|
|
||||||
rect(region, e.x, e.y,
|
rect(region, e.x, e.y,
|
||||||
region.width * Draw.scl * scl, region.height * Draw.scl * scl, 180f);
|
region.width * Draw.scl * scl, region.height * Draw.scl * scl, e.rotation - 90);
|
||||||
|
|
||||||
}),
|
}),
|
||||||
|
|
||||||
@@ -419,6 +425,16 @@ public class Fx{
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
hitLaserBlast = new Effect(12, e -> {
|
||||||
|
color(e.color);
|
||||||
|
stroke(e.fout() * 1.5f);
|
||||||
|
|
||||||
|
randLenVectors(e.id, 8, e.finpow() * 17f, e.rotation, 360f, (x, y) -> {
|
||||||
|
float ang = Mathf.angle(x, y);
|
||||||
|
lineAngle(e.x + x, e.y + y, ang, e.fout() * 4 + 1f);
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
|
||||||
hitLancer = new Effect(12, e -> {
|
hitLancer = new Effect(12, e -> {
|
||||||
color(Color.white);
|
color(Color.white);
|
||||||
stroke(e.fout() * 1.5f);
|
stroke(e.fout() * 1.5f);
|
||||||
@@ -429,6 +445,16 @@ public class Fx{
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
hitBeam = new Effect(12, e -> {
|
||||||
|
color(e.color);
|
||||||
|
stroke(e.fout() * 2f);
|
||||||
|
|
||||||
|
randLenVectors(e.id, 6, e.finpow() * 18f, e.rotation, 360f, (x, y) -> {
|
||||||
|
float ang = Mathf.angle(x, y);
|
||||||
|
lineAngle(e.x + x, e.y + y, ang, e.fout() * 4 + 1f);
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
|
||||||
hitMeltdown = new Effect(12, e -> {
|
hitMeltdown = new Effect(12, e -> {
|
||||||
color(Pal.meltdownHit);
|
color(Pal.meltdownHit);
|
||||||
stroke(e.fout() * 2f);
|
stroke(e.fout() * 2f);
|
||||||
@@ -698,6 +724,19 @@ public class Fx{
|
|||||||
Lines.circle(e.x, e.y, 5f * e.fout());
|
Lines.circle(e.x, e.y, 5f * e.fout());
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
forceShrink = new Effect(20, e -> {
|
||||||
|
color(e.color, e.fout());
|
||||||
|
if(renderer.animateShields){
|
||||||
|
Fill.poly(e.x, e.y, 6, e.rotation * e.fout());
|
||||||
|
}else{
|
||||||
|
stroke(1.5f);
|
||||||
|
Draw.alpha(0.09f);
|
||||||
|
Fill.poly(e.x, e.y, 6, e.rotation * e.fout());
|
||||||
|
Draw.alpha(1f);
|
||||||
|
Lines.poly(e.x, e.y, 6, e.rotation * e.fout());
|
||||||
|
}
|
||||||
|
}).layer(Layer.shields),
|
||||||
|
|
||||||
flakExplosionBig = new Effect(30, e -> {
|
flakExplosionBig = new Effect(30, e -> {
|
||||||
color(Pal.bulletYellowBack);
|
color(Pal.bulletYellowBack);
|
||||||
|
|
||||||
@@ -896,7 +935,7 @@ public class Fx{
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
|
||||||
dynamicExplosion = new Effect(30, e -> {
|
dynamicExplosion = new Effect(30, 100f, e -> {
|
||||||
float intensity = e.rotation;
|
float intensity = e.rotation;
|
||||||
|
|
||||||
e.scaled(5 + intensity * 2, i -> {
|
e.scaled(5 + intensity * 2, i -> {
|
||||||
@@ -1564,6 +1603,18 @@ public class Fx{
|
|||||||
Fill.square(e.x, e.y, e.rotation * tilesize / 2f);
|
Fill.square(e.x, e.y, e.rotation * tilesize / 2f);
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
rotateBlock = new Effect(30, e -> {
|
||||||
|
color(Pal.accent);
|
||||||
|
alpha(e.fout() * 1);
|
||||||
|
Fill.square(e.x, e.y, e.rotation * tilesize / 2f);
|
||||||
|
}),
|
||||||
|
|
||||||
|
lightBlock = new Effect(60, e -> {
|
||||||
|
color(e.color);
|
||||||
|
alpha(e.fout() * 1);
|
||||||
|
Fill.square(e.x, e.y, e.rotation * tilesize / 2f);
|
||||||
|
}),
|
||||||
|
|
||||||
overdriveBlockFull = new Effect(60, e -> {
|
overdriveBlockFull = new Effect(60, e -> {
|
||||||
color(e.color);
|
color(e.color);
|
||||||
alpha(e.fslope() * 0.4f);
|
alpha(e.fslope() * 0.4f);
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ public class Items implements ContentList{
|
|||||||
|
|
||||||
surgeAlloy = new Item("surge-alloy", Color.valueOf("f3e979")){{
|
surgeAlloy = new Item("surge-alloy", Color.valueOf("f3e979")){{
|
||||||
cost = 1.2f;
|
cost = 1.2f;
|
||||||
|
charge = 0.75f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
sporePod = new Item("spore-pod", Color.valueOf("7457ce")){{
|
sporePod = new Item("spore-pod", Color.valueOf("7457ce")){{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import mindustry.graphics.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class StatusEffects implements ContentList{
|
public class StatusEffects implements ContentList{
|
||||||
public static StatusEffect none, burning, freezing, unmoving, slow, wet, muddy, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss, sporeSlowed;
|
public static StatusEffect none, burning, freezing, unmoving, slow, wet, muddy, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss, sporeSlowed, disarmed;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
@@ -21,7 +21,7 @@ public class StatusEffects implements ContentList{
|
|||||||
|
|
||||||
burning = new StatusEffect("burning"){{
|
burning = new StatusEffect("burning"){{
|
||||||
color = Pal.lightFlame;
|
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;
|
||||||
|
|
||||||
init(() -> {
|
init(() -> {
|
||||||
@@ -29,7 +29,7 @@ public class StatusEffects implements ContentList{
|
|||||||
trans(tarred, ((unit, time, newTime, result) -> {
|
trans(tarred, ((unit, time, newTime, result) -> {
|
||||||
unit.damagePierce(8f);
|
unit.damagePierce(8f);
|
||||||
Fx.burning.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f));
|
Fx.burning.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f));
|
||||||
result.set(this, Math.min(time + newTime, 300f));
|
result.set(burning, Math.min(time + newTime, 300f));
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
}};
|
}};
|
||||||
@@ -45,7 +45,7 @@ public class StatusEffects implements ContentList{
|
|||||||
|
|
||||||
trans(blasted, ((unit, time, newTime, result) -> {
|
trans(blasted, ((unit, time, newTime, result) -> {
|
||||||
unit.damagePierce(18f);
|
unit.damagePierce(18f);
|
||||||
result.set(this, time);
|
result.set(freezing, time);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
}};
|
}};
|
||||||
@@ -72,7 +72,7 @@ public class StatusEffects implements ContentList{
|
|||||||
if(unit.team == state.rules.waveTeam){
|
if(unit.team == state.rules.waveTeam){
|
||||||
Events.fire(Trigger.shock);
|
Events.fire(Trigger.shock);
|
||||||
}
|
}
|
||||||
result.set(this, time);
|
result.set(wet, time);
|
||||||
}));
|
}));
|
||||||
opposite(burning);
|
opposite(burning);
|
||||||
});
|
});
|
||||||
@@ -97,7 +97,7 @@ public class StatusEffects implements ContentList{
|
|||||||
trans(tarred, ((unit, time, newTime, result) -> {
|
trans(tarred, ((unit, time, newTime, result) -> {
|
||||||
unit.damagePierce(8f);
|
unit.damagePierce(8f);
|
||||||
Fx.burning.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f));
|
Fx.burning.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f));
|
||||||
result.set(this, Math.min(time + newTime, 200f));
|
result.set(melting, Math.min(time + newTime, 200f));
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
}};
|
}};
|
||||||
@@ -161,15 +161,22 @@ public class StatusEffects implements ContentList{
|
|||||||
|
|
||||||
shocked = new StatusEffect("shocked"){{
|
shocked = new StatusEffect("shocked"){{
|
||||||
color = Pal.lancerLaser;
|
color = Pal.lancerLaser;
|
||||||
|
reactive = true;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
blasted = new StatusEffect("blasted"){{
|
blasted = new StatusEffect("blasted"){{
|
||||||
color = Color.valueOf("ff795e");
|
color = Color.valueOf("ff795e");
|
||||||
|
reactive = true;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
corroded = new StatusEffect("corroded"){{
|
corroded = new StatusEffect("corroded"){{
|
||||||
color = Pal.plastanium;
|
color = Pal.plastanium;
|
||||||
damage = 0.1f;
|
damage = 0.1f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
disarmed = new StatusEffect("disarmed"){{
|
||||||
|
color = Color.valueOf("e9ead3");
|
||||||
|
disarm = true;
|
||||||
|
}};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ public class UnitTypes implements ContentList{
|
|||||||
hitSize = 13f;
|
hitSize = 13f;
|
||||||
rotateSpeed = 3f;
|
rotateSpeed = 3f;
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
health = 790;
|
health = 800;
|
||||||
armor = 9f;
|
armor = 9f;
|
||||||
mechFrontSway = 0.55f;
|
mechFrontSway = 0.55f;
|
||||||
|
|
||||||
@@ -137,8 +137,8 @@ public class UnitTypes implements ContentList{
|
|||||||
width = height = 14f;
|
width = height = 14f;
|
||||||
collides = true;
|
collides = true;
|
||||||
collidesTiles = true;
|
collidesTiles = true;
|
||||||
splashDamageRadius = 24f;
|
splashDamageRadius = 28f;
|
||||||
splashDamage = 45f;
|
splashDamage = 54f;
|
||||||
backColor = Pal.bulletYellowBack;
|
backColor = Pal.bulletYellowBack;
|
||||||
frontColor = Pal.bulletYellow;
|
frontColor = Pal.bulletYellow;
|
||||||
}};
|
}};
|
||||||
@@ -150,7 +150,7 @@ public class UnitTypes implements ContentList{
|
|||||||
hitSize = 20f;
|
hitSize = 20f;
|
||||||
rotateSpeed = 2.1f;
|
rotateSpeed = 2.1f;
|
||||||
health = 9000;
|
health = 9000;
|
||||||
armor = 11f;
|
armor = 10f;
|
||||||
canDrown = false;
|
canDrown = false;
|
||||||
mechFrontSway = 1f;
|
mechFrontSway = 1f;
|
||||||
|
|
||||||
@@ -173,7 +173,7 @@ public class UnitTypes implements ContentList{
|
|||||||
inaccuracy = 3f;
|
inaccuracy = 3f;
|
||||||
shotDelay = 4f;
|
shotDelay = 4f;
|
||||||
|
|
||||||
bullet = new BasicBulletType(7f, 50){{
|
bullet = new BasicBulletType(7f, 45){{
|
||||||
width = 11f;
|
width = 11f;
|
||||||
height = 20f;
|
height = 20f;
|
||||||
lifetime = 25f;
|
lifetime = 25f;
|
||||||
@@ -182,7 +182,7 @@ public class UnitTypes implements ContentList{
|
|||||||
lightningLength = 6;
|
lightningLength = 6;
|
||||||
lightningColor = Pal.surge;
|
lightningColor = Pal.surge;
|
||||||
//standard bullet damage is far too much for lightning
|
//standard bullet damage is far too much for lightning
|
||||||
lightningDamage = 20;
|
lightningDamage = 19;
|
||||||
}};
|
}};
|
||||||
}},
|
}},
|
||||||
|
|
||||||
@@ -230,7 +230,7 @@ public class UnitTypes implements ContentList{
|
|||||||
ejectEffect = Fx.casing4;
|
ejectEffect = Fx.casing4;
|
||||||
shootSound = Sounds.bang;
|
shootSound = Sounds.bang;
|
||||||
|
|
||||||
bullet = new BasicBulletType(13f, 60){{
|
bullet = new BasicBulletType(13f, 65){{
|
||||||
pierce = true;
|
pierce = true;
|
||||||
pierceCap = 10;
|
pierceCap = 10;
|
||||||
width = 14f;
|
width = 14f;
|
||||||
@@ -240,14 +240,14 @@ public class UnitTypes implements ContentList{
|
|||||||
fragVelocityMin = 0.4f;
|
fragVelocityMin = 0.4f;
|
||||||
|
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
splashDamage = 18f;
|
splashDamage = 16f;
|
||||||
splashDamageRadius = 30f;
|
splashDamageRadius = 13f;
|
||||||
|
|
||||||
fragBullets = 2;
|
fragBullets = 2;
|
||||||
fragLifeMin = 0f;
|
fragLifeMin = 0f;
|
||||||
fragCone = 30f;
|
fragCone = 30f;
|
||||||
|
|
||||||
fragBullet = new BasicBulletType(9f, 15){{
|
fragBullet = new BasicBulletType(9f, 18){{
|
||||||
width = 10f;
|
width = 10f;
|
||||||
height = 10f;
|
height = 10f;
|
||||||
pierce = true;
|
pierce = true;
|
||||||
@@ -257,7 +257,7 @@ public class UnitTypes implements ContentList{
|
|||||||
lifetime = 20f;
|
lifetime = 20f;
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
splashDamage = 15f;
|
splashDamage = 15f;
|
||||||
splashDamageRadius = 15f;
|
splashDamageRadius = 10f;
|
||||||
}};
|
}};
|
||||||
}};
|
}};
|
||||||
}}
|
}}
|
||||||
@@ -322,9 +322,8 @@ public class UnitTypes implements ContentList{
|
|||||||
x = 5f;
|
x = 5f;
|
||||||
shake = 2.2f;
|
shake = 2.2f;
|
||||||
y = 0.5f;
|
y = 0.5f;
|
||||||
shootY = 5f;
|
|
||||||
|
|
||||||
shootY = 2.5f;
|
shootY = 2.5f;
|
||||||
|
|
||||||
reload = 38f;
|
reload = 38f;
|
||||||
shots = 3;
|
shots = 3;
|
||||||
inaccuracy = 35;
|
inaccuracy = 35;
|
||||||
@@ -359,7 +358,6 @@ public class UnitTypes implements ContentList{
|
|||||||
|
|
||||||
quasar = new UnitType("quasar"){{
|
quasar = new UnitType("quasar"){{
|
||||||
mineTier = 3;
|
mineTier = 3;
|
||||||
hitSize = 12f;
|
|
||||||
boostMultiplier = 2f;
|
boostMultiplier = 2f;
|
||||||
health = 650f;
|
health = 650f;
|
||||||
buildSpeed = 1.7f;
|
buildSpeed = 1.7f;
|
||||||
@@ -407,19 +405,20 @@ public class UnitTypes implements ContentList{
|
|||||||
rotateSpeed = 1.6f;
|
rotateSpeed = 1.6f;
|
||||||
canDrown = false;
|
canDrown = false;
|
||||||
mechFrontSway = 1f;
|
mechFrontSway = 1f;
|
||||||
|
buildSpeed = 3f;
|
||||||
|
|
||||||
mechStepParticles = true;
|
mechStepParticles = true;
|
||||||
mechStepShake = 0.15f;
|
mechStepShake = 0.15f;
|
||||||
ammoType = AmmoTypes.powerHigh;
|
ammoType = AmmoTypes.powerHigh;
|
||||||
|
|
||||||
speed = 0.35f;
|
speed = 0.38f;
|
||||||
boostMultiplier = 2.1f;
|
boostMultiplier = 2.2f;
|
||||||
engineOffset = 12f;
|
engineOffset = 12f;
|
||||||
engineSize = 6f;
|
engineSize = 6f;
|
||||||
lowAltitude = true;
|
lowAltitude = true;
|
||||||
|
|
||||||
health = 7000f;
|
health = 7500f;
|
||||||
armor = 7f;
|
armor = 9f;
|
||||||
canBoost = true;
|
canBoost = true;
|
||||||
landShake = 4f;
|
landShake = 4f;
|
||||||
immunities = ObjectSet.with(StatusEffects.burning);
|
immunities = ObjectSet.with(StatusEffects.burning);
|
||||||
@@ -435,7 +434,7 @@ public class UnitTypes implements ContentList{
|
|||||||
|
|
||||||
firstShotDelay = Fx.greenLaserChargeSmall.lifetime - 1f;
|
firstShotDelay = Fx.greenLaserChargeSmall.lifetime - 1f;
|
||||||
|
|
||||||
reload = 160f;
|
reload = 155f;
|
||||||
recoil = 0f;
|
recoil = 0f;
|
||||||
chargeSound = Sounds.lasercharge2;
|
chargeSound = Sounds.lasercharge2;
|
||||||
shootSound = Sounds.beam;
|
shootSound = Sounds.beam;
|
||||||
@@ -443,8 +442,8 @@ public class UnitTypes implements ContentList{
|
|||||||
cooldownTime = 200f;
|
cooldownTime = 200f;
|
||||||
|
|
||||||
bullet = new ContinuousLaserBulletType(){{
|
bullet = new ContinuousLaserBulletType(){{
|
||||||
damage = 23f;
|
damage = 28f;
|
||||||
length = 160f;
|
length = 175f;
|
||||||
hitEffect = Fx.hitMeltHeal;
|
hitEffect = Fx.hitMeltHeal;
|
||||||
drawSize = 420f;
|
drawSize = 420f;
|
||||||
lifetime = 160f;
|
lifetime = 160f;
|
||||||
@@ -454,7 +453,7 @@ public class UnitTypes implements ContentList{
|
|||||||
|
|
||||||
shootEffect = Fx.greenLaserChargeSmall;
|
shootEffect = Fx.greenLaserChargeSmall;
|
||||||
|
|
||||||
incendChance = 0.075f;
|
incendChance = 0.09f;
|
||||||
incendSpread = 5f;
|
incendSpread = 5f;
|
||||||
incendAmount = 1;
|
incendAmount = 1;
|
||||||
|
|
||||||
@@ -471,7 +470,6 @@ public class UnitTypes implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
corvus = new UnitType("corvus"){{
|
corvus = new UnitType("corvus"){{
|
||||||
mineTier = 1;
|
|
||||||
hitSize = 29f;
|
hitSize = 29f;
|
||||||
health = 18000f;
|
health = 18000f;
|
||||||
armor = 9f;
|
armor = 9f;
|
||||||
@@ -565,9 +563,9 @@ public class UnitTypes implements ContentList{
|
|||||||
hitEffect = Fx.pulverize;
|
hitEffect = Fx.pulverize;
|
||||||
lifetime = 10f;
|
lifetime = 10f;
|
||||||
speed = 1f;
|
speed = 1f;
|
||||||
splashDamageRadius = 70f;
|
splashDamageRadius = 58f;
|
||||||
instantDisappear = true;
|
instantDisappear = true;
|
||||||
splashDamage = 80f;
|
splashDamage = 85f;
|
||||||
killShooter = true;
|
killShooter = true;
|
||||||
hittable = false;
|
hittable = false;
|
||||||
collidesAir = true;
|
collidesAir = true;
|
||||||
@@ -698,7 +696,6 @@ public class UnitTypes implements ContentList{
|
|||||||
legExtension = -15;
|
legExtension = -15;
|
||||||
legBaseOffset = 10f;
|
legBaseOffset = 10f;
|
||||||
landShake = 1f;
|
landShake = 1f;
|
||||||
legSpeed = 0.1f;
|
|
||||||
legLengthScl = 0.96f;
|
legLengthScl = 0.96f;
|
||||||
rippleScale = 2f;
|
rippleScale = 2f;
|
||||||
legSpeed = 0.2f;
|
legSpeed = 0.2f;
|
||||||
@@ -770,7 +767,7 @@ public class UnitTypes implements ContentList{
|
|||||||
width = height = 19f;
|
width = height = 19f;
|
||||||
collidesTiles = true;
|
collidesTiles = true;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
splashDamageRadius = 95f;
|
splashDamageRadius = 70f;
|
||||||
splashDamage = 65f;
|
splashDamage = 65f;
|
||||||
backColor = Pal.sapBulletBack;
|
backColor = Pal.sapBulletBack;
|
||||||
frontColor = lightningColor = Pal.sapBullet;
|
frontColor = lightningColor = Pal.sapBullet;
|
||||||
@@ -868,7 +865,7 @@ public class UnitTypes implements ContentList{
|
|||||||
width = height = 25f;
|
width = height = 25f;
|
||||||
collidesTiles = collides = true;
|
collidesTiles = collides = true;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
splashDamageRadius = 90f;
|
splashDamageRadius = 80f;
|
||||||
splashDamage = 75f;
|
splashDamage = 75f;
|
||||||
backColor = Pal.sapBulletBack;
|
backColor = Pal.sapBulletBack;
|
||||||
frontColor = lightningColor = Pal.sapBullet;
|
frontColor = lightningColor = Pal.sapBullet;
|
||||||
@@ -889,7 +886,7 @@ public class UnitTypes implements ContentList{
|
|||||||
lifetime = 90f;
|
lifetime = 90f;
|
||||||
width = height = 20f;
|
width = height = 20f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
splashDamageRadius = 80f;
|
splashDamageRadius = 70f;
|
||||||
splashDamage = 40f;
|
splashDamage = 40f;
|
||||||
backColor = Pal.sapBulletBack;
|
backColor = Pal.sapBulletBack;
|
||||||
frontColor = lightningColor = Pal.sapBullet;
|
frontColor = lightningColor = Pal.sapBullet;
|
||||||
@@ -1318,6 +1315,7 @@ public class UnitTypes implements ContentList{
|
|||||||
hitSize = 32f;
|
hitSize = 32f;
|
||||||
payloadCapacity = (3 * 3) * tilePayload;
|
payloadCapacity = (3 * 3) * tilePayload;
|
||||||
buildSpeed = 2.5f;
|
buildSpeed = 2.5f;
|
||||||
|
buildBeamOffset = 23;
|
||||||
range = 140f;
|
range = 140f;
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
targetFlag = BlockFlag.battery;
|
targetFlag = BlockFlag.battery;
|
||||||
@@ -1366,13 +1364,15 @@ public class UnitTypes implements ContentList{
|
|||||||
collides = false;
|
collides = false;
|
||||||
|
|
||||||
healPercent = 15f;
|
healPercent = 15f;
|
||||||
splashDamage = 230f;
|
splashDamage = 220f;
|
||||||
splashDamageRadius = 120f;
|
splashDamageRadius = 80f;
|
||||||
}};
|
}};
|
||||||
}});
|
}});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
oct = new UnitType("oct"){{
|
oct = new UnitType("oct"){{
|
||||||
|
defaultController = DefenderAI::new;
|
||||||
|
|
||||||
armor = 16f;
|
armor = 16f;
|
||||||
health = 24000;
|
health = 24000;
|
||||||
speed = 0.8f;
|
speed = 0.8f;
|
||||||
@@ -1389,6 +1389,7 @@ public class UnitTypes implements ContentList{
|
|||||||
drawShields = false;
|
drawShields = false;
|
||||||
commandLimit = 6;
|
commandLimit = 6;
|
||||||
lowAltitude = true;
|
lowAltitude = true;
|
||||||
|
buildBeamOffset = 43;
|
||||||
|
|
||||||
ammoCapacity = 1300;
|
ammoCapacity = 1300;
|
||||||
ammoResupplyAmount = 20;
|
ammoResupplyAmount = 20;
|
||||||
@@ -1536,7 +1537,7 @@ public class UnitTypes implements ContentList{
|
|||||||
width = 15f;
|
width = 15f;
|
||||||
collidesTiles = false;
|
collidesTiles = false;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
splashDamageRadius = 60f;
|
splashDamageRadius = 40f;
|
||||||
splashDamage = 80f;
|
splashDamage = 80f;
|
||||||
backColor = Pal.missileYellowBack;
|
backColor = Pal.missileYellowBack;
|
||||||
frontColor = Pal.missileYellow;
|
frontColor = Pal.missileYellow;
|
||||||
@@ -1589,7 +1590,7 @@ public class UnitTypes implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
sei = new UnitType("sei"){{
|
sei = new UnitType("sei"){{
|
||||||
health = 10000;
|
health = 10500;
|
||||||
armor = 12f;
|
armor = 12f;
|
||||||
|
|
||||||
speed = 0.73f;
|
speed = 0.73f;
|
||||||
|
|||||||
@@ -59,6 +59,15 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
saves = new Saves();
|
saves = new Saves();
|
||||||
sound = new SoundControl();
|
sound = new SoundControl();
|
||||||
|
|
||||||
|
//show dialog saying that mod loading was skipped.
|
||||||
|
Events.on(ClientLoadEvent.class, e -> {
|
||||||
|
if(Vars.mods.skipModLoading() && Vars.mods.list().any()){
|
||||||
|
Time.runTask(4f, () -> {
|
||||||
|
ui.showInfo("@mods.initfailed");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Events.on(StateChangeEvent.class, event -> {
|
Events.on(StateChangeEvent.class, event -> {
|
||||||
if((event.from == State.playing && event.to == State.menu) || (event.from == State.menu && event.to != State.menu)){
|
if((event.from == State.playing && event.to == State.menu) || (event.from == State.menu && event.to != State.menu)){
|
||||||
Time.runTask(5f, platform::updateRPC);
|
Time.runTask(5f, platform::updateRPC);
|
||||||
@@ -74,7 +83,7 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
|
|
||||||
Events.on(WorldLoadEvent.class, event -> {
|
Events.on(WorldLoadEvent.class, event -> {
|
||||||
if(Mathf.zero(player.x) && Mathf.zero(player.y)){
|
if(Mathf.zero(player.x) && Mathf.zero(player.y)){
|
||||||
Building core = state.teams.closestCore(0, 0, player.team());
|
Building core = player.bestCore();
|
||||||
if(core != null){
|
if(core != null){
|
||||||
player.set(core);
|
player.set(core);
|
||||||
camera.position.set(core);
|
camera.position.set(core);
|
||||||
|
|||||||
@@ -57,6 +57,8 @@ public class Logic implements ApplicationListener{
|
|||||||
//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.rules.coreIncinerates = true;
|
||||||
|
|
||||||
SectorInfo info = state.rules.sector.info;
|
SectorInfo info = state.rules.sector.info;
|
||||||
info.write();
|
info.write();
|
||||||
|
|
||||||
@@ -79,13 +81,6 @@ public class Logic implements ApplicationListener{
|
|||||||
state.wavetime = state.rules.waveSpacing;
|
state.wavetime = state.rules.waveSpacing;
|
||||||
|
|
||||||
SectorDamage.applyCalculatedDamage();
|
SectorDamage.applyCalculatedDamage();
|
||||||
|
|
||||||
//make sure damaged buildings are counted
|
|
||||||
for(Tile tile : world.tiles){
|
|
||||||
if(tile.build != null && tile.build.damaged()){
|
|
||||||
indexer.notifyTileDamaged(tile.build);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//reset values
|
//reset values
|
||||||
@@ -107,6 +102,7 @@ public class Logic implements ApplicationListener{
|
|||||||
if(!(state.getSector().preset != null && !state.getSector().preset.useAI)){
|
if(!(state.getSector().preset != null && !state.getSector().preset.useAI)){
|
||||||
state.rules.waveTeam.rules().ai = true;
|
state.rules.waveTeam.rules().ai = true;
|
||||||
}
|
}
|
||||||
|
state.rules.coreIncinerates = true;
|
||||||
state.rules.waveTeam.rules().aiTier = state.getSector().threat * 0.8f;
|
state.rules.waveTeam.rules().aiTier = state.getSector().threat * 0.8f;
|
||||||
state.rules.waveTeam.rules().infiniteResources = true;
|
state.rules.waveTeam.rules().infiniteResources = true;
|
||||||
|
|
||||||
@@ -204,7 +200,7 @@ public class Logic implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void skipWave(){
|
public void skipWave(){
|
||||||
state.wavetime = 0;
|
runWave();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void runWave(){
|
public void runWave(){
|
||||||
@@ -275,16 +271,21 @@ public class Logic implements ApplicationListener{
|
|||||||
public static void sectorCapture(){
|
public static void sectorCapture(){
|
||||||
//the sector has been conquered - waves get disabled
|
//the sector has been conquered - waves get disabled
|
||||||
state.rules.waves = false;
|
state.rules.waves = false;
|
||||||
//disable attack mode
|
|
||||||
state.rules.attackMode = false;
|
|
||||||
|
|
||||||
if(state.rules.sector == null) return;
|
if(state.rules.sector == null){
|
||||||
|
//disable attack mode
|
||||||
|
state.rules.attackMode = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
state.rules.sector.info.wasCaptured = true;
|
state.rules.sector.info.wasCaptured = true;
|
||||||
|
|
||||||
//fire capture event
|
//fire capture event
|
||||||
Events.fire(new SectorCaptureEvent(state.rules.sector));
|
Events.fire(new SectorCaptureEvent(state.rules.sector));
|
||||||
|
|
||||||
|
//disable attack mode
|
||||||
|
state.rules.attackMode = false;
|
||||||
|
|
||||||
//save, just in case
|
//save, just in case
|
||||||
if(!headless && !net.client()){
|
if(!headless && !net.client()){
|
||||||
control.saves.saveSector(state.rules.sector);
|
control.saves.saveSector(state.rules.sector);
|
||||||
@@ -383,7 +384,7 @@ public class Logic implements ApplicationListener{
|
|||||||
Time.update();
|
Time.update();
|
||||||
|
|
||||||
//weather is serverside
|
//weather is serverside
|
||||||
if(!net.client()){
|
if(!net.client() && !state.isEditor()){
|
||||||
updateWeather();
|
updateWeather();
|
||||||
|
|
||||||
for(TeamData data : state.teams.getActive()){
|
for(TeamData data : state.teams.getActive()){
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import mindustry.world.*;
|
|||||||
import mindustry.world.modules.*;
|
import mindustry.world.modules.*;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.util.*;
|
||||||
import java.util.zip.*;
|
import java.util.zip.*;
|
||||||
|
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
@@ -65,6 +66,13 @@ public class NetClient implements ApplicationListener{
|
|||||||
|
|
||||||
reset();
|
reset();
|
||||||
|
|
||||||
|
//connection after reset
|
||||||
|
if(!net.client()){
|
||||||
|
Log.info("Connection canceled.");
|
||||||
|
disconnectQuietly();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ui.loadfrag.hide();
|
ui.loadfrag.hide();
|
||||||
ui.loadfrag.show("@connecting.data");
|
ui.loadfrag.show("@connecting.data");
|
||||||
|
|
||||||
@@ -73,8 +81,14 @@ public class NetClient implements ApplicationListener{
|
|||||||
disconnectQuietly();
|
disconnectQuietly();
|
||||||
});
|
});
|
||||||
|
|
||||||
ConnectPacket c = new ConnectPacket();
|
String locale = Core.settings.getString("locale");
|
||||||
|
if(locale.equals("default")){
|
||||||
|
locale = Locale.getDefault().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
var c = new ConnectPacket();
|
||||||
c.name = player.name;
|
c.name = player.name;
|
||||||
|
c.locale = locale;
|
||||||
c.mods = mods.getModStrings();
|
c.mods = mods.getModStrings();
|
||||||
c.mobile = mobile;
|
c.mobile = mobile;
|
||||||
c.versionType = Version.type;
|
c.versionType = Version.type;
|
||||||
@@ -174,6 +188,10 @@ public class NetClient implements ApplicationListener{
|
|||||||
//called when a server receives a chat message from a player
|
//called when a server receives a chat message from a player
|
||||||
@Remote(called = Loc.server, targets = Loc.client)
|
@Remote(called = Loc.server, targets = Loc.client)
|
||||||
public static void sendChatMessage(Player player, String message){
|
public static void sendChatMessage(Player player, String message){
|
||||||
|
|
||||||
|
//do not receive chat messages from clients that are too young or not registered
|
||||||
|
if(net.server() && player != null && (Time.timeSinceMillis(player.con.connectTime) < 500 || !player.con.hasConnected || !player.isAdded())) return;
|
||||||
|
|
||||||
if(message.length() > maxTextLength){
|
if(message.length() > maxTextLength){
|
||||||
throw new ValidateException(player, "Player has sent a message above the text limit.");
|
throw new ValidateException(player, "Player has sent a message above the text limit.");
|
||||||
}
|
}
|
||||||
@@ -184,7 +202,7 @@ public class NetClient implements ApplicationListener{
|
|||||||
CommandResponse response = netServer.clientCommands.handleMessage(message, player);
|
CommandResponse response = netServer.clientCommands.handleMessage(message, player);
|
||||||
if(response.type == ResponseType.noCommand){ //no command to handle
|
if(response.type == ResponseType.noCommand){ //no command to handle
|
||||||
message = netServer.admins.filterMessage(player, message);
|
message = netServer.admins.filterMessage(player, message);
|
||||||
//supress chat message if it's filtered out
|
//suppress chat message if it's filtered out
|
||||||
if(message == null){
|
if(message == null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -396,7 +414,6 @@ public class NetClient implements ApplicationListener{
|
|||||||
netClient.byteStream.setBytes(net.decompressSnapshot(data, dataLen));
|
netClient.byteStream.setBytes(net.decompressSnapshot(data, dataLen));
|
||||||
DataInputStream input = netClient.dataStream;
|
DataInputStream input = netClient.dataStream;
|
||||||
|
|
||||||
//go through each entity
|
|
||||||
for(int j = 0; j < amount; j++){
|
for(int j = 0; j < amount; j++){
|
||||||
int id = input.readInt();
|
int id = input.readInt();
|
||||||
byte typeID = input.readByte();
|
byte typeID = input.readByte();
|
||||||
@@ -445,11 +462,16 @@ public class NetClient implements ApplicationListener{
|
|||||||
|
|
||||||
for(int i = 0; i < amount; i++){
|
for(int i = 0; i < amount; i++){
|
||||||
int pos = input.readInt();
|
int pos = input.readInt();
|
||||||
|
short block = input.readShort();
|
||||||
Tile tile = world.tile(pos);
|
Tile tile = world.tile(pos);
|
||||||
if(tile == null || tile.build == null){
|
if(tile == null || tile.build == null){
|
||||||
Log.warn("Missing entity at @. Skipping block snapshot.", tile);
|
Log.warn("Missing entity at @. Skipping block snapshot.", tile);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(tile.build.block.id != block){
|
||||||
|
Log.warn("Block ID mismatch at @: @ != @. Skipping block snapshot.", tile, tile.build.block.id, block);
|
||||||
|
break;
|
||||||
|
}
|
||||||
tile.build.readAll(Reads.get(input), tile.build.version());
|
tile.build.readAll(Reads.get(input), tile.build.version());
|
||||||
}
|
}
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
@@ -476,7 +498,7 @@ public class NetClient implements ApplicationListener{
|
|||||||
netClient.byteStream.setBytes(net.decompressSnapshot(coreData, coreDataLen));
|
netClient.byteStream.setBytes(net.decompressSnapshot(coreData, coreDataLen));
|
||||||
DataInputStream input = netClient.dataStream;
|
DataInputStream input = netClient.dataStream;
|
||||||
|
|
||||||
byte cores = input.readByte();
|
int cores = input.readInt();
|
||||||
for(int i = 0; i < cores; i++){
|
for(int i = 0; i < cores; i++){
|
||||||
int pos = input.readInt();
|
int pos = input.readInt();
|
||||||
Tile tile = world.tile(pos);
|
Tile tile = world.tile(pos);
|
||||||
@@ -615,7 +637,7 @@ public class NetClient implements ApplicationListener{
|
|||||||
lastSent++,
|
lastSent++,
|
||||||
uid,
|
uid,
|
||||||
player.dead(),
|
player.dead(),
|
||||||
unit.x, unit.y,
|
player.dead() ? player.x : unit.x, player.dead() ? player.y : unit.y,
|
||||||
player.unit().aimX(), player.unit().aimY(),
|
player.unit().aimX(), player.unit().aimY(),
|
||||||
unit.rotation,
|
unit.rotation,
|
||||||
unit instanceof Mechc m ? m.baseRotation() : 0,
|
unit instanceof Mechc m ? m.baseRotation() : 0,
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ import static mindustry.Vars.*;
|
|||||||
|
|
||||||
public class NetServer implements ApplicationListener{
|
public class NetServer implements ApplicationListener{
|
||||||
/** note that snapshots are compressed, so the max snapshot size here is above the typical UDP safe limit */
|
/** note that snapshots are compressed, so the max snapshot size here is above the typical UDP safe limit */
|
||||||
private static final int maxSnapshotSize = 800, timerBlockSync = 0;
|
private static final int maxSnapshotSize = 800, timerBlockSync = 0, serverSyncTime = 200;
|
||||||
private static final float serverSyncTime = 12, blockSyncTime = 60 * 6;
|
private static final float blockSyncTime = 60 * 6;
|
||||||
private static final FloatBuffer fbuffer = FloatBuffer.allocate(20);
|
private static final FloatBuffer fbuffer = FloatBuffer.allocate(20);
|
||||||
private static final Vec2 vector = new Vec2();
|
private static final Vec2 vector = new Vec2();
|
||||||
private static final Rect viewport = new Rect();
|
private static final Rect viewport = new Rect();
|
||||||
@@ -81,6 +81,8 @@ public class NetServer implements ApplicationListener{
|
|||||||
public NetServer(){
|
public NetServer(){
|
||||||
|
|
||||||
net.handleServer(Connect.class, (con, connect) -> {
|
net.handleServer(Connect.class, (con, connect) -> {
|
||||||
|
Events.fire(new ConnectionEvent(con));
|
||||||
|
|
||||||
if(admins.isIPBanned(connect.addressTCP) || admins.isSubnetBanned(connect.addressTCP)){
|
if(admins.isIPBanned(connect.addressTCP) || admins.isSubnetBanned(connect.addressTCP)){
|
||||||
con.kick(KickReason.banned);
|
con.kick(KickReason.banned);
|
||||||
}
|
}
|
||||||
@@ -93,10 +95,14 @@ public class NetServer implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
net.handleServer(ConnectPacket.class, (con, packet) -> {
|
net.handleServer(ConnectPacket.class, (con, packet) -> {
|
||||||
|
if(con.kicked) return;
|
||||||
|
|
||||||
if(con.address.startsWith("steam:")){
|
if(con.address.startsWith("steam:")){
|
||||||
packet.uuid = con.address.substring("steam:".length());
|
packet.uuid = con.address.substring("steam:".length());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
con.connectTime = Time.millis();
|
||||||
|
|
||||||
String uuid = packet.uuid;
|
String uuid = packet.uuid;
|
||||||
byte[] buuid = Base64Coder.decode(uuid);
|
byte[] buuid = Base64Coder.decode(uuid);
|
||||||
CRC32 crc = new CRC32();
|
CRC32 crc = new CRC32();
|
||||||
@@ -155,7 +161,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
if(!extraMods.isEmpty()){
|
if(!extraMods.isEmpty()){
|
||||||
result.append("Unnecessary mods:[lightgray]\n").append("> ").append(extraMods.toString("\n> "));
|
result.append("Unnecessary mods:[lightgray]\n").append("> ").append(extraMods.toString("\n> "));
|
||||||
}
|
}
|
||||||
con.kick(result.toString());
|
con.kick(result.toString(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!admins.isWhitelisted(packet.uuid, packet.usid)){
|
if(!admins.isWhitelisted(packet.uuid, packet.usid)){
|
||||||
@@ -195,6 +201,10 @@ public class NetServer implements ApplicationListener{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(packet.locale == null){
|
||||||
|
packet.locale = "en";
|
||||||
|
}
|
||||||
|
|
||||||
String ip = con.address;
|
String ip = con.address;
|
||||||
|
|
||||||
admins.updatePlayerJoined(uuid, ip, packet.name);
|
admins.updatePlayerJoined(uuid, ip, packet.name);
|
||||||
@@ -215,6 +225,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
player.con.uuid = uuid;
|
player.con.uuid = uuid;
|
||||||
player.con.mobile = packet.mobile;
|
player.con.mobile = packet.mobile;
|
||||||
player.name = packet.name;
|
player.name = packet.name;
|
||||||
|
player.locale = packet.locale;
|
||||||
player.color.set(packet.color).a(1f);
|
player.color.set(packet.color).a(1f);
|
||||||
|
|
||||||
//save admin ID but don't overwrite it
|
//save admin ID but don't overwrite it
|
||||||
@@ -244,7 +255,8 @@ public class NetServer implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
net.handleServer(InvokePacket.class, (con, packet) -> {
|
net.handleServer(InvokePacket.class, (con, packet) -> {
|
||||||
if(con.player == null) return;
|
if(con.player == null || con.kicked) return;
|
||||||
|
|
||||||
try{
|
try{
|
||||||
RemoteReadServer.readPacket(packet.reader(), packet.type, con.player);
|
RemoteReadServer.readPacket(packet.reader(), packet.type, con.player);
|
||||||
}catch(ValidateException e){
|
}catch(ValidateException e){
|
||||||
@@ -720,6 +732,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
//no verification is done, so admins can hypothetically spam waves
|
//no verification is done, so admins can hypothetically spam waves
|
||||||
//not a real issue, because server owners may want to do just that
|
//not a real issue, because server owners may want to do just that
|
||||||
logic.skipWave();
|
logic.skipWave();
|
||||||
|
info("&lc@ has skipped the wave.", player.name);
|
||||||
}else if(action == AdminAction.ban){
|
}else if(action == AdminAction.ban){
|
||||||
netServer.admins.banPlayerIP(other.con.address);
|
netServer.admins.banPlayerIP(other.con.address);
|
||||||
netServer.admins.banPlayerID(other.con.uuid);
|
netServer.admins.banPlayerID(other.con.uuid);
|
||||||
@@ -729,7 +742,8 @@ public class NetServer implements ApplicationListener{
|
|||||||
other.kick(KickReason.kick);
|
other.kick(KickReason.kick);
|
||||||
info("&lc@ has kicked @.", player.name, other.name);
|
info("&lc@ has kicked @.", player.name, other.name);
|
||||||
}else if(action == AdminAction.trace){
|
}else if(action == AdminAction.trace){
|
||||||
TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile);
|
PlayerInfo stats = netServer.admins.getInfo(other.uuid());
|
||||||
|
TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile, stats.timesJoined, stats.timesKicked);
|
||||||
if(player.con != null){
|
if(player.con != null){
|
||||||
Call.traceInfo(player.con, other, info);
|
Call.traceInfo(player.con, other, info);
|
||||||
}else{
|
}else{
|
||||||
@@ -741,6 +755,8 @@ public class NetServer implements ApplicationListener{
|
|||||||
|
|
||||||
@Remote(targets = Loc.client)
|
@Remote(targets = Loc.client)
|
||||||
public static void connectConfirm(Player player){
|
public static void connectConfirm(Player player){
|
||||||
|
if(player.con.kicked) return;
|
||||||
|
|
||||||
player.add();
|
player.add();
|
||||||
|
|
||||||
if(player.con == null || player.con.hasConnected) return;
|
if(player.con == null || player.con.hasConnected) return;
|
||||||
@@ -824,6 +840,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
sent ++;
|
sent ++;
|
||||||
|
|
||||||
dataStream.writeInt(entity.pos());
|
dataStream.writeInt(entity.pos());
|
||||||
|
dataStream.writeShort(entity.block.id);
|
||||||
entity.writeAll(Writes.get(dataStream));
|
entity.writeAll(Writes.get(dataStream));
|
||||||
|
|
||||||
if(syncStream.size() > maxSnapshotSize){
|
if(syncStream.size() > maxSnapshotSize){
|
||||||
@@ -844,13 +861,15 @@ public class NetServer implements ApplicationListener{
|
|||||||
|
|
||||||
public void writeEntitySnapshot(Player player) throws IOException{
|
public void writeEntitySnapshot(Player player) throws IOException{
|
||||||
syncStream.reset();
|
syncStream.reset();
|
||||||
Seq<CoreBuild> cores = state.teams.cores(player.team());
|
int sum = state.teams.present.sum(t -> t.cores.size);
|
||||||
|
|
||||||
dataStream.writeByte(cores.size);
|
dataStream.writeInt(sum);
|
||||||
|
|
||||||
for(CoreBuild entity : cores){
|
for(TeamData data : state.teams.present){
|
||||||
dataStream.writeInt(entity.tile.pos());
|
for(CoreBuild entity : data.cores){
|
||||||
entity.items.write(Writes.get(dataStream));
|
dataStream.writeInt(entity.tile.pos());
|
||||||
|
entity.items.write(Writes.get(dataStream));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataStream.close();
|
dataStream.close();
|
||||||
@@ -948,9 +967,11 @@ public class NetServer implements ApplicationListener{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetConnection connection = player.con;
|
var connection = player.con;
|
||||||
|
|
||||||
if(!player.timer(0, serverSyncTime) || !connection.hasConnected) return;
|
if(Time.timeSinceMillis(connection.syncTime) < serverSyncTime || !connection.hasConnected) return;
|
||||||
|
|
||||||
|
connection.syncTime = Time.millis();
|
||||||
|
|
||||||
try{
|
try{
|
||||||
writeEntitySnapshot(player);
|
writeEntitySnapshot(player);
|
||||||
|
|||||||
@@ -20,10 +20,9 @@ import static mindustry.Vars.*;
|
|||||||
|
|
||||||
public interface Platform{
|
public interface Platform{
|
||||||
|
|
||||||
/** Dynamically loads a jar file. */
|
/** Dynamically creates a class loader for a jar file. */
|
||||||
default Class<?> loadJar(Fi jar, String mainClass) throws Exception{
|
default ClassLoader loadJar(Fi jar, String mainClass) throws Exception{
|
||||||
URLClassLoader classLoader = new URLClassLoader(new URL[]{jar.file().toURI().toURL()}, getClass().getClassLoader());
|
return new URLClassLoader(new URL[]{jar.file().toURI().toURL()}, getClass().getClassLoader());
|
||||||
return Class.forName(mainClass, true, classLoader);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Steam: Update lobby visibility.*/
|
/** Steam: Update lobby visibility.*/
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package mindustry.core;
|
|||||||
|
|
||||||
import arc.*;
|
import arc.*;
|
||||||
import arc.files.*;
|
import arc.files.*;
|
||||||
import arc.fx.*;
|
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
import arc.graphics.gl.*;
|
import arc.graphics.gl.*;
|
||||||
@@ -15,11 +14,15 @@ import mindustry.gen.*;
|
|||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
import mindustry.graphics.g3d.*;
|
import mindustry.graphics.g3d.*;
|
||||||
import mindustry.ui.*;
|
import mindustry.ui.*;
|
||||||
|
import mindustry.world.blocks.storage.CoreBlock.*;
|
||||||
|
|
||||||
import static arc.Core.*;
|
import static arc.Core.*;
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class Renderer implements ApplicationListener{
|
public class Renderer implements ApplicationListener{
|
||||||
|
/** These are global variables, for headless access. Cached. */
|
||||||
|
public static float laserOpacity = 0.5f, bridgeOpacity = 0.75f;
|
||||||
|
|
||||||
public final BlockRenderer blocks = new BlockRenderer();
|
public final BlockRenderer blocks = new BlockRenderer();
|
||||||
public final MinimapRenderer minimap = new MinimapRenderer();
|
public final MinimapRenderer minimap = new MinimapRenderer();
|
||||||
public final OverlayRenderer overlays = new OverlayRenderer();
|
public final OverlayRenderer overlays = new OverlayRenderer();
|
||||||
@@ -29,17 +32,13 @@ public class Renderer implements ApplicationListener{
|
|||||||
|
|
||||||
public @Nullable Bloom bloom;
|
public @Nullable Bloom bloom;
|
||||||
public FrameBuffer effectBuffer = new FrameBuffer();
|
public FrameBuffer effectBuffer = new FrameBuffer();
|
||||||
public float laserOpacity = 1f;
|
public boolean animateShields, drawWeather = true, drawStatus;
|
||||||
/** minZoom = zooming out, maxZoom = zooming in */
|
/** minZoom = zooming out, maxZoom = zooming in */
|
||||||
public float minZoom = 1.5f, maxZoom = 6f;
|
public float minZoom = 1.5f, maxZoom = 6f;
|
||||||
|
|
||||||
//TODO unused
|
private @Nullable CoreBuild landCore;
|
||||||
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), camerascale = targetscale, landscale, landTime, weatherAlpha, minZoomScl = Scl.scl(0.01f);
|
||||||
private float camerascale = targetscale;
|
|
||||||
private float landscale = 0f, landTime, weatherAlpha;
|
|
||||||
private float minZoomScl = Scl.scl(0.01f);
|
|
||||||
private float shakeIntensity, shaketime;
|
private float shakeIntensity, shaketime;
|
||||||
|
|
||||||
public Renderer(){
|
public Renderer(){
|
||||||
@@ -59,17 +58,23 @@ public class Renderer implements ApplicationListener{
|
|||||||
if(settings.getBool("bloom", !ios)){
|
if(settings.getBool("bloom", !ios)){
|
||||||
setupBloom();
|
setupBloom();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Events.on(WorldLoadEvent.class, e -> {
|
||||||
|
landCore = player.bestCore();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(){
|
public void update(){
|
||||||
Color.white.set(1f, 1f, 1f, 1f);
|
Color.white.set(1f, 1f, 1f, 1f);
|
||||||
Gl.clear(Gl.stencilBufferBit);
|
|
||||||
|
|
||||||
float dest = Mathf.round(targetscale, 0.5f);
|
float dest = Mathf.round(targetscale, 0.5f);
|
||||||
camerascale = Mathf.lerpDelta(camerascale, dest, 0.1f);
|
camerascale = Mathf.lerpDelta(camerascale, dest, 0.1f);
|
||||||
if(Mathf.equal(camerascale, dest, 0.001f)) camerascale = dest;
|
if(Mathf.equal(camerascale, dest, 0.001f)) camerascale = dest;
|
||||||
laserOpacity = Core.settings.getInt("lasersopacity") / 100f;
|
laserOpacity = settings.getInt("lasersopacity") / 100f;
|
||||||
|
bridgeOpacity = settings.getInt("bridgeopacity") / 100f;
|
||||||
|
animateShields = settings.getBool("animatedshields");
|
||||||
|
drawStatus = Core.settings.getBool("blockstatus");
|
||||||
|
|
||||||
if(landTime > 0){
|
if(landTime > 0){
|
||||||
landTime -= Time.delta;
|
landTime -= Time.delta;
|
||||||
@@ -124,11 +129,6 @@ public class Renderer implements ApplicationListener{
|
|||||||
Events.fire(new DisposeEvent());
|
Events.fire(new DisposeEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void resize(int width, int height){
|
|
||||||
fx.resize(width, height);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resume(){
|
public void resume(){
|
||||||
if(settings.getBool("bloom") && bloom != null){
|
if(settings.getBool("bloom") && bloom != null){
|
||||||
@@ -163,23 +163,6 @@ public class Renderer implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void beginFx(){
|
|
||||||
if(!fx.hasEnabledEffects()) return;
|
|
||||||
|
|
||||||
Draw.flush();
|
|
||||||
fx.clear();
|
|
||||||
fx.begin();
|
|
||||||
}
|
|
||||||
|
|
||||||
void endFx(){
|
|
||||||
if(!fx.hasEnabledEffects()) return;
|
|
||||||
|
|
||||||
Draw.flush();
|
|
||||||
fx.end();
|
|
||||||
fx.applyEffects();
|
|
||||||
fx.render(0, 0, fx.getWidth(), fx.getHeight());
|
|
||||||
}
|
|
||||||
|
|
||||||
void updateShake(float scale){
|
void updateShake(float scale){
|
||||||
if(shaketime > 0){
|
if(shaketime > 0){
|
||||||
float intensity = shakeIntensity * (settings.getInt("screenshake", 4) / 4f) * scale;
|
float intensity = shakeIntensity * (settings.getInt("screenshake", 4) / 4f) * scale;
|
||||||
@@ -204,7 +187,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
graphics.clear(clearColor);
|
graphics.clear(clearColor);
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
|
|
||||||
if(Core.settings.getBool("animatedwater") || Core.settings.getBool("animatedshields")){
|
if(Core.settings.getBool("animatedwater") || animateShields){
|
||||||
effectBuffer.resize(graphics.getWidth(), graphics.getHeight());
|
effectBuffer.resize(graphics.getWidth(), graphics.getHeight());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -224,7 +207,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
Draw.draw(Layer.background, this::drawBackground);
|
Draw.draw(Layer.background, this::drawBackground);
|
||||||
Draw.draw(Layer.floor, blocks.floor::drawFloor);
|
Draw.draw(Layer.floor, blocks.floor::drawFloor);
|
||||||
Draw.draw(Layer.block - 1, blocks::drawShadows);
|
Draw.draw(Layer.block - 1, blocks::drawShadows);
|
||||||
Draw.draw(Layer.block, () -> {
|
Draw.draw(Layer.block - 0.09f, () -> {
|
||||||
blocks.floor.beginDraw();
|
blocks.floor.beginDraw();
|
||||||
blocks.floor.drawLayer(CacheLayer.walls);
|
blocks.floor.drawLayer(CacheLayer.walls);
|
||||||
blocks.floor.endDraw();
|
blocks.floor.endDraw();
|
||||||
@@ -248,11 +231,16 @@ public class Renderer implements ApplicationListener{
|
|||||||
|
|
||||||
Draw.draw(Layer.plans, overlays::drawBottom);
|
Draw.draw(Layer.plans, overlays::drawBottom);
|
||||||
|
|
||||||
if(settings.getBool("animatedshields") && Shaders.shield != null){
|
if(animateShields && Shaders.shield != null){
|
||||||
Draw.drawRange(Layer.shields, 1f, () -> effectBuffer.begin(Color.clear), () -> {
|
Draw.drawRange(Layer.shields, 1f, () -> effectBuffer.begin(Color.clear), () -> {
|
||||||
effectBuffer.end();
|
effectBuffer.end();
|
||||||
effectBuffer.blit(Shaders.shield);
|
effectBuffer.blit(Shaders.shield);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Draw.drawRange(Layer.buildBeam, 1f, () -> effectBuffer.begin(Color.clear), () -> {
|
||||||
|
effectBuffer.end();
|
||||||
|
effectBuffer.blit(Shaders.buildBeam);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Draw.draw(Layer.overlayUI, overlays::drawTop);
|
Draw.draw(Layer.overlayUI, overlays::drawTop);
|
||||||
@@ -274,25 +262,25 @@ public class Renderer implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void drawLanding(){
|
private void drawLanding(){
|
||||||
if(landTime > 0 && player.closestCore() != null){
|
CoreBuild entity = landCore == null ? player.bestCore() : landCore;
|
||||||
|
if(landTime > 0 && entity != null){
|
||||||
float fract = landTime / Fx.coreLand.lifetime;
|
float fract = landTime / Fx.coreLand.lifetime;
|
||||||
Building entity = player.closestCore();
|
|
||||||
|
|
||||||
TextureRegion reg = entity.block.icon(Cicon.full);
|
TextureRegion reg = entity.block.icon(Cicon.full);
|
||||||
float scl = Scl.scl(4f) / camerascale;
|
float scl = Scl.scl(4f) / camerascale;
|
||||||
float s = reg.width * Draw.scl * scl * 4f * fract;
|
float s = reg.width * Draw.scl * scl * 4f * fract;
|
||||||
|
|
||||||
Draw.color(Pal.lightTrail);
|
Draw.color(Pal.lightTrail);
|
||||||
Draw.rect("circle-shadow", entity.getX(), entity.getY(), s, s);
|
Draw.rect("circle-shadow", entity.x, entity.y, s, s);
|
||||||
|
|
||||||
Angles.randLenVectors(1, (1f- fract), 100, 1000f * scl * (1f-fract), (x, y, fin, fout) -> {
|
Angles.randLenVectors(1, (1f- fract), 100, 1000f * scl * (1f-fract), (x, y, fin, fout) -> {
|
||||||
Lines.stroke(scl * fin);
|
Lines.stroke(scl * fin);
|
||||||
Lines.lineAngle(entity.getX() + x, entity.getY() + y, Mathf.angle(x, y), (fin * 20 + 1f) * scl);
|
Lines.lineAngle(entity.x + x, entity.y + y, Mathf.angle(x, y), (fin * 20 + 1f) * scl);
|
||||||
});
|
});
|
||||||
|
|
||||||
Draw.color();
|
Draw.color();
|
||||||
Draw.mixcol(Color.white, fract);
|
Draw.mixcol(Color.white, fract);
|
||||||
Draw.rect(reg, entity.getX(), entity.getY(), reg.width * Draw.scl * scl, reg.height * Draw.scl * scl, fract * 135f);
|
Draw.rect(reg, entity.x, entity.y, reg.width * Draw.scl * scl, reg.height * Draw.scl * scl, fract * 135f);
|
||||||
|
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
}
|
}
|
||||||
@@ -344,6 +332,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
|
|
||||||
FrameBuffer buffer = new FrameBuffer(w, h);
|
FrameBuffer buffer = new FrameBuffer(w, h);
|
||||||
|
|
||||||
|
drawWeather = false;
|
||||||
float vpW = camera.width, vpH = camera.height, px = camera.position.x, py = camera.position.y;
|
float vpW = camera.width, vpH = camera.height, px = camera.position.x, py = camera.position.y;
|
||||||
disableUI = true;
|
disableUI = true;
|
||||||
camera.width = w;
|
camera.width = w;
|
||||||
@@ -369,6 +358,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
PixmapIO.writePNG(file, fullPixmap);
|
PixmapIO.writePNG(file, fullPixmap);
|
||||||
fullPixmap.dispose();
|
fullPixmap.dispose();
|
||||||
ui.showInfoFade(Core.bundle.format("screenshot", file.toString()));
|
ui.showInfoFade(Core.bundle.format("screenshot", file.toString()));
|
||||||
|
drawWeather = true;
|
||||||
|
|
||||||
buffer.dispose();
|
buffer.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
Dialog.setHideAction(() -> sequence(fadeOut(0.1f)));
|
Dialog.setHideAction(() -> sequence(fadeOut(0.1f)));
|
||||||
|
|
||||||
Tooltips.getInstance().animations = false;
|
Tooltips.getInstance().animations = false;
|
||||||
Tooltips.getInstance().textProvider = text -> new Tooltip(t -> t.background(Styles.black5).margin(4f).add(text));
|
Tooltips.getInstance().textProvider = text -> new Tooltip(t -> t.background(Styles.black6).margin(4f).add(text));
|
||||||
|
|
||||||
Core.settings.setErrorHandler(e -> {
|
Core.settings.setErrorHandler(e -> {
|
||||||
Log.err(e);
|
Log.err(e);
|
||||||
@@ -214,6 +214,13 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
@Override
|
@Override
|
||||||
public void resize(int width, int height){
|
public void resize(int width, int height){
|
||||||
if(Core.scene == null) return;
|
if(Core.scene == null) return;
|
||||||
|
|
||||||
|
int[] insets = Core.graphics.getSafeInsets();
|
||||||
|
Core.scene.marginLeft = insets[0];
|
||||||
|
Core.scene.marginRight = insets[1];
|
||||||
|
Core.scene.marginTop = insets[2];
|
||||||
|
Core.scene.marginBottom = insets[3];
|
||||||
|
|
||||||
Core.scene.resize(width, height);
|
Core.scene.resize(width, height);
|
||||||
Events.fire(new ResizeEvent());
|
Events.fire(new ResizeEvent());
|
||||||
}
|
}
|
||||||
@@ -363,6 +370,16 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
}}.show();
|
}}.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void showInfoOnHidden(String info, Runnable listener){
|
||||||
|
new Dialog(""){{
|
||||||
|
getCell(cont).growX();
|
||||||
|
cont.margin(15).add(info).width(400f).wrap().get().setAlignment(Align.center, Align.center);
|
||||||
|
buttons.button("@ok", this::hide).size(110, 50).pad(4);
|
||||||
|
hidden(listener);
|
||||||
|
closeOnBack();
|
||||||
|
}}.show();
|
||||||
|
}
|
||||||
|
|
||||||
public void showStartupInfo(String info){
|
public void showStartupInfo(String info){
|
||||||
new Dialog(""){{
|
new Dialog(""){{
|
||||||
getCell(cont).growX();
|
getCell(cont).growX();
|
||||||
@@ -526,16 +543,15 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO move?
|
|
||||||
|
|
||||||
public static String formatAmount(int number){
|
public static String formatAmount(int number){
|
||||||
if(number >= 1_000_000_000){
|
int mag = Math.abs(number);
|
||||||
|
if(mag >= 1_000_000_000){
|
||||||
return Strings.fixed(number / 1_000_000_000f, 1) + "[gray]" + Core.bundle.get("unit.billions") + "[]";
|
return Strings.fixed(number / 1_000_000_000f, 1) + "[gray]" + Core.bundle.get("unit.billions") + "[]";
|
||||||
}else if(number >= 1_000_000){
|
}else if(mag >= 1_000_000){
|
||||||
return Strings.fixed(number / 1_000_000f, 1) + "[gray]" + Core.bundle.get("unit.millions") + "[]";
|
return Strings.fixed(number / 1_000_000f, 1) + "[gray]" + Core.bundle.get("unit.millions") + "[]";
|
||||||
}else if(number >= 10_000){
|
}else if(mag >= 10_000){
|
||||||
return number / 1000 + "[gray]" + Core.bundle.get("unit.thousands") + "[]";
|
return number / 1000 + "[gray]" + Core.bundle.get("unit.thousands") + "[]";
|
||||||
}else if(number >= 1000){
|
}else if(mag >= 1000){
|
||||||
return Strings.fixed(number / 1000f, 1) + "[gray]" + Core.bundle.get("unit.thousands") + "[]";
|
return Strings.fixed(number / 1000f, 1) + "[gray]" + Core.bundle.get("unit.thousands") + "[]";
|
||||||
}else{
|
}else{
|
||||||
return number + "";
|
return number + "";
|
||||||
|
|||||||
@@ -52,8 +52,8 @@ public class Version{
|
|||||||
|
|
||||||
int dot = str.indexOf('.');
|
int dot = str.indexOf('.');
|
||||||
if(dot != -1){
|
if(dot != -1){
|
||||||
int major = Strings.parseInt(str.substring(0, dot)), minor = Strings.parseInt(str.substring(dot + 1));
|
int major = Strings.parseInt(str.substring(0, dot), 0), minor = Strings.parseInt(str.substring(dot + 1), 0);
|
||||||
return build >= major && revision >= minor;
|
return build > major || (build == major && revision >= minor);
|
||||||
}else{
|
}else{
|
||||||
return build >= Strings.parseInt(str, 0);
|
return build >= Strings.parseInt(str, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import arc.*;
|
|||||||
import arc.func.*;
|
import arc.func.*;
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
|
import arc.math.geom.Geometry.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.struct.ObjectIntMap.*;
|
import arc.struct.ObjectIntMap.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
@@ -268,7 +269,7 @@ public class World{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setSectorRules(Sector sector){
|
private void setSectorRules(Sector sector){
|
||||||
state.map = new Map(StringMap.of("name", sector.planet.localizedName + "; Sector " + sector.id));
|
state.map = new Map(StringMap.of("name", sector.preset == null ? sector.planet.localizedName + "; Sector " + sector.id : sector.preset.localizedName));
|
||||||
state.rules.sector = sector;
|
state.rules.sector = sector;
|
||||||
|
|
||||||
state.rules.weather.clear();
|
state.rules.weather.clear();
|
||||||
@@ -554,10 +555,6 @@ public class World{
|
|||||||
return dark;
|
return dark;
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface Raycaster{
|
|
||||||
boolean accept(int x, int y);
|
|
||||||
}
|
|
||||||
|
|
||||||
private class Context implements WorldContext{
|
private class Context implements WorldContext{
|
||||||
|
|
||||||
Context(){
|
Context(){
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import arc.math.geom.*;
|
|||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.editor.DrawOperation.*;
|
import mindustry.editor.DrawOperation.*;
|
||||||
|
import mindustry.entities.units.*;
|
||||||
import mindustry.game.*;
|
import mindustry.game.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.io.*;
|
import mindustry.io.*;
|
||||||
@@ -259,7 +260,7 @@ public class MapEditor{
|
|||||||
clearOp();
|
clearOp();
|
||||||
|
|
||||||
Tiles previous = world.tiles;
|
Tiles previous = world.tiles;
|
||||||
int offsetX = -(width - width()) / 2, offsetY = -(height - height()) / 2;
|
int offsetX = (width() - width) / 2, offsetY = (height() - height) / 2;
|
||||||
loading = true;
|
loading = true;
|
||||||
|
|
||||||
Tiles tiles = world.resize(width, height);
|
Tiles tiles = world.resize(width, height);
|
||||||
@@ -275,7 +276,17 @@ public class MapEditor{
|
|||||||
if(tile.build != null && tile.isCenter()){
|
if(tile.build != null && tile.isCenter()){
|
||||||
tile.build.x = x * tilesize + tile.block().offset;
|
tile.build.x = x * tilesize + tile.block().offset;
|
||||||
tile.build.y = y * tilesize + tile.block().offset;
|
tile.build.y = y * tilesize + tile.block().offset;
|
||||||
|
|
||||||
|
//shift links to account for map resize
|
||||||
|
Object config = tile.build.config();
|
||||||
|
if(config != null){
|
||||||
|
Object out = BuildPlan.pointConfig(tile.block(), config, p -> p.sub(offsetX, offsetY));
|
||||||
|
if(out != config){
|
||||||
|
tile.build.configureAny(out);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
tiles.set(x, y, new EditorTile(x, y, Blocks.stone.id, (short)0, (short)0));
|
tiles.set(x, y, new EditorTile(x, y, Blocks.stone.id, (short)0, (short)0));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -156,7 +156,10 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
platform.publish(map);
|
platform.publish(map);
|
||||||
}).padTop(-3).size(swidth * 2f + 10, 60f).update(b -> b.setText(editor.tags.containsKey("steamid") ? editor.tags.get("author").equals(player.name) ? "@workshop.listing" : "@view.workshop" : "@editor.publish.workshop"));
|
}).padTop(-3).size(swidth * 2f + 10, 60f).update(b ->
|
||||||
|
b.setText(editor.tags.containsKey("steamid") ?
|
||||||
|
editor.tags.get("author", "").equals(steamPlayerName) ? "@workshop.listing" : "@view.workshop" :
|
||||||
|
"@editor.publish.workshop"));
|
||||||
|
|
||||||
menu.cont.row();
|
menu.cont.row();
|
||||||
}
|
}
|
||||||
@@ -258,11 +261,14 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
player.clearUnit();
|
player.clearUnit();
|
||||||
Groups.unit.clear();
|
Groups.unit.clear();
|
||||||
Groups.build.clear();
|
Groups.build.clear();
|
||||||
|
Groups.weather.clear();
|
||||||
logic.play();
|
logic.play();
|
||||||
|
|
||||||
if(player.team().core() == null){
|
if(player.team().core() == null){
|
||||||
player.set(world.width() * tilesize/2f, world.height() * tilesize/2f);
|
player.set(world.width() * tilesize/2f, world.height() * tilesize/2f);
|
||||||
player.unit(UnitTypes.alpha.spawn(player.team(), player.x, player.y));
|
var unit = UnitTypes.alpha.spawn(player.team(), player.x, player.y);
|
||||||
|
unit.spawnedByCore = true;
|
||||||
|
player.unit(unit);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -700,8 +706,6 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
if(core != 0) return core;
|
if(core != 0) return core;
|
||||||
int synth = Boolean.compare(b1.synthetic(), b2.synthetic());
|
int synth = Boolean.compare(b1.synthetic(), b2.synthetic());
|
||||||
if(synth != 0) return synth;
|
if(synth != 0) return synth;
|
||||||
int editorVis = Boolean.compare(b1.buildVisibility == BuildVisibility.editorOnly, b2.buildVisibility == BuildVisibility.editorOnly);
|
|
||||||
if(editorVis != 0) return editorVis;
|
|
||||||
int ore = Boolean.compare(b1 instanceof OverlayFloor, b2 instanceof OverlayFloor);
|
int ore = Boolean.compare(b1 instanceof OverlayFloor, b2 instanceof OverlayFloor);
|
||||||
if(ore != 0) return ore;
|
if(ore != 0) return ore;
|
||||||
return Integer.compare(b1.id, b2.id);
|
return Integer.compare(b1.id, b2.id);
|
||||||
|
|||||||
@@ -285,29 +285,31 @@ public class MapGenerateDialog extends BaseDialog{
|
|||||||
|
|
||||||
void showAdd(){
|
void showAdd(){
|
||||||
BaseDialog selection = new BaseDialog("@add");
|
BaseDialog selection = new BaseDialog("@add");
|
||||||
selection.setFillParent(false);
|
selection.cont.pane(p -> {
|
||||||
selection.cont.defaults().size(210f, 60f);
|
p.marginRight(14);
|
||||||
int i = 0;
|
p.defaults().size(210f, 60f);
|
||||||
for(Prov<GenerateFilter> gen : filterTypes){
|
int i = 0;
|
||||||
GenerateFilter filter = gen.get();
|
for(Prov<GenerateFilter> gen : filterTypes){
|
||||||
|
GenerateFilter filter = gen.get();
|
||||||
|
|
||||||
if((filter.isPost() && applied)) continue;
|
if((filter.isPost() && applied)) continue;
|
||||||
|
|
||||||
selection.cont.button(filter.name(), () -> {
|
p.button(filter.name(), () -> {
|
||||||
filters.add(filter);
|
filters.add(filter);
|
||||||
|
rebuildFilters();
|
||||||
|
update();
|
||||||
|
selection.hide();
|
||||||
|
});
|
||||||
|
if(++i % 2 == 0) p.row();
|
||||||
|
}
|
||||||
|
|
||||||
|
p.button("@filter.defaultores", () -> {
|
||||||
|
maps.addDefaultOres(filters);
|
||||||
rebuildFilters();
|
rebuildFilters();
|
||||||
update();
|
update();
|
||||||
selection.hide();
|
selection.hide();
|
||||||
});
|
});
|
||||||
if(++i % 2 == 0) selection.cont.row();
|
}).get().setScrollingDisabled(true, false);
|
||||||
}
|
|
||||||
|
|
||||||
selection.cont.button("@filter.defaultores", () -> {
|
|
||||||
maps.addDefaultOres(filters);
|
|
||||||
rebuildFilters();
|
|
||||||
update();
|
|
||||||
selection.hide();
|
|
||||||
});
|
|
||||||
|
|
||||||
selection.addCloseButton();
|
selection.addCloseButton();
|
||||||
selection.show();
|
selection.show();
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import mindustry.ui.dialogs.*;
|
|||||||
|
|
||||||
public class MapResizeDialog extends BaseDialog{
|
public class MapResizeDialog extends BaseDialog{
|
||||||
public static int minSize = 50, maxSize = 500, increment = 50;
|
public static int minSize = 50, maxSize = 500, increment = 50;
|
||||||
|
|
||||||
int width, height;
|
int width, height;
|
||||||
|
|
||||||
public MapResizeDialog(MapEditor editor, Intc2 cons){
|
public MapResizeDialog(MapEditor editor, Intc2 cons){
|
||||||
|
|||||||
@@ -243,14 +243,14 @@ public class MapView extends Element implements GestureListener{
|
|||||||
|
|
||||||
image.setImageSize(editor.width(), editor.height());
|
image.setImageSize(editor.width(), editor.height());
|
||||||
|
|
||||||
if(!ScissorStack.push(rect.set(x, y, width, height))){
|
if(!ScissorStack.push(rect.set(x, y + Core.scene.marginBottom, width, height))){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Draw.color(Pal.remove);
|
Draw.color(Pal.remove);
|
||||||
Lines.stroke(2f);
|
Lines.stroke(2f);
|
||||||
Lines.rect(centerx - sclwidth / 2 - 1, centery - sclheight / 2 - 1, sclwidth + 2, sclheight + 2);
|
Lines.rect(centerx - sclwidth / 2 - 1, centery - sclheight / 2 - 1, sclwidth + 2, sclheight + 2);
|
||||||
editor.renderer.draw(centerx - sclwidth / 2, centery - sclheight / 2, sclwidth, sclheight);
|
editor.renderer.draw(centerx - sclwidth / 2, centery - sclheight / 2 + Core.scene.marginBottom, sclwidth, sclheight);
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
|
|
||||||
if(grid){
|
if(grid){
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ public class WaveInfoDialog extends BaseDialog{
|
|||||||
group.end = never;
|
group.end = never;
|
||||||
updateWaves();
|
updateWaves();
|
||||||
}
|
}
|
||||||
}).width(100f).get().setMessageText(Core.bundle.get("waves.never"));
|
}).width(100f).get().setMessageText("∞");
|
||||||
});
|
});
|
||||||
t.row();
|
t.row();
|
||||||
t.table(p -> {
|
t.table(p -> {
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import arc.math.*;
|
|||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.core.*;
|
import mindustry.core.*;
|
||||||
import mindustry.game.EventType.*;
|
import mindustry.game.EventType.*;
|
||||||
@@ -25,11 +24,10 @@ public class Damage{
|
|||||||
private static Rect hitrect = new Rect();
|
private static Rect hitrect = new Rect();
|
||||||
private static Vec2 tr = new Vec2(), seg1 = new Vec2(), seg2 = new Vec2();
|
private static Vec2 tr = new Vec2(), seg1 = new Vec2(), seg2 = new Vec2();
|
||||||
private static Seq<Unit> units = new Seq<>();
|
private static Seq<Unit> units = new Seq<>();
|
||||||
private static GridBits bits = new GridBits(30, 30);
|
|
||||||
private static IntQueue propagation = new IntQueue();
|
|
||||||
private static IntSet collidedBlocks = new IntSet();
|
private static IntSet collidedBlocks = new IntSet();
|
||||||
private static Building tmpBuilding;
|
private static Building tmpBuilding;
|
||||||
private static Unit tmpUnit;
|
private static Unit tmpUnit;
|
||||||
|
private static IntFloatMap damages = new IntFloatMap();
|
||||||
|
|
||||||
/** Creates a dynamic explosion based on specified parameters. */
|
/** Creates a dynamic explosion based on specified parameters. */
|
||||||
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage){
|
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage){
|
||||||
@@ -39,9 +37,9 @@ public class Damage{
|
|||||||
/** Creates a dynamic explosion based on specified parameters. */
|
/** Creates a dynamic explosion based on specified parameters. */
|
||||||
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage, boolean fire, @Nullable Team ignoreTeam){
|
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage, boolean fire, @Nullable Team ignoreTeam){
|
||||||
if(damage){
|
if(damage){
|
||||||
for(int i = 0; i < Mathf.clamp(power / 20, 0, 6); i++){
|
for(int i = 0; i < Mathf.clamp(power / 700, 0, 8); i++){
|
||||||
int branches = 5 + Mathf.clamp((int)(power / 30), 1, 20);
|
int length = 5 + Mathf.clamp((int)(power / 500), 1, 20);
|
||||||
Time.run(i * 2f + Mathf.random(4f), () -> Lightning.create(Team.derelict, Pal.power, 3, x, y, Mathf.random(360f), branches + Mathf.range(2)));
|
Time.run(i * 0.8f + Mathf.random(4f), () -> Lightning.create(Team.derelict, Pal.power, 3, x, y, Mathf.random(360f), length + Mathf.range(2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fire){
|
if(fire){
|
||||||
@@ -116,7 +114,15 @@ public class Damage{
|
|||||||
* Only enemies of the specified team are damaged.
|
* Only enemies of the specified team are damaged.
|
||||||
*/
|
*/
|
||||||
public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length, boolean large){
|
public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length, boolean large){
|
||||||
length = findLaserLength(hitter, length);
|
collideLine(hitter, team, effect, x, y, angle, length, large, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Damages entities in a line.
|
||||||
|
* Only enemies of the specified team are damaged.
|
||||||
|
*/
|
||||||
|
public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length, boolean large, boolean laser){
|
||||||
|
if(laser) length = findLaserLength(hitter, length);
|
||||||
|
|
||||||
collidedBlocks.clear();
|
collidedBlocks.clear();
|
||||||
tr.trns(angle, length);
|
tr.trns(angle, length);
|
||||||
@@ -207,9 +213,9 @@ public class Damage{
|
|||||||
public static Healthc linecast(Bullet hitter, float x, float y, float angle, float length){
|
public static Healthc linecast(Bullet hitter, float x, float y, float angle, float length){
|
||||||
tr.trns(angle, length);
|
tr.trns(angle, length);
|
||||||
|
|
||||||
if(hitter.type.collidesGround){
|
tmpBuilding = null;
|
||||||
tmpBuilding = null;
|
|
||||||
|
|
||||||
|
if(hitter.type.collidesGround){
|
||||||
world.raycastEachWorld(x, y, x + tr.x, y + tr.y, (cx, cy) -> {
|
world.raycastEachWorld(x, y, x + tr.x, y + tr.y, (cx, cy) -> {
|
||||||
Building tile = world.build(cx, cy);
|
Building tile = world.build(cx, cy);
|
||||||
if(tile != null && tile.team != hitter.team){
|
if(tile != null && tile.team != hitter.team){
|
||||||
@@ -218,8 +224,6 @@ public class Damage{
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
if(tmpBuilding != null) return tmpBuilding;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rect.setPosition(x, y).setSize(tr.x, tr.y);
|
rect.setPosition(x, y).setSize(tr.x, tr.y);
|
||||||
@@ -263,6 +267,14 @@ public class Damage{
|
|||||||
|
|
||||||
Units.nearbyEnemies(hitter.team, rect, cons);
|
Units.nearbyEnemies(hitter.team, rect, cons);
|
||||||
|
|
||||||
|
if(tmpBuilding != null && tmpUnit != null){
|
||||||
|
if(Mathf.dst2(x, y, tmpUnit.getX(), tmpUnit.getY()) <= Mathf.dst2(x, y, tmpBuilding.getX(), tmpBuilding.getY())){
|
||||||
|
return tmpUnit;
|
||||||
|
}
|
||||||
|
}else if(tmpBuilding != null){
|
||||||
|
return tmpBuilding;
|
||||||
|
}
|
||||||
|
|
||||||
return tmpUnit;
|
return tmpUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,64 +363,84 @@ public class Damage{
|
|||||||
|
|
||||||
if(ground){
|
if(ground){
|
||||||
if(!complete){
|
if(!complete){
|
||||||
int trad = (int)(radius / tilesize);
|
tileDamage(team, World.toTile(x), World.toTile(y), radius / tilesize, damage);
|
||||||
Tile tile = world.tileWorld(x, y);
|
|
||||||
if(tile != null){
|
|
||||||
tileDamage(team, tile.x, tile.y, trad, damage);
|
|
||||||
}
|
|
||||||
}else{
|
}else{
|
||||||
completeDamage(team, x, y, radius, damage);
|
completeDamage(team, x, y, radius, damage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void tileDamage(Team team, int startx, int starty, int baseRadius, float baseDamage){
|
public static void tileDamage(Team team, int x, int y, float baseRadius, float damage){
|
||||||
//tile damage is posted, so that destroying a block that causes a chain explosion will run in the next frame
|
|
||||||
//this prevents recursive damage calls from messing up temporary variables
|
|
||||||
Core.app.post(() -> {
|
Core.app.post(() -> {
|
||||||
|
|
||||||
bits.clear();
|
var in = world.build(x, y);
|
||||||
propagation.clear();
|
//spawned inside a multiblock. this means that damage needs to be dealt directly.
|
||||||
int bitOffset = bits.width() / 2;
|
//why? because otherwise the building would absorb everything in one cell, which means much less damage than a nearby explosion.
|
||||||
|
//this needs to be compensated
|
||||||
|
if(in != null && in.team != team && in.block.size > 1 && in.health > damage){
|
||||||
|
//deal the damage of an entire side, to be equivalent with maximum 'standard' damage
|
||||||
|
in.damage(damage * Math.min((in.block.size), baseRadius * 0.45f));
|
||||||
|
//no need to continue with the explosion
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
propagation.addFirst(PropCell.get((byte)0, (byte)0, (short)baseDamage));
|
//cap radius to prevent lag
|
||||||
//clamp radius to fit bits
|
float radius = Math.min(baseRadius, 30), rad2 = radius * radius;
|
||||||
int radius = Math.min(baseRadius, bits.width() / 2);
|
int rays = Mathf.ceil(radius * 2 * Mathf.pi);
|
||||||
|
double spacing = Math.PI * 2.0 / rays;
|
||||||
|
damages.clear();
|
||||||
|
|
||||||
while(!propagation.isEmpty()){
|
//raycast from each angle
|
||||||
int prop = propagation.removeLast();
|
for(int i = 0; i <= rays; i++){
|
||||||
int x = PropCell.x(prop);
|
float dealt = 0f;
|
||||||
int y = PropCell.y(prop);
|
int startX = x;
|
||||||
int damage = PropCell.damage(prop);
|
int startY = y;
|
||||||
//manhattan distance used for calculating falloff, results in a diamond pattern
|
int endX = x + (int)(Math.cos(spacing * i) * radius), endY = y + (int)(Math.sin(spacing * i) * radius);
|
||||||
int dst = Math.abs(x) + Math.abs(y);
|
|
||||||
|
|
||||||
int scaledDamage = (int)(damage * (1f - (float)dst / radius));
|
int xDist = Math.abs(endX - startX);
|
||||||
|
int yDist = -Math.abs(endY - startY);
|
||||||
|
int xStep = (startX < endX ? +1 : -1);
|
||||||
|
int yStep = (startY < endY ? +1 : -1);
|
||||||
|
int error = xDist + yDist;
|
||||||
|
|
||||||
bits.set(bitOffset + x, bitOffset + y);
|
while(startX != endX || startY != endY){
|
||||||
Tile tile = world.tile(startx + x, starty + y);
|
var build = world.build(startX, startY);
|
||||||
|
if(build != null && build.team != team){
|
||||||
|
//damage dealt at circle edge
|
||||||
|
float edgeScale = 0.6f;
|
||||||
|
float mult = (1f-(Mathf.dst2(startX, startY, x, y) / rad2) + edgeScale) / (1f + edgeScale);
|
||||||
|
float next = damage * mult - dealt;
|
||||||
|
//register damage dealt
|
||||||
|
int p = Point2.pack(startX, startY);
|
||||||
|
damages.put(p, Math.max(damages.get(p), next));
|
||||||
|
//register as hit
|
||||||
|
dealt += build.health;
|
||||||
|
|
||||||
if(scaledDamage <= 0 || tile == null) continue;
|
if(next - dealt <= 0){
|
||||||
|
break;
|
||||||
//apply damage to entity if needed
|
}
|
||||||
if(tile.build != null && tile.build.team != team){
|
|
||||||
int health = (int)(tile.build.health / (tile.block().size * tile.block().size));
|
|
||||||
if(tile.build.health > 0){
|
|
||||||
tile.build.damage(scaledDamage);
|
|
||||||
scaledDamage -= health;
|
|
||||||
|
|
||||||
if(scaledDamage <= 0) continue;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
for(Point2 p : Geometry.d4){
|
if(2 * error - yDist > xDist - 2 * error){
|
||||||
if(!bits.get(bitOffset + x + p.x, bitOffset + y + p.y)){
|
error += yDist;
|
||||||
propagation.addFirst(PropCell.get((byte)(x + p.x), (byte)(y + p.y), (short)scaledDamage));
|
startX += xStep;
|
||||||
|
}else{
|
||||||
|
error += xDist;
|
||||||
|
startY += yStep;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
|
//apply damage
|
||||||
|
for(var e : damages){
|
||||||
|
int cx = Point2.x(e.key), cy = Point2.y(e.key);
|
||||||
|
var build = world.build(cx, cy);
|
||||||
|
if(build != null){
|
||||||
|
build.damage(e.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void completeDamage(Team team, float x, float y, float radius, float damage){
|
private static void completeDamage(Team team, float x, float y, float radius, float damage){
|
||||||
@@ -429,11 +461,4 @@ public class Damage{
|
|||||||
float scaled = Mathf.lerp(1f - dist / radius, 1f, falloff);
|
float scaled = Mathf.lerp(1f - dist / radius, 1f, falloff);
|
||||||
return damage * scaled;
|
return damage * scaled;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Struct
|
|
||||||
static class PropCellStruct{
|
|
||||||
byte x;
|
|
||||||
byte y;
|
|
||||||
short damage;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package mindustry.entities;
|
|||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
|
import mindustry.content.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
|
|
||||||
@@ -126,7 +127,7 @@ public class EntityCollisions{
|
|||||||
|
|
||||||
public static boolean legsSolid(int x, int y){
|
public static boolean legsSolid(int x, int y){
|
||||||
Tile tile = world.tile(x, y);
|
Tile tile = world.tile(x, y);
|
||||||
return tile == null || tile.staticDarkness() >= 2 || tile.floor().solid;
|
return tile == null || tile.staticDarkness() >= 2 || (tile.floor().solid && tile.block() == Blocks.air);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean waterSolid(int x, int y){
|
public static boolean waterSolid(int x, int y){
|
||||||
@@ -190,14 +191,10 @@ public class EntityCollisions{
|
|||||||
yInvExit = y2 - (y1 + h1);
|
yInvExit = y2 - (y1 + h1);
|
||||||
}
|
}
|
||||||
|
|
||||||
float xEntry, yEntry;
|
float xEntry = xInvEntry / vx1;
|
||||||
float xExit, yExit;
|
float xExit = xInvExit / vx1;
|
||||||
|
float yEntry = yInvEntry / vy1;
|
||||||
xEntry = xInvEntry / vx1;
|
float yExit = yInvExit / vy1;
|
||||||
xExit = xInvExit / vx1;
|
|
||||||
|
|
||||||
yEntry = yInvEntry / vy1;
|
|
||||||
yExit = yInvExit / vy1;
|
|
||||||
|
|
||||||
float entryTime = Math.max(xEntry, yEntry);
|
float entryTime = Math.max(xEntry, yEntry);
|
||||||
float exitTime = Math.min(xExit, yExit);
|
float exitTime = Math.min(xExit, yExit);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import arc.math.geom.*;
|
|||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
|
import mindustry.entities.comp.*;
|
||||||
import mindustry.game.*;
|
import mindustry.game.*;
|
||||||
import mindustry.game.Teams.*;
|
import mindustry.game.Teams.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
@@ -75,7 +76,7 @@ public class Units{
|
|||||||
if((team == state.rules.waveTeam && !state.rules.pvp) || (state.isCampaign() && team == state.rules.waveTeam)){
|
if((team == state.rules.waveTeam && !state.rules.pvp) || (state.isCampaign() && team == state.rules.waveTeam)){
|
||||||
return Integer.MAX_VALUE;
|
return Integer.MAX_VALUE;
|
||||||
}
|
}
|
||||||
return state.rules.unitCap + indexer.getExtraUnits(team);
|
return Math.max(0, state.rules.unitCapVariable ? state.rules.unitCap + indexer.getExtraUnits(team) : state.rules.unitCap);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return whether this player can interact with a specific tile. if either of these are null, returns true.*/
|
/** @return whether this player can interact with a specific tile. if either of these are null, returns true.*/
|
||||||
@@ -93,7 +94,7 @@ public class Units{
|
|||||||
* @return whether the target is invalid
|
* @return whether the target is invalid
|
||||||
*/
|
*/
|
||||||
public static boolean invalidateTarget(Posc target, Team team, float x, float y, float range){
|
public static boolean invalidateTarget(Posc target, Team team, float x, float y, float range){
|
||||||
return target == null || (range != Float.MAX_VALUE && !target.within(x, y, range)) || (target instanceof Teamc && ((Teamc)target).team() == team) || (target instanceof Healthc && !((Healthc)target).isValid());
|
return target == null || (range != Float.MAX_VALUE && !target.within(x, y, range + (target instanceof Sized hb ? hb.hitSize()/2f : 0f))) || (target instanceof Teamc t && t.team() == team) || (target instanceof Healthc h && !h.isValid());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** See {@link #invalidateTarget(Posc, Team, float, float, float)} */
|
/** See {@link #invalidateTarget(Posc, Team, float, float, float)} */
|
||||||
@@ -217,7 +218,7 @@ public class Units{
|
|||||||
cdist = 0f;
|
cdist = 0f;
|
||||||
|
|
||||||
nearbyEnemies(team, x - range, y - range, range*2f, range*2f, e -> {
|
nearbyEnemies(team, x - range, y - range, range*2f, range*2f, e -> {
|
||||||
if(e.dead() || !predicate.get(e) || !e.within(x, y, range)) return;
|
if(e.dead() || !predicate.get(e) || !e.within(x, y, range + e.hitSize/2f)) return;
|
||||||
|
|
||||||
float cost = sort.cost(e, x, y);
|
float cost = sort.cost(e, x, y);
|
||||||
if(result == null || cost < cdist){
|
if(result == null || cost < cdist){
|
||||||
@@ -247,7 +248,7 @@ public class Units{
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns the closest ally of this team. Filter by predicate. */
|
/** Returns the closest ally of this team in a range. Filter by predicate. */
|
||||||
public static Unit closest(Team team, float x, float y, float range, Boolf<Unit> predicate){
|
public static Unit closest(Team team, float x, float y, float range, Boolf<Unit> predicate){
|
||||||
result = null;
|
result = null;
|
||||||
cdist = 0f;
|
cdist = 0f;
|
||||||
@@ -265,6 +266,24 @@ public class Units{
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns the closest ally of this team in a range. Filter by predicate. */
|
||||||
|
public static Unit closest(Team team, float x, float y, float range, Boolf<Unit> predicate, Sortf sort){
|
||||||
|
result = null;
|
||||||
|
cdist = 0f;
|
||||||
|
|
||||||
|
nearby(team, x, y, range, e -> {
|
||||||
|
if(!predicate.get(e)) return;
|
||||||
|
|
||||||
|
float dist = sort.cost(e, x, y);
|
||||||
|
if(result == null || dist < cdist){
|
||||||
|
result = e;
|
||||||
|
cdist = dist;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/** Returns the closest ally of this team. Filter by predicate.
|
/** Returns the closest ally of this team. Filter by predicate.
|
||||||
* Unlike the closest() function, this only guarantees that unit hitboxes overlap the range. */
|
* Unlike the closest() function, this only guarantees that unit hitboxes overlap the range. */
|
||||||
public static Unit closestOverlap(Team team, float x, float y, float range, Boolf<Unit> predicate){
|
public static Unit closestOverlap(Team team, float x, float y, float range, Boolf<Unit> predicate){
|
||||||
@@ -292,7 +311,7 @@ public class Units{
|
|||||||
/** Iterates over all units in a circle around this position. */
|
/** Iterates over all units in a circle around this position. */
|
||||||
public static void nearby(Team team, float x, float y, float radius, Cons<Unit> cons){
|
public static void nearby(Team team, float x, float y, float radius, Cons<Unit> cons){
|
||||||
nearby(team, x - radius, y - radius, radius*2f, radius*2f, unit -> {
|
nearby(team, x - radius, y - radius, radius*2f, radius*2f, unit -> {
|
||||||
if(unit.within(x, y, radius)){
|
if(unit.within(x, y, radius + unit.hitSize/2f)){
|
||||||
cons.get(unit);
|
cons.get(unit);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package mindustry.entities.abilities;
|
package mindustry.entities.abilities;
|
||||||
|
|
||||||
import arc.*;
|
import arc.*;
|
||||||
|
import arc.scene.ui.layout.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
|
|
||||||
public abstract class Ability implements Cloneable{
|
public abstract class Ability implements Cloneable{
|
||||||
@@ -16,6 +17,10 @@ public abstract class Ability implements Cloneable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void displayBars(Unit unit, Table bars){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** @return localized ability name; mods should override this. */
|
/** @return localized ability name; mods should override this. */
|
||||||
public String localized(){
|
public String localized(){
|
||||||
return Core.bundle.get("ability." + getClass().getSimpleName().replace("Ability", "").toLowerCase());
|
return Core.bundle.get("ability." + getClass().getSimpleName().replace("Ability", "").toLowerCase());
|
||||||
|
|||||||
@@ -6,10 +6,12 @@ import arc.graphics.*;
|
|||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
|
import arc.scene.ui.layout.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
|
import mindustry.ui.*;
|
||||||
|
|
||||||
public class ForceFieldAbility extends Ability{
|
public class ForceFieldAbility extends Ability{
|
||||||
/** Shield radius. */
|
/** Shield radius. */
|
||||||
@@ -94,6 +96,11 @@ public class ForceFieldAbility extends Ability{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void displayBars(Unit unit, Table bars){
|
||||||
|
bars.add(new Bar("stat.shieldhealth", Pal.accent, () -> unit.shield / max)).row();
|
||||||
|
}
|
||||||
|
|
||||||
public void checkRadius(Unit unit){
|
public void checkRadius(Unit unit){
|
||||||
//timer2 is used to store radius scale as an effect
|
//timer2 is used to store radius scale as an effect
|
||||||
realRad = radiusScale * radius;
|
realRad = radiusScale * radius;
|
||||||
|
|||||||
@@ -1,34 +1,57 @@
|
|||||||
package mindustry.entities.abilities;
|
package mindustry.entities.abilities;
|
||||||
|
|
||||||
|
import arc.*;
|
||||||
|
import arc.audio.*;
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
|
import arc.graphics.g2d.*;
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.audio.*;
|
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.entities.*;
|
import mindustry.entities.*;
|
||||||
|
import mindustry.entities.bullet.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
|
|
||||||
public class MoveLightningAbility extends Ability{
|
public class MoveLightningAbility extends Ability{
|
||||||
//Lightning damage
|
/** Lightning damage */
|
||||||
public float damage = 35f;
|
public float damage = 35f;
|
||||||
//Chance of firing every tick. Set >= 1 to always fire lightning every tick at max speed.
|
/** Chance of firing every tick. Set >= 1 to always fire lightning every tick at max speed. */
|
||||||
public float chance = 0.15f;
|
public float chance = 0.15f;
|
||||||
//Length of the lightning
|
/** Length of the lightning. <= 0 to disable */
|
||||||
public int length = 12;
|
public int length = 12;
|
||||||
//Speeds for when to start lightninging and when to stop getting faster
|
/** Speeds for when to start lightninging and when to stop getting faster */
|
||||||
public float minSpeed = 0.8f, maxSpeed = 1.2f;
|
public float minSpeed = 0.8f, maxSpeed = 1.2f;
|
||||||
//Lightning color
|
/** Lightning color */
|
||||||
public Color color = Color.valueOf("a9d8ff");
|
public Color color = Color.valueOf("a9d8ff");
|
||||||
|
/** Shifts where the lightning spawns along the Y axis */
|
||||||
|
public float offset = 0f;
|
||||||
|
/** Jittering heat sprite like the shield on v5 Javelin */
|
||||||
|
public String heatRegion = "error";
|
||||||
|
/** Bullet type that is fired. Can be null */
|
||||||
|
public @Nullable BulletType bullet;
|
||||||
|
/** Bullet angle parameters */
|
||||||
|
public float bulletAngle = 0f, bulletSpread = 0f;
|
||||||
|
|
||||||
public Effect shootEffect = Fx.sparkShoot;
|
public Effect shootEffect = Fx.sparkShoot;
|
||||||
public Sound shootSound = Sounds.spark;
|
public Sound shootSound = Sounds.spark;
|
||||||
|
|
||||||
MoveLightningAbility(){}
|
MoveLightningAbility(){}
|
||||||
|
|
||||||
public MoveLightningAbility(float damage, int length, float chance, float minSpeed, float maxSpeed, Color color){
|
public MoveLightningAbility(float damage, int length, float chance, float offset, float minSpeed, float maxSpeed, Color color, String heatRegion){
|
||||||
this.damage = damage;
|
this.damage = damage;
|
||||||
this.length = length;
|
this.length = length;
|
||||||
this.chance = chance;
|
this.chance = chance;
|
||||||
|
this.offset = offset;
|
||||||
|
this.minSpeed = minSpeed;
|
||||||
|
this.maxSpeed = maxSpeed;
|
||||||
|
this.color = color;
|
||||||
|
this.heatRegion = heatRegion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MoveLightningAbility(float damage, int length, float chance, float offset, float minSpeed, float maxSpeed, Color color){
|
||||||
|
this.damage = damage;
|
||||||
|
this.length = length;
|
||||||
|
this.chance = chance;
|
||||||
|
this.offset = offset;
|
||||||
this.minSpeed = minSpeed;
|
this.minSpeed = minSpeed;
|
||||||
this.maxSpeed = maxSpeed;
|
this.maxSpeed = maxSpeed;
|
||||||
this.color = color;
|
this.color = color;
|
||||||
@@ -38,9 +61,31 @@ public class MoveLightningAbility extends Ability{
|
|||||||
public void update(Unit unit){
|
public void update(Unit unit){
|
||||||
float scl = Mathf.clamp((unit.vel().len() - minSpeed) / (maxSpeed - minSpeed));
|
float scl = Mathf.clamp((unit.vel().len() - minSpeed) / (maxSpeed - minSpeed));
|
||||||
if(Mathf.chance(Time.delta * chance * scl)){
|
if(Mathf.chance(Time.delta * chance * scl)){
|
||||||
shootEffect.at(unit.x, unit.y, unit.rotation, color);
|
float x = unit.x + Angles.trnsx(unit.rotation, offset, 0), y = unit.y + Angles.trnsy(unit.rotation, offset, 0);
|
||||||
Lightning.create(unit.team, color, damage, unit.x + unit.vel.x, unit.y + unit.vel.y, unit.rotation, length);
|
|
||||||
|
shootEffect.at(x, y, unit.rotation, color);
|
||||||
shootSound.at(unit);
|
shootSound.at(unit);
|
||||||
|
|
||||||
|
if(length > 0){
|
||||||
|
Lightning.create(unit.team, color, damage, x + unit.vel.x, y + unit.vel.y, unit.rotation, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bullet != null){
|
||||||
|
bullet.create(unit, unit.team, x, y, unit.rotation + bulletAngle + Mathf.range(bulletSpread));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void draw(Unit unit){
|
||||||
|
float scl = Mathf.clamp((unit.vel().len() - minSpeed) / (maxSpeed - minSpeed));
|
||||||
|
TextureRegion region = Core.atlas.find(heatRegion);
|
||||||
|
if(Core.atlas.isFound(region) && scl > 0.00001f){
|
||||||
|
Draw.color(color);
|
||||||
|
Draw.alpha(scl / 2f);
|
||||||
|
Draw.blend(Blending.additive);
|
||||||
|
Draw.rect(region, unit.x + Mathf.range(scl / 2f), unit.y + Mathf.range(scl / 2f), unit.rotation - 90);
|
||||||
|
Draw.blend();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,14 +15,14 @@ import mindustry.ui.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class UnitSpawnAbility extends Ability{
|
public class UnitSpawnAbility extends Ability{
|
||||||
public UnitType type;
|
public UnitType unit;
|
||||||
public float spawnTime = 60f, spawnX, spawnY;
|
public float spawnTime = 60f, spawnX, spawnY;
|
||||||
public Effect spawnEffect = Fx.spawn;
|
public Effect spawnEffect = Fx.spawn;
|
||||||
|
|
||||||
protected float timer;
|
protected float timer;
|
||||||
|
|
||||||
public UnitSpawnAbility(UnitType type, float spawnTime, float spawnX, float spawnY){
|
public UnitSpawnAbility(UnitType unit, float spawnTime, float spawnX, float spawnY){
|
||||||
this.type = type;
|
this.unit = unit;
|
||||||
this.spawnTime = spawnTime;
|
this.spawnTime = spawnTime;
|
||||||
this.spawnX = spawnX;
|
this.spawnX = spawnX;
|
||||||
this.spawnY = spawnY;
|
this.spawnY = spawnY;
|
||||||
@@ -35,10 +35,10 @@ public class UnitSpawnAbility extends Ability{
|
|||||||
public void update(Unit unit){
|
public void update(Unit unit){
|
||||||
timer += Time.delta * state.rules.unitBuildSpeedMultiplier;
|
timer += Time.delta * state.rules.unitBuildSpeedMultiplier;
|
||||||
|
|
||||||
if(timer >= spawnTime && Units.canCreate(unit.team, type)){
|
if(timer >= spawnTime && Units.canCreate(unit.team, this.unit)){
|
||||||
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);
|
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);
|
||||||
spawnEffect.at(x, y);
|
spawnEffect.at(x, y);
|
||||||
Unit u = type.create(unit.team);
|
Unit u = this.unit.create(unit.team);
|
||||||
u.set(x, y);
|
u.set(x, y);
|
||||||
u.rotation = unit.rotation;
|
u.rotation = unit.rotation;
|
||||||
if(!Vars.net.client()){
|
if(!Vars.net.client()){
|
||||||
@@ -51,16 +51,16 @@ public class UnitSpawnAbility extends Ability{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Unit unit){
|
public void draw(Unit unit){
|
||||||
if(Units.canCreate(unit.team, type)){
|
if(Units.canCreate(unit.team, this.unit)){
|
||||||
Draw.draw(Draw.z(), () -> {
|
Draw.draw(Draw.z(), () -> {
|
||||||
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);
|
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);
|
||||||
Drawf.construct(x, y, type.icon(Cicon.full), unit.rotation - 90, timer / spawnTime, 1f, timer);
|
Drawf.construct(x, y, this.unit.icon(Cicon.full), unit.rotation - 90, timer / spawnTime, 1f, timer);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String localized(){
|
public String localized(){
|
||||||
return Core.bundle.format("ability.unitspawn", type.localizedName);
|
return Core.bundle.format("ability.unitspawn", unit.localizedName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ public abstract class BulletType extends Content{
|
|||||||
public Effect smokeEffect = Fx.shootSmallSmoke;
|
public Effect smokeEffect = Fx.shootSmallSmoke;
|
||||||
/** Sound made when hitting something or getting removed.*/
|
/** Sound made when hitting something or getting removed.*/
|
||||||
public Sound hitSound = Sounds.none;
|
public Sound hitSound = Sounds.none;
|
||||||
|
/** Pitch of the sound made when hitting something*/
|
||||||
|
public float hitSoundPitch = 1;
|
||||||
|
/** Volume of the sound made when hitting something*/
|
||||||
|
public float hitSoundVolume = 1;
|
||||||
/** Extra inaccuracy when firing. */
|
/** Extra inaccuracy when firing. */
|
||||||
public float inaccuracy = 0f;
|
public float inaccuracy = 0f;
|
||||||
/** How many bullets get created per ammo item/liquid. */
|
/** How many bullets get created per ammo item/liquid. */
|
||||||
@@ -185,8 +189,9 @@ public abstract class BulletType extends Content{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void hit(Bullet b, float x, float y){
|
public void hit(Bullet b, float x, float y){
|
||||||
|
b.hit = true;
|
||||||
hitEffect.at(x, y, b.rotation(), hitColor);
|
hitEffect.at(x, y, b.rotation(), hitColor);
|
||||||
hitSound.at(b);
|
hitSound.at(x, y, hitSoundPitch, hitSoundVolume);
|
||||||
|
|
||||||
Effect.shake(hitShake, hitShake, b);
|
Effect.shake(hitShake, hitShake, b);
|
||||||
|
|
||||||
@@ -241,7 +246,7 @@ public abstract class BulletType extends Content{
|
|||||||
|
|
||||||
Effect.shake(despawnShake, despawnShake, b);
|
Effect.shake(despawnShake, despawnShake, b);
|
||||||
|
|
||||||
if(fragBullet != null || splashDamageRadius > 0 || lightning > 0){
|
if(!b.hit && (fragBullet != null || splashDamageRadius > 0 || lightning > 0)){
|
||||||
hit(b);
|
hit(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -268,13 +273,12 @@ public abstract class BulletType extends Content{
|
|||||||
if(homingPower > 0.0001f && b.time >= homingDelay){
|
if(homingPower > 0.0001f && b.time >= homingDelay){
|
||||||
Teamc target = Units.closestTarget(b.team, b.x, b.y, homingRange, e -> (e.isGrounded() && collidesGround) || (e.isFlying() && collidesAir), t -> collidesGround);
|
Teamc target = Units.closestTarget(b.team, b.x, b.y, homingRange, e -> (e.isGrounded() && collidesGround) || (e.isFlying() && collidesAir), t -> collidesGround);
|
||||||
if(target != null){
|
if(target != null){
|
||||||
b.vel.setAngle(Mathf.slerpDelta(b.rotation(), b.angleTo(target), homingPower));
|
b.vel.setAngle(Angles.moveToward(b.rotation(), b.angleTo(target), homingPower * Time.delta * 50f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(weaveMag > 0){
|
if(weaveMag > 0){
|
||||||
float scl = Mathf.randomSeed(id, 0.9f, 1.1f);
|
b.vel.rotate(Mathf.sin(b.time + Mathf.PI * weaveScale/2f, weaveScale, weaveMag * (Mathf.randomSeed(b.id, 0, 1) == 1 ? -1 : 1)) * Time.delta);
|
||||||
b.vel.rotate(Mathf.sin(b.time + Mathf.PI * weaveScale/2f * scl, weaveScale * scl, weaveMag) * Time.delta);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(trailChance > 0){
|
if(trailChance > 0){
|
||||||
@@ -334,6 +338,7 @@ public abstract class BulletType extends Content{
|
|||||||
bullet.type = this;
|
bullet.type = this;
|
||||||
bullet.owner = owner;
|
bullet.owner = owner;
|
||||||
bullet.team = team;
|
bullet.team = team;
|
||||||
|
bullet.time = 0f;
|
||||||
bullet.vel.trns(angle, speed * velocityScl);
|
bullet.vel.trns(angle, speed * velocityScl);
|
||||||
if(backMove){
|
if(backMove){
|
||||||
bullet.set(x - bullet.vel.x * Time.delta, y - bullet.vel.y * Time.delta);
|
bullet.set(x - bullet.vel.x * Time.delta, y - bullet.vel.y * Time.delta);
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class ContinuousLaserBulletType extends BulletType{
|
|||||||
public ContinuousLaserBulletType(float damage){
|
public ContinuousLaserBulletType(float damage){
|
||||||
super(0.001f, damage);
|
super(0.001f, damage);
|
||||||
|
|
||||||
hitEffect = Fx.hitMeltdown;
|
hitEffect = Fx.hitBeam;
|
||||||
despawnEffect = Fx.none;
|
despawnEffect = Fx.none;
|
||||||
hitSize = 4;
|
hitSize = 4;
|
||||||
drawSize = 420f;
|
drawSize = 420f;
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ public class LaserBulletType extends BulletType{
|
|||||||
public LaserBulletType(float damage){
|
public LaserBulletType(float damage){
|
||||||
super(0.01f, damage);
|
super(0.01f, damage);
|
||||||
|
|
||||||
hitEffect = Fx.hitLancer;
|
hitEffect = Fx.hitLaserBlast;
|
||||||
|
hitColor = colors[2];
|
||||||
despawnEffect = Fx.none;
|
despawnEffect = Fx.none;
|
||||||
shootEffect = Fx.hitLancer;
|
shootEffect = Fx.hitLancer;
|
||||||
smokeEffect = Fx.none;
|
smokeEffect = Fx.none;
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import mindustry.gen.*;
|
|||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
|
|
||||||
public class LightningBulletType extends BulletType{
|
public class LightningBulletType extends BulletType{
|
||||||
protected Color lightningColor = Pal.lancerLaser;
|
public Color lightningColor = Pal.lancerLaser;
|
||||||
protected int lightningLength = 25, lightningLengthRand = 0;
|
public int lightningLength = 25, lightningLengthRand = 0;
|
||||||
|
|
||||||
public LightningBulletType(){
|
public LightningBulletType(){
|
||||||
super(0.0001f, 1f);
|
super(0.0001f, 1f);
|
||||||
@@ -28,7 +28,7 @@ public class LightningBulletType extends BulletType{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float estimateDPS(){
|
public float estimateDPS(){
|
||||||
return super.estimateDPS() * Math.max(lightningLength / 4f, 1);
|
return super.estimateDPS() * Math.max(lightningLength / 10f, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class MissileBulletType extends BasicBulletType{
|
|||||||
height = 8f;
|
height = 8f;
|
||||||
hitSound = Sounds.explosion;
|
hitSound = Sounds.explosion;
|
||||||
trailChance = 0.2f;
|
trailChance = 0.2f;
|
||||||
lifetime = 49f;
|
lifetime = 52f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MissileBulletType(float speed, float damage){
|
public MissileBulletType(float speed, float damage){
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public class RailBulletType extends BulletType{
|
|||||||
super.init(b);
|
super.init(b);
|
||||||
|
|
||||||
b.fdata = length;
|
b.fdata = length;
|
||||||
Damage.collideLine(b, b.team, b.type.hitEffect, b.x, b.y, b.rotation(), length, false);
|
Damage.collideLine(b, b.team, b.type.hitEffect, b.x, b.y, b.rotation(), length, false, false);
|
||||||
float resultLen = b.fdata;
|
float resultLen = b.fdata;
|
||||||
|
|
||||||
Vec2 nor = Tmp.v1.set(b.vel).nor();
|
Vec2 nor = Tmp.v1.set(b.vel).nor();
|
||||||
@@ -63,6 +63,11 @@ public class RailBulletType extends BulletType{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean testCollision(Bullet bullet, Building tile){
|
||||||
|
return bullet.team != tile.team;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void hitEntity(Bullet b, Hitboxc entity, float initialHealth){
|
public void hitEntity(Bullet b, Hitboxc entity, float initialHealth){
|
||||||
handle(b, entity, initialHealth);
|
handle(b, entity, initialHealth);
|
||||||
|
|||||||