Compare commits
35 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c321402414 | ||
|
|
ec80fc9f3f | ||
|
|
6bfd57097f | ||
|
|
6f5df6a671 | ||
|
|
1baf3190cd | ||
|
|
66c29c49e5 | ||
|
|
e5d6740555 | ||
|
|
30b5dd63e4 | ||
|
|
f0aa8d73ea | ||
|
|
8a0761cad8 | ||
|
|
322d76b713 | ||
|
|
4f56bf3c3e | ||
|
|
942eed402a | ||
|
|
24c72650fb | ||
|
|
f5959c8829 | ||
|
|
7621ebed42 | ||
|
|
5447c71790 | ||
|
|
c5241eaaf6 | ||
|
|
9266b55ddf | ||
|
|
1bc1f66613 | ||
|
|
7795a690ed | ||
|
|
d498ac89f2 | ||
|
|
2842018c2f | ||
|
|
51641cc704 | ||
|
|
729f5ed5e4 | ||
|
|
03ff33acaf | ||
|
|
46035e76cc | ||
|
|
7c073f76ae | ||
|
|
5ced5ce253 | ||
|
|
55781e911e | ||
|
|
ee3c4a4124 | ||
|
|
6815e56e57 | ||
|
|
6c744443fb | ||
|
|
3c37047afb | ||
|
|
f31f09d77a |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -27,6 +27,7 @@ logs/
|
|||||||
/core/assets/locales
|
/core/assets/locales
|
||||||
/ios/src/io/anuke/mindustry/gen/
|
/ios/src/io/anuke/mindustry/gen/
|
||||||
/core/src/io/anuke/mindustry/gen/
|
/core/src/io/anuke/mindustry/gen/
|
||||||
|
ios/robovm.properties
|
||||||
*.gif
|
*.gif
|
||||||
|
|
||||||
version.properties
|
version.properties
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ jdk:
|
|||||||
- openjdk8
|
- openjdk8
|
||||||
script:
|
script:
|
||||||
- "./gradlew test"
|
- "./gradlew test"
|
||||||
- "./gradlew desktop:dist"
|
- "./gradlew desktop:dist -Pbuildversion=${TRAVIS_TAG:1}"
|
||||||
- "./gradlew server:dist"
|
- "./gradlew server:dist -Pbuildversion=${TRAVIS_TAG:1}"
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
provider: releases
|
provider: releases
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name="io.anuke.mindustry.AndroidLauncher"
|
android:name="io.anuke.mindustry.AndroidLauncher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:screenOrientation="user"
|
android:screenOrientation="sensor"
|
||||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout">
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout">
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ android {
|
|||||||
|
|
||||||
applicationId "io.anuke.mindustry"
|
applicationId "io.anuke.mindustry"
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 27
|
targetSdkVersion 28
|
||||||
versionCode code
|
versionCode code
|
||||||
versionName versionNameResult
|
versionName versionNameResult
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,6 @@ public class DonationsActivity extends FragmentActivity{
|
|||||||
Fragment fragment = fragmentManager.findFragmentByTag("donationsFragment");
|
Fragment fragment = fragmentManager.findFragmentByTag("donationsFragment");
|
||||||
if(fragment != null){
|
if(fragment != null){
|
||||||
fragment.onActivityResult(requestCode, resultCode, data);
|
fragment.onActivityResult(requestCode, resultCode, data);
|
||||||
//TODO donation event, set settings?
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
28
build.gradle
28
build.gradle
@@ -19,13 +19,13 @@ allprojects {
|
|||||||
version = 'release'
|
version = 'release'
|
||||||
|
|
||||||
ext {
|
ext {
|
||||||
versionNumber = '4.0'
|
versionNumber = '4'
|
||||||
versionModifier = 'alpha'
|
versionModifier = 'alpha'
|
||||||
versionType = 'official'
|
versionType = 'official'
|
||||||
appName = 'Mindustry'
|
appName = 'Mindustry'
|
||||||
gdxVersion = '1.9.9'
|
gdxVersion = '1.9.9'
|
||||||
roboVMVersion = '2.3.0'
|
roboVMVersion = '2.3.0'
|
||||||
uCoreVersion = 'c9aadd4d0b5848dbc4dbbd0fcd701b11c30c02bb'
|
uCoreVersion = '09e13f973a0769d971316d1d4f4a1eef3570926f'
|
||||||
|
|
||||||
getVersionString = {
|
getVersionString = {
|
||||||
String buildVersion = getBuildVersion()
|
String buildVersion = getBuildVersion()
|
||||||
@@ -110,17 +110,35 @@ project(":ios") {
|
|||||||
include "**/*.java"
|
include "**/*.java"
|
||||||
}
|
}
|
||||||
|
|
||||||
into "ios/src/io/anuke/mindustry/gen"
|
into "core/src/io/anuke/mindustry/gen"
|
||||||
}
|
}
|
||||||
|
|
||||||
doFirst{
|
doFirst{
|
||||||
delete{
|
delete{
|
||||||
delete "ios/src/io/anuke/mindustry/gen/"
|
delete "core/src/io/anuke/mindustry/gen/"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//build.dependsOn(copyGen)
|
task incrementConfig{
|
||||||
|
def vfile = file('robovm.properties')
|
||||||
|
|
||||||
|
def props = new Properties()
|
||||||
|
if(vfile.exists()){
|
||||||
|
props.load(new FileInputStream(vfile))
|
||||||
|
}
|
||||||
|
|
||||||
|
props['app.id'] = 'io.anuke.mindustry'
|
||||||
|
props['app.version'] = '4.0'
|
||||||
|
props['app.mainclass'] = 'io.anuke.mindustry.IOSLauncher'
|
||||||
|
props['app.executable'] = 'IOSLauncher'
|
||||||
|
props['app.name'] = 'Mindustry'
|
||||||
|
props['app.build'] = (!props.hasProperty("app.build") ? 40 : props['app.build'].toInteger() + 1)+""
|
||||||
|
props.store(vfile.newWriter(), null)
|
||||||
|
}
|
||||||
|
|
||||||
|
build.dependsOn(incrementConfig)
|
||||||
|
build.dependsOn(copyGen)
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile project(":core")
|
compile project(":core")
|
||||||
|
|||||||
BIN
core/assets-raw/sprites/ui/icons/icon-liquid-small.png
Normal file
BIN
core/assets-raw/sprites/ui/icons/icon-liquid-small.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 110 B |
BIN
core/assets-raw/sprites/ui/icons/icon-power-small.png
Normal file
BIN
core/assets-raw/sprites/ui/icons/icon-power-small.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 98 B |
@@ -1,6 +1,7 @@
|
|||||||
text.credits.text = Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet\!)
|
text.credits.text = Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]
|
||||||
text.credits = Credits
|
text.credits = Credits
|
||||||
text.discord = Join the mindustry discord\!
|
text.contributors = Translators and Contributors
|
||||||
|
text.discord = Join the mindustry discord!
|
||||||
text.link.discord.description = The official Mindustry discord chatroom
|
text.link.discord.description = The official Mindustry discord chatroom
|
||||||
text.link.github.description = Game source code
|
text.link.github.description = Game source code
|
||||||
text.link.dev-builds.description = Unstable development builds
|
text.link.dev-builds.description = Unstable development builds
|
||||||
@@ -8,25 +9,25 @@ text.link.trello.description = Official trello board for planned features
|
|||||||
text.link.itch.io.description = itch.io page with PC downloads and web version
|
text.link.itch.io.description = itch.io page with PC downloads and web version
|
||||||
text.link.google-play.description = Google Play store listing
|
text.link.google-play.description = Google Play store listing
|
||||||
text.link.wiki.description = Official Mindustry wiki
|
text.link.wiki.description = Official Mindustry wiki
|
||||||
text.linkfail = Failed to open link\!\nThe URL has been copied to your clipboard.
|
text.linkfail = Failed to open link!\nThe URL has been copied to your clipboard.
|
||||||
text.gameover = Game Over
|
text.gameover = Game Over
|
||||||
text.gameover.pvp = The[accent] {0}[] team is victorious\!
|
text.gameover.pvp = The[accent] {0}[] team is victorious!
|
||||||
text.sector.gameover = This sector has been lost. Re-deploy?
|
text.sector.gameover = This sector has been lost. Re-deploy?
|
||||||
text.sector.retry = Retry
|
text.sector.retry = Retry
|
||||||
text.highscore = [accent]New highscore\!
|
text.highscore = [accent]New highscore!
|
||||||
text.wave.lasted = You lasted until wave [accent]{0}[].
|
text.wave.lasted = You lasted until wave [accent]{0}[].
|
||||||
text.level.highscore = High Score\: [accent]{0}
|
text.level.highscore = High Score: [accent]{0}
|
||||||
text.level.delete.title = Confirm Delete
|
text.level.delete.title = Confirm Delete
|
||||||
text.map.delete = Are you sure you want to delete the map "[accent]{0}[]"?
|
text.map.delete = Are you sure you want to delete the map "[accent]{0}[]"?
|
||||||
text.level.select = Level Select
|
text.level.select = Level Select
|
||||||
text.level.mode = Gamemode\:
|
text.level.mode = Gamemode:
|
||||||
text.construction.desktop = To deselect a block or stop building, [accent]use space[].
|
text.construction.desktop = To deselect a block or stop building, [accent]use space[].
|
||||||
text.construction.title = Block Construction Guide
|
text.construction.title = Block Construction Guide
|
||||||
text.construction = You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
|
text.construction = You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
|
||||||
text.deconstruction.title = Block Deconstruction Guide
|
text.deconstruction.title = Block Deconstruction Guide
|
||||||
text.deconstruction = You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
|
text.deconstruction = You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
|
||||||
text.showagain = Don't show again next session
|
text.showagain = Don't show again next session
|
||||||
text.coreattack = < Core is under attack\! >
|
text.coreattack = < Core is under attack! >
|
||||||
text.unlocks = Unlocks
|
text.unlocks = Unlocks
|
||||||
text.savegame = Save Game
|
text.savegame = Save Game
|
||||||
text.loadgame = Load Game
|
text.loadgame = Load Game
|
||||||
@@ -34,19 +35,19 @@ text.joingame = Join Game
|
|||||||
text.addplayers = Add/Remove Players
|
text.addplayers = Add/Remove Players
|
||||||
text.customgame = Custom Game
|
text.customgame = Custom Game
|
||||||
text.sectors = Sectors
|
text.sectors = Sectors
|
||||||
text.sector = Sector\: [LIGHT_GRAY]{0}
|
text.sector = Sector: [LIGHT_GRAY]{0}
|
||||||
text.sector.time = Time\: [LIGHT_GRAY]{0}
|
text.sector.time = Time: [LIGHT_GRAY]{0}
|
||||||
text.sector.deploy = Deploy
|
text.sector.deploy = Deploy
|
||||||
text.sector.abandon = Abandon
|
text.sector.abandon = Abandon
|
||||||
text.sector.abandon.confirm = Are you sure you want to abandon all progress at this sector?\nThis cannot be undone\!
|
text.sector.abandon.confirm = Are you sure you want to abandon all progress at this sector?\nThis cannot be undone!
|
||||||
text.sector.resume = Resume
|
text.sector.resume = Resume
|
||||||
text.sector.locked = [scarlet][[Incomplete]
|
text.sector.locked = [scarlet][[Incomplete]
|
||||||
text.sector.unexplored = [accent][[Unexplored]
|
text.sector.unexplored = [accent][[Unexplored]
|
||||||
text.missions = Missions\:[LIGHT_GRAY] {0}
|
text.missions = Missions:[LIGHT_GRAY] {0}
|
||||||
text.mission = Mission\:[LIGHT_GRAY] {0}
|
text.mission = Mission:[LIGHT_GRAY] {0}
|
||||||
text.mission.main = Main Mission\:[LIGHT_GRAY] {0}
|
text.mission.main = Main Mission:[LIGHT_GRAY] {0}
|
||||||
text.mission.info = Mission Info
|
text.mission.info = Mission Info
|
||||||
text.mission.complete = Mission complete\!
|
text.mission.complete = Mission complete!
|
||||||
text.mission.complete.body = Sector {0},{1} has been conquered.
|
text.mission.complete.body = Sector {0},{1} has been conquered.
|
||||||
text.mission.wave = Survive[accent] {0}/{1} []waves\nWave in {2}
|
text.mission.wave = Survive[accent] {0}/{1} []waves\nWave in {2}
|
||||||
text.mission.wave.enemies = Survive[accent] {0}/{1} []waves\n{2} Enemies
|
text.mission.wave.enemies = Survive[accent] {0}/{1} []waves\n{2} Enemies
|
||||||
@@ -54,12 +55,12 @@ text.mission.wave.enemy = Survive[accent] {0}/{1} []waves\n{2} Enemy
|
|||||||
text.mission.wave.menu = Survive[accent] {0}[] waves
|
text.mission.wave.menu = Survive[accent] {0}[] waves
|
||||||
text.mission.battle = Destroy enemy core
|
text.mission.battle = Destroy enemy core
|
||||||
text.mission.resource.menu = Obtain {0} x{1}
|
text.mission.resource.menu = Obtain {0} x{1}
|
||||||
text.mission.resource = Obtain {0}\:\n[accent]{1}/{2}[]
|
text.mission.resource = Obtain {0}:\n[accent]{1}/{2}[]
|
||||||
text.mission.block = Create {0}
|
text.mission.block = Create {0}
|
||||||
text.mission.unit = Create {0} Unit
|
text.mission.unit = Create {0} Unit
|
||||||
text.mission.command = Send Command {0} To Units
|
text.mission.command = Send Command {0} To Units
|
||||||
text.mission.linknode = Link Power Node
|
text.mission.linknode = Link Power Node
|
||||||
text.mission.display = [accent]Mission\:\n[LIGHT_GRAY]{0}
|
text.mission.display = [accent]Mission:\n[LIGHT_GRAY]{0}
|
||||||
text.mission.mech = Switch to mech[accent] {0}[]
|
text.mission.mech = Switch to mech[accent] {0}[]
|
||||||
text.mission.create = Create[accent] {0}[]
|
text.mission.create = Create[accent] {0}[]
|
||||||
text.none = <none>
|
text.none = <none>
|
||||||
@@ -68,29 +69,30 @@ text.quit = Quit
|
|||||||
text.maps = Maps
|
text.maps = Maps
|
||||||
text.continue = Continue
|
text.continue = Continue
|
||||||
text.nextmission = Next Mission
|
text.nextmission = Next Mission
|
||||||
text.maps.none = [LIGHT_GRAY]No maps found\!
|
text.maps.none = [LIGHT_GRAY]No maps found!
|
||||||
text.about.button = About
|
text.about.button = About
|
||||||
text.name = Name\:
|
text.name = Name:
|
||||||
text.filename = File Name\:
|
text.noname = Pick a[accent] player name[] first.
|
||||||
text.unlocked = New Block Unlocked\!
|
text.filename = File Name:
|
||||||
text.unlocked.plural = New Blocks Unlocked\!
|
text.unlocked = New Block Unlocked!
|
||||||
|
text.unlocked.plural = New Blocks Unlocked!
|
||||||
text.players = {0} players online
|
text.players = {0} players online
|
||||||
text.players.single = {0} player online
|
text.players.single = {0} player online
|
||||||
text.server.closing = [accent]Closing server...
|
text.server.closing = [accent]Closing server...
|
||||||
text.server.kicked.kick = You have been kicked from the server\!
|
text.server.kicked.kick = You have been kicked from the server!
|
||||||
text.server.kicked.serverClose = Server closed.
|
text.server.kicked.serverClose = Server closed.
|
||||||
text.server.kicked.sectorComplete = Sector completed.
|
text.server.kicked.sectorComplete = Sector completed.
|
||||||
text.server.kicked.sectorComplete.text = Your mission is complete.\nThe server will now continue at the next sector.
|
text.server.kicked.sectorComplete.text = Your mission is complete.\nThe server will now continue at the next sector.
|
||||||
text.server.kicked.clientOutdated = Outdated client\! Update your game\!
|
text.server.kicked.clientOutdated = Outdated client! Update your game!
|
||||||
text.server.kicked.serverOutdated = Outdated server\! Ask the host to update\!
|
text.server.kicked.serverOutdated = Outdated server! Ask the host to update!
|
||||||
text.server.kicked.banned = You are banned on this server.
|
text.server.kicked.banned = You are banned on this server.
|
||||||
text.server.kicked.recentKick = You have been kicked recently.\nWait before connecting again.
|
text.server.kicked.recentKick = You have been kicked recently.\nWait before connecting again.
|
||||||
text.server.kicked.nameInUse = There is someone with that name\nalready on this server.
|
text.server.kicked.nameInUse = There is someone with that name\nalready on this server.
|
||||||
text.server.kicked.nameEmpty = Your chosen name is invalid.
|
text.server.kicked.nameEmpty = Your chosen name is invalid.
|
||||||
text.server.kicked.idInUse = You are already on this server\! Connecting with two accounts is not permitted.
|
text.server.kicked.idInUse = You are already on this server! Connecting with two accounts is not permitted.
|
||||||
text.server.kicked.customClient = This server does not support custom builds. Download an official version.
|
text.server.kicked.customClient = This server does not support custom builds. Download an official version.
|
||||||
text.host.info = The [accent]host[] button hosts a server on port [scarlet]6567[]. \nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note\: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
|
text.host.info = The [accent]host[] button hosts a server on port [scarlet]6567[]. \nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
|
||||||
text.join.info = Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note\: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
|
text.join.info = Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
|
||||||
text.hostserver = Host Game
|
text.hostserver = Host Game
|
||||||
text.hostserver.mobile = Host\nGame
|
text.hostserver.mobile = Host\nGame
|
||||||
text.host = Host
|
text.host = Host
|
||||||
@@ -98,31 +100,31 @@ text.hosting = [accent]Opening server...
|
|||||||
text.hosts.refresh = Refresh
|
text.hosts.refresh = Refresh
|
||||||
text.hosts.discovering = Discovering LAN games
|
text.hosts.discovering = Discovering LAN games
|
||||||
text.server.refreshing = Refreshing server
|
text.server.refreshing = Refreshing server
|
||||||
text.hosts.none = [lightgray]No local games found\!
|
text.hosts.none = [lightgray]No local games found!
|
||||||
text.host.invalid = [scarlet]Can't connect to host.
|
text.host.invalid = [scarlet]Can't connect to host.
|
||||||
text.trace = Trace Player
|
text.trace = Trace Player
|
||||||
text.trace.playername = Player name\: [accent]{0}
|
text.trace.playername = Player name: [accent]{0}
|
||||||
text.trace.ip = IP\: [accent]{0}
|
text.trace.ip = IP: [accent]{0}
|
||||||
text.trace.id = Unique ID\: [accent]{0}
|
text.trace.id = Unique ID: [accent]{0}
|
||||||
text.trace.android = Android Client\: [accent]{0}
|
text.trace.android = Android Client: [accent]{0}
|
||||||
text.trace.modclient = Custom Client\: [accent]{0}
|
text.trace.modclient = Custom Client: [accent]{0}
|
||||||
text.trace.totalblocksbroken = Total blocks broken\: [accent]{0}
|
text.trace.totalblocksbroken = Total blocks broken: [accent]{0}
|
||||||
text.trace.structureblocksbroken = Structure blocks broken\: [accent]{0}
|
text.trace.structureblocksbroken = Structure blocks broken: [accent]{0}
|
||||||
text.trace.lastblockbroken = Last block broken\: [accent]{0}
|
text.trace.lastblockbroken = Last block broken: [accent]{0}
|
||||||
text.trace.totalblocksplaced = Total blocks placed\: [accent]{0}
|
text.trace.totalblocksplaced = Total blocks placed: [accent]{0}
|
||||||
text.trace.lastblockplaced = Last block placed\: [accent]{0}
|
text.trace.lastblockplaced = Last block placed: [accent]{0}
|
||||||
text.invalidid = Invalid client ID\! Submit a bug report.
|
text.invalidid = Invalid client ID! Submit a bug report.
|
||||||
text.server.bans = Bans
|
text.server.bans = Bans
|
||||||
text.server.bans.none = No banned players found\!
|
text.server.bans.none = No banned players found!
|
||||||
text.server.admins = Admins
|
text.server.admins = Admins
|
||||||
text.server.admins.none = No admins found\!
|
text.server.admins.none = No admins found!
|
||||||
text.server.add = Add Server
|
text.server.add = Add Server
|
||||||
text.server.delete = Are you sure you want to delete this server?
|
text.server.delete = Are you sure you want to delete this server?
|
||||||
text.server.hostname = Host\: {0}
|
text.server.hostname = Host: {0}
|
||||||
text.server.edit = Edit Server
|
text.server.edit = Edit Server
|
||||||
text.server.outdated = [crimson]Outdated Server\![]
|
text.server.outdated = [crimson]Outdated Server![]
|
||||||
text.server.outdated.client = [crimson]Outdated Client\![]
|
text.server.outdated.client = [crimson]Outdated Client![]
|
||||||
text.server.version = [lightgray]Version\: {0} {1}
|
text.server.version = [lightgray]Version: {0} {1}
|
||||||
text.server.custombuild = [yellow]Custom Build
|
text.server.custombuild = [yellow]Custom Build
|
||||||
text.confirmban = Are you sure you want to ban this player?
|
text.confirmban = Are you sure you want to ban this player?
|
||||||
text.confirmkick = Are you sure you want to kick this player?
|
text.confirmkick = Are you sure you want to kick this player?
|
||||||
@@ -130,45 +132,45 @@ text.confirmunban = Are you sure you want to unban this player?
|
|||||||
text.confirmadmin = Are you sure you want to make this player an admin?
|
text.confirmadmin = Are you sure you want to make this player an admin?
|
||||||
text.confirmunadmin = Are you sure you want to remove admin status from this player?
|
text.confirmunadmin = Are you sure you want to remove admin status from this player?
|
||||||
text.joingame.title = Join Game
|
text.joingame.title = Join Game
|
||||||
text.joingame.ip = IP\:
|
text.joingame.ip = IP:
|
||||||
text.disconnect = Disconnected.
|
text.disconnect = Disconnected.
|
||||||
text.disconnect.data = Failed to load world data\!
|
text.disconnect.data = Failed to load world data!
|
||||||
text.connecting = [accent]Connecting...
|
text.connecting = [accent]Connecting...
|
||||||
text.connecting.data = [accent]Loading world data...
|
text.connecting.data = [accent]Loading world data...
|
||||||
text.server.port = Port\:
|
text.server.port = Port:
|
||||||
text.server.addressinuse = Address already in use\!
|
text.server.addressinuse = Address already in use!
|
||||||
text.server.invalidport = Invalid port number\!
|
text.server.invalidport = Invalid port number!
|
||||||
text.server.error = [crimson]Error hosting server\: [accent]{0}
|
text.server.error = [crimson]Error hosting server: [accent]{0}
|
||||||
text.save.old = This save is for an older version of the game, and can no longer be used.\n\n[LIGHT_GRAY]Save backwards compatibility will be implemented in the full 4.0 release.
|
text.save.old = This save is for an older version of the game, and can no longer be used.\n\n[LIGHT_GRAY]Save backwards compatibility will be implemented in the full 4.0 release.
|
||||||
text.save.new = New Save
|
text.save.new = New Save
|
||||||
text.save.overwrite = Are you sure you want to overwrite\nthis save slot?
|
text.save.overwrite = Are you sure you want to overwrite\nthis save slot?
|
||||||
text.overwrite = Overwrite
|
text.overwrite = Overwrite
|
||||||
text.save.none = No saves found\!
|
text.save.none = No saves found!
|
||||||
text.saveload = [accent]Saving...
|
text.saveload = [accent]Saving...
|
||||||
text.savefail = Failed to save game\!
|
text.savefail = Failed to save game!
|
||||||
text.save.delete.confirm = Are you sure you want to delete this save?
|
text.save.delete.confirm = Are you sure you want to delete this save?
|
||||||
text.save.delete = Delete
|
text.save.delete = Delete
|
||||||
text.save.export = Export Save
|
text.save.export = Export Save
|
||||||
text.save.import.invalid = [accent]This save is invalid\!
|
text.save.import.invalid = [accent]This save is invalid!
|
||||||
text.save.import.fail = [crimson]Failed to import save\: [accent]{0}
|
text.save.import.fail = [crimson]Failed to import save: [accent]{0}
|
||||||
text.save.export.fail = [crimson]Failed to export save\: [accent]{0}
|
text.save.export.fail = [crimson]Failed to export save: [accent]{0}
|
||||||
text.save.import = Import Save
|
text.save.import = Import Save
|
||||||
text.save.newslot = Save name\:
|
text.save.newslot = Save name:
|
||||||
text.save.rename = Rename
|
text.save.rename = Rename
|
||||||
text.save.rename.text = New name\:
|
text.save.rename.text = New name:
|
||||||
text.selectslot = Select a save.
|
text.selectslot = Select a save.
|
||||||
text.slot = [accent]Slot {0}
|
text.slot = [accent]Slot {0}
|
||||||
text.save.corrupted = [accent]Save file corrupted or invalid\!\nIf you have just updated your game, this is probably a change in the save format and [scarlet]not[] a bug.
|
text.save.corrupted = [accent]Save file corrupted or invalid!\nIf you have just updated your game, this is probably a change in the save format and [scarlet]not[] a bug.
|
||||||
text.sector.corrupted = [accent]A save file for this sector was found, but loading failed.\nA new one has been created.
|
text.sector.corrupted = [accent]A save file for this sector was found, but loading failed.\nA new one has been created.
|
||||||
text.empty = <empty>
|
text.empty = <empty>
|
||||||
text.on = On
|
text.on = On
|
||||||
text.off = Off
|
text.off = Off
|
||||||
text.save.autosave = Autosave\: {0}
|
text.save.autosave = Autosave: {0}
|
||||||
text.save.map = Map\: {0}
|
text.save.map = Map: {0}
|
||||||
text.save.wave = Wave {0}
|
text.save.wave = Wave {0}
|
||||||
text.save.difficulty = Difficulty\: {0}
|
text.save.difficulty = Difficulty: {0}
|
||||||
text.save.date = Last Saved\: {0}
|
text.save.date = Last Saved: {0}
|
||||||
text.save.playtime = Playtime\: {0}
|
text.save.playtime = Playtime: {0}
|
||||||
text.confirm = Confirm
|
text.confirm = Confirm
|
||||||
text.delete = Delete
|
text.delete = Delete
|
||||||
text.ok = OK
|
text.ok = OK
|
||||||
@@ -180,9 +182,9 @@ text.back = Back
|
|||||||
text.quit.confirm = Are you sure you want to quit?
|
text.quit.confirm = Are you sure you want to quit?
|
||||||
text.changelog.title = Changelog
|
text.changelog.title = Changelog
|
||||||
text.changelog.loading = Getting changelog...
|
text.changelog.loading = Getting changelog...
|
||||||
text.changelog.error.android = [accent]Note that the changelog sometimes does not work on Android 4.4 and below\!\nThis is due to an internal Android bug.
|
text.changelog.error.android = [accent]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
|
||||||
text.changelog.error.ios = [accent]The changelog is currently not supported in iOS.
|
text.changelog.error.ios = [accent]The changelog is currently not supported in iOS.
|
||||||
text.changelog.error = [scarlet]Error getting changelog\!\nCheck your internet connection.
|
text.changelog.error = [scarlet]Error getting changelog!\nCheck your internet connection.
|
||||||
text.changelog.current = [yellow][[Current version]
|
text.changelog.current = [yellow][[Current version]
|
||||||
text.changelog.latest = [accent][[Latest version]
|
text.changelog.latest = [accent][[Latest version]
|
||||||
text.loading = [accent]Loading...
|
text.loading = [accent]Loading...
|
||||||
@@ -198,32 +200,32 @@ text.saveimage = Save Image
|
|||||||
text.unknown = Unknown
|
text.unknown = Unknown
|
||||||
text.custom = Custom
|
text.custom = Custom
|
||||||
text.builtin = Built-In
|
text.builtin = Built-In
|
||||||
text.map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone\!
|
text.map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone!
|
||||||
text.map.random = [accent]Random Map
|
text.map.random = [accent]Random Map
|
||||||
text.map.nospawn = This map does not have any cores for the player to spawn in\! Add a[ROYAL] blue[] core to this map in the editor.
|
text.map.nospawn = This map does not have any cores for the player to spawn in! Add a[ROYAL] blue[] core to this map in the editor.
|
||||||
text.map.nospawn.pvp = This map does not have any enemy cores for player to spawn into\! Add[SCARLET] red[] cores to this map in the editor.
|
text.map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
text.map.invalid = Error loading map\: corrupted or invalid map file.
|
text.map.invalid = Error loading map: corrupted or invalid map file.
|
||||||
text.editor.brush = Brush
|
text.editor.brush = Brush
|
||||||
text.editor.slope = \\
|
text.editor.slope = \\
|
||||||
text.editor.openin = Open In Editor
|
text.editor.openin = Open In Editor
|
||||||
text.editor.oregen = Ore Generation
|
text.editor.oregen = Ore Generation
|
||||||
text.editor.oregen.info = Ore Generation\:
|
text.editor.oregen.info = Ore Generation:
|
||||||
text.editor.mapinfo = Map Info
|
text.editor.mapinfo = Map Info
|
||||||
text.editor.author = Author\:
|
text.editor.author = Author:
|
||||||
text.editor.description = Description\:
|
text.editor.description = Description:
|
||||||
text.editor.name = Name\:
|
text.editor.name = Name:
|
||||||
text.editor.teams = Teams
|
text.editor.teams = Teams
|
||||||
text.editor.elevation = Elevation
|
text.editor.elevation = Elevation
|
||||||
text.editor.errorimageload = Error loading file\:\n[accent]{0}
|
text.editor.errorimageload = Error loading file:\n[accent]{0}
|
||||||
text.editor.errorimagesave = Error saving file\:\n[accent]{0}
|
text.editor.errorimagesave = Error saving file:\n[accent]{0}
|
||||||
text.editor.generate = Generate
|
text.editor.generate = Generate
|
||||||
text.editor.resize = Resize
|
text.editor.resize = Resize
|
||||||
text.editor.loadmap = Load Map
|
text.editor.loadmap = Load Map
|
||||||
text.editor.savemap = Save Map
|
text.editor.savemap = Save Map
|
||||||
text.editor.saved = Saved\!
|
text.editor.saved = Saved!
|
||||||
text.editor.save.noname = Your map does not have a name\! Set one in the 'map info' menu.
|
text.editor.save.noname = Your map does not have a name! Set one in the 'map info' menu.
|
||||||
text.editor.save.overwrite = Your map overwrites a built-in map\! Pick a different name in the 'map info' menu.
|
text.editor.save.overwrite = Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
|
||||||
text.editor.import.exists = [scarlet]Unable to import\:[] a built-in map named '{0}' already exists\!
|
text.editor.import.exists = [scarlet]Unable to import:[] a built-in map named '{0}' already exists!
|
||||||
text.editor.import = Import...
|
text.editor.import = Import...
|
||||||
text.editor.importmap = Import Map
|
text.editor.importmap = Import Map
|
||||||
text.editor.importmap.description = Import an already existing map
|
text.editor.importmap.description = Import an already existing map
|
||||||
@@ -238,21 +240,21 @@ text.editor.exportimage = Export Terrain Image
|
|||||||
text.editor.exportimage.description = Export a map image file
|
text.editor.exportimage.description = Export a map image file
|
||||||
text.editor.loadimage = Import Terrain
|
text.editor.loadimage = Import Terrain
|
||||||
text.editor.saveimage = Export Terrain
|
text.editor.saveimage = Export Terrain
|
||||||
text.editor.unsaved = [scarlet]You have unsaved changes\![]\nAre you sure you want to exit?
|
text.editor.unsaved = [scarlet]You have unsaved changes![]\nAre you sure you want to exit?
|
||||||
text.editor.resizemap = Resize Map
|
text.editor.resizemap = Resize Map
|
||||||
text.editor.mapname = Map Name\:
|
text.editor.mapname = Map Name:
|
||||||
text.editor.overwrite = [accent]Warning\!\nThis overwrites an existing map.
|
text.editor.overwrite = [accent]Warning!\nThis overwrites an existing map.
|
||||||
text.editor.overwrite.confirm = [scarlet]Warning\![] A map with this name already exists. Are you sure you want to overwrite it?
|
text.editor.overwrite.confirm = [scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
|
||||||
text.editor.selectmap = Select a map to load\:
|
text.editor.selectmap = Select a map to load:
|
||||||
text.width = Width\:
|
text.width = Width:
|
||||||
text.height = Height\:
|
text.height = Height:
|
||||||
text.menu = Menu
|
text.menu = Menu
|
||||||
text.play = Play
|
text.play = Play
|
||||||
text.load = Load
|
text.load = Load
|
||||||
text.save = Save
|
text.save = Save
|
||||||
text.fps = FPS\: {0}
|
text.fps = FPS: {0}
|
||||||
text.tps = TPS\: {0}
|
text.tps = TPS: {0}
|
||||||
text.ping = Ping\: {0}ms
|
text.ping = Ping: {0}ms
|
||||||
text.language.restart = Please restart your game for the language settings to take effect.
|
text.language.restart = Please restart your game for the language settings to take effect.
|
||||||
text.settings = Settings
|
text.settings = Settings
|
||||||
text.tutorial = Tutorial
|
text.tutorial = Tutorial
|
||||||
@@ -260,7 +262,7 @@ text.editor = Editor
|
|||||||
text.mapeditor = Map Editor
|
text.mapeditor = Map Editor
|
||||||
text.donate = Donate
|
text.donate = Donate
|
||||||
|
|
||||||
text.connectfail = [crimson]Failed to connect to server\:\n\n[accent]{0}
|
text.connectfail = [crimson]Failed to connect to server:\n\n[accent]{0}
|
||||||
text.error.unreachable = Server unreachable.\nIs the address spelled correctly?
|
text.error.unreachable = Server unreachable.\nIs the address spelled correctly?
|
||||||
text.error.invalidaddress = Invalid address.
|
text.error.invalidaddress = Invalid address.
|
||||||
text.error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct!
|
text.error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct!
|
||||||
@@ -277,8 +279,8 @@ text.settings.game = Game
|
|||||||
text.settings.sound = Sound
|
text.settings.sound = Sound
|
||||||
text.settings.graphics = Graphics
|
text.settings.graphics = Graphics
|
||||||
text.settings.cleardata = Clear Game Data...
|
text.settings.cleardata = Clear Game Data...
|
||||||
text.settings.clear.confirm = Are you sure you want to clear this data?\nWhat is done cannot be undone\!
|
text.settings.clear.confirm = Are you sure you want to clear this data?\nWhat is done cannot be undone!
|
||||||
text.settings.clearall.confirm = [scarlet]WARNING\![]\nThis will clear all data, including saves, maps, unlocks and keybinds.\nOnce you press 'ok' the game will wipe all data and automatically exit.
|
text.settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, including saves, maps, unlocks and keybinds.\nOnce you press 'ok' the game will wipe all data and automatically exit.
|
||||||
text.settings.clearsectors = Clear Sectors
|
text.settings.clearsectors = Clear Sectors
|
||||||
text.settings.clearunlocks = Clear Unlocks
|
text.settings.clearunlocks = Clear Unlocks
|
||||||
text.settings.clearall = Clear All
|
text.settings.clearall = Clear All
|
||||||
@@ -321,7 +323,8 @@ text.blocks.coolant = Coolant
|
|||||||
text.blocks.coolantuse = Coolant Use
|
text.blocks.coolantuse = Coolant Use
|
||||||
text.blocks.inputliquidfuel = Fuel Liquid
|
text.blocks.inputliquidfuel = Fuel Liquid
|
||||||
text.blocks.liquidfueluse = Liquid Fuel Use
|
text.blocks.liquidfueluse = Liquid Fuel Use
|
||||||
text.blocks.explosive = Highly explosive\!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Health
|
text.blocks.health = Health
|
||||||
text.blocks.inaccuracy = Inaccuracy
|
text.blocks.inaccuracy = Inaccuracy
|
||||||
text.blocks.shots = Shots
|
text.blocks.shots = Shots
|
||||||
@@ -346,6 +349,7 @@ text.category.liquids = Liquids
|
|||||||
text.category.items = Items
|
text.category.items = Items
|
||||||
text.category.crafting = Crafting
|
text.category.crafting = Crafting
|
||||||
text.category.shooting = Shooting
|
text.category.shooting = Shooting
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Auto-Target
|
setting.autotarget.name = Auto-Target
|
||||||
setting.fpscap.name = Max FPS
|
setting.fpscap.name = Max FPS
|
||||||
setting.fpscap.none = None
|
setting.fpscap.none = None
|
||||||
@@ -355,14 +359,13 @@ setting.difficulty.easy = easy
|
|||||||
setting.difficulty.normal = normal
|
setting.difficulty.normal = normal
|
||||||
setting.difficulty.hard = hard
|
setting.difficulty.hard = hard
|
||||||
setting.difficulty.insane = insane
|
setting.difficulty.insane = insane
|
||||||
setting.difficulty.name = Difficulty\:
|
setting.difficulty.name = Difficulty:
|
||||||
setting.screenshake.name = Screen Shake
|
setting.screenshake.name = Screen Shake
|
||||||
setting.effects.name = Display Effects
|
setting.effects.name = Display Effects
|
||||||
setting.sensitivity.name = Controller Sensitivity
|
setting.sensitivity.name = Controller Sensitivity
|
||||||
setting.saveinterval.name = Autosave Interval
|
setting.saveinterval.name = Autosave Interval
|
||||||
setting.seconds = {0} Seconds
|
setting.seconds = {0} Seconds
|
||||||
setting.fullscreen.name = Fullscreen
|
setting.fullscreen.name = Fullscreen
|
||||||
setting.multithread.name = Multithreading
|
|
||||||
setting.fps.name = Show FPS
|
setting.fps.name = Show FPS
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = Show Power Lasers
|
setting.lasers.name = Show Power Lasers
|
||||||
@@ -479,21 +482,21 @@ mech.trident-ship.weapon = Bomb Bay
|
|||||||
mech.glaive-ship.name = Glaive
|
mech.glaive-ship.name = Glaive
|
||||||
mech.glaive-ship.description = A large, well-armored gunship. Equipped with an incendiary repeater. Good acceleration and maximum speed.
|
mech.glaive-ship.description = A large, well-armored gunship. Equipped with an incendiary repeater. Good acceleration and maximum speed.
|
||||||
mech.glaive-ship.weapon = Flame Repeater
|
mech.glaive-ship.weapon = Flame Repeater
|
||||||
text.item.explosiveness = [LIGHT_GRAY]Explosiveness\: {0}%
|
text.item.explosiveness = [LIGHT_GRAY]Explosiveness: {0}%
|
||||||
text.item.flammability = [LIGHT_GRAY]Flammability\: {0}%
|
text.item.flammability = [LIGHT_GRAY]Flammability: {0}%
|
||||||
text.item.radioactivity = [LIGHT_GRAY]Radioactivity\: {0}%
|
text.item.radioactivity = [LIGHT_GRAY]Radioactivity: {0}%
|
||||||
text.item.fluxiness = [LIGHT_GRAY]Flux Power\: {0}%
|
text.item.fluxiness = [LIGHT_GRAY]Flux Power: {0}%
|
||||||
text.unit.health = [LIGHT_GRAY]Health\: {0}
|
text.unit.health = [LIGHT_GRAY]Health: {0}
|
||||||
text.unit.speed = [LIGHT_GRAY]Speed\: {0}
|
text.unit.speed = [LIGHT_GRAY]Speed: {0}
|
||||||
text.mech.weapon = [LIGHT_GRAY]Weapon\: {0}
|
text.mech.weapon = [LIGHT_GRAY]Weapon: {0}
|
||||||
text.mech.armor = [LIGHT_GRAY]Armor\: {0}
|
text.mech.armor = [LIGHT_GRAY]Armor: {0}
|
||||||
text.mech.itemcapacity = [LIGHT_GRAY]Item Capacity\: {0}
|
text.mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0}
|
||||||
text.mech.minespeed = [LIGHT_GRAY]Mining Speed\: {0}
|
text.mech.minespeed = [LIGHT_GRAY]Mining Speed: {0}
|
||||||
text.mech.minepower = [LIGHT_GRAY]Mining Power\: {0}
|
text.mech.minepower = [LIGHT_GRAY]Mining Power: {0}
|
||||||
text.mech.ability = [LIGHT_GRAY]Ability\: {0}
|
text.mech.ability = [LIGHT_GRAY]Ability: {0}
|
||||||
text.liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity\: {0}
|
text.liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
|
||||||
text.liquid.viscosity = [LIGHT_GRAY]Viscosity\: {0}
|
text.liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
|
||||||
text.liquid.temperature = [LIGHT_GRAY]Temperature\: {0}
|
text.liquid.temperature = [LIGHT_GRAY]Temperature: {0}
|
||||||
block.constructing = {0} [LIGHT_GRAY](Constructing)
|
block.constructing = {0} [LIGHT_GRAY](Constructing)
|
||||||
block.spawn.name = Enemy Spawn
|
block.spawn.name = Enemy Spawn
|
||||||
block.core.name = Core
|
block.core.name = Core
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = Nein
|
|||||||
text.info.title = [accent]Info
|
text.info.title = [accent]Info
|
||||||
text.error.title = [crimson] Ein Fehler ist aufgetreten
|
text.error.title = [crimson] Ein Fehler ist aufgetreten
|
||||||
text.error.crashtitle = Ein Fehler ist aufgetreten!
|
text.error.crashtitle = Ein Fehler ist aufgetreten!
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Blockinfo:
|
text.blocks.blockinfo = Blockinfo:
|
||||||
text.blocks.powercapacity = Kapazität
|
text.blocks.powercapacity = Kapazität
|
||||||
text.blocks.powershot = Stromverbrauch/Schuss
|
text.blocks.powershot = Stromverbrauch/Schuss
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Kühlmittel
|
|||||||
text.blocks.coolantuse = Kühlmittelverbrauch
|
text.blocks.coolantuse = Kühlmittelverbrauch
|
||||||
text.blocks.inputliquidfuel = Kraftstoff
|
text.blocks.inputliquidfuel = Kraftstoff
|
||||||
text.blocks.liquidfueluse = Kraftstoffverbrauch
|
text.blocks.liquidfueluse = Kraftstoffverbrauch
|
||||||
text.blocks.explosive = Hochexplosiv!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Lebenspunkte
|
text.blocks.health = Lebenspunkte
|
||||||
text.blocks.inaccuracy = Ungenauigkeit
|
text.blocks.inaccuracy = Ungenauigkeit
|
||||||
text.blocks.shots = Schüsse
|
text.blocks.shots = Schüsse
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Flüssigkeiten
|
|||||||
text.category.items = Materialien
|
text.category.items = Materialien
|
||||||
text.category.crafting = Erzeugung
|
text.category.crafting = Erzeugung
|
||||||
text.category.shooting = Schießen
|
text.category.shooting = Schießen
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Auto-Zielauswahl
|
setting.autotarget.name = Auto-Zielauswahl
|
||||||
setting.fpscap.name = Max FPS
|
setting.fpscap.name = Max FPS
|
||||||
setting.fpscap.none = kein
|
setting.fpscap.none = kein
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Controller-Empfindlichkeit
|
|||||||
setting.saveinterval.name = Autosave Häufigkeit
|
setting.saveinterval.name = Autosave Häufigkeit
|
||||||
setting.seconds = {0} Sekunden
|
setting.seconds = {0} Sekunden
|
||||||
setting.fullscreen.name = Vollbild
|
setting.fullscreen.name = Vollbild
|
||||||
setting.multithread.name = Multithreading
|
|
||||||
setting.fps.name = Zeige FPS
|
setting.fps.name = Zeige FPS
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = Zeige Stromlaser
|
setting.lasers.name = Zeige Stromlaser
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = Wellen
|
|||||||
mode.waves.description = Der normale Modus. Begrenzte Ressourcen und automatische Wellen.
|
mode.waves.description = Der normale Modus. Begrenzte Ressourcen und automatische Wellen.
|
||||||
mode.sandbox.name = Sandkasten
|
mode.sandbox.name = Sandkasten
|
||||||
mode.sandbox.description = Unendliche Ressourcen und kein Timer für Wellen.
|
mode.sandbox.description = Unendliche Ressourcen und kein Timer für Wellen.
|
||||||
mode.custom.warning = [scarlet]FREISCHALTUNGEN IN BENUTZERDEFINIERTEN SPIELEN ODER SERVERN WERDEN NICHT GESPEICHERT.[]\n\nSpiele in Sektoren, um Dinge freizuschalten.
|
|
||||||
mode.custom.warning.read = Nur um sicherzugehen, dass du es gelesen hast:\n[scarlet]FREISCHALTUNGEN IN BENUTZERDEFINIERTEN SPIELEN ODER SERVERN WERDEN NICHT GESPEICHERT.[]\n\nSpiele in Sektoren, um Dinge freizuschalten.(Ich wünschte, der Hinweis wäre nicht notwendig, aber anscheinend ist er das)[]
|
|
||||||
mode.freebuild.name = Freier Bau
|
mode.freebuild.name = Freier Bau
|
||||||
mode.freebuild.description = Begrenzte Ressourcen und kein Timer für Wellen.
|
mode.freebuild.description = Begrenzte Ressourcen und kein Timer für Wellen.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = No
|
|||||||
text.info.title = [accent]Información
|
text.info.title = [accent]Información
|
||||||
text.error.title = [crimson]Un error ha ocurrido.
|
text.error.title = [crimson]Un error ha ocurrido.
|
||||||
text.error.crashtitle = Un error ha ocurrido.
|
text.error.crashtitle = Un error ha ocurrido.
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Información del Bloque
|
text.blocks.blockinfo = Información del Bloque
|
||||||
text.blocks.powercapacity = Capacidad de Energía
|
text.blocks.powercapacity = Capacidad de Energía
|
||||||
text.blocks.powershot = Energía/Disparo
|
text.blocks.powershot = Energía/Disparo
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Refrigerante
|
|||||||
text.blocks.coolantuse = Uso del Refrigerante
|
text.blocks.coolantuse = Uso del Refrigerante
|
||||||
text.blocks.inputliquidfuel = Combustible Líquido
|
text.blocks.inputliquidfuel = Combustible Líquido
|
||||||
text.blocks.liquidfueluse = Uso del Combustible Líquido
|
text.blocks.liquidfueluse = Uso del Combustible Líquido
|
||||||
text.blocks.explosive = ¡Altamente Explosivo!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Vida
|
text.blocks.health = Vida
|
||||||
text.blocks.inaccuracy = Imprecisión
|
text.blocks.inaccuracy = Imprecisión
|
||||||
text.blocks.shots = Disparos
|
text.blocks.shots = Disparos
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Líquidos
|
|||||||
text.category.items = Objetos
|
text.category.items = Objetos
|
||||||
text.category.crafting = Fabricación
|
text.category.crafting = Fabricación
|
||||||
text.category.shooting = Disparo
|
text.category.shooting = Disparo
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Auto apuntado
|
setting.autotarget.name = Auto apuntado
|
||||||
setting.fpscap.name = Máx FPS
|
setting.fpscap.name = Máx FPS
|
||||||
setting.fpscap.none = Nada
|
setting.fpscap.none = Nada
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Sensibilidad del Control
|
|||||||
setting.saveinterval.name = Intervalo del Auto-guardado
|
setting.saveinterval.name = Intervalo del Auto-guardado
|
||||||
setting.seconds = {0} Segundos
|
setting.seconds = {0} Segundos
|
||||||
setting.fullscreen.name = Pantalla Completa
|
setting.fullscreen.name = Pantalla Completa
|
||||||
setting.multithread.name = Multiproceso
|
|
||||||
setting.fps.name = Mostrar FPS
|
setting.fps.name = Mostrar FPS
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = Mostrar Energía de los Láseres
|
setting.lasers.name = Mostrar Energía de los Láseres
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = hordas
|
|||||||
mode.waves.description = El modo normal. con recursos limitados y entrada de hordas automática.
|
mode.waves.description = El modo normal. con recursos limitados y entrada de hordas automática.
|
||||||
mode.sandbox.name = sandbox
|
mode.sandbox.name = sandbox
|
||||||
mode.sandbox.description = Recursos ilimitados y sin temporizador para las hordas.
|
mode.sandbox.description = Recursos ilimitados y sin temporizador para las hordas.
|
||||||
mode.custom.warning = Ten en cuenta que los bloques no pueden usarse en partidas personalizadas hasta que se desbloqueen en sectores.\n\n[LIGHT_GRAY]Si no desbloqueaste ningún bloque, ningno aparecerá.
|
|
||||||
mode.custom.warning.read = Solo para asegurar que lo has leído:\n[scarlet]¡LOS DESBLOQUEOS EN PARTIDAS PERSONALIZADAS NO ESTÁN DISPONIBLES EN LOS SECTORES U OTROS MODOS DE JUEGO!\n\n[LIGHT_GRAY](Ojalá esto no fuera necesario, pero parece que lo es)
|
|
||||||
mode.freebuild.name = construcción libre
|
mode.freebuild.name = construcción libre
|
||||||
mode.freebuild.description = recursos limitados y no hay temporizador para las hordas.
|
mode.freebuild.description = recursos limitados y no hay temporizador para las hordas.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = Non
|
|||||||
text.info.title = Info
|
text.info.title = Info
|
||||||
text.error.title = [crimson]Une erreur s'est produite
|
text.error.title = [crimson]Une erreur s'est produite
|
||||||
text.error.crashtitle = Une erreur s'est produite
|
text.error.crashtitle = Une erreur s'est produite
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Info sur le bloc
|
text.blocks.blockinfo = Info sur le bloc
|
||||||
text.blocks.powercapacity = capacité d'énergie
|
text.blocks.powercapacity = capacité d'énergie
|
||||||
text.blocks.powershot = Énergie/Tir
|
text.blocks.powershot = Énergie/Tir
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Liquide de refroidissement
|
|||||||
text.blocks.coolantuse = Quantité de liquide de refroidissement utilisée
|
text.blocks.coolantuse = Quantité de liquide de refroidissement utilisée
|
||||||
text.blocks.inputliquidfuel = Carburant liquide
|
text.blocks.inputliquidfuel = Carburant liquide
|
||||||
text.blocks.liquidfueluse = Quantité de carburant liquide utilisé
|
text.blocks.liquidfueluse = Quantité de carburant liquide utilisé
|
||||||
text.blocks.explosive = Hautement explosif!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Santé
|
text.blocks.health = Santé
|
||||||
text.blocks.inaccuracy = Précision
|
text.blocks.inaccuracy = Précision
|
||||||
text.blocks.shots = Tir
|
text.blocks.shots = Tir
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Liquides
|
|||||||
text.category.items = Objets
|
text.category.items = Objets
|
||||||
text.category.crafting = Fabrication
|
text.category.crafting = Fabrication
|
||||||
text.category.shooting = Défense
|
text.category.shooting = Défense
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Visée automatique
|
setting.autotarget.name = Visée automatique
|
||||||
setting.fpscap.name = Max FPS
|
setting.fpscap.name = Max FPS
|
||||||
setting.fpscap.none = None
|
setting.fpscap.none = None
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Sensibilité de la manette
|
|||||||
setting.saveinterval.name = Intervalle des sauvegardes auto
|
setting.saveinterval.name = Intervalle des sauvegardes auto
|
||||||
setting.seconds = {0} secondes
|
setting.seconds = {0} secondes
|
||||||
setting.fullscreen.name = Plein écran
|
setting.fullscreen.name = Plein écran
|
||||||
setting.multithread.name = Multithreading [scarlet] (instable!)
|
|
||||||
setting.fps.name = Afficher FPS
|
setting.fps.name = Afficher FPS
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = Afficher les rayons des lasers
|
setting.lasers.name = Afficher les rayons des lasers
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = Vagues
|
|||||||
mode.waves.description = le mode de jeu normal. Ressource limitée et vagues d'ennemis.
|
mode.waves.description = le mode de jeu normal. Ressource limitée et vagues d'ennemis.
|
||||||
mode.sandbox.name = bac à sable
|
mode.sandbox.name = bac à sable
|
||||||
mode.sandbox.description = Ressources infinies et pas de timer pour les vagues.
|
mode.sandbox.description = Ressources infinies et pas de timer pour les vagues.
|
||||||
mode.custom.warning = Notez que les blocs débloqués en partie personnalisées ne sont pas conservés pour les secteurs.\n\n[LIGHT_GRAY]En mode bac à sable, seul les blocs débloqués en mode secteur peuvent être utilisés.
|
|
||||||
mode.custom.warning.read = Simplement pour vérifier que vous l'avez lu :\n[scarlet]CE QUI EST DEBLOQUE LORS DES PARITES PERSONNALISEES NE L'EST POUR LES SECTEURS OU LES AUTRES MODES DE JEU!\n\n[LIGHT_GRAY](J'aurais souhaité que ce ne soit pas nécessaire, mais ça a l'air de l'être )
|
|
||||||
mode.freebuild.name = construction libre
|
mode.freebuild.name = construction libre
|
||||||
mode.freebuild.description = Ressource limitée et pas de timer pour les vagues.
|
mode.freebuild.description = Ressource limitée et pas de timer pour les vagues.
|
||||||
mode.pvp.name = JcJ
|
mode.pvp.name = JcJ
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ text.mission.linknode = Reliez le transmetteur énergétique
|
|||||||
text.mission.display = [accent]Mission:\n[LIGHT_GRAY]{0}
|
text.mission.display = [accent]Mission:\n[LIGHT_GRAY]{0}
|
||||||
text.mission.mech = Changer de mécha[accent] {0}[]
|
text.mission.mech = Changer de mécha[accent] {0}[]
|
||||||
text.mission.create = Créez[accent] {0}[]
|
text.mission.create = Créez[accent] {0}[]
|
||||||
text.none = <none>
|
text.none = <Vide>
|
||||||
text.close = Fermer
|
text.close = Fermer
|
||||||
text.quit = Quitter
|
text.quit = Quitter
|
||||||
text.maps = Cartes
|
text.maps = Cartes
|
||||||
@@ -286,6 +286,7 @@ text.no = Non
|
|||||||
text.info.title = Info
|
text.info.title = Info
|
||||||
text.error.title = [crimson]Une erreur s'est produite
|
text.error.title = [crimson]Une erreur s'est produite
|
||||||
text.error.crashtitle = Une erreur s'est produite
|
text.error.crashtitle = Une erreur s'est produite
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Info sur le bloc
|
text.blocks.blockinfo = Info sur le bloc
|
||||||
text.blocks.powercapacity = Capacité d'énergie
|
text.blocks.powercapacity = Capacité d'énergie
|
||||||
text.blocks.powershot = Énergie/Tir
|
text.blocks.powershot = Énergie/Tir
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Liquide de refroidissement
|
|||||||
text.blocks.coolantuse = Quantité de liquide de refroidissement utilisé
|
text.blocks.coolantuse = Quantité de liquide de refroidissement utilisé
|
||||||
text.blocks.inputliquidfuel = Carburant liquide
|
text.blocks.inputliquidfuel = Carburant liquide
|
||||||
text.blocks.liquidfueluse = Quantité de carburant liquide utilisé
|
text.blocks.liquidfueluse = Quantité de carburant liquide utilisé
|
||||||
text.blocks.explosive = Hautement explosif !
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Santé
|
text.blocks.health = Santé
|
||||||
text.blocks.inaccuracy = Précision
|
text.blocks.inaccuracy = Précision
|
||||||
text.blocks.shots = Tirs
|
text.blocks.shots = Tirs
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Liquides
|
|||||||
text.category.items = Objets
|
text.category.items = Objets
|
||||||
text.category.crafting = Fabrication
|
text.category.crafting = Fabrication
|
||||||
text.category.shooting = Défense
|
text.category.shooting = Défense
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Visée automatique
|
setting.autotarget.name = Visée automatique
|
||||||
setting.fpscap.name = Max FPS
|
setting.fpscap.name = Max FPS
|
||||||
setting.fpscap.none = Vide
|
setting.fpscap.none = Vide
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Contôle de la sensibilité
|
|||||||
setting.saveinterval.name = Intervalle des sauvegardes auto
|
setting.saveinterval.name = Intervalle des sauvegardes auto
|
||||||
setting.seconds = {0} Secondes
|
setting.seconds = {0} Secondes
|
||||||
setting.fullscreen.name = Plein écran
|
setting.fullscreen.name = Plein écran
|
||||||
setting.multithread.name = Multithreading
|
|
||||||
setting.fps.name = Afficher FPS
|
setting.fps.name = Afficher FPS
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = Afficher les rayons des lasers
|
setting.lasers.name = Afficher les rayons des lasers
|
||||||
@@ -368,7 +370,7 @@ setting.musicvol.name = Volume de la musique
|
|||||||
setting.mutemusic.name = Couper la musique
|
setting.mutemusic.name = Couper la musique
|
||||||
setting.sfxvol.name = Volume des SFX
|
setting.sfxvol.name = Volume des SFX
|
||||||
setting.mutesound.name = Couper les SFX
|
setting.mutesound.name = Couper les SFX
|
||||||
setting.crashreport.name = Send Anonymous Crash Reports
|
setting.crashreport.name = Envoyer des rapports d'incident anonymement.
|
||||||
text.keybind.title = Paramétrer les touches
|
text.keybind.title = Paramétrer les touches
|
||||||
category.general.name = Général
|
category.general.name = Général
|
||||||
category.view.name = Voir
|
category.view.name = Voir
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = Vagues
|
|||||||
mode.waves.description = Le mode normal. Ressources limitées et vagues déclenchées automatiquement.
|
mode.waves.description = Le mode normal. Ressources limitées et vagues déclenchées automatiquement.
|
||||||
mode.sandbox.name = Bac à sable
|
mode.sandbox.name = Bac à sable
|
||||||
mode.sandbox.description = Ressources infinies et pas de compte à rebours pour les vagues.
|
mode.sandbox.description = Ressources infinies et pas de compte à rebours pour les vagues.
|
||||||
mode.custom.warning = Notez que les blocs débloqués en partie personnalisées ne sont pas conservés pour les secteurs.\n\n[LIGHT_GRAY]En mode bac à sable, seul les blocs débloqués en mode secteur peuvent être utilisés.
|
|
||||||
mode.custom.warning.read = Juste pour vous assurer que vous l'avez lu:\n[scarlet]Les déverrouillages dans les jeux personnalisés ne sont pas transférés aux secteurs ou à d'autres modes!\n\n[LIGHT_GRAY](J'aimerais que ce ne soit pas nécessaire, mais apparemment c'est le cas)
|
|
||||||
mode.freebuild.name = Construction libre
|
mode.freebuild.name = Construction libre
|
||||||
mode.freebuild.description = Ressources limitées et pas de compte à rebours pour les vagues.
|
mode.freebuild.description = Ressources limitées et pas de compte à rebours pour les vagues.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
@@ -493,7 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Compétence: {0}
|
|||||||
text.liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique {0}
|
text.liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique {0}
|
||||||
text.liquid.viscosity = [LIGHT_GRAY]Viscosité: {0}
|
text.liquid.viscosity = [LIGHT_GRAY]Viscosité: {0}
|
||||||
text.liquid.temperature = [LIGHT_GRAY]Température: {0}
|
text.liquid.temperature = [LIGHT_GRAY]Température: {0}
|
||||||
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
|
block.constructing = {0}\n[LIGHT_GRAY](En construction)
|
||||||
block.spawn.name = Générateur d'ennemi
|
block.spawn.name = Générateur d'ennemi
|
||||||
block.core.name = Base
|
block.core.name = Base
|
||||||
block.metalfloor.name = Sol en métal
|
block.metalfloor.name = Sol en métal
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = No
|
|||||||
text.info.title = [accent]Info
|
text.info.title = [accent]Info
|
||||||
text.error.title = [crimson]Telah terjadi kesalahan
|
text.error.title = [crimson]Telah terjadi kesalahan
|
||||||
text.error.crashtitle = Telah terjadi kesalahan
|
text.error.crashtitle = Telah terjadi kesalahan
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Info Blok
|
text.blocks.blockinfo = Info Blok
|
||||||
text.blocks.powercapacity = Kapasitas Tenaga
|
text.blocks.powercapacity = Kapasitas Tenaga
|
||||||
text.blocks.powershot = Tenaga/tembakan
|
text.blocks.powershot = Tenaga/tembakan
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Coolant
|
|||||||
text.blocks.coolantuse = Coolant Use
|
text.blocks.coolantuse = Coolant Use
|
||||||
text.blocks.inputliquidfuel = Fuel Liquid
|
text.blocks.inputliquidfuel = Fuel Liquid
|
||||||
text.blocks.liquidfueluse = Liquid Fuel Use
|
text.blocks.liquidfueluse = Liquid Fuel Use
|
||||||
text.blocks.explosive = Mudah meledak!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Darah
|
text.blocks.health = Darah
|
||||||
text.blocks.inaccuracy = Ketidaktelitian
|
text.blocks.inaccuracy = Ketidaktelitian
|
||||||
text.blocks.shots = Tembakan
|
text.blocks.shots = Tembakan
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Liquids
|
|||||||
text.category.items = Items
|
text.category.items = Items
|
||||||
text.category.crafting = Crafting
|
text.category.crafting = Crafting
|
||||||
text.category.shooting = Shooting
|
text.category.shooting = Shooting
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Auto-Target
|
setting.autotarget.name = Auto-Target
|
||||||
setting.fpscap.name = Max FPS
|
setting.fpscap.name = Max FPS
|
||||||
setting.fpscap.none = None
|
setting.fpscap.none = None
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Sensitivitas Pengendali
|
|||||||
setting.saveinterval.name = Waktu Simpan Otomatis
|
setting.saveinterval.name = Waktu Simpan Otomatis
|
||||||
setting.seconds = {0} Detik
|
setting.seconds = {0} Detik
|
||||||
setting.fullscreen.name = Layar Penuh
|
setting.fullscreen.name = Layar Penuh
|
||||||
setting.multithread.name = Multithreading
|
|
||||||
setting.fps.name = Tunjukkan FPS
|
setting.fps.name = Tunjukkan FPS
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = Tampilkan Laser Tenaga
|
setting.lasers.name = Tampilkan Laser Tenaga
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = gelombang
|
|||||||
mode.waves.description = the normal mode. limited resources and automatic incoming waves.
|
mode.waves.description = the normal mode. limited resources and automatic incoming waves.
|
||||||
mode.sandbox.name = sandbox
|
mode.sandbox.name = sandbox
|
||||||
mode.sandbox.description = infinite resources and no timer for waves.
|
mode.sandbox.description = infinite resources and no timer for waves.
|
||||||
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
|
|
||||||
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
|
|
||||||
mode.freebuild.name = freebuild
|
mode.freebuild.name = freebuild
|
||||||
mode.freebuild.description = limited resources and no timer for waves.
|
mode.freebuild.description = limited resources and no timer for waves.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = No
|
|||||||
text.info.title = [accent] Info
|
text.info.title = [accent] Info
|
||||||
text.error.title = [crimson]Si è verificato un errore
|
text.error.title = [crimson]Si è verificato un errore
|
||||||
text.error.crashtitle = Si è verificato un errore
|
text.error.crashtitle = Si è verificato un errore
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = info sul blocco
|
text.blocks.blockinfo = info sul blocco
|
||||||
text.blocks.powercapacity = Capacità Energetica
|
text.blocks.powercapacity = Capacità Energetica
|
||||||
text.blocks.powershot = Danno/Colpo
|
text.blocks.powershot = Danno/Colpo
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Refrigerante
|
|||||||
text.blocks.coolantuse = uso refrigerante
|
text.blocks.coolantuse = uso refrigerante
|
||||||
text.blocks.inputliquidfuel = carburante liquido
|
text.blocks.inputliquidfuel = carburante liquido
|
||||||
text.blocks.liquidfueluse = Utilizzo carburante liquido
|
text.blocks.liquidfueluse = Utilizzo carburante liquido
|
||||||
text.blocks.explosive = Altamente esplosivo!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Salute
|
text.blocks.health = Salute
|
||||||
text.blocks.inaccuracy = Inaccuratezza
|
text.blocks.inaccuracy = Inaccuratezza
|
||||||
text.blocks.shots = Colpi
|
text.blocks.shots = Colpi
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Liquidi
|
|||||||
text.category.items = Oggetti
|
text.category.items = Oggetti
|
||||||
text.category.crafting = Produzione
|
text.category.crafting = Produzione
|
||||||
text.category.shooting = Potenza di fuoco
|
text.category.shooting = Potenza di fuoco
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Auto-Target
|
setting.autotarget.name = Auto-Target
|
||||||
setting.fpscap.name = Limite FPS
|
setting.fpscap.name = Limite FPS
|
||||||
setting.fpscap.none = Niente
|
setting.fpscap.none = Niente
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Sensibilità del controller
|
|||||||
setting.saveinterval.name = Intervallo di salvataggio automatico
|
setting.saveinterval.name = Intervallo di salvataggio automatico
|
||||||
setting.seconds = {0} Secondi
|
setting.seconds = {0} Secondi
|
||||||
setting.fullscreen.name = Schermo Intero
|
setting.fullscreen.name = Schermo Intero
|
||||||
setting.multithread.name = multithreading
|
|
||||||
setting.fps.name = Mostra FPS
|
setting.fps.name = Mostra FPS
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = Mostra Laser Energetici
|
setting.lasers.name = Mostra Laser Energetici
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = ondate
|
|||||||
mode.waves.description = modalità normale. risorse limitate e ondate automatiche.
|
mode.waves.description = modalità normale. risorse limitate e ondate automatiche.
|
||||||
mode.sandbox.name = Sandbox
|
mode.sandbox.name = Sandbox
|
||||||
mode.sandbox.description = risorse infinite e nessun timer per le ondate.
|
mode.sandbox.description = risorse infinite e nessun timer per le ondate.
|
||||||
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
|
|
||||||
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
|
|
||||||
mode.freebuild.name = freebuild
|
mode.freebuild.name = freebuild
|
||||||
mode.freebuild.description = risorse limitate e nessun timer per le ondate.
|
mode.freebuild.description = risorse limitate e nessun timer per le ondate.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = いいえ
|
|||||||
text.info.title = 情報
|
text.info.title = 情報
|
||||||
text.error.title = [crimson]エラーが発生しました
|
text.error.title = [crimson]エラーが発生しました
|
||||||
text.error.crashtitle = エラーが発生しました
|
text.error.crashtitle = エラーが発生しました
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = ブロック情報
|
text.blocks.blockinfo = ブロック情報
|
||||||
text.blocks.powercapacity = 電力容量
|
text.blocks.powercapacity = 電力容量
|
||||||
text.blocks.powershot = 電力/ショット
|
text.blocks.powershot = 電力/ショット
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = 冷却
|
|||||||
text.blocks.coolantuse = 冷却使用量
|
text.blocks.coolantuse = 冷却使用量
|
||||||
text.blocks.inputliquidfuel = 液体燃料
|
text.blocks.inputliquidfuel = 液体燃料
|
||||||
text.blocks.liquidfueluse = 液体燃料使用量
|
text.blocks.liquidfueluse = 液体燃料使用量
|
||||||
text.blocks.explosive = 高い爆発性!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = 耐久値
|
text.blocks.health = 耐久値
|
||||||
text.blocks.inaccuracy = 不正確
|
text.blocks.inaccuracy = 不正確
|
||||||
text.blocks.shots = ショット
|
text.blocks.shots = ショット
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = 液体
|
|||||||
text.category.items = アイテム
|
text.category.items = アイテム
|
||||||
text.category.crafting = 製作速度
|
text.category.crafting = 製作速度
|
||||||
text.category.shooting = 攻撃速度
|
text.category.shooting = 攻撃速度
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = 自動ターゲット
|
setting.autotarget.name = 自動ターゲット
|
||||||
setting.fpscap.name = 最大FPS
|
setting.fpscap.name = 最大FPS
|
||||||
setting.fpscap.none = なし
|
setting.fpscap.none = なし
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = 操作感度
|
|||||||
setting.saveinterval.name = 自動保存間隔
|
setting.saveinterval.name = 自動保存間隔
|
||||||
setting.seconds = {0} 秒
|
setting.seconds = {0} 秒
|
||||||
setting.fullscreen.name = フルスクリーン
|
setting.fullscreen.name = フルスクリーン
|
||||||
setting.multithread.name = マルチスレッド
|
|
||||||
setting.fps.name = FPSを表示
|
setting.fps.name = FPSを表示
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = 電力レーザーを表示
|
setting.lasers.name = 電力レーザーを表示
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = ウェーブ
|
|||||||
mode.waves.description = ノーマルモードです。限られた資源でウェーブが自動的に始まります。
|
mode.waves.description = ノーマルモードです。限られた資源でウェーブが自動的に始まります。
|
||||||
mode.sandbox.name = サンドボックス
|
mode.sandbox.name = サンドボックス
|
||||||
mode.sandbox.description = 無限の資源でウェーブを自由に始められます。
|
mode.sandbox.description = 無限の資源でウェーブを自由に始められます。
|
||||||
mode.custom.warning = [scarlet]カスタムゲームまたは、サーバ内でのアンロックは保存されません。[]\n\nアンロックするには区域でプレイしてください。
|
|
||||||
mode.custom.warning.read = 必ずお読みください:\n[scarlet]カスタムゲーム内でのアンロックは区域やほかのモードには影響しません!\n\n[LIGHT_GRAY](多分必要ないと思いますが)
|
|
||||||
mode.freebuild.name = フリービルド
|
mode.freebuild.name = フリービルド
|
||||||
mode.freebuild.description = 限られた資源でウェーブを自由に始められます。
|
mode.freebuild.description = 限られた資源でウェーブを自由に始められます。
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ text.link.wiki.description = 공식 Mindustry 위키 (영어)
|
|||||||
text.linkfail = 링크를 여는데 실패했습니다! URL이 기기의 클립보드에 복사되었습니다.
|
text.linkfail = 링크를 여는데 실패했습니다! URL이 기기의 클립보드에 복사되었습니다.
|
||||||
text.gameover = 코어가 터졌습니다. 게임 오버!
|
text.gameover = 코어가 터졌습니다. 게임 오버!
|
||||||
text.gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
|
text.gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
|
||||||
text.sector.gameover = 이 구역을 공략하는데 실패했습니다. 포기 하시겠습니까?
|
text.sector.gameover = 이 지역을 공략하는데 실패했습니다. 포기 하시겠습니까?
|
||||||
text.sector.retry = 아니오
|
text.sector.retry = 아니오
|
||||||
text.highscore = [YELLOW]최고점수 달성!
|
text.highscore = [YELLOW]최고점수 달성!
|
||||||
text.wave.lasted = [accent]{0}[] 까지 버티셨습니다.
|
text.wave.lasted = [accent]{0}[] 까지 버티셨습니다.
|
||||||
text.level.highscore = 최고 점수 : [accent]{0}
|
text.level.highscore = 최고 점수 : [accent]{0}
|
||||||
text.level.delete.title = 삭제 확인
|
text.level.delete.title = 삭제 확인
|
||||||
text.map.delete = 정말로 "[orange]{0}[]" 맵을 삭제하시겠습니까?
|
text.map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까?
|
||||||
text.level.select = 맵 선택
|
text.level.select = 맵 선택
|
||||||
text.level.mode = 게임모드 :
|
text.level.mode = 게임모드 :
|
||||||
text.construction.desktop = PC 에서의 조작 방법이 변경되었습니다.\n블록 선택을 해제하거나 건설을 중지하려면 [accent]스페이스 바[]를 누르세요.
|
text.construction.desktop = PC 에서의 조작 방법이 변경되었습니다.\n블록 선택을 해제하거나 건설을 중지하려면 [accent]스페이스 바[]를 누르세요.
|
||||||
@@ -33,12 +33,12 @@ text.loadgame = 게임 불러오기
|
|||||||
text.joingame = 멀티플레이
|
text.joingame = 멀티플레이
|
||||||
text.addplayers = 플레이어 추가/제거
|
text.addplayers = 플레이어 추가/제거
|
||||||
text.customgame = 커스텀 게임
|
text.customgame = 커스텀 게임
|
||||||
text.sectors = 싱글 플레이
|
text.sectors = 지역 플레이
|
||||||
text.sector = 구역 : [LIGHT_GRAY]{0}
|
text.sector = 지역 : [LIGHT_GRAY]{0}
|
||||||
text.sector.time = 시간 : [LIGHT_GRAY]{0}
|
text.sector.time = 시간 : [LIGHT_GRAY]{0}
|
||||||
text.sector.deploy = 시작
|
text.sector.deploy = 시작
|
||||||
text.sector.abandon = 초기화
|
text.sector.abandon = 초기화
|
||||||
text.sector.abandon.confirm = 정말로 이 구역의 모든 진행상활을 초기화 하겠습니까?\n이 작업은 되돌릴 수 없습니다!
|
text.sector.abandon.confirm = 정말로 이 지역의 모든 진행상황을 초기화 하겠습니까?\n이 작업은 되돌릴 수 없습니다!
|
||||||
text.sector.resume = 계속하기
|
text.sector.resume = 계속하기
|
||||||
text.sector.locked = [scarlet][[완료안됨]
|
text.sector.locked = [scarlet][[완료안됨]
|
||||||
text.sector.unexplored = [accent][[탐색안됨]
|
text.sector.unexplored = [accent][[탐색안됨]
|
||||||
@@ -47,21 +47,21 @@ text.mission = 목표 : [LIGHT_GRAY] {0}
|
|||||||
text.mission.main = 주요 목표 : [LIGHT_GRAY]{0}
|
text.mission.main = 주요 목표 : [LIGHT_GRAY]{0}
|
||||||
text.mission.info = 미션 정보
|
text.mission.info = 미션 정보
|
||||||
text.mission.complete = 미션 성공!
|
text.mission.complete = 미션 성공!
|
||||||
text.mission.complete.body = 구역 {0},{1} 클리어.
|
text.mission.complete.body = 지역 {0},{1} 클리어.
|
||||||
text.mission.wave = [accent]{0}/{1}[] 단계동안 생존하세요.남은 시간 {2}\n
|
text.mission.wave = [accent]{0}/{1}[] 단계 생존\n{2}초 남음
|
||||||
text.mission.wave.enemies = [accent] {0}/{1} []단계를 생존하세요.\n{2}마리 남음
|
text.mission.wave.enemies = [accent]{0}/{1} []단계 생존\n{2}마리 남음
|
||||||
text.mission.wave.enemy = [accent] {0}/{1} []단계를 생존하세요.\n{2}마리 남음
|
text.mission.wave.enemy = [accent]{0}/{1} []단계 생존\n{2}마리 남음
|
||||||
text.mission.wave.menu = [accent]{0}[] 단계
|
text.mission.wave.menu = [accent]{0}[] 단계
|
||||||
text.mission.battle = 적 코어를 파괴하세요.
|
text.mission.battle = 적 코어를 파괴하세요
|
||||||
text.mission.resource.menu = {0} {1}개 수집
|
text.mission.resource.menu = {0} {1}개 수집
|
||||||
text.mission.resource = {0} 자원을 수집하세요 :\n[accent]{1}/{2}[]
|
text.mission.resource = {0} 을(를) 수집하세요\n[accent]{1}/{2}
|
||||||
text.mission.block = {0} 를 만드세요
|
text.mission.block = {0} 를 만드세요
|
||||||
text.mission.unit = {0} 유닛을 만드세요
|
text.mission.unit = {0} 유닛을 만드세요
|
||||||
text.mission.command = 유닛에게 {0} 명령을 보내세요
|
text.mission.command = 유닛에게 {0} 명령을 보내세요
|
||||||
text.mission.linknode = 전력 노드를 연결하세요.
|
text.mission.linknode = 전력 노드를 연결하세요
|
||||||
text.mission.display = [accent]미션 :\n[LIGHT_GRAY]{0}
|
text.mission.display = [accent]목표 : [LIGHT_GRAY]{0}
|
||||||
text.mission.mech = [accent]{0}[] 기체로 바꾸세요
|
text.mission.mech = [accent]{0}[] 기체로 바꾸세요
|
||||||
text.mission.create = [accent]{0}[] 자원을 만드세요
|
text.mission.create = [accent]{0}[] 을(를)설치하세요.
|
||||||
text.none = <없음>
|
text.none = <없음>
|
||||||
text.close = 닫기
|
text.close = 닫기
|
||||||
text.quit = 나가기
|
text.quit = 나가기
|
||||||
@@ -79,8 +79,8 @@ text.players.single = 현재 {0}명만 있음.
|
|||||||
text.server.closing = [accent]서버 닫는중...
|
text.server.closing = [accent]서버 닫는중...
|
||||||
text.server.kicked.kick = 서버에서 추방되었습니다!
|
text.server.kicked.kick = 서버에서 추방되었습니다!
|
||||||
text.server.kicked.serverClose = 서버 종료됨.
|
text.server.kicked.serverClose = 서버 종료됨.
|
||||||
text.server.kicked.sectorComplete = 구역 클리어.
|
text.server.kicked.sectorComplete = 지역 클리어.
|
||||||
text.server.kicked.sectorComplete.text = 임무 성공.\n서버가 다음구역 맵으로 이동되었습니다.
|
text.server.kicked.sectorComplete.text = 임무 성공.\n서버가 다음지역 맵으로 이동되었습니다.
|
||||||
text.server.kicked.clientOutdated = 오래된 버전의 클라이언트 입니다! 게임을 업데이트 하세요!
|
text.server.kicked.clientOutdated = 오래된 버전의 클라이언트 입니다! 게임을 업데이트 하세요!
|
||||||
text.server.kicked.serverOutdated = 오래된 버전의 서버입니다! 서버 호스트 관리자에게 문의하세요!
|
text.server.kicked.serverOutdated = 오래된 버전의 서버입니다! 서버 호스트 관리자에게 문의하세요!
|
||||||
text.server.kicked.banned = 뭘 하셨는지는 모르겠지만, 이제 영원히 서버에 접속할 수 없습니다.
|
text.server.kicked.banned = 뭘 하셨는지는 모르겠지만, 이제 영원히 서버에 접속할 수 없습니다.
|
||||||
@@ -138,7 +138,7 @@ text.connecting.data = [accent]맵 데이터 다운로드중...
|
|||||||
text.server.port = 포트 :
|
text.server.port = 포트 :
|
||||||
text.server.addressinuse = 이 주소는 이미 사용중입니다!
|
text.server.addressinuse = 이 주소는 이미 사용중입니다!
|
||||||
text.server.invalidport = 포트 번호가 잘못되었습니다.
|
text.server.invalidport = 포트 번호가 잘못되었습니다.
|
||||||
text.server.error = [crimson]{0}[orange]서버를 여는데 오류가 발생했습니다.[]
|
text.server.error = [crimson]{0}[accent]서버를 여는데 오류가 발생했습니다.[]
|
||||||
text.save.old = 이 저장파일은 이전 버전의 게임용이며, 지금은 사용할 수 없습니다. \n\n[LIGHT_GRAY]4.0 정식때 이전 게임버전에서 만든 저장파일과 호환됩니다.
|
text.save.old = 이 저장파일은 이전 버전의 게임용이며, 지금은 사용할 수 없습니다. \n\n[LIGHT_GRAY]4.0 정식때 이전 게임버전에서 만든 저장파일과 호환됩니다.
|
||||||
text.save.new = 새로 저장
|
text.save.new = 새로 저장
|
||||||
text.save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까?
|
text.save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까?
|
||||||
@@ -149,17 +149,17 @@ text.savefail = 게임을 저장하지 못했습니다!
|
|||||||
text.save.delete.confirm = 이 저장파일을 삭제 하시겠습니까?
|
text.save.delete.confirm = 이 저장파일을 삭제 하시겠습니까?
|
||||||
text.save.delete = 삭제
|
text.save.delete = 삭제
|
||||||
text.save.export = 저장파일 내보내기
|
text.save.export = 저장파일 내보내기
|
||||||
text.save.import.invalid = [orange]파일이 잘못되었습니다!
|
text.save.import.invalid = [accent]파일이 잘못되었습니다!
|
||||||
text.save.import.fail = [crimson]저장파일을 불러오지 못함 : [orange]{0}
|
text.save.import.fail = [crimson]저장파일을 불러오지 못함 : [accent]{0}
|
||||||
text.save.export.fail = [crimson]저장파일을 내보내지 못함 : [orange]{0}
|
text.save.export.fail = [crimson]저장파일을 내보내지 못함 : [accent]{0}
|
||||||
text.save.import = 저장파일 불러오기
|
text.save.import = 저장파일 불러오기
|
||||||
text.save.newslot = 저장 파일이름 :
|
text.save.newslot = 저장 파일이름 :
|
||||||
text.save.rename = 이름 변경
|
text.save.rename = 이름 변경
|
||||||
text.save.rename.text = 새 이름 :
|
text.save.rename.text = 새 이름 :
|
||||||
text.selectslot = 저장슬롯을 선택하십시오.
|
text.selectslot = 저장슬롯을 선택하십시오.
|
||||||
text.slot = [accent]{0}번째 슬롯
|
text.slot = [accent]{0}번째 슬롯
|
||||||
text.save.corrupted = [orange]세이브 파일이 손상되었거나 잘못된 파일입니다! 만약 게임을 업데이트 했다면 이것은 아마 저장 형식 변경일 것이고, 이것은 버그가 [scarlet]아닙니다[].
|
text.save.corrupted = [accent]세이브 파일이 손상되었거나 잘못된 파일입니다! 만약 게임을 업데이트 했다면 이것은 아마 저장 형식 변경일 것이고, 이것은 버그가 [scarlet]아닙니다[].
|
||||||
text.sector.corrupted = [orange]저장 파일에서 구역을 발견했으나 불러오지 못했습니다.\n새로 생성되었습니다.
|
text.sector.corrupted = [accent]저장 파일에서 지역을 발견했으나 불러오지 못했습니다.\n새로 생성되었습니다.
|
||||||
text.empty = <비어있음>
|
text.empty = <비어있음>
|
||||||
text.on = 켜기
|
text.on = 켜기
|
||||||
text.off = 끄기
|
text.off = 끄기
|
||||||
@@ -180,15 +180,15 @@ text.back = 뒤로가기
|
|||||||
text.quit.confirm = 정말로 종료하시겠습니까?
|
text.quit.confirm = 정말로 종료하시겠습니까?
|
||||||
text.changelog.title = 변경사항
|
text.changelog.title = 변경사항
|
||||||
text.changelog.loading = 변경사항 가져오는중...
|
text.changelog.loading = 변경사항 가져오는중...
|
||||||
text.changelog.error.android = [orange]게임 변경사항은 가끔 Android 4.4 이하에서 작동하지 않습니다. 이것은 내부 Android 버그 때문입니다.
|
text.changelog.error.android = [accent]게임 변경사항은 가끔 Android 4.4 이하에서 작동하지 않습니다. 이것은 내부 Android 버그 때문입니다.
|
||||||
text.changelog.error.ios = [orange]현재 iOS에서는 변경 사항을 지원하지 않습니다.
|
text.changelog.error.ios = [accent]현재 iOS에서는 변경 사항을 지원하지 않습니다.
|
||||||
text.changelog.error = [scarlet]게임 변경사항을 가져오는 중 오류가 발생했습니다![]\n인터넷 연결을 확인하십시오.
|
text.changelog.error = [scarlet]게임 변경사항을 가져오는 중 오류가 발생했습니다![]\n인터넷 연결을 확인하십시오.
|
||||||
text.changelog.current = [orange][[현재 버전]
|
text.changelog.current = [accent][[현재 버전]
|
||||||
text.changelog.latest = [orange][[최신 버전]
|
text.changelog.latest = [accent][[최신 버전]
|
||||||
text.loading = [accent]불러오는중...
|
text.loading = [accent]불러오는중...
|
||||||
text.saving = [accent]저장중...
|
text.saving = [accent]저장중...
|
||||||
text.wave = [orange]{0}단계
|
text.wave = [accent]{0}단계
|
||||||
text.wave.waiting = 다음 단계 시작까지 {0}초
|
text.wave.waiting = 남은 시간 : [green]{0}초[]
|
||||||
text.waiting = [LIGHT_GRAY]대기중...
|
text.waiting = [LIGHT_GRAY]대기중...
|
||||||
text.waiting.players = 다른 플레이어를 기다리는 중..
|
text.waiting.players = 다른 플레이어를 기다리는 중..
|
||||||
text.wave.enemies = [LIGHT_GRAY]{0} 마리 남았음
|
text.wave.enemies = [LIGHT_GRAY]{0} 마리 남았음
|
||||||
@@ -214,8 +214,8 @@ text.editor.description = 설명 :
|
|||||||
text.editor.name = 이름 :
|
text.editor.name = 이름 :
|
||||||
text.editor.teams = 팀
|
text.editor.teams = 팀
|
||||||
text.editor.elevation = 지형 높이
|
text.editor.elevation = 지형 높이
|
||||||
text.editor.errorimageload = [orange]{0}[] 파일을 불러오는데 오류가 발생했습니다.
|
text.editor.errorimageload = [accent]{0}[] 파일을 불러오는데 오류가 발생했습니다.
|
||||||
text.editor.errorimagesave = [orange]{0}[] 파일 저장중 오류가 발생했습니다.
|
text.editor.errorimagesave = [accent]{0}[] 파일 저장중 오류가 발생했습니다.
|
||||||
text.editor.generate = 생성
|
text.editor.generate = 생성
|
||||||
text.editor.resize = 맵 크기조정
|
text.editor.resize = 맵 크기조정
|
||||||
text.editor.loadmap = 맵 불러오기
|
text.editor.loadmap = 맵 불러오기
|
||||||
@@ -259,7 +259,7 @@ text.tutorial = 게임 방법
|
|||||||
text.editor = 편집기
|
text.editor = 편집기
|
||||||
text.mapeditor = 맵 편집기
|
text.mapeditor = 맵 편집기
|
||||||
text.donate = 기부
|
text.donate = 기부
|
||||||
text.connectfail = [crimson]{0}[orange] 서버에 연결하지 못했습니다.[]
|
text.connectfail = [crimson]{0}[accent] 서버에 연결하지 못했습니다.[]
|
||||||
text.error.unreachable = 서버에 연결하지 못했습니다.
|
text.error.unreachable = 서버에 연결하지 못했습니다.
|
||||||
text.error.invalidaddress = 잘못된 주소입니다.
|
text.error.invalidaddress = 잘못된 주소입니다.
|
||||||
text.error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오.
|
text.error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오.
|
||||||
@@ -273,11 +273,11 @@ text.settings.rebind = 키 재설정
|
|||||||
text.settings.controls = 컨트롤
|
text.settings.controls = 컨트롤
|
||||||
text.settings.game = 게임
|
text.settings.game = 게임
|
||||||
text.settings.sound = 소리
|
text.settings.sound = 소리
|
||||||
text.settings.graphics = 화면
|
text.settings.graphics = 그래픽
|
||||||
text.settings.cleardata = 게임 데이터 초기화...
|
text.settings.cleardata = 게임 데이터 초기화...
|
||||||
text.settings.clear.confirm = 정말로 초기화 하겠습니까?\n이 작업을 되돌릴 수 없습니다!
|
text.settings.clear.confirm = 정말로 초기화 하겠습니까?\n이 작업을 되돌릴 수 없습니다!
|
||||||
text.settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다.
|
text.settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다.
|
||||||
text.settings.clearsectors = 구역 초기화
|
text.settings.clearsectors = 지역 초기화
|
||||||
text.settings.clearunlocks = 잠금 해제 초기화
|
text.settings.clearunlocks = 잠금 해제 초기화
|
||||||
text.settings.clearall = 모두 초기화
|
text.settings.clearall = 모두 초기화
|
||||||
text.paused = 일시 정지
|
text.paused = 일시 정지
|
||||||
@@ -286,6 +286,7 @@ text.no = 아니오
|
|||||||
text.info.title = [accent]정보
|
text.info.title = [accent]정보
|
||||||
text.error.title = [crimson]오류가 발생했습니다.
|
text.error.title = [crimson]오류가 발생했습니다.
|
||||||
text.error.crashtitle = 오류가 발생했습니다.
|
text.error.crashtitle = 오류가 발생했습니다.
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = 블록 정보
|
text.blocks.blockinfo = 블록 정보
|
||||||
text.blocks.powercapacity = 최대 전력 용량
|
text.blocks.powercapacity = 최대 전력 용량
|
||||||
text.blocks.powershot = 1발당 전력 소모량
|
text.blocks.powershot = 1발당 전력 소모량
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = 냉각제
|
|||||||
text.blocks.coolantuse = 냉각수 사용
|
text.blocks.coolantuse = 냉각수 사용
|
||||||
text.blocks.inputliquidfuel = 연료 액
|
text.blocks.inputliquidfuel = 연료 액
|
||||||
text.blocks.liquidfueluse = 액체 연료 사용
|
text.blocks.liquidfueluse = 액체 연료 사용
|
||||||
text.blocks.explosive = 이 블록이 터지면 주변 블록과 같이 자폭을 합니다!!
|
text.blocks.boostitem = 가속 아이템
|
||||||
|
text.blocks.boostliquid = 가속 액체
|
||||||
text.blocks.health = 체력
|
text.blocks.health = 체력
|
||||||
text.blocks.inaccuracy = 오차각
|
text.blocks.inaccuracy = 오차각
|
||||||
text.blocks.shots = 발포 횟수
|
text.blocks.shots = 발포 횟수
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = 액체
|
|||||||
text.category.items = 아이템
|
text.category.items = 아이템
|
||||||
text.category.crafting = 제작
|
text.category.crafting = 제작
|
||||||
text.category.shooting = 사격
|
text.category.shooting = 사격
|
||||||
|
text.category.optional = 선택적 향상
|
||||||
setting.autotarget.name = 자동 조준
|
setting.autotarget.name = 자동 조준
|
||||||
setting.fpscap.name = 최대 FPS
|
setting.fpscap.name = 최대 FPS
|
||||||
setting.fpscap.none = 없음
|
setting.fpscap.none = 없음
|
||||||
@@ -351,25 +354,24 @@ setting.difficulty.training = 훈련
|
|||||||
setting.difficulty.easy = 쉬움
|
setting.difficulty.easy = 쉬움
|
||||||
setting.difficulty.normal = 보통
|
setting.difficulty.normal = 보통
|
||||||
setting.difficulty.hard = 어려움
|
setting.difficulty.hard = 어려움
|
||||||
setting.difficulty.insane = 매우 어려움
|
setting.difficulty.insane = [#00ff00]멀[#2efe2e]티[#58fa58]플[#81f781]레[#a9f5a9]이 [#81f781]전[#58fa58]용[]
|
||||||
setting.difficulty.name = 난이도 :
|
setting.difficulty.name = 난이도 :
|
||||||
setting.screenshake.name = 화면 흔들기
|
setting.screenshake.name = 화면 흔들기 강도
|
||||||
setting.effects.name = 화면 효과
|
setting.effects.name = 화면 효과
|
||||||
setting.sensitivity.name = 컨트롤러 감도
|
setting.sensitivity.name = 컨트롤러 감도
|
||||||
setting.saveinterval.name = 자동저장 간격
|
setting.saveinterval.name = 자동저장 간격
|
||||||
setting.seconds = {0}초
|
setting.seconds = {0}초
|
||||||
setting.fullscreen.name = 전체 화면
|
setting.fullscreen.name = 전체 화면
|
||||||
setting.multithread.name = 멀티 스레드
|
|
||||||
setting.fps.name = FPS 표시
|
setting.fps.name = FPS 표시
|
||||||
setting.vsync.name = VSync 활성화
|
setting.vsync.name = VSync 활성화
|
||||||
setting.lasers.name = 파워 레이져 표시
|
setting.lasers.name = 전력 노드 레이저 표시
|
||||||
setting.minimap.name = 미니맵 보기
|
setting.minimap.name = 미니맵 보기
|
||||||
setting.musicvol.name = 음악 크기
|
setting.musicvol.name = 음악 크기
|
||||||
setting.mutemusic.name = 음소거
|
setting.mutemusic.name = 음소거
|
||||||
setting.sfxvol.name = 효과음 크기
|
setting.sfxvol.name = 효과음 크기
|
||||||
setting.mutesound.name = 소리 끄기
|
setting.mutesound.name = 소리 끄기
|
||||||
setting.crashreport.name = 오류 보고서 보내기
|
setting.crashreport.name = 오류 보고서 보내기
|
||||||
text.keybind.title = 키 바인딩
|
text.keybind.title = 조작키 설정
|
||||||
category.general.name = 일반
|
category.general.name = 일반
|
||||||
category.view.name = 보기
|
category.view.name = 보기
|
||||||
category.multiplayer.name = 멀티플레이
|
category.multiplayer.name = 멀티플레이
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = 단계
|
|||||||
mode.waves.description = 이것은 일반 모드입니다. 제한된 자원과 자동으로 다음 단계가 시작됩니다.
|
mode.waves.description = 이것은 일반 모드입니다. 제한된 자원과 자동으로 다음 단계가 시작됩니다.
|
||||||
mode.sandbox.name = 샌드박스
|
mode.sandbox.name = 샌드박스
|
||||||
mode.sandbox.description = 무한한 자원과 다음단계 시작을 위한 타이머가 없습니다.
|
mode.sandbox.description = 무한한 자원과 다음단계 시작을 위한 타이머가 없습니다.
|
||||||
mode.custom.warning = [scarlet]서버에서 잠금해제한 블록은 저장되지 않습니다.[]\n\n구역을 플레이 하여 잠금해제하세요.
|
|
||||||
mode.custom.warning.read = 꼭 읽어보시길 바랍니다 :\n[scarlet]커스텀 게임에서 잠금해제한 블록은 구역 플레이나 다른 모드에서 적용되지 않습니다!\n\n[LIGHT_GRAY](이게 필요하지 않았으면 좋겠는데)
|
|
||||||
mode.freebuild.name = 자유 건축
|
mode.freebuild.name = 자유 건축
|
||||||
mode.freebuild.description = 제한된 자원과 다음단계 시작을 위한 타이머가 없습니다.
|
mode.freebuild.description = 제한된 자원과 다음단계 시작을 위한 타이머가 없습니다.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
@@ -423,8 +423,8 @@ item.lead.name = 납
|
|||||||
item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
|
item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
|
||||||
item.coal.name = 석탄
|
item.coal.name = 석탄
|
||||||
item.coal.description = 쉽게 구할 수 있으며, 주로 제련소 등에서 연료로 사용됩니다.
|
item.coal.description = 쉽게 구할 수 있으며, 주로 제련소 등에서 연료로 사용됩니다.
|
||||||
item.dense-alloy.name = 합금
|
item.dense-alloy.name = 고밀도 합금
|
||||||
item.dense-alloy.description = 납과 구리로 만든 튼튼한 합금.\n고급 수송 블록이나 상위 티어 블록을 건설하는데 사용됩니다.
|
item.dense-alloy.description = 납과 구리로 만든 튼튼한 고밀도 합금.\n고급 수송 블록이나 상위 티어 블록을 건설하는데 사용됩니다.
|
||||||
item.titanium.name = 티타늄
|
item.titanium.name = 티타늄
|
||||||
item.titanium.description = 파이프 재료나 고급 드릴, 비행기/기체 등에서 재료로 사용되는 자원입니다.
|
item.titanium.description = 파이프 재료나 고급 드릴, 비행기/기체 등에서 재료로 사용되는 자원입니다.
|
||||||
item.thorium.name = 토륨
|
item.thorium.name = 토륨
|
||||||
@@ -440,9 +440,9 @@ item.surge-alloy.description = 주로 건물의 재료로 사용되는 자원입
|
|||||||
item.biomatter.name = 바이오메터
|
item.biomatter.name = 바이오메터
|
||||||
item.biomatter.description = 이것은 유기농 덤불입니다!\n압축기에 넣어 석유로 바꿀 수 있습니다.
|
item.biomatter.description = 이것은 유기농 덤불입니다!\n압축기에 넣어 석유로 바꿀 수 있습니다.
|
||||||
item.sand.name = 모래
|
item.sand.name = 모래
|
||||||
item.sand.description = 합금이나 플럭스 등에서 제련시 광범위하게 사용되는 일반적인 재료입니다.
|
item.sand.description = 고밀도 합금이나 플럭스 등에서 제련시 광범위하게 사용되는 일반적인 재료입니다.
|
||||||
item.blast-compound.name = 화합물
|
item.blast-compound.name = 폭발물
|
||||||
item.blast-compound.description = 포탑 및 건설의 재료로 사용되는 휘발성 화합물.\n연료로도 사용할 수 있지만, 별로 추천하지는 않습니다.
|
item.blast-compound.description = 포탑 및 건설의 재료로 사용되는 휘발성 폭발물.\n연료로도 사용할 수 있지만, 별로 추천하지는 않습니다.
|
||||||
item.pyratite.name = 피라테
|
item.pyratite.name = 피라테
|
||||||
item.pyratite.description = 폭발성을 가진 재료로, 주로 포탑의 탄약으로 사용됩니다.
|
item.pyratite.description = 폭발성을 가진 재료로, 주로 포탑의 탄약으로 사용됩니다.
|
||||||
liquid.water.name = 물
|
liquid.water.name = 물
|
||||||
@@ -493,7 +493,7 @@ text.mech.ability = [LIGHT_GRAY]능력 : {0}
|
|||||||
text.liquid.heatcapacity = [LIGHT_GRAY]발열량 : {0}
|
text.liquid.heatcapacity = [LIGHT_GRAY]발열량 : {0}
|
||||||
text.liquid.viscosity = [LIGHT_GRAY]점도 : {0}
|
text.liquid.viscosity = [LIGHT_GRAY]점도 : {0}
|
||||||
text.liquid.temperature = [LIGHT_GRAY]온도 : {0}
|
text.liquid.temperature = [LIGHT_GRAY]온도 : {0}
|
||||||
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
|
block.constructing = {0}[LIGHT_GRAY](만드는중)
|
||||||
block.spawn.name = 적 스폰지점
|
block.spawn.name = 적 스폰지점
|
||||||
block.core.name = 코어
|
block.core.name = 코어
|
||||||
block.metalfloor.name = 철판
|
block.metalfloor.name = 철판
|
||||||
@@ -568,7 +568,7 @@ block.tau-mech-pad.name = 타우 기체 패드
|
|||||||
block.conduit.name = 파이프
|
block.conduit.name = 파이프
|
||||||
block.mechanical-pump.name = 기계식 펌프
|
block.mechanical-pump.name = 기계식 펌프
|
||||||
block.itemsource.name = 아이템 소스
|
block.itemsource.name = 아이템 소스
|
||||||
block.itemvoid.name = 히오스
|
block.itemvoid.name = 아이템 삭제 장치
|
||||||
block.liquidsource.name = 무한 액체공급 장치
|
block.liquidsource.name = 무한 액체공급 장치
|
||||||
block.powervoid.name = 방전장치
|
block.powervoid.name = 방전장치
|
||||||
block.powerinfinite.name = 무한 전력공급 장치
|
block.powerinfinite.name = 무한 전력공급 장치
|
||||||
@@ -582,7 +582,7 @@ block.phase-conveyor.name = 메타 컨베이어
|
|||||||
block.bridge-conveyor.name = 터널
|
block.bridge-conveyor.name = 터널
|
||||||
block.plastanium-compressor.name = 플라스터늄 압축기
|
block.plastanium-compressor.name = 플라스터늄 압축기
|
||||||
block.pyratite-mixer.name = 피라테 제조기
|
block.pyratite-mixer.name = 피라테 제조기
|
||||||
block.blast-mixer.name = 화합물 제조기
|
block.blast-mixer.name = 폭발물 제조기
|
||||||
block.solidifer.name = 고체
|
block.solidifer.name = 고체
|
||||||
block.solar-panel.name = 태양 전지판
|
block.solar-panel.name = 태양 전지판
|
||||||
block.solar-panel-large.name = 대형 태양 전지판
|
block.solar-panel-large.name = 대형 태양 전지판
|
||||||
@@ -591,7 +591,7 @@ block.spirit-factory.name = 스피릿 드론 공장
|
|||||||
block.phantom-factory.name = 팬텀 드론 공장
|
block.phantom-factory.name = 팬텀 드론 공장
|
||||||
block.wraith-factory.name = 유령 전투기 공장
|
block.wraith-factory.name = 유령 전투기 공장
|
||||||
block.ghoul-factory.name = 구울 폭격기 공장
|
block.ghoul-factory.name = 구울 폭격기 공장
|
||||||
block.dagger-factory.name = 귀여운 디거 기체 공장
|
block.dagger-factory.name = 디거 기체 공장
|
||||||
block.titan-factory.name = 타이탄 기체 공장
|
block.titan-factory.name = 타이탄 기체 공장
|
||||||
block.fortress-factory.name = 포트리스 기체 공장
|
block.fortress-factory.name = 포트리스 기체 공장
|
||||||
block.revenant-factory.name = 레비던트 전투기 공장
|
block.revenant-factory.name = 레비던트 전투기 공장
|
||||||
@@ -607,23 +607,22 @@ block.thorium-reactor.name = 토륨 원자로
|
|||||||
block.command-center.name = 명령 본부
|
block.command-center.name = 명령 본부
|
||||||
block.mass-driver.name = 물질 이동기
|
block.mass-driver.name = 물질 이동기
|
||||||
block.blast-drill.name = 고속 발열 드릴
|
block.blast-drill.name = 고속 발열 드릴
|
||||||
block.thermal-pump.name = 지열 펌프
|
block.thermal-pump.name = 화력 펌프
|
||||||
block.thermal-generator.name = 지열 발전기
|
block.thermal-generator.name = 열발전기
|
||||||
block.alloy-smelter.name = 설금 제련소
|
block.alloy-smelter.name = 설금 제련소
|
||||||
block.mend-projector.name = 치료 프로젝터
|
block.mend-projector.name = 수리 프로젝터
|
||||||
block.surge-wall.name = 설금벽
|
block.surge-wall.name = 설금벽
|
||||||
block.surge-wall-large.name = 큰 설금벽
|
block.surge-wall-large.name = 큰 설금벽
|
||||||
block.cyclone.name = 사이클론
|
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 = Arc
|
||||||
block.rtg-generator.name = 토륨 발전소
|
block.rtg-generator.name = 토륨 발전소
|
||||||
block.spectre.name = 스펙터
|
block.spectre.name = 스펙터
|
||||||
block.meltdown.name = 멜트다운
|
block.meltdown.name = 멜트다운
|
||||||
block.container.name = 컨테이너
|
block.container.name = 컨테이너
|
||||||
block.core.description = 게임에서 가장 중요한 건물.\n파괴되면 게임이 끝납니다.
|
|
||||||
team.blue.name = 블루팀
|
team.blue.name = 블루팀
|
||||||
team.red.name = 레드팀
|
team.red.name = 레드팀
|
||||||
team.orange.name = 오렌지팀
|
team.orange.name = 오렌지팀
|
||||||
@@ -635,43 +634,44 @@ unit.spirit.name = 스피릿 드론
|
|||||||
unit.spirit.description = 기본 드론 유닛. 기본적으로 코어에서 1개가 스폰됩니다. 자동으로 채광하며 아이템을 수집하고, 블록을 수리합니다.
|
unit.spirit.description = 기본 드론 유닛. 기본적으로 코어에서 1개가 스폰됩니다. 자동으로 채광하며 아이템을 수집하고, 블록을 수리합니다.
|
||||||
unit.phantom.name = 팬텀 드론
|
unit.phantom.name = 팬텀 드론
|
||||||
unit.phantom.description = 첨단 드론 유닛. 광석을 자동으로 채광하며, 아이템을 수집하고 블록을 수리합니다. 일반 드론보다 훨씬 효과적입니다.
|
unit.phantom.description = 첨단 드론 유닛. 광석을 자동으로 채광하며, 아이템을 수집하고 블록을 수리합니다. 일반 드론보다 훨씬 효과적입니다.
|
||||||
unit.dagger.name = 귀여운 디거
|
unit.dagger.name = 디거
|
||||||
unit.dagger.description = 밈의 대상으로 지정되어 이름이 바뀐 기본 지상 유닛입니다.
|
unit.dagger.description = 기본 지상 유닛입니다. 스웜과 같이 쓰면 유용합니다.
|
||||||
unit.titan.name = 타이탄
|
unit.titan.name = 타이탄
|
||||||
unit.titan.description = 고급 지상 유닛입니다. 합금을 탄약으로 사용하며 지상과 공중 둘다 공격할 수 있습니다.
|
unit.titan.description = 고급 지상 유닛입니다. 고밀도 합금을 탄약으로 사용하며 지상과 공중 둘다 공격할 수 있습니다.
|
||||||
unit.ghoul.name = 구울 폭격기
|
unit.ghoul.name = 구울 폭격기
|
||||||
unit.ghoul.description = 무거운 지상 폭격기 입니다. 화합물 또는 피라테를 탄약으로 사용합니다.
|
unit.ghoul.description = 무거운 지상 폭격기 입니다. 폭발물 또는 피라테를 탄약으로 사용합니다.
|
||||||
unit.wraith.name = 유령 전투기
|
unit.wraith.name = 유령 전투기
|
||||||
unit.wraith.description = 코어를 집중적으로 공격하는 방식을 사용하는 전투기 입니다.
|
unit.wraith.description = 코어를 집중적으로 공격하는 방식을 사용하는 전투기 입니다.
|
||||||
unit.fortress.name = 포트리스
|
unit.fortress.name = 포트리스
|
||||||
unit.fortress.description = 중포 지상 유닛. 높은 공격력과 체력을 가지고 있습니다.
|
unit.fortress.description = 중포 지상 유닛. 높은 공격력과 체력을 가지고 있습니다.
|
||||||
unit.revenant.name = 레비던트
|
unit.revenant.name = 레비던트
|
||||||
unit.revenant.description = 대형 레이저를 발사하는 공중 유닛입니다.
|
unit.revenant.description = 대형 레이저를 발사하는 공중 유닛입니다.
|
||||||
tutorial.begin = 플레이어의 임무는 [LIGHT_GRAY]적군[]을 제거하는 것입니다.\n\n[accent]구리를 채광[]하는 것으로 시작합니다. 이것을 하기 위해 플레이어의 중심부 근처에 있는 구리 광맥을 누르세요.
|
tutorial.begin = 플레이어의 주요 목표는 [LIGHT_GRAY]적군[]을 제거하는 것입니다.\n\n이 게임은 [accent]구리를 채광[]하는 것으로 시작합니다.\n이것을 하기 위해 플레이어의 중심부 근처에 있는 구리 광맥을 누르세요.
|
||||||
tutorial.drill = 수동으로 채광하는 것은 비효율 적입니다.\n[accent]드릴[]은 자동으로 채광 작업을 합니다.\n구리 광맥에 표시된 영역에 드릴을 하나를 놓으세요.
|
tutorial.drill = 수동으로 채광하는 것은 효율이 낮습니다.\n[accent]드릴[]은 자동으로 채광 작업을 합니다.\n구리 광맥에 표시된 영역에 드릴을 하나를 놓으세요.
|
||||||
tutorial.conveyor = [accent]컨베이어[]를 사용하여 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.
|
tutorial.conveyor = [accent]컨베이어[]를 사용하여 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.
|
||||||
tutorial.morecopper = 더 많은 구리가 필요합니다.\n\n수동으로 채광하거나, 드릴을 더 설치하세요.
|
tutorial.morecopper = 더 많은 구리가 필요합니다.\n\n수동으로 채광하거나, 드릴을 더 설치하세요.
|
||||||
tutorial.turret = 방어 구조물은 [LIGHT_GRAY]적[]을 물리치기 위해 반드시 필요합니다.\n기지 근처에 듀오 터렛을 설치하세요.
|
tutorial.turret = 방어 구조물은 [LIGHT_GRAY]적[]을 물리치기 위해 반드시 필요합니다.\n기지 근처에 듀오 터렛을 설치하세요.
|
||||||
tutorial.drillturret = 듀오 터렛이 작동하기 위해서는[accent] 구리 탄약 []을 필요로 합니다.\n터렛 옆에 드릴을 설치하여 구리를 공급하세요.
|
tutorial.drillturret = 듀오 터렛이 작동하기 위해서는[accent] 구리 탄약 []을 필요로 합니다.\n터렛 옆에 드릴을 설치하여 구리를 공급하세요.
|
||||||
tutorial.waves = [LIGHT_GRAY]적[]이 접근합니다.\n\n2단계 동안 코어를 보호하고 더 많은 터렛을 만드세요.
|
tutorial.waves = [LIGHT_GRAY]적[]이 접근합니다.\n\n2단계 동안 코어를 보호하고 더 많은 터렛을 만드세요.
|
||||||
tutorial.lead = 더 많은 광석을 이용할 수 있습니다. [accent]납[]을 찾아 탐색하세요.\n\n아이템을 코어로 전송할려면 플레이어 기체 또는 비행기에서 코어로 드래그 하세요.
|
tutorial.lead = 더 많은 광석을 이용할 수 있습니다. [accent]납[]을 찾아 탐색하세요.\n\n아이템을 코어로 전송할려면 플레이어 기체 또는 비행기에서 코어로 드래그 하세요.
|
||||||
tutorial.smelter = 구리와 납은 약한 금속입니다.\n[accent]합금[]은 제련소에서 만들 수 있습니다.\n\n하나 만드세요.
|
tutorial.smelter = 구리와 납은 약한 금속입니다.\n[accent]고밀도 합금[]은 제련소에서 만들 수 있습니다.\n\n하나 만드세요.
|
||||||
tutorial.densealloy = 이 제련소는 이제 합금을 생산할 것입니다.\n몇개 더 생산하세요.\n필요한 경우 더 만드세요.
|
tutorial.densealloy = 이 제련소는 이제 고밀도 합금을 생산할 것입니다.\n몇개 더 생산하세요.\n필요한 경우 더 만드세요.
|
||||||
tutorial.siliconsmelter = 이제 이코어는 채굴과 수리하기 위한[accent] 스피릿 드론[]을 생성 할 것 입니다.\n\n[accent]실리콘[]을 사용해 다른 유닛을 생성하기 위한 공장을 만들 수 있습니다.\n실리콘 제련기를 제작하세요!
|
tutorial.siliconsmelter = 이제 이코어는 채굴과 수리하기 위한[accent] 스피릿 드론[]을 생성 할 것 입니다.\n\n[accent]실리콘[]을 사용해 다른 유닛을 생성하기 위한 공장을 만들 수 있습니다.\n실리콘 제련기를 제작하세요!
|
||||||
tutorial.silicondrill = 실리콘을 제작하려면[accent] 석탄[] 과[accent] 모래[]가 필요합니다.\n드릴을 먼저 건설해보는건 어떤가요?
|
tutorial.silicondrill = 실리콘을 제작하려면[accent] 석탄[] 과[accent] 모래[]가 필요합니다.\n드릴을 먼저 건설해보는건 어떤가요?
|
||||||
tutorial.generator = 이 기술은[LIGHT_YELLOW] 애너지[]가 필요합니다.\n[accent] 석탄 발전기[]를 건설하세요.
|
tutorial.generator = 이 건물은 [LIGHT_YELLOW]전력[]이 필요합니다.\n[accent] 석탄 발전기[]를 건설하세요.
|
||||||
tutorial.generatordrill = [accent] 석탄 발전기[]는 연료가 필요합니다.\n[accent] 석탄[]을 드릴로 채굴해서 연료를 체워주세요.
|
tutorial.generatordrill = [accent] 석탄 발전기[]는 연료가 필요합니다.\n[accent] 석탄[]을 드릴로 채굴해서 연료를 체워주세요.
|
||||||
tutorial.node = 전력은 송신해줄 송신기가 필요합니다.\n[accent] 전력 송신기[]를 석탄 등등 발전기 옆에 설치해서 생산된 전기를 다른곳으로 송신합시다.
|
tutorial.node = 전력은 송신해줄 송신기가 필요합니다.\n[accent] 전력 송신기[]를 석탄 등등 발전기 옆에 설치해서 생산된 전기를 다른곳으로 송신합시다.
|
||||||
tutorial.nodelink = 전력은 전력 블록과 발전기에 연결하거나, 연결된 전력 송신기를 통해 전송이 가능합니다. \n\n전력 송신기를 누르고 발전기와 실리콘 제련기를 선택하여 전원을 연결합시다.
|
tutorial.nodelink = 전력은 전력 블록과 발전기에 연결하거나, 연결된 전력 송신기를 통해 전송이 가능합니다. \n\n전력 송신기를 누르고 발전기와 실리콘 제련기를 선택하여 전원을 연결합시다.
|
||||||
tutorial.silicon = 실리콘이 생산되고 있습니다.\n\n생산 시스템의 개선을 권고 드립니다.
|
tutorial.silicon = 실리콘이 생산되고 있습니다.\n\n생산 시스템의 개선을 권고 드립니다.
|
||||||
tutorial.daggerfactory = 이[accent] 귀여운 디거 기체 공장[]은\n\n공격하는 기체를 생산하기 위해 사용됩니다.
|
tutorial.daggerfactory = 이[accent] 디거 기체 공장[]은\n\n공격하는 기체를 생산하기 위해 사용됩니다.
|
||||||
tutorial.router = 공장을 작동시키기 위해 자원이 필요합니다.\n컨베이어에 운반되고 있는 자원을 분할할 분배기를 만드세요.
|
tutorial.router = 공장을 작동시키기 위해 자원이 필요합니다.\n컨베이어에 운반되고 있는 자원을 분할할 분배기를 만드세요.
|
||||||
tutorial.dagger = 전력 노드를 공장에 연결하세요.\n일단 요구 사항이 충족되면 기체 생산을 시작합니다.\n\n필요에 따라 드릴 및 발전기, 컨베이어를 더 많이 만들 수 있습니다.
|
tutorial.dagger = 전력 노드를 공장에 연결하세요.\n일단 요구 사항이 충족되면 기체 생산을 시작합니다.\n\n필요에 따라 드릴 및 발전기, 컨베이어를 더 많이 만들 수 있습니다.
|
||||||
tutorial.battle = [LIGHT_GRAY]적[]의 코어가 드러났습니다.\n당신의 부대와 귀여운 디거를 사용하여 파괴하세요.
|
tutorial.battle = [LIGHT_GRAY]적[]의 코어가 드러났습니다.\n당신의 부대와 디거를 사용하여 파괴하세요.
|
||||||
|
block.core.description = 게임에서 가장 중요한 건물.\n파괴되면 게임이 끝납니다.
|
||||||
block.copper-wall.description = 구리로 만든 벽.
|
block.copper-wall.description = 구리로 만든 벽.
|
||||||
block.copper-wall-large.description = 구리로 만든 큰 벽.
|
block.copper-wall-large.description = 구리로 만든 큰 벽.
|
||||||
block.dense-alloy-wall.description = 합금으로 만든 벽. 구리벽보다 체력이 높습니다.
|
block.dense-alloy-wall.description = 고밀도 합금으로 만든 벽. 구리벽보다 체력이 높습니다.
|
||||||
block.dense-alloy-wall-large.description = 합금으로 만든 큰 벽.
|
block.dense-alloy-wall-large.description = 고밀도 합금으로 만든 큰 벽.
|
||||||
block.thorium-wall.description = 토륨으로 만든 벽.
|
block.thorium-wall.description = 토륨으로 만든 벽.
|
||||||
block.thorium-wall-large.description = 토륨으로 만든 큰 벽.
|
block.thorium-wall-large.description = 토륨으로 만든 큰 벽.
|
||||||
block.phase-wall.description = 날라오는 모든 총알을 튕겨내고 데미지를 입는 특수한 벽입니다.
|
block.phase-wall.description = 날라오는 모든 총알을 튕겨내고 데미지를 입는 특수한 벽입니다.
|
||||||
@@ -681,8 +681,8 @@ block.surge-wall-large.description = 설금을 재료로 한 큰 벽.\n데미지
|
|||||||
block.door.description = 유닛이 지나갈 수 있도록 만든 문. 클릭하면 열고 닫습니다.
|
block.door.description = 유닛이 지나갈 수 있도록 만든 문. 클릭하면 열고 닫습니다.
|
||||||
block.door-large.description = 유닛이 자나갈 수 있도록 만든 큰 문. 클릭하면 열고 닫습니다.
|
block.door-large.description = 유닛이 자나갈 수 있도록 만든 큰 문. 클릭하면 열고 닫습니다.
|
||||||
block.mend-projector.description = 주위 건물을 치료하는 건물입니다.
|
block.mend-projector.description = 주위 건물을 치료하는 건물입니다.
|
||||||
block.overdrive-projector.description = 범위 내 모든 행동의 속도를 높여주는 보조형 방어 건물입니다.
|
block.overdrive-projector.description = 범위 내 모든 행동의 속도를 높여주는 보조형 건물입니다.
|
||||||
block.force-projector.description = 보호막을 생성하는 건물.\n기본적으로 전기만 있으면 작동하지만, 메타를 넣어 보호막의 범위를 크게 확장시킬 수 있습니다.
|
block.force-projector.description = 보호막을 생성하는 건물.\n기본적으로 전력만 있으면 작동하지만, 메타를 넣어 보호막의 범위를 크게 확장시킬 수 있습니다.
|
||||||
block.shock-mine.description = 적이 이 블록을 지나가면 전격 공격을 하는 함정형 방어 건물입니다.
|
block.shock-mine.description = 적이 이 블록을 지나가면 전격 공격을 하는 함정형 방어 건물입니다.
|
||||||
block.duo.description = 범용성을 가진 터렛.\n지상 및 공중공격을 하며, 초중반에 유용합니다.
|
block.duo.description = 범용성을 가진 터렛.\n지상 및 공중공격을 하며, 초중반에 유용합니다.
|
||||||
block.arc.description = 목표 방향으로 전격 공격을 하는 포탑입니다.
|
block.arc.description = 목표 방향으로 전격 공격을 하는 포탑입니다.
|
||||||
@@ -701,15 +701,15 @@ block.titanium-conveyor.description = 빠른 속도로 자원을 수송할 수
|
|||||||
block.phase-conveyor.description = 자원을 순간이동 시켜 주는 컨베이어 입니다.
|
block.phase-conveyor.description = 자원을 순간이동 시켜 주는 컨베이어 입니다.
|
||||||
block.junction.description = 컨베이어를 교차시켜 자원을 수송할 때 사용할 수 있는 블록입니다.
|
block.junction.description = 컨베이어를 교차시켜 자원을 수송할 때 사용할 수 있는 블록입니다.
|
||||||
block.mass-driver.description = 자원을 받아서 다른 물질 이동기로 전달할 수 있는 블록입니다.\n엄청난 사거리를 가지고 있으며, 주로 컨베이어가 접근할 수 없는 곳에 유용하게 사용됩니다.
|
block.mass-driver.description = 자원을 받아서 다른 물질 이동기로 전달할 수 있는 블록입니다.\n엄청난 사거리를 가지고 있으며, 주로 컨베이어가 접근할 수 없는 곳에 유용하게 사용됩니다.
|
||||||
block.smelter.description = 합금을 제작할 수 있는 건물입니다.
|
block.smelter.description = 고밀도 합금을 제작할 수 있는 건물입니다.
|
||||||
block.arc-smelter.description = 합금을 제작할 수 있는 건물이지만, 이 건물은 석탄이 필요 없고 좀더 빠른 속도로 합금을 생산해낼 수 있습니다.
|
block.arc-smelter.description = 고밀도 합금을 제작할 수 있는 건물이지만, 이 건물은 석탄이 필요 없고 좀더 빠른 속도로 합금을 생산해낼 수 있습니다.
|
||||||
block.silicon-smelter.description = 실리콘을 제작할 수 있는 건물입니다.
|
block.silicon-smelter.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.pulverizer.description = 돌을 갈아서 모래로 만들 수 있는 건물입니다.
|
block.pulverizer.description = 돌을 갈아서 모래로 만들 수 있는 건물입니다.
|
||||||
block.pyratite-mixer.description = 피라테를 제조할 수 있는 건물입니다.
|
block.pyratite-mixer.description = 피라테를 제조할 수 있는 건물입니다.
|
||||||
block.blast-mixer.description = 화합물을 제조할 수 있는 건물입니다.
|
block.blast-mixer.description = 폭발물을 제조할 수 있는 건물입니다.
|
||||||
block.cryofluidmixer.description = 냉각수를 제작할 수 있는 건물입니다.
|
block.cryofluidmixer.description = 냉각수를 제작할 수 있는 건물입니다.
|
||||||
block.solidifer.description = 용암을 돌로 만들 수 있는 건물입니다.
|
block.solidifer.description = 용암을 돌로 만들 수 있는 건물입니다.
|
||||||
block.melter.description = 돌로 용암을 만들 수 있는 건물입니다.
|
block.melter.description = 돌로 용암을 만들 수 있는 건물입니다.
|
||||||
@@ -717,14 +717,14 @@ block.incinerator.description = 불필요한 아이템을 소각시켜 줄 수
|
|||||||
block.biomattercompressor.description = 잔디밭에서 바이오메터를 추출할 수 있는 건물입니다.
|
block.biomattercompressor.description = 잔디밭에서 바이오메터를 추출할 수 있는 건물입니다.
|
||||||
block.separator.description = 돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물입니다.
|
block.separator.description = 돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물입니다.
|
||||||
block.centrifuge.description = 돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물이지만, 이 건물은 좀 더 다양한 자원을 얻을 수 있게 해 줍니다.
|
block.centrifuge.description = 돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물이지만, 이 건물은 좀 더 다양한 자원을 얻을 수 있게 해 줍니다.
|
||||||
block.power-node.description = 생성된 전기를 다른 건물로 전달하기 위한 전력 노드입니다.
|
block.power-node.description = 생성된 전력를 다른 건물로 전달하기 위한 전력 노드입니다.
|
||||||
block.power-node-large.description = 생성된 전기를 다른 건물로 전달하기 위한 건물이며, 일반 노드보다 더 많은 전력을 이동시킬 수 있습니다.
|
block.power-node-large.description = 생성된 전력를 다른 건물로 전달하기 위한 건물이며, 일반 노드보다 더 많은 전력을 이동시킬 수 있습니다.
|
||||||
block.battery.description = 흔히 아는 충전식 배터리입니다.\n전력 생산건물에서 전력이 떨어질경우, 이 배터리를 전력 노드에 연결하면 이 배터리에 에 있는 전력을 사용하여 전기를 소모하는 건물에 전력을 지속적으로 공급할 수 있습니다.
|
block.battery.description = 흔히 아는 충전식 배터리입니다.\n전력을 사용하는 건물에 전력이 떨어질경우, 이 배터리를 전력 노드에 연결하면 이 배터리에 저장된 전력을 소모하여 지속적으로 공급할 수 있습니다.
|
||||||
block.battery-large.description = 일반 배터리보다 용량이 매우 커진 커진 배터리.
|
block.battery-large.description = 일반 배터리보다 용량이 매우 커진 커진 배터리.
|
||||||
block.combustion-generator.description = 석탄을 연료로 전기를 생산해내는 발전소 입니다.
|
block.combustion-generator.description = 석탄을 연료로 전력를 생산해내는 발전소 입니다.
|
||||||
block.turbine-generator.description = 석탄 발전기보다 더 많은량의 전기를 생산하는 발전기입니다.
|
block.turbine-generator.description = 석탄 발전기보다 더 많은량의 전력를 생산하는 발전기입니다.
|
||||||
block.thermal-generator.description = 용암을 원료로 전력을 생산할 수 있는 발전소입니다.
|
block.thermal-generator.description = 용암을 원료로 전력을 생산할 수 있는 발전소입니다.
|
||||||
block.solar-panel.description = 태양열을 받아 자기 스스로 전력을 생산하는 블록입니다.
|
block.solar-panel.description = 태양열을 받아 자기 스스로 전력을 생산하는 건물입니다.
|
||||||
block.solar-panel-large.description = 태양열을 받아 자기 스스로 전력을 생산하지만, 이 블록은 더 빨리 전력을 생산할 수 있습니다.
|
block.solar-panel-large.description = 태양열을 받아 자기 스스로 전력을 생산하지만, 이 블록은 더 빨리 전력을 생산할 수 있습니다.
|
||||||
block.thorium-reactor.description = 토륨을 원료로 하는 토륨 원자로 입니다.\n많은 전력을 생산하지만 엄청난 열을 발생시키기 때문에, 많은 량의 물 또는 냉각수가 있어야 터지지 않고 작동합니다.
|
block.thorium-reactor.description = 토륨을 원료로 하는 토륨 원자로 입니다.\n많은 전력을 생산하지만 엄청난 열을 발생시키기 때문에, 많은 량의 물 또는 냉각수가 있어야 터지지 않고 작동합니다.
|
||||||
block.rtg-generator.description = 냉각은 필요 없지만 토륨 원자로보다 적은량의 전력을 생산하는 방사선 동위원소 열전자 발전기.
|
block.rtg-generator.description = 냉각은 필요 없지만 토륨 원자로보다 적은량의 전력을 생산하는 방사선 동위원소 열전자 발전기.
|
||||||
@@ -737,7 +737,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.oil-extractor.description = 기름(타르)을 추출 해 주는 건물입니다.
|
block.oil-extractor.description = 석유를 추출 해 주는 건물입니다.
|
||||||
block.dart-ship-pad.description = 다트 비행선으로 바꿀 수 있는 패드입니다.
|
block.dart-ship-pad.description = 다트 비행선으로 바꿀 수 있는 패드입니다.
|
||||||
block.trident-ship-pad.description = 삼지창 비행선으로 바꿀 수 있는 패드입니다.
|
block.trident-ship-pad.description = 삼지창 비행선으로 바꿀 수 있는 패드입니다.
|
||||||
block.javelin-ship-pad.description = 자비린 비행선으로 바꿀 수 있는 패드입니다.
|
block.javelin-ship-pad.description = 자비린 비행선으로 바꿀 수 있는 패드입니다.
|
||||||
@@ -749,7 +749,7 @@ block.spirit-factory.description = 스피릿 유닛을 생산하는 공장입니
|
|||||||
block.phantom-factory.description = 유닛 팬텀을 생산하는 공장입니다.
|
block.phantom-factory.description = 유닛 팬텀을 생산하는 공장입니다.
|
||||||
block.wraith-factory.description = 유닛 유령 전투기를 소환하는 공장입니다.
|
block.wraith-factory.description = 유닛 유령 전투기를 소환하는 공장입니다.
|
||||||
block.ghoul-factory.description = 구울 유닛을 생산하는 공장입니다.
|
block.ghoul-factory.description = 구울 유닛을 생산하는 공장입니다.
|
||||||
block.dagger-factory.description = 귀여운 디거를 생산하는 공장입니다.
|
block.dagger-factory.description = 디거를 생산하는 공장입니다.
|
||||||
block.titan-factory.description = 타이탄 유닛을 생산할 수 있는 공장입니다.
|
block.titan-factory.description = 타이탄 유닛을 생산할 수 있는 공장입니다.
|
||||||
block.fortress-factory.description = 포트리스를 생산하는 공장입니다.
|
block.fortress-factory.description = 포트리스를 생산하는 공장입니다.
|
||||||
block.revenant-factory.description = 레비던트 유닛을 생산할 수 있는 공장입니다.
|
block.revenant-factory.description = 레비던트 유닛을 생산할 수 있는 공장입니다.
|
||||||
@@ -764,17 +764,17 @@ block.liquid-junction.description = 물펌프와 다른 물펌프를 서로 교
|
|||||||
block.bridge-conduit.description = 다리와 다리 사이를 연결하여 액체가 지나갈 수 있게 해 줍니다.\n주로 다리 사이에 지나갈 수 없는 장애물이 있을 때 사용합니다.
|
block.bridge-conduit.description = 다리와 다리 사이를 연결하여 액체가 지나갈 수 있게 해 줍니다.\n주로 다리 사이에 지나갈 수 없는 장애물이 있을 때 사용합니다.
|
||||||
block.mechanical-pump.description = 구리로 제작할 수 있는 기계식 물펌프입니다.
|
block.mechanical-pump.description = 구리로 제작할 수 있는 기계식 물펌프입니다.
|
||||||
block.rotary-pump.description = 일반 물 펌프보다 더 빠른 속도로 물을 끌어올릴 수 있는 펌프입니다.
|
block.rotary-pump.description = 일반 물 펌프보다 더 빠른 속도로 물을 끌어올릴 수 있는 펌프입니다.
|
||||||
block.thermal-pump.description = 용암 위에서 사용할 수 있는 펌프입니다.
|
block.thermal-pump.description = 기계식 펌프보다 3배 빠른 속도로 액체를 퍼올릴 수 있는 펌프이며, 용암도 퍼올릴 수 있는 유일한 펌프입니다.
|
||||||
block.router.description = 한 방향에서 아이템을 받은 후 최대 3개의 다른 방향으로 동일하게 출력합니다.\n재료를 한곳에서 여러 대상으로 분할하여 운반하는데 유용합니다.
|
block.router.description = 한 방향에서 아이템을 받은 후 최대 3개의 다른 방향으로 동일하게 출력합니다.\n재료를 한곳에서 여러 대상으로 분할하여 운반하는데 유용합니다.
|
||||||
block.distributor.description = 아이템을 최대 7개의 다른 방향으로 똑같이 분할하는 고급 분배기.
|
block.distributor.description = 아이템을 최대 7개의 다른 방향으로 똑같이 분할하는 고급 분배기.
|
||||||
block.bridge-conveyor.description = 고급 자원 수송 블록.\n지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다.
|
block.bridge-conveyor.description = 고급 자원 수송 블록.\n지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다.
|
||||||
block.alpha-mech-pad.description = 알파 기체로 바꿀 수 있는 패드입니다.
|
block.alpha-mech-pad.description = 알파 기체로 바꿀 수 있는 패드입니다.
|
||||||
block.itemsource.description = 자원을 선택하면 그 자원이 무한하게 생성되는 블록입니다.
|
block.itemsource.description = 자원을 선택하면 그 자원이 무한하게 생성되는 블록입니다.
|
||||||
block.liquidsource.description = 무한한 액체를 출력해냅니다.
|
block.liquidsource.description = 무한한 액체를 출력해냅니다.
|
||||||
block.itemvoid.description = 아이템을 시공으로 빠트려 사라지게 만듭니다.
|
block.itemvoid.description = 아이템을 사라지게 만듭니다.
|
||||||
block.powerinfinite.description = 무한한 전력을 공급해주는 블록입니다.
|
block.powerinfinite.description = 무한한 전력을 공급해주는 블록입니다.
|
||||||
block.powervoid.description = 설정된 아이템을 계속해서 출력하는 블록입니다.
|
block.powervoid.description = 설정된 아이템을 계속해서 출력하는 블록입니다.
|
||||||
liquid.water.description = 지상 유닛이 이 위를 지나가면 이동속도가 느려지고, 깊은 물에 빠지면 죽습니다.
|
liquid.water.description = 지상 유닛이 이 위를 지나가면 이동속도가 느려지고, 깊은 물에 빠지면 죽습니다.
|
||||||
liquid.lava.description = 지상 유닛이 이 위를 지나가면 이동속도가 매우 느려지고, 지속적으로 데미지를 입습니다.
|
liquid.lava.description = 지상 유닛이 이 위를 지나가면 이동속도가 매우 느려지고, 지속적으로 데미지를 입습니다.
|
||||||
liquid.oil.description = 일부 조합 블록에서 사용되는 자원입니다.
|
liquid.oil.description = 일부 조합 블록에서 사용되는 자원입니다.
|
||||||
liquid.cryofluid.description = 포탑 및 토륨 원자로에서 사용되는 자원입니다. 누출시 폭발 및 방화의 위험성이 있습니다.
|
liquid.cryofluid.description = 포탑 및 토륨 원자로에서 사용되는 자원입니다.
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = Nie ma mowy!
|
|||||||
text.info.title = [accent]Informacje
|
text.info.title = [accent]Informacje
|
||||||
text.error.title = [crimson]Wystąpił błąd
|
text.error.title = [crimson]Wystąpił błąd
|
||||||
text.error.crashtitle = Wystąpił błąd
|
text.error.crashtitle = Wystąpił błąd
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Informacje o bloku
|
text.blocks.blockinfo = Informacje o bloku
|
||||||
text.blocks.powercapacity = Pojemność mocy
|
text.blocks.powercapacity = Pojemność mocy
|
||||||
text.blocks.powershot = moc / strzał
|
text.blocks.powershot = moc / strzał
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Płyn chłodzący
|
|||||||
text.blocks.coolantuse = Zużycie płynu chłodzącego
|
text.blocks.coolantuse = Zużycie płynu chłodzącego
|
||||||
text.blocks.inputliquidfuel = Paliwo
|
text.blocks.inputliquidfuel = Paliwo
|
||||||
text.blocks.liquidfueluse = Zużycie paliwa
|
text.blocks.liquidfueluse = Zużycie paliwa
|
||||||
text.blocks.explosive = Wysoce wybuchowy!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Zdrowie
|
text.blocks.health = Zdrowie
|
||||||
text.blocks.inaccuracy = Niedokładność
|
text.blocks.inaccuracy = Niedokładność
|
||||||
text.blocks.shots = Strzały
|
text.blocks.shots = Strzały
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Płyny
|
|||||||
text.category.items = Przedmioty
|
text.category.items = Przedmioty
|
||||||
text.category.crafting = Przetwórstwo
|
text.category.crafting = Przetwórstwo
|
||||||
text.category.shooting = Strzelanie
|
text.category.shooting = Strzelanie
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Auto-Target
|
setting.autotarget.name = Auto-Target
|
||||||
setting.fpscap.name = Max FPS
|
setting.fpscap.name = Max FPS
|
||||||
setting.fpscap.none = None
|
setting.fpscap.none = None
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Czułość kontrolera
|
|||||||
setting.saveinterval.name = Interwał automatycznego zapisywania
|
setting.saveinterval.name = Interwał automatycznego zapisywania
|
||||||
setting.seconds = Sekundy
|
setting.seconds = Sekundy
|
||||||
setting.fullscreen.name = Pełny ekran
|
setting.fullscreen.name = Pełny ekran
|
||||||
setting.multithread.name = Wielowątkowość
|
|
||||||
setting.fps.name = Widoczny licznik FPS
|
setting.fps.name = Widoczny licznik FPS
|
||||||
setting.vsync.name = Synchronizacja pionowa
|
setting.vsync.name = Synchronizacja pionowa
|
||||||
setting.lasers.name = Pokaż lasery zasilające
|
setting.lasers.name = Pokaż lasery zasilające
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = Fale
|
|||||||
mode.waves.description = Normalny tryb. Normalne surowce i fale.
|
mode.waves.description = Normalny tryb. Normalne surowce i fale.
|
||||||
mode.sandbox.name = sandbox
|
mode.sandbox.name = sandbox
|
||||||
mode.sandbox.description = Nieskończone surowce i fale bez odliczania. Dla przedszkolaków!
|
mode.sandbox.description = Nieskończone surowce i fale bez odliczania. Dla przedszkolaków!
|
||||||
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
|
|
||||||
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
|
|
||||||
mode.freebuild.name = budowanie
|
mode.freebuild.name = budowanie
|
||||||
mode.freebuild.description = Normalne surowce i fale bez odliczania.
|
mode.freebuild.description = Normalne surowce i fale bez odliczania.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = Não
|
|||||||
text.info.title = [accent]Informação
|
text.info.title = [accent]Informação
|
||||||
text.error.title = [crimson]Ocorreu um Erro.
|
text.error.title = [crimson]Ocorreu um Erro.
|
||||||
text.error.crashtitle = Ocorreu um Erro
|
text.error.crashtitle = Ocorreu um Erro
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Informação do Bloco
|
text.blocks.blockinfo = Informação do Bloco
|
||||||
text.blocks.powercapacity = Capacidade de Energia
|
text.blocks.powercapacity = Capacidade de Energia
|
||||||
text.blocks.powershot = Energia/tiro
|
text.blocks.powershot = Energia/tiro
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Esfriador
|
|||||||
text.blocks.coolantuse = Uso do esfriador
|
text.blocks.coolantuse = Uso do esfriador
|
||||||
text.blocks.inputliquidfuel = Liquido de combustivel
|
text.blocks.inputliquidfuel = Liquido de combustivel
|
||||||
text.blocks.liquidfueluse = Uso do liquido de combustivel
|
text.blocks.liquidfueluse = Uso do liquido de combustivel
|
||||||
text.blocks.explosive = Altamente Explosivo!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Saúde
|
text.blocks.health = Saúde
|
||||||
text.blocks.inaccuracy = Imprecisão
|
text.blocks.inaccuracy = Imprecisão
|
||||||
text.blocks.shots = Tiros
|
text.blocks.shots = Tiros
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Liquidos
|
|||||||
text.category.items = Itens
|
text.category.items = Itens
|
||||||
text.category.crafting = Construindo
|
text.category.crafting = Construindo
|
||||||
text.category.shooting = Atirando
|
text.category.shooting = Atirando
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Auto-Target
|
setting.autotarget.name = Auto-Target
|
||||||
setting.fpscap.name = FPS Maximo
|
setting.fpscap.name = FPS Maximo
|
||||||
setting.fpscap.none = Nenhum
|
setting.fpscap.none = Nenhum
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Sensibilidade do Controle
|
|||||||
setting.saveinterval.name = Intervalo de autosalvamento
|
setting.saveinterval.name = Intervalo de autosalvamento
|
||||||
setting.seconds = {0} Segundos
|
setting.seconds = {0} Segundos
|
||||||
setting.fullscreen.name = Tela Cheia
|
setting.fullscreen.name = Tela Cheia
|
||||||
setting.multithread.name = Multithreading
|
|
||||||
setting.fps.name = Mostrar FPS
|
setting.fps.name = Mostrar FPS
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = Mostrar lasers
|
setting.lasers.name = Mostrar lasers
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = hordas
|
|||||||
mode.waves.description = O modo normal. Recursos limitados E os ataques vem automaticamente.
|
mode.waves.description = O modo normal. Recursos limitados E os ataques vem automaticamente.
|
||||||
mode.sandbox.name = sandbox
|
mode.sandbox.name = sandbox
|
||||||
mode.sandbox.description = Recursos infinitos E sem tempo para Ataques.
|
mode.sandbox.description = Recursos infinitos E sem tempo para Ataques.
|
||||||
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
|
|
||||||
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
|
|
||||||
mode.freebuild.name = construção \nlivre
|
mode.freebuild.name = construção \nlivre
|
||||||
mode.freebuild.description = recursos limitados e Sem tempo para Ataques.
|
mode.freebuild.description = recursos limitados e Sem tempo para Ataques.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = Нет
|
|||||||
text.info.title = Информация
|
text.info.title = Информация
|
||||||
text.error.title = [crimson]Произошла ошибка
|
text.error.title = [crimson]Произошла ошибка
|
||||||
text.error.crashtitle = Произошла ошибка
|
text.error.crashtitle = Произошла ошибка
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Информация о блоке
|
text.blocks.blockinfo = Информация о блоке
|
||||||
text.blocks.powercapacity = Вместимость энергии
|
text.blocks.powercapacity = Вместимость энергии
|
||||||
text.blocks.powershot = Энергия/выстрел
|
text.blocks.powershot = Энергия/выстрел
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Охлаждающая жидкость
|
|||||||
text.blocks.coolantuse = Охлажд. жидкости используется
|
text.blocks.coolantuse = Охлажд. жидкости используется
|
||||||
text.blocks.inputliquidfuel = Жидкое топливо
|
text.blocks.inputliquidfuel = Жидкое топливо
|
||||||
text.blocks.liquidfueluse = Жидкого топлива используется
|
text.blocks.liquidfueluse = Жидкого топлива используется
|
||||||
text.blocks.explosive = Взрывоопасно!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Здоровье
|
text.blocks.health = Здоровье
|
||||||
text.blocks.inaccuracy = Разброс
|
text.blocks.inaccuracy = Разброс
|
||||||
text.blocks.shots = Выстрелы
|
text.blocks.shots = Выстрелы
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Жидкости
|
|||||||
text.category.items = Предметы
|
text.category.items = Предметы
|
||||||
text.category.crafting = Создание
|
text.category.crafting = Создание
|
||||||
text.category.shooting = Cтрельба
|
text.category.shooting = Cтрельба
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Авто-цель
|
setting.autotarget.name = Авто-цель
|
||||||
setting.fpscap.name = Макс. FPS
|
setting.fpscap.name = Макс. FPS
|
||||||
setting.fpscap.none = Неограниченный
|
setting.fpscap.none = Неограниченный
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Чувствительность контроллер
|
|||||||
setting.saveinterval.name = Интервал автосохранения
|
setting.saveinterval.name = Интервал автосохранения
|
||||||
setting.seconds = {0} Секунд
|
setting.seconds = {0} Секунд
|
||||||
setting.fullscreen.name = Полноэкранный режим
|
setting.fullscreen.name = Полноэкранный режим
|
||||||
setting.multithread.name = Многопоточность (TPS)
|
|
||||||
setting.fps.name = Показывать FPS
|
setting.fps.name = Показывать FPS
|
||||||
setting.vsync.name = Верт. синхронизация
|
setting.vsync.name = Верт. синхронизация
|
||||||
setting.lasers.name = Показывать энергетические лазеры
|
setting.lasers.name = Показывать энергетические лазеры
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = Волны
|
|||||||
mode.waves.description = В режиме "волны" ограниченные ресурсы и автоматические наступающие волны.
|
mode.waves.description = В режиме "волны" ограниченные ресурсы и автоматические наступающие волны.
|
||||||
mode.sandbox.name = Песочница
|
mode.sandbox.name = Песочница
|
||||||
mode.sandbox.description = Бесконечные ресурсы и нет таймера для волн, но можно самим вызвать волну.
|
mode.sandbox.description = Бесконечные ресурсы и нет таймера для волн, но можно самим вызвать волну.
|
||||||
mode.custom.warning = [scarlet]РАЗБЛОКИРОВАННОЕ В ПОЛЬЗОВАТЕЛЬСКИХ ИГРАХ ИЛИ НА СЕРВЕРАХ НЕ СОХРАНЯЕТСЯ[]\n\nИграйте в секторах для разблокировки чего-либо
|
|
||||||
mode.custom.warning.read = Внимательно прочитайте это!:\n[scarlet]РАЗБЛОКИРОВАННОЕ В ПОЛЬЗОВАТЕЛЬСКИХ ИГРАХ ИЛИ ДРУГИХ РЕЖИМАХ ИГРЫ НЕ РАСПРОСТРАНЯЕТСЯ НА СЕКТОРА ИЛИ ДРУГИЕ РЕЖИМЫ ИГРЫ!\n\n[LIGHT_GRAY](Я бы хотел, чтобы это не было необходимо, но, по-видимому, это так)
|
|
||||||
mode.freebuild.name = Свободная\nстройка
|
mode.freebuild.name = Свободная\nстройка
|
||||||
mode.freebuild.description = ограниченные ресурсы и нет таймера для волн.
|
mode.freebuild.description = ограниченные ресурсы и нет таймера для волн.
|
||||||
mode.pvp.name = Противо-\nстояние
|
mode.pvp.name = Противо-\nстояние
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = Hayir
|
|||||||
text.info.title = [accent]Bilgi
|
text.info.title = [accent]Bilgi
|
||||||
text.error.title = [crimson]Bir hata olustu
|
text.error.title = [crimson]Bir hata olustu
|
||||||
text.error.crashtitle = Bir hata olustu
|
text.error.crashtitle = Bir hata olustu
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Yapi bilgisi
|
text.blocks.blockinfo = Yapi bilgisi
|
||||||
text.blocks.powercapacity = Guc kapasitesi
|
text.blocks.powercapacity = Guc kapasitesi
|
||||||
text.blocks.powershot = Guc/Saldiri hizi
|
text.blocks.powershot = Guc/Saldiri hizi
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Sogutma sivisi
|
|||||||
text.blocks.coolantuse = Sogutma sivi kullanimi
|
text.blocks.coolantuse = Sogutma sivi kullanimi
|
||||||
text.blocks.inputliquidfuel = Yakit sivisi
|
text.blocks.inputliquidfuel = Yakit sivisi
|
||||||
text.blocks.liquidfueluse = Sivi yakit kullanimi
|
text.blocks.liquidfueluse = Sivi yakit kullanimi
|
||||||
text.blocks.explosive = Patlayici!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Can
|
text.blocks.health = Can
|
||||||
text.blocks.inaccuracy = sekme
|
text.blocks.inaccuracy = sekme
|
||||||
text.blocks.shots = vuruslar
|
text.blocks.shots = vuruslar
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = sivilar
|
|||||||
text.category.items = esyalar
|
text.category.items = esyalar
|
||||||
text.category.crafting = uretim
|
text.category.crafting = uretim
|
||||||
text.category.shooting = sikma
|
text.category.shooting = sikma
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Auto-Target
|
setting.autotarget.name = Auto-Target
|
||||||
setting.fpscap.name = Max FPS
|
setting.fpscap.name = Max FPS
|
||||||
setting.fpscap.none = Yok
|
setting.fpscap.none = Yok
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Kumanda hassasligi
|
|||||||
setting.saveinterval.name = Otomatik kaydetme suresi
|
setting.saveinterval.name = Otomatik kaydetme suresi
|
||||||
setting.seconds = {0} Saniye
|
setting.seconds = {0} Saniye
|
||||||
setting.fullscreen.name = Tam ekran
|
setting.fullscreen.name = Tam ekran
|
||||||
setting.multithread.name = Parcaciklar
|
|
||||||
setting.fps.name = FPS'i goster
|
setting.fps.name = FPS'i goster
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = Guc lazerlerini goster
|
setting.lasers.name = Guc lazerlerini goster
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = Dalgali
|
|||||||
mode.waves.description = Klasik mod. Dalgalara karsi cekirdegi koru.
|
mode.waves.description = Klasik mod. Dalgalara karsi cekirdegi koru.
|
||||||
mode.sandbox.name = Serbest
|
mode.sandbox.name = Serbest
|
||||||
mode.sandbox.description = Sonsuz esyalar ve Dalga suresi yok
|
mode.sandbox.description = Sonsuz esyalar ve Dalga suresi yok
|
||||||
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
|
|
||||||
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
|
|
||||||
mode.freebuild.name = Yapi Yapma
|
mode.freebuild.name = Yapi Yapma
|
||||||
mode.freebuild.description = Sinirli esyalar ama dalga suresi yok.
|
mode.freebuild.description = Sinirli esyalar ama dalga suresi yok.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = No
|
|||||||
text.info.title = [Vurgu] Bilgi
|
text.info.title = [Vurgu] Bilgi
|
||||||
text.error.title = [crimson] Bir hata oluştu
|
text.error.title = [crimson] Bir hata oluştu
|
||||||
text.error.crashtitle = Bir hata oluştu
|
text.error.crashtitle = Bir hata oluştu
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Blok Bilgisi
|
text.blocks.blockinfo = Blok Bilgisi
|
||||||
text.blocks.powercapacity = Güç kapasitesi
|
text.blocks.powercapacity = Güç kapasitesi
|
||||||
text.blocks.powershot = Güç / atış
|
text.blocks.powershot = Güç / atış
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Coolant
|
|||||||
text.blocks.coolantuse = Coolant Use
|
text.blocks.coolantuse = Coolant Use
|
||||||
text.blocks.inputliquidfuel = Fuel Liquid
|
text.blocks.inputliquidfuel = Fuel Liquid
|
||||||
text.blocks.liquidfueluse = Liquid Fuel Use
|
text.blocks.liquidfueluse = Liquid Fuel Use
|
||||||
text.blocks.explosive = Çok patlayıcı!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Can
|
text.blocks.health = Can
|
||||||
text.blocks.inaccuracy = yanlışlık
|
text.blocks.inaccuracy = yanlışlık
|
||||||
text.blocks.shots = atışlar
|
text.blocks.shots = atışlar
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Liquids
|
|||||||
text.category.items = Items
|
text.category.items = Items
|
||||||
text.category.crafting = Crafting
|
text.category.crafting = Crafting
|
||||||
text.category.shooting = Shooting
|
text.category.shooting = Shooting
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Auto-Target
|
setting.autotarget.name = Auto-Target
|
||||||
setting.fpscap.name = Max FPS
|
setting.fpscap.name = Max FPS
|
||||||
setting.fpscap.none = None
|
setting.fpscap.none = None
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Denetleyici hassasiyeti
|
|||||||
setting.saveinterval.name = Otomatik Kaydetme Aralığı
|
setting.saveinterval.name = Otomatik Kaydetme Aralığı
|
||||||
setting.seconds = saniye
|
setting.seconds = saniye
|
||||||
setting.fullscreen.name = Tam ekran
|
setting.fullscreen.name = Tam ekran
|
||||||
setting.multithread.name = Çok iş parçacığı
|
|
||||||
setting.fps.name = Saniyede ... Kare göstermek
|
setting.fps.name = Saniyede ... Kare göstermek
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.lasers.name = Güç Lazerleri Göster
|
setting.lasers.name = Güç Lazerleri Göster
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = dalgalar
|
|||||||
mode.waves.description = normal mod. sınırlı kaynaklar ve otomatik gelen dalgalar.
|
mode.waves.description = normal mod. sınırlı kaynaklar ve otomatik gelen dalgalar.
|
||||||
mode.sandbox.name = Limitsiz Oynama
|
mode.sandbox.name = Limitsiz Oynama
|
||||||
mode.sandbox.description = sonsuz kaynaklar ve dalgalar için zamanlayıcı yok.
|
mode.sandbox.description = sonsuz kaynaklar ve dalgalar için zamanlayıcı yok.
|
||||||
mode.custom.warning = Note that blocks cannot be used in custom games until they are unlocked in sectors.\n\n[LIGHT_GRAY]If you have not unlocked any blocks, none will appear.
|
|
||||||
mode.custom.warning.read = Just to make sure you've read it:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is)
|
|
||||||
mode.freebuild.name = Özgür Oynama
|
mode.freebuild.name = Özgür Oynama
|
||||||
mode.freebuild.description = sınırlı kaynaklar ve dalgalar için zamanlayıcı yok.
|
mode.freebuild.description = sınırlı kaynaklar ve dalgalar için zamanlayıcı yok.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = Ні
|
|||||||
text.info.title = [accent]Інформація
|
text.info.title = [accent]Інформація
|
||||||
text.error.title = [crimson]Виникла помилка
|
text.error.title = [crimson]Виникла помилка
|
||||||
text.error.crashtitle = Виникла помилка
|
text.error.crashtitle = Виникла помилка
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = Інформація про блок
|
text.blocks.blockinfo = Інформація про блок
|
||||||
text.blocks.powercapacity = Місткість енергії
|
text.blocks.powercapacity = Місткість енергії
|
||||||
text.blocks.powershot = Енергія/постріл
|
text.blocks.powershot = Енергія/постріл
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = Охолоджуюча рідина
|
|||||||
text.blocks.coolantuse = Охолодж. рідини використовуеться
|
text.blocks.coolantuse = Охолодж. рідини використовуеться
|
||||||
text.blocks.inputliquidfuel = Рідке паливо
|
text.blocks.inputliquidfuel = Рідке паливо
|
||||||
text.blocks.liquidfueluse = Рідкого палива використовуеться
|
text.blocks.liquidfueluse = Рідкого палива використовуеться
|
||||||
text.blocks.explosive = Вибухонебезпечний!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = Здоров'я
|
text.blocks.health = Здоров'я
|
||||||
text.blocks.inaccuracy = Розкид
|
text.blocks.inaccuracy = Розкид
|
||||||
text.blocks.shots = Постріли
|
text.blocks.shots = Постріли
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = Рідинне
|
|||||||
text.category.items = Елементи
|
text.category.items = Елементи
|
||||||
text.category.crafting = Створення
|
text.category.crafting = Створення
|
||||||
text.category.shooting = Стрільба
|
text.category.shooting = Стрільба
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = Авто-ціль
|
setting.autotarget.name = Авто-ціль
|
||||||
setting.fpscap.name = Макс. FPS
|
setting.fpscap.name = Макс. FPS
|
||||||
setting.fpscap.none = Необмежений
|
setting.fpscap.none = Необмежений
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = Чутливість контролера
|
|||||||
setting.saveinterval.name = Інтервал автозбереження
|
setting.saveinterval.name = Інтервал автозбереження
|
||||||
setting.seconds = {0} сек.
|
setting.seconds = {0} сек.
|
||||||
setting.fullscreen.name = Повноекранний режим
|
setting.fullscreen.name = Повноекранний режим
|
||||||
setting.multithread.name = Багатопотоковість (TPS)
|
|
||||||
setting.fps.name = Показати FPS
|
setting.fps.name = Показати FPS
|
||||||
setting.vsync.name = Вертикальна синхронізація
|
setting.vsync.name = Вертикальна синхронізація
|
||||||
setting.lasers.name = Показати енергетичні лазери
|
setting.lasers.name = Показати енергетичні лазери
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = Хвилі
|
|||||||
mode.waves.description = Нормальний режим. Обмежені ресурси та автоматичні хвилі.
|
mode.waves.description = Нормальний режим. Обмежені ресурси та автоматичні хвилі.
|
||||||
mode.sandbox.name = Пісочниця
|
mode.sandbox.name = Пісочниця
|
||||||
mode.sandbox.description = Нескінченні ресурси і нема таймера для хвиль.
|
mode.sandbox.description = Нескінченні ресурси і нема таймера для хвиль.
|
||||||
mode.custom.warning = [scarlet]РОЗБЛОКОВАНЕ В КОРИСТУВАЛЬНИЦЬКИХ ІГРАХ АБО НА СЕРВЕРАХ НЕ ЗБЕРІГАЄТЬСЯ.\n\nГрайте у секторах для розблокування.
|
|
||||||
mode.custom.warning.read = Уважно прочитайте це!:\n[scarlet]РОЗБЛОКОВАНЕ В КОРИСТУВАЛЬНИЦЬКИХ ІГРАХ АБО В ІНШИХ РЕЖИМАХ ГРИ НЕ ПОШИРЮЄТЬСЯ НА СЕКТОРИ ТА ІНШІ РЕЖИМИ ГРИ!\n\n[LIGHT_GRAY](Я б хотів, щоб це не було необхідно, але, мабуть, це так)
|
|
||||||
mode.freebuild.name = Вільний режим
|
mode.freebuild.name = Вільний режим
|
||||||
mode.freebuild.description = обмежені ресурси і немає таймера для хвиль.
|
mode.freebuild.description = обмежені ресурси і немає таймера для хвиль.
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = 不
|
|||||||
text.info.title = [accent]详情
|
text.info.title = [accent]详情
|
||||||
text.error.title = [crimson]发生了一个错误
|
text.error.title = [crimson]发生了一个错误
|
||||||
text.error.crashtitle = 发生了一个错误
|
text.error.crashtitle = 发生了一个错误
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = 方块详情
|
text.blocks.blockinfo = 方块详情
|
||||||
text.blocks.powercapacity = 能量容量
|
text.blocks.powercapacity = 能量容量
|
||||||
text.blocks.powershot = 能量/发射
|
text.blocks.powershot = 能量/发射
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = 冷却剂
|
|||||||
text.blocks.coolantuse = 冷却剂使用速度
|
text.blocks.coolantuse = 冷却剂使用速度
|
||||||
text.blocks.inputliquidfuel = 液体燃料输入
|
text.blocks.inputliquidfuel = 液体燃料输入
|
||||||
text.blocks.liquidfueluse = 液体燃料使用速度
|
text.blocks.liquidfueluse = 液体燃料使用速度
|
||||||
text.blocks.explosive = 易爆炸!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = 生命值
|
text.blocks.health = 生命值
|
||||||
text.blocks.inaccuracy = 误差
|
text.blocks.inaccuracy = 误差
|
||||||
text.blocks.shots = 发射数
|
text.blocks.shots = 发射数
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = 液体
|
|||||||
text.category.items = 物品
|
text.category.items = 物品
|
||||||
text.category.crafting = 制造
|
text.category.crafting = 制造
|
||||||
text.category.shooting = 发射
|
text.category.shooting = 发射
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = 自动发射
|
setting.autotarget.name = 自动发射
|
||||||
setting.fpscap.name = 最高 FPS
|
setting.fpscap.name = 最高 FPS
|
||||||
setting.fpscap.none = 无
|
setting.fpscap.none = 无
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = 控制器灵敏度
|
|||||||
setting.saveinterval.name = 自动保存间隔
|
setting.saveinterval.name = 自动保存间隔
|
||||||
setting.seconds = {0} 秒
|
setting.seconds = {0} 秒
|
||||||
setting.fullscreen.name = 全屏
|
setting.fullscreen.name = 全屏
|
||||||
setting.multithread.name = 多线程
|
|
||||||
setting.fps.name = 显示 FPS
|
setting.fps.name = 显示 FPS
|
||||||
setting.vsync.name = 帧同步
|
setting.vsync.name = 帧同步
|
||||||
setting.lasers.name = 显示能量射线
|
setting.lasers.name = 显示能量射线
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = 普通
|
|||||||
mode.waves.description = 普通模式,有限的资源和自动生成敌人。
|
mode.waves.description = 普通模式,有限的资源和自动生成敌人。
|
||||||
mode.sandbox.name = 沙盒
|
mode.sandbox.name = 沙盒
|
||||||
mode.sandbox.description = 无限的资源,不会自动生成敌人。
|
mode.sandbox.description = 无限的资源,不会自动生成敌人。
|
||||||
mode.custom.warning = 请注意,方块在区域内解锁之前,不能用于自定义游戏。\n\n[LIGHT_GRAY]如果您没有解锁任何方块,则不会出现任何方块。
|
|
||||||
mode.custom.warning.read = 确保你已经阅读过它:\n[scarlet]自定义游戏的解锁不带至区域或其他模式!\n\n[LIGHT_GRAY](我希望这不是必要的,但显然是必要的)
|
|
||||||
mode.freebuild.name = 自由建造
|
mode.freebuild.name = 自由建造
|
||||||
mode.freebuild.description = 有限的资源,不会自动生成敌人。
|
mode.freebuild.description = 有限的资源,不会自动生成敌人。
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ text.no = 否
|
|||||||
text.info.title = [accent]資訊
|
text.info.title = [accent]資訊
|
||||||
text.error.title = [crimson]發生錯誤
|
text.error.title = [crimson]發生錯誤
|
||||||
text.error.crashtitle = 發生錯誤
|
text.error.crashtitle = 發生錯誤
|
||||||
|
text.blocks.unknown = [LIGHT_GRAY]???
|
||||||
text.blocks.blockinfo = 方塊資訊
|
text.blocks.blockinfo = 方塊資訊
|
||||||
text.blocks.powercapacity = 蓄電量
|
text.blocks.powercapacity = 蓄電量
|
||||||
text.blocks.powershot = 能源/射擊
|
text.blocks.powershot = 能源/射擊
|
||||||
@@ -318,7 +319,8 @@ text.blocks.coolant = 冷卻劑
|
|||||||
text.blocks.coolantuse = 使用冷卻劑
|
text.blocks.coolantuse = 使用冷卻劑
|
||||||
text.blocks.inputliquidfuel = 輸入液體燃料
|
text.blocks.inputliquidfuel = 輸入液體燃料
|
||||||
text.blocks.liquidfueluse = 使用液體燃料速度
|
text.blocks.liquidfueluse = 使用液體燃料速度
|
||||||
text.blocks.explosive = 容易爆炸!
|
text.blocks.boostitem = Boost Item
|
||||||
|
text.blocks.boostliquid = Boost Liquid
|
||||||
text.blocks.health = 耐久度
|
text.blocks.health = 耐久度
|
||||||
text.blocks.inaccuracy = 誤差
|
text.blocks.inaccuracy = 誤差
|
||||||
text.blocks.shots = 射擊數
|
text.blocks.shots = 射擊數
|
||||||
@@ -343,6 +345,7 @@ text.category.liquids = 液體
|
|||||||
text.category.items = 物品
|
text.category.items = 物品
|
||||||
text.category.crafting = 合成
|
text.category.crafting = 合成
|
||||||
text.category.shooting = 射擊
|
text.category.shooting = 射擊
|
||||||
|
text.category.optional = Optional Enhancements
|
||||||
setting.autotarget.name = 自動射擊
|
setting.autotarget.name = 自動射擊
|
||||||
setting.fpscap.name = 最大螢幕刷新率
|
setting.fpscap.name = 最大螢幕刷新率
|
||||||
setting.fpscap.none = 没有
|
setting.fpscap.none = 没有
|
||||||
@@ -359,7 +362,6 @@ setting.sensitivity.name = 控制器靈敏度
|
|||||||
setting.saveinterval.name = 自動存檔間隔
|
setting.saveinterval.name = 自動存檔間隔
|
||||||
setting.seconds = {0}秒
|
setting.seconds = {0}秒
|
||||||
setting.fullscreen.name = 全螢幕
|
setting.fullscreen.name = 全螢幕
|
||||||
setting.multithread.name = 多執行緒
|
|
||||||
setting.fps.name = 顯示螢幕刷新率
|
setting.fps.name = 顯示螢幕刷新率
|
||||||
setting.vsync.name = 垂直同步
|
setting.vsync.name = 垂直同步
|
||||||
setting.lasers.name = 顯示雷射光束
|
setting.lasers.name = 顯示雷射光束
|
||||||
@@ -404,8 +406,6 @@ mode.waves.name = 一般
|
|||||||
mode.waves.description = 一般模式,有限的資源與自動來襲的波次。
|
mode.waves.description = 一般模式,有限的資源與自動來襲的波次。
|
||||||
mode.sandbox.name = 沙盒
|
mode.sandbox.name = 沙盒
|
||||||
mode.sandbox.description = 無限的資源,與不倒數計時的波次。
|
mode.sandbox.description = 無限的資源,與不倒數計時的波次。
|
||||||
mode.custom.warning = 請注意,方塊在區域內解鎖之前,不能用於自訂遊戲。\n\n[LIGHT_GRAY]如果您沒有解鎖任何方塊,則不會出現任何方塊。
|
|
||||||
mode.custom.warning.read = 確保你已閱讀過它:\n[scarlet]自訂遊戲的解鎖不帶至區域或其他模式!\n\n[LIGHT_GRAY](我希望這不是必要的,但顯然是必要的)
|
|
||||||
mode.freebuild.name = 自由建造
|
mode.freebuild.name = 自由建造
|
||||||
mode.freebuild.description = 有限的資源,與不倒數計時的波次。
|
mode.freebuild.description = 有限的資源,與不倒數計時的波次。
|
||||||
mode.pvp.name = 對戰
|
mode.pvp.name = 對戰
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
@@ -33,6 +33,7 @@ public class Vars{
|
|||||||
public static final String appName = "Mindustry";
|
public static final String appName = "Mindustry";
|
||||||
public static final String discordURL = "https://discord.gg/mindustry";
|
public static final String discordURL = "https://discord.gg/mindustry";
|
||||||
public static final String releasesURL = "https://api.github.com/repos/Anuken/Mindustry/releases";
|
public static final String releasesURL = "https://api.github.com/repos/Anuken/Mindustry/releases";
|
||||||
|
public static final String contributorsURL = "https://api.github.com/repos/Anuken/Mindustry/contributors";
|
||||||
public static final String crashReportURL = "http://mindustry.us.to/report";
|
public static final String crashReportURL = "http://mindustry.us.to/report";
|
||||||
//time between waves in frames (on normal mode)
|
//time between waves in frames (on normal mode)
|
||||||
public static final float wavespace = 60 * 60 * 1.5f;
|
public static final float wavespace = 60 * 60 * 1.5f;
|
||||||
@@ -49,8 +50,7 @@ public class Vars{
|
|||||||
public static final int maxNameLength = 40;
|
public static final int maxNameLength = 40;
|
||||||
public static final float itemSize = 5f;
|
public static final float itemSize = 5f;
|
||||||
public static final int tilesize = 8;
|
public static final int tilesize = 8;
|
||||||
public static final int sectorSize = 250;
|
public static final int sectorSize = 256;
|
||||||
public static final int mapPadding = 3;
|
|
||||||
public static final int invalidSector = Integer.MAX_VALUE;
|
public static final int invalidSector = Integer.MAX_VALUE;
|
||||||
public static Locale[] locales;
|
public static Locale[] locales;
|
||||||
public static final Color[] playerColors = {
|
public static final Color[] playerColors = {
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import io.anuke.ucore.util.ThreadArray;
|
|||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
|
|
||||||
//TODO consider using quadtrees for finding specific types of blocks within an area
|
//TODO consider using quadtrees for finding specific types of blocks within an area
|
||||||
//TODO maybe use Arrays instead of ObjectSets?
|
|
||||||
|
|
||||||
/**Class used for indexing special target blocks for AI.*/
|
/**Class used for indexing special target blocks for AI.*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ public class Pathfinder{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state.spawner.checkAllQuadrants();
|
world.spawner.checkAllQuadrants();
|
||||||
}
|
}
|
||||||
|
|
||||||
class PathData{
|
class PathData{
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public class Recipes implements ContentList{
|
|||||||
new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.densealloy, 4), new ItemStack(Items.copper, 4));
|
new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.densealloy, 4), new ItemStack(Items.copper, 4));
|
||||||
new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.densealloy, 4), new ItemStack(Items.copper, 8));
|
new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.densealloy, 4), new ItemStack(Items.copper, 8));
|
||||||
new Recipe(distribution, DistributionBlocks.itemBridge, new ItemStack(Items.densealloy, 8), new ItemStack(Items.copper, 8));
|
new Recipe(distribution, DistributionBlocks.itemBridge, new ItemStack(Items.densealloy, 8), new ItemStack(Items.copper, 8));
|
||||||
new Recipe(distribution, DistributionBlocks.massDriver, new ItemStack(Items.densealloy, 400), new ItemStack(Items.silicon, 300), new ItemStack(Items.lead, 400), new ItemStack(Items.thorium, 250));
|
new Recipe(distribution, DistributionBlocks.massDriver, new ItemStack(Items.densealloy, 250), new ItemStack(Items.silicon, 150), new ItemStack(Items.lead, 250), new ItemStack(Items.thorium, 100));
|
||||||
|
|
||||||
//CRAFTING
|
//CRAFTING
|
||||||
|
|
||||||
|
|||||||
@@ -33,9 +33,9 @@ public class DistributionBlocks extends BlockList implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
phaseConveyor = new ItemBridge("phase-conveyor"){{
|
phaseConveyor = new ItemBridge("phase-conveyor"){{
|
||||||
range = 11;
|
range = 12;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
consumes.power(0.05f);
|
consumes.power(0.03f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
sorter = new Sorter("sorter");
|
sorter = new Sorter("sorter");
|
||||||
@@ -50,8 +50,8 @@ public class DistributionBlocks extends BlockList implements ContentList{
|
|||||||
|
|
||||||
massDriver = new MassDriver("mass-driver"){{
|
massDriver = new MassDriver("mass-driver"){{
|
||||||
size = 3;
|
size = 3;
|
||||||
itemCapacity = 80;
|
itemCapacity = 60;
|
||||||
range = 340f;
|
range = 440f;
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,9 +67,9 @@ public class LiquidBlocks extends BlockList implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
phaseConduit = new LiquidBridge("phase-conduit"){{
|
phaseConduit = new LiquidBridge("phase-conduit"){{
|
||||||
range = 11;
|
range = 12;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
consumes.power(0.05f);
|
consumes.power(0.03f);
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,24 +32,13 @@ public class TurretBlocks extends BlockList implements ContentList{
|
|||||||
|
|
||||||
hail = new ArtilleryTurret("hail"){{
|
hail = new ArtilleryTurret("hail"){{
|
||||||
ammoTypes = new AmmoType[]{AmmoTypes.artilleryDense, AmmoTypes.artilleryHoming, AmmoTypes.artilleryIncindiary};
|
ammoTypes = new AmmoType[]{AmmoTypes.artilleryDense, AmmoTypes.artilleryHoming, AmmoTypes.artilleryIncindiary};
|
||||||
reload = 70f;
|
reload = 60f;
|
||||||
recoil = 2f;
|
recoil = 2f;
|
||||||
range = 230f;
|
range = 230f;
|
||||||
inaccuracy = 1f;
|
inaccuracy = 1f;
|
||||||
shootCone = 10f;
|
shootCone = 10f;
|
||||||
health = 120;
|
health = 120;
|
||||||
}};
|
}};
|
||||||
/*
|
|
||||||
scatter = new BurstTurret("scatter"){{
|
|
||||||
ammoTypes = new AmmoType[]{AmmoTypes.flakCopper};
|
|
||||||
reload = 70f;
|
|
||||||
recoil = 2f;
|
|
||||||
shots = 3;
|
|
||||||
range = 220f;
|
|
||||||
inaccuracy = 2f;
|
|
||||||
shootCone = 40f;
|
|
||||||
health = 120;
|
|
||||||
}};*/
|
|
||||||
|
|
||||||
scorch = new LiquidTurret("scorch"){
|
scorch = new LiquidTurret("scorch"){
|
||||||
protected TextureRegion shootRegion;
|
protected TextureRegion shootRegion;
|
||||||
@@ -117,11 +106,11 @@ public class TurretBlocks extends BlockList implements ContentList{
|
|||||||
|
|
||||||
arc = new PowerTurret("arc"){{
|
arc = new PowerTurret("arc"){{
|
||||||
shootType = AmmoTypes.arc;
|
shootType = AmmoTypes.arc;
|
||||||
reload = 55f;
|
reload = 75f;
|
||||||
shootShake = 1f;
|
shootShake = 1f;
|
||||||
shootCone = 40f;
|
shootCone = 40f;
|
||||||
rotatespeed = 8f;
|
rotatespeed = 8f;
|
||||||
powerUsed = 7f;
|
powerUsed = 9f;
|
||||||
powerCapacity = 30f;
|
powerCapacity = 30f;
|
||||||
range = 150f;
|
range = 150f;
|
||||||
shootEffect = ShootFx.lightningShoot;
|
shootEffect = ShootFx.lightningShoot;
|
||||||
@@ -132,7 +121,7 @@ public class TurretBlocks extends BlockList implements ContentList{
|
|||||||
|
|
||||||
swarmer = new BurstTurret("swarmer"){{
|
swarmer = new BurstTurret("swarmer"){{
|
||||||
ammoTypes = new AmmoType[]{AmmoTypes.missileExplosive, AmmoTypes.missileIncindiary, AmmoTypes.missileSurge};
|
ammoTypes = new AmmoType[]{AmmoTypes.missileExplosive, AmmoTypes.missileIncindiary, AmmoTypes.missileSurge};
|
||||||
reload = 60f;
|
reload = 5f;
|
||||||
shots = 4;
|
shots = 4;
|
||||||
burstSpacing = 5;
|
burstSpacing = 5;
|
||||||
inaccuracy = 10f;
|
inaccuracy = 10f;
|
||||||
@@ -156,7 +145,7 @@ public class TurretBlocks extends BlockList implements ContentList{
|
|||||||
size = 2;
|
size = 2;
|
||||||
range = 120f;
|
range = 120f;
|
||||||
ammoTypes = new AmmoType[]{AmmoTypes.bulletCopper, AmmoTypes.bulletDense, AmmoTypes.bulletPyratite, AmmoTypes.bulletThorium, AmmoTypes.bulletSilicon};
|
ammoTypes = new AmmoType[]{AmmoTypes.bulletCopper, AmmoTypes.bulletDense, AmmoTypes.bulletPyratite, AmmoTypes.bulletThorium, AmmoTypes.bulletSilicon};
|
||||||
reload = 40f;
|
reload = 35f;
|
||||||
restitution = 0.03f;
|
restitution = 0.03f;
|
||||||
ammoEjectBack = 3f;
|
ammoEjectBack = 3f;
|
||||||
cooldown = 0.03f;
|
cooldown = 0.03f;
|
||||||
@@ -216,7 +205,6 @@ public class TurretBlocks extends BlockList implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
fuse = new ItemTurret("fuse"){{
|
fuse = new ItemTurret("fuse"){{
|
||||||
//TODO make it use power
|
|
||||||
ammoTypes = new AmmoType[]{AmmoTypes.fuseShotgun};
|
ammoTypes = new AmmoType[]{AmmoTypes.fuseShotgun};
|
||||||
reload = 50f;
|
reload = 50f;
|
||||||
shootShake = 4f;
|
shootShake = 4f;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
produceTime = 5700;
|
produceTime = 5700;
|
||||||
size = 2;
|
size = 2;
|
||||||
consumes.power(0.08f);
|
consumes.power(0.08f);
|
||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)});
|
consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
phantomFactory = new UnitFactory("phantom-factory"){{
|
phantomFactory = new UnitFactory("phantom-factory"){{
|
||||||
@@ -29,7 +29,7 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
produceTime = 7300;
|
produceTime = 7300;
|
||||||
size = 2;
|
size = 2;
|
||||||
consumes.power(0.2f);
|
consumes.power(0.2f);
|
||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)});
|
consumes.items(new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
wraithFactory = new UnitFactory("wraith-factory"){{
|
wraithFactory = new UnitFactory("wraith-factory"){{
|
||||||
@@ -37,7 +37,7 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
produceTime = 1800;
|
produceTime = 1800;
|
||||||
size = 2;
|
size = 2;
|
||||||
consumes.power(0.1f);
|
consumes.power(0.1f);
|
||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 10), new ItemStack(Items.titanium, 10)});
|
consumes.items(new ItemStack(Items.silicon, 10), new ItemStack(Items.titanium, 10));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
ghoulFactory = new UnitFactory("ghoul-factory"){{
|
ghoulFactory = new UnitFactory("ghoul-factory"){{
|
||||||
@@ -46,7 +46,7 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
size = 3;
|
size = 3;
|
||||||
consumes.power(0.2f);
|
consumes.power(0.2f);
|
||||||
shadow = "shadow-round-3";
|
shadow = "shadow-round-3";
|
||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.titanium, 30), new ItemStack(Items.plastanium, 20)});
|
consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.titanium, 30), new ItemStack(Items.plastanium, 20));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
revenantFactory = new UnitFactory("revenant-factory"){{
|
revenantFactory = new UnitFactory("revenant-factory"){{
|
||||||
@@ -55,7 +55,7 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
size = 4;
|
size = 4;
|
||||||
consumes.power(0.3f);
|
consumes.power(0.3f);
|
||||||
shadow = "shadow-round-4";
|
shadow = "shadow-round-4";
|
||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 80), new ItemStack(Items.titanium, 80), new ItemStack(Items.plastanium, 50)});
|
consumes.items(new ItemStack(Items.silicon, 80), new ItemStack(Items.titanium, 80), new ItemStack(Items.plastanium, 50));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
daggerFactory = new UnitFactory("dagger-factory"){{
|
daggerFactory = new UnitFactory("dagger-factory"){{
|
||||||
@@ -63,7 +63,7 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
produceTime = 1700;
|
produceTime = 1700;
|
||||||
size = 2;
|
size = 2;
|
||||||
consumes.power(0.05f);
|
consumes.power(0.05f);
|
||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 10)});
|
consumes.items(new ItemStack(Items.silicon, 10));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
titanFactory = new UnitFactory("titan-factory"){{
|
titanFactory = new UnitFactory("titan-factory"){{
|
||||||
@@ -72,7 +72,7 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
size = 3;
|
size = 3;
|
||||||
consumes.power(0.15f);
|
consumes.power(0.15f);
|
||||||
shadow = "shadow-round-3";
|
shadow = "shadow-round-3";
|
||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 20), new ItemStack(Items.thorium, 30)});
|
consumes.items(new ItemStack(Items.silicon, 20), new ItemStack(Items.thorium, 30));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
fortressFactory = new UnitFactory("fortress-factory"){{
|
fortressFactory = new UnitFactory("fortress-factory"){{
|
||||||
@@ -81,7 +81,7 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
size = 3;
|
size = 3;
|
||||||
consumes.power(0.2f);
|
consumes.power(0.2f);
|
||||||
shadow = "shadow-round-3";
|
shadow = "shadow-round-3";
|
||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 40), new ItemStack(Items.thorium, 50)});
|
consumes.items(new ItemStack(Items.silicon, 40), new ItemStack(Items.thorium, 50));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
repairPoint = new RepairPoint("repair-point"){{
|
repairPoint = new RepairPoint("repair-point"){{
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ public class TurretBullets extends BulletList implements ContentList{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
arc = new BulletType(0.001f, 30){
|
arc = new BulletType(0.001f, 26){
|
||||||
{
|
{
|
||||||
lifetime = 1;
|
lifetime = 1;
|
||||||
despawneffect = Fx.none;
|
despawneffect = Fx.none;
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ public class Control extends Module{
|
|||||||
"color-1", Color.rgba8888(playerColors[11]),
|
"color-1", Color.rgba8888(playerColors[11]),
|
||||||
"color-2", Color.rgba8888(playerColors[13]),
|
"color-2", Color.rgba8888(playerColors[13]),
|
||||||
"color-3", Color.rgba8888(playerColors[9]),
|
"color-3", Color.rgba8888(playerColors[9]),
|
||||||
"name", "player",
|
"name", "",
|
||||||
"lastBuild", 0
|
"lastBuild", 0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package io.anuke.mindustry.core;
|
package io.anuke.mindustry.core;
|
||||||
|
|
||||||
import io.anuke.mindustry.ai.WaveSpawner;
|
|
||||||
import io.anuke.mindustry.game.Difficulty;
|
import io.anuke.mindustry.game.Difficulty;
|
||||||
import io.anuke.mindustry.game.EventType.StateChangeEvent;
|
import io.anuke.mindustry.game.EventType.StateChangeEvent;
|
||||||
import io.anuke.mindustry.game.GameMode;
|
import io.anuke.mindustry.game.GameMode;
|
||||||
@@ -12,14 +11,21 @@ import static io.anuke.mindustry.Vars.unitGroups;
|
|||||||
import static io.anuke.mindustry.Vars.waveTeam;
|
import static io.anuke.mindustry.Vars.waveTeam;
|
||||||
|
|
||||||
public class GameState{
|
public class GameState{
|
||||||
|
/**Current wave number, can be anything in non-wave modes.*/
|
||||||
public int wave = 1;
|
public int wave = 1;
|
||||||
|
/**Wave countdown in ticks.*/
|
||||||
public float wavetime;
|
public float wavetime;
|
||||||
|
/**Whether the game is in game over state.*/
|
||||||
public boolean gameOver = false;
|
public boolean gameOver = false;
|
||||||
|
/**The current game mode.*/
|
||||||
public GameMode mode = GameMode.waves;
|
public GameMode mode = GameMode.waves;
|
||||||
|
/**The current difficulty for wave modes.*/
|
||||||
public Difficulty difficulty = Difficulty.normal;
|
public Difficulty difficulty = Difficulty.normal;
|
||||||
public WaveSpawner spawner = new WaveSpawner();
|
/**Team data. Gets reset every new game.*/
|
||||||
public Teams teams = new Teams();
|
public Teams teams = new Teams();
|
||||||
|
/**Number of enemies in the game; only used clientside in servers.*/
|
||||||
public int enemies;
|
public int enemies;
|
||||||
|
/**Current game state.*/
|
||||||
private State state = State.menu;
|
private State state = State.menu;
|
||||||
|
|
||||||
public int enemies(){
|
public int enemies(){
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ public class Logic extends Module{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void runWave(){
|
public void runWave(){
|
||||||
state.spawner.spawnEnemies();
|
world.spawner.spawnEnemies();
|
||||||
state.wave++;
|
state.wave++;
|
||||||
state.wavetime = wavespace * state.difficulty.timeScaling;
|
state.wavetime = wavespace * state.difficulty.timeScaling;
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import io.anuke.mindustry.entities.Player;
|
|||||||
import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest;
|
import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest;
|
||||||
import io.anuke.mindustry.entities.traits.SyncTrait;
|
import io.anuke.mindustry.entities.traits.SyncTrait;
|
||||||
import io.anuke.mindustry.entities.traits.TypeTrait;
|
import io.anuke.mindustry.entities.traits.TypeTrait;
|
||||||
|
import io.anuke.mindustry.game.Version;
|
||||||
import io.anuke.mindustry.gen.Call;
|
import io.anuke.mindustry.gen.Call;
|
||||||
import io.anuke.mindustry.gen.RemoteReadClient;
|
import io.anuke.mindustry.gen.RemoteReadClient;
|
||||||
import io.anuke.mindustry.net.Net;
|
import io.anuke.mindustry.net.Net;
|
||||||
@@ -95,6 +96,7 @@ public class NetClient extends Module{
|
|||||||
ConnectPacket c = new ConnectPacket();
|
ConnectPacket c = new ConnectPacket();
|
||||||
c.name = player.name;
|
c.name = player.name;
|
||||||
c.mobile = mobile;
|
c.mobile = mobile;
|
||||||
|
c.versionType = Version.type;
|
||||||
c.color = Color.rgba8888(player.color);
|
c.color = Color.rgba8888(player.color);
|
||||||
c.usid = getUsid(packet.addressTCP);
|
c.usid = getUsid(packet.addressTCP);
|
||||||
c.uuid = Platform.instance.getUUID();
|
c.uuid = Platform.instance.getUUID();
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ public class NetServer extends Module{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(packet.version == -1 && Version.build != -1 && !admins.allowsCustomClients()){
|
if(packet.versionType == null || ((packet.version == -1 || !packet.versionType.equals("official")) && Version.build != -1 && !admins.allowsCustomClients())){
|
||||||
kick(id, KickReason.customClient);
|
kick(id, KickReason.customClient);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.badlogic.gdx.utils.Array;
|
|||||||
import com.badlogic.gdx.utils.ObjectMap;
|
import com.badlogic.gdx.utils.ObjectMap;
|
||||||
import io.anuke.mindustry.ai.BlockIndexer;
|
import io.anuke.mindustry.ai.BlockIndexer;
|
||||||
import io.anuke.mindustry.ai.Pathfinder;
|
import io.anuke.mindustry.ai.Pathfinder;
|
||||||
|
import io.anuke.mindustry.ai.WaveSpawner;
|
||||||
import io.anuke.mindustry.content.blocks.Blocks;
|
import io.anuke.mindustry.content.blocks.Blocks;
|
||||||
import io.anuke.mindustry.core.GameState.State;
|
import io.anuke.mindustry.core.GameState.State;
|
||||||
import io.anuke.mindustry.game.EventType.TileChangeEvent;
|
import io.anuke.mindustry.game.EventType.TileChangeEvent;
|
||||||
@@ -30,6 +31,7 @@ public class World extends Module{
|
|||||||
public final WorldGenerator generator = new WorldGenerator();
|
public final WorldGenerator generator = new WorldGenerator();
|
||||||
public final BlockIndexer indexer = new BlockIndexer();
|
public final BlockIndexer indexer = new BlockIndexer();
|
||||||
public final Pathfinder pathfinder = new Pathfinder();
|
public final Pathfinder pathfinder = new Pathfinder();
|
||||||
|
public final WaveSpawner spawner = new WaveSpawner();
|
||||||
|
|
||||||
private Map currentMap;
|
private Map currentMap;
|
||||||
private Sector currentSector;
|
private Sector currentSector;
|
||||||
|
|||||||
@@ -175,7 +175,6 @@ public class MapView extends Element implements GestureListener{
|
|||||||
|
|
||||||
public void clearStack(){
|
public void clearStack(){
|
||||||
stack.clear();
|
stack.clear();
|
||||||
//TODO clear und obuffer
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperationStack getStack(){
|
public OperationStack getStack(){
|
||||||
@@ -292,7 +291,6 @@ public class MapView extends Element implements GestureListener{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//todo is it really math.max?
|
|
||||||
float scaling = zoom * Math.min(width, height) / editor.getMap().width();
|
float scaling = zoom * Math.min(width, height) / editor.getMap().width();
|
||||||
|
|
||||||
Draw.color(Palette.accent);
|
Draw.color(Palette.accent);
|
||||||
|
|||||||
@@ -19,10 +19,7 @@ import io.anuke.mindustry.graphics.Trail;
|
|||||||
import io.anuke.mindustry.io.TypeIO;
|
import io.anuke.mindustry.io.TypeIO;
|
||||||
import io.anuke.mindustry.net.Net;
|
import io.anuke.mindustry.net.Net;
|
||||||
import io.anuke.mindustry.net.NetConnection;
|
import io.anuke.mindustry.net.NetConnection;
|
||||||
import io.anuke.mindustry.type.ContentType;
|
import io.anuke.mindustry.type.*;
|
||||||
import io.anuke.mindustry.type.ItemStack;
|
|
||||||
import io.anuke.mindustry.type.Mech;
|
|
||||||
import io.anuke.mindustry.type.Weapon;
|
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.Block;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.Floor;
|
import io.anuke.mindustry.world.blocks.Floor;
|
||||||
@@ -192,6 +189,11 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
this.mining = tile;
|
this.mining = tile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canMine(Item item){
|
||||||
|
return item.hardness <= mech.drillPower;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getArmor(){
|
public float getArmor(){
|
||||||
return mech.armor + mech.getExtraArmor(this);
|
return mech.armor + mech.getExtraArmor(this);
|
||||||
|
|||||||
@@ -58,6 +58,9 @@ public interface BuilderTrait extends Entity{
|
|||||||
/**Build power, can be any float. 1 = builds recipes in normal time, 0 = doesn't build at all.*/
|
/**Build power, can be any float. 1 = builds recipes in normal time, 0 = doesn't build at all.*/
|
||||||
float getBuildPower(Tile tile);
|
float getBuildPower(Tile tile);
|
||||||
|
|
||||||
|
/**Returns whether or not this builder can mine a specific item type.*/
|
||||||
|
boolean canMine(Item item);
|
||||||
|
|
||||||
/**Whether this type of builder can begin creating new blocks.*/
|
/**Whether this type of builder can begin creating new blocks.*/
|
||||||
default boolean canCreateBlocks(){
|
default boolean canCreateBlocks(){
|
||||||
return true;
|
return true;
|
||||||
@@ -236,7 +239,8 @@ public interface BuilderTrait extends Entity{
|
|||||||
Tile tile = getMineTile();
|
Tile tile = getMineTile();
|
||||||
TileEntity core = unit.getClosestCore();
|
TileEntity core = unit.getClosestCore();
|
||||||
|
|
||||||
if(core == null || tile.block() != Blocks.air || unit.distanceTo(tile.worldx(), tile.worldy()) > mineDistance || !unit.inventory.canAcceptItem(tile.floor().drops.item)){
|
if(core == null || tile.block() != Blocks.air || unit.distanceTo(tile.worldx(), tile.worldy()) > mineDistance
|
||||||
|
|| tile.floor().drops == null || !unit.inventory.canAcceptItem(tile.floor().drops.item) || !canMine(tile.floor().drops.item)){
|
||||||
setMineTile(null);
|
setMineTile(null);
|
||||||
}else{
|
}else{
|
||||||
Item item = tile.floor().drops.item;
|
Item item = tile.floor().drops.item;
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import io.anuke.ucore.util.Bundles;
|
|||||||
import io.anuke.ucore.util.Log;
|
import io.anuke.ucore.util.Log;
|
||||||
import io.anuke.ucore.util.Strings;
|
import io.anuke.ucore.util.Strings;
|
||||||
|
|
||||||
//TODO merge unit type with mech
|
|
||||||
public class UnitType extends UnlockableContent{
|
public class UnitType extends UnlockableContent{
|
||||||
protected final Supplier<? extends BaseUnit> constructor;
|
protected final Supplier<? extends BaseUnit> constructor;
|
||||||
|
|
||||||
|
|||||||
@@ -279,6 +279,11 @@ public class Drone extends FlyingUnit implements BuilderTrait{
|
|||||||
//no
|
//no
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canMine(Item item){
|
||||||
|
return type.toMine.contains(item);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getBuildPower(Tile tile){
|
public float getBuildPower(Tile tile){
|
||||||
return type.buildPower;
|
return type.buildPower;
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ import java.io.IOException;
|
|||||||
public class Version{
|
public class Version{
|
||||||
/**Build type. 'official' for official releases; 'custom' or 'bleeding edge' are also used.*/
|
/**Build type. 'official' for official releases; 'custom' or 'bleeding edge' are also used.*/
|
||||||
public static String type;
|
public static String type;
|
||||||
/**Number specifying the major version, e.g. '4.0'*/
|
|
||||||
public static String number;
|
|
||||||
/**Build modifier, e.g. 'alpha' or 'release'*/
|
/**Build modifier, e.g. 'alpha' or 'release'*/
|
||||||
public static String modifier;
|
public static String modifier;
|
||||||
|
/**Number specifying the major version, e.g. '4'*/
|
||||||
|
public static int number;
|
||||||
/**Build number, e.g. '43'. set to '-1' for custom builds.*/
|
/**Build number, e.g. '43'. set to '-1' for custom builds.*/
|
||||||
public static int build = 0;
|
public static int build = 0;
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ public class Version{
|
|||||||
PropertiesUtils.load(map, file.reader());
|
PropertiesUtils.load(map, file.reader());
|
||||||
|
|
||||||
type = map.get("type");
|
type = map.get("type");
|
||||||
number = map.get("number");
|
number = Integer.parseInt(map.get("number"));
|
||||||
modifier = map.get("modifier");
|
modifier = map.get("modifier");
|
||||||
build = Strings.canParseInt(map.get("build")) ? Integer.parseInt(map.get("build")) : -1;
|
build = Strings.canParseInt(map.get("build")) ? Integer.parseInt(map.get("build")) : -1;
|
||||||
}catch(IOException e){
|
}catch(IOException e){
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import static io.anuke.ucore.core.Core.camera;
|
|||||||
|
|
||||||
public class BlockRenderer{
|
public class BlockRenderer{
|
||||||
private final static int initialRequests = 32 * 32;
|
private final static int initialRequests = 32 * 32;
|
||||||
private final static int expandr = 4;
|
private final static int expandr = 6;
|
||||||
|
|
||||||
private FloorRenderer floorRenderer;
|
private FloorRenderer floorRenderer;
|
||||||
|
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ public abstract class InputHandler extends InputAdapter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//call tapped event
|
//call tapped event
|
||||||
if(tile.getTeam() == player.getTeam()){
|
if(!consumed && tile.getTeam() == player.getTeam()){
|
||||||
Call.onTileTapped(player, tile);
|
Call.onTileTapped(player, tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
player.clearBuilding();
|
player.clearBuilding();
|
||||||
mode = none;
|
mode = none;
|
||||||
recipe = null;
|
recipe = null;
|
||||||
}).visible(() -> player.isBuilding() || mode != none);
|
}).visible(() -> player.isBuilding() || recipe != null);
|
||||||
|
|
||||||
//confirm button
|
//confirm button
|
||||||
table.addImageButton("icon-check", "clear-partial", 16 * 2f, () -> {
|
table.addImageButton("icon-check", "clear-partial", 16 * 2f, () -> {
|
||||||
@@ -528,7 +528,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
//ignore off-screen taps
|
//ignore off-screen taps
|
||||||
if(cursor == null || ui.hasMouse(x, y)) return false;
|
if(cursor == null || ui.hasMouse(x, y)) return false;
|
||||||
|
|
||||||
threads.run(() -> checkTargets(worldx, worldy));
|
checkTargets(worldx, worldy);
|
||||||
|
|
||||||
//remove if request present
|
//remove if request present
|
||||||
if(hasRequest(cursor)){
|
if(hasRequest(cursor)){
|
||||||
@@ -548,14 +548,13 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
consumed = true;
|
consumed = true;
|
||||||
player.dropCarry(); //drop off unit
|
player.dropCarry(); //drop off unit
|
||||||
}else{
|
}else{
|
||||||
threads.run(() -> {
|
|
||||||
Unit unit = Units.getClosest(player.getTeam(), Graphics.world(x, y).x, Graphics.world(x, y).y, 4f, u -> !u.isFlying() && u.getMass() <= player.mech.carryWeight);
|
Unit unit = Units.getClosest(player.getTeam(), Graphics.world(x, y).x, Graphics.world(x, y).y, 4f, u -> !u.isFlying() && u.getMass() <= player.mech.carryWeight);
|
||||||
|
|
||||||
if(unit != null){
|
if(unit != null){
|
||||||
|
consumed = true;
|
||||||
player.moveTarget = unit;
|
player.moveTarget = unit;
|
||||||
Effects.effect(Fx.select, unit.getX(), unit.getY());
|
Effects.effect(Fx.select, unit.getX(), unit.getY());
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
43
core/src/io/anuke/mindustry/io/Contributors.java
Normal file
43
core/src/io/anuke/mindustry/io/Contributors.java
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
package io.anuke.mindustry.io;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.utils.Array;
|
||||||
|
import com.badlogic.gdx.utils.JsonReader;
|
||||||
|
import com.badlogic.gdx.utils.JsonValue;
|
||||||
|
import io.anuke.mindustry.net.Net;
|
||||||
|
import io.anuke.ucore.function.Consumer;
|
||||||
|
|
||||||
|
import static io.anuke.mindustry.Vars.contributorsURL;
|
||||||
|
|
||||||
|
public class Contributors{
|
||||||
|
|
||||||
|
public static void getContributors(Consumer<Array<Contributor>> success, Consumer<Throwable> fail){
|
||||||
|
Net.http(contributorsURL, "GET", result -> {
|
||||||
|
JsonReader reader = new JsonReader();
|
||||||
|
JsonValue value = reader.parse(result).child;
|
||||||
|
Array<Contributor> out = new Array<>();
|
||||||
|
|
||||||
|
while(value != null){
|
||||||
|
String login = value.getString("login");
|
||||||
|
out.add(new Contributor(login));
|
||||||
|
value = value.next;
|
||||||
|
}
|
||||||
|
|
||||||
|
success.accept(out);
|
||||||
|
}, fail);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Contributor{
|
||||||
|
public final String login;
|
||||||
|
|
||||||
|
public Contributor(String login){
|
||||||
|
this.login = login;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(){
|
||||||
|
return "Contributor{" +
|
||||||
|
"login='" + login + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -27,7 +27,6 @@ import java.io.DataInput;
|
|||||||
import java.io.DataOutput;
|
import java.io.DataOutput;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.charset.Charset;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
@@ -332,31 +331,21 @@ public class TypeIO{
|
|||||||
@WriteClass(String.class)
|
@WriteClass(String.class)
|
||||||
public static void writeString(ByteBuffer buffer, String string){
|
public static void writeString(ByteBuffer buffer, String string){
|
||||||
if(string != null){
|
if(string != null){
|
||||||
Charset charset = Charset.defaultCharset();
|
byte[] bytes = string.getBytes(StandardCharsets.UTF_8);
|
||||||
byte[] nameBytes = charset.name().getBytes(StandardCharsets.UTF_8);
|
|
||||||
buffer.put((byte)nameBytes.length);
|
|
||||||
buffer.put(nameBytes);
|
|
||||||
|
|
||||||
byte[] bytes = string.getBytes(charset);
|
|
||||||
buffer.putShort((short) bytes.length);
|
buffer.putShort((short) bytes.length);
|
||||||
buffer.put(bytes);
|
buffer.put(bytes);
|
||||||
}else{
|
}else{
|
||||||
buffer.put((byte) -1);
|
buffer.putShort((short) -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ReadClass(String.class)
|
@ReadClass(String.class)
|
||||||
public static String readString(ByteBuffer buffer){
|
public static String readString(ByteBuffer buffer){
|
||||||
byte length = buffer.get();
|
|
||||||
if(length != -1){
|
|
||||||
byte[] cbytes = new byte[length];
|
|
||||||
buffer.get(cbytes);
|
|
||||||
Charset charset = Charset.forName(new String(cbytes, StandardCharsets.UTF_8));
|
|
||||||
|
|
||||||
short slength = buffer.getShort();
|
short slength = buffer.getShort();
|
||||||
|
if(slength != -1){
|
||||||
byte[] bytes = new byte[slength];
|
byte[] bytes = new byte[slength];
|
||||||
buffer.get(bytes);
|
buffer.get(bytes);
|
||||||
return new String(bytes, charset);
|
return new String(bytes, StandardCharsets.UTF_8);
|
||||||
}else{
|
}else{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -378,30 +367,20 @@ public class TypeIO{
|
|||||||
|
|
||||||
public static void writeStringData(DataOutput buffer, String string) throws IOException{
|
public static void writeStringData(DataOutput buffer, String string) throws IOException{
|
||||||
if(string != null){
|
if(string != null){
|
||||||
Charset charset = Charset.defaultCharset();
|
byte[] bytes = string.getBytes(StandardCharsets.UTF_8);
|
||||||
byte[] nameBytes = charset.name().getBytes(StandardCharsets.UTF_8);
|
|
||||||
buffer.writeByte((byte)nameBytes.length);
|
|
||||||
buffer.write(nameBytes);
|
|
||||||
|
|
||||||
byte[] bytes = string.getBytes(charset);
|
|
||||||
buffer.writeShort((short) bytes.length);
|
buffer.writeShort((short) bytes.length);
|
||||||
buffer.write(bytes);
|
buffer.write(bytes);
|
||||||
}else{
|
}else{
|
||||||
buffer.writeByte((byte) -1);
|
buffer.writeShort((short) -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String readStringData(DataInput buffer) throws IOException{
|
public static String readStringData(DataInput buffer) throws IOException{
|
||||||
byte length = buffer.readByte();
|
|
||||||
if(length != -1){
|
|
||||||
byte[] cbytes = new byte[length];
|
|
||||||
buffer.readFully(cbytes);
|
|
||||||
Charset charset = Charset.forName(new String(cbytes, StandardCharsets.UTF_8));
|
|
||||||
|
|
||||||
short slength = buffer.readShort();
|
short slength = buffer.readShort();
|
||||||
|
if(slength != -1){
|
||||||
byte[] bytes = new byte[slength];
|
byte[] bytes = new byte[slength];
|
||||||
buffer.readFully(bytes);
|
buffer.readFully(bytes);
|
||||||
return new String(bytes, charset);
|
return new String(bytes, StandardCharsets.UTF_8);
|
||||||
}else{
|
}else{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class Save16 extends SaveFileVersion{
|
|||||||
|
|
||||||
content.setTemporaryMapper(readContentHeader(stream));
|
content.setTemporaryMapper(readContentHeader(stream));
|
||||||
|
|
||||||
state.spawner.read(stream);
|
world.spawner.read(stream);
|
||||||
|
|
||||||
readEntities(stream);
|
readEntities(stream);
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ public class Save16 extends SaveFileVersion{
|
|||||||
|
|
||||||
writeContentHeader(stream);
|
writeContentHeader(stream);
|
||||||
|
|
||||||
state.spawner.write(stream); //spawnes
|
world.spawner.write(stream); //spawnes
|
||||||
|
|
||||||
//--ENTITIES--
|
//--ENTITIES--
|
||||||
|
|
||||||
|
|||||||
@@ -32,4 +32,13 @@ public class Map{
|
|||||||
public String getDisplayName(){
|
public String getDisplayName(){
|
||||||
return meta.tags.get("name", name);
|
return meta.tags.get("name", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(){
|
||||||
|
return "Map{" +
|
||||||
|
"name='" + name + '\'' +
|
||||||
|
", custom=" + custom +
|
||||||
|
", meta=" + meta +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,4 +37,13 @@ public class MapMeta{
|
|||||||
public boolean hasOreGen(){
|
public boolean hasOreGen(){
|
||||||
return !tags.get("oregen", "0").equals("0");
|
return !tags.get("oregen", "0").equals("0");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(){
|
||||||
|
return "MapMeta{" +
|
||||||
|
"tags=" + tags +
|
||||||
|
", width=" + width +
|
||||||
|
", height=" + height +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class TutorialSector{
|
|||||||
new ItemMission(Items.copper, 100).setMessage("$tutorial.morecopper"),
|
new ItemMission(Items.copper, 100).setMessage("$tutorial.morecopper"),
|
||||||
|
|
||||||
new BlockMission(TurretBlocks.duo).setMessage("$tutorial.turret"),
|
new BlockMission(TurretBlocks.duo).setMessage("$tutorial.turret"),
|
||||||
//TODO fill turret with items mission
|
/
|
||||||
//new BlockMission(ProductionBlocks.mechanicalDrill).setMessage("$tutorial.drillturret"),
|
//new BlockMission(ProductionBlocks.mechanicalDrill).setMessage("$tutorial.drillturret"),
|
||||||
|
|
||||||
// Create a wave mission which spawns the core at 60, 60 rather than in the center of the map
|
// Create a wave mission which spawns the core at 60, 60 rather than in the center of the map
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ public class Generation{
|
|||||||
return tiles[x][y];
|
return tiles[x][y];
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO implement
|
|
||||||
Item drillItem(int x, int y, Drill block){
|
Item drillItem(int x, int y, Drill block){
|
||||||
if(block.isMultiblock()){
|
if(block.isMultiblock()){
|
||||||
Item result = null;
|
Item result = null;
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ public class Net{
|
|||||||
}else if(error.contains("connection refused") || error.contains("route to host") || type.contains("unknownhost")){
|
}else if(error.contains("connection refused") || error.contains("route to host") || type.contains("unknownhost")){
|
||||||
error = Bundles.get("text.error.unreachable");
|
error = Bundles.get("text.error.unreachable");
|
||||||
}else if(type.contains("timeout")){
|
}else if(type.contains("timeout")){
|
||||||
error = Bundles.get("text.error.timeout");
|
error = Bundles.get("text.error.timedout");
|
||||||
}else if(error.equals("alreadyconnected")){
|
}else if(error.equals("alreadyconnected")){
|
||||||
error = Bundles.get("text.error.alreadyconnected");
|
error = Bundles.get("text.error.alreadyconnected");
|
||||||
}else if(!error.isEmpty()){
|
}else if(!error.isEmpty()){
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package io.anuke.mindustry.net;
|
|||||||
|
|
||||||
import com.badlogic.gdx.utils.Base64Coder;
|
import com.badlogic.gdx.utils.Base64Coder;
|
||||||
import io.anuke.mindustry.game.Version;
|
import io.anuke.mindustry.game.Version;
|
||||||
import io.anuke.ucore.io.IOUtils;
|
import io.anuke.mindustry.io.TypeIO;
|
||||||
import io.anuke.ucore.util.Bundles;
|
import io.anuke.ucore.util.Bundles;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
@@ -65,6 +65,7 @@ public class Packets{
|
|||||||
|
|
||||||
public static class ConnectPacket implements Packet{
|
public static class ConnectPacket implements Packet{
|
||||||
public int version;
|
public int version;
|
||||||
|
public String versionType;
|
||||||
public String name, uuid, usid;
|
public String name, uuid, usid;
|
||||||
public boolean mobile;
|
public boolean mobile;
|
||||||
public int color;
|
public int color;
|
||||||
@@ -72,8 +73,9 @@ public class Packets{
|
|||||||
@Override
|
@Override
|
||||||
public void write(ByteBuffer buffer){
|
public void write(ByteBuffer buffer){
|
||||||
buffer.putInt(Version.build);
|
buffer.putInt(Version.build);
|
||||||
IOUtils.writeString(buffer, name);
|
TypeIO.writeString(buffer, versionType);
|
||||||
IOUtils.writeString(buffer, usid);
|
TypeIO.writeString(buffer, name);
|
||||||
|
TypeIO.writeString(buffer, usid);
|
||||||
buffer.put(mobile ? (byte) 1 : 0);
|
buffer.put(mobile ? (byte) 1 : 0);
|
||||||
buffer.putInt(color);
|
buffer.putInt(color);
|
||||||
buffer.put(Base64Coder.decode(uuid));
|
buffer.put(Base64Coder.decode(uuid));
|
||||||
@@ -82,8 +84,9 @@ public class Packets{
|
|||||||
@Override
|
@Override
|
||||||
public void read(ByteBuffer buffer){
|
public void read(ByteBuffer buffer){
|
||||||
version = buffer.getInt();
|
version = buffer.getInt();
|
||||||
name = IOUtils.readString(buffer);
|
versionType = TypeIO.readString(buffer);
|
||||||
usid = IOUtils.readString(buffer);
|
name = TypeIO.readString(buffer);
|
||||||
|
usid = TypeIO.readString(buffer);
|
||||||
mobile = buffer.get() == 1;
|
mobile = buffer.get() == 1;
|
||||||
color = buffer.getInt();
|
color = buffer.getInt();
|
||||||
byte[] idbytes = new byte[8];
|
byte[] idbytes = new byte[8];
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package io.anuke.mindustry.type;
|
package io.anuke.mindustry.type;
|
||||||
|
|
||||||
/**
|
/**Used to store ammo amounts in turrets.*/
|
||||||
* Used to store ammo amounts in units and turrets.
|
|
||||||
*/
|
|
||||||
public class AmmoEntry{
|
public class AmmoEntry{
|
||||||
public AmmoType type;
|
public AmmoType type;
|
||||||
public int amount;
|
public int amount;
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import io.anuke.ucore.graphics.Draw;
|
|||||||
import io.anuke.ucore.scene.ui.layout.Table;
|
import io.anuke.ucore.scene.ui.layout.Table;
|
||||||
import io.anuke.ucore.util.Bundles;
|
import io.anuke.ucore.util.Bundles;
|
||||||
|
|
||||||
//TODO merge unit type with mech
|
|
||||||
public class Mech extends UnlockableContent{
|
public class Mech extends UnlockableContent{
|
||||||
public final String name;
|
public final String name;
|
||||||
public final String description;
|
public final String description;
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class Recipe extends UnlockableContent{
|
|||||||
public static Array<Recipe> getByCategory(Category category){
|
public static Array<Recipe> getByCategory(Category category){
|
||||||
returnArray.clear();
|
returnArray.clear();
|
||||||
for(Recipe recipe : content.recipes()){
|
for(Recipe recipe : content.recipes()){
|
||||||
if(recipe.category == category && !recipe.isHidden()){
|
if(recipe.category == category && recipe.visibility.shown() && (recipe.mode == state.mode || recipe.mode == null)){
|
||||||
returnArray.add(recipe);
|
returnArray.add(recipe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -91,7 +91,6 @@ public class Recipe extends UnlockableContent{
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean alwaysUnlocked(){
|
public boolean alwaysUnlocked(){
|
||||||
return alwaysUnlocked;
|
return alwaysUnlocked;
|
||||||
|
|||||||
@@ -2,7 +2,11 @@ package io.anuke.mindustry.ui.dialogs;
|
|||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
|
import com.badlogic.gdx.utils.Array;
|
||||||
import com.badlogic.gdx.utils.ObjectSet;
|
import com.badlogic.gdx.utils.ObjectSet;
|
||||||
|
import io.anuke.mindustry.graphics.Palette;
|
||||||
|
import io.anuke.mindustry.io.Contributors;
|
||||||
|
import io.anuke.mindustry.io.Contributors.Contributor;
|
||||||
import io.anuke.mindustry.ui.Links;
|
import io.anuke.mindustry.ui.Links;
|
||||||
import io.anuke.mindustry.ui.Links.LinkEntry;
|
import io.anuke.mindustry.ui.Links.LinkEntry;
|
||||||
import io.anuke.ucore.core.Core;
|
import io.anuke.ucore.core.Core;
|
||||||
@@ -18,11 +22,14 @@ import static io.anuke.mindustry.Vars.ios;
|
|||||||
import static io.anuke.mindustry.Vars.ui;
|
import static io.anuke.mindustry.Vars.ui;
|
||||||
|
|
||||||
public class AboutDialog extends FloatingDialog{
|
public class AboutDialog extends FloatingDialog{
|
||||||
|
private Array<Contributor> contributors = new Array<>();
|
||||||
private static ObjectSet<String> bannedItems = ObjectSet.with("google-play", "itch.io", "dev-builds", "trello");
|
private static ObjectSet<String> bannedItems = ObjectSet.with("google-play", "itch.io", "dev-builds", "trello");
|
||||||
|
|
||||||
public AboutDialog(){
|
public AboutDialog(){
|
||||||
super("$text.about.button");
|
super("$text.about.button");
|
||||||
|
|
||||||
|
Contributors.getContributors(out -> contributors = out, Throwable::printStackTrace);
|
||||||
|
|
||||||
shown(this::setup);
|
shown(this::setup);
|
||||||
onResize(this::setup);
|
onResize(this::setup);
|
||||||
}
|
}
|
||||||
@@ -94,7 +101,24 @@ public class AboutDialog extends FloatingDialog{
|
|||||||
public void showCredits(){
|
public void showCredits(){
|
||||||
FloatingDialog dialog = new FloatingDialog("$text.credits");
|
FloatingDialog dialog = new FloatingDialog("$text.credits");
|
||||||
dialog.addCloseButton();
|
dialog.addCloseButton();
|
||||||
dialog.content().labelWrap("$text.credits.text").width(400f);
|
dialog.content().add("$text.credits.text");
|
||||||
|
dialog.content().row();
|
||||||
|
if(!contributors.isEmpty()){
|
||||||
|
dialog.content().addImage("blank").color(Palette.accent).fillX().height(3f).pad(3f);
|
||||||
|
dialog.content().row();
|
||||||
|
dialog.content().add("$text.contributors");
|
||||||
|
dialog.content().row();
|
||||||
|
dialog.content().pane("clear", new Table(){{
|
||||||
|
int i = 0;
|
||||||
|
left();
|
||||||
|
for(Contributor c : contributors){
|
||||||
|
add("[lightgray]" + c.login).left().pad(3).padLeft(6).padRight(6);
|
||||||
|
if(++i % 3 == 0){
|
||||||
|
row();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}});
|
||||||
|
}
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ public class HostDialog extends FloatingDialog{
|
|||||||
content().table(t -> {
|
content().table(t -> {
|
||||||
t.add("$text.name").padRight(10);
|
t.add("$text.name").padRight(10);
|
||||||
t.addField(Settings.getString("name"), text -> {
|
t.addField(Settings.getString("name"), text -> {
|
||||||
if(text.isEmpty()) return;
|
|
||||||
player.name = text;
|
player.name = text;
|
||||||
Settings.put("name", text);
|
Settings.put("name", text);
|
||||||
Settings.save();
|
Settings.save();
|
||||||
@@ -50,6 +49,11 @@ public class HostDialog extends FloatingDialog{
|
|||||||
content().add().width(65f);
|
content().add().width(65f);
|
||||||
|
|
||||||
content().addButton("$text.host", () -> {
|
content().addButton("$text.host", () -> {
|
||||||
|
if(Settings.getString("name").trim().isEmpty()){
|
||||||
|
ui.showInfo("$text.noname");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ui.loadfrag.show("$text.hosting");
|
ui.loadfrag.show("$text.hosting");
|
||||||
Timers.runTask(5f, () -> {
|
Timers.runTask(5f, () -> {
|
||||||
try{
|
try{
|
||||||
|
|||||||
@@ -205,7 +205,6 @@ public class JoinDialog extends FloatingDialog{
|
|||||||
content().table(t -> {
|
content().table(t -> {
|
||||||
t.add("$text.name").padRight(10);
|
t.add("$text.name").padRight(10);
|
||||||
t.addField(Settings.getString("name"), text -> {
|
t.addField(Settings.getString("name"), text -> {
|
||||||
if(text.isEmpty()) return;
|
|
||||||
player.name = text;
|
player.name = text;
|
||||||
Settings.put("name", text);
|
Settings.put("name", text);
|
||||||
Settings.save();
|
Settings.save();
|
||||||
@@ -285,6 +284,11 @@ public class JoinDialog extends FloatingDialog{
|
|||||||
}
|
}
|
||||||
|
|
||||||
void connect(String ip, int port){
|
void connect(String ip, int port){
|
||||||
|
if(Settings.getString("name").trim().isEmpty()){
|
||||||
|
ui.showInfo("$text.noname");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ui.loadfrag.show("$text.connecting");
|
ui.loadfrag.show("$text.connecting");
|
||||||
|
|
||||||
ui.loadfrag.setButton(() -> {
|
ui.loadfrag.setButton(() -> {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import io.anuke.mindustry.ui.dialogs.FloatingDialog;
|
|||||||
import io.anuke.ucore.core.Events;
|
import io.anuke.ucore.core.Events;
|
||||||
import io.anuke.ucore.scene.Group;
|
import io.anuke.ucore.scene.Group;
|
||||||
import io.anuke.ucore.scene.ui.layout.Table;
|
import io.anuke.ucore.scene.ui.layout.Table;
|
||||||
|
import io.anuke.ucore.util.Strings;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
|
|
||||||
@@ -42,7 +43,7 @@ public class MenuFragment extends Fragment{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//version info
|
//version info
|
||||||
parent.fill(c -> c.bottom().left().add("Mindustry " + Version.number + "-" + Version.modifier + " " + Version.type + " / " + (Version.build == -1 ? "custom build" : "build " + Version.build))
|
parent.fill(c -> c.bottom().left().add(Strings.formatArgs("Mindustry v{0} {1}-{2} {3}", Version.number, Version.modifier, Version.type, (Version.build == -1 ? "custom build" : "build " + Version.build)))
|
||||||
.visible(() -> state.is(State.menu)));
|
.visible(() -> state.is(State.menu)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.badlogic.gdx.graphics.Color;
|
|||||||
import com.badlogic.gdx.math.Interpolation;
|
import com.badlogic.gdx.math.Interpolation;
|
||||||
import io.anuke.mindustry.core.GameState.State;
|
import io.anuke.mindustry.core.GameState.State;
|
||||||
import io.anuke.mindustry.entities.TileEntity;
|
import io.anuke.mindustry.entities.TileEntity;
|
||||||
|
import io.anuke.mindustry.game.EventType.WorldLoadGraphicsEvent;
|
||||||
import io.anuke.mindustry.graphics.Palette;
|
import io.anuke.mindustry.graphics.Palette;
|
||||||
import io.anuke.mindustry.input.InputHandler;
|
import io.anuke.mindustry.input.InputHandler;
|
||||||
import io.anuke.mindustry.type.Category;
|
import io.anuke.mindustry.type.Category;
|
||||||
@@ -13,6 +14,7 @@ import io.anuke.mindustry.ui.ImageStack;
|
|||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.Block;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.OreBlock;
|
import io.anuke.mindustry.world.blocks.OreBlock;
|
||||||
|
import io.anuke.ucore.core.Events;
|
||||||
import io.anuke.ucore.core.Graphics;
|
import io.anuke.ucore.core.Graphics;
|
||||||
import io.anuke.ucore.scene.Group;
|
import io.anuke.ucore.scene.Group;
|
||||||
import io.anuke.ucore.scene.actions.Actions;
|
import io.anuke.ucore.scene.actions.Actions;
|
||||||
@@ -34,6 +36,14 @@ public class PlacementFragment extends Fragment{
|
|||||||
Table blockTable, toggler;
|
Table blockTable, toggler;
|
||||||
boolean shown = true;
|
boolean shown = true;
|
||||||
|
|
||||||
|
public PlacementFragment(){
|
||||||
|
Events.on(WorldLoadGraphicsEvent.class, event -> {
|
||||||
|
Group group = toggler.getParent();
|
||||||
|
toggler.remove();
|
||||||
|
build(group);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(Group parent){
|
public void build(Group parent){
|
||||||
parent.fill(full -> {
|
parent.fill(full -> {
|
||||||
@@ -70,7 +80,7 @@ public class PlacementFragment extends Fragment{
|
|||||||
button.update(() -> { //color unplacable things gray
|
button.update(() -> { //color unplacable things gray
|
||||||
boolean ulock = control.unlocks.isUnlocked(recipe);
|
boolean ulock = control.unlocks.isUnlocked(recipe);
|
||||||
TileEntity core = players[0].getClosestCore();
|
TileEntity core = players[0].getClosestCore();
|
||||||
Color color = core != null && core.items.has(recipe.requirements) ? Color.WHITE : ulock ? Color.GRAY : Color.WHITE;
|
Color color = core != null && (core.items.has(recipe.requirements) || state.mode.infiniteResources) ? Color.WHITE : ulock ? Color.GRAY : Color.WHITE;
|
||||||
button.forEach(elem -> elem.setColor(color));
|
button.forEach(elem -> elem.setColor(color));
|
||||||
button.setChecked(input.recipe == recipe);
|
button.setChecked(input.recipe == recipe);
|
||||||
|
|
||||||
@@ -84,7 +94,6 @@ public class PlacementFragment extends Fragment{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(!mobile){
|
|
||||||
button.hovered(() -> hovered = recipe.result);
|
button.hovered(() -> hovered = recipe.result);
|
||||||
button.exited(() -> {
|
button.exited(() -> {
|
||||||
if(hovered == recipe.result){
|
if(hovered == recipe.result){
|
||||||
@@ -92,8 +101,6 @@ public class PlacementFragment extends Fragment{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
blockTable.act(0f);
|
blockTable.act(0f);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -219,6 +226,7 @@ public class PlacementFragment extends Fragment{
|
|||||||
|
|
||||||
/**Show or hide the placement menu.*/
|
/**Show or hide the placement menu.*/
|
||||||
void toggle(float t, Interpolation ip){
|
void toggle(float t, Interpolation ip){
|
||||||
|
toggler.clearActions();
|
||||||
if(shown){
|
if(shown){
|
||||||
shown = false;
|
shown = false;
|
||||||
toggler.actions(Actions.translateBy(toggler.getTranslation().x + toggler.getWidth(), 0, t, ip));
|
toggler.actions(Actions.translateBy(toggler.getTranslation().x + toggler.getWidth(), 0, t, ip));
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public abstract class BaseBlock extends MappableContent{
|
|||||||
/**Returns the amount of items this block can accept.*/
|
/**Returns the amount of items this block can accept.*/
|
||||||
public int acceptStack(Item item, int amount, Tile tile, Unit source){
|
public int acceptStack(Item item, int amount, Tile tile, Unit source){
|
||||||
if(acceptItem(item, tile, tile) && hasItems && (source == null || source.getTeam() == tile.getTeam())){
|
if(acceptItem(item, tile, tile) && hasItems && (source == null || source.getTeam() == tile.getTeam())){
|
||||||
return Math.min(getMaximumAccepted(tile, item), amount);
|
return Math.min(getMaximumAccepted(tile, item) - tile.entity.items.get(item), amount);
|
||||||
}else{
|
}else{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -335,7 +335,6 @@ public class Block extends BaseBlock {
|
|||||||
if(hasItems) stats.add(BlockStat.itemCapacity, itemCapacity, StatUnit.items);
|
if(hasItems) stats.add(BlockStat.itemCapacity, itemCapacity, StatUnit.items);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO make this easier to config.
|
|
||||||
public void setBars(){
|
public void setBars(){
|
||||||
if(hasPower) bars.add(new BlockBar(BarType.power, true, tile -> tile.entity.power.amount / powerCapacity));
|
if(hasPower) bars.add(new BlockBar(BarType.power, true, tile -> tile.entity.power.amount / powerCapacity));
|
||||||
if(hasLiquids)
|
if(hasLiquids)
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ public class Tile implements PosTrait, TargetTrait{
|
|||||||
if(link == 0){
|
if(link == 0){
|
||||||
return (block.destructible || block.breakable || block.update);
|
return (block.destructible || block.breakable || block.update);
|
||||||
}else{
|
}else{
|
||||||
return getLinked() != this && getLinked().breakable();
|
return getLinked() != this && getLinked().getLinked() == null && getLinked().breakable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ public class Floor extends Block{
|
|||||||
|
|
||||||
Floor floor = other.floor();
|
Floor floor = other.floor();
|
||||||
|
|
||||||
if((floor.id <= this.id && !(tile.getElevation() != -1 && other.getElevation() > tile.getElevation())) || (!blends.test(floor) && !tileBlends.test(tile, other)) || (floor.cacheLayer.ordinal() > this.cacheLayer.ordinal() && !sameLayer) ||
|
if(floor.edgeRegions == null || (floor.id <= this.id && !(tile.getElevation() != -1 && other.getElevation() > tile.getElevation())) || (!blends.test(floor) && !tileBlends.test(tile, other)) || (floor.cacheLayer.ordinal() > this.cacheLayer.ordinal() && !sameLayer) ||
|
||||||
(sameLayer && floor.cacheLayer == this.cacheLayer)) continue;
|
(sameLayer && floor.cacheLayer == this.cacheLayer)) continue;
|
||||||
|
|
||||||
TextureRegion region = floor.edgeRegions[i];
|
TextureRegion region = floor.edgeRegions[i];
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package io.anuke.mindustry.world.blocks.distribution;
|
package io.anuke.mindustry.world.blocks.distribution;
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.Array;
|
|
||||||
import com.badlogic.gdx.utils.NumberUtils;
|
import com.badlogic.gdx.utils.NumberUtils;
|
||||||
import io.anuke.mindustry.entities.TileEntity;
|
import io.anuke.mindustry.entities.TileEntity;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.Item;
|
||||||
@@ -8,10 +7,9 @@ import io.anuke.mindustry.world.Block;
|
|||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.meta.BlockGroup;
|
import io.anuke.mindustry.world.meta.BlockGroup;
|
||||||
import io.anuke.ucore.core.Timers;
|
import io.anuke.ucore.core.Timers;
|
||||||
import io.anuke.ucore.function.Consumer;
|
|
||||||
import io.anuke.ucore.util.Bits;
|
import io.anuke.ucore.util.Bits;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.content;
|
||||||
|
|
||||||
public class Junction extends Block{
|
public class Junction extends Block{
|
||||||
protected float speed = 26; //frames taken to go through this junction
|
protected float speed = 26; //frames taken to go through this junction
|
||||||
@@ -34,8 +32,8 @@ public class Junction extends Block{
|
|||||||
public void update(Tile tile){
|
public void update(Tile tile){
|
||||||
JunctionEntity entity = tile.entity();
|
JunctionEntity entity = tile.entity();
|
||||||
|
|
||||||
for(int i = 0; i < 2; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
Buffer buffer = (i == 0 ? entity.bx : entity.by);
|
Buffer buffer = entity.buffers[i];
|
||||||
|
|
||||||
if(buffer.index > 0){
|
if(buffer.index > 0){
|
||||||
if(buffer.index > buffer.items.length) buffer.index = buffer.items.length;
|
if(buffer.index > buffer.items.length) buffer.index = buffer.items.length;
|
||||||
@@ -44,17 +42,11 @@ public class Junction extends Block{
|
|||||||
|
|
||||||
if(Timers.time() >= time + speed || Timers.time() < time){
|
if(Timers.time() >= time + speed || Timers.time() < time){
|
||||||
|
|
||||||
int val = Bits.getRightInt(l);
|
Item item = content.item(Bits.getRightInt(l));
|
||||||
|
Tile dest = tile.getNearby(i);
|
||||||
Item item = content.item(Bits.getLeftShort(val));
|
|
||||||
int direction = Bits.getRightShort(val);
|
|
||||||
Tile dest = tile.getNearby(direction);
|
|
||||||
|
|
||||||
|
//skip blocks that don't want the item, keep waiting until they do
|
||||||
if(dest == null || !dest.block().acceptItem(item, dest, tile)){
|
if(dest == null || !dest.block().acceptItem(item, dest, tile)){
|
||||||
if(buffer.index > 1 && Bits.getRightShort(Bits.getRightInt(buffer.items[1])) != direction){
|
|
||||||
System.arraycopy(buffer.items, 1, buffer.items, 0, buffer.index - 1);
|
|
||||||
buffer.index--;
|
|
||||||
}
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,25 +61,19 @@ public class Junction extends Block{
|
|||||||
@Override
|
@Override
|
||||||
public void handleItem(Item item, Tile tile, Tile source){
|
public void handleItem(Item item, Tile tile, Tile source){
|
||||||
JunctionEntity entity = tile.entity();
|
JunctionEntity entity = tile.entity();
|
||||||
boolean x = tile.x == source.x;
|
long value = Bits.packLong(NumberUtils.floatToIntBits(Timers.time()), item.id);
|
||||||
long value = Bits.packLong(NumberUtils.floatToIntBits(Timers.time()), Bits.packInt((short) item.id, source.relativeTo(tile.x, tile.y)));
|
int relative = source.relativeTo(tile.x, tile.y);
|
||||||
if(x){
|
entity.buffers[relative].add(value);
|
||||||
entity.bx.add(value);
|
|
||||||
}else{
|
|
||||||
entity.by.add(value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean acceptItem(Item item, Tile tile, Tile source){
|
public boolean acceptItem(Item item, Tile tile, Tile source){
|
||||||
JunctionEntity entity = tile.entity();
|
JunctionEntity entity = tile.entity();
|
||||||
boolean x = tile.x == source.x;
|
int relative = source.relativeTo(tile.x, tile.y);
|
||||||
|
|
||||||
if(entity == null || entity.bx == null || entity.by == null || (x && entity.bx.full()) || (!x && entity.by.full()))
|
if(entity == null || relative == -1 || entity.buffers[relative].full())
|
||||||
return false;
|
return false;
|
||||||
int dir = source.relativeTo(tile.x, tile.y);
|
Tile to = tile.getNearby(relative);
|
||||||
if(dir == -1) return false;
|
|
||||||
Tile to = tile.getNearby(dir);
|
|
||||||
return to != null && to.block().acceptItem(item, to, tile);
|
return to != null && to.block().acceptItem(item, to, tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,41 +82,8 @@ public class Junction extends Block{
|
|||||||
return new JunctionEntity();
|
return new JunctionEntity();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Array<Object> getDebugInfo(Tile tile){
|
|
||||||
JunctionEntity entity = tile.entity();
|
|
||||||
Array<Object> arr = super.getDebugInfo(tile);
|
|
||||||
for(int i = 0; i < 4; i++){
|
|
||||||
arr.add("nearby." + i);
|
|
||||||
arr.add(tile.getNearby(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
Consumer<Buffer> write = b -> {
|
|
||||||
for(int i = 0; i < b.index; i++){
|
|
||||||
long l = b.items[i];
|
|
||||||
float time = NumberUtils.intBitsToFloat(Bits.getLeftInt(l));
|
|
||||||
int val = Bits.getRightInt(l);
|
|
||||||
Item item = content.item(Bits.getLeftShort(val));
|
|
||||||
int direction = Bits.getRightShort(val);
|
|
||||||
Tile dest = tile.getNearby(direction);
|
|
||||||
arr.add(" bufferx.item");
|
|
||||||
arr.add(time + " | " + item.name + " | " + dest.block() + ":" + dest.floor());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
arr.add("buffer.bx");
|
|
||||||
arr.add(entity.bx.index);
|
|
||||||
write.accept(entity.bx);
|
|
||||||
arr.add("buffer.by");
|
|
||||||
arr.add(entity.bx.index);
|
|
||||||
write.accept(entity.by);
|
|
||||||
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
|
|
||||||
class JunctionEntity extends TileEntity{
|
class JunctionEntity extends TileEntity{
|
||||||
Buffer bx = new Buffer();
|
Buffer[] buffers = {new Buffer(), new Buffer(), new Buffer(), new Buffer()};
|
||||||
Buffer by = new Buffer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class Buffer{
|
class Buffer{
|
||||||
|
|||||||
@@ -45,8 +45,6 @@ public class Sorter extends Block implements SelectionTrait{
|
|||||||
public void draw(Tile tile){
|
public void draw(Tile tile){
|
||||||
super.draw(tile);
|
super.draw(tile);
|
||||||
|
|
||||||
//TODO call event for change
|
|
||||||
|
|
||||||
SorterEntity entity = tile.entity();
|
SorterEntity entity = tile.entity();
|
||||||
|
|
||||||
Draw.color(entity.sortItem.color);
|
Draw.color(entity.sortItem.color);
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import io.anuke.mindustry.type.Item;
|
|||||||
import io.anuke.mindustry.type.Liquid;
|
import io.anuke.mindustry.type.Liquid;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.consumers.ConsumeLiquidFilter;
|
import io.anuke.mindustry.world.consumers.ConsumeLiquidFilter;
|
||||||
import io.anuke.mindustry.world.meta.BlockStat;
|
|
||||||
import io.anuke.ucore.core.Effects;
|
import io.anuke.ucore.core.Effects;
|
||||||
import io.anuke.ucore.graphics.Draw;
|
import io.anuke.ucore.graphics.Draw;
|
||||||
import io.anuke.ucore.util.Mathf;
|
import io.anuke.ucore.util.Mathf;
|
||||||
@@ -30,7 +29,6 @@ public abstract class ItemLiquidGenerator extends ItemGenerator{
|
|||||||
@Override
|
@Override
|
||||||
public void init(){
|
public void init(){
|
||||||
super.init();
|
super.init();
|
||||||
stats.remove(BlockStat.liquidFuelUse);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import io.anuke.mindustry.type.Liquid;
|
|||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.consumers.ConsumeLiquid;
|
import io.anuke.mindustry.world.consumers.ConsumeLiquid;
|
||||||
|
|
||||||
//TODO
|
|
||||||
public class TurbineGenerator extends BurnerGenerator{
|
public class TurbineGenerator extends BurnerGenerator{
|
||||||
|
|
||||||
public TurbineGenerator(String name){
|
public TurbineGenerator(String name){
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class Cultivator extends Drill{
|
|||||||
stats.remove(BlockStat.drillTier);
|
stats.remove(BlockStat.drillTier);
|
||||||
stats.add(BlockStat.drillTier, table -> {
|
stats.add(BlockStat.drillTier, table -> {
|
||||||
table.addImage("grass1").size(8 * 3).padBottom(3).padTop(3);
|
table.addImage("grass1").size(8 * 3).padBottom(3).padTop(3);
|
||||||
// TODO: find out localized name and add tool tip
|
table.add(Blocks.grass.formalName).padLeft(3);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ public class LiquidMixer extends LiquidBlock{
|
|||||||
hasItems = true;
|
hasItems = true;
|
||||||
rotate = false;
|
rotate = false;
|
||||||
solid = true;
|
solid = true;
|
||||||
|
singleLiquid = false;
|
||||||
outputsLiquid = true;
|
outputsLiquid = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -152,11 +152,6 @@ public class Smelter extends Block{
|
|||||||
Effects.effect(craftEffect, flameColor, tile.drawx(), tile.drawy());
|
Effects.effect(craftEffect, flameColor, tile.drawx(), tile.drawy());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMaximumAccepted(Tile tile, Item item){
|
|
||||||
return itemCapacity;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean acceptItem(Item item, Tile tile, Tile source){
|
public boolean acceptItem(Item item, Tile tile, Tile source){
|
||||||
boolean isInput = false;
|
boolean isInput = false;
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import io.anuke.ucore.scene.ui.layout.Table;
|
|||||||
import static io.anuke.mindustry.Vars.mobile;
|
import static io.anuke.mindustry.Vars.mobile;
|
||||||
|
|
||||||
public abstract class Consume{
|
public abstract class Consume{
|
||||||
private boolean optional;
|
protected boolean optional;
|
||||||
private boolean update = true;
|
protected boolean update = true;
|
||||||
|
|
||||||
public Consume optional(boolean optional){
|
public Consume optional(boolean optional){
|
||||||
this.optional = optional;
|
this.optional = optional;
|
||||||
|
|||||||
@@ -53,6 +53,6 @@ public class ConsumeItem extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void display(BlockStats stats){
|
public void display(BlockStats stats){
|
||||||
stats.add(BlockStat.inputItem, item);
|
stats.add(optional ? BlockStat.boostItem : BlockStat.inputItem, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,6 +58,6 @@ public class ConsumeItemFilter extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void display(BlockStats stats){
|
public void display(BlockStats stats){
|
||||||
stats.add(BlockStat.inputItems, new ItemFilterValue(filter));
|
stats.add(optional ? BlockStat.boostItem : BlockStat.inputItem, new ItemFilterValue(filter));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,6 @@ public class ConsumeItems extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void display(BlockStats stats){
|
public void display(BlockStats stats){
|
||||||
stats.add(BlockStat.inputItems, new ItemListValue(items));
|
stats.add(optional ? BlockStat.boostItem : BlockStat.inputItems, new ItemListValue(items));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class ConsumeLiquid extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getIcon(){
|
public String getIcon(){
|
||||||
return "icon-liquid";
|
return "icon-liquid-small";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -47,8 +47,12 @@ public class ConsumeLiquid extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void display(BlockStats stats){
|
public void display(BlockStats stats){
|
||||||
|
if(!optional){
|
||||||
stats.add(BlockStat.liquidUse, use * 60f, StatUnit.liquidSecond);
|
stats.add(BlockStat.liquidUse, use * 60f, StatUnit.liquidSecond);
|
||||||
stats.add(BlockStat.inputLiquid, liquid);
|
stats.add(BlockStat.inputLiquid, liquid);
|
||||||
|
}else{
|
||||||
|
stats.add(BlockStat.boostLiquid, liquid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float use(Block block, TileEntity entity){
|
float use(Block block, TileEntity entity){
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public class ConsumeLiquidFilter extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getIcon(){
|
public String getIcon(){
|
||||||
return "icon-liquid";
|
return "icon-liquid-small";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -62,10 +62,12 @@ public class ConsumeLiquidFilter extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void display(BlockStats stats){
|
public void display(BlockStats stats){
|
||||||
if(isFuel){
|
if(optional){
|
||||||
|
stats.add(BlockStat.boostLiquid, new LiquidFilterValue(filter));
|
||||||
|
}else if(isFuel){
|
||||||
stats.add(BlockStat.inputLiquidFuel, new LiquidFilterValue(filter));
|
stats.add(BlockStat.inputLiquidFuel, new LiquidFilterValue(filter));
|
||||||
stats.add(BlockStat.liquidFuelUse, 60f * use, StatUnit.liquidSecond);
|
stats.add(BlockStat.liquidFuelUse, 60f * use, StatUnit.liquidSecond);
|
||||||
}else{
|
}else {
|
||||||
stats.add(BlockStat.inputLiquid, new LiquidFilterValue(filter));
|
stats.add(BlockStat.inputLiquid, new LiquidFilterValue(filter));
|
||||||
stats.add(BlockStat.liquidUse, 60f * use, StatUnit.liquidSecond);
|
stats.add(BlockStat.liquidUse, 60f * use, StatUnit.liquidSecond);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class ConsumePower extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getIcon(){
|
public String getIcon(){
|
||||||
return "icon-power";
|
return "icon-power-small";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class Consumers{
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConsumeItems items(ItemStack[] items){
|
public ConsumeItems items(ItemStack... items){
|
||||||
ConsumeItems i = new ConsumeItems(items);
|
ConsumeItems i = new ConsumeItems(items);
|
||||||
add(i);
|
add(i);
|
||||||
return i;
|
return i;
|
||||||
|
|||||||
@@ -45,8 +45,10 @@ public enum BlockStat{
|
|||||||
shots(StatCategory.shooting),
|
shots(StatCategory.shooting),
|
||||||
reload(StatCategory.shooting),
|
reload(StatCategory.shooting),
|
||||||
powerShot(StatCategory.shooting),
|
powerShot(StatCategory.shooting),
|
||||||
targetsAir(StatCategory.shooting),;
|
targetsAir(StatCategory.shooting),
|
||||||
|
|
||||||
|
boostItem(StatCategory.optional),
|
||||||
|
boostLiquid(StatCategory.optional),;
|
||||||
|
|
||||||
public final StatCategory category;
|
public final StatCategory category;
|
||||||
|
|
||||||
|
|||||||
@@ -12,9 +12,7 @@ import io.anuke.ucore.util.Log;
|
|||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**Hold and organizes a list of block stats.*/
|
||||||
* Hold and organizes a list of block stats.
|
|
||||||
*/
|
|
||||||
public class BlockStats{
|
public class BlockStats{
|
||||||
private static final boolean errorWhenMissing = false;
|
private static final boolean errorWhenMissing = false;
|
||||||
|
|
||||||
@@ -26,52 +24,37 @@ public class BlockStats{
|
|||||||
this.block = block;
|
this.block = block;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**Adds a single float value with this stat, formatted to 2 decimal places.*/
|
||||||
* Adds a single float value with this stat, formatted to 2 decimal places.
|
|
||||||
*/
|
|
||||||
public void add(BlockStat stat, float value, StatUnit unit){
|
public void add(BlockStat stat, float value, StatUnit unit){
|
||||||
add(stat, new NumberValue(value, unit));
|
add(stat, new NumberValue(value, unit));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**Adds a single y/n boolean value.*/
|
||||||
* Adds a single y/n boolean value.
|
|
||||||
*/
|
|
||||||
public void add(BlockStat stat, boolean value){
|
public void add(BlockStat stat, boolean value){
|
||||||
add(stat, new BooleanValue(value));
|
add(stat, new BooleanValue(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**Adds an item value.*/
|
||||||
* Adds an item value.
|
|
||||||
*/
|
|
||||||
public void add(BlockStat stat, Item item){
|
public void add(BlockStat stat, Item item){
|
||||||
add(stat, new ItemValue(new ItemStack(item, 1)));
|
add(stat, new ItemValue(new ItemStack(item, 1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**Adds a liquid value.*/
|
||||||
* Adds a liquid value.
|
|
||||||
*/
|
|
||||||
public void add(BlockStat stat, Liquid liquid){
|
public void add(BlockStat stat, Liquid liquid){
|
||||||
add(stat, new LiquidValue(liquid));
|
add(stat, new LiquidValue(liquid));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**Adds an item value.*/
|
||||||
/**
|
|
||||||
* Adds an item value.
|
|
||||||
*/
|
|
||||||
public void add(BlockStat stat, ItemStack item){
|
public void add(BlockStat stat, ItemStack item){
|
||||||
add(stat, new ItemValue(item));
|
add(stat, new ItemValue(item));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**Adds a single string value with this stat.*/
|
||||||
* Adds a single string value with this stat.
|
|
||||||
*/
|
|
||||||
public void add(BlockStat stat, String format, Object... args){
|
public void add(BlockStat stat, String format, Object... args){
|
||||||
add(stat, new StringValue(format, args));
|
add(stat, new StringValue(format, args));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**Adds a stat value.*/
|
||||||
* Adds a stat value.
|
|
||||||
*/
|
|
||||||
public void add(BlockStat stat, StatValue value){
|
public void add(BlockStat stat, StatValue value){
|
||||||
if(!Bundles.has("text.blocks." + stat.name().toLowerCase(Locale.ROOT))){
|
if(!Bundles.has("text.blocks." + stat.name().toLowerCase(Locale.ROOT))){
|
||||||
if(!errorWhenMissing){
|
if(!errorWhenMissing){
|
||||||
@@ -102,6 +85,7 @@ public class BlockStats{
|
|||||||
dirty = true;
|
dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**Removes a stat, if it exists.*/
|
||||||
public void remove(BlockStat stat){
|
public void remove(BlockStat stat){
|
||||||
if(!map.containsKey(stat.category) || !map.get(stat.category).containsKey(stat)){
|
if(!map.containsKey(stat.category) || !map.get(stat.category).containsKey(stat)){
|
||||||
throw new RuntimeException("No stat entry found: \"" + stat + "\" in block '" + block.name + "'!");
|
throw new RuntimeException("No stat entry found: \"" + stat + "\" in block '" + block.name + "'!");
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
package io.anuke.mindustry.world.meta;
|
package io.anuke.mindustry.world.meta;
|
||||||
|
|
||||||
/**
|
/**A specific category for a stat.*/
|
||||||
* A specific category for a stat.
|
|
||||||
*/
|
|
||||||
public enum StatCategory{
|
public enum StatCategory{
|
||||||
general,
|
general,
|
||||||
power,
|
power,
|
||||||
liquids,
|
liquids,
|
||||||
items,
|
items,
|
||||||
crafting,
|
crafting,
|
||||||
shooting
|
shooting,
|
||||||
|
optional,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,11 +38,11 @@ public class ItemListValue implements ContentStatValue{
|
|||||||
public void display(Table table){
|
public void display(Table table){
|
||||||
if(items != null){
|
if(items != null){
|
||||||
for(Item item : items){
|
for(Item item : items){
|
||||||
table.add(new ItemDisplay(item));
|
table.add(new ItemDisplay(item)).padRight(5);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
for(ItemStack stack : stacks){
|
for(ItemStack stack : stacks){
|
||||||
new ItemDisplay(stack.item, stack.amount);
|
table.add(new ItemDisplay(stack.item, stack.amount)).padRight(5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,7 +80,6 @@ public class CrashHandler{
|
|||||||
ex(() -> value.addChild("gamemode", new JsonValue(Vars.state.mode.name())));
|
ex(() -> value.addChild("gamemode", new JsonValue(Vars.state.mode.name())));
|
||||||
ex(() -> value.addChild("state", new JsonValue(Vars.state.getState().name())));
|
ex(() -> value.addChild("state", new JsonValue(Vars.state.getState().name())));
|
||||||
ex(() -> value.addChild("os", new JsonValue(System.getProperty("os.name"))));
|
ex(() -> value.addChild("os", new JsonValue(System.getProperty("os.name"))));
|
||||||
ex(() -> value.addChild("multithreading", new JsonValue(Settings.getBool("multithread"))));
|
|
||||||
ex(() -> value.addChild("trace", new JsonValue(parseException(e))));
|
ex(() -> value.addChild("trace", new JsonValue(parseException(e))));
|
||||||
|
|
||||||
try{
|
try{
|
||||||
|
|||||||
@@ -17,8 +17,6 @@ import io.anuke.ucore.util.OS;
|
|||||||
import io.anuke.ucore.util.Strings;
|
import io.anuke.ucore.util.Strings;
|
||||||
|
|
||||||
import java.net.NetworkInterface;
|
import java.net.NetworkInterface;
|
||||||
import java.text.DateFormat;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
@@ -26,7 +24,6 @@ import static io.anuke.mindustry.Vars.*;
|
|||||||
public class DesktopPlatform extends Platform{
|
public class DesktopPlatform extends Platform{
|
||||||
final static boolean useDiscord = OS.is64Bit;
|
final static boolean useDiscord = OS.is64Bit;
|
||||||
final static String applicationId = "398246104468291591";
|
final static String applicationId = "398246104468291591";
|
||||||
final static DateFormat format = SimpleDateFormat.getDateTimeInstance();
|
|
||||||
String[] args;
|
String[] args;
|
||||||
|
|
||||||
public DesktopPlatform(String[] args){
|
public DesktopPlatform(String[] args){
|
||||||
|
|||||||
@@ -15,8 +15,3 @@ createIPA.dependsOn build
|
|||||||
robovm {
|
robovm {
|
||||||
archs = "thumbv7:arm64"
|
archs = "thumbv7:arm64"
|
||||||
}
|
}
|
||||||
|
|
||||||
eclipse.project {
|
|
||||||
name = appName + "-ios"
|
|
||||||
natures 'org.robovm.eclipse.RoboVMNature'
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
app.version=4.0
|
|
||||||
app.id=io.anuke.mindustry
|
|
||||||
app.mainclass=io.anuke.mindustry.IOSLauncher
|
|
||||||
app.executable=IOSLauncher
|
|
||||||
app.build=27
|
|
||||||
app.name=Mindustry
|
|
||||||
@@ -31,8 +31,6 @@ public class IOSLauncher extends IOSApplication.Delegate {
|
|||||||
Net.setClientProvider(new KryoClient());
|
Net.setClientProvider(new KryoClient());
|
||||||
Net.setServerProvider(new KryoServer());
|
Net.setServerProvider(new KryoServer());
|
||||||
|
|
||||||
Unit.dp.addition -= 0.2f;
|
|
||||||
|
|
||||||
if(UIDevice.getCurrentDevice().getUserInterfaceIdiom() == UIUserInterfaceIdiom.Pad){
|
if(UIDevice.getCurrentDevice().getUserInterfaceIdiom() == UIUserInterfaceIdiom.Pad){
|
||||||
Unit.dp.addition = 0.5f;
|
Unit.dp.addition = 0.5f;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -350,14 +350,19 @@ public class ServerControl extends Module{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
handler.register("fillitems", "Fill the core with 2000 items.", arg -> {
|
handler.register("fillitems", "[team]", "Fill the core with 2000 items.", arg -> {
|
||||||
if(!state.is(State.playing)){
|
if(!state.is(State.playing)){
|
||||||
err("Not playing. Host first.");
|
err("Not playing. Host first.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
Team team = Team.valueOf(arg[0]);
|
Team team = arg.length == 0 ? Team.blue : Team.valueOf(arg[0]);
|
||||||
|
|
||||||
|
if(state.teams.get(team).cores.isEmpty()){
|
||||||
|
err("That team has no cores.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for(Item item : content.items()){
|
for(Item item : content.items()){
|
||||||
if(item.type == ItemType.material){
|
if(item.type == ItemType.material){
|
||||||
|
|||||||
@@ -4,17 +4,23 @@ import com.badlogic.gdx.backends.headless.HeadlessApplicationConfiguration;
|
|||||||
import com.badlogic.gdx.math.GridPoint2;
|
import com.badlogic.gdx.math.GridPoint2;
|
||||||
import io.anuke.mindustry.Vars;
|
import io.anuke.mindustry.Vars;
|
||||||
import io.anuke.mindustry.content.Items;
|
import io.anuke.mindustry.content.Items;
|
||||||
|
import io.anuke.mindustry.content.UnitTypes;
|
||||||
import io.anuke.mindustry.content.blocks.Blocks;
|
import io.anuke.mindustry.content.blocks.Blocks;
|
||||||
|
import io.anuke.mindustry.content.blocks.CraftingBlocks;
|
||||||
|
import io.anuke.mindustry.content.blocks.PowerBlocks;
|
||||||
import io.anuke.mindustry.content.blocks.StorageBlocks;
|
import io.anuke.mindustry.content.blocks.StorageBlocks;
|
||||||
import io.anuke.mindustry.core.GameState.State;
|
import io.anuke.mindustry.core.GameState.State;
|
||||||
import io.anuke.mindustry.core.Logic;
|
import io.anuke.mindustry.core.Logic;
|
||||||
import io.anuke.mindustry.core.NetServer;
|
import io.anuke.mindustry.core.NetServer;
|
||||||
import io.anuke.mindustry.core.World;
|
import io.anuke.mindustry.core.World;
|
||||||
|
import io.anuke.mindustry.entities.units.BaseUnit;
|
||||||
import io.anuke.mindustry.game.Content;
|
import io.anuke.mindustry.game.Content;
|
||||||
import io.anuke.mindustry.game.Team;
|
import io.anuke.mindustry.game.Team;
|
||||||
import io.anuke.mindustry.io.BundleLoader;
|
import io.anuke.mindustry.io.BundleLoader;
|
||||||
import io.anuke.mindustry.io.SaveIO;
|
import io.anuke.mindustry.io.SaveIO;
|
||||||
import io.anuke.mindustry.maps.Map;
|
import io.anuke.mindustry.maps.Map;
|
||||||
|
import io.anuke.mindustry.type.Item;
|
||||||
|
import io.anuke.mindustry.world.Block;
|
||||||
import io.anuke.mindustry.world.Edges;
|
import io.anuke.mindustry.world.Edges;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.ucore.core.Timers;
|
import io.anuke.ucore.core.Timers;
|
||||||
@@ -205,7 +211,14 @@ public class ApplicationTests{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void edgeTest(){
|
void inventoryDeposit(){
|
||||||
|
depositTest(CraftingBlocks.smelter, Items.copper);
|
||||||
|
depositTest(StorageBlocks.vault, Items.copper);
|
||||||
|
depositTest(PowerBlocks.thoriumReactor, Items.thorium);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void edges(){
|
||||||
GridPoint2[] edges = Edges.getEdges(1);
|
GridPoint2[] edges = Edges.getEdges(1);
|
||||||
assertEquals(edges[0], new GridPoint2(1, 0));
|
assertEquals(edges[0], new GridPoint2(1, 0));
|
||||||
assertEquals(edges[1], new GridPoint2(0, 1));
|
assertEquals(edges[1], new GridPoint2(0, 1));
|
||||||
@@ -215,4 +228,22 @@ public class ApplicationTests{
|
|||||||
GridPoint2[] edges2 = Edges.getEdges(2);
|
GridPoint2[] edges2 = Edges.getEdges(2);
|
||||||
assertEquals(8, edges2.length);
|
assertEquals(8, edges2.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void depositTest(Block block, Item item){
|
||||||
|
BaseUnit unit = UnitTypes.alphaDrone.create(Team.none);
|
||||||
|
Tile tile = new Tile(0, 0, Blocks.air.id, block.id);
|
||||||
|
int capacity = tile.block().itemCapacity;
|
||||||
|
|
||||||
|
int deposited = tile.block().acceptStack(item, capacity - 1, tile, unit);
|
||||||
|
assertEquals(capacity - 1, deposited);
|
||||||
|
|
||||||
|
tile.block().handleStack(item, capacity - 1, tile, unit);
|
||||||
|
assertEquals(tile.entity.items.get(item), capacity - 1);
|
||||||
|
|
||||||
|
int overflow = tile.block().acceptStack(item, 10, tile, unit);
|
||||||
|
assertEquals(1, overflow);
|
||||||
|
|
||||||
|
tile.block().handleStack(item, 1, tile, unit);
|
||||||
|
assertEquals(capacity, tile.entity.items.get(item));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
34
tests/src/test/java/IOTests.java
Normal file
34
tests/src/test/java/IOTests.java
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import io.anuke.mindustry.io.TypeIO;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
public class IOTests{
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void writeEnglish(){
|
||||||
|
ByteBuffer buffer = ByteBuffer.allocate(500);
|
||||||
|
TypeIO.writeString(buffer, "asd asd asd asd asdagagasasjakbgeah;jwrej 23424234");
|
||||||
|
buffer.position(0);
|
||||||
|
assertEquals(TypeIO.readString(buffer), "asd asd asd asd asdagagasasjakbgeah;jwrej 23424234");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void writeChinese(){
|
||||||
|
ByteBuffer buffer = ByteBuffer.allocate(500);
|
||||||
|
TypeIO.writeString(buffer, "这个服务器可以用自己的语言说话");
|
||||||
|
buffer.position(0);
|
||||||
|
assertEquals(TypeIO.readString(buffer), "这个服务器可以用自己的语言说话");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void writeNull(){
|
||||||
|
ByteBuffer buffer = ByteBuffer.allocate(500);
|
||||||
|
TypeIO.writeString(buffer, null);
|
||||||
|
buffer.position(0);
|
||||||
|
assertEquals(TypeIO.readString(buffer), null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -46,7 +46,7 @@ public class SectorTests{
|
|||||||
* This is achieved by adding at least one mission which defines a spawn point.
|
* This is achieved by adding at least one mission which defines a spawn point.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
void test_sectorHasACore(){
|
void sectorHasACore(){
|
||||||
for(SectorPresets.SectorPreset preset : this.presets.getPresets().values()){
|
for(SectorPresets.SectorPreset preset : this.presets.getPresets().values()){
|
||||||
assertTrue(spawnPointIsDefined(preset.missions), "Sector at (" + preset.x + "|" + preset.y + ") contains no missions which define a spawn point. Add a battle or wave mission.");
|
assertTrue(spawnPointIsDefined(preset.missions), "Sector at (" + preset.x + "|" + preset.y + ") contains no missions which define a spawn point. Add a battle or wave mission.");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user