diff --git a/build.gradle b/build.gradle index 92579ba541..10d8492d99 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.9' roboVMVersion = '2.3.0' - uCoreVersion = 'c93c55179ec05b44926d59c5878534a3177d804f' + uCoreVersion = 'c9aadd4d0b5848dbc4dbbd0fcd701b11c30c02bb' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/assets-raw/sprites/blocks/production/alloy-fuser.png b/core/assets-raw/sprites/blocks/production/alloy-fuser.png deleted file mode 100644 index 19815de0ff..0000000000 Binary files a/core/assets-raw/sprites/blocks/production/alloy-fuser.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-crafting.png b/core/assets-raw/sprites/ui/icons-category/icon-crafting.png new file mode 100644 index 0000000000..80447efca8 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-crafting.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-defense.png b/core/assets-raw/sprites/ui/icons-category/icon-defense.png new file mode 100644 index 0000000000..f0b4cabdad Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-defense.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-distribution.png b/core/assets-raw/sprites/ui/icons-category/icon-distribution.png new file mode 100644 index 0000000000..18233d41c0 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-distribution.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-effect.png b/core/assets-raw/sprites/ui/icons-category/icon-effect.png new file mode 100644 index 0000000000..5da7498a1f Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-effect.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-liquid.png b/core/assets-raw/sprites/ui/icons-category/icon-liquid.png new file mode 100644 index 0000000000..4d4142213b Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-liquid.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-power.png b/core/assets-raw/sprites/ui/icons-category/icon-power.png new file mode 100644 index 0000000000..5df68ce22b Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-power.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-production.png b/core/assets-raw/sprites/ui/icons-category/icon-production.png new file mode 100644 index 0000000000..0735582732 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-production.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-turret.png b/core/assets-raw/sprites/ui/icons-category/icon-turret.png new file mode 100644 index 0000000000..3ed23cf8b8 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-turret.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-units.png b/core/assets-raw/sprites/ui/icons-category/icon-units.png new file mode 100644 index 0000000000..b907051a23 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-units.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-upgrade.png b/core/assets-raw/sprites/ui/icons-category/icon-upgrade.png new file mode 100644 index 0000000000..6f054ad8d0 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-upgrade.png differ diff --git a/core/assets-raw/sprites/ui/icons/icon-crafting.png b/core/assets-raw/sprites/ui/icons/icon-crafting.png deleted file mode 100644 index 2a20c39b0b..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-crafting.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-defense.png b/core/assets-raw/sprites/ui/icons/icon-defense.png deleted file mode 100644 index 6e440a647a..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-defense.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-distribution.png b/core/assets-raw/sprites/ui/icons/icon-distribution.png deleted file mode 100644 index 858ba9bd3f..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-distribution.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-liquid.png b/core/assets-raw/sprites/ui/icons/icon-liquid.png deleted file mode 100644 index 48c93ed9d2..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-liquid.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-power.png b/core/assets-raw/sprites/ui/icons/icon-power.png deleted file mode 100644 index 666058d5c7..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-power.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-production.png b/core/assets-raw/sprites/ui/icons/icon-production.png deleted file mode 100644 index 8e1d914691..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-production.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-units.png b/core/assets-raw/sprites/ui/icons/icon-units.png deleted file mode 100644 index 5a7846974d..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-units.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-weapon.png b/core/assets-raw/sprites/ui/icons/icon-weapon.png deleted file mode 100644 index e59ec4582d..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-weapon.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/text-sides-down.png b/core/assets-raw/sprites/ui/text-sides-down.png deleted file mode 100644 index e3eb6b1708..0000000000 Binary files a/core/assets-raw/sprites/ui/text-sides-down.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/text-sides-over.png b/core/assets-raw/sprites/ui/text-sides-over.png deleted file mode 100644 index 110491b4d4..0000000000 Binary files a/core/assets-raw/sprites/ui/text-sides-over.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/text-sides.png b/core/assets-raw/sprites/ui/text-sides.png deleted file mode 100644 index 30e3c43031..0000000000 Binary files a/core/assets-raw/sprites/ui/text-sides.png and /dev/null differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index ee3722141f..5c12a3f2d0 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -9,8 +9,6 @@ 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.wiki.description = Official Mindustry wiki text.linkfail = Failed to open link\!\nThe URL has been copied to your clipboard. -text.editor.web = The web version does not support the editor\!\nDownload the game to use it. -text.web.unsupported = The web version does not support this feature\! Download the game to use it. text.gameover = Game Over text.gameover.pvp = The[accent] {0}[] team is victorious\! text.sector.gameover = This sector has been lost. Re-deploy? @@ -290,6 +288,7 @@ text.no = No text.info.title = Info text.error.title = [crimson]An error has occured text.error.crashtitle = An error has occured +text.blocks.unknown=[LIGHT_GRAY]??? text.blocks.blockinfo = Block Info text.blocks.powercapacity = Power Capacity text.blocks.powershot = Power/Shot @@ -408,8 +407,6 @@ mode.waves.name = waves mode.waves.description = the normal mode. limited resources and automatic incoming waves. mode.sandbox.name = sandbox mode.sandbox.description = infinite resources and no timer for waves. -mode.custom.warning = [scarlet]UNLOCKS IN CUSTOM GAMES OR SERVERS ARE NOT SAVED.[]\n\nPlay in sectors to unlock things. -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.description = limited resources and no timer for waves. mode.pvp.name = PvP @@ -497,6 +494,7 @@ text.mech.ability = [LIGHT_GRAY]Ability\: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity\: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosity\: {0} text.liquid.temperature = [LIGHT_GRAY]Temperature\: {0} +block.constructing = {0} [LIGHT_GRAY](Constructing) block.spawn.name = Enemy Spawn block.core.name = Core block.metalfloor.name = Metal Floor @@ -504,16 +502,16 @@ block.deepwater.name = deepwater block.water.name = water block.lava.name = lava block.tar.name = Tar -block.blackstone.name = blackstone -block.stone.name = stone -block.dirt.name = dirt -block.sand.name = sand -block.ice.name = ice -block.snow.name = snow -block.grass.name = grass -block.shrub.name = shrub -block.rock.name = rock -block.blackrock.name = blackrock +block.blackstone.name = Black Stone +block.stone.name = Stone +block.dirt.name = Dirt +block.sand.name = Sand +block.ice.name = Ice +block.snow.name = Snow +block.grass.name = Grass +block.shrub.name = Shrub +block.rock.name = Rock +block.blackrock.name = Black Rock block.icerock.name = icerock block.copper-wall.name = Copper Wall block.copper-wall-large.name = Large Copper Wall diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 5e5df2b1e3..3678908918 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = itch.io Seite mit Downloads und der Web-Version text.link.google-play.description = Google Play Store Seite text.link.wiki.description = Offizelles Mindustry Wiki text.linkfail = Fehler beim Öffnen des Links!\nDie URL wurde in die Zwischenablage kopiert. -text.editor.web = Die Web-Version unterstützt den Editor nicht!\nLade das Spiel herunter um ihn zu benutzen. -text.web.unsupported = Die Web-Version unterstützt dieses Feature nicht! Lade das Spiel herunter um es zu benutzen. text.gameover = Der Kern wurde zerstört. text.gameover.pvp = Das[accent] {0}[] Team ist siegreich! text.sector.gameover = Du hast diesen Sektor verloren. Erneuter Einsatz? @@ -267,6 +265,7 @@ text.error.invalidaddress = Ungültige Adresse. text.error.timedout = Zeitüberschreitung!\nStelle sicher, dass die Portweiterleitung auf dem Host richtig eingerichtet ist, und die Adresse stimmt! text.error.mismatch = Paketfehler:\nClient und Server passen möglicherweise nicht zusammen.\nStelle sicher, dass du und der Host jeweils die neueste Version von Mindustry haben! text.error.alreadyconnected = Bereits verbunden. +text.error.mapnotfound = Map file not found! text.error.any = Unbekannter Netzwerkfehler. text.settings.language = Sprache text.settings.reset = Auf Standard zurücksetzen @@ -369,6 +368,7 @@ setting.musicvol.name = Musiklautstärke setting.mutemusic.name = Musik stummschalten setting.sfxvol.name = Audioeffekt-Lautstärke setting.mutesound.name = Audioeffekte stummschalten +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Tasten zuweisen category.general.name = Allgemein category.view.name = Ansicht @@ -493,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Fähigkeit: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Wärmekapazität: {0} text.liquid.viscosity = [LIGHT_GRAY]Viskosität: {0} text.liquid.temperature = [LIGHT_GRAY]Temperatur: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = Gegnerischer Startpunkt block.core.name = Basis block.metalfloor.name = Metallboden @@ -622,7 +623,7 @@ block.rtg-generator.name = RTG Generator block.spectre.name = Spectre block.meltdown.name = Meltdown block.container.name = Container -block.core.description = The most important building in the game. +block.core.description = Das wichtigste Gebäude im Spiel team.blue.name = Blau team.red.name = Rot team.orange.name = Orange @@ -650,8 +651,8 @@ tutorial.begin = Deine Mission ist es den [LIGHT_GRAY]Gegner[] auszurotten.\n\n tutorial.drill = Manuelles Abbauen von Ressourcen ist ineffizient.\n[accent]Bohrer[] können automatisch abbauen.\n Platziere einen auf einem Kupfer Vorkommen. tutorial.conveyor = [accent]Transportbänder[] werden dazu benutzt Materialien zum Kern zu transportieren.\n Erstelle eine Reihe von Transportbändern zum Kern. tutorial.morecopper = Du brauchst [accent]mehr Kupfer[]!\n\nEntweder du baust es manuell ab, oder du platzierst weitere Bohrer. -tutorial.Geschützturm = Wir benötigen Verteidigung gegen den [LIGHT_GRAY] Gegner[].\n Baue einen Duo Turm nahe deiner Basis. -tutorial.drillGeschützturm = Der Duo Turm benötigt[accent] Kupfer[] als Munition. Platziere einen Bohrer neben dem Turm, um ihn mit Kupfer zu versorgen. +tutorial.turret = Defensive structures must be built to repel the[LIGHT_GRAY] enemy[].\nBuild a duo turret near your base. +tutorial.drillturret = Duo turrets require[accent] copper ammo []to shoot.\nPlace a drill next to the turret to supply it with mined copper. tutorial.waves = Der [LIGHT_GRAY] Gegner[] greift an.\n\nVerteidige deinen Kern 2 Wellen lang. Bau mehr Türme. tutorial.lead = Mehr Erz ist verfügbar. Finde Blei und bau es ab.\n\n Klicke auf deine Einheit und ziehe die Maus auf den Kern um Ressourcen zu übertragen. tutorial.smelter = Kupfer und Blei sind schwache Metalle.\n Super [accent]dichte Legierung [] kann in einem Schmeltzer erzeugt werden.\n\n Bau einen. @@ -667,7 +668,6 @@ tutorial.daggerfactory = Konstruiere eine Dagger Mech Fabrik.\n\n Diese wird ver tutorial.router = Fabriken benötigen Ressourcen um zu funktionieren.\n Platziere ein Router um Materialien auf Transportbändern aufzuteilen. tutorial.dagger = Verbinde die Fabrik mit einem Stromknoten. Wenn alle Voraussetzungen gegeben sind, beginnt die Fabrik Mechs zu konstruieren.\n\n Platziere mehr Bohrer und Transportbänder um die Versorgung der Fabrik zu sichern. tutorial.battle = Der[LIGHT_GRAY] Gegner[] hat seinen Kern offenbart.\nZerstöre ihn mit deiner Einheit und den Dagger Mechs. -block.core.description = Das wichtigste Gebäude im Spiel block.copper-wall.description = Ein günstiger Verteidigungsblock.\nNützlich, um die Basis und Türme in den ersten Wellen zu beschützen. block.copper-wall-large.description = Ein günstiger Verteidigungsblock.\nNützlich, um die Basis und Türme in den ersten Wellen zu beschützen.\nBenötigt mehrere Kacheln. block.dense-alloy-wall.description = Ein Standard-Verteidigungsblock.\nAngemessener Schutz vor Feinden. diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 342aa94a77..d745f83d96 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = itch.io es la página donde podes descargar las text.link.google-play.description = Ficha en la Google Play Store text.link.wiki.description = Wiki oficial de Mindustry text.linkfail = ¡Error al abrir el enlace!\nLa URL ha sido copiada a su portapapeles. -text.editor.web = ¡La versión web no es compatible con el editor!\nDescarga el juego para usarlo. -text.web.unsupported = ¡La versión web no soporta esta característica! Descarga el juego para poder usarla. text.gameover = Tu núcleo ha sido destruido. text.gameover.pvp = ¡El equipo[accent] {0}[] ha ganado! text.sector.gameover = Este sector ha sido perdido. ¿Re-desplegar? @@ -184,7 +182,7 @@ text.changelog.title = Registro de Parches text.changelog.loading = Consiguiendo el registro de parches... text.changelog.error.android = [accent]¡Nota: el registro de parches a veces no funciona en Android 4.4 o inferior!\nEsto es por un error interno de Android. text.changelog.error.ios = [accent]El registro de parches no está actualmente soportado para iOS. -text.changelog.error = [scarlet]¡Error consiguiendo el registro de parches!\Comprueba tu conexión a Internet. +text.changelog.error = [scarlet]¡Error consiguiendo el registro de parches!Comprueba tu conexión a Internet. text.changelog.current = [yellow][[Versión actual] text.changelog.latest = [accent][[Última version] text.loading = [accent]Cargando... @@ -370,6 +368,7 @@ setting.musicvol.name = Volumen de la Música setting.mutemusic.name = Silenciar Musica setting.sfxvol.name = Volumen de los efectos de sonido setting.mutesound.name = Silenciar Sonido +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Reasignar Teclas category.general.name = General category.view.name = Visión @@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Hablidad: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Capacidad Térmica: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosidad: {0} text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = Punto de generación block.core.name = Núcleo block.metalfloor.name = Suelo de Metal @@ -623,6 +623,7 @@ block.rtg-generator.name = Generador RTG block.spectre.name = Espectro block.meltdown.name = Meltdown block.container.name = Contenedor +block.core.description = The most important building in the game. team.blue.name = Azul team.red.name = Rojo team.orange.name = Naranja @@ -743,7 +744,6 @@ block.javelin-ship-pad.description = Deja tu nave actual y transfórmate en una block.glaive-ship-pad.description = Deja tu nave actual y transfórmate en una unidad aérea grande y bien armada nave pistolera.\nUsa el pad tocándolo dos veces mientras estás en él. block.tau-mech-pad.description = Deja tu nave actual y transfórmate en un mecanoide de soporte que puede reparar construcciones y tropas aliadas.\nUsa el pad tocándolo dos veces mientras estás en él. block.delta-mech-pad.description = Leave your current vessel and change into a fast, lightly-armored mech made for hit-and-run attacks.\nUse the pad by double tapping while standing on it. -Deja tu nave actual y transfórmate en un mecanoide rápido, con armas ligeras hecho para ataques de ataque y retirada.\nUsa el pad tocándolo dos veces mientras estás en él. block.omega-mech-pad.description = Deja tu nave actual y transfórmate en un mecanoide pesado y bien armado, hecho para asaltos en primera línea.\nUsa el pad tocándolo dos veces mientras estás en él. block.spirit-factory.description = Produce drones ligeros que obtienen minerales y reparan bloques. block.phantom-factory.description = Produce drones avanzados que son significativamente más eficientes que un dron espíritu. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index e22f8e40bd..ae82c370fd 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = page itch.io avec le lien du téléchargement po text.link.google-play.description = listing par le store google play text.link.wiki.description = wiki officiel de mindustry . text.linkfail = Erreur lors de l'ouverture du lien !\nL'URL a été copié avec succès. -text.editor.web = La version web ne possède pas l'éditeur !\nTéléchargez le jeu pour l'avoir. -text.web.unsupported = La version web ne supporte pas cette fonction ! Téléchargez le jeu pour l'utiliser. text.gameover = Partie terminée. text.gameover.pvp = L'équipe [accent] {0}[] a gagnée ! text.sector.gameover = Ce secteur a été perdu. Réessayer? @@ -370,6 +368,7 @@ setting.musicvol.name = volume de la musique setting.mutemusic.name = Couper la musique setting.sfxvol.name = Volume des SFX setting.mutesound.name = Couper les SFX +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Paramétrer les touches category.general.name = General category.view.name = Voir @@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Compétence: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosité: {0} text.liquid.temperature = [LIGHT_GRAY]Température: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = Générateur d'ennemi block.core.name = Base block.metalfloor.name = Sol en métal diff --git a/core/assets/bundles/bundle_fr_BE.properties b/core/assets/bundles/bundle_fr_BE.properties index dae5a09796..011bd405ec 100644 --- a/core/assets/bundles/bundle_fr_BE.properties +++ b/core/assets/bundles/bundle_fr_BE.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = Page web itch.io avec les versions ordinateurs t text.link.google-play.description = Page Google Play Store du jeu text.link.wiki.description = Wiki officiel de Mindustry text.linkfail = L'ouverture du lien a échoué!\nL'URL a été copiée dans votre presse-papier. -text.editor.web = La version web ne prend pas en charge l'éditeur !\nTéléchargez le jeu pour l'utiliser. -text.web.unsupported = La version web ne prend pas en charge cette fonctionnalité ! Téléchargez le jeu pour l'utiliser. text.gameover = Le base a été détruit. text.gameover.pvp = L'équipe[accent] {0}[] a gagnée ! text.sector.gameover = Ce secteur a été perdu. Réessayer ? @@ -64,7 +62,7 @@ text.mission.linknode = Reliez le transmetteur énergétique text.mission.display = [accent]Mission:\n[LIGHT_GRAY]{0} text.mission.mech = Changer de mécha[accent] {0}[] text.mission.create = Créez[accent] {0}[] -text.none = +text.none = text.close = Fermer text.quit = Quitter text.maps = Cartes @@ -370,6 +368,7 @@ setting.musicvol.name = Volume de la musique setting.mutemusic.name = Couper la musique setting.sfxvol.name = Volume des SFX setting.mutesound.name = Couper les SFX +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Paramétrer les touches category.general.name = Général category.view.name = Voir @@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Compétence: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosité: {0} text.liquid.temperature = [LIGHT_GRAY]Température: {0} +block.constructing = {0}\n[LIGHT_GRAY](En construction) block.spawn.name = Générateur d'ennemi block.core.name = Base block.metalfloor.name = Sol en métal @@ -668,7 +668,6 @@ tutorial.daggerfactory = Construire [accent]une usine de "Poignards" []est recom tutorial.router = Les usines ont besoin de ressources pour fonctionner.\nCréez un routeur pour séparer les objets. tutorial.dagger = Reliez des transmetteurs énergétiques à l'usine.\nUne fois que les conditions seront remplies , un mécha sera créé.\nConstruisez autant de foreuses, de générateurs et de tapis roulants que nécessaire. tutorial.battle = [LIGHT_GRAY]L'Ennemi[] a révélé sa base.\nDétruisez la avec votre unité et des méchas "Poignard". - block.copper-wall.description = Un bloc défensif bon marché.\nUtile pour protéger le noyau et les tourelles lors des premières vagues. block.copper-wall-large.description = Un bloc défensif bon marché.\nUtile pour protéger le noyau et les tourelles lors des premières vagues.\nS'étend sur plusieurs tuiles. block.dense-alloy-wall.description = Un bloc défensif standard.\nUne protection adéquate contre les ennemis. @@ -685,7 +684,7 @@ block.mend-projector.description = Guérit périodiquement les bâtiments situé block.overdrive-projector.description = Augmente la vitesse des bâtiments à proximité, comme les foreuses et les convoyeurs. block.force-projector.description = Crée un champ de force hexagonal autour de lui-même, protégeant les bâtiments et les unités internes des dommages causés par les balles. block.shock-mine.description = Endommage les ennemis qui marchent sur la mine. Presque invisible à l'ennemi. -block.duo.description =Une petite tourelle pas chère. +block.duo.description = Une petite tourelle pas chère. block.arc.description = Une petite tourelle qui tire de l'électricité dans un arc au hasard vers l'ennemi. block.hail.description = Une petite tourelle d'artillerie. block.lancer.description = Une tourelle de taille moyenne qui tire des faisceaux d’électricité chargés. diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index 838876490c..fe9cf095c1 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -9,8 +9,6 @@ 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.wiki.description = official Mindustry wiki text.linkfail = Failed to open link!\nThe URL has been copied to your cliboard. -text.editor.web = The web version does not support the editor!\nDownload the game to use it. -text.web.unsupported = The web version does not support this feature! Download the game to use it. text.gameover = Intinya hancur. text.gameover.pvp = The[accent] {0}[] team is victorious! text.sector.gameover = This sector has been lost. Re-deploy? @@ -370,6 +368,7 @@ setting.musicvol.name = Volume Musik setting.mutemusic.name = Bisukan Musik setting.sfxvol.name = Volume Suara setting.mutesound.name = Bisukan Suara +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Rebind Keys category.general.name = General category.view.name = View @@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Ability: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosity: {0} text.liquid.temperature = [LIGHT_GRAY]Temperature: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = Enemy Spawn block.core.name = Core block.metalfloor.name = Metal Floor diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index bfcd087d53..1001b8369c 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = pagina di itch.io con download per PC e versione text.link.google-play.description = Elenco di Google Play Store text.link.wiki.description = wiki ufficiale di Mindustry text.linkfail = Impossibile aprire il link! L'URL è stato copiato nella tua bacheca. -text.editor.web = La versione web non supporta l'editor! Scarica il gioco per usarlo. -text.web.unsupported = La vcersione web non supporta questa funzione! Sacrica il gioco per utilizzarla. text.gameover = Il nucleo è stato distrutto. text.gameover.pvp = The[accent] {0}[] team is victorious! text.sector.gameover = Hai perso questo settore. Attaccare di nuovo? @@ -370,6 +368,7 @@ setting.musicvol.name = Volume Musica setting.mutemusic.name = Silenzia musica setting.sfxvol.name = Volume SFX setting.mutesound.name = Togli suoni +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Configurazione Tasti category.general.name = Generale category.view.name = Visualizzazione @@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Abilità: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Capacità calorifica: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosità: {0} text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = Enemy Spawn block.core.name = Nucleo block.metalfloor.name = Pavimento di ferro diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 48b6a6ef83..109bd62369 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -1,34 +1,32 @@ -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[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!) text.credits = クレジット -text.discord = MindustryのDiscordに参加\! +text.discord = DiscordのMindustryに参加! text.link.discord.description = Mindustryの公式Discordグループ text.link.github.description = ゲームのソースコード -text.link.dev-builds.description = 不安定開発ビルド +text.link.dev-builds.description = 不安定な開発ビルド text.link.trello.description = 公式 Trelloボード の実装予定の機能をチェック text.link.itch.io.description = itch.ioでPC版のダウンロードやweb版をプレイ text.link.google-play.description = Google Playのストアページ text.link.wiki.description = 公式 Mindustry Wiki -text.linkfail = リンクを開くのに失敗しました\!\nURLをクリップボードにコピーしました。 -text.editor.web = Web版はエディターをサポートしていません\!\nゲームをダウンロードして、使用してください。 -text.web.unsupported = Web版はこの機能をサポートしてません\! ゲームをダウンロードして、使用してください。 +text.linkfail = リンクを開くのに失敗しました!\nURLをクリップボードにコピーしました。 text.gameover = ゲームオーバー -text.gameover.pvp = [accent] {0}[] チームの勝利\! +text.gameover.pvp = [accent] {0}[] チームの勝利! text.sector.gameover = この区域は敗北しました。 再配備しますか? text.sector.retry = リトライ -text.highscore = [accent]ハイスコアを記録\! +text.highscore = [accent]ハイスコアを記録! text.wave.lasted = あなたはウェーブ[accent]{0}[]まで続きました。 -text.level.highscore = ハイスコア\: [accent]{0} +text.level.highscore = ハイスコア: [accent]{0} text.level.delete.title = 削除の確認 text.map.delete = マップ "[accent]{0}[]" を削除してもよろしいですか? text.level.select = レベル選択 -text.level.mode = ゲームモード\: -text.construction.desktop = ブロックの選択や建設を止めるには、[accent]スペースを使用してください。[] -text.construction.title = ブロックの建設ガイド -text.construction = [accent]ブロック建設モード[]になりました。\n設置するには、機体の近くの設置可能な場所をタップしてください。\n一度、ブロックを選択して、チェックボックスを押して確認して下さい。すると、機体が建設し始めます。\n\n- [accent]ブロックの削除[]は、タップで範囲を選択してください。\n- [accent]範囲の選択[]は、長押しして、範囲のブロックをドラッグしてください。\n- [accent]一列にブロックを設置[]するには、 タップで空いている場所を長押しして、伸ばしたい方向にドラッグしてください\n- [accent]建設や範囲の選択をキャンセル[]するには、左下の X ボタンを押してください。 -text.deconstruction.title = ブロックの破壊ガイド -text.deconstruction = [accent]ブロック破壊モード[]になりました。\n\n破壊するには、機体の近くのブロックをタップしてください。\n一度、ブロックを選択して、チェックボックスを押して確認して下さい。すると、機体がブロックを破壊し始めます。\n\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n[accent]ブロックの破壊[]は、タップで範囲を選択してください。\n- [accent]範囲内のブロックを破壊[]するには、 タップで空いている場所を長押しして、伸ばしたい方向にドラッグしてください\n- [accent]破壊や範囲の選択をキャンセル[]するには、左下の X ボタンを押してください。 +text.level.mode = ゲームモード: +text.construction.desktop = ブロックの選択や建設を止めるには、[accent]スペースを使用してください[]。 +text.construction.title = ブロック建設ガイド +text.construction = [accent]ブロック建設モード[]になりました。\n設置するには、機体の近くの設置可能な場所をタップしてください。\nブロックを選択した状態で、チェックボタンを押して確認すると、機体が建設を始めます。\n\n- [accent]ブロックの削除[]は、タップで範囲を選択してください。\n- [accent]範囲の選択[]は、長押しして、範囲のブロックをドラッグしてください。\n- [accent]一列にブロックを設置[]するには、 タップで空いている場所を長押しして、伸ばしたい方向にドラッグしてください\n- [accent]建設や範囲の選択をキャンセル[]するには、左下の X ボタンを押してください。 +text.deconstruction.title = ブロック撤去ガイド +text.deconstruction = [accent]ブロック撤去モード[]になりました。\n\nブロックを撤去するには、機体の近くのブロックをタップしてください。\nブロックを選択した状態で、チェックボタンを押して確認すると、機体がブロックの撤去を始めます。\n\n- [accent]ブロックの破壊[]は、タップで範囲を選択してください。\n- [accent]範囲を選択してブロックを撤去[]するには、 タップで空いている場所を長押しして、伸ばしたい方向にドラッグしてください\n- [accent]撤去や範囲選択をキャンセル[]するには、左下の X ボタンを押してください。 text.showagain = 次回以降表示しない -text.coreattack = < コアが攻撃を受けています\! > +text.coreattack = < コアが攻撃を受けています! > text.unlocks = アンロック text.savegame = ゲームを保存 text.loadgame = ゲームを読み込む @@ -36,19 +34,19 @@ text.joingame = ゲームに参加 text.addplayers = プレイヤーを追加/削除 text.customgame = カスタムゲーム text.sectors = 区域 -text.sector = 区域\: [LIGHT_GRAY]{0} -text.sector.time = 時間\: [LIGHT_GRAY]{0} +text.sector = 区域: [LIGHT_GRAY]{0} +text.sector.time = 時間: [LIGHT_GRAY]{0} text.sector.deploy = 配備 text.sector.abandon = 撤退 -text.sector.abandon.confirm = 区域のすべての進行を撤退します。\nこれは元に戻すことはできません\! +text.sector.abandon.confirm = 区域のすべての進行を撤退します。\nこれは元に戻すことはできません! text.sector.resume = 再開 -text.sector.locked = [scarlet][[Incomplete] -text.sector.unexplored = [accent][[Unexplored] -text.missions = ミッション\:[LIGHT_GRAY] {0} -text.mission = ミッション\:[LIGHT_GRAY] {0} -text.mission.main = メインミッション\:[LIGHT_GRAY] {0} -text.mission.info = ミッションの情報 -text.mission.complete = ミッション完了\! +text.sector.locked = [scarlet][[不完全] +text.sector.unexplored = [accent][[未調査] +text.missions = ミッション:[LIGHT_GRAY] {0} +text.mission = ミッション:[LIGHT_GRAY] {0} +text.mission.main = メインミッション:[LIGHT_GRAY] {0} +text.mission.info = ミッション情報 +text.mission.complete = ミッション完了! text.mission.complete.body = 区域 {0},{1} を征服しました。 text.mission.wave = 残り[accent] {0}/{1} []ウェーブ\n次のウェーブまで {2} text.mission.wave.enemies = 残り[accent] {0}/{1} []ウェーブ\n敵の残り {2} 体 @@ -56,43 +54,43 @@ text.mission.wave.enemy = 残り[accent] {0}/{1} []ウェーブ\n敵の残り {2 text.mission.wave.menu = 残り[accent] {0}[] ウェーブ text.mission.battle = 敵のコアを破壊する text.mission.resource.menu = {0} を{1}個を入手する -text.mission.resource = {0} を入手する\:\n[accent]{1}/{2}[] -text.mission.block = {0} を作成する -text.mission.unit = ユニット {0} を作成する +text.mission.resource = {0} を入手する :\n[accent]{1}/{2}[] +text.mission.block = {0} を作る +text.mission.unit = ユニット {0} を作る text.mission.command = ユニットに {0} を命令する text.mission.linknode = 電源ノードを接続する -text.mission.display = [accent]ミッション\:\n[LIGHT_GRAY]{0} -text.mission.mech = メカニック[accent] {0}[]に切り替える -text.mission.create = [accent]{0}[] を作成 +text.mission.display = [accent]ミッション:\n[LIGHT_GRAY]{0} +text.mission.mech = 機体を[accent]{0}[]に乗り換える +text.mission.create = [accent]{0}[] を作る text.none = <なし> text.close = 閉じる text.quit = 終了 text.maps = マップ text.continue = 続ける text.nextmission = 次のミッションへ -text.maps.none = [LIGHT_GRAY]マップが存在しません\! +text.maps.none = [LIGHT_GRAY]マップが存在しません! text.about.button = About -text.name = 名前\: -text.filename = ファイル名\: -text.unlocked = 新しいブロックをアンロック\! -text.unlocked.plural = 新しいブロックをアンロック\! +text.name = 名前: +text.filename = ファイル名: +text.unlocked = 新しいブロックをアンロック! +text.unlocked.plural = 新しいブロックをアンロック! text.players = {0} 人がオンライン text.players.single = {0} 人がオンライン text.server.closing = [accent]サーバーを閉じています... -text.server.kicked.kick = サーバからキックされました\! +text.server.kicked.kick = サーバからキックされました! text.server.kicked.serverClose = サーバーが閉じました。 -text.server.kicked.sectorComplete = 区域を征服しました。 +text.server.kicked.sectorComplete = 区域を制覇しました。 text.server.kicked.sectorComplete.text = ミッションが完了しました。\nサーバーは次の区域に移ります。 -text.server.kicked.clientOutdated = 古いクライアントです\! ゲームをアップデートしてください\! -text.server.kicked.serverOutdated = 古いサーバーです\! ホストに更新してもらってください\! +text.server.kicked.clientOutdated = 古いクライアントです! ゲームをアップデートしてください! +text.server.kicked.serverOutdated = 古いサーバーです! ホストに更新してもらってください! text.server.kicked.banned = サーバーからBanされています。 text.server.kicked.recentKick = 直前にキックされています。\nもう一度接続できるまでお待ちください。 text.server.kicked.nameInUse = このサーバーでは、\nその名前はすでに使用されています。 text.server.kicked.nameEmpty = 無効な名前です。 -text.server.kicked.idInUse = すでにサーバーに参加しています。\! 二つのアカウントでの接続は許可されていません。 +text.server.kicked.idInUse = すでにサーバーに参加しています。! 二つのアカウントでの接続は許可されていません。 text.server.kicked.customClient = このサーバーはカスタムビルドをサポートしていません。公式版をダウンロードしてください。 -text.host.info = [accent]ホスト[]ボタンを押すと、ポート[scarlet]6567[]でサーバーが開かれます。\同じ[LIGHT_GRAY]Wifi や ローカルネットワーク[]からはサーバーリストで見ることができます。\n\nIPアドレスからどこからでもアクセスできるようにするには、[accent]ポート開放[]する必要があります。\n\n[LIGHT_GRAY]注意:\: LAN上のゲームで接続できない場合、Mindustryがファイアウォールの設定でローカルネットワークに接続が許可されているか確認してください。 -text.join.info = ここでは、[accent]サーバーのIPアドレス[]から接続したり、[accent]ローカルネットワーク[]のサーバーを探すことができます。\nLANとWANの両方のマルチプレイに対応しています。\n\n[LIGHT_GRAY]注意\:グローバルサーバーリストはありません。誰かのサーバーにIPで接続したい場合、ホストにIPをお尋ねください。 +text.host.info = [accent]ホスト[]ボタンを押すと、ポート[scarlet]6567[]でサーバーが開かれます。同じ[LIGHT_GRAY]Wifi や ローカルネットワーク[]からはサーバーリストで見ることができます。\n\nIPアドレスからどこからでもアクセスできるようにするには、[accent]ポート開放[]する必要があります。\n\n[LIGHT_GRAY]注意:: LAN上のゲームで接続できない場合、Mindustryがファイアウォールの設定でローカルネットワークに接続が許可されているか確認してください。 +text.join.info = ここでは、[accent]サーバーのIPアドレス[]から接続したり、[accent]ローカルネットワーク[]のサーバーを探すことができます。\nLANとWANの両方のマルチプレイに対応しています。\n\n[LIGHT_GRAY]注意:グローバルサーバーリストはありません。誰かのサーバーにIPで接続したい場合、ホストにIPをお尋ねください。 text.hostserver = ゲームをホスト text.hostserver.mobile = ホスト text.host = ホスト @@ -100,31 +98,31 @@ text.hosting = [accent]サーバーを開いています... text.hosts.refresh = リフレッシュ text.hosts.discovering = LAN上のサーバーを探しています text.server.refreshing = サーバーをリフレッシュ -text.hosts.none = [lightgray]ローカルゲームが見つかりません\! +text.hosts.none = [lightgray]ローカルゲームが見つかりません! text.host.invalid = [scarlet]ホストに接続できません。 text.trace = プレイヤーの記録 -text.trace.playername = プレイヤー名\: [accent]{0} -text.trace.ip = IP\: [accent]{0} -text.trace.id = ユニークID\: [accent]{0} -text.trace.android = Androidクライアント\: [accent]{0} -text.trace.modclient = カスタムクライアント\: [accent]{0} -text.trace.totalblocksbroken = 総ブロック破壊数\: [accent]{0} -text.trace.structureblocksbroken = 総建設物破壊数\: [accent]{0} -text.trace.lastblockbroken = 最後に破壊したブロック\: [accent]{0} -text.trace.totalblocksplaced = 総ブロック設置数\: [accent]{0} -text.trace.lastblockplaced = 最後に設置したブロック\: [accent]{0} -text.invalidid = 無効なクライアントIDです\! バグ報告してください。 +text.trace.playername = プレイヤー名: [accent]{0} +text.trace.ip = IP: [accent]{0} +text.trace.id = ユニークID: [accent]{0} +text.trace.android = Androidクライアント: [accent]{0} +text.trace.modclient = カスタムクライアント: [accent]{0} +text.trace.totalblocksbroken = 総ブロック破壊数: [accent]{0} +text.trace.structureblocksbroken = 総建設物破壊数: [accent]{0} +text.trace.lastblockbroken = 最後に破壊したブロック: [accent]{0} +text.trace.totalblocksplaced = 総ブロック設置数: [accent]{0} +text.trace.lastblockplaced = 最後に設置したブロック: [accent]{0} +text.invalidid = 無効なクライアントIDです! バグ報告してください。 text.server.bans = Ban -text.server.bans.none = Banされたプレイヤーはいません\! +text.server.bans.none = Banされたプレイヤーはいません! text.server.admins = 管理者 -text.server.admins.none = 管理者はいません\! +text.server.admins.none = 管理者はいません! text.server.add = サーバーを追加 text.server.delete = サーバーを削除しますか? -text.server.hostname = ホスト\: {0} +text.server.hostname = ホスト: {0} text.server.edit = サーバーを編集 -text.server.outdated = [crimson]古いサーバー\![] -text.server.outdated.client = [crimson]古いクライアント\![] -text.server.version = [lightgray]バージョン\: {0} {1} +text.server.outdated = [crimson]古いサーバー![] +text.server.outdated.client = [crimson]古いクライアント![] +text.server.version = [lightgray]バージョン: {0} {1} text.server.custombuild = [yellow]カスタムビルド text.confirmban = このプレイヤーを Ban しますか? text.confirmkick = このプレイヤーをキックしますか? @@ -132,45 +130,45 @@ text.confirmunban = このプレイヤーの Ban を解除しますか? text.confirmadmin = このプレイヤーを管理者にしますか? text.confirmunadmin = このプレイヤーを管理者から削除しますか? text.joingame.title = サーバーに参加 -text.joingame.ip = IP\: +text.joingame.ip = IP: text.disconnect = 接続が切断されました。 -text.disconnect.data = ワールドデータの読み込みに失敗しました\! +text.disconnect.data = ワールドデータの読み込みに失敗しました! text.connecting = [accent]接続中... text.connecting.data = [accent]ワールドデータを読み込んでいます... -text.server.port = ポート\: -text.server.addressinuse = アドレスがすでに使用されています。\! -text.server.invalidport = 無効なポート番号です。\! -text.server.error = [crimson]サーバーエラー\: [accent]{0} +text.server.port = ポート: +text.server.addressinuse = アドレスがすでに使用されています。! +text.server.invalidport = 無効なポート番号です。! +text.server.error = [crimson]サーバーエラー: [accent]{0} text.save.old = これは古いバージョンのセーブデータで、使用することができません。\n\n[LIGHT_GRAY]下位互換性の実装は正式版の4.0行われます。 text.save.new = 新しく保存 text.save.overwrite = このスロットに上書きしてよろしいですか? text.overwrite = 上書き -text.save.none = セーブデータがありません\! +text.save.none = セーブデータがありません! text.saveload = [accent]セーブしています... -text.savefail = ゲームの保存に失敗しました。\! +text.savefail = ゲームの保存に失敗しました。! text.save.delete.confirm = このセーブデータを削除してよろしいですか? text.save.delete = 削除 text.save.export = エクスポート -text.save.import.invalid = [accent]無効なセーブデータです。\! -text.save.import.fail = [crimson]セーブのインポートに失敗\: [accent]{0} -text.save.export.fail = [crimson]セーブのエクスポートに失敗\: [accent]{0} +text.save.import.invalid = [accent]無効なセーブデータです。! +text.save.import.fail = [crimson]セーブのインポートに失敗: [accent]{0} +text.save.export.fail = [crimson]セーブのエクスポートに失敗: [accent]{0} text.save.import = セーブデータを読み込む -text.save.newslot = セーブデータ名\: +text.save.newslot = セーブデータ名: text.save.rename = リネーム -text.save.rename.text = 新しい名前\: +text.save.rename.text = 新しい名前: text.selectslot = セーブデータを選択 text.slot = [accent]スロット {0} -text.save.corrupted = [accent]セーブファイルが無効、または破損しました\!\nゲームのアップデート直後の場合、恐らくセーブデータのフォーマットの変更によるもので、バグではありません。 +text.save.corrupted = [accent]セーブファイルが無効、または破損しました!\nゲームのアップデート直後の場合、恐らくセーブデータのフォーマットの変更によるもので、バグではありません。 text.sector.corrupted = [accent]区域のセーブファイルが見つかりましたが、読み込みに失敗しました。\n新しく区域がが作成されます。 text.empty = <空> text.on = オン text.off = オフ -text.save.autosave = 自動保存\: {0} -text.save.map = マップ\: {0} +text.save.autosave = 自動保存: {0} +text.save.map = マップ: {0} text.save.wave = ウェーブ {0} -text.save.difficulty = 難易度\: {0} -text.save.date = 最終保存\: {0} -text.save.playtime = プレイ時間\: {0} +text.save.difficulty = 難易度: {0} +text.save.date = 最終保存: {0} +text.save.playtime = プレイ時間: {0} text.confirm = 確認 text.delete = 削除 text.ok = OK @@ -182,9 +180,9 @@ text.back = 戻る text.quit.confirm = 終了してもよろしいですか? text.changelog.title = 変更履歴 text.changelog.loading = 変更履歴を取得しています... -text.changelog.error.android = [accent]Android4.4または、それ以下では変更履歴が動作しない場合があります。\!\nこれはAndroidの内部バグによるものです。 +text.changelog.error.android = [accent]Android4.4または、それ以下では変更履歴が動作しない場合があります。!\nこれはAndroidの内部バグによるものです。 text.changelog.error.ios = [accent]iOSは変更履歴に対応していません。 -text.changelog.error = [scarlet]変更履歴の取得エラー\!\nインターネット接続を確認してください。 +text.changelog.error = [scarlet]変更履歴の取得エラー!\nインターネット接続を確認してください。 text.changelog.current = [yellow][[現在のバージョン] text.changelog.latest = [accent][[最新バージョン] text.loading = [accent]読み込み中... @@ -200,32 +198,32 @@ text.saveimage = イメージを保存 text.unknown = 不明 text.custom = カスタム text.builtin = 組み込み -text.map.delete.confirm = マップを削除してもよろしいですか? これは戻すことができません\! +text.map.delete.confirm = マップを削除してもよろしいですか? これは戻すことができません! text.map.random = [accent]ランダムマップ -text.map.nospawn = このマップにはスポーンするためのプレイヤーのコアがありません\! [ROYAL]青い[]コアをエディターでマップに追加してください。 -text.map.nospawn.pvp = このマップには敵がスポーンするためのプレイヤーのコアがありません\! [SCARLET]赤い[]コアをエディターでマップに追加してください。 -text.map.invalid = マップの読み込みエラー\: ファイルが無効、または破損しています。 +text.map.nospawn = このマップにはスポーンするためのプレイヤーのコアがありません! [ROYAL]青い[]コアをエディターでマップに追加してください。 +text.map.nospawn.pvp = このマップには敵がスポーンするためのプレイヤーのコアがありません! [SCARLET]赤い[]コアをエディターでマップに追加してください。 +text.map.invalid = マップの読み込みエラー: ファイルが無効、または破損しています。 text.editor.brush = ブラシ text.editor.slope = \\ text.editor.openin = エディターで開く text.editor.oregen = 鉱石の生成 -text.editor.oregen.info = 鉱石の生成\: +text.editor.oregen.info = 鉱石の生成: text.editor.mapinfo = マップ情報 -text.editor.author = 作者\: -text.editor.description = 説明\: -text.editor.name = 名前\: +text.editor.author = 作者: +text.editor.description = 説明: +text.editor.name = 名前: text.editor.teams = チーム text.editor.elevation = 標高 -text.editor.errorimageload = ファイルの読み込みエラー\:\n[accent]{0} -text.editor.errorimagesave = ファイルの保存エラー\:\n[accent]{0} +text.editor.errorimageload = ファイルの読み込みエラー:\n[accent]{0} +text.editor.errorimagesave = ファイルの保存エラー:\n[accent]{0} text.editor.generate = 生成 text.editor.resize = リサイズ text.editor.loadmap = マップを読み込む text.editor.savemap = マップを保存 -text.editor.saved = 保存しました\! -text.editor.save.noname = マップに名前がありません\! メニューの 'マップ情報' から設定してください。 -text.editor.save.overwrite = マップが組み込みマップを上書きしようとしています。\! メニューの 'マップ情報' から異なる名前に設定してください。 -text.editor.import.exists = [scarlet]インポートできません\:[] '{0}' はすでに組み込みマップの名前として存在します\! +text.editor.saved = 保存しました! +text.editor.save.noname = マップに名前がありません! メニューの 'マップ情報' から設定してください。 +text.editor.save.overwrite = マップが組み込みマップを上書きしようとしています。! メニューの 'マップ情報' から異なる名前に設定してください。 +text.editor.import.exists = [scarlet]インポートできません:[] '{0}' はすでに組み込みマップの名前として存在します! text.editor.import = インポート... text.editor.importmap = マップをインポート text.editor.importmap.description = すでに存在しているマップをインポート @@ -240,37 +238,35 @@ text.editor.exportimage = 地形イメージをエクスポート text.editor.exportimage.description = イメージファイルをエクスポート text.editor.loadimage = 地形をインポート text.editor.saveimage = 地形をエクスポート -text.editor.unsaved = [scarlet]保存されていない変更があります\![]\n終了してもよろしいですか? +text.editor.unsaved = [scarlet]保存されていない変更があります![]\n終了してもよろしいですか? text.editor.resizemap = マップをリサイズ -text.editor.mapname = マップ名\: -text.editor.overwrite = [accent]警告\!\n存在するマップを上書きします。 -text.editor.overwrite.confirm = [scarlet]警告\![] この名前のマップがすでに存在します。上書きしてもよろしいですか? -text.editor.selectmap = 読み込むマップを選択\: -text.width = 幅\: -text.height = 高さ\: +text.editor.mapname = マップ名: +text.editor.overwrite = [accent]警告!\n存在するマップを上書きします。 +text.editor.overwrite.confirm = [scarlet]警告![] この名前のマップがすでに存在します。上書きしてもよろしいですか? +text.editor.selectmap = 読み込むマップを選択: +text.width = 幅: +text.height = 高さ: text.menu = メニュー text.play = プレイ text.load = 読み込む text.save = 保存 -text.fps = FPS\: {0} -text.tps = TPS\: {0} -text.ping = Ping\: {0}ms +text.fps = FPS: {0} +text.tps = TPS: {0} +text.ping = Ping: {0}ms text.language.restart = 言語設定を有効にするにはゲームを再起動してください。 text.settings = 設定 text.tutorial = チュートリアル text.editor = エディター text.mapeditor = マップエディター text.donate = 寄附 - -text.connectfail = [crimson]サーバーへの接続できませんでした\:\n\n[accent]{0} +text.connectfail = [crimson]サーバーへの接続できませんでした:\n\n[accent]{0} text.error.unreachable = サーバーに到達できません。\nアドレスは正しいですか? text.error.invalidaddress = 無効なアドレスです。 text.error.timedout = タイムアウトしました!\nホストがポート開放されているか確認してください。アドレスは正しいです! -text.error.mismatch =パケットエラー:\nクライアント/サーバーのバージョンが一致しません。\nゲームとホストが最新のMindustryか確認してください! +text.error.mismatch = パケットエラー:\nクライアント/サーバーのバージョンが一致しません。\nゲームとホストが最新のMindustryか確認してください! text.error.alreadyconnected = すでに接続されています。 text.error.mapnotfound = マップファイルが見つかりません! text.error.any = 不明なネットワークエラーです。 - text.settings.language = 言語 text.settings.reset = デフォルトにリセット text.settings.rebind = 再設定 @@ -279,8 +275,8 @@ text.settings.game = ゲーム text.settings.sound = サウンド text.settings.graphics = グラフィック text.settings.cleardata = データを削除... -text.settings.clear.confirm = データを削除してもよろしいですか?\n元に戻すことはできません\! -text.settings.clearall.confirm = [scarlet]警告\![]\nこれはすべてのデータが削除されます。これにはセーブデータ、マップ、アンロック、キーバインドが含まれます。\n「ok」 を押すと、すべてのデータが削除され、自動的に終了します。 +text.settings.clear.confirm = データを削除してもよろしいですか?\n元に戻すことはできません! +text.settings.clearall.confirm = [scarlet]警告![]\nこれはすべてのデータが削除されます。これにはセーブデータ、マップ、アンロック、キーバインドが含まれます。\n「ok」 を押すと、すべてのデータが削除され、自動的に終了します。 text.settings.clearsectors = 区域を削除 text.settings.clearunlocks = アンロックを削除 text.settings.clearall = すべてを削除 @@ -318,11 +314,11 @@ text.blocks.drillspeed = 採掘速度 text.blocks.liquidoutput = 搬出液体 text.blocks.liquidoutputspeed = 液体搬出速度 text.blocks.liquiduse = 液体使用量 -text.blocks.coolant = 冷媒 -text.blocks.coolantuse = 冷媒使用量 +text.blocks.coolant = 冷却 +text.blocks.coolantuse = 冷却使用量 text.blocks.inputliquidfuel = 液体燃料 text.blocks.liquidfueluse = 液体燃料使用量 -text.blocks.explosive = 高い爆発性\! +text.blocks.explosive = 高い爆発性! text.blocks.health = 耐久値 text.blocks.inaccuracy = 不正確 text.blocks.shots = ショット @@ -356,7 +352,7 @@ setting.difficulty.easy = イージー setting.difficulty.normal = ノーマル setting.difficulty.hard = ハード setting.difficulty.insane = クレイジー -setting.difficulty.name = 難易度\: +setting.difficulty.name = 難易度: setting.screenshake.name = 画面を振る setting.effects.name = 画面効果 setting.sensitivity.name = 操作感度 @@ -388,7 +384,7 @@ keybind.select.name = 選択/ショット keybind.break.name = 破壊 keybind.deselect.name = 選択解除 keybind.shoot.name = ショット -keybind.zoom_hold.name = 長押しズーム +keybind.zoom_hold.name = ズーム長押し keybind.zoom.name = ズーム keybind.menu.name = メニュー keybind.pause.name = ポーズ @@ -409,7 +405,7 @@ mode.waves.description = ノーマルモードです。限られた資源でウ mode.sandbox.name = サンドボックス mode.sandbox.description = 無限の資源でウェーブを自由に始められます。 mode.custom.warning = [scarlet]カスタムゲームまたは、サーバ内でのアンロックは保存されません。[]\n\nアンロックするには区域でプレイしてください。 -mode.custom.warning.read = 必ずお読みください\:\n[scarlet]カスタムゲーム内でのアンロックは区域やほかのモードには影響しません\!\n\n[LIGHT_GRAY](多分必要ないと思いますが) +mode.custom.warning.read = 必ずお読みください:\n[scarlet]カスタムゲーム内でのアンロックは区域やほかのモードには影響しません!\n\n[LIGHT_GRAY](多分必要ないと思いますが) mode.freebuild.name = フリービルド mode.freebuild.description = 限られた資源でウェーブを自由に始められます。 mode.pvp.name = PvP @@ -454,49 +450,50 @@ liquid.lava.name = 溶岩 liquid.oil.name = 石油 liquid.cryofluid.name = 冷却水 mech.alpha-mech.name = アルファ -mech.alpha-mech.weapon = 重機関銃 -mech.alpha-mech.ability = ドローン軍団 -mech.alpha-mech.description = 一般的な機体です。速度とダメージは標準的です。攻撃力を高めるために最大3体のドローンを生成します。 +mech.alpha-mech.weapon = 重武装機関砲 +mech.alpha-mech.ability = ドローン部隊 +mech.alpha-mech.description = 一般的な機体です。標準的な速度と攻撃力を持っています。攻撃力を高めるために最大3体のドローンを作成することができます。 mech.delta-mech.name = デルタ -mech.delta-mech.weapon = 電撃放電機 -mech.delta-mech.ability = 電撃 -mech.delta-mech.description = 高速に移動する敵のために素早く軽装化された機体です。建造物にはほとんどダメージを与えませんが、電撃でたくさんの敵を素早く倒すことができます。 +mech.delta-mech.weapon = 電撃砲 +mech.delta-mech.ability = 電撃チャージ +mech.delta-mech.description = 高速に移動する敵のために素早く軽装化された機体です。建造物にはほとんどダメージを与えませんが、電撃を使って、たくさんの敵を素早く倒すことができます。 mech.tau-mech.name = タウ mech.tau-mech.weapon = 修復レーザー -mech.tau-mech.ability = 修復バースト -mech.tau-mech.description = 支援型機体です。ダメージを受けたブロックを修復や火災の消火や半径内の味方を治療を行います。 +mech.tau-mech.ability = リペアバースト +mech.tau-mech.description = 支援型機体です。ダメージを受けたブロックを修復や火災の消火、半径内の味方を治療を行います。 mech.omega-mech.name = オメガ mech.omega-mech.weapon = ロケット弾 mech.omega-mech.ability = 重装備 mech.omega-mech.description = 最前線での攻撃向けに作られた大型機体です。重装備によってダメージの90%を防ぐことができます。 mech.dart-ship.name = ダート -mech.dart-ship.weapon = ライフル -mech.dart-ship.description = 一般的な機体です。高速で軽く使いやすいですが、攻撃能力はほとんどなく採掘速度も遅いです。 +mech.dart-ship.weapon = 機関砲 +mech.dart-ship.description = 一般的な機体です。高速で軽く使いやすいですが、攻撃能力はほとんどなく採掘速度が遅いのが欠点です。 mech.javelin-ship.name = ジャベリン mech.javelin-ship.description = 最初は遅いですが、敵の基地では速度と飛行能力が飛躍的に高まり、電撃やミサイルで多量のダメージを与えることができます。 mech.javelin-ship.weapon = バーストミサイル mech.javelin-ship.ability = 放電ブースター mech.trident-ship.name = トライデント -mech.trident-ship.description = 強力な爆撃機です。しっかりとした装甲です。 +mech.trident-ship.description = 強力な爆撃機です。頑丈な装甲です。 mech.trident-ship.weapon = 爆弾 mech.glaive-ship.name = グライブ mech.glaive-ship.description = 大きく、重武装された攻撃機です。焼夷弾が装備され、優れた加速と最高速度を保有しています。 mech.glaive-ship.weapon = 焼夷弾 -text.item.explosiveness = [LIGHT_GRAY]爆発性\: {0}% -text.item.flammability = [LIGHT_GRAY]可燃性\: {0}% -text.item.radioactivity = [LIGHT_GRAY]放射能\: {0}% -text.item.fluxiness = [LIGHT_GRAY]流動性\: {0}% -text.unit.health = [LIGHT_GRAY]耐久値\: {0} -text.unit.speed = [LIGHT_GRAY]速度\: {0} -text.mech.weapon = [LIGHT_GRAY]武器\: {0} -text.mech.armor = [LIGHT_GRAY]装備\: {0} -text.mech.itemcapacity = [LIGHT_GRAY]アイテム容量\: {0} -text.mech.minespeed = [LIGHT_GRAY]採掘速度\: {0} -text.mech.minepower = [LIGHT_GRAY]採掘力\: {0} -text.mech.ability = [LIGHT_GRAY]能力\: {0} -text.liquid.heatcapacity = [LIGHT_GRAY]熱容量\: {0} -text.liquid.viscosity = [LIGHT_GRAY]粘度\: {0} -text.liquid.temperature = [LIGHT_GRAY]温度\: {0} +text.item.explosiveness = [LIGHT_GRAY]爆発性: {0}% +text.item.flammability = [LIGHT_GRAY]可燃性: {0}% +text.item.radioactivity = [LIGHT_GRAY]放射能: {0}% +text.item.fluxiness = [LIGHT_GRAY]流動性: {0}% +text.unit.health = [LIGHT_GRAY]耐久値: {0} +text.unit.speed = [LIGHT_GRAY]速度: {0} +text.mech.weapon = [LIGHT_GRAY]武器: {0} +text.mech.armor = [LIGHT_GRAY]装備: {0} +text.mech.itemcapacity = [LIGHT_GRAY]アイテム容量: {0} +text.mech.minespeed = [LIGHT_GRAY]採掘速度: {0} +text.mech.minepower = [LIGHT_GRAY]採掘力: {0} +text.mech.ability = [LIGHT_GRAY]能力: {0} +text.liquid.heatcapacity = [LIGHT_GRAY]熱容量: {0} +text.liquid.viscosity = [LIGHT_GRAY]粘度: {0} +text.liquid.temperature = [LIGHT_GRAY]温度: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = エネミースポーン block.core.name = コア block.metalfloor.name = 金属製の床 @@ -516,7 +513,7 @@ block.rock.name = 岩 block.blackrock.name = 黒い岩 block.icerock.name = 氷岩 block.copper-wall.name = 銅の壁 -block.copper-wall-large.name = 大きなな銅の壁 +block.copper-wall-large.name = 大きな銅の壁 block.dense-alloy-wall.name = 高密度合金の壁 block.dense-alloy-wall-large.name = 大きな高密度合金の壁 block.phase-wall.name = フェーズファイバーの壁 @@ -541,9 +538,9 @@ block.overflow-gate.description = 搬出先がいっぱいの場合に左右に block.smelter.name = 溶鉱炉 block.arc-smelter.name = 電気式溶鉱炉 block.silicon-smelter.name = シリコン溶鉱炉 -block.phase-weaver.name = フェーズ紡績機 +block.phase-weaver.name = フェーズ織機 block.pulverizer.name = 粉砕機 -block.cryofluidmixer.name = 凍結流体ミキサー +block.cryofluidmixer.name = 冷却ミキサー block.melter.name = 融合機 block.incinerator.name = 焼却炉 block.biomattercompressor.name = バイオメター圧縮機 @@ -638,10 +635,10 @@ unit.spirit.name = スピリットドローン unit.spirit.description = 初期のユニットです。デフォルトでコアからスポーンします。自動で鉱石の採掘やブロックの修理をします。 unit.phantom.name = ファントムドローン unit.phantom.description = 強化されたユニットです。自動で鉱石の採掘やブロックの修理をします。スピリットドローンよりも効率的に行います。 -unit.dagger.name = ダガ― +unit.dagger.name = ダガー unit.dagger.description = 一般的な地上ユニットです。集団になると便利です。 unit.titan.name = タイタン -unit.titan.description = 強化版の武装した地上ユニットです。地上と空の敵の両方に攻撃します。 +unit.titan.description = 強化された地上戦闘ユニットです。地上と空の敵の両方に攻撃します。 unit.ghoul.name = グール爆撃機 unit.ghoul.description = 地上爆撃機です。 unit.wraith.name = レースファイター @@ -650,29 +647,29 @@ unit.fortress.name = フォートレス unit.fortress.description = 砲撃地上ユニットです。 unit.revenant.name = レベナント unit.revenant.description = レーザープラットフォームです。 -tutorial.begin = 最終ミッションは[LIGHT_GRAY]敵[]を倒すことです。\n\nまずは、[accent]銅の採掘[]から始めましょう。コアの近くの銅鉱石の鉱脈をタップしましょう。 +tutorial.begin = ここでのミッションは[LIGHT_GRAY]敵[]を倒すことです。\n\nまずは、[accent]銅の採掘[]から始めましょう。コアの近くの銅鉱石の鉱脈をタップしましょう。 tutorial.drill = 手動で採掘するのは非効率的です。\n[accent]ドリル[]を使えば自動で採掘できます。\n銅鉱石の鉱脈の上に1つ置いてみましょう。 -tutorial.conveyor = [accent]コンベアー[]はコアにアイテムを移送することができます。\nドリルからコアまでコンベアーのラインを作りましょう。 +tutorial.conveyor = [accent]コンベアー[]はコアにアイテムを輸送することができます。\nドリルからコアまでコンベアー作りましょう。 tutorial.morecopper = まだまだ銅が必要です。\n\n手動で採掘するか、ドリルをもっと設置しましょう。 tutorial.turret = [LIGHT_GRAY]敵[]を撃退するために防衛体制を作らなければなりません。\n基地の近くにターレットのデュオを設置しましょう。 tutorial.drillturret = デュオには弾として[accent]銅の弾薬[]が必要です。\nデュオの横にドリルを置き、採掘した銅を供給しましょう。 tutorial.waves = [LIGHT_GRAY]敵[]が近づいてきます。\n\n2ウェーブの間、コアを守ってください。ターレットをもっと設置しましょう。 tutorial.lead = 他の鉱石も使ってみましょう。[accent]鉛[]を見つけて、採掘しましょう。\n\nユニットからコアにドラッグして、資源を転送できます。 -tutorial.smelter = 銅と鉛は弱い金属です。優れた[アクセント]密な合金[]は製錬所で作ることができます。 1つを構築します。\n\n銅を鉛はやわらかい金属です。\nより硬い[accent]高密度合金[]を溶鉱炉で作りましょう。 +tutorial.smelter = 銅を鉛はやわらかい金属です。\nより硬い[accent]高密度合金[]を溶鉱炉で作りましょう。 tutorial.densealloy = 溶鉱炉で作った合金を回収しましょう。\n\nまた、必要に応じて効率化しましょう。 -tutorial.siliconsmelter = コアは、採掘やブロックの修復のために[accent]スピリットドローン[]を作成しています。\n\n他のユニットを作るには[accent]シリコン[]が要ります。\nシリコン溶鉱炉を作りましょう。 +tutorial.siliconsmelter = コアは、採掘やブロックの修復のために[accent]スピリットドローン[]を作成しています。\n\n他のユニットを作るには[accent]シリコン[]が必要です。\nシリコン溶鉱炉を作りましょう。 tutorial.silicondrill = シリコンには[accent]石炭[]と[accent]砂[]が必要です。\nまず、ドリルを作りましょう。 -tutorial.generator = この技術には電力が必要です。それに対して[accent]燃焼ジェネレーター[]を作成します。\n\nこの技術には電力が必要です。\n[accent]火力発電機[]を作りましょう。 +tutorial.generator = この技術には電力が必要です。\n[accent]火力発電機[]を作りましょう。 tutorial.generatordrill = 火力発電機には燃料が必要です。\nドリルから石炭を補給しましょう。 -tutorial.node = 電力を伝送する必要があります。\n火力発電機の隣に[accent]電源ノード[]を作って、電力を転送しましょう。 -tutorial.nodelink = 電力は接触する電力ブロックや発電機か接続された電源ノードによって転送することができます。\n\nノードをタップしてから、発電機とシリコン溶鉱炉を選択して電力を繋げましょう。 +tutorial.node = 電力を送電する必要があります。\n火力発電機の隣に[accent]電源ノード[]を作って、電力を供給しましょう。 +tutorial.nodelink = 電力は隣接している電力ブロックや発電機、接続された状態の電源ノードを使って送電することができます。\n\nノードをタップしてから、発電機とシリコン溶鉱炉を選択して電力を繋げましょう。 tutorial.silicon = シリコン溶鉱炉で製造したシリコンを回収しましょう。\n\nまた、効率化をすることをお勧めします。 -tutorial.daggerfactory = [accent]ダガ―ユニット生産機[]を作りましょう。\n\nこれを使うと攻撃ユニットを作ってくれます。 +tutorial.daggerfactory = [accent]ダガーユニット製造機[]を作りましょう。\n\nこれを使うと攻撃ユニットを作ってくれます。 tutorial.router = 生産機には電力が必要です。\nコンベアーから資源を分けるためにルーターを作りましょう。 tutorial.dagger = 電源ノードを生産機に接続しましょう。\n要件が揃うと、ユニットを作り始めます。\n\n必要に応じて、ドリルや発電機、コンベアーを増やしましょう。 -tutorial.battle = [LIGHT_GRAY]敵[]のコアが見つかりました。\nユニットやダガ―で破壊しましょう。 -block.copper-wall.description = 安価な防壁ブロックです。\n初めのウェーブでコアやターレットを保護するのに便利です。 -block.copper-wall-large.description = 安価な大型防壁ブロックです。\n初めのウェーブでコアやターレットを保護するのに便利です。 +tutorial.battle = [LIGHT_GRAY]敵[]のコアが見つかりました。\nユニットやダガーで破壊しましょう。 +block.copper-wall.description = 安価な防壁ブロックです。\n最初のウェーブでコアやターレットを保護するのに便利です。 +block.copper-wall-large.description = 安価な大型防壁ブロックです。\n最初のウェーブでコアやターレットを保護するのに便利です。 block.dense-alloy-wall.description = 標準的な防壁ブロックです。\n敵からの保護に最適です。 block.dense-alloy-wall-large.description = 標準的な大型防壁ブロックです。\n敵からの保護に最適です。 block.thorium-wall.description = 強化された防壁ブロックです。\n敵からの保護により強固です。 @@ -699,9 +696,9 @@ block.cyclone.description = 大型連射ターレットです。 block.fuse.description = 短距離攻撃をする大型ターレットです。 block.spectre.description = 一度に2発の強力な弾を撃つ大型ターレットです。 block.meltdown.description = 強力な長距離攻撃をする大型ターレットです。 -block.conveyor.description = 一般的なアイテム輸送ブロックです。アイテムを前方に移動し、自動的にターレットや製造機などに入れます。回転可能です。 +block.conveyor.description = 一般的なアイテム輸送ブロックです。アイテムを前方に移動し、自動的にターレットや製造機などに入れます。回転できます。 block.titanium-conveyor.description = 強化されたアイテム輸送ブロックです。通常のコンベアーよりも速くアイテムを移動します。 -block.phase-conveyor.description = 強化されたアイテム輸送ブロックです。電力を使用して、離れたフェーズコンベアーにアイテムを転送します。 +block.phase-conveyor.description = 強化されたアイテム転送ブロックです。電力を使用して、離れた場所にあるフェーズコンベアーにアイテムを転送することができます。 block.junction.description = 交差している2つのコンベアーをブリッジします。2つの異なるコンベアーが異なる場所に異なる材料を運んでいるときに便利です。 block.mass-driver.description = 長距離の輸送が可能なアイテム輸送ブロックです。離れた別のマスドライバーにアイテムを発射します。 block.smelter.description = 石炭を燃やして、銅と鉛から高密度合金を製錬します。 @@ -726,9 +723,9 @@ block.battery.description = 電源ノード間で電力が余っていれば充 block.battery-large.description = 通常のバッテリーより多くの電力を貯めて置くことができます。 block.combustion-generator.description = 石油や可燃性の物質を燃やして発電します。 block.turbine-generator.description = 火力発電機より効率的ですが、水が必要です。 -block.thermal-generator.description = 溶岩からたくさんの電力を発電します。 -block.solar-panel.description = 太陽光から少ない電力を供給します。 -block.solar-panel-large.description = 通常のソーラーパネルよりたくさんの電力を供給しますが、建設費が高価です。 +block.thermal-generator.description = 溶岩から大量の電力を発電します。 +block.solar-panel.description = 太陽光から少量の電力を発電します。 +block.solar-panel-large.description = 通常のソーラーパネルより大量の電力を発電できますが、建設費が高価です。 block.thorium-reactor.description = 高放射性のトリウムから大量の電力を発電します。これには一定の冷却が必要です。冷却が不十分な場合大きな爆発が発生します。 block.rtg-generator.description = トリウムリアクターよりも発電量は少ないですが、冷却を必要としない放射性同位体熱発電機(RTG)です。 block.unloader.description = コンテナやボールト、コアからアイテムをコンベアーか隣接するブロックに搬出します。アンローダーをタップすると搬出するアイテムを変更することができます。 @@ -737,15 +734,15 @@ block.vault.description = 各種類のアイテムを大量に保管します。 block.mechanical-drill.description = 安価なドリルです。採掘可能な鉱脈に設置すると、アイテムを採掘して搬出します。 block.pneumatic-drill.description = 速く採掘できるように改善されたドリルです。また、より硬い鉱石も採掘することができます。 block.laser-drill.description = 電力を使用して、レーザー技術でより速く採掘することができます。また、このドリルで放射性トリウムを回収することができます。 -block.blast-drill.description = 究極のドリルです。大量の電力が必要です。 +block.blast-drill.description = 高級ドリルです。大量の電力が必要です。 block.water-extractor.description = 地面から水を汲み上げます。近くに湖がない場合に便利です。 -block.cultivator.description = 水で土壌を耕して、バイオメーターを回収します。 +block.cultivator.description = 水で土壌を耕して、バイオメターを回収します。 block.oil-extractor.description = 大量の電力を使用して、砂から石油を回収します。近くに油田がない場合に便利です。 -block.dart-ship-pad.description = 今使っている機体から一般的な戦闘機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 +block.dart-ship-pad.description =  今使っている機体から一般的な戦闘機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.trident-ship-pad.description = 今使っている機体から武装した爆撃機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.javelin-ship-pad.description = 今使っている機体から速くて強い電撃を放つ要撃機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.glaive-ship-pad.description = 今使っている機体から大きく、重武装された攻撃機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 -block.tau-mech-pad.description =今使っている機体から仲間の建物やユニットを修復する支援型機体に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 +block.tau-mech-pad.description = 今使っている機体から仲間の建物やユニットを修復する支援型機体に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.delta-mech-pad.description = 今使っている機体から速く突撃攻撃に向いた軽装備の戦闘機に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.omega-mech-pad.description = 今使っている機体から最前線での戦いに向けた重装備の大型機体に乗り換えます。\nパッドに乗って、パッドをダブルタップすることで使用できます。 block.spirit-factory.description = 鉱石の採掘やブロックの修復を行う軽いドローンを製造します。 @@ -767,7 +764,7 @@ block.liquid-junction.description = 交差している2つのコンベアーを block.bridge-conduit.description = 高度な液体輸送ブロックです。地形や建物を超えて、3ブロック離れた場所に輸送することができます。 block.mechanical-pump.description = 安価で性能の低いポンプです。電力が必要ありません。 block.rotary-pump.description = 強化されたポンプです。電力を使用して2倍速く搬出します。 -block.thermal-pump.description = 究極のポンプです。機械ポンプより3倍速く、唯一溶岩を採取できるポンプです。 +block.thermal-pump.description = 高級ポンプです。機械ポンプより3倍速く、唯一溶岩を採取できるポンプです。 block.router.description = 一つの方向から受け取ったアイテムを他の3方向に搬出します。一つの資源から複数に分ける際に便利です。 block.distributor.description = 高度なルーターです。アイテムを7方向に均等に分けて搬出します。 block.bridge-conveyor.description = 高度な輸送ブロックです。地形や建物を超えて、3ブロック離れた場所に輸送することができます。 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 2f4d1c04ec..402732502c 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -1,782 +1,779 @@ -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.discord = Mindustry Discord 에 참여하세요! -text.link.discord.description = 공식 Mindustry Discord 채팅방 -text.link.github.description = 게임 소스코드 -text.link.dev-builds.description = 개발중인 빌드 -text.link.trello.description = 다음 출시될 기능들을 게시한 공식 Trello 보드 -text.link.itch.io.description = PC 버전 다운로드와 HTML5 버전이 있는 itch.io 사이트 -text.link.google-play.description = Google Play 스토어 정보 -text.link.wiki.description = 공식 Mindustry 위키 (영어) -text.linkfail = 링크를 여는데 실패했습니다! URL이 기기의 클립보드에 복사되었습니다. -text.editor.web = HTML5 버전은 에디터 기능을 지원하지 않습니다! 게임을 다운로드 한 뒤에 사용 해 주세요. -text.web.unsupported = HTML5 버전은 이 기능을 지원하지 않습니다! 게임을 다운로드 한 뒤에 사용 해 주세요. -text.gameover = 코어가 터졌습니다. 게임 오버! -text.gameover.pvp = [accent]{0}[] 팀이 승리했습니다! -text.sector.gameover = 이 구역을 공략하는데 실패했습니다. 포기 하시겠습니까? -text.sector.retry = 아니오 -text.highscore = [YELLOW]최고점수 달성! -text.wave.lasted = [accent]{0}[] 까지 버티셨습니다. -text.level.highscore = 최고 점수 : [accent]{0} -text.level.delete.title = 삭제 확인 -text.map.delete = 정말로 "[orange]{0}[]" 맵을 삭제하시겠습니까? -text.level.select = 맵 선택 -text.level.mode = 게임모드 : -text.construction.desktop = PC 에서의 조작 방법이 변경되었습니다.\n블록 선택을 해제하거나 건설을 중지하려면 [accent]스페이스 바[]를 누르세요. -text.construction.title = 블록 배치 안내서 -text.construction = [accent]블록 배치 모드[]를 선택하셨습니다.\n\n블록을 설치하고 싶으면, 자신의 건설 가능 범위 내에서 간단히 탭 하면 됩니다.\n일부 블록을 선택한 후에 확인 버튼을 누르면 배가 배치 작업을 진행할 것입니다.\n\n- [accent]블록을 삭제[]하고 싶다면 배치하고 싶은 영역을 탭 하세요. \n- [accent]블록을 넓게 배치[]하고 싶다면 배치하고 싶은 시작 영역을 길게 누르며 드래그 하면 됩니다.\n- [accent]블록을 한줄로 배치[]하고 싶다면 배치하고 싶은 시작 영역을 한번 탭 하고 길게 누르면서 드래그 하면 됩니다. \n- [accent]블록 배치 모드를 취소[]하고 싶다면 화면 하단 왼쪽에 있는 X 버튼을 누르면 됩니다. -text.deconstruction.title = 블록 삭제 안내서 -text.deconstruction = [accent]블록 삭제 모드[]를 선택하셨습니다\n\n블록을 삭제하고 싶다면, 자신의 건설 가능 범위 내에서 간단히 탭 하면 됩니다.\n일부 블록을 선택한 후에 확인 버튼을 누르면 배가 파괴 작업을 진행할 것입니다.\n\n- [accent]블록을 삭제[]하고 싶다면 배치하고 싶은 영역을 탭 하세요\n- [accent]블록을 넓은 범위로 삭제[]하고 싶다면 배치하고 싶은 시작 영역을 길게 누르며 드래그 하면 됩니다.\n- [accent]블록 삭제 모드를 취소[]하고 싶다면 화면 하단 왼쪽에 있는 X 버튼을 누르면 됩니다. -text.showagain = 다음 세션에서 이 메세지를 표시하지 않습니다 -text.coreattack = < 코어가 공격받고 있습니다! > -text.unlocks = 아이템들 -text.savegame = 게임 저장 -text.loadgame = 게임 불러오기 -text.joingame = 멀티플레이 -text.addplayers = 플레이어 추가/제거 -text.customgame = 커스텀 게임 -text.sectors = 싱글 플레이 -text.sector = 구역 : [LIGHT_GRAY]{0} -text.sector.time = 시간 : [LIGHT_GRAY]{0} -text.sector.deploy = 시작 -text.sector.abandon = 초기화 -text.sector.abandon.confirm = 정말로 이 구역의 모든 진행상활을 초기화 하겠습니까?\n이 작업은 되돌릴 수 없습니다! -text.sector.resume = 계속하기 -text.sector.locked = [scarlet][[완료안됨] -text.sector.unexplored = [accent][[탐색안됨] -text.missions = 목표 : [LIGHT_GRAY] {0} -text.mission = 목표 : [LIGHT_GRAY] {0} -text.mission.main = 주요 목표 : [LIGHT_GRAY]{0} -text.mission.info = 미션 정보 -text.mission.complete = 미션 성공! -text.mission.complete.body = 구역 {0},{1} 클리어. -text.mission.wave = [accent]{0}/{1}[] 단계동안 생존하세요.남은 시간 {2}\n -text.mission.wave.enemies = [accent] {0}/{1} []단계를 생존하세요.\n{2}마리 남음 -text.mission.wave.enemy = [accent] {0}/{1} []단계를 생존하세요.\n{2}마리 남음 -text.mission.wave.menu = [accent]{0}[] 단계 -text.mission.battle = 적 코어를 파괴하세요. -text.mission.resource.menu = {0} {1}개 수집 -text.mission.resource = {0} 자원을 수집하세요 :\n[accent]{1}/{2}[] -text.mission.block = {0} 를 만드세요 -text.mission.unit = {0} 유닛을 만드세요 -text.mission.command = 유닛에게 {0} 명령을 보내세요 -text.mission.linknode = 전력 노드를 연결하세요. -text.mission.display = [accent]미션 :\n[LIGHT_GRAY]{0} -text.mission.mech = [accent]{0}[] 기체로 바꾸세요 -text.mission.create = [accent]{0}[] 자원을 만드세요 -text.none = <없음> -text.close = 닫기 -text.quit = 나가기 -text.maps = 맵 -text.continue = 계속하기 -text.nextmission = 다음 임무 -text.maps.none = [LIGHT_GRAY]맵을 찾을 수 없습니다! -text.about.button = 정보 -text.name = 이름 : -text.filename = 파일 이름 : -text.unlocked = 새 블록 잠금 해제됨 -text.unlocked.plural = 잠금 해제 -text.players = 현재 {0}명 접속중 -text.players.single = 현재 {0}명만 있음. -text.server.closing = [accent]서버 닫는중... -text.server.kicked.kick = 서버에서 추방되었습니다! -text.server.kicked.serverClose = 서버 종료됨. -text.server.kicked.sectorComplete = 구역 클리어. -text.server.kicked.sectorComplete.text = 임무 성공.\n서버가 다음구역 맵으로 이동되었습니다. -text.server.kicked.clientOutdated = 오래된 버전의 클라이언트 입니다! 게임을 업데이트 하세요! -text.server.kicked.serverOutdated = 오래된 버전의 서버입니다! 서버 호스트 관리자에게 문의하세요! -text.server.kicked.banned = 뭘 하셨는지는 모르겠지만, 이제 영원히 서버에 접속할 수 없습니다. -text.server.kicked.recentKick = 방금 추방처리 되었습니다. 잠시 기다린 후에 접속 해 주세요. -text.server.kicked.nameInUse = 이 닉네임이 이미 서버에서 사용중입니다. -text.server.kicked.nameEmpty = 닉네임에는 반드시 영어 또는 숫자가 있어야 합니다. -text.server.kicked.idInUse = 이미 서버에 접속중입니다! 다중 계정은 허용되지 않습니다. -text.server.kicked.customClient = 이 서버는 직접 빌드한 버전을 지원하지 않습니다. 공식 버전을 사용하세요. -text.host.info = [accent]호스트[] 버튼은 현재 네트워크의 [scarlet]6567[] 포트를 사용합니다.\n[LIGHY_GRAY]같은 Wi-Fi 또는 로컬 네트워크[] 에서 서버 목록을 볼 수 있습니다.\n\n만약 플레이어들이 이 IP를 통해 어디에서나 연결할 수 있게 하고 싶다면, 공유기 설정에서 [accent]포트 포워딩[]을 해야 합니다.\n\n[LIGHT_GRAY]참고 : LAN 게임 연결에 문제가 있는 사람이 있다면, 방화벽 설정에서 Mindustry 가 로컬 네트워크에 액세스하도록 허용했는지 확인 해 주세요. -text.join.info = 여기서 [accent]서버 IP[]를 입력하여 다른 서버에 접속할 수 있습니다.\n또는 [accent]로컬 네트워크(LAN)[] 서버를 검색하여 접속할 수 있습니다.\nLAN 및 WAN 멀티 플레이어 모두 지원됩니다.\n\n[LIGHT_GRAY]참고:여기에서는 자동으로 글로벌 서버를 추가하지 않습니다. IP로 다른 사람의 서버에 접속할려면 서버장에게 IP를 요청해야 합니다. -text.hostserver = 서버 열기 -text.hostserver.mobile = 서버\n열기 -text.host = 서버 열기 -text.hosting = [accent]서버 여는중... -text.hosts.refresh = 새로고침 -text.hosts.discovering = LAN 게임 찾기 -text.server.refreshing = 서버 목록 새로고치는중... -text.hosts.none = [lightgray]LAN 게임을 찾을 수 없습니다! -text.host.invalid = [scarlet]서버에 연결할 수 없습니다! -text.trace = 플레이어 정보 보기 -text.trace.playername = 이름 : [accent]{0} -text.trace.ip = IP : [accent]{0} -text.trace.id = 고유 ID : [accent]{0} -text.trace.android = Android 클라이언트 : [accent]{0} -text.trace.modclient = 수정된 클라이언트 : [accent]{0} -text.trace.totalblocksbroken = 총 블록 파괴 개수 : [accent]{0} -text.trace.structureblocksbroken = 구조 블록 파괴 수 : [accent]{0} -text.trace.lastblockbroken = 마지막으로 파괴한 블록 : [accent]{0} -text.trace.totalblocksplaced = 총 설치한 블록 개수 : [accent]{0} -text.trace.lastblockplaced = 마지막으로 설치한 블록 : [accent]{0} -text.invalidid = 잘못된 클라이언트 ID 입니다! 공식 Mindustry Discord 으로 버그 보고서를 제출 해 주세요. -text.server.bans = 차단된 유저 -text.server.bans.none = 차단된 플레이어가 없습니다. -text.server.admins = 관리자 -text.server.admins.none = 관리자가 없습니다! -text.server.add = 서버 추가 -text.server.delete = 이 서버를 삭제 하시겠습니까? -text.server.hostname = 호스트 : {0} -text.server.edit = 서버 수정 -text.server.outdated = [crimson]서버 버전이 낮습니다![] -text.server.outdated.client = [Crimson]클라이언트 버전이 낮습니다![] -text.server.version = [lightgray]서버 버전 : {0} -text.server.custombuild = [yellow]커스텀 서버 -text.confirmban = 이 플레이어를 차단하시겠습니까? -text.confirmkick = 정말로 이 플레이어를 추방시키겠습니까? -text.confirmunban = 이 플레이어를 차단해제 하시겠습니까? -text.confirmadmin = 이 플레이어를 관리자로 만들겠습니까? -text.confirmunadmin = 이 플레이어를 일반 유저로 만들겠습니까? -text.joingame.title = 게임 참가 -text.joingame.ip = IP : -text.disconnect = 서버와 연결이 해제되었습니다. -text.disconnect.data = 맵 데이터를 받아오는데 실패했습니다. -text.connecting = [accent]연결중... -text.connecting.data = [accent]맵 데이터 다운로드중... -text.server.port = 포트 : -text.server.addressinuse = 이 주소는 이미 사용중입니다! -text.server.invalidport = 포트 번호가 잘못되었습니다. -text.server.error = [crimson]{0}[orange]서버를 여는데 오류가 발생했습니다.[] -text.save.old = 이 저장파일은 이전 버전의 게임용이며, 지금은 사용할 수 없습니다. \n\n[LIGHT_GRAY]4.0 정식때 이전 게임버전에서 만든 저장파일과 호환됩니다. -text.save.new = 새로 저장 -text.save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까? -text.overwrite = 덮어쓰기 -text.save.none = 저장 파일을 찾지 못했습니다! -text.saveload = [accent]저장중... -text.savefail = 게임을 저장하지 못했습니다! -text.save.delete.confirm = 이 저장파일을 삭제 하시겠습니까? -text.save.delete = 삭제 -text.save.export = 저장파일 내보내기 -text.save.import.invalid = [orange]파일이 잘못되었습니다! -text.save.import.fail = [crimson]저장파일을 불러오지 못함 : [orange]{0} -text.save.export.fail = [crimson]저장파일을 내보내지 못함 : [orange]{0} -text.save.import = 저장파일 불러오기 -text.save.newslot = 저장 파일이름 : -text.save.rename = 이름 변경 -text.save.rename.text = 새 이름 : -text.selectslot = 저장슬롯을 선택하십시오. -text.slot = [accent]{0}번째 슬롯 -text.save.corrupted = [orange]세이브 파일이 손상되었거나 잘못된 파일입니다! 만약 게임을 업데이트 했다면 이것은 아마 저장 형식 변경일 것이고, 이것은 버그가 [scarlet]아닙니다[]. -text.sector.corrupted = [orange]저장 파일에서 구역을 발견했으나 불러오지 못했습니다.\n새로 생성되었습니다. -text.empty = <비어있음> -text.on = 켜기 -text.off = 끄기 -text.save.autosave = 자동저장 : {0} -text.save.map = 맵 : {0} -text.save.wave = {0}단계[] -text.save.difficulty = 난이도 : {0} -text.save.date = 마지막 저장날짜 : {0} -text.save.playtime = 플레이시간 : {0} -text.confirm = 확인 -text.delete = 삭제 -text.ok = 확인 -text.open = 열기 -text.cancel = 취소 -text.openlink = 링크 열기 -text.copylink = 링크 복사 -text.back = 뒤로가기 -text.quit.confirm = 정말로 종료하시겠습니까? -text.changelog.title = 변경사항 -text.changelog.loading = 변경사항 가져오는중... -text.changelog.error.android = [orange]게임 변경사항은 가끔 Android 4.4 이하에서 작동하지 않습니다. 이것은 내부 Android 버그 때문입니다. -text.changelog.error.ios = [orange]현재 iOS에서는 변경 사항을 지원하지 않습니다. -text.changelog.error = [scarlet]게임 변경사항을 가져오는 중 오류가 발생했습니다![]\n인터넷 연결을 확인하십시오. -text.changelog.current = [orange][[현재 버전] -text.changelog.latest = [orange][[최신 버전] -text.loading = [accent]불러오는중... -text.saving = [accent]저장중... -text.wave = [orange]{0}단계 -text.wave.waiting = 다음 단계 시작까지 {0}초 -text.waiting = [LIGHT_GRAY]대기중... -text.waiting.players = 다른 플레이어를 기다리는 중.. -text.wave.enemies = [LIGHT_GRAY]{0} 마리 남았음 -text.wave.enemy = [LIGHT_GRAY]{0} 마리 남음 -text.loadimage = 사진 불러오기 -text.saveimage = 사진 저장 -text.unknown = 알 수 없음 -text.custom = 커스텀 -text.builtin = 기본맵 -text.map.delete.confirm = 이 맵을 삭제하시겠습니까? 이 명령은 취소할 수 없습니다! -text.map.random = [accent]랜덤 맵 -text.map.nospawn = 이 맵에 플레이어가 스폰 할 코어가 없습니다! 맵 편집기에서 [ROYAL]파란색[]코어를 맵에 추가하세요. -text.map.nospawn.pvp = 이 맵에는 적팀 코어가 없습니다! 에디터에서 [scarlet]빨간팀[] 코어를 추가하세요. -text.map.invalid = 파일이 잘못되었거나 손상되어 맵을 열 수 없습니다. -text.editor.brush = 브러쉬 -text.editor.slope = \\ -text.editor.openin = 편집기 열기 -text.editor.oregen = 광물 무작위 생성 -text.editor.oregen.info = 광물 무작위 생성 : -text.editor.mapinfo = 맵 정보 -text.editor.author = 만든이 : -text.editor.description = 설명 : -text.editor.name = 이름 : -text.editor.teams = 팀 -text.editor.elevation = 지형 높이 -text.editor.errorimageload = [orange]{0}[] 파일을 불러오는데 오류가 발생했습니다. -text.editor.errorimagesave = [orange]{0}[] 파일 저장중 오류가 발생했습니다. -text.editor.generate = 생성 -text.editor.resize = 맵 크기조정 -text.editor.loadmap = 맵 불러오기 -text.editor.savemap = 맵 저장 -text.editor.saved = 저장됨! -text.editor.save.noname = 지도에 이름이 없습니다! 메뉴 -> '맵 정보' 에서 설정하세요. -text.editor.save.overwrite = 이 맵의 이름은 기존에 있던 맵을 덮어씁니다! '맵 정보' 메뉴에서 다른 이름을 선택하세요. -text.editor.import.exists = [scarlet]맵을 불러올 수 없음 : [] 기존에 있던 '{0}' 맵이 이미 존재합니다! -text.editor.import = 가져오기 -text.editor.importmap = 맵 가져오기 -text.editor.importmap.description = 이미 존재하는 맵 가져오기 -text.editor.importfile = 파일 가져오기 -text.editor.importfile.description = 외부 맵 파일 가져오기 -text.editor.importimage = 지형 사진 가져오기 -text.editor.importimage.description = 외부 맵 이미지 파일 가져오기 -text.editor.export = 내보내기 -text.editor.exportfile = 파일 내보내기 -text.editor.exportfile.description = 맵 파일 내보내기 -text.editor.exportimage = 지형 이미지 내보내기 -text.editor.exportimage.description = 맵 이미지 파일 내보내기 -text.editor.loadimage = 지형 가져오기 -text.editor.saveimage = 지형 내보내기 -text.editor.unsaved = [scarlet]변경사항을 저장하지 않았습니다![]\n정말로 나가시겠습니까? -text.editor.resizemap = 맵 크기 조정 -text.editor.mapname = 맵 이름 : -text.editor.overwrite = [accept]경고!이 명령은 기존 맵을 덮어씌우게 됩니다. -text.editor.overwrite.confirm = [scarlet]경고![] 이 이름을 가진 맵이 이미 있습니다. 덮어 쓰시겠습니까? -text.editor.selectmap = 불러올 맵 선택 : -text.width = 넓이 : -text.height = 높이 : -text.menu = 메뉴 -text.play = 플레이 -text.load = 불러오기 -text.save = 저장 -text.fps = {0}FPS -text.tps = {0}TPS -text.ping = ping : {0}ms -text.language.restart = 언어를 변경하려면 게임을 다시시작 해 주세요. -text.settings = 설정 -text.tutorial = 게임 방법 -text.editor = 편집기 -text.mapeditor = 맵 편집기 -text.donate = 기부 -text.connectfail = [crimson]{0}[orange] 서버에 연결하지 못했습니다.[] -text.error.unreachable = 서버에 연결하지 못했습니다. -text.error.invalidaddress = 잘못된 주소입니다. -text.error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오. -text.error.mismatch = 패킷 오류:\n클라이언트/서버 버전이 일치하지 않습니다.\n접속할려는 서버가 최신 버전의 Mindustry 인지 확인하세요! -text.error.alreadyconnected = 이미 접속중입니다. -text.error.mapnotfound = 맵 파일을 찾을 수 없습니다! -text.error.any = 알 수 없는 네트워크 오류. -text.settings.language = 언어 -text.settings.reset = 설정 초기화 -text.settings.rebind = 키 재설정 -text.settings.controls = 컨트롤 -text.settings.game = 게임 -text.settings.sound = 소리 -text.settings.graphics = 화면 -text.settings.cleardata = 게임 데이터 초기화... -text.settings.clear.confirm = 정말로 초기화 하겠습니까?\n이 작업을 되돌릴 수 없습니다! -text.settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다. -text.settings.clearsectors = 구역 초기화 -text.settings.clearunlocks = 잠금 해제 초기화 -text.settings.clearall = 모두 초기화 -text.paused = 일시 정지 -text.yes = 예 -text.no = 아니오 -text.info.title = [accent]정보 -text.error.title = [crimson]오류가 발생했습니다. -text.error.crashtitle = 오류가 발생했습니다. -text.blocks.blockinfo = 블록 정보 -text.blocks.powercapacity = 최대 전력 용량 -text.blocks.powershot = 1발당 전력 소모량 -text.blocks.targetsair = 공중공격 가능 -text.blocks.itemspeed = 유닛 이동 속도 -text.blocks.shootrange = 사거리 -text.blocks.size = 블록 크기 -text.blocks.liquidcapacity = 최대 액체 용량 -text.blocks.maxitemssecond = 최대 아이템 보관량 -text.blocks.powerrange = 전력 범위 -text.blocks.poweruse = 전력 사용 -text.blocks.powerdamage = 전력/데미지 -text.blocks.inputitemcapacity = 입력 아이템 용량 -text.blocks.outputitemcapacity = 출력 아이템 용량 -text.blocks.itemcapacity = 저장 용량 -text.blocks.basepowergeneration = 기지 전력 생성기 -text.blocks.powertransferspeed = 전력 전송량 -text.blocks.craftspeed = 생산 속도 -text.blocks.inputliquid = 사용되는 액체 -text.blocks.inputliquidaux = 보조 액체 -text.blocks.inputitem = 사용되는 아이템 -text.blocks.inputitems = 사용되는 아이템들 -text.blocks.outputitem = 출력 아이템 -text.blocks.drilltier = 드릴 -text.blocks.drillspeed = 기본 드릴 속도 -text.blocks.liquidoutput = 액체 출력 -text.blocks.liquidoutputspeed = 액체 출력속도 -text.blocks.liquiduse = 액체 사용량 -text.blocks.coolant = 냉각제 -text.blocks.coolantuse = 냉각수 사용 -text.blocks.inputliquidfuel = 연료 액 -text.blocks.liquidfueluse = 액체 연료 사용 -text.blocks.explosive = 이 블록이 터지면 주변 블록과 같이 자폭을 합니다!! -text.blocks.health = 체력 -text.blocks.inaccuracy = 오차각 -text.blocks.shots = 발포 횟수 -text.blocks.reload = 재장전 -text.blocks.inputfuel = 연료 -text.blocks.fuelburntime = 연료 연소 시간 -text.blocks.inputcapacity = 입력 용량 -text.blocks.outputcapacity = 출력 용량 -text.unit.blocks = 블록 -text.unit.powersecond = 전력/초 -text.unit.liquidsecond = 액체/초 -text.unit.itemssecond = 개/초 -text.unit.pixelssecond = 초당 픽셀 -text.unit.liquidunits = 액체 -text.unit.powerunits = 전력 -text.unit.degrees = 도 -text.unit.seconds = 초 -text.unit.items = 아이템 -text.category.general = 일반 -text.category.power = 전력 -text.category.liquids = 액체 -text.category.items = 아이템 -text.category.crafting = 제작 -text.category.shooting = 사격 -setting.autotarget.name = 자동 조준 -setting.fpscap.name = 최대 FPS -setting.fpscap.none = 없음 -setting.fpscap.text = {0} FPS -setting.difficulty.training = 훈련 -setting.difficulty.easy = 쉬움 -setting.difficulty.normal = 보통 -setting.difficulty.hard = 어려움 -setting.difficulty.insane = 매우 어려움 -setting.difficulty.name = 난이도 : -setting.screenshake.name = 화면 흔들기 -setting.effects.name = 화면 효과 -setting.sensitivity.name = 컨트롤러 감도 -setting.saveinterval.name = 자동저장 간격 -setting.seconds = {0}초 -setting.fullscreen.name = 전체 화면 -setting.multithread.name = 멀티 스레드 -setting.fps.name = FPS 표시 -setting.vsync.name = VSync 활성화 -setting.lasers.name = 파워 레이져 표시 -setting.minimap.name = 미니맵 보기 -setting.musicvol.name = 음악 크기 -setting.mutemusic.name = 음소거 -setting.sfxvol.name = 효과음 크기 -setting.mutesound.name = 소리 끄기 -setting.crashreport.name = 오류 보고서 보내기 -text.keybind.title = 키 바인딩 -category.general.name = 일반 -category.view.name = 보기 -category.multiplayer.name = 멀티플레이 -command.attack = 공격 -command.retreat = 후퇴 -command.patrol = 순찰 -keybind.press = 키를 누르세요... -keybind.press.axis = 축 또는 키를 누르세요... -keybind.move_x.name = 오른쪽/왼쪽 이동 -keybind.move_y.name = 위쪽/아래쪽 이동 -keybind.select.name = 선택 -keybind.break.name = 파괴 -keybind.deselect.name = 선택해제 -keybind.shoot.name = 사격 -keybind.zoom_hold.name = 길게눌러 확대 -keybind.zoom.name = 확대 -keybind.menu.name = 메뉴 -keybind.pause.name = 일시중지 -keybind.dash.name = 달리기 -keybind.chat.name = 채팅 -keybind.player_list.name = 플레이어 목록 -keybind.console.name = 콘솔 -keybind.rotate.name = 회전 -keybind.toggle_menus.name = 메뉴 보이기/숨기기 -keybind.chat_history_prev.name = 이전 채팅기록 -keybind.chat_history_next.name = 다음 채팅기록 -keybind.chat_scroll.name = 채팅 스크롤 -keybind.drop_unit.name = 유닛 드롭 -keybind.zoom_minimap.name = 미니맵 확대 -mode.text.help.title = 도움말 -mode.waves.name = 단계 -mode.waves.description = 이것은 일반 모드입니다. 제한된 자원과 자동으로 다음 단계가 시작됩니다. -mode.sandbox.name = 샌드박스 -mode.sandbox.description = 무한한 자원과 다음단계 시작을 위한 타이머가 없습니다. -mode.custom.warning = [scarlet]서버에서 잠금해제한 블록은 저장되지 않습니다.[]\n\n구역을 플레이 하여 잠금해제하세요. -mode.custom.warning.read = 꼭 읽어보시길 바랍니다 :\n[scarlet]커스텀 게임에서 잠금해제한 블록은 구역 플레이나 다른 모드에서 적용되지 않습니다!\n\n[LIGHT_GRAY](이게 필요하지 않았으면 좋겠는데) -mode.freebuild.name = 자유 건축 -mode.freebuild.description = 제한된 자원과 다음단계 시작을 위한 타이머가 없습니다. -mode.pvp.name = PvP -mode.pvp.description = 몹이 아닌 실제 플레이어와 PvP를 합니다. -content.item.name = 아이템 -content.liquid.name = 액체 -content.unit.name = 유닛 -content.recipe.name = 블록 -content.mech.name = 기체 -item.stone.name = 돌 -item.stone.description = 주로 용암을 사용하여 얻을 수 있는 자원입니다. -item.copper.name = 구리 -item.copper.description = 모든 유형의 블록에서 광범위하게 사용되는 자원입니다. -item.lead.name = 납 -item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다. -item.coal.name = 석탄 -item.coal.description = 쉽게 구할 수 있으며, 주로 제련소 등에서 연료로 사용됩니다. -item.dense-alloy.name = 합금 -item.dense-alloy.description = 납과 구리로 만든 튼튼한 합금.\n고급 수송 블록이나 상위 티어 블록을 건설하는데 사용됩니다. -item.titanium.name = 티타늄 -item.titanium.description = 파이프 재료나 고급 드릴, 비행기/기체 등에서 재료로 사용되는 자원입니다. -item.thorium.name = 토륨 -item.thorium.description = 건물의 재료, 포탑의 탄약 또는 핵연료로 사용되는 방사성 금속입니다. -item.silicon.name = 실리콘 -item.silicon.description = 매우 유용한 반도체로, 태양 전지판과 복잡한 전자 제품에 사용할 수 있습니다. -item.plastanium.name = 플라스터늄 -item.plastanium.description = 고급 항공기 및 분열 탄약에 사용되는 가벼운 연성 재료. -item.phase-fabric.name = 메타 -item.phase-fabric.description = 최첨단 전자 제품과 자기수리 기술에 사용되는 거의 무중력에 가까운 물질입니다. -item.surge-alloy.name = 설금 -item.surge-alloy.description = 주로 건물의 재료로 사용되는 자원입니다 -item.biomatter.name = 바이오메터 -item.biomatter.description = 이것은 유기농 덤불입니다!\n압축기에 넣어 석유로 바꿀 수 있습니다. -item.sand.name = 모래 -item.sand.description = 합금이나 플럭스 등에서 제련시 광범위하게 사용되는 일반적인 재료입니다. -item.blast-compound.name = 화합물 -item.blast-compound.description = 포탑 및 건설의 재료로 사용되는 휘발성 화합물.\n연료로도 사용할 수 있지만, 별로 추천하지는 않습니다. -item.pyratite.name = 피라테 -item.pyratite.description = 폭발성을 가진 재료로, 주로 포탑의 탄약으로 사용됩니다. -liquid.water.name = 물 -liquid.lava.name = 용암 -liquid.oil.name = 석유 -liquid.cryofluid.name = 냉각수 -mech.alpha-mech.name = 알파 -mech.alpha-mech.weapon = 중무장 소총 -mech.alpha-mech.ability = 드론 소환 -mech.alpha-mech.description = 표준 기체.\n적절한 속도와 공격력을 갖추고 있으며, 공격 능력을 높이기 위해 최대 3대의 드론을 만들 수 있습니다. -mech.delta-mech.name = 델타 -mech.delta-mech.weapon = 전격 생산기 -mech.delta-mech.ability = 충전 -mech.delta-mech.description = 빠르게 이동하는 적을 처치하기 위한 가벼운 기체.\n구조물에는 거의 피해를 주지 않지만, 전격 무기를 사용하여 많은 적군을 매우 빠르게 죽일 수 있습니다. -mech.tau-mech.name = 타우 -mech.tau-mech.weapon = 건물 수리총 -mech.tau-mech.ability = 유닛 치료 -mech.tau-mech.description = 지원형 기체.\n총을 발사하여 건물을 치료하고 회복 능력 사용으로 화재를 진압하거나, 반경 내 아군을 치유시킵니다. -mech.omega-mech.name = 오메가 -mech.omega-mech.weapon = 전방 유도미사일 -mech.omega-mech.ability = 방어모드 -mech.omega-mech.description = 지상 기체 최종판이자 건물 파괴용으로 적합한 부피가 크고 튼튼한 기체. 방어 모드는 최대 90% 의 피해를 줄일 수 있습니다. -mech.dart-ship.name = 다트 -mech.dart-ship.weapon = 소총 -mech.dart-ship.description = 표준 비행선. 빠르고 가볍지만 공격력이 거의 없고 채광 속도가 느립니다. -mech.javelin-ship.name = 자비린 -mech.javelin-ship.description = 치고 빠지는 공격을 위한 비행선. 처음에는 느리지만, 가속도가 붙어 엄청난 속도로 미사일 피해를 입힐 수 있으며, 전격 능력을 사용할 수 있습니다. -mech.javelin-ship.weapon = 유도 미사일 -mech.javelin-ship.ability = 가속 전격 생성기 -mech.trident-ship.name = 삼지창 -mech.trident-ship.description = 대형 공중 폭격기. 당연하게도 엄청 단단합니다. -mech.trident-ship.weapon = 폭탄 저장고 -mech.glaive-ship.name = 글레브 -mech.glaive-ship.description = 크고 잘 무장된 총을 가진 비행선. 방화용 리피터가 장착되어 있으며, 가속도와 최대속도가 높습니다. -mech.glaive-ship.weapon = 방화총 -text.item.explosiveness = [LIGHT_GRAY]폭발력 : {0} -text.item.flammability = [LIGHT_GRAY]인화성 : {0} -text.item.radioactivity = [LIGHT_GRAY]방사능 : {0} -text.item.fluxiness = [LIGHT_GRAY]플럭스 파워 : {0} -text.unit.health = [LIGHT_GRAY]체력 : {0} -text.unit.speed = [LIGHT_GRAY]속도 : {0} -text.mech.weapon = [LIGHT_GRAY]무기 : {0} -text.mech.armor = [LIGHT_GRAY]방어력 : {0} -text.mech.itemcapacity = [LIGHT_GRAY]아이템 수용 용량 : {0} -text.mech.minespeed = [LIGHT_GRAY]채광 속도 : {0} -text.mech.minepower = [LIGHT_GRAY]채광 레벨 : {0} -text.mech.ability = [LIGHT_GRAY]능력 : {0} -text.liquid.heatcapacity = [LIGHT_GRAY]발열량 : {0} -text.liquid.viscosity = [LIGHT_GRAY]점도 : {0} -text.liquid.temperature = [LIGHT_GRAY]온도 : {0} -block.spawn.name = 적 스폰지점 -block.core.name = 코어 -block.metalfloor.name = 철판 -block.deepwater.name = 깊은물 -block.water.name = 물 -block.lava.name = 용암 -block.tar.name = 타르 -block.blackstone.name = 검은돌 -block.stone.name = 돌 -block.dirt.name = 흙 -block.sand.name = 모래 -block.ice.name = 얼음 -block.snow.name = 눈 -block.grass.name = 잔디 -block.shrub.name = 관목 -block.rock.name = 바위 -block.blackrock.name = 검은바위 -block.icerock.name = 얼음바위 -block.copper-wall.name = 구리벽 -block.copper-wall-large.name = 큰 구리벽 -block.dense-alloy-wall.name = 합금 벽 -block.dense-alloy-wall-large.name = 큰 합금 벽 -block.phase-wall.name = 메타벽 -block.phase-wall-large.name = 큰 메타벽 -block.thorium-wall.name = 토륨벽 -block.thorium-wall-large.name = 대형 토륨벽 -block.door.name = 문 -block.door-large.name = 대형문 -block.duo.name = 듀오 -block.scorch.name = 스코치 -block.hail.name = 헤일 -block.lancer.name = 랜서 -block.conveyor.name = 컨베이어 -block.titanium-conveyor.name = 티타늄 컨베이어 -block.junction.name = 교차기 -block.router.name = 분배기 -block.distributor.name = 대형 분배기 -block.sorter.name = 필터 -block.sorter.description = 아이템을 넣어서 필터에 설정된 아이템일 경우 바로 앞으로 통과하며, 그렇지 않을 경우 옆으로 통과합니다. -block.overflow-gate.name = 오버플로 게이트 -block.overflow-gate.description = 정면으로 가는 자원이 막히면 옆으로 출력하고, 그렇지 않으면 계속 정면으로 출력합니다. -block.smelter.name = 제련소 -block.arc-smelter.name = 대형 제련소 -block.silicon-smelter.name = 실리콘 제련소 -block.phase-weaver.name = 메타 합성기 -block.pulverizer.name = 분쇄기 -block.cryofluidmixer.name = 냉각수 제조기 -block.melter.name = 융해기 -block.incinerator.name = 소각로 -block.biomattercompressor.name = 바이오메터 압축기 -block.separator.name = 셉터 -block.centrifuge.name = 원심 분리기 -block.power-node.name = 전력 송신기 -block.power-node-large.name = 대형 전력 송신기 -block.battery.name = 배터리 -block.battery-large.name = 대형 배터리 -block.combustion-generator.name = 석탄 발전기 -block.turbine-generator.name = 터빈 발전기 -block.mechanical-drill.name = 기계식 드릴 -block.pneumatic-drill.name = 강철 드릴 -block.laser-drill.name = 레이저 드릴 -block.water-extractor.name = 물 추출기 -block.cultivator.name = 온실 -block.alpha-mech-pad.name = 알파 기체 패드 -block.dart-ship-pad.name = 다트 비행선 패드 -block.delta-mech-pad.name = 델타 기체 패드 -block.javelin-ship-pad.name = 자비린 비행선 패드 -block.trident-ship-pad.name = 삼지창 비행선 패드 -block.glaive-ship-pad.name = 글레브 비행선 패드 -block.omega-mech-pad.name = 오메가 기체 패드 -block.tau-mech-pad.name = 타우 기체 패드 -block.conduit.name = 파이프 -block.mechanical-pump.name = 기계식 펌프 -block.itemsource.name = 아이템 소스 -block.itemvoid.name = 히오스 -block.liquidsource.name = 무한 액체공급 장치 -block.powervoid.name = 방전장치 -block.powerinfinite.name = 무한 전력공급 장치 -block.unloader.name = 언로더 -block.vault.name = 창고 -block.wave.name = 파도 -block.swarmer.name = 스웜 -block.salvo.name = 살보 -block.ripple.name = 립플 -block.phase-conveyor.name = 메타 컨베이어 -block.bridge-conveyor.name = 터널 -block.plastanium-compressor.name = 플라스터늄 압축기 -block.pyratite-mixer.name = 피라테 제조기 -block.blast-mixer.name = 화합물 제조기 -block.solidifer.name = 고체 -block.solar-panel.name = 태양 전지판 -block.solar-panel-large.name = 대형 태양 전지판 -block.oil-extractor.name = 석유 추출기 -block.spirit-factory.name = 스피릿 드론 공장 -block.phantom-factory.name = 팬텀 드론 공장 -block.wraith-factory.name = 유령 전투기 공장 -block.ghoul-factory.name = 구울 폭격기 공장 -block.dagger-factory.name = 귀여운 디거 기체 공장 -block.titan-factory.name = 타이탄 기체 공장 -block.fortress-factory.name = 포트리스 기체 공장 -block.revenant-factory.name = 레비던트 전투기 공장 -block.repair-point.name = 정비소 -block.pulse-conduit.name = 퓨즈 파이프 -block.phase-conduit.name = 메타 파이프 -block.liquid-router.name = 액체 분배기 -block.liquid-tank.name = 물탱크 -block.liquid-junction.name = 액체 교차기 -block.bridge-conduit.name = 다리 파이프 -block.rotary-pump.name = 동력 펌프 -block.thorium-reactor.name = 토륨 원자로 -block.command-center.name = 명령 본부 -block.mass-driver.name = 물질 이동기 -block.blast-drill.name = 고속 발열 드릴 -block.thermal-pump.name = 지열 펌프 -block.thermal-generator.name = 지열 발전기 -block.alloy-smelter.name = 설금 제련소 -block.mend-projector.name = 치료 프로젝터 -block.surge-wall.name = 설금벽 -block.surge-wall-large.name = 큰 설금벽 -block.cyclone.name = 사이클론 -block.fuse.name = 퓨즈 -block.shock-mine.name = 전격 지뢰 -block.overdrive-projector.name = 가속 프로젝터 -block.force-projector.name = 강제 프로젝터 -block.arc.name = 아크 -block.rtg-generator.name = 토륨 발전소 -block.spectre.name = 스펙터 -block.meltdown.name = 멜트다운 -block.container.name = 컨테이너 -team.blue.name = 블루팀 -team.red.name = 레드팀 -team.orange.name = 오렌지팀 -team.none.name = 공기팀 -team.green.name = 그린팀 -team.purple.name = 보라색팀 -unit.alpha-drone.name = 알파 드론 -unit.spirit.name = 스피릿 드론 -unit.spirit.description = 기본 드론 유닛. 기본적으로 코어에서 1개가 스폰됩니다. 자동으로 채광하며 아이템을 수집하고, 블록을 수리합니다. -unit.phantom.name = 팬텀 드론 -unit.phantom.description = 첨단 드론 유닛. 광석을 자동으로 채광하며, 아이템을 수집하고 블록을 수리합니다. 일반 드론보다 훨씬 효과적입니다. -unit.dagger.name = 귀여운 디거 -unit.dagger.description = 밈의 대상으로 지정되어 이름이 바뀐 기본 지상 유닛입니다. -## unit.dagger.description = 기본 지상 유닛입니다. 스웜과 같이 쓰면 유용합니다. -unit.titan.name = 타이탄 -unit.titan.description = 고급 지상 유닛입니다. 합금을 탄약으로 사용하며 지상과 공중 둘다 공격할 수 있습니다. -unit.ghoul.name = 구울 폭격기 -unit.ghoul.description = 무거운 지상 폭격기 입니다. 화합물 또는 피라테를 탄약으로 사용합니다. -unit.wraith.name = 유령 전투기 -unit.wraith.description = 코어를 집중적으로 공격하는 방식을 사용하는 전투기 입니다. -unit.fortress.name = 포트리스 -unit.fortress.description = 중포 지상 유닛. 높은 공격력과 체력을 가지고 있습니다. -unit.revenant.name = 레비던트 -unit.revenant.description = 대형 레이저를 발사하는 공중 유닛입니다. -tutorial.begin = 플레이어의 임무는 [LIGHT_GRAY]적군[]을 제거하는 것입니다.\n\n[accent]구리를 채광[]하는 것으로 시작합니다. 이것을 하기 위해 플레이어의 중심부 근처에 있는 구리 광맥을 누르세요. -tutorial.drill = 수동으로 채광하는 것은 비효율 적입니다.\n[accent]드릴[]은 자동으로 채광 작업을 합니다.\n구리 광맥에 표시된 영역에 드릴을 하나를 놓으세요. -tutorial.conveyor = [accent]컨베이어[]를 사용하여 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요. -tutorial.morecopper = 더 많은 구리가 필요합니다.\n\n수동으로 채광하거나, 드릴을 더 설치하세요. -tutorial.turret = 방어 구조물은 [LIGHT_GRAY]적[]을 물리치기 위해 반드시 필요합니다.\n기지 근처에 듀오 터렛을 설치하세요. -tutorial.drillturret = 듀오 터렛이 작동하기 위해서는[accent] 구리 탄약 []을 필요로 합니다.\n터렛 옆에 드릴을 설치하여 구리를 공급하세요. -tutorial.waves = [LIGHT_GRAY]적[]이 접근합니다.\n\n2단계 동안 코어를 보호하고 더 많은 터렛을 만드세요. -tutorial.lead = 더 많은 광석을 이용할 수 있습니다. [accent]납[]을 찾아 탐색하세요.\n\n아이템을 코어로 전송할려면 플레이어 기체 또는 비행기에서 코어로 드래그 하세요. -tutorial.smelter = 구리와 납은 약한 금속입니다.\n[accent]합금[]은 제련소에서 만들 수 있습니다.\n\n하나 만드세요. -tutorial.densealloy = 이 제련소는 이제 합금을 생산할 것입니다.\n몇개 더 생산하세요.\n필요한 경우 더 만드세요. -tutorial.siliconsmelter = 이제 이코어는 채굴과 수리하기 위한[accent] 스피릿 드론[]을 생성 할 것 입니다.\n\n[accent]실리콘[]을 사용해 다른 유닛을 생성하기 위한 공장을 만들 수 있습니다.\n실리콘 제련기를 제작하세요! -tutorial.silicondrill = 실리콘을 제작하려면[accent] 석탄[] 과[accent] 모래[]가 필요합니다.\n드릴을 먼저 건설해보는건 어떤가요? -tutorial.generator = 이 기술은[LIGHT_YELLOW] 애너지[]가 필요합니다.\n[accent] 석탄 발전기[]를 건설하세요. -tutorial.generatordrill = [accent] 석탄 발전기[]는 연료가 필요합니다.\n[accent] 석탄[]을 드릴로 채굴해서 연료를 체워주세요. -tutorial.node = 전력은 송신해줄 송신기가 필요합니다.\n[accent] 전력 송신기[]를 석탄 등등 발전기 옆에 설치해서 생산된 전기를 다른곳으로 송신합시다. -tutorial.nodelink = 전력은 전력 블록과 발전기에 연결하거나, 연결된 전력 송신기를 통해 전송이 가능합니다. \n\n전력 송신기를 누르고 발전기와 실리콘 제련기를 선택하여 전원을 연결합시다. -tutorial.silicon = 실리콘이 생산되고 있습니다.\n\n생산 시스템의 개선을 권고 드립니다. -tutorial.daggerfactory = 이[accent] 귀여운 디거 기체 공장[]은\n\n공격하는 기체를 생산하기 위해 사용됩니다. -tutorial.router = 공장을 작동시키기 위해 자원이 필요합니다.\n컨베이어에 운반되고 있는 자원을 분할할 분배기를 만드세요. -tutorial.dagger = 전력 노드를 공장에 연결하세요.\n일단 요구 사항이 충족되면 기체 생산을 시작합니다.\n\n필요에 따라 드릴 및 발전기, 컨베이어를 더 많이 만들 수 있습니다. -tutorial.battle = [LIGHT_GRAY]적[]의 코어가 드러났습니다.\n당신의 부대와 귀여운 디거를 사용하여 파괴하세요. -block.core.description = 게임에서 가장 중요한 건물.\n파괴되면 게임이 끝납니다. -block.copper-wall.description = 구리로 만든 벽. -block.copper-wall-large.description = 구리로 만든 큰 벽. -block.dense-alloy-wall.description = 합금으로 만든 벽. 구리벽보다 체력이 높습니다. -block.dense-alloy-wall-large.description = 합금으로 만든 큰 벽. -block.thorium-wall.description = 토륨으로 만든 벽. -block.thorium-wall-large.description = 토륨으로 만든 큰 벽. -block.phase-wall.description = 날라오는 모든 총알을 튕겨내고 데미지를 입는 특수한 벽입니다. -block.phase-wall-large.description = 메타로 제작한 큰 벽. 날라오는 총알을 모두 튕겨냅니다. -block.surge-wall.description = 데미지를 입으면 번개를 일으켜 대상에게 피해를 입히는 특수한 벽입니다. -block.surge-wall-large.description = 설금을 재료로 한 큰 벽.\n데미지를 입으면 번개를 일으켜 대상에게 피해를 입힙니다. -block.door.description = 유닛이 지나갈 수 있도록 만든 문. 클릭하면 열고 닫습니다. -block.door-large.description = 유닛이 자나갈 수 있도록 만든 큰 문. 클릭하면 열고 닫습니다. -block.mend-projector.description = 주위 건물을 치료하는 건물입니다. -block.overdrive-projector.description = 범위 내 모든 행동의 속도를 높여주는 보조형 방어 건물입니다. -block.force-projector.description = 보호막을 생성하는 건물.\n기본적으로 전기만 있으면 작동하지만, 메타를 넣어 보호막의 범위를 크게 확장시킬 수 있습니다. -block.shock-mine.description = 적이 이 블록을 지나가면 전격 공격을 하는 함정형 방어 건물입니다. -block.duo.description = 범용성을 가진 터렛.\n지상 및 공중공격을 하며, 초중반에 유용합니다. -block.arc.description = 목표 방향으로 전격 공격을 하는 포탑입니다. -block.hail.description = 장거리 지상 공격을 하는 터렛입니다.\n적이 오기 전에 쓸어버릴 수 있습니다. -block.lancer.description = 중거리 레이져 포탑입니다.\n적을 관통하기 때문에 뭉쳐있는 적들에게 매우 효과적입니다. -block.wave.description = 적이 있는 자리에 액체를 뿌립니다.\n이 포탑을 활용하여 액체를 뿌린 곳에 불을 붙이거나 적을 느리게 할 수 있습니다. -block.salvo.description = 명중률이 높고, 3발씩 끊어 발사하는 포탑입니다. -block.swarmer.description = 4발씩 끊어서 유도체를 발사하는 포탑입니다 -block.ripple.description = 4개의 탄약으로 나눠 발사하여 명중률이 낮지만, 사거리가 매우 긴 포탑입니다. -block.cyclone.description = 낮은 명중률과 높은 RPM 을 가진 포탑입니다.\n탄약이 남아있는 한 멈추지 않고 계속 연사합니다. -block.fuse.description = 단거리에서 범위형 레이저를 발사하는 포탑입니다. -block.spectre.description = 높은 명중률과 RPM 을 가진 포탑입니다.\n탄약이 남아있는 한 멈추지 않고 계속 연사합니다. -block.meltdown.description = 목표를 따라 초대형 레이져를 발사하는 포탑입니다.\n뭉쳐있는 몹에게 매우 효과가 좋습니다. -block.conveyor.description = 느린 속도로 자원을 수송할 수 있는 컨베이어. -block.titanium-conveyor.description = 빠른 속도로 자원을 수송할 수 있는 컨베이어. -block.phase-conveyor.description = 자원을 순간이동 시켜 주는 컨베이어 입니다. -block.junction.description = 컨베이어를 교차시켜 자원을 수송할 때 사용할 수 있는 블록입니다. -block.mass-driver.description = 자원을 받아서 다른 물질 이동기로 전달할 수 있는 블록입니다.\n엄청난 사거리를 가지고 있으며, 주로 컨베이어가 접근할 수 없는 곳에 유용하게 사용됩니다. -block.smelter.description = 합금을 제작할 수 있는 건물입니다. -block.arc-smelter.description = 합금을 제작할 수 있는 건물이지만, 이 건물은 석탄이 필요 없고 좀더 빠른 속도로 합금을 생산해낼 수 있습니다. -block.silicon-smelter.description = 실리콘을 제작할 수 있는 건물입니다. -block.plastanium-compressor.description = 플라스터늄을 제조할 수 있는 건물입니다. -block.phase-weaver.description = 메타를 제작할 수 있는 건물입니다. -block.alloy-smelter.description = 설금을 제작할 수 있는 건물입니다. -block.pulverizer.description = 돌을 갈아서 모래로 만들 수 있는 건물입니다. -block.pyratite-mixer.description = 피라테를 제조할 수 있는 건물입니다. -block.blast-mixer.description = 화합물을 제조할 수 있는 건물입니다. -block.cryofluidmixer.description = 냉각수를 제작할 수 있는 건물입니다. -block.solidifer.description = 용암을 돌로 만들 수 있는 건물입니다. -block.melter.description = 돌로 용암을 만들 수 있는 건물입니다. -block.incinerator.description = 불필요한 아이템을 소각시켜 줄 수 있는 건물입니다. -block.biomattercompressor.description = 잔디밭에서 바이오메터를 추출할 수 있는 건물입니다. -block.separator.description = 돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물입니다. -block.centrifuge.description = 돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물이지만, 이 건물은 좀 더 다양한 자원을 얻을 수 있게 해 줍니다. -block.power-node.description = 생성된 전기를 다른 건물로 전달하기 위한 전력 노드입니다. -block.power-node-large.description = 생성된 전기를 다른 건물로 전달하기 위한 건물이며, 일반 노드보다 더 많은 전력을 이동시킬 수 있습니다. -block.battery.description = 흔히 아는 충전식 배터리입니다.\n전력 생산건물에서 전력이 떨어질경우, 이 배터리를 전력 노드에 연결하면 이 배터리에 에 있는 전력을 사용하여 전기를 소모하는 건물에 전력을 지속적으로 공급할 수 있습니다. -block.battery-large.description = 일반 배터리보다 용량이 매우 커진 커진 배터리. -block.combustion-generator.description = 석탄을 연료로 전기를 생산해내는 발전소 입니다. -block.turbine-generator.description = 석탄 발전기보다 더 많은량의 전기를 생산하는 발전기입니다. -block.thermal-generator.description = 용암을 원료로 전력을 생산할 수 있는 발전소입니다. -block.solar-panel.description = 태양열을 받아 자기 스스로 전력을 생산하는 블록입니다. -block.solar-panel-large.description = 태양열을 받아 자기 스스로 전력을 생산하지만, 이 블록은 더 빨리 전력을 생산할 수 있습니다. -block.thorium-reactor.description = 토륨을 원료로 하는 토륨 원자로 입니다.\n많은 전력을 생산하지만 엄청난 열을 발생시키기 때문에, 많은 량의 물 또는 냉각수가 있어야 터지지 않고 작동합니다. -block.rtg-generator.description = 냉각은 필요 없지만 토륨 원자로보다 적은량의 전력을 생산하는 방사선 동위원소 열전자 발전기. -block.unloader.description = 해당 창고 및 코어에서 자원을 빼내는데 사용됩니다. -block.container.description = 아이템을 임시로 저장할 수 있는 소형 창고입니다. -block.vault.description = 아이템을 임시로 저장할 수 있는 대형 창고입니다. -block.mechanical-drill.description = 구리로 제작할 수 있는 기본 드릴입니다. -block.pneumatic-drill.description = 돌, 티타늄을 채광할 수 있는 고급 드릴입니다. -block.laser-drill.description = 토륨을 채광할 수 있는 최고급 드릴입니다.\n전력과 물을 공급하여 빠른 속도로 채광할 수 있습니다. -block.blast-drill.description = 최상위 드릴입니다. 엄청난 양의 전력과 물을 소모하는 대신, 매우 빠른 속도로 채광합니다. -block.water-extractor.description = 바닥에서 물을 추출하여 건물에 공급할 수 있는 건물입니다. -block.cultivator.description = 잔디에서 바이오메터를 추출할 수 있는 건물입니다. -block.oil-extractor.description = 기름(타르)을 추출 해 주는 건물입니다. -block.dart-ship-pad.description = 다트 비행선으로 바꿀 수 있는 패드입니다. -block.trident-ship-pad.description = 삼지창 비행선으로 바꿀 수 있는 패드입니다. -block.javelin-ship-pad.description = 자비린 비행선으로 바꿀 수 있는 패드입니다. -block.glaive-ship-pad.description = 글레브 비행선으로 바꿀 수 있는 패드입니다. -block.tau-mech-pad.description = 타우 기체로 바꿀 수 있는 패드 -block.delta-mech-pad.description = 델타 기체로 바꿀 수 있는 패드입니다. -block.omega-mech-pad.description = 오메가 기체로 바꿀 수 있는 패드 -block.spirit-factory.description = 스피릿 유닛을 생산하는 공장입니다. -block.phantom-factory.description = 유닛 팬텀을 생산하는 공장입니다. -block.wraith-factory.description = 유닛 유령 전투기를 소환하는 공장입니다. -block.ghoul-factory.description = 구울 유닛을 생산하는 공장입니다. -block.dagger-factory.description = 귀여운 디거를 생산하는 공장입니다. -block.titan-factory.description = 타이탄 유닛을 생산할 수 있는 공장입니다. -block.fortress-factory.description = 포트리스를 생산하는 공장입니다. -block.revenant-factory.description = 레비던트 유닛을 생산할 수 있는 공장입니다. -block.repair-point.description = 근처 유닛들을 수리하는 건물입니다. -block.command-center.description = 생산된 유닛들을 제어할 수 있는 건물.\n첫번째 버튼은 적 기지로 공격하며, 두번째는 대기 상태, 세번째는 기지 근처를 돌며 정찰합니다. -block.conduit.description = 일반 파이프. 액체가 지나갈 수 있도록 해 줍니다. -block.pulse-conduit.description = 티타늄으로 만들어 졌으며, 일반 파이프보다 액체 수용량이 높습니다. -block.phase-conduit.description = 물을 먼거리로 순간이동 시켜 주는 장치입니다. -block.liquid-router.description = 물펌프를 다른 방향으로 분배할 수 있게 하는 블럭입니다. -block.liquid-tank.description = 액체 종류를 저장할 수 있는 물탱크 입니다. -block.liquid-junction.description = 물펌프와 다른 물펌프를 서로 교차시키게 할 수 있는 블럭입니다. -block.bridge-conduit.description = 다리와 다리 사이를 연결하여 액체가 지나갈 수 있게 해 줍니다.\n주로 다리 사이에 지나갈 수 없는 장애물이 있을 때 사용합니다. -block.mechanical-pump.description = 구리로 제작할 수 있는 기계식 물펌프입니다. -block.rotary-pump.description = 일반 물 펌프보다 더 빠른 속도로 물을 끌어올릴 수 있는 펌프입니다. -block.thermal-pump.description = 용암 위에서 사용할 수 있는 펌프입니다. -block.router.description = 한 방향에서 아이템을 받은 후 최대 3개의 다른 방향으로 동일하게 출력합니다.\n재료를 한곳에서 여러 대상으로 분할하여 운반하는데 유용합니다. -block.distributor.description = 아이템을 최대 7개의 다른 방향으로 똑같이 분할하는 고급 분배기. -block.bridge-conveyor.description = 고급 자원 수송 블록.\n지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다. -block.alpha-mech-pad.description = 알파 기체로 바꿀 수 있는 패드입니다. -block.itemsource.description = 자원을 선택하면 그 자원이 무한하게 생성되는 블록입니다. -block.liquidsource.description = 무한한 액체를 출력해냅니다. -block.itemvoid.description = 아이템을 시공으로 빠트려 사라지게 만듭니다. -block.powerinfinite.description = 무한한 전력을 공급해주는 블록입니다. -block.powervoid.description = 설정된 아이템을 계속해서 출력하는 블록입니다. -liquid.water.description = 지상 유닛이 이 위를 지나가면 이동속도가 느려지고, 깊은 물에 빠지면 죽습니다. -liquid.lava.description = 지상 유닛이 이 위를 지나가면 이동속도가 매우 느려지고, 지속적으로 데미지를 입습니다. -liquid.oil.description = 일부 조합 블록에서 사용되는 자원입니다. -liquid.cryofluid.description = 포탑 및 토륨 원자로에서 사용되는 자원입니다. 누출시 폭발 및 방화의 위험성이 있습니다. +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.discord=Mindustry Discord 에 참여하세요! +text.link.discord.description=공식 Mindustry Discord 채팅방 +text.link.github.description=게임 소스코드 +text.link.dev-builds.description=개발중인 빌드 +text.link.trello.description=다음 출시될 기능들을 게시한 공식 Trello 보드 +text.link.itch.io.description=PC 버전 다운로드와 HTML5 버전이 있는 itch.io 사이트 +text.link.google-play.description=Google Play 스토어 정보 +text.link.wiki.description=공식 Mindustry 위키 (영어) +text.linkfail=링크를 여는데 실패했습니다! URL이 기기의 클립보드에 복사되었습니다. +text.gameover=코어가 터졌습니다. 게임 오버! +text.gameover.pvp=[accent]{0}[] 팀이 승리했습니다! +text.sector.gameover=이 지역을 공략하는데 실패했습니다. 포기 하시겠습니까? +text.sector.retry=아니오 +text.highscore=[YELLOW]최고점수 달성! +text.wave.lasted=[accent]{0}[] 까지 버티셨습니다. +text.level.highscore=최고 점수 : [accent]{0} +text.level.delete.title=삭제 확인 +text.map.delete=정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까? +text.level.select=맵 선택 +text.level.mode=게임모드 : +text.construction.desktop=PC 에서의 조작 방법이 변경되었습니다.\n블록 선택을 해제하거나 건설을 중지하려면 [accent]스페이스 바[]를 누르세요. +text.construction.title=블록 배치 안내서 +text.construction=[accent]블록 배치 모드[]를 선택하셨습니다.\n\n블록을 설치하고 싶으면, 자신의 건설 가능 범위 내에서 간단히 탭 하면 됩니다.\n일부 블록을 선택한 후에 확인 버튼을 누르면 배가 배치 작업을 진행할 것입니다.\n\n- [accent]블록을 삭제[]하고 싶다면 배치하고 싶은 영역을 탭 하세요. \n- [accent]블록을 넓게 배치[]하고 싶다면 배치하고 싶은 시작 영역을 길게 누르며 드래그 하면 됩니다.\n- [accent]블록을 한줄로 배치[]하고 싶다면 배치하고 싶은 시작 영역을 한번 탭 하고 길게 누르면서 드래그 하면 됩니다. \n- [accent]블록 배치 모드를 취소[]하고 싶다면 화면 하단 왼쪽에 있는 X 버튼을 누르면 됩니다. +text.deconstruction.title=블록 삭제 안내서 +text.deconstruction=[accent]블록 삭제 모드[]를 선택하셨습니다\n\n블록을 삭제하고 싶다면, 자신의 건설 가능 범위 내에서 간단히 탭 하면 됩니다.\n일부 블록을 선택한 후에 확인 버튼을 누르면 배가 파괴 작업을 진행할 것입니다.\n\n- [accent]블록을 삭제[]하고 싶다면 배치하고 싶은 영역을 탭 하세요\n- [accent]블록을 넓은 범위로 삭제[]하고 싶다면 배치하고 싶은 시작 영역을 길게 누르며 드래그 하면 됩니다.\n- [accent]블록 삭제 모드를 취소[]하고 싶다면 화면 하단 왼쪽에 있는 X 버튼을 누르면 됩니다. +text.showagain=다음 세션에서 이 메세지를 표시하지 않습니다 +text.coreattack=< 코어가 공격받고 있습니다! > +text.unlocks=아이템들 +text.savegame=게임 저장 +text.loadgame=게임 불러오기 +text.joingame=멀티플레이 +text.addplayers=플레이어 추가/제거 +text.customgame=커스텀 게임 +text.sectors=지역 플레이 +text.sector=지역 : [LIGHT_GRAY]{0} +text.sector.time=시간 : [LIGHT_GRAY]{0} +text.sector.deploy=시작 +text.sector.abandon=초기화 +text.sector.abandon.confirm=정말로 이 지역의 모든 진행상황을 초기화 하겠습니까?\n이 작업은 되돌릴 수 없습니다! +text.sector.resume=계속하기 +text.sector.locked=[scarlet][[완료안됨] +text.sector.unexplored=[accent][[탐색안됨] +text.missions=목표 : [LIGHT_GRAY] {0} +text.mission=목표 : [LIGHT_GRAY] {0} +text.mission.main=주요 목표 : [LIGHT_GRAY]{0} +text.mission.info=미션 정보 +text.mission.complete=미션 성공! +text.mission.complete.body=지역 {0},{1} 클리어. +text.mission.wave=[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.menu=[accent]{0}[] 단계 +text.mission.battle=적 코어를 파괴하세요 +text.mission.resource.menu={0} {1}개 수집 +text.mission.resource={0} 을(를) 수집하세요\n[accent]{1}/{2} +text.mission.block={0} 를 만드세요 +text.mission.unit={0} 유닛을 만드세요 +text.mission.command=유닛에게 {0} 명령을 보내세요 +text.mission.linknode=전력 노드를 연결하세요 +text.mission.display=[accent]목표 : [LIGHT_GRAY]{0} +text.mission.mech=[accent]{0}[] 기체로 바꾸세요 +text.mission.create=[accent]{0}[] 을(를)설치하세요. +text.none=<없음> +text.close=닫기 +text.quit=나가기 +text.maps=맵 +text.continue=계속하기 +text.nextmission=다음 임무 +text.maps.none=[LIGHT_GRAY]맵을 찾을 수 없습니다! +text.about.button=정보 +text.name=이름 : +text.filename=파일 이름 : +text.unlocked=새 블록 잠금 해제됨 +text.unlocked.plural=잠금 해제 +text.players=현재 {0}명 접속중 +text.players.single=현재 {0}명만 있음. +text.server.closing=[accent]서버 닫는중... +text.server.kicked.kick=서버에서 추방되었습니다! +text.server.kicked.serverClose=서버 종료됨. +text.server.kicked.sectorComplete=지역 클리어. +text.server.kicked.sectorComplete.text=임무 성공.\n서버가 다음지역 맵으로 이동되었습니다. +text.server.kicked.clientOutdated=오래된 버전의 클라이언트 입니다! 게임을 업데이트 하세요! +text.server.kicked.serverOutdated=오래된 버전의 서버입니다! 서버 호스트 관리자에게 문의하세요! +text.server.kicked.banned=뭘 하셨는지는 모르겠지만, 이제 영원히 서버에 접속할 수 없습니다. +text.server.kicked.recentKick=방금 추방처리 되었습니다. 잠시 기다린 후에 접속 해 주세요. +text.server.kicked.nameInUse=이 닉네임이 이미 서버에서 사용중입니다. +text.server.kicked.nameEmpty=닉네임에는 반드시 영어 또는 숫자가 있어야 합니다. +text.server.kicked.idInUse=이미 서버에 접속중입니다! 다중 계정은 허용되지 않습니다. +text.server.kicked.customClient=이 서버는 직접 빌드한 버전을 지원하지 않습니다. 공식 버전을 사용하세요. +text.host.info=[accent]호스트[] 버튼은 현재 네트워크의 [scarlet]6567[] 포트를 사용합니다.\n[LIGHY_GRAY]같은 Wi-Fi 또는 로컬 네트워크[] 에서 서버 목록을 볼 수 있습니다.\n\n만약 플레이어들이 이 IP를 통해 어디에서나 연결할 수 있게 하고 싶다면, 공유기 설정에서 [accent]포트 포워딩[]을 해야 합니다.\n\n[LIGHT_GRAY]참고 : LAN 게임 연결에 문제가 있는 사람이 있다면, 방화벽 설정에서 Mindustry 가 로컬 네트워크에 액세스하도록 허용했는지 확인 해 주세요. +text.join.info=여기서 [accent]서버 IP[]를 입력하여 다른 서버에 접속할 수 있습니다.\n또는 [accent]로컬 네트워크(LAN)[] 서버를 검색하여 접속할 수 있습니다.\nLAN 및 WAN 멀티 플레이어 모두 지원됩니다.\n\n[LIGHT_GRAY]참고:여기에서는 자동으로 글로벌 서버를 추가하지 않습니다. IP로 다른 사람의 서버에 접속할려면 서버장에게 IP를 요청해야 합니다. +text.hostserver=서버 열기 +text.hostserver.mobile=서버\n열기 +text.host=서버 열기 +text.hosting=[accent]서버 여는중... +text.hosts.refresh=새로고침 +text.hosts.discovering=LAN 게임 찾기 +text.server.refreshing=서버 목록 새로고치는중... +text.hosts.none=[lightgray]LAN 게임을 찾을 수 없습니다! +text.host.invalid=[scarlet]서버에 연결할 수 없습니다! +text.trace=플레이어 정보 보기 +text.trace.playername=이름 : [accent]{0} +text.trace.ip=IP : [accent]{0} +text.trace.id=고유 ID : [accent]{0} +text.trace.android=Android 클라이언트 : [accent]{0} +text.trace.modclient=수정된 클라이언트 : [accent]{0} +text.trace.totalblocksbroken=총 블록 파괴 개수 : [accent]{0} +text.trace.structureblocksbroken=구조 블록 파괴 수 : [accent]{0} +text.trace.lastblockbroken=마지막으로 파괴한 블록 : [accent]{0} +text.trace.totalblocksplaced=총 설치한 블록 개수 : [accent]{0} +text.trace.lastblockplaced=마지막으로 설치한 블록 : [accent]{0} +text.invalidid=잘못된 클라이언트 ID 입니다! 공식 Mindustry Discord 으로 버그 보고서를 제출 해 주세요. +text.server.bans=차단된 유저 +text.server.bans.none=차단된 플레이어가 없습니다. +text.server.admins=관리자 +text.server.admins.none=관리자가 없습니다! +text.server.add=서버 추가 +text.server.delete=이 서버를 삭제 하시겠습니까? +text.server.hostname=호스트 : {0} +text.server.edit=서버 수정 +text.server.outdated=[crimson]서버 버전이 낮습니다![] +text.server.outdated.client=[Crimson]클라이언트 버전이 낮습니다![] +text.server.version=[lightgray]서버 버전 : {0} +text.server.custombuild=[yellow]커스텀 서버 +text.confirmban=이 플레이어를 차단하시겠습니까? +text.confirmkick=정말로 이 플레이어를 추방시키겠습니까? +text.confirmunban=이 플레이어를 차단해제 하시겠습니까? +text.confirmadmin=이 플레이어를 관리자로 만들겠습니까? +text.confirmunadmin=이 플레이어를 일반 유저로 만들겠습니까? +text.joingame.title=게임 참가 +text.joingame.ip=IP : +text.disconnect=서버와 연결이 해제되었습니다. +text.disconnect.data=맵 데이터를 받아오는데 실패했습니다. +text.connecting=[accent]연결중... +text.connecting.data=[accent]맵 데이터 다운로드중... +text.server.port=포트 : +text.server.addressinuse=이 주소는 이미 사용중입니다! +text.server.invalidport=포트 번호가 잘못되었습니다. +text.server.error=[crimson]{0}[accent]서버를 여는데 오류가 발생했습니다.[] +text.save.old=이 저장파일은 이전 버전의 게임용이며, 지금은 사용할 수 없습니다. \n\n[LIGHT_GRAY]4.0 정식때 이전 게임버전에서 만든 저장파일과 호환됩니다. +text.save.new=새로 저장 +text.save.overwrite=이 저장 슬롯을 덮어씌우겠습니까? +text.overwrite=덮어쓰기 +text.save.none=저장 파일을 찾지 못했습니다! +text.saveload=[accent]저장중... +text.savefail=게임을 저장하지 못했습니다! +text.save.delete.confirm=이 저장파일을 삭제 하시겠습니까? +text.save.delete=삭제 +text.save.export=저장파일 내보내기 +text.save.import.invalid=[accent]파일이 잘못되었습니다! +text.save.import.fail=[crimson]저장파일을 불러오지 못함 : [accent]{0} +text.save.export.fail=[crimson]저장파일을 내보내지 못함 : [accent]{0} +text.save.import=저장파일 불러오기 +text.save.newslot=저장 파일이름 : +text.save.rename=이름 변경 +text.save.rename.text=새 이름 : +text.selectslot=저장슬롯을 선택하십시오. +text.slot=[accent]{0}번째 슬롯 +text.save.corrupted=[accent]세이브 파일이 손상되었거나 잘못된 파일입니다! 만약 게임을 업데이트 했다면 이것은 아마 저장 형식 변경일 것이고, 이것은 버그가 [scarlet]아닙니다[]. +text.sector.corrupted=[accent]저장 파일에서 지역을 발견했으나 불러오지 못했습니다.\n새로 생성되었습니다. +text.empty=<비어있음> +text.on=켜기 +text.off=끄기 +text.save.autosave=자동저장 : {0} +text.save.map=맵 : {0} +text.save.wave={0}단계[] +text.save.difficulty=난이도 : {0} +text.save.date=마지막 저장날짜 : {0} +text.save.playtime=플레이시간 : {0} +text.confirm=확인 +text.delete=삭제 +text.ok=확인 +text.open=열기 +text.cancel=취소 +text.openlink=링크 열기 +text.copylink=링크 복사 +text.back=뒤로가기 +text.quit.confirm=정말로 종료하시겠습니까? +text.changelog.title=변경사항 +text.changelog.loading=변경사항 가져오는중... +text.changelog.error.android=[accent]게임 변경사항은 가끔 Android 4.4 이하에서 작동하지 않습니다. 이것은 내부 Android 버그 때문입니다. +text.changelog.error.ios=[accent]현재 iOS에서는 변경 사항을 지원하지 않습니다. +text.changelog.error=[scarlet]게임 변경사항을 가져오는 중 오류가 발생했습니다![]\n인터넷 연결을 확인하십시오. +text.changelog.current=[accent][[현재 버전] +text.changelog.latest=[accent][[최신 버전] +text.loading=[accent]불러오는중... +text.saving=[accent]저장중... +text.wave=[accent]{0}단계 +text.wave.waiting=남은 시간 : [green]{0}초[] +text.waiting=[LIGHT_GRAY]대기중... +text.waiting.players=다른 플레이어를 기다리는 중.. +text.wave.enemies=[LIGHT_GRAY]{0} 마리 남았음 +text.wave.enemy=[LIGHT_GRAY]{0} 마리 남음 +text.loadimage=사진 불러오기 +text.saveimage=사진 저장 +text.unknown=알 수 없음 +text.custom=커스텀 +text.builtin=기본맵 +text.map.delete.confirm=이 맵을 삭제하시겠습니까? 이 명령은 취소할 수 없습니다! +text.map.random=[accent]랜덤 맵 +text.map.nospawn=이 맵에 플레이어가 스폰 할 코어가 없습니다! 맵 편집기에서 [ROYAL]파란색[]코어를 맵에 추가하세요. +text.map.nospawn.pvp=이 맵에는 적팀 코어가 없습니다! 에디터에서 [scarlet]빨간팀[] 코어를 추가하세요. +text.map.invalid=파일이 잘못되었거나 손상되어 맵을 열 수 없습니다. +text.editor.brush=브러쉬 +text.editor.slope=\\ +text.editor.openin=편집기 열기 +text.editor.oregen=광물 무작위 생성 +text.editor.oregen.info=광물 무작위 생성 : +text.editor.mapinfo=맵 정보 +text.editor.author=만든이 : +text.editor.description=설명 : +text.editor.name=이름 : +text.editor.teams=팀 +text.editor.elevation=지형 높이 +text.editor.errorimageload=[accent]{0}[] 파일을 불러오는데 오류가 발생했습니다. +text.editor.errorimagesave=[accent]{0}[] 파일 저장중 오류가 발생했습니다. +text.editor.generate=생성 +text.editor.resize=맵 크기조정 +text.editor.loadmap=맵 불러오기 +text.editor.savemap=맵 저장 +text.editor.saved=저장됨! +text.editor.save.noname=지도에 이름이 없습니다! 메뉴 -> '맵 정보' 에서 설정하세요. +text.editor.save.overwrite=이 맵의 이름은 기존에 있던 맵을 덮어씁니다! '맵 정보' 메뉴에서 다른 이름을 선택하세요. +text.editor.import.exists=[scarlet]맵을 불러올 수 없음 : [] 기존에 있던 '{0}' 맵이 이미 존재합니다! +text.editor.import=가져오기 +text.editor.importmap=맵 가져오기 +text.editor.importmap.description=이미 존재하는 맵 가져오기 +text.editor.importfile=파일 가져오기 +text.editor.importfile.description=외부 맵 파일 가져오기 +text.editor.importimage=지형 사진 가져오기 +text.editor.importimage.description=외부 맵 이미지 파일 가져오기 +text.editor.export=내보내기 +text.editor.exportfile=파일 내보내기 +text.editor.exportfile.description=맵 파일 내보내기 +text.editor.exportimage=지형 이미지 내보내기 +text.editor.exportimage.description=맵 이미지 파일 내보내기 +text.editor.loadimage=지형 가져오기 +text.editor.saveimage=지형 내보내기 +text.editor.unsaved=[scarlet]변경사항을 저장하지 않았습니다![]\n정말로 나가시겠습니까? +text.editor.resizemap=맵 크기 조정 +text.editor.mapname=맵 이름 : +text.editor.overwrite=[accept]경고!이 명령은 기존 맵을 덮어씌우게 됩니다. +text.editor.overwrite.confirm=[scarlet]경고![] 이 이름을 가진 맵이 이미 있습니다. 덮어 쓰시겠습니까? +text.editor.selectmap=불러올 맵 선택 : +text.width=넓이 : +text.height=높이 : +text.menu=메뉴 +text.play=플레이 +text.load=불러오기 +text.save=저장 +text.fps={0}FPS +text.tps={0}TPS +text.ping=ping : {0}ms +text.language.restart=언어를 변경하려면 게임을 다시시작 해 주세요. +text.settings=설정 +text.tutorial=게임 방법 +text.editor=편집기 +text.mapeditor=맵 편집기 +text.donate=기부 +text.connectfail=[crimson]{0}[accent] 서버에 연결하지 못했습니다.[] +text.error.unreachable=서버에 연결하지 못했습니다. +text.error.invalidaddress=잘못된 주소입니다. +text.error.timedout=시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오. +text.error.mismatch=패킷 오류:\n클라이언트/서버 버전이 일치하지 않습니다.\n접속할려는 서버가 최신 버전의 Mindustry 인지 확인하세요! +text.error.alreadyconnected=이미 접속중입니다. +text.error.mapnotfound=맵 파일을 찾을 수 없습니다! +text.error.any=알 수 없는 네트워크 오류. +text.settings.language=언어 +text.settings.reset=설정 초기화 +text.settings.rebind=키 재설정 +text.settings.controls=컨트롤 +text.settings.game=게임 +text.settings.sound=소리 +text.settings.graphics=그래픽 +text.settings.cleardata=게임 데이터 초기화... +text.settings.clear.confirm=정말로 초기화 하겠습니까?\n이 작업을 되돌릴 수 없습니다! +text.settings.clearall.confirm=[scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다. +text.settings.clearsectors=지역 초기화 +text.settings.clearunlocks=잠금 해제 초기화 +text.settings.clearall=모두 초기화 +text.paused=일시 정지 +text.yes=예 +text.no=아니오 +text.info.title=[accent]정보 +text.error.title=[crimson]오류가 발생했습니다. +text.error.crashtitle=오류가 발생했습니다. +text.blocks.unknown=[LIGHT_GRAY]??? +text.blocks.blockinfo=블록 정보 +text.blocks.powercapacity=최대 전력 용량 +text.blocks.powershot=1발당 전력 소모량 +text.blocks.targetsair=공중공격 가능 +text.blocks.itemspeed=유닛 이동 속도 +text.blocks.shootrange=사거리 +text.blocks.size=블록 크기 +text.blocks.liquidcapacity=최대 액체 용량 +text.blocks.maxitemssecond=최대 아이템 보관량 +text.blocks.powerrange=전력 범위 +text.blocks.poweruse=전력 사용 +text.blocks.powerdamage=전력/데미지 +text.blocks.inputitemcapacity=입력 아이템 용량 +text.blocks.outputitemcapacity=출력 아이템 용량 +text.blocks.itemcapacity=저장 용량 +text.blocks.basepowergeneration=기지 전력 생성기 +text.blocks.powertransferspeed=전력 전송량 +text.blocks.craftspeed=생산 속도 +text.blocks.inputliquid=사용되는 액체 +text.blocks.inputliquidaux=보조 액체 +text.blocks.inputitem=사용되는 아이템 +text.blocks.inputitems=사용되는 아이템들 +text.blocks.outputitem=출력 아이템 +text.blocks.drilltier=드릴 +text.blocks.drillspeed=기본 드릴 속도 +text.blocks.liquidoutput=액체 출력 +text.blocks.liquidoutputspeed=액체 출력속도 +text.blocks.liquiduse=액체 사용량 +text.blocks.coolant=냉각제 +text.blocks.coolantuse=냉각수 사용 +text.blocks.inputliquidfuel=연료 액 +text.blocks.liquidfueluse=액체 연료 사용 +text.blocks.explosive=이 블록이 터지면 주변 블록과 같이 자폭을 합니다!! +text.blocks.health=체력 +text.blocks.inaccuracy=오차각 +text.blocks.shots=발포 횟수 +text.blocks.reload=재장전 +text.blocks.inputfuel=연료 +text.blocks.fuelburntime=연료 연소 시간 +text.blocks.inputcapacity=입력 용량 +text.blocks.outputcapacity=출력 용량 +text.unit.blocks=블록 +text.unit.powersecond=전력/초 +text.unit.liquidsecond=액체/초 +text.unit.itemssecond=개/초 +text.unit.pixelssecond=초당 픽셀 +text.unit.liquidunits=액체 +text.unit.powerunits=전력 +text.unit.degrees=도 +text.unit.seconds=초 +text.unit.items=아이템 +text.category.general=일반 +text.category.power=전력 +text.category.liquids=액체 +text.category.items=아이템 +text.category.crafting=제작 +text.category.shooting=사격 +setting.autotarget.name=자동 조준 +setting.fpscap.name=최대 FPS +setting.fpscap.none=없음 +setting.fpscap.text={0} FPS +setting.difficulty.training=훈련 +setting.difficulty.easy=쉬움 +setting.difficulty.normal=보통 +setting.difficulty.hard=어려움 +setting.difficulty.insane=[#00ff00]멀[#2efe2e]티[#58fa58]플[#81f781]레[#a9f5a9]이 [#81f781]전[#58fa58]용[] +setting.difficulty.name=난이도 : +setting.screenshake.name=화면 흔들기 강도 +setting.effects.name=화면 효과 +setting.sensitivity.name=컨트롤러 감도 +setting.saveinterval.name=자동저장 간격 +setting.seconds={0}초 +setting.fullscreen.name=전체 화면 +setting.multithread.name=멀티 스레드 +setting.fps.name=FPS 표시 +setting.vsync.name=VSync 활성화 +setting.lasers.name=전력 노드 레이저 표시 +setting.minimap.name=미니맵 보기 +setting.musicvol.name=음악 크기 +setting.mutemusic.name=음소거 +setting.sfxvol.name=효과음 크기 +setting.mutesound.name=소리 끄기 +setting.crashreport.name=오류 보고서 보내기 +text.keybind.title=조작키 설정 +category.general.name=일반 +category.view.name=보기 +category.multiplayer.name=멀티플레이 +command.attack=공격 +command.retreat=후퇴 +command.patrol=순찰 +keybind.press=키를 누르세요... +keybind.press.axis=축 또는 키를 누르세요... +keybind.move_x.name=오른쪽/왼쪽 이동 +keybind.move_y.name=위쪽/아래쪽 이동 +keybind.select.name=선택 +keybind.break.name=파괴 +keybind.deselect.name=선택해제 +keybind.shoot.name=사격 +keybind.zoom_hold.name=길게눌러 확대 +keybind.zoom.name=확대 +keybind.menu.name=메뉴 +keybind.pause.name=일시중지 +keybind.dash.name=달리기 +keybind.chat.name=채팅 +keybind.player_list.name=플레이어 목록 +keybind.console.name=콘솔 +keybind.rotate.name=회전 +keybind.toggle_menus.name=메뉴 보이기/숨기기 +keybind.chat_history_prev.name=이전 채팅기록 +keybind.chat_history_next.name=다음 채팅기록 +keybind.chat_scroll.name=채팅 스크롤 +keybind.drop_unit.name=유닛 드롭 +keybind.zoom_minimap.name=미니맵 확대 +mode.text.help.title=도움말 +mode.waves.name=단계 +mode.waves.description=이것은 일반 모드입니다. 제한된 자원과 자동으로 다음 단계가 시작됩니다. +mode.sandbox.name=샌드박스 +mode.sandbox.description=무한한 자원과 다음단계 시작을 위한 타이머가 없습니다. +mode.freebuild.name=자유 건축 +mode.freebuild.description=제한된 자원과 다음단계 시작을 위한 타이머가 없습니다. +mode.pvp.name=PvP +mode.pvp.description=몹이 아닌 실제 플레이어와 PvP를 합니다. +content.item.name=아이템 +content.liquid.name=액체 +content.unit.name=유닛 +content.recipe.name=블록 +content.mech.name=기체 +item.stone.name=돌 +item.stone.description=주로 용암을 사용하여 얻을 수 있는 자원입니다. +item.copper.name=구리 +item.copper.description=모든 유형의 블록에서 광범위하게 사용되는 자원입니다. +item.lead.name=납 +item.lead.description=쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다. +item.coal.name=석탄 +item.coal.description=쉽게 구할 수 있으며, 주로 제련소 등에서 연료로 사용됩니다. +item.dense-alloy.name=고밀도 합금 +item.dense-alloy.description=납과 구리로 만든 튼튼한 고밀도 합금.\n고급 수송 블록이나 상위 티어 블록을 건설하는데 사용됩니다. +item.titanium.name=티타늄 +item.titanium.description=파이프 재료나 고급 드릴, 비행기/기체 등에서 재료로 사용되는 자원입니다. +item.thorium.name=토륨 +item.thorium.description=건물의 재료, 포탑의 탄약 또는 핵연료로 사용되는 방사성 금속입니다. +item.silicon.name=실리콘 +item.silicon.description=매우 유용한 반도체로, 태양 전지판과 복잡한 전자 제품에 사용할 수 있습니다. +item.plastanium.name=플라스터늄 +item.plastanium.description=고급 항공기 및 분열 탄약에 사용되는 가벼운 연성 재료. +item.phase-fabric.name=메타 +item.phase-fabric.description=최첨단 전자 제품과 자기수리 기술에 사용되는 거의 무중력에 가까운 물질입니다. +item.surge-alloy.name=설금 +item.surge-alloy.description=주로 건물의 재료로 사용되는 자원입니다 +item.biomatter.name=바이오메터 +item.biomatter.description=이것은 유기농 덤불입니다!\n압축기에 넣어 석유로 바꿀 수 있습니다. +item.sand.name=모래 +item.sand.description=고밀도 합금이나 플럭스 등에서 제련시 광범위하게 사용되는 일반적인 재료입니다. +item.blast-compound.name=폭발물 +item.blast-compound.description=포탑 및 건설의 재료로 사용되는 휘발성 폭발물.\n연료로도 사용할 수 있지만, 별로 추천하지는 않습니다. +item.pyratite.name=피라테 +item.pyratite.description=폭발성을 가진 재료로, 주로 포탑의 탄약으로 사용됩니다. +liquid.water.name=물 +liquid.lava.name=용암 +liquid.oil.name=석유 +liquid.cryofluid.name=냉각수 +mech.alpha-mech.name=알파 +mech.alpha-mech.weapon=중무장 소총 +mech.alpha-mech.ability=드론 소환 +mech.alpha-mech.description=표준 기체.\n적절한 속도와 공격력을 갖추고 있으며, 공격 능력을 높이기 위해 최대 3대의 드론을 만들 수 있습니다. +mech.delta-mech.name=델타 +mech.delta-mech.weapon=전격 생산기 +mech.delta-mech.ability=충전 +mech.delta-mech.description=빠르게 이동하는 적을 처치하기 위한 가벼운 기체.\n구조물에는 거의 피해를 주지 않지만, 전격 무기를 사용하여 많은 적군을 매우 빠르게 죽일 수 있습니다. +mech.tau-mech.name=타우 +mech.tau-mech.weapon=건물 수리총 +mech.tau-mech.ability=유닛 치료 +mech.tau-mech.description=지원형 기체.\n총을 발사하여 건물을 치료하고 회복 능력 사용으로 화재를 진압하거나, 반경 내 아군을 치유시킵니다. +mech.omega-mech.name=오메가 +mech.omega-mech.weapon=전방 유도미사일 +mech.omega-mech.ability=방어모드 +mech.omega-mech.description=지상 기체 최종판이자 건물 파괴용으로 적합한 부피가 크고 튼튼한 기체. 방어 모드는 최대 90% 의 피해를 줄일 수 있습니다. +mech.dart-ship.name=다트 +mech.dart-ship.weapon=소총 +mech.dart-ship.description=표준 비행선. 빠르고 가볍지만 공격력이 거의 없고 채광 속도가 느립니다. +mech.javelin-ship.name=자비린 +mech.javelin-ship.description=치고 빠지는 공격을 위한 비행선. 처음에는 느리지만, 가속도가 붙어 엄청난 속도로 미사일 피해를 입힐 수 있으며, 전격 능력을 사용할 수 있습니다. +mech.javelin-ship.weapon=유도 미사일 +mech.javelin-ship.ability=가속 전격 생성기 +mech.trident-ship.name=삼지창 +mech.trident-ship.description=대형 공중 폭격기. 당연하게도 엄청 단단합니다. +mech.trident-ship.weapon=폭탄 저장고 +mech.glaive-ship.name=글레브 +mech.glaive-ship.description=크고 잘 무장된 총을 가진 비행선. 방화용 리피터가 장착되어 있으며, 가속도와 최대속도가 높습니다. +mech.glaive-ship.weapon=방화총 +text.item.explosiveness=[LIGHT_GRAY]폭발력 : {0} +text.item.flammability=[LIGHT_GRAY]인화성 : {0} +text.item.radioactivity=[LIGHT_GRAY]방사능 : {0} +text.item.fluxiness=[LIGHT_GRAY]플럭스 파워 : {0} +text.unit.health=[LIGHT_GRAY]체력 : {0} +text.unit.speed=[LIGHT_GRAY]속도 : {0} +text.mech.weapon=[LIGHT_GRAY]무기 : {0} +text.mech.armor=[LIGHT_GRAY]방어력 : {0} +text.mech.itemcapacity=[LIGHT_GRAY]아이템 수용 용량 : {0} +text.mech.minespeed=[LIGHT_GRAY]채광 속도 : {0} +text.mech.minepower=[LIGHT_GRAY]채광 레벨 : {0} +text.mech.ability=[LIGHT_GRAY]능력 : {0} +text.liquid.heatcapacity=[LIGHT_GRAY]발열량 : {0} +text.liquid.viscosity=[LIGHT_GRAY]점도 : {0} +text.liquid.temperature=[LIGHT_GRAY]온도 : {0} +block.constructing={0}[LIGHT_GRAY](만드는중) +block.spawn.name=적 스폰지점 +block.core.name=코어 +block.metalfloor.name=철판 +block.deepwater.name=깊은물 +block.water.name=물 +block.lava.name=용암 +block.tar.name=타르 +block.blackstone.name=검은돌 +block.stone.name=돌 +block.dirt.name=흙 +block.sand.name=모래 +block.ice.name=얼음 +block.snow.name=눈 +block.grass.name=잔디 +block.shrub.name=관목 +block.rock.name=바위 +block.blackrock.name=검은바위 +block.icerock.name=얼음바위 +block.copper-wall.name=구리벽 +block.copper-wall-large.name=큰 구리벽 +block.dense-alloy-wall.name=합금 벽 +block.dense-alloy-wall-large.name=큰 합금 벽 +block.phase-wall.name=메타벽 +block.phase-wall-large.name=큰 메타벽 +block.thorium-wall.name=토륨벽 +block.thorium-wall-large.name=대형 토륨벽 +block.door.name=문 +block.door-large.name=대형문 +block.duo.name=듀오 +block.scorch.name=스코치 +block.hail.name=헤일 +block.lancer.name=랜서 +block.conveyor.name=컨베이어 +block.titanium-conveyor.name=티타늄 컨베이어 +block.junction.name=교차기 +block.router.name=분배기 +block.distributor.name=대형 분배기 +block.sorter.name=필터 +block.sorter.description=아이템을 넣어서 필터에 설정된 아이템일 경우 바로 앞으로 통과하며, 그렇지 않을 경우 옆으로 통과합니다. +block.overflow-gate.name=오버플로 게이트 +block.overflow-gate.description=정면으로 가는 자원이 막히면 옆으로 출력하고, 그렇지 않으면 계속 정면으로 출력합니다. +block.smelter.name=제련소 +block.arc-smelter.name=대형 제련소 +block.silicon-smelter.name=실리콘 제련소 +block.phase-weaver.name=메타 합성기 +block.pulverizer.name=분쇄기 +block.cryofluidmixer.name=냉각수 제조기 +block.melter.name=융해기 +block.incinerator.name=소각로 +block.biomattercompressor.name=바이오메터 압축기 +block.separator.name=셉터 +block.centrifuge.name=원심 분리기 +block.power-node.name=전력 송신기 +block.power-node-large.name=대형 전력 송신기 +block.battery.name=배터리 +block.battery-large.name=대형 배터리 +block.combustion-generator.name=석탄 발전기 +block.turbine-generator.name=터빈 발전기 +block.mechanical-drill.name=기계식 드릴 +block.pneumatic-drill.name=강철 드릴 +block.laser-drill.name=레이저 드릴 +block.water-extractor.name=물 추출기 +block.cultivator.name=온실 +block.alpha-mech-pad.name=알파 기체 패드 +block.dart-ship-pad.name=다트 비행선 패드 +block.delta-mech-pad.name=델타 기체 패드 +block.javelin-ship-pad.name=자비린 비행선 패드 +block.trident-ship-pad.name=삼지창 비행선 패드 +block.glaive-ship-pad.name=글레브 비행선 패드 +block.omega-mech-pad.name=오메가 기체 패드 +block.tau-mech-pad.name=타우 기체 패드 +block.conduit.name=파이프 +block.mechanical-pump.name=기계식 펌프 +block.itemsource.name=아이템 소스 +block.itemvoid.name=아이템 삭제 장치 +block.liquidsource.name=무한 액체공급 장치 +block.powervoid.name=방전장치 +block.powerinfinite.name=무한 전력공급 장치 +block.unloader.name=언로더 +block.vault.name=창고 +block.wave.name=파도 +block.swarmer.name=스웜 +block.salvo.name=살보 +block.ripple.name=립플 +block.phase-conveyor.name=메타 컨베이어 +block.bridge-conveyor.name=터널 +block.plastanium-compressor.name=플라스터늄 압축기 +block.pyratite-mixer.name=피라테 제조기 +block.blast-mixer.name=폭발물 제조기 +block.solidifer.name=고체 +block.solar-panel.name=태양 전지판 +block.solar-panel-large.name=대형 태양 전지판 +block.oil-extractor.name=석유 추출기 +block.spirit-factory.name=스피릿 드론 공장 +block.phantom-factory.name=팬텀 드론 공장 +block.wraith-factory.name=유령 전투기 공장 +block.ghoul-factory.name=구울 폭격기 공장 +block.dagger-factory.name=디거 기체 공장 +block.titan-factory.name=타이탄 기체 공장 +block.fortress-factory.name=포트리스 기체 공장 +block.revenant-factory.name=레비던트 전투기 공장 +block.repair-point.name=정비소 +block.pulse-conduit.name=퓨즈 파이프 +block.phase-conduit.name=메타 파이프 +block.liquid-router.name=액체 분배기 +block.liquid-tank.name=물탱크 +block.liquid-junction.name=액체 교차기 +block.bridge-conduit.name=다리 파이프 +block.rotary-pump.name=동력 펌프 +block.thorium-reactor.name=토륨 원자로 +block.command-center.name=명령 본부 +block.mass-driver.name=물질 이동기 +block.blast-drill.name=고속 발열 드릴 +block.thermal-pump.name=화력 펌프 +block.thermal-generator.name=열발전기 +block.alloy-smelter.name=설금 제련소 +block.mend-projector.name=수리 프로젝터 +block.surge-wall.name=설금벽 +block.surge-wall-large.name=큰 설금벽 +block.cyclone.name=사이클론 +block.fuse.name=퓨즈 +block.shock-mine.name=전격 지뢰 +block.overdrive-projector.name=오버드라이브 프로젝터 +block.force-projector.name=보호막 프로젝터 +block.arc.name=Arc +block.rtg-generator.name=토륨 발전소 +block.spectre.name=스펙터 +block.meltdown.name=멜트다운 +block.container.name=컨테이너 +team.blue.name=블루팀 +team.red.name=레드팀 +team.orange.name=오렌지팀 +team.none.name=공기팀 +team.green.name=그린팀 +team.purple.name=보라색팀 +unit.alpha-drone.name=알파 드론 +unit.spirit.name=스피릿 드론 +unit.spirit.description=기본 드론 유닛. 기본적으로 코어에서 1개가 스폰됩니다. 자동으로 채광하며 아이템을 수집하고, 블록을 수리합니다. +unit.phantom.name=팬텀 드론 +unit.phantom.description=첨단 드론 유닛. 광석을 자동으로 채광하며, 아이템을 수집하고 블록을 수리합니다. 일반 드론보다 훨씬 효과적입니다. +unit.dagger.name=디거 +unit.dagger.description=기본 지상 유닛입니다. 스웜과 같이 쓰면 유용합니다. +unit.titan.name=타이탄 +unit.titan.description=고급 지상 유닛입니다. 고밀도 합금을 탄약으로 사용하며 지상과 공중 둘다 공격할 수 있습니다. +unit.ghoul.name=구울 폭격기 +unit.ghoul.description=무거운 지상 폭격기 입니다. 폭발물 또는 피라테를 탄약으로 사용합니다. +unit.wraith.name=유령 전투기 +unit.wraith.description=코어를 집중적으로 공격하는 방식을 사용하는 전투기 입니다. +unit.fortress.name=포트리스 +unit.fortress.description=중포 지상 유닛. 높은 공격력과 체력을 가지고 있습니다. +unit.revenant.name=레비던트 +unit.revenant.description=대형 레이저를 발사하는 공중 유닛입니다. +tutorial.begin=플레이어의 주요 목표는 [LIGHT_GRAY]적군[]을 제거하는 것입니다.\n\n이 게임은 [accent]구리를 채광[]하는 것으로 시작합니다.\n이것을 하기 위해 플레이어의 중심부 근처에 있는 구리 광맥을 누르세요. +tutorial.drill=수동으로 채광하는 것은 효율이 낮습니다.\n[accent]드릴[]은 자동으로 채광 작업을 합니다.\n구리 광맥에 표시된 영역에 드릴을 하나를 놓으세요. +tutorial.conveyor=[accent]컨베이어[]를 사용하여 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요. +tutorial.morecopper=더 많은 구리가 필요합니다.\n\n수동으로 채광하거나, 드릴을 더 설치하세요. +tutorial.turret=방어 구조물은 [LIGHT_GRAY]적[]을 물리치기 위해 반드시 필요합니다.\n기지 근처에 듀오 터렛을 설치하세요. +tutorial.drillturret=듀오 터렛이 작동하기 위해서는[accent] 구리 탄약 []을 필요로 합니다.\n터렛 옆에 드릴을 설치하여 구리를 공급하세요. +tutorial.waves=[LIGHT_GRAY]적[]이 접근합니다.\n\n2단계 동안 코어를 보호하고 더 많은 터렛을 만드세요. +tutorial.lead=더 많은 광석을 이용할 수 있습니다. [accent]납[]을 찾아 탐색하세요.\n\n아이템을 코어로 전송할려면 플레이어 기체 또는 비행기에서 코어로 드래그 하세요. +tutorial.smelter=구리와 납은 약한 금속입니다.\n[accent]고밀도 합금[]은 제련소에서 만들 수 있습니다.\n\n하나 만드세요. +tutorial.densealloy=이 제련소는 이제 고밀도 합금을 생산할 것입니다.\n몇개 더 생산하세요.\n필요한 경우 더 만드세요. +tutorial.siliconsmelter=이제 이코어는 채굴과 수리하기 위한[accent] 스피릿 드론[]을 생성 할 것 입니다.\n\n[accent]실리콘[]을 사용해 다른 유닛을 생성하기 위한 공장을 만들 수 있습니다.\n실리콘 제련기를 제작하세요! +tutorial.silicondrill=실리콘을 제작하려면[accent] 석탄[] 과[accent] 모래[]가 필요합니다.\n드릴을 먼저 건설해보는건 어떤가요? +tutorial.generator=이 건물은 [LIGHT_YELLOW]전력[]이 필요합니다.\n[accent] 석탄 발전기[]를 건설하세요. +tutorial.generatordrill=[accent] 석탄 발전기[]는 연료가 필요합니다.\n[accent] 석탄[]을 드릴로 채굴해서 연료를 체워주세요. +tutorial.node=전력은 송신해줄 송신기가 필요합니다.\n[accent] 전력 송신기[]를 석탄 등등 발전기 옆에 설치해서 생산된 전기를 다른곳으로 송신합시다. +tutorial.nodelink=전력은 전력 블록과 발전기에 연결하거나, 연결된 전력 송신기를 통해 전송이 가능합니다. \n\n전력 송신기를 누르고 발전기와 실리콘 제련기를 선택하여 전원을 연결합시다. +tutorial.silicon=실리콘이 생산되고 있습니다.\n\n생산 시스템의 개선을 권고 드립니다. +tutorial.daggerfactory=이[accent] 디거 기체 공장[]은\n\n공격하는 기체를 생산하기 위해 사용됩니다. +tutorial.router=공장을 작동시키기 위해 자원이 필요합니다.\n컨베이어에 운반되고 있는 자원을 분할할 분배기를 만드세요. +tutorial.dagger=전력 노드를 공장에 연결하세요.\n일단 요구 사항이 충족되면 기체 생산을 시작합니다.\n\n필요에 따라 드릴 및 발전기, 컨베이어를 더 많이 만들 수 있습니다. +tutorial.battle=[LIGHT_GRAY]적[]의 코어가 드러났습니다.\n당신의 부대와 디거를 사용하여 파괴하세요. +block.core.description=게임에서 가장 중요한 건물.\n파괴되면 게임이 끝납니다. +block.copper-wall.description=구리로 만든 벽. +block.copper-wall-large.description=구리로 만든 큰 벽. +block.dense-alloy-wall.description=고밀도 합금으로 만든 벽. 구리벽보다 체력이 높습니다. +block.dense-alloy-wall-large.description=고밀도 합금으로 만든 큰 벽. +block.thorium-wall.description=토륨으로 만든 벽. +block.thorium-wall-large.description=토륨으로 만든 큰 벽. +block.phase-wall.description=날라오는 모든 총알을 튕겨내고 데미지를 입는 특수한 벽입니다. +block.phase-wall-large.description=메타로 제작한 큰 벽. 날라오는 총알을 모두 튕겨냅니다. +block.surge-wall.description=데미지를 입으면 번개를 일으켜 대상에게 피해를 입히는 특수한 벽입니다. +block.surge-wall-large.description=설금을 재료로 한 큰 벽.\n데미지를 입으면 번개를 일으켜 대상에게 피해를 입힙니다. +block.door.description=유닛이 지나갈 수 있도록 만든 문. 클릭하면 열고 닫습니다. +block.door-large.description=유닛이 자나갈 수 있도록 만든 큰 문. 클릭하면 열고 닫습니다. +block.mend-projector.description=주위 건물을 치료하는 건물입니다. +block.overdrive-projector.description=범위 내 모든 행동의 속도를 높여주는 보조형 건물입니다. +block.force-projector.description=보호막을 생성하는 건물.\n기본적으로 전력만 있으면 작동하지만, 메타를 넣어 보호막의 범위를 크게 확장시킬 수 있습니다. +block.shock-mine.description=적이 이 블록을 지나가면 전격 공격을 하는 함정형 방어 건물입니다. +block.duo.description=범용성을 가진 터렛.\n지상 및 공중공격을 하며, 초중반에 유용합니다. +block.arc.description=목표 방향으로 전격 공격을 하는 포탑입니다. +block.hail.description=장거리 지상 공격을 하는 터렛입니다.\n적이 오기 전에 쓸어버릴 수 있습니다. +block.lancer.description=중거리 레이져 포탑입니다.\n적을 관통하기 때문에 뭉쳐있는 적들에게 매우 효과적입니다. +block.wave.description=적이 있는 자리에 액체를 뿌립니다.\n이 포탑을 활용하여 액체를 뿌린 곳에 불을 붙이거나 적을 느리게 할 수 있습니다. +block.salvo.description=명중률이 높고, 3발씩 끊어 발사하는 포탑입니다. +block.swarmer.description=4발씩 끊어서 유도체를 발사하는 포탑입니다 +block.ripple.description=4개의 탄약으로 나눠 발사하여 명중률이 낮지만, 사거리가 매우 긴 포탑입니다. +block.cyclone.description=낮은 명중률과 높은 RPM 을 가진 포탑입니다.\n탄약이 남아있는 한 멈추지 않고 계속 연사합니다. +block.fuse.description=단거리에서 범위형 레이저를 발사하는 포탑입니다. +block.spectre.description=높은 명중률과 RPM 을 가진 포탑입니다.\n탄약이 남아있는 한 멈추지 않고 계속 연사합니다. +block.meltdown.description=목표를 따라 초대형 레이져를 발사하는 포탑입니다.\n뭉쳐있는 몹에게 매우 효과가 좋습니다. +block.conveyor.description=느린 속도로 자원을 수송할 수 있는 컨베이어. +block.titanium-conveyor.description=빠른 속도로 자원을 수송할 수 있는 컨베이어. +block.phase-conveyor.description=자원을 순간이동 시켜 주는 컨베이어 입니다. +block.junction.description=컨베이어를 교차시켜 자원을 수송할 때 사용할 수 있는 블록입니다. +block.mass-driver.description=자원을 받아서 다른 물질 이동기로 전달할 수 있는 블록입니다.\n엄청난 사거리를 가지고 있으며, 주로 컨베이어가 접근할 수 없는 곳에 유용하게 사용됩니다. +block.smelter.description=고밀도 합금을 제작할 수 있는 건물입니다. +block.arc-smelter.description=고밀도 합금을 제작할 수 있는 건물이지만, 이 건물은 석탄이 필요 없고 좀더 빠른 속도로 합금을 생산해낼 수 있습니다. +block.silicon-smelter.description=실리콘을 제작할 수 있는 건물입니다. +block.plastanium-compressor.description=플라스터늄을 제조할 수 있는 건물입니다. +block.phase-weaver.description=메타를 제작할 수 있는 건물입니다. +block.alloy-smelter.description=설금을 제작할 수 있는 건물입니다. +block.pulverizer.description=돌을 갈아서 모래로 만들 수 있는 건물입니다. +block.pyratite-mixer.description=피라테를 제조할 수 있는 건물입니다. +block.blast-mixer.description=폭발물을 제조할 수 있는 건물입니다. +block.cryofluidmixer.description=냉각수를 제작할 수 있는 건물입니다. +block.solidifer.description=용암을 돌로 만들 수 있는 건물입니다. +block.melter.description=돌로 용암을 만들 수 있는 건물입니다. +block.incinerator.description=불필요한 아이템을 소각시켜 줄 수 있는 건물입니다. +block.biomattercompressor.description=잔디밭에서 바이오메터를 추출할 수 있는 건물입니다. +block.separator.description=돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물입니다. +block.centrifuge.description=돌을 분해하여 각종 자원으로 재활용 할 수 있게 해 주는 건물이지만, 이 건물은 좀 더 다양한 자원을 얻을 수 있게 해 줍니다. +block.power-node.description=생성된 전력를 다른 건물로 전달하기 위한 전력 노드입니다. +block.power-node-large.description=생성된 전력를 다른 건물로 전달하기 위한 건물이며, 일반 노드보다 더 많은 전력을 이동시킬 수 있습니다. +block.battery.description=흔히 아는 충전식 배터리입니다.\n전력을 사용하는 건물에 전력이 떨어질경우, 이 배터리를 전력 노드에 연결하면 이 배터리에 저장된 전력을 소모하여 지속적으로 공급할 수 있습니다. +block.battery-large.description=일반 배터리보다 용량이 매우 커진 커진 배터리. +block.combustion-generator.description=석탄을 연료로 전력를 생산해내는 발전소 입니다. +block.turbine-generator.description=석탄 발전기보다 더 많은량의 전력를 생산하는 발전기입니다. +block.thermal-generator.description=용암을 원료로 전력을 생산할 수 있는 발전소입니다. +block.solar-panel.description=태양열을 받아 자기 스스로 전력을 생산하는 건물입니다. +block.solar-panel-large.description=태양열을 받아 자기 스스로 전력을 생산하지만, 이 블록은 더 빨리 전력을 생산할 수 있습니다. +block.thorium-reactor.description=토륨을 원료로 하는 토륨 원자로 입니다.\n많은 전력을 생산하지만 엄청난 열을 발생시키기 때문에, 많은 량의 물 또는 냉각수가 있어야 터지지 않고 작동합니다. +block.rtg-generator.description=냉각은 필요 없지만 토륨 원자로보다 적은량의 전력을 생산하는 방사선 동위원소 열전자 발전기. +block.unloader.description=해당 창고 및 코어에서 자원을 빼내는데 사용됩니다. +block.container.description=아이템을 임시로 저장할 수 있는 소형 창고입니다. +block.vault.description=아이템을 임시로 저장할 수 있는 대형 창고입니다. +block.mechanical-drill.description=구리로 제작할 수 있는 기본 드릴입니다. +block.pneumatic-drill.description=돌, 티타늄을 채광할 수 있는 고급 드릴입니다. +block.laser-drill.description=토륨을 채광할 수 있는 최고급 드릴입니다.\n전력과 물을 공급하여 빠른 속도로 채광할 수 있습니다. +block.blast-drill.description=최상위 드릴입니다. 엄청난 양의 전력과 물을 소모하는 대신, 매우 빠른 속도로 채광합니다. +block.water-extractor.description=바닥에서 물을 추출하여 건물에 공급할 수 있는 건물입니다. +block.cultivator.description=잔디에서 바이오메터를 추출할 수 있는 건물입니다. +block.oil-extractor.description=석유를 추출 해 주는 건물입니다. +block.dart-ship-pad.description=다트 비행선으로 바꿀 수 있는 패드입니다. +block.trident-ship-pad.description=삼지창 비행선으로 바꿀 수 있는 패드입니다. +block.javelin-ship-pad.description=자비린 비행선으로 바꿀 수 있는 패드입니다. +block.glaive-ship-pad.description=글레브 비행선으로 바꿀 수 있는 패드입니다. +block.tau-mech-pad.description=타우 기체로 바꿀 수 있는 패드 +block.delta-mech-pad.description=델타 기체로 바꿀 수 있는 패드입니다. +block.omega-mech-pad.description=오메가 기체로 바꿀 수 있는 패드 +block.spirit-factory.description=스피릿 유닛을 생산하는 공장입니다. +block.phantom-factory.description=유닛 팬텀을 생산하는 공장입니다. +block.wraith-factory.description=유닛 유령 전투기를 소환하는 공장입니다. +block.ghoul-factory.description=구울 유닛을 생산하는 공장입니다. +block.dagger-factory.description=디거를 생산하는 공장입니다. +block.titan-factory.description=타이탄 유닛을 생산할 수 있는 공장입니다. +block.fortress-factory.description=포트리스를 생산하는 공장입니다. +block.revenant-factory.description=레비던트 유닛을 생산할 수 있는 공장입니다. +block.repair-point.description=근처 유닛들을 수리하는 건물입니다. +block.command-center.description=생산된 유닛들을 제어할 수 있는 건물.\n첫번째 버튼은 적 기지로 공격하며, 두번째는 대기 상태, 세번째는 기지 근처를 돌며 정찰합니다. +block.conduit.description=일반 파이프. 액체가 지나갈 수 있도록 해 줍니다. +block.pulse-conduit.description=티타늄으로 만들어 졌으며, 일반 파이프보다 액체 수용량이 높습니다. +block.phase-conduit.description=물을 먼거리로 순간이동 시켜 주는 장치입니다. +block.liquid-router.description=물펌프를 다른 방향으로 분배할 수 있게 하는 블럭입니다. +block.liquid-tank.description=액체 종류를 저장할 수 있는 물탱크 입니다. +block.liquid-junction.description=물펌프와 다른 물펌프를 서로 교차시키게 할 수 있는 블럭입니다. +block.bridge-conduit.description=다리와 다리 사이를 연결하여 액체가 지나갈 수 있게 해 줍니다.\n주로 다리 사이에 지나갈 수 없는 장애물이 있을 때 사용합니다. +block.mechanical-pump.description=구리로 제작할 수 있는 기계식 물펌프입니다. +block.rotary-pump.description=일반 물 펌프보다 더 빠른 속도로 물을 끌어올릴 수 있는 펌프입니다. +block.thermal-pump.description=기계식 펌프보다 3배 빠른 속도로 액체를 퍼올릴 수 있는 펌프이며, 용암도 퍼올릴 수 있는 유일한 펌프입니다. +block.router.description=한 방향에서 아이템을 받은 후 최대 3개의 다른 방향으로 동일하게 출력합니다.\n재료를 한곳에서 여러 대상으로 분할하여 운반하는데 유용합니다. +block.distributor.description=아이템을 최대 7개의 다른 방향으로 똑같이 분할하는 고급 분배기. +block.bridge-conveyor.description=고급 자원 수송 블록.\n지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다. +block.alpha-mech-pad.description=알파 기체로 바꿀 수 있는 패드입니다. +block.itemsource.description=자원을 선택하면 그 자원이 무한하게 생성되는 블록입니다. +block.liquidsource.description=무한한 액체를 출력해냅니다. +block.itemvoid.description=아이템을 사라지게 만듭니다. +block.powerinfinite.description=무한한 전력을 공급해주는 블록입니다. +block.powervoid.description=설정된 아이템을 계속해서 출력하는 블록입니다. +liquid.water.description=지상 유닛이 이 위를 지나가면 이동속도가 느려지고, 깊은 물에 빠지면 죽습니다. +liquid.lava.description=지상 유닛이 이 위를 지나가면 이동속도가 매우 느려지고, 지속적으로 데미지를 입습니다. +liquid.oil.description=일부 조합 블록에서 사용되는 자원입니다. +liquid.cryofluid.description=포탑 및 토륨 원자로에서 사용되는 자원입니다. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 850ad3327e..fe40ac1fe6 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = Strona itch.io z oficjanymi wersjami do pobrania text.link.google-play.description = Google Play store listing text.link.wiki.description = Oficjana Wiki Mindustry text.linkfail = Nie udało się otworzyć linku!\nURL został skopiowany. -text.editor.web = Wersja przeglądarkowa nie wspomaga edytora map!\nPobierz grę aby użyć edytora. -text.web.unsupported = Wersja przeglądarkowa nie wspomaga tej fukcji!\nPobierz grę aby użyć tej funkcji. text.gameover = Rdzeń został zniszczony. text.gameover.pvp = The[accent] {0}[] team is victorious! text.sector.gameover = This sector has been lost. Re-deploy? @@ -370,6 +368,7 @@ setting.musicvol.name = Głośność muzyki setting.mutemusic.name = Wycisz muzykę setting.sfxvol.name = Głośność dźwięków setting.mutesound.name = Wycisz dźwięki +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Zmień ustawienia przycisków category.general.name = General category.view.name = View @@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Ability: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Wytrzymałość na przegrzewanie: {0} text.liquid.viscosity = [LIGHT_GRAY]Lepkość: {0} text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = Enemy Spawn block.core.name = Core block.metalfloor.name = Metal Floor diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index e36c930dce..0550933b49 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = Pagina da Itch.io com os Downloads text.link.google-play.description = Google Play store listing text.link.wiki.description = Wiki oficial do Mindustry text.linkfail = Falha ao abrir o link\nO Url foi copiado -text.editor.web = A versão web não suporta o editor!\nBaixe o jogo para usar. -text.web.unsupported = A versão web não suporta este recurso! Baixe o jogo para usar. text.gameover = O núcleo foi destruído. text.gameover.pvp = The[accent] {0}[] team is victorious! text.sector.gameover = Esse setor foi perdido! Soltar Novamente? @@ -370,6 +368,7 @@ setting.musicvol.name = Volume da Música setting.mutemusic.name = Desligar Música setting.sfxvol.name = Volume de Efeitos setting.mutesound.name = Desligar Som +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Refazer teclas category.general.name = General category.view.name = View @@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Ability: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Capacidade de aquecimento: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosidade: {0} text.liquid.temperature = [LIGHT_GRAY]Temperatura: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = Enemy Spawn block.core.name = Core block.metalfloor.name = Metal Floor diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 9c4d361ef3..478dc8dbbf 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = itch.io страница с загрузкой text.link.google-play.description = Скачать для Android c Google play text.link.wiki.description = Официальная вики Mindustry(англ.) text.linkfail = Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена. -text.editor.web = Веб-версия не поддерживает редактор!\nЗагрузите игру, чтобы использовать его. -text.web.unsupported = Веб-версия не поддерживает эту функцию! Загрузите игру, чтобы использовать её. text.gameover = Игра окончена text.gameover.pvp = [accent] {0}[] команда победила! text.sector.gameover = Этот сектор потерян. Высадится повторно? @@ -50,9 +48,9 @@ text.mission.main = Главная мисия:[LIGHT_GRAY] {0} text.mission.info = Информация о миссии text.mission.complete = Миссия выполнена! text.mission.complete.body = Сектор {0},{1} был завоёван. -text.mission.wave = Пережить следующее количество волн: [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 = Осталось[accent] {0}[] волн из[accent] {1}[]\nВолна через {2} +text.mission.wave.enemies = Осталось[accent] {0}/{1}[] волн:\n{2} враг. +text.mission.wave.enemy = Осталось[accent] {0}/{1}[] волн\n{2} враг text.mission.wave.menu = Пережить[accent] {0} []волн text.mission.battle = Уничтожьте ядро противника. text.mission.resource.menu = Добыть {0} х{1} @@ -262,13 +260,13 @@ text.editor = Редактор text.mapeditor = Редактор карт text.donate = Донат text.connectfail = [crimson]Не удалось подключиться к серверу: [accent] {0} -text.error.unreachable = Server unreachable. -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.mismatch = Packet error:\npossible client/server version mismatch.\nMake sure you and the host have the latest version of Mindustry! -text.error.alreadyconnected = Already connected. +text.error.unreachable = Сервер недоступен. +text.error.invalidaddress = Некорректный адрес. +text.error.timedout = Время ожидания истекло!\nУбедитесь, что хост настроен для перенаправления портов и адрес корректный! +text.error.mismatch = Ошибка пакета:\nвозможное несоответствие версии клиента/сервера. \nУбедитесь, что у вас и у создателя сервера установлена последняя версия Mindustry\\! +text.error.alreadyconnected = Вы уже подключены. text.error.mapnotfound = Map file not found! -text.error.any = Unkown network error. +text.error.any = Неизвестная сетевая ошибка. text.settings.language = Язык text.settings.reset = Сбросить по умолчанию text.settings.rebind = Смена @@ -370,6 +368,7 @@ setting.musicvol.name = Громкость музыки setting.mutemusic.name = Заглушить музыку setting.sfxvol.name = Громкость звуковых эффектов setting.mutesound.name = Заглушить звук +setting.crashreport.name = Отправлять анонимные отчёты о сбоях text.keybind.title = Настройка управления category.general.name = Основное category.view.name = Просмотр @@ -434,10 +433,10 @@ item.silicon.name = Кремень item.silicon.description = Очень полезный полупроводник с применениями в солнечных батареях и множестве сложной электроники. item.plastanium.name = Пластиний item.plastanium.description = Легкий, пластичный материал, используемый в современных самолетах и боеприпасах для фрагментации. -item.phase-fabric.name = Phase Fabric -item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology. +item.phase-fabric.name = Фазовая ткань +item.phase-fabric.description = Невесомое вещество, используемое в современной электронике и технологии самовосстановления. item.surge-alloy.name = Высокопрочный сплав -item.surge-alloy.description = An advanced alloy with unique electrical properties. +item.surge-alloy.description = Передовой сплав с уникальными электрическими свойствами. item.biomatter.name = Биоматерия item.biomatter.description = Скопление органической кашки; используется для переработки в нефть или в качестве топлива. item.sand.name = Песок @@ -494,13 +493,14 @@ text.mech.ability = [LIGHT_GRAY]Способность: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Теплоёмкость: {0} text.liquid.viscosity = [LIGHT_GRAY]Вязкость: {0} text.liquid.temperature = [LIGHT_GRAY]Температура: {0} +block.constructing = {0}\n[LIGHT_GRAY](В процессе) block.spawn.name = Спаун врагов block.core.name = Ядро block.metalfloor.name = Мeталичeский пoл block.deepwater.name = Глубоководье block.water.name = Вода block.lava.name = Лава -block.tar.name = Tar +block.tar.name = Дёготь block.blackstone.name = Чёрный камень block.stone.name = Камень block.dirt.name = Земля @@ -557,9 +557,9 @@ block.pneumatic-drill.name = Пневматический бур block.laser-drill.name = Лазерный бур block.water-extractor.name = Экстрактор воды block.cultivator.name = Культиватор -block.alpha-mech-pad.name = Завод мехов "Альфа" -block.dart-ship-pad.name = Реконструктор дротиковых самолётов -block.delta-mech-pad.name = Завод мехов "Дельта" +block.alpha-mech-pad.name = Реконструктор мехов "Альфа" +block.dart-ship-pad.name = Реконструктор кораблей "Дротик" +block.delta-mech-pad.name = Реконструктор мехов "Дельта" block.javelin-ship-pad.name = Реконструктор кораблей "Джавелин" block.trident-ship-pad.name = Реконструктор кораблей "Трезубeц" block.glaive-ship-pad.name = Реконструктор кораблей "Копьё" @@ -668,7 +668,7 @@ tutorial.daggerfactory = Постройте[accent] завод по произв tutorial.router = Заводы нуждаются в ресурсах для работы.\nСоздайте маршрутизатор для разделения ресурсов конвейера. tutorial.dagger = Соедините силовой узел с заводом.\nПосле выполнения требований будет создан мех. \n\nПри необходимости создайте дополнительные буры, генераторы и конвейеры. tutorial.battle = [LIGHT_GRAY] Враг[] показал своё ядро.\nУничтожьте его своим мехом и вашой новой боевой единицой. -block.copper-wall.description = Стена с самым маленьким запасом прочности.\n Хороша в начале игры для защиты. +block.copper-wall.description = Дешевый оборонительный блок.\nПолезно для защиты ядра и турелей во время первых волн. block.copper-wall-large.description = Большая стена самым маленьким запасом прочности.\n Хороша в начале игры. block.dense-alloy-wall.description = Стена с показателем прочности "ниже среднего". block.dense-alloy-wall-large.description = Большая стена с показателем прочности "ниже среднего". @@ -684,7 +684,7 @@ block.mend-projector.description = Ремонтирует строения в н block.overdrive-projector.description = Ускоряет в небольшом радиусе все ваши действия. block.force-projector.description = Создаёт в небольшом радиусе силовое поле, которое защищает от атак противника. block.shock-mine.description = Поставьте её на землю. Она бьётся ЭЛЕКТРИЧЕСТВОМ О_О -block.duo.description = Хорошая турель начальная турель. Используйте стены для её зашиты.\n\nИспользует в качестве снарядов медь, плотный сплав, кремний и пиротит.\n\nМожно подвести воду и криогенную жидкость для ускорения стрельбы. +block.duo.description = Маленькая и дешёвая турель. block.arc.description = Турель с малым радиусом атаки. В качестве патронов требует воду или криогенную жидкость. Также нужна энергия. block.hail.description = Дальнобойная начальная турель.\nИспользует в качестве снарядов плотный сплав, кремний и пиротит.\nДля ускорения стрельбы можно подвести воду и криогенную жидкость. block.lancer.description = Турель, которая стреляет лазером на среднее расстояние.\nИспользует в качестве снарядов энергию.\nДля ускорения стрельбы можно подвести воду, нефть и криогенную жидкость. @@ -727,54 +727,54 @@ block.thermal-generator.description = [accent]Горячее восприним block.solar-panel.description = Зелёная энергия. Бесконечный источник энергии. block.solar-panel-large.description = Зелёная энергия. Большой и бесконечный источник энергии. block.thorium-reactor.description = Производит энергию в большом количестве. Может взорваться. Требуется торий и жидкость для охлаждения (вода или криогенная). -block.rtg-generator.description = A radioisotope thermoelectric generator which does not require cooling but provides less power than a thorium reactor. +block.rtg-generator.description = Радиоизотопный термоэлектрический генератор, который не требует охлаждения, но обеспечивает меньшую мощность, чем ториевый реактор. block.unloader.description = Выгружает из ядра или хранилища верхний левый предмет. -block.container.description = Может хранить 500 ед. ресурсов. С помощью разгрузчика можно достать ресурсы из него. -block.vault.description = Хранит предметы в количестве до 2 000. -block.mechanical-drill.description = Самый первый доступный бур. Добывает медь, свинец, уголь, песок. Можно подвести к нему [BLUE] воду[] для увеличения скорости сверления. +block.container.description = Хранит небольшое количество предметов(250). Используйте его для создания буферов, когда существует непостоянная потребность в материалах. [LIGHT_GRAY] Разгрузчик[] можно использовать для извлечения элементов из хранилища. +block.vault.description = Хранит большое количество предметов(1000). Используйте его для создания буферов, когда существует непостоянная потребность в материалах.[LIGHT_GRAY] Разгрузчик[] можно использовать для извлечения элементов из хранилища. +block.mechanical-drill.description = Самый первый доступный бур. \n\nДобывает медь, свинец, уголь, песок. \n\nМожно подвести к нему [BLUE] воду[] для увеличения скорости сверления. block.pneumatic-drill.description = Улучшенная версия механического бура.\n\nДобывает тоже самое, что и механический бур. Также может добывать титан и камень.\n\nМожно подвести к нему[BLUE] воду[] для увеличения скорости сверления. block.laser-drill.description = Улучшенная версия пневматического бура.\n\nДобывает тоже самое, что и пневматический бур. Также может добывать торий.\n\nМожно подвести к нему[BLUE] воду[] для увеличения скорости сверления. -block.blast-drill.description = Самый мощный бур.\n\n Добывает тоже самое, что и лазерный бур. Сверлит быстрей всех буров, но требует ещё больше энергии.\n\n Можно подвести к нему [BLUE]воду[] для увеличения скорости сверления. -block.water-extractor.description = Добывает воду из земли. Требует Энергию. -block.cultivator.description = Производит биоматерию из травы и воды. Требует энергии. -block.oil-extractor.description = Производит нефть из динозавров(зачёркнуто), воды и песка. Требует энергии. -block.dart-ship-pad.description = Превращает вас в дротиковый самолёт. Реконструктор требует энергию.\nПодробности про дротиковых самолётов в "разблокированное". -block.trident-ship-pad.description = Превращает вас в Трезубeц. Реконструктор требует энергию.\nПодробности про Трезубeц в "разблокированное". -block.javelin-ship-pad.description = Превращает вас в Джавелин. Реконструктор требует энергию.\nПодробности про Джавелин в "разблокированное". +block.blast-drill.description = Самый мощный бур.\n\nДобывает тоже самое, что и лазерный бур. Сверлит быстрей всех буров, но требует ещё больше энергии.\n\nМожно подвести к нему [BLUE]воду[] для увеличения скорости сверления. +block.water-extractor.description = Извлекает воду из земли. Используйте его, когда поблизости нет озера. +block.cultivator.description = Культирует почву водой для получения биоматерии. +block.oil-extractor.description = Использует большое количество энергии для добычи нефти из песка, динозавров(зачёркнуто). Используйте его, когда поблизости нет прямого источника нефти. +block.dart-ship-pad.description = Оставьте свое текущее судно и перейдите на основной истребитель.\nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех. +block.trident-ship-pad.description = Оставьте свой текущий корабль и перейдите в достаточно хорошо бронированный тяжёлый бомбардировщик.\nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех. +block.javelin-ship-pad.description = Оставьте свой текущий корабль и перейдите в сильный и быстрый перехватчик с молниеносным оружием.\nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех. block.glaive-ship-pad.description = Превращает вас в Копьё. Реконструктор требует энергию.\nПодробности про Копьё в "разблокированное". -block.tau-mech-pad.description = Превращает вас в Тау. Реконструктор требует энергию.\nПодробности про Тау в "разблокированное". -block.delta-mech-pad.description = Превращает вас в "Дельта". Реконструктор требует энергию.\nПодробности про "Дельта" в "разблокированное". -block.omega-mech-pad.description = Превращает вас в Омега. Реконструктор требует энергию.\nПодробности про Омега в "разблокированное". -block.spirit-factory.description = Производит дронов типа "призрак" -block.phantom-factory.description = Производит дронов типа "фантом"\nПодробности в "разблокированное" -block.wraith-factory.description = Производит призрачных истребителей\nПодробности в "разблокированное" -block.ghoul-factory.description = Производит гулевых бомбардировщиков\nПодробности в "разблокированное" -block.dagger-factory.description = Производит\nПодробности в "разблокированное" -block.titan-factory.description = Производит мехов типа "Титан".\nПодробности в "разблокированное" -block.fortress-factory.description = Огромный медленный мех обладающий такой-же огромной пушкой. -block.revenant-factory.description = Производит бомбардировщиков типа "Потусторонний убийца"\nПодробности в "разблокированное" +block.tau-mech-pad.description = Покиньте свой текущий корабль и превратитесь в мех поддержки, который может исцелять дружественные здания и юниты.\nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех. +block.delta-mech-pad.description = Оставьте свой текущий корабль и перейдите в большой, хорошо бронированный боевой корабль.\nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех. +block.omega-mech-pad.description = Оставьте свой текущий корабль и превратите его в громоздкий и хорошо бронированный мех, сделанный для фронтовых нападений. \nИспользуйте двойное нажатие, стоя на реконструкторе, чтобы превратиться в этот мех. +block.spirit-factory.description = Производит легкие дроны, которые добывают руду(медную и свинцовую) и ремонтирует блоки. +block.phantom-factory.description = Производит усовершенствованные единицы, которые значительно эффективнее, чем дрон-привидение. +block.wraith-factory.description = Производит быстрые и летающие боевые единицы. +block.ghoul-factory.description = Производит тяжёлых ковровых бомбардировщиков. +block.dagger-factory.description = Производит основных наземных боевых единиц. +block.titan-factory.description = Производит продвинутые защищённые боевые единицы. +block.fortress-factory.description = Производит тяжелые артиллерийские боевые единицы. +block.revenant-factory.description = Производит тяжелые наземные боевые единицы. block.repair-point.description = Может ремонтировать вас и ваши боевые единицы -block.command-center.description = Позволяет управлять боевыми единицами.\nСтрелочка - атаковать\nЩит - отступать. -block.conduit.description = Конвейер для жидкостей первого поколения. Медленная скорость передачи жидкости. -block.pulse-conduit.description = Конвейер для жидкостей второго поколения. -block.phase-conduit.description = Лучший трубопровод, требует энергию. Похоже, он из будущего. -block.liquid-router.description = Распределяет жидкость на 4 стороны. -block.liquid-tank.description = Хранит жидкость. -block.liquid-junction.description = Название говорит само за себя. С помощью него можно сделать две трубы, которые проходят через друг-друга и не смешиваются. -block.bridge-conduit.description = Позволяет проходить над возвышенностями(блоками). Лучше всего подключать последовательно и в линию. -block.mechanical-pump.description = Качает только воду. -block.rotary-pump.description = Качает воду и нефть. Требует энергии. -block.thermal-pump.description = Позволяет качать лаву, воду и нефть. -block.router.description = Принимает предметы из одного направления и равномерно выводит их до трех других направлений. Полезно для разделения материалов из одного источника на несколько целей. -block.distributor.description = Продвинутый маршрутизатор, который равномерно разбивает элементы до 7 направлений. -block.bridge-conveyor.description = Продвинутый транспортный блок элемента. Позволяет транспортировать предметы до 3-х плиток любого ландшафта или здания. -block.alpha-mech-pad.description = Превращает вас в "Альфа". Требует энергию.\n Подробности про "Альфа" в "разблокированное". -block.itemsource.description = Из этого блока можно получить любой предмет. -block.liquidsource.description = Из этого блока можно получить любую жидкость. -block.itemvoid.description = Предметы просто уходят в пустоту -block.powerinfinite.description = Бесконечность — не предел. -block.powervoid.description = Жидкости просто уходят в пустоту +block.command-center.description = Позволяет изменять дружественное поведение ИИ. В настоящее время поддерживаются команды атаки, отступления и патрулирования. +block.conduit.description = Основной блок транспортировки жидкости. Работает как конвейер, но с жидкостями. Лучше всего использовать экстракторы, насосы или т.п.. +block.pulse-conduit.description = Улучшенный блок транспортировки жидкости. Транспортирует жидкости быстрее и хранит больше, чем стандартные. +block.phase-conduit.description = Улучшенный блок транспортировки жидкости. Использует энергию для передачи жидкостей на подключенный фазовый канал на несколько плиток. +block.liquid-router.description = Принимает жидкости с одного направления и равномерно выводит их до трех других направлений. Может также хранить определенное количество жидкости. Полезно для разделения жидкостей из одного источника на несколько целей. +block.liquid-tank.description = Хранит большое количество жидкостей. Используйте его для создания буферов, когда существует непостоянная потребность в материалах или в качестве защиты для охлаждения жизненно важных блоков. +block.liquid-junction.description = Действует как мост для двух пересекающихся каналов. Полезно в ситуациях с двумя различными каналами, перевозящими различные жидкости в разные места. +block.bridge-conduit.description = Расширенный блок транспортировки жидкости. Позволяет транспортировать жидкости до 3 блоков любого ландшафта или здания. Лучше всего подключать последовательно и в линию. +block.mechanical-pump.description = Дешевый насос с медленным выкачиванием, но без потребления энергии. Качает только воду. +block.rotary-pump.description = Передовой насос, который удваивает скорость, используя энергию. +block.thermal-pump.description = Конечный насос. В три раза быстрее, чем механический насос и единственный насос, который способен извлекать лаву. +block.router.description = Принимает предметы из одного направления и равномерно выводит их до трёх других направлений. Полезно для разделения материалов из одного источника на несколько целей. +block.distributor.description = Передовой маршрутизатор, который равномерно разбивает элементы до 7 других направлений. +block.bridge-conveyor.description = Улучшенный транспортный блок элементов. Позволяет транспортировать предметы до 3-х блоков над любым ландшафтом или зданием. +block.alpha-mech-pad.description = Превращает вас в мех [accent] Альфа[]. Требует энергию. +block.itemsource.description = Бесконечно выводит предметы. Работает только в песочнице. +block.liquidsource.description = Бесконечно выводит жидкости. Работает только в песочнице. +block.itemvoid.description = Уничтожает любые предметы, которые входят в него, без использования энергии. Работает только в песочнице. +block.powerinfinite.description = Бесконечность — не предел. Бесконечно выводит энергию. Доступен только в песочнице. +block.powervoid.description = Энергия просто уходит в пустоту. Присутствует только в песочнице. liquid.water.description = Намного лучше чем [BLUE]монооксид дигидрогена[].\n\n Для получения воды используйте помпу(насос) на источнике(блоке) или экстрактор воды.\n\n Эту жидкость можно подвести к бурам для ускорения скорости добычи или к турелям для ускорения стрельбы. liquid.lava.description = [accent]Горячо...\nВещество расплавленное из горно-каменных пород.\nСлужит как топливо для термального генератора. -liquid.oil.description = Кто-то писал о добавлении золота в игру. Его добавили, правда оно какое-то чёрное...\nСмесь жидких углеводородов, выделяющаяся из природного газа в результате снижения температуры и пластового давления.\nСлужит для пластиенивого компрессора и т.д.. +liquid.oil.description = Кто-то писал о добавлении золота в игру. Его добавили, правда оно какое-то чёрное...\nСмесь жидких углеводородов, выделяющаяся из природного газа в результате снижения температуры и пластового давления.\nСлужит для пластиниевого компрессора и т.д.. liquid.cryofluid.description = Жидкость с температурой ниже чем -273 градусов по цельсию. Может быть использована для ускорения стрельбы турелей или для охлаждения чего-то. diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index ece71c0b5d..a93ca6ec6e 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = Bilgisayar ve Site versiyonunun bulundugu Site text.link.google-play.description = Google Play magaza sayfasi text.link.wiki.description = Orjinal Mindustry Bilgilendirme Sayfasi text.linkfail = Link Acilamadi!\nLink sizin icin kopyalandi. -text.editor.web = The web version does not support the editor!\nDownload the game to use it. -text.web.unsupported = Site versiyonu bunu desteklemiyor! Bilgisayar versiyonunu indirmeniz gerek. text.gameover = Cekirdegin yok edildi. text.gameover.pvp = The[accent] {0}[] team is victorious! text.sector.gameover = Sektor kaybedildi. Geri gitmek ister misin? @@ -370,6 +368,7 @@ setting.musicvol.name = Ses yuksekligi setting.mutemusic.name = Sesi kapat setting.sfxvol.name = Ses seviyesi setting.mutesound.name = Sesi kapat +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Tuslari ayarla category.general.name = General category.view.name = Goster @@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]yetenek gucu: {0} text.liquid.heatcapacity = [LIGHT_GRAY]isinma kapasitesi: {0} text.liquid.viscosity = [LIGHT_GRAY]Yari sivilik: {0} text.liquid.temperature = [LIGHT_GRAY]isi: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = Enemy Spawn block.core.name = cekirdek block.metalfloor.name = metal zemin diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 68df10afd4..f48c389c47 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = PC yüklemeleri ve web sürümü ile itch.io say text.link.google-play.description = Google Play mağaza sayfası text.link.wiki.description = Resmi Mindustry Wikipedi'si text.linkfail = Bağlantı açılamadı! URL, yazı tahtanıza kopyalandı. -text.editor.web = Web sürümü editörü desteklemiyor! Editörü kullanmak için oyunu indirin. -text.web.unsupported = The web version does not support this feature! Download the game to use it. text.gameover = Çekirdek yok edildi. text.gameover.pvp = The[accent] {0}[] team is victorious! text.sector.gameover = This sector has been lost. Re-deploy? @@ -370,6 +368,7 @@ setting.musicvol.name = Müzik sesi setting.mutemusic.name = Müziği Kapat setting.sfxvol.name = SFX Hacmi setting.mutesound.name = Sesi kapat +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Tuşları yeniden ayarla category.general.name = General category.view.name = View @@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Ability: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosity: {0} text.liquid.temperature = [LIGHT_GRAY]Temperature: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = Enemy Spawn block.core.name = Core block.metalfloor.name = Metal Floor diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 95630c8669..71b077368b 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -9,8 +9,6 @@ text.link.itch.io.description = Itch.io сторінка з веб-версіє text.link.google-play.description = Скачати з Google Play для Android text.link.wiki.description = Офіційна Mindustry вікі (англ.) text.linkfail = Не вдалося відкрити посилання!\nURL-адреса скопійовано у ваш буфер обміну. -text.editor.web = Веб-версія не підтримує редактора! \nЗавантажте гру, щоб використовувати його. -text.web.unsupported = Веб-версія не підтримує цю функцію! Завантажте гру, щоб використовувати її. text.gameover = Гру закінчено text.gameover.pvp = [accent] {0}[] команда перемогла! text.sector.gameover = Цей сектор було втрачено. Повторно висадитися? @@ -370,6 +368,7 @@ setting.musicvol.name = Гучність музики setting.mutemusic.name = Заглушити музику setting.sfxvol.name = Гучність звукових ефектів setting.mutesound.name = Заглушити звук +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = Налаштування управління category.general.name = Основне category.view.name = Перегляд @@ -494,6 +493,7 @@ text.mech.ability = [LIGHT_GRAY]Здібність: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Теплоємність: {0} text.liquid.viscosity = [LIGHT_GRAY]В'язкість: {0} text.liquid.temperature = [LIGHT_GRAY]Температура: {0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) block.spawn.name = Спавн ворога block.core.name = Ядро block.metalfloor.name = Металічна підлога diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 2e6526dd68..a024f004fc 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -9,10 +9,8 @@ text.link.itch.io.description = PC版下载和网页版(itch.io) text.link.google-play.description = 从谷歌商店获取安卓版 text.link.wiki.description = 官方 Mindustry 维基 text.linkfail = 打开链接失败!\nURL 已经复制到剪贴板。 -text.editor.web = 网页版不支持地图编辑器!\n下载以使用编辑器。 -text.web.unsupported = 网页版不支持此功能,请下载以使用此功能。 text.gameover = 你的核心被摧毁了! -text.gameover.pvp = The[accent] {0}[] team is victorious! +text.gameover.pvp = accent] {0}[] 队获胜! text.sector.gameover = 这个区域失守了,要重新部署吗? text.sector.retry = 重试 text.highscore = [accent]新纪录! @@ -39,32 +37,32 @@ text.sectors = 区域 text.sector = 区域: [LIGHT_GRAY]{0} text.sector.time = 时间: [LIGHT_GRAY]{0} text.sector.deploy = 部署 -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 = 放弃 +text.sector.abandon.confirm = 你确定要放弃这个区域的所有进展吗?\n此操作不可撤销! text.sector.resume = 继续 text.sector.locked = [scarlet][[Incomplete] text.sector.unexplored = [accent][[Unexplored] -text.missions = Missions:[LIGHT_GRAY] {0} +text.missions = 任务:[LIGHT_GRAY] {0} text.mission = 任务[LIGHT_GRAY] {0} -text.mission.main = Main Mission:[LIGHT_GRAY] {0} -text.mission.info = Mission Info +text.mission.main = 主要任务:[LIGHT_GRAY] {0} +text.mission.info = 任务信息 text.mission.complete = 任务完成! text.mission.complete.body = 区域 {0},攻占了 {1} 个 -text.mission.wave = 存活了 [accent]{0}/{1}[] 波。\nWave in {2} -text.mission.wave.enemies = Survive[accent] {0}/{1} []waves\n{2} Enemies -text.mission.wave.enemy = Survive[accent] {0}/{1} []waves\n{2} Enemy -text.mission.wave.menu = Survive[accent] {0} []waves +text.mission.wave = 存活了 [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.menu = 存活[accent] {0} []波 text.mission.battle = 摧毁敌方基地。 -text.mission.resource.menu = Obtain {0} x{1} -text.mission.resource = 获得 {0}:\n[accent]{1}/{2}[] -text.mission.block = Create {0} -text.mission.unit = Create {0} Unit -text.mission.command = Send Command {0} To Units -text.mission.linknode = Link Power Node -text.mission.display = [accent]Mission:\n[LIGHT_GRAY]{0} -text.mission.mech = Switch to mech[accent] {0}[] -text.mission.create = Create[accent] {0}[] -text.none = +text.mission.resource.menu = 获取{0}x{1} +text.mission.resource = 获取{0}︰\n[accent]{1}/{2}[] +text.mission.block = 建造{0} +text.mission.unit = 生产{0}机组 +text.mission.command = 发送{0}指令至机组 +text.mission.linknode = 连接能源节点 +text.mission.display = [accent]任务︰\n[LIGHT_GRAY]{0} +text.mission.mech = 转换至[accent]{0}[]机甲 +text.mission.create = 制造[accent] {0}[] +text.none = <无> text.close = 关闭 text.quit = 退出 text.maps = 地图 @@ -73,30 +71,30 @@ text.nextmission = 下一个任务 text.maps.none = [LIGHT_GRAY]未发现地图! text.about.button = 关于 text.name = 名字: -text.filename = File Name: -text.unlocked = 新方块解锁! -text.unlocked.plural = 新方块解锁! +text.filename = 文件名: +text.unlocked = 新方块已解锁! +text.unlocked.plural = 新方块已解锁! text.players = {0} 玩家在线 text.players.single = {0} 玩家在线 -text.server.closing = [accent]正在关闭服务器... -text.server.kicked.kick = 你被踢出服务器了! -text.server.kicked.serverClose = 服务器已关闭 -text.server.kicked.sectorComplete = 区域已完成 +text.server.closing = [accent]正在关闭服务器…… +text.server.kicked.kick = 你被踢出服务器了! +text.server.kicked.serverClose = 服务器已关闭。 +text.server.kicked.sectorComplete = 区域已完成。 text.server.kicked.sectorComplete.text = 任务已完成。\n服务器将在下一个区域继续。 text.server.kicked.clientOutdated = 客户端版本过旧!请升级! text.server.kicked.serverOutdated = 服务器版本过旧!请联系房主升级! text.server.kicked.banned = 你被这个服务器拉黑了。 -text.server.kicked.recentKick = 你刚刚被踢出服务器\n请稍后再重新连接! -text.server.kicked.nameInUse = 服务器中已经\n有相同的名字了。 +text.server.kicked.recentKick = 你刚刚被踢出服务器。\n请稍后重新连接! +text.server.kicked.nameInUse = 服务器中已经\n有人有相同的名字了。 text.server.kicked.nameEmpty = 你的名字必须至少包含一个字母或数字。 -text.server.kicked.idInUse = 你已经在服务器中了!不允许用两个账号。 -text.server.kicked.customClient = 这个服务器不支持修改版连接,请下载官方版本。 -text.host.info = [accent]创建局域网游戏[] 按钮会在 [scarlet]6567[] 端口运行一个服务器并且 [scarlet]6568.[]\n任何在同一个 [LIGHT_GRAY]wifi或本地网络[] 下的人都将在服务器列表中看到你的服务器。\n\n如果你想让别人在任何地方都能通过ip地址连接, 那么需要[accent]端口转发[]。\n\n[LIGHT_GRAY]请注意:如果某人无法连接到你的局域网游戏,请确保你在防火墙设置里允许了 Mindustry 连接本地网络。 -text.join.info = 你可以在这里输入[accent]服务器的IP地址[]以连接,或寻找[accent]本地网络[]中的服务器以连接。\n支持局域网或广域网多人游戏。\n\n[LIGHT_GRAY]请注意:没有全球服务器列表;如果你想通过IP地址连接某个服务器,你需要向房主询问IP地址。 -text.hostserver = 服务器 -text.hostserver.mobile = Host\nGame -text.host = 创建服务器 -text.hosting = [accent]正在打开服务器... +text.server.kicked.idInUse = 你已经在服务器中!不允许用两个账号。 +text.server.kicked.customClient = 这个服务器不支持修改版客户端,请下载官方版本。 +text.host.info = [accent]创建局域网游戏[]按钮会在[scarlet]6567[]端口运行一个服务器。[]\n任何在同一个[LIGHT_GRAY]网络或本地网络[]下的人都将在服务器列表中看到你的服务器。\n\n如果你想让别人在任何地方都能通过IP地址连接,你需要设定[accent]端口转发[]。\n\n[LIGHT_GRAY]请注意:如果某人无法连接到你的局域网游戏,请确保你在防火墙设置里允许了Mindustry连接本地网络。 +text.join.info = 你可以在这里输入[accent]服务器的IP地址[]以连接,或寻找[accent]本地网络[]中的服务器以连接。\n目前支持局域网或广域网多人游戏。\n\n[LIGHT_GRAY]请注意:没有全球服务器列表;如果你想通过IP地址连接某个服务器,你需要向房主询问IP地址。 +text.hostserver = 创建服务器 +text.hostserver.mobile = 创建\n服务器 +text.host = 创建 +text.hosting = [accent]正在打开服务器…… text.hosts.refresh = 刷新 text.hosts.discovering = 正在搜索局域网服务器 text.server.refreshing = 正在刷新服务器 @@ -105,64 +103,64 @@ text.host.invalid = [scarlet]无法连接服务器。 text.trace = 跟踪玩家 text.trace.playername = 玩家名字: [accent]{0} text.trace.ip = IP地址: [accent]{0} -text.trace.id = ID: [accent]{0} +text.trace.id = ID︰[accent]{0} text.trace.android = 安卓客户端: [accent]{0} text.trace.modclient = 修改版客户端: [accent]{0} text.trace.totalblocksbroken = 总共破坏了 [accent]{0} 个方块。 -text.trace.structureblocksbroken = 总共破坏了 [accent]{0} 个结构。 +text.trace.structureblocksbroken = 总共破坏了[accent]{0}个方块。 text.trace.lastblockbroken = 最后破坏的方块: [accent]{0} text.trace.totalblocksplaced = 总共放置了 [accent]{0} 个方块。 text.trace.lastblockplaced = 最后放置的方块: [accent]{0} -text.invalidid = 无效的客户端ID!请提交 bug 报告。 +text.invalidid = 无效的客户端ID!请提交错误报告。 text.server.bans = 黑名单 text.server.bans.none = 没有被拉黑的玩家! text.server.admins = 管理员 text.server.admins.none = 没有管理员! text.server.add = 添加服务器 text.server.delete = 确定要删除这个服务器吗? -text.server.hostname = 主机: {0} +text.server.hostname = 主机︰{0} text.server.edit = 编辑服务器 text.server.outdated = [crimson]服务器过旧![] text.server.outdated.client = [crimson]客户端过旧![] text.server.version = [lightgray]版本: {0} text.server.custombuild = [yellow]修改版 -text.confirmban = 确认拉黑这个玩家? -text.confirmkick = 您确定要删除此播放器吗? +text.confirmban = 确认拉黑这个玩家吗? +text.confirmkick = 您确定要踢出这个玩家吗? text.confirmunban = 确认要取消拉黑这个玩家吗? text.confirmadmin = 确认要添加这个玩家为管理员吗? text.confirmunadmin = 确认要取消这个玩家的管理员身份吗? text.joingame.title = 加入游戏 -text.joingame.ip = IP: +text.joingame.ip = IP: text.disconnect = 已断开 text.disconnect.data = 载入世界失败! -text.connecting = [accent]连接中... -text.connecting.data = [accent]加载世界中... -text.server.port = 端口: +text.connecting = [accent]连接中…… +text.connecting.data = [accent]加载世界中…… +text.server.port = 端口︰ text.server.addressinuse = 地址已经使用! text.server.invalidport = 无效的端口! text.server.error = [crimson]创建服务器错误:[accent]{0} text.save.old = 这个存档属于旧版本游戏,无法继续使用了。\n\n[LIGHT_GRAY]存档向下兼容将在 4.0 版本中实现。 text.save.new = 新存档 -text.save.overwrite = 确认要\n覆盖这个存档吗? +text.save.overwrite = 确认要覆盖这个存档吗? text.overwrite = 覆盖 text.save.none = 没有存档! -text.saveload = [accent]保存中... +text.saveload = [accent]保存中…… text.savefail = 保存失败! text.save.delete.confirm = 确认要删除这个存档吗? text.save.delete = 删除 text.save.export = 导出存档 text.save.import.invalid = [accent]存档无效! -text.save.import.fail = [crimson]导入存档:[accent]{0} 失败 -text.save.export.fail = [crimson]导出存档“[accent]{0} 失败 +text.save.import.fail = [crimson]导入存档失败:[accent]{0} +text.save.export.fail = [crimson]导出存档失败:[accent]{0} text.save.import = 导入存档 text.save.newslot = 保存游戏: text.save.rename = 重命名 text.save.rename.text = 新名字: -text.selectslot = 选择一个存档 +text.selectslot = 选择一个存档。 text.slot = [accent]存档 {0} text.save.corrupted = [accent]存档损坏或无效!\n如果你刚刚升级了游戏,那么这可能是因为存档格式改变了而[scarlet]不是[] bug 。 text.sector.corrupted = [accent]发现了一个此区域的保存文件,但是加载失败。\n已经创建了一个新的。 -text.empty = +text.empty = <空> text.on = 开 text.off = 关 text.save.autosave = 自动保存:{0} @@ -187,14 +185,14 @@ text.changelog.error.ios = [accent]iOS还不支持更新日志。 text.changelog.error = [scarlet]获取更新日志失败!\n请检查你的网络。 text.changelog.current = [yellow][[Current version] text.changelog.latest = [accent][[Latest version] -text.loading = [accent]加载中... -text.saving = [accent]保存中... +text.loading = [accent]加载中…… +text.saving = [accent]保存中…… text.wave = [accent]第 {0} 波 text.wave.waiting = 下一波将在 {0} 秒后到来 -text.waiting = 等待中... -text.waiting.players = Waiting for players... -text.wave.enemies = [LIGHT_GRAY]{0} Enemies Remaining -text.wave.enemy = [LIGHT_GRAY]{0} Enemy Remaining +text.waiting = 等待中…… +text.waiting.players = 等待玩家中…… +text.wave.enemies = 剩下 [LIGHT_GRAY]{0} 敌人 +text.wave.enemy = 剩下 [LIGHT_GRAY]{0} 敌人 text.loadimage = 加载图片 text.saveimage = 保存图片 text.unknown = 未知 @@ -203,7 +201,7 @@ text.builtin = 内建的 text.map.delete.confirm = 确认要删除地图吗?这个操作无法撤销! text.map.random = [accent]随机地图 text.map.nospawn = 这个地图没有核心!请在编辑器中添加一个[ROYAL]蓝色[]的核心。 -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 = 这个地图没有敌人的核心!请在编辑器中添加一个[ROYAL]红色[]的核心。 text.map.invalid = 地图载入错误:地图文件可能已经损坏。 text.editor.brush = 笔刷 text.editor.slope = \\ @@ -226,14 +224,14 @@ text.editor.saved = 已保存! text.editor.save.noname = 你的地图还没有名字!在“地图信息”菜单里设置一个名字。 text.editor.save.overwrite = 你的地图覆盖了一个内建的地图!在“地图信息”菜单里重新设置一个。 text.editor.import.exists = [scarlet]无法导入:[] 一个叫 '{0}' 的内建地图已经存在。 -text.editor.import = 导入... +text.editor.import = 导入…… text.editor.importmap = 导入地图 text.editor.importmap.description = 导入一个已经存在的地图 text.editor.importfile = 导入文件 text.editor.importfile.description = 导入一个外置的地图文件 text.editor.importimage = 导入地形图像 text.editor.importimage.description = 导入外置地图图像文件 -text.editor.export = 导出... +text.editor.export = 导出…… text.editor.exportfile = 导出文件 text.editor.exportfile.description = 导出一个地图文件 text.editor.exportimage = 导出一个地形文件 @@ -262,13 +260,13 @@ text.editor = 编辑器 text.mapeditor = 地图编辑器 text.donate = 捐赠 text.connectfail = [crimson]服务器连接失败: [accent]{0} -text.error.unreachable = Server unreachable. -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.mismatch = Packet error:\npossible client/server version mismatch.\nMake sure you and the host have the latest version of Mindustry! -text.error.alreadyconnected = Already connected. -text.error.mapnotfound = Map file not found! -text.error.any = Unkown network error. +text.error.unreachable = 服务器无法访问。 +text.error.invalidaddress = 地址无效。 +text.error.timedout = 连接超时!\n确保服务器设置了端口转发,并且地址正确! +text.error.mismatch = 包错误:\n可能是客户端/服务器版本不匹配.\n请确保客户端和服务器都是最新的版本! +text.error.alreadyconnected = 已连接。 +text.error.mapnotfound = 找不到地图文件! +text.error.any = 未知网络错误. text.settings.language = 语言 text.settings.reset = 恢复默认 text.settings.rebind = 重新绑定 @@ -276,11 +274,11 @@ text.settings.controls = 控制 text.settings.game = 游戏 text.settings.sound = 声音 text.settings.graphics = 图像 -text.settings.cleardata = 清除游戏数据... -text.settings.clear.confirm = 您确定要清除此数据吗?\n你无法撤销这个! -text.settings.clearall.confirm = [scarlet]报警![]\n这将清除所有数据,包括已保存,解锁和见帮定.\n按“OK”后,游戏将删除所有并自动推出. -text.settings.clearsectors = 清楚任务 -text.settings.clearunlocks = 清除未锁定的快 +text.settings.cleardata = 清除游戏数据…… +text.settings.clear.confirm = 您确定要清除数据吗?\n这个操作无法撤销! +text.settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据,包括存档、地图、解锁和键绑定。\n按「是」后,游戏将删除所有数据并自动退出。 +text.settings.clearsectors = 清除区域 +text.settings.clearunlocks = 清除解锁 text.settings.clearall = 清除所有 text.paused = 暂停 text.yes = 是 @@ -303,27 +301,27 @@ text.blocks.powerdamage = 功率/损伤 text.blocks.inputitemcapacity = 最大输入 text.blocks.outputitemcapacity = 最大输出 text.blocks.itemcapacity = 物品容量 -text.blocks.basepowergeneration = Base Power Generation +text.blocks.basepowergeneration = 基础能源输出 text.blocks.powertransferspeed = 能量传输 text.blocks.craftspeed = 生产速度 -text.blocks.inputliquid = 输入液体 -text.blocks.inputliquidaux = Aux 液体 -text.blocks.inputitem = 输入物品 -text.blocks.inputitems = 输入物品 -text.blocks.outputitem = 输出物品 +text.blocks.inputliquid = 液体输入 +text.blocks.inputliquidaux = 辅助液体 +text.blocks.inputitem = 物品输入 +text.blocks.inputitems = 物品输入 +text.blocks.outputitem = 物品输出 text.blocks.drilltier = 可钻探矿物 text.blocks.drillspeed = 基础钻探速度 text.blocks.liquidoutput = 液体输出 text.blocks.liquidoutputspeed = 液体输出速度 -text.blocks.liquiduse = 使用液体 +text.blocks.liquiduse = 液体使用速度 text.blocks.coolant = 冷却剂 -text.blocks.coolantuse = 使用冷却剂 -text.blocks.inputliquidfuel = 使用燃料 -text.blocks.liquidfueluse = 使用液体燃料 -text.blocks.explosive = 高度易燃易爆! +text.blocks.coolantuse = 冷却剂使用速度 +text.blocks.inputliquidfuel = 液体燃料输入 +text.blocks.liquidfueluse = 液体燃料使用速度 +text.blocks.explosive = 易爆炸! text.blocks.health = 生命值 text.blocks.inaccuracy = 误差 -text.blocks.shots = 发射 +text.blocks.shots = 发射数 text.blocks.reload = 重新装弹 text.blocks.inputfuel = 燃料 text.blocks.fuelburntime = 燃料燃烧时间 @@ -343,18 +341,18 @@ text.category.general = 普通 text.category.power = 能量 text.category.liquids = 液体 text.category.items = 物品 -text.category.crafting = 制造速度 -text.category.shooting = 射速 -setting.autotarget.name = Auto-Target +text.category.crafting = 制造 +text.category.shooting = 发射 +setting.autotarget.name = 自动发射 setting.fpscap.name = 最高 FPS -setting.fpscap.none = None +setting.fpscap.none = 无 setting.fpscap.text = {0} FPS -setting.difficulty.training = training +setting.difficulty.training = 训练 setting.difficulty.easy = 简单 setting.difficulty.normal = 普通 setting.difficulty.hard = 困难 setting.difficulty.insane = 疯狂 -setting.difficulty.name = 难度: +setting.difficulty.name = 难度: setting.screenshake.name = 屏幕抖动 setting.effects.name = 显示效果 setting.sensitivity.name = 控制器灵敏度 @@ -370,17 +368,18 @@ setting.musicvol.name = 音乐音量 setting.mutemusic.name = 静音 setting.sfxvol.name = 音效音量 setting.mutesound.name = 静音 +setting.crashreport.name = 发送匿名崩溃报告 text.keybind.title = 重新绑定按键 category.general.name = 普通 category.view.name = 查看 category.multiplayer.name = 多人 -command.attack = Attack -command.retreat = Retreat -command.patrol = Patrol -keybind.press = 按一下键... -keybind.press.axis = 按轴或键... -keybind.move_x.name = X轴移动 -keybind.move_y.name = Y轴移动 +command.attack = 攻击 +command.retreat = 撤退 +command.patrol = 巡逻 +keybind.press = 按一下键…… +keybind.press.axis = 按一下轴或键…… +keybind.move_x.name = 水平移动 +keybind.move_y.name = 垂直移动 keybind.select.name = 选择 keybind.break.name = 破坏 keybind.deselect.name = 取消 @@ -405,47 +404,47 @@ mode.waves.name = 普通 mode.waves.description = 普通模式,有限的资源和自动生成敌人。 mode.sandbox.name = 沙盒 mode.sandbox.description = 无限的资源,不会自动生成敌人。 -mode.custom.warning = 请注意,在区域内解锁之前,区块不能用于自定义游戏.\n\n[LIGHT_GRAY]如果您没有解锁任何块,则不会出现任何块. -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.custom.warning = 请注意,方块在区域内解锁之前,不能用于自定义游戏。\n\n[LIGHT_GRAY]如果您没有解锁任何方块,则不会出现任何方块。 +mode.custom.warning.read = 确保你已经阅读过它:\n[scarlet]自定义游戏的解锁不带至区域或其他模式!\n\n[LIGHT_GRAY](我希望这不是必要的,但显然是必要的) mode.freebuild.name = 自由建造 mode.freebuild.description = 有限的资源,不会自动生成敌人。 mode.pvp.name = PvP -mode.pvp.description = fight against other players locally. +mode.pvp.description = 和本地玩家对战. content.item.name = 物品 content.liquid.name = 液体 -content.unit.name = 单位 +content.unit.name = 部队 content.recipe.name = 方块 content.mech.name = 机甲 item.stone.name = 石头 item.stone.description = 一种常见的原料。用于分离和提炼成其他材料,或熔化成熔岩。 item.copper.name = 铜 -item.copper.description = 有用的结构材料。在各种类型的方块中广泛使用。 +item.copper.description = 一种有用的结构材料。在各种类型的方块中广泛使用。 item.lead.name = 铅 -item.lead.description = 基本的起始材料。被广泛用于电气和液体运输方块。 +item.lead.description = 一种基本的起始材料。被广泛用于电子设备和液体运输方块。 item.coal.name = 煤 item.coal.description = 一种常见并容易获得的燃料。 item.dense-alloy.name = 致密合金 -item.dense-alloy.description = 由铅和铜制成的坚韧合金。 用于高级的运输方块和深层钻头。 +item.dense-alloy.description = 一种由铅和铜制成的坚韧合金。用于高级的运输方块和高级钻头。 item.titanium.name = 钛 -item.titanium.description = 一种罕见的超轻金属,被广泛运用于液体运输,钻机和飞机。 +item.titanium.description = 一种罕见的超轻金属,被广泛运用于液体运输、钻头和飞机。 item.thorium.name = 钍 -item.thorium.description = 一种致密的放射性金属,用作支撑结构和核燃料。 +item.thorium.description = 一种致密的放射性金属,用作结构支撑和核燃料。 item.silicon.name = 硅 -item.silicon.description = 非常有用的半导体,被用于太阳能电池板和很多复杂的电子设备。 -item.plastanium.name = 塑料 +item.silicon.description = 一种非常有用的半导体,被用于太阳能电池板和很多复杂的电子设备。 +item.plastanium.name = 塑钢 item.plastanium.description = 一种轻质,可延展的材料,用于高级的飞机和碎片弹药。 -item.phase-fabric.name = Phase Fabric -item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology. +item.phase-fabric.name = 相织物 +item.phase-fabric.description = 一种接近0重量的物质,用于先进的电子技术和自我修复技术。 item.surge-alloy.name = 巨浪合金 -item.surge-alloy.description = An advanced alloy with unique electrical properties. +item.surge-alloy.description = 一种具有独特电气性能的高级合金。 item.biomatter.name = 生物质 -item.biomatter.description = 一种有机糊;用于转化为油或作为基本燃料。 -item.sand.name = 沙子 -item.sand.description = 一种常见的材料,广泛用于冶炼,制作合金和助熔剂。 +item.biomatter.description = 一种有机物;用于转化为油或作为基本燃料。 +item.sand.name = 沙 +item.sand.description = 一种常见的材料,广泛用于冶炼,包括制作合金和助熔剂。 item.blast-compound.name = 爆炸混合物 -item.blast-compound.description = 一种用于炸弹和炸药的挥发性化合物。虽然它可以作为燃料燃烧,但不建议这样做。 +item.blast-compound.description = 一种用于炸弹和炸药的挥发性混合物。虽然它可以作为燃料燃烧,但不建议这样做。 item.pyratite.name = 硫 -item.pyratite.description = 燃烧武器中使用的极易燃物质。 +item.pyratite.description = 一种燃烧武器中使用的极易燃物质。 liquid.water.name = 水 liquid.lava.name = 岩浆 liquid.oil.name = 石油 @@ -469,32 +468,33 @@ mech.omega-mech.description = 一种装甲厚重的机甲,用于在前线攻 mech.dart-ship.name = Dart mech.dart-ship.weapon = 机枪 mech.dart-ship.description = 标准飞船。快速轻便,但攻击能力低,采矿速度快。 -mech.javelin-ship.name = Javelin +mech.javelin-ship.name = 标枪 mech.javelin-ship.description = 一艘一击即退的攻击船。虽然最初很慢,但它可以加速到很快的速度,并飞过敌人的前哨,利用其闪电能力和导弹造成大量伤害。 mech.javelin-ship.weapon = 爆裂导弹 mech.javelin-ship.ability = 放电助推器 -mech.trident-ship.name = Trident -mech.trident-ship.description = 一个重型轰炸机。有厚装甲。 +mech.trident-ship.name = 三叉戟 +mech.trident-ship.description = 一种重型轰炸机。有厚装甲。 mech.trident-ship.weapon = 炸弹 mech.glaive-ship.name = Glaive -mech.glaive-ship.description = 一个大型,装甲厚重的武装直升机。配备燃烧机枪。有优秀的加速能力和最快的速度。 +mech.glaive-ship.description = 一种大型,装甲厚重的武装直升机。配备燃烧机枪。有优秀的加速能力和最快的速度。 mech.glaive-ship.weapon = 火焰机枪 -text.item.explosiveness = [LIGHT_GRAY]爆炸威力:{0} +text.item.explosiveness = [LIGHT_GRAY]爆炸性:{0} text.item.flammability = [LIGHT_GRAY]易燃性:{0} text.item.radioactivity = [LIGHT_GRAY]放射性:{0} -text.item.fluxiness = [LIGHT_GRAY]流通力:{0} -text.unit.health = [LIGHT_GRAY]生命值: {0} -text.unit.speed = [LIGHT_GRAY]速度: {0} -text.mech.weapon = [LIGHT_GRAY]武器: {0} -text.mech.armor = [LIGHT_GRAY]装甲: {0} -text.mech.itemcapacity = [LIGHT_GRAY]物品容量: {0} -text.mech.minespeed = [LIGHT_GRAY]采矿速度: {0} -text.mech.minepower = [LIGHT_GRAY]采矿能量: {0} -text.mech.ability = [LIGHT_GRAY]能力: {0} +text.item.fluxiness = [LIGHT_GRAY]助熔性:{0} +text.unit.health = [LIGHT_GRAY]生命值:{0} +text.unit.speed = [LIGHT_GRAY]速度:{0} +text.mech.weapon = [LIGHT_GRAY]武器:{0} +text.mech.armor = [LIGHT_GRAY]装甲:{0} +text.mech.itemcapacity = [LIGHT_GRAY]物品容量:{0} +text.mech.minespeed = [LIGHT_GRAY]采矿速度:{0} +text.mech.minepower = [LIGHT_GRAY]采矿力量:{0} +text.mech.ability = [LIGHT_GRAY]能力:{0} text.liquid.heatcapacity = [LIGHT_GRAY]热容量:{0} text.liquid.viscosity = [LIGHT_GRAY]粘度:{0} text.liquid.temperature = [LIGHT_GRAY]温度:{0} -block.spawn.name = Enemy Spawn +block.constructing = {0}\n[LIGHT_GRAY](Constructing) +block.spawn.name = 敌人出生点 block.core.name = 核心 block.metalfloor.name = 金属地板 block.deepwater.name = 深水 @@ -514,18 +514,18 @@ block.blackrock.name = 黑岩 block.icerock.name = 冰岩 block.copper-wall.name = 铜墙 block.copper-wall-large.name = 大型铜墙 -block.dense-alloy-wall.name = Dense Alloy Wall -block.dense-alloy-wall-large.name = Large Dense Alloy Wall -block.phase-wall.name = 相位墙 -block.phase-wall-large.name = 大型相位墙 +block.dense-alloy-wall.name = 致密合金墙 +block.dense-alloy-wall-large.name = 大型致密合金墙 +block.phase-wall.name = 相织布墙 +block.phase-wall-large.name = 大型相织布墙 block.thorium-wall.name = 钍墙 block.thorium-wall-large.name = 大型钍墙 block.door.name = 门 block.door-large.name = 大门 -block.duo.name = 炮 +block.duo.name = 双管炮 block.scorch.name = 灼烧炮 -block.hail.name = Hail -block.lancer.name = 枪骑兵 +block.hail.name = 冰雹炮 +block.lancer.name = 蓝瑟炮 block.conveyor.name = 传送带 block.titanium-conveyor.name = 钛传送带 block.junction.name = 连接点 @@ -538,7 +538,7 @@ block.overflow-gate.description = 分离器和路由器的组合,如果前面 block.smelter.name = 冶炼厂 block.arc-smelter.name = 电弧冶炼厂 block.silicon-smelter.name = 硅冶炼厂 -block.phase-weaver.name = 相位编织器 +block.phase-weaver.name = 相织布编织器 block.pulverizer.name = 粉碎机 block.cryofluidmixer.name = 冷冻液混合器 block.melter.name = 熔炉 @@ -557,47 +557,47 @@ block.pneumatic-drill.name = 气动钻头 block.laser-drill.name = 激光钻头 block.water-extractor.name = 抽水机 block.cultivator.name = 耕种机 -block.alpha-mech-pad.name = Alpha Mech Pad -block.dart-ship-pad.name = Dart Ship Pad -block.delta-mech-pad.name = Delta Mech Pad -block.javelin-ship-pad.name = Javelin Ship Pad -block.trident-ship-pad.name = Trident Ship Pad -block.glaive-ship-pad.name = Glaive Ship Pad -block.omega-mech-pad.name = Omega Mech Pad -block.tau-mech-pad.name = Tau Mech Pad +block.alpha-mech-pad.name = Alpha 机甲平台 +block.dart-ship-pad.name = Dart 机甲平台 +block.delta-mech-pad.name = Delta 机甲平台 +block.javelin-ship-pad.name = 标枪 机甲平台 +block.trident-ship-pad.name = 三叉戟 机甲平台 +block.glaive-ship-pad.name = Glaive 机甲平台 +block.omega-mech-pad.name = Omega 机甲平台 +block.tau-mech-pad.name = Tau 机甲平台 block.conduit.name = 导管 block.mechanical-pump.name = 机械泵 block.itemsource.name = 物品源 -block.itemvoid.name = Item Void +block.itemvoid.name = 物品黑洞 block.liquidsource.name = 液体源 -block.powervoid.name = Power Void +block.powervoid.name = 能源黑洞 block.powerinfinite.name = 无限能源 block.unloader.name = 装卸器 block.vault.name = 仓库 block.wave.name = 波浪 block.swarmer.name = 蜂群 block.salvo.name = 齐射炮 -block.ripple.name = 波纹 -block.phase-conveyor.name = 相位传送带 +block.ripple.name = 浪涌 +block.phase-conveyor.name = 相织布传送带 block.bridge-conveyor.name = 传送带桥 -block.plastanium-compressor.name = 塑料压缩机 +block.plastanium-compressor.name = 塑钢压缩机 block.pyratite-mixer.name = 硫混合器 block.blast-mixer.name = 爆炸混合器 -block.solidifer.name = 凝固剂 +block.solidifer.name = 凝固器 block.solar-panel.name = 太阳能电池 block.solar-panel-large.name = 大型太阳能电池 block.oil-extractor.name = 石油钻井 -block.spirit-factory.name = Spirit Drone Factory -block.phantom-factory.name = Phantom Drone Factory -block.wraith-factory.name = Wraith Fighter Factory -block.ghoul-factory.name = Ghoul Bomber Factory -block.dagger-factory.name = Dagger Mech Factory -block.titan-factory.name = Titan Mech Factory -block.fortress-factory.name = Fortress Mech Factory -block.revenant-factory.name = Revenant Fighter Factory +block.spirit-factory.name = 轻型无人机工厂 +block.phantom-factory.name = 鬼怪无人机工厂 +block.wraith-factory.name = 幻影战机工厂 +block.ghoul-factory.name = 食尸鬼轰炸机工厂 +block.dagger-factory.name = 尖刀机甲工厂 +block.titan-factory.name = 泰坦机甲工厂 +block.fortress-factory.name = 堡垒机甲工厂 +block.revenant-factory.name = 亡魂战机工厂 block.repair-point.name = 维修点 block.pulse-conduit.name = 脉冲导管 -block.phase-conduit.name = 相位导管 +block.phase-conduit.name = 相织布导管 block.liquid-router.name = 液体路由器 block.liquid-tank.name = 储液罐 block.liquid-junction.name = 液体连接点 @@ -610,171 +610,171 @@ block.blast-drill.name = 爆破钻头 block.thermal-pump.name = 热能泵 block.thermal-generator.name = 热能发电机 block.alloy-smelter.name = 合金冶炼厂 -block.mend-projector.name = 修理投影机 -block.surge-wall.name = 浪涌墙 -block.surge-wall-large.name = 大浪涌墙 -block.cyclone.name = 气旋 -block.fuse.name = 保险丝 -block.shock-mine.name = Shock Mine -block.overdrive-projector.name = 超速投影机 -block.force-projector.name = Force Projector -block.arc.name = Arc -block.rtg-generator.name = RTG Generator -block.spectre.name = Spectre -block.meltdown.name = Meltdown -block.container.name = Container -block.core.description = The most important building in the game. -team.blue.name = blue -team.red.name = red -team.orange.name = orange -team.none.name = gray -team.green.name = green -team.purple.name = purple +block.mend-projector.name = 修理投影器 +block.surge-wall.name = 波动墙 +block.surge-wall-large.name = 大型波动墙 +block.cyclone.name = 气旋炮 +block.fuse.name = 融合炮 +block.shock-mine.name = 休克地雷 +block.overdrive-projector.name = 超速投影器 +block.force-projector.name = 力墙投影器 +block.arc.name = 电弧 +block.rtg-generator.name = RTG 发电机 +block.spectre.name = 幽灵 +block.meltdown.name = 熔毁 +block.container.name = 容器 +block.core.description = 游戏中最重要的建筑。 +team.blue.name = 蓝 +team.red.name = 红 +team.orange.name = 橙 +team.none.name = 灰 +team.green.name = 绿 +team.purple.name = 紫 unit.alpha-drone.name = Alpha 无人机 -unit.spirit.name = Spirit Drone -unit.spirit.description = The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks. -unit.phantom.name = Phantom Drone -unit.phantom.description = An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone. +unit.spirit.name = 轻型无人机 +unit.spirit.description = 初始无人机。默认情况下在内核中生成。自动开采矿石,收集物品和修理块。 +unit.phantom.name = 鬼怪无人机 +unit.phantom.description = 一种先进的无人机单位。自动开采矿石,收集物品和修理块。比初始无人机有效得多。 unit.dagger.name = 尖刀 unit.dagger.description = 基础的地面单位,在蜂群中很有用。 unit.titan.name = 泰坦 unit.titan.description = 高级的有武装地面单位,使用电石作为弹药.攻击地面单位和空中单位. -unit.ghoul.name = Ghoul Bomber -unit.ghoul.description = A heavy carpet bomber. Uses blast compound or pyratite as ammo. -unit.wraith.name = Wraith Fighter -unit.wraith.description = A fast, hit-and-run interceptor unit. -unit.fortress.name = Fortress -unit.fortress.description = A heavy artillery ground unit. -unit.revenant.name = Revenant -unit.revenant.description = A heavy laser platform. -tutorial.begin = Your mission here is to eradicate the[LIGHT_GRAY] enemy[].\n\nBegin by[accent] mining copper[]. Tap a copper ore vein near your core to do this. -tutorial.drill = Mining manually is inefficient.\n[accent]Drills []can mine automatically.\nPlace one on a copper vein. -tutorial.conveyor = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core. -tutorial.morecopper = More copper is required.\n\nEither mine it manually, or place more drills. -tutorial.turret = Defensive structures must be built to repel the[LIGHT_GRAY] enemy[].\nBuild a duo turret near your base. -tutorial.drillturret = Duo turrets require[accent] copper ammo []to shoot.\nPlace a drill next to the turret to supply it with mined copper. -tutorial.waves = The[LIGHT_GRAY] enemy[] approaches.\n\nDefend your core for 2 waves. Build more turrets. -tutorial.lead = More ores are available. Explore and mine[accent] lead[].\n\nDrag from your unit to the core to transfer resources. -tutorial.smelter = Copper and lead are weak metals.\nSuperior[accent] Dense Alloy[] can be created in a smelter.\n\nBuild one. -tutorial.densealloy = The smelter will now produce alloy.\nGet some.\nImprove the production if necessary. -tutorial.siliconsmelter = The core will now create a[accent] spirit drone[] for mining and repairing blocks.\n\nFactories for other units can be created with [accent] silicon.\nMake a silicon smelter. -tutorial.silicondrill = Silicon requires[accent] coal[] and[accent] sand[].\nStart by making drills. -tutorial.generator = This technology requires power.\nCreate a[accent] combustion generator[] for it. -tutorial.generatordrill = Combustion generators need fuel.\nFuel it with coal from a drill. -tutorial.node = Power requires transport.\nCreate a[accent] power node[] next to your combustion generator to transfer its power. -tutorial.nodelink = Power can be transferred through contacting power blocks and generators, or by linked power nodes.\n\nLink power by tapping the node and selecting the generator and silicon smelter. -tutorial.silicon = Silicon is being produced. Get some.\n\nImproving the production system is advised. -tutorial.daggerfactory = Construct a[accent] dagger mech factory.[]\n\nThis will be used to create attack mechs. -tutorial.router = Factories need resources to function.\nCreate a router to split conveyor resources. -tutorial.dagger = Link power nodes to the factory.\nOnce requirements are met, a mech will be created.\n\nCreate more drills, generators and conveyors as necessary. -tutorial.battle = The[LIGHT_GRAY] enemy[] has revealed their core.\nDestroy it with your unit and dagger mechs. -block.copper-wall.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves. -block.copper-wall-large.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves.\nSpans multiple tiles. -block.dense-alloy-wall.description = A standard defensive block.\nAdequate protection from enemies. -block.dense-alloy-wall-large.description = A standard defensive block.\nAdequate protection from enemies.\nSpans multiple tiles. -block.thorium-wall.description = A strong defensive block.\nGood protection from enemies. -block.thorium-wall-large.description = A strong defensive block.\nGood protection from enemies.\nSpans multiple tiles. -block.phase-wall.description = Not as strong as a thorium wall but will deflect bullets unless they are too powerful. -block.phase-wall-large.description = Not as strong as a thorium wall but will deflect bullets unless they are too powerful.\nSpans multiple tiles. -block.surge-wall.description = The strongest defensive block.\nHas a small chance of triggering lightning towards the attacker. -block.surge-wall-large.description = The strongest defensive block.\nHas a small chance of triggering lightning towards the attacker.\nSpans multiple tiles. -block.door.description = A small door that can be opened and closed by tapping on it.\nIf opened, enemies can shoot and move through. -block.door-large.description = A large door that can be opened and closed by tapping on it.\nIf opened, enemies can shoot and move through.\nSpans multiple tiles. -block.mend-projector.description = Periodically heals buildings in its vicinity. -block.overdrive-projector.description = Increases the speed of nearby buildings like drills and conveyors. -block.force-projector.description = Creates a hexagonal force field around itself, protecting buildings and units inside from damage through bullets. -block.shock-mine.description = Damages enemies stepping on the mine. Nearly invisible to the enemy. -block.duo.description = A small, cheap turret. -block.arc.description = A small turret which shoots electricity in a random arc towards the enemy. -block.hail.description = A small artillery turret. -block.lancer.description = A medium-sized turret which shoots charged electricity beams. -block.wave.description = A medium-sized rapid-fire turret which shoots liquid bubbles. -block.salvo.description = A medium-sized turret which fires shots in salvos. -block.swarmer.description = A medium-sized turret which shoots burst missiles. -block.ripple.description = A large artillery turret which fires several shots simultaneously. -block.cyclone.description = A large rapid fire turret. -block.fuse.description = A large turret which shoots powerful short-range beams. -block.spectre.description = A large turret which shoots two powerful bullets at once. -block.meltdown.description = A large turret which shoots powerful long-range beams. -block.conveyor.description = Basic item transport block. Moved items forward and automatically deposits them into turrets or crafters. Rotatable. -block.titanium-conveyor.description = Advanced item transport block. Moves items faster than standard conveyors. -block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. -block.junction.description = Acts as a bridge for two crossing conveyor belts. Useful in situations with two different conveyors carrying different materials to different locations. -block.mass-driver.description = Ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. -block.smelter.description = Burns coal for smelting copper and lead into dense alloy. -block.arc-smelter.description = Smelts copper and lead into dense alloy by using an external power source. -block.silicon-smelter.description = Reduces sand with highly pure coke in order to produce silicon. -block.plastanium-compressor.description = Produces plastanium from oil and titanium. -block.phase-weaver.description = Produces phase fabric from radioactive thorium and high amounts of sand. -block.alloy-smelter.description = Produces surge alloy from titanium, lead, silicon and copper. -block.pulverizer.description = Crushes stone into sand. Useful when there is a lack of natural sand. -block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite. -block.blast-mixer.description = Uses oil for transforming pyratite into the less flammable but more explosive blast compound. -block.cryofluidmixer.description = Combines water and titanium into cryofluid which is much more efficient for cooling. -block.solidifer.description = Cools lava to stone at a fast pace. -block.melter.description = Heats up stone to very high temperatures to obtain lava. -block.incinerator.description = Gets rid of any excess item or liquid. -block.biomattercompressor.description = Compresses biomatter in order to retrieve oil. -block.separator.description = Exposes stone to water pressure in order to obtain various minerals contained in the stone. -block.centrifuge.description = More efficient than the separator, but also more expensive to build and requires power. -block.power-node.description = Transmits power to connected nodes. Up to four power sources, sinks or nodes can be connected. The node will receive power from or supply power to any adjacent blocks. -block.power-node-large.description = Has a larger radius than the power node and connects to up to six power sources, sinks or nodes. -block.battery.description = Stores power whenever there is an abundance and provides power whenever there is a shortage, as long as there is capacity left. -block.battery-large.description = Stores much more power than a regular battery. -block.combustion-generator.description = Generates power by burning oil or flammable materials. -block.turbine-generator.description = More efficient than a combustion generator, but requires additional water. -block.thermal-generator.description = Generates a large amount of power from lava. -block.solar-panel.description = Provides a small amount of power from the sun. -block.solar-panel-large.description = Provides much better power supply than a standard solar panel, but is also much more expensive to build. -block.thorium-reactor.description = Generates huge amounts of power from highly radioactive thorium. Requires constant cooling. Will explode violently if insufficient amounts of coolant are supplied. -block.rtg-generator.description = A radioisotope thermoelectric generator which does not require cooling but provides less power than a thorium reactor. -block.unloader.description = Unloads items from a container, vault or core onto a conveyor or directly into an adjacent block. The type of item to be unloaded can be changed by tapping on the unloader. -block.container.description = Stores a small amount of items. Use it for creating buffers when there is a non-constant demand of materials. An[LIGHT_GRAY] unloader[] can be used to retrieve items from the container. -block.vault.description = Stores a large amount of items. Use it for creating buffers when there is a non-constant demand of materials. An[LIGHT_GRAY] unloader[] can be used to retrieve items from the vault. -block.mechanical-drill.description = A cheap drill. When placed on appropriate tiles, outputs items at a slow pace indefinitely. -block.pneumatic-drill.description = An improved drill which is faster and able to process harder materials by making use of air pressure. -block.laser-drill.description = Allows drilling even faster through laser technology, but requires power. Additionally, radioactive thorium can be retrieved with this drill. -block.blast-drill.description = The ultimate drill. Requires large amounts of power. -block.water-extractor.description = Extracts water from the ground. Use it when there is no lake nearby. -block.cultivator.description = Cultivates the soil with water in order to obtain biomatter. -block.oil-extractor.description = Uses large amounts of power in order to extract oil from sand. Use it when there is no direct source of oil nearby. -block.dart-ship-pad.description = Leave your current vessel and change into a basic fighter aircraft.\nUse the pad by double tapping while standing on it. -block.trident-ship-pad.description = Leave your current vessel and change into a reasonably well armored heavy bomber.\nUse the pad by double tapping while standing on it. -block.javelin-ship-pad.description = Leave your current vessel and change into a strong and fast interceptor with lightning weapons.\nUse the pad by double tapping while standing on it. -block.glaive-ship-pad.description = Leave your current vessel and change into a large, well-armored gunship.\nUse the pad by double tapping while standing on it. -block.tau-mech-pad.description = Leave your current vessel and change into a support mech which can heal friendly buildings and units.\nUse the pad by double tapping while standing on it. -block.delta-mech-pad.description = Leave your current vessel and change into a fast, lightly-armored mech made for hit-and-run attacks.\nUse the pad by double tapping while standing on it. -block.omega-mech-pad.description = Leave your current vessel and change into a bulky and well-armored mech, made for front-line assaults.\nUse the pad by double tapping while standing on it. -block.spirit-factory.description = Produces light drones which mine ore and repair blocks. -block.phantom-factory.description = Produces advanced drone units which are significantly more effective than a spirit drone. -block.wraith-factory.description = Produces fast, hit-and-run interceptor units. -block.ghoul-factory.description = Produces heavy carpet bombers. -block.dagger-factory.description = Produces basic ground units. -block.titan-factory.description = Produces advanced, armored ground units. -block.fortress-factory.description = Produces heavy artillery ground units. -block.revenant-factory.description = Produces heavy laser ground units. -block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. -block.command-center.description = Allows changing friendly AI behavior. Currently, attack, retreat and patrol commands are supported. -block.conduit.description = Basic liquid transport block. Works like a conveyor, but with liquids. Best used with extractors, pumps or other conduits. -block.pulse-conduit.description = Advanced liquid transport block. Transports liquids faster and stores more than standard conduits. -block.phase-conduit.description = Advanced liquid transport block. Uses power to teleport liquids to a connected phase conduit over several tiles. -block.liquid-router.description = Accepts liquids from one direction and outputs them to up to 3 other directions equally. Can also store a certain amount of liquid. Useful for splitting the liquids from one source to multiple targets. -block.liquid-tank.description = Stores a large amount of liquids. Use it for creating buffers when there is a non-constant demand of materials or as a safeguard for cooling vital blocks. -block.liquid-junction.description = Acts as a bridge for two crossing conduits. Useful in situations with two different conduits carrying different liquids to different locations. -block.bridge-conduit.description = Advanced liquid transport block. Allows transporting liquids over up to 3 tiles of any terrain or building. -block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. -block.rotary-pump.description = An advanced pump which doubles up speed by using power. -block.thermal-pump.description = The ultimate pump. Three times as fast as a mechanical pump and the only pump which is able to retrieve lava. -block.router.description = Accepts items from one direction and outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets. -block.distributor.description = An advanced router which splits items to up to 7 other directions equally. -block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. -block.alpha-mech-pad.description = When given enough power, rebuilds your ship into the[accent] Alpha[] mech. -block.itemsource.description = Infinitely outputs items. Sandbox only. -block.liquidsource.description = Infinitely outputs liquids. Sandbox only. -block.itemvoid.description = Destroys any items which go into it without using power. Sandbox only. -block.powerinfinite.description = Infinitely outputs power. Sandbox only. -block.powervoid.description = Voids all power inputted into it. Sandbox only. -liquid.water.description = Commonly used for cooling machines and waste processing. -liquid.lava.description = Can be transformed into[LIGHT_GRAY] stone[], used for generating power or used as ammo for certain turrets. -liquid.oil.description = Can be burnt, exploded or used as a coolant. -liquid.cryofluid.description = The most efficient liquid for cooling things down. +unit.ghoul.name = 食尸鬼轰炸机 +unit.ghoul.description = 重型地毯轰炸机。用爆炸化合物或黄铁矿作为弹药。 +unit.wraith.name = 幻影战机 +unit.wraith.description = 一种快速,打了就跑的截击机。 +unit.fortress.name = 堡垒 +unit.fortress.description = 一种重炮地面部队。 +unit.revenant.name = 亡魂 +unit.revenant.description = 一种重型激光平台。 +tutorial.begin = 你的任务是消灭[LIGHT_GRAY] 敌人 [].\n\n首先开始[accent] 采集铜矿 []。点击核心附近的铜矿开始。 +tutorial.drill = 手动采矿效率低.\n[accent] 钻头 []可以自动采矿.\n放一个在铜矿上吧. +tutorial.conveyor = [accent]传送带[] 可以把物资传送到核心.\n请造一个传送线,从钻头到核心. +tutorial.morecopper = 需要更多的铜.\n\n手动采矿或者放更多的钻头吧. +tutorial.turret = 必须建造防御建筑来击退[LIGHT_GRAY] 敌人[].\n请在你核心附近造一个双人炮塔. +tutorial.drillturret = 双人炮塔需要[accent] 铜质弹药 []来射击.\n可以放一个钻头在炮塔附近供应铜. +tutorial.waves = [LIGHT_GRAY]敌人[] 来了.\n\n保护基地,防御2波攻击. 造更多的炮塔. +tutorial.lead = 有更多的矿可用. 探索和采集[accent] 铅[].\n\n按住你的采矿单位拖放到核心来传送资源. +tutorial.smelter = 铜和铅是弱金属.\n超级[accent] 致密合金[] 可以从冶炼厂生产.\n\n造一个吧. +tutorial.densealloy = 冶炼厂将生产合金.\n生产一些.\n有必要可以改进一下生产. +tutorial.siliconsmelter = 基地现在将制作一个[accent] 无人机[] 来采矿和维修方块.\n\n其他单位的工程可以用[accent] 硅 []来建造.\n造一个硅冶炼厂. +tutorial.silicondrill = 硅需要[accent] 煤[] 和[accent] 沙[].\n开始制作钻头吧. +tutorial.generator = 这项技术需要能源.\n造一个[accent] 燃烧发电机[] 来发电. +tutorial.generatordrill = 燃烧发电机需要燃料.\n用钻头采集煤来供给燃料. +tutorial.node = 能源需要传输.\n造一个[accent] 能量节点[] 靠近火力发电机来传输它的能源. +tutorial.nodelink = 使耗能方块紧靠发电机或者用能源节点连接来传输电力.\n\n点击能源节点并选择发电机和硅冶炼厂来链接能源. +tutorial.silicon = 正在生产硅. 多生产点.\n\n建议优化一下生产系统. +tutorial.daggerfactory = 建造一个[accent] 尖刀机甲工厂.[]\n\n它可以用来生产机甲 +tutorial.router = 工厂需要资源来运作.\n造一个路由器来分发传送资源. +tutorial.dagger = 链接能源节点到工厂.\n一旦需求满足, 将会制作一个机甲.\n\n根据需要制作更多的钻头,发电机,传送带. +tutorial.battle = [LIGHT_GRAY] 敌人[] 的核心已经暴露。\n用你的尖刀机甲摧毁它。 +block.copper-wall.description = 廉价的防守区块。\n用于保护前几波中的核心和炮塔。 +block.copper-wall-large.description = 廉价的防御块。\n用于保护前几个波浪中的核心和炮塔。\n跨越多个块。 +block.dense-alloy-wall.description = 标准的防守区块。\n可以较好的防御敌人。 +block.dense-alloy-wall-large.description = 标准的防守区块。\n可以较好的防御敌人。\n跨越多个块。 +block.thorium-wall.description = 强大的防守区块。\n很好的防御敌人。 +block.thorium-wall-large.description = 强大的防守区块。\n很好地防御敌人。\n跨越多个块。 +block.phase-wall.description = 没有钍墙那样坚固,但是它可以使不太强的子弹发生偏转。 +block.phase-wall-large.description = 没有钍墙那样坚固,但是它可以使不太强的子弹发生偏转。\n跨越多个块。 +block.surge-wall.description = 强大的防守区块。\n有很小的机会向攻击者发射闪电。 +block.surge-wall-large.description = 强大的防御区块。\n有很小的机会向攻击者发射闪电。\n跨越多个区块。 +block.door.description = 一扇小门,可以通过点击打开和关闭。\n如果打开,敌人可以射击并穿过。 +block.door-large.description = 一扇大门,可以通过点击打开和关闭。\n如果打开,敌人可以射击并穿过。\n扫过多个瓷砖。 +block.mend-projector.description = 定期修复附近的建筑物。 +block.overdrive-projector.description = 提高附近建筑物的速度,如钻机和传送带。 +block.force-projector.description = 自身周围创建一个六边形力场,保护建筑物和内部单位免受子弹的伤害。 +block.shock-mine.description = 伤害踩到它的敌人。敌人几乎看不到它。 +block.duo.description = 小而便宜的炮塔。 +block.arc.description = 小型炮塔,发射电弧。 +block.hail.description = 小型炮兵炮台。 +block.lancer.description = 中型炮塔,发射带电的电子束。 +block.wave.description = 中型快速炮塔,射出液体泡泡。 +block.salvo.description = 中型炮塔,齐射射击。 +block.swarmer.description = 发射爆炸导弹的中型炮塔。 +block.ripple.description = 大型炮兵炮塔,可同时向多个目标开火。 +block.cyclone.description = 大型快速炮塔。 +block.fuse.description = 发射强大的短程光束的大型炮塔。 +block.spectre.description = 大型炮塔,一次射出两颗强大的子弹。 +block.meltdown.description = 发射强大的远程光束的大型炮塔。 +block.conveyor.description = 初级传送带。将物品向前移动并自动将它们放入炮塔或工厂中。可旋转方向。 +block.titanium-conveyor.description = 高级传送带。能比初级传送带更快地移动物品。 +block.phase-conveyor.description = 高级传送带。使用电力将物品传送到距离几个块的相位传送带上。 +block.junction.description = 为两条交叉传送带的桥梁。适用于两种不同传送带将不同材料运送到不同位置的情况。 +block.mass-driver.description = 终极传送带。收集几件物品,然后将它们射向长距离外的另一个批量传送带。 +block.smelter.description = 烧煤,用于冶炼铜和铅成致密合金。 +block.arc-smelter.description = 用外部电源熔炼铜和铅成致密合金。 +block.silicon-smelter.description = 用高纯度的焦炭来加工沙子以生产硅。 +block.plastanium-compressor.description = 用油和钛生产塑钢。 +block.phase-weaver.description = 用放射性钍和大量沙子生产相织物。 +block.alloy-smelter.description = 用钛,铅,硅和铜生产浪涌合金。 +block.pulverizer.description = 将石头压成沙子。当缺少天然沙子时很有用。 +block.pyratite-mixer.description = 用煤,铅和沙子混合成高度易燃的硫。 +block.blast-mixer.description = 用油将硫转化为不易燃但更具爆炸性的爆炸化合物。 +block.cryofluidmixer.description = 水和钛结合到低温流体中,冷却效率更高。 +block.solidifer.description = 快速冷却熔岩为石头。 +block.melter.description = 石头加热到很高的温度以获得熔岩。 +block.incinerator.description = 用于除掉任何多余的物品或液体。 +block.biomattercompressor.description = 压缩生物质以获取油。 +block.separator.description = 将石头暴露在水压下,以获得石头中含有的各种矿物质。 +block.centrifuge.description = 比分离器更有效,但构建起来也更昂贵并且需要动力。 +block.power-node.description = 连接节点传输电源。最多可连接四个电源,接收器或节点。节点将从任何相邻块接收电力或向其供电。 +block.power-node-large.description = 传输径大于电源节点,最多可连接六个电源,接收器或节点。 +block.battery.description = 储存电力,当储存有能量时,可在电力短缺时提供电力。 +block.battery-large.description = 比普通电池容量更大。 +block.combustion-generator.description = 通过燃烧油或易燃材料产生电力。 +block.turbine-generator.description = 比燃烧发电机更有效,但需要额外的水。 +block.thermal-generator.description = 从熔岩中产生大量的能量。 +block.solar-panel.description = 标准太阳能面板,提供少量电力。 +block.solar-panel-large.description = 比标准太阳能电池板提供更好的电源,但构建起来要贵得多。 +block.thorium-reactor.description = 高放射性钍产生大量电力。需要持续冷却。如果供应的冷却剂量不足,会剧烈爆炸。 +block.rtg-generator.description = 一种放射性同位素热电发电机,它不需要冷却,但功率低于钍反应堆。 +block.unloader.description = 物品从容器,仓库或核心卸载到传送带上或直接卸载到相邻的块中。可以通过点击卸载器来更改要卸载的项目类型。 +block.container.description = 存储少量物品。当存在非恒定的材料需求时,使用它来创建缓冲区。 [LIGHT_GRAY]卸载器[]可用于从容器中获取物品。 +block.vault.description = 存储大量物品。当存在非恒定的材料需求时,使用它来创建缓冲区。 [LIGHT_GRAY]卸载器[]可用于从仓库中获取物品。 +block.mechanical-drill.description = 便宜的钻头。放置在适当的块上时,无限期地以缓慢的速度输出物品。 +block.pneumatic-drill.description = 一种改进的钻头,它更快,能够利用气压处理更硬的材料。 +block.laser-drill.description = 通过激光技术更快地钻孔,但需要电源。此外,这种钻头可以回收放射性钍。 +block.blast-drill.description = 终极钻头,需要大量电力。 +block.water-extractor.description = 从地下提取水。当附近没有湖泊时使用它。 +block.cultivator.description = 用水培育土壤以获得生物物质。 +block.oil-extractor.description = 使用大量的电力从沙子中提取石油。当附近没有直接的石油来源时使用它。 +block.dart-ship-pad.description = 离开你当前的装置,换成基本的战斗机。\n站在上面时双击切换。 +block.trident-ship-pad.description = 离开你当前的装置,换成一个装甲合理的重型轰炸机。\n站在上面时双击切换。 +block.javelin-ship-pad.description = 离开你当前的装置,换上一个强大而快速的截击机,用闪电武器。\n站在上面时双击切换。 +block.glaive-ship-pad.description = 离开现有的装置,换成装甲良好的大型武装直升机。\n站在上面时双击切换。 +block.tau-mech-pad.description = 离开你当前的装置并换成一个可以治愈友方建筑物和单位的支撑机械。\n站在上面时双击切换。 +block.delta-mech-pad.description = 离开你当前的装置并换成一个快速,轻装甲的机械装置,用于快速攻击。\n站在上面时双击切换。 +block.omega-mech-pad.description = 离开你当前的装置并换成一个笨重且装甲良好的机甲,用于前线攻击。\n站在上面时双击切换。 +block.spirit-factory.description = 生产轻型无人机,用于开采矿石和修复块。 +block.phantom-factory.description = 生产高级无人机单元,它比轻型无人机更有效。 +block.wraith-factory.description = 生产快速截击机。 +block.ghoul-factory.description = 生产重型地毯轰炸机。 +block.dagger-factory.description = 生产基本地面单位。 +block.titan-factory.description = 生产先进的装甲地面单位。 +block.fortress-factory.description = 生产重型火炮地面部队。 +block.revenant-factory.description = 生产重型激光地面单元。 +block.repair-point.description = 连续治疗附近最近的受损单位。 +block.command-center.description = 允许更改友方AI行为。目前支持攻击,撤退和巡逻命令。 +block.conduit.description = 基本液体传输块。像输送机一样工作,但用于液体。最适用于提取器,泵或其他导管。 +block.pulse-conduit.description = 高级液体传输块。比标准导管更快地输送液体并储存更多液体。 +block.phase-conduit.description = 高级液体传输块。使用电力将液体传送到多个块上的连接相管道。 +block.liquid-router.description = 接受来自一个方向的液体并将它们平均输出到最多3个其他方向。也可以储存一定量的液体。用于将液体从一个源分成多个目标。 +block.liquid-tank.description = 存储大量液体。当存在对材料的非恒定需求或作为冷却重要块的安全措施时,将其用于创建缓冲区。 +block.liquid-junction.description = 作为两个交叉管道的桥梁。适用于两种不同导管将不同液体输送到不同位置的情况。 +block.bridge-conduit.description = 高级液体传输块。允许在任何地形或建筑物的最多3个块上运输液体。 +block.mechanical-pump.description = 一种输出速度慢但没有功耗的廉价泵。 +block.rotary-pump.description = 一种先进的泵,通过使用动力使速度加倍。 +block.thermal-pump.description = 终级水泵。速度是机械泵的三倍。是唯一能够回收熔岩的泵。 +block.router.description = 从一个方向接受物品,并将它们平均输出到最多3个其他方向。用于将材料从一个源分割为多个目标。 +block.distributor.description = 一个高级路由器,可以将物品分成最多7个方向。 +block.bridge-conveyor.description = 高级项目传输块。允许在跨越任何地形或建筑物上运输物品,最多跨越3个块。 +block.alpha-mech-pad.description = 当给予足够的电力时,将你的装置重建为[accent] Alpha []机甲。 +block.itemsource.description = 无限输出物品。仅限沙箱。 +block.liquidsource.description = 无限输出液体。仅限沙箱。 +block.itemvoid.description = 在不使用电源的情况下销毁任何进入它的物品。仅限沙箱。 +block.powerinfinite.description = 无限输出功率。仅限沙箱。 +block.powervoid.description = 消耗输入的所有功率。仅限沙箱。 +liquid.water.description = 通常用于冷却和废物处理。 +liquid.lava.description = 可以转换成[LIGHT_GRAY] 石头 [],用于发电或用作某些炮塔的弹药。 +liquid.oil.description = 可以燃烧,爆炸或用作冷却液。 +liquid.cryofluid.description = 用于降温的最有效液体。 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 3d18289129..16a87728f9 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -1,118 +1,116 @@ 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.discord = 加入 Mindustry 的 Discord 聊天室 +text.discord = 加入 Mindustry 的 Discord 聊天室! text.link.discord.description = 官方 Mindustry Discord 聊天室 text.link.github.description = 遊戲原始碼 text.link.dev-builds.description = 開發中版本 text.link.trello.description = 官方 Trello 功能規劃看板 -text.link.itch.io.description = 電腦版與網頁版(itch.io 頁面) +text.link.itch.io.description = itch.io 電腦版下載與網頁版 text.link.google-play.description = Google Play 商店頁面 text.link.wiki.description = 官方 Mindustry 維基 -text.linkfail = 無法打開連結!我們已將該網址複製到您的剪貼簿。 -text.editor.web = 線上版本不支援地圖編輯器!請下載遊戲已使用這項功能。 -text.web.unsupported = The web version does not support this feature! Download the game to use it. +text.linkfail = 無法打開連結!\n我們已將該網址複製到您的剪貼簿。 text.gameover = 核心已被摧毀。 -text.gameover.pvp = The[accent] {0}[] team is victorious! -text.sector.gameover = This sector has been lost. Re-deploy? -text.sector.retry = Retry -text.highscore = [YELLOW]新的高分紀錄! -text.wave.lasted = You lasted until wave [accent]{0}[]. -text.level.highscore = 最高分:[accent] {0} +text.gameover.pvp = [accent]{0}[]隊得到勝利! +text.sector.gameover = 這個區域失守了,重新部署? +text.sector.retry = 重試 +text.highscore = [accent]新的高分紀錄! +text.wave.lasted = 你維持到第[accent]{0}[]波。 +text.level.highscore = 最高分:[accent]{0} text.level.delete.title = 確認刪除 -text.map.delete = Are you sure you want to delete the map "[accent]{0}[]"? +text.map.delete = 確認要刪除「[accent]{0}[]」地圖嗎? text.level.select = 選擇關卡 text.level.mode = 遊戲模式: -text.construction.desktop = Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[]. -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.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.showagain = Don't show again next session -text.coreattack = < Core is under attack! > -text.unlocks = Unlocks +text.construction.desktop = 電腦控制已更改。\n要取消選擇或停止建設,[accent]按空格鍵[]。 +text.construction.title = 方塊建設指南 +text.construction = 你選擇了[accent]方塊建設模式[]。\n\n要放置方塊,點擊你的船附近的有效位置。\n選擇了方塊後,點擊複選框就會開始建設。\n\n- 點擊方塊以從選擇區[accent]移除方塊[]。\n- 按住並拖動以[accent]直線放置方塊[]。\n- 點擊左下角的「X」以[accent]取消建設或取消選擇[]。 +text.deconstruction.title = 方塊移除指南 +text.deconstruction = 你選擇了[accent]方塊移除模式[]。\n\n要移除方塊,點擊你的船附近的方塊。\n選擇了方塊後,點擊複選框就會開始移除。\n\n- 點擊方塊以從選擇區[accent]移除方塊[]。\n- 按住一個空點向任何方向拖動以[accent]移除選中區域的方塊[]。\n- 點擊左下角的「X」以[accent]取消移除或取消選擇[]。 +text.showagain = 下次不再顯示 +text.coreattack = 〈核心正在受到攻擊!〉 +text.unlocks = 已解鎖 text.savegame = 儲存遊戲 text.loadgame = 載入遊戲 text.joingame = 多人連線 -text.addplayers = Add/Remove Players -text.customgame = Custom Game -text.sectors = Sectors -text.sector = Selected Sector: [LIGHT_GRAY]{0} -text.sector.time = Time: [LIGHT_GRAY]{0} -text.sector.deploy = Deploy -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.resume = Resume +text.addplayers = 增加/移除玩家 +text.customgame = 自訂遊戲 +text.sectors = 區域 +text.sector = 區域︰[LIGHT_GRAY]{0} +text.sector.time = 時間︰[LIGHT_GRAY]{0} +text.sector.deploy = 部署 +text.sector.abandon = 放棄 +text.sector.abandon.confirm = 確認要放棄這區域所有進度嗎?\n此操作不可撤回! +text.sector.resume = 繼續 text.sector.locked = [scarlet][[Incomplete] text.sector.unexplored = [accent][[Unexplored] -text.missions = Missions:[LIGHT_GRAY] {0} -text.mission = Mission:[LIGHT_GRAY] {0} -text.mission.main = Main Mission:[LIGHT_GRAY] {0} -text.mission.info = Mission Info -text.mission.complete = Mission complete! -text.mission.complete.body = Sector {0},{1} has been conquered. -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.enemy = Survive[accent] {0}/{1} []waves\n{2} Enemy -text.mission.wave.menu = Survive[accent] {0} []waves -text.mission.battle = Destroy the enemy base. -text.mission.resource.menu = Obtain {0} x{1} -text.mission.resource = Obtain {0}:\n[accent]{1}/{2}[] -text.mission.block = Create {0} -text.mission.unit = Create {0} Unit -text.mission.command = Send Command {0} To Units -text.mission.linknode = Link Power Node -text.mission.display = [accent]Mission:\n[LIGHT_GRAY]{0} -text.mission.mech = Switch to mech[accent] {0}[] -text.mission.create = Create[accent] {0}[] -text.none = -text.close = Close +text.missions = 任務︰[LIGHT_GRAY]{0} +text.mission = 任務︰[LIGHT_GRAY]{0} +text.mission.main = 主要任務︰[LIGHT_GRAY]{0} +text.mission.info = 任務資訊 +text.mission.complete = 任務完成! +text.mission.complete.body = 區域{0},{1}已被佔領。 +text.mission.wave = 存活[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.menu = 存活[accent]{0}[]波 +text.mission.battle = 摧毀敵方基地。 +text.mission.resource.menu = 獲取{0}x{1} +text.mission.resource = 獲取{0}︰\n[accent]{1}/{2}[] +text.mission.block = 建造{0} +text.mission.unit = 生產{0}機組 +text.mission.command = 發送{0}指令至機組 +text.mission.linknode = 鏈接能量節點 +text.mission.display = [accent]任務︰\n[LIGHT_GRAY]{0} +text.mission.mech = 轉換至[accent]{0}[]機甲 +text.mission.create = 製造[accent]{0}[] +text.none = <沒有> +text.close = 關閉 text.quit = 退出 -text.maps = Maps -text.continue = Continue -text.nextmission = Next Mission -text.maps.none = [LIGHT_GRAY]No maps found! +text.maps = 地圖 +text.continue = 繼續 +text.nextmission = 下一個任務 +text.maps.none = [LIGHT_GRAY]找不到地圖! text.about.button = 關於 -text.name = 姓名: -text.filename = File Name: -text.unlocked = New Block Unlocked! -text.unlocked.plural = New Blocks Unlocked! -text.players = {0} 個線上玩家 -text.players.single = {0} 個線上玩家 -text.server.closing = [accent] 正在關閉伺服器... +text.name = 名稱: +text.filename = 檔案名稱︰ +text.unlocked = 新方塊已解鎖! +text.unlocked.plural = 新方塊已解鎖! +text.players = {0}個線上玩家 +text.players.single = {0}個線上玩家 +text.server.closing = [accent]正在關閉伺服器…… text.server.kicked.kick = 您已被踢出伺服器! -text.server.kicked.serverClose = Server closed. -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.serverClose = 伺服器已關閉。 +text.server.kicked.sectorComplete = 區域已完成。 +text.server.kicked.sectorComplete.text = 任務已完成。\n服務器將於下一個區域繼續。 text.server.kicked.clientOutdated = 客戶端版本過舊!請更新遊戲! text.server.kicked.serverOutdated = 伺服器版本過舊!請聯絡伺服主更新伺服器! text.server.kicked.banned = 您已經從這個伺服器被封禁。 text.server.kicked.recentKick = 您已經從伺服器被踢除。\n請稍後再進行連線。 -text.server.kicked.nameInUse = There is someone with that name\nalready on this server. -text.server.kicked.nameEmpty = Your name must contain at least one character or number. -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.host.info = 目前伺服器監聽於連接埠 [scarlet]6567[] 與 [scarlet]6568[]。\n所有跟您在同一個[LIGHT_GRAY]無線網路或區域網路[]環境的玩家應該能在他們的伺服器清單中找到您的伺服器。\n如果您希望網際網路上的玩家透過 IP 位址連線到您的伺服器,您必須設定[accent]連接埠轉發[]。\n\n[LIGHT_GRAY]注意:如果區域網路內有玩家無法連線至您的伺服器,請務必確認您已於防火牆設定中開放 Mindustry 存取您的區域網路。 -text.join.info = 您可以在此輸入欲連線的伺服器[accent] IP 位址[],或尋找[accent]區域網路[]內的伺服器。目前支援區域網路與網際網路連線。\n\n [LIGHT_GRAY]注意:這裡沒有網際網路伺服器清單,如果您想透過 IP 位址連線到某人的伺服器,您必須向他們詢問 IP 位址。 +text.server.kicked.nameInUse = 伺服器中已經\n有人有相同的名稱了。 +text.server.kicked.nameEmpty = 你的名稱必須至少包含一個字母或數字。 +text.server.kicked.idInUse = 你已經在伺服器中!不允許用兩個賬號。 +text.server.kicked.customClient = 這個伺服器不支持自訂客戶端,請下載官方版本。 +text.host.info = 目前伺服器監聽於連接埠[scarlet]6567[]。\n所有跟您在同一個[LIGHT_GRAY]網路或區域網路[]環境的玩家應該能在他們的伺服器清單中找到您的伺服器。\n\n如果您希望網際網路上的玩家透過IP 位址連線到您的伺服器,您必須設定[accent]連接埠轉發[]。\n\n[LIGHT_GRAY]注意:如果區域網路內有玩家無法連線至您的伺服器,請務必確認您已於防火牆設定中開放Mindustry存取您的區域網路。 +text.join.info = 您可以在此輸入欲連線的[accent]伺服器的IP位址[],或尋找[accent]區域網路[]內的伺服器。目前支援區域網路與網際網路連線。\n\n[LIGHT_GRAY]注意:這裡沒有網際網路伺服器清單,如果您想透過IP位址連線到某人的伺服器,您必須向他們詢問IP位址。 text.hostserver = 建立伺服器 -text.hostserver.mobile = Host\nGame +text.hostserver.mobile = 建立\n伺服器 text.host = 建立 -text.hosting = [accent]伺服器啟動中... +text.hosting = [accent]伺服器啟動中…… text.hosts.refresh = 刷新 text.hosts.discovering = 搜尋區域網路遊戲 text.server.refreshing = 刷新伺服器 text.hosts.none = [lightgray]找不到區域網路伺服器! text.host.invalid = [scarlet]無法連線至伺服器。 text.trace = 跟隨玩家 -text.trace.playername = 玩家名稱:[accent] {0} -text.trace.ip = IP:[accent] {0} -text.trace.id = ID:[accent] {0} -text.trace.android = Android 客戶端:[accent] {0} -text.trace.modclient = 自訂客戶端:[accent] {0} -text.trace.totalblocksbroken = 方塊拆除總數:[accent] {0} -text.trace.structureblocksbroken = 結構方塊拆除數:[accent] {0} -text.trace.lastblockbroken = 最後拆除的方塊:[accent] {0} -text.trace.totalblocksplaced = 方塊建造數:[accent] {0} -text.trace.lastblockplaced = 最後建造的方塊:[accent] {0} +text.trace.playername = 玩家名稱:[accent]{0} +text.trace.ip = IP:[accent]{0} +text.trace.id = ID:[accent]{0} +text.trace.android = Android 客戶端:[accent]{0} +text.trace.modclient = 自訂客戶端:[accent]{0} +text.trace.totalblocksbroken = 方塊拆除總數:[accent]{0} +text.trace.structureblocksbroken = 結構方塊拆除數:[accent]{0} +text.trace.lastblockbroken = 最後拆除的方塊:[accent]{0} +text.trace.totalblocksplaced = 方塊建造數:[accent]{0} +text.trace.lastblockplaced = 最後建造的方塊:[accent]{0} text.invalidid = 無效的客戶端 ID!請提交錯誤報告。 text.server.bans = 封禁 text.server.bans.none = 沒有玩家被封禁! @@ -120,57 +118,57 @@ text.server.admins = 管理員 text.server.admins.none = 找不到管理員! text.server.add = 新增伺服器 text.server.delete = 您確定要刪除這個伺服器嗎? -text.server.hostname = 主機: {0} +text.server.hostname = 主機:{0} text.server.edit = 編輯伺服器 text.server.outdated = [crimson]伺服器版本過舊![] text.server.outdated.client = [crimson]客戶端版本過舊![] -text.server.version = [lightgray]版本: {0} +text.server.version = [lightgray]版本:{0} text.server.custombuild = [yellow]自訂組建 text.confirmban = 您確定要封禁該玩家嗎? -text.confirmkick = Are you sure you want to kick this player? +text.confirmkick = 您確定要踢出該玩家嗎? text.confirmunban = 您確定要解除封禁該玩家嗎? text.confirmadmin = 您確定要提升這個玩家為管理員嗎? text.confirmunadmin = 您確定要解除這個玩家的管理員嗎? text.joingame.title = 加入遊戲 -text.joingame.ip = IP 位址: +text.joingame.ip = IP位址: text.disconnect = 已中斷連線。 text.disconnect.data = 無法載入地圖資料! -text.connecting = [accent]連線中... -text.connecting.data = [accent]正在載入地圖資料... +text.connecting = [accent]連線中…… +text.connecting.data = [accent]正在載入地圖資料…… text.server.port = 連接埠: text.server.addressinuse = 該位址已使用中! text.server.invalidport = 無效的連接埠! -text.server.error = [crimson]建立伺服器時發生錯誤:[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.server.error = [crimson]建立伺服器時發生錯誤:[accent]{0} +text.save.old = 這個存檔屬於舊版本,無法使用了。\n\n[LIGHT_GRAY]舊存檔兼容將在正式4.0版本中實現。 text.save.new = 新存檔 text.save.overwrite = 您確定要覆蓋存檔嗎? -text.overwrite = 覆蓋存檔 +text.overwrite = 覆蓋 text.save.none = 找不到存檔! -text.saveload = [accent]存檔中... +text.saveload = [accent]存檔中…… text.savefail = 無法存檔! text.save.delete.confirm = 您確定要刪除這個存檔嗎? -text.save.delete = 刪除存檔 +text.save.delete = 刪除 text.save.export = 匯出存檔 -text.save.import.invalid = [accent]這是個無效的存檔!\n\n請注意您[scarlet]無法[accent]匯入自訂地圖存檔! -text.save.import.fail = [crimson]無法匯入存檔: [accent]{0} -text.save.export.fail = [crimson]無法匯出存檔: [accent] {0} +text.save.import.invalid = [accent]這是個無效的存檔! +text.save.import.fail = [crimson]無法匯入存檔:[accent]{0} +text.save.export.fail = [crimson]無法匯出存檔:[accent]{0} text.save.import = 匯入存檔 text.save.newslot = 存檔名稱: text.save.rename = 重新命名 text.save.rename.text = 新名稱: text.selectslot = 選取一個存檔。 -text.slot = [accent]存檔 {0} -text.save.corrupted = [accent]此存檔無效或已損毀! -text.sector.corrupted = [accent]A save file for this sector was found, but loading failed.\nA new one has been created. +text.slot = [accent]存檔{0} +text.save.corrupted = [accent]此存檔無效或已損毀!\n如果你剛剛升級了遊戲,那麼這可能是因為存檔格式改變了而[scarlet]不是[]錯誤。 +text.sector.corrupted = [accent]找到此區域的存檔,但是加載失敗。\n已經創建了一個新的存檔。 text.empty = <空白> text.on = 開啟 text.off = 關閉 text.save.autosave = 自動存檔:{0} -text.save.map = 地圖: {0} -text.save.wave = 波次: {0} -text.save.difficulty = 難度: {0} +text.save.map = 地圖:{0} +text.save.wave = 波次:{0} +text.save.difficulty = 難度:{0} text.save.date = 最後存檔時間:{0} -text.save.playtime = Playtime: {0} +text.save.playtime = 遊玩時間: {0} text.confirm = 確認 text.delete = 刪除 text.ok = 確定 @@ -181,70 +179,70 @@ text.copylink = 複製連結 text.back = 返回 text.quit.confirm = 您確定要退出嗎? text.changelog.title = 更新日誌 -text.changelog.loading = 正在取得更新日誌... -text.changelog.error.android = [accent]請注意,更新日誌有時無法在 Android 4.4 或更低版本使用!這是因為 Android 的內部 Bug 導致。 -text.changelog.error.ios = [accent]目前無法在 iOS 系統中使用更新日誌。 +text.changelog.loading = 正在取得更新日誌…… +text.changelog.error.android = [accent]請注意,更新日誌有時無法在Android 4.4或更低版本使用!這是因為 Android 的內部錯誤導致。 +text.changelog.error.ios = [accent]目前無法在iOS系統中使用更新日誌。 text.changelog.error = [scarlet]無法取得更新日誌!請檢查您的網路連線! -text.changelog.current = [yellow][[目前版本] -text.changelog.latest = [accent][[最新版本] -text.loading = [accent]載入中... -text.saving = [accent]Saving... -text.wave = [accent]第 {0} 波 -text.wave.waiting = 將於 {0} 秒後抵達 -text.waiting = 等待中... -text.waiting.players = Waiting for players... -text.wave.enemies = [LIGHT_GRAY]{0} Enemies Remaining -text.wave.enemy = [LIGHT_GRAY]{0} Enemy Remaining +text.changelog.current = [yellow][[Current version] +text.changelog.latest = [accent][[Latest version] +text.loading = [accent]載入中…… +text.saving = [accent]儲存中…… +text.wave = [accent]第{0}波 +text.wave.waiting = 將於{0}秒後抵達 +text.waiting = 等待中…… +text.waiting.players = 等待玩家中…… +text.wave.enemies = [LIGHT_GRAY]剩下{0}敵人 +text.wave.enemy = [LIGHT_GRAY]剩下{0}敵人 text.loadimage = 載入圖像 text.saveimage = 儲存圖像 -text.unknown = Unknown -text.custom = Custom -text.builtin = Built-In -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.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.invalid = Error loading map: corrupted or invalid map file. -text.editor.brush = Brush +text.unknown = 未知 +text.custom = 自訂 +text.builtin = 内建 +text.map.delete.confirm = 確認要刪除地圖嗎?此操作無法撤回! +text.map.random = [accent]隨機地圖 +text.map.nospawn = 這個地圖沒有核心!請在編輯器中添加一個[ROYAL]藍色[]的核心。 +text.map.nospawn.pvp = 這個地圖沒有核心讓敵人重生!請在編輯器中添加一個[SCARLET]紅色[]的核心。 +text.map.invalid = 地圖載入錯誤:地圖可能已經損壞。 +text.editor.brush = 粉刷 text.editor.slope = \\ -text.editor.openin = Open In Editor -text.editor.oregen = Ore Generation -text.editor.oregen.info = Ore Generation: -text.editor.mapinfo = Map Info -text.editor.author = Author: -text.editor.description = Description: -text.editor.name = Name: -text.editor.teams = Teams -text.editor.elevation = Elevation -text.editor.errorimageload = 載入圖像檔時發生錯誤:[accent] {0} -text.editor.errorimagesave = 儲存圖像檔時發生錯誤:[橙色] {0} +text.editor.openin = 在編輯器中開啟 +text.editor.oregen = 礦石產生 +text.editor.oregen.info = 礦石產生: +text.editor.mapinfo = 地圖資訊 +text.editor.author = 作者: +text.editor.description = 描述: +text.editor.name = 名稱: +text.editor.teams = 隊伍 +text.editor.elevation = 高度 +text.editor.errorimageload = 載入圖像檔時發生錯誤:[accent]{0} +text.editor.errorimagesave = 儲存圖像檔時發生錯誤:[橙色]{0} text.editor.generate = 產生 text.editor.resize = 調整大小 text.editor.loadmap = 載入地圖 text.editor.savemap = 儲存地圖 -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.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 = Import... -text.editor.importmap = Import Map -text.editor.importmap.description = Import an already existing map -text.editor.importfile = Import File -text.editor.importfile.description = Import an external map file -text.editor.importimage = Import Terrain Image -text.editor.importimage.description = Import an external map image file -text.editor.export = Export... -text.editor.exportfile = Export File -text.editor.exportfile.description = Export a map file -text.editor.exportimage = Export Terrain Image -text.editor.exportimage.description = Export a map image file +text.editor.saved = 已儲存! +text.editor.save.noname = 您的地圖沒有名稱!在「地圖資訊」畫面設置一個名稱。 +text.editor.save.overwrite = 您的地圖覆寫一個內建的地圖!在「地圖信息」畫面設置一個不同的名稱。 +text.editor.import.exists = [scarlet]匯入失敗:[]一個叫「{0}」的內建地圖已存在! +text.editor.import = 匯入…… +text.editor.importmap = 匯入地圖 +text.editor.importmap.description = 匯入一個已存在的地圖 +text.editor.importfile = 匯入檔案 +text.editor.importfile.description = 匯入一個外部的地圖檔案 +text.editor.importimage = 匯入地形圖像檔 +text.editor.importimage.description = 匯入一個外部的地形圖像檔 +text.editor.export = 匯出…… +text.editor.exportfile = 匯出檔案 +text.editor.exportfile.description = 匯出一個地圖檔案 +text.editor.exportimage = 匯出地形圖像檔 +text.editor.exportimage.description = 匯出一個地形圖像檔 text.editor.loadimage = 載入圖像 text.editor.saveimage = 儲存圖像 text.editor.unsaved = [scarlet]尚未儲存變更![]\n您確定要退出嗎? text.editor.resizemap = 調整地圖大小 text.editor.mapname = 地圖名稱: text.editor.overwrite = [accent]警告!這將會覆蓋現有的地圖。 -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]警告![]同名地圖存在,確定要覆蓋現有地圖? text.editor.selectmap = 選取要載入的地圖: text.width = 寬度: text.height = 長度: @@ -252,104 +250,104 @@ text.menu = 主選單 text.play = 開始 text.load = 載入 text.save = 儲存 -text.fps = FPS: {0} -text.tps = TPS: {0} -text.ping = Ping: {0}ms +text.fps = 螢幕刷新率:{0} +text.tps = TPS:{0} +text.ping = 延遲:{0}ms text.language.restart = 請重新啟動遊戲以使選取的語言生效。 text.settings = 設定 text.tutorial = 教學 text.editor = 地圖編輯器 text.mapeditor = 地圖編輯器 text.donate = 贊助 -text.connectfail = [crimson]無法連線到伺服器: [accent]{0} -text.error.unreachable = Server unreachable. -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.mismatch = Packet error:\npossible client/server version mismatch.\nMake sure you and the host have the latest version of Mindustry! -text.error.alreadyconnected = Already connected. -text.error.mapnotfound = Map file not found! -text.error.any = Unkown network error. +text.connectfail = [crimson]無法連線到伺服器:[accent]{0} +text.error.unreachable = 無法到達伺服器。 +text.error.invalidaddress = 無效地址。 +text.error.timedout = 超時連接!\n確保伺服器設置了連接埠轉發,並且地址正確! +text.error.mismatch = 包裹錯誤:\n客戶端/伺服器版本可能不匹配。 n確保客戶端和伺服器有最新版本的Mindustry! +text.error.alreadyconnected = 已連接。 +text.error.mapnotfound = 找不到地圖! +text.error.any = 未知網絡錯誤。 text.settings.language = 語言 text.settings.reset = 重設為預設設定 -text.settings.rebind = Rebind +text.settings.rebind = 重新綁定 text.settings.controls = 操作 text.settings.game = 遊戲 text.settings.sound = 音效 text.settings.graphics = 圖形 -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.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.clearunlocks = Clear Unlocks -text.settings.clearall = Clear All +text.settings.cleardata = 清除遊戲數據…… +text.settings.clear.confirm = 您確定要清除數據嗎?\n此操作無法撤回! +text.settings.clearall.confirm = [scarlet]警告![]\n這將清除所有數據,包括存檔、地圖、解鎖和熱鍵綁定。\n按「是」後,遊戲將刪除所有數據並自動退出。 +text.settings.clearsectors = 清除區域 +text.settings.clearunlocks = 清除已解鎖 +text.settings.clearall = 清除所有 text.paused = 已暫停 -text.yes = Yes -text.no = No +text.yes = 是 +text.no = 否 text.info.title = [accent]資訊 text.error.title = [crimson]發生錯誤 text.error.crashtitle = 發生錯誤 text.blocks.blockinfo = 方塊資訊 text.blocks.powercapacity = 蓄電量 -text.blocks.powershot = 每發射擊功耗 -text.blocks.targetsair = Targets Air -text.blocks.itemspeed = Units Moved -text.blocks.shootrange = Range +text.blocks.powershot = 能源/射擊 +text.blocks.targetsair = 攻擊空中目標 +text.blocks.itemspeed = 移動速度 +text.blocks.shootrange = 範圍 text.blocks.size = 尺寸 text.blocks.liquidcapacity = 液體容量 text.blocks.maxitemssecond = 最高產量 text.blocks.powerrange = 輸出範圍 -text.blocks.poweruse = Power Use -text.blocks.powerdamage = Power/Damage -text.blocks.inputitemcapacity = Input Item Capacity -text.blocks.outputitemcapacity = Input Item Capacity -text.blocks.itemcapacity = 材料容量 -text.blocks.basepowergeneration = Base Power Generation -text.blocks.powertransferspeed = Power Transfer -text.blocks.craftspeed = Production Speed +text.blocks.poweruse = 能源使用 +text.blocks.powerdamage = 能源/傷害 +text.blocks.inputitemcapacity = 最大輸入 +text.blocks.outputitemcapacity = 最大輸出 +text.blocks.itemcapacity = 物品容量 +text.blocks.basepowergeneration = 基本能量生产 +text.blocks.powertransferspeed = 能源傳輸 +text.blocks.craftspeed = 產生速度 text.blocks.inputliquid = 輸入液體 -text.blocks.inputliquidaux = Aux Liquid -text.blocks.inputitem = 輸入材料 -text.blocks.inputitems = Input Items -text.blocks.outputitem = Output Item -text.blocks.drilltier = Drillables -text.blocks.drillspeed = Base Drill Speed -text.blocks.liquidoutput = Liquid Output -text.blocks.liquidoutputspeed = Liquid Output Speed -text.blocks.liquiduse = Liquid Use -text.blocks.coolant = Coolant -text.blocks.coolantuse = Coolant Use -text.blocks.inputliquidfuel = Fuel Liquid -text.blocks.liquidfueluse = Liquid Fuel Use -text.blocks.explosive = 易爆裂物! +text.blocks.inputliquidaux = 輔助液體 +text.blocks.inputitem = 輸入物品 +text.blocks.inputitems = 輸入物品 +text.blocks.outputitem = 輸出物品 +text.blocks.drilltier = 可鑽取礦物 +text.blocks.drillspeed = 基本鑽取速度 +text.blocks.liquidoutput = 輸出液體 +text.blocks.liquidoutputspeed = 輸出液體速度 +text.blocks.liquiduse = 使用液體速度 +text.blocks.coolant = 冷卻劑 +text.blocks.coolantuse = 使用冷卻劑 +text.blocks.inputliquidfuel = 輸入液體燃料 +text.blocks.liquidfueluse = 使用液體燃料速度 +text.blocks.explosive = 容易爆炸! text.blocks.health = 耐久度 -text.blocks.inaccuracy = 後座力 +text.blocks.inaccuracy = 誤差 text.blocks.shots = 射擊數 -text.blocks.reload = Reload -text.blocks.inputfuel = Fuel -text.blocks.fuelburntime = Fuel Burn Time +text.blocks.reload = 重裝彈藥 +text.blocks.inputfuel = 燃料 +text.blocks.fuelburntime = 燃燒燃料時間 text.blocks.inputcapacity = 輸入容量 text.blocks.outputcapacity = 輸出容量 -text.unit.blocks = blocks -text.unit.powersecond = power units/second -text.unit.liquidsecond = liquid units/second -text.unit.itemssecond = items/second -text.unit.pixelssecond = pixels/second -text.unit.liquidunits = liquid units -text.unit.powerunits = power units -text.unit.degrees = degrees -text.unit.seconds = seconds -text.unit.items = items -text.category.general = General -text.category.power = Power -text.category.liquids = Liquids -text.category.items = Items -text.category.crafting = Crafting -text.category.shooting = Shooting -setting.autotarget.name = Auto-Target -setting.fpscap.name = Max FPS -setting.fpscap.none = None -setting.fpscap.text = {0} FPS -setting.difficulty.training = training +text.unit.blocks = 方塊 +text.unit.powersecond = 能源單位/秒 +text.unit.liquidsecond = 液體單位/秒 +text.unit.itemssecond = 物品/秒 +text.unit.pixelssecond = 像素/秒 +text.unit.liquidunits = 液體單位 +text.unit.powerunits = 能源單位 +text.unit.degrees = 度 +text.unit.seconds = 秒 +text.unit.items = 物品 +text.category.general = 一般 +text.category.power = 能源 +text.category.liquids = 液體 +text.category.items = 物品 +text.category.crafting = 合成 +text.category.shooting = 射擊 +setting.autotarget.name = 自動射擊 +setting.fpscap.name = 最大螢幕刷新率 +setting.fpscap.none = 没有 +setting.fpscap.text = {0}螢幕刷新率 +setting.difficulty.training = 訓練 setting.difficulty.easy = 簡單 setting.difficulty.normal = 普通 setting.difficulty.hard = 困難 @@ -359,31 +357,32 @@ setting.screenshake.name = 畫面抖動 setting.effects.name = 顯示特效 setting.sensitivity.name = 控制器靈敏度 setting.saveinterval.name = 自動存檔間隔 -setting.seconds = {0} 秒 +setting.seconds = {0}秒 setting.fullscreen.name = 全螢幕 setting.multithread.name = 多執行緒 setting.fps.name = 顯示螢幕刷新率 setting.vsync.name = 垂直同步 setting.lasers.name = 顯示雷射光束 -setting.minimap.name = Show Minimap +setting.minimap.name = 顯示小地圖 setting.musicvol.name = 音樂音量 setting.mutemusic.name = 靜音 setting.sfxvol.name = 音效音量 setting.mutesound.name = 靜音 +setting.crashreport.name = Send Anonymous Crash Reports text.keybind.title = 重新綁定按鍵 -category.general.name = General -category.view.name = View -category.multiplayer.name = Multiplayer -command.attack = Attack -command.retreat = Retreat -command.patrol = Patrol -keybind.press = Press a key... -keybind.press.axis = Press an axis or key... +category.general.name = 一般 +category.view.name = 查看 +category.multiplayer.name = 多人 +command.attack = 攻擊 +command.retreat = 撤退 +command.patrol = 巡邏 +keybind.press = 按一下鍵 +keybind.press.axis = 按一下軸心或鍵 keybind.move_x.name = 水平移動 keybind.move_y.name = 垂直移動 keybind.select.name = 選取 keybind.break.name = 拆除 -keybind.deselect.name = Deselect +keybind.deselect.name = 取消選取 keybind.shoot.name = 射擊 keybind.zoom_hold.name = 按住縮放 keybind.zoom.name = 縮放 @@ -394,200 +393,201 @@ keybind.chat.name = 聊天 keybind.player_list.name = 玩家列表 keybind.console.name = 終端機 keybind.rotate.name = 旋轉 -keybind.toggle_menus.name = Toggle menus -keybind.chat_history_prev.name = Chat history prev -keybind.chat_history_next.name = Chat history next -keybind.chat_scroll.name = Chat scroll -keybind.drop_unit.name = drop unit -keybind.zoom_minimap.name = Zoom minimap +keybind.toggle_menus.name = 切換畫面 +keybind.chat_history_prev.name = 之前的聊天記錄 +keybind.chat_history_next.name = 之後的聊天記錄 +keybind.chat_scroll.name = 聊天記錄滾動 +keybind.drop_unit.name = 放下單位 +keybind.zoom_minimap.name = 縮放小地圖 mode.text.help.title = 模式說明 mode.waves.name = 一般 mode.waves.description = 一般模式,有限的資源與自動來襲的波次。 mode.sandbox.name = 沙盒 mode.sandbox.description = 無限的資源,與不倒數計時的波次。 -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.custom.warning = 請注意,方塊在區域內解鎖之前,不能用於自訂遊戲。\n\n[LIGHT_GRAY]如果您沒有解鎖任何方塊,則不會出現任何方塊。 +mode.custom.warning.read = 確保你已閱讀過它:\n[scarlet]自訂遊戲的解鎖不帶至區域或其他模式!\n\n[LIGHT_GRAY](我希望這不是必要的,但顯然是必要的) mode.freebuild.name = 自由建造 mode.freebuild.description = 有限的資源,與不倒數計時的波次。 -mode.pvp.name = PvP -mode.pvp.description = fight against other players locally. -content.item.name = Items -content.liquid.name = Liquids -content.unit.name = Units -content.recipe.name = Blocks -content.mech.name = Mechs +mode.pvp.name = 對戰 +mode.pvp.description = 和其他玩家鬥爭。 +content.item.name = 物品 +content.liquid.name = 液體 +content.unit.name = 機組 +content.recipe.name = 方塊 +content.mech.name = 機甲 item.stone.name = 石材 -item.stone.description = A common raw material. Used for separating and refining into other materials, or melting into lava. -item.copper.name = Copper -item.copper.description = A useful structure material. Used extensively in all types of blocks. -item.lead.name = Lead -item.lead.description = A basic starter material. Used extensively in electronics and liquid transportation blocks. -item.coal.name = 煤礦 -item.coal.description = A common and readily available fuel. -item.dense-alloy.name = Dense Alloy -item.dense-alloy.description = A tough alloy made with lead and copper. Used in advanced transportation blocks and high-tier drills. +item.stone.description = 一種常見的原料。用於分離和提煉成其他材料,或熔化成熔岩。 +item.copper.name = 銅 +item.copper.description = 一種有用的結構材料。在各種類型的方塊中廣泛使用。 +item.lead.name = 鉛 +item.lead.description = 一種基本的起始材料。被廣泛用於電子設備和運輸液體方塊。 +item.coal.name = 煤 +item.coal.description = 一種常見並容易獲得的燃料。 +item.dense-alloy.name = 稠密合金 +item.dense-alloy.description = 一種由鉛和銅製成的堅韌合金。用於高級的運輸方塊和高級鑽頭。 item.titanium.name = 鈦 -item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft. -item.thorium.name = Thorium -item.thorium.description = A dense, radioactive metal used as structural support and nuclear fuel. -item.silicon.name = Silicon -item.silicon.description = An extremely useful semiconductor, with applications in solar panels and many complex electronics. -item.plastanium.name = Plastanium -item.plastanium.description = A light, ductile material used in advanced aircraft and fragmentation ammunition. -item.phase-fabric.name = Phase Fabric -item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology. -item.surge-alloy.name = Surge Alloy -item.surge-alloy.description = An advanced alloy with unique electrical properties. -item.biomatter.name = Biomatter -item.biomatter.description = A clump of organic mush; used for conversion into oil or as a basic fuel. +item.titanium.description = 一種罕見的超輕金屬,被廣泛運用於運輸液體、鑽頭和飛機。 +item.thorium.name = 釷 +item.thorium.description = 一種稠密的放射性金屬,用作支撐結構和核燃料。 +item.silicon.name = 矽 +item.silicon.description = 一種非常有用的半導體,被用於太陽能電池板和很多複雜的電子設備。 +item.plastanium.name = 塑料 +item.plastanium.description = 一種輕量、可延展的材料,用於高級的飛機和碎彈藥。 +item.phase-fabric.name = 相織布 +item.phase-fabric.description = 一種近乎無重量的物質,用於先進的電子設備和自修復技術。 +item.surge-alloy.name = 波動合金 +item.surge-alloy.description = 一種具有獨特電子特性的高級合金。 +item.biomatter.name = 生物物質 +item.biomatter.description = 一叢有機糊;用於轉化為油或作為基本燃料。 item.sand.name = 沙 -item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux. -item.blast-compound.name = Blast Compound -item.blast-compound.description = A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised. -item.pyratite.name = Pyratite -item.pyratite.description = An extremely flammable substance used in incendiary weapons. +item.sand.description = 一種常見的材料,廣泛用於冶煉,包括製作合金和助熔劑。 +item.blast-compound.name = 爆炸混合物 +item.blast-compound.description = 一種用於炸彈和炸藥的揮發性混合物。雖然它可以作為燃料燃燒,但不建議這樣做。 +item.pyratite.name = 硫 +item.pyratite.description = 一種在燃燒武器中使用的極易燃物質。 liquid.water.name = 水 liquid.lava.name = 岩漿 liquid.oil.name = 原油 -liquid.cryofluid.name = Cryofluid -mech.alpha-mech.name = Alpha -mech.alpha-mech.weapon = Heavy Repeater -mech.alpha-mech.ability = Drone Swarm -mech.alpha-mech.description = The standard mech. Has decent speed and damage output; can create up to 3 drones for increased offensive capability. -mech.delta-mech.name = Delta -mech.delta-mech.weapon = Arc Generator -mech.delta-mech.ability = Discharge -mech.delta-mech.description = A fast, lightly-armored mech made for hit-and-run attacks. Does little damage against structures, but can kill large groups of enemy units very quickly with its arc lightning weapons. -mech.tau-mech.name = Tau -mech.tau-mech.weapon = Restruct Laser -mech.tau-mech.ability = Repair Burst -mech.tau-mech.description = The support mech. Heals allied blocks by shooting at them. Can extinguish fires and heal allies in a radius with its repair ability. -mech.omega-mech.name = Omega -mech.omega-mech.weapon = Swarm Missiles -mech.omega-mech.ability = Armored Configuration -mech.omega-mech.description = A bulky and well-armored mech, made for front-line assaults. Its armor ability can block up to 90% of incoming damage. -mech.dart-ship.name = Dart -mech.dart-ship.weapon = Repeater -mech.dart-ship.description = The standard ship. Reasonably fast and light, but has little offensive capability and low mining speed. -mech.javelin-ship.name = Javelin -mech.javelin-ship.description = A hit-and-run strike ship. While initially slow, it can accelerate to great speeds and fly by enemy outposts, dealing large amounts of damage with its lightning ability and missiles. -mech.javelin-ship.weapon = Burst Missiles -mech.javelin-ship.ability = Discharge Booster -mech.trident-ship.name = Trident -mech.trident-ship.description = A heavy bomber. Reasonably well armored. -mech.trident-ship.weapon = Bomb Bay -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.weapon = Flame Repeater -text.item.explosiveness = [LIGHT_GRAY]Explosiveness: {0} -text.item.flammability = [LIGHT_GRAY]Flammability: {0} -text.item.radioactivity = [LIGHT_GRAY]Radioactivity: {0} -text.item.fluxiness = [LIGHT_GRAY]Flux Power: {0} -text.unit.health = [LIGHT_GRAY]Health: {0} -text.unit.speed = [LIGHT_GRAY]Speed: {0} -text.mech.weapon = [LIGHT_GRAY]Weapon: {0} -text.mech.armor = [LIGHT_GRAY]Armor: {0} -text.mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0} -text.mech.minespeed = [LIGHT_GRAY]Mining Speed: {0} -text.mech.minepower = [LIGHT_GRAY]Mining Power: {0} -text.mech.ability = [LIGHT_GRAY]Ability: {0} -text.liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0} -text.liquid.viscosity = [LIGHT_GRAY]Viscosity: {0} -text.liquid.temperature = [LIGHT_GRAY]Temperature: {0} -block.spawn.name = Enemy Spawn -block.core.name = Core -block.metalfloor.name = Metal Floor -block.deepwater.name = deepwater -block.water.name = water -block.lava.name = lava -block.tar.name = Tar -block.blackstone.name = blackstone -block.stone.name = stone -block.dirt.name = dirt -block.sand.name = sand -block.ice.name = ice -block.snow.name = snow -block.grass.name = grass -block.shrub.name = shrub -block.rock.name = rock -block.blackrock.name = blackrock -block.icerock.name = icerock -block.copper-wall.name = Copper Wall -block.copper-wall-large.name = Large Copper Wall -block.dense-alloy-wall.name = Dense Alloy Wall -block.dense-alloy-wall-large.name = Large Dense Alloy Wall -block.phase-wall.name = Phase Wall -block.phase-wall-large.name = Large Phase Wall -block.thorium-wall.name = Thorium Wall -block.thorium-wall-large.name = Large Thorium Wall +liquid.cryofluid.name = 冷凍液 +mech.alpha-mech.name = 阿爾法 +mech.alpha-mech.weapon = 重型機關槍 +mech.alpha-mech.ability = 無人機群 +mech.alpha-mech.description = 標準的機甲。具有不錯的速度和傷害輸出;可以製造多達3架無人機以提高進攻能力。 +mech.delta-mech.name = 德爾塔 +mech.delta-mech.weapon = 電弧生成機 +mech.delta-mech.ability = 放電 +mech.delta-mech.description = 一种快速、轻铠的机甲,是用於打了就跑的攻擊。对结构造成的伤害很小,但可以用弧形闪电武器很快杀死大量敌方机组。 +mech.tau-mech.name = Tau机甲 +mech.tau-mech.weapon = 重構激光 +mech.tau-mech.ability = 修复陣 +mech.tau-mech.description = 支援機甲。射擊友好方塊以治療它們。可以使用它的修復能力熄滅火焰並治療一定範圍內的友軍。 +mech.omega-mech.name = 奧米伽 +mech.omega-mech.weapon = 導彈群 +mech.omega-mech.ability = 裝甲配置 +mech.omega-mech.description = 一種笨重、裝甲重的機甲,用於在前線突擊。它的裝甲能力可以阻擋高達90%的傷害。 +mech.dart-ship.name = 鏢船 +mech.dart-ship.weapon = 機關槍 +mech.dart-ship.description = 標準飛船。快速、輕便,但有低的攻擊能力和慢的採礦速度。 +mech.javelin-ship.name = 標槍 +mech.javelin-ship.description = 一種打了就跑的侵襲船。雖然最初很慢,但它可以加速到很快的速度,並飛過敵人的前哨站,利用其閃電能力和導彈造成大量的傷害。 +mech.javelin-ship.weapon = 爆發導彈 +mech.javelin-ship.ability = 放電助推器 +mech.trident-ship.name = 三叉 +mech.trident-ship.description = 一种重型轰炸机。有比較厚的装甲。 +mech.trident-ship.weapon = 炸彈 +mech.glaive-ship.name = 長柄 +mech.glaive-ship.description = 一種大型、裝甲厚的武裝直升機。配備燃燒機關槍。有優秀的加速能力與最快的速度。 +mech.glaive-ship.weapon = 火焰機關槍 +text.item.explosiveness = [LIGHT_GRAY]爆炸性:{0} +text.item.flammability = [LIGHT_GRAY]易燃性:{0} +text.item.radioactivity = [LIGHT_GRAY]放射性:{0} +text.item.fluxiness = [LIGHT_GRAY]助熔性:{0} +text.unit.health = [LIGHT_GRAY]耐久度:{0} +text.unit.speed = [LIGHT_GRAY]速度:{0} +text.mech.weapon = [LIGHT_GRAY]武器:{0} +text.mech.armor = [LIGHT_GRAY]裝甲:{0} +text.mech.itemcapacity = [LIGHT_GRAY]物品容量:{0} +text.mech.minespeed = [LIGHT_GRAY]採礦速度:{0} +text.mech.minepower = [LIGHT_GRAY]採礦力度:{0} +text.mech.ability = [LIGHT_GRAY]能力:{0} +text.liquid.heatcapacity = [LIGHT_GRAY]熱容量:{0} +text.liquid.viscosity = [LIGHT_GRAY]粘性:{0} +text.liquid.temperature = [LIGHT_GRAY]温度:{0} +block.constructing = {0}\n[LIGHT_GRAY](Constructing) +block.spawn.name = 敵人生成 +block.core.name = 核心 +block.metalfloor.name = 金屬地板 +block.deepwater.name = 深水 +block.water.name = 水 +block.lava.name = 岩浆 +block.tar.name = 焦油 +block.blackstone.name = 黑石頭 +block.stone.name = 石頭 +block.dirt.name = 泥土 +block.sand.name = 沙 +block.ice.name = 冰 +block.snow.name = 雪 +block.grass.name = 草 +block.shrub.name = 灌木 +block.rock.name = 岩石 +block.blackrock.name = 黑岩石 +block.icerock.name = 冰岩石 +block.copper-wall.name = 銅牆 +block.copper-wall-large.name = 大型銅牆 +block.dense-alloy-wall.name = 稠密合金牆 +block.dense-alloy-wall-large.name = 大型稠密合金牆 +block.phase-wall.name = 相織布牆 +block.phase-wall-large.name = 大型相織布牆 +block.thorium-wall.name = 釷牆 +block.thorium-wall-large.name = 大型釷牆 block.door.name = 門 block.door-large.name = 大門 -block.duo.name = Duo -block.scorch.name = Scorch -block.hail.name = Hail -block.lancer.name = Lancer +block.duo.name = 雙炮 +block.scorch.name = 灼燒炮 +block.hail.name = 冰雹炮 +block.lancer.name = 藍瑟炮 block.conveyor.name = 輸送帶 -block.titanium-conveyor.name = Titanium Conveyor +block.titanium-conveyor.name = 鈦輸送帶 block.junction.name = 樞紐 block.router.name = 分配器 -block.distributor.name = Distributor +block.distributor.name = 大型分配器 block.sorter.name = 分類器 -block.sorter.description = Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right. -block.overflow-gate.name = Overflow Gate -block.overflow-gate.description = A combination splitter and router that only outputs to the left and right if the front path is blocked. +block.sorter.description = 對物品進行分類。如果物品與所選種類匹配,則允許其通過。否則,物品將從左邊和右邊輸出。 +block.overflow-gate.name = 溢流器 +block.overflow-gate.description = 分離器和分配器的組合。如果前面被擋住,則向從左邊和右邊輸出物品。 block.smelter.name = 煉鋼廠 -block.arc-smelter.name = Arc Smelter -block.silicon-smelter.name = Silicon Smelter -block.phase-weaver.name = Phase Weaver -block.pulverizer.name = Pulverizer -block.cryofluidmixer.name = Cryofluid Mixer -block.melter.name = Melter -block.incinerator.name = Incinerator -block.biomattercompressor.name = Biomatter Compressor -block.separator.name = Separator -block.centrifuge.name = Centrifuge -block.power-node.name = Power Node -block.power-node-large.name = Large Power Node -block.battery.name = Battery -block.battery-large.name = Large Battery -block.combustion-generator.name = Combustion Generator -block.turbine-generator.name = Turbine Generator -block.mechanical-drill.name = Mechanical Drill -block.pneumatic-drill.name = Pneumatic Drill -block.laser-drill.name = Laser Drill -block.water-extractor.name = Water Extractor -block.cultivator.name = Cultivator -block.alpha-mech-pad.name = Alpha Mech Pad -block.dart-ship-pad.name = Dart Ship Pad -block.delta-mech-pad.name = Delta Mech Pad -block.javelin-ship-pad.name = Javelin Ship Pad -block.trident-ship-pad.name = Trident Ship Pad -block.glaive-ship-pad.name = Glaive Ship Pad -block.omega-mech-pad.name = Omega Mech Pad -block.tau-mech-pad.name = Tau Mech Pad +block.arc-smelter.name = 電弧煉鋼廠 +block.silicon-smelter.name = 煉矽廠 +block.phase-weaver.name = 相織布編織器 +block.pulverizer.name = 粉碎機 +block.cryofluidmixer.name = 冷凍液混合器 +block.melter.name = 熔爐 +block.incinerator.name = 焚化爐 +block.biomattercompressor.name = 生物物質壓縮機 +block.separator.name = 分離機 +block.centrifuge.name = 離心機 +block.power-node.name = 能源節點 +block.power-node-large.name = 大型能源節點 +block.battery.name = 電池 +block.battery-large.name = 大型電池 +block.combustion-generator.name = 燃燒發電機 +block.turbine-generator.name = 渦輪發電機 +block.mechanical-drill.name = 機械鑽頭 +block.pneumatic-drill.name = 氣動鑽頭 +block.laser-drill.name = 激光鑽頭 +block.water-extractor.name = 水提取器 +block.cultivator.name = 耕種機 +block.alpha-mech-pad.name = 阿爾法機甲墊 +block.dart-ship-pad.name = 鏢船墊 +block.delta-mech-pad.name = 德爾塔機甲墊 +block.javelin-ship-pad.name = 標槍機甲墊 +block.trident-ship-pad.name = 三叉船墊 +block.glaive-ship-pad.name = 長柄船墊 +block.omega-mech-pad.name = 奧米伽機甲墊 +block.tau-mech-pad.name = Tau機甲墊 block.conduit.name = 管線 -block.mechanical-pump.name = Mechanical Pump -block.itemsource.name = Item Source -block.itemvoid.name = Item Void -block.liquidsource.name = Liquid Source -block.powervoid.name = Power Void -block.powerinfinite.name = Power Infinite -block.unloader.name = Unloader -block.vault.name = Vault -block.wave.name = Wave -block.swarmer.name = Swarmer -block.salvo.name = Salvo -block.ripple.name = Ripple -block.phase-conveyor.name = Phase Conveyor -block.bridge-conveyor.name = Bridge Conveyor -block.plastanium-compressor.name = Plastanium Compressor -block.pyratite-mixer.name = Pyratite Mixer -block.blast-mixer.name = Blast Mixer -block.solidifer.name = Solidifer -block.solar-panel.name = Solar Panel -block.solar-panel-large.name = Large Solar Panel -block.oil-extractor.name = Oil Extractor -block.spirit-factory.name = Spirit Drone Factory +block.mechanical-pump.name = 機械泵 +block.itemsource.name = 物品源 +block.itemvoid.name = 物品空虚 +block.liquidsource.name = 液體源 +block.powervoid.name = 能源空虛 +block.powerinfinite.name = 無限能量 +block.unloader.name = 裝卸器 +block.vault.name = 存儲庫 +block.wave.name = 波浪炮 +block.swarmer.name = 群炮 +block.salvo.name = 齊射炮 +block.ripple.name = 波紋炮 +block.phase-conveyor.name = 相織布傳送帶 +block.bridge-conveyor.name = 傳送帶橋 +block.plastanium-compressor.name = 塑料壓縮機 +block.pyratite-mixer.name = 硫混合器 +block.blast-mixer.name = 爆炸混合器 +block.solidifer.name = 凝固器 +block.solar-panel.name = 太陽能板 +block.solar-panel-large.name = 大型太陽能板 +block.oil-extractor.name = 石油鑽井 +block.spirit-factory.name = 精神無人機工廠 block.phantom-factory.name = Phantom Drone Factory block.wraith-factory.name = Wraith Fighter Factory block.ghoul-factory.name = Ghoul Bomber Factory @@ -595,43 +595,43 @@ block.dagger-factory.name = Dagger Mech Factory block.titan-factory.name = Titan Mech Factory block.fortress-factory.name = Fortress Mech Factory block.revenant-factory.name = Revenant Fighter Factory -block.repair-point.name = Repair Point -block.pulse-conduit.name = Pulse Conduit -block.phase-conduit.name = Phase Conduit -block.liquid-router.name = Liquid Router -block.liquid-tank.name = Liquid Tank -block.liquid-junction.name = Liquid Junction -block.bridge-conduit.name = Bridge Conduit -block.rotary-pump.name = Rotary Pump -block.thorium-reactor.name = Thorium Reactor -block.command-center.name = Command Center -block.mass-driver.name = Mass Driver -block.blast-drill.name = Blast Drill -block.thermal-pump.name = Thermal Pump -block.thermal-generator.name = Thermal Generator -block.alloy-smelter.name = Alloy Smtler -block.mend-projector.name = Mend Projector -block.surge-wall.name = Surge Wall -block.surge-wall-large.name = Large Surge Wall -block.cyclone.name = Cyclone -block.fuse.name = Fuse -block.shock-mine.name = Shock Mine -block.overdrive-projector.name = Overdrive Projector -block.force-projector.name = Force Projector -block.arc.name = Arc -block.rtg-generator.name = RTG Generator -block.spectre.name = Spectre -block.meltdown.name = Meltdown -block.container.name = Container -block.core.description = The most important building in the game. -team.blue.name = blue -team.red.name = red -team.orange.name = orange -team.none.name = gray -team.green.name = green -team.purple.name = purple -unit.alpha-drone.name = Alpha Drone -unit.spirit.name = Spirit Drone +block.repair-point.name = 維修點 +block.pulse-conduit.name = 脈衝管線 +block.phase-conduit.name = 相織管線 +block.liquid-router.name = 液體分配器 +block.liquid-tank.name = 液體儲罐 +block.liquid-junction.name = 液體連接點 +block.bridge-conduit.name = 導管橋 +block.rotary-pump.name = 迴旋泵 +block.thorium-reactor.name = 釷反應堆 +block.command-center.name = 指令中心 +block.mass-driver.name = 質量驅動器 +block.blast-drill.name = 爆破鑽頭 +block.thermal-pump.name = 熱能泵 +block.thermal-generator.name = 熱能發電機 +block.alloy-smelter.name = 合金冶煉廠 +block.mend-projector.name = 修理投影器 +block.surge-wall.name = 波動牆 +block.surge-wall-large.name = 大型波動牆 +block.cyclone.name = 氣旋炮 +block.fuse.name = 融合炮 +block.shock-mine.name = 休克地雷 +block.overdrive-projector.name = 超速投影器 +block.force-projector.name = 力牆投影器 +block.arc.name = 電弧 +block.rtg-generator.name = 放射性同位素熱電發電機 +block.spectre.name = 幽靈炮 +block.meltdown.name = 熔毀炮 +block.container.name = 容器 +block.core.description = 遊戲中最重要的建築。 +team.blue.name = 藍 +team.red.name = 紅 +team.orange.name = 橙 +team.none.name = 灰 +team.green.name = 綠 +team.purple.name = 紫 +unit.alpha-drone.name = 阿爾法無人機 +unit.spirit.name = 精神無人機 unit.spirit.description = The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks. unit.phantom.name = Phantom Drone unit.phantom.description = An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone. diff --git a/core/assets/ui/uiskin.json b/core/assets/ui/uiskin.json index 32020b418f..ab630372a6 100644 --- a/core/assets/ui/uiskin.json +++ b/core/assets/ui/uiskin.json @@ -5,8 +5,7 @@ Color: { gray: {a: 1, b: 0.32, g: 0.32, r: 0.32 }, lightgray: {a: 1, b: 0.65, g: 0.65, r: 0.65 } orange: {hex: "FFA500"}, - accent: {hex: "f4ba6e"}, - accentDark: {hex: "f4ba6e"}, + accent: {hex: "ffd37f"} }, TintedDrawable: { dialogDim: {name: white, color: {r: 0, g: 0, b: 0, a: 0.9} }, @@ -15,12 +14,12 @@ TintedDrawable: { chatfield: {name: white, color: {r: 0, g: 0, b: 0, a: 0.2}}, clear: {name: white, color: {r: 0.1, g: 0.1, b: 0.1, a: 0.75}}, none: {name: white, color: {r: 0, g: 0, b: 0, a: 0}}, - clear-over: {name: white, color: {r: 1, g: 1, b: 1, a: 0.2} }, - clear-down: {name: white, color: {r: 1, g: 1, b: 1, a: 0.4} } + clear-over: {name: white, color: { hex: "#ffffff82" }}, + clear-alpha: {name: white, color: { hex: "#ffd37fff" }}, + clear-down: {name: white, color: { hex: "#ffd37fff" }} }, ButtonStyle: { default: {down: button-down, up: button }, - menu: {up: text-sides, over: text-sides-over, down: text-sides-down}, toggle: {checked: button-down, down: button-down, up: button } }, TextButtonStyle: { @@ -28,6 +27,7 @@ TextButtonStyle: { discord: {font: default-font, fontColor: white, up: discord-banner}, info: {font: default-font, fontColor: white, up: info-banner}, clear: {down: clear-down, up: clear, over: clear-over, font: default-font, fontColor: white, disabledFontColor: gray }, + clear-partial: {down: white, up: button-select, over: clear-down, font: default-font, fontColor: white, disabledFontColor: gray }, empty: {font: default-font}, toggle: {font: default-font, fontColor: white, checked: button-down, down: button-down, up: button, over: button-over, disabled: button, disabledFontColor: gray } }, @@ -40,6 +40,9 @@ ImageButtonStyle: { toggle: {checked: button-down, down: button-down, up: button, imageDisabledColor: gray, imageUpColor: white }, select: {checked: button-select, up: none }, clear: {down: clear-down, up: clear, over: clear-over}, + clear-partial: {down: clear-down, up: none, over: clear-over}, + clear-toggle: {down: clear-down, checked: clear-down, up: clear, over: clear-over}, + clear-toggle-partial: {down: clear-down, checked: clear-down, up: none, over: clear-over}, }, ScrollPaneStyle: { default: {background: border, vScroll: scroll, vScrollKnob: scroll-knob-vertical-black}, diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index a00184cc17..50116dc3d2 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -50,7 +50,7 @@ public class Vars{ public static final int maxNameLength = 40; public static final float itemSize = 5f; public static final int tilesize = 8; - public static final int sectorSize = 250; + public static final int sectorSize = 256; public static final int invalidSector = Integer.MAX_VALUE; public static Locale[] locales; public static final Color[] playerColors = { diff --git a/core/src/io/anuke/mindustry/content/Recipes.java b/core/src/io/anuke/mindustry/content/Recipes.java index 08a7f8fac1..f236469ff9 100644 --- a/core/src/io/anuke/mindustry/content/Recipes.java +++ b/core/src/io/anuke/mindustry/content/Recipes.java @@ -43,43 +43,46 @@ public class Recipes implements ContentList{ new Recipe(defense, DefenseBlocks.surgeWallLarge, new ItemStack(Items.surgealloy, 12 * 4)); //projectors - new Recipe(defense, DefenseBlocks.mendProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 50), new ItemStack(Items.silicon, 180)); - new Recipe(defense, DefenseBlocks.overdriveProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); - new Recipe(defense, DefenseBlocks.forceProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); + new Recipe(effect, DefenseBlocks.mendProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 50), new ItemStack(Items.silicon, 180)); + new Recipe(effect, DefenseBlocks.overdriveProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); + new Recipe(effect, DefenseBlocks.forceProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); - //extra blocks - new Recipe(defense, DefenseBlocks.shockMine, new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 25)) + new Recipe(effect, StorageBlocks.unloader, new ItemStack(Items.densealloy, 50), new ItemStack(Items.silicon, 60)); + new Recipe(effect, StorageBlocks.container, new ItemStack(Items.densealloy, 200)); + new Recipe(effect, StorageBlocks.vault, new ItemStack(Items.densealloy, 500), new ItemStack(Items.thorium, 250)); + + new Recipe(effect, DefenseBlocks.shockMine, new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 25)) .setDependencies(Items.blastCompound); //TURRETS - new Recipe(weapon, TurretBlocks.duo, new ItemStack(Items.copper, 40)).setAlwaysUnlocked(true); - new Recipe(weapon, TurretBlocks.arc, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 30), new ItemStack(Items.silicon, 20)); - new Recipe(weapon, TurretBlocks.hail, new ItemStack(Items.copper, 60), new ItemStack(Items.densealloy, 35)); - new Recipe(weapon, TurretBlocks.lancer, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 100), new ItemStack(Items.silicon, 90)); - new Recipe(weapon, TurretBlocks.wave, new ItemStack(Items.densealloy, 60), new ItemStack(Items.titanium, 70), new ItemStack(Items.lead, 150)); - new Recipe(weapon, TurretBlocks.salvo, new ItemStack(Items.copper, 210), new ItemStack(Items.densealloy, 190), new ItemStack(Items.thorium, 130)); - new Recipe(weapon, TurretBlocks.swarmer, new ItemStack(Items.densealloy, 70), new ItemStack(Items.titanium, 70), new ItemStack(Items.plastanium, 90), new ItemStack(Items.silicon, 60)); - new Recipe(weapon, TurretBlocks.ripple, new ItemStack(Items.copper, 300), new ItemStack(Items.densealloy, 220), new ItemStack(Items.thorium, 120)); - new Recipe(weapon, TurretBlocks.cyclone, new ItemStack(Items.copper, 400), new ItemStack(Items.densealloy, 400), new ItemStack(Items.surgealloy, 200), new ItemStack(Items.plastanium, 150)); - new Recipe(weapon, TurretBlocks.fuse, new ItemStack(Items.copper, 450), new ItemStack(Items.densealloy, 450), new ItemStack(Items.surgealloy, 250)); - new Recipe(weapon, TurretBlocks.spectre, new ItemStack(Items.copper, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 500), new ItemStack(Items.plastanium, 350), new ItemStack(Items.thorium, 500)); - new Recipe(weapon, TurretBlocks.meltdown, new ItemStack(Items.copper, 500), new ItemStack(Items.lead, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 650), new ItemStack(Items.silicon, 650)); + new Recipe(turret, TurretBlocks.duo, new ItemStack(Items.copper, 40)).setAlwaysUnlocked(true); + new Recipe(turret, TurretBlocks.arc, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 30), new ItemStack(Items.silicon, 20)); + new Recipe(turret, TurretBlocks.hail, new ItemStack(Items.copper, 60), new ItemStack(Items.densealloy, 35)); + new Recipe(turret, TurretBlocks.lancer, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 100), new ItemStack(Items.silicon, 90)); + new Recipe(turret, TurretBlocks.wave, new ItemStack(Items.densealloy, 60), new ItemStack(Items.titanium, 70), new ItemStack(Items.lead, 150)); + new Recipe(turret, TurretBlocks.salvo, new ItemStack(Items.copper, 210), new ItemStack(Items.densealloy, 190), new ItemStack(Items.thorium, 130)); + new Recipe(turret, TurretBlocks.swarmer, new ItemStack(Items.densealloy, 70), new ItemStack(Items.titanium, 70), new ItemStack(Items.plastanium, 90), new ItemStack(Items.silicon, 60)); + new Recipe(turret, TurretBlocks.ripple, new ItemStack(Items.copper, 300), new ItemStack(Items.densealloy, 220), new ItemStack(Items.thorium, 120)); + new Recipe(turret, TurretBlocks.cyclone, new ItemStack(Items.copper, 400), new ItemStack(Items.densealloy, 400), new ItemStack(Items.surgealloy, 200), new ItemStack(Items.plastanium, 150)); + new Recipe(turret, TurretBlocks.fuse, new ItemStack(Items.copper, 450), new ItemStack(Items.densealloy, 450), new ItemStack(Items.surgealloy, 250)); + new Recipe(turret, TurretBlocks.spectre, new ItemStack(Items.copper, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 500), new ItemStack(Items.plastanium, 350), new ItemStack(Items.thorium, 500)); + new Recipe(turret, TurretBlocks.meltdown, new ItemStack(Items.copper, 500), new ItemStack(Items.lead, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 650), new ItemStack(Items.silicon, 650)); //DISTRIBUTION new Recipe(distribution, DistributionBlocks.conveyor, new ItemStack(Items.copper, 1)).setAlwaysUnlocked(true); new Recipe(distribution, DistributionBlocks.titaniumconveyor, new ItemStack(Items.copper, 2), new ItemStack(Items.titanium, 1)); new Recipe(distribution, DistributionBlocks.phaseConveyor, new ItemStack(Items.phasefabric, 10), new ItemStack(Items.silicon, 15), new ItemStack(Items.lead, 20), new ItemStack(Items.densealloy, 20)); - //starter lead transportation + //starter transport new Recipe(distribution, DistributionBlocks.junction, new ItemStack(Items.copper, 2)).setAlwaysUnlocked(true); new Recipe(distribution, DistributionBlocks.router, new ItemStack(Items.copper, 6)).setAlwaysUnlocked(true); - //advanced densealloy transporation + //advanced densealloy transporat new Recipe(distribution, DistributionBlocks.distributor, new ItemStack(Items.densealloy, 8), new ItemStack(Items.copper, 8)); 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.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 @@ -131,9 +134,6 @@ public class Recipes implements ContentList{ new Recipe(power, PowerBlocks.thoriumReactor, new ItemStack(Items.lead, 600), new ItemStack(Items.silicon, 400), new ItemStack(Items.densealloy, 300), new ItemStack(Items.thorium, 300)); new Recipe(power, PowerBlocks.rtgGenerator, new ItemStack(Items.lead, 200), new ItemStack(Items.silicon, 150), new ItemStack(Items.phasefabric, 50), new ItemStack(Items.plastanium, 150), new ItemStack(Items.thorium, 100)); - new Recipe(distribution, StorageBlocks.unloader, new ItemStack(Items.densealloy, 50), new ItemStack(Items.silicon, 60)); - new Recipe(distribution, StorageBlocks.container, new ItemStack(Items.densealloy, 200)); - new Recipe(distribution, StorageBlocks.vault, new ItemStack(Items.densealloy, 500), new ItemStack(Items.thorium, 250)); //core disabled due to being broken /*new Recipe(distribution, StorageBlocks.core, new ItemStack(Items.copper, 2000), new ItemStack(Items.densealloy, 1500), @@ -153,16 +153,16 @@ public class Recipes implements ContentList{ //UNITS - //bodies - new Recipe(units, UpgradeBlocks.dartPad, new ItemStack(Items.lead, 150), new ItemStack(Items.copper, 150), new ItemStack(Items.silicon, 200), new ItemStack(Items.titanium, 240)).setVisible(RecipeVisibility.desktopOnly); - new Recipe(units, UpgradeBlocks.tridentPad, new ItemStack(Items.lead, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250), new ItemStack(Items.titanium, 300), new ItemStack(Items.plastanium, 200)); - new Recipe(units, UpgradeBlocks.javelinPad, new ItemStack(Items.lead, 350), new ItemStack(Items.silicon, 450), new ItemStack(Items.titanium, 500), new ItemStack(Items.plastanium, 400), new ItemStack(Items.phasefabric, 200)); - new Recipe(units, UpgradeBlocks.glaivePad, new ItemStack(Items.lead, 450), new ItemStack(Items.silicon, 650), new ItemStack(Items.titanium, 700), new ItemStack(Items.plastanium, 600), new ItemStack(Items.surgealloy, 200)); + //upgrades + new Recipe(upgrade, UpgradeBlocks.dartPad, new ItemStack(Items.lead, 150), new ItemStack(Items.copper, 150), new ItemStack(Items.silicon, 200), new ItemStack(Items.titanium, 240)).setVisible(RecipeVisibility.desktopOnly); + new Recipe(upgrade, UpgradeBlocks.tridentPad, new ItemStack(Items.lead, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250), new ItemStack(Items.titanium, 300), new ItemStack(Items.plastanium, 200)); + new Recipe(upgrade, UpgradeBlocks.javelinPad, new ItemStack(Items.lead, 350), new ItemStack(Items.silicon, 450), new ItemStack(Items.titanium, 500), new ItemStack(Items.plastanium, 400), new ItemStack(Items.phasefabric, 200)); + new Recipe(upgrade, UpgradeBlocks.glaivePad, new ItemStack(Items.lead, 450), new ItemStack(Items.silicon, 650), new ItemStack(Items.titanium, 700), new ItemStack(Items.plastanium, 600), new ItemStack(Items.surgealloy, 200)); - new Recipe(units, UpgradeBlocks.alphaPad, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 100), new ItemStack(Items.copper, 150)).setVisible(RecipeVisibility.mobileOnly); - new Recipe(units, UpgradeBlocks.tauPad, new ItemStack(Items.lead, 250), new ItemStack(Items.densealloy, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250)); - new Recipe(units, UpgradeBlocks.deltaPad, new ItemStack(Items.lead, 350), new ItemStack(Items.densealloy, 350), new ItemStack(Items.copper, 400), new ItemStack(Items.silicon, 450), new ItemStack(Items.thorium, 300)); - new Recipe(units, UpgradeBlocks.omegaPad, new ItemStack(Items.lead, 450), new ItemStack(Items.densealloy, 550), new ItemStack(Items.silicon, 650), new ItemStack(Items.thorium, 600), new ItemStack(Items.surgealloy, 240)); + new Recipe(upgrade, UpgradeBlocks.alphaPad, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 100), new ItemStack(Items.copper, 150)).setVisible(RecipeVisibility.mobileOnly); + new Recipe(upgrade, UpgradeBlocks.tauPad, new ItemStack(Items.lead, 250), new ItemStack(Items.densealloy, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250)); + new Recipe(upgrade, UpgradeBlocks.deltaPad, new ItemStack(Items.lead, 350), new ItemStack(Items.densealloy, 350), new ItemStack(Items.copper, 400), new ItemStack(Items.silicon, 450), new ItemStack(Items.thorium, 300)); + new Recipe(upgrade, UpgradeBlocks.omegaPad, new ItemStack(Items.lead, 450), new ItemStack(Items.densealloy, 550), new ItemStack(Items.silicon, 650), new ItemStack(Items.thorium, 600), new ItemStack(Items.surgealloy, 240)); //actual unit related stuff new Recipe(units, UnitBlocks.spiritFactory, new ItemStack(Items.copper, 70), new ItemStack(Items.lead, 110), new ItemStack(Items.silicon, 130)); diff --git a/core/src/io/anuke/mindustry/content/blocks/DistributionBlocks.java b/core/src/io/anuke/mindustry/content/blocks/DistributionBlocks.java index 825b7097cb..df4ab9ea20 100644 --- a/core/src/io/anuke/mindustry/content/blocks/DistributionBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/DistributionBlocks.java @@ -33,9 +33,9 @@ public class DistributionBlocks extends BlockList implements ContentList{ }}; phaseConveyor = new ItemBridge("phase-conveyor"){{ - range = 11; + range = 12; hasPower = true; - consumes.power(0.05f); + consumes.power(0.03f); }}; sorter = new Sorter("sorter"); @@ -50,8 +50,8 @@ public class DistributionBlocks extends BlockList implements ContentList{ massDriver = new MassDriver("mass-driver"){{ size = 3; - itemCapacity = 80; - range = 340f; + itemCapacity = 60; + range = 440f; }}; } } diff --git a/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java b/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java index 69d350d1b6..2ba8648085 100644 --- a/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java @@ -21,7 +21,7 @@ public class UnitBlocks extends BlockList implements ContentList{ produceTime = 5700; size = 2; 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"){{ @@ -29,7 +29,7 @@ public class UnitBlocks extends BlockList implements ContentList{ produceTime = 7300; size = 2; 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"){{ @@ -37,7 +37,7 @@ public class UnitBlocks extends BlockList implements ContentList{ produceTime = 1800; size = 2; 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"){{ @@ -61,7 +61,7 @@ public class UnitBlocks extends BlockList implements ContentList{ produceTime = 1700; size = 2; 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"){{ diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 5e7ad4e082..8dbcc2d1e6 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -120,15 +120,6 @@ public class Control extends Module{ } state.set(State.playing); - - if(world.getSector() == null && !Settings.getBool("custom-warning-for-real-1", false)){ - threads.runGraphics(() -> ui.showInfo("$mode.custom.warning", () -> - ui.showInfo("$mode.custom.warning.read", () -> { - Settings.putBool("custom-warning-for-real-1", true); - Settings.save(); - }))); - - } }); Events.on(WorldLoadGraphicsEvent.class, event -> { diff --git a/core/src/io/anuke/mindustry/core/Logic.java b/core/src/io/anuke/mindustry/core/Logic.java index 1883f52af5..5063a29b0b 100644 --- a/core/src/io/anuke/mindustry/core/Logic.java +++ b/core/src/io/anuke/mindustry/core/Logic.java @@ -34,7 +34,6 @@ import static io.anuke.mindustry.Vars.*; * This class should not call any outside methods to change state of modules, but instead fire events. */ public class Logic extends Module{ - public boolean doUpdate = true; public Logic(){ Events.on(TileChangeEvent.class, event -> { diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index ab1c29244c..0d7ca96820 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -28,6 +28,7 @@ import io.anuke.ucore.scene.ui.TextField.TextFieldFilter; import io.anuke.ucore.scene.ui.TooltipManager; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Unit; +import io.anuke.ucore.util.Strings; import static io.anuke.mindustry.Vars.*; import static io.anuke.ucore.scene.actions.Actions.*; @@ -293,4 +294,16 @@ public class UI extends SceneModule{ dialog.keyDown(Keys.BACK, dialog::hide); dialog.show(); } + + public String formatAmount(int number){ + if(number >= 1000000){ + return Strings.toFixed(number / 1000000f, 1) + "[gray]mil[]"; + }else if(number >= 10000){ + return number / 1000 + "[gray]k[]"; + }else if(number >= 1000){ + return Strings.toFixed(number / 1000f, 1) + "[gray]k[]"; + }else{ + return number + ""; + } + } } diff --git a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java index 3129e67c64..af79babcc1 100644 --- a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java @@ -236,7 +236,7 @@ public interface BuilderTrait extends Entity{ Tile tile = getMineTile(); 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)){ setMineTile(null); }else{ Item item = tile.floor().drops.item; diff --git a/core/src/io/anuke/mindustry/game/ContentUnlockSet.java b/core/src/io/anuke/mindustry/game/ContentUnlockSet.java deleted file mode 100644 index a779c52509..0000000000 --- a/core/src/io/anuke/mindustry/game/ContentUnlockSet.java +++ /dev/null @@ -1,51 +0,0 @@ -package io.anuke.mindustry.game; - -import com.badlogic.gdx.utils.ObjectMap; -import com.badlogic.gdx.utils.ObjectSet; -import io.anuke.mindustry.game.EventType.UnlockEvent; -import io.anuke.mindustry.type.ContentType; -import io.anuke.ucore.core.Events; - -public class ContentUnlockSet { - private ObjectMap> unlocked = new ObjectMap<>(); - private boolean dirty; - - public boolean isUnlocked(UnlockableContent content){ - if(content.alwaysUnlocked()) return true; - - if(!unlocked.containsKey(content.getContentType())){ - unlocked.put(content.getContentType(), new ObjectSet<>()); - } - - ObjectSet set = unlocked.get(content.getContentType()); - - return set.contains(content.getContentName()); - } - - public boolean unlockContent(UnlockableContent content){ - if(!content.canBeUnlocked() || content.alwaysUnlocked()) return false; - - if(!unlocked.containsKey(content.getContentType())){ - unlocked.put(content.getContentType(), new ObjectSet<>()); - } - - boolean ret = unlocked.get(content.getContentType()).add(content.getContentName()); - - //fire unlock event so other classes can use it - if(ret){ - content.onUnlock(); - Events.fire(new UnlockEvent(content)); - dirty = true; - } - - return ret; - } - - public boolean isDirty() { - return dirty; - } - - public ObjectMap> getUnlocked() { - return unlocked; - } -} diff --git a/core/src/io/anuke/mindustry/game/Unlocks.java b/core/src/io/anuke/mindustry/game/Unlocks.java index e2bbd5984b..ff2853f59b 100644 --- a/core/src/io/anuke/mindustry/game/Unlocks.java +++ b/core/src/io/anuke/mindustry/game/Unlocks.java @@ -4,16 +4,15 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectMap.Entry; import com.badlogic.gdx.utils.ObjectSet; -import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.net.Net; +import io.anuke.mindustry.game.EventType.UnlockEvent; import io.anuke.mindustry.type.ContentType; +import io.anuke.ucore.core.Events; import io.anuke.ucore.core.Settings; -import static io.anuke.mindustry.Vars.*; - /**Stores player unlocks. Clientside only.*/ public class Unlocks{ - private ObjectMap sets = new ObjectMap<>(); + private ObjectMap> unlocked = new ObjectMap<>(); + private boolean dirty; static{ Settings.setSerializer(ContentType.class, (stream, t) -> stream.writeInt(t.ordinal()), stream -> ContentType.values()[stream.readInt()]); @@ -21,7 +20,15 @@ public class Unlocks{ /** Returns whether or not this piece of content is unlocked yet.*/ public boolean isUnlocked(UnlockableContent content){ - return rootSet().isUnlocked(content) || currentSet().isUnlocked(content); + if(content.alwaysUnlocked()) return true; + + if(!unlocked.containsKey(content.getContentType())){ + unlocked.put(content.getContentType(), new ObjectSet<>()); + } + + ObjectSet set = unlocked.get(content.getContentType()); + + return set.contains(content.getContentName()); } /** @@ -32,77 +39,59 @@ public class Unlocks{ * @return whether or not this content was newly unlocked. */ public boolean unlockContent(UnlockableContent content){ - return !rootSet().isUnlocked(content) && currentSet().unlockContent(content); - } + if(!content.canBeUnlocked() || content.alwaysUnlocked()) return false; - private ContentUnlockSet currentSet(){ - //client connected to server: always return the IP-specific set - if(Net.client()){ - return getSet(Net.getLastIP()); - }else if((world.getSector() != null || state.mode.infiniteResources) || state.is(State.menu)){ //sector-sandbox have shared set - return rootSet(); - }else{ //per-mode set - return getSet(state.mode.name()); + if(!unlocked.containsKey(content.getContentType())){ + unlocked.put(content.getContentType(), new ObjectSet<>()); } - } - private ContentUnlockSet rootSet(){ - return getSet("root"); - } + boolean ret = unlocked.get(content.getContentType()).add(content.getContentName()); - private ContentUnlockSet getSet(String name){ - if(!sets.containsKey(name)){ - sets.put(name, new ContentUnlockSet()); + //fire unlock event so other classes can use it + if(ret){ + content.onUnlock(); + Events.fire(new UnlockEvent(content)); + dirty = true; } - return sets.get(name); + + return ret; } /** Returns whether unlockables have changed since the last save.*/ public boolean isDirty(){ - for(ContentUnlockSet set : sets.values()){ - if(set.isDirty()){ - return true; - } - } - return false; + return dirty; } /** Clears all unlocked content. Automatically saves.*/ public void reset(){ - sets.clear(); save(); } - public void load(){ - sets.clear(); - - ObjectMap>> result = Settings.getObject("content-sets", ObjectMap.class, ObjectMap::new); - - for(Entry>> outer : result.entries()){ - ContentUnlockSet cset = new ContentUnlockSet(); - for (Entry> entry : outer.value.entries()){ - ObjectSet set = new ObjectSet<>(); - set.addAll(entry.value); - cset.getUnlocked().put(entry.key, set); + /**Loads 'legacy' unlocks. Will be removed in final release.*/ + public void tryLoadLegacy(){ + try{ + ObjectMap>> sets = Settings.getObject("content-sets", ObjectMap.class, ObjectMap::new); + for(Entry> entry : sets.get("root").entries()){ + unlocked.put(entry.key, new ObjectSet<>()); + unlocked.get(entry.key).addAll(entry.value); } - sets.put(outer.key, cset); + }catch(Throwable t){ + t.printStackTrace(); + } + Settings.prefs().remove("content-sets"); + Settings.save(); + } + + public void load(){ + unlocked = Settings.getObject("unlockset", ObjectMap.class, ObjectMap::new); + + if(Settings.has("content-sets")){ + tryLoadLegacy(); } } public void save(){ - ObjectMap>> output = new ObjectMap<>(); - - for(Entry centry : sets.entries()){ - ObjectMap> write = new ObjectMap<>(); - - for(Entry> entry : centry.value.getUnlocked().entries()){ - write.put(entry.key, entry.value.iterator().toArray()); - } - - output.put(centry.key, write); - } - - Settings.putObject("content-sets", output); + Settings.putObject("unlockset", unlocked); Settings.save(); } diff --git a/core/src/io/anuke/mindustry/graphics/Palette.java b/core/src/io/anuke/mindustry/graphics/Palette.java index 645df794e6..437a36034c 100644 --- a/core/src/io/anuke/mindustry/graphics/Palette.java +++ b/core/src/io/anuke/mindustry/graphics/Palette.java @@ -29,6 +29,7 @@ public class Palette{ lightishGray = Color.valueOf("a2a2a2"), darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f), + darkerGray = new Color(0.2f, 0.2f, 0.2f, 1f), boostTo = Color.valueOf("ffad4d"), boostFrom = Color.valueOf("ff7f57"), diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index 84b1563b22..36722ffe21 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -25,7 +25,7 @@ import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Timers; -import io.anuke.ucore.scene.Group; +import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.util.Angles; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Translator; @@ -145,7 +145,7 @@ public abstract class InputHandler extends InputAdapter{ return false; } - public void buildUI(Group group){ + public void buildUI(Table table){ } diff --git a/core/src/io/anuke/mindustry/input/MobileInput.java b/core/src/io/anuke/mindustry/input/MobileInput.java index a0d4ece62c..d21d832bf4 100644 --- a/core/src/io/anuke/mindustry/input/MobileInput.java +++ b/core/src/io/anuke/mindustry/input/MobileInput.java @@ -30,8 +30,7 @@ import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.*; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Lines; -import io.anuke.ucore.scene.Group; -import io.anuke.ucore.scene.event.Touchable; +import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.*; @@ -208,78 +207,53 @@ public class MobileInput extends InputHandler implements GestureListener{ //region UI and drawing @Override - public void buildUI(Group group){ + public void buildUI(Table table){ + table.addImage("blank").color(Palette.accent).height(3f).colspan(4).growX(); + table.row(); + table.left().margin(0f).defaults().size(48f); - //Create confirm/cancel table - group.fill(c -> { - c.bottom().left().visible(() -> !state.is(State.menu)); + table.addImageButton("icon-break", "clear-toggle-partial", 16 * 2f, () -> { + mode = mode == breaking ? recipe == null ? none : placing : breaking; + lastRecipe = recipe; + if(mode == breaking){ + showGuide("deconstruction"); + } + }).update(l -> l.setChecked(mode == breaking)); - c.table("pane", act -> { - act.margin(5); - act.defaults().size(60f); + //rotate button + table.addImageButton("icon-arrow", "clear-partial", 16 * 2f, () -> rotation = Mathf.mod(rotation + 1, 4)) + .update(i -> i.getImage().setRotationOrigin(rotation * 90, Align.center)) + .visible(() -> recipe != null && recipe.result.rotate); - //Add a cancel button - act.addImageButton("icon-cancel", 16*2f, () -> { - mode = none; - recipe = null; - }); + //cancel button + table.addImageButton("icon-cancel", "clear-partial", 16 * 2f, () -> { + player.clearBuilding(); + mode = none; + recipe = null; + }).visible(() -> player.isBuilding() || recipe != null); - act.row(); + //confirm button + table.addImageButton("icon-check", "clear-partial", 16 * 2f, () -> { + for(PlaceRequest request : selection){ + Tile tile = request.tile(); - //Add an accept button, which places everything. - act.addImageButton("icon-check", 16 * 2f, () -> { - for(PlaceRequest request : selection){ - Tile tile = request.tile(); - - //actually place/break all selected blocks - if(tile != null){ - if(!request.remove){ - rotation = request.rotation; - recipe = request.recipe; - tryPlaceBlock(tile.x, tile.y); - }else{ - tryBreakBlock(tile.x, tile.y); - } - } + //actually place/break all selected blocks + if(tile != null){ + if(!request.remove){ + rotation = request.rotation; + recipe = request.recipe; + tryPlaceBlock(tile.x, tile.y); + }else{ + tryBreakBlock(tile.x, tile.y); } + } + } - //move all current requests to removal array so they fade out - removals.addAll(selection); - selection.clear(); - selecting = false; - }).disabled(i -> selection.size == 0); - - act.row(); - - //Add a rotate button - act.addImageButton("icon-arrow", 16 * 2f, () -> rotation = Mathf.mod(rotation + 1, 4)) - .update(i -> i.getImage().setRotationOrigin(rotation * 90, Align.center)) - .disabled(i -> recipe == null || !recipe.result.rotate); - }).visible(() -> mode != none).touchable(Touchable.enabled); - - c.row(); - - c.table("pane", remove -> { - remove.defaults().size(60f); - - //Add a break button. - remove.addImageButton("icon-break", "toggle", 16 * 2f, () -> { - mode = mode == breaking ? recipe == null ? none : placing : breaking; - lastRecipe = recipe; - if(mode == breaking){ - showGuide("deconstruction"); - } - }).update(l -> l.setChecked(mode == breaking)); - }).margin(5).touchable(Touchable.enabled); - - c.table("pane", cancel -> { - cancel.defaults().size(60f); - - //Add a 'cancel building' button. - cancel.addImageButton("icon-cancel", 16 * 2f, player::clearBuilding); - - }).left().colspan(2).margin(5).touchable(Touchable.enabled).visible(() -> player.getPlaceQueue().size > 0); - }); + //move all current requests to removal array so they fade out + removals.addAll(selection); + selection.clear(); + selecting = false; + }).visible(() -> !selection.isEmpty()); } @Override diff --git a/core/src/io/anuke/mindustry/net/Net.java b/core/src/io/anuke/mindustry/net/Net.java index 14ab812242..0e152cb18e 100644 --- a/core/src/io/anuke/mindustry/net/Net.java +++ b/core/src/io/anuke/mindustry/net/Net.java @@ -66,7 +66,7 @@ public class Net{ }else if(error.contains("connection refused") || error.contains("route to host") || type.contains("unknownhost")){ error = Bundles.get("text.error.unreachable"); }else if(type.contains("timeout")){ - error = Bundles.get("text.error.timeout"); + error = Bundles.get("text.error.timedout"); }else if(error.equals("alreadyconnected")){ error = Bundles.get("text.error.alreadyconnected"); }else if(!error.isEmpty()){ diff --git a/core/src/io/anuke/mindustry/type/Category.java b/core/src/io/anuke/mindustry/type/Category.java index 6d75054b2f..6e5f7a621a 100644 --- a/core/src/io/anuke/mindustry/type/Category.java +++ b/core/src/io/anuke/mindustry/type/Category.java @@ -1,5 +1,24 @@ package io.anuke.mindustry.type; public enum Category{ - weapon, production, distribution, liquid, power, defense, crafting, units + /**Offensive turrets.*/ + turret, + /**Blocks that produce raw resources, such as drills.*/ + production, + /**Blocks that move items around.*/ + distribution, + /**Blocks that move liquids around.*/ + liquid, + /**Blocks that generate or transport power.*/ + power, + /**Walls and other defensive structures.*/ + defense, + /**Blocks that craft things.*/ + crafting, + /**Blocks that create units.*/ + units, + /**Things that upgrade the player such as mech pads.*/ + upgrade, + /**Things for storage or passive effects.*/ + effect } diff --git a/core/src/io/anuke/mindustry/type/Liquid.java b/core/src/io/anuke/mindustry/type/Liquid.java index c357e2d041..3dbb52fbe9 100644 --- a/core/src/io/anuke/mindustry/type/Liquid.java +++ b/core/src/io/anuke/mindustry/type/Liquid.java @@ -18,7 +18,7 @@ public class Liquid extends UnlockableContent{ public float flammability; /**temperature: 0.5 is 'room' temperature, 0 is very cold, 1 is molten hot*/ public float temperature = 0.5f; - /**how much heat this liquid can store. 0.75=water (high), anything lower is probably less dense and bad at cooling.*/ + /**how much heat this liquid can store. 0.4=water (decent), anything lower is probably less dense and bad at cooling.*/ public float heatCapacity = 0.5f; /**how thick this liquid is. 0.5=water (relatively viscous), 1 would be something like tar (very slow)*/ public float viscosity = 0.5f; diff --git a/core/src/io/anuke/mindustry/type/Recipe.java b/core/src/io/anuke/mindustry/type/Recipe.java index eed821961c..daa84726e7 100644 --- a/core/src/io/anuke/mindustry/type/Recipe.java +++ b/core/src/io/anuke/mindustry/type/Recipe.java @@ -23,6 +23,7 @@ import static io.anuke.mindustry.Vars.*; public class Recipe extends UnlockableContent{ private static ObjectMap recipeMap = new ObjectMap<>(); + private static Array returnArray = new Array<>(); public final Block result; public final ItemStack[] requirements; @@ -55,34 +56,15 @@ public class Recipe extends UnlockableContent{ recipeMap.put(result, this); } - /** - * Returns unlocked recipes in a category. - * Do not call on the server backend, as unlocking does not exist! - */ - public static void getUnlockedByCategory(Category category, Array arr){ - if(headless){ - throw new RuntimeException("Not implemented on the headless backend!"); - } - - arr.clear(); - for(Recipe r : content.recipes()){ - if(r.category == category && (control.unlocks.isUnlocked(r)) && - !((r.mode != null && r.mode != state.mode) || !r.visibility.shown())){ - arr.add(r); - } - } - } - - /** - * Returns all recipes in a category. - */ - public static void getByCategory(Category category, Array r){ - r.clear(); + /**Returns all non-hidden recipes in a category.*/ + public static Array getByCategory(Category category){ + returnArray.clear(); for(Recipe recipe : content.recipes()){ - if(recipe.category == category){ - r.add(recipe); + if(recipe.category == category && recipe.visibility.shown() && (recipe.mode == state.mode || recipe.mode == null)){ + returnArray.add(recipe); } } + return returnArray; } public static Recipe getByResult(Block block){ @@ -109,7 +91,6 @@ public class Recipe extends UnlockableContent{ return this; } - @Override public boolean alwaysUnlocked(){ return alwaysUnlocked; diff --git a/core/src/io/anuke/mindustry/ui/ImageStack.java b/core/src/io/anuke/mindustry/ui/ImageStack.java new file mode 100644 index 0000000000..2ca0063e48 --- /dev/null +++ b/core/src/io/anuke/mindustry/ui/ImageStack.java @@ -0,0 +1,14 @@ +package io.anuke.mindustry.ui; + +import com.badlogic.gdx.graphics.g2d.TextureRegion; +import io.anuke.ucore.scene.ui.Image; +import io.anuke.ucore.scene.ui.layout.Stack; + +public class ImageStack extends Stack{ + + public ImageStack(TextureRegion... regions){ + for(TextureRegion region : regions){ + add(new Image(region)); + } + } +} diff --git a/core/src/io/anuke/mindustry/ui/ItemDisplay.java b/core/src/io/anuke/mindustry/ui/ItemDisplay.java new file mode 100644 index 0000000000..4530d606f0 --- /dev/null +++ b/core/src/io/anuke/mindustry/ui/ItemDisplay.java @@ -0,0 +1,18 @@ +package io.anuke.mindustry.ui; + +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.ucore.scene.ui.layout.Table; + +/**An item image with text.*/ +public class ItemDisplay extends Table{ + + public ItemDisplay(Item item){ + this(item, 0); + } + + public ItemDisplay(Item item, int amount){ + add(new ItemImage(new ItemStack(item, amount))).size(8*3); + add(item.localizedName()).padLeft(4); + } +} diff --git a/core/src/io/anuke/mindustry/ui/ItemImage.java b/core/src/io/anuke/mindustry/ui/ItemImage.java index 709c2903c2..130916cb26 100644 --- a/core/src/io/anuke/mindustry/ui/ItemImage.java +++ b/core/src/io/anuke/mindustry/ui/ItemImage.java @@ -18,10 +18,12 @@ public class ItemImage extends Stack{ } public ItemImage(ItemStack stack){ - Table t = new Table().left().bottom(); - t.add(stack.amount + ""); - add(new Image(stack.item.region)); - add(t); + + if(stack.amount != 0){ + Table t = new Table().left().bottom(); + t.add(stack.amount + ""); + add(t); + } } } diff --git a/core/src/io/anuke/mindustry/ui/LiquidDisplay.java b/core/src/io/anuke/mindustry/ui/LiquidDisplay.java new file mode 100644 index 0000000000..f639dfe1c5 --- /dev/null +++ b/core/src/io/anuke/mindustry/ui/LiquidDisplay.java @@ -0,0 +1,14 @@ +package io.anuke.mindustry.ui; + +import io.anuke.mindustry.type.Liquid; +import io.anuke.ucore.scene.ui.Image; +import io.anuke.ucore.scene.ui.layout.Table; + +/**An ItemDisplay, but for liquids.*/ +public class LiquidDisplay extends Table{ + + public LiquidDisplay(Liquid liquid){ + add(new Image(liquid.getContentIcon())).size(8*3); + add(liquid.localizedName()).padLeft(3); + } +} diff --git a/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java index 4d9411c4df..8b46947740 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java @@ -6,10 +6,10 @@ import io.anuke.mindustry.game.Content; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.type.ContentType; -import io.anuke.mindustry.world.meta.StatValue; import io.anuke.ucore.scene.event.HandCursorListener; import io.anuke.ucore.scene.ui.Image; import io.anuke.ucore.scene.ui.ScrollPane; +import io.anuke.ucore.scene.ui.Tooltip; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.utils.UIUtils; @@ -65,7 +65,10 @@ public class UnlocksDialog extends FloatingDialog{ if(control.unlocks.isUnlocked(unlock)){ image.clicked(() -> Vars.ui.content.show(unlock)); - StatValue.addToolTip(image, unlock); + image.addListener(new Tooltip<>(new Table("clear"){{ + add(unlock.localizedName()); + margin(4); + }})); } if((++count) % maxWidth == 0){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java index 6faed6e1ba..e193b04ed2 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java @@ -180,7 +180,9 @@ public class BlockInventoryFragment extends Fragment{ private String round(float f){ f = (int) f; - if(f >= 1000){ + if(f >= 1000000){ + return Strings.toFixed(f / 1000000f, 1) + "[gray]mil[]"; + }else if(f >= 1000){ return Strings.toFixed(f / 1000, 1) + "k"; }else{ return (int) f + ""; diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java deleted file mode 100644 index 2d6b439442..0000000000 --- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java +++ /dev/null @@ -1,349 +0,0 @@ -package io.anuke.mindustry.ui.fragments; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.Color; -import com.badlogic.gdx.graphics.g2d.TextureRegion; -import com.badlogic.gdx.math.Interpolation; -import com.badlogic.gdx.utils.Array; -import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.game.EventType.WorldLoadEvent; -import io.anuke.mindustry.input.InputHandler; -import io.anuke.mindustry.type.Category; -import io.anuke.mindustry.type.ItemStack; -import io.anuke.mindustry.type.Recipe; -import io.anuke.ucore.core.Core; -import io.anuke.ucore.core.Events; -import io.anuke.ucore.core.Graphics; -import io.anuke.ucore.scene.Element; -import io.anuke.ucore.scene.Group; -import io.anuke.ucore.scene.actions.Actions; -import io.anuke.ucore.scene.event.ClickListener; -import io.anuke.ucore.scene.event.InputEvent; -import io.anuke.ucore.scene.event.Touchable; -import io.anuke.ucore.scene.ui.*; -import io.anuke.ucore.scene.ui.layout.Stack; -import io.anuke.ucore.scene.ui.layout.Table; -import io.anuke.ucore.util.Mathf; -import io.anuke.ucore.util.Strings; - -import static io.anuke.mindustry.Vars.*; - -public class BlocksFragment extends Fragment{ - //number of block icon rows - private static final int rows = 4; - //number of category button rows - private static final int secrows = 4; - //size of each block icon - private static final float size = 48; - //maximum recipe rows - private static final int maxrow = 3; - /** Table containing description that is shown on top.*/ - private Table descTable; - /** Main table containing the whole menu.*/ - private Table mainTable; - /** Table for all section buttons and blocks.*/ - private Table selectTable; - /** Whether the whole thing is shown or hidden by the popup button.*/ - private boolean shown = true; - /** Recipe currently hovering over.*/ - private Recipe hoverRecipe; - /** Last category selected.*/ - private Category lastCategory; - /** Last block pane scroll Y position.*/ - private float lastScroll; - /** Temporary recipe array for storage*/ - private Array recipes = new Array<>(); - - public void build(Group parent){ - InputHandler input = control.input(0); - - parent.fill(container -> { - container.bottom().right().visible(() -> !state.is(State.menu)); - - mainTable = container.table(main -> { - - //add top description table - descTable = new Table("button"); - descTable.visible(() -> (hoverRecipe != null || input.recipe != null) && shown); //make sure it's visible when necessary - descTable.update(() -> { - if(state.is(State.menu)){ - descTable.clear(); - control.input(0).recipe = null; - } - // note: This is required because there is no direct connection between input.recipe and the description ui. - // If input.recipe gets set to null, a proper cleanup of the ui elements is required. - boolean anyRecipeShown = input.recipe != null || hoverRecipe != null; - boolean descriptionTableClean = descTable.getChildren().size == 0; - boolean cleanupRequired = (!anyRecipeShown && !descriptionTableClean); - if(cleanupRequired){ - descTable.clear(); - } - }); - - float w = 246f; - - main.add(descTable).width(w); - - main.row(); - - //now add the block selection menu - selectTable = main.table("pane", select -> {}) - .margin(10f).marginLeft(0f).marginRight(0f).marginTop(-5) - .touchable(Touchable.enabled).right().bottom().width(w).get(); - - }).bottom().right().get(); - }); - - Events.on(WorldLoadEvent.class, event -> rebuild()); - - rebuild(); - } - - /**Rebuilds the whole placement menu, attempting to preserve previous state.*/ - void rebuild(){ - selectTable.clear(); - - InputHandler input = control.input(0); - Stack stack = new Stack(); - ButtonGroup group = new ButtonGroup<>(); - Table catTable = selectTable; - - int cati = 0; - int checkedi = 0; - int rowsUsed = 0; - - //add categories - for(Category cat : Category.values()){ - //get recipes out by category - Recipe.getUnlockedByCategory(cat, recipes); - - //empty section, nothing to see here - if(recipes.size == 0){ - continue; - } - - //table where actual recipes go - Table recipeTable = new Table(); - recipeTable.margin(4).top().left().marginRight(15); - - //add a new row here when needed - if(cati == secrows){ - catTable = new Table(); - selectTable.row(); - selectTable.add(catTable).colspan(secrows).padTop(-5).growX(); - } - - //add category button - ImageButton catb = catTable.addImageButton("icon-" + cat.name(), "toggle", 40, () -> { - if(!recipeTable.isVisible() && input.recipe != null){ - input.recipe = null; - } - lastCategory = cat; - stack.act(Gdx.graphics.getDeltaTime()); - stack.act(Gdx.graphics.getDeltaTime()); - }).growX().height(54).group(group) - .name("sectionbutton" + cat.name()).get(); - - if(lastCategory == cat || lastCategory == null){ - checkedi = cati; - lastCategory = cat; - } - - //scrollpane for recipes - ScrollPane pane = new ScrollPane(recipeTable, "clear-black"); - pane.setOverscroll(false, false); - pane.visible(catb::isChecked); - pane.setScrollYForce(lastScroll); - pane.update(() -> { - Element e = Core.scene.hit(Graphics.mouse().x, Graphics.mouse().y, true); - if(e != null && e.isDescendantOf(pane)){ - Core.scene.setScrollFocus(pane); - }else if(Core.scene.getScrollFocus() == pane){ - Core.scene.setScrollFocus(null); - } - - if(lastCategory == cat){ - lastScroll = pane.getVisualScrollY(); - } - }); - stack.add(pane); - - int i = 0; - - //add actual recipes - for(Recipe r : recipes){ - if((r.mode != null && r.mode != state.mode) || !r.visibility.shown()) continue; - - ImageButton image = new ImageButton(new TextureRegion(), "select"); - - TextureRegion[] regions = r.result.getCompactIcon(); - Stack istack = new Stack(); - for(TextureRegion region : regions){ - Image u = new Image(region); - u.update(() -> u.setColor(istack.getColor())); - istack.add(u); - } - - image.getImageCell().setActor(istack).size(size); - image.addChild(istack); - image.setTouchable(Touchable.enabled); - image.getImage().remove(); - - image.addListener(new ClickListener(){ - @Override - public void enter(InputEvent event, float x, float y, int pointer, Element fromActor){ - super.enter(event, x, y, pointer, fromActor); - if(hoverRecipe != r){ - hoverRecipe = r; - updateRecipe(r); - } - } - - @Override - public void exit(InputEvent event, float x, float y, int pointer, Element toActor){ - super.exit(event, x, y, pointer, toActor); - hoverRecipe = null; - updateRecipe(input.recipe); - } - }); - - image.clicked(() -> { - // note: input.recipe only gets set here during a click. - // during a hover only the visual description will be updated. - InputHandler handler = mobile ? input : control.input(0); - - boolean nothingSelectedYet = handler.recipe == null; - boolean selectedSomethingElse = !nothingSelectedYet && handler.recipe != r; - boolean shouldMakeSelection = nothingSelectedYet || selectedSomethingElse; - if(shouldMakeSelection){ - handler.recipe = r; - hoverRecipe = r; - updateRecipe(r); - }else{ - handler.recipe = null; - hoverRecipe = null; - updateRecipe(null); - } - }); - - recipeTable.add(image).size(size + 8); - - image.update(() -> { - image.setChecked(r == control.input(0).recipe); - TileEntity entity = players[0].getClosestCore(); - - if(entity == null) return; - - if(!state.mode.infiniteResources){ - for(ItemStack s : r.requirements){ - if(!entity.items.has(s.item, Mathf.ceil(s.amount))){ - istack.setColor(Color.GRAY); - return; - } - } - } - istack.setColor(Color.WHITE); - }); - - if(i % rows == rows - 1){ - rowsUsed = Math.max((i + 1) / rows, rowsUsed); - recipeTable.row(); - } - - i++; - } - - cati++; - } - - if(group.getButtons().size > 0){ - group.getButtons().get(checkedi).setChecked(true); - } - - selectTable.row(); - selectTable.add(stack).growX().left().top().colspan(Category.values().length).padBottom(-5).height((size + 12) * Math.min(rowsUsed, 3)); - } - - void toggle(float t, Interpolation ip){ - if(shown){ - shown = false; - mainTable.actions(Actions.translateBy(0, mainTable.getTranslation().y + (-mainTable.getHeight() - descTable.getHeight()), t, ip)); - }else{ - shown = true; - mainTable.actions(Actions.translateBy(0, -mainTable.getTranslation().y, t, ip)); - } - } - - private void updateRecipe(Recipe recipe){ - if(recipe == null){ - descTable.clear(); - return; - } - - descTable.clear(); - descTable.setTouchable(Touchable.enabled); - - descTable.defaults().left(); - descTable.left(); - descTable.margin(12); - - Table header = new Table(); - - descTable.add(header).left(); - - descTable.row(); - - TextureRegion[] regions = recipe.result.getCompactIcon(); - - Stack istack = new Stack(); - - for(TextureRegion region : regions) istack.add(new Image(region)); - - header.add(istack).size(8 * 5).padTop(4); - Label nameLabel = new Label(recipe.result.formalName); - nameLabel.setWrap(true); - header.add(nameLabel).padLeft(2).width(120f); - - header.addButton("?", () -> ui.content.show(recipe)).expandX().padLeft(3).top().right().size(40f, 44f).padTop(-2); - - descTable.add().pad(2); - - Table requirements = new Table(); - - descTable.row(); - - descTable.left(); - descTable.add(requirements); - - for(ItemStack stack : recipe.requirements){ - requirements.addImage(stack.item.region).size(8 * 3); - Label reqlabel = new Label(() -> { - TileEntity core = players[0].getClosestCore(); - if(core == null || state.mode.infiniteResources) return "*/*"; - - int amount = core.items.get(stack.item); - String color = (amount < stack.amount / 2f ? "[red]" : amount < stack.amount ? "[accent]" : "[white]"); - - return color + format(amount) + "[white]/" + stack.amount; - }); - - requirements.add(reqlabel).left(); - requirements.row(); - } - - descTable.row(); - } - - String format(int number){ - if(number >= 1000000){ - return Strings.toFixed(number / 1000000f, 1) + "[gray]mil[]"; - }else if(number >= 10000){ - return number / 1000 + "[gray]k[]"; - }else if(number >= 1000){ - return Strings.toFixed(number / 1000f, 1) + "[gray]k[]"; - }else{ - return number + ""; - } - } -} \ No newline at end of file diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 2da9f991a6..0aa55b3a29 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -32,7 +32,7 @@ import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.*; public class HudFragment extends Fragment{ - public final BlocksFragment blockfrag = new BlocksFragment(); + public final PlacementFragment blockfrag = new PlacementFragment(); private ImageButton menu, flip; private Stack wavetable; @@ -224,7 +224,6 @@ public class HudFragment extends Fragment{ /**Show unlock notification for a new recipe.*/ public void showUnlock(Recipe recipe){ - blockfrag.rebuild(); //if there's currently no unlock notification... if(lastUnlockTable == null){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/OverlayFragment.java b/core/src/io/anuke/mindustry/ui/fragments/OverlayFragment.java index fd861518ad..f19ec137a4 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/OverlayFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/OverlayFragment.java @@ -31,7 +31,7 @@ public class OverlayFragment extends Fragment{ config.build(group); consume.build(group); - input.buildUI(group); + //input.buildUI(group); } public void remove(){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java new file mode 100644 index 0000000000..f3923079d8 --- /dev/null +++ b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java @@ -0,0 +1,238 @@ +package io.anuke.mindustry.ui.fragments; + +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.math.Interpolation; +import io.anuke.mindustry.core.GameState.State; +import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.game.EventType.WorldLoadGraphicsEvent; +import io.anuke.mindustry.graphics.Palette; +import io.anuke.mindustry.input.InputHandler; +import io.anuke.mindustry.type.Category; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.type.Recipe; +import io.anuke.mindustry.ui.ImageStack; +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.OreBlock; +import io.anuke.ucore.core.Events; +import io.anuke.ucore.core.Graphics; +import io.anuke.ucore.scene.Group; +import io.anuke.ucore.scene.actions.Actions; +import io.anuke.ucore.scene.event.Touchable; +import io.anuke.ucore.scene.ui.ButtonGroup; +import io.anuke.ucore.scene.ui.Image; +import io.anuke.ucore.scene.ui.ImageButton; +import io.anuke.ucore.scene.ui.layout.Table; +import io.anuke.ucore.util.Bundles; + +import static io.anuke.mindustry.Vars.*; + +public class PlacementFragment extends Fragment{ + final int rowWidth = 4; + + Category currentCategory = Category.turret; + Block hovered, lastDisplay; + Tile hoverTile; + Table blockTable, toggler; + boolean shown = true; + + public PlacementFragment(){ + Events.on(WorldLoadGraphicsEvent.class, event -> { + Group group = toggler.getParent(); + toggler.remove(); + build(group); + }); + } + + @Override + public void build(Group parent){ + parent.fill(full -> { + toggler = full; + full.bottom().right().visible(() -> !state.is(State.menu)); + + full.table(frame -> { + InputHandler input = control.input(0); + + //rebuilds the category table with the correct recipes + Runnable rebuildCategory = () -> { + blockTable.clear(); + blockTable.top().margin(5); + + int index = 0; + + ButtonGroup group = new ButtonGroup<>(); + group.setMinCheckCount(0); + + for(Recipe recipe : Recipe.getByCategory(currentCategory)){ + + if(index++ % rowWidth == 0){ + blockTable.row(); + } + + boolean[] unlocked = {false}; + + ImageButton button = blockTable.addImageButton("icon-locked", "select", 8*4, () -> { + if(control.unlocks.isUnlocked(recipe)){ + input.recipe = input.recipe == recipe ? null : recipe; + } + }).size(46f).group(group).get(); + + button.update(() -> { //color unplacable things gray + boolean ulock = control.unlocks.isUnlocked(recipe); + TileEntity core = players[0].getClosestCore(); + 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.setChecked(input.recipe == recipe); + + if(ulock == unlocked[0]) return; + unlocked[0] = ulock; + + if(!ulock){ + button.replaceImage(new Image("icon-locked")); + }else{ + button.replaceImage(new ImageStack(recipe.result.getCompactIcon())); + } + }); + + button.hovered(() -> hovered = recipe.result); + button.exited(() -> { + if(hovered == recipe.result){ + hovered = null; + } + }); + } + blockTable.act(0f); + }; + + //top table with hover info + frame.table("clear", top -> { + top.add(new Table()).growX().update(topTable -> { + if((tileDisplayBlock() == null && lastDisplay == getSelected()) || + (tileDisplayBlock() != null && lastDisplay == tileDisplayBlock())) return; + + topTable.clear(); + topTable.top().left().margin(5); + + lastDisplay = getSelected(); + + if(lastDisplay != null){ //show selected recipe + topTable.table(header -> { + header.left(); + header.add(new ImageStack(lastDisplay.getCompactIcon())).size(8*4); + header.labelWrap(() -> + !control.unlocks.isUnlocked(Recipe.getByResult(lastDisplay)) ? Bundles.get("text.blocks.unknown") : lastDisplay.formalName) + .left().width(190f).padLeft(5); + header.add().growX(); + if(control.unlocks.isUnlocked(Recipe.getByResult(lastDisplay))){ + header.addButton("?", "clear-partial", () -> ui.content.show(Recipe.getByResult(lastDisplay))) + .size(8 * 5).padTop(-5).padRight(-5).right().grow(); + } + }).growX().left(); + topTable.row(); + //add requirement table + topTable.table(req -> { + req.top().left(); + + for(ItemStack stack : Recipe.getByResult(lastDisplay).requirements){ + req.table(line -> { + line.left(); + line.addImage(stack.item.region).size(8*2); + line.add(stack.item.localizedName()).color(Color.LIGHT_GRAY).padLeft(2).left(); + line.labelWrap(() -> { + TileEntity core = players[0].getClosestCore(); + if(core == null || state.mode.infiniteResources) return "*/*"; + + int amount = core.items.get(stack.item); + String color = (amount < stack.amount / 2f ? "[red]" : amount < stack.amount ? "[accent]" : "[white]"); + + return color + ui.formatAmount(amount) + "[white]/" + stack.amount; + }).padLeft(5); + }).left(); + req.row(); + } + }).growX().left().margin(3); + + }else if(tileDisplayBlock() != null){ //show selected tile + lastDisplay = tileDisplayBlock(); + topTable.add(new ImageStack(lastDisplay.getDisplayIcon(hoverTile))).size(8*4); + topTable.labelWrap(lastDisplay.getDisplayName(hoverTile)).left().width(190f).padLeft(5); + } + }); + top.row(); + top.addImage("blank").growX().color(Palette.accent).height(3f); + }).colspan(3).fillX().visible(() -> getSelected() != null || tileDisplayBlock() != null).touchable(Touchable.enabled); + frame.row(); + frame.table("clear", blocksSelect -> { + blocksSelect.table(blocks -> blockTable = blocks).grow(); + blocksSelect.row(); + blocksSelect.table(input::buildUI).growX(); + }).fillY().bottom().touchable(Touchable.enabled); + frame.addImage("blank").width(3f).fillY().color(Palette.accent); + frame.table(categories -> { + categories.defaults().size(50f); + + ButtonGroup group = new ButtonGroup<>(); + + for(Category cat : Category.values()){ + if(Recipe.getByCategory(cat).isEmpty()) continue; + + categories.addImageButton("icon-" + cat.name(), "clear-toggle", 16*2, () -> { + currentCategory = cat; + rebuildCategory.run(); + }).group(group); + + if(cat.ordinal() %2 == 1) categories.row(); + } + }).touchable(Touchable.enabled); + + rebuildCategory.run(); + }); + }); + } + + /**Returns the currently displayed block in the top box.*/ + Block getSelected(){ + Block toDisplay = null; + + //setup hovering tile + if(!ui.hasMouse()){ + Tile tile = world.tileWorld(Graphics.mouseWorld().x, Graphics.mouseWorld().y); + if(tile != null){ + hoverTile = tile.target(); + }else{ + hoverTile = null; + } + }else{ + hoverTile = null; + } + + //block currently selected + if(control.input(0).recipe != null){ + toDisplay = control.input(0).recipe.result; + } + + //block hovered on in build menu + if(hovered != null){ + toDisplay = hovered; + } + + return toDisplay; + } + + /**Returns the block currently being hovered over in the world.*/ + Block tileDisplayBlock(){ + return hoverTile == null ? null : hoverTile.block().synthetic() ? hoverTile.block() : hoverTile.floor() instanceof OreBlock ? hoverTile.floor() : null; + } + + /**Show or hide the placement menu.*/ + void toggle(float t, Interpolation ip){ + toggler.clearActions(); + if(shown){ + shown = false; + toggler.actions(Actions.translateBy(toggler.getTranslation().x + toggler.getWidth(), 0, t, ip)); + }else{ + shown = true; + toggler.actions(Actions.translateBy(-toggler.getTranslation().x, 0, t, ip)); + } + } +} \ No newline at end of file diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 56bf29acc1..0c9e92f301 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -448,6 +448,14 @@ public class Block extends BaseBlock { } } + public String getDisplayName(Tile tile){ + return formalName; + } + + public TextureRegion getDisplayIcon(Tile tile){ + return getEditorIcon(); + } + public TextureRegion getEditorIcon(){ if(editorIcon == null){ editorIcon = Draw.region("block-icon-" + name, Draw.region("clear")); diff --git a/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java b/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java index e6691b901a..21e54b7461 100644 --- a/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java @@ -16,6 +16,7 @@ import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Shaders; import io.anuke.mindustry.input.CursorType; +import io.anuke.mindustry.type.ContentType; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.Recipe; import io.anuke.mindustry.world.BarType; @@ -26,6 +27,7 @@ import io.anuke.mindustry.world.modules.ItemModule; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.graphics.Draw; +import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Mathf; import java.io.DataInput; @@ -40,7 +42,7 @@ public class BuildBlock extends Block{ super(name); update = true; size = Integer.parseInt(name.charAt(name.length() - 1) + ""); - health = 1; + health = 10; layer = Layer.placement; consumesTap = true; solidifes = true; @@ -68,6 +70,18 @@ public class BuildBlock extends Block{ } } + @Override + public String getDisplayName(Tile tile){ + BuildEntity entity = tile.entity(); + return Bundles.format("block.constructing", entity.recipe == null ? entity.previous.formalName : entity.recipe.result.formalName); + } + + @Override + public TextureRegion getDisplayIcon(Tile tile){ + BuildEntity entity = tile.entity(); + return (entity.recipe == null ? entity.previous : entity.recipe.result).getEditorIcon(); + } + @Override public boolean isSolidFor(Tile tile){ BuildEntity entity = tile.entity(); @@ -104,15 +118,6 @@ public class BuildBlock extends Block{ } } - @Override - public void afterDestroyed(Tile tile, TileEntity e){ - BuildEntity entity = (BuildEntity) e; - - if(entity.previous != null && entity.previous.synthetic()){ - tile.setBlock(entity.previous); - } - } - @Override public void draw(Tile tile){ BuildEntity entity = tile.entity(); diff --git a/core/src/io/anuke/mindustry/world/blocks/OreBlock.java b/core/src/io/anuke/mindustry/world/blocks/OreBlock.java index 0c0e727d93..bc91dc4e57 100644 --- a/core/src/io/anuke/mindustry/world/blocks/OreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/OreBlock.java @@ -21,6 +21,11 @@ public class OreBlock extends Floor{ this.edge = base.name; } + @Override + public String getDisplayName(Tile tile){ + return drops.item.localizedName(); + } + @Override public TextureRegion getEditorIcon(){ if(editorIcon == null){ diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java index b0c90960eb..490391b3d6 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java @@ -5,7 +5,6 @@ import com.badlogic.gdx.utils.IntSet; import com.badlogic.gdx.utils.ObjectSet; import com.badlogic.gdx.utils.Queue; import io.anuke.mindustry.world.Tile; -import io.anuke.ucore.core.Timers; import static io.anuke.mindustry.Vars.threads; @@ -38,38 +37,63 @@ public class PowerGraph{ lastFrameUpdated = threads.getFrameID(); - float totalInput = 0f; + boolean charge = false; + float totalInput = 0f; + float bufferInput = 0f; for(Tile producer : producers){ - totalInput += producer.entity.power.amount; + if(producer.block().consumesPower){ + bufferInput += producer.entity.power.amount; + }else{ + totalInput += producer.entity.power.amount; + } } - for(Tile producer : producers){ - float accumulator = producer.entity.power.amount; - - if(accumulator <= 0.0001f) continue; - - float toEach = accumulator / consumers.size; - float outputs = 0f; - - for(Tile tile : consumers){ - outputs += Math.min(tile.block().powerCapacity - tile.entity.power.amount, toEach) / toEach; + float maxOutput = 0f; + float bufferOutput = 0f; + for(Tile consumer : consumers){ + if(consumer.block().outputsPower){ + bufferOutput += consumer.block().powerCapacity - consumer.entity.power.amount; + }else{ + maxOutput += consumer.block().powerCapacity - consumer.entity.power.amount; } + } - float finalEach = toEach / outputs * Timers.delta(); - float buffer = 0f; + if(maxOutput < totalInput){ + charge = true; + } - if(Float.isNaN(finalEach) || Float.isInfinite(finalEach)){ + if(totalInput + bufferInput <= 0.0001f || maxOutput + bufferOutput <= 0.0001f){ + return; + } + + float bufferUsed; + if(charge){ + bufferUsed = Math.min((totalInput - maxOutput) / bufferOutput, 1f); + }else{ + bufferUsed = Math.min((maxOutput - totalInput) / bufferInput, 1f); + } + + float inputUsed = charge ? Math.min((maxOutput + bufferOutput) / totalInput, 1f) : 1f; + for(Tile producer : producers){ + if(producer.block().consumesPower){ + if(!charge){ + producer.entity.power.amount -= producer.entity.power.amount * bufferUsed; + } continue; } + producer.entity.power.amount -= producer.entity.power.amount * inputUsed; + } - for(Tile tile : consumers){ - float used = Math.min(tile.block().powerCapacity - tile.entity.power.amount, finalEach) * accumulator / totalInput; - buffer += used; - tile.entity.power.amount += used; + float outputSatisfied = charge ? 1f : Math.min((totalInput + bufferInput) / maxOutput, 1f); + for(Tile consumer : consumers){ + if(consumer.block().outputsPower){ + if(charge){ + consumer.entity.power.amount += (consumer.block().powerCapacity - consumer.entity.power.amount) * bufferUsed; + } + continue; } - - producer.entity.power.amount -= buffer; + consumer.entity.power.amount += (consumer.block().powerCapacity - consumer.entity.power.amount) * outputSatisfied; } } diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java index f0232c5cf3..212a71168b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java @@ -16,14 +16,11 @@ import io.anuke.mindustry.world.consumers.ConsumeLiquid; import io.anuke.mindustry.world.meta.BlockGroup; import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.mindustry.world.meta.StatUnit; -import io.anuke.mindustry.world.meta.StatValue; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects.Effect; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.content; @@ -135,8 +132,9 @@ public class Drill extends Block{ for(int i = 0; i < list.size; i++){ Item item = list.get(i); - Cell imageCell = table.addImage(item.name + "1").size(8 * 3).padRight(2).padLeft(2).padTop(3).padBottom(3); - StatValue.addToolTip(imageCell.getElement(), item); + + table.addImage(item.name + "1").size(8 * 3).padRight(2).padLeft(2).padTop(3).padBottom(3); + table.add(item.localizedName()); if(i != list.size - 1){ table.add("/"); } diff --git a/core/src/io/anuke/mindustry/world/consumers/Consumers.java b/core/src/io/anuke/mindustry/world/consumers/Consumers.java index cfabf5e7ca..9433de8c54 100644 --- a/core/src/io/anuke/mindustry/world/consumers/Consumers.java +++ b/core/src/io/anuke/mindustry/world/consumers/Consumers.java @@ -52,7 +52,7 @@ public class Consumers{ return i; } - public ConsumeItems items(ItemStack[] items){ + public ConsumeItems items(ItemStack... items){ ConsumeItems i = new ConsumeItems(items); add(i); return i; diff --git a/core/src/io/anuke/mindustry/world/meta/StatValue.java b/core/src/io/anuke/mindustry/world/meta/StatValue.java index ef3e51acef..df53cc2947 100644 --- a/core/src/io/anuke/mindustry/world/meta/StatValue.java +++ b/core/src/io/anuke/mindustry/world/meta/StatValue.java @@ -1,10 +1,5 @@ package io.anuke.mindustry.world.meta; -import io.anuke.mindustry.game.UnlockableContent; -import io.anuke.ucore.scene.Element; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.Tooltip; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; /** @@ -13,37 +8,7 @@ import io.anuke.ucore.scene.ui.layout.Table; public interface StatValue{ /** * This method should provide all elements necessary to display this stat to the specified table. - * For example, a stat that is just text would add label to the table. + * For example, a stat that is just text would add a label to the table. */ void display(Table table); - - /** - * This method adds an icon image together with a tool tip which contains the name of the item. - * @param table the table to add the image cell to. - * @param item The item which provides the tool tip content. - * @return the image cell which was created. The cell is not yet sized or padded. - */ - static Cell addImageWithToolTip(Table table, UnlockableContent item){ - - // Create a table cell with a new image as provided by the item - Cell imageCell = table.addImage(item.getContentIcon()); - - // Retrieve the image and add a tool tip with the item's name - addToolTip(imageCell.getElement(), item); - - // Return the table cell for further processing (sizing, padding, ...) - return imageCell; - } - - /** - * Adds a tool tip containing the item's localized name to the given element. - * @param element The element to assign the tool tip to. - * @param item The item which provides the tool tip content. - */ - static void addToolTip(Element element, UnlockableContent item){ - element.addListener(new Tooltip<>(new Table("clear"){{ - add(item.localizedName()); - margin(4); - }})); - } } diff --git a/core/src/io/anuke/mindustry/world/meta/values/ItemFilterValue.java b/core/src/io/anuke/mindustry/world/meta/values/ItemFilterValue.java index 669f5baa2c..0f917dda71 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/ItemFilterValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/ItemFilterValue.java @@ -2,12 +2,12 @@ package io.anuke.mindustry.world.meta.values; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.ui.ItemDisplay; import io.anuke.mindustry.world.meta.StatValue; import io.anuke.ucore.function.Predicate; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; -import static io.anuke.mindustry.Vars.*; + +import static io.anuke.mindustry.Vars.content; public class ItemFilterValue implements StatValue{ private final Predicate filter; @@ -27,10 +27,7 @@ public class ItemFilterValue implements StatValue{ for(int i = 0; i < list.size; i++){ Item item = list.get(i); - Cell imageCell = table.addImage(item.region); - imageCell.size(8 * 3).padRight(2).padLeft(2); - - StatValue.addToolTip(imageCell.getElement(), item); + table.add(new ItemDisplay(item)).padRight(5); if(i != list.size - 1){ table.add("/"); diff --git a/core/src/io/anuke/mindustry/world/meta/values/ItemListValue.java b/core/src/io/anuke/mindustry/world/meta/values/ItemListValue.java index 7cb237296f..af9ab67af2 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/ItemListValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/ItemListValue.java @@ -3,11 +3,8 @@ package io.anuke.mindustry.world.meta.values; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; -import io.anuke.mindustry.ui.ItemImage; +import io.anuke.mindustry.ui.ItemDisplay; import io.anuke.mindustry.world.meta.ContentStatValue; -import io.anuke.mindustry.world.meta.StatValue; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; public class ItemListValue implements ContentStatValue{ @@ -41,17 +38,11 @@ public class ItemListValue implements ContentStatValue{ public void display(Table table){ if(items != null){ for(Item item : items){ - Cell imageCell = table.addImage(item.region); - imageCell.size(8 * 3).padRight(5); - - StatValue.addToolTip(imageCell.getElement(), item); + table.add(new ItemDisplay(item)).padRight(5); } }else{ for(ItemStack stack : stacks){ - ItemImage image = new ItemImage(stack); - table.add(image).size(8 * 3).padRight(5); - - StatValue.addToolTip(image, stack.item); + table.add(new ItemDisplay(stack.item, stack.amount)).padRight(5); } } } diff --git a/core/src/io/anuke/mindustry/world/meta/values/ItemValue.java b/core/src/io/anuke/mindustry/world/meta/values/ItemValue.java index 269c537dc5..2b54142976 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/ItemValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/ItemValue.java @@ -3,9 +3,8 @@ package io.anuke.mindustry.world.meta.values; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; -import io.anuke.mindustry.ui.ItemImage; +import io.anuke.mindustry.ui.ItemDisplay; import io.anuke.mindustry.world.meta.ContentStatValue; -import io.anuke.mindustry.world.meta.StatValue; import io.anuke.ucore.scene.ui.layout.Table; public class ItemValue implements ContentStatValue{ @@ -22,9 +21,6 @@ public class ItemValue implements ContentStatValue{ @Override public void display(Table table){ - //TODO better implementation, quantity support - ItemImage image = new ItemImage(item); - table.add(image).size(8 * 3); - StatValue.addToolTip(image, item.item); + table.add(new ItemDisplay(item.item, item.amount)); } } diff --git a/core/src/io/anuke/mindustry/world/meta/values/LiquidFilterValue.java b/core/src/io/anuke/mindustry/world/meta/values/LiquidFilterValue.java index 9dc6a6bd0b..7c5d638be9 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/LiquidFilterValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/LiquidFilterValue.java @@ -2,13 +2,12 @@ package io.anuke.mindustry.world.meta.values; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.type.Liquid; +import io.anuke.mindustry.ui.LiquidDisplay; import io.anuke.mindustry.world.meta.StatValue; import io.anuke.ucore.function.Predicate; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.Tooltip; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; -import static io.anuke.mindustry.Vars.*; + +import static io.anuke.mindustry.Vars.content; public class LiquidFilterValue implements StatValue{ private final Predicate filter; @@ -26,10 +25,7 @@ public class LiquidFilterValue implements StatValue{ } for(int i = 0; i < list.size; i++){ - Liquid item = list.get(i); - - Cell imageCell = StatValue.addImageWithToolTip(table, item); - imageCell.size(8 * 3).padRight(2).padLeft(2).padTop(2).padBottom(2); + table.add(new LiquidDisplay(list.get(i))).padRight(5); if(i != list.size - 1){ table.add("/"); diff --git a/core/src/io/anuke/mindustry/world/meta/values/LiquidValue.java b/core/src/io/anuke/mindustry/world/meta/values/LiquidValue.java index d4d6734511..0dcc6c03c7 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/LiquidValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/LiquidValue.java @@ -2,10 +2,8 @@ package io.anuke.mindustry.world.meta.values; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.type.Liquid; +import io.anuke.mindustry.ui.LiquidDisplay; import io.anuke.mindustry.world.meta.ContentStatValue; -import io.anuke.mindustry.world.meta.StatValue; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; public class LiquidValue implements ContentStatValue{ @@ -22,7 +20,6 @@ public class LiquidValue implements ContentStatValue{ @Override public void display(Table table){ - Cell imageCell = StatValue.addImageWithToolTip(table, liquid); - imageCell.size(8 * 3); + table.add(new LiquidDisplay(liquid)); } } diff --git a/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java b/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java index 1f29c1a906..4d434e32ee 100644 --- a/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java +++ b/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java @@ -85,7 +85,7 @@ public class CrashHandler{ try{ Path path = Paths.get(OS.getAppDataDirectoryString(Vars.appName), "crashes", - "crash-report-" + DateTimeFormatter.ofPattern("MM-dd-yyyy-HH:mm:ss").format(LocalDateTime.now()) + ".txt"); + "crash-report-" + DateTimeFormatter.ofPattern("MM dd yyyy HH mm ss").format(LocalDateTime.now()) + ".txt"); Files.createDirectories(Paths.get(OS.getAppDataDirectoryString(Vars.appName), "crashes")); Files.write(path, parseException(e).getBytes()); @@ -117,7 +117,7 @@ public class CrashHandler{ StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); - return sw.toString().replace(e.getMessage(), e.getMessage().replace(System.getProperty("user.name"), "[USERNAME]")); + return sw.toString(); } private static void ex(Runnable r){ diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index c0a43aae57..e4be13ed40 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -355,13 +355,20 @@ public class ServerControl extends Module{ err("Not playing. Host first."); return; } - - for(Item item : content.items()){ - if(item.type == ItemType.material){ - state.teams.get(Team.blue).cores.first().entity.items.add(item, 2000); + + try{ + Team team = Team.valueOf(arg[0]); + + for(Item item : content.items()){ + if(item.type == ItemType.material){ + state.teams.get(team).cores.first().entity.items.add(item, 2000); + } } + + info("Core filled."); + }catch(IllegalArgumentException ignored){ + err("No such team exists."); } - info("Core filled."); }); handler.register("crashreport", "", "Disables or enables automatic crash reporting", arg -> {