Compare commits
215 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ab96e2787 | ||
|
|
659c481c83 | ||
|
|
a18e1854ab | ||
|
|
6c67dc1266 | ||
|
|
0c581c520f | ||
|
|
c6c18696c0 | ||
|
|
4b1c55b876 | ||
|
|
5ab090f28d | ||
|
|
8a5bd7571e | ||
|
|
3cb0cc9a3c | ||
|
|
ff93c21269 | ||
|
|
0512e54df5 | ||
|
|
cec1eb5608 | ||
|
|
1c6ebd3f6a | ||
|
|
16f7a8e9d2 | ||
|
|
889c53dc1b | ||
|
|
f4d0dfd0da | ||
|
|
aee5d46dfa | ||
|
|
6286b0b275 | ||
|
|
5223a89bf1 | ||
|
|
5b11dbc085 | ||
|
|
df1f8b8bb4 | ||
|
|
ffa7256e5a | ||
|
|
bbf84185cc | ||
|
|
901c23f295 | ||
|
|
1c8d368d3b | ||
|
|
37ebae20d7 | ||
|
|
e25f0c6ae2 | ||
|
|
484b480076 | ||
|
|
926497ba77 | ||
|
|
ddd9f2259c | ||
|
|
d6546a38c0 | ||
|
|
d171048004 | ||
|
|
4aebba0a0c | ||
|
|
8afb6006ce | ||
|
|
d117eb249e | ||
|
|
768d14088a | ||
|
|
86f16bfc94 | ||
|
|
8fa6b76bf9 | ||
|
|
19af1a0cc8 | ||
|
|
409d27e3df | ||
|
|
d47abd4f83 | ||
|
|
e6c4a6cf69 | ||
|
|
7c80af85e3 | ||
|
|
6983f57459 | ||
|
|
adeeaa6e27 | ||
|
|
075e7cf5d8 | ||
|
|
98c4ee6e74 | ||
|
|
87f9a077ac | ||
|
|
bc26d3ba7b | ||
|
|
daaea591e4 | ||
|
|
175d66ad72 | ||
|
|
c444cbf623 | ||
|
|
c54f398063 | ||
|
|
2d6db1583b | ||
|
|
b3beb92557 | ||
|
|
0f8304674f | ||
|
|
3b3daf0e25 | ||
|
|
28e18332a0 | ||
|
|
dcc4764914 | ||
|
|
ee4ace1146 | ||
|
|
1faffadcab | ||
|
|
2da7afc081 | ||
|
|
e5b341c63e | ||
|
|
a544888f16 | ||
|
|
57ad1d5366 | ||
|
|
42d66d1136 | ||
|
|
999cc9c651 | ||
|
|
9537051590 | ||
|
|
827372633d | ||
|
|
dcf0b15b2c | ||
|
|
c93bc0e457 | ||
|
|
1460a15942 | ||
|
|
15a07a4a18 | ||
|
|
e07a203d56 | ||
|
|
cead92b2c7 | ||
|
|
8d4ab2d7fb | ||
|
|
9bd2057237 | ||
|
|
5ec5f1aa93 | ||
|
|
5e10c9d416 | ||
|
|
881491d151 | ||
|
|
863159a5fe | ||
|
|
849943a0de | ||
|
|
b5abc23c9d | ||
|
|
c2b03a3fdc | ||
|
|
4e1d999838 | ||
|
|
4af971776f | ||
|
|
86d2788232 | ||
|
|
5654e3120d | ||
|
|
b4e7928622 | ||
|
|
25125f5a9b | ||
|
|
5d4b8a43e3 | ||
|
|
557cb1c532 | ||
|
|
5594395ac1 | ||
|
|
81b593c031 | ||
|
|
2a1ddf2573 | ||
|
|
fdb8da5767 | ||
|
|
738aa26a20 | ||
|
|
5e0ba2f4af | ||
|
|
91b2d1a9bf | ||
|
|
e636ceb317 | ||
|
|
2eeb230694 | ||
|
|
70cc6d07b0 | ||
|
|
4d5c2c83fd | ||
|
|
cf91bcbd49 | ||
|
|
18b19e964a | ||
|
|
bf1ace4791 | ||
|
|
dcd56a2d87 | ||
|
|
67c1db0fcc | ||
|
|
6027fff543 | ||
|
|
0c3c9fce2a | ||
|
|
78c2f82adf | ||
|
|
2d3b33bd9c | ||
|
|
dd6ae80817 | ||
|
|
304bfb5a40 | ||
|
|
58c1718d01 | ||
|
|
29fe5dab06 | ||
|
|
f9024e5500 | ||
|
|
25b77d1430 | ||
|
|
f9cfc8a2b8 | ||
|
|
8e74870857 | ||
|
|
b32e4005dd | ||
|
|
7094f3c848 | ||
|
|
c8adfbce96 | ||
|
|
ff94dd4d75 | ||
|
|
d61bb66418 | ||
|
|
b0f62f25e6 | ||
|
|
bdbc9b865b | ||
|
|
21c97571e0 | ||
|
|
8e92be9037 | ||
|
|
f6428b8857 | ||
|
|
db76ffe46a | ||
|
|
cb3b43cc48 | ||
|
|
587c63fc92 | ||
|
|
97fa8057ba | ||
|
|
d792956056 | ||
|
|
6a2bb7b01f | ||
|
|
edbced6642 | ||
|
|
8c0477f6bd | ||
|
|
4e00c4b015 | ||
|
|
42f0364319 | ||
|
|
a687aeb789 | ||
|
|
6ececea004 | ||
|
|
6570d23512 | ||
|
|
7ec3ab5a17 | ||
|
|
6af015cc05 | ||
|
|
7938e02e78 | ||
|
|
bac4bb8c8f | ||
|
|
5ac1c32652 | ||
|
|
dec5a2aaaf | ||
|
|
7b1c60c24f | ||
|
|
8b8d990852 | ||
|
|
6583cc0b5d | ||
|
|
5c3ae425ae | ||
|
|
744b1b2037 | ||
|
|
a313ca8a26 | ||
|
|
87204df3ee | ||
|
|
bc70c08820 | ||
|
|
2c2828617f | ||
|
|
70c6cd2e87 | ||
|
|
a8a629c5ef | ||
|
|
8e6dd98a5a | ||
|
|
39b8627a60 | ||
|
|
a451ad895c | ||
|
|
d13b69c36f | ||
|
|
2af988d71f | ||
|
|
63318f9b67 | ||
|
|
7f032edd6f | ||
|
|
aff5b8bed6 | ||
|
|
22a50eec60 | ||
|
|
d64f603e08 | ||
|
|
3d2c094056 | ||
|
|
64e99f613e | ||
|
|
51b4078288 | ||
|
|
db8d099fcc | ||
|
|
002be46915 | ||
|
|
9fa2691b02 | ||
|
|
df418c5a7d | ||
|
|
6686584003 | ||
|
|
78c8c57649 | ||
|
|
ca65fd31e5 | ||
|
|
e2109f2f56 | ||
|
|
6b63cd7a46 | ||
|
|
e19c857d74 | ||
|
|
b18f418c61 | ||
|
|
12ee38476c | ||
|
|
48c8357ff7 | ||
|
|
a0702559f3 | ||
|
|
55db91e53e | ||
|
|
a333fa3722 | ||
|
|
5284750c6a | ||
|
|
9c616fd03b | ||
|
|
d4bee41103 | ||
|
|
2e586c4403 | ||
|
|
129f21e3a9 | ||
|
|
435f15a450 | ||
|
|
3eac8cb6ad | ||
|
|
ea96bf2675 | ||
|
|
e4c3664cc6 | ||
|
|
664cd6a3a0 | ||
|
|
c26a9bd123 | ||
|
|
5008573aa5 | ||
|
|
395f7193ea | ||
|
|
775e17a726 | ||
|
|
900ec8db6a | ||
|
|
e23a7c213c | ||
|
|
96513e4967 | ||
|
|
b64df565a4 | ||
|
|
382e27e1e4 | ||
|
|
0dd95e736d | ||
|
|
0ae6a33971 | ||
|
|
380c9ab113 | ||
|
|
1028ade80d | ||
|
|
a8e34381ef | ||
|
|
5f5987cef2 |
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -21,7 +21,7 @@ assignees: ''
|
|||||||
|
|
||||||
If you remove the line above without reading it properly and understanding what it means, I will reap your soul. Even if you're playing on someone's server, you can still save the game to a slot.
|
If you remove the line above without reading it properly and understanding what it means, I will reap your soul. Even if you're playing on someone's server, you can still save the game to a slot.
|
||||||
|
|
||||||
**Crash report**: *The contents of relevant crash report files. REQUIRED if you are reporting a crash.*
|
**(Crash) logs**: *Either crash reports from the crash folder, or the file you get when you go into Settings -> Game Data -> Export Crash logs. REQUIRED if you are reporting a crash.*
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/push.yml
vendored
2
.github/workflows/push.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
java-version: 14
|
java-version: 14
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
run: ./gradlew test
|
run: ./gradlew clean cleanTest test
|
||||||
- name: Trigger BE build
|
- name: Trigger BE build
|
||||||
if: ${{ github.repository == 'Anuken/Mindustry' }}
|
if: ${{ github.repository == 'Anuken/Mindustry' }}
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
52
ISSUES.md
Normal file
52
ISSUES.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# Why was my issue closed?
|
||||||
|
|
||||||
|
This document goes over some common causes for issue closures.
|
||||||
|
|
||||||
|
## You did not fill in the template
|
||||||
|
|
||||||
|
I can't debug the problem unless you provide the information the template asks for.
|
||||||
|
If you cannot put in the effort to fill out a template, then don't expect me to put in the effort to fix it.
|
||||||
|
|
||||||
|
## Your issue was already reported
|
||||||
|
|
||||||
|
If the problem in your issue has already been encountered before, it will be closed - especially if your report doesn't provide any new information.
|
||||||
|
Make sure you search the *closed* issues before making an issue.
|
||||||
|
|
||||||
|
I do not link the specific issue(s) that report the same problem, because searching takes time - if you're interested in finding them, you should be able to do so without my help.
|
||||||
|
|
||||||
|
To be clear: I do **not** expect users to look at *all* previous issues, or do a comprehensive stack trace analysis to see if their crash was already reported.
|
||||||
|
|
||||||
|
## Your issue was already fixed
|
||||||
|
|
||||||
|
The problem you reported has been addressed. Note that this does **not** mean that the latest stable version of Mindustry has the fix!
|
||||||
|
It simply means that I have committed (or am about to commit) a patch that fixes it *on the current development branch*.
|
||||||
|
|
||||||
|
## Your issue is missing a crash report or log
|
||||||
|
|
||||||
|
If the game crashes without a specific cause, and you don't send me a log, I can't fix it. There is no way for me to know what went wrong.
|
||||||
|
|
||||||
|
During a normal crash, the game should tell you where the log is saved. If not, you should still be able to look in the game's crash folder on most operating systems, or export the logs in *Settings -> Game Data -> Export Crash Logs*.
|
||||||
|
|
||||||
|
## Your issue is missing saves or screenshots
|
||||||
|
|
||||||
|
Even if you think your problem happens everywhere and saves/screenshots are redundant, this is frequently not the case.
|
||||||
|
If I cannot reproduce the problem on my own saves and you have not linked any of your own, then the problem is likely to be save-specific. If you do not send me any, the problem cannot be investigated further.
|
||||||
|
|
||||||
|
## Your issue is related to an external program
|
||||||
|
|
||||||
|
If Mindustry causes something else to crash or misbehave, I am very unlikely to fix it. Unless the problem is serious, widespread and/or clearly a bug *in Mindustry*, it is not my responsibility.
|
||||||
|
|
||||||
|
Similarly, if you use another (invasive) program to change how Mindustry works, and something goes wrong, that is not my problem. Don't do it.
|
||||||
|
|
||||||
|
## Your issue is caused by mods
|
||||||
|
|
||||||
|
Crashes and bugs related to installed mods should be reported in the relevant mod repository, not here.
|
||||||
|
*Note that problems with the Mindustry modding API are a separate problem, and do not apply.*
|
||||||
|
|
||||||
|
## I cannot reproduce your issue
|
||||||
|
|
||||||
|
If I follow your instructions and am repeatedly unable to reproduce the problem you've reported, then it is very unlikely to be fixed.
|
||||||
|
Either the problem is device-specific, or there is not enough information given for me to be able to reproduce it.
|
||||||
|
|
||||||
|
I may attempt to change some code if I think it will make the issue less likely to occur, but without knowing for sure, the issue cannot be considered truly "fixed".
|
||||||
|
As I cannot make any further progress on the problem, there is no reason to keep it open. If it is a common bug/crash, other people will come along with information that may shed some light on the issue.
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
### Adding a server to the list
|
### Adding a server to the list
|
||||||
|
|
||||||
Mindustry now has a public list of servers that everyone can see and connect to.
|
Mindustry now has a public list of servers that everyone can see and connect to.
|
||||||
This is done by letting clients `GET` a [JSON list of servers](https://github.com/Anuken/Mindustry/blob/master/servers.json) in this repository.
|
This is done by letting clients `GET` a [JSON list of servers](https://github.com/Anuken/Mindustry/blob/master/servers_v6.json) in this repository.
|
||||||
|
|
||||||
You may want to add your server to this list. The steps for getting this done are as follows:
|
You may want to add your server to this list. The steps for getting this done are as follows:
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ You'll need to either hire some moderators, or make use of (currently non-existe
|
|||||||
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.
|
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. **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`).
|
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. Finally, **submit a pull request** to add your server's IP to the list.
|
5. 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.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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -253,18 +253,22 @@ project(":ios"){
|
|||||||
|
|
||||||
task incrementConfig{
|
task incrementConfig{
|
||||||
def vfile = file('robovm.properties')
|
def vfile = file('robovm.properties')
|
||||||
|
def bversion = getBuildVersion()
|
||||||
def props = new Properties()
|
def props = new Properties()
|
||||||
if(vfile.exists()){
|
if(vfile.exists()){
|
||||||
props.load(new FileInputStream(vfile))
|
props.load(new FileInputStream(vfile))
|
||||||
}else{
|
}else{
|
||||||
props['app.id'] = 'io.anuke.mindustry'
|
props['app.id'] = 'io.anuke.mindustry'
|
||||||
props['app.version'] = '5.0'
|
props['app.version'] = '6.0'
|
||||||
props['app.mainclass'] = 'mindustry.IOSLauncher'
|
props['app.mainclass'] = 'mindustry.IOSLauncher'
|
||||||
props['app.executable'] = 'IOSLauncher'
|
props['app.executable'] = 'IOSLauncher'
|
||||||
props['app.name'] = 'Mindustry'
|
props['app.name'] = 'Mindustry'
|
||||||
}
|
}
|
||||||
|
|
||||||
props['app.build'] = (!props.containsKey("app.build") ? 40 : props['app.build'].toInteger() + 1) + ""
|
props['app.build'] = (!props.containsKey("app.build") ? 40 : props['app.build'].toInteger() + 1) + ""
|
||||||
|
if(bversion != "custom build"){
|
||||||
|
props['app.version'] = versionNumber + "." + bversion + (bversion.contains(".") ? "" : ".0")
|
||||||
|
}
|
||||||
props.store(vfile.newWriter(), null)
|
props.store(vfile.newWriter(), null)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -379,7 +383,6 @@ project(":annotations"){
|
|||||||
dependencies{
|
dependencies{
|
||||||
implementation 'com.squareup:javapoet:1.12.1'
|
implementation 'com.squareup:javapoet:1.12.1'
|
||||||
implementation "com.github.Anuken.Arc:arc-core:$arcHash"
|
implementation "com.github.Anuken.Arc:arc-core:$arcHash"
|
||||||
implementation files("${System.getProperty('java.home')}/../lib/tools.jar")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -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 = Official Mindustry wiki
|
link.wiki.description = Official Mindustry wiki
|
||||||
link.suggestions.description = Suggest new features
|
link.suggestions.description = Suggest new features
|
||||||
|
link.bug.description = Found one? Report it here
|
||||||
linkfail = Failed to open link!\nThe URL has been copied to your clipboard.
|
linkfail = Failed to open link!\nThe URL has been copied to your clipboard.
|
||||||
screenshot = Screenshot saved to {0}
|
screenshot = Screenshot saved to {0}
|
||||||
screenshot.invalid = Map too large, potentially not enough memory for screenshot.
|
screenshot.invalid = Map too large, potentially not enough memory for screenshot.
|
||||||
@@ -69,7 +70,7 @@ stat.delivered = Resources Launched:
|
|||||||
stat.playtime = Time Played:[accent] {0}
|
stat.playtime = Time Played:[accent] {0}
|
||||||
stat.rank = Final Rank: [accent]{0}
|
stat.rank = Final Rank: [accent]{0}
|
||||||
|
|
||||||
globalitems = [accent]Global Items
|
globalitems = [accent]Total Items
|
||||||
map.delete = Are you sure you want to delete the map "[accent]{0}[]"?
|
map.delete = Are you sure you want to delete the map "[accent]{0}[]"?
|
||||||
level.highscore = High Score: [accent]{0}
|
level.highscore = High Score: [accent]{0}
|
||||||
level.select = Level Select
|
level.select = Level Select
|
||||||
@@ -196,6 +197,7 @@ servers.local = Local Servers
|
|||||||
servers.remote = Remote Servers
|
servers.remote = Remote Servers
|
||||||
servers.global = Community Servers
|
servers.global = Community Servers
|
||||||
|
|
||||||
|
servers.disclaimer = Community servers are [accent]not[] owned or controlled by the developer.\n\nServers may contain user-generated content that is not appropriate for all ages.
|
||||||
servers.showhidden = Show Hidden Servers
|
servers.showhidden = Show Hidden Servers
|
||||||
server.shown = Shown
|
server.shown = Shown
|
||||||
server.hidden = Hidden
|
server.hidden = Hidden
|
||||||
@@ -831,6 +833,7 @@ setting.chatopacity.name = Chat Opacity
|
|||||||
setting.lasersopacity.name = Power Laser Opacity
|
setting.lasersopacity.name = Power Laser Opacity
|
||||||
setting.bridgeopacity.name = Bridge Opacity
|
setting.bridgeopacity.name = Bridge Opacity
|
||||||
setting.playerchat.name = Display Player Bubble Chat
|
setting.playerchat.name = Display Player Bubble Chat
|
||||||
|
setting.showweather.name = Show Weather Graphics
|
||||||
public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility.
|
public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility.
|
||||||
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...
|
||||||
@@ -1279,6 +1282,10 @@ hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a pay
|
|||||||
hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires.
|
hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires.
|
||||||
hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[].
|
hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[].
|
||||||
hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down.
|
hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down.
|
||||||
|
hint.coreUpgrade = Cores can be upgraded by [accent]placing higher-tier cores over them[].\n\nPlace a [accent]Foundation[] core over the [accent]Shard[] core. Make sure it is free from nearby obstructions.
|
||||||
|
hint.presetLaunch = Gray [accent]landing zone sectors[], such as [accent]Frozen Forest[], can be launched to from anywhere. They do not require capture of nearby territory.\n\n[accent]Numbered sectors[], such as this one, are [accent]optional[].
|
||||||
|
hint.coreIncinerate = After the core is filled to capacity with an item, any extra items of that type it receives will be [accent]incinerated[].
|
||||||
|
hint.coopCampaign = When playing the [accent]co-op campaign[], items that are produced in the current map will also be sent [accent]to your local sectors[].\n\nAny new research done by the host also carries over.
|
||||||
|
|
||||||
item.copper.description = Used in all types of construction and ammunition.
|
item.copper.description = Used in all types of construction and ammunition.
|
||||||
item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced.
|
item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced.
|
||||||
@@ -1473,7 +1480,7 @@ unit.zenith.description = Fires salvos of missiles at all nearby enemies.
|
|||||||
unit.antumbra.description = Fires a barrage of bullets at all nearby enemies.
|
unit.antumbra.description = Fires a barrage of bullets at all nearby enemies.
|
||||||
unit.eclipse.description = Fires two piercing lasers and a barrage of flak at all nearby enemies.
|
unit.eclipse.description = Fires two piercing lasers and a barrage of flak at all nearby enemies.
|
||||||
unit.mono.description = Automatically mines copper and lead, depositing it into the core.
|
unit.mono.description = Automatically mines copper and lead, depositing it into the core.
|
||||||
unit.poly.description = Automatically rebuilds damaged structures and assists other units in construction.
|
unit.poly.description = Automatically rebuilds destroyed structures and assists other units in construction.
|
||||||
unit.mega.description = Automatically repairs damaged structures. Capable of carrying blocks and small ground units.
|
unit.mega.description = Automatically repairs damaged structures. Capable of carrying blocks and small ground units.
|
||||||
unit.quad.description = Drops large bombs on ground targets, repairing allied structures and damaging enemies. Capable of carrying medium-sized ground units.
|
unit.quad.description = Drops large bombs on ground targets, repairing allied structures and damaging enemies. Capable of carrying medium-sized ground units.
|
||||||
unit.oct.description = Protects nearby allies with its regenerating shield. Capable of carrying most ground units.
|
unit.oct.description = Protects nearby allies with its regenerating shield. Capable of carrying most ground units.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
credits.text = Стваральнiк [royal]Anuken[] — [sky]anukendev@gmail.com[]\n\nЁсць недапрацоўкі ў перакладзе або хочаце знайсці саюзнікаў для сумеснай гульні?\nПішыце ў аф. [accent]discord-сервер Mindustry[] у канал [accent]#translations[].\n\nРэдактар і перакладчык на беларускую мову:\n[cyan]K[gray]evi[cyan]TV[gray]#9923
|
credits.text = Стваральнiк [royal]Anuken[] — [sky]anukendev@gmail.com[]\n\nЁсць недапрацоўкі ў перакладзе або хочаце знайсці саюзнікаў для сумеснай гульні?\nПішыце ў аф. [accent]discord-сервер Mindustry[] у канал [accent]#translations[].\n\nРэдактар і перакладчык на беларускую мову:\n[cyan]K[gray]evi[cyan]TV[gray]#9923\nVit_log выправіў памылкі і дапоўніў пераклад.
|
||||||
credits = Аўтары
|
credits = Аўтары
|
||||||
contributors = Перакладчык
|
contributors = Перакладчык
|
||||||
discord = Далучайцеся да нашага Discord!
|
discord = Далучайцеся да нашага Discord!
|
||||||
@@ -20,8 +20,8 @@ gameover = Гульня скончана
|
|||||||
gameover.pvp = [accent]{0}[] каманда перамагла!
|
gameover.pvp = [accent]{0}[] каманда перамагла!
|
||||||
highscore = [accent]Новы рэкорд!
|
highscore = [accent]Новы рэкорд!
|
||||||
copied = Скапіявана.
|
copied = Скапіявана.
|
||||||
indev.popup = [accent]v6[] is currently in [accent]alpha[].\n[lightgray]This means:[]\n[scarlet]- The campaign is completely unfinished[]\n- Content is missing\n - Most [scarlet]Unit AI[] does not work properly\n- Many units are unfinished\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[].
|
indev.popup = [accent]в6[] яшчэ в [accent]альфе[].\n[lightgray]Гэта значыць:[]\n[scarlet]- Кампанія не завершана[]\n- Часткі гульні адсутнічаюць\n - Большая частка [scarlet]ШІ юнітав[] можа працаваць не правільна\n- Мноства юнітав не дароблена\n- Ўсё што тут ёсць можа быць ізменена.\n\nАб багах і крашах пісаць на [accent]Github[].
|
||||||
indev.notready = This part of the game isn't ready yet
|
indev.notready = Гэта частка гульні яшчэ не зроблена.
|
||||||
|
|
||||||
load.sound = Звукі
|
load.sound = Звукі
|
||||||
load.map = Карты
|
load.map = Карты
|
||||||
@@ -41,8 +41,8 @@ be.check = Праверыць абнаўленні
|
|||||||
schematic = Схема
|
schematic = Схема
|
||||||
schematic.add = Захаваць схему...
|
schematic.add = Захаваць схему...
|
||||||
schematics = Схемы
|
schematics = Схемы
|
||||||
schematic.replace = A schematic by that name already exists. Replace it?
|
schematic.replace = Схема с данным імем ўжо існуе. Замяніць яе?
|
||||||
schematic.exists = A schematic by that name already exists.
|
schematic.exists = Схема с данным імем ўжо існуе.
|
||||||
schematic.import = Імпартаваць схему...
|
schematic.import = Імпартаваць схему...
|
||||||
schematic.exportfile = Экспартаваць файл
|
schematic.exportfile = Экспартаваць файл
|
||||||
schematic.importfile = Імпартаваць файл
|
schematic.importfile = Імпартаваць файл
|
||||||
@@ -55,7 +55,7 @@ schematic.saved = Схема захавана.
|
|||||||
schematic.delete.confirm = Гэтая схема будзе выдалена.
|
schematic.delete.confirm = Гэтая схема будзе выдалена.
|
||||||
schematic.rename = Перайменаваць схему
|
schematic.rename = Перайменаваць схему
|
||||||
schematic.info = {0}x{1}, {2} блокаў
|
schematic.info = {0}x{1}, {2} блокаў
|
||||||
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server.
|
schematic.disabled = [scarlet]Схемы забаронены[]\nВам нельга выкарыстоўваць схемы на гэтай [accent]карце[] альбо [accent]серверы.
|
||||||
|
|
||||||
stat.wave = Хваляў адлюстравана:[accent] {0}
|
stat.wave = Хваляў адлюстравана:[accent] {0}
|
||||||
stat.enemiesDestroyed = Ворагаў знішчана:[accent] {0}
|
stat.enemiesDestroyed = Ворагаў знішчана:[accent] {0}
|
||||||
@@ -103,19 +103,19 @@ feature.unsupported = Ваша прылада не падтрымлівае гэ
|
|||||||
mods.alphainfo = Майце на ўвазе, што мадыфікацыі знаходзяцца ў альфа-версіі і [scarlet]могуць утрымліваць шмат памылак[]. Дакладвайце аб любых праблемах, якія Вы знойдзеце ў Mindustry Github або Discord.
|
mods.alphainfo = Майце на ўвазе, што мадыфікацыі знаходзяцца ў альфа-версіі і [scarlet]могуць утрымліваць шмат памылак[]. Дакладвайце аб любых праблемах, якія Вы знойдзеце ў Mindustry Github або Discord.
|
||||||
mods = Мадыфікацыі
|
mods = Мадыфікацыі
|
||||||
mods.none = [lightgray]Мадыфікацыі не знойдзены!
|
mods.none = [lightgray]Мадыфікацыі не знойдзены!
|
||||||
mods.guide = Кіраўніцтва па модам
|
mods.guide = Кіраўніцтва па мадам
|
||||||
mods.report = Паведаміць пра памылку
|
mods.report = Паведаміць пра памылку
|
||||||
mods.openfolder = Адкрыць тэчку з мадыфікацыямі
|
mods.openfolder = Адкрыць тэчку з мадыфікацыямі
|
||||||
mods.reload = Reload
|
mods.reload = Reload
|
||||||
mods.reloadexit = The game will now exit, to reload mods.
|
mods.reloadexit = Гульня зараз закроецца, каб ўсталяваць мады.
|
||||||
mod.display = [gray]Мадыфікацыя:[orange] {0}
|
mod.display = [gray]Мадыфікацыя:[orange] {0}
|
||||||
mod.enabled = [lightgray]Уключана
|
mod.enabled = [lightgray]Уключана
|
||||||
mod.disabled = [scarlet]Выключана
|
mod.disabled = [scarlet]Выключана
|
||||||
mod.disable = Выкл.
|
mod.disable = Выкл.
|
||||||
mod.content = Content:
|
mod.content = Змест:
|
||||||
mod.delete.error = Немагчыма выдаліць мадыфікацыю. Магчыма, файл выкарыстоўваецца.
|
mod.delete.error = Немагчыма выдаліць мадыфікацыю. Магчыма, файл выкарыстоўваецца.
|
||||||
mod.requiresversion = [scarlet]Мінімальная патрабаваная версія гульні: [accent]{0}
|
mod.requiresversion = [scarlet]Мінімальная патрабаваная версія гульні: [accent]{0}
|
||||||
mod.outdated = [scarlet]Not compatible with V6 (no minGameVersion: 105)
|
mod.outdated = [scarlet]Не сумяшчальна з в6 (няма minGameVersion: 105)
|
||||||
mod.missingdependencies = [scarlet]Не знойдзены бацькоўскія мадыфікацыі: {0}
|
mod.missingdependencies = [scarlet]Не знойдзены бацькоўскія мадыфікацыі: {0}
|
||||||
mod.erroredcontent = [scarlet]Памылкі змесціва
|
mod.erroredcontent = [scarlet]Памылкі змесціва
|
||||||
mod.errors = Памылкі былі выкліканыя загружаным змесцівам.
|
mod.errors = Памылкі былі выкліканыя загружаным змесцівам.
|
||||||
@@ -127,20 +127,20 @@ mod.reloadrequired = [scarlet]Неабходны перазапуск
|
|||||||
mod.import = Імпартаваць мадыфікацыю
|
mod.import = Імпартаваць мадыфікацыю
|
||||||
mod.import.file = Import File
|
mod.import.file = Import File
|
||||||
mod.import.github = Імпартаваць мод з GitHub
|
mod.import.github = Імпартаваць мод з GitHub
|
||||||
mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source!
|
mod.jarwarn = [scarlet]JAR-мады не бяспечны па прынцыпу.[]\nПраверце, што імпартуеце гэты мод с надзейнай крыніцы!
|
||||||
mod.item.remove = Гэты прадмет з’яўляецца часткай мадыфікацыі [accent]«{0}»[]. Каб выдаліць яго, выдаліце саму мадыфікацыю.
|
mod.item.remove = Гэты прадмет з’яўляецца часткай мадыфікацыі [accent]«{0}»[]. Каб выдаліць яго, выдаліце саму мадыфікацыю.
|
||||||
mod.remove.confirm = Гэтая мадыфікацыя будзе выдалена.
|
mod.remove.confirm = Гэтая мадыфікацыя будзе выдалена.
|
||||||
mod.author = [lightgray]Аўтар:[] {0}
|
mod.author = [lightgray]Аўтар:[] {0}
|
||||||
mod.missing = Гэта захаванне ўтрымлівае мадыфікацыю, якое вы нядаўна абнавілі ці яна больш не ўсталяваная. Можа здарыцца пашкоджанне захавання. Вы ўпэўненыя, што хочаце загрузіць яго?\n[lightgray]Мадыфікацыі:\n{0}
|
mod.missing = Гэта захаванне ўтрымлівае мадыфікацыю, якое вы нядаўна абнавілі ці яна больш не ўсталяваная. Можа здарыцца пашкоджанне захавання. Вы ўпэўненыя, што хочаце загрузіць яго?\n[lightgray]Мадыфікацыі:\n{0}
|
||||||
mod.preview.missing = Перад публікацыяй гэтай мадыфікацыі ў майстэрні, вы павінны дадаць малюнак прадпрагляду.\nРазмесціце малюнак з імем[accent] preview.png[] у тэчцы мадыфікацыі і паспрабуйце зноў.
|
mod.preview.missing = Перад публікацыяй гэтай мадыфікацыі ў майстэрні, вы павінны дадаць малюнак прадпрагляду.\nРазмесціце малюнак з імем[accent] preview.png[] у тэчцы мадыфікацыі і паспрабуйце зноў.
|
||||||
mod.folder.missing = Мадыфікацыі могуць быць апублікаваныя ў майстэрні толькі ў выглядзе тэчкі.\nКаб канвертаваць любы мод у тэчку, проста выміце яго з архіва і выдаліце стары архіў .zip, затым перазапусціце гульню ці перазагрузіце мадыфікацыі.
|
mod.folder.missing = Мадыфікацыі могуць быць апублікаваныя ў майстэрні толькі ў выглядзе тэчкі.\nКаб канвертаваць любы мод у тэчку, проста выміце яго з архіва і выдаліце стары архіў .zip, затым перазапусціце гульню ці перазагрузіце мадыфікацыі.
|
||||||
mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game.
|
mod.scripts.disable = Ваша прылада не падтрымлівае мадыфікацыі з скріптамі. Выключайце такіе мады, как гуляць.
|
||||||
|
|
||||||
about.button = Аб гульні
|
about.button = Аб гульні
|
||||||
name = Імя:
|
name = Імя:
|
||||||
noname = Для пачатку, прыдумайце[accent] сабе iмя[].
|
noname = Для пачатку, прыдумайце[accent] сабе iмя[].
|
||||||
planetmap = Planet Map
|
planetmap = Карта планеты
|
||||||
launchcore = Launch Core
|
launchcore = Запусціць ядро
|
||||||
filename = Iмя файла:
|
filename = Iмя файла:
|
||||||
unlocked = Новы кантэнт адмыкнуты!
|
unlocked = Новы кантэнт адмыкнуты!
|
||||||
completed = [accent]Завершаны
|
completed = [accent]Завершаны
|
||||||
@@ -148,11 +148,11 @@ techtree = Дрэва\n тэхналогій
|
|||||||
research.list = [lightgray]Дасьледуйце:
|
research.list = [lightgray]Дасьледуйце:
|
||||||
research = Даследаваць
|
research = Даследаваць
|
||||||
researched = [lightgray] {0} даследавана.
|
researched = [lightgray] {0} даследавана.
|
||||||
research.progress = {0}% complete
|
research.progress = {0}% завершана
|
||||||
players = Гульцоў: {0}
|
players = Гульцоў: {0}
|
||||||
players.single = {0} гулец
|
players.single = {0} гулец
|
||||||
players.search = search
|
players.search = search
|
||||||
players.notfound = [gray]no players found
|
players.notfound = [gray]гульцоу не знойдзена
|
||||||
server.closing = [accent]Закрыццё сервера…
|
server.closing = [accent]Закрыццё сервера…
|
||||||
server.kicked.kick = Вас выгналі з сервера!
|
server.kicked.kick = Вас выгналі з сервера!
|
||||||
server.kicked.whitelist = Вы не ў белым спісе сервера.
|
server.kicked.whitelist = Вы не ў белым спісе сервера.
|
||||||
@@ -278,7 +278,7 @@ quit.confirm.tutorial = Вы ўпэўненыя, што ведаеце, што
|
|||||||
loading = [accent]Загрузка…
|
loading = [accent]Загрузка…
|
||||||
reloading = [accent]Перазагрузка мадыфікацый...
|
reloading = [accent]Перазагрузка мадыфікацый...
|
||||||
saving = [accent]Захаванне…
|
saving = [accent]Захаванне…
|
||||||
respawn = [accent][[{0}][] to respawn in core
|
respawn = [accent][[{0}][] да вазраджэння з ядра
|
||||||
cancelbuilding = [accent][[{0}][] для ачысткі плана
|
cancelbuilding = [accent][[{0}][] для ачысткі плана
|
||||||
selectschematic = [accent][[{0}][] вылучыць і скапіяваць
|
selectschematic = [accent][[{0}][] вылучыць і скапіяваць
|
||||||
pausebuilding = [accent][[{0}][] для прыпынення будаўніцтва
|
pausebuilding = [accent][[{0}][] для прыпынення будаўніцтва
|
||||||
@@ -291,8 +291,8 @@ waiting = [lightgray]Чаканне…
|
|||||||
waiting.players = Чаканне гульцоў…
|
waiting.players = Чаканне гульцоў…
|
||||||
wave.enemies = Ворагаў: [lightgray]{0}
|
wave.enemies = Ворагаў: [lightgray]{0}
|
||||||
wave.enemy = Застаўся [lightgray]{0}[] ворагаў
|
wave.enemy = Застаўся [lightgray]{0}[] ворагаў
|
||||||
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves.
|
wave.guardianwarn = Вартаўнік будзе пасля [accent]{0}[] хвалей.
|
||||||
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave.
|
wave.guardianwarn.one = Вартаўнік будзе пасля [accent]{0}[] хвалі.
|
||||||
loadimage = Загрузіць малюнак
|
loadimage = Загрузіць малюнак
|
||||||
saveimage = Захаваць малюнак
|
saveimage = Захаваць малюнак
|
||||||
unknown = Невядома
|
unknown = Невядома
|
||||||
@@ -339,9 +339,9 @@ waves.never = <ніколі>
|
|||||||
waves.every = кожны
|
waves.every = кожны
|
||||||
waves.waves = хваля (ы)
|
waves.waves = хваля (ы)
|
||||||
waves.perspawn = за з’яўленне
|
waves.perspawn = за з’яўленне
|
||||||
waves.shields = shields/wave
|
waves.shields = адзінак шчыта/хвалю
|
||||||
waves.to = да
|
waves.to = да
|
||||||
waves.guardian = Guardian
|
waves.guardian = Вартаўнік
|
||||||
waves.preview = Папярэдні прагляд
|
waves.preview = Папярэдні прагляд
|
||||||
waves.edit = Рэдагавацью...
|
waves.edit = Рэдагавацью...
|
||||||
waves.copy = Капіяваць у буфер абмену
|
waves.copy = Капіяваць у буфер абмену
|
||||||
@@ -350,9 +350,9 @@ waves.invalid = Няслушныя хвалі ў буферы абмену.
|
|||||||
waves.copied = Хвалі скапіяваныя.
|
waves.copied = Хвалі скапіяваныя.
|
||||||
waves.none = Ворагі не былі вызначаныя. \nЗвярнiце ўвагу, што пустыя хвалі будуць аўтаматычна замененыя звычайнай хваляй.
|
waves.none = Ворагі не былі вызначаныя. \nЗвярнiце ўвагу, што пустыя хвалі будуць аўтаматычна замененыя звычайнай хваляй.
|
||||||
|
|
||||||
wavemode.counts = counts
|
wavemode.counts = колькацсь адзінак
|
||||||
wavemode.totals = totals
|
wavemode.totals = усяго здароўя
|
||||||
wavemode.health = health
|
wavemode.health = здароўе
|
||||||
|
|
||||||
editor.default = [lightgray]<Па змаўчанні>
|
editor.default = [lightgray]<Па змаўчанні>
|
||||||
details = Падрабязнасці...
|
details = Падрабязнасці...
|
||||||
@@ -508,11 +508,11 @@ error.io = Сеткавая памылка ўводу-высновы.
|
|||||||
error.any = Невядомая сеткавая памылка.
|
error.any = Невядомая сеткавая памылка.
|
||||||
error.bloom = Не атрымалася ініцыялізаваць свячэнне (Bloom). \nМагчыма, зараз Вашая прылада не падтрымлівае яго.
|
error.bloom = Не атрымалася ініцыялізаваць свячэнне (Bloom). \nМагчыма, зараз Вашая прылада не падтрымлівае яго.
|
||||||
|
|
||||||
weather.rain.name = Rain
|
weather.rain.name = Дождж
|
||||||
weather.snow.name = Snow
|
weather.snow.name = Снег
|
||||||
weather.sandstorm.name = Sandstorm
|
weather.sandstorm.name = Пясочныя бурі
|
||||||
weather.sporestorm.name = Sporestorm
|
weather.sporestorm.name = Споравыя бурі
|
||||||
weather.fog.name = Fog
|
weather.fog.name = Туман
|
||||||
|
|
||||||
sectors.unexplored = [lightgray]Unexplored
|
sectors.unexplored = [lightgray]Unexplored
|
||||||
sectors.resources = Resources:
|
sectors.resources = Resources:
|
||||||
@@ -891,9 +891,9 @@ rules.enemyLights = Enemy Lights
|
|||||||
rules.fire = Fire
|
rules.fire = Fire
|
||||||
rules.explosions = Block/Unit Explosion Damage
|
rules.explosions = Block/Unit Explosion Damage
|
||||||
rules.ambientlight = Навакольны свет
|
rules.ambientlight = Навакольны свет
|
||||||
rules.weather = Weather
|
rules.weather = Надвор'е
|
||||||
rules.weather.frequency = Frequency:
|
rules.weather.frequency = Частата:
|
||||||
rules.weather.duration = Duration:
|
rules.weather.duration = Працягласць:
|
||||||
|
|
||||||
content.item.name = Рэчывы
|
content.item.name = Рэчывы
|
||||||
content.liquid.name = Вадкасці
|
content.liquid.name = Вадкасці
|
||||||
@@ -922,62 +922,62 @@ liquid.oil.name = Нафта
|
|||||||
liquid.cryofluid.name = Крыягенная вадкасць
|
liquid.cryofluid.name = Крыягенная вадкасць
|
||||||
|
|
||||||
unit.dagger.name = Кінжал
|
unit.dagger.name = Кінжал
|
||||||
unit.mace.name = Mace
|
unit.mace.name = Булава
|
||||||
unit.fortress.name = Крэпасць
|
unit.fortress.name = Крэпасць
|
||||||
unit.nova.name = Nova
|
unit.nova.name = Нова
|
||||||
unit.pulsar.name = Pulsar
|
unit.pulsar.name = Пульсар
|
||||||
unit.quasar.name = Quasar
|
unit.quasar.name = Квазар
|
||||||
unit.crawler.name = Камікадзэ
|
unit.crawler.name = Палзун
|
||||||
unit.atrax.name = Atrax
|
unit.atrax.name = Атракс
|
||||||
unit.spiroct.name = Spiroct
|
unit.spiroct.name = Спірокт
|
||||||
unit.arkyid.name = Arkyid
|
unit.arkyid.name = Аркід
|
||||||
unit.toxopid.name = Toxopid
|
unit.toxopid.name = Токсопойд
|
||||||
unit.flare.name = Flare
|
unit.flare.name = Успышка
|
||||||
unit.horizon.name = Horizon
|
unit.horizon.name = Гарызонт
|
||||||
unit.zenith.name = Zenith
|
unit.zenith.name = Зеніт
|
||||||
unit.antumbra.name = Antumbra
|
unit.antumbra.name = Зацемь
|
||||||
unit.eclipse.name = Eclipse
|
unit.eclipse.name = Затменне
|
||||||
unit.mono.name = Mono
|
unit.mono.name = Моно
|
||||||
unit.poly.name = Poly
|
unit.poly.name = Полі
|
||||||
unit.mega.name = Mega
|
unit.mega.name = Мега
|
||||||
unit.quad.name = Quad
|
unit.quad.name = Квад
|
||||||
unit.oct.name = Oct
|
unit.oct.name = Окт
|
||||||
unit.risso.name = Risso
|
unit.risso.name = Ріссо
|
||||||
unit.minke.name = Minke
|
unit.minke.name = Мінкі
|
||||||
unit.bryde.name = Bryde
|
unit.bryde.name = Брайд
|
||||||
unit.sei.name = Sei
|
unit.sei.name = Сэй
|
||||||
unit.omura.name = Omura
|
unit.omura.name = Амура
|
||||||
unit.alpha.name = Alpha
|
unit.alpha.name = Альфа
|
||||||
unit.beta.name = Beta
|
unit.beta.name = Бэта
|
||||||
unit.gamma.name = Gamma
|
unit.gamma.name = Гамма
|
||||||
unit.scepter.name = Scepter
|
unit.scepter.name = Скіпетр
|
||||||
unit.reign.name = Reign
|
unit.reign.name = Улада
|
||||||
unit.vela.name = Vela
|
unit.vela.name = Ветразь
|
||||||
unit.corvus.name = Corvus
|
unit.corvus.name = Корвус
|
||||||
|
|
||||||
block.resupply-point.name = Resupply Point
|
block.resupply-point.name = Цэнтр аммуніцыі
|
||||||
block.parallax.name = Parallax
|
block.parallax.name = Парралакс
|
||||||
block.cliff.name = Скала
|
block.cliff.name = Скала
|
||||||
block.sand-boulder.name = Пяшчаны валун
|
block.sand-boulder.name = Пяшчаны валун
|
||||||
block.grass.name = Трава
|
block.grass.name = Трава
|
||||||
block.slag.name = Шлак
|
block.slag.name = Шлак
|
||||||
block.space.name = Space
|
block.space.name = Space
|
||||||
block.salt.name = Соль
|
block.salt.name = Соль
|
||||||
block.salt-wall.name = Salt Wall
|
block.salt-wall.name = Саляная сцяна
|
||||||
block.pebbles.name = Галька
|
block.pebbles.name = Галька
|
||||||
block.tendrils.name = Споравыя вусікі
|
block.tendrils.name = Споравыя вусікі
|
||||||
block.sand-wall.name = Sand Wall
|
block.sand-wall.name = Пяшчаная сцяна
|
||||||
block.spore-pine.name = Спорава хвоя
|
block.spore-pine.name = Спорава хвоя
|
||||||
block.spore-wall.name = Spore Wall
|
block.spore-wall.name = Споравая сцяна
|
||||||
block.boulder.name = Boulder
|
block.boulder.name = Boulder
|
||||||
block.snow-boulder.name = Snow Boulder
|
block.snow-boulder.name = Снежны валун
|
||||||
block.snow-pine.name = Заснежаная хвоя
|
block.snow-pine.name = Заснежаная хвоя
|
||||||
block.shale.name = Сланец
|
block.shale.name = Сланец
|
||||||
block.shale-boulder.name = Сланцавы валун
|
block.shale-boulder.name = Сланцавы валун
|
||||||
block.moss.name = Мох
|
block.moss.name = Мох
|
||||||
block.shrubs.name = Кусты
|
block.shrubs.name = Кусты
|
||||||
block.spore-moss.name = Спорава мох
|
block.spore-moss.name = Спорава мох
|
||||||
block.shale-wall.name = Shale Wall
|
block.shale-wall.name = Сланцавая сцяна
|
||||||
block.scrap-wall.name = Сцяна з металалому
|
block.scrap-wall.name = Сцяна з металалому
|
||||||
block.scrap-wall-large.name = Вялікая сцяна з металалому
|
block.scrap-wall-large.name = Вялікая сцяна з металалому
|
||||||
block.scrap-wall-huge.name = Велізарная сцяна з металалому
|
block.scrap-wall-huge.name = Велізарная сцяна з металалому
|
||||||
@@ -1005,18 +1005,18 @@ block.craters.name = Кратэры
|
|||||||
block.sand-water.name = Пясок з вадой
|
block.sand-water.name = Пясок з вадой
|
||||||
block.darksand-water.name = Тёмный пясок з вадой
|
block.darksand-water.name = Тёмный пясок з вадой
|
||||||
block.char.name = Выпаленая зямля
|
block.char.name = Выпаленая зямля
|
||||||
block.dacite.name = Dacite
|
block.dacite.name = Дацыт
|
||||||
block.dacite-wall.name = Dacite Wall
|
block.dacite-wall.name = Дацытавая сцяна
|
||||||
block.dacite-boulder.name = Dacite Boulder
|
block.dacite-boulder.name = Дацытавы валун
|
||||||
block.ice-snow.name = Заснежаны лёд
|
block.ice-snow.name = Заснежаны лёд
|
||||||
block.stone-wall.name = Stone Wall
|
block.stone-wall.name = Каменная сцяна
|
||||||
block.ice-wall.name = Ice Wall
|
block.ice-wall.name = Лядовая сцяна
|
||||||
block.snow-wall.name = Snow Wall
|
block.snow-wall.name = Снежная сцяна
|
||||||
block.dune-wall.name = Dune Wall
|
block.dune-wall.name = Тёмнапясчаная сцяна
|
||||||
block.pine.name = Сасна
|
block.pine.name = Сасна
|
||||||
block.dirt.name = Dirt
|
block.dirt.name = Зямля
|
||||||
block.dirt-wall.name = Dirt Wall
|
block.dirt-wall.name = Брудная сцяна
|
||||||
block.mud.name = Mud
|
block.mud.name = Бруд
|
||||||
block.white-tree-dead.name = Мёртвае белае дрэва
|
block.white-tree-dead.name = Мёртвае белае дрэва
|
||||||
block.white-tree.name = Белае дрэва
|
block.white-tree.name = Белае дрэва
|
||||||
block.spore-cluster.name = Навала спрэчка
|
block.spore-cluster.name = Навала спрэчка
|
||||||
@@ -1147,28 +1147,28 @@ block.container.name = Кантэйнер
|
|||||||
block.launch-pad.name = Пускавая пляцоўка
|
block.launch-pad.name = Пускавая пляцоўка
|
||||||
block.launch-pad-large.name = Вялікая пускавая пляцоўка
|
block.launch-pad-large.name = Вялікая пускавая пляцоўка
|
||||||
block.segment.name = Segment
|
block.segment.name = Segment
|
||||||
block.command-center.name = Command Center
|
block.command-center.name = Каммандны цэнтр
|
||||||
block.ground-factory.name = Ground Factory
|
block.ground-factory.name = Завод наземных адзінак
|
||||||
block.air-factory.name = Air Factory
|
block.air-factory.name = Завод паветраных адзінак
|
||||||
block.naval-factory.name = Naval Factory
|
block.naval-factory.name = Завод марскіх адзінак
|
||||||
block.additive-reconstructor.name = Additive Reconstructor
|
block.additive-reconstructor.name = Злучальны рэканструктар
|
||||||
block.multiplicative-reconstructor.name = Multiplicative Reconstructor
|
block.multiplicative-reconstructor.name = Мультыплікацыйны рэканструктар
|
||||||
block.exponential-reconstructor.name = Exponential Reconstructor
|
block.exponential-reconstructor.name = Экспаненцыяльны рэканструктар
|
||||||
block.tetrative-reconstructor.name = Tetrative Reconstructor
|
block.tetrative-reconstructor.name = Тэтрацыйны рэканструктар
|
||||||
block.payload-conveyor.name = Mass Conveyor
|
block.payload-conveyor.name = Канвеер для тяжёлай зброі
|
||||||
block.payload-router.name = Payload Router
|
block.payload-router.name = Роутар для тяжёлай зброі
|
||||||
block.disassembler.name = Disassembler
|
block.disassembler.name = Разборшчык
|
||||||
block.silicon-crucible.name = Silicon Crucible
|
block.silicon-crucible.name = Крэмніевы тыгель
|
||||||
block.overdrive-dome.name = Overdrive Dome
|
block.overdrive-dome.name = Сверхпрывадны купал
|
||||||
|
|
||||||
block.switch.name = Switch
|
block.switch.name = Пераключальнік
|
||||||
block.micro-processor.name = Micro Processor
|
block.micro-processor.name = Мікропрацэсар
|
||||||
block.logic-processor.name = Logic Processor
|
block.logic-processor.name = Працэсар логікі
|
||||||
block.hyper-processor.name = Hyper Processor
|
block.hyper-processor.name = Гіперпрацэсар
|
||||||
block.logic-display.name = Logic Display
|
block.logic-display.name = Экран
|
||||||
block.large-logic-display.name = Large Logic Display
|
block.large-logic-display.name = Вялікі экран
|
||||||
block.memory-cell.name = Memory Cell
|
block.memory-cell.name = Ячэйка памяці
|
||||||
block.memory-bank.name = Memory Bank
|
block.memory-bank.name = Банк памяці
|
||||||
|
|
||||||
team.blue.name = Сіняя
|
team.blue.name = Сіняя
|
||||||
team.crux.name = Чырвоная
|
team.crux.name = Чырвоная
|
||||||
@@ -1196,14 +1196,14 @@ tutorial.breaking = Часта, блокі даводзіцца руйнавац
|
|||||||
tutorial.breaking.mobile = Часта, блокі даводзіцца руйнаваць. \n [accent] Вылучыце рэжым дэканструкцыі[], пасля чаго націсніце на патрэбны блок, каб разбурыць яго. \nРазрушьте блокі ў абранай зоне, трымаючы палец на некалькі секунд[], і правёўшы яго ў патрэбным кірунку. \nНажмите на галачку, каб пацвердзіць разбурэнне. \n \n [accent] разбурце усе сцены з металалому злева ад Вашага ядра.
|
tutorial.breaking.mobile = Часта, блокі даводзіцца руйнаваць. \n [accent] Вылучыце рэжым дэканструкцыі[], пасля чаго націсніце на патрэбны блок, каб разбурыць яго. \nРазрушьте блокі ў абранай зоне, трымаючы палец на некалькі секунд[], і правёўшы яго ў патрэбным кірунку. \nНажмите на галачку, каб пацвердзіць разбурэнне. \n \n [accent] разбурце усе сцены з металалому злева ад Вашага ядра.
|
||||||
tutorial.withdraw = У некаторых сітуацыях, неабходна забраць прадметы з блокаў ўручную. \nКаб зрабіць гэта, [accent] націсніце на блок[], у якім знаходзяцца прадметы, затым [accent] націсніце на прадмет[] ў інвентары. \nМожно забраць некалькі прадметаў [accent] націскам з заціскам[].\n [accent] Забярыце трохі медзі з ядра[]
|
tutorial.withdraw = У некаторых сітуацыях, неабходна забраць прадметы з блокаў ўручную. \nКаб зрабіць гэта, [accent] націсніце на блок[], у якім знаходзяцца прадметы, затым [accent] націсніце на прадмет[] ў інвентары. \nМожно забраць некалькі прадметаў [accent] націскам з заціскам[].\n [accent] Забярыце трохі медзі з ядра[]
|
||||||
tutorial.deposit = Пакладзеце прадметы ў блок, перацягнуўшы іх ад свайго карабля ў патрэбны блок. \n \n [accent] Перанясіце медзь назад у ядро []
|
tutorial.deposit = Пакладзеце прадметы ў блок, перацягнуўшы іх ад свайго карабля ў патрэбны блок. \n \n [accent] Перанясіце медзь назад у ядро []
|
||||||
tutorial.waves = [lightgray] Праціўнікі[] набліжаюцца. \nЗащитите ядро ад двух хваль. Выкарыстоўвайце [accent] левую кнопку мышы[] для стральбы. \nПостройте больш турэляў і бураў. Добудьте больш медзі.
|
tutorial.waves = [lightgray] Праціўнікі[] набліжаюцца. \nЗащіціце ядро ад двух хваль. Выкарыстоўвайце [accent] левую кнопку мышы[] для стральбы. \nПостройте больш турэляў і бураў. Добудьте больш медзі.
|
||||||
tutorial.waves.mobile = [lightgray] Праціўнікі[] набліжаюцца. \n \nЗащитите ядро ад двух хваль. Ваш карабель будзе аўтаматычна атакаваць праціўніка. \nПостройте больш турэляў і бураў. Добудьте больш медзі.
|
tutorial.waves.mobile = [lightgray] Праціўнікі[] набліжаюцца. \n \nЗащіціце ядро ад двух хваль. Ваш карабель будзе аўтаматычна атакаваць праціўніка. \nПостройте больш турэляў і бураў. Добудьте больш медзі.
|
||||||
tutorial.launch = Калі Вы дасягаеце пэўнай хвалі, Вы можаце ажыццявіць [accent] запуск ядра[], пакінуўшы базу і [accent] перанесці рэсурсы з ядра.[] \nЭти рэсурсы могуць быць выкарыстаны для вывучэння новых тэхналогій.\n [accent] Націсніце кнопку запуску.
|
tutorial.launch = Калі Вы дасягаеце пэўнай хвалі, Вы можаце ажыццявіць [accent] запуск ядра[], пакінуўшы базу і [accent] перанесці рэсурсы з ядра.[] \nЭти рэсурсы могуць быць выкарыстаны для вывучэння новых тэхналогій.\n [accent] Націсніце кнопку запуску.
|
||||||
|
|
||||||
item.copper.description = Самы асноўны будаўнічы матэрыял. Шырока выкарыстоўваецца ва ўсіх тыпах блокаў.
|
item.copper.description = Самы асноўны будаўнічы матэрыял. Шырока выкарыстоўваецца ва ўсіх тыпах блокаў.
|
||||||
item.lead.description = Асноўны стартавы матэрыял. Шырока выкарыстоўваецца ў электроніцы і блоках для транспарціроўкі вадкасцяў.
|
item.lead.description = Асноўны стартавы матэрыял. Шырока выкарыстоўваецца ў электроніцы і блоках для транспарціроўкі вадкасцяў.
|
||||||
item.metaglass.description = звышмоцнага сплаў шкла. Шырока выкарыстоўваецца для размеркавання і захоўвання вадкасці.
|
item.metaglass.description = Звышмоцны сплаў шкла. Шырока выкарыстоўваецца для размеркавання і захоўвання вадкасці.
|
||||||
item.graphite.description = мінералізаваныя вуглярод, які выкарыстоўваецца для боепрыпасаў і электрычных кампанентаў.
|
item.graphite.description = Мінералізаваны вуглярод, які выкарыстоўваецца для боепрыпасаў і электрычных кампанентаў.
|
||||||
item.sand.description = Звычайны матэрыял, які шырока выкарыстоўваецца пры выплаўленні, як пры легіравання, так і ў якасці флюсу.
|
item.sand.description = Звычайны матэрыял, які шырока выкарыстоўваецца пры выплаўленні, як пры легіравання, так і ў якасці флюсу.
|
||||||
item.coal.description = Закамянеласцевае мінеральнае рэчыва, якое ўтварылася задоўга да пасева. Шырока выкарыстоўваецца для вытворчасці паліва і рэсурсаў.
|
item.coal.description = Закамянеласцевае мінеральнае рэчыва, якое ўтварылася задоўга да пасева. Шырока выкарыстоўваецца для вытворчасці паліва і рэсурсаў.
|
||||||
item.titanium.description = Рэдкі звышлёгкі метал, шырока выкарыстоўваецца для транспарціроўкі вадкасцяў, бураў і авіяцыі.
|
item.titanium.description = Рэдкі звышлёгкі метал, шырока выкарыстоўваецца для транспарціроўкі вадкасцяў, бураў і авіяцыі.
|
||||||
@@ -1332,4 +1332,4 @@ block.cyclone.description = Вялікая турэль, якая можа ве
|
|||||||
block.spectre.description = Масіўная двуствольное гармата. Страляе буйнымі бранябойнымі кулямі па паветраных і наземных мэтах.
|
block.spectre.description = Масіўная двуствольное гармата. Страляе буйнымі бранябойнымі кулямі па паветраных і наземных мэтах.
|
||||||
block.meltdown.description = Масіўная лазерная гармата. Зараджае і страляе пастаянным лазерным прамянём ў бліжэйшых ворагаў. Патрабуецца астуджальная вадкасць для працы.
|
block.meltdown.description = Масіўная лазерная гармата. Зараджае і страляе пастаянным лазерным прамянём ў бліжэйшых ворагаў. Патрабуецца астуджальная вадкасць для працы.
|
||||||
block.repair-point.description = Бесперапынна лечыць бліжэйшую пашкоджаную баявую адзінку або мех у сваім радыусе.
|
block.repair-point.description = Бесперапынна лечыць бліжэйшую пашкоджаную баявую адзінку або мех у сваім радыусе.
|
||||||
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.
|
block.segment.description = Пашкоджвае і знішчае снарады. Лазерныя снарады не шкодзяца.
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ credits.text = Entwickelt von [royal]Anuken[] - [sky]anukendev@gmail.com[]\n\n[g
|
|||||||
credits = Danksagungen
|
credits = Danksagungen
|
||||||
contributors = Übersetzer und Mitwirkende
|
contributors = Übersetzer und Mitwirkende
|
||||||
discord = Tritt dem Mindustry-Discord bei!
|
discord = Tritt dem Mindustry-Discord bei!
|
||||||
link.discord.description = Der offizielle Mindustry Discord Server
|
link.discord.description = Der offizielle Mindustry Discord-Server
|
||||||
link.reddit.description = Der Mindustry Subreddit
|
link.reddit.description = Mindustry-Subreddit
|
||||||
link.github.description = Quellcode des Spiels
|
link.github.description = Quellcode des Spiels
|
||||||
link.changelog.description = Liste der Änderungen
|
link.changelog.description = Liste der Änderungen
|
||||||
link.dev-builds.description = Entwicklungs-Builds (instabil)
|
link.dev-builds.description = Entwicklungs-Builds (instabil)
|
||||||
@@ -11,7 +11,7 @@ link.trello.description = Offizielles Trello-Board für geplante Features
|
|||||||
link.itch.io.description = itch.io-Seite mit Downloads und der Web-Version des Spiels
|
link.itch.io.description = itch.io-Seite mit Downloads und der Web-Version des Spiels
|
||||||
link.google-play.description = Google Play Store-Seite
|
link.google-play.description = Google Play Store-Seite
|
||||||
link.f-droid.description = F-Droid-Seite
|
link.f-droid.description = F-Droid-Seite
|
||||||
link.wiki.description = Offizelles Mindustry-Wiki
|
link.wiki.description = Offizielles Mindustry-Wiki
|
||||||
link.suggestions.description = Neue Ideen einbringen
|
link.suggestions.description = Neue Ideen einbringen
|
||||||
linkfail = Fehler beim Öffnen des Links!\nDie URL wurde in die Zwischenablage kopiert.
|
linkfail = Fehler beim Öffnen des Links!\nDie URL wurde in die Zwischenablage kopiert.
|
||||||
screenshot = Screenshot gespeichert unter {0}
|
screenshot = Screenshot gespeichert unter {0}
|
||||||
@@ -23,7 +23,7 @@ gameover.waiting = [accent]Warte auf neue Karte...
|
|||||||
highscore = [accent]Neuer Highscore!
|
highscore = [accent]Neuer Highscore!
|
||||||
copied = Kopiert.
|
copied = Kopiert.
|
||||||
indev.notready = Dieser Teil vom Spiel ist noch unfertig.
|
indev.notready = Dieser Teil vom Spiel ist noch unfertig.
|
||||||
indev.campaign = [accent]Du hast das Ende der Kampagne erreicht![]\n\nMehr gibt es noch nicht. In einem zukünfttigen Update wird interplanetarisches Reisen möglich werden.
|
indev.campaign = [accent]Du hast das Ende der Kampagne erreicht![]\n\nMehr gibt es noch nicht. In einem zukünftigen Update wird interplanetarisches Reisen möglich werden.
|
||||||
|
|
||||||
load.sound = Audio
|
load.sound = Audio
|
||||||
load.map = Karten
|
load.map = Karten
|
||||||
@@ -101,9 +101,9 @@ uploadingcontent = Inhalt hochladen
|
|||||||
uploadingpreviewfile = Vorschaudatei hochladen
|
uploadingpreviewfile = Vorschaudatei hochladen
|
||||||
committingchanges = Veränderungen übernehmen
|
committingchanges = Veränderungen übernehmen
|
||||||
done = Fertig
|
done = Fertig
|
||||||
feature.unsupported = Dein System unsterstü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 an den Mindustry GitHub oder Discord.
|
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 = Mods
|
mods = Mods
|
||||||
mods.none = [lightgray]Keine Mods gefunden!
|
mods.none = [lightgray]Keine Mods gefunden!
|
||||||
mods.guide = Modding-Anleitung
|
mods.guide = Modding-Anleitung
|
||||||
@@ -131,13 +131,13 @@ mod.import = Mod importieren
|
|||||||
mod.import.file = Datei importieren
|
mod.import.file = Datei importieren
|
||||||
mod.import.github = GitHub-Mod importieren
|
mod.import.github = GitHub-Mod importieren
|
||||||
mod.jarwarn = [scarlet]JAR Mods sind nicht sicher.[]\nInstalliere nur Mods von vertrauenswürdigen Quellen!
|
mod.jarwarn = [scarlet]JAR Mods sind nicht sicher.[]\nInstalliere nur Mods von vertrauenswürdigen Quellen!
|
||||||
mod.item.remove = Dies ist Teil vom [accent] '{0}'[] Mod. Deaktivieren sie diesen Mod, um dies zu entfernen.
|
mod.item.remove = Dies ist Teil vom [accent] '{0}'[] Mod. Deaktivieren Sie diesen Mod, um dies zu entfernen.
|
||||||
mod.remove.confirm = Dieser Mod wird gelöscht.
|
mod.remove.confirm = Dieser Mod wird gelöscht.
|
||||||
mod.author = [lightgray]Autor:[] {0}
|
mod.author = [lightgray]Autor:[] {0}
|
||||||
mod.missing = Dieser Spielstand enthält Mods, welche nicht mehr vorhanden oder aktualisiert wurden. Spielstandfehler könnten passieren. Bist du dir sicher, das du ihn laden möchtest?\n[lightgray]Mods:\n{0}
|
mod.missing = Dieser Spielstand enthält Mods, welche nicht mehr vorhanden sind oder aktualisiert wurden. Spielstandfehler könnten passieren. Bist du dir sicher, dass du ihn laden möchtest?\n[lightgray]Mods:\n{0}
|
||||||
mod.preview.missing = Bevor du diesen Mod hochladen kannst, musst du eine Bildvorschau einbinden.\nLade ein Bild namens[accent] preview.png[] in den Modordner und versuche es nochmal.
|
mod.preview.missing = Bevor du diesen Mod hochladen kannst, musst du eine Bildvorschau einbinden.\nLade ein Bild namens[accent] preview.png[] in den Modordner und versuche es nochmal.
|
||||||
mod.folder.missing = Nur Mods in Ordnerform können in den Workshop hochgeladen werden.\nUm einen Mod in einen Ordner zu konvertieren, extrahiere das Archiv und lösche das alte Archiv danach. Starte dann das Spiel neu oder lade die Mods neu.
|
mod.folder.missing = Nur Mods in Ordnerform können in den Workshop hochgeladen werden.\nUm einen Mod in einen Ordner zu konvertieren, extrahiere das Archiv und lösche das alte Archiv danach. Starte dann das Spiel neu oder lade die Mods neu.
|
||||||
mod.scripts.disable = Ihr Gerät unterstüzt keine Mods mit Scripts. Du musst diese Mods deaktivieren, um spielen zu können.
|
mod.scripts.disable = Ihr Gerät unterstützt keine Mods mit Scripts. Du musst diese Mods deaktivieren, um spielen zu können.
|
||||||
|
|
||||||
about.button = Info
|
about.button = Info
|
||||||
name = Name:
|
name = Name:
|
||||||
@@ -146,7 +146,7 @@ planetmap = Planetenkarte
|
|||||||
launchcore = Kern starten
|
launchcore = Kern starten
|
||||||
filename = Dateiname:
|
filename = Dateiname:
|
||||||
unlocked = Neuer Inhalt freigeschaltet!
|
unlocked = Neuer Inhalt freigeschaltet!
|
||||||
available = Neue Forschung möchlich!
|
available = Neue Forschung möglich
|
||||||
completed = [accent]Abgeschlossen
|
completed = [accent]Abgeschlossen
|
||||||
techtree = Forschung
|
techtree = Forschung
|
||||||
research.legacy = [accent]5.0[] Forschungsdaten gefunden.\nMöchtest du [accent]diese Daten behalten[] oder [accent]sie löschen[] und neu anfangen (empfohlen)?
|
research.legacy = [accent]5.0[] Forschungsdaten gefunden.\nMöchtest du [accent]diese Daten behalten[] oder [accent]sie löschen[] und neu anfangen (empfohlen)?
|
||||||
@@ -170,7 +170,7 @@ server.kicked.serverOutdated = Veralteter Server! Bitte den Host um ein Update!
|
|||||||
server.kicked.banned = Du wurdest vom Server verbannt.
|
server.kicked.banned = Du wurdest vom Server verbannt.
|
||||||
server.kicked.typeMismatch = Dieser Server ist nicht mit deinem Buildtyp kompatibel.
|
server.kicked.typeMismatch = Dieser Server ist nicht mit deinem Buildtyp kompatibel.
|
||||||
server.kicked.playerLimit = Dieser Server ist voll. Warte auf einen freien Platz.
|
server.kicked.playerLimit = Dieser Server ist voll. Warte auf einen freien Platz.
|
||||||
server.kicked.recentKick = Du wurdest gerade gekickt.\nWarte bevor du dich wieder verbindest.
|
server.kicked.recentKick = Du wurdest gerade gekickt.\nWarte, bevor du dich wieder verbindest.
|
||||||
server.kicked.nameInUse = Es ist bereits ein Spieler \nmit diesem Namen auf dem Server.
|
server.kicked.nameInUse = Es ist bereits ein Spieler \nmit diesem Namen auf dem Server.
|
||||||
server.kicked.nameEmpty = Dein Name muss mindestens einen Buchstaben oder eine Zahl enthalten.
|
server.kicked.nameEmpty = Dein Name muss mindestens einen Buchstaben oder eine Zahl enthalten.
|
||||||
server.kicked.idInUse = Du bist bereits auf dem Server! Anmeldungen mit zwei Accounts sind nicht gestattet.
|
server.kicked.idInUse = Du bist bereits auf dem Server! Anmeldungen mit zwei Accounts sind nicht gestattet.
|
||||||
@@ -178,7 +178,7 @@ server.kicked.customClient = Der Server akzeptiert keine Custom Builds von Mindu
|
|||||||
server.kicked.gameover = Game Over!
|
server.kicked.gameover = Game Over!
|
||||||
server.kicked.serverRestarting = Der Server startet neu.
|
server.kicked.serverRestarting = Der Server startet neu.
|
||||||
server.versions = Deine Version:[accent] {0}[]\nServerversion:[accent] {1}[]
|
server.versions = Deine Version:[accent] {0}[]\nServerversion:[accent] {1}[]
|
||||||
host.info = Der [accent]Server hosten[]-Knopf startet einen Server auf den Ports [scarlet]6567[] und [scarlet]6568.[]\nJeder im gleichen [lightgray]W-Lan oder lokalen Netzwerk[] sollte deinen Server in seiner Serverliste sehen können.\n\nWenn du anderen die Verbindung über deine IP-Adresse ermöglichen willst, musst du [accent]Port-Forwarding[] durchführen.\n\n[lightgray]Hinweis: Falls es Probleme mit der Verbindung im Netzwerk gibt, stelle sicher, dass Mindustry in deinen Firewall-Einstellungen Zugriff auf das lokale Netzwerk hat.
|
host.info = Der [accent]'Server hosten'[]-Knopf startet einen Server auf den Ports [scarlet]6567[] und [scarlet]6568.[]\nJeder im gleichen [lightgray]W-Lan oder lokalen Netzwerk[] sollte deinen Server in seiner Serverliste sehen können.\n\nWenn du anderen die Verbindung über deine IP-Adresse ermöglichen willst, musst du [accent]Port-Forwarding[] durchführen.\n\n[lightgray]Hinweis: Falls es Probleme mit der Verbindung im Netzwerk gibt, stelle sicher, dass Mindustry in deinen Firewall-Einstellungen Zugriff auf das lokale Netzwerk hat.
|
||||||
join.info = Hier kannst du eine [accent]Server-IP[] eingeben, um dich zu verbinden, oder Server im [accent]lokalen Netzwerk[] entdecken und dich mit ihnen verbinden.\nSowohl Spielen über das lokale Netzwerk als auch Spielen über das Internet werden unterstützt.\n\n[lightgray]Hinweis: Es gibt keine globale Serverliste; wenn du dich mit jemandem per IP-Adresse verbinden willst, musst du den Host nach seiner IP-Adresse fragen.
|
join.info = Hier kannst du eine [accent]Server-IP[] eingeben, um dich zu verbinden, oder Server im [accent]lokalen Netzwerk[] entdecken und dich mit ihnen verbinden.\nSowohl Spielen über das lokale Netzwerk als auch Spielen über das Internet werden unterstützt.\n\n[lightgray]Hinweis: Es gibt keine globale Serverliste; wenn du dich mit jemandem per IP-Adresse verbinden willst, musst du den Host nach seiner IP-Adresse fragen.
|
||||||
hostserver = Mehrspieler hosten
|
hostserver = Mehrspieler hosten
|
||||||
invitefriends = Freunde einladen
|
invitefriends = Freunde einladen
|
||||||
@@ -196,8 +196,9 @@ servers.local = Lokale Server
|
|||||||
servers.remote = Andere Server
|
servers.remote = Andere Server
|
||||||
servers.global = Community-Server
|
servers.global = Community-Server
|
||||||
|
|
||||||
|
servers.disclaimer = Community-Server werden vom Entwickler [accent]nicht[] geprüft.\n\Sie können Inhalte, die nicht für jedes Alter geeignet sind, enthalten.
|
||||||
servers.showhidden = Versteckte Server anzeigen
|
servers.showhidden = Versteckte Server anzeigen
|
||||||
server.shown = Angeziegt
|
server.shown = Angezeigt
|
||||||
server.hidden = Versteckt
|
server.hidden = Versteckt
|
||||||
|
|
||||||
trace = Spieler verfolgen
|
trace = Spieler verfolgen
|
||||||
@@ -287,7 +288,7 @@ data.import = Daten importieren
|
|||||||
data.openfolder = Datenordner öffnen
|
data.openfolder = Datenordner öffnen
|
||||||
data.exported = Daten exportiert.
|
data.exported = Daten exportiert.
|
||||||
data.invalid = Dies sind keine gültigen Spieldaten.
|
data.invalid = Dies sind keine gültigen Spieldaten.
|
||||||
data.import.confirm = Der Import von externen Daten wird [scarlet] alle[] deine gegenwärtigen Spieldaten löschen.\n[accent]Das kann nicht rückgängig gemacht werden![]Sobald der Import abeschlossen ist, wird dein Spiel sofort beendet.
|
data.import.confirm = Der Import von externen Daten wird [scarlet] alle[] deine gegenwärtigen Spieldaten löschen.\n[accent]Das kann nicht rückgängig gemacht werden![]\n\nSobald der Import abgeschlossen ist, wird dein Spiel sofort beendet.
|
||||||
quit.confirm = Willst du wirklich aufhören?
|
quit.confirm = Willst du wirklich aufhören?
|
||||||
quit.confirm.tutorial = Weißt du, was du tust?\nDu kannst das Tutorial unter[accent] Einstellungen->Spiel->Tutorial wiederholen[] erneut spielen.
|
quit.confirm.tutorial = Weißt du, was du tust?\nDu kannst das Tutorial unter[accent] Einstellungen->Spiel->Tutorial wiederholen[] erneut spielen.
|
||||||
loading = [accent]Wird geladen...
|
loading = [accent]Wird geladen...
|
||||||
@@ -298,7 +299,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
|
||||||
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}
|
||||||
wave.waiting = Welle in {0}
|
wave.waiting = Welle in {0}
|
||||||
@@ -316,11 +317,11 @@ saveimage = Bild speichern
|
|||||||
unknown = Unbekannt
|
unknown = Unbekannt
|
||||||
custom = Benutzerdefiniert
|
custom = Benutzerdefiniert
|
||||||
builtin = Enthalten
|
builtin = Enthalten
|
||||||
map.delete.confirm = Bist du sicher, dass du diese Karte löschen willst? Dies kann nicht rückgänig gemacht werden!
|
map.delete.confirm = Bist du sicher, dass du diese Karte löschen willst? Dies kann nicht rückgängig gemacht werden!
|
||||||
map.random = [accent]Zufällige Karte
|
map.random = [accent]Zufällige Karte
|
||||||
map.nospawn = Diese Karte hat keine Kerne in denen die Spieler beginnen können! Füge einen [royal]blue[] Kern zu dieser Karte im Editor hinzu.
|
map.nospawn = Diese Karte hat keine Kerne, in denen die Spieler beginnen können! Füge einen [royal]orangen[] Kern zu dieser Karte im Editor hinzu.
|
||||||
map.nospawn.pvp = Diese Karte hat keine gegnerischen Kerne in denen Gegner starten können! Füge über den Editor [scarlet] rote[] Kerne zu dieser Karte hinzu.
|
map.nospawn.pvp = Diese Karte hat keine Kerne für die gegnerischen Spieler! Füge über den Editor [scarlet] nicht-orange[] Kerne zu dieser Karte hinzu.
|
||||||
map.nospawn.attack = Diese Karte hat keine gengnerischen Kerne, die Spieler angreifen können! Füge über den Editor [scarlet] rote[] Kerne zu dieser Karte hinzu.
|
map.nospawn.attack = Diese Karte hat keine gegnerischen Kerne, die Spieler angreifen können! Füge über den Editor [scarlet] rote[] Kerne zu dieser Karte hinzu.
|
||||||
map.invalid = Fehler beim Laden der Karte: Beschädigte oder ungültige Kartendatei.
|
map.invalid = Fehler beim Laden der Karte: Beschädigte oder ungültige Kartendatei.
|
||||||
workshop.update = Objekt aktualisieren
|
workshop.update = Objekt aktualisieren
|
||||||
workshop.error = Fehler beim Laden von Workshop-Details: {0}
|
workshop.error = Fehler beim Laden von Workshop-Details: {0}
|
||||||
@@ -333,7 +334,7 @@ missing = Dieses Objekt wurde gelöscht oder verschoben.\n[lightgray]Die Worksho
|
|||||||
publishing = [accent]Veröffentlichen...
|
publishing = [accent]Veröffentlichen...
|
||||||
publish.confirm = Willst du das wirklich veröffentlichen?\n\n[lightgray]Vergewissere dich, dass du der Workshop-EULA zugestimmt hast, sonst tauchen deine Objekte nicht auf!
|
publish.confirm = Willst du das wirklich veröffentlichen?\n\n[lightgray]Vergewissere dich, dass du der Workshop-EULA zugestimmt hast, sonst tauchen deine Objekte nicht auf!
|
||||||
publish.error = Fehler beim Veröffentlichen des Objekts: {0}
|
publish.error = Fehler beim Veröffentlichen des Objekts: {0}
|
||||||
steam.error = Fehler beim laden der Steam-Dienste.\nError: {0}
|
steam.error = Fehler beim Laden der Steam-Dienste.\nError: {0}
|
||||||
|
|
||||||
editor.brush = Pinsel
|
editor.brush = Pinsel
|
||||||
editor.openin = Öffne im Editor
|
editor.openin = Öffne im Editor
|
||||||
@@ -342,11 +343,11 @@ editor.oregen.info = Erze generiert:
|
|||||||
editor.mapinfo = Karten-Info
|
editor.mapinfo = Karten-Info
|
||||||
editor.author = Autor:
|
editor.author = Autor:
|
||||||
editor.description = Beschreibung:
|
editor.description = Beschreibung:
|
||||||
editor.nodescription = Eine Karte benötigt eine Beschreibung mit mindestens 4 Buchstaben, bevor sie veröffentlich werden kann.
|
editor.nodescription = Eine Karte benötigt eine Beschreibung mit mindestens 4 Buchstaben, bevor sie veröffentlicht werden kann.
|
||||||
editor.waves = Wellen:
|
editor.waves = Wellen:
|
||||||
editor.rules = Regeln:
|
editor.rules = Regeln:
|
||||||
editor.generation = Generator:
|
editor.generation = Generator:
|
||||||
editor.ingame = Im Spiel Bearbeiten
|
editor.ingame = Im Spiel bearbeiten
|
||||||
editor.publish.workshop = Im Workshop veröffentlichen
|
editor.publish.workshop = Im Workshop veröffentlichen
|
||||||
editor.newmap = Neue Karte
|
editor.newmap = Neue Karte
|
||||||
editor.center = Zur Mitte
|
editor.center = Zur Mitte
|
||||||
@@ -382,7 +383,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 3.5/build 40-Karte importieren möchtest, benutze den 'Importiere Terrainbild' Knopf im Editor.
|
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.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.
|
||||||
@@ -395,9 +396,9 @@ editor.resize = Größe\nanpassen
|
|||||||
editor.loadmap = Karte\nladen
|
editor.loadmap = Karte\nladen
|
||||||
editor.savemap = Karte\nspeichern
|
editor.savemap = Karte\nspeichern
|
||||||
editor.saved = Gespeichert!
|
editor.saved = Gespeichert!
|
||||||
editor.save.noname = Deine Karte hat keinen Namen! Setze einen Namen im [accent]Karten Info[] Menu.
|
editor.save.noname = Deine Karte hat keinen Namen! Setze einen Namen im [accent]Karten-Info[]-Menü.
|
||||||
editor.save.overwrite = Deine Karte überschreibt eine built-in Karte! Wähle einen anderen Karten Namen im [accent]'Karten info'[] Menu.
|
editor.save.overwrite = Deine Karte überschreibt eine Standardkarte! Wähle einen anderen Karten Namen im [accent]Karten-Info[]-Menü.
|
||||||
editor.import.exists = [scarlet]Fehler beim Import:[] Ein built-in Karte namens '{0}' existiert bereits!
|
editor.import.exists = [scarlet]Fehler beim Import:[] Ein Standardkarte namens '{0}' existiert bereits!
|
||||||
editor.import = Importieren...
|
editor.import = Importieren...
|
||||||
editor.importmap = Importiere Karte
|
editor.importmap = Importiere Karte
|
||||||
editor.importmap.description = Importiere von einer bestehenden Karte
|
editor.importmap.description = Importiere von einer bestehenden Karte
|
||||||
@@ -432,7 +433,7 @@ toolmode.eraseores = Erze löschen
|
|||||||
toolmode.eraseores.description = Löscht nur Erze.
|
toolmode.eraseores.description = Löscht nur Erze.
|
||||||
toolmode.fillteams = Teams ausfüllen
|
toolmode.fillteams = Teams ausfüllen
|
||||||
toolmode.fillteams.description = Füllt Teams aus statt Blöcke.
|
toolmode.fillteams.description = Füllt Teams aus statt Blöcke.
|
||||||
toolmode.drawteams = Teams Zeichnen
|
toolmode.drawteams = Teams zeichnen
|
||||||
toolmode.drawteams.description = Zeichnet Teams statt Blöcke.
|
toolmode.drawteams.description = Zeichnet Teams statt Blöcke.
|
||||||
|
|
||||||
filters.empty = [lightgray]Keine Filter! Füge einen mit dem unteren Knopf hinzu.
|
filters.empty = [lightgray]Keine Filter! Füge einen mit dem unteren Knopf hinzu.
|
||||||
@@ -463,7 +464,7 @@ filter.option.angle = Winkel
|
|||||||
filter.option.amount = Menge
|
filter.option.amount = Menge
|
||||||
filter.option.block = Block
|
filter.option.block = Block
|
||||||
filter.option.floor = Boden
|
filter.option.floor = Boden
|
||||||
filter.option.flooronto = Ziel Boden
|
filter.option.flooronto = Zielboden
|
||||||
filter.option.target = Ziel
|
filter.option.target = Ziel
|
||||||
filter.option.wall = Wand
|
filter.option.wall = Wand
|
||||||
filter.option.ore = Erz
|
filter.option.ore = Erz
|
||||||
@@ -542,12 +543,12 @@ sectors.wave = Welle:
|
|||||||
sectors.stored = Gelagert:
|
sectors.stored = Gelagert:
|
||||||
sectors.resume = Weiterspielen
|
sectors.resume = Weiterspielen
|
||||||
sectors.launch = Start
|
sectors.launch = Start
|
||||||
sectors.select = Select
|
sectors.select = Auswählen
|
||||||
sectors.nonelaunch = [lightgray]none (sun)
|
sectors.nonelaunch = [lightgray]none (sun)
|
||||||
sectors.rename = Sektor umbenennen
|
sectors.rename = Sektor umbenennen
|
||||||
sectors.enemybase = [scarlet]Gegnerische Basis
|
sectors.enemybase = [scarlet]Gegnerische Basis
|
||||||
sectors.vulnerable = [scarlet]Angriffsgefährdet
|
sectors.vulnerable = [scarlet]Angriffsgefährdet
|
||||||
sectors.underattack = [scarlet]Wird angegriffen! [accent]{0}% damaged
|
sectors.underattack = [scarlet]Wird angegriffen! [accent]{0}% geschädigt
|
||||||
sectors.survives = [accent]Kann {0} Wellen überleben
|
sectors.survives = [accent]Kann {0} Wellen überleben
|
||||||
sectors.go = Hingehen
|
sectors.go = Hingehen
|
||||||
sector.curcapture = Sektor erfolgreich erobert
|
sector.curcapture = Sektor erfolgreich erobert
|
||||||
@@ -586,21 +587,21 @@ sector.windsweptIslands.name = Windswept Islands
|
|||||||
sector.extractionOutpost.name = Extraction Outpost
|
sector.extractionOutpost.name = Extraction Outpost
|
||||||
sector.planetaryTerminal.name = Planetary Launch Terminal
|
sector.planetaryTerminal.name = Planetary Launch Terminal
|
||||||
|
|
||||||
sector.groundZero.description = Der optimale Ort um anzufangen. Schwache Gegner und weniger Ressourcen.\nSammele so viel Kupfer und Blei wie möglich.\nGeh weiter.
|
sector.groundZero.description = Der optimale Ort, um anzufangen. Schwache Gegner und weniger Ressourcen.\nSammele so viel Kupfer und Blei wie möglich.\nGeh weiter.
|
||||||
sector.frozenForest.description = Auch hier, näher an den Bergen, sind die Sporen. Sogar die niedrigen Temperaturen können sie nicht zurückhalten.\n\nLerne, Strom zu verwenden. Baue Verbrennungsgeneratoren und Reparateure.
|
sector.frozenForest.description = Auch hier, näher an den Bergen, sind die Sporen. Sogar die niedrigen Temperaturen können sie nicht zurückhalten.\n\nLerne, Strom zu verwenden. Baue Verbrennungsgeneratoren und Reparateure.
|
||||||
sector.saltFlats.description = Du befindest dich in der Nähe der Wüste. Hier gibt es nur wenige Ressourcen.\n\nDer Gegner hat hier ein Lager aufgestellt. Zerstöre es. Lasse nichts stehen.
|
sector.saltFlats.description = Du befindest dich in der Nähe der Wüste. Hier gibt es nur wenige Ressourcen.\n\nDer Gegner hat hier ein Lager aufgestellt. Zerstöre es. Lasse nichts stehen.
|
||||||
sector.craters.description = Wasser hat sich hier, in diesem Überbleibsel aus dem alten Krieg, versammelt. Sammele Sand. Stelle Metaglas her. Benutze Wasser, um Bohrer und Geschütze zu kühlen.
|
sector.craters.description = Wasser hat sich hier, in diesem Überbleibsel aus dem alten Krieg, versammelt. Sammele Sand. Stelle Metaglas her. Benutze Wasser, um Bohrer und Geschütze zu kühlen.
|
||||||
sector.ruinousShores.description = Hinter der Wüste ist das Ufer. Es gab hier vor langer Zeit ein Uferabwehrsystem. Heute sind nur noch die einfachsten Abwehrgeschütze vorhanden, der Rest wurde verschrottet.\nBreite dich weiter aus. Finde die verlorenen Technologien wieder.
|
sector.ruinousShores.description = Hinter der Wüste ist das Ufer. Es gab hier vor langer Zeit ein Uferabwehrsystem. Heute sind nur noch die einfachsten Abwehrgeschütze vorhanden, der Rest wurde verschrottet.\nBreite dich weiter aus. Finde die verlorenen Technologien wieder.
|
||||||
sector.stainedMountains.description = Im Landesinneren sind die Berge, noch unversehrt von den Sporen.\nNutze das reichliche vorhandene Titan und lerne, es zu benutzen.\n\nDie Gegner hier sind stärker. Gib ihnen keine Zeit, um ihre stärksten Einheiten zu schicken.
|
sector.stainedMountains.description = Im Landesinneren sind die Berge, noch unversehrt von den Sporen.\nNutze das reichliche vorhandene Titan und lerne, es zu benutzen.\n\nDie Gegner hier sind stärker. Gib ihnen keine Zeit, um ihre stärksten Einheiten zu schicken.
|
||||||
sector.overgrowth.description = Dieser Bereich ist überwuchert, näher an die Quelle der Sporen.\nDer Gegner hat hier einen Außenposten errichtet. Baue Mace-Einheiten. Zerstöre ihn.
|
sector.overgrowth.description = Dieser Bereich ist überwuchert, näher an die Quelle der Sporen.\nDer Gegner hat hier einen Außenposten errichtet. Baue Mace-Einheiten. Zerstöre ihn.
|
||||||
sector.tarFields.description = Der Rand einer Ölproduktionszone, swischen den Bergen und der Wüste. Einer der wenigen Orte mit brauchbaren Ölquellen.\nObwohl er vergessen wurde, hat dieser Ort mächtige Gegnerische Lager in der Nähe. Unterschätze sie nicht.\n\n[lightgray]Erforsche, falls mögloch, die Ölverarbeitung.
|
sector.tarFields.description = Der Rand einer Ölproduktionszone, zwischen den Bergen und der Wüste. Einer der wenigen Orte mit brauchbaren Ölquellen.\nObwohl er vergessen wurde, hat dieser Ort mächtige gegnerische Lager in der Nähe. Unterschätze sie nicht.\n\n[lightgray]Erforsche, falls möglich, die Ölverarbeitung.
|
||||||
sector.desolateRift.description = Eine besonders gefährliche Zone. Viele Ressourcen aber wenig Platz. Hohe Wahrscheinlichkeit, vernichtet zu werden. Verlasse diesen Ort so bald wie möglich. Lass dich nicht durch die langen Abstände zwischen gegnerischen Angriffen täuschen.
|
sector.desolateRift.description = Eine besonders gefährliche Zone. Viele Ressourcen aber wenig Platz. Hohe Wahrscheinlichkeit, vernichtet zu werden. Verlasse diesen Ort so bald wie möglich. Lass dich nicht durch die langen Abstände zwischen gegnerischen Angriffen täuschen.
|
||||||
sector.nuclearComplex.description = Diese Ruine war vor langer Zeit eine Anlage zur Verarbeitung von Thorium.\n[lightgray]Erforsche Thorium und dessen Anwendungen.\n\nDer Gegner ist hier stark vertreten, auf der Suche nach Angreifern.
|
sector.nuclearComplex.description = Diese Ruine war vor langer Zeit eine Anlage zur Verarbeitung von Thorium.\n[lightgray]Erforsche Thorium und dessen Anwendungen.\n\nDer Gegner ist hier stark vertreten und hält nach Angreifern Ausschau.
|
||||||
sector.fungalPass.description = Eine Übergangszone zwischen den Bergen und den niedrigeren, Sporen-Infestierten Gebieten. Hier ist eine kleine gegnerische Basis.\nZerstöre sie.\nBenutze Dagger- und Crawler-Einheiten. Vernichte die beiden Kerne.
|
sector.fungalPass.description = Eine Übergangszone zwischen den Bergen und den niedrigeren, von Sporen befallenen Gebieten. Hier ist eine kleine gegnerische Basis.\nZerstöre sie.\nBenutze Dagger- und Crawler-Einheiten. Vernichte die beiden Kerne.
|
||||||
sector.biomassFacility.description = Die Sporenquelle. Dies ist der Ort, wo sie erforscht und hergestellt wurden.\nErforsche die Technologie, die sich hier versteckt. Stellen Sporen her, um Plastanium und Öl herzustellen.\n\n[lightgray]Als diese Anlage zerstört wurde, wurden die Sporen freigesetzt. Nichts im lokalen Ökosystem konnte so ein eindringliches Lebenwesen bekämpfen.
|
sector.biomassFacility.description = Die Sporenquelle. Dies ist der Ort, wo sie erforscht und hergestellt wurden.\nErforsche die Technologie, die sich hier versteckt. Stellen Sporen her, um Plastanium und Öl herzustellen.\n\n[lightgray]Als diese Anlage zerstört wurde, wurden die Sporen freigesetzt. Nichts im lokalen Ökosystem konnte so ein eindringliches Lebewesen bekämpfen.
|
||||||
sector.windsweptIslands.description = Diese Inseln befinden sich in der Nähe vom Ufer. Manche Aufzeichnungen behaupten, hier seien Fabriken, die [accent]Plastanium[] herstellen können.\n\nWehre dich gegen die gegnerischen Wassereinheiten. Stelle eine Basis auf den Inseln auf. Erforsche diese Fabriken.
|
sector.windsweptIslands.description = Diese Inseln befinden sich in der Nähe vom Ufer. Manche Aufzeichnungen behaupten, hier seien Fabriken, die [accent]Plastanium[] herstellen können.\n\nWehre dich gegen die gegnerischen Wassereinheiten. Stelle eine Basis auf den Inseln auf. Erforsche diese Fabriken.
|
||||||
sector.extractionOutpost.description = Ein Außenposten, der vom Gegner erstellt wurde, um Ressourcen in andere Sektoren zu transportieren.\n\nTrans-Sektorischer Transport ist nötig, um weiter voranzuschreiten. Zerstöre den Posten. Erforsche deren Launchpads.
|
sector.extractionOutpost.description = Ein Außenposten, der vom Gegner erstellt wurde, um Ressourcen in andere Sektoren zu transportieren.\n\nTrans-Sektorischer Transport ist nötig, um weiter voranzuschreiten. Zerstöre den Posten. Erforsche deren Launchpads.
|
||||||
sector.impact0078.description = Here liegen Reste der interplanetarischen Transporteinheit, die dieses Sonnensystem zuerst betreten hat.\n\nRette so viel wie möglich von den Ruinen. Erforsche jede intakte Technologie.
|
sector.impact0078.description = Hier liegen Reste der interplanetarischen Transporteinheit, die dieses Sonnensystem zuerst betreten hat.\n\nRette so viel wie möglich von den Ruinen. Erforsche jede intakte Technologie.
|
||||||
sector.planetaryTerminal.description = Das Endziel.\n\nDiese Uferbasis besitzt ein Gerät, mit dem es möglich ist, Kerne auf andere Planeten zu schicken. Es ist [accent]sehr[] gut beschützt.\n\nStelle Wassereinheiten her. Eliminiere den Gegner so schnell wie möglich. Erforsche das Launchgerät.
|
sector.planetaryTerminal.description = Das Endziel.\n\nDiese Uferbasis besitzt ein Gerät, mit dem es möglich ist, Kerne auf andere Planeten zu schicken. Es ist [accent]sehr[] gut beschützt.\n\nStelle Wassereinheiten her. Eliminiere den Gegner so schnell wie möglich. Erforsche das Launchgerät.
|
||||||
settings.language = Sprache
|
settings.language = Sprache
|
||||||
settings.data = Spieldaten
|
settings.data = Spieldaten
|
||||||
@@ -623,7 +624,6 @@ settings.clearcampaignsaves.confirm = Möchtest du wirklich alle Kampagne-Speich
|
|||||||
paused = [accent]< Pausiert >
|
paused = [accent]< Pausiert >
|
||||||
clear = Leeren
|
clear = Leeren
|
||||||
banned = [scarlet]Verbannt
|
banned = [scarlet]Verbannt
|
||||||
unplaceable.sectorcaptured = [scarlet]Erfordert erforderter Sektor
|
|
||||||
yes = Ja
|
yes = Ja
|
||||||
no = Nein
|
no = Nein
|
||||||
info.title = Info
|
info.title = Info
|
||||||
@@ -692,7 +692,7 @@ stat.speed = Geschwindigkeit
|
|||||||
stat.buildspeed = Baugeschwindigkeit
|
stat.buildspeed = Baugeschwindigkeit
|
||||||
stat.minespeed = Abbaugeschwindigkeit
|
stat.minespeed = Abbaugeschwindigkeit
|
||||||
stat.minetier = Abbau-Kraft
|
stat.minetier = Abbau-Kraft
|
||||||
stat.payloadcapacity = Payload Capacity
|
stat.payloadcapacity = Einheitenkapazität
|
||||||
stat.commandlimit = Kommandier-Limit
|
stat.commandlimit = Kommandier-Limit
|
||||||
stat.abilities = Fähigkeiten
|
stat.abilities = Fähigkeiten
|
||||||
stat.canboost = Kann boosten
|
stat.canboost = Kann boosten
|
||||||
@@ -705,7 +705,7 @@ ability.unitspawn = {0} Fabrik
|
|||||||
ability.shieldregenfield = Schild-regenerations-Feld
|
ability.shieldregenfield = Schild-regenerations-Feld
|
||||||
ability.movelightning = Bewegungsblitze
|
ability.movelightning = Bewegungsblitze
|
||||||
|
|
||||||
bar.drilltierreq = Besserer Bohrer Benötigt
|
bar.drilltierreq = Besserer Bohrer benötigt
|
||||||
bar.noresources = Fehlende Ressourcen
|
bar.noresources = Fehlende Ressourcen
|
||||||
bar.corereq = Kern-Basis erforderlich
|
bar.corereq = Kern-Basis erforderlich
|
||||||
bar.drillspeed = Bohrgeschwindigkeit: {0}/s
|
bar.drillspeed = Bohrgeschwindigkeit: {0}/s
|
||||||
@@ -777,7 +777,7 @@ setting.shadows.name = Schatten
|
|||||||
setting.blockreplace.name = Automatische Blockvorschläge
|
setting.blockreplace.name = Automatische Blockvorschläge
|
||||||
setting.linear.name = Lineare Filterung
|
setting.linear.name = Lineare Filterung
|
||||||
setting.hints.name = Tipps
|
setting.hints.name = Tipps
|
||||||
setting.flow.name = Ressourcen-Fluss anzeigen [scarlet] (experimentell)
|
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.animatedwater.name = Animiertes Wasser
|
setting.animatedwater.name = Animiertes Wasser
|
||||||
@@ -786,7 +786,7 @@ setting.antialias.name = Antialias[lightgray] (Neustart erforderlich)[]
|
|||||||
setting.playerindicators.name = Spieler-Indikatoren
|
setting.playerindicators.name = Spieler-Indikatoren
|
||||||
setting.indicators.name = Verbündeten-Indikatoren
|
setting.indicators.name = Verbündeten-Indikatoren
|
||||||
setting.autotarget.name = Auto-Zielauswahl
|
setting.autotarget.name = Auto-Zielauswahl
|
||||||
setting.keyboard.name = Maus+Tastatur Steuerung
|
setting.keyboard.name = Maus+Tastatur-Steuerung
|
||||||
setting.touchscreen.name = Touchscreen-Steuerung
|
setting.touchscreen.name = Touchscreen-Steuerung
|
||||||
setting.fpscap.name = Max. FPS
|
setting.fpscap.name = Max. FPS
|
||||||
setting.fpscap.none = Kein(e)
|
setting.fpscap.none = Kein(e)
|
||||||
@@ -831,13 +831,13 @@ setting.chatopacity.name = Chat-Deckkraft
|
|||||||
setting.lasersopacity.name = Power-Laser-Deckkraft
|
setting.lasersopacity.name = Power-Laser-Deckkraft
|
||||||
setting.bridgeopacity.name = Brücken-Deckkraft
|
setting.bridgeopacity.name = Brücken-Deckkraft
|
||||||
setting.playerchat.name = Chat im Spiel anzeigen
|
setting.playerchat.name = Chat im Spiel anzeigen
|
||||||
public.confirm = Willst du dein Spiel öffentlich zugänglich machen?\n[accent]Jeder kann deinem Spiel beitreten.\n[lightgray]Dies kann später in den Einstellung->Spielt->Öffentliches Spiel geändert werden.
|
public.confirm = Willst du dein Spiel öffentlich zugänglich machen?\n[accent]Jeder kann deinem Spiel beitreten.\n[lightgray]Dies kann später in den Einstellungen->Spiel->Öffentliches Spiel geändert werden.
|
||||||
public.beta = Bemerke: Beta-Versionen des Spiels können keine öffentlichen Spiele machen.
|
public.beta = Bemerke: Beta-Versionen des Spiels können keine öffentlichen Spiele machen.
|
||||||
uiscale.reset = UI-Skalierung wurde geändert.\nDrücke "OK", um diese Skalierung zu bestätigen.\n[scarlet]Zurückkehren und Beenden in[accent] {0}[] Einstellungen...
|
uiscale.reset = UI-Skalierung wurde geändert.\nDrücke "OK", um diese Skalierung zu bestätigen.\n[scarlet]Zurückkehren und Beenden in[accent] {0}[] Einstellungen...
|
||||||
uiscale.cancel = Abbrechen & Beenden
|
uiscale.cancel = Abbrechen & Beenden
|
||||||
setting.bloom.name = Bloom
|
setting.bloom.name = Bloom
|
||||||
keybind.title = Tasten zuweisen
|
keybind.title = Tasten zuweisen
|
||||||
keybinds.mobile = [scarlet]Die meisten Tastenzuweisungen hier funktionieren auf z.B. mobilen Geräten nicht. Nur grundlegende Bewegung wird unterstützt.
|
keybinds.mobile = [scarlet]Die meisten Tastenzuweisungen hier funktionieren auf mobilen Geräten nicht. Nur grundlegende Bewegung wird unterstützt.
|
||||||
category.general.name = Allgemein
|
category.general.name = Allgemein
|
||||||
category.view.name = Ansicht
|
category.view.name = Ansicht
|
||||||
category.multiplayer.name = Mehrspieler
|
category.multiplayer.name = Mehrspieler
|
||||||
@@ -845,7 +845,7 @@ category.blocks.name = Blockauswahl
|
|||||||
command.attack = Angreifen
|
command.attack = Angreifen
|
||||||
command.rally = Patrouillieren
|
command.rally = Patrouillieren
|
||||||
command.retreat = Rückzug
|
command.retreat = Rückzug
|
||||||
command.idle = Idle
|
command.idle = Stehen bleiben
|
||||||
placement.blockselectkeys = \n[lightgray]Taste: [{0},
|
placement.blockselectkeys = \n[lightgray]Taste: [{0},
|
||||||
keybind.respawn.name = Respawn
|
keybind.respawn.name = Respawn
|
||||||
keybind.control.name = Einheit steuern
|
keybind.control.name = Einheit steuern
|
||||||
@@ -888,7 +888,7 @@ keybind.break_block.name = Block zerstören
|
|||||||
keybind.deselect.name = Auswahl aufheben
|
keybind.deselect.name = Auswahl aufheben
|
||||||
keybind.pickupCargo.name = Block aufheben
|
keybind.pickupCargo.name = Block aufheben
|
||||||
keybind.dropCargo.name = Block fallen lassen
|
keybind.dropCargo.name = Block fallen lassen
|
||||||
keybind.command.name = Eineiten kommandieren
|
keybind.command.name = Einheiten kommandieren
|
||||||
keybind.shoot.name = Schießen
|
keybind.shoot.name = Schießen
|
||||||
keybind.zoom.name = Zoomen
|
keybind.zoom.name = Zoomen
|
||||||
keybind.menu.name = Menü
|
keybind.menu.name = Menü
|
||||||
@@ -933,7 +933,7 @@ 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.enemycorebuildradius = Bauverbot Radius druch 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
|
||||||
rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator
|
rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator
|
||||||
@@ -1217,7 +1217,7 @@ block.multiplicative-reconstructor.name = Multiplikativer Rekonstrukteur
|
|||||||
block.exponential-reconstructor.name = Exponentieller Rekonstrukteur
|
block.exponential-reconstructor.name = Exponentieller Rekonstrukteur
|
||||||
block.tetrative-reconstructor.name = Tetrativer Rekonstrukteur
|
block.tetrative-reconstructor.name = Tetrativer Rekonstrukteur
|
||||||
block.payload-conveyor.name = Einheitenförderband
|
block.payload-conveyor.name = Einheitenförderband
|
||||||
block.payload-router.name = Einheitverteiler
|
block.payload-router.name = Einheitenverteiler
|
||||||
block.disassembler.name = Großer Trenner
|
block.disassembler.name = Großer Trenner
|
||||||
block.silicon-crucible.name = Silizium Schmelztiegel
|
block.silicon-crucible.name = Silizium Schmelztiegel
|
||||||
block.overdrive-dome.name = Beschleunigungs-Maschine
|
block.overdrive-dome.name = Beschleunigungs-Maschine
|
||||||
@@ -1230,7 +1230,7 @@ block.interplanetary-accelerator.name = Interplanetarischer Beschleuniger
|
|||||||
block.switch.name = Schalter
|
block.switch.name = Schalter
|
||||||
block.micro-processor.name = Mikroprozessor
|
block.micro-processor.name = Mikroprozessor
|
||||||
block.logic-processor.name = Logikprozessor
|
block.logic-processor.name = Logikprozessor
|
||||||
block.hyper-processor.name = Hyperprocessor
|
block.hyper-processor.name = Hyperprozessor
|
||||||
block.logic-display.name = Logik-Bildschirm
|
block.logic-display.name = Logik-Bildschirm
|
||||||
block.large-logic-display.name = Großer Logik-Bildschirm
|
block.large-logic-display.name = Großer Logik-Bildschirm
|
||||||
block.memory-cell.name = Speicherzelle
|
block.memory-cell.name = Speicherzelle
|
||||||
@@ -1245,83 +1245,86 @@ team.green.name = Grün
|
|||||||
team.purple.name = Lila
|
team.purple.name = Lila
|
||||||
|
|
||||||
hint.skip = Überspringen
|
hint.skip = Überspringen
|
||||||
hint.desktopMove = Drücke [accent][[WASD][] um dich zu bewegen.
|
hint.desktopMove = Drücke [accent][[WASD][], um dich zu bewegen.
|
||||||
hint.zoom = [accent]Scrolle[] um rein oder raus zu zoomen.
|
hint.zoom = [accent]Scrolle[], um rein oder raus zu zoomen.
|
||||||
hint.mine = Bewege dich zum \uf8c4 Kupfererz und [accent]tippe darauf[], um es manuell abzubauen.
|
hint.mine = Bewege dich zum \uf8c4 Kupfererz und [accent]tippe darauf[], um es manuell abzubauen.
|
||||||
hint.desktopShoot = Benutze [accent][[Links-Click][] um zu schießen.
|
hint.desktopShoot = Benutze [accent][[Linksklick][], um zu schießen.
|
||||||
hint.depositItems = Um Materialien in den Kern zu tun, ziehe sie von dir zum Kern.
|
hint.depositItems = Um Materialien in den Kern zu tun, ziehe sie von dir zum Kern.
|
||||||
hint.respawn = Um im Kern zu respawnen, drücke [accent][[V][].
|
hint.respawn = Um im Kern zu respawnen, drücke [accent][[V][].
|
||||||
hint.respawn.mobile = Du steuerst nun eine Einheit oder einen Block. Um wieder zur normalen Einheit zu werden, [accent]drücke die Abbildung von dir oben links.[]
|
hint.respawn.mobile = Du steuerst nun eine Einheit oder einen Block. Um wieder zur normalen Einheit zu werden, [accent]drücke die Abbildung von dir oben links.[]
|
||||||
hint.desktopPause = Benutze [accent][[Leertaste][] um das Spiel zu pausieren oder entpausieren.
|
hint.desktopPause = Benutze [accent][[Leertaste][], um das Spiel zu pausieren oder entpausieren.
|
||||||
hint.placeDrill = Wähle die \ue85e [accent]Bohrer[]-Kategorie im Menü unten rechts aus, drücke dann auf den \uf870 [accent]Bohrer[] und clicke auf ein Feld mit Kupfererz, um ihn zu platzieren.
|
hint.placeDrill = Wähle die \ue85e [accent]Bohrer[]-Kategorie im Menü unten rechts aus, drücke dann auf den \uf870 [accent]Bohrer[] und klicke auf ein Feld mit Kupfererz, um ihn zu platzieren.
|
||||||
hint.placeDrill.mobile = Wähle die \ue85e[accent]Bohrer[]-Kategorie im Menü unten rechts aus, drücke dann auf den \uf870 [accent]Bohrer[] und clicke auf ein Feld mit Kupfererz, um ihn zu platzieren.\n\nGehe zuletzt auf das \ue800 [accent]Häkchen[] unten rechts, um dies zu bestätigen.
|
hint.placeDrill.mobile = Wähle die \ue85e[accent]Bohrer[]-Kategorie im Menü unten rechts aus, drücke dann auf den \uf870 [accent]Bohrer[] und klicke auf ein Feld mit Kupfererz, um ihn zu platzieren.\n\nGehe zuletzt auf das \ue800 [accent]Häkchen[] unten rechts, um dies zu bestätigen.
|
||||||
hint.placeConveyor = Förderbänder bewegen Materialen zwischen verschiedene Blöcke. Wähle ein \uf896 [accent]Förderband[] aus der \ue814 [accent]Verteilung[]-Kategorie aus.\n\nClicke und bewege deine Maus, um mehrere Förderbänder zu setzen.\n[accent]Scrolle[] um sie zu drehen.
|
hint.placeConveyor = Förderbänder bewegen Materialien zwischen verschiedenen Blöcken. Wähle ein \uf896 [accent]Förderband[] aus der \ue814 [accent]Verteilung[]-Kategorie aus.\n\nKlicke und bewege deine Maus, um mehrere Förderbänder zu setzen.\n[accent]Scrolle[] um sie zu drehen.
|
||||||
hint.placeConveyor.mobile = Förderbänder bewegen Materialen zwischen verschiedene Blöcke. Wähle ein \uf896 [accent]Förderband[] aus der \ue814 [accent]Verteilung[]-Kategorie aus.\n\nHalte deinen Finger eine Sekunde auf dem Bildschirmund bewege ihn dann, um mehrere Förderbänder zu setzen.
|
hint.placeConveyor.mobile = Förderbänder bewegen Materialien zwischen verschiedenen Blöcken. Wähle ein \uf896 [accent]Förderband[] aus der \ue814 [accent]Verteilung[]-Kategorie aus.\n\nHalte deinen Finger eine Sekunde auf dem Bildschirm und bewege ihn dann, um mehrere Förderbänder zu setzen.
|
||||||
hint.placeTurret = Platziere \uf861 [accent]Geschütze[] um deine Basis vor Gegnern zu beschützen.\n\nGeschütze benötigen Munition - in diesem Fall \uf838Kupfer.\nBenutze Bohrer und Förderbänder, um dies zu besorgen.
|
hint.placeTurret = Platziere \uf861 [accent]Geschütze[], um deine Basis vor Gegnern zu beschützen.\n\nGeschütze benötigen Munition - in diesem Fall \uf838Kupfer.\nBenutze Bohrer und Förderbänder, um dies zu besorgen.
|
||||||
hint.breaking = Benutze [accent]Rechts-Click[] und bewege deine Maus, um zu zerstören.
|
hint.breaking = Benutze [accent]Rechtsklick[] und bewege deine Maus, um zu zerstören.
|
||||||
hint.breaking.mobile = Aktiviere den \ue817 [accent]Hammer[] unten rechts and tippe, um Blöcke zu zerstören.\n\nHalte deinen Finger auf dem Bildschirm um eine Fläche auszuwählen.
|
hint.breaking.mobile = Aktiviere den \ue817 [accent]Hammer[] unten rechts und tippe, um Blöcke zu zerstören.\n\nHalte deinen Finger auf dem Bildschirm, um eine Fläche auszuwählen.
|
||||||
hint.research = Nehme den \ue875 [accent]Forschen[]-Knopf um neue Technologien zu erforschen.
|
hint.research = Nehme den \ue875 [accent]Forschen[]-Knopf um neue Technologien zu erforschen.
|
||||||
hint.research.mobile = Nehme den \ue875 [accent]Forschen[]-Knopf im \ue88c [accent]Menü[] um neue Technologien zu erforschen.
|
hint.research.mobile = Nehme den \ue875 [accent]Forschen[]-Knopf im \ue88c [accent]Menü[], um neue Technologien zu erforschen.
|
||||||
hint.unitControl = Halte [accent][[L-STRG][] und [accent]clicke[] um alliierte Einheiten oder Geschütze zu steuern.
|
hint.unitControl = Halte [accent][[L-STRG][] und [accent]klicke[], um alliierte Einheiten oder Geschütze zu steuern.
|
||||||
hint.unitControl.mobile = [accent][Doppel-Clicke[], um alliierte Einheiten oder Geschütze zu steuern.
|
hint.unitControl.mobile = [accent][Doppelklicke[], um alliierte Einheiten oder Geschütze zu steuern.
|
||||||
hint.launch = Sobald du genug Ressourcen gesammelt hast, kannst du [accent]Starten[], indem du andere Sektoren auf der \ue827 [accent]Karte[] unten rechts auswählst.
|
hint.launch = Sobald du genug Ressourcen gesammelt hast, kannst du [accent]Starten[], indem du andere Sektoren auf der \ue827 [accent]Karte[] unten rechts auswählst.
|
||||||
hint.launch.mobile = Sobald du genug Ressourcen gesammelt hast, kannst du [accent]Starten[], indem du andere Sektoren auf der \ue827 [accent]Karte[] im \ue88c [accent]Menu[] auswählst.
|
hint.launch.mobile = Sobald du genug Ressourcen gesammelt hast, kannst du [accent]Starten[], indem du andere Sektoren auf der \ue827 [accent]Karte[] im \ue88c [accent]Menü[] auswählst.
|
||||||
hint.schematicSelect = Halte [accent][[F][] gedrückt und bewege deine Maus, um Blöcke zu kopieren.\n\nMit [accent][[Mittel-Click][] kannst du einen einzelnen Block kopieren.
|
hint.schematicSelect = Halte [accent][[F][] gedrückt und bewege deine Maus, um Blöcke zu kopieren.\n\nMit [accent][[Mittelklick][] kannst du einen einzelnen Block kopieren.
|
||||||
hint.conveyorPathfind = Halte [accent][[L-STRG][] während du Förderbänder baust, um automatisch einen Weg zu finden.
|
hint.conveyorPathfind = Halte [accent][[L-STRG][] während du Förderbänder baust, um automatisch einen Weg zu finden.
|
||||||
hint.conveyorPathfind.mobile = Aktiviere den \ue844 [accent]Diagonal-Modus[] unten rechts und platziere Förderbänder, um automatisch einen Weg zu generieren.
|
hint.conveyorPathfind.mobile = Aktiviere den \ue844 [accent]Diagonal-Modus[] unten rechts und platziere Förderbänder, um automatisch einen Weg zu generieren.
|
||||||
hint.boost = Halte [accent][[L-Shift][] gedrückt um über Hindernisse zu boosten.\n\nNur manche Bodeneinheiten können das.
|
hint.boost = Halte [accent][[L-Shift][] gedrückt, um über Hindernisse zu boosten.\n\nNur manche Bodeneinheiten können das.
|
||||||
hint.command = Drücke [accent][[G][] um [accent]ähnliche[] Einheiten in Formation zu steuern.\n\nUm Bodeneinheiten zu steuern musst du zuerst eine Bodeneinheite werden.
|
hint.command = Drücke [accent][[G][], um [accent]ähnliche[] Einheiten in Formation zu steuern.\n\nUm Bodeneinheiten zu steuern, musst du zuerst eine Bodeneinheit werden.
|
||||||
hint.command.mobile = [accent][[Doppel-Clicke][] deine Einheit um [accent]ähnliche[] Einheiten in Formation zu steuern.
|
hint.command.mobile = [accent][[Doppelklicke][] deine Einheit, um [accent]ähnliche[] Einheiten in Formation zu steuern.
|
||||||
hint.payloadPickup = Du kannst [accent][[[] drücken, um kleine Einheiten oder Blöcke hochzuheben.
|
hint.payloadPickup = Du kannst [accent][[[] drücken, um kleine Einheiten oder Blöcke hochzuheben.
|
||||||
hint.payloadPickup.mobile = [accent]Halte deinen Finger[] auf eine kleine Einheit oder einen kleinen Block, um ihn aufzuheben.
|
hint.payloadPickup.mobile = [accent]Halte deinen Finger[] auf eine kleine Einheit oder einen kleinen Block, um ihn aufzuheben.
|
||||||
hint.payloadDrop = Drücke [accent]][] um etwas fallen zu lassen.
|
hint.payloadDrop = Drücke [accent]][], um etwas fallen zu lassen.
|
||||||
hint.payloadDrop.mobile = [accent]Halte deinen Finger[] auf einen Freien Ort um eine Einheit oder einen Block da fallen zu lassen.
|
hint.payloadDrop.mobile = [accent]Halte deinen Finger[] auf einen freien Ort, um eine Einheit oder einen Block da fallen zu lassen.
|
||||||
hint.waveFire = [accent]Wellen[]-Geschütze mit Wassermunition löschen automatisch Feuer.
|
hint.waveFire = [accent]Wellen[]-Geschütze mit Wassermunition löschen automatisch Feuer.
|
||||||
hint.generator = \uf879 [accent]Verbrennungsgeneratoren[] verbrennen Kohle und übertragen diesen Strom in angrenzende Blöcke.\n\nDie Reichweite der Stromübertragung kann mit \uf87f [accent]Stromknoten[] erweitert werden.
|
hint.generator = \uf879 [accent]Verbrennungsgeneratoren[] verbrennen Kohle und übertragen diesen Strom in angrenzende Blöcke.\n\nDie Reichweite der Stromübertragung kann mit \uf87f [accent]Stromknoten[] erweitert werden.
|
||||||
hint.guardian = [accent]Boss[]-Einheiten sind gepanzert. Schwache Munition wie [accent]Kupfer[] und [accent]Blei[] sind [scarlet]nicht ausreichend[].\n\nBenutze bessere Geschütze oder \uf835 [accent]Graphit[] als \uf861Duo-/\uf859Salvenmunition um einen Boss zu besiegen.
|
hint.guardian = [accent]Boss[]-Einheiten sind gepanzert. Schwache Munition wie [accent]Kupfer[] und [accent]Blei[] sind [scarlet]nicht effektiv[].\n\nBenutze bessere Geschütze oder \uf835 [accent]Graphit[] als \uf861Duo-/\uf859Salvenmunition um einen Boss zu besiegen.
|
||||||
|
hint.coreUpgrade = Kerne können aufgerüstet werden, indem man [accent]bessere Kerne über sie platziert[].\n\nPlatziere einen [accent]Fundament[]-Kern über einen [accent]Scherben[]-Kern. Stelle sicher, dass ausreichend Platz verfügbar ist.
|
||||||
|
hint.presetLaunch = Zu grauen [accent]Sektoren[] wie dem [accent]Frozen Forest[] kann man von überall aus hin starten. Es ist nicht nötig, benachbarte Sektoren zu erobern.\n\n[accent]Nummerierte Sektoren[] wie dieser hier sind [accent]optional[].
|
||||||
|
hint.coreIncinerate = Wenn dem Kern Materialien zugeführt werden, für die er keinen Platz mehr hat, werden diese [accent]verbrannt[].
|
||||||
|
|
||||||
item.copper.description = Wird als Baumaterial oder Munition verwendet.
|
item.copper.description = Wird als Baumaterial oder Munition verwendet.
|
||||||
item.copper.details = Kupfer. Auf Serpulo reichlich vorhanden. Strukturell schwach, solange es nicht verstärkt wird.
|
item.copper.details = Kupfer. Auf Serpulo reichlich vorhanden. Strukturell schwach, solange es nicht verstärkt wird.
|
||||||
item.lead.description = Wird in elektrischen Blöcken oder beim Flüssigkeitstransport verwendet.
|
item.lead.description = Wird in elektrischen Blöcken oder beim Flüssigkeitstransport verwendet.
|
||||||
item.lead.details = Dicht. Träge. Wird sehr oft in Batterien verwendet.\nInfo: Wahrscheinlich giftig für biologische Lebenwesen, obwohl es sowieso nicht mehr viele von denen gibt.
|
item.lead.details = Dicht. Träge. Wird sehr oft in Batterien verwendet.\nInfo: Wahrscheinlich giftig für biologische Lebewesen, obwohl es sowieso nicht mehr viele von denen gibt.
|
||||||
item.metaglass.description = Wird beim Flüssigkeitstransport und -lagerung verwendet.
|
item.metaglass.description = Wird beim Flüssigkeitstransport und -lagerung verwendet.
|
||||||
item.graphite.description = Wird als Munition oder elektrischer Leiter eingesetzt.
|
item.graphite.description = Wird als Munition oder elektrischer Leiter eingesetzt.
|
||||||
item.sand.description = Nützlich für die Herstellung vieler anderer Materialen.
|
item.sand.description = Nützlich für die Herstellung vieler anderer Materialien.
|
||||||
item.coal.description = Kann als Brennstoff oder zur Herstellung anderer Materialen verwendet werden.
|
item.coal.description = Kann als Brennstoff oder zur Herstellung anderer Materialien verwendet werden.
|
||||||
item.coal.details = Scheint versteinerte Pflanzenmasse zu sein, die sich schon lange vor dem Seeding gebildet hat.
|
item.coal.details = Scheint versteinerte Pflanzenmasse zu sein, die sich schon lange vor dem Seeding gebildet hat.
|
||||||
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 Materialen 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 Gebäude oder Einheiten.
|
||||||
item.silicon.description = Wird in Solarzellen, komplizierte 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.
|
||||||
item.surge-alloy.description = Wird in sehr fortgeschrittenen Waffen und Abwehrsystemen benutzt.
|
item.surge-alloy.description = Wird in sehr fortgeschrittenen Waffen und Abwehrsystemen benutzt.
|
||||||
item.spore-pod.description = Wird zur Umwandlung in Öl, Sprengstoff und Kraftstoff verwendet.
|
item.spore-pod.description = Wird zur Umwandlung in Öl, Sprengstoff und Kraftstoff verwendet.
|
||||||
item.spore-pod.details = Sporen. Wahrscheinlich ein künstlich erschaffenes Lebenwesen. Geben giftige Gase für andere Lebenwesen ab. Sehr invasiv. Unter bestimmten Bedingungen sehr brennbar.
|
item.spore-pod.details = Sporen. Wahrscheinlich ein künstlich erschaffenes Lebewesen. Geben giftige Gase für andere Lebewesen ab. Sehr invasiv. Unter bestimmten Bedingungen sehr brennbar.
|
||||||
item.blast-compound.description = Wird in Bomben oder als explosive Munition verwendet.
|
item.blast-compound.description = Wird in Bomben oder als explosive Munition verwendet.
|
||||||
item.pyratite.description = Kann in Verbrennungsgeneratoren oder als brennende Munition verbrannt werden.
|
item.pyratite.description = Kann in Verbrennungsgeneratoren oder als brennende Munition verbrannt werden.
|
||||||
|
|
||||||
liquid.water.description = Wird üblicherweise zum Kühlen von Maschinen und zur Müllverarbeitung verwendet.
|
liquid.water.description = Wird üblicherweise zum Kühlen von Maschinen und zur Müllverarbeitung verwendet.
|
||||||
liquid.slag.description = Kann in Trennern verfeinert oder als Waffe gegen Gegner verwendet werden.
|
liquid.slag.description = Kann in Trennern verfeinert oder als Waffe gegen Gegner verwendet werden.
|
||||||
liquid.oil.description = Used in advanced material production and as incendiary ammunition.
|
liquid.oil.description = Wird in fortgeschrittener Materialgewinnung und als brennende Munition verwendet.
|
||||||
liquid.cryofluid.description = Used as coolant in reactors, turrets and factories. Wird als Kühlung in Geschütze, Fabriken oder Reaktoren verwendet.
|
liquid.cryofluid.description = Wird als Kühlung in Geschützen, Fabriken oder Reaktoren verwendet.
|
||||||
|
|
||||||
block.resupply-point.description = Füllt Einheiten in der Nähe mit Kupfermunition wieder auf. Nicht mit Einheiten kompatibel, die Strom benötigen.
|
block.resupply-point.description = Füllt Einheiten in der Nähe mit Kupfermunition wieder auf. Nicht mit Einheiten kompatibel, die Strom benötigen.
|
||||||
block.armored-conveyor.description = Bewegt Materialen foran. Materialen können von der Seite nicht auf das Förderband.
|
block.armored-conveyor.description = Bewegt Materialien voran. Materialien können von der Seite nicht auf das Förderband.
|
||||||
block.illuminator.description = Eine Lichtquelle.
|
block.illuminator.description = Eine Lichtquelle.
|
||||||
block.message.description = Speichert eine Nachricht, die genutzt wird, um mit Verbündeten zu kommunizieren.
|
block.message.description = Speichert eine Nachricht, die genutzt wird, um mit Verbündeten zu kommunizieren.
|
||||||
block.graphite-press.description = Komprimiert Kohle zu Graphit.
|
block.graphite-press.description = Komprimiert Kohle zu Graphit.
|
||||||
block.multi-press.description = Komprimiert Kohle zu Graphit. Braucht für die Kühlung Wasser.
|
block.multi-press.description = Komprimiert Kohle zu Graphit. Braucht für die Kühlung Wasser.
|
||||||
block.silicon-smelter.description = Stellt aus Sand und Kohle Silizium her.
|
block.silicon-smelter.description = Stellt aus Sand und Kohle Silizium her.
|
||||||
block.kiln.description = Schmelzt Sand und Blei zu Metaglass.
|
block.kiln.description = Schmelzt Sand und Blei zu Metaglas.
|
||||||
block.plastanium-compressor.description = Produziert Plastanium aus Öl und Titan.
|
block.plastanium-compressor.description = Produziert Plastanium aus Öl und Titan.
|
||||||
block.phase-weaver.description = Produziert Phasengewebe aus Thorium und Sand.
|
block.phase-weaver.description = Produziert Phasengewebe aus Thorium und Sand.
|
||||||
block.alloy-smelter.description = Verschmilzt Titan, Blei, Silizium und Kupfer zu einer Stromstoßlegierung.
|
block.alloy-smelter.description = Verschmilzt Titan, Blei, Silizium und Kupfer zu einer Stromstoßlegierung.
|
||||||
block.cryofluid-mixer.description = Verarbeitet Wasser mit Titan zu einer Kryoflüssigkeit, die viel effizienter kühlt.
|
block.cryofluid-mixer.description = Verarbeitet Wasser mit Titan zu einer Kryoflüssigkeit, die viel effizienter kühlt.
|
||||||
block.blast-mixer.description = Stellt aus Sporen und Pyratit eine explosive Mischung her.
|
block.blast-mixer.description = Stellt aus Sporen und Pyratit eine explosive Mischung her.
|
||||||
block.pyratite-mixer.description = Vermischt Kohle, Blei und Sand zu hochentzündlichem Pyratit.
|
block.pyratite-mixer.description = Vermischt Kohle, Blei und Sand zu hochentzündlichem Pyratit.
|
||||||
block.melter.description = Erhitzt Schrott um Schlacke zu erhalten.
|
block.melter.description = Erhitzt Schrott, um Schlacke zu erhalten.
|
||||||
block.separator.description = Trennt Schlacke in seine Bestandteile.
|
block.separator.description = Trennt Schlacke in seine Bestandteile.
|
||||||
block.spore-press.description = Komprimiert Sporen-Pods zu Öl.
|
block.spore-press.description = Komprimiert Sporen-Pods zu Öl.
|
||||||
block.pulverizer.description = Zertrümmert Schrott zu Sand.
|
block.pulverizer.description = Zertrümmert Schrott zu Sand.
|
||||||
@@ -1354,24 +1357,24 @@ block.force-projector.description = Erzeugt ein sechseckiges Kraftfeld um sich h
|
|||||||
block.shock-mine.description = Greift Gegner mit Lichtbögen an, wenn sie über sie laufen.
|
block.shock-mine.description = Greift Gegner mit Lichtbögen an, wenn sie über sie laufen.
|
||||||
block.conveyor.description = Bewegt Materialien vorwärts.
|
block.conveyor.description = Bewegt Materialien vorwärts.
|
||||||
block.titanium-conveyor.description = Bewegt Materialien vorwärts, aber schneller als ein normales Förderband.
|
block.titanium-conveyor.description = Bewegt Materialien vorwärts, aber schneller als ein normales Förderband.
|
||||||
block.plastanium-conveyor.description = Bewegt Materialen in Gruppen.\nNimmt hinten Materialien an und gibt sie vorne in drei Richtungen aus. Erfordert für maximale Effizienz mehrere Ein- und Ausgänge.
|
block.plastanium-conveyor.description = Bewegt Materialien in Gruppen.\nNimmt hinten Materialien an und gibt sie vorne in drei Richtungen aus. Erfordert für maximale Effizienz mehrere Ein- und Ausgänge.
|
||||||
block.junction.description = Fungiert als Brücke zwischen zwei kreuzenden Förderbändern.
|
block.junction.description = Fungiert als Brücke zwischen zwei kreuzenden Förderbändern.
|
||||||
block.bridge-conveyor.description = Transportiert Materialien über Terrain oder über Blöcke.
|
block.bridge-conveyor.description = Transportiert Materialien über Terrain oder über Blöcke.
|
||||||
block.phase-conveyor.description = Transportiert Materialien sofort über Terrain oder über Blöcke. Höhere Reichweite als Brückenförderbänder, braucht aber Strom.
|
block.phase-conveyor.description = Transportiert Materialien sofort über Terrain oder über Blöcke. Höhere Reichweite als Brückenförderbänder, braucht aber Strom.
|
||||||
block.sorter.description = Sortiert Materialien. Wenn ein Gegenstand der Auswahl entspricht, wird er vorne herausgegeben. Andernfalls wird er links oder rechts ausgegeben.
|
block.sorter.description = Sortiert Materialien. Wenn ein Gegenstand der Auswahl entspricht, wird er vorne herausgegeben. Andernfalls wird er links oder rechts ausgegeben.
|
||||||
block.inverted-sorter.description = Wie ein normaler Sortierer, aber gibt das ausgewählte Material seitwärts aus.
|
block.inverted-sorter.description = Wie ein normaler Sortierer, aber gibt das ausgewählte Material seitwärts aus.
|
||||||
block.router.description = Verteilt Materialen auf bis zu drei Richtungen.
|
block.router.description = Verteilt Materialien auf bis zu drei Richtungen.
|
||||||
block.router.details = Ein nötiges Übel. Es is 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 Materialen auf bis zu sieben Richtungen.
|
block.distributor.description = Verteilt Materialien auf bis zu sieben Richtungen.
|
||||||
block.overflow-gate.description = Gibt Materialen 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. Kann nicht neben anderen Überlauf- oder Unterlauftoren verwendet werden.
|
||||||
block.underflow-gate.description = Das Gegenteil eines Überlauftors. Gibt Materialen 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. Kann nicht neben anderen Überlauf- oder Unterlauftoren verwendet werden.
|
||||||
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.
|
||||||
block.thermal-pump.description = Eine Pumpe.
|
block.thermal-pump.description = Eine Pumpe.
|
||||||
block.conduit.description = Transportiert Flüssigkeiten. Wird mit Extraktoren, Pumpen oder anderen Kanälen benutzt.
|
block.conduit.description = Transportiert Flüssigkeiten. Wird mit Extraktoren, Pumpen oder anderen Kanälen benutzt.
|
||||||
block.pulse-conduit.description = Transportiert Flüssigkeiten. Transportiert Flüssigkeiten schneller und speichert mehr als ein Leitungsrohr.
|
block.pulse-conduit.description = Transportiert Flüssigkeiten. Transportiert Flüssigkeiten schneller und speichert mehr als ein Leitungsrohr.
|
||||||
block.plated-conduit.description = Transportiert Flüssigkeiten. Nimmt keine Flüssigkeiten von der Seite an.\nHat keine Leks.
|
block.plated-conduit.description = Transportiert Flüssigkeiten. Nimmt keine Flüssigkeiten von der Seite an.\nHat keine Lecks.
|
||||||
block.liquid-router.description = Verteilt Flüssigkeiten auf bis zu drei Richtungen. Speicher außerdem eine kleine Menge an Flüssigkeit.
|
block.liquid-router.description = Verteilt Flüssigkeiten auf bis zu drei Richtungen. Speicher außerdem eine kleine Menge an Flüssigkeit.
|
||||||
block.liquid-tank.description = Speichert eine große Menge an Flüssigkeiten. Ähnlich wie ein Flüssigkeitsverteiler.
|
block.liquid-tank.description = Speichert eine große Menge an Flüssigkeiten. Ähnlich wie ein Flüssigkeitsverteiler.
|
||||||
block.liquid-junction.description = Fungiert als Brücke über zwei kreuzende Kanäle.
|
block.liquid-junction.description = Fungiert als Brücke über zwei kreuzende Kanäle.
|
||||||
@@ -1385,37 +1388,37 @@ block.battery.description = Speichert Strom, solange ein Überschuss besteht, un
|
|||||||
block.battery-large.description = Speichert Strom, solange ein Überschuss besteht, und gibt ihn bei Knappheit ab, solange Kapazität vorhanden ist. Speichert mehr Strom als eine normale Batterie.
|
block.battery-large.description = Speichert Strom, solange ein Überschuss besteht, und gibt ihn bei Knappheit ab, solange Kapazität vorhanden ist. Speichert mehr Strom als eine normale Batterie.
|
||||||
block.combustion-generator.description = Generiert Strom, indem Kohle oder andere entzündliche Materialien verbrannt werden.
|
block.combustion-generator.description = Generiert Strom, indem Kohle oder andere entzündliche Materialien verbrannt werden.
|
||||||
block.thermal-generator.description = Erzeugt an heißen Orten große Mengen Strom.
|
block.thermal-generator.description = Erzeugt an heißen Orten große Mengen Strom.
|
||||||
block.steam-generator.description = Wandelt mit endzündlichen Materialen Wasser zu Wasserdampf um und benutzt diesen dann, um Strom zu generieren.
|
block.steam-generator.description = Wandelt mit entzündlichen Materialien Wasser zu Wasserdampf um und benutzt diesen dann, um Strom zu generieren.
|
||||||
block.differential-generator.description = Erzeugt große Mengen an Energie. Nutzt den Temperaturunterschied zwischen Kryofluid und brennendem Pyratit.
|
block.differential-generator.description = Erzeugt große Mengen an Energie. Nutzt den Temperaturunterschied zwischen Kryoflüssigkeit und brennendem Pyratit.
|
||||||
block.rtg-generator.description = Ein Radioisotopengenerator, der aus radioaktivem Zerfall Energie herstellt.
|
block.rtg-generator.description = Ein Radioisotopengenerator, der aus radioaktivem Zerfall Energie herstellt.
|
||||||
block.solar-panel.description = Erzeugt kleine Mengen an Strom aus Sonnenenergie.
|
block.solar-panel.description = Erzeugt kleine Mengen an Strom aus Sonnenenergie.
|
||||||
block.solar-panel-large.description = Erzeugt kleine Mengen an Strom aus Sonnenenergie. Effizienter als eine normale Solarzelle.
|
block.solar-panel-large.description = Erzeugt kleine Mengen an Strom aus Sonnenenergie. Effizienter als eine normale Solarzelle.
|
||||||
block.thorium-reactor.description = Erzeugt riesige Mengen Strom aus Thorium. Benötigt konstante Kühlung. Explodiert gewaltsam, wenn unzureichende Kühlung vorhanden ist.
|
block.thorium-reactor.description = Erzeugt riesige Mengen Strom aus Thorium. Benötigt konstante Kühlung. Explodiert gewaltsam, wenn unzureichende Kühlung vorhanden ist.
|
||||||
block.impact-reactor.description = Ein Generator, der bei höchster Effizienz enorme Mengen an Leistung erzeugen kann. Erfordert eine erhebliche Leistungsaufnahme, um den Prozess zu starten.
|
block.impact-reactor.description = Ein Generator, der bei höchster Effizienz enorme Mengen an Leistung erzeugen kann. Erfordert eine erhebliche Leistungsaufnahme, um den Prozess zu starten.
|
||||||
block.mechanical-drill.description = Ein günstiger Bohrer. Wenn er auf Erz gesetzt wird, baut er unbegrenzt das Erz mit geringer Geschwindigkeit ab. Kann nur einfach Ressourcen abbauen.
|
block.mechanical-drill.description = Ein günstiger Bohrer. Wenn er auf Erz gesetzt wird, baut er unbegrenzt das Erz mit geringer Geschwindigkeit ab. Kann nur einfach Ressourcen abbauen.
|
||||||
block.pneumatic-drill.description = Ein verbesserter Bohrer, der schneller ist und in der Lage ist, härtere Erze abzubauen, indem er von Luftdruck gebrauch macht.
|
block.pneumatic-drill.description = Ein verbesserter Bohrer, der schneller ist und in der Lage ist, härtere Erze abzubauen, indem er von Luftdruck Gebrauch macht.
|
||||||
block.laser-drill.description = Erlaubt es, durch Lasertechnologie noch schneller zu bohren, benötigt aber Strom. Erlaubt zusätzlich das Abbauen von radioaktivem Thorium.
|
block.laser-drill.description = Erlaubt es, durch Lasertechnologie noch schneller zu bohren, benötigt aber Strom. Erlaubt zusätzlich das Abbauen von radioaktivem Thorium.
|
||||||
block.blast-drill.description = Der ultimative Bohrer. Benötigt große Mengen an Strom.
|
block.blast-drill.description = Der ultimative Bohrer. Benötigt große Mengen an Strom.
|
||||||
block.water-extractor.description = Extrahiert Wasser aus dem Boden. Verwende ihn, wenn es keinen See in der Nähe gibt.
|
block.water-extractor.description = Extrahiert Wasser aus dem Boden. Verwende ihn, wenn es keinen See in der Nähe gibt.
|
||||||
block.cultivator.description = Kultiviert winzige Mengen atmosphärischer Mikrosporen in Sporen-Pods.
|
block.cultivator.description = Kultiviert winzige Mengen atmosphärischer Mikrosporen in Sporen-Pods.
|
||||||
block.cultivator.details = Zurückgewonnene Technologie. Wird benutzt, um große Mengen Biomasse so effizient wie möglich herzustellen. Wahrscheinlich der ehemaliger Inkbator der Sporen, die Serpulo heute bedecken.
|
block.cultivator.details = Zurückgewonnene Technologie. Wird benutzt, um große Mengen Biomasse so effizient wie möglich herzustellen. Wahrscheinlich der ehemaliger Inkubator der Sporen, die Serpulo heute bedecken.
|
||||||
block.oil-extractor.description = Verwendet große Mengen an Strom, Sand und Wasser um Öl zu extrahieren.
|
block.oil-extractor.description = Verwendet große Mengen an Strom, Sand und Wasser, um Öl zu extrahieren.
|
||||||
block.core-shard.description = Kern der Basis. Einmal zerstört, ist jeglicher Kontakt zum Sektor verloren.
|
block.core-shard.description = Kern der Basis. Einmal zerstört, ist jeglicher Kontakt zum Sektor verloren.
|
||||||
block.core-shard.details = The erste Version. Kompakt. Selbstduplizierend. Mit Einwmalraketen ausgestattet. Nicht für Interplanetarische Reisen geeignet.
|
block.core-shard.details = Die erste Version. Kompakt. Selbstduplizierend. Mit Einmalraketen ausgestattet. Nicht für Interplanetarische Reisen geeignet.
|
||||||
block.core-foundation.description = Kern der Basis. Besser gepanzert. Speichert mehr Ressourcen.
|
block.core-foundation.description = Kern der Basis. Besser gepanzert. Speichert mehr Ressourcen.
|
||||||
block.core-foundation.details = Die zeite Version.
|
block.core-foundation.details = Die zweite Version.
|
||||||
block.core-nucleus.description = Kern der Basis. Sehr gut gepanzert. Speichert enorme Mengen an Ressourcen.
|
block.core-nucleus.description = Kern der Basis. Sehr gut gepanzert. Speichert enorme Mengen an Ressourcen.
|
||||||
block.core-nucleus.details = Die dritte und letzte Version.
|
block.core-nucleus.details = Die dritte und letzte Version.
|
||||||
block.vault.description = Speichert eine große Menge an Materialien pro Typ. Ein[lightgray] Entlader[] kann verwendet werden, um Materialien auszuladen.
|
block.vault.description = Speichert eine große Menge an Materialien pro Typ. Ein[lightgray] Entlader[] kann verwendet werden, um Materialien auszuladen.
|
||||||
block.container.description = Speichert eine kleine Menge an Materialien pro Typ. Ein[lightgray] Entlader[] kann verwendet werden, um Materialien auszuladen.
|
block.container.description = Speichert eine kleine Menge an Materialien pro Typ. Ein[lightgray] Entlader[] kann verwendet werden, um Materialien auszuladen.
|
||||||
block.unloader.description = Entlädt Materialien aus einem Block.
|
block.unloader.description = Entlädt Materialien aus einem Block.
|
||||||
block.launch-pad.description = Startet Materialen in andere Sektoren.
|
block.launch-pad.description = Startet Materialien in andere Sektoren.
|
||||||
block.duo.description = Schießt auf Gegner.
|
block.duo.description = Schießt auf Gegner.
|
||||||
block.scatter.description = Ein mittelgroßer Anti-Luft-Turm. Sprüht Blei- oder Schrottklumpen auf feindliche Lufteinheiten.
|
block.scatter.description = Ein mittelgroßer Anti-Luft-Turm. Sprüht Blei- oder Schrottklumpen auf feindliche Lufteinheiten.
|
||||||
block.scorch.description = Verbrennt alle Bodenfeinde in der Nähe. Hochwirksam im Nahbereich.
|
block.scorch.description = Verbrennt alle Bodenfeinde in der Nähe. Hochwirksam im Nahbereich.
|
||||||
block.hail.description = Schießt kleine Geschosse auf weit entfernte Gegner.
|
block.hail.description = Schießt kleine Geschosse auf weit entfernte Gegner.
|
||||||
block.wave.description = Schießt Flüssigkeiten auf Gegner. Löscht Feuer automatisch, wenn Wasser aks Munition verwendet wird.
|
block.wave.description = Schießt Flüssigkeiten auf Gegner. Löscht Feuer automatisch, wenn Wasser als Munition verwendet wird.
|
||||||
block.lancer.description = Läd sich auf und schießt kräftige Laserstrahlen auf Feinde.
|
block.lancer.description = Lädt sich auf und schießt kräftige Laserstrahlen auf Feinde.
|
||||||
block.arc.description = Schießt Lichtbögen in Richtung des Gegners.
|
block.arc.description = Schießt Lichtbögen in Richtung des Gegners.
|
||||||
block.swarmer.description = Schießt zielsuchende Raketenschwärme ab.
|
block.swarmer.description = Schießt zielsuchende Raketenschwärme ab.
|
||||||
block.salvo.description = Schießt Schüsse in Salven ab.
|
block.salvo.description = Schießt Schüsse in Salven ab.
|
||||||
@@ -1423,16 +1426,16 @@ block.fuse.description = Schießt drei starke Strahlen mit kurzer Reichweite ab.
|
|||||||
block.ripple.description = Schießt mehrere Schüsse gleichzeitig auf weit entfernte Gegner.
|
block.ripple.description = Schießt mehrere Schüsse gleichzeitig auf weit entfernte Gegner.
|
||||||
block.cyclone.description = Schießt explodierende Geschosse auf Gegner.
|
block.cyclone.description = Schießt explodierende Geschosse auf Gegner.
|
||||||
block.spectre.description = Schießt große, panzerbrechende Kugeln auf Luft- und Bodenziele.
|
block.spectre.description = Schießt große, panzerbrechende Kugeln auf Luft- und Bodenziele.
|
||||||
block.meltdown.description = Läd sich auf und schießt einen starken, durchgängigen Laser auf Gegner. Braucht Kühlung.
|
block.meltdown.description = Lädt sich auf und schießt einen starken, durchgängigen Laser auf Gegner. Braucht Kühlung.
|
||||||
block.foreshadow.description = Schießt einen eingizen Schuss mit einem einzigen Ziel über eine erstaunlich große Distanz.
|
block.foreshadow.description = Schießt einen einzigen Schuss mit einem einzigen Ziel über eine erstaunlich große Distanz.
|
||||||
block.repair-point.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung.
|
block.repair-point.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung.
|
||||||
block.segment.description = Beschädigt und zerstört gegnerische Projektile. Laser werden nicht anvisiert.
|
block.segment.description = Beschädigt und zerstört gegnerische Projektile. Laser werden nicht anvisiert.
|
||||||
block.parallax.description = Benutzt einen Traktorstrahl, um Gegner heranzuziehen und sie dabei anzugreifen.
|
block.parallax.description = Benutzt einen Traktorstrahl, um Gegner heranzuziehen und sie dabei anzugreifen.
|
||||||
block.tsunami.description = Schießt mit einem kräftgem Strahl aus Flüssigkeit auf Gegner. Löscht Feuer automatisch, wenn Wasser aks Munition verwendet wird.
|
block.tsunami.description = Schießt mit einem kräftigen Strahl aus Flüssigkeit auf Gegner. Löscht Feuer automatisch, wenn Wasser als Munition verwendet wird.
|
||||||
block.silicon-crucible.description = Benutzt Pyratit als Hitzequelle, um aus Sand und Kohle Silizium herzustellen. Die Effizienz wird an heißen Orten erhöht.
|
block.silicon-crucible.description = Benutzt Pyratit als Hitzequelle, um aus Sand und Kohle Silizium herzustellen. Die Effizienz wird an heißen Orten erhöht.
|
||||||
block.disassembler.description = Trennt Schlacke in winzige Mengen exotischer Mineralien, verliert dafür aber an Effizienz. Kann Thorium herstellen.
|
block.disassembler.description = Trennt Schlacke in winzige Mengen exotischer Mineralien, verliert dafür aber an Effizienz. Kann Thorium herstellen.
|
||||||
block.overdrive-dome.description = Erhöht die Geschwindigkeit von nahegelegenen Blöcken. \nBenötigt Phasengewebe und Silizium.
|
block.overdrive-dome.description = Erhöht die Geschwindigkeit von nahegelegenen Blöcken. \nBenötigt Phasengewebe und Silizium.
|
||||||
block.payload-conveyor.description = Bewegt größere Objeke, zum Beispiel Einheiten.
|
block.payload-conveyor.description = Bewegt größere Objekte, zum Beispiel Einheiten.
|
||||||
block.payload-router.description = Verteilt Einheiten auf bis zu drei Richtungen.
|
block.payload-router.description = Verteilt Einheiten auf bis zu drei Richtungen.
|
||||||
block.command-center.description = Steuert Einheiten mit verschiedenen Befehlen.
|
block.command-center.description = Steuert Einheiten mit verschiedenen Befehlen.
|
||||||
block.ground-factory.description = Stellt Bodeneinheiten her. Einheiten können einfach so verwendet oder in einem Rekonstrukteur verbessert werden.
|
block.ground-factory.description = Stellt Bodeneinheiten her. Einheiten können einfach so verwendet oder in einem Rekonstrukteur verbessert werden.
|
||||||
@@ -1450,7 +1453,7 @@ block.memory-cell.description = Speichert Informationen für einen Prozessor.
|
|||||||
block.memory-bank.description = Speichert Informationen für einen Prozessor. Hohe Kapazität.
|
block.memory-bank.description = Speichert Informationen für einen Prozessor. Hohe Kapazität.
|
||||||
block.logic-display.description = Zeigt mithilfe eines Prozessors Beliebiges an.
|
block.logic-display.description = Zeigt mithilfe eines Prozessors Beliebiges an.
|
||||||
block.large-logic-display.description = Zeigt mithilfe eines Prozessors Beliebiges an.
|
block.large-logic-display.description = Zeigt mithilfe eines Prozessors Beliebiges an.
|
||||||
block.interplanetary-accelerator.description = Ein riesen Railgun-Turm, der mithilfe des Elektromagnetismuses Kerne auf die nötige Geschwindigkeit bringt, um interplanetarisches Reisen zu ermöglichen.
|
block.interplanetary-accelerator.description = Ein Riesen-Railgun-Turm, der mithilfe des Elektromagnetismus Kerne auf die nötige Geschwindigkeit bringt, um interplanetarisches Reisen zu ermöglichen.
|
||||||
|
|
||||||
unit.dagger.description = Schießt normale Kugeln auf alle Feinde in der Nähe.
|
unit.dagger.description = Schießt normale Kugeln auf alle Feinde in der Nähe.
|
||||||
unit.mace.description = Schießt Feuer auf alle Gegner in der Nähe.
|
unit.mace.description = Schießt Feuer auf alle Gegner in der Nähe.
|
||||||
@@ -1475,7 +1478,7 @@ unit.eclipse.description = Feuert zwei durchdringende Laser und einen Flaksperrf
|
|||||||
unit.mono.description = Baut Automatisch Blei und Kupfer ab. Dieses wird in den Kern gebracht.
|
unit.mono.description = Baut Automatisch Blei und Kupfer ab. Dieses wird in den Kern gebracht.
|
||||||
unit.poly.description = Baut zerstörte Blöcke wieder auf und hilft anderen Einheiten beim Bauen.
|
unit.poly.description = Baut zerstörte Blöcke wieder auf und hilft anderen Einheiten beim Bauen.
|
||||||
unit.mega.description = Heilt automatisch beschädigte Blöcke. Kann kleine Blöcke oder Bodeneinheiten tragen.
|
unit.mega.description = Heilt automatisch beschädigte Blöcke. Kann kleine Blöcke oder Bodeneinheiten tragen.
|
||||||
unit.quad.description = Wirft große Bomben auf Bodenziele ab, welche Gegnern schaden und eingene Blöcke heilen. Kann Bodeneinheiten tragen.
|
unit.quad.description = Wirft große Bomben auf Bodenziele ab, welche Gegnern schaden und einige Blöcke heilen. Kann Bodeneinheiten tragen.
|
||||||
unit.oct.description = Schützt mithilfe eines regenerierenden Schildes andere Einheiten. Kann die meisten Bodeneinheiten tragen.
|
unit.oct.description = Schützt mithilfe eines regenerierenden Schildes andere Einheiten. Kann die meisten Bodeneinheiten tragen.
|
||||||
unit.risso.description = Schießt ein Sperrfeuer aus Raketen und Kugeln auf alle Gegner in der Nähe.
|
unit.risso.description = Schießt ein Sperrfeuer aus Raketen und Kugeln auf alle Gegner in der Nähe.
|
||||||
unit.minke.description = Schießt Geschosse und Kugeln auf Feinde.
|
unit.minke.description = Schießt Geschosse und Kugeln auf Feinde.
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ mod.preview.missing = Antes de publicar este mod en el Steam Workshop, debe aña
|
|||||||
mod.folder.missing = Solo los mods en forma de carpeta se pueden publicar en el Steam Workshop.\nPara convertir cualquier mod en una carpeta, simplemente descomprima su archivo a una carpeta y elimine el zip anterior, luego reinicie su juego o vuelva a cargar sus mods.
|
mod.folder.missing = Solo los mods en forma de carpeta se pueden publicar en el Steam Workshop.\nPara convertir cualquier mod en una carpeta, simplemente descomprima su archivo a una carpeta y elimine el zip anterior, luego reinicie su juego o vuelva a cargar sus mods.
|
||||||
mod.scripts.disable = Tu dispositivo no es compatible con mods con scripts. Debes deshabilitar esos mods para jugar.
|
mod.scripts.disable = Tu dispositivo no es compatible con mods con scripts. Debes deshabilitar esos mods para jugar.
|
||||||
|
|
||||||
about.button = Acerca del juego
|
about.button = Acerca de...
|
||||||
name = Nombre:
|
name = Nombre:
|
||||||
noname = Elige un[accent] nombre de jugador[] primero.
|
noname = Elige un[accent] nombre de jugador[] primero.
|
||||||
planetmap = Mapa del planeta
|
planetmap = Mapa del planeta
|
||||||
@@ -164,7 +164,7 @@ server.closing = [accent]Cerrando servidor...
|
|||||||
server.kicked.kick = ¡Te han echado del servidor!
|
server.kicked.kick = ¡Te han echado del servidor!
|
||||||
server.kicked.whitelist = No estás en la lista blanca de este servidor.
|
server.kicked.whitelist = No estás en la lista blanca de este servidor.
|
||||||
server.kicked.serverClose = El servidor se ha cerrado.
|
server.kicked.serverClose = El servidor se ha cerrado.
|
||||||
server.kicked.vote = Has sido expulsado por votación. ¡Adiós!
|
server.kicked.vote = Has sido expulsado por votación. ¡Hasta luego!
|
||||||
server.kicked.clientOutdated = ¡Cliente desactualizado! ¡Actualiza el juego!
|
server.kicked.clientOutdated = ¡Cliente desactualizado! ¡Actualiza el juego!
|
||||||
server.kicked.serverOutdated = ¡Servidor desactualizado! ¡Pídele al anfitrión que lo actualice!
|
server.kicked.serverOutdated = ¡Servidor desactualizado! ¡Pídele al anfitrión que lo actualice!
|
||||||
server.kicked.banned = Has sido baneado en este servidor.
|
server.kicked.banned = Has sido baneado en este servidor.
|
||||||
@@ -194,9 +194,10 @@ host.invalid = [scarlet]No se pudo conectar con el anfitrión
|
|||||||
|
|
||||||
servers.local = Servidores Locales
|
servers.local = Servidores Locales
|
||||||
servers.remote = Servidores Remotos
|
servers.remote = Servidores Remotos
|
||||||
servers.global = Servidores Globales
|
servers.global = Servidores de la Comunidad
|
||||||
|
|
||||||
ervers.showhidden = Mostrar servidores ocultos
|
servers.disclaimer = Los servidores de la comunidad [accent]no[] son propiedad del desarrollador, ni administrados por el mismo.\n\nLos servidores podrían tener contenido generado por los usuarios no apropiado para todas las edades.
|
||||||
|
servers.showhidden = Mostrar servidores ocultos
|
||||||
server.shown = Visibles
|
server.shown = Visibles
|
||||||
server.hidden = Ocultos
|
server.hidden = Ocultos
|
||||||
|
|
||||||
@@ -702,11 +703,11 @@ ability.forcefield = Zona de Escudo
|
|||||||
ability.repairfield = Zona de Reparación
|
ability.repairfield = Zona de Reparación
|
||||||
ability.statusfield = Zona de Estado
|
ability.statusfield = Zona de Estado
|
||||||
ability.unitspawn = {0} Fábrica de Drones
|
ability.unitspawn = {0} Fábrica de Drones
|
||||||
ability.shieldregenfield = Zona de Regeneración de Escudos
|
ability.shieldregenfield = Regeneración de Escudos
|
||||||
ability.movelightning = Movimiento Relámpago
|
ability.movelightning = Movimiento Relámpago
|
||||||
|
|
||||||
bar.drilltierreq = Se requiere un taladro mejor.
|
bar.drilltierreq = Requiere un taladro mejor
|
||||||
bar.noresources = Recursos faltantes
|
bar.noresources = Recursos insuficientes
|
||||||
bar.corereq = Necesitas un núcleo base
|
bar.corereq = Necesitas un núcleo base
|
||||||
bar.drillspeed = Velocidad del Taladro: {0}/s
|
bar.drillspeed = Velocidad del Taladro: {0}/s
|
||||||
bar.pumpspeed = Velocidad de bombeado: {0}/s
|
bar.pumpspeed = Velocidad de bombeado: {0}/s
|
||||||
@@ -972,14 +973,14 @@ item.silicon.name = Silicio
|
|||||||
item.plastanium.name = Plastanio
|
item.plastanium.name = Plastanio
|
||||||
item.phase-fabric.name = Tejido de fase
|
item.phase-fabric.name = Tejido de fase
|
||||||
item.surge-alloy.name = Aleación Eléctrica
|
item.surge-alloy.name = Aleación Eléctrica
|
||||||
item.spore-pod.name = Vaina de esporas
|
item.spore-pod.name = Vaina de Esporas
|
||||||
item.sand.name = Arena
|
item.sand.name = Arena
|
||||||
item.blast-compound.name = Compuesto Explosivo
|
item.blast-compound.name = Compuesto Explosivo
|
||||||
item.pyratite.name = Pirotita
|
item.pyratite.name = Pirotita
|
||||||
item.metaglass.name = Metacristal
|
item.metaglass.name = Metacristal
|
||||||
item.scrap.name = Chatarra
|
item.scrap.name = Chatarra
|
||||||
liquid.water.name = Agua
|
liquid.water.name = Agua
|
||||||
liquid.slag.name = Fundido
|
liquid.slag.name = Magma
|
||||||
liquid.oil.name = Petróleo
|
liquid.oil.name = Petróleo
|
||||||
liquid.cryofluid.name = Líquido criogénico
|
liquid.cryofluid.name = Líquido criogénico
|
||||||
#Names of Units and Turrets look better untranslated, since they are propper/own names
|
#Names of Units and Turrets look better untranslated, since they are propper/own names
|
||||||
@@ -1019,7 +1020,7 @@ unit.corvus.name = Corvus
|
|||||||
|
|
||||||
block.resupply-point.name = Punto de reabastecimiento
|
block.resupply-point.name = Punto de reabastecimiento
|
||||||
block.parallax.name = Parallax
|
block.parallax.name = Parallax
|
||||||
block.cliff.name = Cliff
|
block.cliff.name = Pared
|
||||||
block.sand-boulder.name = Roca de arena
|
block.sand-boulder.name = Roca de arena
|
||||||
block.basalt-boulder.name = Roca de basalto
|
block.basalt-boulder.name = Roca de basalto
|
||||||
block.grass.name = Hierba
|
block.grass.name = Hierba
|
||||||
@@ -1046,14 +1047,14 @@ block.scrap-wall-large.name = Muro de chatarra grande
|
|||||||
block.scrap-wall-huge.name = Muro de chatarra muy grande
|
block.scrap-wall-huge.name = Muro de chatarra muy grande
|
||||||
block.scrap-wall-gigantic.name = Muro de chatarra gigante
|
block.scrap-wall-gigantic.name = Muro de chatarra gigante
|
||||||
block.thruster.name = Propulsor
|
block.thruster.name = Propulsor
|
||||||
block.kiln.name = Horno
|
block.kiln.name = Horno para Cristal
|
||||||
block.graphite-press.name = Prensa de grafito
|
block.graphite-press.name = Prensa de grafito
|
||||||
block.multi-press.name = Multi-Prensa
|
block.multi-press.name = Multi-Prensa
|
||||||
block.constructing = {0}\n[lightgray](Construyendo)
|
block.constructing = {0}\n[lightgray](Construyendo)
|
||||||
block.spawn.name = Punto de generación
|
block.spawn.name = Punto de generación
|
||||||
block.core-shard.name = Núcleo: Fragmento
|
block.core-shard.name = Núcleo: Shard
|
||||||
block.core-foundation.name = Núcleo: Fundación
|
block.core-foundation.name = Núcleo: Foundation
|
||||||
block.core-nucleus.name = Núcleo: Núcleo
|
block.core-nucleus.name = Núcleo: Nucleus
|
||||||
block.deepwater.name = Aguas profundas
|
block.deepwater.name = Aguas profundas
|
||||||
block.water.name = Agua
|
block.water.name = Agua
|
||||||
block.tainted-water.name = Agua contaminada
|
block.tainted-water.name = Agua contaminada
|
||||||
@@ -1064,21 +1065,21 @@ block.sand.name = Arena
|
|||||||
block.darksand.name = Arena oscura
|
block.darksand.name = Arena oscura
|
||||||
block.ice.name = Hielo
|
block.ice.name = Hielo
|
||||||
block.snow.name = Nieve
|
block.snow.name = Nieve
|
||||||
block.craters.name = Cráteres
|
block.craters.name = Cráter
|
||||||
block.sand-water.name = Agua con arena
|
block.sand-water.name = Agua con arena
|
||||||
block.darksand-water.name = Agua con arena oscura
|
block.darksand-water.name = Agua con arena oscura
|
||||||
block.char.name = Carbonizado
|
block.char.name = Cenizas
|
||||||
block.dacite.name = Dacita
|
block.dacite.name = Dacita
|
||||||
block.dacite-wall.name = Pared de dacita
|
block.dacite-wall.name = Bloque de dacita
|
||||||
block.dacite-boulder.name = Roca de dacita
|
block.dacite-boulder.name = Roca de dacita
|
||||||
block.ice-snow.name = Hielo-Nieve
|
block.ice-snow.name = Hielo-Nieve
|
||||||
block.stone-wall.name = Pared de piedra
|
block.stone-wall.name = Bloque de piedra
|
||||||
block.ice-wall.name = Pared de hielo
|
block.ice-wall.name = Bloque de hielo
|
||||||
block.snow-wall.name = Pared de nieve
|
block.snow-wall.name = Bloque de nieve
|
||||||
block.dune-wall.name = Pared de arena
|
block.dune-wall.name = Bloque de arena
|
||||||
block.pine.name = Pino
|
block.pine.name = Pino
|
||||||
block.dirt.name = Tierra
|
block.dirt.name = Tierra
|
||||||
block.dirt-wall.name = Pared de tierra
|
block.dirt-wall.name = Bloque de tierra
|
||||||
block.mud.name = Lodo
|
block.mud.name = Lodo
|
||||||
block.white-tree-dead.name = Árbol Blanco Muerto
|
block.white-tree-dead.name = Árbol Blanco Muerto
|
||||||
block.white-tree.name = Árbol Blanco
|
block.white-tree.name = Árbol Blanco
|
||||||
@@ -1096,7 +1097,7 @@ block.dark-panel-5.name = Panel Oscuro 5
|
|||||||
block.dark-panel-6.name = Panel Oscuro 6
|
block.dark-panel-6.name = Panel Oscuro 6
|
||||||
block.dark-metal.name = Metal Oscuro
|
block.dark-metal.name = Metal Oscuro
|
||||||
block.basalt.name = Basalto
|
block.basalt.name = Basalto
|
||||||
block.hotrock.name = Roca Caliente
|
block.hotrock.name = Roca volcánica
|
||||||
block.magmarock.name = Roca de Magma
|
block.magmarock.name = Roca de Magma
|
||||||
block.copper-wall.name = Muro de Cobre
|
block.copper-wall.name = Muro de Cobre
|
||||||
block.copper-wall-large.name = Muro de Cobre grande
|
block.copper-wall-large.name = Muro de Cobre grande
|
||||||
@@ -1185,7 +1186,7 @@ block.liquid-junction.name = Cruce de Líquidos
|
|||||||
block.bridge-conduit.name = Conducto Puente
|
block.bridge-conduit.name = Conducto Puente
|
||||||
block.rotary-pump.name = Bomba Rotatoria
|
block.rotary-pump.name = Bomba Rotatoria
|
||||||
block.thorium-reactor.name = Reactor de Torio
|
block.thorium-reactor.name = Reactor de Torio
|
||||||
block.mass-driver.name = Teletransportador Masivo
|
block.mass-driver.name = Teletransportador de Masa
|
||||||
block.blast-drill.name = Taladro de explosión
|
block.blast-drill.name = Taladro de explosión
|
||||||
block.thermal-pump.name = Bomba Térmica
|
block.thermal-pump.name = Bomba Térmica
|
||||||
block.thermal-generator.name = Generador Térmico
|
block.thermal-generator.name = Generador Térmico
|
||||||
@@ -1205,8 +1206,8 @@ block.spectre.name = Spectre
|
|||||||
block.meltdown.name = Meltdown
|
block.meltdown.name = Meltdown
|
||||||
block.foreshadow.name = Foreshadow
|
block.foreshadow.name = Foreshadow
|
||||||
block.container.name = Contenedor
|
block.container.name = Contenedor
|
||||||
block.launch-pad.name = Pad de Lanzamiento
|
block.launch-pad.name = Plataforma de Lanzamiento
|
||||||
block.launch-pad-large.name = Pad de Lanzamiento Grande
|
block.launch-pad-large.name = Plataforma de Lanzamiento Grande
|
||||||
block.segment.name = Segment
|
block.segment.name = Segment
|
||||||
block.command-center.name = Centro de comando
|
block.command-center.name = Centro de comando
|
||||||
block.ground-factory.name = Fábrica terrestre
|
block.ground-factory.name = Fábrica terrestre
|
||||||
@@ -1279,6 +1280,8 @@ hint.payloadDrop.mobile = [accent]Mantén[] sobre un lugar vacío para soltar la
|
|||||||
hint.waveFire = Cuando las torretas [accent]Wave[] usan agua como munición, apagarán fuego e incendios cercanos automáticamente.
|
hint.waveFire = Cuando las torretas [accent]Wave[] usan agua como munición, apagarán fuego e incendios cercanos automáticamente.
|
||||||
hint.generator = Los \uf879[accent]Generadores de combustión[] querman carbón para transmitir energía a bloques adyacentes.\n\nEl alcance de transmisión de energía se puede extender usando \uf87f[accent]Nodos de energía[].
|
hint.generator = Los \uf879[accent]Generadores de combustión[] querman carbón para transmitir energía a bloques adyacentes.\n\nEl alcance de transmisión de energía se puede extender usando \uf87f[accent]Nodos de energía[].
|
||||||
hint.guardian = Los [accent]Guardianes[] poseen una robusta armadura. Municiones débiles como el [accent]Cobre[] o el [accent]Plomo[] no son [scarlet]effectivas[] contra él.\n\nUsa torretas de mayor categoría o por ejemplo, munición de \uf835[accent]Grafito[] \uf861Duo/\uf859 en torretas Salvo para derribar a los Guardianes.
|
hint.guardian = Los [accent]Guardianes[] poseen una robusta armadura. Municiones débiles como el [accent]Cobre[] o el [accent]Plomo[] no son [scarlet]effectivas[] contra él.\n\nUsa torretas de mayor categoría o por ejemplo, munición de \uf835[accent]Grafito[] \uf861Duo/\uf859 en torretas Salvo para derribar a los Guardianes.
|
||||||
|
hint.coreUpgrade = Los núcleos se pueden mejorar [accent]construyendo núcleos de mayor calidad encima[].\n\nColoca un núcleo [accent]Foundation[] sobre el núcleo [accent]Shard[]. Asegúrate de que no hay obstáculos cerca.
|
||||||
|
hint.presetLaunch = Las zonas de aterrizaje de los [accent]sectores grises[], como el [accent]Bosque Congelado[], son accesibles desde cualquier lugar. No requieren capturar sectores adyacentes.\n\nLos [accent]sectores numerados[], como este, son [accent]opcionales[].
|
||||||
|
|
||||||
item.copper.description = Un útil material de estructura. Usado en todo tipo de bloques.
|
item.copper.description = Un útil material de estructura. Usado en todo tipo de bloques.
|
||||||
item.copper.details = Cobre. Metal anormalmente abundante en Serpulo. Estructuralmente débil a menos que sea reforzado.
|
item.copper.details = Cobre. Metal anormalmente abundante en Serpulo. Estructuralmente débil a menos que sea reforzado.
|
||||||
@@ -1402,7 +1405,7 @@ block.cultivator.details = Tecnología recuperada. Usada para producir cantidade
|
|||||||
block.oil-extractor.description = Usa grandes cantidades de energía, arena y agua para obtener petróleo. Úsalo cuando no hay fuentes directas de petróleo cerca.
|
block.oil-extractor.description = Usa grandes cantidades de energía, arena y agua para obtener petróleo. Úsalo cuando no hay fuentes directas de petróleo cerca.
|
||||||
block.core-shard.description = El núcleo de la base. Compacto. Puede auto-replicarse. Equipado con propulsores de uso único.
|
block.core-shard.description = El núcleo de la base. Compacto. Puede auto-replicarse. Equipado con propulsores de uso único.
|
||||||
block.core-shard.details = La primera iteración. Si es destruido, todo contacto con el sector está perdido. No designado para viajes interplanetarios.
|
block.core-shard.details = La primera iteración. Si es destruido, todo contacto con el sector está perdido. No designado para viajes interplanetarios.
|
||||||
block.core-foundation.description = El núcleo de la base. Mejor blindado. Almacena más recursos que el modelo Fragmento.
|
block.core-foundation.description = El núcleo de la base. Mejor blindado. Almacena más recursos que el modelo Shard.
|
||||||
block.core-foundation.details = La segunda iteración.
|
block.core-foundation.details = La segunda iteración.
|
||||||
block.core-nucleus.description = El núcleo de la base. Extremadamente bien armado. Almacena cantidades masivas de recursos.
|
block.core-nucleus.description = El núcleo de la base. Extremadamente bien armado. Almacena cantidades masivas de recursos.
|
||||||
block.core-nucleus.details = La tercera y última iteración.
|
block.core-nucleus.details = La tercera y última iteración.
|
||||||
@@ -1473,7 +1476,7 @@ unit.zenith.description = Dispara ráfagas de misiles a enemigos cercanos.
|
|||||||
unit.antumbra.description = Dispara un enjambre de balas a cualquer enemigo cercano.
|
unit.antumbra.description = Dispara un enjambre de balas a cualquer enemigo cercano.
|
||||||
unit.eclipse.description = Dispara dos láseres perforantes y un enjambre de balas de fragmentación.
|
unit.eclipse.description = Dispara dos láseres perforantes y un enjambre de balas de fragmentación.
|
||||||
unit.mono.description = Extrae cobre y plomo, y los deposita en el núcleo.
|
unit.mono.description = Extrae cobre y plomo, y los deposita en el núcleo.
|
||||||
unit.poly.description = Recosntruye automáticamente estructuras dañadas y asiste a otros unidades en la construcción.
|
unit.poly.description = Recosntruye automáticamente estructuras dañadas y asiste a otras unidades en la construcción.
|
||||||
unit.mega.description = Repara automáticamente estructuras dañadas. Puede llevar estructuras y unidades terrestres pequeñas.
|
unit.mega.description = Repara automáticamente estructuras dañadas. Puede llevar estructuras y unidades terrestres pequeñas.
|
||||||
unit.quad.description = Suelta grandes bombas sobre objetivos terrestres, repara estructuras aliadas y daña enemigos. Puede cargar con unidades terrestres de tamaño medio.
|
unit.quad.description = Suelta grandes bombas sobre objetivos terrestres, repara estructuras aliadas y daña enemigos. Puede cargar con unidades terrestres de tamaño medio.
|
||||||
unit.oct.description = Protege aliados con su escudo. Puede cargar con la mayoría de unidades terrestres.
|
unit.oct.description = Protege aliados con su escudo. Puede cargar con la mayoría de unidades terrestres.
|
||||||
@@ -1482,6 +1485,6 @@ unit.minke.description = Dispara proyectiles variados a enemigos terrestres.
|
|||||||
unit.bryde.description = Dispara misiles de largo alcance a enemigos.
|
unit.bryde.description = Dispara misiles de largo alcance a enemigos.
|
||||||
unit.sei.description = Dispara un enjambre de misiles y proyectiles perforantes a enemigos.
|
unit.sei.description = Dispara un enjambre de misiles y proyectiles perforantes a enemigos.
|
||||||
unit.omura.description = Dispara rayos contínuos perforantes. Construye unidades Flare.
|
unit.omura.description = Dispara rayos contínuos perforantes. Construye unidades Flare.
|
||||||
unit.alpha.description = Defiende el núcleo Fragmento de los enemigos. Construye estructuras.
|
unit.alpha.description = Defiende el núcleo Shard de los enemigos. Construye estructuras.
|
||||||
unit.beta.description = Defiende el núcleo Foundation de los enemigos. Construye estructuras.
|
unit.beta.description = Defiende el núcleo Foundation de los enemigos. Construye estructuras.
|
||||||
unit.gamma.description = Defiende el núcleo Nucleus de los enemigos. Construye estructuras.
|
unit.gamma.description = Defiende el núcleo Nucleus de los enemigos. Construye estructuras.
|
||||||
|
|||||||
@@ -537,21 +537,21 @@ sectors.resources = Sumber Daya:
|
|||||||
sectors.production = Produksi:
|
sectors.production = Produksi:
|
||||||
sectors.export = Ekspor:
|
sectors.export = Ekspor:
|
||||||
sectors.time = Waktu:
|
sectors.time = Waktu:
|
||||||
sectors.threat = Threat:
|
sectors.threat = Tingkat:
|
||||||
sectors.wave = Gelombang:
|
sectors.wave = Gelombang:
|
||||||
sectors.stored = Terisi:
|
sectors.stored = Terisi:
|
||||||
sectors.resume = Lanjutkan
|
sectors.resume = Lanjutkan
|
||||||
sectors.launch = Luncurkan
|
sectors.launch = Luncurkan
|
||||||
sectors.select = Pilih
|
sectors.select = Pilih
|
||||||
sectors.nonelaunch = [lightgray]tidak ada
|
sectors.nonelaunch = [lightgray]tidak ada (matahari)
|
||||||
sectors.rename = Ganti Nama Sektor
|
sectors.rename = Ganti Nama Sektor
|
||||||
sectors.enemybase = [scarlet]Markas Musuh
|
sectors.enemybase = [scarlet]Markas Musuh
|
||||||
sectors.vulnerable = [scarlet]Vulnerable
|
sectors.vulnerable = [scarlet]Rawan diserang
|
||||||
sectors.underattack = [scarlet]Under attack! [accent]{0}% damaged
|
sectors.underattack = [scarlet]Dalam Serangan! [accent]kerusakan sebesar {0}%
|
||||||
sectors.survives = [accent]Survives {0} waves
|
sectors.survives = [accent]Bertahan sebanyak {0} gelombang
|
||||||
sectors.go = Mulai
|
sectors.go = Mulai
|
||||||
sector.curcapture = Sektor Ditaklukkan
|
sector.curcapture = Sektor Dikuasai
|
||||||
sector.curlost = Sector Lost
|
sector.curlost = Sektor Gagal Bertahan
|
||||||
sector.missingresources = [scarlet]Sumber Daya Inti Tidak Cukup
|
sector.missingresources = [scarlet]Sumber Daya Inti Tidak Cukup
|
||||||
sector.attacked = Sektor [accent]{0}[white] sedang diserang!
|
sector.attacked = Sektor [accent]{0}[white] sedang diserang!
|
||||||
sector.lost = Sektor [accent]{0}[white] telah dihancurkan!
|
sector.lost = Sektor [accent]{0}[white] telah dihancurkan!
|
||||||
@@ -1113,7 +1113,7 @@ block.door-large.name = Pintu Besar
|
|||||||
block.duo.name = Duo
|
block.duo.name = Duo
|
||||||
block.scorch.name = Penyembur Api
|
block.scorch.name = Penyembur Api
|
||||||
block.scatter.name = Scatter
|
block.scatter.name = Scatter
|
||||||
block.hail.name = Hail
|
block.hail.name = Meriam
|
||||||
block.lancer.name = Lancer
|
block.lancer.name = Lancer
|
||||||
block.conveyor.name = Pengantar
|
block.conveyor.name = Pengantar
|
||||||
block.titanium-conveyor.name = Pengantar Berbahan Titanium
|
block.titanium-conveyor.name = Pengantar Berbahan Titanium
|
||||||
@@ -1278,7 +1278,11 @@ hint.payloadDrop = Tekan [accent]][] untuk menurunkan muatan.
|
|||||||
hint.payloadDrop.mobile = [accent]Tekan dan tahan[] di lokasi yang kosong untuk menurunkan muatan.
|
hint.payloadDrop.mobile = [accent]Tekan dan tahan[] di lokasi yang kosong untuk menurunkan muatan.
|
||||||
hint.waveFire = [accent]Wave[] yang terisi dengan air akan memadamkan air dalam jangkauannya.
|
hint.waveFire = [accent]Wave[] yang terisi dengan air akan memadamkan air dalam jangkauannya.
|
||||||
hint.generator = \uf879 [accent]Generator Pembakar[] membakar batu bara dan menghasilkan energik ke blok yang berdekatan.\n\nTransmisi energi dapat diperluas menggunakan \uf87f [accent]Tiang Listrik[].
|
hint.generator = \uf879 [accent]Generator Pembakar[] membakar batu bara dan menghasilkan energik ke blok yang berdekatan.\n\nTransmisi energi dapat diperluas menggunakan \uf87f [accent]Tiang Listrik[].
|
||||||
lhint.guardian = Unit [accent]Penjaga[] adalah unit yang diperkuat. Amunisi lemah seperti [accent]Tembaga[] dan [accent]Timah[] [scarlet]tidak berefek pada mereka[].\n\nGunakan turret yang lebih bagus atau gunakan amunisi yang lebih kuat seperti \uf835 [accent]Grafit[] \uf861Duo/\uf859Salvo untuk menghancurkan Penjaga.
|
hint.guardian = Unit [accent]Penjaga[] adalah unit yang diperkuat. Amunisi lemah seperti [accent]Tembaga[] dan [accent]Timah[] [scarlet]tidak berefek pada mereka[].\n\nGunakan turret yang lebih bagus atau gunakan amunisi yang lebih kuat seperti \uf835 [accent]Grafit[] \uf861Duo/\uf859Salvo untuk menghancurkan Penjaga.
|
||||||
|
hint.coreUpgrade = Inti dapat ditingkatkan dengan cara [accent]meletakkan yang lebih besar diatasnya[].\n\nLetakan sebuah inti [accent]Fondasi[] diatas inti [accent]Shard[]. Pastikan terdapat ruang kosong dari bangunan yang lain.
|
||||||
|
hint.presetLaunch = [accent]Zona pendaratan[]yang berwarna abu-abu, seperti [accent]Hutan yang Beku[], dapat diluncurkan dari mana saja. Sektor seperti ini tidak perlu diluncurkan dari sektor terdekat milik kamu.\n\n[accent]Sektor yang bernomor[], seperti yang ini, bisa [accent]dikuasai atau diabaikan[].
|
||||||
|
hint.coreIncinerate = Setelah inti penuh dengan suatu barang, barang yang setipe akan [accent]dihancurkan[].
|
||||||
|
hint.coopCampaign = Ketika bermain [accent]kampanye multiplayer[], barang yang diproduksi di map ini akan diberikan ke [accent]sektor kamu juga[].\n\nSetiap penelitian baru yang dilakukan oleh host juga akan diberikan kepadamu.
|
||||||
|
|
||||||
item.copper.description = Bahan struktur yang berguna. Digunakan di semua tipe blok.
|
item.copper.description = Bahan struktur yang berguna. Digunakan di semua tipe blok.
|
||||||
item.copper.details = Tembaga. Logam yang sangat melimpah di Serpulo. Lemah secara struktural kecuali jika diperkuat.
|
item.copper.details = Tembaga. Logam yang sangat melimpah di Serpulo. Lemah secara struktural kecuali jika diperkuat.
|
||||||
@@ -1303,10 +1307,11 @@ item.blast-compound.description = Senyawa yang digunakan di bom dan amunisi pele
|
|||||||
item.pyratite.description = Digunakan di senjata pembakar dan generator yang membutuhkan bahan mudah terbakar.
|
item.pyratite.description = Digunakan di senjata pembakar dan generator yang membutuhkan bahan mudah terbakar.
|
||||||
|
|
||||||
liquid.water.description = Umumnya digunakan untuk mendinginkan mesin-mesin dan pendaur ulang.
|
liquid.water.description = Umumnya digunakan untuk mendinginkan mesin-mesin dan pendaur ulang.
|
||||||
liquid.slag.description = Berbagai campuran tipe logam yang meleleh. Dapat dipisahkan menjadi mineral masing-masing, atau disemprokan ke musuh sebagai senjata.
|
liquid.slag.description = Berbagai campuran tipe logam yang meleleh. Dapat dipisahkan menjadi mineral masing-masing, atau disemprotkan ke musuh sebagai senjata.
|
||||||
liquid.oil.description = Digunakan di produksi material lanjutan dan sebagai amunisi yang mudah terbakar.
|
liquid.oil.description = Digunakan di produksi material lanjutan dan sebagai amunisi yang mudah terbakar.
|
||||||
liquid.cryofluid.description = Digunakan sebagai pendingin di reaktor, turret, dan pabrik.
|
liquid.cryofluid.description = Digunakan sebagai pendingin di reaktor, turret, dan pabrik.
|
||||||
|
|
||||||
|
block.resupply-point.description = Mengisi ulang amunisi unit terdekat dengan tembaga. Jika tidak bisa berarti unit tersebut membutuhkan baterai.
|
||||||
block.armored-conveyor.description = Memindahkan barang sama cepatnya dengan pengantar titanium, namun memiliki lebih banyak armor. Tidak dapat menerima masukan dari samping dari apapun kecuali dari pengantar.
|
block.armored-conveyor.description = Memindahkan barang sama cepatnya dengan pengantar titanium, namun memiliki lebih banyak armor. Tidak dapat menerima masukan dari samping dari apapun kecuali dari pengantar.
|
||||||
block.illuminator.description = Sebuah lampu kecil untuk menerangi daerah sekitar. Perlu listrik untuk bekerja.
|
block.illuminator.description = Sebuah lampu kecil untuk menerangi daerah sekitar. Perlu listrik untuk bekerja.
|
||||||
block.message.description = Menyimpan pesan. Digunakan untuk komunikasi antar sekutu.
|
block.message.description = Menyimpan pesan. Digunakan untuk komunikasi antar sekutu.
|
||||||
@@ -1450,7 +1455,7 @@ block.memory-cell.description = Menyimpan informasi untuk prosesor.
|
|||||||
block.memory-bank.description = Menyimpan informasi untuk prosesor. Berkapasitas besar.
|
block.memory-bank.description = Menyimpan informasi untuk prosesor. Berkapasitas besar.
|
||||||
block.logic-display.description = Menampilkan grafik sembarang dari prosesor.
|
block.logic-display.description = Menampilkan grafik sembarang dari prosesor.
|
||||||
block.large-logic-display.description = Menampilkan grafik sembarang dari prosesor. Lebih besar.
|
block.large-logic-display.description = Menampilkan grafik sembarang dari prosesor. Lebih besar.
|
||||||
block.interplanetary-accelerator.description = Sebuah menara railgun elektromagnetik. Mempercepat Inti dengan kecepatan tinggi untuk peluncuran antarplanet.
|
block.interplanetary-accelerator.description = Sebuah menara railgun elektromagnetik raksasa. Meluncurkan Inti dengan kecepatan tinggi untuk peluncuran antarplanet.
|
||||||
|
|
||||||
unit.dagger.description = Menembak musuh terdekat dengan amunisi standar.
|
unit.dagger.description = Menembak musuh terdekat dengan amunisi standar.
|
||||||
unit.mace.description = Menyerang musuh terdekat dengan cara membakarnya.
|
unit.mace.description = Menyerang musuh terdekat dengan cara membakarnya.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
credits.text = Creato da [royal]Anuken[] - [sky]anukendev@gmail.com[]\n\nVersione Italiana:[lightgray]\nDeltaRays\nGioIacca9[]
|
credits.text = Creato da [royal]Anuken[] - [sky]anukendev@gmail.com[]\n\nVersione Italiana:[lightgray]\nDeltaRays\nGioIacca9 and Diegator04[]
|
||||||
credits = Crediti
|
credits = Crediti
|
||||||
contributors = Traduttori e Contributori
|
contributors = Traduttori e Contributori
|
||||||
discord = Entra nel server Discord di Mindustry!
|
discord = Entra nel server Discord di Mindustry!
|
||||||
@@ -7,7 +7,7 @@ link.reddit.description = Il subreddit di Mindustry!
|
|||||||
link.github.description = Codice sorgente del gioco
|
link.github.description = Codice sorgente del gioco
|
||||||
link.changelog.description = Elenco delle modifiche del gioco
|
link.changelog.description = Elenco delle modifiche del gioco
|
||||||
link.dev-builds.description = Build di sviluppo versioni instabili
|
link.dev-builds.description = Build di sviluppo versioni instabili
|
||||||
link.trello.description = Scheda ufficiale Trello per funzionalità pianificate
|
link.trello.description = Sezione ufficiale Trello per funzionalità pianificate
|
||||||
link.itch.io.description = Pagina di itch.io con download per PC e versione web
|
link.itch.io.description = Pagina di itch.io con download per PC e versione web
|
||||||
link.google-play.description = Elenco di Google Play Store
|
link.google-play.description = Elenco di Google Play Store
|
||||||
link.f-droid.description = Catalogo F-Droid
|
link.f-droid.description = Catalogo F-Droid
|
||||||
@@ -19,10 +19,10 @@ screenshot.invalid = Mappa troppo pesante, probabilmente non c'è abbastanza spa
|
|||||||
gameover = Hai Perso.
|
gameover = Hai Perso.
|
||||||
gameover.disconnect = Disconnetti
|
gameover.disconnect = Disconnetti
|
||||||
gameover.pvp = La squadra[accent] {0}[] ha vinto!
|
gameover.pvp = La squadra[accent] {0}[] ha vinto!
|
||||||
gameover.waiting = [accent]Attendendo la prossima mappa...
|
gameover.waiting = [accent]In attesa della prossima mappa...
|
||||||
highscore = [accent]Nuovo record!
|
highscore = [accent]Nuovo record!
|
||||||
copied = Copiato.
|
copied = Copiato.
|
||||||
indev.notready = Questa parte del gioco non è ancora completa
|
indev.notready = Questa parte del gioco non è ancora pronta
|
||||||
indev.campaign = [accent]Congratulazioni! Hai raggiunto la fine della modalità campagna![]\n\nI contenuti per ora si fermano qui. In qualche aggiornamento futuro scoprirai i viaggi interplanetari.
|
indev.campaign = [accent]Congratulazioni! Hai raggiunto la fine della modalità campagna![]\n\nI contenuti per ora si fermano qui. In qualche aggiornamento futuro scoprirai i viaggi interplanetari.
|
||||||
|
|
||||||
load.sound = Suoni
|
load.sound = Suoni
|
||||||
@@ -57,7 +57,7 @@ schematic.saved = Schematica salvata.
|
|||||||
schematic.delete.confirm = Questa schematica sarà cancellata definitivamente.
|
schematic.delete.confirm = Questa schematica sarà cancellata definitivamente.
|
||||||
schematic.rename = Rinomina Schematica
|
schematic.rename = Rinomina Schematica
|
||||||
schematic.info = {0}x{1}, {2} blocchi
|
schematic.info = {0}x{1}, {2} blocchi
|
||||||
schematic.disabled = [scarlet]Schematiche disabilitate[]\nNon puoi usare le schematiche su questa [accent]mappa[] o su questo [accent]server.
|
schematic.disabled = [scarlet]Schematiche disabilitate[]\nNon hai il permesso di usare schematiche in questa [accent]mappa[] o [accent]server.
|
||||||
|
|
||||||
stats = Statistiche
|
stats = Statistiche
|
||||||
stat.wave = Ondate Sconfitte:[accent] {0}
|
stat.wave = Ondate Sconfitte:[accent] {0}
|
||||||
@@ -69,7 +69,7 @@ stat.delivered = Risorse Lanciate:
|
|||||||
stat.playtime = Tempo Di Gioco:[accent] {0}
|
stat.playtime = Tempo Di Gioco:[accent] {0}
|
||||||
stat.rank = Livello Finale: [accent]{0}
|
stat.rank = Livello Finale: [accent]{0}
|
||||||
|
|
||||||
globalitems = [accent]Item Globali
|
globalitems = [accent]Oggetti Globali
|
||||||
map.delete = Sei sicuro di voler eliminare la mappa '[accent]{0}[]'?
|
map.delete = Sei sicuro di voler eliminare la mappa '[accent]{0}[]'?
|
||||||
level.highscore = Miglior Punteggio: [accent]{0}
|
level.highscore = Miglior Punteggio: [accent]{0}
|
||||||
level.select = Selezione del Livello
|
level.select = Selezione del Livello
|
||||||
@@ -103,7 +103,7 @@ committingchanges = Applicando le Modifiche
|
|||||||
done = Fatto
|
done = Fatto
|
||||||
feature.unsupported = Il tuo dispositivo non supporta questa funzione.
|
feature.unsupported = Il tuo dispositivo non supporta questa funzione.
|
||||||
|
|
||||||
mods.alphainfo = Tieni a mente che queste mod sono in alpha e[scarlet] possono contenere molti bug[]. Segnala tutti i problemi che trovi sulla pagina GitHub di Mindustry.
|
mods.alphainfo = Tieni a mente che queste mod sono in alpha e[scarlet] possono contenere molti bug[]. Segnala eventuali problemi che trovi sulla pagina GitHub o sul server Discord di Mindustry.
|
||||||
mods = Mod
|
mods = Mod
|
||||||
mods.none = [lightgray]Nessuna mod trovata!
|
mods.none = [lightgray]Nessuna mod trovata!
|
||||||
mods.guide = Guida per il modding
|
mods.guide = Guida per il modding
|
||||||
@@ -118,7 +118,7 @@ mod.disable = Disabilita
|
|||||||
mod.content = Contenuto:
|
mod.content = Contenuto:
|
||||||
mod.delete.error = Impossibile eliminare questa mod. Il file potrebbe essere in uso.
|
mod.delete.error = Impossibile eliminare questa mod. Il file potrebbe essere in uso.
|
||||||
mod.requiresversion = [scarlet]Versione minima richiesta: [accent]{0}
|
mod.requiresversion = [scarlet]Versione minima richiesta: [accent]{0}
|
||||||
mod.outdated = [scarlet]Questa mod non è compatibile con la v6 (versione minima: 105)
|
mod.outdated = [scarlet]Non compatibile con V6 (Versione minima: 105)
|
||||||
mod.missingdependencies = [scarlet]Dipendenze mancanti: {0}
|
mod.missingdependencies = [scarlet]Dipendenze mancanti: {0}
|
||||||
mod.erroredcontent = [scarlet]Errori di Contenuto
|
mod.erroredcontent = [scarlet]Errori di Contenuto
|
||||||
mod.errors = Si sono verificati degli errori durante il caricamento del contenuto.
|
mod.errors = Si sono verificati degli errori durante il caricamento del contenuto.
|
||||||
@@ -130,7 +130,7 @@ mod.reloadrequired = [scarlet]Riavvio necessario
|
|||||||
mod.import = Importa Mod
|
mod.import = Importa Mod
|
||||||
mod.import.file = Importa File
|
mod.import.file = Importa File
|
||||||
mod.import.github = Importa Mod da GitHub
|
mod.import.github = Importa Mod da GitHub
|
||||||
mod.jarwarn = [scarlet]Le mod JAR non sono sicure[]\nAssicurati di importare queste mod solo da fonti affidabili!
|
mod.jarwarn = [scarlet]Le mod JAR mod sono intrinsecamente pericolose.[]\nAssicuratevi di star importando questa mod da una fonte affidabile!!
|
||||||
mod.item.remove = Questo item fa parte della mod[accent] '{0}'[]. Per rimuoverlo, disinstalla questa mod.
|
mod.item.remove = Questo item fa parte della mod[accent] '{0}'[]. Per rimuoverlo, disinstalla questa mod.
|
||||||
mod.remove.confirm = Questa mod verrà eliminata.
|
mod.remove.confirm = Questa mod verrà eliminata.
|
||||||
mod.author = [lightgray]Autore:[] {0}
|
mod.author = [lightgray]Autore:[] {0}
|
||||||
@@ -196,9 +196,10 @@ servers.local = Server Locali
|
|||||||
servers.remote = Server Remoti
|
servers.remote = Server Remoti
|
||||||
servers.global = Server Community
|
servers.global = Server Community
|
||||||
|
|
||||||
|
servers.disclaimer = I server della Community [accent]non[] appartengono o sono controllati dallo sviluppatore.\n\nI servers potrebbero contenere del contenuto generato dall'utente che non è appropriato per tutte le età.
|
||||||
servers.showhidden = Mostra Server Nascosti
|
servers.showhidden = Mostra Server Nascosti
|
||||||
server.shown = Visibili
|
server.shown = Visibile
|
||||||
server.hidden = Nascosti
|
server.hidden = Nascosto
|
||||||
|
|
||||||
trace = Traccia Giocatore
|
trace = Traccia Giocatore
|
||||||
trace.playername = Nome del Giocatore: [accent]{0}
|
trace.playername = Nome del Giocatore: [accent]{0}
|
||||||
@@ -233,7 +234,7 @@ disconnect.timeout = Connessione scaduta.
|
|||||||
disconnect.data = Errore durante il caricamento del mondo!
|
disconnect.data = Errore durante il caricamento del mondo!
|
||||||
cantconnect = Impossibile unirsi alla partita ([accent]{0}[]).
|
cantconnect = Impossibile unirsi alla partita ([accent]{0}[]).
|
||||||
connecting = [accent]Connessione in corso...
|
connecting = [accent]Connessione in corso...
|
||||||
reconnecting = [accent]Riconnettendo...
|
reconnecting = [accent]Riconnessione in corso...
|
||||||
connecting.data = [accent]Caricamento del mondo...
|
connecting.data = [accent]Caricamento del mondo...
|
||||||
server.port = Porta:
|
server.port = Porta:
|
||||||
server.addressinuse = Indirizzo già in uso!
|
server.addressinuse = Indirizzo già in uso!
|
||||||
@@ -279,9 +280,9 @@ cancel = Annulla
|
|||||||
openlink = Apri Link
|
openlink = Apri Link
|
||||||
copylink = Copia link
|
copylink = Copia link
|
||||||
back = Indietro
|
back = Indietro
|
||||||
crash.export = Esporta Log di Crash
|
crash.export = Esporta Logs del Crash
|
||||||
crash.none = Nessun log di crash trovato.
|
crash.none = Nessun Log trovato.
|
||||||
crash.exported = Log di crash esportato.
|
crash.exported = Crash logs esportati.
|
||||||
data.export = Esporta Salvataggio
|
data.export = Esporta Salvataggio
|
||||||
data.import = Importa Salvataggio
|
data.import = Importa Salvataggio
|
||||||
data.openfolder = Apri Cartella\nSalvataggi
|
data.openfolder = Apri Cartella\nSalvataggi
|
||||||
@@ -293,12 +294,12 @@ quit.confirm.tutorial = Sei sicuro di sapere cosa stai facendo? Il tutorial può
|
|||||||
loading = [accent]Caricamento in Corso...
|
loading = [accent]Caricamento in Corso...
|
||||||
reloading = [accent]Ricaricamento delle mod...
|
reloading = [accent]Ricaricamento delle mod...
|
||||||
saving = [accent]Salvataggio in corso...
|
saving = [accent]Salvataggio in corso...
|
||||||
respawn = [accent][[{0}][] per rigenerarti nel nucleo
|
respawn = [accent][[{0}][] per rinascere nel nucleo
|
||||||
cancelbuilding = [accent][[{0}][] per pulire la selezione
|
cancelbuilding = [accent][[{0}][] per pulire la selezione
|
||||||
selectschematic = [accent][[{0}][] per selezionare+copiare
|
selectschematic = [accent][[{0}][] per selezionare+copiare
|
||||||
pausebuilding = [accent][[{0}][] per smettere di costruire
|
pausebuilding = [accent][[{0}][] per smettere di costruire
|
||||||
resumebuilding = [scarlet][[{0}][] per riprendere a costruire
|
resumebuilding = [scarlet][[{0}][] per riprendere a costruire
|
||||||
showui = Controlli nascosti.\nPremi [accent][[{0}][] per mostrarli.
|
showui = Interfaccia utente nascosta.\nPremere [accent][[{0}][] per mostrarla nuovamente.
|
||||||
wave = [accent]Ondata {0}
|
wave = [accent]Ondata {0}
|
||||||
wave.cap = [accent]Ondata {0}/{1}
|
wave.cap = [accent]Ondata {0}/{1}
|
||||||
wave.waiting = [lightgray]Ondata tra {0}
|
wave.waiting = [lightgray]Ondata tra {0}
|
||||||
@@ -309,8 +310,8 @@ wave.enemies = [lightgray]{0} Nemici Rimasti
|
|||||||
wave.enemycores = [accent]{0}[lightgray] Nuclei Nemici
|
wave.enemycores = [accent]{0}[lightgray] Nuclei Nemici
|
||||||
wave.enemycore = [accent]{0}[lightgray] Nucleo Nemico
|
wave.enemycore = [accent]{0}[lightgray] Nucleo Nemico
|
||||||
wave.enemy = [lightgray]{0} Nemico Rimasto
|
wave.enemy = [lightgray]{0} Nemico Rimasto
|
||||||
wave.guardianwarn = Guardiano in arrivo tra [accent]{0}[] ondate.
|
wave.guardianwarn = Il Guardiano arriverà in [accent]{0}[] ondate.
|
||||||
wave.guardianwarn.one = Guardiano in arrivo tra [accent]{0}[] ondata.
|
wave.guardianwarn.one = Il Guardiano arriverà in [accent]{0}[] ondata.
|
||||||
loadimage = Carica immagine
|
loadimage = Carica immagine
|
||||||
saveimage = Salva Immagine
|
saveimage = Salva Immagine
|
||||||
unknown = Sconosciuto
|
unknown = Sconosciuto
|
||||||
@@ -356,7 +357,7 @@ waves.remove = Rimuovi
|
|||||||
waves.never = <mai>
|
waves.never = <mai>
|
||||||
waves.every = sempre
|
waves.every = sempre
|
||||||
waves.waves = ondata/e
|
waves.waves = ondata/e
|
||||||
waves.perspawn = per spawn
|
waves.perspawn = per generazione
|
||||||
waves.shields = scudi/ondata
|
waves.shields = scudi/ondata
|
||||||
waves.to = a
|
waves.to = a
|
||||||
waves.guardian = Guardiano
|
waves.guardian = Guardiano
|
||||||
@@ -368,8 +369,8 @@ waves.invalid = Ondate dagli appunti non valide.
|
|||||||
waves.copied = Ondate copiate.
|
waves.copied = Ondate copiate.
|
||||||
waves.none = Nessun nemico impostato.\nNota che le disposizioni di ondate vuote verranno automaticamente rimpiazzate con la disposizione predefinita.
|
waves.none = Nessun nemico impostato.\nNota che le disposizioni di ondate vuote verranno automaticamente rimpiazzate con la disposizione predefinita.
|
||||||
|
|
||||||
#these are intentionally in lower case
|
#Questi sono intenzionalmente in minuscolo
|
||||||
wavemode.counts = n°
|
wavemode.counts = conteggi
|
||||||
wavemode.totals = totali
|
wavemode.totals = totali
|
||||||
wavemode.health = salute
|
wavemode.health = salute
|
||||||
|
|
||||||
@@ -438,8 +439,8 @@ toolmode.drawteams.description = Disegna squadre al posto di blocchi.
|
|||||||
filters.empty = [lightgray]Nessun filtro! Aggiungine uno cliccando il tasto sotto.
|
filters.empty = [lightgray]Nessun filtro! Aggiungine uno cliccando il tasto sotto.
|
||||||
filter.distort = Modifica
|
filter.distort = Modifica
|
||||||
filter.noise = Rumore
|
filter.noise = Rumore
|
||||||
filter.enemyspawn = Seleziona Spawn Nemico
|
filter.enemyspawn = Seleziona Punto di Generazione del Nemico
|
||||||
filter.spawnpath = Percorso per lo Spawn
|
filter.spawnpath = Percorso per il Punto di Generazione
|
||||||
filter.corespawn = Seleziona Nucleo
|
filter.corespawn = Seleziona Nucleo
|
||||||
filter.median = Mediana
|
filter.median = Mediana
|
||||||
filter.oremedian = Mediana Minerali
|
filter.oremedian = Mediana Minerali
|
||||||
@@ -464,7 +465,7 @@ filter.option.amount = Quantità
|
|||||||
filter.option.block = Blocco
|
filter.option.block = Blocco
|
||||||
filter.option.floor = Terreno
|
filter.option.floor = Terreno
|
||||||
filter.option.flooronto = Terreno Mirato
|
filter.option.flooronto = Terreno Mirato
|
||||||
filter.option.target = Obbiettivo
|
filter.option.target = Obiettivo
|
||||||
filter.option.wall = Muro
|
filter.option.wall = Muro
|
||||||
filter.option.ore = Minerale
|
filter.option.ore = Minerale
|
||||||
filter.option.floor2 = Terreno Secondario
|
filter.option.floor2 = Terreno Secondario
|
||||||
@@ -501,7 +502,7 @@ requirement.produce = Produci {0}
|
|||||||
requirement.capture = Cattura {0}
|
requirement.capture = Cattura {0}
|
||||||
launch.text = Lancia
|
launch.text = Lancia
|
||||||
research.multiplayer = Solo l'host può scoprire gli oggetti.
|
research.multiplayer = Solo l'host può scoprire gli oggetti.
|
||||||
map.multiplayer = Only the host can view sectors.
|
map.multiplayer = Solo l'host può vedere i settori.
|
||||||
uncover = Scopri
|
uncover = Scopri
|
||||||
configure = Configura Equipaggiamento
|
configure = Configura Equipaggiamento
|
||||||
|
|
||||||
@@ -511,14 +512,14 @@ bannedblocks = Blocchi Banditi
|
|||||||
addall = Aggiungi Tutti
|
addall = Aggiungi Tutti
|
||||||
launch.from = Partenza da: [accent]{0}
|
launch.from = Partenza da: [accent]{0}
|
||||||
launch.destination = Destinazione: {0}
|
launch.destination = Destinazione: {0}
|
||||||
configure.invalid = Il valore dev'essere un numero compresto tra 0 e {0}.
|
configure.invalid = Il valore deve essere un numero compresto tra 0 e {0}.
|
||||||
add = Aggiungi
|
add = Aggiungi...
|
||||||
boss.health = Vita del Guardiano
|
boss.health = Vita del Guardiano
|
||||||
|
|
||||||
connectfail = [scarlet]Impossibile connettersi al server:\n\n[accent] {0}
|
connectfail = [scarlet]Impossibile connettersi al server:\n\n[accent] {0}
|
||||||
error.unreachable = Server irraggiungibile. L'indirizzo è scritto correttamente?
|
error.unreachable = Server irraggiungibile. L'indirizzo è scritto correttamente?
|
||||||
error.invalidaddress = Indirizzo non valido.
|
error.invalidaddress = Indirizzo non valido.
|
||||||
error.timedout = Timeout!\nAssicurati che l'host abbia il port forwarding impostato e che l'indirizzo sia corretto!
|
error.timedout = Tempo scaduto!\nAssicurati che l'host abbia il port forwarding impostato e che l'indirizzo sia corretto!
|
||||||
error.mismatch = Errore dei pacchetti:\nPossibile discordanza della versione client/server.\nAssicurati che tu e l'host possiediate l'ultima versione di Mindustry!
|
error.mismatch = Errore dei pacchetti:\nPossibile discordanza della versione client/server.\nAssicurati che tu e l'host possiediate l'ultima versione di Mindustry!
|
||||||
error.alreadyconnected = Già connesso.
|
error.alreadyconnected = Già connesso.
|
||||||
error.mapnotfound = Mappa non trovata!
|
error.mapnotfound = Mappa non trovata!
|
||||||
@@ -528,18 +529,18 @@ error.bloom = Errore dell'avvio delle shaders.\nIl tuo dispositivo potrebbe non
|
|||||||
|
|
||||||
weather.rain.name = Pioggia
|
weather.rain.name = Pioggia
|
||||||
weather.snow.name = Neve
|
weather.snow.name = Neve
|
||||||
weather.sandstorm.name = Tempesta di sabbia
|
weather.sandstorm.name = Tempesta di Sabbia
|
||||||
weather.sporestorm.name = Tempesta di spore
|
weather.sporestorm.name = Tempesta di Spore
|
||||||
weather.fog.name = Nebbia
|
weather.fog.name = Nebbia
|
||||||
|
|
||||||
sectors.unexplored = [lightgray]Inesplorato
|
sectors.unexplored = [lightgray]Inesplorato
|
||||||
sectors.resources = Risorse:
|
sectors.resources = Risorse:
|
||||||
sectors.production = Produzione:
|
sectors.production = Produzione:
|
||||||
sectors.export = Esportazione:
|
sectors.export = Merce:
|
||||||
sectors.time = Tempo di Gioco:
|
sectors.time = Tempo:
|
||||||
sectors.threat = Minaccia:
|
sectors.threat = Minaccia:
|
||||||
sectors.wave = Ondata:
|
sectors.wave = Ondata:
|
||||||
sectors.stored = Immagazzinate:
|
sectors.stored = Immagazzinato:
|
||||||
sectors.resume = Riprendi
|
sectors.resume = Riprendi
|
||||||
sectors.launch = Lancia
|
sectors.launch = Lancia
|
||||||
sectors.select = Seleziona
|
sectors.select = Seleziona
|
||||||
@@ -548,21 +549,21 @@ sectors.rename = Rinomina Settore
|
|||||||
sectors.enemybase = [scarlet]Base Nemica
|
sectors.enemybase = [scarlet]Base Nemica
|
||||||
sectors.vulnerable = [scarlet]Vulnerabile
|
sectors.vulnerable = [scarlet]Vulnerabile
|
||||||
sectors.underattack = [scarlet]Sotto attacco! [accent]{0}% danneggiato
|
sectors.underattack = [scarlet]Sotto attacco! [accent]{0}% danneggiato
|
||||||
sectors.survives = [accent]Sopravissuto a {0} ondate
|
sectors.survives = [accent]Sopravvissuto a {0} ondate
|
||||||
sectors.go = Lancia
|
sectors.go = Lancia
|
||||||
sector.curcapture = Settore Catturato
|
sector.curcapture = Settore Catturato
|
||||||
sector.curlost = Settore Perso
|
sector.curlost = Settore Perso
|
||||||
sector.missingresources = [scarlet]Risorse del Nucleo insufficienti
|
sector.missingresources = [scarlet]Risorse del Nucleo Insufficienti
|
||||||
sector.attacked = Settore [accent]{0}[white] sotto attacco!
|
sector.attacked = Settore [accent]{0}[white] sotto attacco!
|
||||||
sector.lost = Settore [accent]{0}[white] perso!
|
sector.lost = Settore [accent]{0}[white] perso!
|
||||||
#note: the missing space in the line below is intentional
|
#nota: lo spazio mancante nella linea sotto è intenzionale
|
||||||
sector.captured = Settore [accent]{0}[white]catturato!
|
sector.captured = Settore [accent]{0}[white]catturato!
|
||||||
|
|
||||||
threat.low = Bassa
|
threat.low = Bassa
|
||||||
threat.medium = Media
|
threat.medium = Media
|
||||||
threat.high = Alta
|
threat.high = Alta
|
||||||
threat.extreme = Estrema
|
threat.extreme = Estrema
|
||||||
threat.eradication = Catrastofica
|
threat.eradication = Eradicazione
|
||||||
|
|
||||||
planets = Pianeti
|
planets = Pianeti
|
||||||
|
|
||||||
@@ -574,34 +575,34 @@ sector.groundZero.name = Terreno Zero
|
|||||||
sector.craters.name = Crateri
|
sector.craters.name = Crateri
|
||||||
sector.frozenForest.name = Foresta Ghiacciata
|
sector.frozenForest.name = Foresta Ghiacciata
|
||||||
sector.ruinousShores.name = Rive in Rovina
|
sector.ruinousShores.name = Rive in Rovina
|
||||||
sector.stainedMountains.name = Montagne Colorate
|
sector.stainedMountains.name = Montagne Macchiate
|
||||||
sector.desolateRift.name = Canyon Desolato
|
sector.desolateRift.name = Spaccatura Desolata
|
||||||
sector.nuclearComplex.name = Complesso Nucleare
|
sector.nuclearComplex.name = Complesso di Produzione Nucleare
|
||||||
sector.overgrowth.name = Supercrescita
|
sector.overgrowth.name = Profilassi
|
||||||
sector.tarFields.name = Distese di Catrame
|
sector.tarFields.name = Distese di Catrame
|
||||||
sector.saltFlats.name = Saline
|
sector.saltFlats.name = Saline
|
||||||
sector.fungalPass.name = Passaggio Fungino
|
sector.fungalPass.name = Passo Fungino
|
||||||
sector.biomassFacility.name = Centrale a Biomasse
|
sector.biomassFacility.name = Struttura di Sintesi di Biomassa
|
||||||
sector.windsweptIslands.name = Isole Ventilate
|
sector.windsweptIslands.name = Isole Ventose
|
||||||
sector.extractionOutpost.name = Avamposto di Estrazione
|
sector.extractionOutpost.name = Avamposto di Estrazione Mineraria
|
||||||
sector.planetaryTerminal.name = Base di Lancio Planetario
|
sector.planetaryTerminal.name = Terminale di Lancio Planetario
|
||||||
|
|
||||||
sector.groundZero.description = Il posto perfetto per ricominciare. Minaccia nemica bassa. Poche risorse.\nRaccogli più rame e più piombo che puoi.\nContinua.
|
sector.groundZero.description = La posizione ottimale per ricominciare. Bassa minaccia nemica. Poche risorse.\nRaccogli quanto più piombo e rame possibile.\nParti.
|
||||||
sector.frozenForest.description = Qnche qui, vicino alle montagne, le spore si sono diffuse. Le gelide temperature non possono trattenerle per eterno.\n\nEntra nel mondo dell'energia. Costruisci i generatori a combustibile. Impara ad usare i riparatori.
|
sector.frozenForest.description = Anche qui, più vicino alle montagne, le spore si sono diffuse. Le temperature gelide non possono contenerle per sempre.\n\nInizia l'avventura nell'energia. Costruisci generatori a combustione. Impara a usare i riparatori.
|
||||||
sector.saltFlats.description = Ai confini del deserto si trovano le Saline. Poche risorse sono presenti su questi suoli.\n\nI nemici hanno eretto un complesso di immagazzinamento delle risorse qui. Distruggi il loro nucleo. Non lasciare niente in piedi.
|
sector.saltFlats.description = Alla periferia nel deserto si trovano le saline. Si possono ricavare poche risorse in questa posizione.\n\nIl nemico ha costruito un complesso di immagazzinamento delle risorse qui. Elimina il loro nucleo. Non lasciare niente in piedi.
|
||||||
sector.craters.description = L'acqua si è accumulata nel cratere, reliquia delle antiche guerre. Riconquista quest'area. Raccogli la sabbia. Fondi il vetro metallico. Pompa l'acqua per raffreddare trivelle e torrette.
|
sector.craters.description = L'acqua si è accumulata in questo cratere, reliquia delle antiche guerre. Bonifica l'area. Raccogli la sabbia. Fondi il vetro metallico. Pompa acqua per raffreddare torrette e trivelle.
|
||||||
sector.ruinousShores.description = Oltre le distese c'è il litorale. Una volta questo posto ospitava una distesa di difese costiere. Non è rimasto molto. Solo le più semplici strutture difensive sono rimaste illese, tutto il resto è stato ridotto in rottami.\nContinua l'espansione verso l'esterno. Riscopri la tecnologia.
|
sector.ruinousShores.description = Oltre le distese, c'è il litorale. Una volta, questa posizione ospitava uno schieramento difensivo sulla costa. Non ne rimane molto. Solo le strutture di difesa più elementari sono rimaste intatte, tutto il resto è stato ridotto a rottami.\nContinua l'espansione verso l'esterno. Riscopri la tecnologia.
|
||||||
sector.stainedMountains.description = Nell'entroterra si trovano le montagne non ancora contaminate dalle spore.\nEstrai l'abbondante titanio di quest'area. Impara ad usarlo.\n\nLa presenza nemica è maggiore qui. Non dare tempo al nemico di mandare le sue unità più forti.
|
sector.stainedMountains.description = Oltre l'entroterra ci sono le montagne, ma non contaminato da spore.\nEstrai l'abbondante titanio in questa zona. Impara come usarlo.\n\nQui la presenza nemica è maggiore. Non dare loro il tempo di inviare le loro unità più forti.
|
||||||
sector.overgrowth.description = Quest'area, più vicina alle spore, è invasa dalla vegetazione.\nIl nemico ha costruito un avanposto qui. Fabbrica l'unità Mace. Distruggilo.
|
sector.overgrowth.description = Questa zona è ricoperta di vegetazione, più vicina alla fonte delle spore.\nIl nemico ha stabilito un avamposto qui. Costruisci le unità Titano. Distruggilo. Recupera ciò che è stato perso.
|
||||||
sector.tarFields.description = Ai confini di una zona petrolifera, tra le montagne e il deserto. Una delle poche aree con riserve di catrame utilizzabili.\nAnche se abbandonata, quest'area ha alcuni nemici pericolosi nelle vicinanze. Non sottovalutarli.\n\n[lightgray]Scopri la tecnologia per raffinare il petrolio, se riesci.
|
sector.tarFields.description = La periferia di una zona adibita di produzione di petrolio, tra le montagne e il deserto. Una delle poche aree con riserve di catrame utilizzabili.\nAnche se abbandonata, quest'area ha alcune pericolose forze nemiche nelle vicinanze. Non sottovalutarli.\n\n[lightgray]Scopri tecnologie di raffinazione del petrolio, se possibile.
|
||||||
sector.desolateRift.description = Una zona pericolosissima. Risorse abbondanti ma poco spazio. Alto è il riscio di distruzione. Lascia questa zona il prima possibile. Non lasciarti ingannare dalla lunga pausa tra le ondate nemiche.
|
sector.desolateRift.description = Una zona estremamente pericolosa. Risorse abbondanti, ma poco spazio. Alto rischio di distruzione. Parti il prima possibile. Non lasciarti ingannare dalla lunga distanza tra gli attacchi nemici.
|
||||||
sector.nuclearComplex.description = Un ex impianto per la produzione e la lavorazione del torio, ridotto a rudere.\n[lightgray]Scopri il torio e usalo in tutti i modi possibili.\n\nI nemici sono molto presenti in quest'area e costantemente alla ricerca di aggressori.
|
sector.nuclearComplex.description = Una vecchia struttura per la produzione e la lavorazione del torio, ridotta in rovina.\n[lightgray] Fai scoperte sul torio e sui suoi usi.\n\nIl nemico è presente in gran numero, costantemente alla ricerca di attaccanti.
|
||||||
sector.fungalPass.description = Un'area di transizione tra le montagne alte e quelle più basse invasa dalle spore. È presente una piccola base di ricognizione nemica.\nDistruggila.\nUsa il Dagger e il Crawler. Radi al suolo i due nuclei.
|
sector.fungalPass.description = Una zona di transizione tra le alte montagne e le terre inferiori, piene di spore. Una piccola base di ricognizione nemica si trova qui.\nDistruggila.\nUsa le unità come Pugnalatori e Strisciatori. Togli i due nuclei.
|
||||||
sector.biomassFacility.description = L'origine delle spore. Questa è la centrale dove sono state scoperte e prodotte inizialmente.\nScopri le tecnologie utilizzate in essa. Coltivale per produrre plastiche e carburanti.\n\n[lightgray]Prima di essere dismessa, le spore furono rilasciate. Niente nell'ecosistema locale è riuscito a sopravvivere ad un organismo così invasivo.
|
sector.biomassFacility.description = L'origine delle spore. Questa è la struttura nella quale loro sono state studiate ed inizialmente prodotte.\nScopri la tecnologia contenuta all'interno. Coltiva spore per la produzione di carburante e plastica.\n\n[lightgray]Da fallimento di questa struttura, le spore sono state rilasciate. Nulla nell'ecosistema locale potrebbe competere con un orgamismo talmente invasivo.
|
||||||
sector.windsweptIslands.description = Oltre la costa si trova questo arcipelago. Fonti affermano che in questi luoghi, un tempo, si producesse [accent]Plastanio[] in apposite fabbriche.\n\nRespingi le unità navali nemiche. Costruisci una base sulle isole. Scopri queste fabbriche.
|
sector.windsweptIslands.description = Oltre la fascia costiera si trova questo remoto arcipelago. Le registrazioni mostrano che una volta avevano [accent]Plastanio[]-producendo strutture.\n\nRespingi le unità navali nemiche. Stabilisci una base nelle isole. Scopri queste fabbriche.
|
||||||
sector.extractionOutpost.description = Un avamposto remoto, costruito dai nemici per lanciare le risorse su altri settori.\n\nI trasporti intersettoriali sono una tecnologia essenziale per le missioni future. Distruggi la base. Scopri i loro Ascensori Spaziali.
|
sector.extractionOutpost.description = Un avamposto remoto, costruito dai nemici con l'obiettivo di lanciare risorse in altri settori.\n\nLa tecnologia di trasposto a settori-incrociati è essenziale per un ulteriore conquista. Distruggi la base. scopri la loro Rampa di Lancio.
|
||||||
sector.impact0078.description = Qui giaciono i resti della prima nave spaziale mai entrata in questo sistema.\n\nRecupera tutto ciò che puoi dai rottami. Scopri qualsiasi tecnologia conservatasi nel tempo.
|
sector.impact0078.description = Qui giaciono i resti della nave da trasporto interstellare che fu la prima ad entrare in questo sistema.\n\nRecupera per quanto possibile dal relitto. Scopri qualsiasi tecnologia intatta.
|
||||||
sector.planetaryTerminal.description = L'obbiettivo finale.\n\nQuesta base costiera contiene una struttura in grado di lanciare i Nuclei su altri pianeti. È estremamente protetta.\n\nFabbrica le unità navali. Sconfiggi i nemici il più velocemente possibile. Scopri la struttura per il lancio.
|
sector.planetaryTerminal.description = Il bersaglio finale.\n\nQuesta base costiera contiene una struttura capace di lanciare Nuclei ai pianeti locali. È estremamente protetto.\n\nProduci unità navali. Elimina il nemico il più rapidamente possibile. Scopri la struttura di lancio.
|
||||||
|
|
||||||
settings.language = Lingua
|
settings.language = Lingua
|
||||||
settings.data = Dati di Gioco
|
settings.data = Dati di Gioco
|
||||||
@@ -633,17 +634,17 @@ unit.nobuild = [scarlet]L'unità non può costruire
|
|||||||
lastaccessed = [lightgray]Ultimo Accesso: {0}
|
lastaccessed = [lightgray]Ultimo Accesso: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
|
|
||||||
stat.description = Descrizione
|
stat.description = Obiettivo
|
||||||
stat.input = Ingresso
|
stat.input = Ingresso
|
||||||
stat.output = Uscita
|
stat.output = Uscita
|
||||||
stat.booster = Potenziamenti
|
stat.booster = Potenziamenti
|
||||||
stat.tiles = Terreni Richiesti:
|
stat.tiles = Blocchi Richiesti
|
||||||
stat.affinities = Affinità
|
stat.affinities = Affinità
|
||||||
stat.powercapacity = Capacità Energetica
|
stat.powercapacity = Capacità Energetica
|
||||||
stat.powershot = Energia/Colpo
|
stat.powershot = Energia/Colpo
|
||||||
stat.damage = Danno
|
stat.damage = Danno
|
||||||
stat.targetsair = Nemici Aerei
|
stat.targetsair = Attacca Nemici Aerei
|
||||||
stat.targetsground = Nemici Terreni
|
stat.targetsground = Attacca Nemici Terreni
|
||||||
stat.itemsmoved = Velocità
|
stat.itemsmoved = Velocità
|
||||||
stat.launchtime = Tempo tra Lanci
|
stat.launchtime = Tempo tra Lanci
|
||||||
stat.shootrange = Raggio
|
stat.shootrange = Raggio
|
||||||
@@ -655,10 +656,10 @@ stat.linkrange = Raggio di Collegamento
|
|||||||
stat.instructions = Istruzioni
|
stat.instructions = Istruzioni
|
||||||
stat.powerconnections = Connessioni Massime
|
stat.powerconnections = Connessioni Massime
|
||||||
stat.poweruse = Consumo Energetico
|
stat.poweruse = Consumo Energetico
|
||||||
stat.powerdamage = Consumo Energetico/Danno
|
stat.powerdamage = Energia/Danno
|
||||||
stat.itemcapacity = Capacità Oggetti
|
stat.itemcapacity = Capacità Oggetti
|
||||||
stat.memorycapacity = Memoria
|
stat.memorycapacity = Capacità di Memoria
|
||||||
stat.basepowergeneration = Energia Generata
|
stat.basepowergeneration = Generazione Minina di Energia
|
||||||
stat.productiontime = Tempo di Produzione
|
stat.productiontime = Tempo di Produzione
|
||||||
stat.repairtime = Tempo di Riparazione Completa
|
stat.repairtime = Tempo di Riparazione Completa
|
||||||
stat.weapons = Armi
|
stat.weapons = Armi
|
||||||
@@ -673,37 +674,37 @@ stat.health = Salute
|
|||||||
stat.buildtime = Tempo di Costruzione
|
stat.buildtime = Tempo di Costruzione
|
||||||
stat.maxconsecutive = Limite Consecutive
|
stat.maxconsecutive = Limite Consecutive
|
||||||
stat.buildcost = Costo di Costruzione
|
stat.buildcost = Costo di Costruzione
|
||||||
stat.inaccuracy = Precisione
|
stat.inaccuracy = Inaccuratezza
|
||||||
stat.shots = Colpi
|
stat.shots = Colpi
|
||||||
stat.reload = Colpi/Secondo
|
stat.reload = Cadenza
|
||||||
stat.ammo = Munizioni
|
stat.ammo = Munizioni
|
||||||
stat.shieldhealth = Salute Scudo
|
stat.shieldhealth = Integrità Scudo
|
||||||
stat.cooldowntime = Tempo di Recupero
|
stat.cooldowntime = Tempo Raffreddamento
|
||||||
stat.explosiveness = Esplosività
|
stat.explosiveness = Esplosività
|
||||||
stat.basedeflectchance = Probabilità di Deviazione
|
stat.basedeflectchance = Probabilità di Deviazione
|
||||||
stat.lightningchance = Probabilità dei Fulmini
|
stat.lightningchance = Probabilità di Fulmine
|
||||||
stat.lightningdamage = Danno Fulmini
|
stat.lightningdamage = Danno Fulmine
|
||||||
stat.flammability = Infiammabilità
|
stat.flammability = Infiammabilità
|
||||||
stat.radioactivity = Radioattività
|
stat.radioactivity = Radioattività
|
||||||
stat.heatcapacity = Capacità Termica
|
stat.heatcapacity = Capacità Termica
|
||||||
stat.viscosity = Viscosità
|
stat.viscosity = Viscosità
|
||||||
stat.temperature = Temperatura
|
stat.temperature = Temperatura
|
||||||
stat.speed = Velocità
|
stat.speed = Velocità
|
||||||
stat.buildspeed = Velcità di Costruzione
|
stat.buildspeed = Velocità Costruzione
|
||||||
stat.minespeed = Velocità di Scavaggio
|
stat.minespeed = Velocità Estrazione
|
||||||
stat.minetier = Livello Trivella
|
stat.minetier = Livello Estrazione
|
||||||
stat.payloadcapacity = Capacità di Carico
|
stat.payloadcapacity = Capacità di Carico
|
||||||
stat.commandlimit = Limite di Comando
|
stat.commandlimit = Limite di Comando
|
||||||
stat.abilities = Abilità
|
stat.abilities = Abilità
|
||||||
stat.canboost = Può Potenziarsi
|
stat.canboost = Capace di Potenziamento
|
||||||
stat.flying = Volo
|
stat.flying = Volo
|
||||||
|
|
||||||
ability.forcefield = Campo di Forza
|
ability.forcefield = Campo di Forza
|
||||||
ability.repairfield = Ripara Campo
|
ability.repairfield = Campo Riparativo
|
||||||
ability.statusfield = Campo di Stato
|
ability.statusfield = Campo di Stato
|
||||||
ability.unitspawn = {0} Fabbrica
|
ability.unitspawn = {0} Fabbrica
|
||||||
ability.shieldregenfield = Campo di Rigenerazione Scudo
|
ability.shieldregenfield = Campo di Rigenerazione Scudo
|
||||||
ability.movelightning = Fulmini nel Movimento
|
ability.movelightning = Movimento Fulminante
|
||||||
|
|
||||||
bar.drilltierreq = Miglior Trivella Richiesta
|
bar.drilltierreq = Miglior Trivella Richiesta
|
||||||
bar.noresources = Risorse Mancanti
|
bar.noresources = Risorse Mancanti
|
||||||
@@ -732,7 +733,7 @@ units.processorcontrol = [lightgray]Controllato dal Processore
|
|||||||
bullet.damage = [stat]{0}[lightgray] danno
|
bullet.damage = [stat]{0}[lightgray] danno
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] danno ad area ~[stat] {1}[lightgray] blocchi
|
bullet.splashdamage = [stat]{0}[lightgray] danno ad area ~[stat] {1}[lightgray] blocchi
|
||||||
bullet.incendiary = [stat]incendiario
|
bullet.incendiary = [stat]incendiario
|
||||||
bullet.sapping = [stat]indebolente
|
bullet.sapping = [stat]debilitante
|
||||||
bullet.homing = [stat]autoguidato
|
bullet.homing = [stat]autoguidato
|
||||||
bullet.shock = [stat]stordente
|
bullet.shock = [stat]stordente
|
||||||
bullet.frag = [stat]a frammentazione
|
bullet.frag = [stat]a frammentazione
|
||||||
@@ -780,7 +781,7 @@ setting.hints.name = Suggerimenti
|
|||||||
setting.flow.name = Visualizza Portata Nastri/Condotti
|
setting.flow.name = Visualizza Portata Nastri/Condotti
|
||||||
setting.backgroundpause.name = Metti in pausa quando in background
|
setting.backgroundpause.name = Metti in pausa quando in background
|
||||||
setting.buildautopause.name = Pausa Automatica nella Costruzione
|
setting.buildautopause.name = Pausa Automatica nella Costruzione
|
||||||
setting.animatedwater.name = Superfici Animate
|
setting.animatedwater.name = Fluidi Animati
|
||||||
setting.animatedshields.name = Scudi Animati
|
setting.animatedshields.name = Scudi Animati
|
||||||
setting.antialias.name = Antialias[lightgray] (richiede riavvio)[]
|
setting.antialias.name = Antialias[lightgray] (richiede riavvio)[]
|
||||||
setting.playerindicators.name = Indicatori Giocatori
|
setting.playerindicators.name = Indicatori Giocatori
|
||||||
@@ -811,11 +812,11 @@ setting.milliseconds = {0} millisecondi
|
|||||||
setting.fullscreen.name = Schermo Intero
|
setting.fullscreen.name = Schermo Intero
|
||||||
setting.borderlesswindow.name = Finestra Senza Bordi[lightgray] (potrebbe richiedere il riavvio)
|
setting.borderlesswindow.name = Finestra Senza Bordi[lightgray] (potrebbe richiedere il riavvio)
|
||||||
setting.fps.name = Mostra FPS e Ping
|
setting.fps.name = Mostra FPS e Ping
|
||||||
setting.smoothcamera.name = Inquadratura Fluida
|
setting.smoothcamera.name = Visuale fluida
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.pixelate.name = Effetto Pixel[lightgray] (disabilita le animazioni)
|
setting.pixelate.name = Pixellato
|
||||||
setting.minimap.name = Mostra Minimappa
|
setting.minimap.name = Mostra Minimappa
|
||||||
setting.coreitems.name = Visualizza Oggetti nel Nucleo
|
setting.coreitems.name = Mostra Oggetti Nucleo (WIP)
|
||||||
setting.position.name = Mostra Posizione Giocatori
|
setting.position.name = Mostra Posizione Giocatori
|
||||||
setting.musicvol.name = Volume Musica
|
setting.musicvol.name = Volume Musica
|
||||||
setting.atmosphere.name = Mostra Atmosfera Pianeta
|
setting.atmosphere.name = Mostra Atmosfera Pianeta
|
||||||
@@ -847,7 +848,7 @@ command.rally = Guardia
|
|||||||
command.retreat = Ritirata
|
command.retreat = Ritirata
|
||||||
command.idle = Inattivo
|
command.idle = Inattivo
|
||||||
placement.blockselectkeys = \n[lightgray]Tasto: [{0},
|
placement.blockselectkeys = \n[lightgray]Tasto: [{0},
|
||||||
keybind.respawn.name = Rigenerati
|
keybind.respawn.name = Rinasci
|
||||||
keybind.control.name = Controlla Unità
|
keybind.control.name = Controlla Unità
|
||||||
keybind.clear_building.name = Pulisci Costruzione
|
keybind.clear_building.name = Pulisci Costruzione
|
||||||
keybind.press = Premi un tasto...
|
keybind.press = Premi un tasto...
|
||||||
@@ -915,9 +916,9 @@ mode.sandbox.name = Creativa
|
|||||||
mode.sandbox.description = Risorse infinite e nessun timer per le ondate.
|
mode.sandbox.description = Risorse infinite e nessun timer per le ondate.
|
||||||
mode.editor.name = Editor
|
mode.editor.name = Editor
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
mode.pvp.description = Lotta contro altri giocatori.
|
mode.pvp.description = Combatti contro altri giocatori in locale.\n[gray]Per giocare la mappa sono necessari almeno due nuclei di colore diverso.
|
||||||
mode.attack.name = Schermaglia
|
mode.attack.name = Schermaglia
|
||||||
mode.attack.description = Distruggi la base nemica. \n[gray]Richiede un Nucleo rosso nella mappa per essere giocata.
|
mode.attack.description = Distruggi la base nemica. \n[gray]Richiede un nucleo rosso nella mappa per essere giocata.
|
||||||
mode.custom = Regole Personalizzate
|
mode.custom = Regole Personalizzate
|
||||||
|
|
||||||
rules.infiniteresources = Risorse Infinite
|
rules.infiniteresources = Risorse Infinite
|
||||||
@@ -926,9 +927,9 @@ rules.schematic = Schematiche Consentite
|
|||||||
rules.wavetimer = Timer Ondate
|
rules.wavetimer = Timer Ondate
|
||||||
rules.waves = Ondate
|
rules.waves = Ondate
|
||||||
rules.attack = Modalità Attacco
|
rules.attack = Modalità Attacco
|
||||||
rules.buildai = AI Costruzioni
|
rules.buildai = Costruzioni dell'AI
|
||||||
rules.enemyCheat = Risorse AI Infinite
|
rules.enemyCheat = Risorse AI (Team Rosso) Infinite
|
||||||
rules.blockhealthmultiplier = Moltiplicatore Danno Blocco
|
rules.blockhealthmultiplier = Moltiplicatore Salute Blocco
|
||||||
rules.blockdamagemultiplier = Moltiplicatore Danno Blocco
|
rules.blockdamagemultiplier = Moltiplicatore Danno Blocco
|
||||||
rules.unitbuildspeedmultiplier = Moltiplicatore Velocità Costruzione Unità
|
rules.unitbuildspeedmultiplier = Moltiplicatore Velocità Costruzione Unità
|
||||||
rules.unithealthmultiplier = Moltiplicatore Vita Unità
|
rules.unithealthmultiplier = Moltiplicatore Vita Unità
|
||||||
@@ -983,41 +984,41 @@ liquid.slag.name = Scoria
|
|||||||
liquid.oil.name = Petrolio
|
liquid.oil.name = Petrolio
|
||||||
liquid.cryofluid.name = Criofluido
|
liquid.cryofluid.name = Criofluido
|
||||||
|
|
||||||
unit.dagger.name = Dagger
|
unit.dagger.name = Pugnalatore
|
||||||
unit.mace.name = Mace
|
unit.mace.name = Randellatore
|
||||||
unit.fortress.name = Fortress
|
unit.fortress.name = Fortezza
|
||||||
unit.nova.name = Nova
|
unit.nova.name = Scintilla
|
||||||
unit.pulsar.name = Pulsar
|
unit.pulsar.name = Folgore
|
||||||
unit.quasar.name = Quasar
|
unit.quasar.name = Lampo
|
||||||
unit.crawler.name = Crawler
|
unit.crawler.name = Strisciatore
|
||||||
unit.atrax.name = Atrax
|
unit.atrax.name = Atrax
|
||||||
unit.spiroct.name = Spiroct
|
unit.spiroct.name = Aracnideto
|
||||||
unit.arkyid.name = Arkyid
|
unit.arkyid.name = Treppiede
|
||||||
unit.toxopid.name = Toxopid
|
unit.toxopid.name = Cataclisma
|
||||||
unit.flare.name = Flare
|
unit.flare.name = Sentinella
|
||||||
unit.horizon.name = Horizon
|
unit.horizon.name = Orizzonte
|
||||||
unit.zenith.name = Zenith
|
unit.zenith.name = Apice
|
||||||
unit.antumbra.name = Antumbra
|
unit.antumbra.name = Penombra
|
||||||
unit.eclipse.name = Eclipse
|
unit.eclipse.name = Eclisse
|
||||||
unit.mono.name = Mono
|
unit.mono.name = Minatore
|
||||||
unit.poly.name = Poly
|
unit.poly.name = Costruttore
|
||||||
unit.mega.name = Mega
|
unit.mega.name = Riparatore
|
||||||
unit.quad.name = Quad
|
unit.quad.name = Bombardiere
|
||||||
unit.oct.name = Oct
|
unit.oct.name = Curatore
|
||||||
unit.risso.name = Risso
|
unit.risso.name = Corvetta
|
||||||
unit.minke.name = Minke
|
unit.minke.name = Cacciatorpediniere
|
||||||
unit.bryde.name = Bryde
|
unit.bryde.name = Incrociatore
|
||||||
unit.sei.name = Sei
|
unit.sei.name = Nave da Guerra
|
||||||
unit.omura.name = Omura
|
unit.omura.name = Portaerei
|
||||||
unit.alpha.name = Alpha
|
unit.alpha.name = Alpha
|
||||||
unit.beta.name = Beta
|
unit.beta.name = Beta
|
||||||
unit.gamma.name = Gamma
|
unit.gamma.name = Gamma
|
||||||
unit.scepter.name = Scepter
|
unit.scepter.name = Infiltratore
|
||||||
unit.reign.name = Reign
|
unit.reign.name = Conquistatore
|
||||||
unit.vela.name = Vela
|
unit.vela.name = Radiante
|
||||||
unit.corvus.name = Corvus
|
unit.corvus.name = Disgregatore
|
||||||
|
|
||||||
block.resupply-point.name = Rifornitore
|
block.resupply-point.name = Punto di Rifornimento
|
||||||
block.parallax.name = Parallasse
|
block.parallax.name = Parallasse
|
||||||
block.cliff.name = Scogliera
|
block.cliff.name = Scogliera
|
||||||
block.sand-boulder.name = Masso di Sabbia
|
block.sand-boulder.name = Masso di Sabbia
|
||||||
@@ -1029,11 +1030,11 @@ block.salt.name = Sale
|
|||||||
block.salt-wall.name = Muro di Sale
|
block.salt-wall.name = Muro di Sale
|
||||||
block.pebbles.name = Ciottoli
|
block.pebbles.name = Ciottoli
|
||||||
block.tendrils.name = Viticci
|
block.tendrils.name = Viticci
|
||||||
block.sand-wall.name = Muro Di Sabbia
|
block.sand-wall.name = Muro di Sabbia
|
||||||
block.spore-pine.name = Pino di Spore
|
block.spore-pine.name = Pino di Spore
|
||||||
block.spore-wall.name = Muro di Spore
|
block.spore-wall.name = Muro di Spore
|
||||||
block.boulder.name = Masso
|
block.boulder.name = Masso
|
||||||
block.snow-boulder.name = Masso Innevato
|
block.snow-boulder.name = Masso di Neve
|
||||||
block.snow-pine.name = Pino Innevato
|
block.snow-pine.name = Pino Innevato
|
||||||
block.shale.name = Scisto
|
block.shale.name = Scisto
|
||||||
block.shale-boulder.name = Masso di Scisto
|
block.shale-boulder.name = Masso di Scisto
|
||||||
@@ -1050,7 +1051,7 @@ block.kiln.name = Forno
|
|||||||
block.graphite-press.name = Pressa per Grafite
|
block.graphite-press.name = Pressa per Grafite
|
||||||
block.multi-press.name = Multi Pressa
|
block.multi-press.name = Multi Pressa
|
||||||
block.constructing = {0}\n[lightgray](In Costruzione)
|
block.constructing = {0}\n[lightgray](In Costruzione)
|
||||||
block.spawn.name = Spawn Nemico
|
block.spawn.name = Punto di Generazione Nemico
|
||||||
block.core-shard.name = Nucleo: Frammento
|
block.core-shard.name = Nucleo: Frammento
|
||||||
block.core-foundation.name = Nucleo: Fondamento
|
block.core-foundation.name = Nucleo: Fondamento
|
||||||
block.core-nucleus.name = Nucleo: Kernel
|
block.core-nucleus.name = Nucleo: Kernel
|
||||||
@@ -1075,7 +1076,7 @@ block.ice-snow.name = Neve Ghiacciata
|
|||||||
block.stone-wall.name = Muro di Pietra
|
block.stone-wall.name = Muro di Pietra
|
||||||
block.ice-wall.name = Muro di Ghiaccio
|
block.ice-wall.name = Muro di Ghiaccio
|
||||||
block.snow-wall.name = Muro di Neve
|
block.snow-wall.name = Muro di Neve
|
||||||
block.dune-wall.name = Duna
|
block.dune-wall.name = Muro di Duna
|
||||||
block.pine.name = Pino
|
block.pine.name = Pino
|
||||||
block.dirt.name = Terra
|
block.dirt.name = Terra
|
||||||
block.dirt-wall.name = Muro di Terra
|
block.dirt-wall.name = Muro di Terra
|
||||||
@@ -1203,36 +1204,36 @@ block.arc.name = Arco Elettrico
|
|||||||
block.rtg-generator.name = Generatore RTG
|
block.rtg-generator.name = Generatore RTG
|
||||||
block.spectre.name = Spettro
|
block.spectre.name = Spettro
|
||||||
block.meltdown.name = Fusione
|
block.meltdown.name = Fusione
|
||||||
block.foreshadow.name = Ombratore
|
block.foreshadow.name = Tenebra
|
||||||
block.container.name = Contenitore
|
block.container.name = Contenitore
|
||||||
block.launch-pad.name = Ascensore Spaziale
|
block.launch-pad.name = Ascensore Spaziale
|
||||||
block.launch-pad-large.name = Ascensore Spaziale Avanzato
|
block.launch-pad-large.name = Ascensore Spaziale Avanzato
|
||||||
block.segment.name = Frazionatore
|
block.segment.name = Segmentatore
|
||||||
block.command-center.name = Centro di Controllo
|
block.command-center.name = Centro di Controllo
|
||||||
block.ground-factory.name = Fabbrica Terrena
|
block.ground-factory.name = Fabbrica Terrestre
|
||||||
block.air-factory.name = Fabbrica Aerea
|
block.air-factory.name = Fabbrica Aerea
|
||||||
block.naval-factory.name = Fabbrica Navale
|
block.naval-factory.name = Fabbrica Navale
|
||||||
block.additive-reconstructor.name = Ricostruttore Additivo
|
block.additive-reconstructor.name = Ricostruttore Adattivo
|
||||||
block.multiplicative-reconstructor.name = Ricostruttore Moltiplicativo
|
block.multiplicative-reconstructor.name = Ricostruttore Moltiplicativo
|
||||||
block.exponential-reconstructor.name = Ricostruttore Esponenziale
|
block.exponential-reconstructor.name = Ricostruttore Esponenziale
|
||||||
block.tetrative-reconstructor.name = Ricostruttore Tetrativo
|
block.tetrative-reconstructor.name = Ricostruttore Tetrattivo
|
||||||
block.payload-conveyor.name = Trasportatore di Massa
|
block.payload-conveyor.name = Trasportatore di Massa
|
||||||
block.payload-router.name = Distributore di Carico
|
block.payload-router.name = Distributore di Carico
|
||||||
block.disassembler.name = Disassemblatore
|
block.disassembler.name = Disassemblatore
|
||||||
block.silicon-crucible.name = Fornace di Silicio
|
block.silicon-crucible.name = Crogiolo per Silicio
|
||||||
block.overdrive-dome.name = Overdrive Dome
|
block.overdrive-dome.name = Cupola di Overdrive
|
||||||
#experimental, may be removed
|
#sperimentale, potrebbero esseri rimossi
|
||||||
block.block-forge.name = Forgia per Blocchi
|
block.block-forge.name = Forgia per Blocco
|
||||||
block.block-loader.name = Caricatore per Blocchi
|
block.block-loader.name = Caricatore Blocchi
|
||||||
block.block-unloader.name = Scaricatore per Blocchi
|
block.block-unloader.name = Scaricatore Blocchi
|
||||||
block.interplanetary-accelerator.name = Acceleratore Interplanetare
|
block.interplanetary-accelerator.name = Acceleratore Interplanetario
|
||||||
|
|
||||||
block.switch.name = Interruttore
|
block.switch.name = Interruttore
|
||||||
block.micro-processor.name = Micro Processore
|
block.micro-processor.name = Micro Processore
|
||||||
block.logic-processor.name = Processore Logico
|
block.logic-processor.name = Processore Logico
|
||||||
block.hyper-processor.name = Super Processore
|
block.hyper-processor.name = Iper Processore
|
||||||
block.logic-display.name = Display Logico
|
block.logic-display.name = Display Logico
|
||||||
block.large-logic-display.name = Display Logico Grande
|
block.large-logic-display.name = Grande Display Logico
|
||||||
block.memory-cell.name = Cella di Memoria
|
block.memory-cell.name = Cella di Memoria
|
||||||
block.memory-bank.name = Banca di Memoria
|
block.memory-bank.name = Banca di Memoria
|
||||||
|
|
||||||
@@ -1246,44 +1247,46 @@ team.purple.name = viola
|
|||||||
|
|
||||||
hint.skip = Salta
|
hint.skip = Salta
|
||||||
hint.desktopMove = Usa [accent][[WASD][] per muoverti.
|
hint.desktopMove = Usa [accent][[WASD][] per muoverti.
|
||||||
hint.zoom = [accent]Scorri[] per ingrandire/rimpicciolire.
|
hint.zoom = [accent]Scorri[] per aumentare o ridurre la visuale.
|
||||||
hint.mine = Spostati vicino al \uf8c4 rame e [accent]cliccaci[] sopra per scavarlo manualmente.
|
hint.mine = Muoviti vicino il \uf8c4 minerale di rame e[accent]toccalo[] per minare manualmente.
|
||||||
hint.desktopShoot = [accent][[Tasto sinistro][] per sparare.
|
hint.desktopShoot = [accent][[Click-sinistro][] per sparare.
|
||||||
hint.depositItems = Per scaricare degli oggetti, trascinali dalla tua navicella al nucleo.
|
hint.depositItems = Per trasferire oggetti, trascinadalla tua nave al nucleo.
|
||||||
hint.respawn = Per rigenerarti come navicella, premi [accent][[V][].
|
hint.respawn = Per rinascere come nave, premi [accent][[V][].
|
||||||
hint.respawn.mobile = Sei passato al controllo di un'unità/struttura. Per rigenerarti come navicella, [accent]premi l'avatar in alto a sinistra[].
|
hint.respawn.mobile = Hai cambiato il controllo a unità/strutture. Per rinascere come nave, [accent]tocca the l'avatar in alto a sinistra.[]
|
||||||
hint.desktopPause = Premi [accent][[Spazio][] per mettere in pausa o riprendere la partita.
|
hint.desktopPause = Premi[accent][[Space][] per mettere in pausa o riprendere il gioco.
|
||||||
hint.placeDrill = Accedi alla sezione \ue85e [accent]Trivelle[] dal menu in basso a destra, seleziona la \uf870 [accent]Trivella[] e clicca sulla vena di rame per costruirla.
|
hint.placeDrill = Seleziona la sezione delle \ue85e [accent]Trivelle[] nel menu in fondo a destra, dopo seleziona una \uf870 [accent]Trivella[] e cliccala su una risorsa di rame per piazzarla.
|
||||||
hint.placeDrill.mobile = Accedi alla sezione \ue85e [accent]Trivelle[] dal menu in basso a destra, seleziona la \uf870 [accent]Trivella[] e fai un tap sulla vena di rame per costruirla.\n\nPremi \ue800 in basso a destra per confermare.
|
hint.placeDrill.mobile = Seleziona la sezione \ue85e [accent]Trivelle[] nel menu in fondo a destra, dopo seleziona una \uf870 [accent]Drill[] e cliccalo su una risorsa di rame per piazzarlo.\n\nPremi il \ue800 [accent]checkmark[] in fonod a destra per confermare.
|
||||||
hint.placeConveyor = I nastri trasportatori muovono gli oggetti dalle trivelle ad altri blocchi. Seleziona un \uf896 [accent]Nastro Trasportatore[] dal menu \ue814 [accent]Distribuzione[].\n\nClicca e trascina il cursore per disporre più nastri contemporaneamente.\n[accent]Scorri[] per ruotarli.
|
hint.placeConveyor = I nastri trasportatori muovono oggetti dalle trivelle in altri blocchi. Seleziona un \uf896 [accent]Nastro[] dalla sezione \ue814 [accent]Distribuzione[].\n\nClicca e trascina per piazziare più nastri.\n[accent]Scorri[] per ruotare.
|
||||||
hint.placeConveyor.mobile = I nastri trasportatori muovono gli oggetti dalle trivelle ad altri blocchi. Seleziona un \uf896 [accent]Nastro Trasportatore[] dal menu \ue814 [accent]Distribuzione[].\n\nTieni premuto il dito per un secondo e trascinalo per disporre più nastri contemporaneamente.
|
hint.placeConveyor.mobile = I nastri trasportatori muovono gli oggetti dalle trivelle ad altri blocchi. Seleziona un \uf896 [accent]Nastro Trasportatore[] dal menu \ue814 [accent]Distribuzione[].\n\nTieni premuto il dito per un secondo e trascinalo per disporre più nastri contemporaneamente.
|
||||||
hint.placeTurret = Posiziona le \uf861 [accent]Torrette[] per difendere la tua base dai nemici.\n\nLe torrette hanno bisogno delle munizioni - in questo caso, \uf838 rame.\nUtilizza i nastri trasportatori e le trivelle per rifornirle.
|
hint.placeTurret = Posiziona \uf861 [accent]Torrette[] per difendere la tua base dai nemici.\n\n Le torrette richiedono munizioni- in questo caso, \uf838rame.\nUsa nastri e trivelle per rifornirli.
|
||||||
hint.breaking = [accent]Click Destro[] e trascina il mouse per selezionare i blocchi da distruggere.
|
hint.breaking = [accent]Click-destro[] e trascina per distruggere blocchi.
|
||||||
hint.breaking.mobile = Attiva il \ue817 [accent]martello[] in basso a destra e tocca i blocchi da distruggere.\n\nTieni premuto il dito per un secondo e trascinalo per creare selezionare più blocchi contemporaneamente.
|
hint.breaking.mobile = Attivita il \ue817 [accent]martello[] in fondo a destra e tocca per distruggere blocchi.\n\nTieni premuto il tuo dito per un secondo e trascina per distruggere blocchi in una selezione.
|
||||||
hint.research = Clicca sul tasto \ue875 [accent]Albero Scoperte[] per scoprire nuove tecnologie.
|
hint.research = Usa il pulsante \ue875 [accent]Scopri[] per scoprire nuova tecnologia.
|
||||||
hint.research.mobile = Clicca sul tasto \ue875 [accent]Albero Scoperte[] nel \ue88c [accent]Menu[] per scoprire nuove tecnologie.
|
hint.research.mobile = Usa il pulsante \ue875 [accent]Research[] nel \ue88c [accent]menu[] per scoprire una nuova tecnologia.
|
||||||
hint.unitControl = Tieni premuto [accent][[L-ctrl][] e [accent]Tasto Sinistro[] per controllare le tue unità o le tue torrette.
|
hint.unitControl = Tieni premuto [accent][[L-ctrl][] e [accent]clic[] per controllare unità o torrette amichevoli.
|
||||||
hint.unitControl.mobile = [accent][[Doppio tap][] per controllare le tue unità o le tue torrette.
|
hint.unitControl.mobile = [accent][[Doppio-tocco][] per controllare unità o torrette amichevoli.
|
||||||
hint.launch = Una volta raccolte abbastanza risorse, puoi [accent]Lanciarti[] su un settore vicino a te selezionandolo dalla \ue827 [accent]Mappa[] in basso a destra.
|
hint.launch = Una volta che sono state raccolte abbastanza risorse, puoi[accent]Lanciare[] selezionando settori vicini dalla \ue827 [accent]Mappa[] in fondo a destra.
|
||||||
hint.launch.mobile = Una volta raccolte abbastanza risorse, puoi [accent]Lanciarti[] su un settore vicino a te selezionandolo dalla \ue827 [accent]Mappa[] nel \ue88c [accent]Menu[].
|
hint.launch.mobile = Una volta che sono state raccolte abbastanza risorse, puoi[accent]Lanciare[] selezionando settori vicini dalla \ue827 [accent]Mappa[] nel \ue88c [accent]menu[].
|
||||||
hint.schematicSelect = Tieni premuto [accent][[F][] e trascina il cursore per selezionare i blocchi da copiare e incollare.\n\n[accent][[Tasto Centrale][] per copiare solamente un blocco.
|
hint.schematicSelect = Tieni premuto [accent][[F][] e trascina per selezionare blocchi da copiare ed incollare.\n\n[accent][[Middle Click][] per copiare un singolo tipo di blocco.
|
||||||
hint.conveyorPathfind = Tieni premuto [accent][[L-Ctrl][] mentre posizioni i nastri trasportatori per fargli seguire il percorso migliore automaticamente.
|
hint.conveyorPathfind = Tieni premuto [accent][[L-Ctrl][] mentre trascini nastri per generare automaticamente un percorso.
|
||||||
hint.conveyorPathfind.mobile = Abilita \ue844 [accent]modalità diagonale[] e trascina i nastri trasportatori per fargli seguire il percorso migliore automaticamente.
|
hint.conveyorPathfind.mobile = Attiva la \ue844 [accent]modalità diagonale[] e trascina nastri per generare automaticamente un percorso.
|
||||||
hint.boost = Tieni premuto [accent][[L-Shift][] per volare sopra gli ostacoli con l'unità che stai controllando.\n\nNon tutte le unità possono volare.
|
hint.boost = Tieni premuto [accent][[L-Shift][] per volare sopra gli ostacoli con la tua unità attuale.\n\nSolo poche unità terrestri possono farlo.
|
||||||
hint.command = Premi [accent][[G][] per formare un gruppo con le unità dello [accent]stesso tipo[] vicine e comandarlo.\n\nPer comandare le unitù di terra devi prima controllare un'altra unità di terra.
|
hint.command = Premi [accent][[G][] per comandare le unità vicine di [accent]simile tipologia[] in formazione.\n\nPer comandare unità terrestri, devi prima controllare un'altra unità terrestre.
|
||||||
hint.command.mobile = [accent][[Doppio tap][] sulla tua unità per formare un gruppo con le unità vicine e comandarlo.
|
hint.command.mobile = [accent][[Double-tap][] per comandare le unità vicine in formazione.
|
||||||
hint.payloadPickup = Premi [accent][[[] per caricare piccoli blocchi o unità.
|
hint.payloadPickup = Premi [accent][[[] per raccogliere piccoli blocchi o unità.
|
||||||
hint.payloadPickup.mobile = [accent]Tieni premuto[] su un piccolo blocco o un'unità per caricarla.
|
hint.payloadPickup.mobile = [accent]Clicca e trattieni[] piccoli blocchi o unità per raccglierla.
|
||||||
hint.payloadDrop = Premi [accent]][] per rilasciare il carico.
|
hint.payloadDrop = Premi [accent]][] per rilasciare un carico.
|
||||||
hint.payloadDrop.mobile = [accent]Tieni premuto[] su un posto libero per rilasciare il carico lì.
|
hint.payloadDrop.mobile = [accent]Clicca e trattieni[] una posizione vuota per rilasciarci un carico.
|
||||||
hint.waveFire = Le torrette a [accent]Getto[] che utilizzano l'acqua come munizione spegneranno automaticamente gli incendi nelle vicinanze.
|
hint.waveFire = [accent]Idrogetto[] torrette con acqua per munizioni spegneranno automaticamente incendi.
|
||||||
hint.generator = Il \uf879 [accent]Generatore a Combustibile[] brucia carbone per produrre energia che trasmette ai blocchi adiacenti.\n\nIl raggio di trasmissione può essere esteso con i \uf87f [accent]Nodi Energetici[].
|
hint.generator = \uf879 [accent]Generatori a Combustibile[] bruciano carbone e trasferiscono energia ai blocchi adiacenti.\n\nIl raggio di trasmissione dell'enrgia può essere esteso con \uf87f [accent]Nodo Energetico[].
|
||||||
hint.guardian = Le unità [accent]Guardian[] sono corazzate. Le munizioni deboli come il [accent]Rame[] e il [accent]Piombo[] sono [scarlet]poco efficaci[].\n\nUsa torrette più potenti o \uf835 [accent]Grafite[] \uf861Torretta Duo/\uf859 Cannone Leggero per abbattere i Guardians.
|
hint.guardian = Unità [accent]Guardiano[] sono corazzate. Munizioni deboli come [accent]Rame[] e [accent]Piombo[] sono [scarlet]inefficaci[].\n\nUsa torrette di grado superiore o \uf835 [accent]Grafite[] \uf861Duo/\uf859Cannone Leggero per buttare giù il boss.
|
||||||
|
hint.coreUpgrade = I nuclei possono essere aggiornati [accent]piazzando nuclei di un livello superiore sopra di loro[].\n\nPiazzia un nucleo [accent]Fondazione[] sopra il nucleo [accent]Frammento[]. Assicurati che sia libero da ostacoli.
|
||||||
|
hint.presetLaunch = [accent]Settori grigi d'atterraggio[], come [accent]Foresta Ghiacciata[], possono essere lanciati da ovunque. Non richiedono la cattura nei terrotori circostanti.\n\n[accent]Settori numerati[], come questo qui, sono [accent]opzionali[].
|
||||||
|
|
||||||
item.copper.description = Usato in molti tipi di costruzioni e munizioni.
|
item.copper.description = Usato in molti tipi di costruzioni e munizioni.
|
||||||
item.copper.details = Rame. Abbondante su Serpulo. Strutturalmente debole se non rinforzato.
|
item.copper.details = Rame. Metallo anormalmente abbondante su Serpulo. Strutturalmente debole se non rinforzato.
|
||||||
item.lead.description = Usato nel trasporto di liquidi e strutture elettriche.
|
item.lead.description = Usato nel trasporto di liquidi e strutture elettriche.
|
||||||
item.lead.details = Denso. Inerte. usato molto nelle batterie.\nNota: probabilmente tossico per le forme di vita qui. Non che ne siano rimaste molte.
|
item.lead.details = Denso. Inerte. Ampiamente utilizzato in batterie.\nNota: Probabilmente tossico per le forme di vita biologica. Non che siano rimaste in molti qui.
|
||||||
item.metaglass.description = Usato nelle strutture per il trasporto/immagazzinamento dei liquidi.
|
item.metaglass.description = Usato nelle strutture per il trasporto/immagazzinamento dei liquidi.
|
||||||
item.graphite.description = Usato nei componenti elettrici e come munizione per le torrette.
|
item.graphite.description = Usato nei componenti elettrici e come munizione per le torrette.
|
||||||
item.sand.description = Usata per la produzione di altri materiali raffinati.
|
item.sand.description = Usata per la produzione di altri materiali raffinati.
|
||||||
@@ -1298,16 +1301,16 @@ item.plastanium.description = Utilizzato per le unità avanzate e come munizione
|
|||||||
item.phase-fabric.description = Usato nei circuiti avanzati e per le strutture autoriparanti.
|
item.phase-fabric.description = Usato nei circuiti avanzati e per le strutture autoriparanti.
|
||||||
item.surge-alloy.description = Usato come munizione per torrette avanzate.
|
item.surge-alloy.description = Usato come munizione per torrette avanzate.
|
||||||
item.spore-pod.description = Utilizzato per la conversione in petrolio, esplosivi e carburante.
|
item.spore-pod.description = Utilizzato per la conversione in petrolio, esplosivi e carburante.
|
||||||
item.spore-pod.details = Spore. Probabilmente una forma di vita sintetica. Emettono gas tossici per altre forme di vita. Estremamente invasive. In certe condizioni sono altamente infiammabili.
|
item.spore-pod.details = Spore. Probabilmente una forma di vita sintetica. Emettono gas tossici alle vita biologica. Estremamente invasive. Altamente infiammabili in certe condizioni.
|
||||||
item.blast-compound.description = Usato per bombe e munizioni esplosive.
|
item.blast-compound.description = Un composto altamente volatile, utilizzato nella produzione di bombe ed esplosivi. Può essere utilizzato come combustibile anche se non è consigliabile.
|
||||||
item.pyratite.description = Usata per certe munizioni incendiarie e nei generatori a combustibile.
|
item.pyratite.description = Una sostanza molto infiammabile che viene utilizzata nelle armi da fuoco.
|
||||||
|
|
||||||
liquid.water.description = Usata per raffreddare i macchinari e per il trattamento dei rifiuti.
|
liquid.water.description = Usato per il raffreddamento di macchinari ed il trattamento dei rifiuti.
|
||||||
liquid.slag.description = Raffinata nei separatori in diversi metalli o spruzzata sui nemici come munizione.
|
liquid.slag.description = Raffinata nei separatori in diversi metalli o spruzzata sui nemici come munizione.
|
||||||
liquid.oil.description = Usato nella produzione di materiali avanzati e come munizione incendiaria.
|
liquid.oil.description = Usato nella produzione di materiali avanzati e come munizione incendiaria.
|
||||||
liquid.cryofluid.description = Usato come refrigerante in reattori, torrette e macchinari.
|
liquid.cryofluid.description = Usato come refrigerante in reattori, torrette e macchinari.
|
||||||
|
|
||||||
block.resupply-point.description = Rifornisce le unità vicine con le munizioni. Non è compatibile con le unità che richiedono energia.
|
block.resupply-point.description = Rifornisce untià vicine con munizioni in rame. Incompatibile con unità che richiedono energia.
|
||||||
block.armored-conveyor.description = Trasporta gli oggetti. Non accetta oggetti dai lati.
|
block.armored-conveyor.description = Trasporta gli oggetti. Non accetta oggetti dai lati.
|
||||||
block.illuminator.description = Emette luce.
|
block.illuminator.description = Emette luce.
|
||||||
block.message.description = Memorizza un messaggio per le comunicazioni tra alleati.
|
block.message.description = Memorizza un messaggio per le comunicazioni tra alleati.
|
||||||
@@ -1341,8 +1344,8 @@ block.plastanium-wall.description = Protegge le strutture dai proiettili nemici.
|
|||||||
block.plastanium-wall-large.description = Protegge le strutture dai proiettili nemici. Assorbe i raggi laser e gli archi elettrici. Absorbs lasers and electric arcs. Blocca le connessioni automatiche dei nodi energetici.
|
block.plastanium-wall-large.description = Protegge le strutture dai proiettili nemici. Assorbe i raggi laser e gli archi elettrici. Absorbs lasers and electric arcs. Blocca le connessioni automatiche dei nodi energetici.
|
||||||
block.thorium-wall.description = Protegge le strutture dai proiettili nemici.
|
block.thorium-wall.description = Protegge le strutture dai proiettili nemici.
|
||||||
block.thorium-wall-large.description = Protegge le strutture dai proiettili nemici.
|
block.thorium-wall-large.description = Protegge le strutture dai proiettili nemici.
|
||||||
block.phase-wall.description = Protegge le strutture dai proiettili nemici riflettendone la maggirparte all'impatto.
|
block.phase-wall.description = Protegge le strutture dai proiettili nemici riflettendone la maggior parte all'impatto.
|
||||||
block.phase-wall-large.description = Protegge le strutture dai proiettili nemici riflettendone la maggirparte all'impatto.
|
block.phase-wall-large.description = Protegge le strutture dai proiettili nemici riflettendone la maggior parte all'impatto.
|
||||||
block.surge-wall.description = Protegge le strutture dai proiettili nemici rilasciando periodicamente archi elettrici al contatto.
|
block.surge-wall.description = Protegge le strutture dai proiettili nemici rilasciando periodicamente archi elettrici al contatto.
|
||||||
block.surge-wall-large.description = Protegge le strutture dai proiettili nemici rilasciando periodicamente archi elettrici al contatto.
|
block.surge-wall-large.description = Protegge le strutture dai proiettili nemici rilasciando periodicamente archi elettrici al contatto.
|
||||||
block.door.description = Un muro che può essere aperto o chiuso.
|
block.door.description = Un muro che può essere aperto o chiuso.
|
||||||
@@ -1450,7 +1453,7 @@ block.memory-cell.description = Imagazzina le informazioni elaborate dai process
|
|||||||
block.memory-bank.description = Imagazzina le informazioni elaborate dai processori. Alta capacità.
|
block.memory-bank.description = Imagazzina le informazioni elaborate dai processori. Alta capacità.
|
||||||
block.logic-display.description = Visualizza la grafica arbitraria elaborata dal processore.
|
block.logic-display.description = Visualizza la grafica arbitraria elaborata dal processore.
|
||||||
block.large-logic-display.description = Visualizza la grafica arbitraria elaborata dal processore.
|
block.large-logic-display.description = Visualizza la grafica arbitraria elaborata dal processore.
|
||||||
block.interplanetary-accelerator.description = Un enorme torre di dispersori elettromagnetici. Accelera i nuclei alla velocità di fuga per il lancio interplanetario.
|
block.interplanetary-accelerator.description = Una massiccia torre che utilizza potenti campi elettromagnetici. Accelera nuclei fino alla velocità di fuga per un impiego interplanetario.
|
||||||
|
|
||||||
unit.dagger.description = Spara proiettili standard ai nemici vicini.
|
unit.dagger.description = Spara proiettili standard ai nemici vicini.
|
||||||
unit.mace.description = Spara raffiche infuocate ai nemici vicini.
|
unit.mace.description = Spara raffiche infuocate ai nemici vicini.
|
||||||
@@ -1481,7 +1484,7 @@ unit.risso.description = Spara una raffica di missili e proiettili ai nemici nel
|
|||||||
unit.minke.description = Spara proiettili incendiari e standard alle unità terrene.
|
unit.minke.description = Spara proiettili incendiari e standard alle unità terrene.
|
||||||
unit.bryde.description = Spara proiettili e missili a lungo raggio ai nemici.
|
unit.bryde.description = Spara proiettili e missili a lungo raggio ai nemici.
|
||||||
unit.sei.description = Spara raffiche di missili e proiettili corazzati e perforanti ai nemici.
|
unit.sei.description = Spara raffiche di missili e proiettili corazzati e perforanti ai nemici.
|
||||||
unit.omura.description = Spara fulmini perforanti a lungo raggio ai nemici. Genera unità flare.
|
unit.omura.description = Utilizza un bullone sparatato grazie a due binari a scorrimento accelerati da un campo elettromagnetico. Lunga gittata e perforazione estrema. Costruisce unità flare.
|
||||||
unit.alpha.description = Difende il nucleo Frammento dai nemici. Costruisce strutture.
|
unit.alpha.description = Difende il nucleo Frammento dai nemici. Costruisce strutture.
|
||||||
unit.beta.description = Difende il nucleo Fondamento dai nemici. Costruisce strutture.
|
unit.beta.description = Difende il nucleo Fondamento dai nemici. Costruisce strutture.
|
||||||
unit.gamma.description = Difende il nucleo Kernel dai nemici. Costruisce strutture.
|
unit.gamma.description = Difende il nucleo Kernel dai nemici. Costruisce strutture.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
credits.text = 만든이: [royal]Anuken[] - [sky]anukendev@gmail.com[]
|
credits.text = 만든이: [royal]Anuken[] - [sky]anukendev@gmail.com[]
|
||||||
credits = 제작자
|
credits = 제작진
|
||||||
contributors = 번역가와 기여자
|
contributors = 번역가와 기여자
|
||||||
discord = Mindustry Discord 서버에 가입하세요!
|
discord = Mindustry Discord 서버에 가입하세요!
|
||||||
link.discord.description = Mindustry Discord 공식 대화방
|
link.discord.description = Mindustry Discord 공식 대화방
|
||||||
@@ -13,11 +13,12 @@ link.google-play.description = Google Play 스토어 목록
|
|||||||
link.f-droid.description = F-Droid 카탈로그 목록
|
link.f-droid.description = F-Droid 카탈로그 목록
|
||||||
link.wiki.description = 공식 Mindustry 위키
|
link.wiki.description = 공식 Mindustry 위키
|
||||||
link.suggestions.description = 새 기능 제안하기
|
link.suggestions.description = 새 기능 제안하기
|
||||||
|
link.bug.description = 버그 제보하기
|
||||||
linkfail = 링크를 열지 못했습니다!\nURL이 클립보드에 복사되었습니다.
|
linkfail = 링크를 열지 못했습니다!\nURL이 클립보드에 복사되었습니다.
|
||||||
screenshot = 스크린 캡처가 {0} 에 저장되었습니다.
|
screenshot = 스크린 캡처가 {0} 에 저장되었습니다.
|
||||||
screenshot.invalid = 맵이 너무 커서 스크린 캡처에 사용될 메모리가 부족할 수 있습니다.
|
screenshot.invalid = 맵이 너무 커서 스크린 캡처에 사용될 메모리가 부족합니다.
|
||||||
gameover = 게임 오버
|
gameover = 게임 오버
|
||||||
gameover.disconnect = 연결 끊김
|
gameover.disconnect = 연결 끊기
|
||||||
gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
|
gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
|
||||||
gameover.waiting = [accent]다음 맵 기다리는 중...
|
gameover.waiting = [accent]다음 맵 기다리는 중...
|
||||||
highscore = [accent]새로운 최고 점수!
|
highscore = [accent]새로운 최고 점수!
|
||||||
@@ -69,13 +70,13 @@ stat.delivered = 얻은 자원:
|
|||||||
stat.playtime = 플레이 시간: [accent] {0}
|
stat.playtime = 플레이 시간: [accent] {0}
|
||||||
stat.rank = 최종 순위: [accent]{0}
|
stat.rank = 최종 순위: [accent]{0}
|
||||||
|
|
||||||
globalitems = [accent]Global Items
|
globalitems = [accent]전체 자원
|
||||||
map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까?
|
map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까?
|
||||||
level.highscore = 최고 점수: [accent]{0}
|
level.highscore = 최고 점수: [accent]{0}
|
||||||
level.select = 맵 선택
|
level.select = 맵 선택
|
||||||
level.mode = 게임 모드:
|
level.mode = 게임 모드:
|
||||||
coreattack = < 코어가 공격을 받고 있습니다! >
|
coreattack = < 코어가 공격을 받고 있습니다! >
|
||||||
nearpoint = [[ [scarlet]즉시 적 소환구역에서 떠나세요[] ]\n인근 건물들과 유닛들은 초토화됩니다!
|
nearpoint = [[ [scarlet]즉시 적 소환구역에서 떠나십시오[] ]\n단계가 시작하는 순간 인근 건물들과 유닛들이 전멸됩니다!
|
||||||
database = 코어 데이터베이스
|
database = 코어 데이터베이스
|
||||||
savegame = 게임 저장
|
savegame = 게임 저장
|
||||||
loadgame = 게임 불러오기
|
loadgame = 게임 불러오기
|
||||||
@@ -149,7 +150,7 @@ unlocked = 새로운 콘텐츠가 해금되었습니다!
|
|||||||
available = 새로운 콘텐츠 해금이 가능합니다!
|
available = 새로운 콘텐츠 해금이 가능합니다!
|
||||||
completed = [accent]완료됨
|
completed = [accent]완료됨
|
||||||
techtree = 연구 기록
|
techtree = 연구 기록
|
||||||
research.legacy = [accent]5.0[] 연구 데이터를 찾았습니다.\n[accent]이 데이터를 불러오시겠습니까?[], 아니면 이 데이터를 무시하고 캠페인을 새로 시작하시겠습니까? [accent]무시한 데이터는 삭제됩니다.[] (권장됨)?
|
research.legacy = [accent]5.0[] 연구 데이터를 찾았습니다.\n[accent]이 데이터를 불러오시겠습니까?[], 아니면 이 데이터를 무시하고 캠페인을 새로 시작하시겠습니까? [accent]무시한 데이터는 삭제됩니다.[] (권장됨)
|
||||||
research.load = 불러오기
|
research.load = 불러오기
|
||||||
research.discard = 무시하기
|
research.discard = 무시하기
|
||||||
research.list = [lightgray]연구:
|
research.list = [lightgray]연구:
|
||||||
@@ -167,7 +168,7 @@ server.kicked.serverClose = 서버 닫힘.
|
|||||||
server.kicked.vote = 당신은 투표로 추방되었습니다. 안녕히 가세요!
|
server.kicked.vote = 당신은 투표로 추방되었습니다. 안녕히 가세요!
|
||||||
server.kicked.clientOutdated = 구버전 클라이언트입니다! 게임을 업데이트하세요!
|
server.kicked.clientOutdated = 구버전 클라이언트입니다! 게임을 업데이트하세요!
|
||||||
server.kicked.serverOutdated = 구버전 서버입니다! 호스트에게 업데이트를 요청하세요!
|
server.kicked.serverOutdated = 구버전 서버입니다! 호스트에게 업데이트를 요청하세요!
|
||||||
server.kicked.banned = 당신은 이 서버에서 차단되었습니다.
|
server.kicked.banned = 당신은 이 서버에서 영구적으로 차단되었습니다.
|
||||||
server.kicked.typeMismatch = 이 서버는 현재 빌드 유형과 호환되지 않습니다.
|
server.kicked.typeMismatch = 이 서버는 현재 빌드 유형과 호환되지 않습니다.
|
||||||
server.kicked.playerLimit = 서버의 인원이 꽉 찼습니다. 빈 슬롯이 생길 때까지 기다려주세요.
|
server.kicked.playerLimit = 서버의 인원이 꽉 찼습니다. 빈 슬롯이 생길 때까지 기다려주세요.
|
||||||
server.kicked.recentKick = 최근에 추방되었습니다.\n추방 쿨타임이 끝날 때까지 기다리세요.
|
server.kicked.recentKick = 최근에 추방되었습니다.\n추방 쿨타임이 끝날 때까지 기다리세요.
|
||||||
@@ -196,6 +197,7 @@ servers.local = 로컬 서버
|
|||||||
servers.remote = 원격 서버
|
servers.remote = 원격 서버
|
||||||
servers.global = 커뮤니티 서버
|
servers.global = 커뮤니티 서버
|
||||||
|
|
||||||
|
servers.disclaimer = 커뮤니티 서버는 개발자가 소유하거나 제어하지 [accent]않습니다[].\n\n서버들은 전연령대에 적합하지 않은 사용자 지정 콘텐츠를 보유할 수도 있습니다.
|
||||||
servers.showhidden = 서버 숨기기 / 보이기
|
servers.showhidden = 서버 숨기기 / 보이기
|
||||||
server.shown = 서버 숨기기
|
server.shown = 서버 숨기기
|
||||||
server.hidden = 서버 보이기
|
server.hidden = 서버 보이기
|
||||||
@@ -222,8 +224,8 @@ confirmban = 정말로 "{0}[white]" 을(를) 차단하시겠습니까?
|
|||||||
confirmkick = 정말로 "{0}[white]" 을(를) 추방하시겠습니까?
|
confirmkick = 정말로 "{0}[white]" 을(를) 추방하시겠습니까?
|
||||||
confirmvotekick = 정말로 "{0}[white]" 을(를) 투표로 추방하시겠습니까?
|
confirmvotekick = 정말로 "{0}[white]" 을(를) 투표로 추방하시겠습니까?
|
||||||
confirmunban = 정말로 이 플레이어를 차단 해제하시겠습니까?
|
confirmunban = 정말로 이 플레이어를 차단 해제하시겠습니까?
|
||||||
confirmadmin = 정말로 "{0}[white]" 을(를) 관리자로 만들겠습니까?
|
confirmadmin = 정말로 "{0}[white]" 을(를) 관리자로 임명하겠습니까?
|
||||||
confirmunadmin = 정말로 "{0}[white]"의 관리자 상태를 제거하시겠습니까?
|
confirmunadmin = 정말로 "{0}[white]"의 관리자를 박탈하시겠습니까?
|
||||||
joingame.title = 게임 참가
|
joingame.title = 게임 참가
|
||||||
joingame.ip = 주소:
|
joingame.ip = 주소:
|
||||||
disconnect = 연결이 끊어졌습니다.
|
disconnect = 연결이 끊어졌습니다.
|
||||||
@@ -294,11 +296,11 @@ loading = [accent]불러오는중...
|
|||||||
reloading = [accent]모드 새로고침하는중...
|
reloading = [accent]모드 새로고침하는중...
|
||||||
saving = [accent]저장중...
|
saving = [accent]저장중...
|
||||||
respawn = [accent][[{0}][] 키를 눌러 코어에서 부활
|
respawn = [accent][[{0}][] 키를 눌러 코어에서 부활
|
||||||
cancelbuilding = [accent][[{0}][] 를 눌러 계획 초기화
|
cancelbuilding = [accent][[{0}][] 를 눌러 건설 계획을 초기화
|
||||||
selectschematic = [accent][[{0}][] 를 눌러 선택+복사
|
selectschematic = [accent][[{0}][] 를 눌러 선택+복사
|
||||||
pausebuilding = [accent][[{0}][] 를 눌러 건설 일시중지
|
pausebuilding = [accent][[{0}][] 를 눌러 건설을 일시중지
|
||||||
resumebuilding = [scarlet][[{0}][] 를 눌러 건설 재개
|
resumebuilding = [scarlet][[{0}][] 를 눌러 건설을 재개
|
||||||
showui = UI를 .\n[accent][[{0}][] 키를 눌러 UI를 활성화하세요.
|
showui = [accent][[{0}][] 키를 눌러 UI를 활성화
|
||||||
wave = [accent]{0} 단계
|
wave = [accent]{0} 단계
|
||||||
wave.cap = [accent]단계 {0}/{1}
|
wave.cap = [accent]단계 {0}/{1}
|
||||||
wave.waiting = 다음 단계까지[lightgray] {0}초
|
wave.waiting = 다음 단계까지[lightgray] {0}초
|
||||||
@@ -356,8 +358,8 @@ waves.remove = 삭제
|
|||||||
waves.never = 여기까지 유닛 생성
|
waves.never = 여기까지 유닛 생성
|
||||||
waves.every = 매
|
waves.every = 매
|
||||||
waves.waves = 단계마다
|
waves.waves = 단계마다
|
||||||
waves.perspawn = 마리 생성
|
waves.perspawn = 마리씩 생성됨
|
||||||
waves.shields = 방어막/단계
|
waves.shields = 방어막 hp/단계
|
||||||
waves.to = 부터
|
waves.to = 부터
|
||||||
waves.guardian = 수호자
|
waves.guardian = 수호자
|
||||||
waves.preview = 미리보기
|
waves.preview = 미리보기
|
||||||
@@ -386,7 +388,7 @@ editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n3.5/build 40
|
|||||||
editor.errorlegacy = 이 맵은 너무 오래되어 더 이상 지원되지 않는 구형 맵 형식을 사용합니다.
|
editor.errorlegacy = 이 맵은 너무 오래되어 더 이상 지원되지 않는 구형 맵 형식을 사용합니다.
|
||||||
editor.errornot = 맵 파일이 아닙니다.
|
editor.errornot = 맵 파일이 아닙니다.
|
||||||
editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다.
|
editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다.
|
||||||
editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러오려 합니까?
|
editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러오려고 시도하는 건가요?
|
||||||
editor.update = 업데이트
|
editor.update = 업데이트
|
||||||
editor.randomize = 무작위
|
editor.randomize = 무작위
|
||||||
editor.apply = 적용
|
editor.apply = 적용
|
||||||
@@ -427,13 +429,13 @@ toolmode.replaceall.description = 맵에 있는 모든 블록을 재배치합니
|
|||||||
toolmode.orthogonal = 직각
|
toolmode.orthogonal = 직각
|
||||||
toolmode.orthogonal.description = 직각으로 블록을 배치합니다.
|
toolmode.orthogonal.description = 직각으로 블록을 배치합니다.
|
||||||
toolmode.square = 정사각형
|
toolmode.square = 정사각형
|
||||||
toolmode.square.description = 정사각형 형태의 브러시.
|
toolmode.square.description = 정사각형 형태의 브러시로 교체합니다.
|
||||||
toolmode.eraseores = 자원 초기화
|
toolmode.eraseores = 자원 초기화
|
||||||
toolmode.eraseores.description = 자원만 초기화합니다.
|
toolmode.eraseores.description = 자원만 초기화합니다.
|
||||||
toolmode.fillteams = 팀 채우기
|
toolmode.fillteams = 팀 채우기
|
||||||
toolmode.fillteams.description = 블록 대신 팀 건물로 채웁니다.
|
toolmode.fillteams.description = 블록 대신 선택한 팀으로 블록 팀을 채웁니다.
|
||||||
toolmode.drawteams = 팀 색상으로 그리기
|
toolmode.drawteams = 팀 그리기
|
||||||
toolmode.drawteams.description = 블록 대신 팀 건물을 배치합니다.
|
toolmode.drawteams.description = 블록 대신 선택한 팀으로 블록 팀을 그립니다.
|
||||||
|
|
||||||
filters.empty = [lightgray]필터가 없습니다! 아래 버튼을 눌러 하나를 추가하세요.
|
filters.empty = [lightgray]필터가 없습니다! 아래 버튼을 눌러 하나를 추가하세요.
|
||||||
filter.distort = 왜곡
|
filter.distort = 왜곡
|
||||||
@@ -486,11 +488,11 @@ memory2 = Mem:\n {0}mb +\n {1}mb
|
|||||||
language.restart = 언어 설정을 적용하려면 게임을 다시 시작하세요.
|
language.restart = 언어 설정을 적용하려면 게임을 다시 시작하세요.
|
||||||
settings = 설정
|
settings = 설정
|
||||||
tutorial = 튜토리얼
|
tutorial = 튜토리얼
|
||||||
tutorial.retake = 튜토리얼 다시 시작
|
tutorial.retake = 튜토리얼을 다시 시작하기
|
||||||
editor = 편집기
|
editor = 편집기
|
||||||
mapeditor = 맵 편집기
|
mapeditor = 맵 편집기
|
||||||
|
|
||||||
abandon = 포기
|
abandon = 포기하기
|
||||||
abandon.text = 이 지역과 모든 자원이 적에게 넘어갑니다.
|
abandon.text = 이 지역과 모든 자원이 적에게 넘어갑니다.
|
||||||
locked = 잠김
|
locked = 잠김
|
||||||
complete = [lightgray]해금 조건 :
|
complete = [lightgray]해금 조건 :
|
||||||
@@ -500,8 +502,8 @@ requirement.research = {0} 연구
|
|||||||
requirement.capture = {0} 점령
|
requirement.capture = {0} 점령
|
||||||
bestwave = [lightgray]최고 단계: {0}
|
bestwave = [lightgray]최고 단계: {0}
|
||||||
launch.text = 출격
|
launch.text = 출격
|
||||||
research.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 주최자만 연구할 수 있습니다.
|
research.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 호스트만 연구할 수 있습니다.
|
||||||
map.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 주최자만 다른 섹터들을 보고, 이동이 가능합니다.
|
map.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 호스트만 다른 섹터들을 보고, 이동이 가능합니다.
|
||||||
uncover = 지역 개방
|
uncover = 지역 개방
|
||||||
configure = 초기자원 설정
|
configure = 초기자원 설정
|
||||||
|
|
||||||
@@ -518,7 +520,7 @@ boss.health = 수호자 체력
|
|||||||
connectfail = [scarlet]연결 오류:\n\n[accent]{0}
|
connectfail = [scarlet]연결 오류:\n\n[accent]{0}
|
||||||
error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요?
|
error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요?
|
||||||
error.invalidaddress = 잘못된 주소입니다.
|
error.invalidaddress = 잘못된 주소입니다.
|
||||||
error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오.
|
error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하세요.
|
||||||
error.mismatch = 패킷 오류\n클라이언트/서버 버전이 일치하지 않습니다.\n접속하려는 서버가 최신 버전인지 확인하세요!
|
error.mismatch = 패킷 오류\n클라이언트/서버 버전이 일치하지 않습니다.\n접속하려는 서버가 최신 버전인지 확인하세요!
|
||||||
error.alreadyconnected = 이미 접속 중입니다.
|
error.alreadyconnected = 이미 접속 중입니다.
|
||||||
error.mapnotfound = 맵 파일을 찾을 수 없습니다!
|
error.mapnotfound = 맵 파일을 찾을 수 없습니다!
|
||||||
@@ -535,7 +537,7 @@ weather.fog.name = 안개
|
|||||||
sectors.unexplored = [lightgray]미개척지
|
sectors.unexplored = [lightgray]미개척지
|
||||||
sectors.resources = 자원:
|
sectors.resources = 자원:
|
||||||
sectors.production = 분당 자원 생산량:
|
sectors.production = 분당 자원 생산량:
|
||||||
sectors.export = Export:
|
sectors.export = 분당 자원 수출량:
|
||||||
sectors.time = 지역 진행 시간:
|
sectors.time = 지역 진행 시간:
|
||||||
sectors.threat = 지역 위험도:
|
sectors.threat = 지역 위험도:
|
||||||
sectors.wave = 진행 중 단계:
|
sectors.wave = 진행 중 단계:
|
||||||
@@ -546,7 +548,7 @@ sectors.select = 선택
|
|||||||
sectors.nonelaunch = [lightgray]없음 (sun)
|
sectors.nonelaunch = [lightgray]없음 (sun)
|
||||||
sectors.rename = 구역 이름 변경
|
sectors.rename = 구역 이름 변경
|
||||||
sectors.enemybase = [scarlet]적 기지
|
sectors.enemybase = [scarlet]적 기지
|
||||||
sectors.vulnerable = [scarlet]]취약
|
sectors.vulnerable = [scarlet]취약
|
||||||
sectors.underattack = [scarlet]공격받고 있습니다! [accent]{0}% 손상됨.
|
sectors.underattack = [scarlet]공격받고 있습니다! [accent]{0}% 손상됨.
|
||||||
sectors.survives = [accent]{0} 단계 이상 버티세요.
|
sectors.survives = [accent]{0} 단계 이상 버티세요.
|
||||||
sectors.go = 지역 진입
|
sectors.go = 지역 진입
|
||||||
@@ -566,14 +568,14 @@ threat.eradication = 극한
|
|||||||
|
|
||||||
planets = 태양계
|
planets = 태양계
|
||||||
|
|
||||||
planet.serpulo.name = 세르풀로
|
planet.serpulo.name = 세르플로
|
||||||
planet.sun.name = 태양
|
planet.sun.name = 태양
|
||||||
|
|
||||||
sector.impact0078.name = 폐허 : Impact 0078
|
sector.impact0078.name = 폐허 : Impact 0078
|
||||||
sector.groundZero.name = Zero 전초기지
|
sector.groundZero.name = Zero 전초기지
|
||||||
sector.craters.name = 크레이터
|
sector.craters.name = 크레이터
|
||||||
sector.frozenForest.name = 얼어붙은 숲
|
sector.frozenForest.name = 얼어붙은 숲
|
||||||
sector.ruinousShores.name = 폐허 : 해안가
|
sector.ruinousShores.name = 파괴된 해안가
|
||||||
sector.stainedMountains.name = 얼룩진 산맥
|
sector.stainedMountains.name = 얼룩진 산맥
|
||||||
sector.desolateRift.name = 황폐한 협곡
|
sector.desolateRift.name = 황폐한 협곡
|
||||||
sector.nuclearComplex.name = 핵 생산 단지
|
sector.nuclearComplex.name = 핵 생산 단지
|
||||||
@@ -606,15 +608,15 @@ sector.planetaryTerminal.description = 이 행성에서의 마지막 전투를
|
|||||||
settings.language = 언어
|
settings.language = 언어
|
||||||
settings.data = 게임 데이터
|
settings.data = 게임 데이터
|
||||||
settings.reset = 설정 초기화
|
settings.reset = 설정 초기화
|
||||||
settings.rebind = 키 설정
|
settings.rebind = 조작키 설정
|
||||||
settings.resetKey = 키 초기화
|
settings.resetKey = 조작키 설정 초기화
|
||||||
settings.controls = 조작
|
settings.controls = 조작
|
||||||
settings.game = 게임
|
settings.game = 게임
|
||||||
settings.sound = 소리
|
settings.sound = 소리
|
||||||
settings.graphics = 그래픽
|
settings.graphics = 그래픽
|
||||||
settings.cleardata = 게임 데이터 초기화
|
settings.cleardata = 게임 데이터 초기화
|
||||||
settings.clear.confirm = 정말로 이 데이터를 지우시겠습니까?\n되돌릴 수 없습니다!
|
settings.clear.confirm = 정말로 이 데이터를 지우시겠습니까?\n되돌릴 수 없습니다!
|
||||||
settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다.
|
settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 조작키 설정, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다.
|
||||||
settings.clearsaves.confirm = 정말로 모든 저장된 파일들을 삭제하시겠습니까?
|
settings.clearsaves.confirm = 정말로 모든 저장된 파일들을 삭제하시겠습니까?
|
||||||
settings.clearsaves = 저장 초기화
|
settings.clearsaves = 저장 초기화
|
||||||
settings.clearresearch = 연구 초기화
|
settings.clearresearch = 연구 초기화
|
||||||
@@ -628,7 +630,7 @@ yes = O
|
|||||||
no = X
|
no = X
|
||||||
info.title = 정보
|
info.title = 정보
|
||||||
error.title = [scarlet]오류가 발생했습니다.
|
error.title = [scarlet]오류가 발생했습니다.
|
||||||
error.crashtitle = 오류가 발생했습니다
|
error.crashtitle = 오류가 발생했습니다.
|
||||||
unit.nobuild = [scarlet]건설 불가
|
unit.nobuild = [scarlet]건설 불가
|
||||||
lastaccessed = [lightgray]마지막 조작: {0}
|
lastaccessed = [lightgray]마지막 조작: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
@@ -698,9 +700,9 @@ stat.abilities = 능력
|
|||||||
stat.canboost = 부스터
|
stat.canboost = 부스터
|
||||||
stat.flying = 비행
|
stat.flying = 비행
|
||||||
|
|
||||||
ability.forcefield = 수호 역장
|
ability.forcefield = 보호막 필드
|
||||||
ability.repairfield = 수리 파동
|
ability.repairfield = 수리 필드
|
||||||
ability.statusfield = 강화 오오라
|
ability.statusfield = 상태이상 필드
|
||||||
ability.unitspawn = {0} 공장
|
ability.unitspawn = {0} 공장
|
||||||
ability.shieldregenfield = 방어막 복구 필드
|
ability.shieldregenfield = 방어막 복구 필드
|
||||||
ability.movelightning = 가속 전격
|
ability.movelightning = 가속 전격
|
||||||
@@ -831,13 +833,14 @@ 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]설정->게임->멀티플레이 공용 서버로 표시에서 나중에 변경할 수 있습니다.\n\n[sky]번역자 추가[]\n[accent]친구끼리 하려고 이 기능을 활성화 한 뒤에, 친구 외에 다른 플레이어가 들어왔을 때\n해당 플레이어를 차단하는 행위는 비매너를 넘어서는 얌체 행위 그 자체입니다.\n정말로 [scarlet]많은 다른 플레이어들이 오길 원한다[]면 확인하세요.
|
public.confirm = 게임을 모두에게 공개하시겠습니까?\n[accent]모든 플레이어가 게임에 참여할 수 있습니다.\n[lightgray]설정->게임->멀티플레이 공용 서버로 표시에서 나중에 변경할 수 있습니다.\n\n[sky]번역자 추가[]\n[accent]친구끼리 하려고 이 기능을 활성화 한 뒤에, 친구 외에 다른 플레이어가 들어왔을 때\n해당 플레이어를 차단하는 행위는 비매너를 넘어서는 얌체 행위 그 자체입니다.\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 = 취소 후 나가기
|
||||||
setting.bloom.name = 화려한 효과
|
setting.bloom.name = 화려한 효과
|
||||||
keybind.title = 조작키 설정
|
keybind.title = 조작키 설정
|
||||||
keybinds.mobile = [scarlet]대부분의 키 맵핑은 모바일에서 작동하지 않습니다. 기본 이동만 지원됩니다.
|
keybinds.mobile = [scarlet]대부분의 조작키 설정은 모바일에서 작동하지 않습니다. 기본 이동만 지원됩니다.
|
||||||
category.general.name = 일반
|
category.general.name = 일반
|
||||||
category.view.name = 보기
|
category.view.name = 보기
|
||||||
category.multiplayer.name = 멀티플레이어
|
category.multiplayer.name = 멀티플레이어
|
||||||
@@ -910,9 +913,9 @@ keybind.drop_unit.name = 유닛 떨구기
|
|||||||
keybind.zoom_minimap.name = 미니맵 확대
|
keybind.zoom_minimap.name = 미니맵 확대
|
||||||
mode.help.title = 모드 설명
|
mode.help.title = 모드 설명
|
||||||
mode.survival.name = 생존
|
mode.survival.name = 생존
|
||||||
mode.survival.description = 이것은 일반 모드입니다. 제한된 자원과 자동으로 시작되는 단계가 있습니다.\n[gray]플레이하려면 맵에 적의 스폰지점이 필요합니다.
|
mode.survival.description = 기본 모드. 제한된 자원이 있으며, 단계가 자동으로 시작합니다.\n[gray]플레이하려면 맵에 적의 스폰지점이 필요합니다.
|
||||||
mode.sandbox.name = 샌드박스
|
mode.sandbox.name = 샌드박스
|
||||||
mode.sandbox.description = 무한한 자원과 단계 시작 타이머가 없습니다.
|
mode.sandbox.description = 무한한 자원이 있으며, 단계 타이머가 없습니다.
|
||||||
mode.editor.name = 편집기
|
mode.editor.name = 편집기
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
mode.pvp.description = 다른 플레이어와 현장에서 싸우십시오.\n[gray]플레이하려면 맵에 다른 색상의 코어가 2개 이상 있어야 합니다.
|
mode.pvp.description = 다른 플레이어와 현장에서 싸우십시오.\n[gray]플레이하려면 맵에 다른 색상의 코어가 2개 이상 있어야 합니다.
|
||||||
@@ -947,10 +950,10 @@ rules.title.enemy = 적
|
|||||||
rules.title.unit = 유닛
|
rules.title.unit = 유닛
|
||||||
rules.title.experimental = 실험적인 기능
|
rules.title.experimental = 실험적인 기능
|
||||||
rules.title.environment = 환경
|
rules.title.environment = 환경
|
||||||
rules.lighting = 조명 활성화
|
rules.lighting = 조명
|
||||||
rules.enemyLights = 적에게 조명 표시 활성화
|
rules.enemyLights = 상대에게 조명
|
||||||
rules.fire = 방화 활성화
|
rules.fire = 방화
|
||||||
rules.explosions = 블록/유닛 폭발 데미지 활성화
|
rules.explosions = 블록/유닛 폭발 데미지
|
||||||
rules.ambientlight = 자연 조명
|
rules.ambientlight = 자연 조명
|
||||||
rules.weather = 날씨
|
rules.weather = 날씨
|
||||||
rules.weather.frequency = 빈도:
|
rules.weather.frequency = 빈도:
|
||||||
@@ -980,7 +983,7 @@ item.metaglass.name = 강화 유리
|
|||||||
item.scrap.name = 고철
|
item.scrap.name = 고철
|
||||||
liquid.water.name = 물
|
liquid.water.name = 물
|
||||||
liquid.slag.name = 광재
|
liquid.slag.name = 광재
|
||||||
liquid.oil.name = 기름
|
liquid.oil.name = 석유
|
||||||
liquid.cryofluid.name = 냉각수
|
liquid.cryofluid.name = 냉각수
|
||||||
|
|
||||||
unit.dagger.name = 대거
|
unit.dagger.name = 대거
|
||||||
@@ -992,8 +995,8 @@ unit.quasar.name = 퀘이사
|
|||||||
unit.crawler.name = 크롤러
|
unit.crawler.name = 크롤러
|
||||||
unit.atrax.name = 아트락스
|
unit.atrax.name = 아트락스
|
||||||
unit.spiroct.name = 스피록트
|
unit.spiroct.name = 스피록트
|
||||||
unit.arkyid.name = 알카이드
|
unit.arkyid.name = 아키드
|
||||||
unit.toxopid.name = 톡소오피드
|
unit.toxopid.name = 톡소피드
|
||||||
unit.flare.name = 플레어
|
unit.flare.name = 플레어
|
||||||
unit.horizon.name = 호라이즌
|
unit.horizon.name = 호라이즌
|
||||||
unit.zenith.name = 제니스
|
unit.zenith.name = 제니스
|
||||||
@@ -1005,7 +1008,7 @@ unit.mega.name = 메가
|
|||||||
unit.quad.name = 쿼드
|
unit.quad.name = 쿼드
|
||||||
unit.oct.name = 옥트
|
unit.oct.name = 옥트
|
||||||
unit.risso.name = 리소
|
unit.risso.name = 리소
|
||||||
unit.minke.name = 민키
|
unit.minke.name = 민케
|
||||||
unit.bryde.name = 브라이드
|
unit.bryde.name = 브라이드
|
||||||
unit.sei.name = 세이
|
unit.sei.name = 세이
|
||||||
unit.omura.name = 오무라
|
unit.omura.name = 오무라
|
||||||
@@ -1013,13 +1016,13 @@ unit.alpha.name = 알파
|
|||||||
unit.beta.name = 베타
|
unit.beta.name = 베타
|
||||||
unit.gamma.name = 감마
|
unit.gamma.name = 감마
|
||||||
unit.scepter.name = 셉터
|
unit.scepter.name = 셉터
|
||||||
unit.reign.name = 린
|
unit.reign.name = 레인
|
||||||
unit.vela.name = 벨라
|
unit.vela.name = 벨라
|
||||||
unit.corvus.name = 코르부스
|
unit.corvus.name = 코르버스
|
||||||
|
|
||||||
block.resupply-point.name = 보급 지점
|
block.resupply-point.name = 보급 지점
|
||||||
block.parallax.name = 패럴랙스
|
block.parallax.name = 패럴랙스
|
||||||
block.cliff.name = 낭떠러지
|
block.cliff.name = 언덕
|
||||||
block.sand-boulder.name = 사암
|
block.sand-boulder.name = 사암
|
||||||
block.basalt-boulder.name = 현무암
|
block.basalt-boulder.name = 현무암
|
||||||
block.grass.name = 잔디
|
block.grass.name = 잔디
|
||||||
@@ -1058,7 +1061,7 @@ block.deepwater.name = 깊은 물
|
|||||||
block.water.name = 물
|
block.water.name = 물
|
||||||
block.tainted-water.name = 오염된 물
|
block.tainted-water.name = 오염된 물
|
||||||
block.darksand-tainted-water.name = 오염된 젖은 검은 모래
|
block.darksand-tainted-water.name = 오염된 젖은 검은 모래
|
||||||
block.tar.name = 석유
|
block.tar.name = 타르
|
||||||
block.stone.name = 바위
|
block.stone.name = 바위
|
||||||
block.sand.name = 모래
|
block.sand.name = 모래
|
||||||
block.darksand.name = 검은 모래
|
block.darksand.name = 검은 모래
|
||||||
@@ -1198,7 +1201,7 @@ block.cyclone.name = 사이클론
|
|||||||
block.fuse.name = 퓨즈
|
block.fuse.name = 퓨즈
|
||||||
block.shock-mine.name = 전격 지뢰
|
block.shock-mine.name = 전격 지뢰
|
||||||
block.overdrive-projector.name = 과부하 프로젝터
|
block.overdrive-projector.name = 과부하 프로젝터
|
||||||
block.force-projector.name = 포스 프로젝터
|
block.force-projector.name = 보호막 프로젝터
|
||||||
block.arc.name = 아크
|
block.arc.name = 아크
|
||||||
block.rtg-generator.name = RTG 발전기
|
block.rtg-generator.name = RTG 발전기
|
||||||
block.spectre.name = 스펙터
|
block.spectre.name = 스펙터
|
||||||
@@ -1274,14 +1277,18 @@ hint.command = 주변의 아군 유닛을 데리고 다니려면 비슷한 단
|
|||||||
hint.command.mobile = 아군 유닛을 데리고 다니려면 비슷한 단계의 유닛 무리 주변에서 [accent]빠르게 두번 누르십시오[].
|
hint.command.mobile = 아군 유닛을 데리고 다니려면 비슷한 단계의 유닛 무리 주변에서 [accent]빠르게 두번 누르십시오[].
|
||||||
hint.payloadPickup = 작은 블럭이나 유닛을 집으려면 [accent][[[]를 누르십시오.
|
hint.payloadPickup = 작은 블럭이나 유닛을 집으려면 [accent][[[]를 누르십시오.
|
||||||
hint.payloadPickup.mobile = 작은 블럭이나 유닛을 집으려면 [accent]잠깐 누르십시오[].
|
hint.payloadPickup.mobile = 작은 블럭이나 유닛을 집으려면 [accent]잠깐 누르십시오[].
|
||||||
hint.payloadDrop = 다시 내려놓으려면 [accent]][]를 누르십시오
|
hint.payloadDrop = 다시 내려놓으려면 [accent]][]를 누르십시오.
|
||||||
hint.payloadDrop.mobile = 다시 내려놓으려면 빈 공간에서 [accent]화면을 잠깐 누르십시오[].
|
hint.payloadDrop.mobile = 다시 내려놓으려면 빈 공간에서 [accent]화면을 잠깐 누르십시오[].
|
||||||
hint.waveFire = [accent]Wave[]포탑에 탄약으로 물을 넣으면 주변의 불을 자동으로 꺼줍니다.
|
hint.waveFire = [accent]Wave[]포탑에 탄약으로 물을 넣으면 주변의 불을 자동으로 꺼줍니다.
|
||||||
hint.generator = \uf879 [accent]화력 발전기[]는 석탄을 태워서 주변 블록에 전력을 전달합니다.\n\n \uf87f 더 넓은 범위의 블록에 전력을 전달하려면 [accent]Power Nodes[]를 사용하십시오.
|
hint.generator = \uf879 [accent]화력 발전기[]는 석탄을 태워서 주변 블록에 전력을 전달합니다.\n\n \uf87f 더 넓은 범위의 블록에 전력을 전달하려면 [accent]Power Nodes[]를 사용하십시오.
|
||||||
hint.guardian = [accent]수호자[] 유닛들은 방어력을 가집니다. [accent]구리[]와 [accent]납[]같은 약한 탄약으로는 [scarlet]아무런 효과도 없습니다[].\n\n그런 수호자를 없애려면 높은 단계의 포탑 또는 \uf835 [accent]흑연[]을 탄약으로 넣은 \uf861듀오/\uf859살보를 사용하십시오.
|
hint.guardian = [accent]수호자[] 유닛들은 방어력을 가집니다. [accent]구리[]와 [accent]납[]같은 약한 탄약으로는 [scarlet]아무런 효과도 없습니다[].\n\n그런 수호자를 없애려면 높은 단계의 포탑 또는 \uf835 [accent]흑연[]을 탄약으로 넣은 \uf861듀오/\uf859살보를 사용하십시오.
|
||||||
|
hint.coreUpgrade = 코어는 [accent]상위 코어를 위에 설치함[]으로써 업그레이드할 수 있습니다.\n\n [accent]기반[] 코어를 [accent]조각[] 코어 위에 설치하십시오. 주변에 장애물이 없는지도 확인하십시오.
|
||||||
|
hint.presetLaunch = [accent]얼어붙은 숲[]과 같은 회색[accent]캠페인 지역[]은 어디에서나 출격해서 올 수 있습니다. 주변 지역을 점령하지 않아도 됩니다.\n\n이와 같은 [accent]네임드 지역[]들은 [accent]선택적[]입니다.
|
||||||
|
hint.coreIncinerate = 코어가 아이템으로 가득 찬 후에 받는 모든 아이템들은 [accent]소각[]될 것입니다.
|
||||||
|
hint.coopCampaign = [accent]협동 캠페인[]을 할 떄, 현재 맵에서 생산된 아이템들은 [accent]당신의 캠페인 지역으로[]도 보내집니다.\n\n호스트가 새로 해금한 모든 것들도 가져갑니다.
|
||||||
|
|
||||||
item.copper.description = 가장 기본적인 건설 재료. 모든 유형의 블록에서 광범위하게 사용됩니다.
|
item.copper.description = 가장 기본적인 건설 재료. 모든 유형의 블록에서 광범위하게 사용됩니다.
|
||||||
item.copper.details = 평범한 구리. 세르풀로에 비정상적으로 많이 분포되어 있습니다. 별다른 보강재 없이는 구조적 문제 때문에 내구성이 비교적 약합니다.
|
item.copper.details = 평범한 구리. 세르플로에 비정상적으로 많이 분포되어 있습니다. 별다른 보강재 없이는 구조적 문제 때문에 내구성이 비교적 약합니다.
|
||||||
item.lead.description = 기본 초반 재료. 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
|
item.lead.description = 기본 초반 재료. 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
|
||||||
item.lead.details = 밀도가 높으며 반응성이 적은 자원. 배터리에 주로 사용됩니다.
|
item.lead.details = 밀도가 높으며 반응성이 적은 자원. 배터리에 주로 사용됩니다.
|
||||||
item.metaglass.description = 초강력 방탄유리. 액체 분배 및 저장에 광범위하게 사용됩니다.
|
item.metaglass.description = 초강력 방탄유리. 액체 분배 및 저장에 광범위하게 사용됩니다.
|
||||||
@@ -1307,23 +1314,23 @@ liquid.slag.description = 다양한 종류의 금속들이 함께 섞여 녹아
|
|||||||
liquid.oil.description = 고급 재료 생산에 사용되는 액체. 석탄으로 전환하거나 무기로 뿌려서 불을 지를 수 있습니다.
|
liquid.oil.description = 고급 재료 생산에 사용되는 액체. 석탄으로 전환하거나 무기로 뿌려서 불을 지를 수 있습니다.
|
||||||
liquid.cryofluid.description = 물과 티타늄으로 만든 비 부식성 액체. 열 용량이 매우 높으며 냉각수로 광범위하게 사용됩니다.
|
liquid.cryofluid.description = 물과 티타늄으로 만든 비 부식성 액체. 열 용량이 매우 높으며 냉각수로 광범위하게 사용됩니다.
|
||||||
|
|
||||||
block.resupply-point.description = 구리를 소모하여 인근 유닛들에게 탄약을 충전합니다. 베터리 전력을 탄약으로 필요한 유닛들은 호환되지 않습니다.
|
block.resupply-point.description = 주변 유닛들에게 구리 탄약을 보급합니다. 베터리 전력이 필요한 유닛들은 호환되지 않습니다.
|
||||||
block.armored-conveyor.description = 앞으로 아이템들을 운반합니다. 측면에서 아이템들을 받아들이지 않습니다.
|
block.armored-conveyor.description = 앞으로 아이템들을 운반합니다. 측면에서 아이템들을 받아들이지 않습니다.
|
||||||
block.illuminator.description = 발광합니다.
|
block.illuminator.description = 발광합니다.
|
||||||
block.message.description = 아군 간의 소통을 위한 메시지를 저장합니다.
|
block.message.description = 아군 간의 소통을 위한 메시지를 저장합니다.
|
||||||
block.graphite-press.description = 석탄들을 압축하여 흑연으로 만듭니다.
|
block.graphite-press.description = 석탄을 흑연으로 압축합니다.
|
||||||
block.multi-press.description = 흑연 압축기의 강화 버전. 전기와 물을 추가로 사용하여 빠르게 석탄을 압축합니다.
|
block.multi-press.description = 석탄을 흑연으로 압축합니다. 냉각수로써 물이 필요합니다.
|
||||||
block.silicon-smelter.description = 석탄과 모래로부터 실리콘을 정제합니다.
|
block.silicon-smelter.description = 석탄과 모래로부터 실리콘을 정제합니다.
|
||||||
block.kiln.description = 모래와 납을 제련하여 강화 유리를 만듭니다. 작동하려면 소량의 전력이 필요합니다.
|
block.kiln.description = 모래와 납을 강화 유리로 재련합니다.
|
||||||
block.plastanium-compressor.description = 석유와 티타늄으로 플라스터늄을 생산합니다.
|
block.plastanium-compressor.description = 석유와 티타늄으로 플라스터늄을 생산합니다.
|
||||||
block.phase-weaver.description = 토륨과 모래를 이용해 메타를 합성합니다. 작동하려면 엄청난 양의 전력이 필요합니다.
|
block.phase-weaver.description = 토륨과 모래로 메타를 합성합니다.
|
||||||
block.alloy-smelter.description = 티타늄, 납, 실리콘, 구리를 결합하여 설금을 생산합니다.
|
block.alloy-smelter.description = 티타늄, 납, 실리콘, 구리를 결합하여 설금을 생산합니다.
|
||||||
block.cryofluid-mixer.description = 물과 미세 티타늄 분말을 냉각수로 혼합합니다. 토륨 원자로 사용에 필수적입니다.
|
block.cryofluid-mixer.description = 물과 미세 티타늄 분말을 냉각수로 혼합합니다.
|
||||||
block.blast-mixer.description = 포자를 파이라타이트와 혼합하여 폭발물을 만듭니다.
|
block.blast-mixer.description = 파이라타이트와 포자로 폭발물을 생산합니다.
|
||||||
block.pyratite-mixer.description = 석탄, 납, 모래를 합성하여 가연성이 높은 파이라타이트로 만듭니다.
|
block.pyratite-mixer.description = 석탄, 납, 그리고 모래를 파이라타이트로 혼합합니다.
|
||||||
block.melter.description = 파도 포탑에서 추가 처리 또는 사용을 위해 고철을 광재로 녹입니다.
|
block.melter.description = 고철을 광재로 녹입니다.
|
||||||
block.separator.description = 광재를 미네랄 성분으로 분리합니다. 그리고 냉각된 결과를 출력합니다.
|
block.separator.description = 광재를 광물들로 분리합니다.
|
||||||
block.spore-press.description = 포자를 압축하여 석유를 추출합니다.
|
block.spore-press.description = 포자를 석유로 압축합니다.
|
||||||
block.pulverizer.description = 고철을 갈아 모래로 만듭니다.
|
block.pulverizer.description = 고철을 갈아 모래로 만듭니다.
|
||||||
block.coal-centrifuge.description = 석유에서 석탄을 추출합니다.
|
block.coal-centrifuge.description = 석유에서 석탄을 추출합니다.
|
||||||
block.incinerator.description = 넘치는 자원이나 액체를 증발시킵니다.
|
block.incinerator.description = 넘치는 자원이나 액체를 증발시킵니다.
|
||||||
@@ -1371,7 +1378,7 @@ block.rotary-pump.description = 고급 펌프. 더 많은 액체를 퍼 올리
|
|||||||
block.thermal-pump.description = 가장 강력한 펌프.
|
block.thermal-pump.description = 가장 강력한 펌프.
|
||||||
block.conduit.description = 기본 액체 운송 블록. 액체를 앞으로 이동시킵니다. 펌프 및 기타 파이프와 함께 사용됩니다.
|
block.conduit.description = 기본 액체 운송 블록. 액체를 앞으로 이동시킵니다. 펌프 및 기타 파이프와 함께 사용됩니다.
|
||||||
block.pulse-conduit.description = 고급 액체 운송 블록. 액체를 더 빠르게 운반하고 표준 파이프보다 더 많이 저장합니다.
|
block.pulse-conduit.description = 고급 액체 운송 블록. 액체를 더 빠르게 운반하고 표준 파이프보다 더 많이 저장합니다.
|
||||||
block.plated-conduit.description = 펄스 파이프와 같은 속도로 이동하지만 더 높은 방어력을 가지고 있습니다. 파이프 이외의 물체로 측면의 액체를 받아들이지 않습니다.\n누설이 적습니다.
|
block.plated-conduit.description = 펄스 파이프와 같은 속도로 이동하지만 더 높은 방어력을 가지고 있습니다. 측면에서 액체들을 받아들이지 않습니다.\n액체가 누설하지 않습니다.
|
||||||
block.liquid-router.description = 한 방향에서 액체를 받아 최대 3개의 다른 방향으로 동일하게 출력합니다. 일정량의 액체를 저장할 수도 있으며 한 소스에서 여러 대상으로 액체를 분할하는 데 유용합니다.
|
block.liquid-router.description = 한 방향에서 액체를 받아 최대 3개의 다른 방향으로 동일하게 출력합니다. 일정량의 액체를 저장할 수도 있으며 한 소스에서 여러 대상으로 액체를 분할하는 데 유용합니다.
|
||||||
block.liquid-tank.description = 대량의 액체를 저장합니다. 재료가 일정하지 않은 상황에서 버퍼를 생성하거나 중요한 블록을 냉각하기 위한 보호 장치로 사용하세요.
|
block.liquid-tank.description = 대량의 액체를 저장합니다. 재료가 일정하지 않은 상황에서 버퍼를 생성하거나 중요한 블록을 냉각하기 위한 보호 장치로 사용하세요.
|
||||||
block.liquid-junction.description = 두 개의 교차 파이프를 위한 다리 역할을 합니다. 다른 액체를 다른 위치로 운반하는 두 개의 다른 파이프가 있는 상황에서 유용합니다.
|
block.liquid-junction.description = 두 개의 교차 파이프를 위한 다리 역할을 합니다. 다른 액체를 다른 위치로 운반하는 두 개의 다른 파이프가 있는 상황에서 유용합니다.
|
||||||
@@ -1398,7 +1405,7 @@ block.laser-drill.description = 레이저 기술을 통해 더욱 빠르게 채
|
|||||||
block.blast-drill.description = 최상위 드릴. 많은 양의 전력이 필요합니다.
|
block.blast-drill.description = 최상위 드릴. 많은 양의 전력이 필요합니다.
|
||||||
block.water-extractor.description = 지하수를 추출합니다. 물을 구하기 어려운 곳에서 사용합니다.
|
block.water-extractor.description = 지하수를 추출합니다. 물을 구하기 어려운 곳에서 사용합니다.
|
||||||
block.cultivator.description = 대기 중의 작은 농도의 포자를 산업용 포자로 배양합니다.
|
block.cultivator.description = 대기 중의 작은 농도의 포자를 산업용 포자로 배양합니다.
|
||||||
block.cultivator.details = 재발견된 기술. 가장 효율적으로 대량의 유기체를 생산할 때 사용된다. 과거, 세르플을 뒤덮은 포자의 최초 배양지로 판단된다.
|
block.cultivator.details = 재발견된 기술. 가장 효율적으로 대량의 유기체를 생산할 때 사용된다. 과거, 세르플로을 뒤덮은 포자의 최초 배양지로 판단된다.
|
||||||
block.oil-extractor.description = 석유를 추출하기 위해 많은 양의 전력과 모래 및 물을 사용합니다.
|
block.oil-extractor.description = 석유를 추출하기 위해 많은 양의 전력과 모래 및 물을 사용합니다.
|
||||||
block.core-shard.description = 기지의 핵심입니다. 파괴되면 해당 지역과의 모든 연결이 끊어집니다. 이런 일이 일어나지 않도록 하십시오.
|
block.core-shard.description = 기지의 핵심입니다. 파괴되면 해당 지역과의 모든 연결이 끊어집니다. 이런 일이 일어나지 않도록 하십시오.
|
||||||
block.core-shard.details = 첫 번째 버전. 휴대용. 자가복제 가능. 일회용 출격 추진기를 가졌으며, 행성간 이동에는 부적합함.
|
block.core-shard.details = 첫 번째 버전. 휴대용. 자가복제 가능. 일회용 출격 추진기를 가졌으며, 행성간 이동에는 부적합함.
|
||||||
@@ -1410,23 +1417,23 @@ block.vault.description = 각 유형의 많은 양의 자원을 저장합니다.
|
|||||||
block.container.description = 각 유형의 자원을 소량 저장합니다. 언로더 블록을 사용하여 컨테이너에서 자원을 빼낼 수 있습니다.
|
block.container.description = 각 유형의 자원을 소량 저장합니다. 언로더 블록을 사용하여 컨테이너에서 자원을 빼낼 수 있습니다.
|
||||||
block.unloader.description = 근처의 비 수송 블록에서 자원을 빼냅니다. 눌러서 빼낼 자원을 변경할 수 있십니다.
|
block.unloader.description = 근처의 비 수송 블록에서 자원을 빼냅니다. 눌러서 빼낼 자원을 변경할 수 있십니다.
|
||||||
block.launch-pad.description = 코어 출격 없이도 자원을 묶어 출격시킬 수 있습니다.
|
block.launch-pad.description = 코어 출격 없이도 자원을 묶어 출격시킬 수 있습니다.
|
||||||
block.duo.description = 작고 저렴한 포탑. 지상 유닛에 유용합니다.
|
block.duo.description = 적에게 탄환을 교대하며 발사합니다.
|
||||||
block.scatter.description = 저렴한 대공 포탑. 적군에게 납덩어리, 고철, 또는 강화 유리 조각 덩어리를 뿌립니다.
|
block.scatter.description = 적군에게 납, 고철, 또는 강화 유리 조각 덩어리를 발사합니다.
|
||||||
block.scorch.description = 주변의 모든 적을 불태웁니다. 근거리에서 매우 효과적입니다.
|
block.scorch.description = 주변의 모든 지상 적을 불태웁니다. 근거리에서 매우 효과적입니다.
|
||||||
block.hail.description = 작은 장거리 포병 포탑입니다.
|
block.hail.description = 장거리에 걸쳐 지상 적에게 작은 포탄을 발사합니다.
|
||||||
block.wave.description = 중형 포탑. 적에게 액체를 발사합니다. 물이 공급되면 자동으로 화재를 진압합니다.
|
block.wave.description = 적에게 액체 줄기를 발사합니다. 물이 공급되면 자동으로 화재를 진압합니다.
|
||||||
block.lancer.description = 중형 대지 레이저 포탑. 강력한 에너지 빔을 충전하여 발사합니다.
|
block.lancer.description = 지상 목표물에게 강력한 에너지 빔을 충전하여 발사합니다.
|
||||||
block.arc.description = 작은 근거리 전격 포탑. 적에게 전격 아크를 발사합니다.
|
block.arc.description = 지상 목표물에게 전격 아크를 발사합니다.
|
||||||
block.swarmer.description = 중형 미사일 포탑. 공중과 지상의 적을 모두 공격하며, 유도탄을 발사합니다.
|
block.swarmer.description = 적에게 유도탄을 발사합니다.
|
||||||
block.salvo.description = 더 큰 고급 듀오 포탑입니다. 적에게 총알을 빠르게 발사합니다.
|
block.salvo.description = 적에게 총알을 빠르게 일제히 발사합니다.
|
||||||
block.fuse.description = 넓은 근거리 파편 포탑. 근처의 적에게 3개의 관통 총알을 발사합니다.
|
block.fuse.description = 주변 적에게 3개의 단거리 관통 레이저를 발사합니다.
|
||||||
block.ripple.description = 매우 강력한 포병 포탑. 원거리에 있는 적에게 포탄 무리를 쏘세요.
|
block.ripple.description = 장거리에 걸쳐 지상 적에게 포탄 무리를 발사합니다.
|
||||||
block.cyclone.description = 대공 및 대지 포탑. 근처 적에게 폭발탄을 발사합니다.
|
block.cyclone.description = 근처 적에게 폭발 파편 덩어리를 발사합니다.
|
||||||
block.spectre.description = 거대한 이중 배럴 대포. 공중 및 지상 목표물에 큰 관통 철갑탄을 발사합니다.
|
block.spectre.description = 공중 및 지상 목표물에게 큰 관통 철갑탄을 발사합니다.
|
||||||
block.meltdown.description = 거대한 레이저 대포. 근처의 적에게 지속적인 레이저 빔을 충전하여 발사합니다. 냉각수가 있어야 작동합니다.
|
block.meltdown.description = 주변 적에게 지속적인 레이저 빔을 충전하여 발사합니다. 냉각 액체가 있어야 작동합니다.
|
||||||
block.foreshadow.description = 긴 거리에 걸친 거대한 단일 목표 볼트를 발사합니다.
|
block.foreshadow.description = 장거리에 걸친 거대한 단일 목표 저격탄을 발사합니다.
|
||||||
block.repair-point.description = 주변에서 가장 가까운 유닛을 지속적으로 치료합니다.
|
block.repair-point.description = 인근에 가장 가까운 유닛을 지속적으로 치료합니다.
|
||||||
block.segment.description = 날아오는 발사체를 요격합니다. 레이저는 목표 대상이 아닙니다.
|
block.segment.description = 날아오는 발사체를 요격합니다. 큰 발사체에겐 조준되지 않습니다.
|
||||||
block.parallax.description = 공중 목표물을 끌어오는 견인 광선을 발사하며, 견인 과정에서 데미지를 줍니다.
|
block.parallax.description = 공중 목표물을 끌어오는 견인 광선을 발사하며, 견인 과정에서 데미지를 줍니다.
|
||||||
block.tsunami.description = 적에게 강력한 액체 줄기를 발사합니다. 물이 공급되면 자동으로 주변의 화재를 진압합니다.
|
block.tsunami.description = 적에게 강력한 액체 줄기를 발사합니다. 물이 공급되면 자동으로 주변의 화재를 진압합니다.
|
||||||
block.silicon-crucible.description = 추가적으로 파이라타이트를 사용하여 더 높은 온도에서 석탄과 모래를 제련합니다. 뜨거운 곳에서 더 효율적입니다.
|
block.silicon-crucible.description = 추가적으로 파이라타이트를 사용하여 더 높은 온도에서 석탄과 모래를 제련합니다. 뜨거운 곳에서 더 효율적입니다.
|
||||||
@@ -1465,8 +1472,8 @@ unit.corvus.description = 적에게 피해를 주고, 아군 구조물을 수리
|
|||||||
unit.crawler.description = 적에게 달려들어서 거대한 폭발을 일으키는 자폭을 합니다.
|
unit.crawler.description = 적에게 달려들어서 거대한 폭발을 일으키는 자폭을 합니다.
|
||||||
unit.atrax.description = 지상 목표물을 약화하는 광재 구체를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
unit.atrax.description = 지상 목표물을 약화하는 광재 구체를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
||||||
unit.spiroct.description = 적에게 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
unit.spiroct.description = 적에게 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
||||||
unit.arkyid.description = 적에게 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
unit.arkyid.description = 적에게 큰 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
||||||
unit.toxopid.description = 적에게 큰 전기 확산탄과 관통 레이저를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
unit.toxopid.description = 적에게 큰 전격 포탄 무리와 관통 레이저를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
||||||
unit.flare.description = 지상 목표물에 일반적인 탄환을 발사합니다.
|
unit.flare.description = 지상 목표물에 일반적인 탄환을 발사합니다.
|
||||||
unit.horizon.description = 지상 목표물에 폭탄을 투하합니다.
|
unit.horizon.description = 지상 목표물에 폭탄을 투하합니다.
|
||||||
unit.zenith.description = 주변 모든 적에게 미사일을 살포합니다.
|
unit.zenith.description = 주변 모든 적에게 미사일을 살포합니다.
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ 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 = Oficjana 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
|
||||||
linkfail = Nie udało się otworzyć linku!\nURL został skopiowany.
|
linkfail = Nie udało się otworzyć linku!\nURL został skopiowany.
|
||||||
screenshot = Zapisano zrzut ekranu w {0}
|
screenshot = Zapisano zrzut ekranu w {0}
|
||||||
screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje miejsca w pamięci urządzenia.
|
screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje miejsca w pamięci urządzenia.
|
||||||
@@ -196,6 +197,7 @@ servers.local = Serwery Lokalne
|
|||||||
servers.remote = Serwery Zdalne
|
servers.remote = Serwery Zdalne
|
||||||
servers.global = Serwery Publiczne
|
servers.global = Serwery Publiczne
|
||||||
|
|
||||||
|
servers.disclaimer = Serwery społeczności [accent]nie są[] w posiadaniu ani nie moderuje nimi twórca gry.\n\nSerwery mogą posiadać zawartość stworzoną przez graczy, która może być nieodpowiednia dla wszystkich grup wiekowych.
|
||||||
servers.showhidden = Pokaż Ukryte Serwery
|
servers.showhidden = Pokaż Ukryte Serwery
|
||||||
server.shown = Pokazane
|
server.shown = Pokazane
|
||||||
server.hidden = Ukryte
|
server.hidden = Ukryte
|
||||||
@@ -510,7 +512,7 @@ resources = Zasoby
|
|||||||
bannedblocks = Zabronione bloki
|
bannedblocks = Zabronione bloki
|
||||||
addall = Dodaj wszystkie
|
addall = Dodaj wszystkie
|
||||||
launch.from = Wstrzelony Z: [accent]{0}
|
launch.from = Wstrzelony Z: [accent]{0}
|
||||||
launch.destination = Cell: {0}
|
launch.destination = Cel: {0}
|
||||||
configure.invalid = Ilość musi być liczbą pomiędzy 0 a {0}.
|
configure.invalid = Ilość musi być liczbą pomiędzy 0 a {0}.
|
||||||
add = Dodaj...
|
add = Dodaj...
|
||||||
boss.health = Zdrowie Strażnika
|
boss.health = Zdrowie Strażnika
|
||||||
@@ -831,6 +833,7 @@ setting.chatopacity.name = Przezroczystość czatu
|
|||||||
setting.lasersopacity.name = Przezroczystość laserów zasilających
|
setting.lasersopacity.name = Przezroczystość laserów zasilających
|
||||||
setting.bridgeopacity.name = Przezroczystość mostów
|
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ę
|
||||||
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.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}[]
|
||||||
@@ -1279,6 +1282,10 @@ hint.payloadDrop.mobile = [accent]Kliknij i przytrzymaj[] w puste miejsce by opu
|
|||||||
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 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.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.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.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.
|
||||||
|
|
||||||
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.
|
||||||
@@ -1424,7 +1431,7 @@ block.ripple.description = Duża wieża artyleryjska, która strzela jednocześn
|
|||||||
block.cyclone.description = Duża szybkostrzelna wieża.
|
block.cyclone.description = Duża szybkostrzelna wieża.
|
||||||
block.spectre.description = Duże działo dwulufowe, które strzela potężnymi pociskami przebijającymi pancerz w jednostki naziemne i powietrzne.
|
block.spectre.description = Duże działo dwulufowe, które strzela potężnymi pociskami przebijającymi pancerz w jednostki naziemne i powietrzne.
|
||||||
block.meltdown.description = Duże działo laserowe, które strzela potężnymi wiązkami dalekiego zasięgu. Wymaga chłodzenia.
|
block.meltdown.description = Duże działo laserowe, które strzela potężnymi wiązkami dalekiego zasięgu. Wymaga chłodzenia.
|
||||||
block.foreshadow.description = Fires a large single-target bolt over long distances.
|
block.foreshadow.description = Strzela potężnym pociskiem z daleka we wrogów.
|
||||||
block.repair-point.description = Bez przerw naprawia najbliższą uszkodzoną jednostkę w jego zasięgu.
|
block.repair-point.description = Bez przerw naprawia najbliższą uszkodzoną jednostkę w jego zasięgu.
|
||||||
block.segment.description = Uszkadza i niszczy wrogie pociskiski poza laserami.
|
block.segment.description = Uszkadza i niszczy wrogie pociskiski poza laserami.
|
||||||
block.parallax.description = Wykorzystuje laser, który przyciąga do siebie wrogów, zadając im obrażenia.
|
block.parallax.description = Wykorzystuje laser, który przyciąga do siebie wrogów, zadając im obrażenia.
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ link.google-play.description = Google Play
|
|||||||
link.f-droid.description = Catalogul F-Droid
|
link.f-droid.description = Catalogul F-Droid
|
||||||
link.wiki.description = Wikiul oficial al Mindustry
|
link.wiki.description = Wikiul oficial al Mindustry
|
||||||
link.suggestions.description = Sugerează noi funcții
|
link.suggestions.description = Sugerează noi funcții
|
||||||
|
link.bug.description = Ai găsit vreunul? Raportează-l aici
|
||||||
linkfail = Linkul nu a putut fi deschis!\nAdresa URL a fost copiată.
|
linkfail = Linkul nu a putut fi deschis!\nAdresa URL a fost copiată.
|
||||||
screenshot = Captură de ecran salvată la {0}
|
screenshot = Captură de ecran salvată la {0}
|
||||||
screenshot.invalid = Harta e prea mare. Se poate să nu existe suficientă memorie pentru captura de ecran.
|
screenshot.invalid = Harta e prea mare. Se poate să nu existe suficientă memorie pentru captura de ecran.
|
||||||
@@ -69,7 +70,7 @@ stat.delivered = Resurse Lansate:
|
|||||||
stat.playtime = Timp Joc:[accent] {0}
|
stat.playtime = Timp Joc:[accent] {0}
|
||||||
stat.rank = Rang Final: [accent]{0}
|
stat.rank = Rang Final: [accent]{0}
|
||||||
|
|
||||||
globalitems = [accent]Materiale Globale
|
globalitems = [accent]Materiale Totale
|
||||||
map.delete = Sigur vrei să ștergi harta "[accent]{0}[]"?
|
map.delete = Sigur vrei să ștergi harta "[accent]{0}[]"?
|
||||||
level.highscore = Scor Maxim: [accent]{0}
|
level.highscore = Scor Maxim: [accent]{0}
|
||||||
level.select = Selectează Nivelul
|
level.select = Selectează Nivelul
|
||||||
@@ -196,6 +197,7 @@ servers.local = Servere Locale
|
|||||||
servers.remote = Servere de la Distanță
|
servers.remote = Servere de la Distanță
|
||||||
servers.global = Servere ale Comunității
|
servers.global = Servere ale Comunității
|
||||||
|
|
||||||
|
servers.disclaimer = Serverele comunității [accent]nu[] sunt deținute sau controlate de către dezvoltator.\n\nServerele pot prezenta conținut generat de utilizatori care nu este potrivit tuturor vârstelor.
|
||||||
servers.showhidden = Vezi Serverele Ascunse
|
servers.showhidden = Vezi Serverele Ascunse
|
||||||
server.shown = Afișate
|
server.shown = Afișate
|
||||||
server.hidden = Ascunse
|
server.hidden = Ascunse
|
||||||
@@ -702,7 +704,7 @@ ability.forcefield = Câmp de Forță
|
|||||||
ability.repairfield = Câmp de Reparare
|
ability.repairfield = Câmp de Reparare
|
||||||
ability.statusfield = Câmp Suprasolicitare Unități
|
ability.statusfield = Câmp Suprasolicitare Unități
|
||||||
ability.unitspawn = Fabrică de {0}
|
ability.unitspawn = Fabrică de {0}
|
||||||
ability.shieldregenfield = Câmp de Regenerare a Scutului
|
ability.shieldregenfield = Regenerare Câmpuri de Forță
|
||||||
ability.movelightning = Mișcare Fulger
|
ability.movelightning = Mișcare Fulger
|
||||||
|
|
||||||
bar.drilltierreq = Burghiu Mai Bun Necesar
|
bar.drilltierreq = Burghiu Mai Bun Necesar
|
||||||
@@ -831,6 +833,7 @@ setting.chatopacity.name = Opacitate Chat
|
|||||||
setting.lasersopacity.name = Opacitate Laser Electric
|
setting.lasersopacity.name = Opacitate Laser Electric
|
||||||
setting.bridgeopacity.name = Opacitate Poduri
|
setting.bridgeopacity.name = Opacitate Poduri
|
||||||
setting.playerchat.name = Vezi Chat Temporar
|
setting.playerchat.name = Vezi Chat Temporar
|
||||||
|
setting.showweather.name = Vezi Vremea
|
||||||
public.confirm = Vrei să îți faci jocul public?\n[accent]Oricine va putea intra în jocurile tale.\n[lightgray]Asta se poate schimba mai târziu în Setări->Joc->Vizibilitatea Jocurilor Publice.
|
public.confirm = Vrei să îți faci jocul public?\n[accent]Oricine va putea intra în jocurile tale.\n[lightgray]Asta se poate schimba mai târziu în Setări->Joc->Vizibilitatea Jocurilor Publice.
|
||||||
public.beta = De reținut că versiunile beta ale jocului nu poate face servere publice.
|
public.beta = De reținut că versiunile beta ale jocului nu poate face servere publice.
|
||||||
uiscale.reset = Scara interfeței a fost schimbată.\nApasă "OK" pt a confirma această scară.\n[scarlet]Revin setările și se iese în [accent] {0}[] secunde...
|
uiscale.reset = Scara interfeței a fost schimbată.\nApasă "OK" pt a confirma această scară.\n[scarlet]Revin setările și se iese în [accent] {0}[] secunde...
|
||||||
@@ -1263,7 +1266,7 @@ hint.breaking.mobile = Activează \ue817 [accent]ciocanul[] din dreapta-jos și
|
|||||||
hint.research = Folosește butonul \ue875 [accent]Cercetează[] pt a cerceta noi tehnologii.
|
hint.research = Folosește butonul \ue875 [accent]Cercetează[] pt a cerceta noi tehnologii.
|
||||||
hint.research.mobile = Folosește butonul \ue875 [accent]Cercetează[] din \ue88c [accent]Meniu[] pt a cerceta noi tehnologii.
|
hint.research.mobile = Folosește butonul \ue875 [accent]Cercetează[] din \ue88c [accent]Meniu[] pt a cerceta noi tehnologii.
|
||||||
hint.unitControl = Ține apăsat [accent][[Ctrl][] și [accent]dă click[] pt a controla unități aliate sau arme.
|
hint.unitControl = Ține apăsat [accent][[Ctrl][] și [accent]dă click[] pt a controla unități aliate sau arme.
|
||||||
hint.unitControl.mobile = [accent][Dă dublu click[] pt a controla unități aliate sau arme.
|
hint.unitControl.mobile = [accent][[Dă dublu click][] pt a controla unități aliate sau arme.
|
||||||
hint.launch = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către o altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din dreapta-jos.
|
hint.launch = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către o altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din dreapta-jos.
|
||||||
hint.launch.mobile = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către o altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din \ue88c [accent]Meniu[].
|
hint.launch.mobile = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către o altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din \ue88c [accent]Meniu[].
|
||||||
hint.schematicSelect = Ține apăsat [accent][[F][] și trage pt a selecta blocuri pt copiere.\n\n[accent][[Click pe rotiță][] pt a copia un singur tip de bloc.
|
hint.schematicSelect = Ține apăsat [accent][[F][] și trage pt a selecta blocuri pt copiere.\n\n[accent][[Click pe rotiță][] pt a copia un singur tip de bloc.
|
||||||
@@ -1279,6 +1282,10 @@ hint.payloadDrop.mobile = [accent]Ține apăsat[] pe o locație goală pt a desc
|
|||||||
hint.waveFire = Armele [accent]Wave[] încărcate cu apă vor stinge incendiile automat.
|
hint.waveFire = Armele [accent]Wave[] încărcate cu apă vor stinge incendiile automat.
|
||||||
hint.generator = \uf879 [accent]Generatoarele pe Combustie[] ard cărbunele și transmit electricitatea blocurilor învecinate.\n\nElectricitatea poate fi transmisă pe distanțe lungi folosind \uf87f [accent]Noduri Electrice[].
|
hint.generator = \uf879 [accent]Generatoarele pe Combustie[] ard cărbunele și transmit electricitatea blocurilor învecinate.\n\nElectricitatea poate fi transmisă pe distanțe lungi folosind \uf87f [accent]Noduri Electrice[].
|
||||||
hint.guardian = Unitățile [accent]Gardian[] au armuri puternice. Munițiile slabe precum [accent]Cuprul[] și [accent]Plumbul[] [scarlet]nu sunt eficiente[].\n\nFolosește arme mai bune sau muniție de \uf835 [accent]Grafit[] pt \uf861Duo/\uf859Salvo pt a nimici Gardianul.
|
hint.guardian = Unitățile [accent]Gardian[] au armuri puternice. Munițiile slabe precum [accent]Cuprul[] și [accent]Plumbul[] [scarlet]nu sunt eficiente[].\n\nFolosește arme mai bune sau muniție de \uf835 [accent]Grafit[] pt \uf861Duo/\uf859Salvo pt a nimici Gardianul.
|
||||||
|
hint.coreUpgrade = Un nucleu poate pot fi îmbunătățit [accent]plasând o alt nucleu mai bun peste el[].\n\nPlasează un nucleu [accent]Foundation[] peste nucleul [accent]Shard[]. Nucleul nu poate fi plasat decât pe alte nuclee. Asigură-te că nu sunt alte benzi sau obstacole care să împiedice plasarea.
|
||||||
|
hint.presetLaunch = Poți lansa de oriunde în sectoarele gri, precum [accent]Pădurea Glacială[]. Ele sunt [accent]zone[] speciale [accent]de aterizare[]. Nu ai nevoie să capturezi sectoarele învecinate pt a lansa.\n\n[accent]Sectoarele numerotate[], ca acesta, sunt [accent]opționale[].
|
||||||
|
hint.coreIncinerate = După ce nucleul se umple până la refuz cu un tip de material, toate materialele în plus de acel tip care încearcă să între în nucleu sunt [accent]incinerate[].
|
||||||
|
hint.coopCampaign = Când joci [accent]campania cooperând cu alți jucători[], materialele produse în sectorul curent vor fi transferate și către [accent]sectoarele tale locale[].\n\nDe asemenea, vei debloca tot ceea ce cercetează gazda.
|
||||||
|
|
||||||
item.copper.description = Folosit în tot felul de construcții și muniție.
|
item.copper.description = Folosit în tot felul de construcții și muniție.
|
||||||
item.copper.details = Cupru. Metal anormal de abundent pe Serpulo. Structural slab dacă nu este consolidat.
|
item.copper.details = Cupru. Metal anormal de abundent pe Serpulo. Structural slab dacă nu este consolidat.
|
||||||
@@ -1472,7 +1479,7 @@ unit.zenith.description = Trage cu salve de rachete către inamicii din apropier
|
|||||||
unit.antumbra.description = Trage cu un baraj de gloanțe către inamicii din apropiere.
|
unit.antumbra.description = Trage cu un baraj de gloanțe către inamicii din apropiere.
|
||||||
unit.eclipse.description = Trage cu un baraj de grămezi de material și două lasere care penetrează scuturile tuturor inamicilor din apropiere.
|
unit.eclipse.description = Trage cu un baraj de grămezi de material și două lasere care penetrează scuturile tuturor inamicilor din apropiere.
|
||||||
unit.mono.description = Minează automat cupru și plumb, depozitându-le în nucleu.
|
unit.mono.description = Minează automat cupru și plumb, depozitându-le în nucleu.
|
||||||
unit.poly.description = Reconstruiește automat structurile deteriorate și asistă alte unități la construire.
|
unit.poly.description = Reconstruiește automat structurile distruse și asistă alte unități la construire.
|
||||||
unit.mega.description = Repară automat structurile deteriorate. Capabilă să care blocuri și mici unități de artilerie.
|
unit.mega.description = Repară automat structurile deteriorate. Capabilă să care blocuri și mici unități de artilerie.
|
||||||
unit.quad.description = Aruncă bombe mari peste artileria inamică, reparând structurile aliate și deteriorând inamicii. Capabilă să care unități de artilerie de dimensiuni medii.
|
unit.quad.description = Aruncă bombe mari peste artileria inamică, reparând structurile aliate și deteriorând inamicii. Capabilă să care unități de artilerie de dimensiuni medii.
|
||||||
unit.oct.description = Protejează aliații din apropiere cu scutul său care se regenerează. Capabilă să care majoritatea unităților de artilerie.
|
unit.oct.description = Protejează aliații din apropiere cu scutul său care se regenerează. Capabilă să care majoritatea unităților de artilerie.
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ stat.deconstructed = Будівель деконструйовано:[accent] {0
|
|||||||
stat.delivered = Ресурсів запущено:
|
stat.delivered = Ресурсів запущено:
|
||||||
stat.playtime = Час у грі:[accent] {0}
|
stat.playtime = Час у грі:[accent] {0}
|
||||||
stat.rank = Фінальний рахунок:[accent] {0}
|
stat.rank = Фінальний рахунок:[accent] {0}
|
||||||
globalitems = [accent]Глобальні предмети
|
globalitems = [accent]Усього предметів
|
||||||
map.delete = Ви впевнені, що хочете видалити мапу «[accent]{0}[]»?
|
map.delete = Ви впевнені, що хочете видалити мапу «[accent]{0}[]»?
|
||||||
level.highscore = Рекорд: [accent]{0}
|
level.highscore = Рекорд: [accent]{0}
|
||||||
level.select = Вибір мапи
|
level.select = Вибір мапи
|
||||||
@@ -112,7 +112,7 @@ mod.disable = Вимкнути
|
|||||||
mod.content = Зміст:
|
mod.content = Зміст:
|
||||||
mod.delete.error = Неможливо видалити модифікацію. Файл, можливо, використовується.
|
mod.delete.error = Неможливо видалити модифікацію. Файл, можливо, використовується.
|
||||||
mod.requiresversion = [scarlet]Необхідна мінімальна версія гри: [accent]{0}
|
mod.requiresversion = [scarlet]Необхідна мінімальна версія гри: [accent]{0}
|
||||||
mod.outdated = [scarlet]Не сумісна з V6 (немає мінімальної версі гри (англ. min-game-version): 105)
|
mod.outdated = [scarlet]Не сумісна з V6
|
||||||
mod.missingdependencies = [scarlet]Відсутні залежності: {0}
|
mod.missingdependencies = [scarlet]Відсутні залежності: {0}
|
||||||
mod.erroredcontent = [scarlet]Помилки під час завантаження
|
mod.erroredcontent = [scarlet]Помилки під час завантаження
|
||||||
mod.errors = Виникли помилки під час завантаження змісту.
|
mod.errors = Виникли помилки під час завантаження змісту.
|
||||||
@@ -187,6 +187,8 @@ host.invalid = [scarlet]Не вдалося під’єднатися до се
|
|||||||
servers.local = Локальні сервери
|
servers.local = Локальні сервери
|
||||||
servers.remote = Віддалені сервери
|
servers.remote = Віддалені сервери
|
||||||
servers.global = Глобальні сервери
|
servers.global = Глобальні сервери
|
||||||
|
|
||||||
|
servers.disclaimer = Сервери спільноли [accent]не[] належать чи контролюються власником.\n\nСервери можуть містити користувацький вміст, який не підходить для якогось віку.
|
||||||
servers.showhidden = Показати приховані сервери
|
servers.showhidden = Показати приховані сервери
|
||||||
server.shown = Показано
|
server.shown = Показано
|
||||||
server.hidden = Приховано
|
server.hidden = Приховано
|
||||||
@@ -756,7 +758,7 @@ setting.touchscreen.name = Керування сенсорним екраном
|
|||||||
setting.fpscap.name = Максимальний FPS
|
setting.fpscap.name = Максимальний FPS
|
||||||
setting.fpscap.none = Жодне
|
setting.fpscap.none = Жодне
|
||||||
setting.fpscap.text = {0} FPS
|
setting.fpscap.text = {0} FPS
|
||||||
setting.uiscale.name = Масштабування користувацького інтерфейсу[lightgray] (потребує перезапуск)[]
|
setting.uiscale.name = Масштабування користувацького інтерфейсу[lightgray] (потребує перезапуску)[]
|
||||||
setting.swapdiagonal.name = Завжди діагональне розміщення
|
setting.swapdiagonal.name = Завжди діагональне розміщення
|
||||||
setting.difficulty.training = Навчання
|
setting.difficulty.training = Навчання
|
||||||
setting.difficulty.easy = Легка
|
setting.difficulty.easy = Легка
|
||||||
@@ -780,7 +782,7 @@ setting.smoothcamera.name = Гладка камера
|
|||||||
setting.vsync.name = Вертикальна синхронізація
|
setting.vsync.name = Вертикальна синхронізація
|
||||||
setting.pixelate.name = Пікселізація
|
setting.pixelate.name = Пікселізація
|
||||||
setting.minimap.name = Показувати мінімапу
|
setting.minimap.name = Показувати мінімапу
|
||||||
setting.coreitems.name = Показувати предмети в ядрі (дороблюється)
|
setting.coreitems.name = Показувати предмети в ядрі
|
||||||
setting.position.name = Показувати координати гравця
|
setting.position.name = Показувати координати гравця
|
||||||
setting.musicvol.name = Гучність музики
|
setting.musicvol.name = Гучність музики
|
||||||
setting.atmosphere.name = Показувати планетарну атмосферу
|
setting.atmosphere.name = Показувати планетарну атмосферу
|
||||||
@@ -799,7 +801,7 @@ setting.playerchat.name = Показувати хмару чата над гра
|
|||||||
public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[accent]Будь-хто може приєднатися до вашої гри.\n[lightgray]Це можна змінити в Налаштування->Гра->Загальнодоступність гри.
|
public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[accent]Будь-хто може приєднатися до вашої гри.\n[lightgray]Це можна змінити в Налаштування->Гра->Загальнодоступність гри.
|
||||||
public.beta = Зауважте, що в бета-версії гри ви не можете робити публічні ігри.
|
public.beta = Зауважте, що в бета-версії гри ви не можете робити публічні ігри.
|
||||||
uiscale.reset = Масштаб користувацького інтерфейсу було змінено.\nНатисніть «Гаразд» для підтвердження цього масштабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] секунд…
|
uiscale.reset = Масштаб користувацького інтерфейсу було змінено.\nНатисніть «Гаразд» для підтвердження цього масштабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] секунд…
|
||||||
uiscale.cancel = Скасувати & Вийти
|
uiscale.cancel = Скасувати і вийти
|
||||||
setting.bloom.name = Світіння
|
setting.bloom.name = Світіння
|
||||||
keybind.title = Налаштування керування
|
keybind.title = Налаштування керування
|
||||||
keybinds.mobile = [scarlet]Більшість прив’язаних клавіш не функціональні для мобільних пристроїв. Підтримується лише базовий рух.
|
keybinds.mobile = [scarlet]Більшість прив’язаних клавіш не функціональні для мобільних пристроїв. Підтримується лише базовий рух.
|
||||||
@@ -811,7 +813,7 @@ command.attack = Атака
|
|||||||
command.rally = Точка збору
|
command.rally = Точка збору
|
||||||
command.retreat = Відступити
|
command.retreat = Відступити
|
||||||
command.idle = Бездіяльність
|
command.idle = Бездіяльність
|
||||||
placement.blockselectkeys = \n[lightgray]Клавіши: [{0},
|
placement.blockselectkeys = \n[lightgray]Клавіші: [{0},
|
||||||
keybind.respawn.name = Відродження
|
keybind.respawn.name = Відродження
|
||||||
keybind.control.name = Контролювання одиниці
|
keybind.control.name = Контролювання одиниці
|
||||||
keybind.clear_building.name = Очистити план будування
|
keybind.clear_building.name = Очистити план будування
|
||||||
@@ -1213,7 +1215,7 @@ hint.placeDrill = Виберіть у меню внизу праворуч вк
|
|||||||
hint.placeDrill.mobile = Виберіть у меню внизу праворуч вкладку [accent]Бур[], потім виберіть [accent]Механічний бур[] та натисніть на мідний клаптик для його розміщення.\n\nНатисніть внизу праворуч [accent]галку[] для підтвердження.
|
hint.placeDrill.mobile = Виберіть у меню внизу праворуч вкладку [accent]Бур[], потім виберіть [accent]Механічний бур[] та натисніть на мідний клаптик для його розміщення.\n\nНатисніть внизу праворуч [accent]галку[] для підтвердження.
|
||||||
hint.placeConveyor = Конвеєри переміщують предмети з бурів до інших блоків. Виберіть [accent]конвеєр[] з вкладки [accent]Транспортування[].\n\nНатисніть і тягніть, щоби розмістити декілька конвеєрів.\n[accent]Прокручуйте коліщатком миші[], щоб обертати їх.
|
hint.placeConveyor = Конвеєри переміщують предмети з бурів до інших блоків. Виберіть [accent]конвеєр[] з вкладки [accent]Транспортування[].\n\nНатисніть і тягніть, щоби розмістити декілька конвеєрів.\n[accent]Прокручуйте коліщатком миші[], щоб обертати їх.
|
||||||
hint.placeConveyor.mobile = Конвеєри переміщують предмети з бурів до інших блоків. Виберіть [accent]конвеєр[] з вкладки [accent]Транспортування[].\n\nУтримуйте палець протягом секунди і протягніть, щоби розмістити декілька конвеєрів.
|
hint.placeConveyor.mobile = Конвеєри переміщують предмети з бурів до інших блоків. Виберіть [accent]конвеєр[] з вкладки [accent]Транспортування[].\n\nУтримуйте палець протягом секунди і протягніть, щоби розмістити декілька конвеєрів.
|
||||||
hint.placeTurret = Розмістіть [accent]башти[], щоби захистити базу від ворогів.\n\nБашти потребують боєприпасів. У цьому випадку мідь.\nДля її подачі використовуйте конвеєри та бури.
|
hint.placeTurret = Розмістіть [accent]башти[], щоби захистити базу від ворогів.\n\nБашти потребують боєприпасів. У цьому випадку \uf838мідь.\nДля її подачі використовуйте конвеєри та бури.
|
||||||
hhint.breaking = Натисніть [accent]ПКМ[] і тягніть, щоби зруйнувати блоки.
|
hhint.breaking = Натисніть [accent]ПКМ[] і тягніть, щоби зруйнувати блоки.
|
||||||
hint.breaking.mobile = Активуйте [accent]молот[] внизу праворуч і торкніться блоків, щоби їх розібрати.\n\nУтримуйте палець протягом секунди і протягніть, щоби розібрати виділене.
|
hint.breaking.mobile = Активуйте [accent]молот[] внизу праворуч і торкніться блоків, щоби їх розібрати.\n\nУтримуйте палець протягом секунди і протягніть, щоби розібрати виділене.
|
||||||
hint.research = Використовуйте кнопку [accent]Дослідження[] для дослідження нової технології.
|
hint.research = Використовуйте кнопку [accent]Дослідження[] для дослідження нової технології.
|
||||||
@@ -1235,6 +1237,10 @@ hint.payloadDrop.mobile = [accent]Торкніться[] вільного міс
|
|||||||
hint.waveFire = Башта [accent]Хвиля[] з водою буде автоматично гасити найближчі пожежі.
|
hint.waveFire = Башта [accent]Хвиля[] з водою буде автоматично гасити найближчі пожежі.
|
||||||
hint.generator = [accent]Генератори внутрішнього згорання[] спалюють вугілля і передають енергію прилеглим блокам.\n\nРадіус передачі енергії можна збільшити за допомогою [accent]силових вузлів[].
|
hint.generator = [accent]Генератори внутрішнього згорання[] спалюють вугілля і передають енергію прилеглим блокам.\n\nРадіус передачі енергії можна збільшити за допомогою [accent]силових вузлів[].
|
||||||
hint.guardian = [accent]Вартові[] одиниці броньовані. Слабкі боєприпаси, як-от [accent]мідь[] чи [accent]свинець[], [scarlet]не є ефективними[].\n\nВикористовуйте башти вищого рангу чи [accent]графітові боєприпаси[] для Подвійної башти чиЗалпу, щоб убити Вартових.
|
hint.guardian = [accent]Вартові[] одиниці броньовані. Слабкі боєприпаси, як-от [accent]мідь[] чи [accent]свинець[], [scarlet]не є ефективними[].\n\nВикористовуйте башти вищого рангу чи [accent]графітові боєприпаси[] для Подвійної башти чиЗалпу, щоб убити Вартових.
|
||||||
|
hint.coreUpgrade = Ядро можна покращити, якщо [accent]розмістити поверх нього ядро вищого рівня[].\n\nРозмістіть ядро [accent]«Штаб»[] поверх ядра [accent]«Уламок»[]. Переконайтесь, що поблизу ядер немає перешкод (зайвих блоків).
|
||||||
|
hint.presetLaunch = Сірі [accent]сектори зони посадки[], як-от [accent]Крижаний ліс[], можна запустити з будь-якого місця. Вони не вимагають захоплення сусідньої території.\n\n[accent]Нумеровані сектори[], як цей, [accent]необовʼязкові[].
|
||||||
|
hint.coreIncinerate = Після того, як ядро наповниться предметом, будь-які додаткові предмети того ж типу, які воно отримує, будуть [accent]спалені[].
|
||||||
|
|
||||||
item.copper.description = Використовується у всіх типах блоків і боєприпасах.
|
item.copper.description = Використовується у всіх типах блоків і боєприпасах.
|
||||||
item.copper.details = Мідь. Напрочуд багато жил цієї руди на Серпуло. За своєю структурою слабка, якщо не зміцнена.
|
item.copper.details = Мідь. Напрочуд багато жил цієї руди на Серпуло. За своєю структурою слабка, якщо не зміцнена.
|
||||||
item.lead.description = Широко використовується в електроніці та в транспортуванні рідин.
|
item.lead.description = Широко використовується в електроніці та в транспортуванні рідин.
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ amrsoll
|
|||||||
ねらひかだ
|
ねらひかだ
|
||||||
Draco
|
Draco
|
||||||
Quezler
|
Quezler
|
||||||
|
killall -q
|
||||||
Alicila
|
Alicila
|
||||||
Daniel Dusek
|
Daniel Dusek
|
||||||
DeltaNedas
|
DeltaNedas
|
||||||
|
|||||||
Binary file not shown.
@@ -50,5 +50,5 @@ const cons = method => new Cons(){get: method}
|
|||||||
const prov = method => new Prov(){get: method}
|
const prov = method => new Prov(){get: method}
|
||||||
const func = method => new Func(){get: method}
|
const func = method => new Func(){get: method}
|
||||||
|
|
||||||
const newEffect = (lifetime, renderer) => new Effects.Effect(lifetime, new Effects.EffectRenderer({render: renderer}))
|
const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer}))
|
||||||
Call = Packages.mindustry.gen.Call
|
Call = Packages.mindustry.gen.Call
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ const cons = method => new Cons(){get: method}
|
|||||||
const prov = method => new Prov(){get: method}
|
const prov = method => new Prov(){get: method}
|
||||||
const func = method => new Func(){get: method}
|
const func = method => new Func(){get: method}
|
||||||
|
|
||||||
const newEffect = (lifetime, renderer) => new Effects.Effect(lifetime, new Effects.EffectRenderer({render: renderer}))
|
const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer}))
|
||||||
Call = Packages.mindustry.gen.Call
|
Call = Packages.mindustry.gen.Call
|
||||||
|
|
||||||
importPackage(Packages.arc)
|
importPackage(Packages.arc)
|
||||||
@@ -165,6 +165,7 @@ const SectorInvasionEvent = Packages.mindustry.game.EventType.SectorInvasionEven
|
|||||||
const SectorLoseEvent = Packages.mindustry.game.EventType.SectorLoseEvent
|
const SectorLoseEvent = Packages.mindustry.game.EventType.SectorLoseEvent
|
||||||
const WorldLoadEvent = Packages.mindustry.game.EventType.WorldLoadEvent
|
const WorldLoadEvent = Packages.mindustry.game.EventType.WorldLoadEvent
|
||||||
const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent
|
const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent
|
||||||
|
const ContentInitEvent = Packages.mindustry.game.EventType.ContentInitEvent
|
||||||
const BlockInfoEvent = Packages.mindustry.game.EventType.BlockInfoEvent
|
const BlockInfoEvent = Packages.mindustry.game.EventType.BlockInfoEvent
|
||||||
const CoreItemDeliverEvent = Packages.mindustry.game.EventType.CoreItemDeliverEvent
|
const CoreItemDeliverEvent = Packages.mindustry.game.EventType.CoreItemDeliverEvent
|
||||||
const TurretAmmoDeliverEvent = Packages.mindustry.game.EventType.TurretAmmoDeliverEvent
|
const TurretAmmoDeliverEvent = Packages.mindustry.game.EventType.TurretAmmoDeliverEvent
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import mindustry.game.*;
|
|||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.input.*;
|
import mindustry.input.*;
|
||||||
import mindustry.io.*;
|
import mindustry.io.*;
|
||||||
|
import mindustry.logic.*;
|
||||||
import mindustry.maps.Map;
|
import mindustry.maps.Map;
|
||||||
import mindustry.maps.*;
|
import mindustry.maps.*;
|
||||||
import mindustry.mod.*;
|
import mindustry.mod.*;
|
||||||
@@ -47,8 +48,6 @@ public class Vars implements Loadable{
|
|||||||
public static final int bufferSize = 8192;
|
public static final int bufferSize = 8192;
|
||||||
/** global charset, since Android doesn't support the Charsets class */
|
/** global charset, since Android doesn't support the Charsets class */
|
||||||
public static final Charset charset = Charset.forName("UTF-8");
|
public static final Charset charset = Charset.forName("UTF-8");
|
||||||
/** mods suggested for import */
|
|
||||||
public static final String[] suggestedMods = {""};
|
|
||||||
/** main application name, capitalized */
|
/** main application name, capitalized */
|
||||||
public static final String appName = "Mindustry";
|
public static final String appName = "Mindustry";
|
||||||
/** URL for itch.io donations. */
|
/** URL for itch.io donations. */
|
||||||
@@ -69,6 +68,8 @@ public class Vars implements Loadable{
|
|||||||
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.*/
|
||||||
public static final Seq<ServerGroup> defaultServers = Seq.with();
|
public static final Seq<ServerGroup> defaultServers = Seq.with();
|
||||||
|
/** maximum size of any block, do not change unless you know what you're doing */
|
||||||
|
public static final int maxBlockSize = 16;
|
||||||
/** maximum distance between mine and core that supports automatic transferring */
|
/** maximum distance between mine and core that supports automatic transferring */
|
||||||
public static final float mineTransferRange = 220f;
|
public static final float mineTransferRange = 220f;
|
||||||
/** max chat message length */
|
/** max chat message length */
|
||||||
@@ -195,6 +196,7 @@ public class Vars implements Loadable{
|
|||||||
public static BeControl becontrol;
|
public static BeControl becontrol;
|
||||||
public static AsyncCore asyncCore;
|
public static AsyncCore asyncCore;
|
||||||
public static BaseRegistry bases;
|
public static BaseRegistry bases;
|
||||||
|
public static GlobalConstants constants;
|
||||||
|
|
||||||
public static Universe universe;
|
public static Universe universe;
|
||||||
public static World world;
|
public static World world;
|
||||||
@@ -268,6 +270,7 @@ public class Vars implements Loadable{
|
|||||||
indexer = new BlockIndexer();
|
indexer = new BlockIndexer();
|
||||||
pathfinder = new Pathfinder();
|
pathfinder = new Pathfinder();
|
||||||
bases = new BaseRegistry();
|
bases = new BaseRegistry();
|
||||||
|
constants = new GlobalConstants();
|
||||||
|
|
||||||
state = new GameState();
|
state = new GameState();
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class BaseAI{
|
|||||||
private static int correct = 0, incorrect = 0;
|
private static int correct = 0, incorrect = 0;
|
||||||
|
|
||||||
private int lastX, lastY, lastW, lastH;
|
private int lastX, lastY, lastW, lastH;
|
||||||
private boolean triedWalls;
|
private boolean triedWalls, foundPath;
|
||||||
|
|
||||||
TeamData data;
|
TeamData data;
|
||||||
Interval timer = new Interval(4);
|
Interval timer = new Interval(4);
|
||||||
@@ -114,6 +114,9 @@ public class BaseAI{
|
|||||||
}
|
}
|
||||||
|
|
||||||
calcPath.add(calcTile.pos());
|
calcPath.add(calcTile.pos());
|
||||||
|
for(Point2 p : Geometry.d8){
|
||||||
|
calcPath.add(Point2.pack(p.x + calcTile.x, p.y + calcTile.y));
|
||||||
|
}
|
||||||
|
|
||||||
//found the end.
|
//found the end.
|
||||||
if(calcTile.build instanceof CoreBuild b && b.team == state.rules.defaultTeam){
|
if(calcTile.build instanceof CoreBuild b && b.team == state.rules.defaultTeam){
|
||||||
@@ -125,6 +128,7 @@ public class BaseAI{
|
|||||||
calcPath.clear();
|
calcPath.clear();
|
||||||
calcTile = null;
|
calcTile = null;
|
||||||
totalCalcs ++;
|
totalCalcs ++;
|
||||||
|
foundPath = true;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -135,7 +139,7 @@ public class BaseAI{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//only schedule when there's something to build.
|
//only schedule when there's something to build.
|
||||||
if(totalCalcs > 0 && data.blocks.isEmpty() && timer.get(timerStep, Mathf.lerp(20f, 4f, data.team.rules().aiTier))){
|
if(foundPath && data.blocks.isEmpty() && timer.get(timerStep, Mathf.lerp(20f, 4f, data.team.rules().aiTier))){
|
||||||
if(!triedWalls){
|
if(!triedWalls){
|
||||||
tryWalls();
|
tryWalls();
|
||||||
triedWalls = true;
|
triedWalls = true;
|
||||||
|
|||||||
@@ -55,6 +55,12 @@ public class WaveSpawner{
|
|||||||
public void spawnEnemies(){
|
public void spawnEnemies(){
|
||||||
spawning = true;
|
spawning = true;
|
||||||
|
|
||||||
|
eachGroundSpawn((spawnX, spawnY, doShockwave) -> {
|
||||||
|
if(doShockwave){
|
||||||
|
doShockwave(spawnX, spawnY);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
for(SpawnGroup group : state.rules.spawns){
|
for(SpawnGroup group : state.rules.spawns){
|
||||||
if(group.type == null) continue;
|
if(group.type == null) continue;
|
||||||
|
|
||||||
@@ -86,18 +92,12 @@ public class WaveSpawner{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
eachGroundSpawn((spawnX, spawnY, doShockwave) -> {
|
|
||||||
if(doShockwave){
|
|
||||||
doShockwave(spawnX, spawnY);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Time.runTask(121f, () -> spawning = false);
|
Time.runTask(121f, () -> spawning = false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doShockwave(float x, float y){
|
public void doShockwave(float x, float y){
|
||||||
Time.run(20f, () -> Fx.spawnShockwave.at(x, y, state.rules.dropZoneRadius));
|
Fx.spawnShockwave.at(x, y, state.rules.dropZoneRadius);
|
||||||
Time.run(40f, () -> Damage.damage(state.rules.waveTeam, x, y, state.rules.dropZoneRadius, 99999999f, true));
|
Damage.damage(state.rules.waveTeam, x, y, state.rules.dropZoneRadius, 99999999f, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void eachGroundSpawn(Intc2 cons){
|
public void eachGroundSpawn(Intc2 cons){
|
||||||
|
|||||||
@@ -45,8 +45,18 @@ public class BuilderAI extends AIController{
|
|||||||
//approach request if building
|
//approach request if building
|
||||||
BuildPlan req = unit.buildPlan();
|
BuildPlan req = unit.buildPlan();
|
||||||
|
|
||||||
|
//clear break plan if another player is breaking something.
|
||||||
|
if(!req.breaking && timer.get(timerTarget2, 40f)){
|
||||||
|
for(Player player : Groups.player){
|
||||||
|
if(player.isBuilder() && player.unit().activelyBuilding() && player.unit().buildPlan().samePos(req) && player.unit().buildPlan().breaking){
|
||||||
|
unit.plans.removeFirst();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
boolean valid =
|
boolean valid =
|
||||||
(req.tile() != null && req.tile().build instanceof ConstructBuild && req.tile().<ConstructBuild>bc().cblock == req.block) ||
|
(req.tile() != null && req.tile().build instanceof ConstructBuild cons && cons.cblock == req.block) ||
|
||||||
(req.breaking ?
|
(req.breaking ?
|
||||||
Build.validBreak(unit.team(), req.x, req.y) :
|
Build.validBreak(unit.team(), req.x, req.y) :
|
||||||
Build.validPlace(req.block, unit.team(), req.x, req.y, req.rotation));
|
Build.validPlace(req.block, unit.team(), req.x, req.y, req.rotation));
|
||||||
@@ -120,6 +130,6 @@ public class BuilderAI extends AIController{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldShoot(){
|
public boolean shouldShoot(){
|
||||||
return !((Builderc)unit).isBuilding();
|
return !unit.isBuilding();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ public class FlyingAI extends AIController{
|
|||||||
@Override
|
@Override
|
||||||
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.weapons.first().rotate){
|
if(!unit.type.circleTarget){
|
||||||
moveTo(target, unit.range() * 0.8f);
|
moveTo(target, unit.range() * 0.8f);
|
||||||
unit.lookAt(target);
|
unit.lookAt(target);
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -33,11 +33,10 @@ public class FormationAI extends AIController implements FormationMember{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(unit.type.canBoost){
|
if(unit.type.canBoost){
|
||||||
unit.elevation = Mathf.approachDelta(unit.elevation, !unit.canPassOn() ? 1f : leader.type.canBoost ? leader.elevation : 0f, 0.08f);
|
unit.elevation = Mathf.approachDelta(unit.elevation, unit.onSolid() ? 1f : leader.type.canBoost ? leader.elevation : 0f, 0.08f);
|
||||||
}
|
}
|
||||||
|
|
||||||
unit.controlWeapons(true, leader.isShooting);
|
unit.controlWeapons(true, leader.isShooting);
|
||||||
// unit.moveAt(Tmp.v1.set(deltaX, deltaY).limit(unit.type().speed));
|
|
||||||
|
|
||||||
unit.aim(leader.aimX(), leader.aimY());
|
unit.aim(leader.aimX(), leader.aimY());
|
||||||
|
|
||||||
@@ -47,17 +46,10 @@ public class FormationAI extends AIController implements FormationMember{
|
|||||||
unit.lookAt(unit.vel.angle());
|
unit.lookAt(unit.vel.angle());
|
||||||
}
|
}
|
||||||
|
|
||||||
Vec2 realtarget = vec.set(target);
|
Vec2 realtarget = vec.set(target).add(leader.vel.x, leader.vel.y);
|
||||||
|
|
||||||
float margin = 4f;
|
float speed = unit.realSpeed() * unit.floorSpeedMultiplier();
|
||||||
|
unit.approach(Mathf.arrive(unit.x, unit.y, realtarget.x, realtarget.y, unit.vel, 0f, 0.01f, speed, 1f));
|
||||||
float speed = unit.realSpeed();
|
|
||||||
|
|
||||||
if(unit.dst(realtarget) <= margin){
|
|
||||||
//unit.vel.approachDelta(Vec2.ZERO, speed * type.accel / 2f);
|
|
||||||
}else{
|
|
||||||
unit.moveAt(realtarget.sub(unit).limit(speed));
|
|
||||||
}
|
|
||||||
|
|
||||||
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)){
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package mindustry.ai.types;
|
package mindustry.ai.types;
|
||||||
|
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
|
import arc.math.geom.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.ai.*;
|
import mindustry.ai.*;
|
||||||
@@ -67,7 +68,7 @@ public class LogicAI extends AIController{
|
|||||||
moveTo(Tmp.v1.set(moveX, moveY), 1f, 30f);
|
moveTo(Tmp.v1.set(moveX, moveY), 1f, 30f);
|
||||||
}
|
}
|
||||||
case approach -> {
|
case approach -> {
|
||||||
moveTo(Tmp.v1.set(moveX, moveY), moveRad - 8f, 8f);
|
moveTo(Tmp.v1.set(moveX, moveY), moveRad - 7f, 7);
|
||||||
}
|
}
|
||||||
case pathfind -> {
|
case pathfind -> {
|
||||||
Building core = unit.closestEnemyCore();
|
Building core = unit.closestEnemyCore();
|
||||||
@@ -103,7 +104,7 @@ public class LogicAI extends AIController{
|
|||||||
//look where moving if there's nothing to aim at
|
//look where moving if there's nothing to aim at
|
||||||
if(!shoot){
|
if(!shoot){
|
||||||
unit.lookAt(unit.prefRotation());
|
unit.lookAt(unit.prefRotation());
|
||||||
}else if(unit.hasWeapons()){ //if there is, look at the object
|
}else if(unit.hasWeapons() && unit.mounts.length > 0){ //if there is, look at the object
|
||||||
unit.lookAt(unit.mounts[0].aimX, unit.mounts[0].aimY);
|
unit.lookAt(unit.mounts[0].aimX, unit.mounts[0].aimY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -112,6 +113,24 @@ public class LogicAI extends AIController{
|
|||||||
return radars.add(radar);
|
return radars.add(radar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void moveTo(Position target, float circleLength, float smooth){
|
||||||
|
if(target == null) return;
|
||||||
|
|
||||||
|
vec.set(target).sub(unit);
|
||||||
|
|
||||||
|
float length = circleLength <= 0.001f ? 1f : Mathf.clamp((unit.dst(target) - circleLength) / smooth, -1f, 1f);
|
||||||
|
|
||||||
|
vec.setLength(unit.realSpeed() * length);
|
||||||
|
if(length < -0.5f){
|
||||||
|
vec.rotate(180f);
|
||||||
|
}else if(length < 0){
|
||||||
|
vec.setZero();
|
||||||
|
}
|
||||||
|
|
||||||
|
unit.approach(vec);
|
||||||
|
}
|
||||||
|
|
||||||
//always retarget
|
//always retarget
|
||||||
@Override
|
@Override
|
||||||
protected boolean retarget(){
|
protected boolean retarget(){
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import arc.*;
|
|||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
|
import mindustry.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
import mindustry.entities.bullet.*;
|
import mindustry.entities.bullet.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
@@ -134,7 +135,7 @@ public class Blocks implements ContentList{
|
|||||||
|
|
||||||
//Registers build blocks
|
//Registers build blocks
|
||||||
//no reference is needed here since they can be looked up by name later
|
//no reference is needed here since they can be looked up by name later
|
||||||
for(int i = 1; i <= ConstructBlock.maxSize; i++){
|
for(int i = 1; i <= Vars.maxBlockSize; i++){
|
||||||
new ConstructBlock(i);
|
new ConstructBlock(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -613,6 +614,7 @@ public class Blocks implements ContentList{
|
|||||||
craftTime = 75f;
|
craftTime = 75f;
|
||||||
size = 3;
|
size = 3;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
|
itemCapacity = 20;
|
||||||
|
|
||||||
consumes.power(4f);
|
consumes.power(4f);
|
||||||
consumes.items(with(Items.copper, 3, Items.lead, 4, Items.titanium, 2, Items.silicon, 3));
|
consumes.items(with(Items.copper, 3, Items.lead, 4, Items.titanium, 2, Items.silicon, 3));
|
||||||
@@ -981,7 +983,7 @@ public class Blocks implements ContentList{
|
|||||||
junction = new Junction("junction"){{
|
junction = new Junction("junction"){{
|
||||||
requirements(Category.distribution, with(Items.copper, 2), true);
|
requirements(Category.distribution, with(Items.copper, 2), true);
|
||||||
speed = 26;
|
speed = 26;
|
||||||
capacity = 12;
|
capacity = 6;
|
||||||
health = 30;
|
health = 30;
|
||||||
buildCostMultiplier = 6f;
|
buildCostMultiplier = 6f;
|
||||||
}};
|
}};
|
||||||
@@ -1514,7 +1516,7 @@ public class Blocks implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
lancer = new PowerTurret("lancer"){{
|
lancer = new PowerTurret("lancer"){{
|
||||||
requirements(Category.turret, with(Items.copper, 25, Items.lead, 50, Items.silicon, 45));
|
requirements(Category.turret, with(Items.copper, 60, Items.lead, 70, Items.silicon, 50));
|
||||||
range = 165f;
|
range = 165f;
|
||||||
chargeTime = 40f;
|
chargeTime = 40f;
|
||||||
chargeMaxDelay = 30f;
|
chargeMaxDelay = 30f;
|
||||||
@@ -1547,7 +1549,7 @@ public class Blocks implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
arc = new PowerTurret("arc"){{
|
arc = new PowerTurret("arc"){{
|
||||||
requirements(Category.turret, with(Items.copper, 35, Items.lead, 50));
|
requirements(Category.turret, with(Items.copper, 50, Items.lead, 50));
|
||||||
shootType = new LightningBulletType(){{
|
shootType = new LightningBulletType(){{
|
||||||
damage = 20;
|
damage = 20;
|
||||||
lightningLength = 25;
|
lightningLength = 25;
|
||||||
@@ -1601,7 +1603,7 @@ public class Blocks implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
salvo = new ItemTurret("salvo"){{
|
salvo = new ItemTurret("salvo"){{
|
||||||
requirements(Category.turret, with(Items.copper, 105, Items.graphite, 95, 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,
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public class Items implements ContentList{
|
|||||||
|
|
||||||
sand = new Item("sand", Color.valueOf("f7cba4")){{
|
sand = new Item("sand", Color.valueOf("f7cba4")){{
|
||||||
alwaysUnlocked = true;
|
alwaysUnlocked = true;
|
||||||
|
lowPriority = true;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
coal = new Item("coal", Color.valueOf("272727")){{
|
coal = new Item("coal", Color.valueOf("272727")){{
|
||||||
|
|||||||
@@ -12,12 +12,13 @@ public class Liquids implements ContentList{
|
|||||||
|
|
||||||
water = new Liquid("water", Color.valueOf("596ab8")){{
|
water = new Liquid("water", Color.valueOf("596ab8")){{
|
||||||
heatCapacity = 0.4f;
|
heatCapacity = 0.4f;
|
||||||
|
alwaysUnlocked = true;
|
||||||
effect = StatusEffects.wet;
|
effect = StatusEffects.wet;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
slag = new Liquid("slag", Color.valueOf("ffa166")){{
|
slag = new Liquid("slag", Color.valueOf("ffa166")){{
|
||||||
temperature = 1f;
|
temperature = 1f;
|
||||||
viscosity = 0.8f;
|
viscosity = 0.7f;
|
||||||
effect = StatusEffects.melting;
|
effect = StatusEffects.melting;
|
||||||
lightColor = Color.valueOf("f0511d").a(0.4f);
|
lightColor = Color.valueOf("f0511d").a(0.4f);
|
||||||
}};
|
}};
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class StatusEffects implements ContentList{
|
|||||||
opposite(wet, freezing);
|
opposite(wet, freezing);
|
||||||
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(this, Math.min(time + newTime, 300f));
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
@@ -93,8 +93,12 @@ public class StatusEffects implements ContentList{
|
|||||||
effect = Fx.melting;
|
effect = Fx.melting;
|
||||||
|
|
||||||
init(() -> {
|
init(() -> {
|
||||||
trans(tarred, ((unit, time, newTime, result) -> result.set(this, Math.min(time + newTime / 2f, 140f))));
|
|
||||||
opposite(wet, freezing);
|
opposite(wet, freezing);
|
||||||
|
trans(tarred, ((unit, time, newTime, result) -> {
|
||||||
|
unit.damagePierce(8f);
|
||||||
|
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));
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -119,7 +123,7 @@ public class StatusEffects implements ContentList{
|
|||||||
effect = Fx.oily;
|
effect = Fx.oily;
|
||||||
|
|
||||||
init(() -> {
|
init(() -> {
|
||||||
trans(melting, ((unit, time, newTime, result) -> result.set(burning, newTime + time)));
|
trans(melting, ((unit, time, newTime, result) -> result.set(melting, newTime + time)));
|
||||||
trans(burning, ((unit, time, newTime, result) -> result.set(burning, newTime + time)));
|
trans(burning, ((unit, time, newTime, result) -> result.set(burning, newTime + time)));
|
||||||
});
|
});
|
||||||
}};
|
}};
|
||||||
|
|||||||
@@ -154,6 +154,7 @@ public class TechTree implements ContentList{
|
|||||||
});
|
});
|
||||||
|
|
||||||
node(kiln, Seq.with(new SectorComplete(craters)), () -> {
|
node(kiln, Seq.with(new SectorComplete(craters)), () -> {
|
||||||
|
node(pulverizer, () -> {
|
||||||
node(incinerator, () -> {
|
node(incinerator, () -> {
|
||||||
node(melter, () -> {
|
node(melter, () -> {
|
||||||
node(surgeSmelter, () -> {
|
node(surgeSmelter, () -> {
|
||||||
@@ -161,12 +162,10 @@ public class TechTree implements ContentList{
|
|||||||
});
|
});
|
||||||
|
|
||||||
node(separator, () -> {
|
node(separator, () -> {
|
||||||
node(pulverizer, () -> {
|
|
||||||
node(disassembler, () -> {
|
node(disassembler, () -> {
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
node(cryofluidMixer, () -> {
|
node(cryofluidMixer, () -> {
|
||||||
|
|
||||||
@@ -174,6 +173,7 @@ public class TechTree implements ContentList{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
node(microProcessor, () -> {
|
node(microProcessor, () -> {
|
||||||
node(switchBlock, () -> {
|
node(switchBlock, () -> {
|
||||||
@@ -462,10 +462,11 @@ public class TechTree implements ContentList{
|
|||||||
new Research(conduit),
|
new Research(conduit),
|
||||||
new Research(wave)
|
new Research(wave)
|
||||||
), () -> {
|
), () -> {
|
||||||
//TODO change positions?
|
|
||||||
node(impact0078, Seq.with(
|
node(impact0078, Seq.with(
|
||||||
new SectorComplete(tarFields),
|
new SectorComplete(tarFields),
|
||||||
new Research(Items.thorium),
|
new Research(Items.thorium),
|
||||||
|
new Research(lancer),
|
||||||
|
new Research(salvo),
|
||||||
new Research(coreFoundation)
|
new Research(coreFoundation)
|
||||||
), () -> {
|
), () -> {
|
||||||
node(desolateRift, Seq.with(
|
node(desolateRift, Seq.with(
|
||||||
@@ -714,8 +715,14 @@ public class TechTree implements ContentList{
|
|||||||
finishedRequirements[i] = new ItemStack(requirements[i].item, Core.settings == null ? 0 : Core.settings.getInt("req-" + content.name + "-" + requirements[i].item.name));
|
finishedRequirements[i] = new ItemStack(requirements[i].item, Core.settings == null ? 0 : Core.settings.getInt("req-" + content.name + "-" + requirements[i].item.name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var used = new ObjectSet<Content>();
|
||||||
|
|
||||||
//add dependencies as objectives.
|
//add dependencies as objectives.
|
||||||
content.getDependencies(d -> objectives.add(new Research(d)));
|
content.getDependencies(d -> {
|
||||||
|
if(used.add(d)){
|
||||||
|
objectives.add(new Research(d));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
map.put(content, this);
|
map.put(content, this);
|
||||||
all.add(this);
|
all.add(this);
|
||||||
|
|||||||
@@ -760,7 +760,7 @@ public class UnitTypes implements ContentList{
|
|||||||
ejectEffect = Fx.casing1;
|
ejectEffect = Fx.casing1;
|
||||||
shootSound = Sounds.artillery;
|
shootSound = Sounds.artillery;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 8f;
|
shadow = 8f;
|
||||||
recoil = 3f;
|
recoil = 3f;
|
||||||
|
|
||||||
bullet = new ArtilleryBulletType(2f, 12){{
|
bullet = new ArtilleryBulletType(2f, 12){{
|
||||||
@@ -827,7 +827,7 @@ public class UnitTypes implements ContentList{
|
|||||||
ejectEffect = Fx.casing1;
|
ejectEffect = Fx.casing1;
|
||||||
shootSound = Sounds.shootBig;
|
shootSound = Sounds.shootBig;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 12f;
|
shadow = 12f;
|
||||||
recoil = 3f;
|
recoil = 3f;
|
||||||
shots = 2;
|
shots = 2;
|
||||||
spacing = 17f;
|
spacing = 17f;
|
||||||
@@ -859,7 +859,7 @@ public class UnitTypes implements ContentList{
|
|||||||
ejectEffect = Fx.casing3;
|
ejectEffect = Fx.casing3;
|
||||||
shootSound = Sounds.artillery;
|
shootSound = Sounds.artillery;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 30f;
|
shadow = 30f;
|
||||||
|
|
||||||
bullet = new ArtilleryBulletType(3f, 50){{
|
bullet = new ArtilleryBulletType(3f, 50){{
|
||||||
hitEffect = Fx.sapExplosion;
|
hitEffect = Fx.sapExplosion;
|
||||||
@@ -918,6 +918,7 @@ public class UnitTypes implements ContentList{
|
|||||||
range = 140f;
|
range = 140f;
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
commandLimit = 4;
|
commandLimit = 4;
|
||||||
|
circleTarget = true;
|
||||||
|
|
||||||
weapons.add(new Weapon(){{
|
weapons.add(new Weapon(){{
|
||||||
y = 0f;
|
y = 0f;
|
||||||
@@ -950,6 +951,7 @@ public class UnitTypes implements ContentList{
|
|||||||
armor = 3f;
|
armor = 3f;
|
||||||
targetFlag = BlockFlag.factory;
|
targetFlag = BlockFlag.factory;
|
||||||
commandLimit = 5;
|
commandLimit = 5;
|
||||||
|
circleTarget = true;
|
||||||
|
|
||||||
weapons.add(new Weapon(){{
|
weapons.add(new Weapon(){{
|
||||||
minShootVelocity = 0.75f;
|
minShootVelocity = 0.75f;
|
||||||
@@ -1059,7 +1061,7 @@ public class UnitTypes implements ContentList{
|
|||||||
bullet = missiles;
|
bullet = missiles;
|
||||||
shootSound = Sounds.missile;
|
shootSound = Sounds.missile;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 6f;
|
shadow = 6f;
|
||||||
}},
|
}},
|
||||||
new Weapon("missiles-mount"){{
|
new Weapon("missiles-mount"){{
|
||||||
y = -8f;
|
y = -8f;
|
||||||
@@ -1070,7 +1072,7 @@ public class UnitTypes implements ContentList{
|
|||||||
bullet = missiles;
|
bullet = missiles;
|
||||||
shootSound = Sounds.missile;
|
shootSound = Sounds.missile;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 6f;
|
shadow = 6f;
|
||||||
}},
|
}},
|
||||||
new Weapon("large-bullet-mount"){{
|
new Weapon("large-bullet-mount"){{
|
||||||
y = 2f;
|
y = 2f;
|
||||||
@@ -1082,7 +1084,7 @@ public class UnitTypes implements ContentList{
|
|||||||
ejectEffect = Fx.casing1;
|
ejectEffect = Fx.casing1;
|
||||||
shootSound = Sounds.shootBig;
|
shootSound = Sounds.shootBig;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 8f;
|
shadow = 8f;
|
||||||
bullet = new BasicBulletType(7f, 50){{
|
bullet = new BasicBulletType(7f, 50){{
|
||||||
width = 12f;
|
width = 12f;
|
||||||
height = 18f;
|
height = 18f;
|
||||||
@@ -1130,7 +1132,7 @@ public class UnitTypes implements ContentList{
|
|||||||
reload = 45f;
|
reload = 45f;
|
||||||
recoil = 4f;
|
recoil = 4f;
|
||||||
shootSound = Sounds.laser;
|
shootSound = Sounds.laser;
|
||||||
occlusion = 20f;
|
shadow = 20f;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
|
|
||||||
bullet = new LaserBulletType(){{
|
bullet = new LaserBulletType(){{
|
||||||
@@ -1150,7 +1152,7 @@ public class UnitTypes implements ContentList{
|
|||||||
rotateSpeed = 2f;
|
rotateSpeed = 2f;
|
||||||
reload = 9f;
|
reload = 9f;
|
||||||
shootSound = Sounds.shoot;
|
shootSound = Sounds.shoot;
|
||||||
occlusion = 7f;
|
shadow = 7f;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
recoil = 0.5f;
|
recoil = 0.5f;
|
||||||
|
|
||||||
@@ -1165,7 +1167,7 @@ public class UnitTypes implements ContentList{
|
|||||||
shake = 1f;
|
shake = 1f;
|
||||||
shootSound = Sounds.shoot;
|
shootSound = Sounds.shoot;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 12f;
|
shadow = 12f;
|
||||||
bullet = fragBullet;
|
bullet = fragBullet;
|
||||||
}});
|
}});
|
||||||
}};
|
}};
|
||||||
@@ -1517,7 +1519,7 @@ public class UnitTypes implements ContentList{
|
|||||||
shootY = 7f;
|
shootY = 7f;
|
||||||
shake = 5f;
|
shake = 5f;
|
||||||
recoil = 4f;
|
recoil = 4f;
|
||||||
occlusion = 12f;
|
shadow = 12f;
|
||||||
|
|
||||||
shots = 1;
|
shots = 1;
|
||||||
inaccuracy = 3f;
|
inaccuracy = 3f;
|
||||||
@@ -1553,7 +1555,7 @@ public class UnitTypes implements ContentList{
|
|||||||
x = 8.5f;
|
x = 8.5f;
|
||||||
y = -9f;
|
y = -9f;
|
||||||
|
|
||||||
occlusion = 6f;
|
shadow = 6f;
|
||||||
|
|
||||||
rotateSpeed = 4f;
|
rotateSpeed = 4f;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
@@ -1609,7 +1611,7 @@ public class UnitTypes implements ContentList{
|
|||||||
rotateSpeed = 4f;
|
rotateSpeed = 4f;
|
||||||
mirror = false;
|
mirror = false;
|
||||||
|
|
||||||
occlusion = 20f;
|
shadow = 20f;
|
||||||
|
|
||||||
shootY = 2f;
|
shootY = 2f;
|
||||||
recoil = 4f;
|
recoil = 4f;
|
||||||
@@ -1624,7 +1626,7 @@ public class UnitTypes implements ContentList{
|
|||||||
xRand = 8f;
|
xRand = 8f;
|
||||||
shotDelay = 1f;
|
shotDelay = 1f;
|
||||||
|
|
||||||
bullet = new MissileBulletType(4.2f, 40){{
|
bullet = new MissileBulletType(4.2f, 42){{
|
||||||
homingPower = 0.12f;
|
homingPower = 0.12f;
|
||||||
width = 8f;
|
width = 8f;
|
||||||
height = 8f;
|
height = 8f;
|
||||||
@@ -1634,7 +1636,7 @@ public class UnitTypes implements ContentList{
|
|||||||
keepVelocity = false;
|
keepVelocity = false;
|
||||||
splashDamageRadius = 35f;
|
splashDamageRadius = 35f;
|
||||||
splashDamage = 45f;
|
splashDamage = 45f;
|
||||||
lifetime = 56f;
|
lifetime = 62f;
|
||||||
trailColor = Pal.bulletYellowBack;
|
trailColor = Pal.bulletYellowBack;
|
||||||
backColor = Pal.bulletYellowBack;
|
backColor = Pal.bulletYellowBack;
|
||||||
frontColor = Pal.bulletYellow;
|
frontColor = Pal.bulletYellow;
|
||||||
@@ -1655,18 +1657,18 @@ public class UnitTypes implements ContentList{
|
|||||||
shootY = 7f;
|
shootY = 7f;
|
||||||
shake = 2f;
|
shake = 2f;
|
||||||
recoil = 3f;
|
recoil = 3f;
|
||||||
occlusion = 12f;
|
shadow = 12f;
|
||||||
ejectEffect = Fx.casing3;
|
ejectEffect = Fx.casing3;
|
||||||
shootSound = Sounds.shootBig;
|
shootSound = Sounds.shootBig;
|
||||||
|
|
||||||
shots = 3;
|
shots = 3;
|
||||||
shotDelay = 4f;
|
shotDelay = 4f;
|
||||||
inaccuracy = 1f;
|
inaccuracy = 1f;
|
||||||
bullet = new BasicBulletType(7f, 55){{
|
bullet = new BasicBulletType(7f, 57){{
|
||||||
width = 13f;
|
width = 13f;
|
||||||
height = 19f;
|
height = 19f;
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
lifetime = 30f;
|
lifetime = 35f;
|
||||||
}};
|
}};
|
||||||
}});
|
}});
|
||||||
}};
|
}};
|
||||||
@@ -1701,7 +1703,7 @@ public class UnitTypes implements ContentList{
|
|||||||
shootY = 23f;
|
shootY = 23f;
|
||||||
shake = 6f;
|
shake = 6f;
|
||||||
recoil = 10.5f;
|
recoil = 10.5f;
|
||||||
occlusion = 50f;
|
shadow = 50f;
|
||||||
shootSound = Sounds.railgun;
|
shootSound = Sounds.railgun;
|
||||||
|
|
||||||
shots = 1;
|
shots = 1;
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public class Weathers implements ContentList{
|
|||||||
attrs.set(Attribute.spores, 1f);
|
attrs.set(Attribute.spores, 1f);
|
||||||
attrs.set(Attribute.light, -0.15f);
|
attrs.set(Attribute.light, -0.15f);
|
||||||
status = StatusEffects.sporeSlowed;
|
status = StatusEffects.sporeSlowed;
|
||||||
opacityMultiplier = 0.75f;
|
opacityMultiplier = 0.5f;
|
||||||
force = 0.1f;
|
force = 0.1f;
|
||||||
sound = Sounds.wind;
|
sound = Sounds.wind;
|
||||||
soundVol = 0.7f;
|
soundVol = 0.7f;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package mindustry.core;
|
package mindustry.core;
|
||||||
|
|
||||||
|
import arc.*;
|
||||||
import arc.files.*;
|
import arc.files.*;
|
||||||
import arc.func.*;
|
import arc.func.*;
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
@@ -7,8 +8,10 @@ import arc.struct.*;
|
|||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
|
import mindustry.game.EventType.*;
|
||||||
import mindustry.entities.bullet.*;
|
import mindustry.entities.bullet.*;
|
||||||
import mindustry.mod.Mods.*;
|
import mindustry.mod.Mods.*;
|
||||||
|
import mindustry.net.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
|
|
||||||
@@ -96,6 +99,8 @@ public class ContentLoader{
|
|||||||
/** Calls Content#init() on everything. Use only after all modules have been created.*/
|
/** Calls Content#init() on everything. Use only after all modules have been created.*/
|
||||||
public void init(){
|
public void init(){
|
||||||
initialize(Content::init);
|
initialize(Content::init);
|
||||||
|
if(constants != null) constants.init();
|
||||||
|
Events.fire(new ContentInitEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Calls Content#load() on everything. Use only after all modules have been created on the client.*/
|
/** Calls Content#load() on everything. Use only after all modules have been created on the client.*/
|
||||||
|
|||||||
@@ -10,21 +10,22 @@ import arc.scene.style.*;
|
|||||||
import arc.scene.ui.*;
|
import arc.scene.ui.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import mindustry.*;
|
||||||
import mindustry.audio.*;
|
import mindustry.audio.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.content.TechTree.*;
|
import mindustry.content.TechTree.*;
|
||||||
import mindustry.core.GameState.*;
|
import mindustry.core.GameState.*;
|
||||||
import mindustry.entities.*;
|
import mindustry.entities.*;
|
||||||
import mindustry.game.EventType.*;
|
import mindustry.game.EventType.*;
|
||||||
import mindustry.game.*;
|
|
||||||
import mindustry.game.Objectives.*;
|
import mindustry.game.Objectives.*;
|
||||||
|
import mindustry.game.*;
|
||||||
import mindustry.game.Saves.*;
|
import mindustry.game.Saves.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.input.*;
|
import mindustry.input.*;
|
||||||
import mindustry.io.*;
|
import mindustry.io.*;
|
||||||
import mindustry.io.SaveIO.*;
|
import mindustry.io.SaveIO.*;
|
||||||
import mindustry.maps.*;
|
|
||||||
import mindustry.maps.Map;
|
import mindustry.maps.Map;
|
||||||
|
import mindustry.maps.*;
|
||||||
import mindustry.net.*;
|
import mindustry.net.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
import mindustry.ui.*;
|
import mindustry.ui.*;
|
||||||
@@ -340,7 +341,7 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
state.rules.waves = true;
|
state.rules.waves = true;
|
||||||
|
|
||||||
//reset win wave??
|
//reset win wave??
|
||||||
state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : state.rules.winWave > state.wave ? state.rules.winWave : 40;
|
state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null && sector.preset.captureWave > 0 ? sector.preset.captureWave : state.rules.winWave > state.wave ? state.rules.winWave : 30;
|
||||||
|
|
||||||
//if there's still an enemy base left, fix it
|
//if there's still an enemy base left, fix it
|
||||||
if(state.rules.attackMode){
|
if(state.rules.attackMode){
|
||||||
@@ -423,7 +424,7 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
net.dispose();
|
net.dispose();
|
||||||
Musics.dispose();
|
Musics.dispose();
|
||||||
Sounds.dispose();
|
Sounds.dispose();
|
||||||
ui.editor.dispose();
|
if(ui != null && ui.editor != null) ui.editor.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -506,6 +507,13 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
settings.put("fullscreen", !full);
|
settings.put("fullscreen", !full);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(Float.isNaN(Vars.player.x) || Float.isNaN(Vars.player.y)){
|
||||||
|
player.set(0, 0);
|
||||||
|
if(!player.dead()) player.unit().kill();
|
||||||
|
}
|
||||||
|
if(Float.isNaN(camera.position.x)) camera.position.x = world.unitWidth()/2f;
|
||||||
|
if(Float.isNaN(camera.position.y)) camera.position.y = world.unitHeight()/2f;
|
||||||
|
|
||||||
if(state.isGame()){
|
if(state.isGame()){
|
||||||
input.update();
|
input.update();
|
||||||
|
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ public class Logic implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
//sync research
|
//sync research
|
||||||
Events.on(ResearchEvent.class, e -> {
|
Events.on(UnlockEvent.class, e -> {
|
||||||
if(net.server()){
|
if(net.server()){
|
||||||
Call.researched(e.content);
|
Call.researched(e.content);
|
||||||
}
|
}
|
||||||
@@ -153,6 +153,18 @@ public class Logic implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//send out items to each client
|
||||||
|
Events.on(TurnEvent.class, e -> {
|
||||||
|
if(net.server() && state.isCampaign()){
|
||||||
|
int[] out = new int[content.items().size];
|
||||||
|
state.getSector().info.production.each((item, stat) -> {
|
||||||
|
out[item.id] = Math.max(0, (int)(stat.mean * turnDuration / 60));
|
||||||
|
});
|
||||||
|
|
||||||
|
Call.sectorProduced(out);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Adds starting items, resets wave time, and sets state to playing. */
|
/** Adds starting items, resets wave time, and sets state to playing. */
|
||||||
@@ -243,8 +255,10 @@ public class Logic implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateWeather(){
|
private void updateWeather(){
|
||||||
|
state.rules.weather.removeAll(w -> w.weather == null);
|
||||||
|
|
||||||
for(WeatherEntry entry : state.rules.weather){
|
for(WeatherEntry entry : state.rules.weather){
|
||||||
|
if(entry.weather == null) continue;
|
||||||
//update cooldown
|
//update cooldown
|
||||||
entry.cooldown -= Time.delta;
|
entry.cooldown -= Time.delta;
|
||||||
|
|
||||||
@@ -295,8 +309,46 @@ public class Logic implements ApplicationListener{
|
|||||||
public static void researched(Content content){
|
public static void researched(Content content){
|
||||||
if(!(content instanceof UnlockableContent u)) return;
|
if(!(content instanceof UnlockableContent u)) return;
|
||||||
|
|
||||||
|
var node = u.node();
|
||||||
|
|
||||||
|
//unlock all direct dependencies on client, permanently
|
||||||
|
while(node != null){
|
||||||
|
node.content.unlock();
|
||||||
|
node = node.parent;
|
||||||
|
}
|
||||||
|
|
||||||
state.rules.researched.add(u.name);
|
state.rules.researched.add(u.name);
|
||||||
Events.fire(new UnlockEvent(u));
|
}
|
||||||
|
|
||||||
|
//called when the remote server runs a turn and produces something
|
||||||
|
@Remote
|
||||||
|
public static void sectorProduced(int[] amounts){
|
||||||
|
if(!state.isCampaign()) return;
|
||||||
|
Planet planet = state.rules.sector.planet;
|
||||||
|
boolean any = false;
|
||||||
|
|
||||||
|
for(Item item : content.items()){
|
||||||
|
int am = amounts[item.id];
|
||||||
|
if(am > 0){
|
||||||
|
int sumMissing = planet.sectors.sum(s -> s.hasBase() ? s.info.storageCapacity - s.info.items.get(item) : 0);
|
||||||
|
if(sumMissing == 0) continue;
|
||||||
|
//how much % to add
|
||||||
|
double percent = Math.min((double)am / sumMissing, 1);
|
||||||
|
for(Sector sec : planet.sectors){
|
||||||
|
if(sec.hasBase()){
|
||||||
|
int added = (int)Math.ceil(((sec.info.storageCapacity - sec.info.items.get(item)) * percent));
|
||||||
|
sec.info.items.add(item, added);
|
||||||
|
any = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(any){
|
||||||
|
for(Sector sec : planet.sectors){
|
||||||
|
sec.saveInfo();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
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();
|
||||||
/** If a player goes away of their server-side coordinates by this distance, they get teleported back. */
|
/** If a player goes away of their server-side coordinates by this distance, they get teleported back. */
|
||||||
private static final float correctDist = tilesize * 8f;
|
private static final float correctDist = tilesize * 12f;
|
||||||
|
|
||||||
public final Administration admins = new Administration();
|
public final Administration admins = new Administration();
|
||||||
public final CommandHandler clientCommands = new CommandHandler("/");
|
public final CommandHandler clientCommands = new CommandHandler("/");
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ public interface Platform{
|
|||||||
|
|
||||||
/** Dynamically loads a jar file. */
|
/** Dynamically loads a jar file. */
|
||||||
default Class<?> loadJar(Fi jar, String mainClass) throws Exception{
|
default Class<?> loadJar(Fi jar, String mainClass) throws Exception{
|
||||||
URLClassLoader classLoader = new URLClassLoader(new URL[]{jar.file().toURI().toURL()}, ClassLoader.getSystemClassLoader());
|
URLClassLoader classLoader = new URLClassLoader(new URL[]{jar.file().toURI().toURL()}, getClass().getClassLoader());
|
||||||
return classLoader.loadClass(mainClass);
|
return Class.forName(mainClass, true, classLoader);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Steam: Update lobby visibility.*/
|
/** Steam: Update lobby visibility.*/
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
|
|
||||||
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.within(camerascale, dest, 0.001f)) camerascale = dest;
|
if(Mathf.equal(camerascale, dest, 0.001f)) camerascale = dest;
|
||||||
laserOpacity = Core.settings.getInt("lasersopacity") / 100f;
|
laserOpacity = Core.settings.getInt("lasersopacity") / 100f;
|
||||||
|
|
||||||
if(landTime > 0){
|
if(landTime > 0){
|
||||||
@@ -111,7 +111,10 @@ public class Renderer implements ApplicationListener{
|
|||||||
minimap.dispose();
|
minimap.dispose();
|
||||||
effectBuffer.dispose();
|
effectBuffer.dispose();
|
||||||
blocks.dispose();
|
blocks.dispose();
|
||||||
|
if(planets != null){
|
||||||
planets.dispose();
|
planets.dispose();
|
||||||
|
planets = null;
|
||||||
|
}
|
||||||
if(bloom != null){
|
if(bloom != null){
|
||||||
bloom.dispose();
|
bloom.dispose();
|
||||||
bloom = null;
|
bloom = null;
|
||||||
|
|||||||
@@ -92,6 +92,12 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
Core.scene = new Scene();
|
Core.scene = new Scene();
|
||||||
Core.input.addProcessor(Core.scene);
|
Core.input.addProcessor(Core.scene);
|
||||||
|
|
||||||
|
int[] insets = Core.graphics.getSafeInsets();
|
||||||
|
Core.scene.marginLeft = insets[0];
|
||||||
|
Core.scene.marginRight = insets[1];
|
||||||
|
Core.scene.marginTop = insets[2];
|
||||||
|
Core.scene.marginBottom = insets[3];
|
||||||
|
|
||||||
Tex.load();
|
Tex.load();
|
||||||
Icon.load();
|
Icon.load();
|
||||||
Styles.load();
|
Styles.load();
|
||||||
|
|||||||
@@ -186,14 +186,14 @@ public class World{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Call to signify the beginning of map loading.
|
* Call to signify the beginning of map loading.
|
||||||
* BuildinghangeEvents will not be fired until endMapLoad().
|
* TileEvents will not be fired until endMapLoad().
|
||||||
*/
|
*/
|
||||||
public void beginMapLoad(){
|
public void beginMapLoad(){
|
||||||
generating = true;
|
generating = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call to signify the end of map loading. Updates tile occlusions and sets up physics for the world.
|
* Call to signify the end of map loading. Updates tile proximities and sets up physics for the world.
|
||||||
* A WorldLoadEvent will be fire.
|
* A WorldLoadEvent will be fire.
|
||||||
*/
|
*/
|
||||||
public void endMapLoad(){
|
public void endMapLoad(){
|
||||||
@@ -615,6 +615,7 @@ public class World{
|
|||||||
GenerateInput input = new GenerateInput();
|
GenerateInput input = new GenerateInput();
|
||||||
|
|
||||||
for(GenerateFilter filter : filters){
|
for(GenerateFilter filter : filters){
|
||||||
|
filter.randomize();
|
||||||
input.begin(filter, width(), height(), (x, y) -> tiles.getn(x, y));
|
input.begin(filter, width(), height(), (x, y) -> tiles.getn(x, y));
|
||||||
filter.apply(tiles, input);
|
filter.apply(tiles, input);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import arc.graphics.g2d.*;
|
|||||||
import arc.scene.ui.layout.*;
|
import arc.scene.ui.layout.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
|
import mindustry.content.*;
|
||||||
|
import mindustry.content.TechTree.*;
|
||||||
import mindustry.game.EventType.*;
|
import mindustry.game.EventType.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
@@ -42,6 +44,11 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
this.unlocked = Core.settings != null && Core.settings.getBool(this.name + "-unlocked", false);
|
this.unlocked = Core.settings != null && Core.settings.getBool(this.name + "-unlocked", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the tech node for this content. may be null. */
|
||||||
|
public @Nullable TechNode node(){
|
||||||
|
return TechTree.get(this);
|
||||||
|
}
|
||||||
|
|
||||||
public String displayDescription(){
|
public String displayDescription(){
|
||||||
return minfo.mod == null ? description : description + "\n" + Core.bundle.format("mod.display", minfo.mod.meta.displayName());
|
return minfo.mod == null ? description : description + "\n" + Core.bundle.format("mod.display", minfo.mod.meta.displayName());
|
||||||
}
|
}
|
||||||
@@ -110,7 +117,7 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
|
|
||||||
/** Makes this piece of content unlocked; if it already unlocked, nothing happens. */
|
/** Makes this piece of content unlocked; if it already unlocked, nothing happens. */
|
||||||
public void unlock(){
|
public void unlock(){
|
||||||
if(!net.client() && !unlocked()){
|
if(!unlocked && !alwaysUnlocked){
|
||||||
unlocked = true;
|
unlocked = true;
|
||||||
Core.settings.put(name + "-unlocked", true);
|
Core.settings.put(name + "-unlocked", true);
|
||||||
|
|
||||||
@@ -128,7 +135,7 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean unlocked(){
|
public boolean unlocked(){
|
||||||
if(net != null && net.client()) return alwaysUnlocked || state.rules.researched.contains(name);
|
if(net != null && net.client()) return unlocked || alwaysUnlocked || state.rules.researched.contains(name);
|
||||||
return unlocked || alwaysUnlocked;
|
return unlocked || alwaysUnlocked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class Damage{
|
|||||||
private static Tile furthest;
|
private static Tile furthest;
|
||||||
private static Rect rect = new Rect();
|
private static Rect rect = new Rect();
|
||||||
private static Rect hitrect = new Rect();
|
private static Rect hitrect = new Rect();
|
||||||
private static Vec2 tr = 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 GridBits bits = new GridBits(30, 30);
|
||||||
private static IntQueue propagation = new IntQueue();
|
private static IntQueue propagation = new IntQueue();
|
||||||
@@ -120,6 +120,7 @@ public class Damage{
|
|||||||
|
|
||||||
collidedBlocks.clear();
|
collidedBlocks.clear();
|
||||||
tr.trns(angle, length);
|
tr.trns(angle, length);
|
||||||
|
|
||||||
Intc2 collider = (cx, cy) -> {
|
Intc2 collider = (cx, cy) -> {
|
||||||
Building tile = world.build(cx, cy);
|
Building tile = world.build(cx, cy);
|
||||||
boolean collide = tile != null && collidedBlocks.add(tile.pos());
|
boolean collide = tile != null && collidedBlocks.add(tile.pos());
|
||||||
@@ -131,17 +132,21 @@ public class Damage{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//try to heal the tile
|
//try to heal the tile
|
||||||
if(collide && hitter.type.collides(hitter, tile)){
|
if(collide && hitter.type.testCollision(hitter, tile)){
|
||||||
hitter.type.hitTile(hitter, tile, tile.health, false);
|
hitter.type.hitTile(hitter, tile, tile.health, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if(hitter.type.collidesGround){
|
if(hitter.type.collidesGround){
|
||||||
world.raycastEachWorld(x, y, x + tr.x, y + tr.y, (cx, cy) -> {
|
seg1.set(x, y);
|
||||||
|
seg2.set(seg1).add(tr);
|
||||||
|
world.raycastEachWorld(x, y, seg2.x, seg2.y, (cx, cy) -> {
|
||||||
collider.get(cx, cy);
|
collider.get(cx, cy);
|
||||||
if(large){
|
|
||||||
for(Point2 p : Geometry.d4){
|
for(Point2 p : Geometry.d4){
|
||||||
|
Tile other = world.tile(p.x + cx, p.y + cy);
|
||||||
|
if(other != null && (large || Intersector.intersectSegmentRectangle(seg1, seg2, other.getBounds(Tmp.r1)))){
|
||||||
collider.get(cx + p.x, cy + p.y);
|
collider.get(cx + p.x, cy + p.y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ public class Predict{
|
|||||||
ddy += h.deltaY();
|
ddy += h.deltaY();
|
||||||
}
|
}
|
||||||
if(src instanceof Hitboxc h){
|
if(src instanceof Hitboxc h){
|
||||||
ddx -= h.deltaX()/(Time.delta);
|
ddx -= h.deltaX();
|
||||||
ddy -= h.deltaY()/(Time.delta);
|
ddy -= h.deltaY();
|
||||||
}
|
}
|
||||||
return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), ddx, ddy, v);
|
return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), ddx, ddy, v);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ public class Puddles{
|
|||||||
|
|
||||||
public static final float maxLiquid = 70f;
|
public static final float maxLiquid = 70f;
|
||||||
|
|
||||||
/** Deposists a Puddle between tile and source. */
|
/** Deposits a Puddle between tile and source. */
|
||||||
public static void deposit(Tile tile, Tile source, Liquid liquid, float amount){
|
public static void deposit(Tile tile, Tile source, Liquid liquid, float amount){
|
||||||
deposit(tile, source, liquid, amount, 0);
|
deposit(tile, source, liquid, amount, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Deposists a Puddle at a tile. */
|
/** Deposits a Puddle at a tile. */
|
||||||
public static void deposit(Tile tile, Liquid liquid, float amount){
|
public static void deposit(Tile tile, Liquid liquid, float amount){
|
||||||
deposit(tile, tile, liquid, amount, 0);
|
deposit(tile, tile, liquid, amount, 0);
|
||||||
}
|
}
|
||||||
@@ -38,9 +38,9 @@ public class Puddles{
|
|||||||
|
|
||||||
Puddle p = map.get(tile.pos());
|
Puddle p = map.get(tile.pos());
|
||||||
|
|
||||||
if(generation == 0 && p != null && p.lastRipple() <= Time.time - 40f){
|
if(generation == 0 && p != null && p.lastRipple <= Time.time - 40f){
|
||||||
Fx.ripple.at((tile.worldx() + source.worldx()) / 2f, (tile.worldy() + source.worldy()) / 2f, 1f, tile.floor().liquidDrop.color);
|
Fx.ripple.at((tile.worldx() + source.worldx()) / 2f, (tile.worldy() + source.worldy()) / 2f, 1f, tile.floor().liquidDrop.color);
|
||||||
p.lastRipple(Time.time);
|
p.lastRipple = Time.time;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -62,9 +62,9 @@ public class Puddles{
|
|||||||
}else if(p.liquid() == liquid){
|
}else if(p.liquid() == liquid){
|
||||||
p.accepting(Math.max(amount, p.accepting()));
|
p.accepting(Math.max(amount, p.accepting()));
|
||||||
|
|
||||||
if(generation == 0 && p.lastRipple() <= Time.time - 40f && p.amount() >= maxLiquid / 2f){
|
if(generation == 0 && p.lastRipple <= Time.time - 40f && p.amount() >= maxLiquid / 2f){
|
||||||
Fx.ripple.at((tile.worldx() + source.worldx()) / 2f, (tile.worldy() + source.worldy()) / 2f, 1f, p.liquid().color);
|
Fx.ripple.at((tile.worldx() + source.worldx()) / 2f, (tile.worldy() + source.worldy()) / 2f, 1f, p.liquid().color);
|
||||||
p.lastRipple(Time.time);
|
p.lastRipple = Time.time;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
p.amount(p.amount() + reactPuddle(p.liquid(), liquid, amount, p.tile(), (p.x() + source.worldx())/2f, (p.y() + source.worldy())/2f));
|
p.amount(p.amount() + reactPuddle(p.liquid(), liquid, amount, p.tile(), (p.x() + source.worldx())/2f, (p.y() + source.worldy())/2f));
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ public abstract class BulletType extends Content{
|
|||||||
return Math.max(speed * lifetime * (1f - drag), maxRange);
|
return Math.max(speed * lifetime * (1f - drag), maxRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean collides(Bullet bullet, Building tile){
|
public boolean testCollision(Bullet bullet, Building tile){
|
||||||
return healPercent <= 0.001f || tile.team != bullet.team || tile.healthf() < 1f;
|
return healPercent <= 0.001f || tile.team != bullet.team || tile.healthf() < 1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ public class ContinuousLaserBulletType extends BulletType{
|
|||||||
@Override
|
@Override
|
||||||
public float estimateDPS(){
|
public float estimateDPS(){
|
||||||
//assume firing duration is about 100 by default, may not be accurate there's no way of knowing in this method
|
//assume firing duration is about 100 by default, may not be accurate there's no way of knowing in this method
|
||||||
return damage * 100f / 5f;
|
//assume it pierces 3 blocks/units
|
||||||
|
return damage * 100f / 5f * 3f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import mindustry.gen.*;
|
|||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
|
|
||||||
public class LaserBoltBulletType extends BasicBulletType{
|
public class LaserBoltBulletType extends BasicBulletType{
|
||||||
protected float height = 7f, width = 2f;
|
public float width = 2f, height = 7f;
|
||||||
|
|
||||||
public LaserBoltBulletType(float speed, float damage){
|
public LaserBoltBulletType(float speed, float damage){
|
||||||
super(speed, damage);
|
super(speed, damage);
|
||||||
|
|||||||
@@ -40,9 +40,10 @@ public class LaserBulletType extends BulletType{
|
|||||||
this(1f);
|
this(1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//assume it pierces at least 3 blocks
|
||||||
@Override
|
@Override
|
||||||
public float estimateDPS(){
|
public float estimateDPS(){
|
||||||
return super.estimateDPS() * 2f;
|
return super.estimateDPS() * 3f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{
|
|||||||
|
|
||||||
if(!(tile.block() instanceof ConstructBlock)){
|
if(!(tile.block() instanceof ConstructBlock)){
|
||||||
if(!current.initialized && !current.breaking && Build.validPlace(current.block, team, current.x, current.y, current.rotation)){
|
if(!current.initialized && !current.breaking && Build.validPlace(current.block, team, current.x, current.y, current.rotation)){
|
||||||
boolean hasAll = infinite || !Structs.contains(current.block.requirements, i -> core != null && !core.items.has(i.item));
|
boolean hasAll = infinite || current.isRotation(team) || !Structs.contains(current.block.requirements, i -> core != null && !core.items.has(i.item));
|
||||||
|
|
||||||
if(hasAll){
|
if(hasAll){
|
||||||
Call.beginPlace(self(), current.block, team, current.x, current.y, current.rotation);
|
Call.beginPlace(self(), current.block, team, current.x, current.y, current.rotation);
|
||||||
@@ -91,7 +91,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{
|
|||||||
plans.removeFirst();
|
plans.removeFirst();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}else if(tile.team() != team){
|
}else if(tile.team() != team && tile.team() != Team.derelict){
|
||||||
plans.removeFirst();
|
plans.removeFirst();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -102,13 +102,11 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//if there is no core to build with or no build entity, stop building!
|
//if there is no core to build with or no build entity, stop building!
|
||||||
if((core == null && !infinite) || !(tile.build instanceof ConstructBuild)){
|
if((core == null && !infinite) || !(tile.build instanceof ConstructBuild entity)){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//otherwise, update it.
|
//otherwise, update it.
|
||||||
ConstructBuild entity = tile.bc();
|
|
||||||
|
|
||||||
if(current.breaking){
|
if(current.breaking){
|
||||||
entity.deconstruct(self(), core, 1f / entity.buildCost * Time.delta * type.buildSpeed * state.rules.buildSpeedMultiplier);
|
entity.deconstruct(self(), core, 1f / entity.buildCost * Time.delta * type.buildSpeed * state.rules.buildSpeedMultiplier);
|
||||||
}else{
|
}else{
|
||||||
@@ -140,7 +138,8 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{
|
|||||||
/** @return whether this request should be skipped, in favor of the next one. */
|
/** @return whether this request should be skipped, in favor of the next one. */
|
||||||
boolean shouldSkip(BuildPlan request, @Nullable Building core){
|
boolean shouldSkip(BuildPlan request, @Nullable Building core){
|
||||||
//requests that you have at least *started* are considered
|
//requests that you have at least *started* are considered
|
||||||
if(state.rules.infiniteResources || team.rules().infiniteResources || request.breaking || core == null) return false;
|
if(state.rules.infiniteResources || team.rules().infiniteResources || request.breaking || core == null || request.isRotation(team)) return false;
|
||||||
|
|
||||||
return (request.stuck && !core.items.has(request.block.requirements)) || (Structs.contains(request.block.requirements, i -> !core.items.has(i.item) && Mathf.round(i.amount * state.rules.buildCostMultiplier) > 0) && !request.initialized);
|
return (request.stuck && !core.items.has(request.block.requirements)) || (Structs.contains(request.block.requirements, i -> !core.items.has(i.item) && Mathf.round(i.amount * state.rules.buildCostMultiplier) > 0) && !request.initialized);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,8 +181,8 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{
|
|||||||
plans.remove(replace);
|
plans.remove(replace);
|
||||||
}
|
}
|
||||||
Tile tile = world.tile(place.x, place.y);
|
Tile tile = world.tile(place.x, place.y);
|
||||||
if(tile != null && tile.build instanceof ConstructBuild){
|
if(tile != null && tile.build instanceof ConstructBuild cons){
|
||||||
place.progress = tile.<ConstructBuild>bc().progress;
|
place.progress = cons.progress;
|
||||||
}
|
}
|
||||||
if(tail){
|
if(tail){
|
||||||
plans.addLast(place);
|
plans.addLast(place);
|
||||||
|
|||||||
@@ -197,11 +197,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
//region utility methods
|
//region utility methods
|
||||||
|
|
||||||
public void addPlan(boolean checkPrevious){
|
public void addPlan(boolean checkPrevious){
|
||||||
if(!block.rebuildable) return;
|
if(!block.rebuildable || (team == state.rules.defaultTeam && state.isCampaign() && !block.isVisible())) return;
|
||||||
|
|
||||||
if(self() instanceof ConstructBuild entity){
|
if(self() instanceof ConstructBuild entity){
|
||||||
//update block to reflect the fact that something was being constructed
|
//update block to reflect the fact that something was being constructed
|
||||||
if(entity.cblock != null && entity.cblock.synthetic()){
|
if(entity.cblock != null && entity.cblock.synthetic() && entity.wasConstructing){
|
||||||
block = entity.cblock;
|
block = entity.cblock;
|
||||||
}else{
|
}else{
|
||||||
//otherwise this was a deconstruction that was interrupted, don't want to rebuild that
|
//otherwise this was a deconstruction that was interrupted, don't want to rebuild that
|
||||||
@@ -1099,8 +1099,13 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
|
|
||||||
public void displayBars(Table table){
|
public void displayBars(Table table){
|
||||||
for(Func<Building, Bar> bar : block.bars.list()){
|
for(Func<Building, Bar> bar : block.bars.list()){
|
||||||
|
//TODO fix conclusively
|
||||||
|
try{
|
||||||
table.add(bar.get(self())).growX();
|
table.add(bar.get(self())).growX();
|
||||||
table.row();
|
table.row();
|
||||||
|
}catch(ClassCastException e){
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw
|
|||||||
Building tile = world.build(x, y);
|
Building tile = world.build(x, y);
|
||||||
if(tile == null || !isAdded()) return false;
|
if(tile == null || !isAdded()) return false;
|
||||||
|
|
||||||
if(tile.collide(self()) && type.collides(self(), tile) && !tile.dead() && (type.collidesTeam || tile.team != team) && !(type.pierceBuilding && collided.contains(tile.id))){
|
if(tile.collide(self()) && type.testCollision(self(), tile) && !tile.dead() && (type.collidesTeam || tile.team != team) && !(type.pierceBuilding && collided.contains(tile.id))){
|
||||||
boolean remove = false;
|
boolean remove = false;
|
||||||
|
|
||||||
float health = tile.health;
|
float health = tile.health;
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ abstract class FlyingComp implements Posc, Velc, Healthc, Hitboxc{
|
|||||||
if(isFlying() != wasFlying){
|
if(isFlying() != wasFlying){
|
||||||
if(wasFlying){
|
if(wasFlying){
|
||||||
if(tileOn() != null){
|
if(tileOn() != null){
|
||||||
Fx.unitLand.at(x, y, floorOn().isLiquid ? 1f : 0.5f, floorOn().mapColor);
|
Fx.unitLand.at(x, y, floorOn().isLiquid ? 1f : 0.5f, tileOn().floor().mapColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -83,4 +83,12 @@ abstract class MechComp implements Posc, Flyingc, Hitboxc, Unitc, Mechc, Elevati
|
|||||||
walked = true;
|
walked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void approach(Vec2 vector){
|
||||||
|
if(!vector.isZero(0.09f)){
|
||||||
|
//mark walking state when moving in a controlled manner
|
||||||
|
walked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,6 +117,8 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
|
|||||||
u.rotation(rotation);
|
u.rotation(rotation);
|
||||||
//reset the ID to a new value to make sure it's synced
|
//reset the ID to a new value to make sure it's synced
|
||||||
u.id = EntityGroup.nextId();
|
u.id = EntityGroup.nextId();
|
||||||
|
//decrement count to prevent double increment
|
||||||
|
if(!u.isAdded()) u.team.data().updateCount(u.type, -1);
|
||||||
u.add();
|
u.add();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -29,4 +29,15 @@ abstract class PhysicsComp implements Velc, Hitboxc, Flyingc{
|
|||||||
void impulse(Vec2 v){
|
void impulse(Vec2 v){
|
||||||
impulse(v.x, v.y);
|
impulse(v.x, v.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void impulseNet(Vec2 v){
|
||||||
|
impulse(v.x, v.y);
|
||||||
|
|
||||||
|
//manually move units to simulate velocity for remote players
|
||||||
|
if(isRemote()){
|
||||||
|
float mass = mass();
|
||||||
|
move(v.x / mass, v.y / mass);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,8 +22,7 @@ import static mindustry.entities.Puddles.*;
|
|||||||
abstract class PuddleComp implements Posc, Puddlec, Drawc{
|
abstract class PuddleComp implements Posc, Puddlec, Drawc{
|
||||||
private static final int maxGeneration = 2;
|
private static final int maxGeneration = 2;
|
||||||
private static final Color tmp = new Color();
|
private static final Color tmp = new Color();
|
||||||
private static final Rect rect = new Rect();
|
private static final Rect rect = new Rect(), rect2 = new Rect();
|
||||||
private static final Rect rect2 = new Rect();
|
|
||||||
private static int seeds;
|
private static int seeds;
|
||||||
|
|
||||||
@Import float x, y;
|
@Import float x, y;
|
||||||
@@ -44,7 +43,6 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{
|
|||||||
float addSpeed = accepting > 0 ? 3f : 0f;
|
float addSpeed = accepting > 0 ? 3f : 0f;
|
||||||
|
|
||||||
amount -= Time.delta * (1f - liquid.viscosity) / (5f + addSpeed);
|
amount -= Time.delta * (1f - liquid.viscosity) / (5f + addSpeed);
|
||||||
|
|
||||||
amount += accepting;
|
amount += accepting;
|
||||||
accepting = 0f;
|
accepting = 0f;
|
||||||
|
|
||||||
@@ -54,7 +52,7 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{
|
|||||||
Tile other = world.tile(tile.x + point.x, tile.y + point.y);
|
Tile other = world.tile(tile.x + point.x, tile.y + point.y);
|
||||||
if(other != null && other.block() == Blocks.air){
|
if(other != null && other.block() == Blocks.air){
|
||||||
Puddles.deposit(other, tile, liquid, deposited, generation + 1);
|
Puddles.deposit(other, tile, liquid, deposited, generation + 1);
|
||||||
amount -= deposited / 2f; //tweak to speed up/slow down Puddlec propagation
|
amount -= deposited / 2f; //tweak to speed up/slow down Puddle propagation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
@Import Team team;
|
@Import Team team;
|
||||||
@Import int id;
|
@Import int id;
|
||||||
@Import @Nullable Tile mineTile;
|
@Import @Nullable Tile mineTile;
|
||||||
|
@Import Vec2 vel;
|
||||||
|
|
||||||
private UnitController controller;
|
private UnitController controller;
|
||||||
UnitType type;
|
UnitType type;
|
||||||
@@ -51,6 +52,10 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
moveAt(vector, type.accel);
|
moveAt(vector, type.accel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void approach(Vec2 vector){
|
||||||
|
vel.approachDelta(vector, type.accel * realSpeed() * floorSpeedMultiplier());
|
||||||
|
}
|
||||||
|
|
||||||
public void aimLook(Position pos){
|
public void aimLook(Position pos){
|
||||||
aim(pos);
|
aim(pos);
|
||||||
lookAt(pos);
|
lookAt(pos);
|
||||||
@@ -397,6 +402,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
|
|
||||||
/** Actually destroys the unit, removing it and creating explosions. **/
|
/** Actually destroys the unit, removing it and creating explosions. **/
|
||||||
public void destroy(){
|
public void destroy(){
|
||||||
|
if(!isAdded()) return;
|
||||||
|
|
||||||
float explosiveness = 2f + item().explosiveness * stack().amount * 1.53f;
|
float explosiveness = 2f + item().explosiveness * stack().amount * 1.53f;
|
||||||
float flammability = item().flammability * stack().amount / 1.9f;
|
float flammability = item().flammability * stack().amount / 1.9f;
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package mindustry.entities.units;
|
|||||||
import arc.func.*;
|
import arc.func.*;
|
||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import mindustry.game.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
|
|
||||||
@@ -61,6 +62,16 @@ public class BuildPlan implements Position{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isRotation(Team team){
|
||||||
|
if(breaking) return false;
|
||||||
|
Tile tile = tile();
|
||||||
|
return tile != null && tile.team() == team && tile.block() == block && tile.build != null && tile.build.rotation != rotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean samePos(BuildPlan other){
|
||||||
|
return x == other.x && y == other.y;
|
||||||
|
}
|
||||||
|
|
||||||
/** Transforms the internal position of this config using the specified function, and return the result. */
|
/** Transforms the internal position of this config using the specified function, and return the result. */
|
||||||
public static Object pointConfig(Block block, Object config, Cons<Point2> cons){
|
public static Object pointConfig(Block block, Object config, Cons<Point2> cons){
|
||||||
if(config instanceof Point2){
|
if(config instanceof Point2){
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ public class EventType{
|
|||||||
public static class CoreItemDeliverEvent{}
|
public static class CoreItemDeliverEvent{}
|
||||||
/** Called when the player opens info for a specific block.*/
|
/** Called when the player opens info for a specific block.*/
|
||||||
public static class BlockInfoEvent{}
|
public static class BlockInfoEvent{}
|
||||||
|
/** Called *after* all content has been initialized. */
|
||||||
|
public static class ContentInitEvent{}
|
||||||
/** Called when the client game is first loaded. */
|
/** Called when the client game is first loaded. */
|
||||||
public static class ClientLoadEvent{}
|
public static class ClientLoadEvent{}
|
||||||
/** Called when a game begins and the world is loaded. */
|
/** Called when a game begins and the world is loaded. */
|
||||||
|
|||||||
@@ -68,13 +68,12 @@ public class Schematics implements Loadable{
|
|||||||
shadowBuffer.dispose();
|
shadowBuffer.dispose();
|
||||||
if(errorTexture != null){
|
if(errorTexture != null){
|
||||||
errorTexture.dispose();
|
errorTexture.dispose();
|
||||||
|
errorTexture = null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Events.on(ClientLoadEvent.class, event -> {
|
Events.on(ClientLoadEvent.class, event -> {
|
||||||
Pixmap pixmap = Core.atlas.getPixmap("error").crop();
|
errorTexture = new Texture("sprites/error.png");
|
||||||
errorTexture = new Texture(pixmap);
|
|
||||||
pixmap.dispose();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public class SectorInfo{
|
|||||||
public boolean shown = false;
|
public boolean shown = false;
|
||||||
|
|
||||||
/** Special variables for simulation. */
|
/** Special variables for simulation. */
|
||||||
public float sumHealth, sumRps, sumDps, waveHealthBase, waveHealthSlope, waveDpsBase, waveDpsSlope, bossHealth, bossDps;
|
public float sumHealth, sumRps, sumDps, waveHealthBase, waveHealthSlope, waveDpsBase, waveDpsSlope, bossHealth, bossDps, curEnemyHealth, curEnemyDps;
|
||||||
/** Wave where first boss shows up. */
|
/** Wave where first boss shows up. */
|
||||||
public int bossWave = -1;
|
public int bossWave = -1;
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ public class SectorInfo{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//if there are infinite waves and no win wave, add a win wave.
|
//if there are infinite waves and no win wave, add a win wave.
|
||||||
if(waves && winWave <= 0 && !attack){
|
if(winWave <= 0 && !attack){
|
||||||
winWave = 30;
|
winWave = 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,8 +229,9 @@ public class SectorInfo{
|
|||||||
|
|
||||||
//cap production/export by production
|
//cap production/export by production
|
||||||
production.get(item).mean = Math.min(production.get(item).mean, rawProduction.get(item).mean);
|
production.get(item).mean = Math.min(production.get(item).mean, rawProduction.get(item).mean);
|
||||||
|
|
||||||
if(export.containsKey(item)){
|
if(export.containsKey(item)){
|
||||||
export.get(item).mean = Math.min(export.get(item).mean, rawProduction.get(item).mean);
|
export.get(item).mean = Math.min(export.get(item).mean, Math.max(rawProduction.get(item).mean, -production.get(item).mean));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public class Universe{
|
|||||||
if(state.hasSector()){
|
if(state.hasSector()){
|
||||||
//update sector light
|
//update sector light
|
||||||
float light = state.getSector().getLight();
|
float light = state.getSector().getLight();
|
||||||
float alpha = Mathf.clamp(Mathf.map(light, 0f, 0.8f, 0.2f, 1f));
|
float alpha = Mathf.clamp(Mathf.map(light, 0f, 0.8f, 0.3f, 1f));
|
||||||
|
|
||||||
//assign and map so darkness is not 100% dark
|
//assign and map so darkness is not 100% dark
|
||||||
state.rules.ambientLight.a = 1f - alpha;
|
state.rules.ambientLight.a = 1f - alpha;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import mindustry.type.*;
|
|||||||
import static mindustry.content.UnitTypes.*;
|
import static mindustry.content.UnitTypes.*;
|
||||||
|
|
||||||
public class Waves{
|
public class Waves{
|
||||||
public static final int waveVersion = 4;
|
public static final int waveVersion = 5;
|
||||||
|
|
||||||
private Seq<SpawnGroup> spawns;
|
private Seq<SpawnGroup> spawns;
|
||||||
|
|
||||||
@@ -277,7 +277,7 @@ public class Waves{
|
|||||||
int cap = 150;
|
int cap = 150;
|
||||||
|
|
||||||
float shieldStart = 30, shieldsPerWave = 20 + difficulty*30f;
|
float shieldStart = 30, shieldsPerWave = 20 + difficulty*30f;
|
||||||
float[] scaling = {1, 1.5f, 3f, 4f, 5f};
|
float[] scaling = {1, 2f, 3f, 4f, 5f};
|
||||||
|
|
||||||
Intc createProgression = start -> {
|
Intc createProgression = start -> {
|
||||||
//main sequence
|
//main sequence
|
||||||
|
|||||||
@@ -91,18 +91,23 @@ public class MinimapRenderer implements Disposable{
|
|||||||
rect.set((dx - sz) * tilesize, (dy - sz) * tilesize, sz * 2 * tilesize, sz * 2 * tilesize);
|
rect.set((dx - sz) * tilesize, (dy - sz) * tilesize, sz * 2 * tilesize, sz * 2 * tilesize);
|
||||||
|
|
||||||
for(Unit unit : units){
|
for(Unit unit : units){
|
||||||
float rx = !withLabels ? (unit.x() - rect.x) / rect.width * w : unit.x() / (world.width() * tilesize) * w;
|
float rx = !withLabels ? (unit.x - rect.x) / rect.width * w : unit.x / (world.width() * tilesize) * w;
|
||||||
float ry = !withLabels ? (unit.y() - rect.y) / rect.width * h : unit.y() / (world.height() * tilesize) * h;
|
float ry = !withLabels ? (unit.y - rect.y) / rect.width * h : unit.y / (world.height() * tilesize) * h;
|
||||||
|
|
||||||
Draw.mixcol(unit.team().color, 1f);
|
Draw.mixcol(unit.team().color, 1f);
|
||||||
float scale = Scl.scl(1f) / 2f * scaling * 32f;
|
float scale = Scl.scl(1f) / 2f * scaling * 32f;
|
||||||
Draw.rect(unit.type.icon(Cicon.full), x + rx, y + ry, scale, scale, unit.rotation() - 90);
|
Draw.rect(unit.type.icon(Cicon.full), x + rx, y + ry, scale, scale, unit.rotation() - 90);
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
|
}
|
||||||
|
|
||||||
//only disable player names in multiplayer
|
if(withLabels && net.active()){
|
||||||
if(withLabels && unit.isPlayer() && net.active()){
|
for(Player player : Groups.player){
|
||||||
Player pl = unit.getPlayer();
|
if(!player.dead()){
|
||||||
drawLabel(x + rx, y + ry, pl.name, unit.team().color);
|
float rx = player.x / (world.width() * tilesize) * w;
|
||||||
|
float ry = player.y / (world.height() * tilesize) * h;
|
||||||
|
|
||||||
|
drawLabel(x + rx, y + ry, player.name, player.team().color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import mindustry.ui.fragments.*;
|
|||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
import mindustry.world.blocks.*;
|
import mindustry.world.blocks.*;
|
||||||
import mindustry.world.blocks.ConstructBlock.*;
|
import mindustry.world.blocks.ConstructBlock.*;
|
||||||
|
import mindustry.world.blocks.distribution.*;
|
||||||
import mindustry.world.blocks.payloads.*;
|
import mindustry.world.blocks.payloads.*;
|
||||||
import mindustry.world.blocks.power.*;
|
import mindustry.world.blocks.power.*;
|
||||||
import mindustry.world.blocks.storage.CoreBlock.*;
|
import mindustry.world.blocks.storage.CoreBlock.*;
|
||||||
@@ -278,8 +279,10 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
throw new ValidateException(player, "Player cannot drop an item.");
|
throw new ValidateException(player, "Player cannot drop an item.");
|
||||||
}
|
}
|
||||||
|
|
||||||
Fx.dropItem.at(player.x, player.y, angle, Color.white, player.unit().item());
|
player.unit().eachGroup(unit -> {
|
||||||
player.unit().clearItem();
|
Fx.dropItem.at(unit.x, unit.y, angle, Color.white, unit.item());
|
||||||
|
unit.clearItem();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote(targets = Loc.both, called = Loc.server, forward = true, unreliable = true)
|
@Remote(targets = Loc.both, called = Loc.server, forward = true, unreliable = true)
|
||||||
@@ -514,7 +517,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
|
|
||||||
public boolean requestMatches(BuildPlan request){
|
public boolean requestMatches(BuildPlan request){
|
||||||
Tile tile = world.tile(request.x, request.y);
|
Tile tile = world.tile(request.x, request.y);
|
||||||
return tile != null && tile.block() instanceof ConstructBlock && tile.<ConstructBuild>bc().cblock == request.block;
|
return tile != null && tile.build instanceof ConstructBuild cons && cons.cblock == request.block;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawBreaking(int x, int y){
|
public void drawBreaking(int x, int y){
|
||||||
@@ -1159,7 +1162,14 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(diagonal){
|
if(diagonal){
|
||||||
|
var start = world.build(startX, startY);
|
||||||
|
var end = world.build(endX, endY);
|
||||||
|
if(block != null && start instanceof ChainedBuilding && end instanceof ChainedBuilding
|
||||||
|
&& block.canReplace(end.block) && block.canReplace(start.block)){
|
||||||
|
points = Placement.upgradeLine(startX, startY, endX, endY);
|
||||||
|
}else{
|
||||||
points = Placement.pathfindLine(block != null && block.conveyorPlacement, startX, startY, endX, endY);
|
points = Placement.pathfindLine(block != null && block.conveyorPlacement, startX, startY, endX, endY);
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
points = Placement.normalizeLine(startX, startY, endX, endY);
|
points = Placement.normalizeLine(startX, startY, endX, endY);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -836,7 +836,6 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
if(type == null) return;
|
if(type == null) return;
|
||||||
|
|
||||||
boolean omni = unit.type.omniMovement;
|
boolean omni = unit.type.omniMovement;
|
||||||
boolean ground = unit.isGrounded();
|
|
||||||
boolean allowHealing = type.canHeal;
|
boolean allowHealing = type.canHeal;
|
||||||
boolean validHealTarget = allowHealing && target instanceof Building && ((Building)target).isValid() && target.team() == unit.team &&
|
boolean validHealTarget = allowHealing && target instanceof Building && ((Building)target).isValid() && target.team() == unit.team &&
|
||||||
((Building)target).damaged() && target.within(unit, type.range);
|
((Building)target).damaged() && target.within(unit, type.range);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import arc.math.geom.*;
|
|||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.pooling.*;
|
import arc.util.pooling.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
|
import mindustry.world.blocks.distribution.*;
|
||||||
|
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
@@ -23,7 +24,6 @@ public class Placement{
|
|||||||
/** Normalize a diagonal line into points. */
|
/** Normalize a diagonal line into points. */
|
||||||
public static Seq<Point2> pathfindLine(boolean conveyors, int startX, int startY, int endX, int endY){
|
public static Seq<Point2> pathfindLine(boolean conveyors, int startX, int startY, int endX, int endY){
|
||||||
Pools.freeAll(points);
|
Pools.freeAll(points);
|
||||||
|
|
||||||
points.clear();
|
points.clear();
|
||||||
if(conveyors && Core.settings.getBool("conveyorpathfinding")){
|
if(conveyors && Core.settings.getBool("conveyorpathfinding")){
|
||||||
if(astar(startX, startY, endX, endY)){
|
if(astar(startX, startY, endX, endY)){
|
||||||
@@ -54,6 +54,19 @@ public class Placement{
|
|||||||
return points;
|
return points;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Seq<Point2> upgradeLine(int startX, int startY, int endX, int endY){
|
||||||
|
Pools.freeAll(points);
|
||||||
|
points.clear();
|
||||||
|
var build = world.build(startX, startY);
|
||||||
|
points.add(Pools.obtain(Point2.class, Point2::new).set(startX, startY));
|
||||||
|
while(build instanceof ChainedBuilding chain && (build.tile.x != endX || build.tile.y != endY)){
|
||||||
|
if(chain.next() == null) return pathfindLine(true, startX, startY, endX, endY);
|
||||||
|
build = chain.next();
|
||||||
|
points.add(Pools.obtain(Point2.class, Point2::new).set(build.tile.x, build.tile.y));
|
||||||
|
}
|
||||||
|
return points;
|
||||||
|
}
|
||||||
|
|
||||||
private static float tileHeuristic(Tile tile, Tile other){
|
private static float tileHeuristic(Tile tile, Tile other){
|
||||||
Block block = control.input.block;
|
Block block = control.input.block;
|
||||||
|
|
||||||
|
|||||||
@@ -83,8 +83,9 @@ public class JsonIO{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Sector read(Json json, JsonValue jsonData, Class type){
|
public Sector read(Json json, JsonValue jsonData, Class type){
|
||||||
String[] split = jsonData.asString().split("-");
|
String name = jsonData.asString();
|
||||||
return Vars.content.<Planet>getByName(ContentType.planet, split[0]).sectors.get(Integer.parseInt(split[1]));
|
int idx = name.lastIndexOf('-');
|
||||||
|
return Vars.content.<Planet>getByName(ContentType.planet, name.substring(0, idx)).sectors.get(Integer.parseInt(name.substring(idx + 1)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -547,6 +547,22 @@ public class TypeIO{
|
|||||||
return read.b(new byte[length]);
|
return read.b(new byte[length]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void writeInts(Writes write, int[] ints){
|
||||||
|
write.s((short)ints.length);
|
||||||
|
for(int i : ints){
|
||||||
|
write.i(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int[] readInts(Reads read){
|
||||||
|
short length = read.s();
|
||||||
|
int[] out = new int[length];
|
||||||
|
for(int i = 0; i < length; i++){
|
||||||
|
out[i] = read.i();
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
public static void writeTraceInfo(Writes write, TraceInfo trace){
|
public static void writeTraceInfo(Writes write, TraceInfo trace){
|
||||||
writeString(write, trace.ip);
|
writeString(write, trace.ip);
|
||||||
writeString(write, trace.uuid);
|
writeString(write, trace.uuid);
|
||||||
|
|||||||
78
core/src/mindustry/logic/GlobalConstants.java
Normal file
78
core/src/mindustry/logic/GlobalConstants.java
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
package mindustry.logic;
|
||||||
|
|
||||||
|
import arc.struct.*;
|
||||||
|
import mindustry.*;
|
||||||
|
import mindustry.content.*;
|
||||||
|
import mindustry.logic.LExecutor.*;
|
||||||
|
import mindustry.type.*;
|
||||||
|
import mindustry.world.*;
|
||||||
|
|
||||||
|
/** Stores global constants for logic processors. */
|
||||||
|
public class GlobalConstants{
|
||||||
|
private ObjectIntMap<String> namesToIds = new ObjectIntMap<>();
|
||||||
|
private Seq<Var> vars = new Seq<>(Var.class);
|
||||||
|
|
||||||
|
public void init(){
|
||||||
|
put("the end", null);
|
||||||
|
//add default constants
|
||||||
|
put("false", 0);
|
||||||
|
put("true", 1);
|
||||||
|
put("null", null);
|
||||||
|
|
||||||
|
//store base content
|
||||||
|
|
||||||
|
for(Item item : Vars.content.items()){
|
||||||
|
put("@" + item.name, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Liquid liquid : Vars.content.liquids()){
|
||||||
|
put("@" + liquid.name, liquid);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Block block : Vars.content.blocks()){
|
||||||
|
if(block.synthetic()){
|
||||||
|
put("@" + block.name, block);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//used as a special value for any environmental solid block
|
||||||
|
put("@solid", Blocks.stoneWall);
|
||||||
|
put("@air", Blocks.air);
|
||||||
|
|
||||||
|
for(UnitType type : Vars.content.units()){
|
||||||
|
put("@" + type.name, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
//store sensor constants
|
||||||
|
for(LAccess sensor : LAccess.all){
|
||||||
|
put("@" + sensor.name(), sensor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @return a constant ID > 0 if there is a constant with this name, otherwise -1. */
|
||||||
|
public int get(String name){
|
||||||
|
return namesToIds.get(name, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @return a constant variable by ID. ID is not bound checked and must be positive. */
|
||||||
|
public Var get(int id){
|
||||||
|
return vars.items[id];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Adds a constant value by name. */
|
||||||
|
public Var put(String name, Object value){
|
||||||
|
Var var = new Var(name);
|
||||||
|
var.constant = true;
|
||||||
|
if(value instanceof Number num){
|
||||||
|
var.numval = num.doubleValue();
|
||||||
|
}else{
|
||||||
|
var.isobj = true;
|
||||||
|
var.objval = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
int index = vars.size;
|
||||||
|
namesToIds.put(name, index);
|
||||||
|
vars.add(var);
|
||||||
|
return var;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,12 +4,9 @@ import arc.func.*;
|
|||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.content.*;
|
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.logic.LExecutor.*;
|
import mindustry.logic.LExecutor.*;
|
||||||
import mindustry.logic.LStatements.*;
|
import mindustry.logic.LStatements.*;
|
||||||
import mindustry.type.*;
|
|
||||||
import mindustry.world.*;
|
|
||||||
|
|
||||||
/** "Compiles" a sequence of statements into instructions. */
|
/** "Compiles" a sequence of statements into instructions. */
|
||||||
public class LAssembler{
|
public class LAssembler{
|
||||||
@@ -31,42 +28,6 @@ public class LAssembler{
|
|||||||
putConst("@unit", null);
|
putConst("@unit", null);
|
||||||
//reference to self
|
//reference to self
|
||||||
putConst("@this", null);
|
putConst("@this", null);
|
||||||
|
|
||||||
//add default constants
|
|
||||||
putConst("false", 0);
|
|
||||||
putConst("true", 1);
|
|
||||||
putConst("null", null);
|
|
||||||
|
|
||||||
//store base content (TODO hacky?)
|
|
||||||
|
|
||||||
for(Item item : Vars.content.items()){
|
|
||||||
putConst("@" + item.name, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(Liquid liquid : Vars.content.liquids()){
|
|
||||||
putConst("@" + liquid.name, liquid);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(Block block : Vars.content.blocks()){
|
|
||||||
if(block.synthetic()){
|
|
||||||
putConst("@" + block.name, block);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//used as a special value for any environmental solid block
|
|
||||||
putConst("@solid", Blocks.stoneWall);
|
|
||||||
|
|
||||||
putConst("@air", Blocks.air);
|
|
||||||
|
|
||||||
for(UnitType type : Vars.content.units()){
|
|
||||||
putConst("@" + type.name, type);
|
|
||||||
}
|
|
||||||
|
|
||||||
//store sensor constants
|
|
||||||
|
|
||||||
for(LAccess sensor : LAccess.all){
|
|
||||||
putConst("@" + sensor.name(), sensor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LAssembler assemble(String data, int maxInstructions){
|
public static LAssembler assemble(String data, int maxInstructions){
|
||||||
@@ -185,6 +146,12 @@ public class LAssembler{
|
|||||||
/** @return a variable ID by name.
|
/** @return a variable ID by name.
|
||||||
* This may be a constant variable referring to a number or object. */
|
* This may be a constant variable referring to a number or object. */
|
||||||
public int var(String symbol){
|
public int var(String symbol){
|
||||||
|
int constId = Vars.constants.get(symbol);
|
||||||
|
if(constId > 0){
|
||||||
|
//global constants are *negated* and stored separately
|
||||||
|
return -constId;
|
||||||
|
}
|
||||||
|
|
||||||
symbol = symbol.trim();
|
symbol = symbol.trim();
|
||||||
|
|
||||||
//string case
|
//string case
|
||||||
|
|||||||
@@ -97,28 +97,33 @@ public class LExecutor{
|
|||||||
|
|
||||||
//region utility
|
//region utility
|
||||||
|
|
||||||
|
public Var var(int index){
|
||||||
|
//global constants have variable IDs < 0, and they are fetched from the global constants object after being negated
|
||||||
|
return index < 0 ? constants.get(-index) : vars[index];
|
||||||
|
}
|
||||||
|
|
||||||
public @Nullable Building building(int index){
|
public @Nullable Building building(int index){
|
||||||
Object o = vars[index].objval;
|
Object o = var(index).objval;
|
||||||
return vars[index].isobj && o instanceof Building building ? building : null;
|
return var(index).isobj && o instanceof Building building ? building : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @Nullable Object obj(int index){
|
public @Nullable Object obj(int index){
|
||||||
Object o = vars[index].objval;
|
Object o = var(index).objval;
|
||||||
return vars[index].isobj ? o : null;
|
return var(index).isobj ? o : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean bool(int index){
|
public boolean bool(int index){
|
||||||
Var v = vars[index];
|
Var v = var(index);
|
||||||
return v.isobj ? v.objval != null : Math.abs(v.numval) >= 0.00001;
|
return v.isobj ? v.objval != null : Math.abs(v.numval) >= 0.00001;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double num(int index){
|
public double num(int index){
|
||||||
Var v = vars[index];
|
Var v = var(index);
|
||||||
return v.isobj ? v.objval != null ? 1 : 0 : Double.isNaN(v.numval) || Double.isInfinite(v.numval) ? 0 : v.numval;
|
return v.isobj ? v.objval != null ? 1 : 0 : Double.isNaN(v.numval) || Double.isInfinite(v.numval) ? 0 : v.numval;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float numf(int index){
|
public float numf(int index){
|
||||||
Var v = vars[index];
|
Var v = var(index);
|
||||||
return v.isobj ? v.objval != null ? 1 : 0 : Double.isNaN(v.numval) || Double.isInfinite(v.numval) ? 0 : (float)v.numval;
|
return v.isobj ? v.objval != null ? 1 : 0 : Double.isNaN(v.numval) || Double.isInfinite(v.numval) ? 0 : (float)v.numval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,7 +136,7 @@ public class LExecutor{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setnum(int index, double value){
|
public void setnum(int index, double value){
|
||||||
Var v = vars[index];
|
Var v = var(index);
|
||||||
if(v.constant) return;
|
if(v.constant) return;
|
||||||
v.numval = Double.isNaN(value) || Double.isInfinite(value) ? 0 : value;
|
v.numval = Double.isNaN(value) || Double.isInfinite(value) ? 0 : value;
|
||||||
v.objval = null;
|
v.objval = null;
|
||||||
@@ -139,20 +144,21 @@ public class LExecutor{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setobj(int index, Object value){
|
public void setobj(int index, Object value){
|
||||||
Var v = vars[index];
|
Var v = var(index);
|
||||||
if(v.constant) return;
|
if(v.constant) return;
|
||||||
v.objval = value;
|
v.objval = value;
|
||||||
v.isobj = true;
|
v.isobj = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setconst(int index, Object value){
|
public void setconst(int index, Object value){
|
||||||
Var v = vars[index];
|
Var v = var(index);
|
||||||
v.objval = value;
|
v.objval = value;
|
||||||
v.isobj = true;
|
v.isobj = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
|
|
||||||
|
/** A logic variable. */
|
||||||
public static class Var{
|
public static class Var{
|
||||||
public final String name;
|
public final String name;
|
||||||
|
|
||||||
@@ -735,8 +741,8 @@ public class LExecutor{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(LExecutor exec){
|
public void run(LExecutor exec){
|
||||||
Var v = exec.vars[to];
|
Var v = exec.var(to);
|
||||||
Var f = exec.vars[from];
|
Var f = exec.var(from);
|
||||||
|
|
||||||
//TODO error out when the from-value is a constant
|
//TODO error out when the from-value is a constant
|
||||||
if(!v.constant){
|
if(!v.constant){
|
||||||
@@ -769,10 +775,10 @@ public class LExecutor{
|
|||||||
if(op.unary){
|
if(op.unary){
|
||||||
exec.setnum(dest, op.function1.get(exec.num(a)));
|
exec.setnum(dest, op.function1.get(exec.num(a)));
|
||||||
}else{
|
}else{
|
||||||
Var va = exec.vars[a];
|
Var va = exec.var(a);
|
||||||
Var vb = exec.vars[b];
|
Var vb = exec.var(b);
|
||||||
|
|
||||||
if(op.objFunction2 != null && (va.isobj || vb.isobj)){
|
if(op.objFunction2 != null && va.isobj && vb.isobj){
|
||||||
//use object function if provided, and one of the variables is an object
|
//use object function if provided, and one of the variables is an object
|
||||||
exec.setnum(dest, op.objFunction2.get(exec.obj(a), exec.obj(b)));
|
exec.setnum(dest, op.objFunction2.get(exec.obj(a), exec.obj(b)));
|
||||||
}else{
|
}else{
|
||||||
@@ -788,7 +794,7 @@ public class LExecutor{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(LExecutor exec){
|
public void run(LExecutor exec){
|
||||||
exec.vars[varCounter].numval = exec.instructions.length;
|
exec.var(varCounter).numval = exec.instructions.length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -876,7 +882,7 @@ public class LExecutor{
|
|||||||
if(exec.textBuffer.length() >= maxTextBuffer) return;
|
if(exec.textBuffer.length() >= maxTextBuffer) return;
|
||||||
|
|
||||||
//this should avoid any garbage allocation
|
//this should avoid any garbage allocation
|
||||||
Var v = exec.vars[value];
|
Var v = exec.var(value);
|
||||||
if(v.isobj && value != 0){
|
if(v.isobj && value != 0){
|
||||||
String strValue =
|
String strValue =
|
||||||
v.objval == null ? "null" :
|
v.objval == null ? "null" :
|
||||||
@@ -940,8 +946,8 @@ public class LExecutor{
|
|||||||
@Override
|
@Override
|
||||||
public void run(LExecutor exec){
|
public void run(LExecutor exec){
|
||||||
if(address != -1){
|
if(address != -1){
|
||||||
Var va = exec.vars[value];
|
Var va = exec.var(value);
|
||||||
Var vb = exec.vars[compare];
|
Var vb = exec.var(compare);
|
||||||
boolean cmp;
|
boolean cmp;
|
||||||
|
|
||||||
if(op.objFunction != null && (va.isobj || vb.isobj)){
|
if(op.objFunction != null && (va.isobj || vb.isobj)){
|
||||||
@@ -952,7 +958,7 @@ public class LExecutor{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(cmp){
|
if(cmp){
|
||||||
exec.vars[varCounter].numval = address;
|
exec.var(varCounter).numval = address;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ public abstract class LStatement{
|
|||||||
t.actions(Actions.alpha(0), Actions.fadeIn(0.3f, Interp.fade));
|
t.actions(Actions.alpha(0), Actions.fadeIn(0.3f, Interp.fade));
|
||||||
|
|
||||||
t.top().pane(inner -> {
|
t.top().pane(inner -> {
|
||||||
|
inner.marginRight(24f);
|
||||||
inner.top();
|
inner.top();
|
||||||
hideCons.get(inner, hide);
|
hideCons.get(inner, hide);
|
||||||
}).top();
|
}).top();
|
||||||
|
|||||||
@@ -528,7 +528,9 @@ public class LStatements{
|
|||||||
|
|
||||||
stack.clearChildren();
|
stack.clearChildren();
|
||||||
stack.addChild(tables[selected]);
|
stack.addChild(tables[selected]);
|
||||||
t.pack();
|
|
||||||
|
t.parent.parent.pack();
|
||||||
|
t.parent.parent.invalidateHierarchy();
|
||||||
}).size(80f, 50f).growX().checked(selected == fi).group(group);
|
}).size(80f, 50f).growX().checked(selected == fi).group(group);
|
||||||
}
|
}
|
||||||
t.row();
|
t.row();
|
||||||
|
|||||||
@@ -73,6 +73,11 @@ public class SectorDamage{
|
|||||||
enemyHealth += info.bossHealth;
|
enemyHealth += info.bossHealth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(i == waveBegin){
|
||||||
|
enemyDps += info.curEnemyDps;
|
||||||
|
enemyHealth += info.curEnemyHealth;
|
||||||
|
}
|
||||||
|
|
||||||
//happens due to certain regressions
|
//happens due to certain regressions
|
||||||
if(enemyHealth < 0 || enemyDps < 0) continue;
|
if(enemyHealth < 0 || enemyDps < 0) continue;
|
||||||
|
|
||||||
@@ -293,18 +298,19 @@ public class SectorDamage{
|
|||||||
//skip player
|
//skip player
|
||||||
if(unit.isPlayer()) continue;
|
if(unit.isPlayer()) continue;
|
||||||
|
|
||||||
if(unit.team == state.rules.defaultTeam){
|
|
||||||
//scale health based on armor - yes, this is inaccurate, but better than nothing
|
//scale health based on armor - yes, this is inaccurate, but better than nothing
|
||||||
float healthMult = 1f + Mathf.clamp(unit.armor / 20f);
|
float healthMult = 1f + Mathf.clamp(unit.armor / 20f);
|
||||||
|
|
||||||
|
if(unit.team == state.rules.defaultTeam){
|
||||||
sumHealth += unit.health*healthMult + unit.shield;
|
sumHealth += unit.health*healthMult + unit.shield;
|
||||||
sumDps += unit.type.dpsEstimate;
|
sumDps += unit.type.dpsEstimate;
|
||||||
if(unit.abilities.find(a -> a instanceof RepairFieldAbility) instanceof RepairFieldAbility h){
|
if(unit.abilities.find(a -> a instanceof RepairFieldAbility) instanceof RepairFieldAbility h){
|
||||||
sumRps += h.amount / h.reload * 60f;
|
sumRps += h.amount / h.reload * 60f;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
curEnemyDps += unit.type.dpsEstimate;
|
float bossMult = unit.isBoss() ? 3f : 1f;
|
||||||
curEnemyHealth += unit.health;
|
curEnemyDps += unit.type.dpsEstimate * unit.damageMultiplier() * bossMult;
|
||||||
|
curEnemyHealth += unit.health * healthMult * unit.healthMultiplier() * bossMult + unit.shield;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,12 +322,6 @@ public class SectorDamage{
|
|||||||
for(int wave = state.wave; wave < state.wave + 10; wave ++){
|
for(int wave = state.wave; wave < state.wave + 10; wave ++){
|
||||||
float sumWaveDps = 0f, sumWaveHealth = 0f;
|
float sumWaveDps = 0f, sumWaveHealth = 0f;
|
||||||
|
|
||||||
//first wave has to take into account current dps
|
|
||||||
if(wave == state.wave){
|
|
||||||
sumWaveDps += curEnemyDps;
|
|
||||||
sumWaveHealth += curEnemyHealth;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(SpawnGroup group : state.rules.spawns){
|
for(SpawnGroup group : state.rules.spawns){
|
||||||
float healthMult = 1f + Mathf.clamp(group.type.armor / 20f);
|
float healthMult = 1f + Mathf.clamp(group.type.armor / 20f);
|
||||||
StatusEffect effect = (group.effect == null ? StatusEffects.none : group.effect);
|
StatusEffect effect = (group.effect == null ? StatusEffects.none : group.effect);
|
||||||
@@ -369,6 +369,11 @@ public class SectorDamage{
|
|||||||
info.sumDps = sumDps * 1.05f;
|
info.sumDps = sumDps * 1.05f;
|
||||||
info.sumRps = sumRps;
|
info.sumRps = sumRps;
|
||||||
|
|
||||||
|
float cmult = 1.5f;
|
||||||
|
|
||||||
|
info.curEnemyDps = curEnemyDps*cmult;
|
||||||
|
info.curEnemyHealth = curEnemyHealth*cmult;
|
||||||
|
|
||||||
info.wavesSurvived = getWavesSurvived(info);
|
info.wavesSurvived = getWavesSurvived(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,24 +23,27 @@ public abstract class GenerateFilter{
|
|||||||
//buffer of tiles used, each tile packed into a long struct
|
//buffer of tiles used, each tile packed into a long struct
|
||||||
long[] buffer = new long[tiles.width * tiles.height];
|
long[] buffer = new long[tiles.width * tiles.height];
|
||||||
|
|
||||||
//save to buffer
|
|
||||||
for(int i = 0; i < tiles.width * tiles.height; i++){
|
for(int i = 0; i < tiles.width * tiles.height; i++){
|
||||||
Tile tile = tiles.geti(i);
|
Tile tile = tiles.geti(i);
|
||||||
buffer[i] = PackTile.get(tile.blockID(), tile.floorID(), tile.overlayID());
|
|
||||||
|
in.apply(tile.x, tile.y, tile.block(), tile.floor(), tile.overlay());
|
||||||
|
apply();
|
||||||
|
|
||||||
|
buffer[i] = PackTile.get(in.block.id, in.floor.id, in.overlay.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//write to buffer
|
||||||
for(int i = 0; i < tiles.width * tiles.height; i++){
|
for(int i = 0; i < tiles.width * tiles.height; i++){
|
||||||
Tile tile = tiles.geti(i);
|
Tile tile = tiles.geti(i);
|
||||||
long b = buffer[i];
|
long b = buffer[i];
|
||||||
|
|
||||||
in.apply(tile.x, tile.y, Vars.content.block(PackTile.block(b)), Vars.content.block(PackTile.floor(b)), Vars.content.block(PackTile.overlay(b)));
|
Block block = Vars.content.block(PackTile.block(b)), floor = Vars.content.block(PackTile.floor(b)), overlay = Vars.content.block(PackTile.overlay(b));
|
||||||
apply();
|
|
||||||
|
|
||||||
tile.setFloor(in.floor.asFloor());
|
tile.setFloor(floor.asFloor());
|
||||||
tile.setOverlay(!in.floor.asFloor().hasSurface() && in.overlay.asFloor().needsSurface ? Blocks.air : in.overlay);
|
tile.setOverlay(!floor.asFloor().hasSurface() && overlay.asFloor().needsSurface ? Blocks.air : overlay);
|
||||||
|
|
||||||
if(!tile.block().synthetic() && !in.block.synthetic()){
|
if(!tile.block().synthetic() && !block.synthetic()){
|
||||||
tile.setBlock(in.block);
|
tile.setBlock(block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -151,9 +151,18 @@ public class BaseGenerator{
|
|||||||
//clear path for ground units
|
//clear path for ground units
|
||||||
for(Tile tile : cores){
|
for(Tile tile : cores){
|
||||||
Astar.pathfind(tile, spawn, t -> t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8) ? 100000 : t.floor().hasSurface() ? 1 : 10, t -> !t.block().isStatic()).each(t -> {
|
Astar.pathfind(tile, spawn, t -> t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8) ? 100000 : t.floor().hasSurface() ? 1 : 10, t -> !t.block().isStatic()).each(t -> {
|
||||||
if(t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8)){
|
if(!t.within(tile, 25f * 8)){
|
||||||
|
if(t.team() == state.rules.waveTeam){
|
||||||
t.setBlock(Blocks.air);
|
t.setBlock(Blocks.air);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(Point2 p : Geometry.d8){
|
||||||
|
Tile other = t.nearby(p);
|
||||||
|
if(other != null && other.team() == state.rules.waveTeam){
|
||||||
|
other.setBlock(Blocks.air);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
|
|||||||
float scl = 5f;
|
float scl = 5f;
|
||||||
float waterOffset = 0.07f;
|
float waterOffset = 0.07f;
|
||||||
|
|
||||||
//TODO fix sand near snow (sector 173)
|
|
||||||
Block[][] arr =
|
Block[][] arr =
|
||||||
{
|
{
|
||||||
{Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandTaintedWater, Blocks.stone, Blocks.stone},
|
{Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandTaintedWater, Blocks.stone, Blocks.stone},
|
||||||
@@ -55,7 +54,6 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
|
|||||||
|
|
||||||
float water = 2f / arr[0].length;
|
float water = 2f / arr[0].length;
|
||||||
|
|
||||||
|
|
||||||
float rawHeight(Vec3 position){
|
float rawHeight(Vec3 position){
|
||||||
position = Tmp.v33.set(position).scl(scl);
|
position = Tmp.v33.set(position).scl(scl);
|
||||||
return (Mathf.pow((float)noise.octaveNoise3D(7, 0.5f, 1f/3f, position.x, position.y, position.z), 2.3f) + waterOffset) / (1f + waterOffset);
|
return (Mathf.pow((float)noise.octaveNoise3D(7, 0.5f, 1f/3f, position.x, position.y, position.z), 2.3f) + waterOffset) / (1f + waterOffset);
|
||||||
@@ -340,11 +338,12 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
|
|||||||
}
|
}
|
||||||
}else if(floor != Blocks.basalt && floor != Blocks.ice && floor.asFloor().hasSurface()){
|
}else if(floor != Blocks.basalt && floor != Blocks.ice && floor.asFloor().hasSurface()){
|
||||||
float noise = noise(x + 782, y, 5, 0.75f, 260f, 1f);
|
float noise = noise(x + 782, y, 5, 0.75f, 260f, 1f);
|
||||||
|
if(noise > 0.67f && !enemies.contains(e -> Mathf.within(x, y, e.x, e.y, 8))){
|
||||||
if(noise > 0.72f){
|
if(noise > 0.72f){
|
||||||
floor = noise > 0.78f ? Blocks.taintedWater : (floor == Blocks.sand ? Blocks.sandWater : Blocks.darksandTaintedWater);
|
floor = noise > 0.78f ? Blocks.taintedWater : (floor == Blocks.sand ? Blocks.sandWater : Blocks.darksandTaintedWater);
|
||||||
ore = Blocks.air;
|
}else{
|
||||||
}else if(noise > 0.67f){
|
|
||||||
floor = (floor == Blocks.sand ? floor : Blocks.darksand);
|
floor = (floor == Blocks.sand ? floor : Blocks.darksand);
|
||||||
|
}
|
||||||
ore = Blocks.air;
|
ore = Blocks.air;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ import mindustry.world.meta.*;
|
|||||||
import java.lang.reflect.*;
|
import java.lang.reflect.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public class ContentParser{
|
public class ContentParser{
|
||||||
private static final boolean ignoreUnknownFields = true;
|
private static final boolean ignoreUnknownFields = true;
|
||||||
@@ -250,8 +252,8 @@ public class ContentParser{
|
|||||||
|
|
||||||
readFields(block, value, true);
|
readFields(block, value, true);
|
||||||
|
|
||||||
if(block.size > ConstructBlock.maxSize){
|
if(block.size > maxBlockSize){
|
||||||
throw new IllegalArgumentException("Blocks cannot be larger than " + ConstructBlock.maxSize);
|
throw new IllegalArgumentException("Blocks cannot be larger than " + maxBlockSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
//make block visible by default if there are requirements and no visibility set
|
//make block visible by default if there are requirements and no visibility set
|
||||||
|
|||||||
@@ -647,6 +647,14 @@ public class Mods implements Loadable{
|
|||||||
meta.hidden = true;
|
meta.hidden = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//disallow putting a description after the version
|
||||||
|
if(meta.version != null){
|
||||||
|
int line = meta.version.indexOf('\n');
|
||||||
|
if(line != -1){
|
||||||
|
meta.version = meta.version.substring(0, line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(!headless){
|
if(!headless){
|
||||||
Log.info("Loaded mod '@' in @ms", meta.name, Time.elapsed());
|
Log.info("Loaded mod '@' in @ms", meta.name, Time.elapsed());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ public class ArcNetProvider implements NetProvider{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
server = new Server(8192, 8192, new PacketSerializer());
|
server = new Server(32768, 8192, new PacketSerializer());
|
||||||
server.setMulticast(multicastGroup, multicastPort);
|
server.setMulticast(multicastGroup, multicastPort);
|
||||||
server.setDiscoveryHandler((address, handler) -> {
|
server.setDiscoveryHandler((address, handler) -> {
|
||||||
ByteBuffer buffer = NetworkIO.writeServerData();
|
ByteBuffer buffer = NetworkIO.writeServerData();
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ public class BeControl{
|
|||||||
Fi dest = Fi.get(System.getProperty("becopy"));
|
Fi dest = Fi.get(System.getProperty("becopy"));
|
||||||
Fi self = Fi.get(BeControl.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
|
Fi self = Fi.get(BeControl.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
|
||||||
|
|
||||||
|
for(Fi file : self.parent().findAll(f -> !f.equals(self))) file.delete();
|
||||||
|
|
||||||
self.copyTo(dest);
|
self.copyTo(dest);
|
||||||
}catch(Throwable e){
|
}catch(Throwable e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ public class Item extends UnlockableContent{
|
|||||||
* 1 cost = 1 tick added to build time
|
* 1 cost = 1 tick added to build time
|
||||||
*/
|
*/
|
||||||
public float cost = 1f;
|
public float cost = 1f;
|
||||||
|
/** if true, this item is of lowest priority to drills. */
|
||||||
|
public boolean lowPriority;
|
||||||
|
|
||||||
public Item(String name, Color color){
|
public Item(String name, Color color){
|
||||||
super(name);
|
super(name);
|
||||||
|
|||||||
@@ -152,10 +152,6 @@ public class Sector{
|
|||||||
return res % 2 == 0 ? res : res + 1;
|
return res % 2 == 0 ? res : res + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addItem(Item item, int amount){
|
|
||||||
removeItem(item, -amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeItems(ItemSeq items){
|
public void removeItems(ItemSeq items){
|
||||||
ItemSeq copy = items.copy();
|
ItemSeq copy = items.copy();
|
||||||
copy.each((i, a) -> copy.set(i, -a));
|
copy.each((i, a) -> copy.set(i, -a));
|
||||||
@@ -169,7 +165,6 @@ public class Sector{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addItems(ItemSeq items){
|
public void addItems(ItemSeq items){
|
||||||
if(net.client()) return;
|
|
||||||
|
|
||||||
if(isBeingPlayed()){
|
if(isBeingPlayed()){
|
||||||
if(state.rules.defaultTeam.core() != null){
|
if(state.rules.defaultTeam.core() != null){
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class UnitType extends UnlockableContent{
|
|||||||
public float health = 200f, range = -1, armor = 0f, maxRange = -1f;
|
public float health = 200f, range = -1, armor = 0f, maxRange = -1f;
|
||||||
public float crashDamageMultiplier = 1f;
|
public float crashDamageMultiplier = 1f;
|
||||||
public boolean targetAir = true, targetGround = true;
|
public boolean targetAir = true, targetGround = true;
|
||||||
public boolean faceTarget = true, rotateShooting = true, isCounted = true, lowAltitude = false;
|
public boolean faceTarget = true, rotateShooting = true, isCounted = true, lowAltitude = false, circleTarget = false;
|
||||||
public boolean canBoost = false;
|
public boolean canBoost = false;
|
||||||
public boolean destructibleWreck = true;
|
public boolean destructibleWreck = true;
|
||||||
public float groundLayer = Layer.groundUnit;
|
public float groundLayer = Layer.groundUnit;
|
||||||
@@ -106,7 +106,7 @@ public class UnitType extends UnlockableContent{
|
|||||||
|
|
||||||
public Seq<Weapon> weapons = new Seq<>();
|
public Seq<Weapon> weapons = new Seq<>();
|
||||||
public TextureRegion baseRegion, legRegion, region, shadowRegion, cellRegion,
|
public TextureRegion baseRegion, legRegion, region, shadowRegion, cellRegion,
|
||||||
occlusionRegion, jointRegion, footRegion, legBaseRegion, baseJointRegion, outlineRegion;
|
softShadowRegion, jointRegion, footRegion, legBaseRegion, baseJointRegion, outlineRegion;
|
||||||
public TextureRegion[] wreckRegions;
|
public TextureRegion[] wreckRegions;
|
||||||
|
|
||||||
protected @Nullable ItemStack[] cachedRequirements;
|
protected @Nullable ItemStack[] cachedRequirements;
|
||||||
@@ -351,7 +351,7 @@ public class UnitType extends UnlockableContent{
|
|||||||
legBaseRegion = Core.atlas.find(name + "-leg-base", name + "-leg");
|
legBaseRegion = Core.atlas.find(name + "-leg-base", name + "-leg");
|
||||||
baseRegion = Core.atlas.find(name + "-base");
|
baseRegion = Core.atlas.find(name + "-base");
|
||||||
cellRegion = Core.atlas.find(name + "-cell", Core.atlas.find("power-cell"));
|
cellRegion = Core.atlas.find(name + "-cell", Core.atlas.find("power-cell"));
|
||||||
occlusionRegion = Core.atlas.find("circle-shadow");
|
softShadowRegion = Core.atlas.find("circle-shadow");
|
||||||
outlineRegion = Core.atlas.find(name + "-outline");
|
outlineRegion = Core.atlas.find(name + "-outline");
|
||||||
shadowRegion = icon(Cicon.full);
|
shadowRegion = icon(Cicon.full);
|
||||||
|
|
||||||
@@ -439,7 +439,7 @@ public class UnitType extends UnlockableContent{
|
|||||||
drawPayload((Unit & Payloadc)unit);
|
drawPayload((Unit & Payloadc)unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
drawOcclusion(unit);
|
drawSoftShadow(unit);
|
||||||
|
|
||||||
Draw.z(z - outlineSpace);
|
Draw.z(z - outlineSpace);
|
||||||
|
|
||||||
@@ -501,11 +501,11 @@ public class UnitType extends UnlockableContent{
|
|||||||
Draw.color();
|
Draw.color();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawOcclusion(Unit unit){
|
public void drawSoftShadow(Unit unit){
|
||||||
Draw.color(0, 0, 0, 0.4f);
|
Draw.color(0, 0, 0, 0.4f);
|
||||||
float rad = 1.6f;
|
float rad = 1.6f;
|
||||||
float size = Math.max(region.width, region.height) * Draw.scl;
|
float size = Math.max(region.width, region.height) * Draw.scl;
|
||||||
Draw.rect(occlusionRegion, unit, size * rad, size * rad);
|
Draw.rect(softShadowRegion, unit, size * rad, size * rad);
|
||||||
Draw.color();
|
Draw.color();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -580,8 +580,8 @@ public class UnitType extends UnlockableContent{
|
|||||||
float wx = unit.x + Angles.trnsx(rotation, weapon.x, weapon.y) + Angles.trnsx(weaponRotation, 0, recoil),
|
float wx = unit.x + Angles.trnsx(rotation, weapon.x, weapon.y) + Angles.trnsx(weaponRotation, 0, recoil),
|
||||||
wy = unit.y + Angles.trnsy(rotation, weapon.x, weapon.y) + Angles.trnsy(weaponRotation, 0, recoil);
|
wy = unit.y + Angles.trnsy(rotation, weapon.x, weapon.y) + Angles.trnsy(weaponRotation, 0, recoil);
|
||||||
|
|
||||||
if(weapon.occlusion > 0){
|
if(weapon.shadow > 0){
|
||||||
Drawf.shadow(wx, wy, weapon.occlusion);
|
Drawf.shadow(wx, wy, weapon.shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(weapon.outlineRegion.found()){
|
if(weapon.outlineRegion.found()){
|
||||||
|
|||||||
@@ -50,8 +50,8 @@ public class Weapon{
|
|||||||
public float x = 5f, y = 0f;
|
public float x = 5f, y = 0f;
|
||||||
/** random spread on the X axis */
|
/** random spread on the X axis */
|
||||||
public float xRand = 0f;
|
public float xRand = 0f;
|
||||||
/** radius of occlusion drawn under the weapon; <0 to disable */
|
/** radius of shadow drawn under the weapon; <0 to disable */
|
||||||
public float occlusion = -1f;
|
public float shadow = -1f;
|
||||||
/** fraction of velocity that is random */
|
/** fraction of velocity that is random */
|
||||||
public float velocityRnd = 0f;
|
public float velocityRnd = 0f;
|
||||||
/** delay in ticks between shots */
|
/** delay in ticks between shots */
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ public class Weather extends UnlockableContent{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(){
|
public void draw(){
|
||||||
if(renderer.weatherAlpha() > 0.0001f){
|
if(renderer.weatherAlpha() > 0.0001f && Core.settings.getBool("showweather")){
|
||||||
Draw.draw(Layer.weather, () -> {
|
Draw.draw(Layer.weather, () -> {
|
||||||
weather.rand.setSeed(0);
|
weather.rand.setSeed(0);
|
||||||
Draw.alpha(renderer.weatherAlpha() * opacity * weather.opacityMultiplier);
|
Draw.alpha(renderer.weatherAlpha() * opacity * weather.opacityMultiplier);
|
||||||
|
|||||||
@@ -82,6 +82,10 @@ public class Bar extends Element{
|
|||||||
lastValue = computed;
|
lastValue = computed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(Float.isNaN(lastValue)) lastValue = 0;
|
||||||
|
if(Float.isInfinite(lastValue)) lastValue = 1f;
|
||||||
|
if(Float.isNaN(value)) value = 0;
|
||||||
|
if(Float.isInfinite(value)) value = 1f;
|
||||||
if(Float.isNaN(computed)) computed = 0;
|
if(Float.isNaN(computed)) computed = 0;
|
||||||
if(Float.isInfinite(computed)) computed = 1f;
|
if(Float.isInfinite(computed)) computed = 1f;
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class Fonts{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int cursorScale(){
|
public static int cursorScale(){
|
||||||
return Math.max(1, Mathf.round(Scl.scl(1f)));
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadFonts(){
|
public static void loadFonts(){
|
||||||
|
|||||||
@@ -4,8 +4,11 @@ import arc.*;
|
|||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.scene.style.*;
|
import arc.scene.style.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import mindustry.*;
|
||||||
|
import mindustry.core.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
|
import mindustry.mod.Mods.*;
|
||||||
|
|
||||||
public class Links{
|
public class Links{
|
||||||
private static LinkEntry[] links;
|
private static LinkEntry[] links;
|
||||||
@@ -22,7 +25,8 @@ public class Links{
|
|||||||
new LinkEntry("google-play", "https://play.google.com/store/apps/details?id=io.anuke.mindustry", Icon.googleplay, Color.valueOf("689f38")),
|
new LinkEntry("google-play", "https://play.google.com/store/apps/details?id=io.anuke.mindustry", Icon.googleplay, Color.valueOf("689f38")),
|
||||||
new LinkEntry("f-droid", "https://f-droid.org/packages/io.anuke.mindustry/", Icon.android, Color.valueOf("026aa7")),
|
new LinkEntry("f-droid", "https://f-droid.org/packages/io.anuke.mindustry/", Icon.android, Color.valueOf("026aa7")),
|
||||||
new LinkEntry("github", "https://github.com/Anuken/Mindustry/", Icon.github, Color.valueOf("24292e")),
|
new LinkEntry("github", "https://github.com/Anuken/Mindustry/", Icon.github, Color.valueOf("24292e")),
|
||||||
new LinkEntry("dev-builds", "https://github.com/Anuken/MindustryBuilds", Icon.githubSquare, Color.valueOf("fafbfc"))
|
new LinkEntry("dev-builds", "https://github.com/Anuken/MindustryBuilds", Icon.githubSquare, Color.valueOf("fafbfc")),
|
||||||
|
new LinkEntry("bug", report(), Icon.wrench, Color.valueOf("cbd97f"))
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,4 +52,23 @@ public class Links{
|
|||||||
this.title = Core.bundle.get("link." + name + ".title", Strings.capitalize(name.replace("-", " ")));
|
this.title = Core.bundle.get("link." + name + ".title", Strings.capitalize(name.replace("-", " ")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String report(){
|
||||||
|
return "https://github.com/Anuken/Mindustry/issues/new?assignees=&labels=bug&body=" +
|
||||||
|
Strings.encode(Strings.format(
|
||||||
|
"**Platform**: `@`\n" +
|
||||||
|
"\n**Build**: `@`\n" +
|
||||||
|
"\n**Issue**: *Explain your issue in detail.*\n" +
|
||||||
|
"\n**Steps to reproduce**: *How you happened across the issue, and what exactly you did to make the bug happen.*\n" +
|
||||||
|
"\n**Link(s) to mod(s) used**: `@`\n" +
|
||||||
|
"\n**Save file**: *The (zipped) save file you were playing on when the bug happened. THIS IS REQUIRED FOR ANY ISSUE HAPPENING IN-GAME, REGARDLESS OF WHETHER YOU THINK IT HAPPENS EVERYWHERE. DO NOT DELETE OR OMIT THIS LINE UNLESS YOU ARE SURE THAT THE ISSUE DOES NOT HAPPEN IN-GAME.*\n" +
|
||||||
|
"\n**Crash report**: *The contents of relevant crash report files. REQUIRED if you are reporting a crash.*\n" +
|
||||||
|
"\n---\n" +
|
||||||
|
"\n*Place an X (no spaces) between the brackets to confirm that you have read the line below.*" +
|
||||||
|
"\n- [ ] **I have updated to the latest release (https://github.com/Anuken/Mindustry/releases) to make sure my issue has not been fixed.**" +
|
||||||
|
"\n- [ ] **I have searched the closed and open issues to make sure that this problem has not already been reported.**",
|
||||||
|
OS.isAndroid ? "Android " + Core.app.getVersion() : (System.getProperty("os.name") + (OS.is64Bit ? " x64" : " x32")),
|
||||||
|
Version.combined(),
|
||||||
|
Vars.mods.list().any() ? Vars.mods.list().select(LoadedMod::enabled).map(l -> l.meta.author + "/" + l.name + ":" + l.meta.version) : "none"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -356,8 +356,9 @@ public class JoinDialog extends BaseDialog{
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Table[] groupTable = {null};
|
||||||
|
|
||||||
//table containing all groups
|
//table containing all groups
|
||||||
global.table(g -> {
|
|
||||||
for(String address : group.addresses){
|
for(String address : group.addresses){
|
||||||
String resaddress = address.contains(":") ? address.split(":")[0] : address;
|
String resaddress = address.contains(":") ? address.split(":")[0] : address;
|
||||||
int resport = address.contains(":") ? Strings.parseInt(address.split(":")[1]) : port;
|
int resport = address.contains(":") ? Strings.parseInt(address.split(":")[1]) : port;
|
||||||
@@ -366,8 +367,10 @@ public class JoinDialog extends BaseDialog{
|
|||||||
res.port = resport;
|
res.port = resport;
|
||||||
|
|
||||||
//add header
|
//add header
|
||||||
if(g.getChildren().isEmpty()){
|
if(groupTable[0] == null){
|
||||||
g.table(head -> {
|
global.table(t -> groupTable[0] = t).row();
|
||||||
|
|
||||||
|
groupTable[0].table(head -> {
|
||||||
if(!group.name.isEmpty()){
|
if(!group.name.isEmpty()){
|
||||||
head.add(group.name).color(Color.lightGray).padRight(4);
|
head.add(group.name).color(Color.lightGray).padRight(4);
|
||||||
}
|
}
|
||||||
@@ -379,20 +382,19 @@ public class JoinDialog extends BaseDialog{
|
|||||||
group.setHidden(!group.hidden());
|
group.setHidden(!group.hidden());
|
||||||
image[0].getStyle().imageUp = group.hidden() ? Icon.eyeOffSmall : Icon.eyeSmall;
|
image[0].getStyle().imageUp = group.hidden() ? Icon.eyeOffSmall : Icon.eyeSmall;
|
||||||
if(group.hidden() && !showHidden){
|
if(group.hidden() && !showHidden){
|
||||||
g.remove();
|
groupTable[0].remove();
|
||||||
}
|
}
|
||||||
}).size(40f).get();
|
}).size(40f).get();
|
||||||
image[0].addListener(new Tooltip(t -> t.background(Styles.black6).margin(4).label(() -> !group.hidden() ? "@server.shown" : "@server.hidden")));
|
image[0].addListener(new Tooltip(t -> t.background(Styles.black6).margin(4).label(() -> !group.hidden() ? "@server.shown" : "@server.hidden")));
|
||||||
}).width(targetWidth()).padBottom(-2).row();
|
}).width(targetWidth()).padBottom(-2).row();
|
||||||
}
|
}
|
||||||
|
|
||||||
addGlobalHost(res, g);
|
addGlobalHost(res, groupTable[0]);
|
||||||
|
|
||||||
g.margin(5f);
|
groupTable[0].margin(5f);
|
||||||
g.pack();
|
groupTable[0].pack();
|
||||||
}, e -> {});
|
}, e -> {});
|
||||||
}
|
}
|
||||||
}).row();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -402,7 +404,16 @@ public class JoinDialog extends BaseDialog{
|
|||||||
|
|
||||||
container.button(b -> buildServer(host, b), Styles.cleart, () -> {
|
container.button(b -> buildServer(host, b), Styles.cleart, () -> {
|
||||||
Events.fire(new ClientPreConnectEvent(host));
|
Events.fire(new ClientPreConnectEvent(host));
|
||||||
|
if(!Core.settings.getBool("server-disclaimer", false)){
|
||||||
|
ui.showCustomConfirm("@warning", "@servers.disclaimer", "@ok", "@back", () -> {
|
||||||
|
Core.settings.put("server-disclaimer", true);
|
||||||
safeConnect(host.address, host.port, host.version);
|
safeConnect(host.address, host.port, host.version);
|
||||||
|
}, () -> {
|
||||||
|
Core.settings.put("server-disclaimer", false);
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
safeConnect(host.address, host.port, host.version);
|
||||||
|
}
|
||||||
}).width(w).row();
|
}).width(w).row();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -530,12 +541,14 @@ public class JoinDialog extends BaseDialog{
|
|||||||
Log.info("Fetched @ community servers.", defaultServers.size);
|
Log.info("Fetched @ community servers.", defaultServers.size);
|
||||||
}catch(Throwable e){
|
}catch(Throwable e){
|
||||||
Log.err("Failed to parse community servers.");
|
Log.err("Failed to parse community servers.");
|
||||||
|
Log.err(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}catch(Throwable e){
|
}catch(Throwable e){
|
||||||
Log.err("Failed to fetch community servers.");
|
Log.err("Failed to fetch community servers.");
|
||||||
|
Log.err(e);
|
||||||
}
|
}
|
||||||
}, t -> {});
|
}, Log::err);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveServers(){
|
private void saveServers(){
|
||||||
|
|||||||
@@ -6,9 +6,12 @@ import arc.files.*;
|
|||||||
import arc.func.*;
|
import arc.func.*;
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
|
import arc.scene.style.*;
|
||||||
import arc.scene.ui.TextButton.*;
|
import arc.scene.ui.TextButton.*;
|
||||||
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
|
import mindustry.ctype.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
import mindustry.mod.Mods.*;
|
import mindustry.mod.Mods.*;
|
||||||
@@ -102,13 +105,9 @@ public class ModsDialog extends BaseDialog{
|
|||||||
|
|
||||||
t.button("@mod.import.github", Icon.github, bstyle, () -> {
|
t.button("@mod.import.github", Icon.github, bstyle, () -> {
|
||||||
dialog.hide();
|
dialog.hide();
|
||||||
var modString = Core.settings.getString("lastmod", "");
|
|
||||||
var suggested = Structs.random(suggestedMods);
|
|
||||||
|
|
||||||
ui.showTextInput("@mod.import.github", "", 64, modString.isEmpty() ? suggested : modString, text -> {
|
ui.showTextInput("@mod.import.github", "", 64, Core.settings.getString("lastmod", ""), text -> {
|
||||||
if(!modString.isEmpty() || !Structs.eq(suggested, text)){
|
|
||||||
Core.settings.put("lastmod", text);
|
Core.settings.put("lastmod", text);
|
||||||
}
|
|
||||||
|
|
||||||
ui.loadfrag.show();
|
ui.loadfrag.show();
|
||||||
//Try to download the 6.0 branch first, but if it doesn't exist, try master.
|
//Try to download the 6.0 branch first, but if it doesn't exist, try master.
|
||||||
@@ -266,36 +265,38 @@ public class ModsDialog extends BaseDialog{
|
|||||||
desc.add("@editor.description").padRight(10).color(Color.gray).top();
|
desc.add("@editor.description").padRight(10).color(Color.gray).top();
|
||||||
desc.row();
|
desc.row();
|
||||||
desc.add(mod.meta.description).growX().wrap().padTop(2);
|
desc.add(mod.meta.description).growX().wrap().padTop(2);
|
||||||
|
desc.row();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO add this when mods work properly
|
}).width(400f);
|
||||||
/*
|
|
||||||
Array<UnlockableContent> all = Array.with(content.getContentMap()).<Content>flatten().select(c -> c.minfo.mod == mod && c instanceof UnlockableContent).as(UnlockableContent.class);
|
//TODO maybe enable later
|
||||||
|
if(false){
|
||||||
|
Seq<UnlockableContent> all = Seq.with(content.getContentMap()).<Content>flatten().select(c -> c.minfo.mod == mod && c instanceof UnlockableContent).as();
|
||||||
if(all.any()){
|
if(all.any()){
|
||||||
desc.add("@mod.content").padRight(10).color(Color.gray).top();
|
dialog.cont.row();
|
||||||
desc.row();
|
dialog.cont.pane(cs -> {
|
||||||
desc.pane(cs -> {
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(UnlockableContent c : all){
|
for(UnlockableContent c : all){
|
||||||
cs.addImageButton(new TextureRegionDrawable(c.icon(Cicon.medium)), () -> {
|
cs.button(new TextureRegionDrawable(c.icon(Cicon.medium)), Styles.cleari, Cicon.medium.size, () -> {
|
||||||
ui.content.show(c);
|
ui.content.show(c);
|
||||||
|
}).size(50f).with(im -> {
|
||||||
|
var click = im.getClickListener();
|
||||||
|
im.update(() -> im.getImage().color.lerp(!click.isOver() ? Color.lightGray : Color.white, 0.4f * Time.delta));
|
||||||
});
|
});
|
||||||
|
|
||||||
if(++i % 8 == 0) cs.row();
|
if(++i % 8 == 0) cs.row();
|
||||||
}
|
}
|
||||||
}).growX().minHeight(60f);
|
}).growX().minHeight(60f);
|
||||||
}*/
|
}
|
||||||
}).width(400f);
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void githubImport(String branch, String repo, Cons<HttpStatus> err){
|
private void handleMod(String repo, HttpResponse result){
|
||||||
Core.net.httpGet("http://api.github.com/repos/" + repo + "/zipball/" + branch, loc -> {
|
|
||||||
Core.net.httpGet(loc.getHeader("Location"), result -> {
|
|
||||||
if(result.getStatus() != HttpStatus.OK){
|
|
||||||
err.get(result.getStatus());
|
|
||||||
}else{
|
|
||||||
try{
|
try{
|
||||||
Fi file = tmpDirectory.child(repo.replace("/", "") + ".zip");
|
Fi file = tmpDirectory.child(repo.replace("/", "") + ".zip");
|
||||||
Streams.copy(result.getResultAsStream(), file.write(false));
|
Streams.copy(result.getResultAsStream(), file.write(false));
|
||||||
@@ -313,7 +314,24 @@ public class ModsDialog extends BaseDialog{
|
|||||||
modError(e);
|
modError(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void githubImport(String branch, String repo, Cons<HttpStatus> err){
|
||||||
|
Core.net.httpGet("https://api.github.com/repos/" + repo + "/zipball/" + branch, loc -> {
|
||||||
|
if(loc.getStatus() == HttpStatus.OK){
|
||||||
|
if(loc.getHeader("Location") != null){
|
||||||
|
Core.net.httpGet(loc.getHeader("Location"), result -> {
|
||||||
|
if(result.getStatus() != HttpStatus.OK){
|
||||||
|
err.get(result.getStatus());
|
||||||
|
}else{
|
||||||
|
handleMod(repo, result);
|
||||||
|
}
|
||||||
}, t2 -> Core.app.post(() -> modError(t2)));
|
}, t2 -> Core.app.post(() -> modError(t2)));
|
||||||
|
}else{
|
||||||
|
handleMod(repo, loc);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
err.get(loc.getStatus());
|
||||||
|
}
|
||||||
}, t2 -> Core.app.post(() -> modError(t2)));
|
}, t2 -> Core.app.post(() -> modError(t2)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,10 @@ import arc.scene.ui.layout.*;
|
|||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
|
import mindustry.content.TechTree.*;
|
||||||
import mindustry.core.*;
|
import mindustry.core.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
|
import mindustry.game.Objectives.*;
|
||||||
import mindustry.game.SectorInfo.*;
|
import mindustry.game.SectorInfo.*;
|
||||||
import mindustry.game.*;
|
import mindustry.game.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
@@ -144,7 +146,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
//load legacy research
|
//load legacy research
|
||||||
if(Core.settings.has("unlocks") && !Core.settings.has("junction-unlocked")){
|
if(Core.settings.has("unlocks") && !Core.settings.has("junction-unlocked")){
|
||||||
Core.app.post(() -> {
|
Core.app.post(() -> {
|
||||||
ui.showCustomConfirm("@research", "@research.legacy", "@research.load", "@research.discard", LegacyIO::readResearch, () -> Core.settings.remove("unlocks"));
|
ui.showCustomConfirm("@research", "@research.legacy", "@research.load", "@research.discard", () -> {
|
||||||
|
LegacyIO.readResearch();
|
||||||
|
Core.settings.remove("unlocks");
|
||||||
|
}, () -> Core.settings.remove("unlocks"));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,8 +254,12 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
|
|
||||||
boolean canSelect(Sector sector){
|
boolean canSelect(Sector sector){
|
||||||
if(mode == select) return sector.hasBase();
|
if(mode == select) return sector.hasBase();
|
||||||
|
if(sector.hasBase()) return true;
|
||||||
//preset sectors can only be selected once unlocked
|
//preset sectors can only be selected once unlocked
|
||||||
if(sector.preset != null) return sector.preset.unlocked() || sector.hasBase();
|
if(sector.preset != null){
|
||||||
|
TechNode node = sector.preset.node();
|
||||||
|
return node == null || node.parent == null || node.parent.content.unlocked();
|
||||||
|
}
|
||||||
|
|
||||||
return sector.hasBase() || sector.near().contains(Sector::hasBase); //near an occupied sector
|
return sector.hasBase() || sector.near().contains(Sector::hasBase); //near an occupied sector
|
||||||
}
|
}
|
||||||
@@ -288,7 +297,9 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
|
|
||||||
Color color =
|
Color color =
|
||||||
sec.hasBase() ? Tmp.c2.set(Team.sharded.color).lerp(Team.crux.color, sec.hasEnemyBase() ? 0.5f : 0f) :
|
sec.hasBase() ? Tmp.c2.set(Team.sharded.color).lerp(Team.crux.color, sec.hasEnemyBase() ? 0.5f : 0f) :
|
||||||
sec.preset != null ? Tmp.c2.set(Team.derelict.color).lerp(Color.white, Mathf.absin(Time.time, 10f, 1f)) :
|
sec.preset != null ?
|
||||||
|
sec.preset.unlocked() ? Tmp.c2.set(Team.derelict.color).lerp(Color.white, Mathf.absin(Time.time, 10f, 1f)) :
|
||||||
|
Color.gray :
|
||||||
sec.hasEnemyBase() ? Team.crux.color :
|
sec.hasEnemyBase() ? Team.crux.color :
|
||||||
null;
|
null;
|
||||||
|
|
||||||
@@ -349,7 +360,12 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
for(Sector sec : planet.sectors){
|
for(Sector sec : planet.sectors){
|
||||||
if(sec != hovered){
|
if(sec != hovered){
|
||||||
var preficon = sec.icon();
|
var preficon = sec.icon();
|
||||||
var icon = (sec.isAttacked() ? Fonts.getLargeIcon("warning") : !sec.hasBase() && sec.preset != null && sec.preset.unlocked() && preficon == null ? Fonts.getLargeIcon("terrain") : preficon);
|
var icon =
|
||||||
|
sec.isAttacked() ? Fonts.getLargeIcon("warning") :
|
||||||
|
!sec.hasBase() && sec.preset != null && sec.preset.unlocked() && preficon == null ?
|
||||||
|
Fonts.getLargeIcon("terrain") :
|
||||||
|
sec.preset != null && sec.preset.locked() && sec.preset.node() != null && !sec.preset.node().parent.content.locked() ? Fonts.getLargeIcon("lock") :
|
||||||
|
preficon;
|
||||||
var color = sec.preset != null && !sec.hasBase() ? Team.derelict.color : Team.sharded.color;
|
var color = sec.preset != null && !sec.hasBase() ? Team.derelict.color : Team.sharded.color;
|
||||||
|
|
||||||
if(icon != null){
|
if(icon != null){
|
||||||
@@ -397,6 +413,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
public void tap(InputEvent event, float x, float y, int count, KeyCode button){
|
public void tap(InputEvent event, float x, float y, int count, KeyCode button){
|
||||||
if(showing()) return;
|
if(showing()) return;
|
||||||
|
|
||||||
|
if(hovered != null && selected == hovered && count == 2){
|
||||||
|
playSelected();
|
||||||
|
}
|
||||||
|
|
||||||
if(hovered != null && (canSelect(hovered) || debugSelect)){
|
if(hovered != null && (canSelect(hovered) || debugSelect)){
|
||||||
selected = hovered;
|
selected = hovered;
|
||||||
}
|
}
|
||||||
@@ -490,7 +510,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
hoverLabel.touchable = Touchable.disabled;
|
hoverLabel.touchable = Touchable.disabled;
|
||||||
|
|
||||||
Vec3 pos = planets.cam.project(Tmp.v31.set(hovered.tile.v).setLength(PlanetRenderer.outlineRad).rotate(Vec3.Y, -planets.planet.getRotation()).add(planets.planet.position));
|
Vec3 pos = planets.cam.project(Tmp.v31.set(hovered.tile.v).setLength(PlanetRenderer.outlineRad).rotate(Vec3.Y, -planets.planet.getRotation()).add(planets.planet.position));
|
||||||
hoverLabel.setPosition(pos.x, pos.y, Align.center);
|
hoverLabel.setPosition(pos.x, pos.y - Core.scene.marginBottom, Align.center);
|
||||||
|
|
||||||
hoverLabel.getText().setLength(0);
|
hoverLabel.getText().setLength(0);
|
||||||
if(hovered != null){
|
if(hovered != null){
|
||||||
@@ -687,7 +707,21 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
|
|
||||||
stable.image().color(Pal.accent).fillX().height(3f).pad(3f).row();
|
stable.image().color(Pal.accent).fillX().height(3f).pad(3f).row();
|
||||||
|
|
||||||
if(!sector.hasBase()){
|
boolean locked = sector.preset != null && sector.preset.locked() && !sector.hasBase() && sector.preset.node() != null;
|
||||||
|
|
||||||
|
if(locked){
|
||||||
|
stable.table(r -> {
|
||||||
|
r.add("@complete").colspan(2).left();
|
||||||
|
r.row();
|
||||||
|
for(Objective o : sector.preset.node().objectives){
|
||||||
|
if(o.complete()) continue;
|
||||||
|
|
||||||
|
r.add("> " + o.display()).color(Color.lightGray).left();
|
||||||
|
r.image(o.complete() ? Icon.ok : Icon.cancel, o.complete() ? Color.lightGray : Color.scarlet).padLeft(3);
|
||||||
|
r.row();
|
||||||
|
}
|
||||||
|
}).row();
|
||||||
|
}else if(!sector.hasBase()){
|
||||||
stable.add(Core.bundle.get("sectors.threat") + " [accent]" + sector.displayThreat()).row();
|
stable.add(Core.bundle.get("sectors.threat") + " [accent]" + sector.displayThreat()).row();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -727,13 +761,52 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if((sector.hasBase() && mode == look) || canSelect(sector) || (sector.preset != null && sector.preset.alwaysUnlocked) || debugSelect){
|
if((sector.hasBase() && mode == look) || canSelect(sector) || (sector.preset != null && sector.preset.alwaysUnlocked) || debugSelect){
|
||||||
stable.button(mode == select ? "@sectors.select" : sector.isBeingPlayed() ? "@sectors.resume" : sector.hasBase() ? "@sectors.go" : "@sectors.launch", Icon.play, () -> {
|
stable.button(
|
||||||
|
mode == select ? "@sectors.select" :
|
||||||
|
sector.isBeingPlayed() ? "@sectors.resume" :
|
||||||
|
sector.hasBase() ? "@sectors.go" :
|
||||||
|
locked ? "@locked" : "@sectors.launch",
|
||||||
|
locked ? Icon.lock : Icon.play, this::playSelected).growX().height(54f).minWidth(170f).padTop(4).disabled(locked);
|
||||||
|
}
|
||||||
|
|
||||||
|
stable.pack();
|
||||||
|
stable.setPosition(x, y, Align.center);
|
||||||
|
|
||||||
|
stable.update(() -> {
|
||||||
|
if(selected != null){
|
||||||
|
if(launching){
|
||||||
|
stable.color.sub(0, 0, 0, 0.05f * Time.delta);
|
||||||
|
}else{
|
||||||
|
//fade out UI when not facing selected sector
|
||||||
|
Tmp.v31.set(selected.tile.v).rotate(Vec3.Y, -planets.planet.getRotation()).scl(-1f).nor();
|
||||||
|
float dot = planets.cam.direction.dot(Tmp.v31);
|
||||||
|
stable.color.a = Math.max(dot, 0f)*2f;
|
||||||
|
if(dot*2f <= -0.1f){
|
||||||
|
selected = null;
|
||||||
|
updateSelected();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
stable.act(0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void playSelected(){
|
||||||
|
if(selected == null) return;
|
||||||
|
|
||||||
|
Sector sector = selected;
|
||||||
|
|
||||||
if(sector.isBeingPlayed()){
|
if(sector.isBeingPlayed()){
|
||||||
//already at this sector
|
//already at this sector
|
||||||
hide();
|
hide();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(sector.preset != null && sector.preset.locked() && !sector.hasBase()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
boolean shouldHide = true;
|
boolean shouldHide = true;
|
||||||
|
|
||||||
//save before launch.
|
//save before launch.
|
||||||
@@ -775,30 +848,6 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(shouldHide) hide();
|
if(shouldHide) hide();
|
||||||
}).growX().height(54f).minWidth(170f).padTop(4);
|
|
||||||
}
|
|
||||||
|
|
||||||
stable.pack();
|
|
||||||
stable.setPosition(x, y, Align.center);
|
|
||||||
|
|
||||||
stable.update(() -> {
|
|
||||||
if(selected != null){
|
|
||||||
if(launching){
|
|
||||||
stable.color.sub(0, 0, 0, 0.05f * Time.delta);
|
|
||||||
}else{
|
|
||||||
//fade out UI when not facing selected sector
|
|
||||||
Tmp.v31.set(selected.tile.v).rotate(Vec3.Y, -planets.planet.getRotation()).scl(-1f).nor();
|
|
||||||
float dot = planets.cam.direction.dot(Tmp.v31);
|
|
||||||
stable.color.a = Math.max(dot, 0f)*2f;
|
|
||||||
if(dot*2f <= -0.1f){
|
|
||||||
selected = null;
|
|
||||||
updateSelected();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
stable.act(0f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum Mode{
|
public enum Mode{
|
||||||
|
|||||||
@@ -172,16 +172,6 @@ public class ResearchDialog extends BaseDialog{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Dialog show(){
|
|
||||||
if(net.client()){
|
|
||||||
ui.showInfo("@research.multiplayer");
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
void treeLayout(){
|
void treeLayout(){
|
||||||
float spacing = 20f;
|
float spacing = 20f;
|
||||||
LayoutNode node = new LayoutNode(root, null);
|
LayoutNode node = new LayoutNode(root, null);
|
||||||
@@ -439,6 +429,14 @@ public class ResearchDialog extends BaseDialog{
|
|||||||
|
|
||||||
void unlock(TechNode node){
|
void unlock(TechNode node){
|
||||||
node.content.unlock();
|
node.content.unlock();
|
||||||
|
|
||||||
|
//unlock parent nodes in multiplayer.
|
||||||
|
TechNode parent = node.parent;
|
||||||
|
while(parent != null){
|
||||||
|
parent.content.unlock();
|
||||||
|
parent = parent.parent;
|
||||||
|
}
|
||||||
|
|
||||||
checkNodes(root);
|
checkNodes(root);
|
||||||
hoverNode = null;
|
hoverNode = null;
|
||||||
treeLayout();
|
treeLayout();
|
||||||
|
|||||||
@@ -404,6 +404,7 @@ public class SettingsMenuDialog extends SettingsDialog{
|
|||||||
graphics.checkPref("fps", false);
|
graphics.checkPref("fps", false);
|
||||||
graphics.checkPref("playerindicators", true);
|
graphics.checkPref("playerindicators", true);
|
||||||
graphics.checkPref("indicators", true);
|
graphics.checkPref("indicators", true);
|
||||||
|
graphics.checkPref("showweather", true);
|
||||||
graphics.checkPref("animatedwater", true);
|
graphics.checkPref("animatedwater", true);
|
||||||
if(Shaders.shield != null){
|
if(Shaders.shield != null){
|
||||||
graphics.checkPref("animatedshields", !mobile);
|
graphics.checkPref("animatedshields", !mobile);
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ public class ChatFragment extends Table{
|
|||||||
Draw.color(shadowColor);
|
Draw.color(shadowColor);
|
||||||
|
|
||||||
if(shown){
|
if(shown){
|
||||||
Fill.crect(offsetx, chatfield.y, chatfield.getWidth() + 15f, chatfield.getHeight() - 1);
|
Fill.crect(offsetx, chatfield.y + scene.marginBottom, chatfield.getWidth() + 15f, chatfield.getHeight() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
super.draw();
|
super.draw();
|
||||||
@@ -137,7 +137,7 @@ public class ChatFragment extends Table{
|
|||||||
Draw.color(shadowColor);
|
Draw.color(shadowColor);
|
||||||
Draw.alpha(shadowColor.a * opacity);
|
Draw.alpha(shadowColor.a * opacity);
|
||||||
|
|
||||||
float theight = offsety + spacing + getMarginBottom();
|
float theight = offsety + spacing + getMarginBottom() + scene.marginBottom;
|
||||||
for(int i = scrollPos; i < messages.size && i < messagesShown + scrollPos && (i < fadetime || shown); i++){
|
for(int i = scrollPos; i < messages.size && i < messagesShown + scrollPos && (i < fadetime || shown); i++){
|
||||||
|
|
||||||
layout.setText(font, messages.get(i).formattedMessage, Color.white, textWidth, Align.bottomLeft, true);
|
layout.setText(font, messages.get(i).formattedMessage, Color.white, textWidth, Align.bottomLeft, true);
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public class HintsFragment extends Fragment{
|
|||||||
private static final float foutTime = 0.6f;
|
private static final float foutTime = 0.6f;
|
||||||
|
|
||||||
/** All hints to be displayed in the game. */
|
/** All hints to be displayed in the game. */
|
||||||
public Seq<Hint> hints = Seq.with(DefaultHint.values());
|
public Seq<Hint> hints = new Seq<>().and(DefaultHint.values()).as();
|
||||||
|
|
||||||
@Nullable Hint current;
|
@Nullable Hint current;
|
||||||
Group group = new WidgetGroup();
|
Group group = new WidgetGroup();
|
||||||
@@ -162,6 +162,18 @@ public class HintsFragment extends Fragment{
|
|||||||
waveFire(() -> Groups.fire.size() > 0 && Blocks.wave.unlockedNow(), () -> indexer.getAllied(state.rules.defaultTeam, BlockFlag.extinguisher).size() > 0),
|
waveFire(() -> Groups.fire.size() > 0 && Blocks.wave.unlockedNow(), () -> indexer.getAllied(state.rules.defaultTeam, BlockFlag.extinguisher).size() > 0),
|
||||||
generator(() -> control.input.block == Blocks.combustionGenerator, () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator)),
|
generator(() -> control.input.block == Blocks.combustionGenerator, () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator)),
|
||||||
guardian(() -> state.boss() != null && state.boss().armor >= 4, () -> state.boss() == null),
|
guardian(() -> state.boss() != null && state.boss().armor >= 4, () -> state.boss() == null),
|
||||||
|
coreUpgrade(() -> state.isCampaign() && Blocks.coreFoundation.unlocked()
|
||||||
|
&& state.rules.defaultTeam.core() != null
|
||||||
|
&& state.rules.defaultTeam.core().block == Blocks.coreShard
|
||||||
|
&& state.rules.defaultTeam.core().items.has(Blocks.coreFoundation.requirements),
|
||||||
|
() -> ui.hints.placedBlocks.contains(Blocks.coreFoundation)),
|
||||||
|
presetLaunch(() -> state.isCampaign()
|
||||||
|
&& state.getSector().preset == null
|
||||||
|
&& SectorPresets.frozenForest.unlocked()
|
||||||
|
&& SectorPresets.frozenForest.sector.save == null,
|
||||||
|
() -> state.isCampaign() && state.getSector().preset == SectorPresets.frozenForest),
|
||||||
|
coreIncinerate(() -> state.isCampaign() && state.rules.defaultTeam.core() != null && state.rules.defaultTeam.core().items.get(Items.copper) >= state.rules.defaultTeam.core().storageCapacity - 10, () -> false),
|
||||||
|
coopCampaign(() -> net.client() && state.isCampaign() && SectorPresets.groundZero.sector.hasBase(), () -> false),
|
||||||
;
|
;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package mindustry.ui.fragments;
|
package mindustry.ui.fragments;
|
||||||
|
|
||||||
|
import arc.*;
|
||||||
import arc.func.*;
|
import arc.func.*;
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
|
import arc.graphics.g2d.*;
|
||||||
import arc.scene.*;
|
import arc.scene.*;
|
||||||
import arc.scene.actions.*;
|
import arc.scene.actions.*;
|
||||||
import arc.scene.event.*;
|
import arc.scene.event.*;
|
||||||
@@ -18,7 +20,12 @@ public class LoadingFragment extends Fragment{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(Group parent){
|
public void build(Group parent){
|
||||||
parent.fill(Styles.black8, t -> {
|
parent.fill(t -> {
|
||||||
|
//rect must fill screen completely.
|
||||||
|
t.rect((x, y, w, h) -> {
|
||||||
|
Draw.alpha(t.color.a);
|
||||||
|
Styles.black8.draw(0, 0, Core.graphics.getWidth(), Core.graphics.getHeight());
|
||||||
|
});
|
||||||
t.visible = false;
|
t.visible = false;
|
||||||
t.touchable = Touchable.enabled;
|
t.touchable = Touchable.enabled;
|
||||||
t.add().height(133f).row();
|
t.add().height(133f).row();
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user