Merge branch 'master' into patch-1

This commit is contained in:
Anuken
2019-08-16 11:13:05 -04:00
committed by GitHub
148 changed files with 2992 additions and 750 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -46,6 +46,7 @@ newgame = New Game
none = <none>
minimap = Minimap
close = Close
website = Website
quit = Quit
maps = Maps
continue = Continue
@@ -158,7 +159,7 @@ openlink = Open Link
copylink = Copy Link
back = Back
classic.export = Export Classic Data
classic.export.text = Classic (v3.5 build 40) save or map data has been detected. Would you like to export these saves to your phone's home folder, for use in the Mindustry Classic app?
classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic (v3.5 build 40) save or map data has been detected. Would you like to export these saves to your phone's home folder, for use in the Mindustry Classic app?
quit.confirm = Are you sure you want to quit?
quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial can be re-taken in[accent] Settings->Game->Re-Take Tutorial.[]
loading = [accent]Loading...
@@ -514,13 +515,14 @@ setting.lasers.name = Show Power Lasers
setting.pixelate.name = Pixelate[lightgray] (disables animations)
setting.minimap.name = Show Minimap
setting.musicvol.name = Music Volume
setting.ambientvol.name = Ambient Volume
setting.mutemusic.name = Mute Music
setting.sfxvol.name = SFX Volume
setting.mutesound.name = Mute Sound
setting.crashreport.name = Send Anonymous Crash Reports
setting.chatopacity.name = Chat Opacity
setting.playerchat.name = Display In-Game Chat
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings...
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds...
uiscale.cancel = Cancel & Exit
setting.bloom.name = Bloom
keybind.title = Rebind Keys
@@ -873,7 +875,7 @@ tutorial.drill.mobile = Mining manually is inefficient.\n[accent]Drills []can mi
tutorial.blockinfo = Each block has different stats. Each drill can only mine certain ores.\nTo check a block's info and stats,[accent] tap the "?" button while selecting it in the build menu.[]\n\n[accent]Access the Mechanical Drill's stats now.[]
tutorial.conveyor = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent]Hold down the mouse to place in a line.[]\nHold[accent] CTRL[] while selecting a line to place diagonally.\n\n[accent]{0}/{1} conveyors placed in line\n[accent]0/1 items delivered
tutorial.conveyor.mobile = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent] Place in a line by holding down your finger for a few seconds[] and dragging in a direction.\n\n[accent]{0}/{1} conveyors placed in line\n[accent]0/1 items delivered
tutorial.turret = Defensive structures must be built to repel the[lightgray] enemy[].\nBuild a[accent] duo turret[] near your base.
tutorial.turret = Once an item enters your core, it can be used for building.\nKeep in mind that not all items can be used for building.\nItems that are not used for building, such as[accent] coal[] or[accent] scrap[], cannot be put into the core.\nDefensive structures must be built to repel the[lightgray] enemy[].\nBuild a[accent] duo turret[] near your base.
tutorial.drillturret = Duo turrets require[accent] copper ammo []to shoot.\nPlace a drill near the turret.\nLead conveyors into the turret to supply it with copper.\n\n[accent]Ammo delivered: 0/1
tutorial.pause = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press space to pause.
tutorial.pause.mobile = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press this button in the top left to pause.

View File

@@ -4,15 +4,15 @@ contributors = Übersetzer und Mitwirkende
discord = Trete dem Mindustry Discord bei!
link.discord.description = Der offizielle Mindustry Discord Chatroom
link.github.description = Quellcode des Spiels
link.changelog.description = List of update changes
link.changelog.description = Liste von Änderungen
link.dev-builds.description = Entwicklungs-Builds (instabil)
link.trello.description = Offizielles Trello Board für geplante Features
link.itch.io.description = itch.io Seite mit Downloads und der Web-Version des Spiels
link.google-play.description = Google Play Store Seite
link.wiki.description = Offizelles Mindustry Wiki
linkfail = Fehler beim Öffnen des Links!\nDie URL wurde in die Zwischenablage kopiert.
screenshot = Screenshot saved to {0}
screenshot.invalid = Map too large, potentially not enough memory for screenshot.
screenshot = Screenshot gespeichert nach {0}
screenshot.invalid = Karte zu groß! Eventuell nicht ausreichend Arbeitsspeicher für Screenshot.
gameover = Der Kern wurde zerstört.
gameover.pvp = Das[accent] {0}[] Team ist siegreich!
highscore = [YELLOW] Neuer Highscore!
@@ -22,12 +22,12 @@ stat.built = Gebäude Gebaut:[accent] {0}
stat.destroyed = Gebäude Zerstört:[accent] {0}
stat.deconstructed = Gebäude Abgebaut:[accent] {0}
stat.delivered = Resources Launched:
stat.rank = Final Rank: [accent]{0}
placeline = You have selected a block.\nYou can[accent] place in a line[] by[accent] holding down your finger for a few seconds[] and dragging in a direction.\nTry it.
removearea = You have selected removal mode.\nYou can[accent] remove blocks in a rectangle[] by[accent] holding down your finger for a few seconds[] and dragging.\nTry it.
stat.rank = Finaler Rang: [accent]{0}
placeline = Du hast einen Block ausgewählt.\nDu kannst[accent] davon eine Reihe bauen,[] indem du[accent] wenige Sekunden mit einem Finger drückst[] und ihn in eine Richtung ziehst.\nVersuch es.
removearea = Du hast den Zerstörungs Modus ausgewählt.\nDu kannst[accent] Blöcke im Rechteck zerstören,[] indem du[accent] wenige Sekunden mit einem Finger drückst[] und ihn ziehst.\nTry it.
launcheditems = [accent]Launched Items
map.delete = Bist du sicher, dass du die Karte "[accent]{0}[]" löschen möchtest?
level.highscore = High Score: [accent]{0}
level.highscore = Highscore: [accent]{0}
level.select = Level Auswahl
level.mode = Spielmodus:
showagain = Nächstes mal nicht mehr anzeigen
@@ -49,10 +49,10 @@ continue = Weiter
maps.none = [LIGHT_GRAY]Keine Karten gefunden!
about.button = Info
name = Name:
noname = Pick a[accent] player name[] first.
noname = Wähle zuerst einen[accent] Spielernamen[].
filename = Dateiname:
unlocked = Neuen Block freigeschaltet!
completed = [accent]Completed
completed = [accent]Abgeschlossen
techtree = Tech Tree
research.list = [LIGHT_GRAY]Forschung:
research = Forschung
@@ -67,14 +67,14 @@ server.kicked.serverOutdated = Veralteter Server! Bitte den Host um ein Update!
server.kicked.banned = Du wurdest vom Server verbannt.
server.kicked.recentKick = Du wurdest gerade gekickt.\nWarte bevor du dich wieder verbindest.
server.kicked.nameInUse = Es ist bereits ein Spieler \nmit diesem Namen auf dem Server.
server.kicked.nameEmpty = Dein Name muss zumindest einen Buchstaben oder eine Zahl enthalten.
server.kicked.nameEmpty = Dein Name muss mindestens einen Buchstaben oder eine Zahl enthalten.
server.kicked.idInUse = Du bist bereits auf dem Server! Anmeldungen mit zwei Accounts sind nicht gestattet.
server.kicked.customClient = Der Server akzeptiert keine Custom Builds von Mindustry. Lade dir die offizielle Version herunter.
server.kicked.gameover = Game over!
host.info = Der [accent]host[] Knopf startet einen Server auf den Ports [scarlet]6567[] und [scarlet]6568.[]\nJeder im gleichen [LIGHT_GRAY]W-Lan oder lokalem Netzwerk[] sollte deinen Server in seiner Server Liste sehen können.\n\nWenn du Leuten die Verbindung über IP ermöglichen willst, benötigst du [accent]Port-Forwarding[].\n\n[LIGHT_GRAY]Hinweis: Falls es Probleme mit der Verbindung im Netzwerk gibt, stell sicher, dass Mindustry in deinen Firewall Einstellungen Zugriff auf das lokale Netzwerk hat.
join.info = Hier kannst du eine [accent]Server IP[] eingeben um dich zu verbinden oder Server im [accent]lokalem Netzwerk[] entdecken und dich mit ihnen verbinden.\nSowohl Spielen über das lokale Netzwerk als auch Spielen über das Internet werden unterstützt.\n\n[LIGHT_GRAY]Hinweis: Es gibt keine globale Server Liste; Wenn du dich mit jemand per IP verbinden willst musst du den Host nach seiner IP fragen.
hostserver = Server hosten
hostserver.mobile = Host\nGame
hostserver.mobile = Host\nSpiel
host = Host
hosting = [accent] Server wird geöffnet...
hosts.refresh = Aktualisieren
@@ -144,12 +144,12 @@ save.wave = Welle: {0}
save.difficulty = Schwierigkeitsgrad: {0}
save.date = Zuletzt gespeichert: {0}
save.playtime = Spielzeit: {0}
warning = Warning.
warning = Warnung.
confirm = Bestätigen
delete = Löschen
ok = OK
open = Öffnen
customize = Customize
customize = Anpassen
cancel = Abbruch
openlink = Link öffnen
copylink = Kopiere Link
@@ -159,7 +159,7 @@ loading = [accent]Wird geladen ...
saving = [accent]Speichere...
wave = [accent]Welle {0}
wave.waiting = Welle in {0}
wave.waveInProgress = [LIGHT_GRAY]Wave in progress
wave.waveInProgress = [LIGHT_GRAY]Welle im Gange
waiting = Warten...
waiting.players = Warte auf Spieler...
wave.enemies = [LIGHT_GRAY]{0} Gegner verbleiben
@@ -173,8 +173,8 @@ map.delete.confirm = Bist du sicher, dass du diese Karte löschen willst? Die Ak
map.random = [accent]Zufällige Karte
map.nospawn = Diese Karte hat keine Kerne in denen die Spieler beginnen können! Füge einen [ROYAL]blue[] Kern zu dieser Karte im Editor hinzu.
map.nospawn.pvp = Diese Karte hat keine gegnerischen Kerne wo Gegner starten könnten! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Fehler beim Laden der Karte: Beschädigtes oder invalide Karten Datei.
map.nospawn.attack = Diese Karte hat keine gengnerischen Kerne, die Spieler angreifen können! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
map.invalid = Fehler beim Laden der Karte: Beschädigtes oder ungültige Karten Datei.
editor.brush = Pinsel
editor.openin = Öffne im Editor
editor.oregen = Erze generieren
@@ -183,17 +183,17 @@ editor.mapinfo = Karten Info
editor.author = Autor:
editor.description = Beschreibung:
editor.waves = Wellen:
editor.rules = Rules:
editor.rules = Regeln:
editor.generation = Generation:
editor.ingame = Edit In-Game
editor.newmap = New Map
editor.ingame = In-Game Bearbeiten
editor.newmap = Neue Karte
waves.title = Wellen
waves.remove = Entfernen
waves.never = <never>
waves.every = every
waves.never = <nie>
waves.every = alle
waves.waves = Welle(n)
waves.perspawn = per spawn
waves.to = to
waves.perspawn = per Spawn
waves.to = bis
waves.boss = Boss
waves.preview = Vorschau
waves.edit = Bearbeiten...
@@ -201,7 +201,7 @@ waves.copy = Aus der Zwischenablage kopieren
waves.load = Aus der Zwischenablage laden
waves.invalid = Ungültige Wellen in der Zwischenablage.
waves.copied = Wellen kopiert.
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout.
waves.none = Keine Gegner definiert.\nInfo: Leere Wellen Entwürfe werden automatisch mit dem standard Entwurf ersetzt.
editor.default = [LIGHT_GRAY]<Default>
edit = Bearbeiten...
editor.name = Name:
@@ -210,12 +210,12 @@ editor.removeunit = Remove Unit
editor.teams = Teams
editor.errorload = Fehler beim laden der Datei:\n[accent]{0}
editor.errorsave = Fehler beim speichern der Datei:\n[accent]{0}
editor.errorimage = That's an image, not a map. Don't go around changing extensions expecting it to work.\n\nIf you want to import a legacy map, use the 'import legacy map' button in the editor.
editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported.
editor.errorheader = This map file is either not valid or corrupt.
editor.errorimage = Das ist ein Bild, keine Karte. Wechsel nicht den Dateityp und erwarte, dass es funktioniert.\n\nWenn du eine alte Karte importieren möchtest, benutze den 'Importiere Terrain Bild' Knopf in dem Editor.
editor.errorlegacy = Diese Karte ist zu alt und benutzt ein veraltetes Karten Format, das nicht mehr unterstützt wird.
editor.errorheader = Diese Karte ist entweder nicht gültig oder beschädigt.
editor.errorname = Karte hat keinen Namen.
editor.update = Update
editor.randomize = Randomize
editor.randomize = Zufällig Anordnen
editor.apply = Anwenden
editor.generate = Generieren
editor.resize = Grösse\nanpassen
@@ -245,35 +245,35 @@ editor.mapname = Karten Name
editor.overwrite = [accent] Warnung! Dies überschreibt eine vorhandene Karte.
editor.overwrite.confirm = [scarlet]Warnung![] Eine Karte mit diesem Namen existiert bereits. Bist du sicher, dass du sie überschreiben willst?
editor.selectmap = Wähle eine Karte zum Laden:
toolmode.replace = Replace
toolmode.replace.description = Draws only on solid blocks.
toolmode.replaceall = Replace All
toolmode.replaceall.description = Replace all blocks in map.
toolmode.orthogonal = Orthogonal
toolmode.orthogonal.description = Draws only orthogonal lines.
toolmode.square = Square
toolmode.square.description = Square brush.
toolmode.eraseores = Erase Ores
toolmode.eraseores.description = Erase only ores.
toolmode.replace = Ersetzen
toolmode.replace.description = Zeichnet nur auf festen Blöcken.
toolmode.replaceall = Alles Ersetzen
toolmode.replaceall.description = Alle Blöcke auf der Karte ersetzen.
toolmode.orthogonal = Rechtwinkelig
toolmode.orthogonal.description = Zeichnet nur rechtwinkelige Linien.
toolmode.square = Quadrat
toolmode.square.description = Quadrat Pinsel.
toolmode.eraseores = Erze löschen
toolmode.eraseores.description = Löscht nur Erze.
toolmode.fillteams = Fill Teams
toolmode.fillteams.description = Fill teams instead of blocks.
toolmode.drawteams = Draw Teams
toolmode.drawteams.description = Draw teams instead of blocks.
filters.empty = [LIGHT_GRAY]No filters! Add one with the button below.
filters.empty = [LIGHT_GRAY]Keine Filter! Füge einen mit dem unteren Knopf hinzu.
filter.distort = Distort
filter.noise = Noise
filter.median = Median
filter.blend = Blend
filter.defaultores = Default Ores
filter.defaultores = Standard Erze
filter.ore = Erz
filter.rivernoise = River Noise
filter.mirror = Mirror
filter.clear = Clear
filter.clear = Löschen
filter.option.ignore = Ignore
filter.scatter = Scatter
filter.terrain = Terrain
filter.option.scale = Scale
filter.option.chance = Chance
filter.option.chance = Wahrscheinlichkeit
filter.option.mag = Magnitude
filter.option.threshold = Threshold
filter.option.circle-scale = Circle Scale
@@ -293,7 +293,7 @@ width = Breite:
height = Höhe:
menu = Menü
play = Spielen
campaign = Campaign
campaign = Kampagne
load = Laden
save = Speichern
fps = FPS: {0}
@@ -383,14 +383,14 @@ no = Nein
info.title = [accent]Info
error.title = [crimson] Ein Fehler ist aufgetreten
error.crashtitle = Ein Fehler ist aufgetreten!
attackpvponly = [scarlet]Only available in Attack/PvP modes
attackpvponly = [scarlet]Nur in Angriff oder PvP Modus verfügbar.
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Kapazität
blocks.powershot = Stromverbrauch/Schuss
blocks.damage = Damage
blocks.damage = Schaden
blocks.targetsair = Visiert Luft Einheiten an
blocks.targetsground = Visiert Boden Einheiten an
blocks.itemsmoved = Bewegungsgeschwindigkeit
@@ -434,7 +434,7 @@ bullet.incendiary = [stat]entzündend
bullet.homing = [stat]verfolgend
bullet.shock = [stat]schock
bullet.frag = [stat]explosiv
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.knockback = [stat]{0}[lightgray] zurückstoßend
bullet.freezing = [stat]gefrierend
bullet.tarred = [stat]geteert
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier

View File

@@ -0,0 +1,955 @@
credits.text = [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] poolt loodud
credits = Tegijad
contributors = Tõlkijad ja panustajad
discord = Liituge Mindustry Discordi serveriga!
link.discord.description = Mindustry ametlik Discordi server
link.github.description = Github mängu koodiga
link.dev-builds.description = Selle mängu pooleli olevad versioonid
link.trello.description = Ametlik Trello leht plaanitud funktsioonide listiga
link.itch.io.description = itch.io leht selle mängu arvuti versioonidega
link.google-play.description = Mindustry Google play's
link.wiki.description = Ametlik Mindustry wiki
linkfail = Linki ebaõnnestus avada!\nAadress kopeeriti
screenshot = Kuvatõmme salvestati {0}
screenshot.invalid = Maailm liiga suur, tõenäoliselt pole piisavalt mälu salvestamiseks
gameover = Mäng Läbi
gameover.pvp = [accent] {0}[] tiim võitis!
highscore = [accent]Uus rekord!
stat.wave = Raund:[accent] {0}
stat.enemiesDestroyed = Vaenlasi hävitatud:[accent] {0}
stat.built = Ehitisi ehitatud:[accent] {0}
stat.destroyed = Ehitisi hävitatud:[accent] {0}
stat.deconstructed = Ehitisi lahtivõetud:[accent] {0}
stat.delivered = Materjale kaasa võetud:
stat.rank = Lõplik Hinne: [accent]{0}
placeline = Sa valisid ehitise\nSa saad[accent] panna neid sirges reas[] hoides näpuga all ja, siis viibates mõnes suunas.\n\n[scarlet] TEE SEDA
removearea = Sa valisid hävitamise funktsiooni.\nsa saad[accent] hävitada[]hoides oma sõrme all mõne sekundi ja, siis viibates mõnele poole.\n\n[scarlet]TEE SEDA
launcheditems = [accent]Kaasa võetud materjalid
map.delete = Kas oled kindel, et soovid kustutada "[accent]{0}[]".
level.highscore = Rekord: [accent]{0}
level.select = Taseme valik
level.mode = Mänguviisi valik:
showagain = Ära näita järgmine kord
coreattack = < TUUMA RÜNNATAKSE! >\nMAYDAY MAYDAY
nearpoint = [[ [scarlet]LAHKU VAENLASTE LANGEMISE ALALT VIIVITAMATA[] ]\npeatselt hävinemine
outofbounds = [[ PIIRIDEST VÄLJAS ]\n[]enese hävitamine {0}
database = Tuuma Andmebaas
savegame = Salvesta
loadgame = Lae Mäng
joingame = Liitu
addplayers = Lisa/Eemalda Mängijaid
customgame = Kohandatud Mäng
newgame = Uus Mäng
none = <puudub>
minimap = Kaart
close = Sule
quit = Lahku
maps = Maailmad
continue = Jätka
maps.none = [LIGHT_GRAY]Ühtegi maailma ei leitud!
about.button = Info
name = Nimi:
noname = Valige[accent] nimi[] kõigepealt.
filename = Faili Nimi:
unlocked = Said lahti uue sisu!
completed = [accent]Tehtud
techtree = Uurimuspuu
research.list = [LIGHT_GRAY]Uuring:
research = Uuri
researched = [LIGHT_GRAY]{0} uuritud.
players = {0} mängijat mängus
players.single = {0} mängija mängus
server.closing = [accent]Serveri sulgemine...
server.kicked.kick = Sind visati serverist välja!
server.kicked.serverClose = Server suletud.
server.kicked.clientOutdated = Aegunud versioon! Uuenda oma mängu!
server.kicked.serverOutdated = Aegunud server! Palu omanikul serverit uuendada!
server.kicked.banned = Sul on keeld seal mängida.
server.kicked.recentKick = Sind visati hiljuti välja.\nOota natuke enne uuesti proovimist.
server.kicked.nameInUse = Keegi sellise nimega\non juba seal serveris.
server.kicked.nameEmpty = Sinu valitud nimi ei sobi.
server.kicked.idInUse = Sa juba oled selles serveris! Kahe kasutajaga liitumine on keelatud.
server.kicked.customClient = See server ei luba modifitseeritud mängu versioone. Lae alla ametlik versioon.
server.kicked.gameover = Mäng läbi!
host.info = [accent]Hosti[] nupp avab serveri pordil [scarlet]6567[]. \nIgaüks samas [LIGHT_GRAY]wifis või kohtvõrgus[] peaks nägema sinu serverit enda serverite nimekirjas.\n\nKui sa tahad, et inimesed saaksid kõikjalt IP aadressi abil liituda, [accent]portide edasisuunamine[] on vajalik.\n\n[LIGHT_GRAY]Märkus: Kui kellelgi on probleeme sinu LAN-mänguga liitumisel, siis tee kindlaks, et sul on Mindustry lubatud oma kohtvõrgus tulemüüri seadetes.
join.info = Siin saad lisada [accent]serveri IP aadressi[] millega liituda, või leida [accent]kohtvõrgu[] servereid millega liituda.\nNii LAN kui ka WAN mitmikmängu toetatakse.\n\n[LIGHT_GRAY]Märkus: Ei ole olemas automaatset üldist serverite listi; kui sa tahad kellegagi liituda IP-aadressiga on sul vaja omaniku IP-aadressi.
hostserver = Hosti Mäng
hostserver.mobile = Hosti\nMäng
host = Hosti
hosting = [accent]Serveri avamine...
hosts.refresh = Värskenda
hosts.discovering = LAN mängude otsimine
server.refreshing = Serveri värskendamine
hosts.none = [lightgray]Kohalikke mänge ei leitud!
host.invalid = [scarlet]Serveriga ei saa ühendust.
trace = Jälita mängijat
trace.playername = Mängija nimi: [accent]{0}
trace.ip = IP: [accent]{0}
trace.id = Isiklik ID: [accent]{0}
trace.mobile = Telefoni Versioon: [accent]{0}
trace.modclient = Modifitseeritud: [accent]{0}
invalidid = Kehtetu kasutaja ID! Saada veateade.
server.bans = Keelatud mängijad
server.bans.none = Keelatud mängijaid ei leitud!
server.admins = Administraatorid
server.admins.none = Administraatoreid ei leitud!
server.add = Lisa Server
server.delete = Oled kindel, et soovid serveri kustutada?
server.hostname = Omanik: {0}
server.edit = Kohanda Serverit
server.outdated = [crimson]Aegunud Server![]
server.outdated.client = [crimson]Aegunud Versioon[]
server.version = [lightgray]Versioon: {0} {1}
server.custombuild = [yellow]Kohandatud Versioon
confirmban = Oled kindel, et soovid mängjale anda keelu siin mängida?
confirmkick = Oled kindel, et soovid mängijat välja visata?
confirmunban = Oled kindel, et soovid sellel mängijal siin uuesti lubada mängida?
confirmadmin = Oled kindel, et soovid mängijale adminstraatori õigused anda?
confirmunadmin = Oled kindel, et soovid mängijalt adminstraatori õigused ära võtta?
joingame.title = Liitu Mänguga
joingame.ip = Aadress:
disconnect = Lahti ühendatud.
disconnect.data = Ebaõnnestus maailma andmeid alla laadida!
connecting = [accent]Ühendamine...
connecting.data = [accent]Laen maailma andmeid alla...
server.port = Port:
server.addressinuse = Aadress on juba kasutuses!
server.invalidport = Kehtetu pordi number!
server.error = [crimson]Viga serverit käivitades: [accent]{0}
save.old = See salvestus on mõeldud mängu vanemale versioonile.\n\n[LIGHT_GRAY]Vanemate salvestuste kasutamist lisatakse kui mängu versioon täielik 4.0 välja tuleb.
save.new = Uus Salvestus
save.overwrite = Oled kindel, et soovid selle salvestuse asendada?
overwrite = Asenda
save.none = Salvestisi ei leitud!
saveload = [accent]Salvestamine...
savefail = Salvestamine ebaõnnestus!
save.delete.confirm = Oled kindel, et seda kustutada soovid??
save.delete = Kustuta
save.export = Ekspordi
save.import.invalid = [accent]See salvestus on kehtetu!
save.import.fail = [crimson]Ebaõnnestus salvestust importida: [accent]{0}
save.export.fail = [crimson]Ebaõnnestus salvestust eksportida: [accent]{0}
save.import = Impordi Salvestus
save.newslot = Salvestuse Nimi:
save.rename = Nimeta ümber
save.rename.text = Uus nimi:
selectslot = Vali salvestus.
slot = [accent]Koht {0}
save.corrupted = [accent]See salvestus on ära rikutud!\nKui sa just uuendasid mängu, siis on probleem tõenäoliselt kasutatavate salvestuste formaadi muutus ja [scarlet]mitte[] koodi viga.
empty = <tühi>
on = Sees
off = Väljas
save.autosave = Automaatne salvestamine: {0}
save.map = Maailm: {0}
save.wave = Raund {0}
save.difficulty = Raskusaste: {0}
save.date = Viimati Salvestatud: {0}
save.playtime = Mänguaeg: {0}
warning = Hoiatus.
confirm = Kinnita
delete = Kustuta
ok = OK
open = Ava
customize = Kohanda
cancel = Tühista
openlink = Ava Link
copylink = Kopeeri Link
back = Tagasi
quit.confirm = Oled kindel, et soovid lahkuda?
changelog.title = Muudatused
changelog.loading = Getting changelog...
changelog.error.android = [accent]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
changelog.error.ios = [accent]The changelog is currently not supported in iOS.
changelog.error = [scarlet]Error getting changelog!\nCheck your internet connection.
changelog.current = [yellow][[Current version]
changelog.latest = [accent][[Latest version]
loading = [accent]Laadimine...
saving = [accent]Salvestamine...
wave = [accent]Raund {0}
wave.waiting = [LIGHT_GRAY]Raund {0} sekundi pärast
wave.waveInProgress = [LIGHT_GRAY]Raund käib
waiting = [LIGHT_GRAY]Ootan...
waiting.players = Ootan mängijaid...
wave.enemies = [LIGHT_GRAY]{0} Vastast Alles
wave.enemy = [LIGHT_GRAY]{0} Vastane Alles
loadimage = Lae Pilt
saveimage = Salvesta Pilt
unknown = Tundmatu
custom = Custom
builtin = Sisseehitatud
map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone!
map.random = [accent]Random Map
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.
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] non-blue[] cores to this map in the editor.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
map.invalid = Error loading map: corrupted or invalid map file.
editor.brush = Brush
editor.openin = Open In Editor
editor.oregen = Ore Generation
editor.oregen.info = Ore Generation:
editor.mapinfo = Maailma Info
editor.author = Autor:
editor.description = Kirjeldus:
editor.waves = Raundid:
editor.rules = Rules:
editor.ingame = Edit In-Game
waves.title = Raundid
waves.remove = Eemalda
waves.never = <never>
waves.every = iga
waves.waves = Raund(id)
waves.perspawn = per spawn
waves.to = kuni
waves.boss = Boss
waves.preview = Preview
waves.edit = Muuda...
waves.copy = Copy to Clipboard
waves.load = Load from Clipboard
waves.invalid = Invalid waves in clipboard.
waves.copied = Raundid kopeeritud.
editor.default = [LIGHT_GRAY]<Default>
edit = Muuda...
editor.name = Nimi:
editor.spawn = Spawn Unit
editor.removeunit = Remove Unit
editor.teams = Tiimid
editor.elevation = Elevation
editor.errorload = Error loading file:\n[accent]{0}
editor.errorsave = Error saving file:\n[accent]{0}
editor.errorimage = That's an image, not a map. Don't go around changing extensions expecting it to work.\n\nIf you want to import a legacy map, use the 'import legacy map' button in the editor.
editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported.
editor.errorheader = This map file is either not valid or corrupt.
editor.errorname = Maailma nime pole täpsustatud.
editor.update = Uuenda
editor.randomize = Randomize
editor.apply = Apply
editor.generate = Genereeri
editor.resize = Resize
editor.loadmap = Lae Maailm
editor.savemap = Salvesta maailm
editor.saved = Salvestatud!
editor.save.noname = Your map does not have a name! Set one in the 'map info' menu.
editor.save.overwrite = Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
editor.import.exists = [scarlet]Unable to import:[] a built-in map named '{0}' already exists!
editor.import = Impordi...
editor.importmap = Impordi Maailm
editor.importmap.description = Import an already existing map
editor.importfile = Impordi Fail
editor.importfile.description = Import an external map file
editor.importimage = Import Legacy Image
editor.importimage.description = Import an external map image file
editor.export = Ekspordi...
editor.exportfile = Ekspordi Fail
editor.exportfile.description = Ekspordi maailma fail
editor.exportimage = Export Terrain Image
editor.exportimage.description = Export a map image file
editor.loadimage = Import Terrain
editor.saveimage = Export Terrain
editor.unsaved = [scarlet]You have unsaved changes![]\nAre you sure you want to exit?
editor.resizemap = Resize Map
editor.mapname = Map Name:
editor.overwrite = [accent]Warning!\nThis overwrites an existing map.
editor.overwrite.confirm = [scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
editor.selectmap = Select a map to load:
filters.empty = [LIGHT_GRAY]No filters! Add one with the button below.
filter.distort = Distort
filter.noise = Noise
filter.ore = Maak
filter.rivernoise = River Noise
filter.scatter = Scatter
filter.terrain = Terrain
filter.option.scale = Scale
filter.option.chance = Chance
filter.option.mag = Magnitude
filter.option.threshold = Threshold
filter.option.circle-scale = Circle Scale
filter.option.octaves = Octaves
filter.option.falloff = Falloff
filter.option.block = Plokk
filter.option.floor = Põrand
filter.option.wall = Sein
filter.option.ore = Maak
filter.option.floor2 = Teine Korrus
filter.option.threshold2 = Secondary Threshold
width = Laius:
height = Kõrgus:
menu = Menüü
play = Mängi
load = Lae
save = Salvesta
fps = FPS: {0}
tps = TPS: {0}
ping = Ping: {0}ms
language.restart = Please restart your game for the language settings to take effect.
settings = Sätted
tutorial = Õpetus
editor = Editor
mapeditor = Map Editor
donate = Anneta
abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy.
locked = Locked
complete = [LIGHT_GRAY]Reach:
zone.requirement = Wave {0} in zone {1}
resume = Resume Zone:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Best Wave: {0}
launch = < LAUNCH >
launch.title = Launch Successful
launch.next = [LIGHT_GRAY]next opportunity at wave {0}
launch.unable = [scarlet]Unable to LAUNCH.[] {0} Enemies.
launch.confirm = This will launch all resources in your core.\nYou will not be able to return to this base.
uncover = Uncover
configure = Configure Loadout
configure.locked = [LIGHT_GRAY]Unlock configuring loadout: Wave {0}.
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
zone.resources = Resources Detected:
add = Lisa...
boss.health = Bossi Elud
connectfail = [crimson]Failed to connect to server:\n\n[accent]{0}
error.unreachable = Server unreachable.\nIs the address spelled correctly?
error.invalidaddress = Invalid address.
error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct!
error.mismatch = Packet error:\npossible client/server version mismatch.\nMake sure you and the host have the latest version of Mindustry!
error.alreadyconnected = Already connected.
error.mapnotfound = Map file not found!
error.io = Network I/O error.
error.any = Unknown network error.
zone.groundZero.name = Ground Zero
zone.desertWastes.name = Desert Wastes
zone.craters.name = The Craters
zone.frozenForest.name = Frozen Forest
zone.ruinousShores.name = Ruinous Shores
zone.stainedMountains.name = Stained Mountains
zone.desolateRift.name = Desolate Rift
zone.nuclearComplex.name = Nuclear Production Complex
zone.overgrowth.name = Overgrowth
zone.tarFields.name = Tar Fields
settings.language = Keel
settings.reset = Reset to Defaults
settings.rebind = Rebind
settings.controls = Controls
settings.game = Mäng
settings.sound = Heli
settings.graphics = Graphics
settings.cleardata = Clear Game Data...
settings.clear.confirm = Are you sure you want to clear this data?\nWhat is done cannot be undone!
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.
settings.clearunlocks = Clear Unlocks
settings.clearall = Clear All
paused = [accent]< Paused >
yes =Jah
no = Ei
info.title = Info
error.title = [crimson]An error has occured
error.crashtitle = An error has occured
blocks.input = Sisend
blocks.output = Väljund
blocks.booster = Booster
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Power Capacity
blocks.powershot = Power/Shot
blocks.targetsair = Targets Air
blocks.targetsground = Targets Ground
blocks.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches
blocks.shootrange = Range
blocks.size = Suurus
blocks.liquidcapacity = Liquid Capacity
blocks.powerrange = Energia Ulatus
blocks.poweruse = Energia Kasutus
blocks.powerdamage = Power/Damage
blocks.itemcapacity = Item Capacity
blocks.basepowergeneration = Base Power Generation
blocks.productiontime = Production Time
blocks.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase
blocks.range = Ulatus
blocks.drilltier = Drillables
blocks.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect
blocks.maxunits = Max Active Units
blocks.health = Health
blocks.buildtime = Build Time
blocks.inaccuracy = Inaccuracy
blocks.shots = Shots
blocks.reload = Shots/Second
blocks.ammo = Laskemoon
bar.drillspeed = Drill Speed: {0}/s
bar.efficiency = Efficiency: {0}%
bar.powerbalance = Power: {0}/s
bar.poweramount = Power: {0}
bar.poweroutput = Power Output: {0}
bar.items = Items: {0}
bar.liquid = Vedelik
bar.heat = Kuumus
bar.power = Energia
bar.progress = Build Progress
bar.spawned = Units: {0}/{1}
bullet.damage = [stat]{0}[lightgray] damage
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
bullet.incendiary = [stat]incendiary
bullet.homing = [stat]homing
bullet.shock = [stat]shock
bullet.frag = [stat]frag
bullet.knockback = [stat]{0}[lightgray] knockback
bullet.freezing = [stat]freezing
bullet.tarred = [stat]tarred
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
bullet.reload = [stat]{0}[lightgray]x fire rate
unit.blocks = blocks
unit.powersecond = power units/second
unit.liquidsecond = liquid units/second
unit.itemssecond = items/second
unit.liquidunits = liquid units
unit.powerunits = power units
unit.degrees = degrees
unit.seconds = sek
unit.persecond = /s
unit.timesspeed = x kiirus
unit.percent = %
unit.items = asjad
category.general = Üldine
category.power = Energia
category.liquids = Vedelikud
category.items = Asjad
category.crafting = Sisend/Väljund
category.shooting = Tulistamine
category.optional = Optional Enhancements
setting.landscape.name = Lock Landscape
setting.shadows.name = Varjud
setting.animatedwater.name = Animeeritud Vesi
setting.animatedshields.name = Animeeritud Kilbid
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
setting.indicators.name = Enemy/Ally Indicators
setting.autotarget.name = Auto-Target
setting.fpscap.name = Max FPS
setting.fpscap.none = None
setting.fpscap.text = {0} FPS
setting.swapdiagonal.name = Always Diagonal Placement
setting.difficulty.training = Treening
setting.difficulty.easy = Lihtne
setting.difficulty.normal = Normaalne
setting.difficulty.hard = Raske
setting.difficulty.insane = Insane
setting.difficulty.name = Difficulty:
setting.screenshake.name = Screen Shake
setting.effects.name = Display Effects
setting.sensitivity.name = Controller Sensitivity
setting.saveinterval.name = Save Interval
setting.seconds = {0} Sekundit
setting.fullscreen.name = Täisekraan
setting.borderlesswindow.name = Borderless Window[LIGHT_GRAY] (may require restart)
setting.fps.name = Show FPS
setting.vsync.name = VSync
setting.lasers.name = Näita Energia Lasereid
setting.pixelate.name = Pixelate[LIGHT_GRAY] (disables animations)
setting.minimap.name = Näita Kaarti
setting.musicvol.name = Heli tase
setting.mutemusic.name = Vaigista muusika
setting.sfxvol.name = SFX Volume
setting.mutesound.name = Mute Sound
setting.crashreport.name = Send Anonymous Crash Reports
setting.chatopacity.name = Chat Opacity
setting.playerchat.name = Display In-Game Chat
keybind.title = Rebind Keys
category.general.name = General
category.view.name = View
category.multiplayer.name = Multiplayer
command.attack = Ründa
command.retreat = Põgene
command.patrol = Patrol
keybind.gridMode.name = Block Select
keybind.gridModeShift.name = Category Select
keybind.press = Vajuta klahvi...
keybind.press.axis = Press an axis or key...
keybind.screenshot.name = Map Screenshot
keybind.move_x.name = Move x
keybind.move_y.name = Move y
keybind.select.name = Select/Shoot
keybind.diagonal_placement.name = Diagonal Placement
keybind.pick.name = Pick Block
keybind.break_block.name = Break Block
keybind.deselect.name = Deselect
keybind.shoot.name = Shoot
keybind.zoom_hold.name = Zoom Hold
keybind.zoom.name = Zoom
keybind.menu.name = Menüü
keybind.pause.name = Paus
keybind.minimap.name = Minimap
keybind.dash.name = Dash
keybind.chat.name = Chat
keybind.player_list.name = Player list
keybind.console.name = Console
keybind.rotate.name = Rotate
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
mode.help.title = Description of modes
mode.survival.name = Survival
mode.survival.description = The normal mode. Limited resources and automatic incoming waves.
mode.sandbox.name = Liivakast
mode.sandbox.description = Infinite resources and no timer for waves.
mode.pvp.name = PvP
mode.pvp.description = Fight against other players locally.
mode.attack.name = Attack
mode.attack.description = Destroy the enemy's base. No waves.
mode.custom = Kohandatud Reeglid
rules.infiniteresources = Infinite Resources
rules.wavetimer = Wave Timer
rules.waves = Raundi
rules.enemyCheat = Infinite AI (Red Team) Resources
rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
rules.playerhealthmultiplier = Player Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.unitdamagemultiplier = Unit Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier
rules.waitForWaveToEnd = Waves wait for enemies
rules.dropzoneradius = Drop Zone Radius:[LIGHT_GRAY] (tiles)
rules.respawns = Max respawns per wave
rules.limitedRespawns = Limit Respawns
rules.title.waves = Raundid
rules.title.respawns = Respawns
rules.title.resourcesbuilding = Resources & Building
rules.title.player = Mängijad
rules.title.enemy = Vastased
rules.title.unit = Units
content.item.name = Asjad
content.liquid.name = Vedelikud
content.unit.name = Units
content.block.name = Plokid
content.mech.name = Mechs
item.copper.name = Vask
item.copper.description = A useful structure material. Used extensively in all types of blocks.
item.lead.name = Plii
item.lead.description = A basic starter material. Used extensively in electronics and liquid transportation blocks.
item.coal.name = Süsi
item.coal.description = A common and readily available fuel.
item.graphite.name = Grafiit
item.titanium.name = Titaanium
item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft.
item.thorium.name = Toorium
item.thorium.description = A dense, radioactive metal used as structural support and nuclear fuel.
item.silicon.name = Silikoon
item.silicon.description = An extremely useful semiconductor, with applications in solar panels and many complex electronics.
item.plastanium.name = Plastaanium
item.plastanium.description = A light, ductile material used in advanced aircraft and fragmentation ammunition.
item.phase-fabric.name = Faasriie
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.spore-pod.name = Spore Pod
item.spore-pod.description = Used for conversion into oil, explosives and fuel.
item.sand.name = Liiv
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.metaglass.name = Metaglass
item.metaglass.description = A super-tough glass compound. Extensively used for liquid distribution and storage.
item.scrap.name = Scrap
item.scrap.description = Leftover remnants of old structures and units. Contains trace amounts of many different metals.
liquid.water.name = Vesi
liquid.slag.name = Slag
liquid.oil.name = Nafta
liquid.cryofluid.name = Cryofluid
mech.alpha-mech.name = Alpha
mech.alpha-mech.weapon = Heavy Repeater
mech.alpha-mech.ability = Regeneration
mech.alpha-mech.description = The standard mech. Has decent speed and damage output.
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 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
item.explosiveness = [LIGHT_GRAY]Explosiveness: {0}%
item.flammability = [LIGHT_GRAY]Flammability: {0}%
item.radioactivity = [LIGHT_GRAY]Radioactivity: {0}%
unit.health = [LIGHT_GRAY]Health: {0}
unit.speed = [LIGHT_GRAY]Speed: {0}
mech.weapon = [LIGHT_GRAY]Weapon: {0}
mech.health = [LIGHT_GRAY]Health: {0}
mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0}
mech.minespeed = [LIGHT_GRAY]Mining Speed: {0}%
mech.minepower = [LIGHT_GRAY]Mining Power: {0}
mech.ability = [LIGHT_GRAY]Ability: {0}
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
liquid.temperature = [LIGHT_GRAY]Temperature: {0}
block.grass.name = Grass
block.salt.name = Salt
block.saltrocks.name = Salt Rocks
block.pebbles.name = Pebbles
block.tendrils.name = Tendrils
block.sandrocks.name = Sand Rocks
block.spore-pine.name = Spore Pine
block.sporerocks.name = Spore Rocks
block.rock.name = Kivi
block.snowrock.name = Lumekivi
block.shale.name = Shale
block.shale-boulder.name = Shale Boulder
block.moss.name = Moss
block.shrubs.name = Shrubs
block.spore-moss.name = Spore Moss
block.shalerocks.name = Shale Rocks
block.scrap-wall.name = Scrap Wall
block.scrap-wall-large.name = Large Scrap Wall
block.scrap-wall-huge.name = Huge Scrap Wall
block.scrap-wall-gigantic.name = Gigantic Scrap Wall
block.thruster.name = Thruster
block.kiln.name = Kiln
block.kiln.description = Smelts sand and lead into metaglass. Requires small amounts of power.
block.graphite-press.name = Graphite Press
block.multi-press.name = Multi-Press
block.constructing = {0} [LIGHT_GRAY](Constructing)
block.spawn.name = Enemy Spawn
block.core-shard.name = Core: Shard
block.core-foundation.name = Core: Foundation
block.core-nucleus.name = Core: Nucleus
block.deepwater.name = Deep Water
block.water.name = Water
block.tainted-water.name = Tainted Water
block.darksand-tainted-water.name = Dark Sand Tainted Water
block.tar.name = Tar
block.stone.name = Stone
block.sand.name = Sand
block.darksand.name = Dark Sand
block.ice.name = Ice
block.snow.name = Snow
block.craters.name = Craters
block.sand-water.name = Sand water
block.darksand-water.name = Dark Sand Water
block.char.name = Char
block.holostone.name = Holo stone
block.ice-snow.name = Ice Snow
block.rocks.name = Rocks
block.icerocks.name = Ice rocks
block.snowrocks.name = Snow Rocks
block.dunerocks.name = Dune Rocks
block.pine.name = Pine
block.white-tree-dead.name = White Tree Dead
block.white-tree.name = White Tree
block.spore-cluster.name = Spore Cluster
block.metal-floor.name = Metal Floor 1
block.metal-floor-2.name = Metal Floor 2
block.metal-floor-3.name = Metal Floor 3
block.metal-floor-5.name = Metal Floor 4
block.metal-floor-damaged.name = Metal Floor Damaged
block.dark-panel-1.name = Dark Panel 1
block.dark-panel-2.name = Dark Panel 2
block.dark-panel-3.name = Dark Panel 3
block.dark-panel-4.name = Dark Panel 4
block.dark-panel-5.name = Dark Panel 5
block.dark-panel-6.name = Dark Panel 6
block.dark-metal.name = Dark Metal
block.ignarock.name = Igna Rock
block.hotrock.name = Hot Rock
block.magmarock.name = Magma Rock
block.cliffs.name = Cliffs
block.copper-wall.name = Copper Wall
block.copper-wall-large.name = Large Copper Wall
block.titanium-wall.name = Titanium Wall
block.titanium-wall-large.name = Large Titanium 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
block.door.name = Door
block.door-large.name = Large Door
block.duo.name = Duo
block.scorch.name = Scorch
block.scatter.name = Scatter
block.hail.name = Hail
block.lancer.name = Lancer
block.conveyor.name = Conveyor
block.titanium-conveyor.name = Titanium Conveyor
block.junction.name = Junction
block.router.name = Router
block.distributor.name = Distributor
block.sorter.name = Sorter
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.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.spore-press.name = Spore Press
block.separator.name = Separator
block.coal-centrifuge.name = Coal Centrifuge
block.power-node.name = Power Node
block.power-node-large.name = Large Power Node
block.surge-tower.name = Surge Tower
block.battery.name = Battery
block.battery-large.name = Large Battery
block.combustion-generator.name = Combustion Generator
block.turbine-generator.name = Turbine Generator
block.differential-generator.name = Differential Generator
block.impact-reactor.name = Impact Reactor
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.dart-mech-pad.name = Alpha Mech 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.conduit.name = Conduit
block.mechanical-pump.name = Mechanical Pump
block.item-source.name = Item Source
block.item-void.name = Item Void
block.liquid-source.name = Liquid Source
block.power-void.name = Power Void
block.power-source.name = Power Infinite
block.unloader.name = Unloader
block.vault.name = Vault
block.wave.name = Laine
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.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.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.crawler-factory.name = Crawler 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.mass-driver.name = Mass Driver
block.blast-drill.name = Airblast Drill
block.thermal-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
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.launch-pad.name = Launch Pad
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
block.launch-pad-large.name = Large Launch Pad
team.blue.name = sinine
team.red.name = punane
team.orange.name = oranž
team.none.name = hall
team.green.name = roheline
team.purple.name = lilla
unit.spirit.name = Spirit Drone
unit.spirit.description = The starter drone unit. Spawns in the core by default. Automatically mines ores and repairs blocks.
unit.phantom.name = Phantom Drone
unit.phantom.description = An advanced drone unit. Automatically mines ores and repairs blocks. Significantly more effective than a spirit drone.
unit.dagger.name = Dagger
unit.dagger.description = A basic ground unit. Useful in swarms.
unit.crawler.name = Crawler
unit.titan.name = Titan
unit.titan.description = An advanced, armored ground unit. Attacks both ground and air targets.
unit.ghoul.name = Ghoul Bomber
unit.ghoul.description = A heavy carpet bomber.
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.eruptor.name = Eruptor
unit.chaos-array.name = Chaos Array
unit.eradicator.name = Eradicator
unit.lich.name = Lich
unit.reaper.name = Reaper
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.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 blocks 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. Useful against ground units.
block.scatter.description = A medium-sized anti-air turret. Sprays clumps of lead or scrap flak at enemy units.
block.arc.description = A small close-range 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. Moves 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.silicon-smelter.description = Reduces sand with highly pure coal 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 scrap 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.melter.description = Melts down scrap into slag for further processing or usage in turrets.
block.incinerator.description = Gets rid of any excess item or liquid.
block.spore-press.description = Compresses spore pods into oil.
block.separator.description = Extracts useful minerals from slag.
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 power when placed in hot locations.
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. Power output depends on fullness, with base power generated at full capacity.
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 of each type. An[LIGHT_GRAY] unloader[] can be used to retrieve items from the container.
block.vault.description = Stores a large amount of items of each type. 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 tiny concentrations of spores into industry-ready pods.
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.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 air units.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
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 = Hoiustab suure hulga vedelikke. 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 = Töötab kui sild kahele ristuvale torule. Kasulik situatsioonides kui kaks erinevat toru viivad kahte erinevat vedelikku eri kohtadesse.
block.bridge-conduit.description = Arenenud vedeliku transport. Lubab transportida vedelikke üle iga pinnase ja ehitise 3 ruudu kaugusele.
block.mechanical-pump.description = Odav ja aeglane pump, mis ei vaja elektrit.
block.rotary-pump.description = Kahekordistab kiiruse kasutades elektrit.
block.thermal-pump.description = Ülim pump.
block.router.description = Võtab vastu materjale ühest suunast ja annab neid võrdselt välja kolmes suunas. Kasulik ühest allikast tulevate materjalide jagamisel mitmeks.
block.distributor.description = Arenenud jagaja, mis jagab materjale kuni 7 suunas.
block.bridge-conveyor.description = Arenenud transpordi ehitis. Lubab transportida materjale üle iga pinnase ja ehitise 3 ruudu kaugusele.
block.item-source.description = Annab välja lõpmatult materjale. Ainult liivakastis.
block.liquid-source.description = Annab välja lõpmatult vedelikke. Ainult liivakastis.
block.item-void.description = Hävitab kõik materjalid, mis sinna lähevad elektrit kasutamata. Ainult liivakastis.
block.power-source.description = Annab välja lõpmatult elektrit. Ainult liivakastis.
block.power-void.description = Hävitab kõik materjalid, mis sinna lähevad. Ainult liivakastis.
liquid.water.description = Sageli kasutatud jahutamiseks ja jäätme töötluseks.
liquid.oil.description = Seda saab põleteda, õhku lasta või kasutada jahutamiseks.
liquid.cryofluid.description = Kõige efektiivsem vedelik asjade maha jahutamiseks.

View File

@@ -75,7 +75,7 @@ server.kicked.idInUse = 이미 서버에 접속중입니다! 다중 계정은
server.kicked.customClient = 이 서버는 직접 빌드한 버전을 지원하지 않습니다. 공식 버전을 사용하세요.
server.kicked.gameover = 코어가 파괴되었습니다...
host.info = [accent]호스트[] 버튼은 현재 네트워크의 [scarlet]6567[] 포트를 사용합니다.\n[LIGHT_GRAY]같은 Wi-Fi 또는 로컬 네트워크[] 에서 서버 목록을 볼 수 있습니다.\n\n만약 플레이어들이 이 IP를 통해 어디에서나 연결할 수 있게 하고 싶다면, 공유기 설정에서 [accent]포트 포워딩[]을 하시거나 Vpn을 사용하셔야 합니다.\n\n[LIGHT_GRAY]참고: LAN 게임 연결에 문제가 있는 사람이 있다면, 방화벽 설정에서 Mindustry 가 로컬 네트워크에 액세스하도록 허용했는지 확인 해 주세요.
join.info = 여기서 [accent]서버 IP[]를 입력하여 다른 서버에 접속할 수 있습니다.\n또는 [accent]로컬 네트워크(LAN)[] 서버를 검색하여 접속할 수 있습니다.\nLAN 및 WAN 멀티 플레이어 모두 지원됩니다.\n\n[LIGHT_GRAY]참고:여기에서는 자동으로 글로벌 서버를 추가하지 않습니다. IP로 다른 사람의 서버에 접속할려면 서버장에게 IP를 요청해야 합니다.
join.info = 여기서 [accent]서버 IP[]를 입력하여 다른 서버에 접속할 수 있습니다.\n또는 [accent]로컬 네트워크(LAN)[] 서버를 검색하여 접속할 수 있습니다.\nLAN 및 WAN 멀티 플레이어 모두 지원됩니다.\n\n[LIGHT_GRAY]참고:여기에서는 자동으로 글로벌 서버를 추가하지 않습니다. IP로 다른 사람의 서버에 접속할려면 서버장에게 IP를 요청해야 합니다.[]\n\n[ROYAL]한국의 공식 서버로는 mindustry.kr의 7000,7001,7002포트와 server1.mindustry.r-e.kr의 8000,8001,8002,8004포트가 있습니다.\n서버 주소 입력방법은 < 주소:포트 >의 형식입니다.
hostserver = 서버 열기
hostserver.mobile = 서버\n열기
host = 서버 열기
@@ -157,7 +157,10 @@ cancel = 취소
openlink = 링크 열기
copylink = 링크 복사
back = 뒤로가기
classic.export = 클래식 데이터 추출
classic.export.text = Mindustry 클래식 (v3.5 build 40)의 세이브파일 또는 맵 데이터가 발견되었습니다. 이 것들을 Mindustry 클래식 앱에서 사용하기 위해 홈 폴더로 추출할까요?
quit.confirm = 정말로 종료하시겠습니까?
quit.confirm.tutorial = 튜토리얼을 종료하시겠습니까?\n튜토리얼은 [accent]설정 -> 게임 -> 튜토리얼[]에서 다시 해보실 수 있습니다.
loading = [accent]불러오는중...
saving = [accent]저장중...
wave = [accent]웨이브 {0}
@@ -189,6 +192,7 @@ editor.waves = 웨이브:
editor.rules = 규칙:
editor.generation = 맵 생성 설정:
editor.ingame = 인게임 편집
editor.newmap = 신규 맵
waves.title = 웨이브
waves.remove = 삭제
waves.never = 여기까지 유닛생성
@@ -210,10 +214,9 @@ editor.name = 이름:
editor.spawn = 유닛 생성
editor.removeunit = 유닛 삭제
editor.teams =
editor.elevation = 지형 높이
editor.errorload = [accent]{0} 파일을 불러오는데 실패했습니다.
editor.errorsave = [accent]{0} 파일을 저장하는데 실패했습니다.
editor.errorimage = 이것은 맵이 아니라 사진입니다. 확장자를 바꿔서 시도할 생각하지 마세요.\n\n예전 맵을 가져올려면 편집기의 '예전 맵 가져오기' 버튼을 사용하세요.
editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n예전 맵을 가져올려면 편집기의 '예전 맵 가져오기' 버튼을 사용하세요.
editor.errorlegacy = 이 맵은 너무 오래되어, 더이상 지원하지 않는 맵 형식을 사용합니다.
editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다.
editor.errorname = 맵에 이름이 지정되어 있지 않습니다.
@@ -309,6 +312,7 @@ ping = Ping: {0}ms
language.restart = 언어를 변경하려면 게임을 다시시작 해 주세요.
settings = 설정
tutorial = 게임 방법
tutorial.retake = 튜토리얼
editor = 편집기
mapeditor = 맵 편집기
donate = 기부
@@ -323,8 +327,9 @@ bestwave = [LIGHT_GRAY]최고 점수: {0}
launch = < 출격 >
launch.title = 출격 성공
launch.next = [LIGHT_GRAY]다음 출격기회는 {0} 단계에서 나타납니다.
launch.unable = [scarlet]출격할 수 없습니다.[] {0}마리 남음.
launch.unable2 = [scarlet]출격할 수 없습니다.[] {0}마리 남음.
launch.confirm = 출격하게 되면 모든 자원이 코어로 들어갑니다.\n또한 성공하기 전까지 기지로 돌아갈 수 없습니다.
launch.skip.confirm = 만약 지금 출격하시지 않고 스킵하신다면, 다음 출격 웨이브까지 기다려야 합니다.
uncover = 구역 개방
configure = 코어 시작자원 설정
configure.locked = {0} 단계에서 시작자원 설정 잠금이 해제됩니다.
@@ -366,7 +371,7 @@ zone.fungalPass.name = 포자 지대
zone.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지닌 장소입니다. 적은 수준의 위협이 있으며 자원의 양은 적습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n출격합시다!
zone.frozenForest.description = 이 지역도 산과 가까운 지역입니다 포자들이 흩뿌려져 있으며 극한의 추위도 포자룰 막을 수 있을거 같지 않습니다.\n전력을 통해서 모험을 시작하십시오 화력 발전소를 짓고 수리드론을 사용하는 법을 배우십시오.
zone.desertWastes.description = 이 황무지는 끝을 알수 없을 정도로 광활합니다 그리고 십자가 형태의 버려진 구조물이 존재합니다.\n석탄이 존재하며 이를 화력발전에 쓰거나 흑연정제에 쓰십시오.\n\n[LOYAL]이 지역에서의 착륙장소는 확실하지 않습니다.
zone.desertWastes.description = 이 황무지는 끝을 알수 없을 정도로 광활합니다 그리고 십자가 형태의 버려진 구조물이 존재합니다.\n석탄이 존재하며 이를 화력발전에 쓰거나 흑연정제에 쓰십시오.\n\n[lightgray]이 지역에서의 착륙장소는 확실하지 않습니다.
zone.saltFlats.description = 이 소금 사막은 매우 척박하여 자원이 거의 없습니다.\n하지만 자원이 희소한 이곳에서도 적들의 요새가 발견되었습니다.그들을 사막의 모래로 만들어버리십시오.
zone.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 다시 점령해 강화유리를 제작하고 물을 끌어올려 포탑과 드릴에 공급하여 더 좋은 효율로 방어선을 강화하십시오.
zone.ruinousShores.description = 이 지역은 과거 해안방어기지로 사용되었습니다.\n그러나 지금은 기본구조물만 남아있으니 이 지역을 어서 신속히 수리하여 외부로 세력을 확장한뒤 잃어버린 기술을 다시 회수하십시오.
@@ -423,7 +428,6 @@ blocks.speedincrease = 속도 증가
blocks.range = 사거리
blocks.drilltier = 드릴
blocks.drillspeed = 기본 드릴 속도
blocks.drilltierreq = 더 높은 티어의 드릴이 요구됨.
blocks.boosteffect = 가속 효과
blocks.maxunits = 최대 활성유닛
blocks.health = 체력
@@ -433,6 +437,7 @@ blocks.shots = 발포 횟수
blocks.reload = 재장전
blocks.ammo = 탄약
bar.drilltierreq = 드릴이 요구됨
bar.drillspeed = 채광 속도 : {0}/s
bar.efficiency = 효율성 : {0}%
bar.powerbalance = 전력 : {0}/s
@@ -677,7 +682,7 @@ block.scrap-wall.name = 조각벽
block.scrap-wall-large.name = 큰 조각벽
block.scrap-wall-huge.name = 거대한 조각 벽
block.scrap-wall-gigantic.name = 엄청나게 큰 조각 벽
block.thruster.name = 반동
block.thruster.name = 쓰러스터
block.kiln.name = 가마
block.graphite-press.name = 흑연 압축기
block.multi-press.name = 다중 압축기
@@ -724,14 +729,14 @@ block.dark-panel-6.name = 어두운 패널 6
block.dark-metal.name = 어두운 금속제
block.ignarock.name = 얼은 바위
block.hotrock.name = 뜨거운 바위
block.magmarock.name = 마그마 바위
block.magmarock.name = 용암 바위
block.cliffs.name = 절벽
block.copper-wall.name = 구리 벽
block.copper-wall-large.name = 대형 구리 벽
block.titanium-wall.name = 티타늄 벽
block.titanium-wall-large.name = 대형 티타늄 벽
block.phase-wall.name = 위상 벽
block.phase-wall-large.name = 대형 메타
block.phase-wall-large.name = 대형 위상
block.thorium-wall.name = 토륨 벽
block.thorium-wall-large.name = 대형 토륨 벽
block.door.name =
@@ -846,9 +851,9 @@ team.orange.name = 주황색 팀
team.derelict.name = 버려진 팀
team.green.name = 초록색 팀
team.purple.name = 보라색 팀
unit.spirit.name = 정령 수리 드론
unit.draug.name = 영혼 채광
unit.phantom.name = 환영 건설 드론
unit.spirit.name = 스피릿 수리 드론
unit.draug.name = 드라우그 채광 드론
unit.phantom.name = 팬텀 건설 드론
unit.dagger.name = 디거
unit.crawler.name = 자폭자
unit.titan.name = 타이탄
@@ -861,27 +866,27 @@ unit.chaos-array.name = 혼돈 배열
unit.eradicator.name = 박멸
unit.lich.name = 리치
unit.reaper.name = 사신
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당신의 부대와 디거를 사용하여 파괴하세요.
tutorial.next = [lightgray]< 이 곳을 터치해 진행하세요. >
tutorial.intro = Mindustry 튜토리얼을 시작하겠습니다. 튜토리얼은 [accent]모바일은 뒤로가기, 데스크탑은 esc버튼[]을 누르고 [accent]나가기 버튼[]을 눌러 종료가 가능합니다.\n[accent]구리[]를 18개 채광하세요. 코어 주위에 있는 주황색의 구리 광물을 터치함으로써 구리를 채광할 수 있습니다.\n\n[accent]현재 모은 구리의 개수 : {0}/{1} 개[]
tutorial.drill = 수동으로 채광하는 것은 효율이 낮습니다.\n[accent]드릴[]은 자동으로 드릴 바로아래에 있는 광물들을 채광합니다.\n드릴 카테고리의 기계식 드릴을 선택하여 구리 광맥위에 설치하세요.\n마우스 오른쪽 버튼으로 취소가 가능합니다.
tutorial.drill.mobile = 수동으로 채광하는 것은 효율이 낮습니다.\n[accent]드릴[]은 자동으로 드릴 바로아래에 있는 광물들을 채광합니다.\n드릴 카테고리의 기계식 드릴을 선택하여 구리 광맥위에 설치하세요.\n취소 버튼을 눌러 건축하기 전의 설계를 취소할 수 있습니다.
tutorial.blockinfo = 블록들은 각각 능력이 다르며, 하위 티어의 드릴은 채광할 수 있는 광물의 종류가 적습니다.\n블럭의 정보를 확인하기 위해서는,[accent] 카테고리의 블럭을 누른 후, "?"버튼을 클릭하여 블럭의 정보를 확인하세요.[]\n[royal]궁금한 블럭의 정보를 아무거나 한 번 확인해보세요.
tutorial.conveyor = [accent]컨베이어[]는 붙어 있는 곳에서 받는 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.\n[accent]컨베이어를 클릭 후 건설을 시작하려는 지점을 마우스 왼쪽 버튼으로 꾸욱 누른 뒤[] 드래그하여 설계하세요.\n\n컨베이어 건설 수[accent]{0}/{1}\n[accent]광물을 코어로 운반하세요.
tutorial.conveyor.mobile = [accent]컨베이어[]는 붙어 있는 곳에서 받는 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.\n[accent]컨베이어를 화면에 1초정도 클릭하여 작은 노란색 원이 잠깐 나타났다 사라질 때까지 기다리신 후[] 드래그하여 설계하세요.\n\n컨베이어 건설 수[accent]{0}/{1}\n[accent]광물을 코어로 운반하세요.
tutorial.turret = 방어 구조물은 [LIGHT_GRAY]적[]을 물리치기 위해 반드시 필요합니다.\n포탑 카테고리의 듀오 포탑을 선택하신 후, 기지 근처에 듀오 포탑을 설치하세요.
tutorial.drillturret = 듀오 포탑이 공격하기 위해서는[accent] 구리 탄약[]을 필요로 합니다.\n포탑 근처의 구리 광맥에 드릴을 설치하고 컨베이어로 포탑과 이어서 포탑에 구리를 공급하세요.\n또는 직접 코어에서 광물을 꺼내 포탑에 넣을 있습니다.
tutorial.pause = 싱글 플래이에서는 게임을 [accent]일시정지[]할 수 있습니다.\n일시정지하면 교전과 더불어 건설까지 일시정지됩니다.\n\n[accent]스페이스 버튼[]을 눌러 일시정지하세요.
tutorial.pause.mobile = 싱글 플래이에서는 게임을 [accent]일시정지[]할 수 있습니다.\n일시정지하면 교전과 더불어 건설까지 일시정지됩니다.\n\n[accent]일시정지 버튼[]을 눌러 일시정지하세요.
tutorial.unpause = 게임을 진행하기 위해 [accent]스페이스 버튼[]을 다시 누르세요.
tutorial.unpause.mobile = 게임을 진행하기 위해 같은 위치의 버튼을 다시 누르세요.
tutorial.breaking = 설계를 방해하는 블록을 제거하기 위해서 [accent]첫 번째 지점을 마우스 오른쪽 버튼[]으로 누른 뒤 드래그하여 범위를 지정해서 제거하세요.[]\n\n[accent]코어 근처의 조각 블럭 3개[]를 제거하세요.
tutorial.breaking.mobile = 설계를 방해하는 블록을 제거하기 위해서 [accent]망치 버튼을 눌러 제거모드[]로 변경하신 후, 첫번째 지점을 누른 후 드래그하여 범위를 지정한뒤 V버튼을 클릭해 블럭을 제거하세요.\n\n[accent]코어 근처의 조각 블럭 3개[]를 제거하세요.
tutorial.withdraw = [accent]코어나 창고,공장[]같은 자원을 넣을 수 있는 일부 블럭에서는 직접 자원을 빼낼 수도 있습니다.\n[accent]코어를 클릭 후 자원을 눌러서 자원을 빼내세요.
tutorial.deposit = 자원을 다시 블록에 넣을수도 있습니다.\n\n[accent]당신의 기체에서 코어로 드래그[]하여 자원을 되돌려 넣으세요.
tutorial.waves = [LIGHT_GRAY]적[]이 접근합니다.\n당신의 기체는 적을 향해 클릭하여 공격할 수 있습니다. 또한, 구리를 더 캐내고 포탑을 더 지어서 방어를 강화하세요.\n\n[accent]2단계 동안 코어를 보호하세요.[]
tutorial.waves.mobile = [LIGHT_GRAY]적[]이 접근합니다.\n당신의 기체는 적을 자동조준하지만, 원하는 적을 클릭하여 공격하고 싶은 대상을 바꿀 수 있습니다.\n구리를 더 캐내고 포탑을 더 지어서 방어를 강화하세요.\n\n[accent]2단계동안 코어를 방어하세요.[]
tutorial.launch = 특정 단계에 도달하면 [accent]출격[]이 가능합니다.\n[accent]출격[]을 하게되면 해당 지역의 코어에 들어있는 자원들을 캠페인의 자원 창고로 보내지만, 해당 지역의 [accent]모든 것들[]은 날라가게 되니 주의하세요.
item.copper.description = 모든 종류의 블록에서 광범위하게 사용되는 자원입니다.
item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
@@ -917,11 +922,11 @@ unit.phantom.description = 첨단 드론 유닛. 플레이어의 건설을 도
unit.dagger.description = 기본 지상 유닛입니다.\n플레이어 기체처럼 드론을 소환하지는 않습니다.
unit.crawler.description = 지상 유닛. 적이 가까이에 있으면 폭발합니다.
unit.titan.description = 고급 지상 유닛입니다.\n원거리 총 대신에 근접 화염 방사기를 가지고 있으며, 지상과 공중 둘다 공격할 수 있습니다.
unit.ghoul.description = 무겁고 튼튼한 지상 폭격기 입니다.\n주로 적 건물로 이동하여 엄청난 폭격을 가합니다.
unit.wraith.description = 적 핵심 건물 및 유닛을 집중적으로 공격하는 방식을 사용하는 전투기 입니다.
unit.fortress.description = 중포 지상 유닛.\n높은 공격력을 가진 총과 높은 체력을 가지고 있습니다.
unit.revenant.description = 플래이어가 생산가능한 최종 공중 전투기. 폭발물을 쓰는 스웜 포탑과 같은 무기를 사용합니다.
unit.eruptor.description = 지상 유닛. 광재를 넣은 파도와 같은 무기를 장착했습니다.
unit.wraith.description = 적 핵심 건물 및 유닛을 집중적으로 공격하는 방식을 사용하는 전투기 입니다.
unit.ghoul.description = 무겁고 튼튼한 지상 폭격기 입니다.\n주로 적 건물로 이동하여 엄청난 폭격을 가합니다.
unit.revenant.description = 플래이어가 생산가능한 최종 공중 전투기. 폭발물을 쓰는 스웜 포탑과 같은 무기를 사용합니다.
unit.chaos-array.description = 지상 중간보스 유닛. 설금을 넣은 사이클론과 같은 무기를 장착했습니다.
unit.eradicator.description = 지상 최종보스 유닛. 토륨을 넣은 스펙터와 같은 무기를 장착했습니다.
unit.lich.description = 공중 중간보스 유닛. 리치와 같은 무기를 장착했으나 공격속도가 좀 더 빠릅니다.
@@ -996,15 +1001,15 @@ block.differential-generator.description = 냉각수와 파이라타이트의
block.rtg-generator.description = 방사성동위원소 열전기 발전기\n토륨또는 현상 구조체를 사용하며, 냉각이 필요없는 발전을 하지만 토륨 원자로에 비해 발전량이 매우 적습니다.
block.solar-panel.description = 태양광으로 극소량의 전기을 생산합니다.
block.solar-panel-large.description = 일반 태양 전지판보다 훨씬 나은 발전량이 많지만, 건축비도 훨씬 비쌉니다.
block.thorium-reactor.description = 토륨을 이용해 막대한 양의 전기를 생산합니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다.\n\n[LOYAL]폭발로 인한 피해를 버틸 수 있는 건물은 없습니다.
block.impact-reactor.description = 최첨단 발전기\n폭발물과 냉각수를 이용해 최고의 효율로 매우 많은 양의 전기를 생산할 수 있습니다. 발전을 시작하는데 전기가 필요하며 발전기를 가동하는데 시간이 많이 걸립니다.\n[LOYAL]오버드라이브 프로젝터로 10000이상의 전기를 생산할 수 있으며, 가동중에 전기가 끊기면 가동을 다시 해야되기 때문에 창고,물탱크,배터리 등을 주위에 설치하고 나서 가동하는 것을 추천합니다.
block.thorium-reactor.description = 토륨을 이용해 막대한 양의 전기를 생산합니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다.\n\n[royal]폭발로 인한 피해를 버틸 수 있는 건물은 없습니다.
block.impact-reactor.description = 최첨단 발전기\n폭발물과 냉각수를 이용해 최고의 효율로 매우 많은 양의 전기를 생산할 수 있습니다. 발전을 시작하는데 전기가 필요하며 발전기를 가동하는데 시간이 많이 걸립니다.\n[royal]오버드라이브 프로젝터로 10000이상의 전기를 생산할 수 있으며, 가동중에 전기가 끊기면 가동을 다시 해야되기 때문에 창고,물탱크,배터리 등을 주위에 설치하고 나서 가동하는 것을 추천합니다.
block.mechanical-drill.description = 싸구려 드릴. 적절한 타일 위에 놓였을때 매우 느린 속도로 계속 채광합니다.\n\n[ROYAL]구리와 납은 광부 드론으로 대체가 가능합니다.
block.pneumatic-drill.description = 기압을 이용하여 보다 빠르게 단단한 물질을 채광할 수 있는 향상된 드릴.\n\n[ROYAL]전기를 사용하지 않는 드릴이라도 물과 오버드라이브를 이용하여 가속할 수 있습니다.
block.laser-drill.description = 토륨을 채광할 수 있는 고급 드릴입니다. 전력과 물을 공급하여 빠른 속도로 채광할 수 있습니다.\n\n[ROYAL]드릴아래에 배치된 광물타일의 비율에 따라 채광량이 달라집니다.
block.blast-drill.description = 최상위 드릴입니다. 많은량의 전력이 필요합니다.\n\n[ROYAL]물추출기 하나면 충분합니다.
block.water-extractor.description = 땅에서 물을 추출합니다. 근처에 호수가 없을 때 사용하세요.\n\n[ROYAL]물추출기의 효율이 달라지는 타일이 있습니다.
block.cultivator.description = 소량의 포자를 산업용으로 사용가능한 포자로 배양하는 건물입니다.
block.oil-extractor.description = 대량의 전력과 물을 사용하여 모래에서 기름을 추출합니다. 근처에 직접적인 석유 공급원이 없을때 사용하세요.\n\n[LOYAL]모래 또는 고철을 이용하여
block.oil-extractor.description = 대량의 전력과 물을 사용하여 모래에서 기름을 추출합니다. 근처에 직접적인 석유 공급원이 없을때 사용하세요.\n\n[royal]모래 또는 고철을 이용하여
block.core-shard.description = 코어의 1단계 형태입니다.\n이것이 파괴되면 플레이하고 있는 지역과의 연결이 끊어지니 적의 공격에 파괴되지 않도록 주의하세요.\n[ROYAL]연결이 끊긴다는 말은 게임오버와 일맥상통합니다.
block.core-foundation.description = 코어의 2단계 형태입니다.\n첫 번째 코어보다 더 튼튼하고 더 많은 자원을 저장할 수 있습니다.\n\n[ROYAL]크기도 좀 더 큽니다.
block.core-nucleus.description = 코어의 3단계이자 마지막 형태입니다.\n최고로 튼튼하며 막대한 양의 자원들을 저장할 수 있습니다.

View File

@@ -16,6 +16,7 @@ screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje mi
gameover = Rdzeń został zniszczony.
gameover.pvp = Zwyciężyła drużyna [accent]{0}[]!
highscore = [YELLOW] Nowy rekord!
stat.wave = Fale powstrzymane:[accent] {0}
stat.enemiesDestroyed = Przeciwnicy zniszczeni:[accent] {0}
stat.built = Budynki zbudowane:[accent] {0}
@@ -23,8 +24,10 @@ stat.destroyed = Budynki zniszczone:[accent] {0}
stat.deconstructed = Budynki zrekonstruowane:[accent] {0}
stat.delivered = Surowce wystrzelone:
stat.rank = Ocena: [accent]{0}
placeline = You have selected a block.\nYou can[accent] place in a line[] by[accent] holding down your finger for a few seconds[] and dragging in a direction.\nTry it.
removearea = You have selected removal mode.\nYou can[accent] remove blocks in a rectangle[] by[accent] holding down your finger for a few seconds[] and dragging.\nTry it.
placeline = Wybrałeś blok.\nMożesz umieścić[accent] w linii,[] [accent]przytrzymując palec przez kilka sekund[] i przeciągając.\nSpróbuj.
removearea = Wybrałeś tryb usuwania.\nMożesz[accent] usunąć bloki w prostokoncie,[] [accent]przytrzymując palec przez kilka sekund i przeciągając[] and dragging.\nTry it.
launcheditems = [accent]Wystrzelone przedmioty
map.delete = Jesteś pewny, że chcesz usunąć "[accent]{0}[]"?
level.highscore = Rekord: [accent]{0}
@@ -32,7 +35,7 @@ level.select = Wybrany poziom
level.mode = Tryb gry:
showagain = Nie pokazuj tego więcej
coreattack = < Rdzeń jest atakowany! >
nearpoint = [[ [scarlet]OPUŚĆ PUNKT ZRZUTU NATYCHMIAST[] ]\n unicestwienie nadchodzi
nearpoint = [[ [scarlet]OPUŚĆ PUNKT ZRZUTU NATYCHMIAST[] ]\nunicestwienie nadchodzi
database = Centralna baza danych
savegame = Zapisz Grę
loadgame = Wczytaj grę
@@ -199,9 +202,9 @@ waves.preview = Preview
waves.edit = Edytuj...
waves.copy = Kopiuj do schowka
waves.load = Załaduj ze schowka
waves.invalid = Invalid waves in clipboard.
waves.invalid = Nieprawidłowe fale w schowku.
waves.copied = Fale zostały skopiowane.
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout.
waves.none = Brak zdefiniowanych wrogów.\nPamiętaj, że puste układy fal zostaną automatycznie zastąpione układem domyślnym.
editor.default = [LIGHT_GRAY]<Domyślne>
edit = Edytuj...
editor.name = Nazwa:
@@ -210,9 +213,9 @@ editor.removeunit = Remove Unit
editor.teams = Drużyny
editor.errorload = Błąd podczas ładowania pliku:\n[accent]{0}
editor.errorsave = Błąd podczas zapisywania pliku:\n[accent]{0}
editor.errorimage = That's an image, not a map. Don't go around changing extensions expecting it to work.\n\nIf you want to import a legacy map, use the 'import legacy map' button in the editor.
editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported.
editor.errorheader = This map file is either not valid or corrupt.
editor.errorimage = To obraz, nie mapa. Nie zmieniaj rozszeżenia spodziewając sie że to coś zmieni.\n\nJeśli chcesz zaimportować starszą mapę, użyj przycisku „importuj starszą mapę” w edytorze.
editor.errorlegacy = Ta mapa jest zbyt stara i używa starszego formatu mapy, który nie jest już obsługiwany.
editor.errorheader = Ten plik mapy jest nieprawidłowy lub uszkodzony.
editor.errorname = Mapa nie zawiera nazwy.
editor.update = Aktualizuj
editor.randomize = Losuj
@@ -245,30 +248,31 @@ editor.mapname = Nazwa mapy:
editor.overwrite = [accent]Uwaga!\nSpowoduje to nadpisanie istniejącej mapy.
editor.overwrite.confirm = [scarlet]Uwaga![] Mapa pod tą nazwą już istnieje. Jesteś pewny, że chcesz ją nadpisać?
editor.selectmap = Wybierz mapę do załadowania:
toolmode.replace = Replace
toolmode.replace.description = Draws only on solid blocks.
toolmode.replaceall = Replace All
toolmode.replaceall.description = Replace all blocks in map.
toolmode.orthogonal = Orthogonal
toolmode.orthogonal.description = Draws only orthogonal lines.
toolmode.square = Square
toolmode.replace = Zastąp
toolmode.replace.description = Rysuje tylko na stałych blokach.
toolmode.replaceall = Zastąp wszystko
toolmode.replaceall.description = Zastąp wszystkie bloki na mapie.
toolmode.orthogonal = Prostokątny
toolmode.orthogonal.description = Rysuje tylko prostopadłe linie.
toolmode.square = Kwadrat
toolmode.square.description = Square brush.
toolmode.eraseores = Erase Ores
toolmode.eraseores.description = Erase only ores.
toolmode.fillteams = Fill Teams
toolmode.fillteams.description = Fill teams instead of blocks.
toolmode.drawteams = Draw Teams
toolmode.drawteams.description = Draw teams instead of blocks.
toolmode.eraseores = Wymaż Rudy
toolmode.eraseores.description = Usuń tylko rudy.
toolmode.fillteams = Wypełń Drużyny
toolmode.fillteams.description = Wypełniaj drużyny zamiast bloków.
toolmode.drawteams = Rysuj Drużyny
toolmode.drawteams.description = Rysuj drużyny zamiast bloków.
filters.empty = [LIGHT_GRAY]Brak filtrów! Dodaj jeden za pomocą przycisku poniżej.
filter.distort = Distort
filter.distort = Zniekształcanie
filter.noise = Szum
filter.median = Median
filter.blend = Blend
filter.defaultores = Default Ores
filter.defaultores = Domyślne rudy
filter.ore = Ruda
filter.rivernoise = Szum rzeki
filter.mirror = Mirror
filter.clear = Clear
filter.mirror = Lustro
filter.clear = Oczyść
filter.option.ignore = Ignore
filter.scatter = Zozprosz
filter.terrain = Teren
@@ -278,17 +282,17 @@ filter.option.mag = Magnituda
filter.option.threshold = Próg
filter.option.circle-scale = Skala koła
filter.option.octaves = Oktawy
filter.option.falloff = Falloff
filter.option.angle = Angle
filter.option.falloff = Spadek
filter.option.angle = Kąt
filter.option.block = Blok
filter.option.floor = Podłoga
filter.option.flooronto = Target Floor
filter.option.flooronto = Podłoga Docelowa
filter.option.wall = Ściana
filter.option.ore = Ruda
filter.option.floor2 = Druga podłoga
filter.option.threshold2 = Secondary Threshold
filter.option.radius = Zasięg
filter.option.percentile = Percentile
filter.option.percentile = Percentyl
width = Szerokość:
height = Wysokość:
menu = Menu
@@ -305,6 +309,7 @@ tutorial = Poradnik
editor = Edytor
mapeditor = Edytor map
donate = Wspomóż nas
abandon = Opuść
abandon.text = Ta strefa i wszystkie jej surowce będą przejęte przez przeciwników.
locked = Zablokowane
@@ -325,10 +330,11 @@ zone.requirement.complete = Fala {0} osiągnięta:\n{1} Wymagania strefy został
zone.config.complete = Fala {0} osiągnięta:\nKonfiguracja ładunku odblokowana.
zone.resources = Wykryte Zasoby:
zone.objective = [lightgray]Objective: [accent]{0}
zone.objective.survival = Survive
zone.objective.attack = Destroy Enemy Core
zone.objective.survival = Przeżyj
zone.objective.attack = Zniszcz Rdzeń Wroga
add = Dodaj...
boss.health = Boss Health
connectfail = [crimson]Nie można połączyć się z serwerem:\n\n[accent]{0}
error.unreachable = Serwer niedostępny.\nCzy adres jest wpisany poprawnie?
error.invalidaddress = Niepoprawny adres.
@@ -340,31 +346,34 @@ error.io = Błąd siecowy I/O.
error.any = Nieznany błąd sieci.
error.bloom = Failed to initialize bloom.\nYour device may not support it.
zone.groundZero.name = Wybuch Lądowy
zone.desertWastes.name = Desert Wastes
zone.desertWastes.name = Pustynne Pustkowia
zone.craters.name = Kratery
zone.frozenForest.name = Zamrożony Las
zone.ruinousShores.name = Zniszczone Przybrzerza
zone.stainedMountains.name = Zabarwione Góry
zone.desolateRift.name = Ponura Szczelina
zone.nuclearComplex.name = Centrum Wyrobu Jądrowego
zone.overgrowth.name = Overgrowth
zone.tarFields.name = Tar Fields
zone.saltFlats.name = Salt Flats [scarlet][[WIP]
zone.impact0078.name = Impact 0078
zone.crags.name = Crags
zone.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
zone.frozenForest.description = Even here, closer to mountains, the spores have spread. The fridgid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders.
zone.overgrowth.name = Przerośnięty Las
zone.tarFields.name = Pola Smołowe
zone.saltFlats.name = Salt Flats
zone.impact0078.name = Uderzenie 0078
zone.crags.name = Urwisko
zone.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz jak najwięcej miedzi i ołowiu, tyle ile jest możliwe.\nPrzejdź do następnej strefy jak najszybciej.
zone.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki rozprzestrzeniły się. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nRozpocznij przedsięwzięcie od władzy. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy.
zone.desertWastes.description = These wastes are vast, unpredictable, and criss-crossed with derelict sector structures.\nCoal is present in the region. Burn it for power, or synthesize graphite.\n\n[lightgray]This landing location cannot be guaranteed.
zone.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing.
zone.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills.
zone.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology.
zone.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units.
zone.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build dagger units. Destroy it. Reclaim that which was lost.
zone.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible.
zone.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks.
zone.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers.
zone.stainedMountains.description = W głębi lądu leżą góry, jeszcze nieskażone przez zarodniki.\nWydobądź obfity tytan w tym obszarze. Dowiedz się, jak z niego korzystać.\n\nObecność wroga jest tutaj większa. Nie daj im czasu na wysłanie swoich najsilniejszych jednostek.
zone.overgrowth.description = Obszar ten jest zarośnięty, bliżej źródła zarodników.\nWróg założył tu placówkę. Zbuduj jednostki Nóż. Zniszcz to. Odzyskaj to, co nam odebrano.
zone.tarFields.description = Obrzeża strefy produkcji ropy, między górami a pustynią. Jeden z niewielu obszarów z rezerwami użytecznej smoły.\nMimo że ta strefa jest opuszczona, w pobliżu znajdują się niebezpieczne siły wroga. Nie lekceważ ich.\n\n[lightgray]Jeśli to możliwe, zbadaj technologię przetwarzania oleju.
zone.desolateRift.description = Strefa wyjątkowo niebezpieczna. Opfita w zasoby ale mało miejsca. Wysokie ryzyko zniszczenia. Opuść tę strefe jak najszybciej. Nie daj się zwieść długiemu odstępowi między atakami wroga.
zone.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zredukowny do ruin.\n[lightgray]Zbadaj tor i jego zastosowania.\n\nWróg jest tutaj obecny w dużej ilości, nieustannie poszukuje napastników.
zone.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores.
zone.impact0078.description = <insert description here>
zone.crags.description = <insert description here>
settings.language = Język
settings.reset = Przywróć domyślne
settings.rebind = Zmień
@@ -417,6 +426,7 @@ blocks.inaccuracy = Niedokładność
blocks.shots = Strzały
blocks.reload = Strzałów/sekundę
blocks.ammo = Amunicja
bar.drillspeed = Prędkość wiertła: {0}/s
bar.efficiency = Efektywność: {0}%
bar.powerbalance = Moc: {0}
@@ -428,17 +438,19 @@ bar.heat = Ciepło
bar.power = Prąd
bar.progress = Postęp Budowy
bar.spawned = Jednostki: {0}/{1}
bullet.damage = [stat]{0}[lightgray] Obrażenia
bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[lightgray] kratki
bullet.incendiary = [stat]zapalający
bullet.homing = [stat]naprowadzający
bullet.shock = [stat]piorunoey
bullet.shock = [stat]piorunowy
bullet.frag = [stat]fragmentacyjny
bullet.knockback = [stat]{0}[lightgray] odrzut
bullet.freezing = [stat]zamrażający
bullet.tarred = [stat]smolny
bullet.multiplier = [stat]{0}[lightgray]x mnożnik amunicji
bullet.reload = [stat]{0}[lightgray]x fire rate
bullet.reload = [stat]{0}[lightgray]x szybkość ataku
unit.blocks = Klocki
unit.powersecond = jednostek prądu na sekundę
unit.liquidsecond = jednostek płynów na sekundę
@@ -473,16 +485,16 @@ setting.fpscap.text = {0} FPS
setting.uiscale.name = UI Scaling[lightgray] (require restart)[]
setting.swapdiagonal.name = Pozwala na ukośne stawianie
setting.difficulty.training = trening
setting.difficulty.easy = łatwy
setting.difficulty.normal = normalny
setting.difficulty.hard = trudny
setting.difficulty.insane = szalony
setting.difficulty.easy = Łatwy
setting.difficulty.normal = Normalny
setting.difficulty.hard = Trudny
setting.difficulty.insane = Szalony
setting.difficulty.name = Poziom trudności
setting.screenshake.name = Trzęsienie się ekranu
setting.effects.name = Wyświetlanie efektów
setting.sensitivity.name = Czułość kontrolera
setting.saveinterval.name = Interwał automatycznego zapisywania
setting.seconds = Sekundy
setting.seconds = {0} Sekundy
setting.fullscreen.name = Pełny ekran
setting.borderlesswindow.name = Bezramkowe okno[LIGHT_GRAY] (może wymagać restartu)
setting.fps.name = Pokazuj FPS
@@ -547,6 +559,7 @@ mode.pvp.description = Walcz przeciwko innym graczom.
mode.attack.name = Atak
mode.attack.description = Brak fal, celem jest zniszczenie bazy przeciwnika.
mode.custom = Własny tryb
rules.infiniteresources = Nieskończone zasoby
rules.wavetimer = Zegar fal
rules.waves = Fale
@@ -573,6 +586,7 @@ rules.title.resourcesbuilding = Zasoby i Budowanie
rules.title.player = Gracze
rules.title.enemy = Przeciwnicy
rules.title.unit = Jednostki
content.item.name = Przedmioty
content.liquid.name = Płyny
content.unit.name = Jednostki
@@ -588,25 +602,25 @@ item.silicon.name = Krzem
item.plastanium.name = Plastan
item.phase-fabric.name = Włókno Fazowe
item.surge-alloy.name = Energetyczny Stop
item.spore-pod.name = Spore Pod
item.spore-pod.name = Kapsułka Zarodników
item.sand.name = Piasek
item.blast-compound.name = Wybuchowy związek
item.pyratite.name = Piratian
item.metaglass.name = Metaszkło
item.scrap.name = Resztki
item.scrap.name = Złom
liquid.water.name = Woda
liquid.slag.name = Slag
liquid.slag.name = Żużel
liquid.oil.name = Ropa
liquid.cryofluid.name = Lodociecz
mech.alpha-mech.name = Alpha
mech.alpha-mech.weapon = Ciężki Karabin
mech.alpha-mech.ability = Chmara Dronòw
mech.alpha-mech.ability = Regeneracja
mech.delta-mech.name = Delta
mech.delta-mech.weapon = Generator Piorunów
mech.delta-mech.ability = Rozładunek
mech.delta-mech.ability = Wyładowanie
mech.tau-mech.name = Tau
mech.tau-mech.weapon = Laser Odbudowy
mech.tau-mech.ability = Wybuch Naprawy
mech.tau-mech.ability = Pole Naprawy
mech.omega-mech.name = Omega
mech.omega-mech.weapon = Rakiety Chmarowe
mech.omega-mech.ability = Układ Obronny
@@ -614,7 +628,7 @@ mech.dart-ship.name = Strzałka
mech.dart-ship.weapon = Karabin
mech.javelin-ship.name = Javelin
mech.javelin-ship.weapon = Seria Rakiet
mech.javelin-ship.ability = Dopalacze Prądowe
mech.javelin-ship.ability = Wyładowania Dopalacza
mech.trident-ship.name = Trójząb
mech.trident-ship.weapon = Wnęka bombowa
mech.glaive-ship.name = Glewia
@@ -638,25 +652,25 @@ block.sand-boulder.name = Sand Boulder
block.grass.name = Trawa
block.salt.name = Sól
block.saltrocks.name = Skały Solne
block.pebbles.name = Pebbles
block.tendrils.name = Tendrils
block.pebbles.name = Kamyczki
block.tendrils.name = Wić
block.sandrocks.name = Skały Piaskowe
block.spore-pine.name = Spore Pine
block.sporerocks.name = Spore Rocks
block.spore-pine.name = Sosna Zarodkowa
block.sporerocks.name = Skała z Zarodkami
block.rock.name = Skały
block.snowrock.name = Skały śnieżne
block.snow-pine.name = Snow Pine
block.shale.name = Shale
block.shale-boulder.name = Shale Boulder
block.shale.name = Łupek
block.shale-boulder.name = Głaz Łupkowy
block.moss.name = Mech
block.shrubs.name = Shrubs
block.spore-moss.name = Spore Moss
block.shalerocks.name = Shale Rocks
block.scrap-wall.name = Scrap Wall
block.scrap-wall-large.name = Large Scrap Wall
block.scrap-wall-huge.name = Huge Scrap Wall
block.scrap-wall-gigantic.name = Gigantic Scrap Wall
block.thruster.name = Thruster
block.shrubs.name = Krzewy
block.spore-moss.name = Mech z Zarodkami
block.shalerocks.name = Skały Łupkowe
block.scrap-wall.name = Ściana z Złomu
block.scrap-wall-large.name = Duża Ściana z Złomu
block.scrap-wall-huge.name = Ogromna Ściana z Złomu
block.scrap-wall-gigantic.name = Gigantyczna Ściana z Złomu
block.thruster.name = Silnik
block.kiln.name = Wypalarka
block.graphite-press.name = Grafitowa Prasa
block.multi-press.name = Multi-Prasa
@@ -667,8 +681,8 @@ block.core-foundation.name = Rdzeń: Podstawa
block.core-nucleus.name = Rdzeń: Jądro
block.deepwater.name = Głęboka Woda
block.water.name = Woda
block.tainted-water.name = Tainted Water
block.darksand-tainted-water.name = Dark Sand Tainted Water
block.tainted-water.name = Skażona Woda
block.darksand-tainted-water.name = Skażona Woda z Ciemnym Piaskiem
block.tar.name = Smoła
block.stone.name = Kamień
block.sand.name = Piasek
@@ -676,8 +690,8 @@ block.darksand.name = Czarny piasek
block.ice.name = Lód
block.snow.name = Śnieg
block.craters.name = Kratery
block.sand-water.name = Sand water
block.darksand-water.name = Dark Sand Water
block.sand-water.name = Woda z Piaskiem
block.darksand-water.name = Woda z Ciemnym Piaskiem
block.char.name = Char
block.holostone.name = Holo stone
block.ice-snow.name = Lodowy Śnieg
@@ -685,26 +699,26 @@ block.rocks.name = Skały
block.icerocks.name = Lodowe skały
block.snowrocks.name = Śnieżne Skały
block.dunerocks.name = Dune Rocks
block.pine.name = Pine
block.white-tree-dead.name = White Tree Dead
block.white-tree.name = White Tree
block.spore-cluster.name = Spore Cluster
block.pine.name = Sosna
block.white-tree-dead.name = Białe Drzewo Martwe
block.white-tree.name = Białe Drzewo
block.spore-cluster.name = Grono Zarodków
block.metal-floor.name = Metalowa Podłoga
block.metal-floor-2.name = Metalowa Podłoga 2
block.metal-floor-3.name = Metalowa Podłoga 3
block.metal-floor-5.name = Metalowa Podłoga 5
block.metal-floor-damaged.name = Uszkodzona Metalowa Podłoga
block.dark-panel-1.name = Dark Panel 1
block.dark-panel-2.name = Dark Panel 2
block.dark-panel-3.name = Dark Panel 3
block.dark-panel-4.name = Dark Panel 4
block.dark-panel-5.name = Dark Panel 5
block.dark-panel-6.name = Dark Panel 6
block.dark-metal.name = Dark Metal
block.ignarock.name = Igna Rock
block.hotrock.name = Hot Rock
block.dark-panel-1.name = Ciemny Panel 1
block.dark-panel-2.name = Ciemny Panel 2
block.dark-panel-3.name = Ciemny Panel 3
block.dark-panel-4.name = Ciemny Panel 4
block.dark-panel-5.name = Ciemny Panel 5
block.dark-panel-6.name = Ciemny Panel 6
block.dark-metal.name = Ciemny Metal
block.ignarock.name = Skała Wulkaniczna
block.hotrock.name = Gorący Kamień
block.magmarock.name = Magma Rock
block.cliffs.name = Cliffs
block.cliffs.name = Klify
block.copper-wall.name = Miedziana Ściana
block.copper-wall-large.name = Duża miedziana ściana
block.titanium-wall.name = Tytanowa Ściana
@@ -720,6 +734,13 @@ block.scorch.name = Płomień
block.scatter.name = Flak
block.hail.name = Hail
block.lancer.name = Lancer
block.wave.name = Wave
block.swarmer.name = Działo Rojowe
block.salvo.name = Działo Salwowe
block.ripple.name = Działo falowe
block.cyclone.name = Cyklon
block.fuse.name = Lont
block.shock-mine.name = Mina
block.conveyor.name = Przenośnik
block.titanium-conveyor.name = Tytanowy przenośnik
block.junction.name = Węzeł
@@ -730,7 +751,7 @@ block.overflow-gate.name = Brama Przeciwprzepełnieniowa
block.silicon-smelter.name = Huta Krzemu
block.phase-weaver.name = Fazowa Fabryka
block.pulverizer.name = Rozkruszacz
block.cryofluidmixer.name = Mieszacz Cryofluidu
block.cryofluidmixer.name = Mieszacz Lodocieczy
block.melter.name = Przetapiacz
block.incinerator.name = Spalacz
block.spore-press.name = Spore Press
@@ -742,15 +763,15 @@ block.surge-tower.name = Wieża Energetyczna
block.battery.name = Bateria
block.battery-large.name = Duża Bateria
block.combustion-generator.name = Generator Spalinowy
block.turbine-generator.name = Generator Turbinowy
block.turbine-generator.name = Generator Parowy
block.differential-generator.name = Generator Różnicowy
block.impact-reactor.name = Reaktor Uderzeniowy
block.mechanical-drill.name = Wiertło Mechaniczne
block.pneumatic-drill.name = Wiertło Pneumatyczne
block.laser-drill.name = Wiertło Laserowe
block.water-extractor.name = Ekstraktor Wody
block.cultivator.name = Spluchniacz
block.dart-mech-pad.name = Dart Mech Pad
block.cultivator.name = Spulchniacz
block.dart-mech-pad.name = Lądowisko Mecha Alpha
block.delta-mech-pad.name = Lądowisko Mecha Delta
block.javelin-ship-pad.name = Lądowisko Statku Oszczep
block.trident-ship-pad.name = Lądowisko Statku Trójząb
@@ -766,10 +787,6 @@ block.power-void.name = Próżnia prądu
block.power-source.name = Nieskończony Prąd
block.unloader.name = Wyciągacz
block.vault.name = Magazyn
block.wave.name = Działo Płynowe
block.swarmer.name = Działo Rojowe
block.salvo.name = Działo Salwowe
block.ripple.name = Działo falowe
block.phase-conveyor.name = Fazowy Transporter
block.bridge-conveyor.name = Most Transportowy
block.plastanium-compressor.name = Kompresor Plastanu
@@ -778,7 +795,7 @@ block.blast-mixer.name = Wybuchowy Mieszacz
block.solar-panel.name = Panel Słoneczny
block.solar-panel-large.name = Duży Panel Słoneczny
block.oil-extractor.name = Ekstraktor Ropy
block.draug-factory.name = Draug Miner Drone Factory
block.draug-factory.name = Fabryka Dronów Draug
block.spirit-factory.name = Fabryka Dronów Duch
block.phantom-factory.name = Fabryka Dronów Widmo
block.wraith-factory.name = Fabryka Wojowników Zjawa
@@ -802,13 +819,10 @@ block.blast-drill.name = Wiertło Wybuchowe
block.thermal-pump.name = Pompa Termalna
block.thermal-generator.name = Generator Termalny
block.alloy-smelter.name = Piec Mieszający
block.mender.name = Mender
block.mender.name = Naprawiacz
block.mend-projector.name = Projektor Napraw
block.surge-wall.name = Ściana Stopu Energetycznego
block.surge-wall-large.name = Duża Ściana Stopu Energetycznego
block.cyclone.name = Cyklon
block.fuse.name = Lont
block.shock-mine.name = Mina
block.overdrive-projector.name = Projektor Nad-prędkości
block.force-projector.name = Projektor Pola Siłowego
block.arc.name = Piorun
@@ -819,9 +833,9 @@ block.container.name = Kontener
block.launch-pad.name = Skocznia
block.launch-pad-large.name = Duża skocznia
team.blue.name = niebieski
team.red.name = czerwony
team.orange.name = pomarańczowy
team.none.name = szary
team.crux.name = czerwony
team.sharded.name = pomarańczowy
team.derelict.name = szary
team.green.name = zielony
team.purple.name = fioletowy
unit.spirit.name = Duch
@@ -832,9 +846,9 @@ unit.crawler.name = Pełzak
unit.titan.name = Tytan
unit.ghoul.name = Upiór
unit.wraith.name = Zjawa
unit.fortress.name = Fortreca
unit.revenant.name = Potwór
unit.eruptor.name = Wysadzać
unit.fortress.name = Forteca
unit.revenant.name = Zjawa
unit.eruptor.name = Roztapiacz
unit.chaos-array.name = Kolejka Chaosu
unit.eradicator.name = Niszczyciel
unit.lich.name = Obudzony
@@ -860,6 +874,7 @@ tutorial.daggerfactory = Construct a[accent] dagger mech factory.[]\n\nThis will
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.
item.copper.description = Przydatny materiał budowlany. Szeroko używany w prawie każdej konstrukcji.
item.lead.description = Podstawowy matriał. Używany w przesyle przemiotów i płynów. Nie jest on przypadkiem szkodliwy?
item.metaglass.description = Niesamowite silne szkło. Szeroko używane w transporcie i przechowywaniu płynów.
@@ -883,7 +898,7 @@ liquid.cryofluid.description = Najefektywniejsza ciecz do schładzania budowli.
mech.alpha-mech.description = Standardowy mech. Średnia broń i prędkość, leć potrafi stworzyć trzy małe drony do walki.
mech.delta-mech.description = Szybki i wrażliwy mech stworzony do szybkih ataków i ucieczki. Budynką robi prawie nic, leć jest wstanie szybko rozwalić grupę wrogich jednostek piorunami.
mech.tau-mech.description = Mech pomocny. Naprawia budynki drużyny, strzelając w nie. Potrafi wygasić niedalekie pożary i uleczyć bliskich przyjaciół.
mech.omega-mech.description = Duży i silny mech, zaprojektowany na ataki. Jego zdolność pozwala mu na zablokowanie do 90% zagrożeń.
mech.omega-mech.description = Duży i silny mech, zaprojektowany na ataki. Jego zdolność pozwala mu na zablokowanie do 90% obrażeń.
mech.dart-ship.description = Standardowy statek. Lekki i szybki, ale jest kiepski jak chodzi o walkę i kopanie.
mech.javelin-ship.description = Statek do ataku i szybkiej ucieczki. Zaczyna powoli, ale przyspiesza do wielkiej prędkości. Przy tej prędkości, może przelecieć koło wrogiej bazy i atakować piorunami czy rakietami.
mech.trident-ship.description = Ciężki bombowiec. Dobrze uzbrojony.
@@ -893,12 +908,12 @@ unit.spirit.description = Początkowy dron. Rdzeń zawsze tworzy jeden. Wydobywa
unit.phantom.description = Zaawansowany dron. Wydobywa surowce, naprawia budynki oraz pomaga przy budowie szybciej niż dron Duch.
unit.dagger.description = Podstawowy mech lądowy. Sam jest słaby, lecz przydatny w dużych ilościach.
unit.crawler.description = A ground unit consisting of a stripped-down frame with high explosives strapped on top. Not particular durable. Explodes on contact with enemies.
unit.titan.description = Bardziej zaawansowany mech lądowy. Atakuje cele lądowe i niebne.
unit.titan.description = Bardziej zaawansowany mech lądowy. Atakuje cele lądowe i powietrzne.
unit.fortress.description = Wielka jednostka artyleryjna lądowa.
unit.eruptor.description = A heavy mech designed to take down structures. Fires a stream of slag at enemy fortifications, melting them and setting volatiles on fire.
unit.chaos-array.description =
unit.eradicator.description =
unit.wraith.description = Szybka jednostka do ataku i ucieczki.
unit.wraith.description = Szybka jednostka, stosuje taktyke uderz-uciekaj.
unit.ghoul.description = Ciężki bombowiec.
unit.revenant.description = A heavy, hovering missile array.
unit.lich.description =
@@ -913,10 +928,10 @@ block.alloy-smelter.description = Produces surge alloy from titanium, lead, sili
block.cryofluidmixer.description = Combines water and titanium into cryofluid which is much more efficient for cooling.
block.blast-mixer.description = Uses oil for transforming pyratite into the less flammable but more explosive blast compound.
block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite.
block.melter.description = Melts down scrap into slag for further processing or usage in turrets.
block.separator.description = Extracts useful minerals from slag.
block.melter.description = Przetapia złom na żużel do dalszego przetwarzania lub użycia w wieżyczkach
block.separator.description = Oddziel użyteczne materiały z mieszaniny jaką jest żużel.
block.spore-press.description = Compresses spore pods into oil.
block.pulverizer.description = Crushes scrap into sand. Useful when there is a lack of natural sand.
block.pulverizer.description = Mieli złom w drobny piaske. Przydatne, gdy brakuje naturalnego piasku.
block.coal-centrifuge.description = Solidifes oil into chunks of coal.
block.incinerator.description = Gets rid of any excess item or liquid.
block.power-void.description = Niszczy całą energię wprowadzoną do tego bloku. Dostępny tylko w trybie sandbox.
@@ -961,12 +976,12 @@ block.liquid-tank.description = Magazynuje ogromne ilości cieczy. Użyj go do s
block.liquid-junction.description = Działa jak most dla dwóch krzyżujących się rur. Przydatne w sytuacjach, kiedy dwie rury mają różne ciecze do różnych lokacji.
block.bridge-conduit.description = Zaawansowany blok przenoszący ciecze. Pozwala na przenoszenie cieczy nawet do 3 bloków na każdym terenie, przez każdy budynek.
block.phase-conduit.description = Zaawansowany blok do przenoszenia cieczy. Używa prądu, aby przenieść ciecz do połączonego transportera fazowego przez kilka bloków.
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.description = Przesyła moc do połączonych węzłów. Można podłączyć do czterech źródeł zasilania, zlewów lub węzłów. Zasila też bloki które go dotykają.
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.surge-tower.description = An extremely long-range power node with fewer available connections.
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.combustion-generator.description = Wytwarza energię poprzez spalanie łatwopalnych materiałów.
block.thermal-generator.description = Generates power when placed in hot locations.
block.turbine-generator.description = More efficient than a combustion generator, but requires additional water.
block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite.

View File

@@ -44,6 +44,7 @@ newgame = Новая игра
none = <ничего>
minimap = Мини-карта
close = Закрыть
website = Веб-сайт
quit = Выход
maps = Карты
continue = Продолжить
@@ -605,7 +606,7 @@ item.blast-compound.name = Взрывная смесь
item.pyratite.name = Пиротит
item.metaglass.name = Метастекло
item.scrap.name = Металлолом
liquid.water.name = Вода
iquid.water.name = Вода
liquid.slag.name = Шлак
liquid.oil.name = Нефть
liquid.cryofluid.name = Криогенная жидкость

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,10 @@
credits.text = 由[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!)
credits.text = 由[ROYAL]Anuken[]开发 - [SKY]anukendev@gmail.com[]
credits = 致谢
contributors = 译者和贡献者
discord = 加入 Mindustry 的 Discord!
link.discord.description = 官方 Mindustry Discord 聊天室
link.github.description = 游戏源码
link.changelog.description = List of update changes
link.changelog.description = 更新列表
link.dev-builds.description = 不稳定开发版
link.trello.description = Trello board 上的官方计划表
link.itch.io.description = PC版下载和网页版(itch.io)
@@ -16,15 +16,18 @@ screenshot.invalid = 地图太大,可能没有足够的内存用于截图。
gameover = 你的核心被摧毁了!
gameover.pvp = [accent] {0}[] 队获胜!
highscore = [accent]新纪录!
stat.wave = 战胜的波数:[accent]{0}
stat.enemiesDestroyed = 消灭的敌人:[accent]{0}
stat.built = 建造的建筑:[accent]{0}
stat.destroyed = 摧毁的建筑:[accent]{0}
stat.deconstructed = 拆除的建筑:[accent]{0}
stat.delivered = 发射的资源:
stat.rank = 最终排名[accent]{0}
placeline = 你选择了一个方块。\n你能通过[accent]长按几秒钟[]并向一个方向拖动来[accent]直线放置方块[]。\n试试看吧。
removearea = 你选择了拆除模式。\n你能通过[accent]长按几秒钟[]并拖动来[accent]删除矩形内的方块[]。\n试试看吧。
stat.rank = 最终等级[accent]{0}
placeline = 你选择了一个方块。\n你可以[accent]长按几秒钟[]并向一个方向拖动来[accent]直线放置方块[]。\n试试看吧。
removearea = 你选择了拆除模式。\n你可以[accent]长按几秒钟[]并拖动来[accent]删除矩形内的方块[]。\n试试看吧。
launcheditems = [accent]发射的资源
map.delete = 确定要删除 "[accent]{0}[]" 地图吗?
level.highscore = 最高分:[accent]{0}
@@ -54,7 +57,7 @@ filename = 文件名:
unlocked = 新方块已解锁!
completed = [accent]己研究
techtree = 科技树
research.list = [LIGHT_GRAY]研究:
research.list = [LIGHT_GRAY]研究
research = 研究
researched = [LIGHT_GRAY]{0}己研究。
players = {0} 玩家在线
@@ -100,11 +103,11 @@ server.outdated = [crimson]过旧的服务器![]
server.outdated.client = [crimson]过旧的客户端![]
server.version = [lightgray]版本:{0} {1}
server.custombuild = [yellow]定制版
confirmban = 确认你想拉黑这名玩家
confirmkick = 确定你想要踢走这名玩家
confirmunban = 确定你想要取消拉黑这名玩家
confirmadmin = 确定你想要使这名玩家成为一个管理员
confirmunadmin = 确定你想要删除这名玩家的管理员地位吗
confirmban = 确认拉黑这名玩家?
confirmkick = 确定踢走这名玩家?
confirmunban = 确定取消拉黑这名玩家?
confirmadmin = 确定给予这名玩家管理员权限
confirmunadmin = 确定取消这名玩家的管理员权限
joingame.title = 加入游戏
joingame.ip = 地址:
disconnect = 已断开
@@ -115,7 +118,7 @@ server.port = 端口:
server.addressinuse = 地址已经在使用中!
server.invalidport = 无效的端口号!
server.error = [crimson]创建服务器错误:[accent]{0}
save.old = 这个存档属于旧版本游戏,不再被使用。\n\n[LIGHT_GRAY]存档向下兼容将在完整的 4.0 版本中实现。
save.old = 这个存档属于旧版本游戏,不再被使用。\n\n[LIGHT_GRAY]存档向下兼容将在完整的 4.0 版本中实现。
save.new = 新存档
save.overwrite = 你确定你要覆盖这个存档位吗?
overwrite = 覆盖
@@ -142,24 +145,24 @@ save.autosave = 自动保存:{0}
save.map = 地图:{0}
save.wave = 波次 {0}
save.difficulty = 难度:{0}
save.date = 最后保存{0}
save.date = 最后保存:{0}
save.playtime = 游戏时间:{0}
warning = 警告!
confirm = 确认
delete = 删除
ok = 好的
ok = 确定
open = 打开
customize = 定制
cancel = 取消
openlink = 打开链接
copylink = 复制链接
back = 返回
quit.confirm = 确定你想要退出?
quit.confirm = 确定退出?
loading = [accent]加载中……
saving = [accent]保存中……
wave = [accent]波次 {0}
wave.waiting = [LIGHT_GRAY]下一波将在{0}秒后到来
wave.waveInProgress = [LIGHT_GRAY]Wave in progress
wave.waveInProgress = [LIGHT_GRAY]波次进行中
waiting = [LIGHT_GRAY]等待中……
waiting.players = 等待玩家中……
wave.enemies = [LIGHT_GRAY]剩余 {0} 个敌人
@@ -184,9 +187,9 @@ editor.author = 作者:
editor.description = 描述:
editor.waves = 波数:
editor.rules = 规则:
editor.generation = Generation:
editor.generation = 筛选器:
editor.ingame = 游戏内编辑
editor.newmap = New Map
editor.newmap = 新地图
waves.title = 波数
waves.remove = 移除
waves.never = <永不>
@@ -201,7 +204,7 @@ waves.copy = 复制到剪贴板
waves.load = 从剪贴板读取
waves.invalid = 剪贴板中无效的波次信息。
waves.copied = 波次信息已复制。
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout.
waves.none = 无自定义敌人。\n请注意空布局将自动替换为默认布局。
editor.default = [LIGHT_GRAY]<默认>
edit = 编辑……
editor.name = 名称:
@@ -225,93 +228,97 @@ editor.saved = 已保存!
editor.save.noname = 你的地图没有名字!在“地图信息”菜单里设置一个。
editor.save.overwrite = 你的地图覆盖了一个内建的地图!在“地图信息”菜单里重新设置一个不同的名称。
editor.import.exists = [scarlet]无法导入:[]名为‘{0}’的内建地图已存在!
editor.import = 导入...
editor.import = 导入……
editor.importmap = 导入地图
editor.importmap.description = 导入一个已经存在的地图
editor.importfile = 导入文件
editor.importfile.description = 导入一个外置的地图文件
editor.importimage = 导入地形图像
editor.importimage.description = 导入一个外置的地图图像文件
editor.export = 导出...
editor.export = 导出……
editor.exportfile = 导出文件
editor.exportfile.description = 导出一个地图文件
editor.exportimage = 导出一个地形文件
editor.exportimage.description = 导出一个地图图像文件
editor.loadimage = 导入地形
editor.saveimage = 导出地形
editor.unsaved = [scarlet]你有未保存的更改[]\n确定你想要要退出?
editor.unsaved = [scarlet]更改未保存![]\n确定退出
editor.resizemap = 调整地图大小
editor.mapname = 地图名称:
editor.overwrite = [accent]警告!\n这将会覆盖一个已经存在的地图。
editor.overwrite.confirm = [scarlet]警告![]存在同名地图。你确定你想要覆盖?
editor.selectmap = 选择一个地图加载:
toolmode.replace = Replace
toolmode.replace.description = Draws only on solid blocks.
toolmode.replaceall = Replace All
toolmode.replaceall.description = Replace all blocks in map.
toolmode.orthogonal = Orthogonal
toolmode.orthogonal.description = Draws only orthogonal lines.
toolmode.square = Square
toolmode.square.description = Square brush.
toolmode.eraseores = Erase Ores
toolmode.eraseores.description = Erase only ores.
toolmode.fillteams = Fill Teams
toolmode.fillteams.description = Fill teams instead of blocks.
toolmode.drawteams = Draw Teams
toolmode.drawteams.description = Draw teams instead of blocks.
filters.empty = [LIGHT_GRAY]没有过滤器filters用下方的按钮添加一个
filter.distort = 扭曲程度
filter.noise = 噪音Noise
toolmode.replace = 替换
toolmode.replace.description = 仅在实心块上绘制。
toolmode.replaceall = 全部替换
toolmode.replaceall.description = 替换地图中的所有方块。
toolmode.orthogonal = 正交线
toolmode.orthogonal.description = 只绘制正交线。
toolmode.square = 方形
toolmode.square.description = 方形刷子
toolmode.eraseores = 清除矿石
toolmode.eraseores.description = 只清除矿石。
toolmode.fillteams = 填充团队
toolmode.fillteams.description = 填充团队而不是方块。
toolmode.drawteams = 绘制团队
toolmode.drawteams.description = 绘制团队而不是方块
filters.empty = [LIGHT_GRAY]没有筛选器!用下方的按钮添加一个。
filter.distort = Distort
filter.noise = Noise
filter.median = Median
filter.blend = Blend
filter.defaultores = Default Ores
filter.ore = 矿石数量
filter.rivernoise = 河流噪音(River Noise
filter.ore = Ore
filter.rivernoise = River Noise
filter.mirror = Mirror
filter.clear = Clear
filter.option.ignore = Ignore
filter.scatter = 分散程度
filter.terrain = 地形
filter.option.scale = 规模大小
filter.option.chance = 机会(Chance
filter.option.mag = 大小?(Magnitude
filter.option.threshold = 门槛?(Threshold
filter.option.circle-scale = 圈规模?(Circle Scale
filter.option.octaves = 八度?(Octaves
filter.option.falloff = 减少?(Falloff
filter.scatter = Scatter
filter.terrain = Terrain
filter.option.scale = Scale
filter.option.chance = Chance
filter.option.mag = Magnitude
filter.option.threshold = Threshold
filter.option.circle-scale = Circle Scale
filter.option.octaves = Octaves
filter.option.falloff = Falloff
filter.option.angle = Angle
filter.option.block = 方块
filter.option.floor = 地面
filter.option.block = Block
filter.option.floor = Floor
filter.option.flooronto = Target Floor
filter.option.wall =
filter.option.ore = 矿石
filter.option.floor2 = 第二地面?(Secondary Floor
filter.option.threshold2 = 第二门槛?(Secondary Threshold
filter.option.wall = Wall
filter.option.ore = Ore
filter.option.floor2 = Secondary Floor
filter.option.threshold2 = Secondary Threshold
filter.option.radius = Radius
filter.option.percentile = Percentile
width = 宽度:
height = 高度:
menu = 菜单
play = 开始游戏
campaign = Campaign
load = 载入游戏
campaign = 战役模式
save = 保存
fps = FPS: {0}
tps = TPS: {0}
ping = 延迟: {0}ms
fps = FPS{0}
tps = TPS{0}
ping = 延迟{0}毫秒
language.restart = 为了使语言设置生效请重启游戏。
settings = 设置
tutorial = 教程
editor = 编辑器
mapeditor = 地图编辑器
donate = 打赏
abandon = 放弃
abandon.text = 这个区域和它的所有资源会被敌人重置。
locked = 已被锁定
complete = [LIGHT_GRAY]完成:
zone.requirement = 在{1}中达到{0}波
resume = 恢复区:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]最好: {0}
resume = 暂停:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]最高波次:{0}
launch = < 发射 >
launch.title = 发射成功
launch.next = [LIGHT_GRAY]下一个发射机会在第 {0} 波
@@ -324,11 +331,12 @@ zone.unlocked = [LIGHT_GRAY]{0} 已解锁。
zone.requirement.complete = 已达到第{0}波。\n达到解锁{1}的需求。
zone.config.complete = 已达到第{0}波。\n允许携带发射的资源进入此地区。
zone.resources = 地图中的资源:
zone.objective = [lightgray]Objective: [accent]{0}
zone.objective.survival = Survive
zone.objective.attack = Destroy Enemy Core
add = 添加
zone.objective = [lightgray]目标:[accent]{0}
zone.objective.survival = 生存
zone.objective.attack = 摧毁敌方核心
add = 添加……
boss.health = BOSS 生命值
connectfail = [crimson]服务器连接失败:[accent]{0}
error.unreachable = 服务器无法访问。
error.invalidaddress = 地址无效。
@@ -338,7 +346,8 @@ error.alreadyconnected = 已连接。
error.mapnotfound = 找不到地图文件!
error.io = 网络 I/O 错误。
error.any = 未知网络错误。
error.bloom = Failed to initialize bloom.\nYour device may not support it.
error.bloom = 未能初始化特效。\n您的设备可能不支持它。
zone.groundZero.name = 零号地区
zone.desertWastes.name = 沙漠废物
zone.craters.name = 陨石带
@@ -349,22 +358,24 @@ zone.desolateRift.name = 荒芜裂谷
zone.nuclearComplex.name = 核裂变
zone.overgrowth.name = 增生区
zone.tarFields.name = 石油田
zone.saltFlats.name = Salt Flats
zone.impact0078.name = Impact 0078
zone.crags.name = Crags
zone.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
zone.frozenForest.description = Even here, closer to mountains, the spores have spread. The fridgid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders.
zone.desertWastes.description = These wastes are vast, unpredictable, and criss-crossed with derelict sector structures.\nCoal is present in the region. Burn it for power, or synthesize graphite.\n\n[lightgray]This landing location cannot be guaranteed.
zone.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing.
zone.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills.
zone.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology.
zone.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units.
zone.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build dagger units. Destroy it. Reclaim that which was lost.
zone.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible.
zone.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks.
zone.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers.
zone.impact0078.description = <insert description here>
zone.crags.description = <insert description here>
zone.saltFlats.name = 盐碱荒滩
zone.impact0078.name = 0078号冲击
zone.crags.name = 悬崖
zone.groundZero.description = 重新开始的最佳位置。敌人威胁很小,资源少。\n尽可能收集多的铅和铜。\n行动。
zone.frozenForest.description = 即使在这里,靠近山脉的地方,孢子也已经扩散。寒冷的温度不可能永远容纳它们。\n\n此行动须投入电力。建造燃烧发电机并学会使用修理者。
zone.desertWastes.description = 这些废物是巨大的,不可预测的,并且与废弃的结构交错在一起。燃烧它以获取动力或合成石墨。\n\n[lightgray]无法保证此着陆位置。
zone.saltFlats.description = 在沙漠的郊区有盐滩。在这个地方几乎找不到资源。\n\n敌人在这里建立了一个资源存储区。根除他们的核心。不要留下任何东西。
zone.craters.description = 水在这个火山口积聚,这是旧战争的遗迹。夺下该区域。收集沙子来冶炼玻璃。用水泵抽水冷却炮塔和钻头。
zone.ruinousShores.description = 穿过荒地,就是海岸线。曾经这个地方安置了一个海岸防御阵列。现在剩下的不多了,只有最基本的防御结构仍然毫发无损,其他一切都被销毁了。\n继续向外扩展。继续研究科技。
zone.stainedMountains.description = 在更远的内陆地区是山脉,但没有被孢子污染。\n在这一地区分布着丰富的钛。学习如何使用它。\n\n这里敌人的存在更大。不要给他们时间派出最强的部队。
zone.overgrowth.description = 这个地区生长过度,靠近孢子的来源。\n敌人在这里建立了一个前哨站。建造尖刀单位来摧毁它并找回丢失的东西。
zone.tarFields.description = 位于山脉和沙漠之间的产油区的郊区是少数几个有可用焦油储量的地区之一。\n尽管被废弃但附近仍有一些危险的敌军。不要低估它们。\n\n[lightgray]如果可能,研究石油加工技术。
zone.desolateRift.description = 非常危险的区域。资源丰富但空间小。破坏风险高。尽快离开,不要被敌人的攻击间隔太长所愚弄。
zone.nuclearComplex.description = 以前生产和加工钍的设施已变成废墟。\n[浅灰色]研究钍及其多种用途。\n\n敌人在这里大量存在不断侦察入侵者。
zone.impact0078.description = <在此处插入说明>
zone.crags.description = <在此处插入说明>
settings.language = 语言
settings.reset = 恢复默认
settings.rebind = 重新绑定
@@ -374,23 +385,23 @@ settings.sound = 声音
settings.graphics = 图像
settings.cleardata = 清除游戏数据……
settings.clear.confirm = 您确定要清除数据吗?\n这个操作无法撤销
settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据包括存档、地图、解锁和绑定。\n按「是」后游戏将删除所有数据并自动退出。
settings.clearunlocks = 清除解锁
settings.clearall = 清除所有
settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据包括存档、地图、解锁和绑定。\n按「是」后游戏将删除所有数据并自动退出。
settings.clearunlocks = 清除解锁的科技
settings.clearall = 清除所有数据
paused = 暂停
yes =
no =
no =
info.title = [accent]详情
error.title = [crimson]发生了一个错误
error.crashtitle = 发生了一个错误
attackpvponly = [scarlet]Only available in Attack/PvP modes
attackpvponly = [scarlet]只在攻击/PVP模式中可用
blocks.input = 输入
blocks.output = 输出
blocks.booster = 加成物品/液体
block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = 能量容量
blocks.powershot = 能量/发射
blocks.damage = Damage
blocks.damage = 伤害
blocks.targetsair = 攻击空中单位
blocks.targetsground = 攻击地面单位
blocks.itemsmoved = 移动速度
@@ -417,6 +428,7 @@ blocks.inaccuracy = 误差
blocks.shots = 发射数
blocks.reload = 重新装弹
blocks.ammo = 子弹
bar.drillspeed = 挖掘速度:{0}/s
bar.efficiency = 效率:{0}%
bar.powerbalance = 能量:{0}
@@ -427,7 +439,8 @@ bar.liquid = 液体
bar.heat = 热量
bar.power = 电力
bar.progress = 制造进度
bar.spawned = 单位数量: {0}/{1}
bar.spawned = 单位数量{0}/{1}
bullet.damage = [stat]{0}[lightgray] 伤害
bullet.splashdamage = [stat]{0}[lightgray] 范围伤害 ~[stat] {1}[lightgray] 格
bullet.incendiary = [stat] 燃烧
@@ -439,6 +452,7 @@ bullet.freezing = [stat] 冰冻
bullet.tarred = [stat] 减速
bullet.multiplier = [stat]{0}[lightgray]x 子弹数量
bullet.reload = [stat]{0}[lightgray]x 装弹
unit.blocks = 方块
unit.powersecond = 能量单位/秒
unit.liquidsecond = 液体单位/秒
@@ -465,13 +479,13 @@ setting.animatedwater.name = 流动的水
setting.animatedshields.name = 动态画面
setting.antialias.name = 抗锯齿[LIGHT_GRAY] (需要重新启动)[]
setting.indicators.name = 队友指示器
setting.autotarget.name = 自动
setting.keyboard.name = Mouse+Keyboard Controls
setting.fpscap.name = FPS限制
setting.autotarget.name = 自动射
setting.keyboard.name = 鼠标+键盘操控
setting.fpscap.name = 最大FPS
setting.fpscap.none =
setting.fpscap.text = {0} FPS
setting.uiscale.name = UI Scaling[lightgray] (require restart)[]
setting.swapdiagonal.name = 总是自动铺设
setting.uiscale.name = UI缩放比例[lightgray] (需要重新启动)[]
setting.swapdiagonal.name = 自动铺设
setting.difficulty.training = 训练
setting.difficulty.easy = 简单
setting.difficulty.normal = 普通
@@ -497,11 +511,11 @@ setting.mutesound.name = 静音
setting.crashreport.name = 发送匿名崩溃报告
setting.chatopacity.name = 聊天界面透明度
setting.playerchat.name = 显示游戏内聊天界面
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] settings...
uiscale.cancel = Cancel & Exit
setting.bloom.name = Bloom
uiscale.reset = UI缩放比例已经改变。\n按下“确定”来确定缩放比例\n[accent]{0}[]秒后[scarlet]退出并恢复设定。
uiscale.cancel = 取消并退出
setting.bloom.name = 特效
keybind.title = 重新绑定按键
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported.
keybinds.mobile = [scarlet]这里的大多数键绑定在移动设备上都不起作用。仅支持基本运动。
category.general.name = 普通
category.view.name = 查看
category.multiplayer.name = 多人
@@ -547,10 +561,11 @@ mode.pvp.description = 和本地玩家对战。
mode.attack.name = 攻击
mode.attack.description = 没有波数,但是有摧毁敌人基地的任务。
mode.custom = 自定义模式
rules.infiniteresources = 无限资源
rules.wavetimer = 波次计时器
rules.waves = 波次
rules.attack = Attack Mode
rules.attack = 攻击模式
rules.enemyCheat = 敌人无限资源
rules.unitdrops = 敌人出生点
rules.unitbuildspeedmultiplier = 单位生产速度倍数
@@ -573,6 +588,7 @@ rules.title.resourcesbuilding = 资源和建造
rules.title.player = 玩家
rules.title.enemy = 敌人
rules.title.unit = 单位
content.item.name = 物品
content.liquid.name = 液体
content.unit.name = 部队
@@ -595,35 +611,35 @@ item.pyratite.name = 硫
item.metaglass.name = 钢化玻璃
item.scrap.name = 废料
liquid.water.name =
liquid.slag.name = 岩浆
liquid.slag.name = 矿渣
liquid.oil.name = 石油
liquid.cryofluid.name = 冷冻液
mech.alpha-mech.name = 阿尔法
mech.alpha-mech.name = Alpha
mech.alpha-mech.weapon = 重型机枪
mech.alpha-mech.ability = 无人机群
mech.delta-mech.name = 德尔塔
mech.alpha-mech.ability = 再生
mech.delta-mech.name = Delta
mech.delta-mech.weapon = 电弧发电机
mech.delta-mech.ability = 放电
mech.tau-mech.name = 医疗机
mech.tau-mech.name = Tau
mech.tau-mech.weapon = 重构激光
mech.tau-mech.ability = 修复
mech.omega-mech.name = 欧米茄
mech.omega-mech.name = Omega
mech.omega-mech.weapon = 导弹群
mech.omega-mech.ability = 配置装甲
mech.dart-ship.name = 飞镖
mech.dart-ship.name = Dart
mech.dart-ship.weapon = 机枪
mech.javelin-ship.name = 标枪
mech.javelin-ship.name = Javelin
mech.javelin-ship.weapon = 爆裂导弹
mech.javelin-ship.ability = 放电助推器
mech.trident-ship.name = 三叉戟
mech.trident-ship.name = Trident
mech.trident-ship.weapon = 炸弹
mech.glaive-ship.name = 阔剑
mech.glaive-ship.name = Glaive
mech.glaive-ship.weapon = 火焰机枪
item.explosiveness = [LIGHT_GRAY]爆炸性:{0}
item.flammability = [LIGHT_GRAY]易燃性:{0}
item.radioactivity = [LIGHT_GRAY]放射性:{0}
unit.health = [LIGHT_GRAY]生命值:{0}
unit.speed = [LIGHT_GRAY]速度:{0}
unit.speed = [LIGHT_GRAY]速度:{0}
mech.weapon = [LIGHT_GRAY]武器:{0}
mech.health = [LIGHT_GRAY]生命值: {0}
mech.itemcapacity = [LIGHT_GRAY]物品容量:{0}
@@ -634,7 +650,8 @@ mech.buildspeed = [LIGHT_GRAY]建造速度:{0}%
liquid.heatcapacity = [LIGHT_GRAY]热容量:{0}
liquid.viscosity = [LIGHT_GRAY]粘度:{0}
liquid.temperature = [LIGHT_GRAY]温度:{0}
block.sand-boulder.name = Sand Boulder
block.sand-boulder.name = 沙砂巨石
block.grass.name = 草地
block.salt.name = 盐碱地
block.saltrocks.name = 盐碱岩石
@@ -645,7 +662,7 @@ block.spore-pine.name = 孢子树
block.sporerocks.name = 孢子岩石
block.rock.name = 岩石
block.snowrock.name = 雪岩石
block.snow-pine.name = Snow Pine
block.snow-pine.name = 雪树
block.shale.name = 页岩地
block.shale-boulder.name = 页岩巨石
block.moss.name = 苔藓地
@@ -738,7 +755,7 @@ block.separator.name = 分离机
block.coal-centrifuge.name = 煤炭离心机
block.power-node.name = 能量节点
block.power-node-large.name = 大型能量节点
block.surge-tower.name = 远程输电
block.surge-tower.name = 巨浪
block.battery.name = 电池
block.battery-large.name = 大型电池
block.combustion-generator.name = 燃烧发电机
@@ -750,13 +767,13 @@ block.pneumatic-drill.name = 气动钻头
block.laser-drill.name = 激光钻头
block.water-extractor.name = 抽水机
block.cultivator.name = 培养机
block.dart-mech-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.dart-mech-pad.name = Dart 机甲平台
block.delta-mech-pad.name = Delta 机甲平台
block.javelin-ship-pad.name = Javelin 机甲平台
block.trident-ship-pad.name = Trident 机甲平台
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.item-source.name = 物品源
@@ -778,9 +795,9 @@ block.blast-mixer.name = 爆炸混合器
block.solar-panel.name = 太阳能电池
block.solar-panel-large.name = 大型太阳能电池
block.oil-extractor.name = 石油钻井
block.draug-factory.name = Draug Miner Drone Factory
block.spirit-factory.name = 轻型无人机工厂
block.phantom-factory.name = 鬼怪无人机工厂
block.draug-factory.name = 德鲁格采矿机工厂
block.spirit-factory.name = 幽灵修理机工厂
block.phantom-factory.name = 鬼怪建造机工厂
block.wraith-factory.name = 幻影战机工厂
block.ghoul-factory.name = 食尸鬼轰炸机工厂
block.dagger-factory.name = 尖刀机甲工厂
@@ -802,7 +819,7 @@ block.blast-drill.name = 爆破钻头
block.thermal-pump.name = 热能泵
block.thermal-generator.name = 热能发电机
block.alloy-smelter.name = 合金冶炼厂
block.mender.name = Mender
block.mender.name = 修理者
block.mend-projector.name = 修理投影器
block.surge-wall.name = 波动墙
block.surge-wall-large.name = 大型波动墙
@@ -824,9 +841,9 @@ team.orange.name = 橙
team.none.name =
team.green.name = 绿
team.purple.name =
unit.spirit.name = 轻型无人
unit.draug.name = Draug Miner Drone
unit.phantom.name = 鬼怪无人
unit.draug.name = 德鲁格采矿
unit.spirit.name = 幽灵修理机
unit.phantom.name = 鬼怪建造
unit.dagger.name = 尖刀
unit.crawler.name = 爬行者
unit.titan.name = 泰坦
@@ -860,10 +877,11 @@ tutorial.daggerfactory = 建造一个[accent] 尖刀机甲工厂.[]\n\n它可以
tutorial.router = 工厂需要资源来运作.\n造一个路由器来分发传送资源.
tutorial.dagger = 链接能源节点到工厂.\n一旦需求满足, 将会制作一个机甲.\n\n根据需要制作更多的钻头发电机传送带.
tutorial.battle = [LIGHT_GRAY] 敌人[] 的核心已经暴露。\n用你的尖刀机甲摧毁它。
item.copper.description = 一种有用的结构材料。在各种类型的方块中广泛使用。
item.lead.description = 一种基本的起始材料。被广泛用于电子设备和液体运输方块。
item.metaglass.description = 一种超级强硬的复合玻璃。通常用来传送和收藏液体
item.graphite.description = Mineralized carbon, used for ammunition and electrical insulation.
item.lead.description = 一种基本的起始材料。被广泛用于电子设备和液体运输方块。
item.metaglass.description = 一种超级强硬的复合玻璃。通常用来传送和收藏液体
item.graphite.description = 一种用于弹药和电路绝缘的矿化碳。
item.sand.description = 一种常见的材料,广泛用于冶炼,包括制作合金和助熔剂。
item.coal.description = 一种常见并容易获得的燃料。
item.titanium.description = 一种罕见的超轻金属,被广泛运用于液体运输、钻头和飞机。
@@ -876,105 +894,105 @@ item.surge-alloy.description = 一种具有独特电气性能的高级合金。
item.spore-pod.description = 一种用于制造石油,炸药及燃料的生物质。
item.blast-compound.description = 一种用于炸弹和炸药的挥发性混合物。虽然它可以作为燃料燃烧,但不建议这样做。
item.pyratite.description = 一种燃烧武器中使用的极易燃物质。
liquid.water.description = 常用于冷却和废物处理。
liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon.
liquid.oil.description = 可以燃烧,爆炸或用作冷却液
liquid.cryofluid.description = 用于降温的最有效液体
mech.alpha-mech.description = 标准机甲。具有不错的速度和伤害输出,可以制造多达 3 架无人机以提高进攻能力
liquid.water.description = 最有用的液体。常用于冷却和废物处理。
liquid.slag.description = 各种不同类型的熔融金属混合在一起的液体。可以被分解成其组成矿物,或作为武器喷向敌方单位。
liquid.oil.description = 用于先进材料生产的液体。可以转换成煤作为燃料,或作为武器喷射和放火
liquid.cryofluid.description = 一种由水和钛制成的惰性、无腐蚀性的液体。具有极高的热容量。广泛用作冷却剂
mech.alpha-mech.description = 标准控制机甲。基于尖刀单位具有升级的装甲和建筑能力。比Dart有更多的伤害输出
mech.delta-mech.description = 一种快速,轻便的机甲,一击即退。对结构造成的伤害很小,但可以用弧形闪电武器很快杀死大量敌方单位。
mech.tau-mech.description = 后勤机甲。治疗友军。可以熄灭火焰并治疗一定范围内的友军。
mech.omega-mech.description = 一种装甲厚重的机甲用于在前线攻击。它的护甲可以阻挡高达90%的伤害。
mech.dart-ship.description = 标准飞船。快速轻便,但攻击能力低,采矿速度
mech.dart-ship.description = 标准飞船。快速轻便,但攻击能力低,采矿速度
mech.javelin-ship.description = 一艘一击即退的攻击船。虽然最初很慢,但它可以加速到很快的速度,并飞过敌人的前哨,利用其闪电能力和导弹造成大量伤害。
mech.trident-ship.description = 一种重型轰炸机。有装甲。
mech.trident-ship.description = 为建造和摧毁敌人防御工事而建造的重型轰炸机。有相当好的装甲。
mech.glaive-ship.description = 一种大型,装甲厚重的武装直升机。配备燃烧机枪。有优秀的加速能力和最快的速度。
unit.draug.description = A primitive mining drone. Cheap to produce. Expendable. Automatically mines copper and lead in the vicinity. Delivers mined resources to the closest core.
unit.spirit.description = 初始无人机。默认情况下在内核中生成。自动开采矿石,收集物品和修理块。
unit.phantom.description = 一种先进的无人机单位。自动开采矿石,收集物品和修理块。比初始无人机有效得多
unit.dagger.description = 基础的地面单位,在蜂群中很有用。
unit.crawler.description = A ground unit consisting of a stripped-down frame with high explosives strapped on top. Not particular durable. Explodes on contact with enemies.
unit.titan.description = 高级的有武装地面单位,使用电石作为弹药.攻击地面单位和空中单位.
unit.fortress.description = 一种地面重炮部队
unit.eruptor.description = A heavy mech designed to take down structures. Fires a stream of slag at enemy fortifications, melting them and setting volatiles on fire.
unit.chaos-array.description =
unit.eradicator.description =
unit.wraith.description = 一种快速,打了就跑的截击机。
unit.ghoul.description = 重型地毯轰炸机。用爆炸化合物或黄铁矿作为弹药
unit.revenant.description = A heavy, hovering missile array.
unit.lich.description =
unit.reaper.description =
block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite.
block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently.
unit.draug.description = 一种原始的采矿机。生产成本低,消耗品。在附近自动开采铜和铅。将开采的资源输送到最近的核心。
unit.spirit.description = 一种改进的德鲁格无人机,设计用于维修而不是采矿。自动修复该区域中任何损坏的块。
unit.phantom.description = 一种先进的无人机。跟随玩家并协助建造
unit.dagger.description = 一种最基本的地面机甲。生产成本低。在蜂群中使用时很有用。
unit.crawler.description = 一种地面装置,由一个框架和绑在上面的烈性炸药组成。不是特别耐用。与敌人接触后爆炸。
unit.titan.description = 一种先进的装甲地面部队。攻击地面和空中目标。配备两个微型灼烧级火焰喷射器。
unit.fortress.description = 一种重型炮兵机甲。装备两门改进型冰雹炮,用于对敌军建筑物和部队进行远程攻击
unit.eruptor.description = 一种用来拆除建筑物的重型机甲。在敌人的防御工事上发射一股熔渣,将它们熔化并点燃挥发物。
unit.chaos-array.description =
unit.eradicator.description =
unit.wraith.description = 一种快速、一击即退的拦截器机甲。目标是发电机。
unit.ghoul.description = 一种地毯轰炸机。通过敌人的结构进行攻击,并瞄准关键的基础设施
unit.revenant.description = 一种发射导弹的重型飞行机甲
unit.lich.description =
unit.reaper.description =
block.graphite-press.description = 把大块的煤压缩成纯石墨片。
block.multi-press.description = 石墨压缩机的升级版。利用水和电力快速高效地处理煤炭。
block.silicon-smelter.description = 用高纯度的焦炭来加工沙子以生产硅。
block.kiln.description = 将铅和沙子熔炼成钢化玻璃,需要少量电力。
block.plastanium-compressor.description = 用石油和钛生产塑钢。
block.phase-weaver.description = 用放射性钍和大量沙子生产相织物。
block.alloy-smelter.description = 用钛,铅,硅和铜生产浪涌合金。
block.cryofluidmixer.description = 水和钛结合到低温流体中,冷却效率更高。
block.blast-mixer.description = 用油将硫转化为不易燃但更具爆炸性的爆炸化合物。
block.pyratite-mixer.description = 用煤,铅和沙子混合成高度易燃的硫。
block.melter.description = 将废料熔化成岩浆,以便进一步加工或用于炮塔子弹。
block.separator.description = 从岩浆中提取有用的矿物。
block.spore-press.description = 压缩孢子荚得到石油。
block.pulverizer.description = 将废料压碎成沙子。当缺少天然沙子时很有用。
block.coal-centrifuge.description = Solidifes oil into chunks of coal.
block.pyratite-mixer.description = 用煤,铅和沙子混合成高度易燃的硫。
block.blast-mixer.description = 用油将硫转化为不易燃但更具爆炸性的爆炸化合物。
block.cryofluidmixer.description = 水和钛结合到低温流体中,冷却效率更高。
block.melter.description = 将废料熔化成矿渣,以便进一步加工或用于炮塔子弹。
block.incinerator.description = 用于除掉任何多余的物品或液体。
block.power-void.description = 消耗输入的所有功率。仅限沙箱
block.power-source.description = 无限输出功率。仅限沙箱
block.item-source.description = 无限输出物品。仅限沙箱
block.item-void.description = 在不使用电源的情况下销毁任何进入它的物品。仅限沙
block.liquid-source.description = 无限输出液体。仅限沙
block.spore-press.description = 压缩孢子荚得到石油
block.separator.description = 从矿渣中提取有用的矿物
block.coal-centrifuge.description = 使石油凝固成煤块
block.item-source.description = 无限输出物品。仅限沙
block.liquid-source.description = 无限输出液体。仅限沙
block.item-void.description = 在不使用电源的情况下销毁任何进入它的物品。仅限沙盒。
block.power-source.description = 无限输出功率。仅限沙盒。
block.power-void.description = 消耗输入的所有功率。仅限沙盒。
block.copper-wall.description = 廉价的防守区块。\n用于保护前几波中的核心和炮塔。
block.copper-wall-large.description = 廉价的防御块。\n用于保护前几个波浪中的核心和炮塔。\n跨越多个块。
block.titanium-wall.description = A moderately strong defensive block.\nProvides moderate protection from enemies.
block.titanium-wall-large.description = A moderately strong defensive block.\nProvides moderate protection from enemies.\nSpans multiple tiles.
block.copper-wall-large.description = 廉价的防御块。\n用于保护前几个波浪中的核心和炮塔。\n跨越多个块。
block.titanium-wall.description = 中等强度的防御挡块。\n提供中等强度的防御以抵御敌人。
block.titanium-wall-large.description = 一个中等强度的防御块。\n提供中等强度的防御以防敌人攻击。\n跨越多个区块。
block.thorium-wall.description = 强大的防守区块。\n很好的防御敌人。
block.thorium-wall-large.description = 强大的防守区块。\n很好地防御敌人。\n跨越多个块。
block.thorium-wall-large.description = 强大的防守区块。\n很好地防御敌人。\n跨越多个块。
block.phase-wall.description = 没有钍墙那样坚固,但是它可以使不太强的子弹发生偏转。
block.phase-wall-large.description = 没有钍墙那样坚固,但是它可以使不太强的子弹发生偏转。\n跨越多个块。
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.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency.
block.door-large.description = 一扇大门,可以通过点击打开和关闭。\n如果打开敌人可以射击并穿过。\n跨越多个区块
block.mender.description = 定期修理附近的方块,使防御系统在波与波之间得到修复。\n通常使用硅来提高范围和效率。
block.mend-projector.description = 定期修复附近的建筑物。
block.overdrive-projector.description = 提高附近建筑物的速度,如钻头和传送带。
block.force-projector.description = 自身周围创建一个六边形力场,保护建筑物和内部单位免受子弹的伤害。
block.force-projector.description = 自身周围创建一个六边形力场,使建筑物和内部单位免受子弹的伤害。
block.shock-mine.description = 伤害踩到它的敌人。敌人几乎看不到它。
block.conveyor.description = 初级传送带。将物品向前移动并自动将它们放入炮塔或工厂中。可旋转方向。
block.titanium-conveyor.description = 高级传送带。能比初级传送带更快地移动物品。
block.junction.description = 为两条交叉传送带的桥梁。适用于两种不同传送带将不同材料运送到不同位置的情况
block.router.description = 从一个方向接受物品并将它们平均输出到最多3个其他方向。用于将材料从一个源分割为多个目标
block.distributor.description = 一个高级路由器可以将物品分成最多7个方向。
block.bridge-conveyor.description = 高级项目传输块。允许在跨越任何地形或建筑物上运输物品最多跨越3个块。
block.phase-conveyor.description = 高级传送带。使用电力将物品传送到距离几个块的相位传送带上。
block.sorter.description = 对物品进行分类。如果物品与所选种类,则允许其通过。否则,物品将从左边和右边输出。
block.router.description = 从一个方向接受物品并将它们平均输出到最多3个其他方向。用于将材料从一个源分割为多个目标。
block.distributor.description = 一个高级路由器可以将物品分成最多7个方向。
block.overflow-gate.description = 分离器和路由器的组合,如果前面被挡住,则向从左和右输出。
block.junction.description = 两条交叉传送带的桥梁。适用于两条不同传送带将不同材料运送到不同位置的情况。
block.mass-driver.description = 终极传送带。收集几件物品,然后将它们射向长距离外的另一个批量传送带。
block.mechanical-pump.description = 一种输出速度慢但没有功耗的廉价泵。
block.rotary-pump.description = 一种先进的泵,通过使用动力使速度加倍。
block.thermal-pump.description = 终级水泵。
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.phase-conduit.description = 高级液体传输块。使用电力将液体传送到多个块上的连接相管道
block.power-node.description = 连接节点传输电源。最多可连接四个电源,接收器或节点。节点将从任何相邻块接收电力或向其供电
block.mechanical-pump.description = 一种输出速度慢但没有功耗的廉价泵
block.rotary-pump.description = 一种先进的泵,通过使用动力使速度加倍
block.thermal-pump.description = 终级水泵。
block.power-node.description = 连接节点传输电源。最多可连接四个电源,用电器或节点。节点将从任何相邻块接收电力或向其供电。
block.power-node-large.description = 传输径大于电源节点,最多可连接六个电源,接收器或节点。
block.surge-tower.description = An extremely long-range power node with fewer available connections.
block.surge-tower.description = 具有较少可用连接的远程电源节点。
block.battery.description = 储存电力,当储存有能量时,可在电力短缺时提供电力。
block.battery-large.description = 比普通电池容量更大。
block.combustion-generator.description = 通过燃烧油或易燃材料产生电力。
block.thermal-generator.description = 当放置在热的地方时发电。
block.turbine-generator.description = 比燃烧发电机更有效,但需要额外的水。
block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite.
block.rtg-generator.description = 一种放射性同位素热电发电机,它不需要冷却,但功率低于钍反应堆。
block.solar-panel.description = 标准太阳能面板,提供少量电力。
block.solar-panel-large.description = 比标准太阳能电池板提供更好的电源,但构建起来要贵得多。
block.thorium-reactor.description = 高放射性钍产生大量电力。需要持续冷却。如果供应的冷却剂量不足,会剧烈爆炸。
block.impact-reactor.description = An advanced generator, capable of creating massive amounts of power at peak efficiency. Requires a significant power input to kickstart the process.
block.differential-generator.description = 产生大量的能量。利用低温流体和燃烧的硫之间的温差。
block.impact-reactor.description = 一种先进的发电机,能够以最高效率产生大量的电力。需要大量的电源输入才能启动进程。
block.mechanical-drill.description = 便宜的钻头。放置在适当的块上时,无限期地以缓慢的速度输出物品。
block.pneumatic-drill.description = 一种改进的钻头,它更快,能够利用气压处理更硬的材料。
block.laser-drill.description = 通过激光技术更快地钻孔,但需要电源。此外,这种钻头可以回收放射性钍。
@@ -982,43 +1000,43 @@ block.blast-drill.description = 终极钻头,需要大量电力。
block.water-extractor.description = 从地下提取水。当附近没有湖泊时使用它。
block.cultivator.description = 将微小浓度的孢子培养成工业用的孢子荚。
block.oil-extractor.description = 使用大量的电力从沙子中提取石油。当附近没有直接的石油来源时使用它。
block.core-shard.description = The first iteration of the core capsule. Once destroyed, all contact to the region is lost. Do not let this happen.
block.core-foundation.description = The second version of the core. Better armored. Stores more resources.
block.core-nucleus.description = The third and final iteration of the core capsule. Extremely well armored. Stores massive amounts of resources.
block.vault.description = 存储大量物品。当存在非恒定的材料需求时,使用它来创建缓冲区。 [LIGHT_GRAY]卸载器[]可用于从仓库中获取物品。
block.container.description = 存储少量物品。当存在非恒定的材料需求时,使用它来创建缓冲区。 [LIGHT_GRAY]卸载器[]可用于从容器中获取物品。
block.core-shard.description = 核心第一代。一旦被摧毁,与该地区的所有联系都将失去。不要让这种情况发生。
block.core-foundation.description = 核心第二代。有更好的装甲。可以存储更多资源。
block.core-nucleus.description = 核心第三代,也是最后一代。装甲非常好。存储大量资源。
block.unloader.description = 物品从容器,仓库或核心卸载到传送带上或直接卸载到相邻的块中。可以通过点击卸载器来更改要卸载的项目类型。
block.launch-pad.description = 不通过核心发射物体。尚未完成
block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently.
block.container.description = 存储少量物品。当存在非恒定的材料需求时,使用它来创建缓冲区。 [LIGHT_GRAY]卸载器[]可用于从容器中获取物品
block.vault.description = 存储大量物品。当存在非恒定的材料需求时,使用它来创建缓冲区。 [LIGHT_GRAY]卸载器[]可用于从仓库中获取物品。
block.launch-pad.description = 不通过核心发射物体。
block.launch-pad-large.description = 发射台的改进版。存储更多物体。启动频率更高。
block.duo.description = 小而便宜的炮塔。
block.scatter.description = 中型防空炮塔,向空中单位发射铅或废料。
block.scorch.description = Burns any ground enemies close to it. Highly effective at close range.
block.hail.description = 小型炮兵炮台。
block.wave.description = 中型快速炮塔,射出液体泡泡。
block.lancer.description = 中型炮塔,发射带电的电子束。
block.scorch.description = 小型炮塔,燃烧任何靠近它的地面敌人。近距离高效。
block.arc.description = 小型炮塔,发射电弧。
block.swarmer.description = 发射爆炸导弹的中型炮塔
block.hail.description = 小型炮兵炮台
block.lancer.description = 中型炮塔,发射带电的电子束。
block.wave.description = 中型快速炮塔,射出液体泡泡。
block.salvo.description = 中型炮塔,齐射射击。
block.fuse.description = 发射强大的短程光束的大型炮塔
block.swarmer.description = 中型炮塔,发射爆炸导弹
block.ripple.description = 大型炮兵炮塔,可同时向多个目标开火。
block.cyclone.description = 大型快速炮塔。
block.fuse.description = 大型炮塔,发射强大的短程光束。
block.spectre.description = 大型炮塔,一次射出两颗强大的子弹。
block.meltdown.description = 发射强大的远程光束的大型炮塔。
block.draug-factory.description = Produces Draug mining drones.
block.spirit-factory.description = 生产轻型无人机,用于开采矿石和修复块
block.phantom-factory.description = 生产高级无人机单元,它比轻型无人机更有效
block.crawler-factory.description = 生产快速自毁单元。
block.draug-factory.description = 生产德鲁格釆矿机
block.spirit-factory.description = 生产幽灵修理机
block.phantom-factory.description = 生产鬼怪建造机。
block.wraith-factory.description = 生产快速截击机。
block.ghoul-factory.description = 生产重型地毯轰炸机。
block.revenant-factory.description = 生产重型激光地面单元。
block.dagger-factory.description = 生产基本地面单位。
block.crawler-factory.description = Produces fast self-destructing swarm units.
block.titan-factory.description = 生产先进的装甲地面单位。
block.fortress-factory.description = 生产重型火炮地面部队。
block.fortress-factory.description = 生产重型地面火炮部队。
block.revenant-factory.description = 生产重型导弹部队。
block.repair-point.description = 连续治疗附近最近的受损单位。
block.dart-mech-pad.description = Provides transformation into a basic attack mech.\nUse by tapping while standing on it.
block.delta-mech-pad.description = 离开你当前的装置并换成一个快速,轻装甲的机械装置,用于快速攻击。\n站在上面时双击切换。
block.tau-mech-pad.description = 离开你当前的装置并换成一个可以治愈友方建筑物和单位的支撑机械。\n站在上面时双击切换。
block.omega-mech-pad.description = 离开你当前的装置并换成一个笨重且装甲良好的机甲,用于前线攻击。\n站在上面时双击切换。
block.javelin-ship-pad.description = 离开你当前的装置,换上一个强大而快速的截击机,用闪电武器。\n站在上面时双击切换。
block.dart-mech-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站在上面时双击切换。

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
core/assets/sounds/break.ogg Executable file → Normal file

Binary file not shown.

Binary file not shown.

BIN
core/assets/sounds/buttonClick.ogg Executable file → Normal file

Binary file not shown.

BIN
core/assets/sounds/click.ogg Executable file → Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
core/assets/sounds/door.ogg Executable file → Normal file

Binary file not shown.

BIN
core/assets/sounds/drill.ogg Executable file → Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
core/assets/sounds/message.ogg Executable file → Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
core/assets/sounds/thruster.ogg Executable file → Normal file

Binary file not shown.

BIN
core/assets/sounds/unlock.ogg Executable file → Normal file

Binary file not shown.

Binary file not shown.

BIN
core/assets/sounds/windowHide.ogg Executable file → Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 575 KiB

After

Width:  |  Height:  |  Size: 575 KiB

12
core/convert_sounds.sh Executable file
View File

@@ -0,0 +1,12 @@
#convert from stereo to mono
cd assets/sounds/
for i in *.ogg; do
echo $i
ffmpeg -i "$i" -ac 1 "OUT_$i"
done
find . -type f ! -name "OUT_*" -delete
for file in OUT_*; do mv "$file" "${file#OUT_}"; done;
cd ../../

View File

@@ -133,6 +133,7 @@ public class Vars{
public static GlobalData data;
public static EntityCollisions collisions;
public static DefaultWaves defaultWaves;
public static LoopControl loops;
public static Control control;
public static Logic logic;
@@ -181,6 +182,7 @@ public class Vars{
content.setVerbose();
}
loops = new LoopControl();
defaultWaves = new DefaultWaves();
collisions = new EntityCollisions();

View File

@@ -1608,8 +1608,8 @@ public class Blocks implements ContentList{
shootDuration = 220f;
powerUse = 14f;
shootSound = Sounds.laserbig;
idleSound = Sounds.beam;
idleSoundVolume = 2f;
activeSound = Sounds.beam;
activeSoundVolume = 2f;
health = 200 * size * size;
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.5f)).update(false);

View File

@@ -734,7 +734,7 @@ public class Fx implements ContentList{
shootSmallFlame = new Effect(32f, e -> {
Draw.color(Pal.lightFlame, Pal.darkFlame, Color.GRAY, e.fin());
Angles.randLenVectors(e.id, 8, e.finpow() * 44f, e.rotation, 10f, (x, y) -> {
Angles.randLenVectors(e.id, 8, e.finpow() * 60f, e.rotation, 10f, (x, y) -> {
Fill.circle(e.x + x, e.y + y, 0.65f + e.fout() * 1.5f);
});
@@ -744,7 +744,7 @@ public class Fx implements ContentList{
shootPyraFlame = new Effect(33f, e -> {
Draw.color(Pal.lightPyraFlame, Pal.darkPyraFlame, Color.GRAY, e.fin());
Angles.randLenVectors(e.id, 10, e.finpow() * 50f, e.rotation, 10f, (x, y) -> {
Angles.randLenVectors(e.id, 10, e.finpow() * 70f, e.rotation, 10f, (x, y) -> {
Fill.circle(e.x + x, e.y + y, 0.65f + e.fout() * 1.6f);
});

View File

@@ -196,7 +196,7 @@ public class UnitTypes implements ContentList{
mass = 5f;
hitsize = 20f;
rotatespeed = 0.06f;
health = 4000;
health = 3000;
weapon = new Weapon("chaos"){{
length = 8f;
reload = 50f;
@@ -220,7 +220,7 @@ public class UnitTypes implements ContentList{
mass = 5f;
hitsize = 20f;
rotatespeed = 0.06f;
health = 10000;
health = 9000;
weapon = new Weapon("eradication"){{
length = 13f;
reload = 30f;
@@ -313,7 +313,7 @@ public class UnitTypes implements ContentList{
}};
lich = new UnitType("lich", Revenant.class, Revenant::new){{
health = 7000;
health = 6000;
mass = 20f;
hitsize = 40f;
speed = 0.01f;
@@ -346,7 +346,7 @@ public class UnitTypes implements ContentList{
}};
reaper = new UnitType("reaper", Revenant.class, Revenant::new){{
health = 13000;
health = 11000;
mass = 30f;
hitsize = 56f;
speed = 0.01f;

View File

@@ -127,7 +127,7 @@ public class Control implements ApplicationListener{
Call.onGameOver(event.winner);
if(state.rules.zone != null && !Net.client()){
//remove zone save on game over
if(saves.getZoneSlot() != null){
if(saves.getZoneSlot() != null && !state.rules.tutorial){
saves.getZoneSlot().delete();
}
}
@@ -392,6 +392,7 @@ public class Control implements ApplicationListener{
data.checkSave();
music.update();
loops.update();
if(!state.is(State.menu)){
input.update();
@@ -415,7 +416,7 @@ public class Control implements ApplicationListener{
Platform.instance.updateRPC();
}
if(Core.input.keyTap(Binding.pause) && !ui.restart.isShown() && (state.is(State.paused) || state.is(State.playing))){
if(Core.input.keyTap(Binding.pause) && !scene.hasDialog() && !ui.restart.isShown() && (state.is(State.paused) || state.is(State.playing))){
state.set(state.is(State.playing) ? State.paused : State.playing);
}

View File

@@ -5,7 +5,7 @@ import io.anuke.annotations.Annotations.Remote;
import io.anuke.arc.ApplicationListener;
import io.anuke.arc.Events;
import io.anuke.arc.collection.ObjectSet.ObjectSetIterator;
import io.anuke.arc.util.Time;
import io.anuke.arc.util.*;
import io.anuke.mindustry.content.*;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.*;

View File

@@ -176,6 +176,7 @@ public class NetClient implements ApplicationListener{
public static void onKick(KickReason reason){
netClient.disconnectQuietly();
state.set(State.menu);
logic.reset();
if(!reason.quiet){
if(reason.extraText() != null){

View File

@@ -1,30 +1,28 @@
package io.anuke.mindustry.core;
import io.anuke.arc.*;
import io.anuke.arc.files.FileHandle;
import io.anuke.arc.function.Consumer;
import io.anuke.arc.function.Predicate;
import io.anuke.arc.files.*;
import io.anuke.arc.function.*;
import io.anuke.arc.graphics.*;
import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.graphics.glutils.FrameBuffer;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.graphics.glutils.*;
import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*;
import io.anuke.arc.scene.ui.layout.*;
import io.anuke.arc.util.*;
import io.anuke.arc.util.pooling.Pools;
import io.anuke.mindustry.content.Fx;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.arc.util.pooling.*;
import io.anuke.mindustry.content.*;
import io.anuke.mindustry.core.GameState.*;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.effect.GroundEffectEntity;
import io.anuke.mindustry.entities.effect.GroundEffectEntity.GroundEffect;
import io.anuke.mindustry.entities.impl.EffectEntity;
import io.anuke.mindustry.entities.effect.*;
import io.anuke.mindustry.entities.effect.GroundEffectEntity.*;
import io.anuke.mindustry.entities.impl.*;
import io.anuke.mindustry.entities.traits.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.game.EventType.DisposeEvent;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.game.EventType.*;
import io.anuke.mindustry.game.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.world.blocks.defense.ForceProjector.ShieldEntity;
import io.anuke.mindustry.world.blocks.defense.ForceProjector.*;
import static io.anuke.arc.Core.*;
import static io.anuke.mindustry.Vars.*;

View File

@@ -87,7 +87,8 @@ public class MapEditorDialog extends Dialog implements Disposable{
t.row();
t.addImageTextButton("$editor.import", "icon-load-map", isize, () ->
if(!ios){
t.addImageTextButton("$editor.import", "icon-load-map", isize, () ->
createDialog("$editor.import",
"$editor.importmap", "$editor.importmap.description", "icon-load-map", (Runnable)loadDialog::show,
"$editor.importfile", "$editor.importfile.description", "icon-file", (Runnable)() ->
@@ -115,24 +116,43 @@ public class MapEditorDialog extends Dialog implements Disposable{
Log.err(e);
}
}), true, FileChooser.pngFiles))
);
);
}
t.addImageTextButton("$editor.export", "icon-save-map", isize, () ->
Platform.instance.showFileChooser("$editor.savemap", "Map Files", file -> {
file = file.parent().child(file.nameWithoutExtension() + "." + mapExtension);
FileHandle result = file;
Cell cell = t.addImageTextButton("$editor.export", "icon-save-map", isize, () -> {
if(!ios){
Platform.instance.showFileChooser("$editor.savemap", "Map Files", file -> {
file = file.parent().child(file.nameWithoutExtension() + "." + mapExtension);
FileHandle result = file;
ui.loadAnd(() -> {
try{
if(!editor.getTags().containsKey("name")){
editor.getTags().put("name", result.nameWithoutExtension());
}
MapIO.writeMap(result, editor.createMap(result));
}catch(Exception e){
ui.showError(Core.bundle.format("editor.errorsave", Strings.parseException(e, true)));
Log.err(e);
}
});
}, false, FileChooser.mapFiles);
}else{
ui.loadAnd(() -> {
try{
if(!editor.getTags().containsKey("name")){
editor.getTags().put("name", result.nameWithoutExtension());
}
FileHandle result = Core.files.local(editor.getTags().get("name", "unknown") + "." + mapExtension);
MapIO.writeMap(result, editor.createMap(result));
Platform.instance.shareFile(result);
}catch(Exception e){
ui.showError(Core.bundle.format("editor.errorsave", Strings.parseException(e, true)));
Log.err(e);
}
});
}, false, FileChooser.mapFiles));
}
});
if(ios){
cell.size(swidth * 2f + 10, 60f).colspan(2);
}
});
menu.cont.row();

View File

@@ -6,6 +6,7 @@ import io.anuke.arc.function.Consumer;
import io.anuke.arc.function.Predicate;
import io.anuke.arc.math.geom.QuadTree;
import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.util.*;
import io.anuke.mindustry.entities.traits.Entity;
public class EntityGroup<T extends Entity>{
@@ -170,8 +171,10 @@ public class EntityGroup<T extends Entity>{
}
public void clear(){
for(T entity : entityArray)
for(T entity : entityArray){
entity.removed();
entity.setGroup(null);
}
for(T entity : entitiesToAdd)
entity.setGroup(null);

View File

@@ -1,9 +1,9 @@
package io.anuke.mindustry.entities;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.util.Time;
import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.*;
import io.anuke.mindustry.entities.traits.*;
/**
* Class for predicting shoot angles based on velocities of targets.
@@ -55,9 +55,7 @@ public class Predict{
* See {@link #intercept(float, float, float, float, float, float, float)}.
*/
public static Vector2 intercept(TargetTrait src, TargetTrait dst, float v){
return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(),
dst.getTargetVelocityX() - src.getTargetVelocityX()/2f,
dst.getTargetVelocityY() - src.getTargetVelocityY()/2f, v);
return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), dst.getTargetVelocityX() - src.getTargetVelocityX(), dst.getTargetVelocityY() - src.getTargetVelocityY(), v);
}
private static Vector2 quad(float a, float b, float c){

View File

@@ -70,7 +70,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
private Tile mining;
private Vector2 movement = new Vector2();
private boolean moved;
private SoundLoop boostSound = new SoundLoop(Sounds.thruster, 2f), buildSound = new SoundLoop(Sounds.build, 0.75f);
private SoundLoop buildSound = new SoundLoop(Sounds.build, 0.75f);
//endregion
@@ -133,7 +133,6 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
@Override
public void removed(){
boostSound.stop();
buildSound.stop();
}
@@ -514,7 +513,10 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
destructTime = 0f;
}
boostSound.update(x, y, isBoosting && !isDead() && !mech.flying);
if(!isDead() && isFlying()){
loops.play(Sounds.thruster, this, Mathf.clamp(velocity.len() * 2f) * 0.4f);
}
BuildRequest request = buildRequest();
buildSound.update(request == null ? x : request.x * tilesize, request == null ? y : request.y * tilesize, isBuilding() && (Mathf.within(request.x * tilesize, request.y * tilesize, x, y, placeDistance) || state.isEditor()));
@@ -750,8 +752,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
rotation = Mathf.slerpDelta(rotation, angleTo(target), 0.2f);
}
Vector2 intercept =
Predict.intercept(x, y, target.getX(), target.getY(), target.velocity().x - velocity.x, target.velocity().y - velocity.y, getWeapon().bullet.speed);
Vector2 intercept = Predict.intercept(this, target, getWeapon().bullet.speed);
pointerX = intercept.x;
pointerY = intercept.y;

View File

@@ -20,8 +20,7 @@ import io.anuke.mindustry.world.modules.*;
import java.io.*;
import static io.anuke.mindustry.Vars.tileGroup;
import static io.anuke.mindustry.Vars.world;
import static io.anuke.mindustry.Vars.*;
public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
public static final float timeToSleep = 60f * 4; //4 seconds to fall asleep
@@ -70,8 +69,8 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
x = tile.drawx();
y = tile.drawy();
block = tile.block();
if(block.idleSound != Sounds.none){
sound = new SoundLoop(block.idleSound, block.idleSoundVolume);
if(block.activeSound != Sounds.none){
sound = new SoundLoop(block.activeSound, block.activeSoundVolume);
}
health = block.health;
@@ -298,7 +297,11 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
}
if(sound != null){
sound.update(x, y, block.shouldIdleSound(tile));
sound.update(x, y, block.shouldActiveSound(tile));
}
if(block.idleSound != Sounds.none && block.shouldIdleSound(tile)){
loops.play(block.idleSound, this, block.idleSoundVolume);
}
Block previous = block;

View File

@@ -0,0 +1,61 @@
package io.anuke.mindustry.game;
import io.anuke.arc.*;
import io.anuke.arc.audio.*;
import io.anuke.arc.collection.*;
import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*;
import io.anuke.mindustry.*;
public class LoopControl{
private ObjectMap<Sound, SoundData> sounds = new ObjectMap<>();
public void play(Sound sound, Position pos, float volume){
if(Vars.headless) return;
float baseVol = sound.calcFalloff(pos.getX(), pos.getY());
float vol = baseVol * volume;
SoundData data = sounds.getOr(sound, SoundData::new);
data.volume += vol;
data.volume = Mathf.clamp(data.volume, 0f, 1f);
data.total += baseVol;
data.sum.add(pos.getX() * baseVol, pos.getY() * baseVol);
}
public void update(){
float avol = Core.settings.getInt("ambientvol", 100) / 100f;
sounds.each((sound, data) -> {
data.curVolume = Mathf.lerpDelta(data.curVolume, data.volume * avol, 0.2f);
boolean play = data.curVolume > 0.01f;
float pan = Mathf.isZero(data.total, 0.0001f) ? 0f : sound.calcPan(data.sum.x / data.total, data.sum.y / data.total);
if(data.soundID <= 0){
if(play){
data.soundID = sound.loop(data.curVolume, 1f, pan);
}
}else{
if(data.curVolume <= 0.01f){
sound.stop(data.soundID);
data.soundID = -1;
return;
}
sound.setPan(data.soundID, pan, data.curVolume);
}
data.volume = 0f;
data.total = 0f;
data.sum.setZero();
});
}
private class SoundData{
float volume;
float total;
Vector2 sum = new Vector2();
int soundID;
float curVolume;
}
}

View File

@@ -9,7 +9,7 @@ public class SoundLoop{
private static final float fadeSpeed = 0.05f;
private final Sound sound;
private long id = -1;
private int id = -1;
private float volume, baseVolume;
public SoundLoop(Sound sound, float baseVolume){

View File

@@ -2,6 +2,7 @@ package io.anuke.mindustry.io;
import io.anuke.arc.collection.*;
import io.anuke.arc.util.serialization.*;
import io.anuke.arc.util.serialization.Json.*;
import io.anuke.mindustry.*;
import io.anuke.mindustry.content.*;
import io.anuke.mindustry.game.*;
@@ -11,10 +12,13 @@ import io.anuke.mindustry.world.*;
@SuppressWarnings("unchecked")
public class JsonIO{
private static CustomJson json = new CustomJson();
private static CustomJson jsonBase = new CustomJson();
private static Json json = new Json(){{
apply(this);
}};
public static String write(Object object){
return json.toJson(object);
return json.toJson(object, object.getClass());
}
public static <T> T copy(T object){
@@ -26,66 +30,50 @@ public class JsonIO{
}
public static <T> T read(Class<T> type, T base, String string){
return json.fromBaseJson(type, base, string);
return jsonBase.fromBaseJson(type, base, string);
}
public static String print(String in){
return json.prettyPrint(in);
}
static class CustomJson extends Json{
private Object baseObject;
private static void apply(Json json){
json.setIgnoreUnknownFields(true);
json.setElementType(Rules.class, "spawns", SpawnGroup.class);
json.setElementType(Rules.class, "loadout", ItemStack.class);
{
setIgnoreUnknownFields(true);
setElementType(Rules.class, "spawns", SpawnGroup.class);
setElementType(Rules.class, "loadout", ItemStack.class);
setSerializer(Zone.class, new Serializer<Zone>(){
@Override
public void write(Json json, Zone object, Class knownType){
json.writeValue(object.name);
}
@Override
public Zone read(Json json, JsonValue jsonData, Class type){
return Vars.content.getByName(ContentType.zone, jsonData.asString());
}
});
setSerializer(Item.class, new Serializer<Item>(){
@Override
public void write(Json json, Item object, Class knownType){
json.writeValue(object.name);
}
@Override
public Item read(Json json, JsonValue jsonData, Class type){
if(jsonData.asString() == null) return Items.copper;
Item i = Vars.content.getByName(ContentType.item, jsonData.asString());
return i == null ? Items.copper : i;
}
});
//TODO extremely hacky and disgusting
for(Block block : Vars.content.blocks()){
Class type = block.getClass();
if(type.isAnonymousClass()) type = type.getSuperclass();
setSerializer(type, new Serializer<Block>(){
@Override
public void write(Json json, Block object, Class knownType){
json.writeValue(object.name);
}
@Override
public Block read(Json json, JsonValue jsonData, Class type){
return Vars.content.getByName(ContentType.block, jsonData.asString());
}
});
json.setSerializer(Zone.class, new Serializer<Zone>(){
@Override
public void write(Json json, Zone object, Class knownType){
json.writeValue(object.name);
}
setSerializer(Block.class, new Serializer<Block>(){
@Override
public Zone read(Json json, JsonValue jsonData, Class type){
return Vars.content.getByName(ContentType.zone, jsonData.asString());
}
});
json.setSerializer(Item.class, new Serializer<Item>(){
@Override
public void write(Json json, Item object, Class knownType){
json.writeValue(object.name);
}
@Override
public Item read(Json json, JsonValue jsonData, Class type){
if(jsonData.asString() == null) return Items.copper;
Item i = Vars.content.getByName(ContentType.item, jsonData.asString());
return i == null ? Items.copper : i;
}
});
//TODO extremely hacky and disgusting
for(Block block : Vars.content.blocks()){
Class type = block.getClass();
if(type.isAnonymousClass()) type = type.getSuperclass();
json.setSerializer(type, new Serializer<Block>(){
@Override
public void write(Json json, Block object, Class knownType){
json.writeValue(object.name);
@@ -96,40 +84,60 @@ public class JsonIO{
return Vars.content.getByName(ContentType.block, jsonData.asString());
}
});
}
setSerializer(TeamData.class, new Serializer<TeamData>(){
@Override
public void write(Json json, TeamData object, Class knownType){
json.writeObjectStart();
json.writeValue("brokenBlocks", object.brokenBlocks.toArray());
json.writeValue("team", object.team.ordinal());
json.writeObjectEnd();
}
json.setSerializer(Block.class, new Serializer<Block>(){
@Override
public void write(Json json, Block object, Class knownType){
json.writeValue(object.name);
}
@Override
public TeamData read(Json json, JsonValue jsonData, Class type){
long[] blocks = jsonData.get("brokenBlocks").asLongArray();
Team team = Team.all[jsonData.getInt("team", 0)];
TeamData out = new TeamData(team, EnumSet.of(new Team[]{}));
out.brokenBlocks = new LongQueue(blocks);
return out;
}
});
@Override
public Block read(Json json, JsonValue jsonData, Class type){
return Vars.content.getByName(ContentType.block, jsonData.asString());
}
});
setSerializer(ItemStack.class, new Serializer<ItemStack>(){
@Override
public void write(Json json, ItemStack object, Class knownType){
json.writeObjectStart();
json.writeValue("item", object.item);
json.writeValue("amount", object.amount);
json.writeObjectEnd();
}
json.setSerializer(TeamData.class, new Serializer<TeamData>(){
@Override
public void write(Json json, TeamData object, Class knownType){
json.writeObjectStart();
json.writeValue("brokenBlocks", object.brokenBlocks.toArray());
json.writeValue("team", object.team.ordinal());
json.writeObjectEnd();
}
@Override
public ItemStack read(Json json, JsonValue jsonData, Class type){
return new ItemStack(json.getSerializer(Item.class).read(json, jsonData.get("item"), Item.class), jsonData.getInt("amount"));
}
});
@Override
public TeamData read(Json json, JsonValue jsonData, Class type){
long[] blocks = jsonData.get("brokenBlocks").asLongArray();
Team team = Team.all[jsonData.getInt("team", 0)];
TeamData out = new TeamData(team, EnumSet.of(new Team[]{}));
out.brokenBlocks = new LongQueue(blocks);
return out;
}
});
json.setSerializer(ItemStack.class, new Serializer<ItemStack>(){
@Override
public void write(Json json, ItemStack object, Class knownType){
json.writeObjectStart();
json.writeValue("item", object.item);
json.writeValue("amount", object.amount);
json.writeObjectEnd();
}
@Override
public ItemStack read(Json json, JsonValue jsonData, Class type){
return new ItemStack(json.getSerializer(Item.class).read(json, jsonData.get("item"), Item.class), jsonData.getInt("amount"));
}
});
}
static class CustomJson extends Json{
private Object baseObject;
{
apply(this);
}
@Override

View File

@@ -14,9 +14,7 @@ public abstract class SaveFileReader{
protected final DataOutputStream dataBytes = new DataOutputStream(byteOutput);
protected final ReusableByteOutStream byteOutputSmall = new ReusableByteOutStream();
protected final DataOutputStream dataBytesSmall = new DataOutputStream(byteOutputSmall);
protected final ObjectMap<String, String> fallback = ObjectMap.of(
);
protected final ObjectMap<String, String> fallback = ObjectMap.of();
protected void region(String name, DataInput stream, CounterInputStream counter, IORunner<DataInput> cons) throws IOException{
counter.resetCount();

View File

@@ -1,5 +1,6 @@
package io.anuke.mindustry.io;
import io.anuke.arc.collection.*;
import io.anuke.mindustry.game.Rules;
import io.anuke.mindustry.maps.Map;
@@ -13,8 +14,9 @@ public class SaveMeta{
public Map map;
public int wave;
public Rules rules;
public StringMap tags;
public SaveMeta(int version, long timestamp, long timePlayed, int build, String map, int wave, Rules rules){
public SaveMeta(int version, long timestamp, long timePlayed, int build, String map, int wave, Rules rules, StringMap tags){
this.version = version;
this.build = build;
this.timestamp = timestamp;
@@ -22,5 +24,6 @@ public class SaveMeta{
this.map = world.maps.all().find(m -> m.name().equals(map));
this.wave = wave;
this.rules = rules;
this.tags = tags;
}
}

View File

@@ -28,7 +28,7 @@ public abstract class SaveVersion extends SaveFileReader{
public SaveMeta getMeta(DataInput stream) throws IOException{
stream.readInt(); //length of data, doesn't matter here
StringMap map = readStringMap(stream);
return new SaveMeta(map.getInt("version"), map.getLong("saved"), map.getLong("playtime"), map.getInt("build"), map.get("mapname"), map.getInt("wave"), JsonIO.read(Rules.class, map.get("rules", "{}")));
return new SaveMeta(map.getInt("version"), map.getLong("saved"), map.getLong("playtime"), map.getInt("build"), map.get("mapname"), map.getInt("wave"), JsonIO.read(Rules.class, map.get("rules", "{}")), map);
}
@Override

View File

@@ -92,7 +92,7 @@ public class Weapon{
float baseX = shooter.getX(), baseY = shooter.getY();
Weapon weapon = shooter.getWeapon();
weapon.shootSound.at(x, y);
weapon.shootSound.at(x, y, Mathf.random(0.8f, 1.0f));
sequenceNum = 0;
if(weapon.shotDelay > 0.01f){

View File

@@ -176,7 +176,7 @@ public class Zone extends UnlockableContent{
@Override
public void load(){
if(Core.files.internal("zones/" + name + ".png").exists()){
if(Core.files.internal("zones/" + name + ".png").exists() && !headless){
preview = new Texture(Core.files.internal("zones/" + name + ".png"));
}
}

View File

@@ -25,7 +25,9 @@ public class MultiReqImage extends Stack{
if(valid != null){
valid.visible(true);
}else{
displays.get((int)(time) % displays.size).visible(true);
if(displays.size > 0){
displays.get((int)(time) % displays.size).visible(true);
}
}
}
}

View File

@@ -43,7 +43,7 @@ public class MapsDialog extends FloatingDialog{
void setup(){
buttons.clearChildren();
if(Core.graphics.isPortrait()){
if(Core.graphics.isPortrait() && !ios){
buttons.addImageTextButton("$back", "icon-arrow-left", iconsize, this::hide).size(210f*2f, 64f).colspan(2);
buttons.row();
}else{
@@ -60,54 +60,56 @@ public class MapsDialog extends FloatingDialog{
});
}).size(210f, 64f);
buttons.addImageTextButton("$editor.importmap", "icon-load", iconsize, () -> {
Platform.instance.showFileChooser("$editor.importmap", "Map File", file -> {
world.maps.tryCatchMapError(() -> {
if(MapIO.isImage(file)){
ui.showError("$editor.errorimage");
return;
}
if(!ios){
buttons.addImageTextButton("$editor.importmap", "icon-load", iconsize, () -> {
Platform.instance.showFileChooser("$editor.importmap", "Map File", file -> {
world.maps.tryCatchMapError(() -> {
if(MapIO.isImage(file)){
ui.showError("$editor.errorimage");
return;
}
Map map;
if(file.extension().equalsIgnoreCase(mapExtension)){
map = MapIO.createMap(file, true);
}else{
map = world.maps.makeLegacyMap(file);
}
Map map;
if(file.extension().equalsIgnoreCase(mapExtension)){
map = MapIO.createMap(file, true);
}else{
map = world.maps.makeLegacyMap(file);
}
//when you attempt to import a save, it will have no name, so generate one
String name = map.tags.getOr("name", () -> {
String result = "unknown";
int number = 0;
while(world.maps.byName(result + number++) != null);
return result + number;
});
//this will never actually get called, but it remains just in case
if(name == null){
ui.showError("$editor.errorname");
return;
}
Map conflict = world.maps.all().find(m -> m.name().equals(name));
if(conflict != null && !conflict.custom){
ui.showInfo(Core.bundle.format("editor.import.exists", name));
}else if(conflict != null){
ui.showConfirm("$confirm", "$editor.overwrite.confirm", () -> {
world.maps.tryCatchMapError(() -> {
world.maps.importMap(file);
setup();
});
//when you attempt to import a save, it will have no name, so generate one
String name = map.tags.getOr("name", () -> {
String result = "unknown";
int number = 0;
while(world.maps.byName(result + number++) != null) ;
return result + number;
});
}else{
world.maps.importMap(map.file);
setup();
}
});
}, true, FileChooser.anyMapFiles);
}).size(210f, 64f);
//this will never actually get called, but it remains just in case
if(name == null){
ui.showError("$editor.errorname");
return;
}
Map conflict = world.maps.all().find(m -> m.name().equals(name));
if(conflict != null && !conflict.custom){
ui.showInfo(Core.bundle.format("editor.import.exists", name));
}else if(conflict != null){
ui.showConfirm("$confirm", "$editor.overwrite.confirm", () -> {
world.maps.tryCatchMapError(() -> {
world.maps.importMap(file);
setup();
});
});
}else{
world.maps.importMap(map.file);
setup();
}
});
}, true, FileChooser.anyMapFiles);
}).size(210f, 64f);
}
cont.clear();

View File

@@ -108,6 +108,7 @@ public class PausedDialog extends FloatingDialog{
if(control.saves.getCurrent() == null || !control.saves.getCurrent().isAutosave() || state.rules.tutorial){
state.set(State.menu);
logic.reset();
return;
}
@@ -119,6 +120,7 @@ public class PausedDialog extends FloatingDialog{
ui.showError("[accent]" + Core.bundle.get("savefail"));
}
state.set(State.menu);
logic.reset();
});
}
}

View File

@@ -126,6 +126,7 @@ public class SettingsMenuDialog extends SettingsDialog{
void addSettings(){
sound.sliderPref("musicvol", bundle.get("setting.musicvol.name", "Music Volume"), 100, 0, 100, 1, i -> i + "%");
sound.sliderPref("sfxvol", bundle.get("setting.sfxvol.name", "SFX Volume"), 100, 0, 100, 1, i -> i + "%");
sound.sliderPref("ambientvol", bundle.get("setting.ambientvol.name", "Ambient Volume"), 100, 0, 100, 1, i -> i + "%");
game.screenshakePref();
if(mobile){

View File

@@ -58,7 +58,7 @@ public class ZoneInfoDialog extends FloatingDialog{
rebuildItems.run();
cont.table(cont -> {
cont.pane(cont -> {
if(zone.locked()){
cont.addImage("icon-locked");
cont.row();
@@ -138,6 +138,7 @@ public class ZoneInfoDialog extends FloatingDialog{
() -> loadout.show(zone.loadout.core().itemCapacity, zone::getStartingItems, zone::resetStartingItems, zone::updateLaunchCost, rebuildItems, item -> data.getItem(item) > 0 && item.type == ItemType.material)
).fillX().pad(3).disabled(b -> !zone.canConfigure());
}
cont.marginRight(12f);
});
cont.row();

View File

@@ -66,6 +66,7 @@ public class MenuFragment extends Fragment{
//info icon
if(mobile){
parent.fill(c -> c.bottom().left().addButton("", "info", ui.about::show).size(84, 45));
parent.fill(c -> c.bottom().right().addButton("", "discord", ui.discord::show).size(84, 45));
}
String versionText = "[#ffffffba]" + ((Version.build == -1) ? "[#fc8140aa]custom build" : Version.modifier + " build " + Version.build);
@@ -100,7 +101,7 @@ public class MenuFragment extends Fragment{
join = new MobileButton("icon-add", isize, "$joingame", ui.join::show),
editor = new MobileButton("icon-editor", isize, "$editor", ui.maps::show),
tools = new MobileButton("icon-tools", isize, "$settings", ui.settings::show),
donate = new MobileButton("icon-donate", isize, "$donate", () -> Core.net.openURI(donationURL)),
donate = new MobileButton("icon-link", isize, "$website", () -> Core.net.openURI("https://anuke.itch.io/mindustry")),
exit = new MobileButton("icon-exit", isize, "$quit", () -> Core.app.exit());
if(!Core.graphics.isPortrait()){
@@ -108,8 +109,9 @@ public class MenuFragment extends Fragment{
container.add(play);
container.add(join);
container.add(custom);
if(ios) container.row();
container.add(maps);
container.row();
if(!ios) container.row();
container.table(table -> {
table.defaults().set(container.defaults());
@@ -118,7 +120,7 @@ public class MenuFragment extends Fragment{
table.add(tools);
if(Platform.instance.canDonate()) table.add(donate);
table.add(exit);
if(!ios) table.add(exit);
}).colspan(4);
}else{
container.marginTop(0f);

View File

@@ -25,6 +25,7 @@ import io.anuke.mindustry.game.*;
import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.input.InputHandler.*;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.type.*;
import io.anuke.mindustry.ui.*;
import io.anuke.mindustry.world.blocks.*;
@@ -100,7 +101,13 @@ public class Block extends BlockStorage{
public boolean hasShadow = true;
/** Sounds made when this block breaks.*/
public Sound breakSound = Sounds.boom;
/** The sound that this block makes while active.*/
/** The sound that this block makes while active. One sound loop. Do not overuse.*/
public Sound activeSound = Sounds.none;
/** Active sound base volume. */
public float activeSoundVolume = 0.5f;
/** The sound that this block makes while idle. Uses one sound loop for all blocks.*/
public Sound idleSound = Sounds.none;
/** Idle sound base volume. */
public float idleSoundVolume = 0.5f;
@@ -211,6 +218,11 @@ public class Block extends BlockStorage{
return progressIncrease;
}
/** @return whether this block should play its active sound.*/
public boolean shouldActiveSound(Tile tile){
return false;
}
/** @return whether this block should play its idle sound.*/
public boolean shouldIdleSound(Tile tile){
return canProduce(tile);
@@ -282,6 +294,15 @@ public class Block extends BlockStorage{
/** Called after the block is placed by this client. */
@CallSuper
public void playerPlaced(Tile tile){
if(outputsPower && !consumesPower){
PowerNode.lastPlaced = tile.pos();
}
}
/** Called after the block is placed by anyone. */
@CallSuper
public void placed(Tile tile){
if(Net.client()) return;
if((consumesPower && !outputsPower) || (!consumesPower && outputsPower)){
int range = 10;
@@ -289,7 +310,7 @@ public class Block extends BlockStorage{
Geometry.circle(tile.x, tile.y, range, (x, y) -> {
Tile other = world.ltile(x, y);
if(other != null && other.block instanceof PowerNode && ((PowerNode)other.block).linkValid(other, tile) && !other.entity.proximity().contains(tile) &&
!(outputsPower && tile.entity.proximity().contains(p -> p.entity != null && p.entity.power != null && p.entity.power.graph == other.entity.power.graph))){
!(outputsPower && tile.entity.proximity().contains(p -> p.entity != null && p.entity.power != null && p.entity.power.graph == other.entity.power.graph))){
tempTiles.add(other);
}
});
@@ -298,19 +319,11 @@ public class Block extends BlockStorage{
Call.linkPowerNodes(null, tempTiles.first(), tile);
}
}
if(outputsPower && !consumesPower){
PowerNode.lastPlaced = tile.pos();
}
}
public void removed(Tile tile){
}
/** Called after the block is placed by anyone. */
public void placed(Tile tile){
}
/** Called every frame a unit is on this tile. */
public void unitOn(Tile tile, Unit unit){
}

View File

@@ -54,7 +54,7 @@ public class BuildBlock extends Block{
Effects.effect(Fx.breakBlock, tile.drawx(), tile.drawy(), block.size);
world.removeBlock(tile);
Events.fire(new BlockBuildEndEvent(tile, team, true));
Sounds.breaks.at(tile);
Sounds.breaks.at(tile, Mathf.random(0.7f, 1.4f));
}
@Remote(called = Loc.server)
@@ -75,7 +75,7 @@ public class BuildBlock extends Block{
Core.app.post(() -> tile.block().playerPlaced(tile));
}
Core.app.post(() -> Events.fire(new BlockBuildEndEvent(tile, team, false)));
Sounds.place.at(tile);
Sounds.place.at(tile, Mathf.random(0.7f, 1.4f));
}
@Override

View File

@@ -105,7 +105,7 @@ public class LaserTurret extends PowerTurret{
}
@Override
public boolean shouldIdleSound(Tile tile){
public boolean shouldActiveSound(Tile tile){
LaserTurretEntity entity = tile.entity();
return entity.bulletLife > 0 && entity.bullet != null;

View File

@@ -5,6 +5,7 @@ import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.bullet.*;
import io.anuke.mindustry.entities.effect.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.type.*;
import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.consumers.*;
@@ -19,6 +20,7 @@ public abstract class LiquidTurret extends Turret{
public LiquidTurret(String name){
super(name);
hasLiquids = true;
activeSound = Sounds.spray;
}
/** Initializes accepted ammo map. Format: [liquid1, bullet1, liquid2, bullet2...] */
@@ -44,6 +46,12 @@ public abstract class LiquidTurret extends Turret{
});
}
@Override
public boolean shouldActiveSound(Tile tile){
TurretEntity entity = tile.entity();
return entity.target != null && hasAmmo(tile);
}
@Override
protected boolean validateTarget(Tile tile){
TurretEntity entity = tile.entity();
@@ -79,7 +87,7 @@ public abstract class LiquidTurret extends Turret{
Effects.effect(type.shootEffect, entity.liquids.current().color, tile.drawx() + tr.x, tile.drawy() + tr.y, entity.rotation);
Effects.effect(type.smokeEffect, entity.liquids.current().color, tile.drawx() + tr.x, tile.drawy() + tr.y, entity.rotation);
shootSound.at(tile);
//shootSound.at(tile);
if(shootShake > 0){
Effects.shake(shootShake, shootShake, tile.entity);

View File

@@ -279,7 +279,7 @@ public abstract class Turret extends Block{
Effects.effect(shootEffect, tile.drawx() + tr.x, tile.drawy() + tr.y, entity.rotation);
Effects.effect(smokeEffect, tile.drawx() + tr.x, tile.drawy() + tr.y, entity.rotation);
shootSound.at(tile);
shootSound.at(tile, Mathf.random(0.9f, 1.1f));
if(shootShake > 0){
Effects.shake(shootShake, shootShake, tile.entity);

View File

@@ -1,19 +1,17 @@
package io.anuke.mindustry.world.blocks.distribution;
import io.anuke.arc.Core;
import io.anuke.arc.collection.LongArray;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.*;
import io.anuke.arc.collection.*;
import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.*;
import io.anuke.mindustry.entities.type.TileEntity;
import io.anuke.mindustry.entities.type.Unit;
import io.anuke.mindustry.graphics.Layer;
import io.anuke.mindustry.input.InputHandler.PlaceDraw;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.input.InputHandler.*;
import io.anuke.mindustry.type.*;
import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.meta.*;
import java.io.*;
@@ -41,6 +39,9 @@ public class Conveyor extends Block{
group = BlockGroup.transportation;
hasItems = true;
itemCapacity = 4;
idleSound = Sounds.conveyor;
idleSoundVolume = 0.004f;
}
private static int compareItems(long a, long b){
@@ -76,6 +77,12 @@ public class Conveyor extends Block{
tilesize * entity.blendsclx, tilesize * entity.blendscly, rotation * 90);
}
@Override
public boolean shouldIdleSound(Tile tile){
ConveyorEntity entity = tile.entity();
return entity.clogHeat <= 0.5f ;
}
@Override
public void onProximityUpdate(Tile tile){
super.onProximityUpdate(tile);

View File

@@ -11,6 +11,7 @@ import io.anuke.arc.util.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.ui.*;
import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.blocks.*;
@@ -106,6 +107,14 @@ public class PowerNode extends PowerBlock{
Call.linkPowerNodes(null, tile, before);
}
lastPlaced = tile.pos();
super.playerPlaced(tile);
}
@Override
public void placed(Tile tile){
if(Net.client()) return;
Predicate<Tile> valid = other -> other != null && other != tile && ((!other.block().outputsPower && other.block().consumesPower) || (other.block().outputsPower && !other.block().consumesPower)) && linkValid(tile, other)
&& !other.entity.proximity().contains(tile) && other.entity.power.graph != tile.entity.power.graph;
@@ -120,8 +129,7 @@ public class PowerNode extends PowerBlock{
tempTiles.sort(Structs.comparingFloat(t -> t.dst2(tile)));
tempTiles.each(valid, other -> Call.linkPowerNodes(null, tile, other));
lastPlaced = tile.pos();
super.playerPlaced(tile);
super.placed(tile);
}
@Override

View File

@@ -29,11 +29,6 @@ public class ThermalGenerator extends PowerGenerator{
drawPlaceText(Core.bundle.formatFloat("bar.efficiency", sumAttribute(Attribute.heat, x, y) * 100, 1), x, y, valid);
}
@Override
public void placed(Tile tile){
super.placed(tile);
}
@Override
public void onProximityAdded(Tile tile){
super.onProximityAdded(tile);

View File

@@ -10,6 +10,7 @@ import io.anuke.mindustry.content.*;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.Effects.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.type.*;
import io.anuke.mindustry.ui.*;
@@ -65,8 +66,8 @@ public class Drill extends Block{
liquidCapacity = 5f;
hasItems = true;
//idleSound = Sounds.drill;
//idleSoundVolume = 0.5f;
idleSound = Sounds.drill;
idleSoundVolume = 0.002f;
}
@Override

View File

@@ -1,21 +1,18 @@
package io.anuke.mindustry.world.blocks.production;
import io.anuke.arc.function.Consumer;
import io.anuke.arc.function.Supplier;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.Time;
import io.anuke.mindustry.content.Fx;
import io.anuke.mindustry.entities.Effects;
import io.anuke.mindustry.entities.Effects.Effect;
import io.anuke.mindustry.entities.type.TileEntity;
import io.anuke.arc.function.*;
import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.math.*;
import io.anuke.arc.util.*;
import io.anuke.mindustry.content.*;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.Effects.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.type.*;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.consumers.ConsumeLiquidBase;
import io.anuke.mindustry.world.consumers.ConsumeType;
import io.anuke.mindustry.world.meta.BlockStat;
import io.anuke.mindustry.world.meta.StatUnit;
import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.consumers.*;
import io.anuke.mindustry.world.meta.*;
import java.io.*;
@@ -37,6 +34,8 @@ public class GenericCrafter extends Block{
solid = true;
hasItems = true;
health = 60;
idleSound = Sounds.machine;
idleSoundVolume = 0.03f;
}
@Override
@@ -58,6 +57,11 @@ public class GenericCrafter extends Block{
}
}
@Override
public boolean shouldIdleSound(Tile tile){
return tile.entity.cons.valid();
}
@Override
public void init(){
outputsLiquid = outputLiquid != null;

View File

@@ -30,8 +30,8 @@ public class CoreBlock extends StorageBlock{
update = true;
hasItems = true;
flags = EnumSet.of(BlockFlag.target, BlockFlag.producer);
idleSound = Sounds.respawning;
idleSoundVolume = 1f;
activeSound = Sounds.respawning;
activeSoundVolume = 1f;
}
@Remote(called = Loc.server)
@@ -79,6 +79,7 @@ public class CoreBlock extends StorageBlock{
@Override
public void placed(Tile tile){
super.placed(tile);
state.teams.get(tile.getTeam()).cores.add(tile);
}
@@ -155,7 +156,7 @@ public class CoreBlock extends StorageBlock{
}
@Override
public boolean shouldIdleSound(Tile tile){
public boolean shouldActiveSound(Tile tile){
CoreEntity entity = tile.entity();
return entity.spawnPlayer != null;