diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java index 2cc928d322..96f99dcd5f 100644 --- a/android/src/io/anuke/mindustry/AndroidLauncher.java +++ b/android/src/io/anuke/mindustry/AndroidLauncher.java @@ -18,6 +18,7 @@ import io.anuke.arc.util.*; import io.anuke.arc.util.serialization.*; import io.anuke.mindustry.game.Saves.*; import io.anuke.mindustry.io.*; +import io.anuke.mindustry.mod.*; import io.anuke.mindustry.ui.dialogs.*; import java.io.*; @@ -134,14 +135,11 @@ public class AndroidLauncher extends AndroidApplication{ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); } - @Override - public boolean canDonate(){ - return true; - } }, new AndroidApplicationConfiguration(){{ useImmersiveMode = true; depth = 0; hideStatusBar = true; + errorHandler = ModCrashHandler::handle; }}); checkFiles(getIntent()); } diff --git a/annotations/src/main/java/io/anuke/annotations/AssetsAnnotationProcessor.java b/annotations/src/main/java/io/anuke/annotations/AssetsAnnotationProcessor.java index 0eb1ce32d4..3c28c83cea 100644 --- a/annotations/src/main/java/io/anuke/annotations/AssetsAnnotationProcessor.java +++ b/annotations/src/main/java/io/anuke/annotations/AssetsAnnotationProcessor.java @@ -35,8 +35,8 @@ public class AssetsAnnotationProcessor extends AbstractProcessor{ try{ path = Paths.get(Utils.filer.createResource(StandardLocation.CLASS_OUTPUT, "no", "no") - .toUri().toURL().toString().substring(System.getProperty("os.name").contains("Windows") ? 6 : "file:".length())) - .getParent().getParent().getParent().getParent().getParent().getParent().toString(); + .toUri().toURL().toString().substring(System.getProperty("os.name").contains("Windows") ? 6 : "file:".length())) + .getParent().getParent().getParent().getParent().getParent().getParent().toString(); path = path.replace("%20", " "); processSounds("Sounds", path + "/assets/sounds", "io.anuke.arc.audio.Sound"); diff --git a/build.gradle b/build.gradle index 1aaf194da3..0e557493be 100644 --- a/build.gradle +++ b/build.gradle @@ -5,12 +5,13 @@ buildscript{ google() maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" } jcenter() + maven{ url 'https://jitpack.io' } } dependencies{ - classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.7' + classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.8-SNAPSHOT' classpath "com.badlogicgames.gdx:gdx-tools:1.9.10" - classpath "com.badlogicgames.packr:packr:2.1-SNAPSHOT" + classpath "com.github.anuken:packr:-SNAPSHOT" } } @@ -20,12 +21,12 @@ allprojects{ group = 'com.github.Anuken' ext{ - versionNumber = '4' + versionNumber = '5' if(!project.hasProperty("versionModifier")) versionModifier = 'release' if(!project.hasProperty("versionType")) versionType = 'official' appName = 'Mindustry' gdxVersion = '1.9.10' - roboVMVersion = '2.3.7' + roboVMVersion = '2.3.8-SNAPSHOT' steamworksVersion = '1.8.0' arcHash = null @@ -166,13 +167,14 @@ project(":ios"){ def props = new Properties() if(vfile.exists()){ props.load(new FileInputStream(vfile)) + }else{ + props['app.id'] = 'io.anuke.mindustry' + props['app.version'] = '5.0' + props['app.mainclass'] = 'io.anuke.mindustry.IOSLauncher' + props['app.executable'] = 'IOSLauncher' + props['app.name'] = 'Mindustry' } - - props['app.id'] = 'io.anuke.mindustry' - props['app.version'] = '4.2.1' - props['app.mainclass'] = 'io.anuke.mindustry.IOSLauncher' - props['app.executable'] = 'IOSLauncher' - props['app.name'] = 'Mindustry' + props['app.build'] = (!props.containsKey("app.build") ? 40 : props['app.build'].toInteger() + 1) + "" props.store(vfile.newWriter(), null) } @@ -194,7 +196,7 @@ project(":core"){ apply plugin: "java" task preGen{ - outputs.upToDateWhen{ false } + outputs.upToDateWhen{ false } generateLocales() writeVersion() } diff --git a/core/assets-raw/sprites/blocks/extra/rubble-5-0.png b/core/assets-raw/sprites/blocks/extra/rubble-5-0.png new file mode 100644 index 0000000000..8b22b6fc14 Binary files /dev/null and b/core/assets-raw/sprites/blocks/extra/rubble-5-0.png differ diff --git a/core/assets-raw/sprites/blocks/extra/rubble-5-1.png b/core/assets-raw/sprites/blocks/extra/rubble-5-1.png new file mode 100644 index 0000000000..8b22b6fc14 Binary files /dev/null and b/core/assets-raw/sprites/blocks/extra/rubble-5-1.png differ diff --git a/core/assets-raw/sprites/blocks/extra/rubble-6-0.png b/core/assets-raw/sprites/blocks/extra/rubble-6-0.png new file mode 100644 index 0000000000..3f3fb19086 Binary files /dev/null and b/core/assets-raw/sprites/blocks/extra/rubble-6-0.png differ diff --git a/core/assets-raw/sprites/blocks/extra/rubble-6-1.png b/core/assets-raw/sprites/blocks/extra/rubble-6-1.png new file mode 100644 index 0000000000..3f3fb19086 Binary files /dev/null and b/core/assets-raw/sprites/blocks/extra/rubble-6-1.png differ diff --git a/core/assets-raw/sprites/blocks/extra/rubble-7-0.png b/core/assets-raw/sprites/blocks/extra/rubble-7-0.png new file mode 100644 index 0000000000..ba3fb3f3af Binary files /dev/null and b/core/assets-raw/sprites/blocks/extra/rubble-7-0.png differ diff --git a/core/assets-raw/sprites/blocks/extra/rubble-7-1.png b/core/assets-raw/sprites/blocks/extra/rubble-7-1.png new file mode 100644 index 0000000000..ba3fb3f3af Binary files /dev/null and b/core/assets-raw/sprites/blocks/extra/rubble-7-1.png differ diff --git a/core/assets-raw/sprites/blocks/extra/rubble-8-0.png b/core/assets-raw/sprites/blocks/extra/rubble-8-0.png new file mode 100644 index 0000000000..5db796476d Binary files /dev/null and b/core/assets-raw/sprites/blocks/extra/rubble-8-0.png differ diff --git a/core/assets-raw/sprites/blocks/extra/rubble-8-1.png b/core/assets-raw/sprites/blocks/extra/rubble-8-1.png new file mode 100644 index 0000000000..5db796476d Binary files /dev/null and b/core/assets-raw/sprites/blocks/extra/rubble-8-1.png differ diff --git a/core/assets-raw/sprites/blocks/storage/unloader-center.png b/core/assets-raw/sprites/blocks/storage/unloader-center.png new file mode 100644 index 0000000000..e5a2fffd15 Binary files /dev/null and b/core/assets-raw/sprites/blocks/storage/unloader-center.png differ diff --git a/core/assets-raw/sprites/ui/icons/icon-reddit.png b/core/assets-raw/sprites/ui/icons/icon-reddit.png new file mode 100644 index 0000000000..16be9726df Binary files /dev/null and b/core/assets-raw/sprites/ui/icons/icon-reddit.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 5c89a303c8..f562b188f7 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -3,6 +3,7 @@ credits = Credits contributors = Translators and Contributors discord = Join the Mindustry Discord! link.discord.description = The official Mindustry Discord chatroom +link.reddit.description = The Mindustry subreddit link.github.description = Game source code link.changelog.description = List of update changes link.dev-builds.description = Unstable development builds @@ -16,6 +17,7 @@ screenshot.invalid = Map too large, potentially not enough memory for screenshot gameover = Game Over gameover.pvp = The[accent] {0}[] team is victorious! highscore = [accent]New highscore! +copied = Copied. load.sound = Sounds load.map = Maps @@ -24,6 +26,23 @@ load.content = Content load.system = System load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.replace = A schematic by that name already exists. Replace it? +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks + stat.wave = Waves Defeated:[accent] {0} stat.enemiesDestroyed = Enemies Destroyed:[accent] {0} stat.built = Buildings Built:[accent] {0} @@ -49,6 +68,7 @@ customgame = Custom Game newgame = New Game none = minimap = Minimap +position = Position close = Close website = Website quit = Quit @@ -82,6 +102,8 @@ mod.import.github = Import Github Mod mod.remove.confirm = This mod will be deleted. mod.author = [LIGHT_GRAY]Author:[] {0} mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = About name = Name: @@ -217,6 +239,7 @@ loading = [accent]Loading... reloading = [accent]Reloading Mods... saving = [accent]Saving... cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy pausebuilding = [accent][[{0}][] to pause building resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Wave {0} @@ -237,16 +260,18 @@ map.nospawn = This map does not have any cores for the player to spawn in! Add a map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] non-orange[] 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. -map.publish.error = Error publishing map: {0} -map.update = Update Map -map.load.error = Error fetching workshop details: {0} -map.missing = This map has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked from the map. +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! -map.menu = Select what you would like to do with this map. -map.changelog = Changelog (optional): +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} + editor.brush = Brush editor.openin = Open In Editor editor.oregen = Ore Generation @@ -386,7 +411,6 @@ tutorial = Tutorial tutorial.retake = Re-Take Tutorial editor = Editor mapeditor = Map Editor -donate = Donate abandon = Abandon abandon.text = This zone and all its resources will be lost to the enemy. @@ -593,6 +617,7 @@ setting.fps.name = Show FPS setting.vsync.name = VSync setting.pixelate.name = Pixelate[lightgray] (disables animations) setting.minimap.name = Show Minimap +setting.position.name = Show Player Position setting.musicvol.name = Music Volume setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Mute Music @@ -617,14 +642,16 @@ category.multiplayer.name = Multiplayer command.attack = Attack command.rally = Rally command.retreat = Retreat -keybind.gridMode.name = Block Select -keybind.gridModeShift.name = Category Select keybind.clear_building.name = Clear Building keybind.press = Press a key... 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.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Toggle Fullscreen keybind.select.name = Select/Shoot keybind.diagonal_placement.name = Diagonal Placement @@ -1067,7 +1094,7 @@ block.junction.description = Acts as a bridge for two crossing conveyor belts. U block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. 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.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. +block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[] block.distributor.description = An advanced router. Splits items to up to 7 other directions equally. block.overflow-gate.description = A combination splitter and router. Only outputs to the left and right if the front path is blocked. diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index c8210aeefa..bdbc7a552b 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -16,11 +16,28 @@ screenshot.invalid = Mapa je moc velká, nemusí být dost paměti pro snímek o gameover = Konec hry gameover.pvp = [accent] {0}[] Tým Vyhrál! highscore = [accent]Nový rekord! +copied = Copied. load.sound = Zvuky load.map = Mapy load.image = Obrázky load.content = Obsah load.system = System +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Vln poraženo:[accent] {0} stat.enemiesDestroyed = Nepřátel zničeno:[accent] {0} stat.built = Budov postaveno:[accent] {0} @@ -29,6 +46,7 @@ stat.deconstructed = Budov rozebráno:[accent] {0} stat.delivered = Materiálu odesláno: stat.rank = Závěrečné hodnocení: [accent]{0} launcheditems = [accent]Odeslané předměty +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = Jsi si jistý že chceš smazat mapu "[accent]{0}[]"? level.highscore = Nejvyšší skóre: [accent]{0} level.select = Výběr levelu @@ -40,26 +58,45 @@ database = Databáze objektů savegame = Uložit hru loadgame = Načíst hru joingame = Připojit se ke hře -addplayers = Přidat/Odebrat hráče customgame = Vlastní hra newgame = Nová hra none = <žádný> minimap = Minimapa +position = Position close = Zavřít website = Web. stránky quit = Ukončit -save.quit = Save & Quit +save.quit = Uložit a ukončit maps = Mapy -maps.browse = Browse Maps +maps.browse = Procházet mapy continue = Pokračovat maps.none = [LIGHT_GRAY]Žádné mapy nebyly nalezeny! -invalid = Invalid -preparingconfig = Preparing Config -preparingcontent = Preparing Content -uploadingcontent = Uploading Content -uploadingpreviewfile = Uploading Preview File -committingchanges = Comitting Changes -done = Done +invalid = Neplatné +preparingconfig = Připravuji Config +preparingcontent = Připravuji obsah +uploadingcontent = Nahrávám obsah +uploadingpreviewfile = Nahrávám prohlížecí soubor +committingchanges = Provádím změny +done = Hotovo +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = O hře name = Jméno: noname = Nejdřív si vyber[accent] herní jméno[]. @@ -68,20 +105,20 @@ unlocked = Nový blok odemknut! completed = [accent]Dokončeno techtree = Technologie research.list = [LIGHT_GRAY]Výzkum: -research = Zkoumej +research = Výzkum researched = [LIGHT_GRAY]{0} vyzkoumán(o). players = {0} hráčů online players.single = {0} hráč online server.closing = [accent]Zavírám server... server.kicked.kick = Byl jsi vykopnut ze serveru! -server.kicked.whitelist = You are not whitelisted here. +server.kicked.whitelist = Na server ti nebyl udělen přístup. server.kicked.serverClose = Server je zavřený. -server.kicked.vote = You have been vote-kicked. Goodbye. +server.kicked.vote = Byl jsi odhlasován a vykopnut. Sbohem. server.kicked.clientOutdated = Zastaralý klient hry! Aktualizuj si hru! server.kicked.serverOutdated = Zastaralý server! Řekni hostiteli o aktualizaci! server.kicked.banned = Jsi zabanován na tomto serveru. -server.kicked.typeMismatch = This server is not compatible with your build type. -server.kicked.playerLimit = This server is full. Wait for an empty slot. +server.kicked.typeMismatch = Tento server není kompatibilní s verzí tvého klienta +server.kicked.playerLimit = Tento server je plný, vyčkej na volné místo. server.kicked.recentKick = Před nedávnem jsi byl vykopnut.\nPočkej než se znovu připojíš. server.kicked.nameInUse = Někdo se stejným jménem\nje aktuálně na serveru. server.kicked.nameEmpty = Tvé jméno je neplatné. @@ -92,13 +129,13 @@ server.versions = Verze klienta:[accent] {0}[]\nVerze serveru:[accent] {1}[] host.info = [accent]hostitel[] hostuje server na portu [scarlet]6567[]. \nKdokoliv na stejné [LIGHT_GRAY]wifi nebo místní síti[] by měl vidět server ve svém listu serverů.\n\nJestli chcete aby se uživatelé připojovali odkudkoliv pomocí IP, [accent]přesměrování portů[] je nutné.\n\n[LIGHT_GRAY]Poznámka: Jestli někdo má problém s připojením ke své LAN hře, ujistěte se že má Mindustry povolený přístup k místní síti v nastavení Firewallu. join.info = Tady můžeš vložit [accent]IP serveru[] ke kterému se chceš připojit, nebo objevit [accent]Servery Místní sítě[] ke kterým se chceš připojit.\nLAN i Multiplayer jsou podporovány.\n\n[LIGHT_GRAY]Poznámka: Není žádný globální seznam serverů; Pokud se budeš chtít připojit k někomu pomocí IP, budeš jí muset znát od hostitele. hostserver = Hostovat hru -invitefriends = Invite Friends +invitefriends = Pozvat přátele hostserver.mobile = Hostovat\nHru host = Hostitel hosting = [accent]Otevírám server... hosts.refresh = Obnovit hosts.discovering = Hledám hry LAN -hosts.discovering.any = Discovering games +hosts.discovering.any = Hledám hry server.refreshing = Obnovuji servery hosts.none = [lightgray]Žádné místní hry nebyly nalezeny! host.invalid = [scarlet]Nejde se připojit k hostiteli. @@ -106,7 +143,7 @@ trace = Vystopovat hráče trace.playername = Jméno hráče: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Unikátní ID: [accent]{0} -trace.mobile = Mobile Client: [accent]{0} +trace.mobile = Mobilní klient: [accent]{0} trace.modclient = Vlastní Klient: [accent]{0} invalidid = Neplatná IP klienta! Poslat zprávu o chybě. server.bans = Bany. @@ -122,25 +159,24 @@ server.version = [lightgray]Verze: {0} {1} server.custombuild = [yellow]Vlastní verze confirmban = Jsi si jistý že chceš zabanovat tohoto hráče? confirmkick = Jsi si jistý že chceš vykopnout tohoto hráče? -confirmvotekick = Are you sure you want to vote-kick this player? +confirmvotekick = Jsi si jistý že chceš hlasovat pro vykopnutí tohoto hráče? confirmunban = Jsi si jistý že chceš odbanovat tohoto hráče confirmadmin = Jsi si jistý že chceš tohoto hráče pasovat na admina? confirmunadmin = Jsi si jistý že chceš odebrat práva tomuto hráči? joingame.title = Připojit se ke hře joingame.ip = Adresa: disconnect = Odpojen. -disconnect.error = Connection error. -disconnect.closed = Connection closed. -disconnect.timeout = Timed out. +disconnect.error = Chyba připojení. +disconnect.closed = Připojení bylo uzavřeno. +disconnect.timeout = Vypršel čas pro připojení. disconnect.data = Chyba načtení dat světa! -cantconnect = Unable to join game ([accent]{0}[]). +cantconnect = Není možno připojit se ke hře ([accent]{0}[]). connecting = [accent]Připojuji se... connecting.data = [accent]Načítám data světa... server.port = Port: server.addressinuse = Adresu již někdo používá! server.invalidport = Neplatné číslo portu! server.error = [crimson]Chyba při hostování serveru: [accent]{0} -save.old = Tato uložená pozice je pro starší verzi hry a již není možno jí použít.\n\n[LIGHT_GRAY]Zpětná kompatibilita bude implementována v plné verzi 4.0. save.new = Nové uložení save.overwrite = Jsi si jistý že chceš přepsat\ntento ukládaci slot? overwrite = Přepsat @@ -159,7 +195,7 @@ save.rename = Přejmenovat save.rename.text = Nové jméno: selectslot = Vyber uložení. slot = [accent]Slot {0} -editmessage = Edit Message +editmessage = Upravit zprávu save.corrupted = [accent]Uložení je poškozené nebo neplatné\nPokud jsi právě aktualizoval svou hru, je to možná změnou formátu pro ukládání a [scarlet]NE[] chyba hry. empty = on = On @@ -167,13 +203,14 @@ off = Off save.autosave = Automatické uložení: {0} save.map = Mapa: {0} save.wave = Vlna {0} -save.mode = Gamemode: {0} +save.mode = Herní mod: {0} save.date = Naposledy uloženo: {0} save.playtime = Herní čas: {0} warning = Varování. confirm = Potvrdit delete = Smazat -view.workshop = View In Workshop +view.workshop = Prohlédnout ve workshopu +workshop.listing = Edit Workshop Listing ok = OK open = Otevřít customize = Přizpůsobit @@ -187,11 +224,16 @@ data.exported = Data exportována. data.invalid = Neplatná herní data. data.import.confirm = Import externích dat smaže[scarlet] všechna[] vaše současná herní data.\n[accent]To nelze vrátit zpět![]\n\nPo importu data se hra ukončí. classic.export = Exportovat klasická data -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? +classic.export.text = [accent]Mindustry[] právě mělo významně velkou aktualizaci.\nKlasické (v3.5 build 40) uložení nebo mapa byly detekovány. Chtěl by jsi exportovat toto uložení do domácího adresáře tvého zařízení , pro pozdější použití v klasické verzi Mindustry ? quit.confirm = Jsi si jistý že chceš ukončit ? quit.confirm.tutorial = Jste si vážně jist?\nTutoriál se dá znovu spustit v[accent] Nastavení->Hra->Spusť Tutoriál.[] loading = [accent]Načítám... +reloading = [accent]Reloading Mods... saving = [accent]Ukládám... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Vlna {0} wave.waiting = [LIGHT_GRAY]Vlna za {0} wave.waveInProgress = [LIGHT_GRAY]Vlna v pohybu @@ -210,11 +252,17 @@ map.nospawn = Tato mapa nemá žádné jádro pro hráče ke spawnutí! Přidej map.nospawn.pvp = Tato mapa nemá žádné nepřátelské jádro pro druhého hráče! Přidej v editoru do této mapy[SCARLET] červené[] jádro. map.nospawn.attack = Tato mapa nemá žádná nepřátelská jádra ke zničení! Přidej v editoru do této mapy [SCARLET] červené[] jádro. map.invalid = Chyba v načítání mapy: poškozený nebo neplatný soubor mapy. -map.publish.error = Error publishing map: {0} -map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! -eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} +map.publish.confirm = Jsi si jistý že chceš publikovat tuto mapu?\n\n[lightgray]Ujisti se že jsi nejprve souhlasil se smluvními podmínkami workshopu, tvá mapa se jinak nezobrazí. +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): +eula = Smluvní podmínky Steam +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Štětec editor.openin = Otevřít v editoru. editor.oregen = Generovat nerostné zdroje. @@ -222,46 +270,46 @@ editor.oregen.info = Generování nerostných zdrojů: editor.mapinfo = Informace o mapě editor.author = Autor: editor.description = Popis: -editor.nodescription = A map must have a description of at least 4 characters before being published. +editor.nodescription = Tvá mapa musí mít popisek minimálně o 4 znacích aby mohla být publikována editor.waves = Vln: editor.rules = Pravidla: -editor.generation = Generation: -editor.ingame = Edit In-Game -editor.publish.workshop = Publish On Workshop +editor.generation = Generace: +editor.ingame = Upravit ve hře +editor.publish.workshop = Publikovat na workshop editor.newmap = Nová mapa workshop = Workshop -waves.title = Waves -waves.remove = Remove -waves.never = -waves.every = every -waves.waves = wave(s) -waves.perspawn = per spawn -waves.to = to -waves.boss = Boss -waves.preview = Preview -waves.edit = Edit... -waves.copy = Copy to Clipboard -waves.load = Load from Clipboard -waves.invalid = Invalid waves in clipboard. -waves.copied = Waves copied. -waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout. -editor.default = [LIGHT_GRAY] -details = Details... -edit = Edit... +waves.title = Vln +waves.remove = Odebrat +waves.never = +waves.every = každých +waves.waves = vln(y) +waves.perspawn = za zrození +waves.to = do +waves.boss = Bosse +waves.preview = Prohlížet +waves.edit = Upravit.... +waves.copy = Uložit do schránky +waves.load = Načíst ze schránky +waves.invalid = Neplatné vlny ve schránce +waves.copied = Vln zkopírováno. +waves.none = Žádní nepřátelé definováni.\nPřipomínka toho že prázdné rozložení vln se automaticky změní na výchozí nastavení. +editor.default = [LIGHT_GRAY] +details = Detaily... +edit = Upravit editor.name = Jméno: -editor.spawn = Spawn Unit -editor.removeunit = Remove Unit +editor.spawn = Zrodit jednotku. +editor.removeunit = Odebrat jednotku. editor.teams = Týmy -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.errornot = This is not a map file. -editor.errorheader = This map file is either not valid or corrupt. -editor.errorname = Map has no name defined. -editor.update = Update -editor.randomize = Randomize -editor.apply = Apply +editor.errorload = Chyba při načítání souboru:\n[accent]{0} +editor.errorsave = Chyba při ukládání souboru:\n[accent]{0} +editor.errorimage = Toto je obrázek a ne mapa,nemysli si že změnou formátu souboru tohle obejdeš s tím že to bude fungovat.\n\nJestli chceš použít legacy mapu, použij 'importovat legacy mapu' v menu editoru. +editor.errorlegacy = Tato mapa je příliš stará a užití legacy formátu již dávno není podporováno. +editor.errornot = Toto není soubor mapy. +editor.errorheader = Tento soubor mapy je buď neplatný a nebo poškozen. +editor.errorname = Mapa nemá definované jméno. +editor.update = Aktualizovat +editor.randomize = Náhodně +editor.apply = Aplikovat editor.generate = Generovat editor.resize = Změnit velikost editor.loadmap = Načíst mapu @@ -289,96 +337,98 @@ editor.resizemap = Změnit velikost mapy editor.mapname = Jméno mapy: editor.overwrite = [accent]Varování!\nToto přepíše již existující mapu. editor.overwrite.confirm = [scarlet]Varování![] Mapa s tímto jménem již existuje. Jsi si jistý že ji chceš přepsat? -editor.exists = A map with this name already exists. +editor.exists = Mapa s tímto jménem již existuje. editor.selectmap = Vyber mapu k načtení: -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]No filters! Add one with the button below. -filter.distort = Distort -filter.noise = Noise -filter.median = Median -filter.oremedian = Ore Median -filter.blend = Blend -filter.defaultores = Default Ores -filter.ore = Ore -filter.rivernoise = River Noise -filter.mirror = Mirror -filter.clear = Clear -filter.option.ignore = Ignore -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 = Block -filter.option.floor = Floor -filter.option.flooronto = Target Floor -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 +toolmode.replace = Nahradit. +toolmode.replace.description = Kreslí jen na pevných blocích. +toolmode.replaceall = Nahradit vše +toolmode.replaceall.description = Nahradit všechny bloky na mapě. +toolmode.orthogonal = Ortogonální +toolmode.orthogonal.description = Kreslí jen Ortogonální linie. +toolmode.square = Čtverec +toolmode.square.description = Čtvercový štětec. +toolmode.eraseores = Maže rudy. +toolmode.eraseores.description = Maže jen rudy. +toolmode.fillteams = Doplnit skupinu +toolmode.fillteams.description = Doplní hromadně namísto po blocích. +toolmode.drawteams = Kreslí skupiny +toolmode.drawteams.description = Kreslí skupiny namísto po blocích. +filters.empty = [LIGHT_GRAY]Žádné filtry! Přidej ho tlačítkem níže. +filter.distort = Distorze +filter.noise = Hluk +filter.median = Medián +filter.oremedian = Medián rud +filter.blend = Splynutí +filter.defaultores = Výchozí bloky +filter.ore = Rudy +filter.rivernoise = Hluk řek +filter.mirror = Zrcadlit +filter.clear = Vyčistit +filter.option.ignore = Ignorovat +filter.scatter = Rozházet +filter.terrain = Terén +filter.option.scale = Měřítko +filter.option.chance = Šance +filter.option.mag = Velikost +filter.option.threshold = Práh +filter.option.circle-scale = Měřítko kruhu +filter.option.octaves = Octávy +filter.option.falloff = Spád +filter.option.angle = Úhel +filter.option.block = Blok +filter.option.floor = Podlaha +filter.option.flooronto = Cílová podlaha +filter.option.wall = Stěna +filter.option.ore = Ruda +filter.option.floor2 = Sekundární podlaží +filter.option.threshold2 = Sekundární podlaží +filter.option.radius = Poloměr +filter.option.percentile = Percentil width = Šířka: height = Výška: menu = Hlavní menu play = Hrát -campaign = Campaign +campaign = Kampaň load = Načíst save = Uložit fps = FPS: {0} -tps = TPS: {0} ping = Odezva: {0}ms language.restart = Prosím restartuj hru aby se provedla změna jazyka! settings = Nastavení tutorial = Tutoriál -tutorial.retake = Re-Take Tutorial +tutorial.retake = Zopáknout si výuku. editor = Editor mapeditor = Editor map -donate = Darovat -abandon = Abandon -abandon.text = This zone and all its resources will be lost to the enemy. -locked = Locked -complete = [LIGHT_GRAY]Complete: -zone.requirement = Wave {0} in zone {1} -resume = Resume Zone:\n[LIGHT_GRAY]{0} -bestwave = [LIGHT_GRAY]Best: {0} -launch = Launch -launch.title = Launch Successful -launch.next = [LIGHT_GRAY]next opportunity at wave {0} -launch.unable2 = [scarlet]Unable to LAUNCH.[] -launch.confirm = This will launch all resources in your core.\nYou will not be able to return to this base. -launch.skip.confirm = If you skip now, you will not be able to launch until later waves. -uncover = Uncover -configure = Configure Loadout -configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. -configure.invalid = Amount must be a number between 0 and {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: -zone.objective = [lightgray]Objective: [accent]{0} -zone.objective.survival = Survive -zone.objective.attack = Destroy Enemy Core -add = Add... -boss.health = Boss Health +abandon = Opustit +abandon.text = Tato zóna a všechny její zdroje připadnou nepříteli. +locked = Zamčeno +complete = [LIGHT_GRAY]Hotovo: +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} +resume = Zpět k zóně:\n[LIGHT_GRAY]{0} +bestwave = [LIGHT_GRAY]Nejlepší: {0} +launch = Vyslat +launch.title = Vyslání úspěšné +launch.next = [LIGHT_GRAY]další možnost až ve vlně {0} +launch.unable2 = [scarlet]Není možno vyslat.[] +launch.confirm = Toto vyšle veškeré suroviny ve tvém jádru .\nJiž se na tuto základnu nebudeš moci vrátit. +launch.skip.confirm = Jestli teď zůstaneš, budeš moci odejít až v pozdější fázi. +uncover = Odkrýt +configure = Přizpůsobit vybavení +bannedblocks = Banned Blocks +addall = Add All +configure.locked = [LIGHT_GRAY]Dosáhni vlny {0}\nk nastavení svého vybavení. +configure.invalid = Hodnota musí být mezi 0 a{0}. +zone.unlocked = [LIGHT_GRAY]{0} odemčeno. +zone.requirement.complete = Vlna {0} dosažena:\n{1} podmínky zóny splněny. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} +zone.resources = Suroviny detekovány: +zone.objective = [lightgray]Cíl: [accent]{0} +zone.objective.survival = Přežij +zone.objective.attack = Znič nepřátelské jádro +add = Přidat +boss.health = Životy bosse connectfail = [crimson]Nepovedlo se připojení k serveru:\n\n[accent]{0} error.unreachable = Server je nedostupný.\nJe adresa napsaná správně? error.invalidaddress = Neplatná adresa. @@ -386,39 +436,39 @@ error.timedout = Čas vypršel!\nUjisti se že hostitel má nastavené přesměr error.mismatch = Chyba Packetu:\nKlient/Verze serveru se neshodují.\nUjisti se že máš nejnovější verzi Mindustry! error.alreadyconnected = Již připojeno. error.mapnotfound = Soubor mapy nebyl nalezen! -error.io = Network I/O error. +error.io = Chyba I/O sítě. error.any = neznámá chyba sítě. -error.bloom = Failed to initialize bloom.\nYour device may not support it. -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 -zone.saltFlats.name = Salt Flats -zone.impact0078.name = Impact 0078 -zone.crags.name = Crags -zone.fungalPass.name = Fungal Pass -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.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 = -zone.crags.description = +error.bloom = Chyba inicializace bloomu.\nTvé zařízení ho nemusí podporovat. +zone.groundZero.name = Zóna dopadu +zone.desertWastes.name = Pouštní Odpady +zone.craters.name = Krátery +zone.frozenForest.name = Zmrzlý les +zone.ruinousShores.name = Zničující pobřeží +zone.stainedMountains.name = Poskvrněné hory +zone.desolateRift.name = Trhlina pustoty +zone.nuclearComplex.name = Komplex nukleární produkce +zone.overgrowth.name = Porost +zone.tarFields.name = Tarová pole +zone.saltFlats.name = Solné nížiny +zone.impact0078.name = Dopad 0078 +zone.crags.name = Praskliny +zone.fungalPass.name = Houbový průsmyk +zone.groundZero.description = Optimální lokace kde znovu začít. Nízký výskyt nepřátel. Pár surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál. +zone.frozenForest.description = Dokonce tady, blíž k horám se spóry dokázaly rozrůst. Tyto mrazivé teploty je nemohou zadržet navěky.\n\nZačni pracovat s pomocí energie. Stav spalovací generátory. Nauč se jak používat opravovací věže. +zone.desertWastes.description = Tyto odpadní zóny jsou rozsáhlé, nepředvídatelné a skrz naskrz se hemží opuštěnými budovami.\nV této oblasti se hojně vyskytuje uhlí. Spal ho v generátorech na energii nebo syntetizuj na Grafit.\n\n[lightgray]Tato výsadková zóna není garantovaná. +zone.saltFlats.description = Na okraji pouště leží Solné nížiny. V této lokaci se nachází nemnoho surovin.\n\nNepřítel zde vybudoval zásobovací komplex. Znič jeho jádro. Nenechej kámen na kameni. +zone.craters.description = V těchto kráterech jenž jsou relikvie starých válek,se nahromadilo velké množství vody. Zmocni se této oblasti. Sbírej písek. Vyrob z něj sklo. Použij vodu k chlazení svých vrtů a střílen. +zone.ruinousShores.description = Za odpadní zónou se nachází pobřeží. Kdysi tuto oblast obýval pobřežní obranný sytém. Moc z něj nezbylo. Jen ty nejprimitivnější struktůry zůstaly nerozprášeny, zbytek padl jen v kusy oceli.\nPokračuj ve své expanzi hlouběji. Objev ztracenou technologii. +zone.stainedMountains.description = Dále ve vnitrozemí leží hory, dosud neposkvrněny spóry.\nVytěž tuto oblast oplývající titániem. Nauč se ho používat.\n\nPřítomnost nepřátelských jednotek je zde větší. Nedej jim čas na vytasení jejich největšího kalibru. +zone.overgrowth.description = Tato přerostlá džungle se nachází blíže ke zdroji spór.\nNepřítel zde zbudoval základnu. Postav jednotky Dagger a znič ji. Získej to co mělo být dávno ztraceno. +zone.tarFields.description = Hranice produkční ropné oblasti mezi horami a pouští. Jedna z mála oblastí kde se stále nachází Tar.\nAčkoliv se oblast zdá opuštěná, stále se zde nachází nepřátelské jednotky s velkou silou. Není radno je podcenit.\n\n[lightgray]Vyzkoumej technologii na produkci surovin z ropy. +zone.desolateRift.description = Extrémně nebezpečná zóna. Za cenu prostoru se zde nachází přehršel surovin. Vysoká šance na sebedestrukci. Opusť tuto oblast co nejdříve to půjde. Nenech se zmást dlouhými prodlevami mezi vlnami nepřátel. +zone.nuclearComplex.description = Bývalá továrna na zpracování thoria, dnes leží v troskách.\n[lightgray]Objev thorium a jeho široké využití.\n\nNepřátelské jednotky se zde nacházejí v hojném počtu, neustále prohledává okolí kvůli útočníkůn. +zone.fungalPass.description = Přechodová oblast mezi vysokými horami a spóry nasycenou zemí. Nachází se zde malá průzkumná základna tvého nepřítele.\nZnič ji.\nPoužij Dagger a Crawler jednotky. Znič obě nepřátelské já. +zone.impact0078.description = +zone.crags.description = settings.language = Jazyk -settings.data = Game Data +settings.data = Data hry settings.reset = nastavit výchozí settings.rebind = Přenastavit settings.controls = Ovládání @@ -428,26 +478,25 @@ settings.graphics = Zobrazení settings.cleardata = Resetovat data hry... settings.clear.confirm = Jsi si jistý že chceš resetovat obsah hry?\nTento krok je nevratný! settings.clearall.confirm = [scarlet]Varování![]\nToto vyresetuje všechna data, včetně uložení, map, odemykatelných a nastavení ovládání.\nJakmile stiskneš 'ok' data se vymažou a hra se automaticky ukončí. -settings.clearunlocks = Vymazání odemykatelných -settings.clearall = Vymazat všechno paused = [accent]< Pauza > +clear = Clear +banned = [scarlet]Banned yes = Ano no = Ne info.title = Informace error.title = [crimson]Objevila se chyba error.crashtitle = Objevila se chyba -attackpvponly = [scarlet]Only available in Attack/PvP modes -blocks.input = Input -blocks.output = Output +blocks.input = Vstup +blocks.output = Výstup blocks.booster = Booster block.unknown = [LIGHT_GRAY]??? blocks.powercapacity = Kapacita energie blocks.powershot = Energie na výstřel -blocks.damage = Damage +blocks.damage = Poškození blocks.targetsair = Zaměřuje vzdušné jednotky -blocks.targetsground = Targets Ground -blocks.itemsmoved = Move Speed -blocks.launchtime = Time Between Launches +blocks.targetsground = Zaměřuje pozemní jednotky +blocks.itemsmoved = Rychlost pohybu +blocks.launchtime = Čas mezi vysláním blocks.shootrange = Dostřel blocks.size = velikost blocks.liquidcapacity = Kapacita tekutin @@ -456,46 +505,46 @@ blocks.poweruse = Spotřebuje energie blocks.powerdamage = Energie na poškození blocks.itemcapacity = kapacita předmětů blocks.basepowergeneration = Základní generování energie -blocks.productiontime = Production Time -blocks.repairtime = Block Full Repair Time -blocks.speedincrease = Speed Increase -blocks.range = Range +blocks.productiontime = Čas produkce +blocks.repairtime = Čas do úplné opravy +blocks.speedincrease = Zvýšení rychlosti +blocks.range = Dosah blocks.drilltier = Vrtatelné blocks.drillspeed = Základní rychlost vrtu -blocks.boosteffect = Boost Effect -blocks.maxunits = Max Active Units +blocks.boosteffect = Efekt boostu +blocks.maxunits = Max. počet jednotek blocks.health = Životy -blocks.buildtime = Build Time -blocks.buildcost = Build Cost +blocks.buildtime = Čas stavby +blocks.buildcost = Cena stavby blocks.inaccuracy = Nepřesnost/výchylka blocks.shots = Střely blocks.reload = Střely za sekundu -blocks.ammo = Ammo -bar.drilltierreq = Better Drill Required -bar.drillspeed = Drill Speed: {0}/s -bar.efficiency = Efficiency: {0}% -bar.powerbalance = Power: {0} -bar.powerstored = Stored: {0}/{1} -bar.poweramount = Power: {0} -bar.poweroutput = Power Output: {0} -bar.items = Items: {0} -bar.capacity = Capacity: {0} -bar.liquid = Liquid -bar.heat = Heat -bar.power = Power -bar.progress = Build Progress -bar.spawned = Units: {0}/{1} -bullet.damage = [stat]{0}[lightgray] dmg -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 reload +blocks.ammo = Střelivo +bar.drilltierreq = Je vyžadován lepší vrt +bar.drillspeed = Rychlost vrtu: {0}/s +bar.efficiency = Efektivita: {0}% +bar.powerbalance = Energie: {0} +bar.powerstored = Uskladněno: {0}/{1} +bar.poweramount = Energie celkem: {0} +bar.poweroutput = Výstup energie: {0} +bar.items = Předměty: {0} +bar.capacity = Kpacita: {0} +bar.liquid = Tekutiny +bar.heat = Teplo +bar.power = Energie +bar.progress = Proces stavby +bar.spawned = Jednotek: {0}/{1} +bullet.damage = [stat]{0}[lightgray] poškození +bullet.splashdamage = [stat]{0}[lightgray] AOE ~[stat] {1}[lightgray] bloků +bullet.incendiary = [stat]zápalné +bullet.homing = [stat]samonaváděcí +bullet.shock = [stat]šokové +bullet.frag = [stat]trhavé +bullet.knockback = [stat]{0}[lightgray] odhození +bullet.freezing = [stat]ledové +bullet.tarred = [stat]tarové +bullet.multiplier = [stat]{0}[lightgray]x násobič střeliva +bullet.reload = [stat]{0}[lightgray]x nabití unit.blocks = Bloky unit.powersecond = jednotek energie/sekunda unit.liquidsecond = jednotek tekutin/sekundu @@ -504,8 +553,8 @@ unit.liquidunits = jednotek tekutin unit.powerunits = jednotek energie unit.degrees = úhly unit.seconds = sekundy -unit.persecond = /sec -unit.timesspeed = x speed +unit.persecond = /sek +unit.timesspeed = x rychlost unit.percent = % unit.items = předměty category.general = Všeobecné @@ -515,21 +564,22 @@ category.items = Předměty category.crafting = Vyžaduje category.shooting = Střílí category.optional = Volitelné vylepšení -setting.landscape.name = Lock Landscape -setting.shadows.name = Shadows -setting.linear.name = Linear Filtering -setting.animatedwater.name = Animated Water -setting.animatedshields.name = Animated Shields -setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] +setting.landscape.name = Uzamknout krajinu +setting.shadows.name = Stíny +setting.linear.name = Lineární filtrování +setting.hints.name = Hints +setting.animatedwater.name = Animovaná voda +setting.animatedshields.name = Animované štíty +setting.antialias.name = Antialias[LIGHT_GRAY] (vyžaduje restart)[] setting.indicators.name = Indikátor pro spojence setting.autotarget.name = Automaticky zaměřuje -setting.keyboard.name = Mouse+Keyboard Controls -setting.touchscreen.name = Touchscreen Controls +setting.keyboard.name = Ovládání myš+klávesnice +setting.touchscreen.name = Ovládání dotykovým displejem setting.fpscap.name = Max FPS setting.fpscap.none = žádný setting.fpscap.text = {0} FPS -setting.uiscale.name = UI Scaling[lightgray] (require restart)[] -setting.swapdiagonal.name = Always Diagonal Placement +setting.uiscale.name = Škálování rozhraní[lightgray] (vyžaduje restart)[] +setting.swapdiagonal.name = Vždy pokládat diagonálně setting.difficulty.training = Trénink setting.difficulty.easy = lehká setting.difficulty.normal = normální @@ -542,11 +592,12 @@ setting.sensitivity.name = Citlivost ovladače setting.saveinterval.name = Interval automatického ukládání setting.seconds = {0} Sekund setting.fullscreen.name = Celá obrazovka -setting.borderlesswindow.name = Borderless Window[LIGHT_GRAY] (may require restart) +setting.borderlesswindow.name = Bezokrajové okno[LIGHT_GRAY] (může vyžadovat restart) setting.fps.name = Ukázat snímky/sekundu setting.vsync.name = Vertikální synchronizace -setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance) +setting.pixelate.name = Pixelizovat [LIGHT_GRAY](může snížit výkon) setting.minimap.name = Ukázat minimapu +setting.position.name = Show Player Position setting.musicvol.name = Hlasitost hudby setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Ztišit hudbu @@ -558,8 +609,10 @@ setting.publichost.name = Public Game Visibility setting.chatopacity.name = Chat Opacity setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Display In-Game Chat +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. 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 +uiscale.cancel = Ukončit a odejít setting.bloom.name = Bloom keybind.title = Přenastavit klávesy keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. @@ -569,13 +622,16 @@ category.multiplayer.name = Multiplayer command.attack = Útok command.rally = Rally command.retreat = Ústup -keybind.gridMode.name = Výběr bloků -keybind.gridModeShift.name = Výběr kategorie +keybind.clear_building.name = Clear Building keybind.press = Stiskni klívesu... keybind.press.axis = Stiskni osu nebo klávesu... keybind.screenshot.name = Sníměk mapy keybind.move_x.name = Pohyb na X keybind.move_y.name = Pohyb na Y +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Toggle Fullscreen keybind.select.name = Vybrat/Střílet keybind.diagonal_placement.name = Diagonal Placement @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Přiblížení-podržení keybind.zoom.name = přiblížení keybind.menu.name = Hlavní nabídka keybind.pause.name = pauza +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Minimap keybind.dash.name = Sprint keybind.chat.name = Chat keybind.player_list.name = Seznam hráčů keybind.console.name = Konzole keybind.rotate.name = Otočit +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Přepínání nabídek keybind.chat_history_prev.name = Předchozí historie chatu keybind.chat_history_next.name = Další historie chatu @@ -604,6 +662,7 @@ mode.survival.name = Survival mode.survival.description = The normal mode. Limited resources and automatic incoming waves. mode.sandbox.name = Sandbox mode.sandbox.description = Nekonečné zdroje a žádný čas pro vlny nepřátel. +mode.editor.name = Editor mode.pvp.name = PvP mode.pvp.description = Bojuj proti ostatním hráčům v lokální síti. mode.attack.name = Útok @@ -654,7 +713,7 @@ item.spore-pod.name = Spore Pod item.sand.name = Písek item.blast-compound.name = Výbušná směs item.pyratite.name = Pyratite -item.metaglass.name = Metaglass +item.metaglass.name = Tvrzené sklo item.scrap.name = Scrap liquid.water.name = Voda liquid.slag.name = Slag @@ -790,6 +849,7 @@ block.junction.name = Křižovatka block.router.name = Směrovač block.distributor.name = Distributor block.sorter.name = Dělička +block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.overflow-gate.name = Brána přetečení block.silicon-smelter.name = Silicon Smelter @@ -1010,6 +1070,7 @@ block.junction.description = Chová se jako most pro dva křížící se pásy d block.bridge-conveyor.description = Pokročilý blok přepravy předmětů. Dovoluje transport předmětů až přez tři pole jakéhokoliv terénu nebo budovy. block.phase-conveyor.description = Pokročilý blok přepravy předmětů. Využívá energii k přepravě od jednoho bodu k druhému po velice dlouhé vzdálenosti. block.sorter.description = Třídí předměty. Jestli je předmět shodný s výběrem, je mu dovoleno projít. Naopak neshodné předměty jsou vypuštěny do prava nebo do leva. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Příijmá předměty z jednoho směru a posílá je rovnoměrně do zbylých tří směrů. Užitečný při rozdělení jednoho zdroje směřující do různých cílů. block.distributor.description = Pokročilý směrovač, který z libovolného počtu vstupů vytvoří libovolný počet výstupu a rozdělí přísun předmětů rovnoměrně do každého z nich, obdoba Multiplexeru a Demultiplexeru. block.overflow-gate.description = Kombinace distributoru a děličky která má výstup do leva nebo do prava jen pokud je přední strana zablokovaná. diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 72c5bec0e4..85c9b67684 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -16,11 +16,28 @@ screenshot.invalid = Karte zu groß! Eventuell nicht ausreichend Arbeitsspeicher gameover = Der Kern wurde zerstört. gameover.pvp = Das[accent] {0}[] Team ist siegreich! highscore = [YELLOW] Neuer Highscore! +copied = Copied. load.sound = Sounds load.map = Maps load.image = Images load.content = Content load.system = System +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Wellen besiegt:[accent] {0} stat.enemiesDestroyed = Gegner zerstört:[accent] {0} stat.built = Gebäude gebaut:[accent] {0} @@ -29,6 +46,7 @@ stat.deconstructed = Gebäude abgebaut:[accent] {0} stat.delivered = Übertragene Ressourcen: stat.rank = Finaler Rang: [accent]{0} launcheditems = [accent]Übertragene Items +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = Bist du sicher, dass du die Karte "[accent]{0}[]" löschen möchtest? level.highscore = Highscore: [accent]{0} level.select = Level-Auswahl @@ -40,11 +58,11 @@ database = Kern-Datenbank savegame = Spiel speichern loadgame = Spiel laden joingame = Spiel beitreten -addplayers = Hinzufügen/Entfernen von Spielern customgame = Benutzerdefiniertes Spiel newgame = Neues Spiel none = minimap = Minimap +position = Position close = Schließen website = Website quit = Verlassen @@ -60,6 +78,25 @@ uploadingcontent = Uploading Content uploadingpreviewfile = Uploading Preview File committingchanges = Comitting Changes done = Done +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Info name = Name: noname = Wähle zuerst einen[accent] Spielernamen[]. @@ -140,7 +177,6 @@ server.port = Port: server.addressinuse = Adresse bereits in Verwendung! server.invalidport = Falscher Port! server.error = [crimson] Fehler beim Hosten des Servers: [accent] {0} -save.old = Dieser Spielstand ist von einer älteren Version des Spiels, und kann nicht mehr verwendet werden.\n\n[LIGHT_GRAY]Abwärtskompatibilität von Speicherständen wird in der 4.0 Vollversion hinzugefügt. save.new = Neuer Spielstand save.overwrite = Möchtest du diesen Spielstand wirklich überschreiben? overwrite = Überschreiben @@ -174,6 +210,7 @@ warning = Warnung. confirm = Bestätigen delete = Löschen view.workshop = View In Workshop +workshop.listing = Edit Workshop Listing ok = OK open = Öffnen customize = Anpassen @@ -191,7 +228,12 @@ classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic quit.confirm = Willst du wirklich aufhören? 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]Wird geladen... +reloading = [accent]Reloading Mods... saving = [accent]Speichere... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Welle {0} wave.waiting = Welle in {0} wave.waveInProgress = [LIGHT_GRAY]Welle im Gange @@ -210,11 +252,17 @@ map.nospawn = Diese Karte hat keine Kerne in denen die Spieler beginnen können! 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 = 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. -map.publish.error = Error publishing map: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Pinsel editor.openin = Öffne im Editor editor.oregen = Erze generieren @@ -344,7 +392,6 @@ campaign = Kampagne load = Laden save = Speichern fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Bitte Starte dein Spiel neu, damit die Sprach-Einstellung aktiv wird. settings = Einstellungen @@ -352,12 +399,13 @@ tutorial = Tutorial tutorial.retake = Re-Take Tutorial editor = Editor mapeditor = Karten Editor -donate = Spenden abandon = Aufgeben abandon.text = Diese Zone sowie alle Ressourcen werden dem Gegner überlassen. locked = Gesperrt complete = [LIGHT_GRAY]Abschließen: -zone.requirement = Welle {0} in Zone {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Zu Zone zurückkehren:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]Beste Welle: {0} launch = Abschluss @@ -368,11 +416,13 @@ launch.confirm = Dies wird alle Ressourcen in deinen Kern übertragen.\nDu kanns launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Freischalten configure = Startitems festlegen +bannedblocks = Banned Blocks +addall = Add All configure.locked = [LIGHT_GRAY]Erreiche Welle {0}\n, um Startitems festlegen zu können. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [LIGHT_GRAY]{0} freigeschaltet. zone.requirement.complete = Welle {0} erreicht:\n{1} Anforderungen der Zone erfüllt. -zone.config.complete = Welle {0} erreicht:\nFestlegen von Startitems freigeschaltet. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Ressourcen entdeckt: zone.objective = [lightgray]Ziel: [accent]{0} zone.objective.survival = Überlebe @@ -428,15 +478,14 @@ settings.graphics = Grafiken settings.cleardata = Spieldaten zurücksetzen... settings.clear.confirm = Bist du sicher, dass du die Spieldaten zurücksetzen willst?\n Diese Aktion kann nicht rückgängig gemacht werden! settings.clearall.confirm = [scarlet]Warnung![]\nDas wird jegliche Spieldaten zurücksetzen inklusive Speicherstände, Karten, Freischaltungen und Tastenbelegungen.\n Nachdem du 'OK' drückst wird alles zurückgesetzt und das Spiel schließt sich automatisch. -settings.clearunlocks = Freischaltungen zurücksetzen -settings.clearall = Alles zurücksetzen paused = Pausiert +clear = Clear +banned = [scarlet]Banned yes = Ja no = Nein info.title = [accent]Info error.title = [crimson] Ein Fehler ist aufgetreten error.crashtitle = Ein Fehler ist aufgetreten! -attackpvponly = [scarlet]Nur in Angriff oder PvP-Modus verfügbar. blocks.input = Input blocks.output = Output blocks.booster = Verstärkung @@ -518,6 +567,7 @@ category.optional = Optionale Verbesserungen setting.landscape.name = Landschaft sperren setting.shadows.name = Schatten setting.linear.name = Lineare Filterung +setting.hints.name = Hints setting.animatedwater.name = Animiertes Wasser setting.animatedshields.name = Animierte Schilde setting.antialias.name = Antialias[LIGHT_GRAY] (Neustart erforderlich)[] @@ -547,6 +597,7 @@ setting.fps.name = Zeige FPS setting.vsync.name = VSync setting.pixelate.name = Verpixeln [LIGHT_GRAY](Könnte die Leistung beeinträchtigen) setting.minimap.name = Zeige die Minimap +setting.position.name = Show Player Position setting.musicvol.name = Musiklautstärke setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Musik stummschalten @@ -558,6 +609,8 @@ setting.publichost.name = Public Game Visibility setting.chatopacity.name = Chat Deckkraft setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Chat im Spiel anzeigen +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. uiscale.reset = UI-Skalierung wurde geändert.\nDrücke "OK", um diese Skalierung zu bestätigen.\n[scarlet]Zurückkehren und Beenden in[accent] {0}[] Einstellungen... uiscale.cancel = Abbrechen & Beenden setting.bloom.name = Bloom @@ -569,13 +622,16 @@ category.multiplayer.name = Mehrspieler command.attack = Angreifen command.rally = Rally command.retreat = Rückzug -keybind.gridMode.name = Block Auswahl -keybind.gridModeShift.name = Kategorie auswählen +keybind.clear_building.name = Clear Building keybind.press = Drücke eine Taste... keybind.press.axis = Drücke eine Taste oder bewege eine Achse... keybind.screenshot.name = Karten Screenshot keybind.move_x.name = X-Achse keybind.move_y.name = Y-Achse +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Toggle Fullscreen keybind.select.name = Auswählen/Schießen keybind.diagonal_placement.name = Diagonal platzieren @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Zoom halten keybind.zoom.name = Zoomen keybind.menu.name = Menü keybind.pause.name = Pause +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Minimap keybind.dash.name = Bindestrich keybind.chat.name = Chat keybind.player_list.name = Spielerliste keybind.console.name = Konsole keybind.rotate.name = Drehen +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Menüs umschalten keybind.chat_history_prev.name = Chat Historie zurück keybind.chat_history_next.name = Chat Historie vor @@ -604,6 +662,7 @@ mode.survival.name = Überleben mode.survival.description = Der normale Modus. Ressourcen sind limitiert und Wellen kommen automatisch. mode.sandbox.name = Sandkasten mode.sandbox.description = Unendliche Ressourcen und kein Timer für Wellen. +mode.editor.name = Editor mode.pvp.name = PvP mode.pvp.description = Kämpfe gegen andere Spieler lokal. mode.attack.name = Angriff @@ -645,7 +704,7 @@ item.lead.name = Blei item.coal.name = Kohle item.graphite.name = Graphit item.titanium.name = Titan -item.thorium.name = Uran +item.thorium.name = Thorium item.silicon.name = Silizium item.plastanium.name = Plastanium item.phase-fabric.name = Phasengewebe @@ -784,12 +843,13 @@ block.hail.name = Streuer block.lancer.name = Lanzer block.conveyor.name = Förderband block.titanium-conveyor.name = Titan-Förderband -block.armored-conveyor.name = Armored Conveyor +block.armored-conveyor.name = Gepanzertes-Förderband block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. block.junction.name = Kreuzung block.router.name = Verteiler block.distributor.name = Großer Verteiler block.sorter.name = Sortierer +block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.overflow-gate.name = Überlauftor block.silicon-smelter.name = Silizium-Schmelzer @@ -864,7 +924,7 @@ block.bridge-conduit.name = Kanalbrücke block.rotary-pump.name = Rotierende Pumpe block.thorium-reactor.name = Thorium-Reaktor block.mass-driver.name = Massenbeschleuniger -block.blast-drill.name = Sprengbohrer +block.blast-drill.name = Sprengluftbohrer block.thermal-pump.name = Thermische Pumpe block.thermal-generator.name = Thermischer Generator block.alloy-smelter.name = Legierungsschmelze @@ -1010,6 +1070,7 @@ block.junction.description = Fungiert als Brücke zwischen zwei kreuzenden Förd block.bridge-conveyor.description = Verbesserter Transportblock. Erlaubt es, Materialien über bis zu 3 Kacheln beliebigen Terrains oder Inhalts zu transportieren. block.phase-conveyor.description = Verbesserter Transportblock. Verwendet Strom, um Materialien zu einem verbundenen Phasen-Förderband über mehrere Kacheln zu teleportieren. block.sorter.description = Sortiert Materialien. Wenn ein Gegenstand der Auswahl entspricht, darf er vorbei. Andernfalls wird er links oder rechts ausgegeben. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Akzeptiert Materialien aus einer Richtung und leitet sie gleichmäßig in bis zu drei andere Richtungen weiter. Nützlich, wenn die Materialien aus einer Richtung an mehrere Empfänger verteilt werden sollen. block.distributor.description = Ein weiterentwickelter Verteiler, der Materialien in bis zu sieben Richtungen gleichmäßig verteilt. block.overflow-gate.description = Ein Verteiler, der nur Materialien nach links oder rechts ausgibt, falls der Weg gerade aus blockiert ist. diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 53df4adeb8..28e8cc396a 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -16,11 +16,28 @@ screenshot.invalid = Mapa demasiado grande, no hay suficiente memoria para la ca gameover = Tu núcleo ha sido destruido. gameover.pvp = ¡El equipo[accent] {0}[] ha ganado! highscore = [accent]¡Nueva mejor puntuación! -load.sound = Sounds -load.map = Maps -load.image = Images -load.content = Content -load.system = System +copied = Copied. +load.sound = Sonidos +load.map = Mapas +load.image = Imágenes +load.content = Contenido +load.system = Sistema +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Oleadas Derrotadas:[accent] {0} stat.enemiesDestroyed = Enemigos Destruidos:[accent] {0} stat.built = Estructuras Construidas:[accent] {0} @@ -29,37 +46,57 @@ stat.deconstructed = Estructuras Desconstruidas:[accent] {0} stat.delivered = Recursos Lanzados: stat.rank = Rango final: [accent]{0} launcheditems = [accent]Recursos Lanzados +launchinfo = [unlaunched][[LAUNCH] tu núcleo core obtenga los objetos indicados en azul. map.delete = ¿Estás seguro que quieres borrar el mapa "[accent]{0}[]"? level.highscore = Puntuación más alta: [accent]{0} level.select = Selección de nivel level.mode = Modo de juego: showagain = No mostrar otra vez en la próxima sesión coreattack = < ¡El núcleo está bajo ataque! > -nearpoint = [[ [scarlet]ABANDONA EL PUNTO DE APARICIÓN IMNEDIATAMENTE[] ]\naniquilación inminente +nearpoint = [[ [scarlet]ABANDONA EL PUNTO DE APARICIÓN INMEDIATAMENTE[] ]\naniquilación inminente database = Base de datos del núcleo savegame = Guardar Partida loadgame = Cargar Partida joingame = Unirse a la Partida -addplayers = Agregar/Quitar Jugadores customgame = Partida personalizada newgame = Nueva Partida none = minimap = Minimapa +position = Position close = Cerrar website = Sitio web quit = Salir -save.quit = Save & Quit +save.quit = Guardar & Salir maps = Mapas -maps.browse = Browse Maps +maps.browse = Navegar por los Mapas continue = Continuar maps.none = [LIGHT_GRAY]¡No se han encontrado mapas! -invalid = Invalid +invalid = Invalido preparingconfig = Preparing Config preparingcontent = Preparing Content uploadingcontent = Uploading Content uploadingpreviewfile = Uploading Preview File committingchanges = Comitting Changes -done = Done +done = Hecho +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Acerca de name = Nombre: noname = Elige un[accent] nombre de jugador[] primero. @@ -92,9 +129,9 @@ server.versions = Your version:[accent] {0}[]\nVersión del servidor:[accent] {1 host.info = El botón [accent]host[] hostea un servidor en el puerto [scarlet]6567[]. \nCualquier persona en la misma [LIGHT_GRAY]wifi o red local[] debería poder ver tu servidor en la lista de servidores.\n\nSi quieres que cualquier persona se pueda conectar de cualquier lugar por IP, la [accent]asignación de puertos[] es requerida.\n\n[LIGHT_GRAY]Nota: Si alguien experimenta problemas conectándose a tu partida LAN, asegúrate de permitir a Mindustry acceso a tu red local mediante la configuración de tu firewall. join.info = Aquí, puedes escribir la [accent]IP de un server[] para conectarte, o descubrir servidores de [accent]red local[] para conectarte.\nLAN y WAN es soportado para jugar en multijugador.\n\n[LIGHT_GRAY]Nota: No hay una lista automática global de servidores; si quieres conectarte por IP, tendrás que preguntarle al anfitrión por la IP. hostserver = Hostear Servidor -invitefriends = Invite Friends +invitefriends = Invitar Amigos hostserver.mobile = Hostear\nJuego -host = Hostear +host = Servidor hosting = [accent]Abriendo servidor... hosts.refresh = Actualizar hosts.discovering = Descubrir partidas LAN @@ -129,18 +166,17 @@ confirmunadmin = ¿Estás seguro de querer quitar los permisos de administrador joingame.title = Unirse a la partida joingame.ip = IP: disconnect = Desconectado. -disconnect.error = Connection error. -disconnect.closed = Connection closed. +disconnect.error = Error en la conexión. +disconnect.closed = Conexión cerrada. disconnect.timeout = Timed out. disconnect.data = ¡Se ha fallado la carga de datos del mundo! -cantconnect = Unable to join game ([accent]{0}[]). +cantconnect = No es posible unirse a la partida ([accent]{0}[]). connecting = [accent]Conectando... connecting.data = [accent]Cargando datos del mundo... server.port = Puerto: server.addressinuse = ¡La dirección ya está en uso! server.invalidport = ¡El número de puerto es invalido! server.error = [crimson]Error hosteando el servidor: error [accent]{0} -save.old = Este punto de guardado es de una versión más antigua de este juego, y ya no puede ser usada.\n\n[LIGHT_GRAY]La retrocmpatibilidad de los puntos de guardado estará completamente implementada en la versión 4.0. save.new = Nuevo Punto de Guardado save.overwrite = ¿Estás seguro de querer sobrescribir\neste punto de guardado? overwrite = Sobrescribir @@ -159,7 +195,7 @@ save.rename = Renombrar save.rename.text = Nuevo nombre: selectslot = Selecciona un Punto de Guardado. slot = [accent]Casilla {0} -editmessage = Edit Message +editmessage = Editar mensaje save.corrupted = [accent]¡El punto de guardado está corrupto o es inválido!\nSi acabas de actualizar el juego, esto debe ser probablemente un cambio en el formato de guardado y[scarlet] no[] un error. empty = on = Encendido @@ -167,13 +203,14 @@ off = Apagado save.autosave = Autoguardado: {0} save.map = Mapa: {0} save.wave = Oleada {0} -save.mode = Gamemode: {0} +save.mode = ModoJuego: {0} save.date = Última vez guardado: {0} save.playtime = Tiempo de juego: {0} warning = Aviso. confirm = Confirmar delete = Borrar view.workshop = View In Workshop +workshop.listing = Edit Workshop Listing ok = OK open = Abrir customize = Personalizar @@ -181,9 +218,9 @@ cancel = Cancelar openlink = Abrir Enlace copylink = Copiar Enlace back = Atrás -data.export = Export Data -data.import = Import Data -data.exported = Data exported. +data.export = Exportar Datos +data.import = Importar Datos +data.exported = Datos exportados. data.invalid = This isn't valid game data. data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. classic.export = Export Classic Data @@ -191,7 +228,12 @@ classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic quit.confirm = ¿Estás seguro de querer salir de la partida? quit.confirm.tutorial = ¿Estás seguro de que sabes qué estas haciendo?\nSe puede hacer el tutorial de nuevo in[accent] Ajustes->Juego->Volver a hacer tutorial.[] loading = [accent]Cargando... +reloading = [accent]Reloading Mods... saving = [accent]Guardando... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Oleada {0} wave.waiting = Oleada en {0} wave.waveInProgress = [LIGHT_GRAY]Oleada en progreso @@ -210,11 +252,17 @@ map.nospawn = ¡Este mapa no tiene ningún núcleo en el cual pueda aparecer el map.nospawn.pvp = ¡Este mapa no tiene ningún núcleo enemigo para que aparezca el jugador! Añade un núcleo[SCARLET] red[] a este mapa en el editor. map.nospawn.attack = ¡Este mapa no tiene núcleos para que el jugador ataque! Añade núcleos[SCARLET] red[] a este mapa en el editor. map.invalid = Error cargando el mapa: archivo corrupto o inválido. -map.publish.error = Error publishing map: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Pincel editor.openin = Abrir en el Editor editor.oregen = Generación de Minerales @@ -246,7 +294,7 @@ waves.invalid = Oleadas inválidaas en el portapapeles. waves.copied = Oleadas copiadas. waves.none = No hay enemigos definidos.\nNótese que las listas de oleadas vacías se sustituirán por la lista por defecto. editor.default = [LIGHT_GRAY] -details = Details... +details = Detalles... edit = Editar... editor.name = Nombre: editor.spawn = Spawn Unit @@ -256,7 +304,7 @@ editor.errorload = Error cargando el archivo:\n[accent]{0} editor.errorsave = Error guardando el archivo:\n[accent]{0} editor.errorimage = Eso es una imagen, no un mapa. No cambies las extensiones del archivo esperando que funcione.\nSi quieres importar un mapa viejo, usa el botón de 'import legacy map' en el editor. editor.errorlegacy = Este mapa es demasiado viejo y usa un formato de mapa que ya no es soportado. -editor.errornot = This is not a map file. +editor.errornot = Esto no es un fichero de mapa. editor.errorheader = Este mapa es inválido o está corrupto. editor.errorname = El mapa no tiene un nombre definido. editor.update = Actualizar @@ -344,7 +392,6 @@ campaign = Campaña load = Cargar save = Guardar fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0} ms language.restart = Por favor reinicie el juego para que los cambios del lenguaje surjan efecto. settings = Ajustes @@ -352,12 +399,13 @@ tutorial = Tutorial tutorial.retake = Volver a hacer tutorial editor = Editor mapeditor = Editor de Mapa -donate = Donar abandon = Abandonar abandon.text = Esta zona y sus recursos se perderán ante el enemigo. locked = Bloqueado complete = [LIGHT_GRAY]Completado: -zone.requirement = Oleada {0} en la zona {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Continuar Zona:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]Récord: {0} launch = Lanzar @@ -368,11 +416,13 @@ launch.confirm = Esto lanzará todos los recursos al núcleo.\nNo podrás volver launch.skip.confirm = Si saltas la oleada ahora, no podrás lanzar recursos hasta unas oleadas después. uncover = Descubrir configure = Configurar carga inicial +bannedblocks = Banned Blocks +addall = Add All configure.locked = [LIGHT_GRAY]Alcanza la oleada {0}\npara configurar la carga inicial. -configure.invalid = Amount must be a number between 0 and {0}. +configure.invalid = La cantidad debe estar entre 0 y {0}. zone.unlocked = [LIGHT_GRAY]{0} desbloqueado. zone.requirement.complete = Oleada {0} alcanzada:\nrequerimientos de la zona {1} cumplidos. -zone.config.complete = Oleada {0} alcanzada:\nconfiguración de carga inicial desbloqueada. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Recursos Detectados: zone.objective = [lightgray]Objetivo: [accent]{0} zone.objective.survival = Sobrevivir @@ -415,10 +465,10 @@ zone.tarFields.description = Las afueras de una zona de producción de petróleo zone.desolateRift.description = Una zona extremadamente peligrosa. Tiene muchos recursos pero poco espacio. Riesgo alto de destrucción. Abandona lo antes posible. No te dejes engañar por la gran separación de tiempo entre oleadas enemigas. zone.nuclearComplex.description = Una antigua facilidad para la producción y el procesamiento del torio reducido a ruinas.\n[lightgray]Investiga el torio y sus diversos usos.\n\nEl enemigo está presente en números grandes, constantemente buscando atacantes. zone.fungalPass.description = Una zona transitoria entre alta montaña y zonas más bajas con esporas. Una base enemiga pequeña de reconocimiento se ubica aquí.\nDestrúyela.nUsa Dagas y Orugas. Destruye los dos núcleos. -zone.impact0078.description = -zone.crags.description = +zone.impact0078.description = +zone.crags.description = settings.language = Idioma -settings.data = Game Data +settings.data = Datos del Juego settings.reset = Reiniciar por los de defecto settings.rebind = Reasignar settings.controls = Controles @@ -427,16 +477,15 @@ settings.sound = Sonido settings.graphics = Gráficos settings.cleardata = Limpiar Datos del Juego... settings.clear.confirm = ¿Estas seguro de querer limpiar estos datos?\n¡Esta acción no puede deshacerse! -settings.clearall.confirm = [scarlet]ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y keybinds.\nUna vez presiones 'ok', el juego va a borrrar todos tus datos y saldrá del juego automáticamente. -settings.clearunlocks = Eliminar Desbloqueos -settings.clearall = Eliminar Todo -paused = Pausado +settings.clearall.confirm = [scarlet]ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y atajos de teclado.\nUna vez presiones 'ok', el juego va a borrrar todos tus datos y saldrá del juego automáticamente. +paused = [accent] < Pausado > +clear = Clear +banned = [scarlet]Banned yes = Sí no = No info.title = [accent]Información error.title = [crimson]Un error ha ocurrido. error.crashtitle = Un error ha ocurrido. -attackpvponly = [scarlet]Solo disponible en los modos de Ataque/PvP blocks.input = Entrada blocks.output = Salida blocks.booster = Potenciador @@ -466,7 +515,7 @@ blocks.boosteffect = Efecto del Potenciador blocks.maxunits = Máximo de Unidades Activas blocks.health = Vida blocks.buildtime = Tiempo de construcción -blocks.buildcost = Build Cost +blocks.buildcost = Coste de construcción blocks.inaccuracy = Imprecisión blocks.shots = Disparos blocks.reload = Recarga @@ -475,11 +524,11 @@ bar.drilltierreq = Se requiere un mejor taladro. bar.drillspeed = Velocidad del Taladro: {0}/s bar.efficiency = Eficiencia: {0}% bar.powerbalance = Energía: {0} -bar.powerstored = Stored: {0}/{1} +bar.powerstored = Almacenados: {0}/{1} bar.poweramount = Energía: {0} bar.poweroutput = Salida de Energía: {0} -bar.items = Items: {0} -bar.capacity = Capacity: {0} +bar.items = Objetos: {0} +bar.capacity = Capacidad: {0} bar.liquid = Líquido bar.heat = Calor bar.power = Energía @@ -504,7 +553,7 @@ unit.liquidunits = unidades de líquido unit.powerunits = unidades de energía unit.degrees = grados unit.seconds = segundos -unit.persecond = /sec +unit.persecond = /seg unit.timesspeed = x velocidad unit.percent = % unit.items = objetos @@ -518,9 +567,10 @@ category.optional = Mejoras Opcionales setting.landscape.name = Lock Landscape setting.shadows.name = Sombras setting.linear.name = Linear Filtering +setting.hints.name = Hints setting.animatedwater.name = Agua Animada setting.animatedshields.name = Escudos Animados -setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] +setting.antialias.name = Antialias[LIGHT_GRAY] (necesita reiniciar)[] setting.indicators.name = Indicadores de Aliados setting.autotarget.name = Auto apuntado setting.keyboard.name = Controles de Ratón+Teclado @@ -528,7 +578,7 @@ setting.touchscreen.name = Touchscreen Controls setting.fpscap.name = Máx FPS setting.fpscap.none = Nada setting.fpscap.text = {0} FPS -setting.uiscale.name = Escala de IU[lightgray] (necesita reinicio)[] +setting.uiscale.name = Escala de IU[lightgray] (necesita reiniciar)[] setting.swapdiagonal.name = Siempre Colocar Diagonalmente setting.difficulty.training = entrenamiento setting.difficulty.easy = fácil @@ -544,9 +594,10 @@ setting.seconds = {0} Segundos setting.fullscreen.name = Pantalla Completa setting.borderlesswindow.name = Ventana sin Bordes[LIGHT_GRAY] (podría requerir un reinicio) setting.fps.name = Mostrar FPS -setting.vsync.name = VSync +setting.vsync.name = SincV setting.pixelate.name = Pixelar [LIGHT_GRAY](podría reducir el rendimiento) setting.minimap.name = Mostrar Minimapa +setting.position.name = Show Player Position setting.musicvol.name = Volumen de la Música setting.ambientvol.name = Volumen del Ambiente setting.mutemusic.name = Silenciar Musica @@ -558,10 +609,12 @@ setting.publichost.name = Public Game Visibility setting.chatopacity.name = Opacidad del Chat setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Display In-Game Chat +public.confirm = Do you want to make your game public?\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. 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 +uiscale.cancel = Cancelar & Salir setting.bloom.name = Bloom -keybind.title = Rebind Keys +keybind.title = Cambiar accesos de teclado keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. category.general.name = General category.view.name = Visión @@ -569,14 +622,17 @@ category.multiplayer.name = Multijugador command.attack = Atacar command.rally = Rally command.retreat = Retirarse -keybind.gridMode.name = Selección de Bloque -keybind.gridModeShift.name = Selección de Categoría +keybind.clear_building.name = Clear Building keybind.press = Presiona una tecla... keybind.press.axis = Pulsa un eje o botón... keybind.screenshot.name = Captura de pantalla de Mapa keybind.move_x.name = Mover x keybind.move_y.name = Mover y -keybind.fullscreen.name = Toggle Fullscreen +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y +keybind.fullscreen.name = Intercambiar con Pantalla Completa keybind.select.name = Seleccionar keybind.diagonal_placement.name = Construcción Diagonal keybind.pick.name = Pick Block @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Mantener Zoom keybind.zoom.name = Zoom keybind.menu.name = Menú keybind.pause.name = Pausa +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Minimapa keybind.dash.name = Correr keybind.chat.name = Chat keybind.player_list.name = Lista de jugadores keybind.console.name = Consola keybind.rotate.name = Rotar +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Alternar menús keybind.chat_history_prev.name = Historial de chat anterior keybind.chat_history_next.name = Historial de chat siguiente @@ -604,9 +662,10 @@ mode.survival.name = Supervivencia mode.survival.description = El modo normal. Recursos limitados y oleadas automáticas. mode.sandbox.name = Sandbox mode.sandbox.description = Recursos ilimitados y sin temporizador para las oleadas. +mode.editor.name = Editor mode.pvp.name = PvP mode.pvp.description = Pelea contra otros jugadores localmente. -mode.attack.name = Attack +mode.attack.name = Ataque mode.attack.description = No hay oleadas, el objetivo es destruir la base enemiga. mode.custom = Normas personalizadas rules.infiniteresources = Recursos Infinitos @@ -657,7 +716,7 @@ item.pyratite.name = Pirotita item.metaglass.name = Metacristal item.scrap.name = Chatarra liquid.water.name = Agua -liquid.slag.name = Slag +liquid.slag.name = Escoria liquid.oil.name = Petróleo liquid.cryofluid.name = Criogénico mech.alpha-mech.name = Alpha @@ -790,6 +849,7 @@ block.junction.name = Cruce block.router.name = Enrutador block.distributor.name = Distribuidor block.sorter.name = Clasificador +block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.overflow-gate.name = Compuerta de Desborde block.silicon-smelter.name = Horno para Silicio @@ -885,8 +945,8 @@ block.container.name = Contenedor block.launch-pad.name = Pad de Lanzamiento block.launch-pad-large.name = Pad de Lanzammiento Grande team.blue.name = Azul -team.crux.name = red -team.sharded.name = orange +team.crux.name = rojo +team.sharded.name = naranja team.orange.name = Naranja team.derelict.name = derelict team.green.name = Verde @@ -1010,6 +1070,7 @@ block.junction.description = Actúa como puente para dos transportadores que se block.bridge-conveyor.description = Bloque avanado de transporte. Puede transportar objetos por encima hasta 3 casillas de cualquier terreno o construcción. block.phase-conveyor.description = Bloque de transporte avanzado. Usa energía para transportar objetos a otro transportador de fase conectado por varias casillas. block.sorter.description = Clasifica objetos. Si un objeto es igual al seleccionado, pasará al frente. Si no, el objeto saldrá por la izquierda y la derecha. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Acepta objetos de una dirección y deja objetos equitativamente en hasta 3 direcciones diferentes. Útil para dividir los materiales de una fuente de recursos a múltiples objetivos. block.distributor.description = Un enrutador avanzado que distribuye objetos equitativamente en hasta otras 7 direcciones. block.overflow-gate.description = Un enrutador que solo saca por la izquierda y la derecha si la cinta del frente está llena. diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 7b15c1fb47..8bafae658a 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -1,1088 +1,1149 @@ -credits.text = [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] poolt loodud +credits.text = Autor: [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] 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.changelog.description = List of update changes -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! +discord = Liitu Mindustry Discordi serveriga! +link.discord.description = Ametlik Discordi server +link.github.description = Mängu lähtekood +link.changelog.description = Uuenduste nimekiri versioonide kaupa +link.dev-builds.description = Arendusversioonide ajalugu +link.trello.description = Plaanitud uuenduste nimekiri +link.itch.io.description = Kõik PC-platvormide versioonid +link.google-play.description = Androidi versioon Google Play poes +link.wiki.description = Mängu ametlik viki +linkfail = Lingi avamine ebaõnnestus!\nVeebiaadress kopeeriti. +screenshot = Kuvatõmmis salvestati: {0} +screenshot.invalid = Maailm on liiga suur: kuvatõmmise salvestamiseks ei pruugi olla piisavalt mälu. +gameover = Mäng läbi! +gameover.pvp = Võistkond[accent] {0}[] võitis! highscore = [accent]Uus rekord! -load.sound = Sounds -load.map = Maps -load.image = Images -load.content = Content -load.system = System -stat.wave = Raund:[accent] {0} +copied = Copied. +load.sound = Helid +load.map = Maailmad +load.image = Pildid +load.content = Sisu +load.system = Süsteem +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks +stat.wave = Lahingulaineid läbitud:[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} -launcheditems = [accent]Kaasa võetud materjalid -map.delete = Kas oled kindel, et soovid kustutada "[accent]{0}[]". +stat.built = Ehitisi konstrueeritud:[accent] {0} +stat.destroyed = Ehitisi hävinenud:[accent] {0} +stat.deconstructed = Ehitisi dekonstrueeritud:[accent] {0} +stat.delivered = Kaasavõetud ressursid: +stat.rank = Hinne:[accent] {0} +launcheditems = [accent]Kaasavõetud ressursid +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. +map.delete = Kas oled kindel, et soovid kustutada\nmaailma "[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 -database = Tuuma Andmebaas -savegame = Salvesta -loadgame = Lae Mäng -joingame = Liitu -addplayers = Lisa/Eemalda Mängijaid -customgame = Kohandatud Mäng -newgame = Uus Mäng +level.select = Taseme valimine +level.mode = Mänguviis: +showagain = Ära järgmine kord näita +coreattack = < Tuumik on rünnaku all! > +nearpoint = [[ [scarlet]LAHKU VAENLASTE MAANDUMISE ALALT[] ]\nVaenlaste maandumisel hävib siin kõik. +database = Andmebaas +savegame = Salvesta mäng +loadgame = Lae mäng +joingame = Liitu mänguga +customgame = Kohandatud mäng +newgame = Uus mäng none = minimap = Kaart -close = Sule -website = Website -quit = Lahku -save.quit = Save & Quit +position = Position +close = Sulge +website = Veebileht +quit = Välju +save.quit = Salvesta ja välju maps = Maailmad -maps.browse = Browse Maps +maps.browse = Sirvi maailmu continue = Jätka -maps.none = [LIGHT_GRAY]Ühtegi maailma ei leitud! -invalid = Invalid -preparingconfig = Preparing Config -preparingcontent = Preparing Content -uploadingcontent = Uploading Content -uploadingpreviewfile = Uploading Preview File -committingchanges = Comitting Changes -done = Done +maps.none = [lightgray]Ühtegi maailma ei leitud! +invalid = Kehtetu +preparingconfig = Konfiguratsiooni ettevalmistamine +preparingcontent = Sisu ettevalmistamine +uploadingcontent = Sisu üleslaadimine +uploadingpreviewfile = Eelvaate faili üleslaadimine +committingchanges = Muudatuste teostamine +done = Valmis +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. 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: +noname = Valige kõigepealt [accent]nimi[]. +filename = Failinimi: +unlocked = Uus sisu! +completed = [accent]Olemas +techtree = Uurimispuu +research.list = [lightgray]Vajalikud uuringud: research = Uuri -researched = [LIGHT_GRAY]{0} uuritud. -players = {0} mängijat mängus -players.single = {0} mängija mängus +researched = [lightgray]{0} uuritud. +players = {0} mängijat +players.single = {0} mängija server.closing = [accent]Serveri sulgemine... server.kicked.kick = Sind visati serverist välja! -server.kicked.whitelist = You are not whitelisted here. -server.kicked.serverClose = Server suletud. -server.kicked.vote = You have been vote-kicked. Goodbye. -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.typeMismatch = This server is not compatible with your build type. -server.kicked.playerLimit = This server is full. Wait for an empty slot. -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.whitelist = Sa ei ole selle serveri lubatud mängijate nimekirjas. +server.kicked.serverClose = Server suleti. +server.kicked.vote = Sind hääletati mängust välja. Hüvasti! +server.kicked.clientOutdated = Aegunud versioon. Uuenda mängu! +server.kicked.serverOutdated = Aegunud server. Palu omanikul serverit uuendada! +server.kicked.banned = Sulle on keelatud selles serveris mängida. +server.kicked.typeMismatch = See server ei ühildu sinu platvormiga. +server.kicked.playerLimit = Selle serveri mängijate limiit on täis. Oota, kuni koht vabaneb. +server.kicked.recentKick = Sind visati hiljuti mängust välja.\nOota enne uuesti proovimist. +server.kicked.nameInUse = Sama nimega mängija on juba selles serveris.\nVali uus nimi. server.kicked.nameEmpty = Sinu valitud nimi ei sobi. -server.kicked.idInUse = Sa juba oled selles serveris! Kahe kasutajaga liitumine on keelatud. +server.kicked.idInUse = Sa juba mängid selles serveris! Teist korda 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! -server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[] -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 -invitefriends = Invite Friends -hostserver.mobile = Hosti\nMäng +server.versions = Sinu versioon:[accent] {0}[]\nServeri versioon:[accent] {1}[] +host.info = [accent]Hosti[] nupp avab serveri,\nkasutades porti [scarlet]6567[]. \nSamas [lightgray]kohtvõrgus[] olevad mängijad peaksid nägema sinu serverit enda serverite nimekirjas.\n\nKui sa tahad, et ka väljaspool kohtvõrku olevad mängijad saaksid serveriga ühineda, siis on vajalik\n[accent]portide edasisuunamine[].\n\n[lightgray]Märkus: Kui kellelgi on probleeme sinu kohtvõrgus avatud serveriga liitumisel, siis tee kindlaks, et tulemüüri sätetes on Mindustry'l lubatud pääseda ligi kohtvõrgule. +join.info = Siin saad lisada [accent]IP-aadressi serverile[], millega soovid liituda, või leida [accent]kohtvõrgus[] olevaid servereid.\nMäng toetab nii LAN- kui ka WAN-mitmikmängu.\n\n[lightgray]Märkus: Ei ole olemas automaatset serverite nimekirja. Kui sa soovid liituda mänguga IP kaudu, on sul vaja teada serveri IP-aadressi. +hostserver = Hosti mitmikmäng +invitefriends = Kutsu sõpru +hostserver.mobile = Hosti\nmäng host = Hosti hosting = [accent]Serveri avamine... hosts.refresh = Värskenda -hosts.discovering = LAN mängude otsimine -hosts.discovering.any = Discovering games +hosts.discovering = Kohtvõrgu mängude otsimine +hosts.discovering.any = Mängude otsimine server.refreshing = Serveri värskendamine -hosts.none = [lightgray]Kohalikke mänge ei leitud! +hosts.none = [lightgray]Kohtvõrgus 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. +trace.id = Mängija ID: [accent]{0} +trace.mobile = Mobiilne versioon: [accent]{0} +trace.modclient = Modifitseeritud versioon: [accent]{0} +invalidid = Kehtetu mängija 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.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? -confirmvotekick = Are you sure you want to vote-kick this player? -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 +server.add = Lisa server +server.delete = Oled kindel, et soovid serveri\nnimekirjast kustutada? +server.edit = Kohanda serverit +server.outdated = [crimson]Aegunud server![] +server.outdated.client = [crimson]Aegunud versioon![] +server.version = [lightgray]v{0} {1} +server.custombuild = [yellow]Kohandatud versioon +confirmban = Oled kindel, et soovid keelata sellel mängjal siin mängida? +confirmkick = Oled kindel, et soovid selle mängija välja visata? +confirmvotekick = Oled kindel, et soovid selle mängija mängust välja hääletada? +confirmunban = Oled kindel, et soovid lubada sellel mängijal siin uuesti mängida? +confirmadmin = Oled kindel, et soovid anda sellele mängijale adminstraatori õigused? +confirmunadmin = Oled kindel, et soovid sellelt mängijalt adminstraatori õigused ära võtta? +joingame.title = Liitu mänguga joingame.ip = Aadress: -disconnect = Lahti ühendatud. -disconnect.error = Connection error. -disconnect.closed = Connection closed. -disconnect.timeout = Timed out. -disconnect.data = Ebaõnnestus maailma andmeid alla laadida! -cantconnect = Unable to join game ([accent]{0}[]). +disconnect = Ühendus katkestatud. +disconnect.error = Ühenduse viga. +disconnect.closed = Ühendus on suletud. +disconnect.timeout = Ühendus aegus. +disconnect.data = Maailma andmete allalaadimine ebaõnnestus! +cantconnect = Mänguga ei saanud liituda ([accent]{0}[]). connecting = [accent]Ühendamine... -connecting.data = [accent]Laen maailma andmeid alla... +connecting.data = [accent]Maailma andmete allalaadimine... 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? +server.addressinuse = Aadress on juba kasutusel! +server.invalidport = Ebasobiv pordi number! +server.error = [crimson]Viga serveri hostimisel. +save.new = Uus salvestis +save.overwrite = Oled kindel, et soovid selle salvestise 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.confirm = Oled kindel, et soovid selle salvestise kustutada? 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.import.invalid = [accent]See salvestis on kehtetu! +save.import.fail = [crimson]Salvestise importimine ebaõnnestus: [accent]{0} +save.export.fail = [crimson]Salvestise eksportimine ebaõnnestus: [accent]{0} +save.import = Impordi +save.newslot = Salvestise nimi: save.rename = Nimeta ümber save.rename.text = Uus nimi: -selectslot = Vali salvestus. -slot = [accent]Koht {0} -editmessage = Edit Message -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. +selectslot = Vali salvestis. +slot = [accent]Pesa {0} +editmessage = Redigeeri sõnumit +save.corrupted = [accent]See salvestis on rikutud või ebasobiv!\nKui sa uuendasid mängu, siis on probleem tõenäoliselt salvestiste formaadi muutuses ja tegemist [scarlet]ei ole[] veaga mängu koodis. empty = on = Sees off = Väljas -save.autosave = Automaatne salvestamine: {0} +save.autosave = Automaatsalvestus: {0} save.map = Maailm: {0} -save.wave = Raund {0} -save.mode = Gamemode: {0} -save.date = Viimati Salvestatud: {0} +save.wave = Lahingulaine {0} +save.mode = Mänguviis: {0} +save.date = Viimati salvestatud: {0} save.playtime = Mänguaeg: {0} -warning = Hoiatus. +warning = Hoiatus confirm = Kinnita delete = Kustuta -view.workshop = View In Workshop +view.workshop = Vaata Workshop'is +workshop.listing = Edit Workshop Listing ok = OK open = Ava -customize = Kohanda +customize = Kohanda reegleid cancel = Tühista -openlink = Ava Link -copylink = Kopeeri Link +openlink = Ava link +copylink = Kopeeri link back = Tagasi -data.export = Export Data -data.import = Import Data -data.exported = Data exported. -data.invalid = This isn't valid game data. -data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. -classic.export = Export Classic Data -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 = Oled kindel, et soovid lahkuda? -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.[] +data.export = Ekspordi mänguandmed +data.import = Impordi mänguandmed +data.exported = Mänguandmed eksporditud. +data.invalid = Need ei ole sobivad mänguandmed. +data.import.confirm = Mänguandmete importimine kustutab\n[scarlet] kõik[] sinu praegused mänguandmed.\n[accent]Seda ei saa tagasi võtta![]\n\nKui mänguandmed on imporditud,\nsiis mäng sulgub kohe. +classic.export = Ekspordi Classic-mänguandmed +classic.export.text = [accent]Mindustry[] on äsja saanud suure uuenduse.\nTuvastatud on Classic- (v3.5 build 40) mänguandmed. Kas sa tahaksid need mänguandmed oma seadme kodukausta kopeerida, et neid Mindustry Classic rakenduses kasutada? +quit.confirm = Oled kindel, et soovid väljuda? +quit.confirm.tutorial = Oled kindel, et soovid õpetuse lõpetada?\nÕpetust saab uuesti läbida:\n[accent]Mängi -> Õpetus[]. loading = [accent]Laadimine... +reloading = [accent]Reloading Mods... 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... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building +wave = [accent]Lahingulaine {0} +wave.waiting = [lightgray]Järgmine laine\nalgab: {0} +wave.waveInProgress = [lightgray]Toimub lahingulaine +waiting = [lightgray]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. -map.publish.error = Error publishing map: {0} -map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! -eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... -editor.brush = Brush -editor.openin = Open In Editor -editor.oregen = Ore Generation -editor.oregen.info = Ore Generation: -editor.mapinfo = Maailma Info +wave.enemies = [lightgray]{0} vaenlast alles +wave.enemy = [lightgray]{0} vaenlane alles +loadimage = Lae pilt +saveimage = Salvesta pilt +unknown = +custom = Mängija loodud +builtin = Sisse-ehitatud +map.delete.confirm = Oled kindel, et soovid maailma kustutada? Seda ei saa tagasi võtta! +map.random = [accent]Suvaline maailm +map.nospawn = Selles maailmas ei ole mängijate tuumikuid!\nLisa redaktoris sellele maailmale[accent] oranž[] tuumik. +map.nospawn.pvp = Selles maailmas ei ole piisavalt mängijate tuumikuid!\nLisa redaktoris sellele maailmale[SCARLET] mitte-oranže[] tuumikuid. +map.nospawn.attack = Selles maailmas ei ole mängijate poolt rünnatavaid vaenlaste tuumikuid!\nLisa redaktoris sellele maailmale[SCARLET] punaseid[] tuumikuid. +map.invalid = Viga maailma laadimisel: ebasobiv või riknenud fail. +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} +map.publish.confirm = Oled kindel, et soovid selle maailma üles laadida?\n\n[lightgray]Veendu, et oled nõustunud Workshop'i kasutustingimustega. Vastasel juhul ei saa sinu maailma üles laadida. +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): +eula = Steam'i kasutustingimused +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} +editor.brush = Pintsel +editor.openin = Ava redaktoris +editor.oregen = Maakide genereerimine +editor.oregen.info = Maakide genereerimine: +editor.mapinfo = Üldinfo editor.author = Autor: editor.description = Kirjeldus: -editor.nodescription = A map must have a description of at least 4 characters before being published. -editor.waves = Raundid: -editor.rules = Rules: -editor.generation = Generation: -editor.ingame = Edit In-Game -editor.publish.workshop = Publish On Workshop -editor.newmap = New Map +editor.nodescription = Maailmal peab enne avaldamist olema vähemalt 4 tähemärgi pikkune kirjeldus. +editor.waves = Lahingulained: +editor.rules = Reeglid: +editor.generation = Genereerimine: +editor.ingame = Redigeeri mängus +editor.publish.workshop = Avalda Workshop'is +editor.newmap = Uus maailm workshop = Workshop -waves.title = Raundid +waves.title = Lahingulained waves.remove = Eemalda -waves.never = +waves.never = -- waves.every = iga -waves.waves = Raund(id) -waves.perspawn = per spawn +waves.waves = laine järel +waves.perspawn = laine kohta waves.to = kuni waves.boss = Boss -waves.preview = Preview +waves.preview = Eelvaade waves.edit = Muuda... -waves.copy = Copy to Clipboard -waves.load = Load from Clipboard -waves.invalid = Invalid waves in clipboard. -waves.copied = Raundid kopeeritud. -waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout. -editor.default = [LIGHT_GRAY] -details = Details... +waves.copy = Kopeeri puhvrisse +waves.load = Lae puhvrist +waves.invalid = Puhvrist laeti vigane lahingulainete informatsioon. +waves.copied = Lahingulainete informatsioon kopeeriti puhvrisse. +waves.none = Vaenlased on täpsustamata.\n[accent]Märkus: Tühjad lahingulained asendatakse automaatselt[]\n[accent]vaikimisi lahingulainetega. +editor.default = [lightgray] +details = Üksikasjad... edit = Muuda... editor.name = Nimi: -editor.spawn = Spawn Unit -editor.removeunit = Remove Unit -editor.teams = Tiimid -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.errornot = This is not a map file. -editor.errorheader = This map file is either not valid or corrupt. +editor.spawn = Tekita väeüksus +editor.removeunit = Eemalda väeüksus +editor.teams = Võistkonnad +editor.errorload = Viga faili laadimisel. +editor.errorsave = Viga faili salvestamisel. +editor.errorimage = See on pildifail, mitte maailmafail.\n\nKui soovid importida Classic- (3.5/build 40) maailma, vajuta redaktoris nupule 'Impordi Classic-maailm'. +editor.errorlegacy = See maailmafail on liiga vana ja kasutab iganenud formaati, mida enam ei toetata. +editor.errornot = See ei ole maailmafail. +editor.errorheader = See maailmafail on ebasobiv või riknenud. editor.errorname = Maailma nime pole täpsustatud. editor.update = Uuenda -editor.randomize = Randomize -editor.apply = Apply +editor.randomize = Juhuslikusta +editor.apply = Kinnita editor.generate = Genereeri -editor.resize = Resize -editor.loadmap = Lae Maailm -editor.savemap = Salvesta maailm +editor.resize = Suurus +editor.loadmap = Lae maailm +editor.savemap = Salvesta 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.save.noname = Su maailmal ei ole nime! Anna maailmale nimi, vajutades menüüs nupule "Üldinfo". +editor.save.overwrite = Sinu maailm kirjutaks üle sisse-ehitatud maailma! Anna maailmale teistsugune nimi, vajutades menüüs nupule "Üldinfo". +editor.import.exists = [scarlet]Importimine ebaõnnestus:[] sisse-ehitatud maailm nimega "{0}" on juba olemas! 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.importmap = Impordi maailm +editor.importmap.description = Impordi olemasolev maailm +editor.importfile = Impordi fail +editor.importfile.description = Impordi maailmafail +editor.importimage = Impordi Classic-maailm +editor.importimage.description = Impordi piltformaadis maailmafail 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.exists = A map with this name already exists. -editor.selectmap = Select a map to load: -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]No filters! Add one with the button below. -filter.distort = Distort -filter.noise = Noise -filter.median = Median -filter.oremedian = Ore Median -filter.blend = Blend -filter.defaultores = Default Ores +editor.exportfile = Ekspordi fail +editor.exportfile.description = Ekspordi maailmafail +editor.exportimage = Ekspordi maastik +editor.exportimage.description = Ekspordi piltformaadis maailmafail +editor.loadimage = Impordi maastik +editor.saveimage = Ekspordi maastik +editor.unsaved = [scarlet]Sul on salvestamata muudatusi![]\nOled kindel, et soovid väljuda? +editor.resizemap = Muuda maailma suurust +editor.mapname = Maailma nimi: +editor.overwrite = [accent]Hoiatus!\nSee asendab olemasoleva maailma. +editor.overwrite.confirm = [scarlet]Hoiatus![] Sellise nimega maailm on juba olemas. Oled kindel, et soovid selle asendada? +editor.exists = Sellise nimega maailm on juba olemas. +editor.selectmap = Vali laetav maailm: +toolmode.replace = Asenda +toolmode.replace.description = Joonista ainult tahkete blokkide peale. +toolmode.replaceall = Asenda kõik +toolmode.replaceall.description = Asenda kõik blokid selles maailmas. +toolmode.orthogonal = Ortogonaalne +toolmode.orthogonal.description = Joonista ainult täisnurkselt ristuvaid jooni. +toolmode.square = Ruudukujuline +toolmode.square.description = Joonista ruudukujulise pintsliga. +toolmode.eraseores = Kustuta maake +toolmode.eraseores.description = Kustuta ainult maake. +toolmode.fillteams = Täida võistkondi +toolmode.fillteams.description = Täida blokkide asemel võistkondi. +toolmode.drawteams = Joonista võistkondi +toolmode.drawteams.description = Joonista blokkide asemel võistkondi. +filters.empty = [lightgray]Filtrid puuduvad! Lisa filtreid alloleva nupuga. +filter.distort = Moonutamine +filter.noise = Müra +filter.median = Mediaan +filter.oremedian = Maakide mediaan +filter.blend = Segustamine +filter.defaultores = Vaikimisi maagid filter.ore = Maak -filter.rivernoise = River Noise -filter.mirror = Mirror -filter.clear = Clear -filter.option.ignore = Ignore -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 = Plokk +filter.rivernoise = Jõed +filter.mirror = Peegeldamine +filter.clear = Kustutamine +filter.option.ignore = Eira +filter.scatter = Puistamine +filter.terrain = Maastik +filter.option.scale = Ulatus +filter.option.chance = Tõenäosus +filter.option.mag = Suurusjärk +filter.option.threshold = Lävi +filter.option.circle-scale = Ringjoone ulatus +filter.option.octaves = Oktaav +filter.option.falloff = Filter +filter.option.angle = Nurk +filter.option.block = Blokk filter.option.floor = Põrand -filter.option.flooronto = Target Floor +filter.option.flooronto = Asendatav põrand filter.option.wall = Sein filter.option.ore = Maak -filter.option.floor2 = Teine Korrus -filter.option.threshold2 = Secondary Threshold -filter.option.radius = Radius -filter.option.percentile = Percentile +filter.option.floor2 = Teine põrand +filter.option.threshold2 = Teine lävi +filter.option.radius = Raadius +filter.option.percentile = Protsentiil width = Laius: height = Kõrgus: menu = Menüü play = Mängi -campaign = Campaign +campaign = Kampaania 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. +language.restart = Keelesätete muudatuste jõustumiseks [accent]taaskäivita[] mäng. settings = Sätted tutorial = Õpetus -tutorial.retake = Re-Take Tutorial -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.unable2 = [scarlet]Unable to LAUNCH.[] -launch.confirm = This will launch all resources in your core.\nYou will not be able to return to this base. -launch.skip.confirm = If you skip now, you will not be able to launch until later waves. -uncover = Uncover -configure = Configure Loadout -configure.locked = [LIGHT_GRAY]Unlock configuring loadout: Wave {0}. -configure.invalid = Amount must be a number between 0 and {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: -zone.objective = [lightgray]Objective: [accent]{0} -zone.objective.survival = Survive -zone.objective.attack = Destroy Enemy Core +tutorial.retake = Korda õpetust +editor = Redaktor +mapeditor = Maailmaredaktor +abandon = Loobu +abandon.text = See piirkond koos kõigi ressurssidega loovutatakse vaenlasele. +locked = Lukus +complete = [lightgray]Eesmärgid: +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} +resume = Jätka piirkonnas:\n[lightgray]{0} +bestwave = [lightgray]Parim lahingulaine: {0} +launch = < LENDUTÕUS > +launch.title = Lendutõus +launch.next = [lightgray]Järgmine võimalus on {0}. laine järel +launch.unable2 = [scarlet]Ei saa LENDU TÕUSTA.[] +launch.confirm = Lendu tõusmisel võetakse kaasa\nkõik tuumikus olevad ressursid.\n[accent]Sellesse baasi ei ole võimalik tagasi tulla. +launch.skip.confirm = Kui jätad praegu lendu tõusmata, siis saad seda teha alles hilisemate lahingulainete järel. +uncover = Ava +configure = Muuda varustust +bannedblocks = Banned Blocks +addall = Add All +configure.locked = [lightgray]Varustuse muutmine avaneb\n {0}. lahingulaine järel. +configure.invalid = Arv peab olema 0 ja {0} vahel. +zone.unlocked = [lightgray]{0} avatud. +zone.requirement.complete = Jõudsid lahingulaineni {0}:\nPiirkonna "{1}" nõuded täidetud. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} +zone.resources = Ressursid: +zone.objective = [lightgray]Eesmärk: [accent]{0} +zone.objective.survival = Ellujäämine +zone.objective.attack = Hävita vaenlaste tuumik 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. -error.bloom = Failed to initialize bloom.\nYour device may not support it. -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 -zone.saltFlats.name = Salt Flats -zone.impact0078.name = Impact 0078 -zone.crags.name = Crags -zone.fungalPass.name = Fungal Pass -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 frigid 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 Titan 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.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. +boss.health = Bossi elud +connectfail = [crimson]Ühenduse viga:\n\n[accent]{0} +error.unreachable = Server ei ole kättesaadav.\nKas serveri aadress on õigesti sisestatud? +error.invalidaddress = Vale aadress. +error.timedout = Ühendus aegus!\nVeendu, et host on pordid edasi suunanud ja et serveri aadress on õigesti sisestatud! +error.mismatch = Andmepaketi viga!\nVõimalik, et kliendi ja serveri versioonid on erinevad.\nVeendu, et nii sinul kui ka hostil on Mindustry uusim versioon! +error.alreadyconnected = Ühendus on juba loodud. +error.mapnotfound = Maailmafaili ei leitud! +error.io = Võrgu sisend-väljundi viga. +error.any = Teadmata viga võrgus. +error.bloom = Bloom-efekti lähtestamine ebaõnnestus.\nSinu seade ei pruugi seda efekti toetada. +zone.groundZero.name = Nullpunkt +zone.desertWastes.name = Kõrbestunud tühermaa +zone.craters.name = Kraatrid +zone.frozenForest.name = Jäätunud mets +zone.ruinousShores.name = Rüüstatud kaldad +zone.stainedMountains.name = Rikutud mägismaa +zone.desolateRift.name = Mahajäetud rift +zone.nuclearComplex.name = Tuumajõujaam +zone.overgrowth.name = Kinnikasvanud võsa +zone.tarFields.name = Tõrvaväljad +zone.saltFlats.name = Soolaväljad +zone.impact0078.name = Kokkupõrge 0078 +zone.crags.name = Kaljurünkad +zone.fungalPass.name = Seenekuru +zone.groundZero.description = Optimaalne asukoht alustamiseks.\nMadal ohutase. Vähesel määral ressursse.\nKogu kokku nii palju vaske ja pliid kui võimalik. +zone.frozenForest.description = Spoorid on levinud isegi mägede lähedale. Jäised temperatuurid ei suuda neid igavesti eemal hoida.\n\nAlusta esimeste katsetustega energia tootmises. Ehita põlemisgeneraatoreid.\nÕpi oma ehitisi parandama. +zone.desertWastes.description = Need tühermaad on üüratud ja ettearvamatud. Siin-seal leidub mahajäetud ja räsitud tööstushooneid.\n\nSelles piirkonnas leidub sütt. Töötle seda grafiidiks või põleta energia saamiseks.\n\n[lightgray]Maandumispaik ei ole kindlaks määratud. +zone.saltFlats.description = Kõrbe äärealadel laiuvad soolaväljad. Sellel alal leidub üksikuid ressursse.\n\nVaenlased on ehitanud siia ressursside hoidla. Hävita nende tuumik. Tee kõik maatasa. +zone.craters.description = Kunagiste sõdade käigus tekkinud kraatrisse on nüüdseks kogunenud vesi. Taasta see piirkond. Kogu liiva. Sulata see metaklaasiks. Kahurite ja puuride jahutamiseks pumpa vett. +zone.ruinousShores.description = Peale tühermaad algab rannajoon. Kunagi asus siin rannakaitsekompleks. Sellest ei ole palju alles. Kõigest põhilisemad kaitseehitised on jäänud puutumata. Teistest hoonetest on alles vaid varemed.\nJätka kaugemale arenemist. Taasavasta tehnoloogiaid. +zone.stainedMountains.description = Kaugemal sisemaal laiuvad mäed, mis on veel spooridest puutumata.\nKaevanda selles piirkonnas külluslikult leiduvat titaani. Õpi seda kasutama.\n\nVaenlasi on siin üpris palju. Ära anna neile aega oma tugevaimate väeüksuste teele saatmiseks. +zone.overgrowth.description = See ala on võsastunud ja asub spooride allika lähedal.\nVaenlased on siin eelpostil. Hävita see. Ehita kalevite väeüksuseid. Taasta see, mis läks kunagi kaduma. +zone.tarFields.description = Mägede ja kõrbe vahel asuvad naftatootmistsooni äärealad. Üks väheseid tõrvavarude piirkondi.\nEhkki see koht on mahajäetud, leidub selle läheduses ohtlikke vaenlasi. Ära alahinda neid.\n\n[lightgray]Võimaluse korral uuri nafta töötlemise tehnoloogiaid. +zone.desolateRift.description = Äärmiselt ohtlik piirkond. Külluslikult ressursse, kuid vähe ruumi. Suur hävinemisoht. Lahku võimalikult kiiresti. Vaenlaste rünnakute vaheline pikk aeg on petlik! +zone.nuclearComplex.description = Endine tooriumi tootmise ja töötlemise rajatis, millest on nüüdseks alles vaid varemed.\n[lightgray]Uuri tooriumit ja selle laialdaseid kasutusvõimalusi.\n\nVaenlaseid on siin palju ning nad jälgivad pidevalt sissetungijaid. +zone.fungalPass.description = Üleminekuala kõrgete mägede ja madalamate, spooridega ülekülvatud maade vahel. Siin asub väike vaenlaste luurebaas.\nHävita see.\nKasuta soldatite ja plahvatajate väeüksuseid. Hävita kaks vaenlaste tuumikut. zone.impact0078.description = zone.crags.description = settings.language = Keel -settings.data = Game Data -settings.reset = Reset to Defaults -settings.rebind = Rebind -settings.controls = Controls +settings.data = Mänguandmed +settings.reset = Vaikimisi sätted +settings.rebind = Muuda +settings.controls = Juhtnupud 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 > +settings.graphics = Graafika +settings.cleardata = Kustuta mänguandmed... +settings.clear.confirm = Oled kindel, et soovid olemasolevad\nsätted kustutada?\n[accent]Seda ei saa tagasi võtta! +settings.clearall.confirm = [scarlet]HOIATUS![]\nKustutatakse kõik andmed, sealhulgas salvestised, maailmad, kampaania saavutused\nja juhtnuppude sätted.\n[accent]Vajutades nupule "OK", kustutatakse\nkõik andmed ja seejärel mäng sulgub.[] +paused = [accent]< Paus > +clear = Clear +banned = [scarlet]Banned yes = Jah no = Ei info.title = Info -error.title = [crimson]An error has occured -error.crashtitle = An error has occured -attackpvponly = [scarlet]Only available in Attack/PvP modes +error.title = [crimson]Viga +error.crashtitle = Viga blocks.input = Sisend blocks.output = Väljund -blocks.booster = Booster -block.unknown = [LIGHT_GRAY]??? -blocks.powercapacity = Power Capacity -blocks.powershot = Power/Shot -blocks.damage = Damage -blocks.targetsair = Targets Air -blocks.targetsground = Targets Ground -blocks.itemsmoved = Move Speed -blocks.launchtime = Time Between Launches -blocks.shootrange = Range +blocks.booster = Kiirendaja +block.unknown = [lightgray]??? +blocks.powercapacity = Energiamahtuvus +blocks.powershot = Energia ühikut/lasu kohta +blocks.damage = Hävituspunkte +blocks.targetsair = Sihib õhku +blocks.targetsground = Sihib maapinnale +blocks.itemsmoved = Transportimise kiirus +blocks.launchtime = Aeg lendutõusude vahel +blocks.shootrange = Ulatus 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.liquidcapacity = Vedelike mahutavus +blocks.powerrange = Energia ulatus +blocks.poweruse = Energiatarve +blocks.powerdamage = Energiatarve hävituspunkti kohta +blocks.itemcapacity = Ressursside mahutavus +blocks.basepowergeneration = Energiatootlus +blocks.productiontime = Tootmisaeg +blocks.repairtime = Täieliku parandamise aeg +blocks.speedincrease = Kiiruse suurenemine 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.buildcost = Build Cost -blocks.inaccuracy = Inaccuracy -blocks.shots = Shots -blocks.reload = Shots/Second +blocks.drilltier = Kaevandatav +blocks.drillspeed = Puurimise kiirus +blocks.boosteffect = Kiirendaja mõju +blocks.maxunits = Maks. aktiivseid väeüksuseid +blocks.health = Elud +blocks.buildtime = Ehitamise aeg +blocks.buildcost = Ehitamise maksumus +blocks.inaccuracy = Ebatäpsus +blocks.shots = Laske +blocks.reload = Lasku/s blocks.ammo = Laskemoon -bar.drilltierreq = Better Drill Required -bar.drillspeed = Drill Speed: {0}/s -bar.efficiency = Efficiency: {0}% -bar.powerbalance = Power: {0}/s -bar.powerstored = Stored: {0}/{1} -bar.poweramount = Power: {0} -bar.poweroutput = Power Output: {0} -bar.items = Items: {0} -bar.capacity = Capacity: {0} +bar.drilltierreq = Nõuab paremat puuri +bar.drillspeed = Puurimise kiirus: {0}/s +bar.efficiency = Kasutegur: {0}% +bar.powerbalance = Bilanss: {0}/s +bar.powerstored = Puhver: {0}/{1} +bar.poweramount = Laeng: {0} +bar.poweroutput = Tootlus: {0} +bar.items = Ressursse: {0} +bar.capacity = Mahutavus: {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 +bar.progress = Edenemine +bar.spawned = Väeüksuseid: {0}/{1} +bullet.damage = [stat]{0}[lightgray] hävituspunkti +bullet.splashdamage = [stat]{0}[lightgray] hävituspunkti ~[stat] {1}[lightgray] blokki +bullet.incendiary = [stat]süttiv +bullet.homing = [stat]isesihtiv +bullet.shock = [stat]elektriseeriv +bullet.frag = [stat]kildpomm +bullet.knockback = [stat]{0}[lightgray]x tagasilöögi kordaja +bullet.freezing = [stat]jäätav +bullet.tarred = [stat]leekisüütav +bullet.multiplier = [stat]{0}[lightgray]x laskemoona kordaja +bullet.reload = [stat]{0}[lightgray]x tulistamise kiirus +unit.blocks = blokki +unit.powersecond = energiaühikut/s +unit.liquidsecond = vedelikuühikut/s +unit.itemssecond = ressursiühikut/s +unit.liquidunits = vedelikuühikut +unit.powerunits = energiaühikut +unit.degrees = kraadi +unit.seconds = s unit.persecond = /s unit.timesspeed = x kiirus unit.percent = % -unit.items = asjad -category.general = Üldine +unit.items = ressursiühikut +category.general = Üldinfo category.power = Energia category.liquids = Vedelikud -category.items = Asjad +category.items = Ressursid category.crafting = Sisend/Väljund category.shooting = Tulistamine -category.optional = Optional Enhancements -setting.landscape.name = Lock Landscape +category.optional = Valikulised täiustused +setting.landscape.name = Lukusta horisontaalpaigutus setting.shadows.name = Varjud -setting.linear.name = Linear Filtering -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.keyboard.name = Mouse+Keyboard Controls -setting.touchscreen.name = Touchscreen Controls -setting.fpscap.name = Max FPS -setting.fpscap.none = None -setting.fpscap.text = {0} FPS -setting.uiscale.name = UI Scaling[lightgray] (require restart)[] -setting.swapdiagonal.name = Always Diagonal Placement +setting.linear.name = Lineaarne tekstuurivastendus +setting.hints.name = Hints +setting.animatedwater.name = Animeeritud vesi +setting.animatedshields.name = Animeeritud kilbid +setting.antialias.name = Sakitõrje[lightgray] (vajab mängu taaskäivitamist)[] +setting.indicators.name = Vaenlaste/Liitlaste osutid +setting.autotarget.name = Automaatne sihtimine +setting.keyboard.name = Hiire ja klaviatuuri juhtnupud +setting.touchscreen.name = Puuteekraani juhtimine +setting.fpscap.name = Maks. arv kaadreid/s +setting.fpscap.none = Puudub +setting.fpscap.text = {0} kaadrit/s +setting.uiscale.name = Kasutajaliidese suurus[lightgray] (vajab mängu taaskäivitamist)[] +setting.swapdiagonal.name = Paiguta alati diagonaalselt setting.difficulty.training = Treening setting.difficulty.easy = Lihtne -setting.difficulty.normal = Normaalne +setting.difficulty.normal = Keskmine 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.difficulty.insane = Hullumeelne +setting.difficulty.name = Raskusaste: +setting.screenshake.name = Ekraani värisemine +setting.effects.name = Näita visuaalefekte +setting.sensitivity.name = Kontrolleri tundlikkus +setting.saveinterval.name = Salvestamise intervall +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.pixelate.name = Pixelate[LIGHT_GRAY] (disables animations) -setting.minimap.name = Näita Kaarti -setting.musicvol.name = Heli tase -setting.ambientvol.name = Ambient Volume +setting.borderlesswindow.name = Äärteta ekraan[lightgray] (võib vajada mängu taaskäivitamist) +setting.fps.name = Näita kaadrite arvu sekundis +setting.vsync.name = Vertikaalne sünkroonimine +setting.pixelate.name = Piksel-efekt[lightgray] (lülitab animatsioonid välja) +setting.minimap.name = Näita kaarti +setting.position.name = Show Player Position +setting.musicvol.name = Muusika helitugevus +setting.ambientvol.name = Taustahelide tugevus setting.mutemusic.name = Vaigista muusika -setting.sfxvol.name = SFX Volume -setting.mutesound.name = Mute Sound -setting.crashreport.name = Send Anonymous Crash Reports -setting.savecreate.name = Auto-Create Saves -setting.publichost.name = Public Game Visibility -setting.chatopacity.name = Chat Opacity +setting.sfxvol.name = Heliefektide tugevus +setting.mutesound.name = Vaigista heli +setting.crashreport.name = Saada automaatseid veateateid +setting.savecreate.name = Loo automaatseid salvestisi +setting.publichost.name = Avaliku mängu nähtavus +setting.chatopacity.name = Vestlusakna läbipaistmatus setting.lasersopacity.name = Power Laser 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}[] seconds... -uiscale.cancel = Cancel & Exit -setting.bloom.name = Bloom -keybind.title = Rebind Keys -keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. -category.general.name = General -category.view.name = View -category.multiplayer.name = Multiplayer +setting.playerchat.name = Näita mängusisest vestlusakent +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. +uiscale.reset = Kasutajaliidese suurust on muudetud.\nVajuta nupule "OK", et uus suurus kinnitada.\n[scarlet]Esialgne suurus taastatakse[accent] {0}[] sekundi pärast... +uiscale.cancel = Tühista ja välju +setting.bloom.name = Bloom-efekt +keybind.title = Muuda juhtnuppe +keybinds.mobile = [scarlet]Enamik kuvatud juhtnuppudest ei ole kasutusel mobiilsetel seadmetel. Toetatakse vaid lihtsaid liikumisega seotud juhtnuppe. +category.general.name = Mäng +category.view.name = Kaamera ja kasutajaliides +category.multiplayer.name = Mitmikmäng command.attack = Ründa -command.rally = Rally +command.rally = Patrulli command.retreat = Põgene -keybind.gridMode.name = Block Select -keybind.gridModeShift.name = Category Select +keybind.clear_building.name = Clear Building 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.fullscreen.name = Toggle Fullscreen -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.press.axis = Liiguta juhtkangi või vajuta klahvi... +keybind.screenshot.name = Kuvatõmmis +keybind.move_x.name = Liigu X-teljel +keybind.move_y.name = Liigu Y-teljel +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y +keybind.fullscreen.name = Täisekraan +keybind.select.name = Vali/Tulista +keybind.diagonal_placement.name = Diagonaalne paigutamine +keybind.pick.name = Vali blokk +keybind.break_block.name = Hävita blokk +keybind.deselect.name = Tühista valik +keybind.shoot.name = Tulista +keybind.zoom_hold.name = Suumimise režiim +keybind.zoom.name = Muuda suumi 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. +keybind.pause_building.name = Pause/Resume Building +keybind.minimap.name = Kaart +keybind.dash.name = Söösta +keybind.chat.name = Vestle +keybind.player_list.name = Mängijate nimekiri +keybind.console.name = Konsool +keybind.rotate.name = Pööra blokki +keybind.rotateplaced.name = Rotate Existing (Hold) +keybind.toggle_menus.name = Näita/Peida menüüd +keybind.chat_history_prev.name = Vestlusaken: eelmine +keybind.chat_history_next.name = Vestlusaken: järgmine +keybind.chat_scroll.name = Vestlusaken: kerimine +keybind.drop_unit.name = Heida väeüksus +keybind.zoom_minimap.name = Suumi kaarti +mode.help.title = Mänguviiside kirjeldused +mode.survival.name = Ellujäämine +mode.survival.description = Tavaline mänguviis. Piiratud ressursid. Lahingulainetena lähenevad vaenlased. 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.attack = Attack Mode -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 +mode.sandbox.description = Lõputult ressursse. Lahingulainetel puudub taimer. +mode.editor.name = Redaktor +mode.pvp.name = Versus +mode.pvp.description = Võitle teiste mängijate vastu. +mode.attack.name = Rünnak +mode.attack.description = Hävita vaenlaste baas. Lahingulaineid ei ole. +mode.custom = Reeglid +rules.infiniteresources = Lõputult ressursse +rules.wavetimer = Kasuta taimerit +rules.waves = Kasuta lahingulaineid +rules.attack = Mänguviis "Rünnak" +rules.enemyCheat = [scarlet]Vaenlastel[] on lõputult ressursse +rules.unitdrops = Väeüksuste heitmine lubatud +rules.unitbuildspeedmultiplier = Väeüksuste tootmiskiiruse kordaja +rules.unithealthmultiplier = Väeüksuste elude kordaja +rules.playerhealthmultiplier = Mängija elude kordaja +rules.playerdamagemultiplier = Mängija hävitusvõime kordaja +rules.unitdamagemultiplier = Väeüksuste hävitusvõime kordaja +rules.enemycorebuildradius = Vaenlaste tuumiku ehitistevaba ala raadius:[lightgray] (ühik) +rules.respawntime = Elluärkamise aeg:[lightgray] (sekund) +rules.wavespacing = Aeg lainete vahel:[lightgray] (sekund) +rules.buildcostmultiplier = Ehitamise maksumuse kordaja +rules.buildspeedmultiplier = Ehitamise kiiruse kordaja +rules.waitForWaveToEnd = Järgmine laine ootab eelmise laine lõpuni +rules.dropzoneradius = Maandumisala raadius:[lightgray] (ühik) +rules.respawns = Maks. arv elluärkamisi laine kohta +rules.limitedRespawns = Piira elluärkamisi +rules.title.waves = Lahingulained +rules.title.respawns = Elluärkamised +rules.title.resourcesbuilding = Ressursid ja ehitamine rules.title.player = Mängijad -rules.title.enemy = Vastased -rules.title.unit = Units -content.item.name = Asjad +rules.title.enemy = Vaenlased +rules.title.unit = Väeüksused +content.item.name = Ressursid content.liquid.name = Vedelikud -content.unit.name = Units -content.block.name = Plokid -content.mech.name = Mechs +content.unit.name = Väeüksused +content.block.name = Konstruktsioonid +content.mech.name = Mehhaanid item.copper.name = Vask item.lead.name = Plii item.coal.name = Süsi item.graphite.name = Grafiit -item.titanium.name = Titaanium +item.titanium.name = Titaan item.thorium.name = Toorium -item.silicon.name = Silikoon -item.plastanium.name = Plastaanium -item.phase-fabric.name = Faasriie -item.surge-alloy.name = Surge Alloy -item.spore-pod.name = Spore Pod +item.silicon.name = Räni +item.plastanium.name = Plastium +item.phase-fabric.name = Faaskangas +item.surge-alloy.name = Voogsulam +item.spore-pod.name = Spoorikobar item.sand.name = Liiv -item.blast-compound.name = Blast Compound -item.pyratite.name = Pyratite -item.metaglass.name = Metaglass -item.scrap.name = Scrap +item.blast-compound.name = Lõhkeaine +item.pyratite.name = Püratiit +item.metaglass.name = Metaklaas +item.scrap.name = Vanametall liquid.water.name = Vesi -liquid.slag.name = Slag +liquid.slag.name = Räbu liquid.oil.name = Nafta -liquid.cryofluid.name = Cryofluid -mech.alpha-mech.name = Alpha -mech.alpha-mech.weapon = Heavy Repeater -mech.alpha-mech.ability = Regeneration +liquid.cryofluid.name = Krüovedelik +mech.alpha-mech.name = Alfa +mech.alpha-mech.weapon = Raskekahur +mech.alpha-mech.ability = Isetaastumine mech.delta-mech.name = Delta -mech.delta-mech.weapon = Arc Generator -mech.delta-mech.ability = Discharge +mech.delta-mech.weapon = Elektrikahur +mech.delta-mech.ability = Laviinläbilöök mech.tau-mech.name = Tau -mech.tau-mech.weapon = Restruct Laser -mech.tau-mech.ability = Repair Burst -mech.omega-mech.name = Omega -mech.omega-mech.weapon = Swarm Missiles -mech.omega-mech.ability = Armored Configuration -mech.dart-ship.name = Dart -mech.dart-ship.weapon = Repeater -mech.javelin-ship.name = Javelin -mech.javelin-ship.weapon = Burst Missiles -mech.javelin-ship.ability = Discharge Booster -mech.trident-ship.name = Trident -mech.trident-ship.weapon = Bomb Bay -mech.glaive-ship.name = Glaive -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.sand-boulder.name = Sand Boulder -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.snow-pine.name = Snow Pine -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.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.armored-conveyor.name = Armored Conveyor -block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. -block.junction.name = Junction -block.router.name = Router -block.distributor.name = Distributor -block.sorter.name = Sorter -block.message.name = Message -block.overflow-gate.name = Overflow Gate -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.command-center.name = Command Center -block.draug-factory.name = Draug Miner Drone Factory -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-large.name = Large Launch Pad +mech.tau-mech.weapon = Paranduslaser +mech.tau-mech.ability = Parandusimpulss +mech.omega-mech.name = Oomega +mech.omega-mech.weapon = Raketiparv +mech.omega-mech.ability = Soomuskate +mech.dart-ship.name = Ahti +mech.dart-ship.weapon = Automaatkahur +mech.javelin-ship.name = Sulev +mech.javelin-ship.weapon = Raketiheitja +mech.javelin-ship.ability = Elekterkiirendus +mech.trident-ship.name = Lembitu +mech.trident-ship.weapon = Pommiheitja +mech.glaive-ship.name = Vambola +mech.glaive-ship.weapon = Kuulipildur +item.explosiveness = [lightgray]Plahvatusohtlikkus: {0}% +item.flammability = [lightgray]Tuleohtlikkus: {0}% +item.radioactivity = [lightgray]Radioaktiivsus: {0}% +unit.health = [lightgray]Elud: {0} +unit.speed = [lightgray]Kiirus: {0} +mech.weapon = [lightgray]Relv: {0} +mech.health = [lightgray]Elud: {0} +mech.itemcapacity = [lightgray]Ressursside mahutavus: {0} +mech.minespeed = [lightgray]Kaevandamise kiirus: {0}% +mech.minepower = [lightgray]Kaevandamise võimsus: {0}x +mech.ability = [lightgray]Lisavõime: {0} +mech.buildspeed = [lightgray]Ehitamise kiirus: {0}% +liquid.heatcapacity = [lightgray]Soojusmahtuvus: {0} +liquid.viscosity = [lightgray]Viskoossus: {0} +liquid.temperature = [lightgray]Temperatuur: {0} +block.sand-boulder.name = Liivakamakas +block.grass.name = Rohi +block.salt.name = Sool +block.saltrocks.name = Kristallsool +block.pebbles.name = Kruus +block.tendrils.name = Kombitsad +block.sandrocks.name = Liivakivid +block.spore-pine.name = Spoorine puu +block.sporerocks.name = Spoorkivid +block.rock.name = Kivikamakas +block.snowrock.name = Lumine kivikamakas +block.snow-pine.name = Lumine puu +block.shale.name = Savikilt +block.shale-boulder.name = Kivikamakas +block.moss.name = Sammal +block.shrubs.name = Põõsad +block.spore-moss.name = Spoorsammal +block.shalerocks.name = Savikildad +block.scrap-wall.name = Vanametallist sein +block.scrap-wall-large.name = Suur vanametallist sein +block.scrap-wall-huge.name = Tohutu vanametallist sein +block.scrap-wall-gigantic.name = Hiiglaslik vanametallist sein +block.thruster.name = Põtkur +block.kiln.name = Klaasisulatusahi +block.graphite-press.name = Grafiidipress +block.multi-press.name = Multipress +block.constructing = {0} [lightgray](Ehitamine) +block.spawn.name = Vaenlaste maandumisala +block.core-shard.name = Tuumik: Osake +block.core-foundation.name = Tuumik: Arenenud +block.core-nucleus.name = Tuumik: Täielik +block.deepwater.name = Sügav vesi +block.water.name = Vesi +block.tainted-water.name = Riknenud vesi +block.darksand-tainted-water.name = Riknenud vesi tumedal liival +block.tar.name = Tõrv +block.stone.name = Kivi +block.sand.name = Liiv +block.darksand.name = Tume liiv +block.ice.name = Jää +block.snow.name = Lumi +block.craters.name = Kraatrid +block.sand-water.name = Vesi liival +block.darksand-water.name = Vesi tumedal liival +block.char.name = Puusüsi +block.holostone.name = Helendav kivi +block.ice-snow.name = Jäine lumi +block.rocks.name = Kivid +block.icerocks.name = Jäised kivid +block.snowrocks.name = Lumised kivid +block.dunerocks.name = Luitekivid +block.pine.name = Puu +block.white-tree-dead.name = Surnud valgepuu +block.white-tree.name = Valgepuu +block.spore-cluster.name = Spoorikobarad +block.metal-floor.name = Metallpõrand 1 +block.metal-floor-2.name = Metallpõrand 2 +block.metal-floor-3.name = Metallpõrand 3 +block.metal-floor-5.name = Metallpõrand 4 +block.metal-floor-damaged.name = Kahjustunud metallpõrand +block.dark-panel-1.name = Tume paneel 1 +block.dark-panel-2.name = Tume paneel 2 +block.dark-panel-3.name = Tume paneel 3 +block.dark-panel-4.name = Tume paneel 4 +block.dark-panel-5.name = Tume paneel 5 +block.dark-panel-6.name = Tume paneel 6 +block.dark-metal.name = Tume metall +block.ignarock.name = Tardkivim +block.hotrock.name = Kuumad kivid +block.magmarock.name = Magmakivim +block.cliffs.name = Rahnud +block.copper-wall.name = Vasksein +block.copper-wall-large.name = Suur vasksein +block.titanium-wall.name = Titaansein +block.titanium-wall-large.name = Suur titaansein +block.phase-wall.name = Faassein +block.phase-wall-large.name = Suur faassein +block.thorium-wall.name = Tooriumsein +block.thorium-wall-large.name = Suur tooriumsein +block.door.name = Uks +block.door-large.name = Suur uks +block.duo.name = Kaksikkahur +block.scorch.name = Leegiheitja +block.scatter.name = Turmtuli +block.hail.name = Kauglaskur +block.lancer.name = Kvantlaser +block.conveyor.name = Konveier +block.titanium-conveyor.name = Titaankonveier +block.armored-conveyor.name = Soomuskonveier +block.armored-conveyor.description = Transpordib ressursse sama kiiresti kui titaankonveier, kuid on soomuskattega ja vastupidavam. Võtab külgedelt sisendina vastu ainult konveierite väljundeid. +block.junction.name = Ristmik +block.router.name = Jaotur +block.distributor.name = Suur jaotur +block.sorter.name = Sorteerija +block.inverted-sorter.name = Inverted Sorter +block.message.name = Sõnum +block.overflow-gate.name = Ülevooluvärav +block.silicon-smelter.name = Ränisulatusahi +block.phase-weaver.name = Faaskangakuduja +block.pulverizer.name = Metallijahvataja +block.cryofluidmixer.name = Krüosegisti +block.melter.name = Metallisulataja +block.incinerator.name = Tuhastusahi +block.spore-press.name = Spooripress +block.separator.name = Räbueraldaja +block.coal-centrifuge.name = Söetsentrifuug +block.power-node.name = Energiasõlm +block.power-node-large.name = Suur energiasõlm +block.surge-tower.name = Energiatorn +block.battery.name = Aku +block.battery-large.name = Suur aku +block.combustion-generator.name = Põlemisgeneraator +block.turbine-generator.name = Aurugeneraator +block.differential-generator.name = Diferentseeriv generaator +block.impact-reactor.name = Impulssreaktor +block.mechanical-drill.name = Harilik puur +block.pneumatic-drill.name = Pneumaatiline puur +block.laser-drill.name = Laserpuur +block.water-extractor.name = Puurkaev +block.cultivator.name = Inkubaator +block.dart-mech-pad.name = Alfa morfoosjaam +block.delta-mech-pad.name = Delta morfoosjaam +block.javelin-ship-pad.name = Sulevi morfoosjaam +block.trident-ship-pad.name = Lembitu morfoosjaam +block.glaive-ship-pad.name = Vambola morfoosjaam +block.omega-mech-pad.name = Oomega morfoosjaam +block.tau-mech-pad.name = Tau morfoosjaam +block.conduit.name = Toru +block.mechanical-pump.name = Harilik pump +block.item-source.name = Ressursiallikas +block.item-void.name = Ressursisuue +block.liquid-source.name = Vedelikuallikas +block.power-void.name = Maandaja +block.power-source.name = Energiaallikas +block.unloader.name = Mahalaadija +block.vault.name = Suur hoidla +block.wave.name = Prits +block.swarmer.name = Parvpildur +block.salvo.name = Krempelpaugutaja +block.ripple.name = Tähesadu +block.phase-conveyor.name = Faaskonveier +block.bridge-conveyor.name = Sildkonveier +block.plastanium-compressor.name = Plastiumipress +block.pyratite-mixer.name = Püratiidisegisti +block.blast-mixer.name = Lõhkeainete segisti +block.solar-panel.name = Päikesepaneel +block.solar-panel-large.name = Suur päikesepaneel +block.oil-extractor.name = Naftapuur +block.command-center.name = Juhtimiskeskus +block.draug-factory.name = Kaevandusdroonide tehas +block.spirit-factory.name = Parandusdroonide tehas +block.phantom-factory.name = Ehitusdroonide tehas +block.wraith-factory.name = Hävitajate tehas +block.ghoul-factory.name = Pommitajate tehas +block.dagger-factory.name = Soldatite tehas +block.crawler-factory.name = Plahvatajate tehas +block.titan-factory.name = Kalevite tehas +block.fortress-factory.name = Koljatite tehas +block.revenant-factory.name = Ülestõusnute tehas +block.repair-point.name = Parandusjaam +block.pulse-conduit.name = Titaantoru +block.phase-conduit.name = Faastoru +block.liquid-router.name = Torujaotur +block.liquid-tank.name = Mahuti +block.liquid-junction.name = Toruristmik +block.bridge-conduit.name = Torusild +block.rotary-pump.name = Labapump +block.thorium-reactor.name = Tooriumreaktor +block.mass-driver.name = EM-katapult +block.blast-drill.name = Plahvatuspuur +block.thermal-pump.name = Termopump +block.thermal-generator.name = Termogeneraator +block.alloy-smelter.name = Voogsulatusahi +block.mender.name = Parandaja +block.mend-projector.name = Parandusväli +block.surge-wall.name = Voogsein +block.surge-wall-large.name = Suur voogsein +block.cyclone.name = Tuulispask +block.fuse.name = Välkkahur +block.shock-mine.name = Miin +block.overdrive-projector.name = Kiirkäiguväli +block.force-projector.name = Kaitseväli +block.arc.name = Elektrikahur +block.rtg-generator.name = RT-generaator +block.spectre.name = Kõmmutaja +block.meltdown.name = Valguskiir +block.container.name = Hoidla +block.launch-pad.name = Stardiplatvorm +block.launch-pad-large.name = Suur stardiplatvorm team.blue.name = sinine -team.crux.name = red -team.sharded.name = orange +team.crux.name = punane +team.sharded.name = killustunud team.orange.name = oranž -team.derelict.name = derelict +team.derelict.name = unustatud team.green.name = roheline team.purple.name = lilla -unit.spirit.name = Spirit Drone -unit.draug.name = Draug Miner Drone -unit.phantom.name = Phantom Drone -unit.dagger.name = Dagger -unit.crawler.name = Crawler -unit.titan.name = Titan -unit.ghoul.name = Ghoul Bomber -unit.wraith.name = Wraith Fighter -unit.fortress.name = Fortress -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.next = [lightgray] -tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nBegin by[accent] mining copper[]. Tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper -tutorial.drill = Mining manually is inefficient.\n[accent]Drills []can mine automatically.\nPlace one on a copper vein. -tutorial.drill.mobile = Mining manually is inefficient.\n[accent]Drills []can mine automatically.\nTap the drill tab in the bottom right.\nSelect the[accent] mechanical drill[].\nPlace it on a copper vein by tapping, then press the[accent] checkmark[] below to confirm your selection.\nPress the[accent] X button[] to cancel placement. -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. -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[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.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. -tutorial.unpause = Now press space again to unpause. -tutorial.unpause.mobile = Now press it again to unpause. -tutorial.breaking = Blocks frequently need to be destroyed.\n[accent]Hold down right-click[] to destroy all blocks in a selection.[]\n\n[accent]Destroy all the scrap blocks to the left of your core using area selection. -tutorial.breaking.mobile = Blocks frequently need to be destroyed.\n[accent]Select deconstruction mode[], then tap a block to begin breaking it.\nDestroy an area by holding down your finger for a few seconds[] and dragging in a direction.\nPress the checkmark button to confirm breaking.\n\n[accent]Destroy all the scrap blocks to the left of your core using area selection. -tutorial.withdraw = In some situations, taking items directly from blocks is necessary.\nTo do this, [accent]tap a block[] with items in it, then [accent]tap the item[] in the inventory.\nMultiple items can be withdrawn by [accent]tapping and holding[].\n\n[accent]Withdraw some copper from the core.[] -tutorial.deposit = Deposit items into blocks by dragging from your ship to the destination block.\n\n[accent]Deposit your copper back into the core.[] -tutorial.waves = The[LIGHT_GRAY] enemy[] approaches.\n\nDefend your core for 2 waves. Build more turrets. -tutorial.waves.mobile = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves. Your ship will automatically fire at enemies.\nBuild more turrets and drills. Mine more copper. -tutorial.launch = Once you reach a specific wave, you are able to[accent] launch the core[], leaving your defenses behind and[accent] obtaining all the resources in your core.[]\nThese resources can then be used to research new technology.\n\n[accent]Press the launch button. -item.copper.description = A useful structure material. Used extensively in all types of blocks. -item.lead.description = A basic starter material. Used extensively in electronics and liquid transportation blocks. -item.metaglass.description = A super-tough glass compound. Extensively used for liquid distribution and storage. -item.graphite.description = Mineralized carbon, used for ammunition and electrical insulation. -item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux. -item.coal.description = A common and readily available fuel. -item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft. -item.thorium.description = A dense, radioactive metal used as structural support and nuclear fuel. -item.scrap.description = Leftover remnants of old structures and units. Contains trace amounts of many different metals. -item.silicon.description = An extremely useful semiconductor, with applications in solar panels and many complex electronics. -item.plastanium.description = A light, ductile material used in advanced aircraft and fragmentation ammunition. -item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology. -item.surge-alloy.description = An advanced alloy with unique electrical properties. -item.spore-pod.description = Used for conversion into oil, explosives and fuel. -item.blast-compound.description = A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised. -item.pyratite.description = An extremely flammable substance used in incendiary weapons. -liquid.water.description = Sageli kasutatud jahutamiseks ja jäätme töötluseks. -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 = Seda saab põleteda, õhku lasta või kasutada jahutamiseks. -liquid.cryofluid.description = Kõige efektiivsem vedelik asjade maha jahutamiseks. -mech.alpha-mech.description = The standard mech. Has decent speed and damage output. -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.description = The support mech. Heals allied blocks by shooting at them. Can heal allies in a radius with its repair ability. -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.description = The standard ship. Reasonably fast and light, but has little offensive capability and low mining speed. -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.trident-ship.description = A heavy bomber. Reasonably well armored. -mech.glaive-ship.description = A large, well-armored gunship. Equipped with an incendiary repeater. Good acceleration and maximum speed. -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 = The starter drone unit. Spawns in the core by default. Automatically mines ores and repairs blocks. -unit.phantom.description = An advanced drone unit. Automatically mines ores and repairs blocks. Significantly more effective than a spirit drone. -unit.dagger.description = A basic ground unit. Useful in swarms. -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 = An advanced, armored ground unit. Attacks both ground and air targets. -unit.fortress.description = A heavy artillery ground unit. -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.wraith.description = A fast, hit-and-run interceptor unit. -unit.ghoul.description = A heavy carpet bomber. -unit.revenant.description = A heavy, hovering missile array. -block.message.description = Stores a message. Used for communication between allies. -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. -block.silicon-smelter.description = Reduces sand with highly pure coal in order to produce silicon. -block.kiln.description = Smelts sand and lead into metaglass. Requires small amounts of power. -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.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.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.coal-centrifuge.description = Solidifes oil into chunks of coal. -block.incinerator.description = Gets rid of any excess item or liquid. -block.power-void.description = Hävitab kõik materjalid, mis sinna lähevad. Ainult liivakastis. -block.power-source.description = Annab välja lõpmatult elektrit. Ainult liivakastis. -block.item-source.description = Annab välja lõpmatult materjale. Ainult liivakastis. -block.item-void.description = Hävitab kõik materjalid, mis sinna lähevad elektrit kasutamata. Ainult liivakastis. -block.liquid-source.description = Annab välja lõpmatult vedelikke. Ainult liivakastis. -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.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.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.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. -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.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.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.bridge-conveyor.description = Arenenud transpordi ehitis. Lubab transportida materjale üle iga pinnase ja ehitise 3 ruudu kaugusele. -block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. -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.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.overflow-gate.description = A combination splitter and router that only outputs to the left and right if the front path is blocked. -block.mass-driver.description = Ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. -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.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.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.phase-conduit.description = Advanced liquid transport block. Uses power to teleport liquids to a connected phase conduit over several tiles. -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.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.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. -block.rtg-generator.description = A radioisotope thermoelectric generator which does not require cooling but provides less power than a thorium reactor. -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.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.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.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 = Stores a large amount of items of each type. An[LIGHT_GRAY] unloader[] can be used to retrieve items from the vault. -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.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.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished. -block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently. -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.scorch.description = Burns any ground enemies close to it. Highly effective at close range. -block.hail.description = A small artillery turret. -block.wave.description = A medium-sized rapid-fire turret which shoots liquid bubbles. -block.lancer.description = A medium-sized turret which shoots charged electricity beams. -block.arc.description = A small close-range turret which shoots electricity in a random arc towards the enemy. -block.swarmer.description = A medium-sized turret which shoots burst missiles. -block.salvo.description = A medium-sized turret which fires shots in salvos. -block.fuse.description = A large turret which shoots powerful short-range beams. -block.ripple.description = A large artillery turret which fires several shots simultaneously. -block.cyclone.description = A large rapid fire turret. -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.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. -block.draug-factory.description = Produces Draug mining drones. -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.revenant-factory.description = Produces heavy laser air units. -block.dagger-factory.description = Produces basic ground units. -block.crawler-factory.description = Produces fast self-destructing swarm units. -block.titan-factory.description = Produces advanced, armored ground units. -block.fortress-factory.description = Produces heavy artillery ground units. -block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. -block.dart-mech-pad.description = Provides transformation into a basic attack mech.\nUse by 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.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.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.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.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.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. +unit.spirit.name = Parandusdroon +unit.draug.name = Kaevandusdroon +unit.phantom.name = Ehitusdroon +unit.dagger.name = Soldat +unit.crawler.name = Plahvataja +unit.titan.name = Kalev +unit.ghoul.name = Pommitaja +unit.wraith.name = Hävitaja +unit.fortress.name = Koljat +unit.revenant.name = Ülestõusnu +unit.eruptor.name = Tulesülgaja +unit.chaos-array.name = Peninukk +unit.eradicator.name = Luupainaja +unit.lich.name = Tulihänd +unit.reaper.name = Vanapagan +tutorial.next = [lightgray] +tutorial.intro = Alustasid[accent] Mindustry mänguõpetusega[].\n[accent]Tuumikust[] väljub sinu [accent]lendmehhaan Ahti[]. Alusta[accent] vase kaevandamisest[]. Selleks liigu tuumiku lähedal asuva vasemaagi juurde ja vajuta sellele.\n\n[accent]{0}/{1} vaske kaevandatud +tutorial.drill = Käsitsi kaevandamine ei ole tõhus.\n[accent]Puurid []kaevandavad automaatselt.\nVajuta all paremas nurgas asuvale puuride nupule.\nVali[accent] harilik puur[]. Aseta üks puur vasemaagile, kasutades [accent]vasakut hiireklikki[].\n[accent]Parem hiireklikk[] peatab ehitamise. [accent]Hoia Ctrl-klahvi ja libista rullikut[], et suumida sisse ja välja. +tutorial.drill.mobile = Käsitsi kaevandamine ei ole tõhus.\n[accent]Puurid []kaevandavad automaatselt.\nVajuta all paremas nurgas asuvale puuride nupule.\nVali[accent] harilik puur[].\nAseta üks puur vasemaagile, , vajutades sellele, ning seejärel vajuta allpool olevale[accent] linnukesele[] valiku kinnitamiseks.\nPaigutuse tühistamiseks vajuta [accent]"X"-nupule[]. +tutorial.blockinfo = Igal konstruktsioonil on erinevad omadused. Iga puuriga on võimalik kaevandada vaid kindlaid maake.\nBloki teabe ja omaduste kuvamiseks vali see menüüst ning vajuta seejärel [accent]"?"-nupule.[]\n\n[accent]Vaata hariliku puuri omadusi.[] +tutorial.conveyor = [accent]Konveiereid[] kasutatakse ressursside vedamiseks tuumikusse.\nMoodusta konveieritest rada puurist tuumikuni.\nRaja moodustamiseks [accent]vajuta vasak hiireklikk alla ja lohista soovitud suunas.[]\nHoia all[accent] Ctrl-klahvi[], et paigutada rada diagonaalselt.\n\n[accent]Aseta paar konveierit ja transpordi ressursid tuumikusse. +tutorial.conveyor.mobile = [accent]Konveiereid[] kasutatakse ressursside vedamiseks tuumikusse.\nMoodusta konveieritest rada puurist tuumikuni.\n[accent] Raja moodustamiseks hoia sõrme mõni sekund all[] ning lohista soovitud suunas.\n\n[accent]Aseta paar konveierit ja transpordi ressursid tuumikusse. +tutorial.turret = Tuumikusse veetud ressursse saab kasutada ehitamiseks.\nPea meeles, et mitte kõiki ressursse ei saa kasutada ehitamiseks.\nRessursse, mida ehitamiseks kasutada ei saa, näiteks[accent] süsi[] või[accent] vanametall[], ei saa ka tuumikusse hoiule panna.\n[scarlet]Vaenlaste tõrjumiseks[] tuleb ehitada kaitsvaid konstruktsioone.\n[accent]Ehita oma baasi lähedale kaksikkahur. +tutorial.drillturret = Kaksikkahurid vajavad tulistamiseks[accent] vasest laskemoona[].\nAseta kaksikkahuri kõrvale puur ja suuna konveierid kahurini, et varustada seda kaevandatud vasega.\n\n[accent]Laskemoona tarnitud: 0/1 +tutorial.pause = Lahingu ajal on võimalik[accent] mängu käik peatada.[]\nPausi ajal on võimalik ehitustööd ootele valmis panna. Pausilt naastes täidetakse need tööd kohe.\n\nMängu peatamiseks vajuta [accent]tühikut. +tutorial.pause.mobile = Lahingu ajal on võimalik[accent] mängu käik peatada.[]\nPausi ajal on võimalik ehitustööd ootele valmis panna. Pausilt naastes täidetakse need tööd kohe.\n\n[accent]Mängu peatamiseks vajuta üleval vasakus nurgas olevale pausinupule. +tutorial.unpause = Nüüd vajuta uuesti tühikut, et mängu naasta. +tutorial.unpause.mobile = Nüüd vajuta seda nuppu uuesti, et mängu naasta. +tutorial.breaking = Sageli on vaja blokke hävitada.\n[accent]Hoia all paremat hiireklahvi[], et hävitada kõik valitud blokid.[]\n\n[accent]Hävita kõik tuumikust vasakule jäävad vanametalli blokid, valides need korraga. +tutorial.breaking.mobile = Sageli on vaja blokke hävitada.\n[accent]Vali alt paremast nurgast blokkide hävitamise režiim[] ning seejärel vajuta blokile, mida soovid hävitada.\nMitme bloki hävitamiseks hoia sõrme mõni sekund all ning lohista üle blokkide.\nVajuta linnukesele, et kinnitada hävitusprotsess.\n\n[accent]Hävita kõik tuumikust vasakule jäävad vanametalli blokid, valides need korraga. +tutorial.withdraw = Mõnikord on vaja ressursse otse mehhaanile kaasa võtta.\nSelleks [accent]vajuta blokile[], milles on ressursid, ja seejärel[accent] vajuta inventaris kuvatud ressursile[].\n[accent]Vajutades ja hoides[] on võimalik ressursse kaasa võtta hulgi.\n\n[accent]Võta tuumikust kaasa vaske.[] +tutorial.deposit = Ressursside mahalaadimiseks lohista ressursid oma mehhaanilt sihtblokini.\n\n[accent]Pane vask tagasi tuumikusse.[] +tutorial.waves = [scarlet]Vaenlane[] läheneb.\n\nKaitse oma tuumikut kahe lahingulaine vältel.[accent] Kliki hiirega[], et oma mehhaanist tulistada.\n[accent]Kaevanda juurde vaske. Ehita uusi puure ja kahureid. +tutorial.waves.mobile = [scarlet]Vaenlane[] läheneb.\n\nKaitse oma tuumikut kahe lahingulaine vältel. Sinu mehhaan tulistab vaenlaseid automaatselt.\n[accent]Kaevanda juurde vaske. Ehita uusi puure ja kahureid. +tutorial.launch = Kui oled kindla arvu lahingulaineid vastu pidanud, on sul võimalik[accent] tuumikuga lendu tõusta[], jättes maha kõik muud ehitised ja[accent] võttes kaasa kõik tuumikus olevad ressursid.[]\nNeid ressursse saab kasutada uute [accent]tehnoloogiate uurimiseks[].\n\n[accent]Vajuta lendu tõusmise nuppu. +item.copper.description = Peamine materjal, mida kasutatakse igat tüüpi konstruktsioonide ehitamiseks. +item.lead.description = Peamine materjal, mida kasutatakse vedelike transportimise konstruktsioonide ja elektroonikaga seotud konstruktsioonide ehitamiseks. +item.metaglass.description = Ülitugev klaasiühend, mida kasutatakse vedelike transportimise ja hoiustamise konstruktsioonide ehitamiseks. +item.graphite.description = Töödeldud süsinik, mida kasutatakse laskemoona tootmisel ja elektrilise isoleerainena. +item.sand.description = Levinud materjal, mida kasutatakse metallurgias toorainena ja sulamite koostisena. +item.coal.description = Kivistunud taimne mass, mis tekkis ammu enne spooride levimist. Kasutatakse kütusena ja teiste materjalide tootmisel. +item.titanium.description = Haruldane ja imekerge metall, mida kasutatakse puuride, mehhaanide ja vedelike transportimise konstruktsioonide ehitamiseks. +item.thorium.description = Tihke radioaktiivne metall, mida kasutatakse tuumkütusena ja tugevate konstruktsioonide ehitamisel. +item.scrap.description = Vanaaegsete ehitiste ja mahajäetud väeüksuste jäänused, mis sisaldavad väheses koguses erinevaid metalle. +item.silicon.description = Pooljuht, mida kasutatakse päikesepaneelides, keerukates elektroonikaseadmetes ja isejuhtivates rakketides. +item.plastanium.description = Kerge plastiline materjal, mida kasutatakse täiustatud lendmehhaanide ja kildpommide valmistamiseks. +item.phase-fabric.description = Peaaegu kaalutu materjal, mida kasutatakse keerukates elektroonikaseadmetes ja isetaastuvates tehnoloogiates. +item.surge-alloy.description = Täiustatud sulam, millel on ainulaadsed elektrilised omadused. +item.spore-pod.description = Sünteetiline spooride kogum, mis on toodetud atmosfääris leiduvatest kontsentratsioonidest tööstustlikel eesmärkidel. Kasutatakse kütusena, tehisnafta tootmiseks ja lõhkeainete koostisosana. +item.blast-compound.description = Pommides kasutatav ebastabiilne komponent, mis on sünteesitud spoorikobaratest ja teistest lenduvatest ühenditest. Kütusena kasutamine pole soovitatav. +item.pyratite.description = Süüterelvades kasutatav eriti tuleohtlik aine. +liquid.water.description = Kõige kasulikum vedelik, mida kasutatakse masinate jahutamiseks ja tööstuslike jäätmete töötlemisel. +liquid.slag.description = Erinevate sulametallide segu. Võimalik eraldada koostisesse kuuluvateks mineraalideks või kasutada relvana, pihustades seda vaenlase väeüksustele. +liquid.oil.description = Keerukate materjalide tootmisel kasutatav vedelik. Võimalik muundada söeks või kasutada relvana, pihustades seda vaenlase väeüksustele. +liquid.cryofluid.description = Inertne mittesöövitav vedelik, mis saadakse veest ja titaanist. Suure soojusmahtuvusega. Kasutatakse masinate jahutamiseks. +mech.alpha-mech.description = Standardne maapealne mehhaan. Põhineb soldatite väeüksusel, millel on täiustatud soomuskate ja suurem ehitusvõimekus. Suurema kahjuvõimega kui standardne lendmehhaan. +mech.delta-mech.description = Kiire ja kergelt soomustatud maapealne mehhaan, mis on loodud äkkrünnakuteks. Konstruktsioone kahjustab vähe, kuid on oma elektrirelvadega suuteline kiiresti hävitama suuremaid vaenlaste väeüksusi. +mech.tau-mech.description = Tugifunktsioonidega maapealne mehhaan. Parandab liitlaste ehitisi, tulistades neid. Parandab liitlaste mehhaane teatud raadiuses enda ümber. +mech.omega-mech.description = Tugev ja hästi soomustatud maapealne mehhaan frontaalrünnakuteks. Soomuskate kaitseb mehhaani kuni 90% ulatuses. +mech.dart-ship.description = Standardne lendmehhaan. Võrdlemisi kiire ja kerge, kuid madala kahjuvõimega ja madala kaevandamise kiirusega. +mech.javelin-ship.description = Äkkrünnakuteks loodud lendmehhaan. Kuigi hoovõtt on aeglane, saavutab see suure kiiruse ja teeb vaenlastele suuresti kahju, kasutades elektrirelvi\nja rakette. +mech.trident-ship.description = Pommitajast lendmehhaan, millega on võimalik paremini ehitisi konstrueerida ja samas vaenlase kaitserajatisi hävitada. Küllaltki hästi soomustatud. +mech.glaive-ship.description = Tugev ja hästi soomustatud lendmehhaan. Relvastatud leegitseva kuulipilduriga. Väga manööverdusvõimeline. +unit.draug.description = Algeline droon, mis on mõeldud kaevandamiseks. Odav toota, kuid kulukas ülal pidada. Kaevandab automaatselt vaske ja pliid ning transpordib ressursse lähimasse tuumikusse. +unit.spirit.description = Modifitseeritud kaevandusdroon, mis on mõeldud ehitiste automaatseks parandamiseks. +unit.phantom.description = Täiustatud droon, mis järgneb oma liitlastele ja abistab konstruktsioonide ehitamisel. +unit.dagger.description = Kõige elementaarsem maapealne väeüksus, mida on odav toota. Suured parved käivad vaenlastele üle jõu. +unit.crawler.description = Maapealne väeüksus, mis koosneb lihtsast kerest, millele on kinnitatud lõhkeained. Pole eriti vastupidav. Plahvatab kokkupuutel vaenlasega. +unit.titan.description = Täiustatud ja soomustatud maapealne väeüksus. Ründab nii maapealseid kui ka õhus olevaid sihtmärke. Varustatud kahe miniatuurse leegiheitjaga. +unit.fortress.description = Tugev maapealne väeüksus, mis on relvastatud kahe modifitseeritud kauglaskuriga. Need võimaldavad hõlpsasti rünnata kaugel asuvaid vaenlasi ja nende väeüksusi. +unit.eruptor.description = Tugev maapealne väeüksus, mis on loodud konstruktsioonide hävitamiseks. Pritsib vaenlase ehitisi kuuma räbuga, mis sulatab need ning süütab ümbritsevad lenduvad osakesed. +unit.wraith.description = Kiiresti lendav väeüksus, mis sihib generaatoreid. +unit.ghoul.description = Tugev ja lendav lauspommitav väeüksus. Sööstab vaenlaste ja nende ehitiste kohal, sihtides infrastruktuuri kõige olulisemaid osi. +unit.revenant.description = Vastupidav ja lendav väeüksus raketimassiiviga. +block.message.description = Hoiab endas liitlastele olulist sõnumit. +block.graphite-press.description = Surub söekamakaid õhukesteks grafiidilehtedeks. +block.multi-press.description = Grafiidipressi täiustatud versioon, mis kasutab vett ja energiat kiiremaks ja tõhusamaks töötlemiseks. +block.silicon-smelter.description = Toodab räni, redutseerides liiva puhta söega. +block.kiln.description = Sulatab liiva ja plii metaklaasiks. Väike energiatarve. +block.plastanium-compressor.description = Toodab naftast ja titaanist plastiumit. +block.phase-weaver.description = Sünteesib faaskangast radioaktiivsest tooriumist ja liivast. Tohutu energiatarve. +block.alloy-smelter.description = Kombineerib titaaniumi, plii, räni ja vase voogsulamiks. +block.cryofluidmixer.description = Toodab krüovedelikku, segades kokku vee ja peene titaanpulbri. Hädavajalik tooriumreaktori toimimiseks. +block.blast-mixer.description = Purustab spoorikobaraid ja segab neid püratiidiga, et toota lõhkeainet. +block.pyratite-mixer.description = Segab söe, plii ja liiva tuleohtlikuks püratiidiks. +block.melter.description = Sulatab vanametalli räbuks, mida saab kas edasi töödelda või kasutada pritskahurites. +block.separator.description = Eraldab räbu selle koostisesse kuuluvateks mineraalideks. Väljastab jahenenud saadused. +block.spore-press.description = Sünteesib naftat, surudes spoorikobaraid suure rõhu all. +block.pulverizer.description = Purustab vanametalli peeneks liivaks. +block.coal-centrifuge.description = Tahkestab nafta söeks. +block.incinerator.description = Hävitab iga sellesse siseneva ressursi ja vedeliku. +block.power-void.description = Nullib kogu energia. Olemas ainult mänguviisis "Liivakast". +block.power-source.description = Väljastab piiramatult energiat. Olemas ainult mänguviisis "Liivakast". +block.item-source.description = Väljastab piiramatult ressursse. Olemas ainult mänguviisis "Liivakast". +block.item-void.description = Hävitab kõik ressursid. Olemas ainult mänguviisis "Liivakast". +block.liquid-source.description = Väljastab piiramatult vedelikke. Olemas ainult mänguviisis "Liivakast". +block.copper-wall.description = Odav kaitsekonstruktsioon.\nKasulik tuumiku ja kahurite kaitsmiseks esimeste lahingulainete ajal. +block.copper-wall-large.description = Odav kaitsekonstruktsioon.\nKasulik tuumiku ja kahurite kaitsmiseks esimeste lahingulainete ajal.\nUlatub üle mitme bloki. +block.titanium-wall.description = Mõõdukalt tugev kaitsekonstruktsioon.\nPakub keskmist kaitset vaenlaste eest. +block.titanium-wall-large.description = Mõõdukalt tugev kaitsekonstruktsioon.\nPakub keskmist kaitset vaenlaste eest.\nUlatub üle mitme bloki. +block.thorium-wall.description = Tugev kaitsekonstruktsioon.\nPakub head kaitset vaenlaste eest. +block.thorium-wall-large.description = Tugev kaitsekonstruktsioon.\nPakub head kaitset vaenlaste eest.\nUlatub üle mitme bloki. +block.phase-wall.description = Tugev kaitsekonstruktsioon, mis on kaetud erilise faaskangapõhise peegeldava ühendiga. Pakub kaitset peaaegu kõiki tüüpi kuulide ja mürskude eest. +block.phase-wall-large.description = Tugev kaitsekonstruktsioon, mis on kaetud erilise faaskangapõhise peegeldava ühendiga. Pakub kaitset peaaegu kõiki tüüpi kuulide ja mürskude eest.\nUlatub üle mitme bloki. +block.surge-wall.description = Äärmiselt tugev kaitsekonstruktsioon.\nKuulidega kokkupõrkel neelab energiat, vabastades seda suvalistel hetkedel. +block.surge-wall-large.description = Äärmiselt tugev kaitsekonstruktsioon.\nKuulidega kokkupõrkel neelab energiat, vabastades seda suvalistel hetkedel.\nUlatub üle mitme bloki. +block.door.description = Väike uks, mida saab avada ja sulgeda sellele vajutades. +block.door-large.description = Suur uks, mida saab avada ja sulgeda sellele vajutades.\nUlatub üle mitme bloki. +block.mender.description = Parandab perioodiliselt enda ümber olevaid konstruktsioone, hoides neid lahingulainete järel töökorras ja tervena. Ulatuse ja efektiivsuse parendamiseks on võimalik kasutada räni. +block.mend-projector.description = Parandaja täiustatud versioon, mille mõjuala on suurem. Parandab enda ümber olevaid konstruktsioone. Ulatuse ja efektiivsuse parendamiseks on võimalik kasutada faaskangast. +block.overdrive-projector.description = Suurendab enda ümber olevate konstruktsioonide kiirust. Ulatuse ja efektiivsuse parendamiseks on võimalik kasutada faaskangast. +block.force-projector.description = Tekitab enda ümber kuusnurkse energiavälja, mis kaitseb ehitisi ja väeüksuseid. Liigse koormuse korral kuumeneb üle. Ülekuumenemise korral on võimalik kasutada jahutusvedelikke. Mõjuala suurendamiseks on võimalik kasutada faaskangast. +block.shock-mine.description = Peaaegu nähtamatu miin, mis lõhkeb, kui vaenlane sellele astub. +block.conveyor.description = Peamine vahend ressursside transportimiseks. Liigutab ressursse edasi ja hoiustab neid sobilikesse ehitistesse automaatselt. Pööratav. +block.titanium-conveyor.description = Täiustatud konveier, mis liigutab ressursse kiiremini kui tavaline konveier. +block.junction.description = Toimib kui sild samal tasapinnal ristuvate konveierite vahel. Kasulik olukordades, kus kaks konveierit kannavad erinevaid ressursse erinevatesse kohtadesse. +block.bridge-conveyor.description = Spetsiaalne konveier, mis liigutab ressursse üle maastiku ja ehitiste kuni 3 bloki ulatuses. +block.phase-conveyor.description = Täiustatud konveier, mis kasutab energiat ressursside teleportimiseks järgmise samasuguse konveierini üle mitme bloki. +block.sorter.description = Sorteerib ressursse. Kui sisenev ressurss vastab valitud ressursile, siis liigub see otse edasi. Vastasel juhul väljastatakse ressurss vasakule või paremale. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. +block.router.description = Jaotab ressursse kuni kolmes väljuvas suunas võrdselt. Kasulik olukordades, kus ressursse on vaja korraga saata mitmesse kohta.\n\n[scarlet]Ära kasuta neid tootmismasinate sisendite kõrval, kuna väljund ummistab sisendi.[] +block.distributor.description = Täiustatud jaotur, mis suunab ressursse kuni seitsmes väljuvas suunas võrdselt. +block.overflow-gate.description = Eriline jaotur, mis väljastab vasakule ja paremale ainult siis, kui selle ees olev rada on blokeeritud. +block.mass-driver.description = Ülim ressursside transportimise vahend. Tulistab ressursse pika vahemaa taga asuva vastuvõtva katapuldini. Vajab töötamiseks energiat. +block.mechanical-pump.description = Odav ja aeglane pump, mis ei vaja töötamiseks energiat. +block.rotary-pump.description = Täiustatud pump, mis pumpab paremini kui harilik pump, kuid vajab töötamiseks energiat. +block.thermal-pump.description = Ülim pump, mis vajab töötamiseks palju energiat. +block.conduit.description = Vedelike transportimise vahend, mis liigutab vedelikke edasi. Kasutatakse koos pumpade ja teiste torudega. +block.pulse-conduit.description = Täiustatud toru, mis transpordib ja hoiustab vedelikke kiiremini kui algeline toru. +block.liquid-router.description = Jaotab vedelikke kuni kolmes väljuvas suunas võrdselt. Selle jaoturiga on võimalik teatud koguses ka vedelikku hoiustada. Kasulik olukordades, kus vedelikke on vaja korraga saata mitmesse kohta. +block.liquid-tank.description = Hoiustab suures koguses vedelikke. Kasuta puhvrite loomiseks juhul, kui ressursside nõudlus pole püsiv, või ettevaatusabinõuna tähtsate konstruktsioonide jahutussüsteemides. +block.liquid-junction.description = Toimib kui sild samal tasapinnal ristuvate torude vahel. Kasulik olukordades, kus kaks toru kannavad erinevaid vedelikke erinevatesse kohtadesse. +block.bridge-conduit.description = Spetsiaalne toru, mis liigutab vedelikke üle maastiku ja ehitiste kuni 3 bloki ulatuses. +block.phase-conduit.description = Täiustatud toru, mis kasutab energiat vedelike teleportimiseks järgmise samasuguse toruni üle mitme bloki. +block.power-node.description = Edastab energiat ühendatud sõlmpunktidesse. Sõlmed varustavad energiaga kõiki piisavalt lähedal asuvaid ja sõlmega ühenduses olevaid konstruktsioone. +block.power-node-large.description = Täiustatud energiasõlm, mis on suurema ulatuse ja suurema võimalike ühenduste arvuga. +block.surge-tower.description = Kaugeleulatuv energiasõlm, mis on väiksema võimalike ühenduste arvuga. +block.battery.description = Salvestab energiat puhvrina positiivse energiabilansi ehk ülejäägi korral. Negatiivse energiabilansi ehk defitsiidi korral laetakse salvestatud energiat maha. +block.battery-large.description = Salvestab rohkem energiat kui tavaline aku. +block.combustion-generator.description = Toodab energiat süttivate materjalide, näiteks söe, põletamisel. +block.thermal-generator.description = Toodab energiat kuumades piirkondades. +block.turbine-generator.description = Täiustatud põlemisgeneraator. Tõhusam kui põlemisgeneraator, kuid vajab auru tootmiseks lisanduvat vett. +block.differential-generator.description = Tekitab suurel hulgal energiat. Kasutab ära krüovedeliku ja põleva püratiidi temperatuuride erinevust. +block.rtg-generator.description = Töökindel generaator, mis kasutab radioaktiivsete ühendite lagunemisel eralduvat soojust, et toota sellest aeglasel kiirusel energiat. +block.solar-panel.description = Toodab vähesel määral energiat päikesekiirgusest. +block.solar-panel-large.description = Tavalise päikesepaneeli märkimisväärselt tõhusam versioon. +block.thorium-reactor.description = Toodab tooriumist märkimisväärsel hulgal elektrit. Vajab pidevat jahutamist. Plahvatab ägedalt, kui jahutusvedelikku tarnitakse liiga vähe. +block.impact-reactor.description = Täiustatud generaator, mis on võimeline tootma tohutul hulgal energiat maksimaalse efektiivsusega. Protsessi käivitamiseks on vaja märkimisväärset energiaimpulssi. +block.mechanical-drill.description = Odav puur, mis kaevab ressursse aeglasel kiirusel kuitahes kaua. Ainult põhiressursside kaevandamiseks. +block.pneumatic-drill.description = Täiustatud puur, mis suudab kaevandada titaani. Kaevandab kiiremini kui harilik puur. +block.laser-drill.description = Lasertehnoloogia võimaldab puurida veelgi kiiremini kui pneumaatiline puur. Puur vajab energiat. Võimaldab kaevandada tooriumi. +block.blast-drill.description = Ülim puur, mis vajab töötamiseks suurel hulgal energiat. +block.water-extractor.description = Puurib sügavale ja pumpab põhjavett. Kasutatakse kohtades, kus pinnavett ei leidu. +block.cultivator.description = Kultiveerib atmosfääris madalas kontsentratsioonis leiduvaid spoore tööstuses kasutatavateks spoorikobarateks. +block.oil-extractor.description = Kasutab suures koguses energiat, liiva ja vett nafta puurimiseks. +block.core-shard.description = Tuumiku esimene versioon. Tuumiku hävides kaob ühendus piirkonnaga. +block.core-foundation.description = Tuumiku teine versioon. Tugevam. Hoiustab rohkem ressursse. +block.core-nucleus.description = Tuumiku kolmas ja viimane versioon. Ülimalt tugev. Hoiustab massiivsel hulgal ressursse. +block.vault.description = Hoiustab suurt hulka igat tüüpi ressursse. Hoidlast ressursside kättesaamiseks kasutatakse mahalaadijat. +block.container.description = Hoiustab väikest hulka igat tüüpi ressursse. Hoidlast ressursside kättesaamiseks kasutatakse mahalaadijat. +block.unloader.description = Transpordib ressursse tuumikust ja hoidlatest konveieritele või külgnevatesse ehitistesse. Mahalaetava ressursi tüüpi saab valida mahalaadijale vajutades. +block.launch-pad.description = Saadab ressursse tagasi emalaeva, ilma et oleks vaja tuumikuga lendu tõusta. +block.launch-pad-large.description = Täiustatud stardiplatvorm, mis hoiustab rohkem ressursse ja millelt saadetakse ressursse sagedamini emalaeva. +block.duo.description = Väike ja odav kahur, mis on kasulik maapealsete väeüksuste tõrjumiseks. +block.scatter.description = Õhutõrjekahur, mis tulistab pliid või vanametalli lendavate väeüksuste pihta. +block.scorch.description = Heidab tuld maapealsetele väeüksustele. Eriti efektiivne lähedal asuvate väeüksuste tõrjumiseks. +block.hail.description = Väike ja kaugele sihtiv kahur. +block.wave.description = Keskmise suurusega kahur, mis pritsib vedelikke. Veega varustades kustutab leeke. +block.lancer.description = Keskmise suurusega maapealsete väeüksuste vastane laserkahur, mis tulistab võimsaid energiakiiri. +block.arc.description = Väike kahur, mis tulistab elektriga. +block.swarmer.description = Keskmise suurusega raketikahur, mis ründab nii lendavaid kui ka maapealseid üksuseid. Raketid on isesihtivad. +block.salvo.description = Täiustatud versioon kaksikkahurist, mis tulistab korraga rohkem kuule. +block.fuse.description = Suur lähedale sihtiv energiakahur, mis tulistab kolm läbilõikavat energiakiirt. +block.ripple.description = Äärmiselt võimas kahur, mis tulistab mürske kobaratena kaugete vahemaade taha. +block.cyclone.description = Suur lendavate ja maapealsete väeüksuste vastane kahur, mis tulistab plahvatavaid mürske. +block.spectre.description = Massiivne kaheraudne kahur, mis tulistab soomuskatteid läbistavaid mürske nii lendavate kui ka maapealsete väeüksuste pihta. +block.meltdown.description = Massiivne laserkahur, mis tekitab püsiva energiakiire. Vajab töötamiseks jahutusvedelikku. +block.command-center.description = Jagab liitlaste väeüksustele käske. Kohustab väeüksusi vaenlase tuumikut ründama, põgenema või patrullima. Kui vaenlaste tuumikut ei ole, siis vaikimisi antakse väeüksustele käsk oodata vaenlaste väeüksuste lähenemist ja rünnata. +block.draug-factory.description = Toodab kaevandusdroone. Kaevandusdroonid on mõeldud baasressursside automaatseks kaevandamiseks. +block.spirit-factory.description = Toodab parandusdroone. Parandusdroonid on mõeldud ehitiste automaatseks parandamiseks. +block.phantom-factory.description = Toodab ehitusdroone. Ehitusdroonid järgnevad oma liitlastele ja abistavad konstruktsioonide ehitamisel. +block.wraith-factory.description = Toodab hävitajate väeüksuseid. Hävitajad on kiiresti lendavad väeüksused. +block.ghoul-factory.description = Toodab pommitajate väeüksuseid. Pommitajad on tugevad ja lendavad lauspommitavad väeüksused. +block.revenant-factory.description = Toodab ülestõusnute väeüksuseid. Ülestõusnud on vastupidavad ja lendavad väeüksused raketimassiiviga. +block.dagger-factory.description = Toodab soldatite väeüksuseid. Soldatid on kõige elementaarsemad maapealsed väeüksused. +block.crawler-factory.description = Toodab plahvatajate väeüksuseid. Plahvatajad on maapealsed väeüksused, mis koosnevad lihtsast kerest, millele on kinnitatud lõhkeained. +block.titan-factory.description = Toodab kalevite väeüksuseid. Kalevid on maapealsed väeüksused, mis on relvastatud kahe miniatuurse leegiheitjaga. +block.fortress-factory.description = Toodab koljatite väeüksuseid. Koljatid on tugevad maapealsed väeüksused, mis on relvastatud kahe modifitseeritud kauglaskuriga. +block.repair-point.description = Parandab kõige lähemal asuvat liitlaste väeüksust. +block.dart-mech-pad.description = Võimaldab läbida metamorfoosi standardseks maapealseks mehhaaniks.\nSelleks seisa jaama kohal ja vajuta jaamale. +block.delta-mech-pad.description = Võimaldab läbida metamorfoosi kiireks ja kergelt soomustatud maapealseks mehhaaniks.\nSelleks seisa jaama kohal ja vajuta jaamale. +block.tau-mech-pad.description = Võimaldab läbida metamorfoosi tugifunktsioonidega maapealseks mehhaaniks.\nSelleks seisa jaama kohal ja vajuta jaamale. +block.omega-mech-pad.description = Võimaldab läbida metamorfoosi tugevaks ja hästi soomustatud maapealseks mehhaaniks.\nSelleks seisa jaama kohal ja vajuta jaamale. +block.javelin-ship-pad.description = Võimaldab läbida metamorfoosi äkkrünnakuteks loodud lendmehhaaniks.\nSelleks seisa jaama kohal ja vajuta jaamale. +block.trident-ship-pad.description = Võimaldab läbida metamorfoosi pommitajast lendmehhaaniks, millega on võimalik paremini ehitisi konstrueerida.\nSelleks seisa jaama kohal ja vajuta jaamale. +block.glaive-ship-pad.description = Võimaldab läbida metamorfoosi tugevaks ja hästi soomustatud lendmehhaaniks.\nSelleks seisa jaama kohal ja vajuta jaamale. diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 45372c50fb..189574bd6d 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -16,11 +16,28 @@ screenshot.invalid = Mapa handiegia, baliteke pantaila-argazkirako memoria nahik gameover = Partida amaitu da gameover.pvp = [accent] {0}[] taldeak irabazi du! highscore = [accent]Marka berria! +copied = Copied. load.sound = Soinuak load.map = Mapak load.image = Irudiak load.content = Edukia load.system = Sistema +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Garaitutako boladak:[accent] {0} stat.enemiesDestroyed = Suntsitutako etsaiak:[accent] {0} stat.built = Eraikitako eraikinak:[accent] {0} @@ -29,6 +46,7 @@ stat.deconstructed = Deseraikitako eraikinak:[accent] {0} stat.delivered = Egotzitako baliabideak: stat.rank = Azken graduazioa: [accent]{0} launcheditems = [accent]Egotzitako baliabideak +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = Ziur al zaude "[accent]{0}[]" mapa ezabatu nahi duzula? level.highscore = Marka: [accent]{0} level.select = Maila hautaketa @@ -40,26 +58,45 @@ database = Muinaren datu-basea savegame = Gorde partida loadgame = Kargatu partida joingame = Batu partidara -addplayers = Gehitu/kendu jokalariak customgame = Partida pertsonalizatua newgame = Partida berria none = minimap = Mapatxoa +position = Position close = Itxi website = Webgunea quit = Irten -save.quit = Save & Quit +save.quit = Gorde eta irten maps = Mapak -maps.browse = Browse Maps +maps.browse = Arakatu mapak continue = Jarraitu maps.none = [lightgray]Ez da maparik aurkitu! -invalid = Invalid -preparingconfig = Preparing Config -preparingcontent = Preparing Content -uploadingcontent = Uploading Content -uploadingpreviewfile = Uploading Preview File -committingchanges = Comitting Changes -done = Done +invalid = Baliogabea +preparingconfig = Konfigurazioa prestatzen +preparingcontent = Edukia prestatzen +uploadingcontent = Edukia igotzen +uploadingpreviewfile = Aurrebista fitxategia igotzen +committingchanges = Aldaketak aplikatzen +done = Egina +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Honi buruz name = Izena: noname = Hautatu[accent] jokalari-izena[] aurretik. @@ -74,14 +111,14 @@ players = {0} jokalari konektatuta players.single = Jokalari {0} konektatuta server.closing = [accent]Zerbitzaria ixten... server.kicked.kick = Zerbitzaritik kanporatu zaituzte! -server.kicked.whitelist = You are not whitelisted here. +server.kicked.whitelist = Ez zaude hemengo zerrenda zurian. server.kicked.serverClose = Zerbitzaria itxita. server.kicked.vote = Botoen bidez kanporatu zaituzte. Agur. server.kicked.clientOutdated = Bezero zaharkitua! Eguneratu zure jolasa! server.kicked.serverOutdated = Zerbitzari zaharkitua! Eskatu ostalariari eguneratzeko! server.kicked.banned = Zerbitzari honetan debekatuta zaude. server.kicked.typeMismatch = Zerbitzari hau ez da zure konpilazio motarekin bateragarria. -server.kicked.playerLimit = This server is full. Wait for an empty slot. +server.kicked.playerLimit = Zerbitzari hau beteta dago. Itxaron zirrikitu bat libratu arte. server.kicked.recentKick = Duela gutxi kanporatu zaituzte.\nItxaron berriro konektatzeko. server.kicked.nameInUse = Badago izen bereko beste norbait\nzerbitzari honetan jada. server.kicked.nameEmpty = Aukeratu duzun izena baliogabea da. @@ -92,13 +129,13 @@ server.versions = Zure bertsioa:[accent] {0}[]\nZerbitzariaren bertsioa:[accent] host.info = [accent]Ostalaria[] botoiak zerbitzari bat abiatzen du [scarlet]6567[] atakan.\n[lightgray]wifi edo sare lokal[] berean dagoen edonor zure zerbitzaria ikusi ahal beharko luke.\n\nJendea edonondik IP-a erabilita konektatu ahal izatea nahi baduzu, [accent]ataka birbidaltzea[] ezinbestekoa da.\n\n[lightgray]Oharra: Inork zure sare lokalean partidara elkartzeko arazoak baditu, egiaztatu Mindustry-k baimena duela sare lokalera elkartzeko suebakiaren ezarpenetan. Kontuan izan sare publiko batzuk ez dutela zerbitzarien bilaketa baimentzen. join.info = Hemen, konektatzeko [accent]zerbitzari baten IP-a[] sartu dezakezu konektatzeko, edo [accent]sare lokaleko[] zerbitzariak bilatu.\nLAN zein WAN sareetan onartzen dira hainbat jokalarien partidak .\n\n[lightgray]Oharra: Ez dago zerbitzarien zerrenda global automatikorik, beste inorekin IP bidez konektatu nahi baduzu, ostalariari bere IP helbidea eskatu beharko diozu. hostserver = Ostatatu hainbat jokalarien partida -invitefriends = Invite Friends +invitefriends = Gonbidatu lagunak hostserver.mobile = Ostatatu\npartida host = Ostatatu hosting = [accent]Zerbitzaria irekitzen... hosts.refresh = Freskatu hosts.discovering = LAN partidak bilatzen -hosts.discovering.any = Discovering games +hosts.discovering.any = Partidak bilatzen server.refreshing = Zerbitzaria freskatzen hosts.none = [lightgray]Ez da partida lokalik aurkitu! host.invalid = [scarlet]Ezin da ostalarira konektatu. @@ -122,7 +159,7 @@ server.version = [gray]v{0} {1} server.custombuild = [yellow]Konpilazio pertsonalizatua confirmban = Ziur jokalari hau debekatu nahi duzula? confirmkick = Ziur jokalari hau kanporatu nahi duzula? -confirmvotekick = Are you sure you want to vote-kick this player? +confirmvotekick = Ziur hokalari hau botatzearen alde bozkaytu nahi duzula? confirmunban = Ziur jokalari hau debekatzeari utzi nahi nahi diozula? confirmadmin = Ziur jokalari hau admin bihurtu nahi duzula? confirmunadmin = Ziur jokalari honi admin eskubidea kendu nahi diozula? @@ -133,14 +170,13 @@ disconnect.error = Konexio errorea. disconnect.closed = Konexioa itxita. disconnect.timeout = Denbor-muga agortuta. disconnect.data = Huts egin du munduaren datuak eskuratzean! -cantconnect = Unable to join game ([accent]{0}[]). +cantconnect = Ezin izan da partidara elkartu ([accent]{0}[]). connecting = [accent]Konektatzen... connecting.data = [accent]Munduaren datuak kargatzen... server.port = Ataka: server.addressinuse = Helbidea dagoeneko erabilita dago! server.invalidport = Ataka zenbaki baliogabea! server.error = [crimson]Errorea zerbitzaria ostatatzean: [accent]{0} -save.old = Gordetako partida hau jolasaren bertsio zahar batena da, eta ezin da gehiago erabili.\n\n[lightgray]Gordetako partiden bateragarritasuna 4.0 bertsioan ezarriko da. save.new = Gordetako partida berria save.overwrite = Ziur gordetzeko tarte hau gainidatzi nahi duzula? overwrite = Gainidatzi @@ -159,7 +195,7 @@ save.rename = Aldatu izena save.rename.text = Gordetako partida berria: selectslot = Hautatu gordetako partida bat. slot = [accent]{0}. tartea -editmessage = Edit Message +editmessage = Editatu mezua save.corrupted = [accent]Gordetako partidaren fitxategia hondatuta dago edo baliogabea da!\nBerriki eguneratu baduzu jolasa, gordetzeko formatuan aldaketaren bat izan daiteke eta [scarlet]ez[] akats bat. empty = on = Piztuta @@ -167,13 +203,14 @@ off = Itzalita save.autosave = Gordetze automatikoa: {0} save.map = Mapa: {0} save.wave = {0}. bolada -save.mode = Gamemode: {0} +save.mode = Jolas-modua: {0} save.date = Azkenekoz gordeta: {0} save.playtime = Jolastua: {0} warning = Abisua. confirm = Baieztatu delete = Ezabatu -view.workshop = View In Workshop +view.workshop = Ikusi lantegian +workshop.listing = Edit Workshop Listing ok = Ados open = Ireki customize = Aldatu arauak @@ -191,7 +228,12 @@ classic.export.text = [accent]Mindustry[] jolasak eguneraketa nagusi bat jaso du quit.confirm = Ziur irten nahi duzula? quit.confirm.tutorial = Ziur al zaude irten nahi duzula?\nTutoriala berriro hasi dezakezu hemen: [accent] Ezarpenak->Jolasa->Berriro hasi tutoriala.[] loading = [accent]Kargatzen... +reloading = [accent]Reloading Mods... saving = [accent]Gordetzen... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]{0}. bolada wave.waiting = [lightgray]Boladarako {0} wave.waveInProgress = [lightgray]Bolada abian @@ -210,11 +252,17 @@ map.nospawn = Mapa honek ez du muinik jokalaria sortu dadin! Gehitu muin [accent map.nospawn.pvp = Mapa honek ez du etsaien muinik jokalaria sortu dadin! Gehitu [SCARLET]laranja ez den[] muinen bat edo batzuk mapa honi editorean. map.nospawn.attack = Mapa honek ez du etsaien muinik jokalariak eraso dezan! Gehitu muin [SCARLET]gorriak[] mapa honi editorean. map.invalid = Errorea mapa kargatzean: Mapa-fitxategi baliogabe edo hondatua. -map.publish.error = Error publishing map: {0} -map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} +map.publish.confirm = Ziur mapa hau argitaratu nahi duzula?\n\n[lightgray]Ziurtatu aurretik lantegiaren erabilera arauekin bat zatozela, bestela zure mapak ez dira agertuko! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Brotxa editor.openin = Ireki editorean editor.oregen = Mea sorrera @@ -222,14 +270,14 @@ editor.oregen.info = Mea sorrera: editor.mapinfo = Mapa info editor.author = Egilea: editor.description = Deskripzioa: -editor.nodescription = A map must have a description of at least 4 characters before being published. +editor.nodescription = Mapek deskripzio bat izan behar dute argitaratu aurretik, gutxienez 4 karakteretakoa. editor.waves = Boladak: editor.rules = Arauak: editor.generation = Sorrarazi: editor.ingame = Editatu jolasean -editor.publish.workshop = Publish On Workshop +editor.publish.workshop = Argitaratu lantegian editor.newmap = Mapa berria -workshop = Workshop +workshop = Lantegia waves.title = Boladak waves.remove = Kendu waves.never = @@ -246,7 +294,7 @@ waves.invalid = Bolada baliogabeak arbelean. waves.copied = Boladak kopiatuta. waves.none = Ez da etsairik zehaztu.\nKontuan izan bolada hutsak lehenetsitako diseinuarekin ordeztuko direla. editor.default = [lightgray] -details = Details... +details = Xehetasunak... edit = Editatu... editor.name = Izena: editor.spawn = Sortu unitatea @@ -256,7 +304,7 @@ editor.errorload = Errorea fitxategia kargatzen:\n[accent]{0} editor.errorsave = Errorea fitxategia gordetzen:\n[accent]{0} editor.errorimage = Hori irudi bat da, ez mapa bat. Ez aldatu luzapena funtzionatuko duelakoan.\n\nMapa zahar bat inportatu nahi baduzu, erabili 'inportatu mapa zaharra' botoia editorean. editor.errorlegacy = Mapa hau zaharregia da, eta jada onartzen ez den formatu zahar bat darabil. -editor.errornot = This is not a map file. +editor.errornot = Hau ez da mapa-fitxategi bat. editor.errorheader = Mapa hau hondatuta dago edo baliogabea da. editor.errorname = Mapak ez du zehaztutako izenik. Gordetako partida bat kargatzen saiatu zara? editor.update = Eguneratu @@ -289,7 +337,7 @@ editor.resizemap = Aldatu maparen neurria editor.mapname = Maparen izena: editor.overwrite = [accent]Abisua!\nHonek badagoen mapa bat gainidatziko du. editor.overwrite.confirm = [scarlet]Abisua![] Badago izen bereko beste mapa bat. Ziur gainidatzi nahi duzula? -editor.exists = A map with this name already exists. +editor.exists = Badago izen bereko beste mapa bat. editor.selectmap = Hautatu mapa kargatzeko: toolmode.replace = Ordeztu toolmode.replace.description = Marraztu bloke zurrunak bakarrik. @@ -344,7 +392,6 @@ campaign = Kanpaina load = Kargatu save = Gorde fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Berrabiarazi jolasa hizkuntza-ezarpenak aplikatzeko. settings = Ezarpenak @@ -352,12 +399,13 @@ tutorial = Tutoriala tutorial.retake = Berriro hasi tutoriala editor = Editorea mapeditor = Mapen editorea -donate = Dohaintza abandon = Abandonatu abandon.text = Eremu hau eta bere baliabide guztiak etsaiaren esku geratuko dira. locked = Blokeatuta complete = [lightgray]Helmena: -zone.requirement = {0}. bolada {1} zonaldean +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Berrekin:\n[lightgray]{0} bestwave = [lightgray]Bolada onena: {0} launch = < EGOTZI > @@ -368,11 +416,13 @@ launch.confirm = Honek zure muinean dauden baliabide guztiak egotziko ditu.\nEzi launch.skip.confirm = Orain ez eginez gero, geroagoko beste bolada batera itxaron beharko duzu. uncover = Estalgabetu configure = Konfiguratu zuzkidura +bannedblocks = Banned Blocks +addall = Add All configure.locked = [lightgray]Zuzkiduraren konfigurazioa desblokeatzeko: {0} bolada. -configure.invalid = Amount must be a number between 0 and {0}. +configure.invalid = Kopurua 0 eta {0} bitarteko zenbaki bat izan behar da. zone.unlocked = [lightgray]{0} desblokeatuta. zone.requirement.complete = {0}. boladara iritsia:\n{1} Eremuaren betebeharra beteta. -zone.config.complete = {0}. boladara iritsia:\nZuzkiduraren konfigurazioa desblokeatuta. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = [lightgray]Antzemandako baliabideak: zone.objective = [lightgray]Helburua: [accent]{0} zone.objective.survival = Biziraupena @@ -428,15 +478,14 @@ settings.graphics = Grafikoak settings.cleardata = Garbitu jolasaren datuak... settings.clear.confirm = Ziur datu hauek garbitu nahi dituzula?\nEgindakoa ezin da desegin! settings.clearall.confirm = [scarlet]ABISUA![]\nHonek datu guztiak garbituko ditu, gordetako partidak, mapak, desblokeatutakoak, eta teklen konfigurazioak barne.\nBehin 'Ados' sakatzen duzula jolasak datuk guztiak ezabatuko ditu eta automatikoki irten. -settings.clearunlocks = Garbitu desblokeatutakoak -settings.clearall = Garbitu dena paused = [accent]< Pausatuta > +clear = Clear +banned = [scarlet]Banned yes = Bai no = Ez info.title = Informazioa error.title = [crimson]Errore bat gertatu da error.crashtitle = Errore bat gertatu da -attackpvponly = [scarlet]Erasoa/JvJ moduetan eskuragarri soilik blocks.input = Sarrera blocks.output = Irteera blocks.booster = Indargarria @@ -466,7 +515,7 @@ blocks.boosteffect = Indartze-efektua blocks.maxunits = Gehieneko unitate aktiboak blocks.health = Osasuna blocks.buildtime = Eraikitze-denbora -blocks.buildcost = Build Cost +blocks.buildcost = Eraikitze-kostua blocks.inaccuracy = Zehazgabetasuna blocks.shots = Tiroak blocks.reload = Tiroak/segundoko @@ -475,11 +524,11 @@ bar.drilltierreq = Zulagailu hobea behar da bar.drillspeed = Ustiatze-abiadura: {0}/s bar.efficiency = Eraginkortasuna: {0}% bar.powerbalance = Energia: {0}/s -bar.powerstored = Stored: {0}/{1} +bar.powerstored = Bilduta: {0}/{1} bar.poweramount = Energia: {0} bar.poweroutput = Energia irteera: {0} bar.items = Elementuak: {0} -bar.capacity = Capacity: {0} +bar.capacity = Edukiera: {0} bar.liquid = Likidoa bar.heat = Beroa bar.power = Energia @@ -518,13 +567,14 @@ category.optional = Aukerako hobekuntzak setting.landscape.name = Blokeatu horizontalean setting.shadows.name = Itzalak setting.linear.name = Iragazte lineala +setting.hints.name = Hints setting.animatedwater.name = Animatutako ura setting.animatedshields.name = Animatutako ezkutuak setting.antialias.name = Antialias[lightgray] (berrabiarazi behar da)[] setting.indicators.name = Etsai/Aliatu adierazleak setting.autotarget.name = Punteria automatikoa setting.keyboard.name = Sagu+Teklatu kontrolak -setting.touchscreen.name = Touchscreen Controls +setting.touchscreen.name = Ukitze-pantailaren kontrolak setting.fpscap.name = Max FPS setting.fpscap.none = Bat ere ez setting.fpscap.text = {0} FPS @@ -547,6 +597,7 @@ setting.fps.name = Erakutsi FPS setting.vsync.name = VSync setting.pixelate.name = Pixelatu[lightgray] (animazioak desgaitzen ditu) setting.minimap.name = Erakutsi mapatxoa +setting.position.name = Show Player Position setting.musicvol.name = Musikaren bolumena setting.ambientvol.name = Giroaren bolumena setting.mutemusic.name = Isilarazi musika @@ -554,10 +605,12 @@ setting.sfxvol.name = Efektuen bolumena setting.mutesound.name = Isilarazi soinua setting.crashreport.name = Bidali kraskatze txosten automatikoak setting.savecreate.name = Gorde automatikoki -setting.publichost.name = Public Game Visibility +setting.publichost.name = Partidaren ikusgaitasun publikoa setting.chatopacity.name = Txataren opakotasuna setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Erakutsi jolas barneko txata +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. uiscale.reset = Interfazearen eskala aldatu da.\nSakatu "Ados" eskala hau berresteko.\n[scarlet][accent] {0}[] segundo atzera egin eta irteteko... uiscale.cancel = Utzi eta irten setting.bloom.name = Distira @@ -567,15 +620,18 @@ category.general.name = Orokorra category.view.name = Bistaratzea category.multiplayer.name = Hainbat jokalari command.attack = Eraso -command.rally = Rally +command.rally = Batu command.retreat = Erretreta -keybind.gridMode.name = Bloke-hautua -keybind.gridModeShift.name = Kategoria-hautua +keybind.clear_building.name = Clear Building keybind.press = Sakatu tekla bat... keybind.press.axis = Sakatu ardatza edo tekla... keybind.screenshot.name = Maparen pantaila-argazkia keybind.move_x.name = Mugitu x keybind.move_y.name = Mugitu y +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Txandakatu pantaila osoa keybind.select.name = Hautatu/Tirokatu keybind.diagonal_placement.name = Kokatze diagonala @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Zoom mantenduz keybind.zoom.name = Zoom keybind.menu.name = Menua keybind.pause.name = Pausatu +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Mapatxoa -keybind.dash.name = Dash +keybind.dash.name = Arrapalada keybind.chat.name = Txata keybind.player_list.name = Jokalarien zerrenda keybind.console.name = Kontsola keybind.rotate.name = Biratu +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Txandakatu menuak keybind.chat_history_prev.name = Txat historialean aurrekoa keybind.chat_history_next.name = Txat historialean hurrengoa @@ -604,6 +662,7 @@ mode.survival.name = Biziraupena mode.survival.description = Modu arrunta. Baliabide mugatuak eta bolada automatikoak.\n[gray]Jolasteko etsaien sortze puntuak behar dira mapan. mode.sandbox.name = Jolastokia mode.sandbox.description = Baliabide amaigabeak eta boladen denboragailurik gabe. +mode.editor.name = Editor mode.pvp.name = JvJ mode.pvp.description = Borrokatu beste jokalari batzuk lokalean.\n[gray]Gutxienez bi kolore desberdinetako muinak behar dira mapan jolasteko. mode.attack.name = Erasoa @@ -613,7 +672,7 @@ rules.infiniteresources = Baliabide amaigabeak rules.wavetimer = Boladen denboragailua rules.waves = Boladak rules.attack = Eraso modua -rules.enemyCheat = AI-k (talde gorriak) baliabide amaigabeak ditu +rules.enemyCheat = IA-k (talde gorriak) baliabide amaigabeak ditu rules.unitdrops = Unitate-sorrerak rules.unitbuildspeedmultiplier = Unitateen sorrerarako abiadura-biderkatzailea rules.unithealthmultiplier = Unitateen osasun-biderkatzailea @@ -784,13 +843,14 @@ block.hail.name = Txingor block.lancer.name = Lantzari block.conveyor.name = Garraio-zinta block.titanium-conveyor.name = Titaniozko garraio-zinta -block.armored-conveyor.name = Armored Conveyor -block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. +block.armored-conveyor.name = Blindatutako garraio-zinta +block.armored-conveyor.description = Titaniozko garraio-zinten abiadura berean darmatza elementuak, baina bildaje hobea du. Ez du onartzen albotik kargatzea ez bada beste garraio-zinta batetik. block.junction.name = Lotunea block.router.name = Bideratzailea block.distributor.name = Banatzailea block.sorter.name = Antolatzailea -block.message.name = Message +block.inverted-sorter.name = Inverted Sorter +block.message.name = Mezua block.overflow-gate.name = Gainezkatze atea block.silicon-smelter.name = Silizio galdategia block.phase-weaver.name = Fase ehulea @@ -902,8 +962,8 @@ unit.wraith.name = Iratxo ehiza-hegazkina unit.fortress.name = Gotorleku unit.revenant.name = Mamu unit.eruptor.name = Sumendi -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradicator +unit.chaos-array.name = Kaos +unit.eradicator.name = Ezerezle unit.lich.name = Litxe unit.reaper.name = Segalaria tutorial.next = [lightgray] @@ -949,7 +1009,7 @@ liquid.cryofluid.description = Ur eta titanioz egindako likido bizigabe eta ez k mech.alpha-mech.description = Kontrolerako meka arrunta. Daga unitatean oinarritutakoa, blindaje hobetua eta eraikitze gaitasunek. Dardo ontzi batek baino kalte gehiago eragiten du. mech.delta-mech.description = Jo eta ihes motako erasoetarako egindako meka azkar eta zertxobait blindatua. Estrukturei kalte gutxi eragiten die, baina etsaien talde handiak azkar deuseztatu ditzake bere tximista arku armekin. mech.tau-mech.description = Mantenu meka. Blokea aliatuak osatzen ditu urrunetik. Bere konpontze gaitasun erradio barruko aliatuak sendatzen ditu. -mech.omega-mech.description = meka handikote eta ondo blindatua, lehen lerroko erasoetarako egina. Bere blindajeak jasotako kaltearen %90 arte gelditu dezake. +mech.omega-mech.description = Meka handikote eta ondo blindatua, lehen lerroko erasoetarako egina. Bere blindajeak jasotako kaltearen %90 arte gelditu dezake. mech.dart-ship.description = Kontrol ontzi arrunta. Nahiko azkar eta arina, baina erasorako gaitasun eta ustiatzeko abiadura txikia gutxi du. mech.javelin-ship.description = Jo eta iheserako eraso ontzia. Hasieran motela bada ere, abiadura oso azkarretara arte azeleratu dezake eta etsaien base aitzindarietara hegaz egin, kalte nabarmena eragin dezake bere tximista eta misilekin. mech.trident-ship.description = Bonbari astuna, eraikuntzarako eta etsaiaren babesak suntsitzeko egina. Nahiko ondo blindatua. @@ -965,11 +1025,11 @@ unit.eruptor.description = Estrukturak behera botatzeko diseinatutako meka astun unit.wraith.description = Jo eta iheseko unitate harrapari azkarra. Energia sorgailuak ditu xede. unit.ghoul.description = Azal bonbaketari astuna. Etsaiaren estrukturak urratzen ditu, azpiegitura kritikoa xede duela. unit.revenant.description = Misil planeatzailedun tramankulu astuna. -block.message.description = Stores a message. Used for communication between allies. +block.message.description = Mezu bat gordetzen du. Aliatuen arteko komunikaziorako erabilia. block.graphite-press.description = Ikatz puskak zanpatzen ditu grafito hutsezko xaflak sortuz. block.multi-press.description = Grafito prentsaren bertsio hobetu bat. Ura eta energia behar ditu ikatza azkar eta eraginkorki prozesatzeko. block.silicon-smelter.description = Hondarra eta ikatz hutsa txikitzen ditu silizioa sortzeko. -block.kiln.description = Jondarra eta beruna galdatzen ditu metabeira izeneko konposatua sortzeko. Energia apur bat behar du jarduteko. +block.kiln.description = Hondarra eta beruna galdatzen ditu metabeira izeneko konposatua sortzeko. Energia apur bat behar du jarduteko. block.plastanium-compressor.description = Plastanioa ekoizten du olioa eta titanioa erabiliz. block.phase-weaver.description = Fasezko ehuna sintetizatzen du torio erradioaktiboa eta hondarra erabiliz. Energia kopurua handia behar du jarduteko. block.alloy-smelter.description = Titanioa, beruna, silizioa eta kobrea konbinatzen ditu tirain aleazioa ekoizteko. @@ -1010,6 +1070,7 @@ block.junction.description = Gurutzatutako bi garraio-zinten arteko zubi gisa ar block.bridge-conveyor.description = Elementuen garraiorako bloke aurreratua. Elementuak edozein gainazal edo eraikinen gainetik garraiatzen ditu 3 lauzatara gehienez. block.phase-conveyor.description = Elementuen garraiorako bloke aurreratua. Energia erabiltzen du hainbat lauzetara konektatutako beste Fasezko garraiagailu batera elementuak teleportatzeko. block.sorter.description = Elementuak antolatzen ditu. Elementu bat hautuarekin bat badator, aurrera jarraitu dezake. Bestela, elementua ezker eta eskuinera ateratzen da. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Elementuak onartzen ditu, eta beste gehienez 3 norabideetara ateratzen ditu kopuru berdinetan. Jatorri batetik hainbat xedeetara materialak banatzeko egokia.\n\n[scarlet]Ez jarri ekoizpen sarreren ondoan, irteerek trabatuko baitute.[] block.distributor.description = Bideratzaile aurreratu bat. Elementuak beste gehienez 7 norabideetara sakabanatzen ditu kopuru berdinetan. block.overflow-gate.description = Antolatzaile eta bideratzaile konbinatua. Soilik aurrealdea blokeatuta dagoenean ateratzen du ezker eta eskuinera. @@ -1059,7 +1120,7 @@ block.scorch.description = Inguruko lurreko etsaiak kiskaltzen ditu. Oso eragink block.hail.description = Irismen luzeko kanoiteria dorre txikia. block.wave.description = Neurri ertaineko dorrea. Likido jarioak isurtzen dizkie etsaiei. Suak automatikoki itzaltzen ditu ura hornitzen bazaio. block.lancer.description = Lurreko unitateen aurkako laser dorre ertaina. Energia izpi indartsuak kargatu eta jaurtitzen ditu. -block.arc.description = irismen hurbileko dorre elektriko txikia. Elektrizitate arkuak jaurtitzen dizkie etsaiei. +block.arc.description = Irismen hurbileko dorre elektriko txikia. Elektrizitate arkuak jaurtitzen dizkie etsaiei. block.swarmer.description = Misil dorre ertaina. Lurrezko zein airezko etsaiak erasotzen ditu. Misil gidatuak jaurtitzen ditu. block.salvo.description = Duo dorrearen bertsio handiago eta aurreratuago bat. Tiro-segida azkarrak botatzen dizkie etsaiei. block.fuse.description = Irismen hurbileko energia dorre handia. Hiru izpi zulatzaile isurtzen dizkie inguruko etsaiei. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 12b5e1e058..61c27eed9e 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -1,26 +1,43 @@ credits.text = Créé par [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY] credits = Crédits contributors = Traducteurs et contributeurs -discord = Rejoignez le discord de Mindustry +discord = Rejoignez le Discord de Mindustry link.discord.description = Le discord officiel de Mindustry! -link.github.description = Code source du jeu. +link.github.description = Code source du jeu link.changelog.description = Liste des mises a jour link.dev-builds.description = Versions instables du jeu link.trello.description = Trello officiel pour les ajouts futurs link.itch.io.description = Page itch.io avec lien de téléchargement pour PC -link.google-play.description = Google play store +link.google-play.description = Google Play Store link.wiki.description = Le wiki officiel de Mindustry -linkfail = Erreur lors de l'ouverture du lien !\nL'URL a été copié à votre presse papier. +linkfail = Erreur lors de l'ouverture du lien !\nL'URL a été copiée dans votre presse papier. screenshot = Capture d'écran sauvegardée à {0} screenshot.invalid = La carte est trop large, il n'y a potentiellement pas assez de mémoire pour la capture d'écran. gameover = Game over -gameover.pvp = L'équipe [accent] {0}[] a gagnée ! +gameover.pvp = L'équipe [accent] {0}[] a gagné ! highscore = [accent]Nouveau meilleur score! +copied = Copié. load.sound = Sons load.map = Cartes load.image = Images -load.content = Contenus +load.content = Contenu load.system = Système +load.mod = Mods +schematic = Schéma +schematic.add = Sauvegarder le schéma... +schematics = Schémas +schematic.import = Importer un schéma... +schematic.exportfile = Exporter le fichier +schematic.importfile = Importer un fichier +schematic.browseworkshop = Consulter le workshop +schematic.copy = Copier au presse-papier +schematic.copy.import = Importer du presse-papier +schematic.shareworkshop = Partager sur le workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Retourner le schéma +schematic.saved = Schéma sauvegardé. +schematic.delete.confirm = Ce schéma sera complètement éradiqué. +schematic.rename = Renommer le schéma +schematic.info = {0}x{1}, {2} blocs stat.wave = Vagues vaincues:[accent] {0} stat.enemiesDestroyed = Ennemis détruits:[accent] {0} stat.built = Bâtiments construits:[accent] {0} @@ -29,37 +46,57 @@ stat.deconstructed = Bâtiments déconstruits:[accent] {0} stat.delivered = Ressources transférées: stat.rank = Rang Final: [accent]{0} launcheditems = [accent]Ressources transférées -map.delete = Êtes-vous sûr de vouloir supprimer cette carte "[accent]{0}[]"? +launchinfo = [unlaunched][[LANCER] votre noyau pour obtenir les objets indiqués en bleu. +map.delete = Êtes-vous certain(e) de vouloir supprimer la carte "[accent]{0}[]"? level.highscore = Meilleur score: [accent]{0} -level.select = Sélection de niveau +level.select = Sélection du niveau level.mode = Mode de jeu: showagain = Ne pas montrer la prochaine fois coreattack = [scarlet] -nearpoint = [ [scarlet]QUITTEZ LE POINT D'APPARITION ENNEMI IMMÉDIATEMENT[] ]\nannihilation imminente +nearpoint = [[ [scarlet]QUITTEZ LE POINT D'APPARITION ENNEMI IMMÉDIATEMENT[] ]\nannihilation imminente database = Base de données savegame = Sauvegarder la partie loadgame = Charger la partie joingame = Rejoindre une partie -addplayers = Ajouter/Enlever des joueurs customgame = Partie customisée newgame = Nouvelle partie none = minimap = Minimap +position = Position close = Fermer website = Site Web quit = Quitter -save.quit = Save & Quit +save.quit = Sauvegarder et Quitter maps = Cartes -maps.browse = Parcourir les Cartes +maps.browse = Parcourir les cartes continue = Continuer maps.none = [lightgray]Aucune carte trouvée! invalid = Invalide -preparingconfig = Préparation de la Configuration -preparingcontent = Préparation du Contenu -uploadingcontent = Publication du Contenu -uploadingpreviewfile = Publication du Fichier d'Aperçu -committingchanges = Validation des Modifications +preparingconfig = Préparation de la configuration +preparingcontent = Préparation du contenu +uploadingcontent = Publication du contenu +uploadingpreviewfile = Publication du fichier d'aperçu +committingchanges = Validation des modifications done = Fait +mods.alphainfo = Gardez à l'esprit que les mods sont en alpha et[scarlet] peuvent être très buggés[].\nMerci de signaler les problèmes que vous rencontrez via le Github ou le Discord Mindustry. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]Aucun mod trouvé! +mods.guide = Guide de Modding +mods.report = Signaler un Bug +mod.enabled = [lightgray]Activé +mod.disabled = [scarlet]Désactivé +mod.disable = Désactiver +mod.enable = Activer +mod.requiresrestart = Le jeu va maintenant s'arrêter pour appliquer les modifications du mod. +mod.reloadrequired = [scarlet]Rechargement requis +mod.import = Importer un mod +mod.import.github = Importer un mod Github +mod.remove.confirm = Ce mod sera supprimé. +mod.author = [LIGHT_GRAY]Auteur:[] {0} +mod.missing = Cette sauvegarde contient des mods que vous avez récemment mis à jour ou que vous avez désinstallés. Votre sauvegarde risque d'être corrompue. Êtes-vous sûr de vouloir l'importer?\n[lightgray]Mods:\n{0} +mod.preview.missing = Avant de publier ce mod dans le workshop, vous devez ajouter une image servant d'aperçu.\nPlacez une image nommée[accent] preview.png[] dans le dossier du mod et réessayez. +mod.folder.missing = Seuls les mods sous forme de dossiers peuvent être publiés sur l'atelier.\nPour convertir n'importe quel mod en un dossier, dézippez-le tout simplement dans un dossier et supprimez l'ancien zip, puis redémarrez votre jeu ou rechargez vos mods. about.button = À propos name = Nom: noname = Commencer par choisir un[accent] nom de joueur[]. @@ -74,21 +111,21 @@ players = {0} joueurs en ligne players.single = {0} joueur en ligne server.closing = [accent]Fermeture du serveur... server.kicked.kick = Vous avez été expulsé du serveur! -server.kicked.whitelist = You are not whitelisted here. +server.kicked.whitelist = Vous n'êtes pas whitelisté ici. server.kicked.serverClose = Serveur fermé. server.kicked.vote = Vous avez été expulsé suite à un vote. Au revoir. server.kicked.clientOutdated = Client obsolète! Mettez à votre jeu à jour! server.kicked.serverOutdated = Serveur obsolète! Demandez à l'hôte de le mettre à jour! -server.kicked.banned = Vous avez été banni sur ce serveur. +server.kicked.banned = Vous avez été banni de ce serveur. server.kicked.typeMismatch = Ce serveur n'est pas compatible avec votre version du jeu. -server.kicked.playerLimit = Ce serveur est plein. Veuillez attendre qu'une place se libére. +server.kicked.playerLimit = Ce serveur est plein. Veuillez attendre qu'une place se libère. server.kicked.recentKick = Vous avez été expulsé récemment.\nAttendez avant de vous connecter à nouveau. server.kicked.nameInUse = Il y a déjà quelqu'un avec\nce nom sur ce serveur. server.kicked.nameEmpty = Votre nom est invalide. server.kicked.idInUse = Vous êtes déjà sur ce serveur! Se connecter avec deux comptes n'est pas permis. server.kicked.customClient = Ce serveur ne supporte pas les versions personnalisées (Custom builds). Téléchargez une version officielle. server.kicked.gameover = Game over! -server.versions = Votre version:[accent] {0}[]\nLa version du serveur:[accent] {1}[] +server.versions = Votre version:[accent] {0}[]\nVersion du serveur:[accent] {1}[] host.info = Le bouton [accent]Héberger[] héberge un serveur sur le port [scarlet]6567[]. \nN'importe qui sur le même [lightgray]wifi ou réseau local []devrait voir votre serveur sur leur liste des serveurs.\n\nSi vous voulez que les gens puissent s'y connecter de partout à l'aide de votre IP, [accent]le transfert de port (port forwarding)[] est requis.\n\n[lightgray]Note: Si quelqu'un a des problèmes de connexion à votre partie LAN, vérifiez que vous avez autorisé l'accès à Mindustry sur votre réseau local dans les paramètres de votre pare-feu. join.info = Ici vous pouvez entrez [accent]l'adresse IP d'un serveur []pour s'y connecter, ou découvrir un serveur en [accent]réseau local[].\nLe multijoueur en LAN ainsi qu'en WAN est supporté.\n\n[lightgray]Note: Il n'y a pas de liste de serveurs globaux automatiques; Si vous voulez vous connectez à quelqu'un par IP, il faudra d'abord demander à l'hébergeur leur IP. hostserver = Héberger une partie @@ -108,11 +145,11 @@ trace.ip = IP: [accent]{0} trace.id = ID Unique : [accent]{0} trace.mobile = Client mobile: [accent]{0} trace.modclient = Client personnalisé: [accent]{0} -invalidid = ID du client invalide! Veillez soumettre un rapport d'erreur. +invalidid = ID du client invalide! Veuillez soumettre un rapport d'erreur. server.bans = Bannis server.bans.none = Aucun joueur banni trouvé! server.admins = Administrateurs -server.admins.none = Pas d'administrateurs trouvés! +server.admins.none = Aucun administrateur trouvé! server.add = Ajouter un serveur server.delete = Êtes-vous sûr de vouloir supprimer ce serveur ? server.edit = Modifier le serveur @@ -140,7 +177,6 @@ server.port = Port: server.addressinuse = Adresse déjà utilisée! server.invalidport = numéro de port invalide! server.error = [crimson]Erreur d'hébergement: [accent]{0} -save.old = Cette sauvegarde provient d'une ancienne version du jeu, et ne peut plus être utilisée.\n\n[lightgray]la compatibilité des anciennes sauvegardes sera bientôt ajoutée dans la version 4.0 stable. save.new = Nouvelle sauvegarde save.overwrite = Êtes-vous sûr de vouloir\n écraser cette sauvegarde ? overwrite = Écraser @@ -174,27 +210,33 @@ warning = Avertissement. confirm = Confirmer delete = Supprimer view.workshop = Voir dans le Workshop +workshop.listing = Éditer le listing du Workshop ok = OK open = Ouverture -customize = Personaliser +customize = Personnaliser cancel = Annuler openlink = Ouvrir le lien copylink = Copier le lien back = Retour -data.export = Exporter les Données -data.import = Importer les Données -data.exported = Données Exportées. +data.export = Exporter les données +data.import = Importer les données +data.exported = Données exportées. data.invalid = Ce ne sont pas des données de jeu valides. data.import.confirm = L'importation des données externes va effacer[scarlet] toutes[] vos actuelles données de jeu.\n[accent]Ceci ne pourra pas être annulé![]\n\nUne fois les données importées, le jeu quittera immédiatement. classic.export = Exporter les données Classic -classic.export.text = [accent]Mindustry[] vient d'avoir une mise à jour majeure.\nDes sauvegardes et/ou des cartes de la version Classic (v3.5 build 40) ont été détectées. Souhaitez-vous exporter ces sauvegardes dans le dossier accueil de votre télephone, pour les utiliser dans Mindustry Classic ? +classic.export.text = [accent]Mindustry[] vient d'avoir une mise à jour majeure.\nDes sauvegardes et/ou des cartes de la version Classic (v3.5 build 40) ont été détectées. Souhaitez-vous exporter ces sauvegardes dans le dossier accueil de votre téléphone, pour les utiliser dans Mindustry Classic ? quit.confirm = Êtes-vous sûr de vouloir quitter? quit.confirm.tutorial = Êtes-vous sur de ce que vous faites?\nLe tutoriel peut être repris dans [accent]Paramètres->Jeu->Reprendre le tutoriel.[] loading = [accent]Chargement... +reloading = [accent]Rechargement des Mods... saving = [accent]Sauvegarde... +cancelbuilding = [accent][[{0}][] pour effacer le plan +selectschematic = [accent][[{0}][] pour sélectionner et copier +pausebuilding = [accent][[{0}][] pour mettre la construction en pause +resumebuilding = [scarlet][[{0}][] pour reprendre la construction wave = [accent]Vague {0} wave.waiting = [lightgray]Vague dans {0} -wave.waveInProgress = [lightgray]Wave en cours +wave.waveInProgress = [lightgray]Vague en cours waiting = [lightgray]En attente... waiting.players = En attente de joueurs... wave.enemies = [lightgray]{0} Ennemis restants @@ -210,11 +252,17 @@ map.nospawn = Cette carte n'a pas de base pour qu'un joueur puisse y apparaisse! map.nospawn.pvp = Cette carte n'a pas de base ennemies pour qu'un joueur ennemi y apparaisse! Ajouter au moins une base [SCARLET] non-orange[] dans l'éditeur. map.nospawn.attack = Cette carte n'a aucune base ennemie à attaquer! Veuillez ajouter une base[SCARLET] rouge[] sur cette carte dans l'éditeur. map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide. -map.publish.error = Erreur de Publication de la Carte: {0} +workshop.update = Mettre à jour +workshop.error = Erreur lors de la récupération des détails du workshop: {0} map.publish.confirm = Êtes-vous sûr de vouloir publier cette carte?\n\n[lightgray]Assurez-vous d’accepter d’abord les CGU du Workshop, sinon vos cartes ne seront pas affichées! +workshop.menu = Sélectionnez ce que vous souhaitez faire avec cet élément. +workshop.info = Infos sur l'élément +changelog = Journal des changements (optionnel): eula = CGU de Steam -map.publish = Carte publiée. -map.publishing = [accent]Publication de la carte... +missing = Cet élément a été supprimé ou déplacé.\n[lightgray]Le listing du workshop a maintenant été automatiquement dissociée. +publishing = [accent]Publication... +publish.confirm = Êtes-vous sûr de vouloir publier ceci ?\n\n[lightgray]Assurez-vous d'être d'abord d'accord avec les CGU du workshop, sinon vos éléments n'apparaîtront pas ! +publish.error = Erreur de publication de l'élément: {0} editor.brush = Pinceau editor.openin = Ouvrir dans l'éditeur editor.oregen = Génération de minerais @@ -240,11 +288,11 @@ waves.to = à waves.boss = Boss waves.preview = Prévisualiser waves.edit = Modifier... -waves.copy = Copier dans le Presse-papiers -waves.load = Coller depuis le Presse-papiers -waves.invalid = Vagues invalides dans le Presse-papiers. +waves.copy = Copier dans le presse-papiers +waves.load = Coller depuis le presse-papiers +waves.invalid = Vagues invalides dans le presse-papiers. waves.copied = Vagues copiées -waves.none = Aucun enemies définis.\nNotez que les vagues vides seront automatiquement remplacées par une vague générée par défaut. +waves.none = Aucun ennemi défini.\nNotez que les vagues vides seront automatiquement remplacées par une vague générée par défaut. editor.default = [lightgray] details = Détails... edit = Modifier... @@ -254,11 +302,11 @@ editor.removeunit = Enlever l'unité editor.teams = Équipe editor.errorload = Erreur lors du chargement du fichier:\n[accent]{0} editor.errorsave = Erreur lors de la sauvegarde du fichier:\n[accent]{0} -editor.errorimage = Ceci est une image, et non une carte. \n\nSi vous voulez importer une carte provenant de la version 3.5 (build 40), utilisez le bouton 'importer une carte obsolète (image)' dans l'éditeur. +editor.errorimage = Ceci est une image, et non une carte.\n\nSi vous voulez importer une carte provenant de la version 3.5 (build 40), utilisez le bouton 'importer une carte obsolète (image)' dans l'éditeur. editor.errorlegacy = Cette carte est trop ancienne, et utilise un format de carte qui n'est plus supporté. editor.errornot = Ceci n'est pas un fichier de carte. editor.errorheader = Le fichier de carte est invalide ou corrompu. -editor.errorname = La carte n'a pas de nom, essayez vous de charger une sauvegarde? +editor.errorname = La carte n'a pas de nom, essayez vous de charger une sauvegarde? editor.update = Mettre à jour editor.randomize = Rendre aléatoire editor.apply = Appliquer @@ -301,7 +349,7 @@ toolmode.square = Carré toolmode.square.description = Pinceau carré. toolmode.eraseores = Effacer les minéraux toolmode.eraseores.description = Efface seulement les minéraux. -toolmode.fillteams = Remplire les équipes +toolmode.fillteams = Remplir les équipes toolmode.fillteams.description = Rempli les équipes au lieu des blocs. toolmode.drawteams = Dessiner les équipes toolmode.drawteams.description = Dessine les équipes au lieu de blocs. @@ -344,20 +392,20 @@ campaign = Campagne load = Charger save = Sauvegarder fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms -language.restart = Veuillez redémarrez votre jeu pour le changement de langue prenne effet. +language.restart = Veuillez redémarrez votre jeu pour que le changement de langue prenne effet. settings = Paramètres tutorial = Tutoriel -tutorial.retake = Re-Take Tutorial +tutorial.retake = Rejouer le Tutoriel editor = Éditeur mapeditor = Éditeur de carte -donate = Faire un\ndon abandon = Abandonner abandon.text = Cette zone et toutes ses ressources vont être perdues. locked = Verrouillé complete = [lightgray]Compléter: -zone.requirement = Vague {0} dans la zone {1} +requirement.wave = Vague {0} dans {1} +requirement.core = Détruire le Noyau ennemi dans {0} +requirement.unlock = Débloque {0} resume = Reprendre la partie:\n[lightgray]{0} bestwave = [lightgray]Meilleur: {0} launch = < Lancement > @@ -368,13 +416,15 @@ launch.confirm = Cela va transférer toutes les ressources de votre noyau.\nVous launch.skip.confirm = Si vous passez à la vague suivante, vous ne pourrez pas effectuer le lancement avant les prochaines vagues. uncover = Découvrir configure = Modifier les ressources emportées. -configure.locked = [lightgray]Atteignez la vague {0}\npour configurer les ressources emportées. +bannedblocks = Blocs bannis +addall = Ajouter tous +configure.locked = [lightgray]Déloquer la configuration des ressources emportées: {0}. configure.invalid = Le montant doit être un nombre compris entre 0 et {0}. zone.unlocked = [lightgray]{0} Débloquée. -zone.requirement.complete = Vague {0} atteinte:\n{1} Exigences de la zone complétées -zone.config.complete = Vague {0} atteinte:\nConfiguration des ressources emportées possible. +zone.requirement.complete = Exigences pour {0} complétées:[lightgray]\n{1} +zone.config.unlocked = Configuration des ressources emportées débloquée:[lightgray]\n{0} zone.resources = [lightgray]Ressources détectées: -zone.objective = [lightgray]Objective: [accent]{0} +zone.objective = [lightgray]Objectif: [accent]{0} zone.objective.survival = Survivre zone.objective.attack = Détruire le noyau ennemi add = Ajouter... @@ -383,43 +433,43 @@ connectfail = [crimson]Échec de la connexion au serveur :\n\n[accent]{0} error.unreachable = Serveur injoignable.\nL'adresse IP est correcte? error.invalidaddress = Adresse invalide. error.timedout = Délai de connexion dépassé!\nAssurez-vous que l'hôte a autorisé l'accès au port (port forwarding), et que l'adresse soit correcte! -error.mismatch = Erreur de paquet:\nPossible différence de verison entre le client et le serveur .\nVérifiez que vous et l'hôte avez la version de Mindustry la plus recente! +error.mismatch = Erreur de paquet:\nPossible différence de version entre le client et le serveur .\nVérifiez que vous et l'hôte avez la version de Mindustry la plus récente! error.alreadyconnected = Déjà connecté. error.mapnotfound = Carte introuvable! error.io = Erreur de Réseau (I/O) error.any = Erreur réseau inconnue -error.bloom = Echec de l'initialisation du flou lumineux.\nVotre appareil peux ne pas le supporter. +error.bloom = Échec de l'initialisation du flou lumineux.\nVotre appareil peux ne pas le supporter. zone.groundZero.name = Première Bataille zone.desertWastes.name = Désert Sauvage zone.craters.name = Les Cratères zone.frozenForest.name = Forêt Glaciale zone.ruinousShores.name = Rives en Ruine -zone.stainedMountains.name = Montagnes Tâchetées +zone.stainedMountains.name = Montagnes Tachetées zone.desolateRift.name = Ravin Abandonné zone.nuclearComplex.name = Complexe Nucléaire -zone.overgrowth.name = Surcroissance Végétale +zone.overgrowth.name = Friche Végétale zone.tarFields.name = Champs de Pétrole zone.saltFlats.name = Marais Salants zone.impact0078.name = Impact 0078 zone.crags.name = Rochers zone.fungalPass.name = Passe Fongique zone.groundZero.description = L'emplacement optimal pour débuter. Faible menace ennemie. Peu de ressources. \nRecueillez autant de plomb et de cuivre que possible.\nRien d'autre à signaler. -zone.frozenForest.description = Même ici, plus près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir pour toujours.\n\nFamiliarisez vous avec l'Énergie. Construisez des générateurs a combustion. Aprenez a utiliser les réparateurs. -zone.desertWastes.description = Cette étendue désertique est immense, imprévisibles. On y croise des structures abandonnées.\nLe charbon est présent dans la région. Brulez-le pour générer de l'Énergie ou synthétisez-le en graphite.\n\n[lightgray]Ce lieu d'atterisage est imprévisible. +zone.frozenForest.description = Même ici, plus près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir pour toujours.\n\nFamiliarisez vous avec l'Énergie. Construisez des générateurs a combustion. Apprenez a utiliser les réparateurs. +zone.desertWastes.description = Cette étendue désertique est immense, imprévisible. On y croise des structures abandonnées.\nLe charbon est présent dans la région. Brûlez-le pour générer de l'Énergie ou synthétisez-le en graphite.\n\n[lightgray]Ce lieu d'atterisage est imprévisible. zone.saltFlats.description = Aux abords du désert se trouvent les Marais Salants. Peu de ressources peuvent être trouvées à cet endroit.\n\nL'ennemi y a érigé un stockage de ressources. Éradiquez leur présence. zone.craters.description = L'eau s'est accumulée dans ce cratère, vestige des guerres anciennes. Récupérez la zone. Recueilliez du sable pour le transformer en verre trempé. Pompez de l'eau pour refroidir les tourelles et les perceuses. -zone.ruinousShores.description = Passé les contrées désertiques, c'est le rivage. Auparavent, cet endroit a abrité un réseau de défense côtière. Il n'en reste pas beaucoup. Seules les structures de défense les plus élémentaires sont restées indemnes, tout le reste étant réduit à néant.\nÉtendez vous. Redécouvrez la technologie. +zone.ruinousShores.description = Passé les contrées désertiques, c'est le rivage. Auparavant, cet endroit a abrité un réseau de défense côtière. Il n'en reste pas grand chose. Seules les structures de défense les plus élémentaires sont restées indemnes, tout le reste étant réduit à néant.\nÉtendez vous. Redécouvrez la technologie. zone.stainedMountains.description = A l'intérieur des terres se trouvent des montagnes, épargnées par les spores. Extrayez le titane qui abonde dans cette région. Apprenez à vous en servir. La menace ennemi se fait plus présente ici. Ne leur donnez pas le temps de rallier leurs puissantes unités. -zone.overgrowth.description = Cette zone est étouffée par la végétation, et proche de la source des spores.\nL’ennemi a établi une base ici. Construisez des unitées Titan pour le détruire. Reprennez ce qui a été perdu. -zone.tarFields.description = La périphérie d'une zone de puits pétroliers, entre montagnes et désert. Une des rares zones disposant de réserves de Pétrole utilisables. Bien qu'abandonnée, cette zone compte des forces ennemies dangereuses à proximité. Ne les sous-estimez pas.\n\n[lightgray]Si possible, recherchez les technologie de traitement d'huile. +zone.overgrowth.description = Cette zone est envahie par la végétation, et proche de la source des spores.\nL’ennemi a établi une base ici. Construisez des unités Titan pour le détruire. Reprenez ce qui a été perdu. +zone.tarFields.description = La périphérie d'une zone de puits pétroliers, entre montagnes et désert. Une des rares zones disposant de réserves de Pétrole utilisables. Bien qu'abandonnée, cette zone compte des forces ennemies dangereuses à proximité. Ne les sous-estimez pas.\n\n[lightgray]Si possible, recherchez les technologies de traitement du pétrole zone.desolateRift.description = Une zone extrêmement dangereuse. Ressources abondantes, mais peu d'espace. Fort risque de destruction. Repartez le plus vite possible. Ne vous laissez pas berner par une longue attente entre deux vagues ennemies. -zone.nuclearComplex.description = Une ancienne installation de production et traitement de thorium réduite en ruines.\n[lightgray]Faites des recherches sur le thorium et ses nombreuses utilisations.\n\nL'ennemi est présent ici en grand nombre, à l'affut constant. +zone.nuclearComplex.description = Une ancienne installation de production et traitement de thorium réduite en ruines.\n[lightgray]Faites des recherches sur le thorium et ses nombreuses utilisations.\n\nL'ennemi est présent ici en grand nombre, constamment à l'affut. zone.fungalPass.description = Une zone de transition entre les hautes montagnes et les basses régions infestées de spores. Une petite base de reconnaissance ennemie s'y trouve.\nDétruisez la.\nUtilisez les unités Poignard et Rampeurs. Détruisez les deux noyaux. zone.impact0078.description = zone.crags.description = settings.language = Langue settings.data = Données du Jeu -settings.reset = Valeurs par Défaut. +settings.reset = Valeurs par Défaut settings.rebind = Réattribuer settings.controls = Contrôles settings.game = Jeu @@ -427,16 +477,15 @@ settings.sound = Son settings.graphics = Graphismes settings.cleardata = Effacer les données du jeu... settings.clear.confirm = Êtes-vous sûr d'effacer ces données ?\nAucun retour en arrière n'est possible! -settings.clearall.confirm = [scarlet]ATTENTION![]\nCet action effacera toutes les données, y conpris les sauvegarges, les cartes, la progression et la configuration des touches.\nUne fois que vous aurez pressé 'ok' le jeu effacera TOUTES les données et se fermera. -settings.clearunlocks = Effacer la progression -settings.clearall = Tout effacer +settings.clearall.confirm = [scarlet]ATTENTION![]\nCette action effacera toutes les données, y compris les sauvegardes, les cartes, la progression et la configuration des touches.\nUne fois que vous aurez pressé 'ok' le jeu effacera TOUTES les données et se fermera. paused = [accent]< Pause > +clear = Effacer +banned = [scarlet]Bannis yes = Oui no = Non info.title = Info error.title = [crimson]Une erreur s'est produite error.crashtitle = Une erreur s'est produite -attackpvponly = [scarlet]Seulement disponible dans les modes Attaque et PvP blocks.input = Input blocks.output = Output blocks.booster = Booster @@ -458,20 +507,20 @@ blocks.itemcapacity = Stockage blocks.basepowergeneration = Taux d'énergie normale blocks.productiontime = Durée de production blocks.repairtime = Durée de Réparation Complète du Bloc -blocks.speedincrease = Accéleration +blocks.speedincrease = Accélération blocks.range = Portée blocks.drilltier = Forable blocks.drillspeed = Vitesse de forage de base -blocks.boosteffect = Boost Effect +blocks.boosteffect = Effet du Boost blocks.maxunits = Unités actives max blocks.health = Santé blocks.buildtime = Durée de construction -blocks.buildcost = Coût de Construction +blocks.buildcost = Coût de construction blocks.inaccuracy = Imprécision blocks.shots = Tirs blocks.reload = Tirs/Seconde blocks.ammo = Munitions -bar.drilltierreq = Foreuse Ameliorée Requise +bar.drilltierreq = Foreuse Améliorée Requise bar.drillspeed = Vitesse de forage: {0}/s bar.efficiency = Efficacité: {0}% bar.powerbalance = Énergie: {0}/s @@ -518,17 +567,18 @@ category.optional = Améliorations optionnelles setting.landscape.name = Verrouiller en rotation paysage setting.shadows.name = Ombres setting.linear.name = Filtrage Linéaire +setting.hints.name = Astuces setting.animatedwater.name = Eau animée setting.animatedshields.name = Boucliers Animés -setting.antialias.name = Antialias[lightgray] (redémarrage du jeu nécéssaire)[] +setting.antialias.name = Antialias[lightgray] (redémarrage du jeu nécessaire)[] setting.indicators.name = Indicateurs Alliés/Ennemis setting.autotarget.name = Visée automatique -setting.keyboard.name = Controles Sourie+Clavier +setting.keyboard.name = Contrôles Souris+Clavier setting.touchscreen.name = Commandes d'Écran Tactile setting.fpscap.name = FPS Max setting.fpscap.none = Aucun setting.fpscap.text = {0} FPS -setting.uiscale.name = Échelle de l'interface[lightgray] (redémarrage du jeu nécéssaire)[] +setting.uiscale.name = Échelle de l'interface[lightgray] (redémarrage du jeu nécessaire)[] setting.swapdiagonal.name = Autoriser le placement en diagonale setting.difficulty.training = Entraînement setting.difficulty.easy = Facile @@ -542,11 +592,12 @@ setting.sensitivity.name = Sensibilité de la manette setting.saveinterval.name = Intervalle des sauvegardes auto setting.seconds = {0} secondes setting.fullscreen.name = Plein Écran -setting.borderlesswindow.name = Fenêtre sans bords (Borderless)[lightgray] (peut requérir le redémarrage du jeu) +setting.borderlesswindow.name = Fenêtre sans bords (Borderless)[lightgray] (peut nécessiter le redémarrage du jeu) setting.fps.name = Afficher FPS setting.vsync.name = VSync setting.pixelate.name = Pixeliser[lightgray] (désactive les animations) -setting.minimap.name = Montrer la Minimap +setting.minimap.name = Afficher la Minimap +setting.position.name = Afficher la position du joueur setting.musicvol.name = Volume Musique setting.ambientvol.name = Volume Ambiant setting.mutemusic.name = Couper la Musique @@ -558,41 +609,48 @@ setting.publichost.name = Visibilité de la Partie Publique setting.chatopacity.name = Opacité du Chat setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Montrer le Chat -uiscale.reset = L'échelle de l'interface a été modifiée.\nAppuyez sur "OK" pour confirmer.\n[scarlet]Rétablissement aux parametres d'avant et fermeture dans [accent] {0}[]... +public.confirm = Voulez-vous rendre votre partie publique?\n[accent]N'importe qui pourra rejoindre vos parties.\n[lightgray]Ce paramètre peut être changé plus tard dans Paramètres->Jeu->Visibilité de la Partie Publique +public.beta = Notez que les versions bêta du jeu ne peuvent pas créer des lobby publics. +uiscale.reset = L'échelle de l'interface a été modifiée.\nAppuyez sur "OK" pour confirmer.\n[scarlet]Rétablissement aux paramètres d'avant et fermeture dans [accent] {0}[]... uiscale.cancel = Annuler & Quitter setting.bloom.name = Flou lumineux -keybind.title = Racourcis Clavier -keybinds.mobile = [scarlet]La plupart des racourcis claviers ne sont pas fonctionnels sur mobile. Seuls les mouvements basiques sont supportés. +keybind.title = Raccourcis Clavier +keybinds.mobile = [scarlet]La plupart des raccourcis claviers ne sont pas fonctionnels sur mobile. Seuls les mouvements basiques sont supportés. category.general.name = Général category.view.name = Voir category.multiplayer.name = Multijoueur command.attack = Attaque command.rally = Rassembler command.retreat = Retraite -keybind.gridMode.name = Sélection des blocs -keybind.gridModeShift.name = Sélection des catégories +keybind.clear_building.name = Effacer les constructions keybind.press = Appuyer sur une touche... keybind.press.axis = Appuyer sur un axe ou une touche... keybind.screenshot.name = Capture d'écran keybind.move_x.name = Mouvement x keybind.move_y.name = Mouvement y +keybind.schematic_select.name = Sélectionner une région +keybind.schematic_menu.name = Menu des schéma +keybind.schematic_flip_x.name = Retourner le schéma sur l'axe X +keybind.schematic_flip_y.name = Retourner le schéma sur l'axe Y keybind.fullscreen.name = Basculer en Plein Écran keybind.select.name = Sélectionner/Tirer keybind.diagonal_placement.name = Placement en diagonale keybind.pick.name = Choisir un bloc -keybind.break_block.name = Suppprimer un bloc +keybind.break_block.name = Supprimer un bloc keybind.deselect.name = Désélectionner keybind.shoot.name = Tirer -keybind.zoom_hold.name = Maintenir le zoom +keybind.zoom_hold.name = Maintenir pour zoomer keybind.zoom.name = Zoom keybind.menu.name = Menu keybind.pause.name = Pause +keybind.pause_building.name = Pauser/Reprendre la construction keybind.minimap.name = Minimap keybind.dash.name = Sprint keybind.chat.name = Chat keybind.player_list.name = Liste des joueurs keybind.console.name = Console keybind.rotate.name = Tourner +keybind.rotateplaced.name = Tourner existant (maintenir) keybind.toggle_menus.name = Cacher/afficher les menus keybind.chat_history_prev.name = Remonter l'historique du chat keybind.chat_history_next.name = Descendre l'historique du chat @@ -601,9 +659,10 @@ keybind.drop_unit.name = Larguer l'unité keybind.zoom_minimap.name = Zoom minimap mode.help.title = Description des modes de jeu mode.survival.name = Survie -mode.survival.description = Le mode normal. Ressources limitées et vagues automatiques.\n[gray]Nécéssite un point d'apparition pour les ennemis. +mode.survival.description = Le mode normal. Ressources limitées et vagues automatiques.\n[gray]Nécessite un point d'apparition pour les ennemis. mode.sandbox.name = Bac à sable mode.sandbox.description = Ressources infinies et pas de minuterie pour les vagues. +mode.editor.name = Editeur mode.pvp.name = PvP mode.pvp.description = Battez-vous contre d'autres joueurs en local.\n[gray]Requiert aux moins 2 noyaux de couleur différentes dans la carte pour y jouer. mode.attack.name = Attaque @@ -619,9 +678,9 @@ rules.unitbuildspeedmultiplier = Multiplicateur de Vitesse de Construction d'Uni rules.unithealthmultiplier = Multiplicateur de Santé des Unités rules.playerhealthmultiplier = Multiplicateur de Santé des Joueurs rules.playerdamagemultiplier = Multiplicateur des Dégâts Joueurs -rules.unitdamagemultiplier = Multiplicateur des Dégats Unité +rules.unitdamagemultiplier = Multiplicateur des dégâts Unité rules.enemycorebuildradius = Périmètre de non-construction du noyau ennemi:[lightgray] (blocs) -rules.respawntime = Durée de réaparition:[lightgray] (sec) +rules.respawntime = Durée de réapparition:[lightgray] (sec) rules.wavespacing = Espacement des vagues:[lightgray] (sec) rules.buildcostmultiplier = Multiplicateur du prix de construction rules.buildspeedmultiplier = Multiplicateur du temps de construction @@ -646,7 +705,7 @@ item.coal.name = Charbon item.graphite.name = Graphite item.titanium.name = Titane item.thorium.name = Thorium -item.silicon.name = Silice +item.silicon.name = Silicium item.plastanium.name = Plastanium item.phase-fabric.name = Tissu Phasé item.surge-alloy.name = Alliage Superchargé @@ -674,7 +733,7 @@ mech.omega-mech.weapon = Missiles Essaim mech.omega-mech.ability = Armure mech.dart-ship.name = Dard mech.dart-ship.weapon = Mitraillette -mech.javelin-ship.name = Javelin +mech.javelin-ship.name = Javelot mech.javelin-ship.weapon = Missiles Rafale mech.javelin-ship.ability = Décharge de Propulseur mech.trident-ship.name = Trident @@ -706,14 +765,14 @@ block.sandrocks.name = Roches de sable block.spore-pine.name = Pin Sporifié block.sporerocks.name = Roche Sporeuse block.rock.name = Roche -block.snowrock.name = Roches enneigés +block.snowrock.name = Roches enneigées block.snow-pine.name = Pin enneigé block.shale.name = Schiste block.shale-boulder.name = Blocs de Schiste block.moss.name = Mousse block.shrubs.name = Arbustes block.spore-moss.name = Mousse Sporeuse -block.shalerocks.name = Rochets de de Schiste Argileux +block.shalerocks.name = Rochers de Schiste Argileux block.scrap-wall.name = Mur de Ferraille block.scrap-wall-large.name = Mur de Ferraille Large block.scrap-wall-huge.name = Mur de Ferraille Énorme @@ -729,8 +788,8 @@ block.core-foundation.name = Noyau: Fondation block.core-nucleus.name = Noyau: Épicentre block.deepwater.name = Eau profonde block.water.name = Eau -block.tainted-water.name = Eau Teintée -block.darksand-tainted-water.name = Sable Teinté d'Eau Sombre +block.tainted-water.name = Eau Contaminée +block.darksand-tainted-water.name = Sable Sombre Mouillé Contaminé block.tar.name = Pétrole block.stone.name = Roche block.sand.name = Sable @@ -739,7 +798,7 @@ block.ice.name = Glace block.snow.name = Neige block.craters.name = Cratères block.sand-water.name = Sable Mouillé -block.darksand-water.name = Sable Mouillé Sombre +block.darksand-water.name = Sable Sombre Mouillé block.char.name = Cendre block.holostone.name = Pierre Holographique block.ice-snow.name = Neige Gelée @@ -790,9 +849,10 @@ block.junction.name = Jonction block.router.name = Routeur block.distributor.name = Distributeur block.sorter.name = Trieur +block.inverted-sorter.name = Trieur Inversé block.message.name = Message block.overflow-gate.name = Barrière de Débordement -block.silicon-smelter.name = Fonderie de Silicone +block.silicon-smelter.name = Fonderie de Silicium block.phase-weaver.name = Tisseur à Phase block.pulverizer.name = Pulvérisateur block.cryofluidmixer.name = Refroidisseur @@ -800,9 +860,9 @@ block.melter.name = Four à Fusion block.incinerator.name = Incinérateur block.spore-press.name = Presse à Spore block.separator.name = Séparateur -block.coal-centrifuge.name = Centrifuge à Charbon +block.coal-centrifuge.name = Centrifugeur à Charbon block.power-node.name = Transmetteur Énergétique -block.power-node-large.name = Gros Transmetteur Énergétique +block.power-node-large.name = Grand Transmetteur Énergétique block.surge-tower.name = Tour de Surtension block.battery.name = Batterie block.battery-large.name = Grande Batterie @@ -817,7 +877,7 @@ block.water-extractor.name = Extracteur d'Eau block.cultivator.name = Cultivateur block.dart-mech-pad.name = Reconstructeur de Mécha Dard block.delta-mech-pad.name = Reconstructeur de Mécha Delta -block.javelin-ship-pad.name = Reconstructeur de Vaisseau Javelin +block.javelin-ship-pad.name = Reconstructeur de Vaisseau Javelot block.trident-ship-pad.name = Reconstructeur de Vaisseau Trident block.glaive-ship-pad.name = Reconstructeur de Vaisseau Glaive block.omega-mech-pad.name = Reconstructeur de Mécha Oméga @@ -852,7 +912,7 @@ block.ghoul-factory.name = Usine de Bombardiers Goules block.dagger-factory.name = Usine de Méchas Poignards block.crawler-factory.name = Usine de Méchas Rampeurs block.titan-factory.name = Usine de Méchas Titans -block.fortress-factory.name = Usine de Méchas Forteresse +block.fortress-factory.name = Usine de Méchas Forteresses block.revenant-factory.name = Usine de Combattants Revenants block.repair-point.name = Point de Réparation block.pulse-conduit.name = Conduit à Impulsion @@ -908,26 +968,26 @@ unit.lich.name = Liche unit.reaper.name = Faucheur tutorial.next = [lightgray] tutorial.intro = Vous venez de commencer le [scarlet]Tutoriel de Mindustry.[]\nCommence en minant du [accent]cuivre[]. Pour cela, appuyez sur une veine de minerai de cuivre près de votre noyau.\n\n[accent]{0}/{1} cuivre -tutorial.drill = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nCliquez sur l'onglet des foreuses en bas à droite.\nSelectionnez la [accent]foreuse mécanique[]. Placez-la sur une veine de cuivre en cliquant.\n[accent]Faite un clique-droit[] pour arrêter la construction. -tutorial.drill.mobile = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nAppuyez sur l'onglet des foreuses en bas à droite.\nSelectionnez la [accent]foreuse mécanique[].\nPlacez-la sur une veine de cuivre en y appuyant, puis en touchant la[accent] coche[] pour confirmer votre placement.\nAppuyez sur le [accent]boutton en forme de croix[] pour annuler le placement. +tutorial.drill = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nCliquez sur l'onglet des foreuses en bas à droite.\nSélectionnez la [accent]foreuse mécanique[]. Placez-la sur une veine de cuivre en cliquant.\n[accent]Faite un clique-droit[] pour arrêter la construction. +tutorial.drill.mobile = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nAppuyez sur l'onglet des foreuses en bas à droite.\nSélectionnez la [accent]foreuse mécanique[].\nPlacez-la sur une veine de cuivre en y appuyant, puis en touchant la[accent] coche[] pour confirmer votre placement.\nAppuyez sur le [accent]bouton en forme de croix[] pour annuler le placement. tutorial.blockinfo = Chaque bloc a des statistiques différentes. Chaque foreuse ne peut miner que certains minerais.\nPour vérifier les informations et les statistiques d'un bloc, appuyez sur le [accent]bouton "?" tout en le sélectionnant dans le menu de construction.[]\n\n[accent]Maintenant, accédez aux statistiques de la foreuse mécanique.[] -tutorial.conveyor = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaite une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent]Maintenez votre souris pour les placer en ligne.[]\nGardez la touche[accent] CTRL[] enfoncé pour pouvoir les placer en diagonale.\n\n[accent]{0}/{1} convoyeurs placé en ligne\n[accent]0/1 ressources acheminées -tutorial.conveyor.mobile = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaite une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent] Maintenez votre doigt enfoncé[] et deplacez-le pour former une ligne.\n\n[accent]{0}/{1} convoyeurs placé en ligne\n[accent]0/1 ressources acheminées -tutorial.turret = Une fois qu'une ressource rentre dans votre noyau, elle peut être utilisé pour la construction.\nGardez à l'esprit que certaines ressources ne peuvent pas être utilisés pour la construction.\nCes ressources, tel que[accent] le charbon[] ou[accent] la ferraille[], ne peuvent pas rentrer dans votre noyau.\nDes structures défensives doivent être construites pour repousser l'[lightgray] ennemi[].\nConstruisez une [accent]tourrelle Duo[] non loin de votre noyau. +tutorial.conveyor = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaite une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent]Maintenez votre souris pour les placer en ligne.[]\nGardez la touche[accent] CTRL[] enfoncée pour pouvoir les placer en diagonale.\n\nPlacez 2 convoyeurs avec l'outil ligne puis livrer une ressource à la base. +tutorial.conveyor.mobile = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaite une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent] Maintenez votre doigt enfoncé[] et deplacez-le pour former une ligne.\n\nPlacez 2 convoyeurs avec l'outil ligne puis livrer une ressource à la base. +tutorial.turret = Une fois qu'une ressource rentre dans votre noyau, elle peut être utilisée pour la construction.\nGardez à l'esprit que certaines ressources ne peuvent pas être utilisées pour la construction.\nCes ressources, telles que[accent] le charbon[] ou[accent] la ferraille[], ne peuvent pas rentrer dans votre noyau.\nDes structures défensives doivent être construites pour repousser l'[lightgray] ennemi[].\nConstruisez une [accent]tourrelle Duo[] non loin de votre noyau. tutorial.drillturret = Les tourrelles Duo ont besoin de[accent] munitions en cuivre []pour tirer.\nPlacez une foreuse près de la tourelle.\nA l'aide de convoyeurs, alimentez la tourelle en cuivre.\n\n[accent]Munitions livrées: 0/1 tutorial.pause = Pendant les batailles, vous pouvez mettre [accent]le jeu en pause.[]\nVous pouvez placer des batiments à construire tout en étant en pause.\n\n[accent]Appuyez sur la barre espace pour pauser. tutorial.pause.mobile = Pendant les batailles, vous pouvez mettre [accent]le jeu en pause.[]\nVous pouvez placer des batiments à construire tout en étant en pause.\n\n[accent]Appuyez sur ce bouton en haut à gauche pour pauser. tutorial.unpause = Maintenant, appuyez à nouveau sur espace pour continuer à jouer. tutorial.unpause.mobile = Appuyez à nouveau dessus pour continuer à jouer. -tutorial.breaking = Les blocs doivent souvent être détruits.\n[accent]Gardez enfoncé le boutton de droite de votre souri[] pour détruire tous les blocs en une sélection.[]\n\n[accent]Détruisez tous les blocs de ferraille situés à gauche de votre noyau à l'aide de la sélection de zone. -tutorial.breaking.mobile = Les blocs doivent souvent être détruits.\n[accent]Selectionnez le mode de déconstruction[], puis appuyez sur un bloc pour commencer à le détruire.\nDétruisez une zone en maintenant votre doigt appuyé pendant quelques secondes[] et en le déplacant dans une direction.\nAppuyez sur le bouton coche pour confirmer.\n\n[accent]Détruisez tous les blocs de ferraille situés à gauche de votre noyau à l'aide de la sélection de zone. -tutorial.withdraw = Dans certaines situations, il est nécessaire de prendre des éléments directement à partir de blocs.\nPour faire cela, [accent]appuyez sur un bloc[] qui contient des ressources, puis [accent]appuyez sur une ressource[] dans son inventaire.\nPlusieurs ressources peuvent être retirés en [accent]appuyant pendant quelque secondes[].\n\n[accent]Retirez du cuivre du noyau.[] -tutorial.deposit = Déposez des ressources dans des blocs en les faisant glisser de votre vaisseau vers le bloc de destination.\n\n[accent]Déposez le cuivre récupéré précedemment dans le noyau.[] -tutorial.waves = L'[lightgray] ennemi[] approche.\n\nDefend le noyau pendant 2 vagues.[accent] Clique[] pour tirer.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre. -tutorial.waves.mobile = L'[lightgray] ennemi[] approche.\n\nDefend le noyau pendant 2 vagues. Votre vaisseau tirera automatiquement sur les ennemis.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre. -tutorial.launch = Une fois que vous aurez atteind une vague spécifique, vous aurez la possibilité de[accent] faire décoler le noyau[], abandonant vos défenses mais en [accent]sécurisant toutes les ressources de votre noyau.[]\nCes ressources peuvent ensuite être utilisées pour rechercher de nouvelles technologies.\n\n[accent]Appuyez sur le bouton de lancement. +tutorial.breaking = Les blocs doivent souvent être détruits.\n[accent]Gardez enfoncé le bouton droit de votre souris[] pour détruire tous les blocs en une sélection.[]\n\n[accent]Détruisez tous les blocs de ferraille situés à gauche de votre noyau à l'aide de la sélection de zone. +tutorial.breaking.mobile = Les blocs doivent souvent être détruits.\n[accent]Sélectionnez le mode de déconstruction[], puis appuyez sur un bloc pour commencer à le détruire.\nDétruisez une zone en maintenant votre doigt appuyé pendant quelques secondes[] et en le déplaçant dans une direction.\nAppuyez sur le bouton coche pour confirmer.\n\n[accent]Détruisez tous les blocs de ferraille situés à gauche de votre noyau à l'aide de la sélection de zone. +tutorial.withdraw = Dans certaines situations, il est nécessaire de prendre des éléments directement à partir de blocs.\nPour faire cela, [accent]appuyez sur un bloc[] qui contient des ressources, puis [accent]appuyez sur une ressource[] dans son inventaire.\nPlusieurs ressources peuvent être retirées en [accent]appuyant pendant quelques secondes[].\n\n[accent]Retirez du cuivre du noyau.[] +tutorial.deposit = Déposez des ressources dans des blocs en les faisant glisser de votre vaisseau vers le bloc de destination.\n\n[accent]Déposez le cuivre récupéré précédemment dans le noyau.[] +tutorial.waves = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues.[accent] Cliquez[] pour tirer.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre. +tutorial.waves.mobile = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues. Votre vaisseau tirera automatiquement sur les ennemis.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre. +tutorial.launch = Une fois que vous aurez atteint une vague spécifique, vous aurez la possibilité de[accent] faire décoller le noyau[], abandonnant vos défenses mais [accent]sécurisant toutes les ressources stockées dans votre noyau.[]\nCes ressources peuvent ensuite être utilisées pour rechercher de nouvelles technologies.\n\n[accent]Appuyez sur le bouton de lancement. item.copper.description = Le matériau structurel de base. Utilisé intensivement dans tout les blocs. -item.lead.description = Un matériau de départ. Utilisé intensivement en électronique et dans les blocs de trasports de liquides. +item.lead.description = Un matériau de départ. Utilisé intensivement en électronique et dans les blocs de transport de liquides. item.metaglass.description = Un composé de vitre super-résistant. Utilisé largement pour le transport et le stockage de liquides. item.graphite.description = Du carbone minéralisé, utilisé pour les munitions et l’isolation électrique. item.sand.description = Un matériau commun utilisé largement dans la fonte, à la fois dans l'alliage et comme un flux. @@ -938,151 +998,152 @@ item.scrap.description = Restes de vieilles structures et unités. Contient des item.silicon.description = Un matériau semi-conducteur extrêmement utile, avec des utilisations dans les panneaux solaires et dans beaucoup d'autre composants électroniques complexes. item.plastanium.description = Un matériau léger et ductile utilisé dans l'aviation avancée et dans les munitions à fragmentation. item.phase-fabric.description = Une substance au poids quasiment inexistant utilisé pour l'électronique avancé et la technologie auto-réparatrice. -item.surge-alloy.description = Un alliage avancé avec des propriétés électriques avancées. -item.spore-pod.description = Une gousse de spores synthétiques, synthétisées à partir de concentrations atmosphériques à des fins industrielles. Utilisé pour la conversion en huile, explosifs et carburant. +item.surge-alloy.description = Un alliage avancé avec des propriétés électriques uniques. +item.spore-pod.description = Une gousse de spores synthétiques, synthétisées à partir de concentrations atmosphériques à des fins industrielles. Utilisé pour la conversion en pétrole, explosifs et carburant. item.blast-compound.description = Un composé volatile utilisé dans les bombes et les explosifs. Bien qu'il puisse être utilisé comme carburant, ce n'est pas conseillé. item.pyratite.description = Une substance extrêmement inflammable utilisée dans les armes incendiaires. liquid.water.description = Le liquide le plus utile. Couramment utilisé pour le refroidissement et le traitement des déchets. liquid.slag.description = Différents types de métaux en fusion mélangés. Peut être séparé en ses minéraux constitutifs ou tout simplement pulvérisé sur les unités ennemies. -liquid.oil.description = Un liquide utilisé dans la production de matériaux avancés. Peut être brûlé, utilisé comme explosif ou comme liquide de refroidissement. +liquid.oil.description = Un liquide utilisé dans la production de matériaux avancés. Peut être transformé en charbon ou pulvérisé sur les ennemis puis enflammé. liquid.cryofluid.description = Un liquide inerte, non corrosif, créé à partir d’eau et de titane. A une capacité d'absorption de chaleur extrêmement élevée. Utilisé intensivement comme liquide de refroidissement. mech.alpha-mech.description = Le mécha standard. Est basé sur une unité Poignard, avec une armure améliorée et des capacités de construction. Inflige plus de dégâts qu'un vaisseau Dard. -mech.delta-mech.description = Un mécha rapide, avec une armure légère, concu pour les attaques de frappe. Il inflige, par contre, peu de dégâts aux structures. Néanmoins il peut tuer de grand groupes d'ennemis très rapidement avec ses arcs électriques. +mech.delta-mech.description = Un mécha rapide, avec une armure légère, conçu pour les attaques de frappe. Il inflige, par contre, peu de dégâts aux structures. Néanmoins il peut tuer de grand groupes d'ennemis très rapidement avec ses arcs électriques. mech.tau-mech.description = Un mécha de support. Soigne les blocs alliés en tirant dessus. Il peut aussi éteindre les feux et soigner ses alliés en zone avec sa compétence. mech.omega-mech.description = Un mécha cuirassé et large fait pour les assauts frontaux. Sa compétence lui permet de bloquer 90% des dégâts. mech.dart-ship.description = Le vaisseau standard. Raisonnablement rapide et léger. Il a néanmoins peu d'attaque et une faible vitesse de minage. -mech.javelin-ship.description = Un vaisseau de frappe qui, bien que lent au départ, peut accélerer pour atteindre de très grandes vitesses et voler jusqu'aux avant-postes ennemis, faisant d'énormes dégâts avec ses arc électriques obtenus à vitesse maximum et ses missiles. -mech.trident-ship.description = Un bombardier lourd, concu pour la construction et pour la destruction des fortifications ennemies. Assez bien blindé. -mech.glaive-ship.description = Un grand vaisseau de combat cuirassé. Equipé avec un fusil automatique à munitions incendiaires. Est très maniable. +mech.javelin-ship.description = Un vaisseau de frappe éclair qui, bien que lent au départ, peut accélérer pour atteindre de très grandes vitesses et voler jusqu'aux avant-postes ennemis, faisant d'énormes dégâts avec ses arc électriques obtenus à vitesse maximum et ses missiles. +mech.trident-ship.description = Un bombardier lourd, conçu pour la construction et pour la destruction des fortifications ennemies. Assez bien blindé. +mech.glaive-ship.description = Un grand vaisseau de combat cuirassé. Équipé avec un fusil automatique à munitions incendiaires. Est très maniable. unit.draug.description = Un drone de minage primitif pas cher à produire. Sacrifiable. Mine automatiquement le cuivre et le plomb dans les environs. Fournit les ressources minées au noyau le plus proche. unit.spirit.description = Un drone Draug modifié, conçu pour réparer au lieu d’exploiter. Répare automatiquement tous les blocs endommagés dans la zone. unit.phantom.description = Une unité de drone avancée qui vous suit et vous aide à la construction de blocs. -unit.dagger.description = L'unité de sol de base. Coute pas cher à produire. Est écrasant lorsqu'il est utilisé en essaims. -unit.crawler.description = Une unité de sol composée d’un cadre dépouillé sur lequel sont fixés des explosifs puissants. Pas particulièrement durable. Explose au contact des ennemis. -unit.titan.description = Une unité terrestre avancée et blindée. Attaque les cibles aériennes et terrestres. Equipé de deux lance-flammes miniatures de type Brûleur. -unit.fortress.description = Une unité d'artillerie lourde. Equipé de deux canons de type Grêle modifiés pour l'assaut à longue portée contre les structures et les unités ennemies. +unit.dagger.description = L'unité terrestre de base. Coûte peu cher à produire. Implacable lorsqu'il est utilisé en essaims. +unit.crawler.description = Une unité terrestre composée d’un cadre dépouillé sur lequel sont fixés des explosifs puissants. Pas particulièrement durable. Explose au contact des ennemis. +unit.titan.description = Une unité terrestre avancée et blindée. Attaque les cibles aériennes et terrestres. Équipé de deux lance-flammes miniatures de type Brûleur. +unit.fortress.description = Une unité d'artillerie lourde. Équipé de deux canons de type Grêle modifiés pour l'assaut à longue portée contre les structures et les unités ennemies. unit.eruptor.description = Une unité lourde conçue pour détruire les structures. Tire un flot de scories sur les fortifications ennemies, les faisant fondre et brûler. -unit.wraith.description = Une unité d'interception rapide et de frappe. Cible les générateurs d'énergie. -unit.ghoul.description = Un bombardier lourd de saturation. Déchire a travert les structures ennemies, ciblant les infrastructures critiques. -unit.revenant.description = Un arsenal de missiles lourd et planant. +unit.wraith.description = Une unité d'interception rapide de harcelement. Cible les générateurs d'énergie. +unit.ghoul.description = Un bombardier lourd de barrage. Fend a travers les lignes ennemies, ciblant les infrastructures critiques. +unit.revenant.description = Une plateforme aérienne lançant des missiles lourds. block.message.description = Enregistre un message. Utilisé pour la communication entre alliés. block.graphite-press.description = Compresse des morceaux de charbon en feuilles de graphite pur. block.multi-press.description = Une version améliorée de la presse à graphite. Utilise de l'eau et de l'électricité pour traiter le charbon rapidement et efficacement. -block.silicon-smelter.description = Réduit le sable avec du charbon pur. Produit du silicone. +block.silicon-smelter.description = Réduit le sable avec du charbon pur. Produit du silicium. block.kiln.description = Fait fondre le sable et le plomb en verre trempé. Nécessite de petites quantités d'énergie. -block.plastanium-compressor.description = Produit du plastanium à partir d'huile et de titane. +block.plastanium-compressor.description = Produit du plastanium à partir de pétrole et de titane. block.phase-weaver.description = Produit du tissu phasé à partir de thorium et de grandes quantités de sable. Nécessite des quantités massives d'énergie pour fonctionner. -block.alloy-smelter.description = Produit un alliage superchargé à l'aide de titane, de plomb, de silicone et de cuivre. +block.alloy-smelter.description = Produit un alliage superchargé à l'aide de titane, de plomb, de silicium et de cuivre. block.cryofluidmixer.description = Mélange de l’eau et de la fine poudre de titane pour former du liquide cryogénique. Indispensable pour l'utilisation du réacteur au thorium. block.blast-mixer.description = Écrase et mélange les amas de spores avec de la pyratite pour produire un mélange explosif. block.pyratite-mixer.description = Mélange le charbon, le plomb et le sable en pyratite hautement inflammable. block.melter.description = Fait fondre la ferraille en scories pour un traitement ultérieur ou une utilisation dans des tourelles Vague. -block.separator.description = Expose la pierre à de l'eau sous pression afin d'obtenir différents minéraux contenus dans la pierre. -block.spore-press.description = Compresses spore pods into oil. -block.pulverizer.description = Écrase la pierre pour en faire du sable. Utile quand il y a un manque de sable naturel. -block.coal-centrifuge.description = Solidifes oil into chunks of coal. -block.incinerator.description = Permet de se débarasser de n'importe quel objet ou liquide en exces . +block.separator.description = Expose la scorie à de l'eau sous pression afin d'obtenir différents minéraux qu'elle contient. +block.spore-press.description = Compresse les glandes de spore sous une pression extrême pour synthétiser du pétrole. +block.pulverizer.description = Écrase la ferraille pour en faire du sable. Utile quand il y a un manque de sable naturel. +block.coal-centrifuge.description = Solidifie le pétrole en blocs de charbon. +block.incinerator.description = Permet de se débarrasser de n'importe quel objet ou liquide en excès. block.power-void.description = Supprime toute l'énergie allant à l'intérieur. Bac à sable uniquement block.power-source.description = Produit de l'énergie à l'infini. Bac à sable uniquement. block.item-source.description = Produit des objets à l'infini. Bac à sable uniquement . block.item-void.description = Désintègre n'importe quel objet qui va à l'intérieur sans utiliser d'énergie. Bac à sable uniquement. block.liquid-source.description = Source de liquide infinie . Bac à sable uniquement. block.copper-wall.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles dans les premières lors des premières vagues. -block.copper-wall-large.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles dans les premières lors des premières vagues.\nFait du 2 sur 2. -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 = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles dans les premières lors des premières vagues.\n2 x 2. +block.titanium-wall.description = Un bloc défensif standard.\nProcure une protection modérée contre les ennemis. +block.titanium-wall-large.description = Un bloc défensif standard.\nProcure une protection modérée contre les ennemis.\nCouvre plusieurs cases. block.thorium-wall.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les ennemis. -block.thorium-wall-large.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les ennemis.\nFait du 2 sur 2. +block.thorium-wall-large.description = Un bloc défensif puissant.\nProcure une très bonne protection contre les ennemis.\nCouvre plusieurs cases. block.phase-wall.description = Moins puissant qu'un mur en Thorium mais déviera les balles sauf si elles sont trop puissantes. -block.phase-wall-large.description = Moins puissant qu'un mur en Thorium mais déviera les balles sauf si elles sont trop puissantes.\nFait du 2 sur 2. +block.phase-wall-large.description = Moins puissant qu'un mur en Thorium mais déviera les balles sauf si elles sont trop puissantes.\n2 x 2. block.surge-wall.description = Le plus puissant bloc défensif .\nA une faible chance de créer des éclairs vers les ennemis . -block.surge-wall-large.description = Le plus puissant bloc défensif .\nA une faible chance de créer des éclairs vers les ennemis .\nFait du 2 sur 2. +block.surge-wall-large.description = Le plus puissant bloc défensif .\nA une faible chance de créer des éclairs vers les ennemis .\n2 x 2. block.door.description = Une petite porte pouvant être ouverte et fermée en appuyant dessus.\nSi elle est ouverte les ennemis peuvent tirer et passer à travers. -block.door-large.description = Une large porte pouvant être ouverte et fermée en appuyant dessus.\nSi elle est ouverte les ennemis peuvent tirer et passer à travers.\nFait du 2 sur 2. -block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. -block.mend-projector.description = Soigne périodiquement les batiments autour de lui. -block.overdrive-projector.description = Accélère les batiments autour de lui, notamment les foreuses et les convoyeurs. -block.force-projector.description = Crée un champ de force hexagonal autour de lui qui protège les batiments et les unités à l'intérieur de prendre des dégâts à cause des balles. -block.shock-mine.description = Blesse les ennemis qui marchent dessus. Quasiment invisble pour l'ennemi. -block.conveyor.description = Convoyeur basique servant à transporter des objets. Les objets déplacés en avant sont automatiquement déposés dans les tourelles ou les batiments. Peut être tourné. +block.door-large.description = Une large porte pouvant être ouverte et fermée en appuyant dessus.\nSi elle est ouverte les ennemis peuvent tirer et passer à travers.\n2 x 2. +block.mender.description = Soigne périodiquement les bâtiments autour de lui. Permet de garder les défenses en bon état entre les vagues ennemies.\nPeut utiliser de la Silice pour booster la portée et l'efficacié. +block.mend-projector.description = Une version améliorée du Réparateur. Soigne périodiquement les bâtiments autour de lui.\nPeut utiliser du tissu phasé pour booster la portée et l'efficacié. +block.overdrive-projector.description = Accélère les bâtiments autour de lui, notamment les foreuses et les convoyeurs.\nPeut utiliser du tissu phasé pour booster la portée et l'efficacié. +block.force-projector.description = Crée un champ de force hexagonal autour de lui qui protège les bâtiments et les unités à l'intérieur des dégâts.\nSurchauffe si trop de dégâts sont reçus. Peut utiliser du liquide réfrigérant pour éviter la surchauffe. Peut utiliser du tissu phasé pour booster la taille du bouclier. +block.shock-mine.description = Blesse les ennemis qui marchent dessus. Quasiment invisible pour l'ennemi. +block.conveyor.description = Convoyeur basique servant à transporter des objets. Les objets déplacés en avant sont automatiquement déposés dans les tourelles ou les bâtiments. Peut être tourné. block.titanium-conveyor.description = Convoyeur avancé . Déplace les objets plus rapidement que les convoyeurs standards. -block.junction.description = Agit comme un pont pour deux ligne de convoyeurs se croisant. Utile lorsque deux différents convoyeurs déplacent différents matériaux à différents endroits. -block.bridge-conveyor.description = bloc de transport avancé permettant de traverser jusqu'à 3 blocs de n'importe quel terrain ou batiment. -block.phase-conveyor.description = convoyeur très avancé . Utilise de l'énergie pour téléporter des objets à un convoyeur phasé connecté jusqu'à une longue distance . -block.sorter.description = Trie les articles. Si un article rcorrespond à la sélection, il peut passer. Autrement, l'article est distribué vers la gauche ou la droite. +block.junction.description = Agit comme un pont pour deux lignes de convoyeurs se croisant. Utile lorsque deux différents convoyeurs déplacent différents matériaux à différents endroits. +block.bridge-conveyor.description = Bloc de transport avancé permettant de traverser jusqu'à 3 blocs de n'importe quel terrain ou bâtiment. +block.phase-conveyor.description = Convoyeur très avancé. Utilise de l'énergie pour téléporter des objets à un convoyeur phasé connecté jusqu'à une longue distance . +block.sorter.description = Trie les articles. Si un article correspond à la sélection, il peut passer. Autrement, l'article est distribué vers la gauche ou la droite. +block.inverted-sorter.descriptions = Trie les articles comme un trieur standard, mais ceux correspondant à la sélection sont envoyés sur les côtés. block.router.description = Accepte les objets depuis une ou plus directions et le renvoie dans n'importe quelle direction. Utile pour séparer une chaîne de convoyeurs en plusieurs.[accent]Le seul et l'Unique[] block.distributor.description = Un routeur avancé qui sépare les objets jusqu'à 7 autres directions équitablement. block.overflow-gate.description = C'est la combinaison entre un Routeur et un Diviseur qui peut seulement distribuer à gauche et à droite si le chemin de devant est bloqué. -block.mass-driver.description = Batiment de transport d'objet [accent]ultime[]. Collecte un grand nombre d'objets puis les tire à un autre transporteur de masse sur une très longue distance. +block.mass-driver.description = bâtiment de transport d'objet [accent]ultime[]. Collecte un grand nombre d'objets puis les tire à un autre transporteur de masse sur une très longue distance. block.mechanical-pump.description = Une pompe de faible prix pompant lentement, mais ne consomme pas d'énergie. -block.rotary-pump.description = Une pompe avancée qui double sa vitesse en utilisant de l'énergie. -block.thermal-pump.description = La pompe ultime. Trois fois plus rapide qu'une pompe mécanique et la seule pompe capable de récupérer de la lave. +block.rotary-pump.description = Une pompe avancée plus rapide mais utilisant de l'énergie. +block.thermal-pump.description = La pompe ultime. Beaucoup plus rapide qu'une pompe mécanique et la seule pompe capable de récupérer de la lave. block.conduit.description = Tuyau basique permettant le transport de liquide . Marche comme un convoyeur mais avec les liquides. Utile si utilisé avec des extracteurs, des pompes ou d'autres conduits. block.pulse-conduit.description = Tuyau avancé permettant le transport de liquide . Transporte les liquides plus rapidement et en stocke plus que les tuyaux standards. -block.liquid-router.description = Accepte les liquide en une direction et les rejete de tout les côtés équitablement. Peut aussi stocker une certaine quantité de liquide. Utile pour envoyer un liquide à plusieurs endroits. -block.liquid-tank.description = Stocke une grande quantité de liquides . Utile pour réguler la sortie quand la demande est inconstante ou comme sécurité pour refroidir des batiments important. +block.liquid-router.description = Accepte les liquides en une direction et les rejette de tous les côtés équitablement. Peut aussi stocker une certaine quantité de liquide. Utile pour envoyer un liquide à plusieurs endroits. +block.liquid-tank.description = Stocke une grande quantité de liquides . Utile pour réguler la sortie quand la demande est inconstante ou comme sécurité pour refroidir des bâtiments important. block.liquid-junction.description = Agit comme une intersection pour deux conduits se croisant.Utile si deux conduits amènent différents liquides à différents endroits. -block.bridge-conduit.description = Bloc de transport de liquide avancé. Permet le transport de liquides jusqu'à 3 blocs de n'importe quel terrain ou batiment . +block.bridge-conduit.description = Bloc de transport de liquide avancé. Permet le transport de liquides jusqu'à 3 blocs de n'importe quel terrain ou bâtiment . block.phase-conduit.description = Tuyau très avancé permettant le transport de liquide. Utilise de l'énergie pour téléporter les liquides à un autre tuyau phasé sur une longue distance. -block.power-node.description = Transmet l'énergie aux transmetteurs énergétiques connectés . Jusqu'à quatre sources d'énergie, consommateurs ou transmetteurs peuvent être connectés. Le transmetteur recevra de l'énergie ou le transmettra à n'importe quel batiment adjacent. -block.power-node-large.description = Possède un rayon plus grand que le transmetteur énergétique standard et jusqu'à six sources d'énergie, consommateurs ou transmetteurs peuvent être connectés. -block.surge-tower.description = An extremely long-range power node with fewer available connections. -block.battery.description = Stocke l'énergie quand elle est en abondance et le distribue si il y a trop peu d'énergie tant qu'il lui reste de l'énergie. +block.power-node.description = Transmet l'énergie aux transmetteurs énergétiques connectés. Le transmetteur recevra de l'énergie ou la transmettra à n'importe quel bâtiment adjacent. +block.power-node-large.description = Possède un rayon plus grand que le transmetteur énergétique standard, connectant d'autant plus de consommateurs ou transmetteurs d'énergie. +block.surge-tower.description = Un transmetteur énergétique de très grande portée mais avec moins de connections disponibles. +block.battery.description = Stocke l'énergie quand elle est en abondance et la redistribue si il y a un deficit d'énergie dans la limite des réserves disponibles. block.battery-large.description = Stocke bien plus d'énergie qu'une batterie normale. -block.combustion-generator.description = Génère de l'énergie en brûlant du pétrole ou des matériaux inflammables. -block.thermal-generator.description = Génère une grande quantité d'énergie à partir de lave . +block.combustion-generator.description = Génère de l'énergie en brûlant du charbon ou des matériaux inflammables. +block.thermal-generator.description = Génère une grande quantité d'énergie à partir de zone de chaleur . block.turbine-generator.description = Plus efficace qu'un générateur à combustion, mais requiert de l'eau . -block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite. +block.differential-generator.description = Génère de grande quantité d'energie. Utilise différence de temperature entre le liquide cryogénique et la pyratite brûlante. block.rtg-generator.description = Un générateur thermo-électrique à radioisotope qui ne demande pas de refroidissement mais produit moins d'énergie qu'un réacteur à Thorium. -block.solar-panel.description = Génère une faible quantité d'énergie . -block.solar-panel-large.description = Génère bien plus d'énergie qu'un panneau solaire standard, Mais est aussi bien plus cher à construire. +block.solar-panel.description = Génère une faible quantité d'énergie grace au rayons du soleil. +block.solar-panel-large.description = Génère bien plus d'énergie qu'un panneau solaire standard, mais est aussi bien plus cher à construire. block.thorium-reactor.description = Génère énormément d'énergie à l'aide de la radioactivité du thorium. Requiert néanmoins un refroidissement constant. Explosera violemment en cas de surchauffe. -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.impact-reactor.description = Un générateur avancé, capable de produire une quantité d'énergie gigantesque lorsqu'il atteint son efficacité maximale. Nécessite une quantité significative d'énergie pour lancer le générateur. block.mechanical-drill.description = Une foreuse de faible coût. Si elle est placée sur à un endroit approprié, produit des matériaux lentement à l'infini. -block.pneumatic-drill.description = Une foreuse amélioré plus rapide et capable de forer des matériaux plus dur grâce à l'usage de vérins à air comprimé. -block.laser-drill.description = Permet de forer bien plus vite grâce à la technologie laser, cela demande néanmoins de l'énergie . Additionnellement, le thorium, un matériau radioactif, peut-être récupéré avec cette foreuse. -block.blast-drill.description = La Foreuse ultime . Demande une grande quantité d'énergie . +block.pneumatic-drill.description = Une foreuse améliorée plus rapide et capable de forer des matériaux plus dur comme le titane grâce à l'usage de vérins à air comprimé. +block.laser-drill.description = Permet de forer bien plus vite grâce à la technologie laser, mais requiert de l'énergie . Permet de miner le Thorium, un matériau radioactif. +block.blast-drill.description = La Foreuse ultime . Demande une grande quantité d'énergie. block.water-extractor.description = Extrait l'eau des nappes phréatiques. Utile quand il n'y a pas d'eau à proximité. block.cultivator.description = Cultive le sol avec de l'eau afin d'obtenir de la biomasse. block.oil-extractor.description = Utilise une grande quantité d'énergie afin d'extraire du pétrole du sable . Utile quand il n'y a pas de lacs de pétrole à proximité. -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-shard.description = La première version du noyau. Une fois détruite tout contact avec la région est perdu. Ne laissez pas cela se produire. block.core-foundation.description = La deuxième version du noyau. Meilleur blindage. Stocke plus de ressources. -block.core-nucleus.description = La troisième et dernière iteraction de la capsule centrale. Extrêmement bien blindée. Stocke des quantités massive de ressources. +block.core-nucleus.description = La troisième et dernière iteration du noyau. Extrêmement bien blindée. Stocke des quantités importante de ressources. block.vault.description = Stocke un grand nombre d'objets. Utile pour réguler le flux d'objet quand la demande de matériaux est inconstante.un [lightgray] déchargeur[] peut être utilisé pour récupérer des objets depuis le coffre-fort. -block.container.description = Stocke un petit nombre d'objet . Utile pour réguler le flux d'objet quand la demande de matériaux est inconstante.un [lightgray] déchargeur[] peut être utilisé pour récupérer des objets depuis le conteneur. -block.unloader.description = Décharge des objets depuis des conteneurs, coffres-forts ou de la base sur un convoyeur ou directement dans un bloc adjacent . Le type d'objet peut être changé en appuyant sur le déchargeur. -block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished. -block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently. +block.container.description = Stocke un petit nombre d'objet. Utile pour réguler le flux d'objet quand la demande de matériaux est inconstante.un [lightgray] déchargeur[] peut être utilisé pour récupérer des objets depuis le conteneur. +block.unloader.description = Décharge des objets depuis des conteneurs, coffres-forts ou de la base sur un convoyeur ou directement dans un bloc adjacent. Le type d'objet peut être changé en appuyant sur le déchargeur. +block.launch-pad.description = Permet de transférer des ressources sans attendre le lancement du noyau. +block.launch-pad-large.description = Une version améliorée de la plateforme de lancement. Stocke plus de ressources et les envoies plus fréquemment. block.duo.description = Une petite tourelle avec un coût faible. -block.scatter.description = Une tourrelle anti-aérien de taille moyenne. Sprays clumps of lead or scrap flak at enemy units. +block.scatter.description = Une tourelle anti-aérien de taille moyenne. Asperge les ennemis de débris de plomb ou de ferraille. block.scorch.description = Brûle les ennemis au sol proche de lui. Très efficace a courte portée. block.hail.description = Une petite tourelle d'artillerie. -block.wave.description = Une tourelle de taille moyenne tirant rapidement des bulles de liquide. +block.wave.description = Une tourelle de taille moyenne tirant rapidement des bulles de liquide. Peut éteindre les incendies à portée si de l'eau est disponible. block.lancer.description = Une tourelle de taille moyenne tirant des rayons chargés en électricité. -block.arc.description = Une petite tourelle tirant des arcs électrques vers les ennemis. -block.swarmer.description = Une tourelle de taille moyenne qui tire des missiles qui se dispersent. +block.arc.description = Une petite tourelle tirant des arcs électriques vers les ennemis. +block.swarmer.description = Une tourelle de taille moyenne attaquant les ennemis terrestres et aériens à l'aide de missiles autoguidés. block.salvo.description = Une tourelle de taille moyenne qui tire par salves. block.fuse.description = Une grande tourelle qui tire de puissants rayons lasers avec une faible portée. block.ripple.description = Une grande tourelle d'artillerie qui tire plusieurs tirs simultanément. -block.cyclone.description = Une grande tourelle tirant rapidement ... très rapidement. -block.spectre.description = Une grande tourelle qui tire deux puissantes balles simultanément. +block.cyclone.description = Une grande tourelle tirant rapidement... très rapidement. +block.spectre.description = Une grande tourelle qui tire deux puissantes balles perce-blindage simultanément. block.meltdown.description = Une grande tourelle tirant de puissants rayons lasers avec une grande portée. -block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. -block.draug-factory.description = Produit des drones Draug mineurs. -block.spirit-factory.description = Produit des petits drones qui réparent les batiments et minent des matériaux. -block.phantom-factory.description = Produit des drones avancés qui sont bien plus efficaces que les drones spirituels. +block.command-center.description = Permet de donner des ordres aux unités alliées sur la carte.\nIndique aux unités de se rallier, d'attaquer un noyau ennemi ou de battre en retraite vers le noyau/l'usine. En l'absence de noyau adverse, les unités patrouilleront par défaut autour de la commande d'attaque. +block.draug-factory.description = Produit des drones mineurs. +block.spirit-factory.description = Produit des drones qui réparent les batiments endommagés. +block.phantom-factory.description = Produit des drones de construction avancés. block.wraith-factory.description = Produit des intercepteurs rapides qui harcèlent l'ennemi. block.ghoul-factory.description = Produit des bombardiers lourds. -block.revenant-factory.description = Produit des unités terrestres lourdes avec des lasers. +block.revenant-factory.description = Produit des unités aériennes lourdes tirant des missiles. block.dagger-factory.description = Produit des unités terrestres basiques. -block.crawler-factory.description = Produit des unités d'essaims autodestructeurs rapides. +block.crawler-factory.description = Produit des unités d'essaims autodestructeurs rapides. block.titan-factory.description = Produit des unités terrestres avancées et cuirassées. -block.fortress-factory.description = Produit des unités terrestres d'artillerie lourde . -block.repair-point.description = Soigne en continu l'unité blessée la plus proche tant qu'elle est à sa portée. -block.dart-mech-pad.description = Fournit la transformation en un mécha d'attaque de base .\nUse by tapping while standing on it. -block.delta-mech-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un mécha rapide mais peu résistant fait pour les stratégies de harcèlement.\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. -block.tau-mech-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un mécha de support qui peut soigner les batiments et unités alliées.\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. -block.omega-mech-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un mécha cuirassé et large, fait pour les assauts frontaux .\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. -block.javelin-ship-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un intercepteur rapide et puissant avec des armes électriques.\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. -block.trident-ship-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un bombardier lourd raisonnablement cuirassé .\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. -block.glaive-ship-pad.description = Quitte ton mécha ou ton vaisseau actuel pour un large vaisseau cuirassé .\nUtilisez le reconstructeur en double cliquant dessus lorsque vous êtes dessus. +block.fortress-factory.description = Produit des unités terrestres d'artillerie lourde. +block.repair-point.description = Soigne en permanence l'unité endommagée la plus proche à proximité. +block.dart-mech-pad.description = Fournit la transformation en un mécha d'attaque basique.\nUtilisez le en cliquant dessus lorsque vous vous trouvez dessus. +block.delta-mech-pad.description = Fournit la transformation en un mécha d'attaque peu cuirassé.\nUtilisez le en cliquant dessus lorsque vous vous trouvez dessus. +block.tau-mech-pad.description = Fournit la transformation en un mécha de soutient avancé.\nUtilisez le en cliquant dessus lorsque vous vous trouvez dessus. +block.omega-mech-pad.description = Fournit la transformation en un mécha à missiles et à blindage lourd.\nUtilisez le en cliquant dessus lorsque vous vous trouvez dessus. +block.javelin-ship-pad.description = Fournit la transformation en un intercepteur rapide légèrement blindé.\nUtilisez le en cliquant dessus lorsque vous vous trouvez dessus. +block.trident-ship-pad.description = Fournit la transformation en un bombardier de soutien lourd.\nUtilisez le en cliquant dessus lorsque vous vous trouvez dessus. +block.glaive-ship-pad.description = Fournit la transformation en un large vaisseau de combat bien blindé.\nUtilisez le en cliquant dessus lorsque vous vous trouvez dessus. diff --git a/core/assets/bundles/bundle_fr_BE.properties b/core/assets/bundles/bundle_fr_BE.properties index 63c8e1e3da..fce9241eda 100644 --- a/core/assets/bundles/bundle_fr_BE.properties +++ b/core/assets/bundles/bundle_fr_BE.properties @@ -16,11 +16,28 @@ screenshot.invalid = Carte trop grande, potentiellement pas assez de mémoire po gameover = Le base a été détruite. gameover.pvp = L'équipe[accent] {0}[] a gagnée ! highscore = [accent]Nouveau meilleur score ! +copied = Copied. load.sound = Son load.map = Maps load.image = Images load.content = Contenu load.system = Système +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Vagues vaincues:[accent] {0} stat.enemiesDestroyed = Ennemies détruits:[accent] {0} stat.built = Bâtiments construits:[accent] {0} @@ -29,6 +46,7 @@ stat.deconstructed = Bâtiments déconstruits:[accent] {0} stat.delivered = Ressources transférées: stat.rank = Rang Final: [accent]{0} launcheditems = [accent]Ressources transférées +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = Êtes-vous sûr de vouloir supprimer cette carte ?"[accent]{0}[]"? level.highscore = Meilleur score: [accent]{0} level.select = Sélection de niveau @@ -40,11 +58,11 @@ database = Base de données savegame = Sauvegarder la partie loadgame = Charger la partie joingame = Rejoindre la partie -addplayers = Ajouter/Enlever des joueurs customgame = Partie personnalisée newgame = Nouvelle partie none = minimap = Minimap +position = Position close = Fermer website = Website quit = Quitter @@ -60,6 +78,25 @@ uploadingcontent = Uploading Content uploadingpreviewfile = Uploading Preview File committingchanges = Comitting Changes done = Done +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = À propos name = Nom: noname = Choisissez d'abord [accent]un pseudo[]. @@ -140,7 +177,6 @@ server.port = Port: server.addressinuse = Adresse déjà utilisée ! server.invalidport = Numéro de port incorrect ! server.error = [crimson]Erreur lors de l'hébergement du serveur: [accent]{0} -save.old = Cette sauvegarde correspond à une ancienne version du jeu et ne peut donc plus être utilisée.\n\n[LIGHT_GRAY]La rétrocompatibilité des sauvegardes va être implémentée dans la version finale de la 4.0. save.new = Nouvelle sauvegarde save.overwrite = Êtes-vous sûr de vouloir\nécraser cette sauvegarde ? overwrite = Écraser @@ -174,6 +210,7 @@ warning = Avertissement. confirm = Confirmer delete = Supprimer view.workshop = View In Workshop +workshop.listing = Edit Workshop Listing ok = OK open = Ouvrir customize = Personnaliser @@ -191,7 +228,12 @@ classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic quit.confirm = Êtes-vous sûr de vouloir quitter? 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]Chargement... +reloading = [accent]Reloading Mods... saving = [accent]Sauvegarde... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Vague {0} wave.waiting = [LIGHT_GRAY]Prochaine vague dans {0} wave.waveInProgress = [LIGHT_GRAY]Vague en cours @@ -210,11 +252,17 @@ map.nospawn = Cette carte ne possède pas de base pour que le joueur puisse appa map.nospawn.pvp = Cette carte ne contient aucune base ennemi dans lequel le joueur apparaît!\nAjoutez des bases [SCARLET]rouge[] à cette carte dans l'éditeur. map.nospawn.attack = Cette carte ne contient aucune base ennemi à attaquer! Ajoutez des bases [SCARLET]rouge[] à cette carte dans l'éditeur. map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide. -map.publish.error = Error publishing map: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Pinceau editor.openin = Ouvrir dans l'éditeur editor.oregen = Génération des minerais @@ -344,7 +392,6 @@ campaign = Campagne load = Charger save = Sauvegarder fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Veuillez redémarrez votre jeu pour le changement de langage prenne effet. settings = Paramètres @@ -352,12 +399,13 @@ tutorial = Tutoriel tutorial.retake = Re-Take Tutorial editor = Éditeur mapeditor = Éditeur de carte -donate = Faire un\ndon abandon = Abandonner abandon.text = Cette zone et toutes ses ressources seront perdues. locked = Verrouillé complete = [LIGHT_GRAY]Compléter: -zone.requirement = Vague {0} dans la zone {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Reprendre la partie en cours:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]Meilleur: {0} launch = Lancement @@ -368,11 +416,13 @@ launch.confirm = Cela lancera toutes les ressources dans votre noyau.\nVous ne p launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Découvrir configure = Configurer le transfert des ressources. +bannedblocks = Banned Blocks +addall = Add All configure.locked = [LIGHT_GRAY]Atteigner la vague {0}\npour configurer le transfert des ressources. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [LIGHT_GRAY]{0} Débloquée. zone.requirement.complete = Vague {0} atteinte:\n{1} Exigences de la zone complétées -zone.config.complete = Vague {0} atteinte:\nConfiguration du transfert débloquée. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Ressources détectées: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -428,15 +478,14 @@ settings.graphics = Graphiques settings.cleardata = Effacer les données du jeu... settings.clear.confirm = Êtes-vous sûr d'effacer ces données ?\n[scarlet]Ceci est irréversible settings.clearall.confirm = [scarlet]ATTENTION![]\nCet action effacera toutes les données , incluant les sauvegarges, les cartes, les déblocages et la configuration des touches.\nUne fois que vous aurez pressé 'Ok' le jeu effacera toutes les données et se fermera. -settings.clearunlocks = Éffacer les déblocages -settings.clearall = Tout effacer paused = En pause +clear = Clear +banned = [scarlet]Banned yes = Oui no = Non info.title = Info error.title = [crimson]Une erreur s'est produite error.crashtitle = Une erreur s'est produite -attackpvponly = [scarlet]Uniquement disponible dans les modes Attaque/PvP blocks.input = Ressource(s) requise(s) blocks.output = Ressource(s) produite(s) blocks.booster = Booster @@ -518,6 +567,7 @@ category.optional = Améliorations facultatives setting.landscape.name = Verrouiller la rotation en mode paysage setting.shadows.name = Ombres setting.linear.name = Filtrage linéaire +setting.hints.name = Hints setting.animatedwater.name = Eau animée setting.animatedshields.name = Boucliers Animés setting.antialias.name = Antialias[LIGHT_GRAY] (demande le redémarrage de l'appareil)[] @@ -547,6 +597,7 @@ setting.fps.name = Afficher FPS setting.vsync.name = VSync setting.pixelate.name = Pixélisé [LIGHT_GRAY](peut diminuer les performances)[] setting.minimap.name = Montrer la minimap +setting.position.name = Show Player Position setting.musicvol.name = Volume de la musique setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Couper la musique @@ -558,6 +609,8 @@ setting.publichost.name = Public Game Visibility setting.chatopacity.name = Opacité du tchat setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Afficher le tchat en jeu +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. uiscale.reset = L'échelle de l'interface a été modifiée.\nAppuyez sur "OK" pour confirmer cette échelle.\n[scarlet]Revenir et sortir en[accent] {0}[] réglages... uiscale.cancel = Annuler et quitter setting.bloom.name = Flou lumineux @@ -569,13 +622,16 @@ category.multiplayer.name = Multijoueur command.attack = Attaquer command.rally = Rally command.retreat = Retraite -keybind.gridMode.name = Sélectionnez le bloc -keybind.gridModeShift.name = Sélection de la catégorie +keybind.clear_building.name = Clear Building keybind.press = Appuyez sur une touche ... keybind.press.axis = Appuyez sur un axe ou une touche... keybind.screenshot.name = Map Screenshot keybind.move_x.name = Mouvement X keybind.move_y.name = Mouvement Y +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Basculer en plein écran keybind.select.name = Sélectionner/Tirer keybind.diagonal_placement.name = Placement en diagonal @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Tenir le zoom keybind.zoom.name = Zoom keybind.menu.name = Menu keybind.pause.name = Pause +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Mini-Map keybind.dash.name = Sprint keybind.chat.name = Tchat keybind.player_list.name = Liste des joueurs keybind.console.name = Console keybind.rotate.name = Tourner +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Montrer/Cacher les menus keybind.chat_history_prev.name = Reculer dans l'historique du tchat keybind.chat_history_next.name = Suite de l'historique du tchat @@ -604,6 +662,7 @@ mode.survival.name = Survival mode.survival.description = Le mode normal. Ressources limitées et vagues automatiques. mode.sandbox.name = Bac à sable mode.sandbox.description = Ressources infinies et pas de compte à rebours pour les vagues. +mode.editor.name = Editor mode.pvp.name = PvP mode.pvp.description = Lutter contre d'autres joueurs pour gagner ! mode.attack.name = Attaque @@ -790,6 +849,7 @@ block.junction.name = Junction block.router.name = Routeur block.distributor.name = [accent]Distributeur[] block.sorter.name = Trieur +block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.overflow-gate.name = Barrière de Débordement block.silicon-smelter.name = Fonderie de silicone @@ -1010,6 +1070,7 @@ block.junction.description = Agit comme un pont pour deux bandes transporteuses block.bridge-conveyor.description = Bloc de transport d'articles avancé. Permet de transporter des objets sur plus de 3 tuiles de n'importe quel terrain ou bâtiment. block.phase-conveyor.description = Bloc de transport d'articles avancé.\nUtilise le pouvoir de téléporter des articles vers un convoyeur de phase connecté sur plusieurs carreaux. block.sorter.description = Trie les articles. Si un article correspond à la sélection, il peut passer. Autrement, l'article est distribué vers la gauche ou la droite. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Accepte les éléments d'une direction et les envoie dans 3 autres directions de manière égale. Utile pour séparer les matériaux d'une source en plusieurs cibles. block.distributor.description = Un routeur avancé qui divise les articles en 7 autres directions de manière égale. [scarlet]Seule et unique ![] block.overflow-gate.description = C'est la combinaison entre un routeur et un diviseur qui peut seulement distribuer à gauche et à droite si le chemin de devant est bloqué. diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index 6fffc0d1b4..a79ccbb1e7 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -4,7 +4,7 @@ contributors = Translator dan Kontributor discord = Bergabung di Discord Mindustry! link.discord.description = Discord Mindustry resmi link.github.description = Sumber kode permainan -link.changelog.description = List of update changes +link.changelog.description = Daftar rekam pembaruan link.dev-builds.description = Bentuk pengembangan (kurang stabil) link.trello.description = Papan Trello resmi untuk fitur terencana link.itch.io.description = Halaman itch.io dengan PC download dan versi web @@ -12,15 +12,32 @@ link.google-play.description = Google Play Store link.wiki.description = Wiki Mindustry resmi linkfail = Gagal membuka tautan!\nURL disalin ke papan ke papan klip. screenshot = Tangkapan layar disimpan di {0} -screenshot.invalid = Peta terlalu besar, tidak cukp memori untuk menangkap layar. +screenshot.invalid = Peta terlalu besar, tidak cukup memori untuk menangkap layar. gameover = Permainan Habis gameover.pvp = Tim[accent] {0}[] menang! highscore = [accent]Rekor Baru! -load.sound = Sounds -load.map = Maps -load.image = Images -load.content = Content -load.system = System +copied = Copied. +load.sound = Suara +load.map = Peta +load.image = Gambar +load.content = Konten +load.system = Sistem +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Gelombang Terkalahkan:[accent] {0} stat.enemiesDestroyed = Musuh Terhancurkan:[accent] {0} stat.built = Jumlah Blok yang Dibangun:[accent] {0} @@ -29,6 +46,7 @@ stat.deconstructed = Jumlah Blok Dihancurkan Pemain:[accent] {0} stat.delivered = Sumber Daya yang Diluncurkan: stat.rank = Nilai Akhir: [accent]{0} launcheditems = [accent]Sumber Daya +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = Apakah Anda yakin ingin menghapus peta "[accent]{0}[]"? level.highscore = Nilai Tertinggi: [accent]{0} level.select = Pilih Level @@ -40,33 +58,52 @@ database = Basis Data Inti savegame = Simpan Permainan loadgame = Muat Permainan joingame = Bermain Bersama -addplayers = Tambah/Menghapus Pemain customgame = Permainan Modifikasi newgame = Permainan Baru none = minimap = Peta Kecil +position = Position close = Tutup website = Website quit = Keluar -save.quit = Save & Quit +save.quit = Simpan & Keluar maps = Maps -maps.browse = Browse Maps +maps.browse = Cari Peta continue = Lanjutkan -maps.none = [LIGHT_GRAY]Tidak ketemu peta! -invalid = Invalid -preparingconfig = Preparing Config -preparingcontent = Preparing Content -uploadingcontent = Uploading Content -uploadingpreviewfile = Uploading Preview File -committingchanges = Comitting Changes -done = Done +maps.none = [LIGHT_GRAY]Peta tidak ditemukan! +invalid = Tidak valid +preparingconfig = Menyiapkan Config +preparingcontent = Menyiapkan Content +uploadingcontent = Mengupload Content +uploadingpreviewfile = Mengupload File Tinjauan +committingchanges = Membuat Perubahan +done = Selesai +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Tentang name = Nama: noname = Pilih[accent] nama pemain[] dahulu. filename = Nama File: unlocked = Konten baru terbuka! completed = [accent]Terselesaikan -techtree = Tech Tree +techtree = Cabang Teknologi research.list = [LIGHT_GRAY]Penelitian: research = Penelitian researched = [LIGHT_GRAY]{0} telah diteliti. @@ -74,21 +111,21 @@ players = {0} pemain aktif players.single = {0} pemain aktif server.closing = [accent]Menutup server... server.kicked.kick = Anda telah dikeluarkan dari server! -server.kicked.whitelist = You are not whitelisted here. +server.kicked.whitelist = Anda tidak ada di dalam whitelist. server.kicked.serverClose = Server ditutup. -server.kicked.vote = You have been vote-kicked. Goodbye. -server.kicked.clientOutdated = Client kadaluarsa! perbarui permainan Anda! +server.kicked.vote = Anda telah divoting kick. Sampai jumpa! +server.kicked.clientOutdated = Client kadaluarsa! Perbarui permainan Anda! server.kicked.serverOutdated = Server kadaluarsa! Tanya host untuk diperbarui! server.kicked.banned = Anda telah dilarang untuk memasuki server ini. -server.kicked.typeMismatch = This server is not compatible with your build type. -server.kicked.playerLimit = This server is full. Wait for an empty slot. +server.kicked.typeMismatch = Server ini tidak cocok dengan versi build Anda. +server.kicked.playerLimit = Server ini penuh. Tunggu untuk slot kosong. server.kicked.recentKick = Anda baru saja dikeluarkan dari server ini.\nTunggu sebelum masuk lagi. server.kicked.nameInUse = Sudah ada pemain dengan nama itu \ndi server ini. server.kicked.nameEmpty = Nama yang dipilih tidak valid. server.kicked.idInUse = Anda telah berada di server ini! Memasuki dengan dua akun tidak diizinkan. server.kicked.customClient = Server ini tidak mendukung versi modifikasi. Download versi resmi. server.kicked.gameover = Game over! -server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[] +server.versions = Versi Anda:[accent] {0}[]\nVersi server:[accent] {1}[] host.info = Tombol [accent]host[] akan membuat server sementara di port [scarlet]6567[]. \nSemua orang yang memiliki [LIGHT_GRAY]Wi-Fi atau jaringan lokal[] akan bisa melihat server anda di daftar server mereka.\n\nJika Anda ingin pemain dari mana saja memasuki servermu dengan IP, [accent]port forwarding[] dibutuhkan.\n\n[LIGHT_GRAY]Diingat: Jika seseorang mengalami masalah memasuki permainan LAN mu, pastikan Anda telah mengizinkan Mindustry akses ke jaringan lokalmu di pengaturan firewall. join.info = Disini, Anda bisa memasuki [accent]server IP[], atau menemukan [accent]server lokal[] untuk bermain bersama.\nLAN dan WAN mendukung permainan bersama.\n\n[LIGHT_GRAY]Diingat: Tidak ada daftar server global; jika anda ingin bergabung dengan seseorang memakai IP, Anda perlu menanyakan host tentang IP mereka. hostserver = Host Permainan @@ -98,7 +135,7 @@ host = Host hosting = [accent]Membuka server... hosts.refresh = Muat Ulang hosts.discovering = Mencari permainan LAN -hosts.discovering.any = Discovering games +hosts.discovering.any = Mencari permainan server.refreshing = Memuat ulang server hosts.none = [lightgray]Tidak ditemukan game lokal! host.invalid = [scarlet]Tidak bisa menyambung dengan host. @@ -108,7 +145,7 @@ trace.ip = IP: [accent]{0} trace.id = ID Unik: [accent]{0} trace.mobile = Client Mobile: [accent]{0} trace.modclient = Client Modifikasi: [accent]{0} -invalidid = Client ID tidak valid! laporkan masalah. +invalidid = Client ID tidak valid! Laporkan masalah. server.bans = Pemain Dilarang Masuk server.bans.none = Tidak ada pemain yang dilarang masuk! server.admins = Admin @@ -122,25 +159,24 @@ server.version = [lightgray]Versi: {0} {1} server.custombuild = [yellow]Bentuk Modifikasi confirmban = Anda yakin ingin melarang pemain ini untuk masuk lagi? confirmkick = Anda yakin ingin mengeluarkan pemain ini? -confirmvotekick = Are you sure you want to vote-kick this player? +confirmvotekick = Anda yakin ingin vote-kick pemain ini? confirmunban = Anda yakin ingin mengizinkan pemain ini untuk masuk lagi? confirmadmin = Anda yakin ingin membuat pemain ini sebagai admin? confirmunadmin = Anda yakin ingin menghapus status admin dari pemain ini? joingame.title = Bermain Bersama joingame.ip = Alamat: disconnect = Terputus. -disconnect.error = Connection error. -disconnect.closed = Connection closed. +disconnect.error = Koneksi bermasalah. +disconnect.closed = Koneksi ditutup. disconnect.timeout = Timed out. disconnect.data = Gagal memuat data server! -cantconnect = Unable to join game ([accent]{0}[]). +cantconnect = Gagal menyambung! ([accent]{0}[]). connecting = [accent]Memasuki... connecting.data = [accent]Memuat data server... server.port = Port: server.addressinuse = Alamat sudah ada! server.invalidport = Nomor port tidak valid! server.error = [crimson]Error menghosting server: [accent]{0} -save.old = Simpanan ini dari versi yang lama, dan tidak bisa dipakai lagi.\n\n[LIGHT_GRAY]Fitur penyimpanan terbalik akan di implementasikan di versi 4.0 penuh. save.new = Simpanan Baru save.overwrite = Anda yakin ingin menindih \ntempat simpanan ini? overwrite = Tindih @@ -159,7 +195,7 @@ save.rename = Ganti nama save.rename.text = Nama baru: selectslot = Pilih simpanan. slot = [accent]Tempat {0} -editmessage = Edit Message +editmessage = Atur Pesan save.corrupted = [accent]File simpanan rusak atau tidak valid!\nJika Anda baru saja memperbarui permainannya, ini karena perubahan di format penyimpanan dan [scarlet]bukan[] sebuah bug. empty = on = Aktif @@ -173,7 +209,8 @@ save.playtime = Waktu Bermain: {0} warning = Peringatan. confirm = Konfirmasi delete = Hapus -view.workshop = View In Workshop +view.workshop = Lihat di Workshop +workshop.listing = Edit Workshop Listing ok = OK open = Buka customize = Modifikasi @@ -181,17 +218,22 @@ cancel = Batal openlink = Buka Tautan copylink = Salin Tautan back = Kembali -data.export = Export Data -data.import = Import Data +data.export = Ekspor Data +data.import = Impor Data data.exported = Data exported. -data.invalid = This isn't valid game data. -data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. -classic.export = Export Classic Data -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? +data.invalid = Data game ini tidak valid. +data.import.confirm = Mengimpor data eksternal akan menghapus [scarlet] semua[] data yang tersimpan.\n[accent]Tidak dapat diundur lagi![]\n\nSetelah data diimpor, game akan segera ditutup. +classic.export = Ekspor Data Klasik +classic.export.text = [accent]Mindustry[] telah diperbarui besar-besaran.\nData simpanan atau peta Classic (v3.5 build 40) telah dideteksi. Anda yakin ingin mengekspor data ini ke folder home HP Anda untuk digunakan di Mindustry Classic? quit.confirm = Apakah Anda yakin ingin keluar? 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]Memuat... +reloading = [accent]Reloading Mods... saving = [accent]Menyimpan... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Gelombang {0} wave.waiting = [LIGHT_GRAY]Gelombang di {0} wave.waveInProgress = [LIGHT_GRAY]Gelombang sedang berlangsung @@ -210,11 +252,17 @@ map.nospawn = Peta ini tidak memiliki inti agar pemain bisa muncul! Tambahkan in map.nospawn.pvp = Peta ini tidak memiliki inti agar pemain lawan bisa muncul! Tambahkan inti[SCARLET] selain biru[] kedalam peta di penyunting. map.nospawn.attack = Peta ini tidak memiliki inti musuh agar pemain bisa menyerang! Tambahkan inti[SCARLET] merah[] kedalam peta di penyunting. map.invalid = Error memuat peta: rusak atau file peta tidak valid. -map.publish.error = Error publishing map: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Kuas editor.openin = Buka di Penyunting editor.oregen = Generasi Sumber Daya @@ -344,7 +392,6 @@ campaign = Campaign load = Memuat save = Simpan fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Silahkan mengulang kembali permainan agar pengaturan bahasa berpengaruh. settings = Pengaturan @@ -352,12 +399,13 @@ tutorial = Tutorial tutorial.retake = Re-Take Tutorial editor = Penyunting mapeditor = Penyunting Peta -donate = Donasi abandon = Tinggalkan abandon.text = Zona ini dan semua sumber daya didalamnya akan berada di tangan musuh. locked = Dikunci complete = [LIGHT_GRAY]Mencapai: -zone.requirement = Gelombang {0} di zona {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Lanjutkan Zona:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]Gelombang Terbaik: {0} launch = < MELUNCUR > @@ -368,11 +416,13 @@ launch.confirm = Ini akan meluncurkan semua sumber daya di inti.\nAnta tidak bis launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Buka configure = Konfigurasi Muatan +bannedblocks = Banned Blocks +addall = Add All configure.locked = [LIGHT_GRAY]Buka konfigurasi muatan: Gelombang {0}. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [LIGHT_GRAY]{0} terbuka. zone.requirement.complete = Gelombang {0} terselesaikan:\nPersyaratan zona {1} tercapai. -zone.config.complete = Gelombang {0} terselesaikan:\nkonfigurasi muatan terbuka. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Sumber Daya Terdeteksi: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -428,15 +478,14 @@ settings.graphics = Grafik settings.cleardata = Menghapus Data Permainan... settings.clear.confirm = Anda yakin ingin menghapus data ini?\nWaktu tidak bisa diulang kembali! settings.clearall.confirm = [scarlet]PERINGATAN![]\nIni akan menghapus semua data permainan, termasuk simpanan, peta, bukaan dan keybind.\nSetelah Anda menekan 'ok' permainan akan menghapus semua data dan keluar otomatis. -settings.clearunlocks = Hapus Bukaan -settings.clearall = Hapus Semua paused = [accent]< Jeda > +clear = Clear +banned = [scarlet]Banned yes = Ya no = Tidak info.title = Info error.title = [crimson]Sebuah error telah terjadi error.crashtitle = Sebuah error telah terjadi -attackpvponly = [scarlet]Only available in Attack/PvP modes blocks.input = Masukan blocks.output = Pengeluaran blocks.booster = Booster @@ -518,6 +567,7 @@ category.optional = Peningkatan Opsional setting.landscape.name = Kunci Pemandangan setting.shadows.name = Bayangan setting.linear.name = Linier Filter +setting.hints.name = Hints setting.animatedwater.name = Animasi Air setting.animatedshields.name = Animasi Lindungan setting.antialias.name = Antialiasi[LIGHT_GRAY] (membutuhkan restart)[] @@ -547,6 +597,7 @@ setting.fps.name = Tunjukkan FPS setting.vsync.name = VSync setting.pixelate.name = Mode Pixel[LIGHT_GRAY] (menonaktifkan animasi) setting.minimap.name = Tunjukkan Peta kecil +setting.position.name = Show Player Position setting.musicvol.name = Volume Musik setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Diamkan Musik @@ -558,6 +609,8 @@ setting.publichost.name = Public Game Visibility setting.chatopacity.name = Jelas-Beningnya Chat setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Tunjukkan Chat dalam Permainan +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. 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 @@ -569,13 +622,16 @@ category.multiplayer.name = Bermain Bersama command.attack = Serang command.rally = Rally command.retreat = Mundur -keybind.gridMode.name = Pilih Blok -keybind.gridModeShift.name = Pilih Kategori +keybind.clear_building.name = Clear Building keybind.press = Tekan kunci... keybind.press.axis = Tekan sumbu atau kunci... keybind.screenshot.name = Tangkapan Layar Peta keybind.move_x.name = Pindah x keybind.move_y.name = Pindah y +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Toggle Fullscreen keybind.select.name = Pilih/Tembak keybind.diagonal_placement.name = Penaruhan Diagonal @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Tahan Mode Zoom keybind.zoom.name = Zoom keybind.menu.name = Menu keybind.pause.name = Jeda +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Peta Kecil keybind.dash.name = Terbang keybind.chat.name = Chat keybind.player_list.name = Daftar pemain keybind.console.name = Console keybind.rotate.name = Putar +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Muncul Tidaknya menu keybind.chat_history_prev.name = Sejarah Chat sebelum keybind.chat_history_next.name = Sejarah Chat sesudah @@ -604,6 +662,7 @@ mode.survival.name = Bertahan Hidup mode.survival.description = Mode normal. Sumber Daya terbatas dan gelombang otomatis. mode.sandbox.name = Mode Sandbox mode.sandbox.description = Sumber Daya tak terbatas dan tidak ada gelombang otomatis. +mode.editor.name = Editor mode.pvp.name = PvP mode.pvp.description = Melawan Pemain lain. Membutuhkan setidaknya 2 inti berbeda warna didalam peta untuk main. mode.attack.name = Penyerangan @@ -731,7 +790,7 @@ block.deepwater.name = Air Dalam block.water.name = Air block.tainted-water.name = Air Ternoda block.darksand-tainted-water.name = Air Ternodai Pasir Hitam -block.tar.name = Ter +block.tar.name = Tar block.stone.name = Batu block.sand.name = Pasir block.darksand.name = Pasir Hitam @@ -780,22 +839,23 @@ block.door-large.name = Pintu Besar block.duo.name = Duo block.scorch.name = Penghangus block.scatter.name = Penabur -block.hail.name = Hail +block.hail.name = Penghujan block.lancer.name = Lancer block.conveyor.name = Pengantar block.titanium-conveyor.name = Pengantar Berbahan Titanium block.armored-conveyor.name = Armored Conveyor -block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. +block.armored-conveyor.description = Memindahkan barang sama cepatnya dengan pengantar titanium, namun memiliki lebih banyak armor. Tidak dapat menerima input dari samping dari apapun kecuali dari pengantar. block.junction.name = Simpangan block.router.name = Pengarah block.distributor.name = Distributor block.sorter.name = Penyortir -block.message.name = Message -block.overflow-gate.name = Gerbang Meluap +block.inverted-sorter.name = Inverted Sorter +block.message.name = Pesan +block.overflow-gate.name = Gerbang Luap block.silicon-smelter.name = Pelebur Silikon block.phase-weaver.name = Pengrajut Phase block.pulverizer.name = Penyemprot -block.cryofluidmixer.name = Mixer Cryofluid +block.cryofluidmixer.name = Penyampur Cryofluid block.melter.name = Pencair block.incinerator.name = Penghangus block.spore-press.name = Penekan Spora @@ -828,23 +888,23 @@ block.item-source.name = Sumber Item block.item-void.name = Penghilang Item block.liquid-source.name = Sumber Zat Cair block.power-void.name = Penghilang Listrik -block.power-source.name = Listrik Tak Terbatas +block.power-source.name = Listrik Takhingga block.unloader.name = Pembongkar Muatan -block.vault.name = Vault -block.wave.name = Wave +block.vault.name = Gudang +block.wave.name = Gelobang block.swarmer.name = Pengurung block.salvo.name = Salvo block.ripple.name = Periak -block.phase-conveyor.name = Pengantar Berbahan Phase +block.phase-conveyor.name = Pengantar Phase block.bridge-conveyor.name = Jembatan Pengantar block.plastanium-compressor.name = Pembentuk Plastanium -block.pyratite-mixer.name = Mixer Pyratite -block.blast-mixer.name = Mixer Peledak +block.pyratite-mixer.name = Penyampur Pyratite +block.blast-mixer.name = Penyampur Peledak block.solar-panel.name = Panel Surya block.solar-panel-large.name = Panel Surya Besar block.oil-extractor.name = Pegekstrak Oli -block.command-center.name = Command Center -block.draug-factory.name = Draug Miner Drone Factory +block.command-center.name = Pusat Perintah +block.draug-factory.name = Pabrik Drone Penambang Draug block.spirit-factory.name = Pabrik Drone Spirit block.phantom-factory.name = Pabrik Drone Phantom block.wraith-factory.name = Pabrik Penyerang Wraith @@ -856,7 +916,7 @@ block.fortress-factory.name = Pabrik Robot Fortress block.revenant-factory.name = Pabrik Penyerang Revenant block.repair-point.name = Titik Pulih block.pulse-conduit.name = Selang Denyut -block.phase-conduit.name = Selang Berbahan Phase +block.phase-conduit.name = Selang Phase block.liquid-router.name = Penyortir Zat Cair block.liquid-tank.name = Tank Zat Cair block.liquid-junction.name = Simpangan Zat Cair @@ -957,21 +1017,21 @@ mech.glaive-ship.description = Pesawat tempur yang besar nan kuat. Memiliki senj 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 pemulaan. muncul di inti secara standar. Menambang sumber daya dan memperbaiki blok. unit.phantom.description = unit canggih. Menambang sumber daya dan memperbaiki blok. Lebih efektif dari drone spirit. -unit.dagger.description = Unit darat dasar. Berguna di kelompok. +unit.dagger.description = Unit darat dasar. Berguna dalam satu gerombolan. 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 darat berbaja yang canggih ini menyerang target darat dan udara. unit.fortress.description = Unit meriam darat kelas berat. 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.wraith.description = Unit tabrak-lari yang cepat. unit.ghoul.description = Pengebom kelas berat. -unit.revenant.description = A heavy, hovering missile array. -block.message.description = Stores a message. Used for communication between allies. -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.revenant.description = Jajaran roket kelas berat. +block.message.description = Menyimpan pesan. Digunakan untuk komunikasi antar sekutu. +block.graphite-press.description = Memadatkan bongkahan batu bara menjadi lempengan grafit murni. +block.multi-press.description = Versi pemadat grafit yang lebih baggus. Membutuhkan air dan tenaga untuk memproses batu bara lebih cepat dan efisien. block.silicon-smelter.description = Mengubah pasir dengan batu bara untuk memproduksi silikon. block.kiln.description = Membakar pasir dan timah menjadi kaca meta. Membutuhkan Listrik. block.plastanium-compressor.description = Memproduksi plastanium dari oli dan titanium. -block.phase-weaver.description = Memproduksi kain phase dari thorium dan banyak pasir. +block.phase-weaver.description = Memproduksi kain phase dari thorium dan banyak pasir. block.alloy-smelter.description = Memproduksi paduan surge dari titanium, timah, silikon dan tembaga. block.cryofluidmixer.description = Mencampur air dan titanium menjadi cryofluid yang lebih efisien untuk pendingin. block.blast-mixer.description = Menggunakan oli untuk membentuk pyratite menjadi senyawa peledak yang kurang mudah terbakar tetapi lebih eksplosif. @@ -980,7 +1040,7 @@ block.melter.description = Melelehkan kepingan menjadi terak untuk proses selanj block.separator.description = Mengekstrak logam-logam berguna dari terak. block.spore-press.description = Menekan pod spora menjadi oli. block.pulverizer.description = Menghancurkan kepingan menjadi pasir. Berguna jika tidak ada pasir disekitar. -block.coal-centrifuge.description = Solidifes oil into chunks of coal. +block.coal-centrifuge.description = Memadatkan oli menjadi bongkahan batu bara. block.incinerator.description = Menghancurkan item atau zat cair sisa. block.power-void.description = Menghilangkan semua tenaga yang masuk kedalamnya. Sandbox eksklusif. block.power-source.description = Menghasilkan tenaga tak terbatas. Sandbox eksklusif. @@ -999,17 +1059,18 @@ block.surge-wall.description = Blok pelindung terkuat.\nMempunyai kemungkinan un block.surge-wall-large.description = Blok pelindung terkuat.\nMempunyai kemungkinan untuk menyetrum penyerang. \nSebesar 4 blok. block.door.description = Pintu kecil yang bisa dibuka-tutup dengan menekannya.\nJika dibuka, musuh bisa masuk dan menembak. block.door-large.description = Pintu kecil yang bisa dibuka-tutup dengan menekannya.\nJika dibuka, musuh bisa masuk dan menembak.\nSebesar 4 blok. -block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. -block.mend-projector.description = menyembuhkan blok di sekelilingnya secara berkala. +block.mender.description = Menyembuhkan blok di sekelilingnya secara berkala. Menjaga keutuhan pertahanan di sela-sela gelombang.\nDapat menggunakan silikon untuk meningkatkan jangkauan dan efisiensi. +block.mend-projector.description = Versi Reparator yang lebih baik. Menyembuhkan blok di sekelilingnya secara berkala.\nDapat menggunakan silikon untuk meningkatkan jangkauan dan efisiensi. block.overdrive-projector.description = Menambah kecepatan bangunan sekitar, seperti bor dan pengantar. -block.force-projector.description = Membentuk medan gaya berbentuk segi enam disekitar, melindungi bangunan dan unit didalamnya dari tembakan. +block.force-projector.description = Membentuk medan gaya berbentuk heksagon disekitar, melindungi bangunan dan unit didalamnya dari tembakan. Dapat mengalami kelebihan panas jika membendung terlalu banyak kerusakan. Bisa menggunakan cairan untuk mendinginkan. Gunakan fabrik phase untuk memperbesar jangkauan. block.shock-mine.description = Mencedera musuh yang menginjak ranjau. Hampir tak kasat mata kepada musuh. -block.conveyor.description = Blok transportasi dasar. Memindahkan item ke menara ataupun pabrik. Bisa Diputar. +block.conveyor.description = Blok transportasi dasar. Memindahkan item ke menara ataupun pabrik. Bisa diputar. block.titanium-conveyor.description = Blok transportasi canggih. Memindahkan item lebih cepat daripada pengantar biasa. block.junction.description = Berguna seperti jembatan untuk dua pengantar yang bersimpangan. Berguna di situasi dimana dua pengantar berbeda membawa bahan berbeda ke lokasi yang berbeda. block.bridge-conveyor.description = Blok Transportasi Item Canggih. bisa memindahkan item hingga 3 blok panjang melewati apapun lapangan atau bangunan. block.phase-conveyor.description = Blok transportasi canggih. Menggunakan tenaga untuk teleportasi item ke sambungan pengantar phase melewati beberapa blok. block.sorter.description = Memilah Item. Jika item cocok dengan seleksi, itemnya diperbolehkan lewat. Jika Tidak, item akan dikeluarkan dari kiri dan/atau kanan. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Menerima bahan dari satu arah dan mengeluarkannya ke 3 arah yang sama. Bisa juga menyimpan sejumlah bahan. Berguna untuk memisahkan bahan dari satu sumber ke target yang banyak. block.distributor.description = Pemisah canggih yang memisah item ke 7 arah berbeda bersamaan. block.overflow-gate.description = Kombinasi antara pemisah dan penyortir yang hanya mengeluarkan item ke kiri dan/atau ke kanan jika bagian depan tertutup. diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index beecd93a3b..c36291d758 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -1,4 +1,4 @@ -credits.text = Creato da [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](Nel caso non te ne sia accorto, la traduzione del gioco non è completa.\n Chi di dovere sta lavorando più velocemente possibile per completarla! Un aiutino non sarebbe male!) +credits.text = Creato da [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] credits = Crediti contributors = Traduttori e Contributori discord = Entra nel server discord di mindustry! @@ -10,25 +10,43 @@ link.trello.description = Scheda ufficiale trello per funzionalità pianificate link.itch.io.description = pagina di itch.io con download per PC e versione web link.google-play.description = Elenco di Google Play Store link.wiki.description = wiki ufficiale di Mindustry -linkfail = Impossibile aprire il link! L'URL è stato copiato nella tua bacheca. +linkfail = Impossibile aprire il link! L'URL è stato copiato. screenshot = Screenshot salvato a {0} screenshot.invalid = Mappa troppo grossa, probabilmente non c'è abbastanza memoria libera. gameover = Il nucleo è stato distrutto. gameover.pvp = La squadra [accent] {0}[] ha vinto! highscore = [YELLOW]Nuovo record! -load.sound = Sounds -load.map = Maps -load.image = Images +copied = Copiato. +load.sound = Suoni +load.map = Mappe +load.image = Immagini load.content = Content -load.system = System +load.system = Sistema +load.mod = Mods +schematic = Schematiche +schematic.add = Salva Schema... +schematics = Schemi +schematic.import = Importa schema... +schematic.exportfile = Esporta file +schematic.importfile = Importa File +schematic.browseworkshop = Naviga sul Workshop +schematic.copy = copia negli appunti +schematic.copy.import = Importa dagli appunti +schematic.shareworkshop = Condividi sul Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schema salvato. +schematic.delete.confirm = Questo schema sarà cancellato definitivamente. +schematic.rename = Rinomina schema +schematic.info = {0}x{1}, {2} blocks stat.wave = Ondate sconfitte:[accent] {0} stat.enemiesDestroyed = Nemici distrutti:[accent] {0} stat.built = Costruzioni erette:[accent] {0} stat.destroyed = Costruzioni distrutte:[accent] {0} -stat.deconstructed = Costruzioni smontate:[accent] {0} +stat.deconstructed = Costruzioni smantellate:[accent] {0} stat.delivered = Riorse lanciate: stat.rank = Livello finale: [accent]{0} launcheditems = [accent]Oggetti lanciati +launchinfo = [unlaunched][[LAUNCH] il tuo core per ottenere gli oggetti indicati in blu. map.delete = Sei sicuro di voler eliminare questa mappa"[accent]{0}[]"? level.highscore = Miglior punteggio: [accent]{0} level.select = Selezione del livello @@ -40,26 +58,46 @@ database = Database nucleo savegame = Salva loadgame = Carica joingame = Unisciti al gioco -addplayers = Aggiungi/rimuovi giocatori customgame = Gioco personalizzato newgame = Nuova partita none = minimap = Minimappa +position = Position close = Chiuso -website = Website +website = Sito web quit = Esci -save.quit = Save & Quit +save.quit = Salva ed esci maps = Mappe -maps.browse = Browse Maps +maps.browse = Consulta Mappe continue = Continua maps.none = [LIGHT_GRAY]Nessuna mappa trovata! -invalid = Invalid -preparingconfig = Preparing Config -preparingcontent = Preparing Content -uploadingcontent = Uploading Content -uploadingpreviewfile = Uploading Preview File -committingchanges = Comitting Changes -done = Done +invalid = Non valido +preparingconfig = Preparo la configurazione +preparingcontent = Preparo il contenuto +uploadingcontent = Carico il contenuto +uploadingpreviewfile = Carico file di anteprima +committingchanges = Applico le modifiche +done = Fatto +mods.alphainfo =Tieni a mente che queste mod sono in alpha, e[scarlet] possono avere molti bug[].\nRiporta tutti i problemi che trovi in Mindustry su Github o Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]Nessuna mod trovata! +mods.guide = guida per il modding! +mods.report = Riporta un bug +mod.enabled = [lightgray]Abilitato +mod.disabled = [scarlet]Disabilitato +mod.disable = Disabilita +mod.enable = Abilita +mod.requiresrestart = . +mod.reloadrequired = [scarlet]Riavvio necessario +mod.import = Importa una mod +mod.import.github = Import Github Mod +mod.remove.confirm = Questa mod verrà cancellata. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = Questo salvataggio contiene mod che hai recentemente aggiornato o non le hai piu installate. Il salvataggio può essere corrotto. sei sicuro di volerlo caricare?\n[lightgray]Mods:\n{0} +mod.preview.missing = Prima di pubblicare questa mod nel workshop, devi aggiungere un immagine di copertina.\nmetti un immagine[accent] preview.png[] nella cartella della mod e riprova . +mod.folder.missing = Solo mod in una cartella possono essere pubblicate nel workshop.\nPer pubblicare una mod, bisogna decompressare il file in una cartella e eliminare il file zip, dopo riavvia il gioco e ricarica la mod +. about.button = Info name = Nome: noname = Scegli un [accent] nome[] prima di unirti. @@ -74,31 +112,31 @@ players = {0} giocatori online players.single = {0} giocatori online server.closing = [accent]Chiusura server ... server.kicked.kick = Sei stato cacciato dal server! -server.kicked.whitelist = You are not whitelisted here. +server.kicked.whitelist = Non sei presente in questa whitelist. server.kicked.serverClose = Server chiuso. -server.kicked.vote = You have been vote-kicked. Goodbye. +server.kicked.vote = Sei stato cacciato su richiesta dei giocatori. Buona giornata. server.kicked.clientOutdated = Versione del client obsoleta! Aggiorna il tuo gioco! -server.kicked.serverOutdated = Server obsoleto! Chiedi all'host di aggiornare! -server.kicked.banned = Sei bannato da questo server. -server.kicked.typeMismatch = This server is not compatible with your build type. -server.kicked.playerLimit = This server is full. Wait for an empty slot. +server.kicked.serverOutdated = Server obsoleto! Chiedi all'host di aggiornare la versione del server! +server.kicked.banned = Sei bandito da questo server. +server.kicked.typeMismatch = Questo server non è compatibile con la tua build. +server.kicked.playerLimit = Questo server è pieno. Attendi che si liberi un posto. server.kicked.recentKick = Sei stato cacciato di recente.\nAspetta prima di riconnetterti. -server.kicked.nameInUse = C'è già qualcuno con il tuo nome\nsu questo server. +server.kicked.nameInUse = C'è già qualcuno con il tuo nome su questo server. server.kicked.nameEmpty = Il tuo nome deve contenere almeno un carattere. server.kicked.idInUse = Sei già su questo server! Non è permesso connettersi con due account. server.kicked.customClient = Questo server non supporta le build personalizzate. Scarica la versione ufficiale dal sito. server.kicked.gameover = Game over! server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[] -host.info = Il pulsante [accent]hos [] ospita un server sulle porte [scarlet]6567[] e [scarlet]656.[] Chiunque sulla stessa [LIGHT_GRAY]connessione wifi o rete locale[] dovrebbe essere in grado di vedere il proprio server nel proprio elenco server.\n\n Se vuoi che le persone siano in grado di connettersi ovunque tramite IP, è richiesto il [accent]port forwarding[]. \n\n[LIGHT_GRAY]Nota: se qualcuno sta riscontrando problemi durante la connessione al gioco LAN, assicurati di aver consentito a Mindustry di accedere alla rete locale nelle impostazioni del firewall. +host.info = Il pulsante [accent]host [] ospita un server sulla porta [scarlet]6567[].[] Chiunque sulla stessa [LIGHT_GRAY]connessione wifi o rete locale[] dovrebbe essere in grado di vedere il server nell'elenco server.\n\n Se vuoi che le persone siano in grado di connettersi ovunque tramite IP, è richiesto il [accent]port forwarding[]. \n\n[LIGHT_GRAY]Nota: se qualcuno sta riscontrando problemi durante la connessione al gioco LAN, assicurati di aver consentito a Mindustry di accedere alla rete locale nelle impostazioni del firewall. join.info = Qui è possibile inserire un [accent]IP del server[] a cui connettersi, o scoprire [accent]un server sulla rete locale[] disponibile.\n Sono supportati sia il multiplayer LAN che WAN. \n\n[LIGHT_GRAY]Nota: non esiste un elenco di server globali automatici; se si desidera connettersi a qualcuno tramite IP, è necessario chiedere all'host il proprio IP. -hostserver = Host Server -invitefriends = Invite Friends -hostserver.mobile = Host\nServer +hostserver = Ospita Server +invitefriends = Invita amici +hostserver.mobile = Ospita\nServer host = Host hosting = [accent] Apertura del server ... hosts.refresh = Aggiorna hosts.discovering = Ricerca partite LAN -hosts.discovering.any = Discovering games +hosts.discovering.any = Ricerca partite server.refreshing = Aggiornamento del server hosts.none = [lightgray]Nessuna partita LAN trovata! host.invalid = [scarlet]Impossibile connettersi all'host. @@ -122,7 +160,7 @@ server.version = [lightgray]Versione: {0} server.custombuild = [yellow] Costruzione personalizzata confirmban = Sei sicuro di voler bandire questo giocatore? confirmkick = Sei sicuro di voler espellere questo giocatore? -confirmvotekick = Are you sure you want to vote-kick this player? +confirmvotekick = Sei sicuro di voler votare per l'espulsione di questo giocatore? confirmunban = Sei sicuro di voler riammettere questo giocatore? confirmadmin = Sei sicuro di voler rendere questo giocatore un amministratore? confirmunadmin = Sei sicuro di voler rimuovere lo stato di amministratore da questo giocatore? @@ -132,20 +170,19 @@ disconnect = Disconnesso. disconnect.error = Connection error. disconnect.closed = Connection closed. disconnect.timeout = Timed out. -disconnect.data = Il mondo non si vuole caricare, mi dispiace! -cantconnect = Unable to join game ([accent]{0}[]). +disconnect.data = errore nel caricamento del mondo, mi dispiace! +cantconnect = Impossibile unirsi al server ([accent]{0}[]). connecting = [accent]Connessione in corso ... connecting.data = [accent]Caricamento dei dati del mondo ... server.port = Porta: server.addressinuse = Indirizzo già in uso! server.invalidport = Numero di porta non valido! server.error = [crimson]Errore nell'hosting del server: [accent] {0} -save.old = Questo salvataggio è per una versione precedente di mindustry e non può attualmente essere utilizzato .\n\n[LIGHT_GRAY]La cvompatibilità con i salvataggi precedenti verrà abilitata nella versione definitiva di mindustry 4.0. save.new = Nuovo Salvataggio save.overwrite = Sei sicuro di voler sovrascrivere questo salvataggio? overwrite = Sovrascrivi save.none = Nessun salvataggio trovato! -saveload = [Accent]Salvataggio ... +saveload = [accent]Salvataggio ... savefail = [crimson]Salvataggio del gioco NON riuscito! save.delete.confirm = Sei sicuro di voler eliminare questo salvataggio? save.delete = Elimina @@ -159,7 +196,7 @@ save.rename = Rinomina save.rename.text = Nuovo nome: selectslot = Seleziona un salvataggio. slot = [accent]Slot {0} -editmessage = Edit Message +editmessage = Modifica messaggio save.corrupted = [orang]Salvataggio corrotto o non valido! empty = on = On @@ -173,7 +210,8 @@ save.playtime = Tempo di gioco: {0} warning = Attenzione confirm = Conferma delete = Elimina -view.workshop = View In Workshop +view.workshop = Vedi nel Workshop +workshop.listing = Edit Workshop Listing ok = OK open = Apri customize = Personalizza @@ -183,17 +221,22 @@ copylink = Copia link back = Indietro data.export = Esporta Salvataggio data.import = Importa Salvataggio -data.exported = Data exported. -data.invalid = This isn't valid game data. -data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. +data.exported = Dati esportati. +data.invalid = Questi non sono dati di gioco validi. +data.import.confirm = Importare dati di gioco esterni eliminerà[scarlet] tutti[] i tuoi progressi attuali.\n[accent]L'operazione è irreversibile![]\n\nUna volta importati i dati, il gioco si chiuderà immediatamente. classic.export = Esporta dati classici classic.export.text = [accent]Mindustry[] ha appena rilasciato un aggiornamento importante.\nSalvataggio Classic (v3.5 build 40) o dati delle mappe è stato ritrovato. Vorresti esportare questi salvatagggi sul tuo telefono per usarli nella Mindustry Classic app? quit.confirm = Sei sicuro di voler uscire? -quit.confirm.tutorial = Sei sicuro di sapere cosa stai facendo? Il tutorial può essere ripetuto in[accent] Impostazioni->Gioco->Ripeti il tutorial.[] +quit.confirm.tutorial = Sei sicuro di sapere cosa stai facendo? Il tutorial può essere ripetuto in[accent] Gioca > Tutorial.[] loading = [accent]Caricamento in corso ... +reloading = [accent]Reloading Mods... saving = [accent]Salvando ... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Ondata {0} -wave.waiting = Ondata tra {0} +wave.waiting = [LIGHT_GRAY]Ondata tra {0} wave.waveInProgress = [LIGHT_GRAY]Ondata in corso... waiting = In attesa... waiting.players = Aspettando giocatori... @@ -210,11 +253,17 @@ map.nospawn = Questa mappa non possiede un nucleo in cui spawnare! Aggiungine un map.nospawn.pvp = Questa mappa non ha un nucleo nemico! Aggiungi un [SCARLET]nucleo rosso[] nell'editor per poter giocare. map.nospawn.attack = Questa mappa non ha un nucleo nemico! Aggiungi un [SCARLET]nucleo rosso[] nell'editor per poter giocare. map.invalid = Errore nel caricamento della mappa: file mappa corrotto o non valido. -map.publish.error = Error publishing map: {0} -map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} +map.publish.confirm = Vuoi pubblicare questa mappa?\n\n[lightgray]Assicurati di aver accettato il Workshop EULA, o le tue mappe non saranno visibili! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Pennello editor.openin = Apri nell'editor editor.oregen = Generazione dei minerali @@ -222,12 +271,12 @@ editor.oregen.info = Generazione dei minerali: editor.mapinfo = Informazioni mappa editor.author = Autore: editor.description = Descrizione: -editor.nodescription = A map must have a description of at least 4 characters before being published. +editor.nodescription = Una mappa deve avere una descrizione di almeno 4 caratteri per poter essere pubblicata. editor.waves = Ondate: editor.rules = Regole: editor.generation = Generazione: editor.ingame = Modifica in gioco -editor.publish.workshop = Publish On Workshop +editor.publish.workshop = Pubblica sul Workshop editor.newmap = Nuova mappa workshop = Workshop waves.title = Ondate @@ -246,7 +295,7 @@ waves.invalid = Onde dagli appunti non valide. waves.copied = Onde copiate. waves.none = Nessun nemico definiti.\n Nota che le disposizioni di ondate vuote verranno automaticamente rimpiazzate con la disposizione predefinita. editor.default = [LIGHT_GRAY] -details = Details... +details = Dettagli... edit = Modifica... editor.name = Nome: editor.spawn = Piazza un'unità @@ -256,7 +305,7 @@ editor.errorload = Errore nel caricamento di:\n[accent]{0} editor.errorsave = Errore nel salvataggio di:\n[accent]{0} editor.errorimage = Quella è un'immagine, non una mappa. Non cambiare estensioni sperando che funzioni.\n\n Se vuoi importare una mappa vecchia clicca su "importa una mappa vecchia" nell'editor. editor.errorlegacy = La mappa è troppo vecchia ed usa un formato che non è più supportato. -editor.errornot = This is not a map file. +editor.errornot = Questo file non è una mappa. editor.errorheader = Questo file della mappa è invalido o corrotto. editor.errorname = Questa mappa è senza nome. editor.update = Aggiorna @@ -280,16 +329,16 @@ editor.importimage.description = Importa immagine esterna terreno editor.export = Esportazione... editor.exportfile = Esporta file editor.exportfile.description = Esporta file mappa -editor.exportimage = Esporta immagine terreno +editor.exportimage = Esporta immagine editor.exportimage.description = Esporta file immagine mappa editor.loadimage = Carica\nimmagine editor.saveimage = Salva\nImmagine -editor.unsaved = [scarlet]Hai modifiche non salvate![]\nSei sicuro di voler uscire? +editor.unsaved = [scarlet]Alcune modifiche non sono state salvate![]\nSei sicuro di voler uscire? editor.resizemap = Ridimensiona la mappa editor.mapname = Nome Mappa: -editor.overwrite = [Accent]Attenzione!\nQuesto sovrascrive una mappa esistente. +editor.overwrite = [accent]Attenzione!\nQuesto sovrascrive una mappa esistente. editor.overwrite.confirm = [scarlet]Attenzione![] Una mappa con questo nome esiste già. Sei sicuro di volerla sovrascrivere? -editor.exists = A map with this name already exists. +editor.exists = Esiste già una mappa con questo nome. editor.selectmap = Seleziona una mappa da caricare: toolmode.replace = Rimpiazzare toolmode.replace.description = Disegna solo su blocchi solidi. @@ -344,7 +393,6 @@ campaign = Campagna load = Carica save = Salva fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Riavvia il gioco affinché il cambiamento della lingua abbia effetto. settings = Impostazioni @@ -352,12 +400,13 @@ tutorial = Tutorial tutorial.retake = Ripeti il tutorial editor = Editor mapeditor = Editor Mappe -donate = Dona abandon = Abbandona -abandon.text = Questa zona e tutte le sue risorse saranno perdute e passeranno al nemico. +abandon.text = Questa zona e tutte le tue risorse saranno perdute e passeranno al nemico. locked = Bloccato complete = [LIGHT_GRAY]Completato: -zone.requirement = Onda {0} in zona {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Riprendi zona:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]Migliore: {0} launch = Decollare @@ -368,11 +417,13 @@ launch.confirm = Questo trasporterà tutte le risorse nel tuo nucleo.\nNon riusc launch.skip.confirm = Se salti adesso non riuscirai a decollare fino alle ondate successive uncover = Svelare configure = Configura l'equipaggiamento +bannedblocks = Banned Blocks +addall = Add All configure.locked = [LIGHT_GRAY]Arriva all'ondata {0}\nper configurare l'equipaggiamento. -configure.invalid = Amount must be a number between 0 and {0}. +configure.invalid = Il valore dev'essere un numero compresto tra 0 e {0}. zone.unlocked = [LIGHT_GRAY]{0} sbloccata. zone.requirement.complete = Ondata {0} raggiunta:\n{1} requisiti di zona soddisfatti. -zone.config.complete = Ondata {0} raggiunta:\nEquipaggiamento personalizzato sbloccato. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Risorse trovate: zone.objective = [lightgray]Obiettivo: [accent]{0} zone.objective.survival = Sopravvivere @@ -420,7 +471,7 @@ zone.crags.description = settings.language = Lingua settings.data = Importa/Esporta salvataggio settings.reset = Resetta Alle Impostazioni Predefinite -settings.rebind = Reimposta +settings.rebind = Modifica settings.controls = Controlli settings.game = Gioco settings.sound = Suoni @@ -428,15 +479,14 @@ settings.graphics = Grafica settings.cleardata = Cancella dati di gioco... settings.clear.confirm = Sei sicuro di voler cancellare i dati?\nNon può essere annullato! settings.clearall.confirm = [scarlet]ATTENZIONE![]\nQuesto cancellerà tutti i dati, includendo salvataggi, mappe, oggetti sbloccati, impostazioni.\nDopo aver premuto su 'ok' il gioco eliminerà i dati e si chiuderà. -settings.clearunlocks = Cancella oggetti sbloccati -settings.clearall = Cancella tutto paused = In pausa +clear = Clear +banned = [scarlet]Banned yes = Si no = No info.title = [accent] Info error.title = [crimson]Si è verificato un errore error.crashtitle = Si è verificato un errore -attackpvponly = [scarlet]Solo possible nelle modalità Attacco/PvP blocks.input = Ingresso blocks.output = Uscita blocks.booster = Booster @@ -490,10 +540,10 @@ bullet.splashdamage = [stat]{0}[lightgray] danno ad area ~[stat] {1}[lightgray] bullet.incendiary = [stat]incendiario bullet.homing = [stat]autoguidato bullet.shock = [stat]stordente -bullet.frag = [stat]frammentazione +bullet.frag = [stat]a frammentazione bullet.knockback = [stat]{0}[lightgray] contraccolpo -bullet.freezing = [stat]congelamento -bullet.tarred = [stat]asfaltata +bullet.freezing = [stat]congelante +bullet.tarred = [stat]viscoso bullet.multiplier = [stat]{0}[lightgray]x moltiplicatore munizioni bullet.reload = [stat]{0}[lightgray]x ricarica unit.blocks = blocchi @@ -518,23 +568,24 @@ category.optional = Miglioramenti Opzionali setting.landscape.name = Blocca paesaggio setting.shadows.name = Ombre setting.linear.name = Filtro lineare +setting.hints.name = Hints setting.animatedwater.name = Acqua animata setting.animatedshields.name = Scudi animati setting.antialias.name = Antialias[LIGHT_GRAY] (richiede riapertura gioco)[] setting.indicators.name = Indicatori Alleati setting.autotarget.name = Mira automatica -setting.keyboard.name = Controlli Mouse+Tastiera -setting.touchscreen.name = Touchscreen Controls +setting.keyboard.name = Tastiera +setting.touchscreen.name = Controlli Touchscreen setting.fpscap.name = Limite FPS setting.fpscap.none = Niente setting.fpscap.text = {0} FPS setting.uiscale.name = Ridimensionamento dell'interfaccia utente[lightgray] (richiede riapertura gioco)[] setting.swapdiagonal.name = Posizionamento sempre diagonale -setting.difficulty.training = formazione -setting.difficulty.easy = facile -setting.difficulty.normal = medio -setting.difficulty.hard = difficile -setting.difficulty.insane = impossibile +setting.difficulty.training = Allenamento +setting.difficulty.easy = Facile +setting.difficulty.normal = Medio +setting.difficulty.hard = Difficile +setting.difficulty.insane = Impossibile setting.difficulty.name = Difficoltà: setting.screenshake.name = Movimento dello schermo setting.effects.name = Visualizza effetti @@ -547,17 +598,20 @@ setting.fps.name = Mostra FPS setting.vsync.name = VSync setting.pixelate.name = Sfocare [LIGHT_GRAY](potrebbe ridure il rendimento) setting.minimap.name = Mostra minimappa +setting.position.name = Show Player Position setting.musicvol.name = Volume Musica setting.ambientvol.name = Volume Ambiente setting.mutemusic.name = Silenzia musica setting.sfxvol.name = Volume Effetti setting.mutesound.name = Togli suoni setting.crashreport.name = Invia rapporti sugli arresti anomali anonimamente -setting.savecreate.name = Auto-Create Saves -setting.publichost.name = Public Game Visibility +setting.savecreate.name = Autosalvataggio +setting.publichost.name = Gioco visibile pubblicamente setting.chatopacity.name = Opacità chat setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Mostra Chat in-game +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. uiscale.reset = La scala dell'interfaccia utente è stata modificata.\nPremere "OK" per confermare questa scala.\n[scarlet] Ripristina ed esci dalle impostazioni [accent] {0}[] impostazioni... uiscale.cancel = Annulla ed esci setting.bloom.name = Shaders @@ -567,33 +621,38 @@ category.general.name = Generale category.view.name = Visualizzazione category.multiplayer.name = Multigiocatore command.attack = Attacca -command.rally = Rally -command.retreat = Torna indietro -keybind.gridMode.name = Seleziona blocco -keybind.gridModeShift.name = Seleziona categoria +command.rally = Guardia +command.retreat = Ritirata +keybind.clear_building.name = Clear Building keybind.press = Premi un tasto... keybind.press.axis = Premi un'asse o un tasto... keybind.screenshot.name = Screenshot della mappa -keybind.move_x.name = Sposta_x -keybind.move_y.name = Sposta_y -keybind.fullscreen.name = Toggle Fullscreen -keybind.select.name = seleziona +keybind.move_x.name = Muovi orizzontale +keybind.move_y.name = Muovi verticale +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y +keybind.fullscreen.name = Schermo Intero +keybind.select.name = Seleziona keybind.diagonal_placement.name = Posizionamento diagonale keybind.pick.name = Scegli Blocco keybind.break_block.name = Rompi blocco keybind.deselect.name = Deseleziona -keybind.shoot.name = spara -keybind.zoom_hold.name = attiva zoom -keybind.zoom.name = esegui zoom -keybind.menu.name = menu -keybind.pause.name = pausa +keybind.shoot.name = Spara +keybind.zoom_hold.name = Attiva zoom +keybind.zoom.name = Esegui zoom +keybind.menu.name = Apri Menu +keybind.pause.name = Pausa +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Minimappa keybind.dash.name = Scatto keybind.chat.name = Chat -keybind.player_list.name = lista_giocatori -keybind.console.name = console +keybind.player_list.name = Lista dei Giocatori +keybind.console.name = Console keybind.rotate.name = Ruotare -keybind.toggle_menus.name = Abilita menù +keybind.rotateplaced.name = Rotate Existing (Hold) +keybind.toggle_menus.name = Mostra/Nascondi HUD keybind.chat_history_prev.name = Scorri chat vero l'alto keybind.chat_history_next.name = Scorri chatt verso il basso keybind.chat_scroll.name = Scorri chat @@ -604,9 +663,10 @@ mode.survival.name = Sopravvivenza mode.survival.description = La modalità normale. Risorse limitate ed ondate in entrata automatiche. mode.sandbox.name = Creativa mode.sandbox.description = Risorse infinite e nessun timer per le ondate. +mode.editor.name = Editor mode.pvp.name = PvP mode.pvp.description = Lotta contro altri giocatori. -mode.attack.name = Attacco +mode.attack.name = Schermaglia mode.attack.description = Obiettivo: Distruggere la base nemica, non ci sono ondate mode.custom = Regole personalizzate rules.infiniteresources = Risorse infinite @@ -614,7 +674,7 @@ rules.wavetimer = Timer ondate rules.waves = Ondate rules.attack = Modalità attacco rules.enemyCheat = Infinite Risorse AI -rules.unitdrops = Drops Unità +rules.unitdrops = Generazione Unità rules.unitbuildspeedmultiplier = Moltiplicatore velocità costruzione unità rules.unithealthmultiplier = Moltiplicatore vita unità rules.playerhealthmultiplier = Moltiplicatore vita giocatore @@ -626,7 +686,7 @@ rules.wavespacing = Tempo fra ondate:[LIGHT_GRAY] (secondi) rules.buildcostmultiplier = Moltiplicatore costo costruzione rules.buildspeedmultiplier = Moltiplicatore velocità costruzione rules.waitForWaveToEnd = Ondate aspettano fino a quando l'ondata precedente finisce -rules.dropzoneradius = Raggio di drop:[LIGHT_GRAY] (blocchi) +rules.dropzoneradius = Raggio di generazione:[LIGHT_GRAY] (blocchi) rules.respawns = Massimo di rigenerazioni per ondata rules.limitedRespawns = Limite rigenerazioni rules.title.waves = Ondate @@ -764,8 +824,8 @@ block.dark-panel-5.name = Pannello scuro 5 block.dark-panel-6.name = Pannello scuro 6 block.dark-metal.name = Metallo Scuro block.ignarock.name = Roccia Ignea -block.hotrock.name = Roccia bollente -block.magmarock.name = Roccia magmatica +block.hotrock.name = Roccia Bollente +block.magmarock.name = Roccia Magmatica block.cliffs.name = Scogliere block.copper-wall.name = Muro di rame block.copper-wall-large.name = Muro grande di rame @@ -783,13 +843,14 @@ block.scatter.name = Cannone a dispersione block.hail.name = Bombardiere block.lancer.name = Lanciere block.conveyor.name = Nastro trasportatore -block.titanium-conveyor.name = Nastro trasportatore avanzato -block.armored-conveyor.name = Armored Conveyor -block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. +block.titanium-conveyor.name = Nastro avanzato +block.armored-conveyor.name = Nastro corazzato +block.armored-conveyor.description = Trasporta gli oggetti alla stessa velocità del nastro avanzato, ma è più resistente. Accetta input dai lati solo da altri nastri. block.junction.name = Incrocio block.router.name = Distributore block.distributor.name = Distributore Grande block.sorter.name = Filtro +block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.overflow-gate.name = Separatore per eccesso block.silicon-smelter.name = Fonderia @@ -820,8 +881,8 @@ block.delta-mech-pad.name = Piattaforma del Mech Delta block.javelin-ship-pad.name = Piattaforma della Nave Giavellotto block.trident-ship-pad.name = Piattaforma della Nave Tridente block.glaive-ship-pad.name = Piattaforma della Nave Glaive -block.omega-mech-pad.name = Piattaforma della Nave Omega -block.tau-mech-pad.name = Piattaforma della Nave Tau +block.omega-mech-pad.name = Piattaforma del Mech Omega +block.tau-mech-pad.name = Piattaforma del Mech Tau block.conduit.name = Condotta block.mechanical-pump.name = Pompa meccanica block.item-source.name = Fonte infinita (oggetti) @@ -875,10 +936,10 @@ block.surge-wall-large.name = Muro di Sovratensione Grande block.cyclone.name = Ciclone block.fuse.name = Frantume block.shock-mine.name = Mina Stordente -block.overdrive-projector.name = Generatore di Campo di Overclock +block.overdrive-projector.name = Generatore di Campo di Overdrive block.force-projector.name = Generatore di Campo di Forza block.arc.name = Arco Elettrico -block.rtg-generator.name = Generatore Termico ai Radioisotopi +block.rtg-generator.name = Generatore RTG block.spectre.name = Spettro block.meltdown.name = Fusione block.container.name = Contenitore @@ -907,25 +968,25 @@ unit.eradicator.name = Estirpatore unit.lich.name = Lich unit.reaper.name = Mietitore tutorial.next = [lightgray] -tutorial.intro = Sei entrato nel[scarlet] Tutorial di Mindustry.[]\nInizia [accent] scavando rame[]. Clicca un minerale di rame vicino al tuo nucleo per farlo.\n\n[accent]{0}/{1} rame -tutorial.drill = Minare manualmente.\n[accent]Le trivelle []possono scavare automaticamente\nPiazzane una su un minerale di rame. -tutorial.drill.mobile = L'estrazione manuale è inefficiente. \n[accent] Le trivelle [] possono estrarre automaticamente. \n Toccare la scheda della trivella in basso a destra. \n Selezionare la trivella meccanica [accent] []. \n Posizionarlo su una vena di rame toccando, quindi premere il segno di spunta [accent] [] in basso per confermare la selezione. \n Premere il tasto X [accent] [] per annullare il posizionamento. -tutorial.blockinfo = Ogni blocco ha statistiche diverse. Ogni trivella può estrarre solo determinati minerali. \n Per controllare le informazioni e le statistiche di un blocco, [accent] tocca "?" mentre lo selezioni nel menu di creazione. []\n\n[accent] Accedi ora alle statistiche della trivella meccanica. [] -tutorial.conveyor = [accent] I nastri trasportatori [] sono usati per trasportare oggetti al nocciolo. \n Crea una linea di nastri dalla trivella al nocciolo. +tutorial.intro = Sei entrato nel[scarlet] Tutorial di Mindustry.[]\nInizia[accent] scavando rame[]. Clicca un minerale di rame vicino al tuo nucleo per farlo.\n\n[accent]{0}/{1} rame +tutorial.drill = Ora crea una trivella.\n[accent]Le trivelle []scavano da sole e sono più efficienti. Piazzane una su un minerale di rame. +tutorial.drill.mobile = Ora crea una trivella. \n[accent] Le trivelle []scavano da sole e sono più efficienti. \n Toccare la scheda della trivella in basso a destra. \n Selezionare la trivella meccanica [accent] []. \n Posizionarlo su una vena di rame toccando, quindi premere il segno di spunta [accent] [] in basso per confermare la selezione. \n Premere il tasto X [accent] [] per annullare il posizionamento. +tutorial.blockinfo = Ogni blocco ha statistiche diverse. Alcuni minerali richiedono trivelle specifiche.\nPer controllare le informazioni e le statistiche di un blocco, [accent] tocca "?" mentre lo selezioni nel database. []\n\n[accent]Accedi ora alle statistiche della trivella meccanica. [] +tutorial.conveyor = [accent]I nastri trasportatori []sono usati per trasportare oggetti al nucleo. \nCrea una linea di nastri dalla trivella al nucleo. tutorial.conveyor.mobile = [accent] I nastri trasportatori [] sono usati per trasportare oggetti nel nocciolo. \nCrea una linea di nastri trasportatori dalla trivella al nocciolo. \n[accent] Posizionati in una linea tenendo premuto il dito per alcuni secondi [] e trascinando in una direzione. \n\n [accent] {0} / {1} nastri trasportatori disposti in linea \n [accent] 0/1 oggetti consegnati -tutorial.turret = Strutture difensive devono essere costruite per respingere il nemico [LIGHT_GRAY] []. \nCostruisci una torretta a due vicino alla tua base. -tutorial.drillturret = Torrette a due richiedono[accent] munizioni di rame[] per sparare.\n Duo turrets require[accent] copper ammo []to shoot.\nPosiziona una trivella vicino alla torretta per rifornirlo di rame estratto. -tutorial.pause = Durante la battaglia, puoi mettere in pausa il gioco [accent]. []\nPuoi disporre gli edifici mentre sei in pausa. \n\n[accent] Premi spazio per mettere in pausa. +tutorial.turret = Costruisci delle torrette per respingere il nemico [LIGHT_GRAY] []. \nCostruisci una torretta Duo vicino alla tua base. +tutorial.drillturret = La Torretta Duo richiede[accent] munizioni di rame[] per sparare.\nPosiziona una trivella e collega un nastro alla torretta per rifornirla di munizioni con il rame estratto. +tutorial.pause = Durante la battaglia, puoi mettere in pausa il gioco [accent]. []\nPuoi disporre gli edifici mentre sei in pausa. \n\n[accent]Premi spazio per mettere in pausa. tutorial.pause.mobile = Durante la battaglia, puoi mettere in pausa il gioco [accent]. []\nPuoi disporre gli edifici mentre sei in pausa. \n\n[accent] Premi questo pulsante in alto a sinistra per mettere in pausa. tutorial.unpause = Ora premi di nuovo spazio per annullare la pausa. tutorial.unpause.mobile = Ora premilo di nuovo per annullare la pausa. -tutorial.breaking = I blocchi spesso devono essere distrutti. \n [accent] Tieni premuto il tasto destro del mouse [] per distruggere tutti i blocchi in una selezione. []\n\n[accent] Distruggi tutti i blocchi di scarto a sinistra del tuo core usando la selezione dell'area . -tutorial.breaking.mobile = I blocchi spesso devono essere distrutti. \n [accent] Seleziona la modalità di decostruzione [], quindi tocca un blocco per iniziare a romperlo. \n Distruggi un'area tenendo premuto il dito per alcuni secondi [] e trascinando in una direzione.\n Premi il pulsante con il segno di spunta per confermare la rottura. \n\n [accent] Distruggi tutti i blocchi di scarto a sinistra del tuo nucleo usando la selezione dell'area. -tutorial.withdraw = In alcune situazioni, è necessario prendere gli oggetti direttamente dai blocchi. \n Per fare ciò, [accent] tocca un blocco [] con oggetti al suo interno, quindi [accent] tocca l'oggetto [] nell'inventario. \nPosti multipli possono essere ritirati da [accent] toccando e tenendo premuto []. \n\n[accent] Prelevare un po' di rame dal nucleo. [] -tutorial.deposit = Deposita gli oggetti in blocchi trascinandoli dalla tua nave al blocco di destinazione. \n\n[accent] Riporta il rame nel nucleo. [] -tutorial.waves = Il nemico [LIGHT_GRAY] si avvicina. \n\n Difendi il tuo nucleo per 2 ondate. Costruisci più torrette. -tutorial.waves.mobile = Il [lightgray] nemico si avvicina.\n\n Difendi il nucleo per due ondate. La tua nave sparerà automaticamente contro i nemici.\nCostruisci più torrette e trivelle. Scava più rame -tutorial.launch = Una volta raggiunta un'onda specifica, sei in grado di [accent] decollare con il nucleo [], lasciando indietro le tue difese ed [accent] ottenendo tutte le risorse nel tuo nucleo. [] \n Queste risorse possono quindi essere utilizzate per ricercare nuove tecnologie.\n\n [accent] Premi il pulsante di avvio. +tutorial.breaking = I blocchi spesso devono essere distrutti. \n [accent]Tieni premuto il tasto destro del mouse [] per distruggere tutti i blocchi in una selezione. []\n[accent]Distruggi tutti i blocchi di scarto a sinistra del tuo core usando la selezione dell'area . +tutorial.breaking.mobile = I blocchi spesso devono essere distrutti. \n [accent] Seleziona la modalità di decostruzione [], quindi tocca un blocco per iniziare a smantellarlo. \n Distruggi un'area tenendo premuto il dito per alcuni secondi [] e trascinando in una direzione.\nPremi il pulsante con il segno di spunta per confermare la rimozione. \n\n [accent] Distruggi tutti i blocchi di scarto a sinistra del tuo nucleo usando la selezione dell'area. +tutorial.withdraw = In alcune situazioni, è necessario prendere gli oggetti direttamente dai blocchi.\nPer fare ciò, [accent] tocca un blocco []con oggetti al suo interno, quindi [accent] tocca l'oggetto [] nell'inventario. \nPuoi prelevare più oggetti insieme[accent]tenendo premuto il tasto sinistro del mouse[].\n[accent]Preleva un po' di rame dal nucleo. [] +tutorial.deposit = Deposita tutti gli oggetti che trasporti trascinandoli dalla tua nave al blocco di destinazione. \n[accent]Rimetti il rame nel nucleo. [] +tutorial.waves = Il nemico [LIGHT_GRAY] si avvicina.\nDifendi il tuo nucleo per 2 ondate. Costruisci più torrette. Puoi sparare tenendo premuto il tasto sinistro del mouse. +tutorial.waves.mobile = Il [lightgray] nemico si avvicina.\n\n Difendi il nucleo per 2 ondate. La tua nave sparerà automaticamente contro i nemici.\nCostruisci più torrette. +tutorial.launch = Una volta raggiunta un'ondata specifica, sarai in grado di [accent] decollare con il nucleo [], lasciando la zona e abbandonando le tue difese e le tue strutture\nOtterrai [accent]tutte le risorse nel tuo nucleo[] e potrai quindi usarle per ricercare nuove tecnologie.\n\n [accent]Decolla e conferma per terminare il tutorial. item.copper.description = Un utile materiale, usato dappertutto item.lead.description = Un materiale di base, molto usato nei blocchi di trasporto. item.metaglass.description = Un durissimo composto di vetro. Estensivamente usato per trasporto di liquidi ed immagazzinamento. @@ -1010,6 +1071,7 @@ block.junction.description = Permette di incrociare nastri che trasportano mater block.bridge-conveyor.description = Consente il trasporto di oggetti fino a 3 tessere ad un altro nastro sopraelevato.\nPuò passare sopra ad altri blocchi od edifici. block.phase-conveyor.description = Nastro avanzato. Consuma energia per teletrasportare gli oggetti su un altro nastro di fase collegato. block.sorter.description = Divide gli oggetti. Se l'oggetto corrisponde a quello selezionato, Può passare. Altrimenti viene espulso sui lati. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Accetta gli elementi da una direzione e li emette fino a 3 altre direzioni allo stesso modo. Utile per suddividere i materiali da una fonte a più destinazioni. block.distributor.description = Un distributore avanzato che divide gli oggetti in altre 7 direzioni allo stesso modo. block.overflow-gate.description = Una combinazione di un incrocio e di un distributore , che distribuisce sui suoi lati se in nastro difronte si satura. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 804ba0e656..6239dad8b0 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -16,11 +16,28 @@ screenshot.invalid = マップが広すぎます。スクリーンショット gameover = ゲームオーバー gameover.pvp = [accent] {0}[] チームの勝利! highscore = [accent]ハイスコアを更新! +copied = Copied. load.sound = サウンド load.map = マップ load.image = 画像 load.content = コンテンツ load.system = システム +load.mod = MOD +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = 防衛したウェーブ:[accent] {0} stat.enemiesDestroyed = 敵による破壊数:[accent] {0} stat.built = 建設した建造物数:[accent] {0} @@ -29,6 +46,7 @@ stat.deconstructed = 解体した建造物数:[accent] {0} stat.delivered = 獲得した資源: stat.rank = 最終ランク: [accent]{0} launcheditems = [accent]回収したアイテム +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = マップ "[accent]{0}[]" を削除してもよろしいですか? level.highscore = ハイスコア: [accent]{0} level.select = レベル選択 @@ -40,15 +58,15 @@ database = コアデーターベース savegame = 保存 loadgame = 読み込む joingame = マルチプレイ -addplayers = プレイヤーを追加/削除 customgame = カスタムプレイ newgame = 新しく始める none = <なし> minimap = ミニマップ +position = Position close = 閉じる website = ウェブサイト quit = 終了 -save.quit = Save & Quit +save.quit = セーブして終了 maps = マップ maps.browse = マップを閲覧する continue = 続ける @@ -60,6 +78,25 @@ uploadingcontent = コンテンツをアップロードしています uploadingpreviewfile = プレビューファイルをアップロードしています committingchanges = 変更を適応中 done = 完了 +mods.alphainfo = モードは実験的です,覚えておいてください。 [scarlet] エラーが含まれている可能性があります[]。\n 発見した問題をMindustry Githubに報告してください. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]MOD見つかりませんでした! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = 可能にしません +mod.enable = 可能にする +mod.requiresrestart = このモードをインストールするため, このゲームは再起動します +mod.reloadrequired = [scarlet]リロード必須 +mod.import = モードをインポート +mod.import.github = Import Github Mod +mod.remove.confirm = このモードを削除されます +mod.author = [LIGHT_GRAY]著者:[] {0} +mod.missing = このセーブ には、アップグレードされた可能性があるMODS、またはここに存在しないMODSが必要です。 メモリのセーブを保存する! ロードしてもよろしいですか?\n[lightgray]MODS:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = 情報 name = 名前: noname = [accent]プレイヤー名[]を入力してください。 @@ -140,7 +177,6 @@ server.port = ポート: server.addressinuse = アドレスがすでに使用されています! server.invalidport = 無効なポート番号です! server.error = [crimson]サーバーのホストエラー: [accent]{0} -save.old = このセーブデータは古いバージョン向けで、今後使用されません。\n\n[lightgray]セーブデータの下位互換性の実装は正式版4.0で行われます。 save.new = 新規保存 save.overwrite = このスロットに上書きしてもよろしいですか? overwrite = 上書き @@ -173,7 +209,8 @@ save.playtime = プレイ時間: {0} warning = 警告 confirm = 確認 delete = 削除 -view.workshop = View In Workshop +view.workshop = ワークショップを見る +workshop.listing = Edit Workshop Listing ok = OK open = 開く customize = カスタマイズ @@ -191,7 +228,12 @@ classic.export.text = [accent]Mindustry[]のメジャーアップデートがあ quit.confirm = 終了してもよろしいですか? quit.confirm.tutorial = チュートリアルを終了しますか?\nチュートリアルは [accent]設定->ゲーム->チュートリアル[] から再度受けることができます。 loading = [accent]読み込み中... +reloading = [accent]Reloading Mods... saving = [accent]保存中... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]ウェーブ {0} wave.waiting = [lightgray]次のウェーブまで {0} 秒 wave.waveInProgress = [lightgray]ウェーブ進行中 @@ -210,11 +252,17 @@ map.nospawn = このマップにはプレイヤーが出現するためのコア map.nospawn.pvp = このマップには敵のプレイヤーが出現するためのコアがありません! エディターで[SCARLET]オレンジ色ではない[]コアをマップに追加してください。 map.nospawn.attack = このマップには攻撃するための敵のコアがありません! エディターで[SCARLET]赤色[]のコアをマップに追加してください。 map.invalid = マップの読み込みエラー: ファイルが無効、または破損しています。 -map.publish.error = マップの公開中にエラーが発生しました: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = 本当にこのマップを公開しますか?\n\n[lightgray]公開するためには、ワークショップ利用規約に同意する必要があります。 +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = マップを公開しました。 -map.publishing = [accent]マップを公開中... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = ブラシ editor.openin = エディターで開く editor.oregen = 鉱石の生成 @@ -222,7 +270,7 @@ editor.oregen.info = 鉱石の生成: editor.mapinfo = マップ情報 editor.author = 作者: editor.description = 説明: -editor.nodescription = A map must have a description of at least 4 characters before being published. +editor.nodescription = マップを公開するには、少なくとも4文字以上の説明が必要です。 editor.waves = ウェーブ: editor.rules = ルール: editor.generation = 生成: @@ -289,7 +337,7 @@ editor.resizemap = マップをリサイズ editor.mapname = マップ名: editor.overwrite = [accent]警告!\nすでに存在するマップを上書きします。 editor.overwrite.confirm = [scarlet]警告![] すでに同じ名前のマップが存在します。上書きしてもよろしいですか? -editor.exists = A map with this name already exists. +editor.exists = すでに同じ名前のマップが存在します。 editor.selectmap = 読み込むマップを選択: toolmode.replace = 置きかえ toolmode.replace.description = 固体ブロックのみに描きます。 @@ -340,11 +388,10 @@ width = 幅: height = 高さ: menu = メニュー play = プレイ -campaign = 遠征 +campaign = プレイ load = 読み込む save = 保存 fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = ゲームを再起動後、言語設定が有効になります。 settings = 設定 @@ -352,37 +399,40 @@ tutorial = チュートリアル tutorial.retake = チュートリアル editor = エディター mapeditor = マップエディター -donate = 寄付 abandon = 撤退 -abandon.text = このゾーンとすべての資源が敵に奪われます。 +abandon.text = このゾーンのすべての資源が敵に奪われます。 locked = ロック complete = [lightgray]達成済み: -zone.requirement = ゾーン {1} でウェーブ {0} を達成 +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = 再開ゾーン:\n[lightgray]{0} bestwave = [lightgray]最高ウェーブ: {0} -launch = < 離脱 > -launch.title = 離脱成功 -launch.next = [lightgray]次は ウェーブ {0} で離脱可能です。 -launch.unable2 = [scarlet]離脱できません。[] -launch.confirm = すべての資源をコアに搬入し、離脱します。\nもうこの基地には戻ってくることはできません。 -launch.skip.confirm = スキップすると、次の離脱可能なウェーブまで離脱できません。 +launch = < 発射 > +launch.title = 発射成功 +launch.next = [lightgray]次は ウェーブ {0} で発射可能です。 +launch.unable2 = [scarlet]発射できません。[] +launch.confirm = すべての資源をコアに搬入し、発射します。\nもうこの基地には戻ってくることはできません。 +launch.skip.confirm = スキップすると、次の発射可能なウェーブまで発射できません。 uncover = 開放 configure = 積み荷の設定 +bannedblocks = Banned Blocks +addall = Add All configure.locked = [lightgray]ウェーブ {0} を達成すると積み荷を設定できるようになります。 configure.invalid = 値は 0 から {0} の間でなければなりません。 zone.unlocked = [lightgray]{0} がアンロックされました. zone.requirement.complete = ウェーブ {0} を達成:\n{1} の開放条件を達成しました。 -zone.config.complete = ウェーブ {0} を達成:\n積み荷の設定が解除されました。 +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = 発見した資源: zone.objective = [lightgray]目標: [accent]{0} -zone.objective.survival = 生き残る +zone.objective.survival = 敵からコアを守り切る zone.objective.attack = 敵のコアを破壊する add = 追加... boss.health = ボスのHP connectfail = [crimson]サーバーへ接続できませんでした:\n\n[accent]{0} error.unreachable = サーバーに到達できません。\nアドレスは正しいですか? error.invalidaddress = 無効なアドレスです。 -error.timedout = タイムアウトしました!\nホストがポート開放されているかを確認してください。また、このアドレスは無効なアドレスではありません! +error.timedout = タイムアウトしました!\nホストがポート開放されているかを確認してください。 error.mismatch = パケットエラー:\n恐らくクライアント/サーバーのバージョンが一致していません。\nゲームとサーバーが最新版のMindustryかどうかを確認してください! error.alreadyconnected = すでに接続されています。 error.mapnotfound = マップファイルが見つかりません! @@ -428,15 +478,14 @@ settings.graphics = グラフィック settings.cleardata = データを削除... settings.clear.confirm = データを削除してもよろしいですか?\nこれを元に戻すことはできません! settings.clearall.confirm = [scarlet]警告![]\nこれはすべてのデータが削除されます。これにはセーブデータ、マップ、アンロック、キーバインドが含まれます。\n「ok」 を押すと、すべてのデータが削除され、自動的に終了します。 -settings.clearunlocks = アンロックを削除 -settings.clearall = すべてを削除 paused = [accent]< ポーズ > +clear = Clear +banned = [scarlet]Banned yes = はい no = いいえ info.title = 情報 error.title = [crimson]エラーが発生しました error.crashtitle = エラーが発生しました -attackpvponly = [scarlet]アタックあるいはPvPモードでのみ有効 blocks.input = 搬入 blocks.output = 搬出 blocks.booster = ブースト @@ -518,13 +567,14 @@ category.optional = 強化オプション setting.landscape.name = 横画面で固定 setting.shadows.name = 影 setting.linear.name = リニアフィルター +setting.hints.name = Hints setting.animatedwater.name = 水のアニメーション setting.animatedshields.name = シールドのアニメーション setting.antialias.name = アンチエイリアス[lightgray] (再起動が必要)[] setting.indicators.name = 敵/味方の方角表示 setting.autotarget.name = オートターゲット setting.keyboard.name = マウスとキーボード操作 -setting.touchscreen.name = Touchscreen Controls +setting.touchscreen.name = タッチスクリーン操作 setting.fpscap.name = 最大FPS setting.fpscap.none = なし setting.fpscap.text = {0} FPS @@ -547,6 +597,7 @@ setting.fps.name = FPSを表示 setting.vsync.name = VSync setting.pixelate.name = ピクセル化[lightgray] (アニメーションが無効化されます) setting.minimap.name = ミニマップを表示 +setting.position.name = Show Player Position setting.musicvol.name = 音楽 音量 setting.ambientvol.name = 環境音 音量 setting.mutemusic.name = 音楽をミュート @@ -558,6 +609,8 @@ setting.publichost.name = 誰でもゲームに参加できるようにする setting.chatopacity.name = チャットの透明度 setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = ゲーム内にチャットを表示 +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. uiscale.reset = UIサイズが変更されました。\nこのままでよければ「OK」を押してください。\n[scarlet][accent]{0}[] 秒で元の設定に戻ります... uiscale.cancel = キャンセル & 終了 setting.bloom.name = Bloom @@ -569,13 +622,16 @@ category.multiplayer.name = マルチプレイ command.attack = 攻撃 command.rally = Rally command.retreat = 後退 -keybind.gridMode.name = ブロック選択 -keybind.gridModeShift.name = カテゴリー選択 +keybind.clear_building.name = Clear Building keybind.press = キーを押してください... keybind.press.axis = 軸またはキーを押してください... keybind.screenshot.name = スクリーンショット keybind.move_x.name = 左右移動 keybind.move_y.name = 上下移動 +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = フルスクリーンの切り替え keybind.select.name = 選択/ショット keybind.diagonal_placement.name = 斜め設置 @@ -587,12 +643,14 @@ keybind.zoom_hold.name = 長押しズーム keybind.zoom.name = ズーム keybind.menu.name = メニュー keybind.pause.name = ポーズ +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = ミニマップ keybind.dash.name = ダッシュ keybind.chat.name = チャット keybind.player_list.name = プレイヤーリスト keybind.console.name = コンソール keybind.rotate.name = 回転 +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = メニュー切り替え keybind.chat_history_prev.name = 前のチャット履歴 keybind.chat_history_next.name = 次のチャット履歴 @@ -604,6 +662,7 @@ mode.survival.name = サバイバル mode.survival.description = 通常のモードです。 資源も限られる中、自動的にウェーブが進行していきます。\n[gray]プレイするには、マップに敵が出現する必要があります。 mode.sandbox.name = サンドボックス mode.sandbox.description = 無限の資源があり、ウェーブを自由に進行できます。 +mode.editor.name = Editor mode.pvp.name = PvP mode.pvp.description = エリア内で他のプレイヤーと戦います。\n[gray]プレイするには、マップに少なくとも二つの異なる色のコアが必要です。 mode.attack.name = アタック @@ -784,12 +843,13 @@ block.hail.name = ヘイル block.lancer.name = ランサー block.conveyor.name = コンベアー block.titanium-conveyor.name = チタンコンベアー -block.armored-conveyor.name = Armored Conveyor -block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. +block.armored-conveyor.name = 装甲コンベア +block.armored-conveyor.description = チタンコンベアーと同じ速度でアイテムを輸送することができ、耐久性に優れています。\nまた、ほかのコンベアーからの側面からの入力は受け取ることができません。 block.junction.name = ジャンクション block.router.name = ルーター block.distributor.name = ディストリビューター block.sorter.name = ソーター +block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.overflow-gate.name = オーバーフローゲート block.silicon-smelter.name = シリコン溶鉱炉 @@ -965,7 +1025,7 @@ unit.eruptor.description = 建造物を破壊することに特化したユニ unit.wraith.description = 高速で突撃攻撃が可能な迎撃ユニットです。 unit.ghoul.description = 重爆撃機です。敵の重要な建造物を優先して破壊します。 unit.revenant.description = 空中からミサイルを発射する重爆撃機です。 -block.message.description = Stores a message. Used for communication between allies. +block.message.description = メッセージを保存し、仲間間の通信に使用します。 block.graphite-press.description = 石炭を圧縮し、黒鉛を生成します。 block.multi-press.description = 黒鉛圧縮機のアップグレード版です。水と電力を使用して、より効率的に石炭を圧縮します。 block.silicon-smelter.description = 石炭と砂からシリコンを製造します。 @@ -1010,6 +1070,7 @@ block.junction.description = 十字に交差したコンベアーをそれぞれ block.bridge-conveyor.description = 高度な輸送ブロックです。地形や建物を超えて、3ブロック離れた場所にアイテムを輸送することができます。 block.phase-conveyor.description = 改良されたアイテム転送ブロックです。電力を使用して、離れた場所にあるフェーズコンベアーにアイテムを転送することができます。 block.sorter.description = アイテムを分別して搬出します。設定したアイテムは通過させます。他のアイテムが搬入されると側面にアイテムを搬出します。 +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = 搬入したアイテムをほかの3方向に均等に搬出します。一つの資源から複数に分ける際などに使われます。 block.distributor.description = 高度なルーターです。搬入したアイテムをほかの7方向に均等に分けて搬出します。 block.overflow-gate.description = 搬出先にアイテムを搬入する空きがない場合に左右にアイテムを搬出します。 @@ -1082,7 +1143,7 @@ block.repair-point.description = 近くの負傷したユニットを修復し block.dart-mech-pad.description = 機体を基本的な攻撃性能を備えた機体に乗り換えます。\n整備台に乗ってタップすることで使用できます。 block.delta-mech-pad.description = 機体を高速で突撃攻撃に向いた軽装備の機体に乗り換えます。\n整備台に乗ってタップすることで使用できます。 block.tau-mech-pad.description = 機体を味方の建造物やユニットの修復が可能な支援型機体に乗り換えます。\n整備台に乗ってタップすることで使用できます。 -block.omega-mech-pad.description = Provides transformation into a heavily-armored missile mech.\nUse by tapping while standing on it. +block.omega-mech-pad.description = 機体をミサイルを搭載した重装甲な機体に乗り換えます。\n整備台に乗ってタップすることで使用できます。 block.javelin-ship-pad.description = 機体を高速で強力な電撃砲を搭載した迎撃機に乗り換えます。\n整備台に乗ってタップすることで使用できます。 block.trident-ship-pad.description = 機体を重装備の爆撃機に乗り換えます。\n整備台に乗ってタップすることで使用できます。 block.glaive-ship-pad.description = 機体を重装備の大型攻撃機に乗り換えます。\n整備台に乗ってタップすることで使用できます。 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 20f9b2b91c..4ef3da0e45 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -1,7 +1,7 @@ credits.text = 제작자 [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] / [scarlet]한국어 번역자[] - [royal]Potion[] credits = 제작자 contributors = 번역 및 기여자들 -discord = Mindustry Discord 에 참여 해 보세요! +discord = Mindustry Discord 에 참여해보세요! link.discord.description = 공식 Mindustry Discord 채팅방 link.github.description = 게임 소스코드 link.changelog.description = 새로 추가된 것들 @@ -10,45 +10,63 @@ link.trello.description = 다음 출시될 기능들을 게시한 공식 Trello link.itch.io.description = PC 버전 다운로드와 HTML5 버전이 있는 itch.io 사이트 link.google-play.description = Google Play 스토어 정보 link.wiki.description = 공식 Mindustry 위키 -linkfail = 링크를 여는데 실패했습니다!\nURL이 기기의 클립보드에 복사되었습니다. -screenshot = 화면 캡쳐가 {0} 경로에 저장되었습니다. +linkfail = 링크를 여는 데 실패했습니다!\nURL이 기기의 클립보드에 복사되었습니다. +screenshot = 스크린샷이 {0} 경로에 저장되었습니다. screenshot.invalid = 맵이 너무 커서 스크린샷을 찍을 메모리가 충분하지 않습니다. gameover = 게임 오버 gameover.pvp = [accent]{0}[] 팀이 승리했습니다! highscore = [accent]최고점수 달성! +copied = 복사됨. load.sound = 소리 load.map = 맵 load.image = 사진 load.content = 컨텐츠 load.system = 시스템 +load.mod = 모드 +schematic = 설계도 +schematic.add = 설계도 저장중... +schematics = 설계도 모음 +schematic.import = 설계도 불러오는 중... +schematic.exportfile = 파일 내보내기 +schematic.importfile = 파일 불러오기 +schematic.browseworkshop = 워크샵 탐색 +schematic.copy = 클립보드에 복사하기 +schematic.copy.import = 클립보드에서 붙여넣기 +schematic.shareworkshop = 워크샵에 공유 +schematic.flip = [accent][[{0}][]/[accent][[{1}][] : 설계도 뒤집기 +schematic.saved = 설계도 저장됨. +schematic.delete.confirm = 삭제된 설계도는 복구할 수 없습니다. 정말로 삭제하시겠습니까? +schematic.rename = 설계도명 변경 +schematic.info = 크기 : {0}x{1}, 사용된 블럭 : {2} 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} +stat.rank = 최종 점수 : [accent]{0} launcheditems = [accent]창고 +launchinfo = [출격되지 않음][[출격]파랑색으로 표시된 자원들을 획득합니다. map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까? level.highscore = 최고 점수 : [accent]{0} level.select = 맵 선택 level.mode = 게임 모드 : showagain = 다음 세션에서 이 메세지를 표시하지 않습니다 coreattack = < 코어가 공격받고 있습니다! > -nearpoint = [[ [scarlet]적 생성 구역에서 나가세요[] ]\n적 생성시 구역 내 건물 및 유닛 파괴 +nearpoint = [[ [scarlet]적 생성 구역에서 나가세요[] ]\n적 생성 시 구역 내 건물 및 유닛 파괴 database = 코어 기록보관소 savegame = 게임 저장 loadgame = 게임 불러오기 joingame = 서버 접속 -addplayers = 플레이어 추가/제거 customgame = 사용자 정의 게임 newgame = 새 게임 none = <없음> minimap = 미니맵 +position = 플레이어 좌표 close = 닫기 website = 웹사이트 quit = 나가기 -save.quit = 저장 나가기 +save.quit = 저장 후 나가기 maps = 맵 maps.browse = 맵 검색 continue = 계속하기 @@ -60,37 +78,56 @@ uploadingcontent = 컨텐츠 업로드 uploadingpreviewfile = 미리보기 파일 업로드 committingchanges = 바뀐 점 적용 done = 완료 +mods.alphainfo = 현재의 모드는 첫 번째 시도이며, 그리고[scarlet] 버그가 매우 많음을 명심하십시오[].\n만약 버그를 발견할경우 Mindustry 깃허브 또는 디스코드로 제보해주세요. +mods.alpha = [scarlet](Alpha) +mods = 모드 +mods.none = [LIGHT_GRAY]모드가 발견되지 않았습니다! +mods.guide = 모드 가이드 +mods.report = 버그 신고 +mod.enabled = [lightgray]활성화 +mod.disabled = [scarlet]비활성화 +mod.disable = 비활성화 +mod.enable = 활성화 +mod.requiresrestart = 모드 변경사항을 적용하기 위해 게임을 종료합니다. +mod.reloadrequired = [scarlet]새로고침 요구됨 +mod.import = 모드 추가 +mod.import.github = 깃허브 모드 추가 +mod.remove.confirm = 모드가 삭제되었습니다. +mod.author = [LIGHT_GRAY]제작자 : [] {0} +mod.missing = 이 세이브파일에는 설치하지 않은 모드 혹은 이 버전에 속해있지 않은 데이터가 포함되어 있습니다. 이 파일을 불러올 경우 세이브파일의 데이터가 손상될 수 있습니다. 정말로 이 파일을 불러오시겠습니까?\n[lightgray]모드 :\n{0} +mod.preview.missing = 워크샵에 당신의 모드를 업로드하기 전에 미리보기 이미지를 먼저 추가해야합니다.\n[accent] preview.png[]라는 이름으로 미리보기 이미지를 당신의 모드 폴더안에 준비한 후 다시 시도해주세요. +mod.folder.missing = 워크샵에는 폴더 형태의 모드만 게시할 수 있습니다.\n모드를 폴더 형태로 바꾸려면 파일을 폴더에 압축 해제하고 이전 압축파일을 제거한 후, 게임을 재시작하거나 모드를 다시 로드하십시오. about.button = 정보 -name = 이름 : -noname = 먼저 [accent] 유저 이름[] 을 설정하세요. +name = 닉네임 : +noname = 먼저 [accent] 유저 닉네임[] 을 설정하세요. filename = 파일 이름 : -unlocked = 새 건물 잠금 해제됨 +unlocked = 대상 정보 기록됨 completed = [accent]연구됨 techtree = 연구 기록 -research.list = [LIGHT_GRAY]연구: +research.list = [LIGHT_GRAY]연구 : research = 연구 -researched = [LIGHT_GRAY]{0}연구됨. -players = 현재 {0}명 접속중 +researched = [LIGHT_GRAY]{0}연구 완료. +players = 현재 {0}명 접속 중 players.single = 현재 {0}명만 있음. -server.closing = [accent]서버 닫는중... +server.closing = [accent]서버 닫는 중... server.kicked.kick = 서버에서 추방되었습니다! -server.kicked.whitelist = 당신은 이 서버의 화이트리스트가 아닙니다. +server.kicked.whitelist = 당신은 이 서버의 화이트리스트에 등록되어있지 않습니다. server.kicked.serverClose = 서버 종료됨. server.kicked.vote = 당신은 투표로 추방되었습니다. 그러니 좀 적당히 하지 그랬어요? -server.kicked.clientOutdated = 오래된 버전의 게임입니다! 게임을 업데이트 하세요! +server.kicked.clientOutdated = 오래된 버전의 게임입니다! 게임을 업데이트하세요! server.kicked.serverOutdated = 오래된 버전의 서버입니다! 서버 호스트 관리자에게 문의하세요! server.kicked.banned = 서버 규칙 위반으로 인해, 이제 당신은 영원히 이 서버를 플레이 하실 수 없습니다. server.kicked.typeMismatch = 클라이언트와 호환되지 않는 서버입니다. 디스코드에서 #mods에 들러보는 건 어떨까요? server.kicked.playerLimit = 서버가 꽉 찼습니다. 빈 공간이 생길 때까지 기다려주세요. -server.kicked.recentKick = 방금 추방처리 되었습니다.\n잠시 기다린 후에 접속 해 주세요. -server.kicked.nameInUse = 이 닉네임이 이미 서버에서 사용중입니다. +server.kicked.recentKick = 방금 추방되었습니다.\n잠시 기다린 후에 접속해주세요. +server.kicked.nameInUse = 이 닉네임은 이미 이 서버에서 사용중입니다. server.kicked.nameEmpty = 당신의 닉네임이 비어있습니다. server.kicked.idInUse = 이미 서버에 접속중입니다! 다중 계정은 허용되지 않습니다. server.kicked.customClient = 이 서버는 직접 빌드한 버전을 지원하지 않습니다. 공식 버전을 사용하세요. server.kicked.gameover = 코어가 파괴되었습니다... server.versions = 클라이언트 버전 : [accent] {0}[]\n서버 버전 : [accent] {1}[] -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로 다른 사람의 서버에 접속할려면 직접 서버 주소를 찾아서 적으셔야합니다.[]\n\n[ROYAL]한국의 서버로는 mindustry.kr[accent](포트없음)[],6568과 server1.mindustry.r-e.kr의 8000,8001,8002,8004포트가 있습니다.\n서버 주소 입력방법은 < 주소:포트 >의 형식입니다. +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로 다른 사람의 서버에 접속하려면 직접 서버 주소를 찾아서 적으셔야합니다.[]\n\n[ROYAL]한국의 서버로는 [accent]mindustry.kr[]의 (포트없음), 6568포트와 server1.mindustry.r-e.kr의 8000, 8002 포트가 있습니다.\n서버 주소 입력방법은 < 주소:포트 >의 형식입니다.\n[royal]포트가 없을 시에는 그냥 주소만 입력하시면 됩니다. hostserver = 서버 열기 invitefriends = 친구 초대 hostserver.mobile = 서버\n열기 @@ -103,22 +140,22 @@ server.refreshing = 서버 목록 새로고치는중... hosts.none = [lightgray]LAN 게임을 찾을 수 없습니다! host.invalid = [scarlet]서버에 연결할 수 없습니다! trace = 플레이어 정보 보기 -trace.playername = 이름: [accent]{0} -trace.ip = IP: [accent]{0}{0} -trace.id = 고유 ID: [accent]{0} -trace.mobile = 모바일 접속 유무: [accent]{0} -trace.modclient = 수정된 클라이언트: [accent]{0} +trace.playername = 닉네임 : [accent]{0} +trace.ip = IP : [accent]{0}{0} +trace.id = UUID : [accent]{0} +trace.mobile = 모바일 접속 유무 : [accent]{0} +trace.modclient = 수정된 클라이언트 : [accent]{0} invalidid = 잘못된 클라이언트 ID 입니다! 버그 보고서를 제출 해 주세요. server.bans = 차단된 유저 server.bans.none = 차단된 플레이어가 없습니다. server.admins = 관리자 server.admins.none = 관리자가 없습니다! -server.add = 서버 추가 -server.delete = 이 서버를 삭제 하시겠습니까? +server.add = 서버 추가\n 이 곳을 눌러 서버ip를 등록하고 접속할 서버를 추가하세요. +server.delete = 이 서버를 삭제하시겠습니까? server.edit = 서버 수정 server.outdated = [crimson]서버 버전이 낮습니다![] server.outdated.client = [crimson]클라이언트 버전이 낮습니다![] -server.version = [lightgray]서버 버전: {0} {1} +server.version = [lightgray]서버 버전 : {0} {1} server.custombuild = [yellow]사용자 정의 서버 confirmban = 이 플레이어를 차단하시겠습니까? confirmkick = 정말로 이 플레이어를 추방시키겠습니까? @@ -127,54 +164,54 @@ confirmunban = 이 플레이어를 차단해제 하시겠습니까? confirmadmin = 이 플레이어를 관리자로 만들겠습니까? confirmunadmin = 이 플레이어를 일반 유저로 만들겠습니까? joingame.title = 게임 참가 -joingame.ip = 주소: +joingame.ip = 주소 : disconnect = 서버와 연결이 해제되었습니다. -disconnect.error = Connection error. +disconnect.error = 연결 . disconnect.closed = 연결이 끊어졌습니다.. disconnect.timeout = 연결 시간 한계 도달.. disconnect.data = 월드 데이터 로딩 실패.. cantconnect = 게임 [accent]{0}[]에 접속하지 못했습니다. connecting = [accent]연결중... connecting.data = [accent]월드 데이터 로딩중... -server.port = 포트: +server.port = 포트 : server.addressinuse = 주소가 이미 사용중입니다! server.invalidport = 포트가 올바르지 않습니다! -server.error = [accent]{0}[crimson]서버를 여는데 오류가 발생했습니다. -save.old = 이 저장파일은 이전 버전의 게임용이며, 지금은 사용할 수 없습니다. \n\n[LIGHT_GRAY]4.0 정식때 이전 게임버전에서 만든 저장파일과 호환됩니다. +server.error = [accent]{0}[crimson]서버를 여는 데 오류가 발생했습니다. save.new = 새로 저장 save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까? overwrite = 덮어쓰기 save.none = 저장 파일을 찾지 못했습니다! saveload = [accent]저장중... savefail = 게임을 저장하지 못했습니다! -save.delete.confirm = 이 저장파일을 삭제 하시겠습니까? +save.delete.confirm = 이 저장파일을 삭제하시겠습니까? save.delete = 삭제 save.export = 저장파일 내보내기 save.import.invalid = [accent]파일이 잘못되었습니다! -save.import.fail = [crimson]저장파일을 불러오지 못함: [accent]{0} -save.export.fail = [crimson]저장파일을 내보내지 못함: [accent]{0} +save.import.fail = [crimson]저장파일을 불러오지 못함\n 오류 코드 : [accent]{0} +save.export.fail = [crimson]저장파일을 내보내지 못함\n 오류 코드 : [accent]{0} save.import = 저장파일 불러오기 -save.newslot = 저장 파일이름: +save.newslot = 저장 파일이름 : save.rename = 이름 변경 -save.rename.text = 새 이름: +save.rename.text = 새 이름 : selectslot = 저장슬롯을 선택하십시오. slot = [accent]{0}번째 슬롯 editmessage = 글 수정하기 -save.corrupted = [accent]세이브 파일이 손상되었거나 잘못된 파일입니다! 만약 게임을 업데이트 했다면 이것은 아마 저장 형식 변경일 것이고, 이것은 버그가 [scarlet]아닙니다[]. +save.corrupted = [accent]세이브 파일이 손상되었거나 잘못된 파일입니다! empty = <비어있음> -on = 켜기 -off = 끄기 -save.autosave = 자동저장: {0} -save.map = 맵: {0} -save.wave = 웨이브 {0} +on = 활성화 +off = 비활성화 +save.autosave = 자동저장 : {0} +save.map = 맵 : {0} +save.wave = {0} 단계 save.mode = 게임모드 : {0} -save.date = 마지막 저장날짜: {0} -save.playtime = 플레이시간: {0} +save.date = 마지막 저장일 : {0} +save.playtime = 플레이타임 : {0} warning = 경고. confirm = 확인 delete = 삭제 view.workshop = 워크샵에서 보기 -ok = OK +workshop.listing = 워크샵 목록 편집하기 +ok = 확인 open = 열기 customize = 맞춤설정 cancel = 취소 @@ -185,20 +222,25 @@ data.export = 데이터 내보내기 data.import = 데이터 불러오기 data.exported = 데이터를 내보냈습니다. data.invalid = 유효한 게임 데이터가 아닙니다. -data.import.confirm = 외부 게임 데이터를 불러옵니다...\n[accent]이 작업시 현재 게임 데이터는 삭제되고, 외부의 게임 데이터를 불러오니 주의하세요. 실행 취소가 불가능하며, 작업 후 게임이 바로 꺼집니다. +data.import.confirm = 외부 게임 데이터를 불러옵니다...\n[accent]작업이 완료되면 현재 게임 데이터는 삭제되고, 외부의 게임 데이터를 불러오니 주의하세요. 실행 취소가 불가능하며, 작업 후 게임이 바로 꺼집니다. classic.export = 클래식 데이터 추출 -classic.export.text = Mindustry 클래식 (v3.5 build 40)의 세이브파일 또는 맵 데이터가 발견되었습니다. 이 것들을 Mindustry 클래식 앱에서 사용하기 위해 홈 폴더로 추출할까요? +classic.export.text = Mindustry 클래식 (v3.5 build 40)의 세이브파일 또는 맵 데이터가 발견되었습니다. 이 데이터를 Mindustry 클래식 앱에서 사용하기 위해 홈 폴더로 추출할까요? quit.confirm = 정말로 종료하시겠습니까? quit.confirm.tutorial = 튜토리얼을 종료하시겠습니까?\n튜토리얼은 [accent]설정 -> 게임 -> 튜토리얼[]에서 다시 해보실 수 있습니다. loading = [accent]불러오는중... +reloading = [accent]모드 새로고침하는중... saving = [accent]저장중... -wave = [accent]웨이브 {0} -wave.waiting = [green]{0}초[]후 웨이브 시작 -wave.waveInProgress = [LIGHT_GRAY]웨이브 진행중 +cancelbuilding = [accent][[{0}][] 를 눌러 설계도 초기화 +selectschematic = [accent][[{0}][] 를 눌러 선택+복사 +pausebuilding = [accent][[{0}][] 를 눌러 설계모드 진입 +resumebuilding = [scarlet][[{0}][] 를 눌러 건설 시작 +wave = [accent] {0} 단계 +wave.waiting = [green]{0}초[]후 다음 단계 시작 +wave.waveInProgress = [LIGHT_GRAY]단계 진행중 waiting = [LIGHT_GRAY]대기중... waiting.players = 다른 플레이어를 기다리는 중.. -wave.enemies = [LIGHT_GRAY]{0} 마리 남았음 -wave.enemy = [LIGHT_GRAY]{0} 마리 남음 +wave.enemies = [LIGHT_GRAY]적 유닛{0} 마리 남았음 +wave.enemy = [LIGHT_GRAY]적 유닛{0} 마리 남음 loadimage = 사진 불러오기 saveimage = 사진 저장 unknown = 알 수 없음 @@ -210,22 +252,28 @@ map.nospawn = 이 맵에 플레이어가 생성될 코어가 없습니다! 맵 map.nospawn.pvp = 이 맵에는 적팀 코어가 없습니다! 에디터에서 [ROYAL]노랑색 팀이 아닌[] 코어를 추가하세요. map.nospawn.attack = 이 맵에는 플레이어가 공격할 수 있는 적의 코어가 없습니다! 에디터에서 [ROYAL] 빨강색 팀[] 코어를 맵에 추가하세요. map.invalid = 파일이 잘못되었거나 손상되어 맵을 열 수 없습니다. -map.publish.error = 맵 업로드 오류 : {0} +workshop.update = 워크샵 맵 업데이트 +workshop.error = 워크샵 세부사항을 가져오는 중 에러가 발생했습니다 : {0} map.publish.confirm = 맵을 업로드 하시겠습니까?\n\n[lightgray]먼저 워크샵 EULA에 동의하시지 않으면 맵이 표시되지 않습니다! +workshop.menu = 해당 맵으로 수행할 작업을 선택하십시오. +workshop.info = 맵 정보 +changelog = 변경점 (선택 사항) : eula = 스팀 EULA -map.publish = 맵 업로드 완료! -map.publishing = [accent]맵 업로드 중... +missing = 이 항목은 삭제되거나 이동되었습니다.\n[lightgray]워크샵 목록이 자동으로 연결 해제되었습니다. +publishing = [accent]업로드 중... +publish.confirm = 맵을 업로드 하시겠습니까?\n\n[lightgray]먼저 워크샵 EULA에 동의하시지 않으면 맵이 표시되지 않습니다! +publish.error = 맵 업로드 오류 : {0} editor.brush = 브러쉬 editor.openin = 편집기 열기 editor.oregen = 광물 무작위 생성 -editor.oregen.info = 광물 무작위 생성: +editor.oregen.info = 광물 무작위 생성 : editor.mapinfo = 맵 정보 -editor.author = 만든이: -editor.description = 설명: +editor.author = 제작자 : +editor.description = 설명 : editor.nodescription = 맵을 업로드하려면 최소 4자 이상의 설명이 있어야합니다. editor.waves = 단계 : -editor.rules = 규칙: -editor.generation = 맵 생성 설정: +editor.rules = 규칙 : +editor.generation = 맵 생성 설정 : editor.ingame = 인게임 편집 editor.publish.workshop = 워크샵 업로드 editor.newmap = 신규 맵 @@ -248,14 +296,14 @@ waves.none = 적 단계가 설정되지 않았습니다.\n비어있을 시 자 editor.default = [LIGHT_GRAY]<기본값> details = 설명 edit = 편집 -editor.name = 이름: +editor.name = 이름 : editor.spawn = 유닛 생성 editor.removeunit = 유닛 삭제 editor.teams = 팀 -editor.errorload = [accent]{0} 파일을 불러오는데 실패했습니다. -editor.errorsave = [accent]{0} 파일을 저장하는데 실패했습니다. -editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n예전 맵을 가져올려면 편집기의 '예전 맵 가져오기' 버튼을 사용하세요. -editor.errorlegacy = 이 맵은 너무 오래되어, 더이상 지원하지 않는 맵 형식을 사용합니다. +editor.errorload = [accent]{0} 파일을 불러오는 데 실패했습니다. +editor.errorsave = [accent]{0} 파일을 저장하는 데 실패했습니다. +editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n예전 맵을 가져오려면 편집기의 '예전 맵 가져오기' 버튼을 사용하세요. +editor.errorlegacy = 이 맵은 너무 오래되어, 더는 지원하지 않는 맵 형식을 사용합니다. editor.errornot = 선택한 대상이 맵 파일이 아닙니다. editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다. editor.errorname = 맵에 이름이 지정되어 있지 않습니다. @@ -268,7 +316,7 @@ editor.loadmap = 맵 불러오기 editor.savemap = 맵 저장 editor.saved = 저장됨! editor.save.noname = 맵에 이름이 없습니다! 메뉴 -> '맵 정보' 에서 설정하세요. -editor.save.overwrite = 이 맵의 이름은 기존에 있던 맵을 덮어씁니다! '맵 정보' 메뉴에서 다른 이름을 선택하세요. +editor.save.overwrite = 이 맵의 이름은 이미 존재합니다! '맵 정보' 메뉴에서 다른 이름을 선택하세요. editor.import.exists = [scarlet]맵을 불러올 수 없음: [] 기존에 있던 '{0}' 맵이 이미 존재합니다! editor.import = 가져오기 editor.importmap = 맵 가져오기 @@ -286,11 +334,11 @@ editor.loadimage = 지형 가져오기 editor.saveimage = 지형 내보내기 editor.unsaved = [scarlet]변경사항을 저장하지 않았습니다![]\n정말로 나가시겠습니까? editor.resizemap = 맵 크기 조정 -editor.mapname = 맵 이름: +editor.mapname = 맵 이름 : editor.overwrite = [accept]경고!이 명령은 기존 맵을 덮어씌우게 됩니다. editor.overwrite.confirm = [scarlet]경고![] 이 이름을 가진 맵이 이미 있습니다. 덮어 쓰시겠습니까? editor.exists = 같은 이름의 맵이 이미 존재합니다. -editor.selectmap = 불러올 맵 선택: +editor.selectmap = 불러올 맵 선택 : toolmode.replace = 재배치 toolmode.replace.description = 블록을 배치합니다. toolmode.replaceall = 모두 재배치 @@ -336,45 +384,47 @@ filter.option.floor2 = 2번째 바닥 filter.option.threshold2 = 2번째 한계점 filter.option.radius = 반경 filter.option.percentile = 백분위수 -width = 넓이: -height = 높이: +width = 넓이 : +height = 높이 : menu = 메뉴 play = 플레이 campaign = 캠페인 load = 불러오기 save = 저장 -fps = FPS: {0} -tps = TPS: {0} -ping = Ping: {0}ms -language.restart = 언어를 변경하려면 게임을 다시시작 해 주세요. +fps = FPS : {0} +ping = Ping : {0}ms +language.restart = 언어를 변경하려면 게임을 다시 시작해 주세요. settings = 설정 -tutorial = 게임 방법 +tutorial = 튜토리얼 tutorial.retake = 튜토리얼 editor = 편집기 mapeditor = 맵 편집기 -donate = 기부 -abandon = 포기 +abandon = 지역 포기 abandon.text = 이 구역의 모든 자원이 적에게 빼앗길 것입니다. locked = 잠김 -complete = [LIGHT_GRAY]완료: -zone.requirement = 지역 {1} 에서 단계 {0} 달성 -resume = 지역 계속 플레이:\n[LIGHT_GRAY]{0} -bestwave = [LIGHT_GRAY]최고 점수: {0} +complete = [LIGHT_GRAY]지역 해금 조건 : +requirement.wave = {1}지역에서 {0}단계 달성 +requirement.core = {0}지역에서 적 코어를 파괴 +requirement.unlock = {0}지역 해금 +resume = 현재 진행 중인 지역\n[LIGHT_GRAY]{0} +bestwave = [LIGHT_GRAY]달성한 최고 단계 : {0} launch = < 출격 > launch.title = 출격 성공 -launch.next = [LIGHT_GRAY]다음 출격기회는 {0} 단계에서 나타납니다. +launch.next = [LIGHT_GRAY]다음 출격 기회는 {0} 단계에서 나타납니다. launch.unable2 = [scarlet]출격할 수 없습니다.[] -launch.confirm = 출격하게 되면 모든 자원이 코어로 들어갑니다.\n또한 성공하기 전까지 기지로 돌아갈 수 없습니다. -launch.skip.confirm = 만약 지금 출격하시지 않고 스킵하신다면, 다음 출격 단계까지 기다려야 합니다. -uncover = 구역 개방 +launch.confirm = 출격하게 되면 코어에 저장된 모든 자원이 창고로 들어갑니다.\n또한 출격한 지역에는 아무것도 남지 않습니다. +launch.skip.confirm = 만약 지금 출격하지 않고 스킵하신다면, 다음 출격 단계까지 기다려야 합니다. +uncover = 지역 개방 configure = 코어 시작자원 설정 -configure.locked = {0} 단계에서 시작자원 설정 잠금이 해제됩니다. -configure.invalid = 해당 0 과 {0} 사이여야 합니다. +bannedblocks = 금지된 블럭들 +addall = 모두 추가 +configure.locked = 시 시작자원 설정이 해금됩니다. +configure.invalid = 해당 값은 0 과 {0} 사이여야 합니다. zone.unlocked = [LIGHT_GRAY] 잠금 해제되었습니다! -zone.requirement.complete = 단계 {0} 달성:\n{1} 지역 요구사항이 충족되었습니다! -zone.config.complete = 단계 {0} 달성:\n시작자원 설정 기능이 해금되었습니다! -zone.resources = 자원이 감지되었습니다 : -zone.objective = [lightgray]게임 모드: [accent]{0} +zone.requirement.complete = {0} 단계 달성 성공! \n{1} 지역 요구사항이 충족되었습니다! +zone.config.unlocked = 시작자원 설정 해금! : [lightgray]\n{0} +zone.resources = 감지된 자원 목록 : +zone.objective = [lightgray]게임 모드 : [accent]{0} zone.objective.survival = 생존 zone.objective.attack = 적 코어 파괴 add = 추가... @@ -383,7 +433,7 @@ connectfail = [crimson]{0}[accent] 서버에 연결하지 못했습니다.[] error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요? error.invalidaddress = 잘못된 주소입니다. error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오. -error.mismatch = 패킷 오류:\n클라이언트/서버 버전이 일치하지 않습니다.\n접속할려는 서버가 최신 버전의 Mindustry 인지 확인하세요! +error.mismatch = 패킷 오류\n클라이언트/서버 버전이 일치하지 않습니다.\n접속하려는 서버가 최신 버전인지 확인하세요! error.alreadyconnected = 이미 접속중입니다. error.mapnotfound = 맵 파일을 찾을 수 없습니다! error.io = 네트워크 I/O 오류. @@ -404,16 +454,16 @@ zone.impact0078.name = Impact 0078 zone.crags.name = 협곡 zone.fungalPass.name = 포자 지대 zone.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지닌 장소입니다. 적은 수준의 위협이 있으며 자원의 양은 적습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n출격합시다! -zone.frozenForest.description = 이 지역도 산과 가까운 지역입니다 포자들이 흩뿌려져 있으며 극한의 추위도 포자룰 막을 수 있을거 같지 않습니다.\n전력을 통해서 모험을 시작하십시오 화력 발전소를 짓고 수리드론을 사용하는 법을 배우십시오. -zone.desertWastes.description = 이 황무지는 끝을 알수 없을 정도로 광활합니다 그리고 십자가 형태의 버려진 구조물이 존재합니다.\n석탄이 존재하며 이를 화력발전에 쓰거나 흑연정제에 쓰십시오.\n\n[lightgray]이 지역에서의 착륙장소는 확실하지 않습니다. -zone.saltFlats.description = 이 소금 사막은 매우 척박하여 자원이 거의 없습니다.\n하지만 자원이 희소한 이곳에서도 적들의 요새가 발견되었습니다.그들을 사막의 모래로 만들어버리십시오. +zone.frozenForest.description = 이 지역도 산과 가까운 지역입니다 포자들이 흩뿌려져 있으며 극한의 추위도 포자를 막을 수 있을 것 같지 않습니다.\n화력 발전소를 짓고 전력을 확보하여 채광 드론을 사용하는 법을 배우십시오. +zone.desertWastes.description = 이 황무지는 끝을 알 수 없을 정도로 광활하고 십자가 형태의 버려진 구조물이 존재합니다.\n석탄이 존재하며 이를 화력발전에 쓰거나 흑연 정제에 쓰십시오.\n\n[lightgray]이 지역에서의 착륙장소는 확실하지 않습니다. +zone.saltFlats.description = 이 소금 사막은 매우 척박하여 자원이 거의 없습니다.\n하지만 자원이 희소한 이곳에서도 적들의 요새가 발견되었습니다. 그들을 사막의 모래로 만들어버리십시오. zone.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 다시 점령해 강화유리를 제작하고 물을 끌어올려 포탑과 드릴에 공급하여 더 좋은 효율로 방어선을 강화하십시오. -zone.ruinousShores.description = 이 지역은 과거 해안방어기지로 사용되었습니다.\n그러나 지금은 기본구조물만 남아있으니 이 지역을 어서 신속히 수리하여 외부로 세력을 확장한뒤 잃어버린 기술을 다시 회수하십시오. -zone.stainedMountains.description = 더 안쪽에는 포자에 오염된 산맥이 있지만, 이 곳은 포자에 오염되지 않았습니다.\n이 지역에서 티타늄을 채굴하고 이 것을 어떻게 사용하는지 배우십시오.\n\n적들은 이 곳에서 더 강력합니다. 더 강한 유닛들이 나올 때까지 시간을 낭비하지 마십시오. -zone.overgrowth.description = 이 곳은 포자들의 근원과 가까이에 있는 과성장 지대입니다. 적이 이 곳에 전초기지를 설립했습니다. 디거를 생산해 적의 코어를 박살내 우리가 잃어버린 것들을 되돌려받으십시오! -zone.tarFields.description = 산지와 사막 사이에 위치한 석유 생산지의 외곽 지역이며, 사용 가능한 타르가 매장되어 있는 희귀한 지역 중 하나입니다. 버려진 지역이기는 하나 이곳에는 위험한 적군들이 있습니다. 그들을 과소평가하지 마십시오.\n\n[lightgray]석유 생산기술을 익히는 것이 도움이 될 것입니다. +zone.ruinousShores.description = 이 지역은 과거 해안방어기지로 사용되었습니다.\n그러나 지금은 기본구조물만 남아있으니 이 지역을 어서 신속히 수리하여 외부로 세력을 확장한 뒤, 잃어버린 기술을 다시 회수하십시오. +zone.stainedMountains.description = 더 안쪽에는 포자에 오염된 산맥이 있지만, 이 곳은 포자에 오염되지 않았습니다.\n이 지역에서 티타늄을 채굴하고 이것을 어떻게 사용하는지 배우십시오.\n\n적들은 이곳에서 더 강력합니다. 더 강한 유닛들이 나올 때까지 시간을 낭비하지 마십시오. +zone.overgrowth.description = 이 곳은 포자들의 근원과 가까이에 있는 과성장 지대입니다. 적이 이 곳에 전초기지를 설립했습니다. 디거를 생산해 적의 코어를 박살 내고 우리가 잃어버린 것들을 되돌려받으십시오! +zone.tarFields.description = 산지와 사막 사이에 위치한 석유 생산지의 외곽 지역이며, 사용 가능한 타르가 매장되어 있는 희귀한 지역 중 하나입니다. 버려진 지역이지만 이곳에는 위험한 적군들이 있습니다. 그들을 과소평가하지 마십시오.\n\n[lightgray]석유 생산기술을 익히는 것이 도움이 될 것입니다. zone.desolateRift.description = 극도로 위험한 지역입니다. 자원은 풍부하지만 사용 가능한 공간은 거의 없습니다. 코어 파괴의 위험성이 높으니 가능한 빨리 떠나십시오. 또한 적의 공격 딜레이가 길다고 안심하지 마십시오. -zone.nuclearComplex.description = 과거 토륨의 생산, 연구와 처리를 위해 운영되었던 시설입니다. 금은 축소되어 폐허로 전락했으며, 다수의 적이 배치되어 있는 지역입니다. 그들은 끊임없이 당신을 공격할 것입니다.\n\n[lightgray]토륨의 다양한 사용법을 연구하고 익히십시오. +zone.nuclearComplex.description = 과거 토륨의 생산, 연구와 처리를 위해 운영되었던 시설입니다. 지금은 그저 폐허로 전락했으며, 다수의 적이 배치되어 있는 지역입니다. 그들은 끊임없이 당신을 공격할 것입니다.\n\n[lightgray]토륨의 다양한 사용법을 연구하고 익히십시오. zone.fungalPass.description = 고산지대과 포자지대 사이의 지역입니다. 소규모의 적 정찰기지가 있으니 디거와 크롤러를 이용해 적의 코어를 파괴하십시오. zone.impact0078.description = [ROYAL]죄송합니다. 아직 설명이 준비되지 않았습니다. zone.crags.description = [ROYAL]죄송합니다. 아직 설명이 준비되지 않았습니다. @@ -428,15 +478,14 @@ settings.graphics = 그래픽 settings.cleardata = 게임 데이터 초기화... settings.clear.confirm = 정말로 초기화 하겠습니까?\n이 작업을 되돌릴 수 없습니다! settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다. -settings.clearunlocks = 잠금 해제 초기화 -settings.clearall = 모두 초기화 paused = 일시 정지 +clear = 초기화 +banned = [scarlet]밴 yes = 예 no = 아니오 info.title = [accent]정보 error.title = [crimson]오류가 발생했습니다. error.crashtitle = 오류가 발생했습니다. -attackpvponly = [scarlet]오직 Pvp/공격 모드에서만 사용가능합니다. blocks.input = 소모 자원 blocks.output = 출력 자원 blocks.booster = 가속 @@ -463,39 +512,39 @@ blocks.range = 사거리 blocks.drilltier = 드릴 blocks.drillspeed = 기본 드릴 속도 blocks.boosteffect = 가속 효과 -blocks.maxunits = 최대 활성유닛 +blocks.maxunits = 유지할 수 있는 유닛 최대 개체 수 blocks.health = 체력 blocks.buildtime = 건설 시간 blocks.buildcost = 건설 재료 blocks.inaccuracy = 오차각 -blocks.shots = 발포 횟수 +blocks.shots = 공격 속도 blocks.reload = 재장전 blocks.ammo = 탄약 bar.drilltierreq = 더 좋은 드릴이 요구됨 bar.drillspeed = 채광 속도 : {0}/s bar.efficiency = 효율성 : {0}% bar.powerbalance = 전력 : {0}/s -bar.powerstored = 에너지 저장량 : {0}/{1} +bar.powerstored = 총 전력 저장량 : {0}/{1} bar.poweramount = 전력 저장량 : {0} bar.poweroutput = 전력 생산량 : {0}/s -bar.items = 최대 120개중 {0}개 중 +bar.items = 자원량 : {0} bar.capacity = 저장공간 : {0} bar.liquid = 액체 bar.heat = 발열 bar.power = 전력 bar.progress = 생산 진행도 bar.spawned = 최대 {1}기 중 {0}기 생산됨 -bullet.damage = [stat]{0}[lightgray] 데미지 -bullet.splashdamage = [stat]{0}[lightgray] 범위 데미지 ~[stat] {1}[lightgray] 타일 +bullet.damage = [lightgray]피해량 : [stat]{0}[] +bullet.splashdamage = [lightgray]범위 피해량 : [stat]{0}[] / [lightgray]피해 범위 : [stat]{1}[lightgray] 타일 bullet.incendiary = [stat]방화 -bullet.homing = [stat]유도탄 -bullet.shock = [stat] +bullet.homing = [stat]유도 +bullet.shock = [stat]전격 bullet.frag = [stat]파편 -bullet.knockback = [stat]{0}[lightgray] 넉백 -bullet.freezing = [stat]동결 +bullet.knockback = 넉백 : [stat]{0}[lightgray] +bullet.freezing = [stat]빙결 bullet.tarred = [stat]타르 -bullet.multiplier = [stat]{0}[lightgray]x 탄약 소모율 -bullet.reload = [stat]{0}[lightgray]x 사격 속도 +bullet.multiplier = 추가 타격 횟수 : [stat]{0}[lightgray] +bullet.reload = 공격 속도 : [stat]{0}[lightgray] unit.blocks = 블록 unit.powersecond = 전력/초 unit.liquidsecond = 액체/초 @@ -518,6 +567,7 @@ category.optional = 보조 아이템 setting.landscape.name = 가로화면으로 고정 setting.shadows.name = 그림자 setting.linear.name = 선형 필터링 +setting.hints.name = 도움말 표시 setting.animatedwater.name = 움직이는 물 setting.animatedshields.name = 움직이는 보호막 setting.antialias.name = 안티 에일리어싱[LIGHT_GRAY] (재시작 필요)[] @@ -535,7 +585,7 @@ setting.difficulty.easy = 쉬움 setting.difficulty.normal = 보통 setting.difficulty.hard = 어려움 setting.difficulty.insane = 미침 -setting.difficulty.name = 난이도: +setting.difficulty.name = 난이도 : setting.screenshake.name = 화면 흔들기 setting.effects.name = 화면 효과 setting.sensitivity.name = 컨트롤러 감도 @@ -547,37 +597,43 @@ setting.fps.name = FPS 표시 setting.vsync.name = VSync 활성화 setting.pixelate.name = 픽셀화[LIGHT_GRAY] (애니메이션 효과가 꺼집니다) setting.minimap.name = 미니맵 보기 +setting.position.name = 플레이어 위치 표시 setting.musicvol.name = 음악 크기 setting.ambientvol.name = 배경음 크기 setting.mutemusic.name = 음소거 setting.sfxvol.name = 효과음 크기 setting.mutesound.name = 소리 끄기 -setting.crashreport.name = 오류 보고서 보내기 +setting.crashreport.name = 익명으로 오류 보고서 자동 전송 setting.savecreate.name = 자동 저장 활성화 -setting.publichost.name = 공용 서버 보이기 +setting.publichost.name = 공개 서버 보이기 setting.chatopacity.name = 채팅 투명도 -setting.lasersopacity.name = Power Laser Opacity -setting.playerchat.name = 인게임 채팅 표시 -uiscale.reset = UI 스케일이 변경되었습니다.\n"확인"버튼을 눌러 스케일을 확인하세요.\n[scarlet]Reverting and exiting in[accent] {0}[] settings... +setting.lasersopacity.name = 전력 레이저 밝기 +setting.playerchat.name = 채팅 말풍선 표시 +public.confirm = 게임을 공개하시겠습니까?\n[lightgray]설정 - 게임 - 게임 서버 공개에서 다시 설정하실 수 있습니다. +public.beta = [accent]!정보![] 베타 버전은 공개 게임 서버를 열지 못합니다. +uiscale.reset = UI 스케일이 변경되었습니다.\n"확인"버튼을 눌러 스케일을 확인하세요.\n[scarlet][accent] {0}[]초 후에 예전 설정으로 되돌리고 게임을 종료합니다... uiscale.cancel = 취소 & 나가기 -setting.bloom.name = 발광 효과 +setting.bloom.name = 화려한 이펙트 keybind.title = 조작키 설정 -keybinds.mobile = [scarlet]여기 대부분의 키들은 모바일에서 작동하지 않습니다. 기본적인 것들만 지원됩니다. +keybinds.mobile = [scarlet]대부분의 키들은 모바일에서 작동하지 않습니다. 기본적인 것들만 지원됩니다. category.general.name = 일반 category.view.name = 보기 category.multiplayer.name = 멀티플레이 command.attack = 공격 -command.rally = Rally +command.rally = 순찰 command.retreat = 후퇴 -keybind.gridMode.name = 블록 선택 -keybind.gridModeShift.name = 카테고리 선택 -keybind.press = 키를 누르세요. -keybind.press.axis = 축 또는 키를 누르세요. +keybind.clear_building.name = 설계도 초기화 +keybind.press = 키를 누르세요... +keybind.press.axis = 마우스 휠 또는 키를 누르세요... keybind.screenshot.name = 맵 스크린샷 keybind.move_x.name = 오른쪽/왼쪽 이동 keybind.move_y.name = 위 / 아래 중간 +keybind.schematic_select.name = 영역 설정 +keybind.schematic_menu.name = 설계도 메뉴 +keybind.schematic_flip_x.name = 설계도 X축 뒤집기 +keybind.schematic_flip_y.name = 설계도 Y축 뒤집기 keybind.fullscreen.name = 전체 화면 -keybind.select.name = 선택 +keybind.select.name = 선택/공격 keybind.diagonal_placement.name = 대각선 설치 keybind.pick.name = 블록 선택 keybind.break_block.name = 블록 파괴 @@ -587,31 +643,34 @@ keybind.zoom_hold.name = 길게 확대 keybind.zoom.name = 확대 keybind.menu.name = 메뉴 keybind.pause.name = 일시중지 +keybind.pause_building.name = 건설 일시정지/계속하기 keybind.minimap.name = 미니맵 keybind.dash.name = 달리기 keybind.chat.name = 채팅 keybind.player_list.name = 플레이어 목록 keybind.console.name = 콘솔 keybind.rotate.name = 회전 +keybind.rotateplaced.name = 기존 회전 (고정) keybind.toggle_menus.name = 메뉴 보이기/숨기기 keybind.chat_history_prev.name = 이전 채팅기록 keybind.chat_history_next.name = 다음 채팅기록 keybind.chat_scroll.name = 채팅 스크롤 -keybind.drop_unit.name = 유닛 드롭 +keybind.drop_unit.name = 유닛 처치 시 자원획득 keybind.zoom_minimap.name = 미니맵 확대 -mode.help.title = 모드 도움말 +mode.help.title = 게임모드 도움말 mode.survival.name = 생존 mode.survival.description = 이것은 일반 모드입니다. 제한된 자원을 가지고 자동으로 다음 단계가 시작됩니다. mode.sandbox.name = 샌드박스 mode.sandbox.description = 무한한 자원을 가지고 자유롭게 다음 단계를 시작할 수 있습니다. +mode.editor.name = 편집기 mode.pvp.name = PvP mode.pvp.description = 실제 플레이어와 PvP를 합니다. 맵에 적어도 2개의 다른 색상 코어가 있어야 합니다. mode.attack.name = 공격 mode.attack.description = 적 기지를 파괴하세요. 맵에 빨간팀 코어가 있어야 플레이 가능합니다. mode.custom = 사용자 정의 규칙 rules.infiniteresources = 무한 자원 -rules.wavetimer = 웨이브 타이머 -rules.waves = 웨이브 +rules.wavetimer = 단계 +rules.waves = 단계 rules.attack = 공격 모드 rules.enemyCheat = 무한한 적 자원 rules.unitdrops = 유닛 처치시 자원 약탈 @@ -621,16 +680,16 @@ rules.playerhealthmultiplier = 플레이어 체력 배수 rules.playerdamagemultiplier = 플레이어 공격력 배수 rules.unitdamagemultiplier = 유닛 공격력 배수 rules.enemycorebuildradius = 적 코어 건설 금지구역:[LIGHT_GRAY] (타일) -rules.respawntime = 리스폰 시간:[LIGHT_GRAY] (초) -rules.wavespacing = 웨이브 간격:[LIGHT_GRAY] (초) +rules.respawntime = 플레이어 부활 대기 시간:[LIGHT_GRAY] (초) +rules.wavespacing = 단계 간격 : [LIGHT_GRAY] (초) rules.buildcostmultiplier = 건설 소모 배수 rules.buildspeedmultiplier = 건설 속도 배수 -rules.waitForWaveToEnd = 웨이브가 끝날때까지 기다리는중 -rules.dropzoneradius = 드롭 구역 반경:[LIGHT_GRAY] (타일) -rules.respawns = 웨이브당 최대 리스폰 횟수 -rules.limitedRespawns = 리스폰 제한 -rules.title.waves = 웨이브 -rules.title.respawns = 리스폰 +rules.waitForWaveToEnd = 단계가 끝날때까지 기다리는중 +rules.dropzoneradius = 적 소환 구역 반경 : [LIGHT_GRAY] (타일) +rules.respawns = 단계당 최대 플레이어 부활 횟수 +rules.limitedRespawns = 플레이어 부활 제한 +rules.title.waves = 단계 +rules.title.respawns = 플레이어 부활 rules.title.resourcesbuilding = 자원 & 건축 rules.title.player = 플레이어들 rules.title.enemy = 적 @@ -658,7 +717,7 @@ item.metaglass.name = 강화유리 item.scrap.name = 고철 liquid.water.name = 물 liquid.slag.name = 광재 -liquid.oil.name = 타르 +liquid.oil.name = 석유 liquid.cryofluid.name = 냉각수 mech.alpha-mech.name = 알파 mech.alpha-mech.weapon = 중무장 소총 @@ -681,21 +740,21 @@ mech.trident-ship.name = 삼지창 mech.trident-ship.weapon = 폭탄 저장고 mech.glaive-ship.name = 글레브 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} -mech.weapon = [LIGHT_GRAY]무기: {0} -mech.health = [LIGHT_GRAY]체력: {0} -mech.itemcapacity = [LIGHT_GRAY]아이템 수용 용량: {0} -mech.minespeed = [LIGHT_GRAY]채광 속도: {0}% -mech.minepower = [LIGHT_GRAY]채광 레벨: {0} -mech.ability = [LIGHT_GRAY]능력: {0} -mech.buildspeed = [LIGHT_GRAY]건설 속도: {0}% -liquid.heatcapacity = [LIGHT_GRAY]발열 용량: {0} -liquid.viscosity = [LIGHT_GRAY]점도: {0} -liquid.temperature = [LIGHT_GRAY]온도: {0} +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} +mech.weapon = [LIGHT_GRAY]무기 : {0} +mech.health = [LIGHT_GRAY]체력 : {0} +mech.itemcapacity = [LIGHT_GRAY]아이템 수용 용량 : {0} +mech.minespeed = [LIGHT_GRAY]채광 속도 : {0}% +mech.minepower = [LIGHT_GRAY]채광 레벨 : {0} +mech.ability = [LIGHT_GRAY]능력 : {0} +mech.buildspeed = [LIGHT_GRAY]건설 속도 : {0}% +liquid.heatcapacity = [LIGHT_GRAY]발열 용량 : {0} +liquid.viscosity = [LIGHT_GRAY]점도 : {0} +liquid.temperature = [LIGHT_GRAY]온도 : {0} block.sand-boulder.name = 사암 block.grass.name = 잔디 block.salt.name = 소금 @@ -723,11 +782,11 @@ block.kiln.name = 가마 block.graphite-press.name = 흑연 압축기 block.multi-press.name = 다중 압축기 block.constructing = {0} [LIGHT_GRAY](만드는중) -block.spawn.name = 적 스폰지점 -block.core-shard.name = 코어-조각 -block.core-foundation.name = 코어-기초 -block.core-nucleus.name = 코어-핵 -block.deepwater.name = 깊은물 +block.spawn.name = 적 소환지점 +block.core-shard.name = 코어:조각 +block.core-foundation.name = 코어:기초 +block.core-nucleus.name = 코어:핵 +block.deepwater.name = 깊은 물 block.water.name = 물 block.tainted-water.name = 오염된 물 block.darksand-tainted-water.name = 오염된 젖은 검은 모래 @@ -785,13 +844,14 @@ block.lancer.name = 랜서 block.conveyor.name = 컨베이어 block.titanium-conveyor.name = 티타늄 컨베이어 block.armored-conveyor.name = 장갑 컨베이어 -block.armored-conveyor.description = 운송 속도는 티타늄 컨베이어와 비슷하나, 훨씬 단단합니다. 그러나 컨베이어외에는 자원을 받지 못합니다. \n\n[royal]체력이 늘어났지만, 벽만큼 단단하지는 않습니다. 단단하다고 해서 안심하지 마세요. +block.armored-conveyor.description = 운송 속도는 티타늄 컨베이어와 비슷하나, 훨씬 단단합니다. 그러나 컨베이어 외에는 자원을 받지 못합니다. \n\n[royal]설명은 이렇지만, 장갑 컨베이어와 자원을 내보내는 대상이 일직선상에 있을 시에는 자원을 받을 수 있습니다. block.junction.name = 교차기 block.router.name = 분배기 block.distributor.name = 대형 분배기 block.sorter.name = 필터 +block.inverted-sorter.name = 반전 필터 block.message.name = 메모 블럭 -block.overflow-gate.name = 오버플로 게이트 +block.overflow-gate.name = 포화 필터 block.silicon-smelter.name = 실리콘 제련소 block.phase-weaver.name = 메타 합성기 block.pulverizer.name = 분쇄기 @@ -803,7 +863,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 = 화력 발전기 @@ -849,7 +909,7 @@ block.spirit-factory.name = 수리 드론 공장 block.phantom-factory.name = 건설 드론 공장 block.wraith-factory.name = 유령 전투기 공장 block.ghoul-factory.name = 구울 폭격기 공장 -block.dagger-factory.name = 디거 기체 공장 +block.dagger-factory.name = 대거 기체 공장 block.crawler-factory.name = 크롤러 기체 공장 block.titan-factory.name = 타이탄 기체 공장 block.fortress-factory.name = 포트리스 기체 공장 @@ -867,11 +927,11 @@ block.mass-driver.name = 매스 드라이버 block.blast-drill.name = 압축 공기분사 드릴 block.thermal-pump.name = 화력 펌프 block.thermal-generator.name = 열발전기 -block.alloy-smelter.name = 서지 합금 제련소 +block.alloy-smelter.name = 설금 제련소 block.mender.name = 멘더 block.mend-projector.name = 수리 프로젝터 -block.surge-wall.name = 서지 합금벽 -block.surge-wall-large.name = 큰 서지 합금벽 +block.surge-wall.name = 설금 벽 +block.surge-wall-large.name = 큰 설금 벽 block.cyclone.name = 사이클론 block.fuse.name = 퓨즈 block.shock-mine.name = 전격 지뢰 @@ -908,11 +968,11 @@ unit.lich.name = 리치 unit.reaper.name = 사신 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 = 수동으로 채광하는 것은 효율이 낮습니다.\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]컨베이어를 2개 이상 건설 후 광물을 코어로 운반하세요. -tutorial.conveyor.mobile = [accent]컨베이어[]는 붙어 있는 곳에서 받는 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.\n[accent]컨베이어를 화면에 1초정도 클릭하여 작은 노란색 원이 잠깐 나타났다 사라질 때까지 기다리신 후[] 드래그하여 설계하세요.\n\n[accent]컨베이어를 2개 이상 건설 후 광물을 코어로 운반하세요. +tutorial.blockinfo = 블록들은 각각 능력이 다르며, 하위 티어의 드릴은 채광할 수 있는 광물의 종류가 적습니다.\n블럭의 정보를 확인하기 위해서는,[accent] 카테고리의 블럭을 누른 후, "?"버튼을 클릭하여 블럭의 정보를 확인하세요.[]\n[royal]궁금한 블럭의 정보를 아무거나 한번 확인해보세요. +tutorial.conveyor = [accent]컨베이어[]는 붙어있는 곳에서 받는 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.\n[accent]컨베이어를 클릭 후, 건설을 시작하려는 지점을 마우스 왼쪽 버튼으로 꾸욱 누른 뒤[] 드래그하여 설계하세요.\n\n[accent]컨베이어를 2개 이상 건설 후 광물을 코어로 운반하세요. +tutorial.conveyor.mobile = [accent]컨베이어[]는 붙어있는 곳에서 받는 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.\n[accent]컨베이어를 화면에 1초 정도 클릭하여 작은 노란색 원이 잠깐 나타났다 사라질 때까지 기다리신 후[] 드래그하여 설계하세요.\n\n[accent]컨베이어를 2개 이상 건설 후 광물을 코어로 운반하세요. tutorial.turret = 방어 구조물은 [LIGHT_GRAY]적[]을 물리치기 위해 반드시 필요합니다.\n포탑 카테고리의 듀오 포탑을 선택하신 후, 기지 근처에 듀오 포탑을 설치하세요. tutorial.drillturret = 듀오 포탑이 공격하기 위해서는[accent] 구리 탄약[]을 필요로 합니다.\n포탑 근처의 구리 광맥에 드릴을 설치하고 컨베이어로 포탑과 이어서 포탑에 구리를 공급하세요.\n또는 직접 코어에서 광물을 꺼내 포탑에 넣을 수도 있습니다. tutorial.pause = 싱글 플레이에서는 게임을 [accent]일시정지[]할 수 있습니다.\n일시정지하면 교전과 더불어 건설까지 일시정지됩니다.\n\n[accent]스페이스 버튼[]을 눌러 일시정지하세요. @@ -922,8 +982,8 @@ 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.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 = 모든 종류의 블록에서 광범위하게 사용되는 자원입니다. @@ -942,16 +1002,16 @@ item.surge-alloy.description = 순간적으로 전압이 증가하는 전기 특 item.spore-pod.description = 석유를 만들거나 탄약과 합성해 연료로 전환하는데 사용됩니다. item.blast-compound.description = 터렛 및 건설의 재료로 사용되는 휘발성 폭발물.\n연료로도 사용할 수 있지만, 별로 추천하지는 않습니다. item.pyratite.description = 인화성을 가진 재료로, 주로 터렛의 탄약으로 사용됩니다. -liquid.water.description = 여러 포탑을 가속하는데에 사용할 수 있고, 파도와 멜트다운의 탄약으로도 사용되며 여러 공장에서도 사용되는 무구한 가능성을 가진 액체입니다. -liquid.slag.description = 다양한 종류의 금속들이 함께 섞여 녹아있습니다. 셉터를 이용해 다른 광물들로 분리하거나 탄약으로 사용해 적 부대를 향해 살포할 수 있습니다. +liquid.water.description = 여러 포탑을 가속하는 데 사용할 수 있고, 파도와 멜트다운의 탄약으로도 사용되며 여러 공장에서도 사용되는 무구한 가능성을 가진 액체입니다. +liquid.slag.description = 다양한 종류의 금속들이 함께 섞여 녹아있습니다. 원심분리기를 이용해 다른 광물들로 분리하거나 탄약으로 사용해 적 부대를 향해 살포할 수 있습니다. liquid.oil.description = 연소, 폭발 또는 냉각제로 사용될 수 있다. -liquid.cryofluid.description = 건물을 냉각시키는데 가장 효과적인 액체. +liquid.cryofluid.description = 건물을 냉각시키는 데 가장 효과적인 액체. mech.alpha-mech.description = 표준 기체.\n적절한 속도와 공격력을 갖추고 있습니다. mech.delta-mech.description = 빠르게 이동하는 적을 처치하기 위한 가벼운 기체.\n구조물에는 거의 피해를 주지 않지만, 전격 무기를 사용하여 많은 적군을 매우 빠르게 죽일 수 있습니다. mech.tau-mech.description = 지원형 기체.\n총을 발사하여 건물을 치료하고 회복 능력 사용으로 화재를 진압하거나, 반경 내 아군을 치유시킵니다. mech.omega-mech.description = 지상 기체 최종판이자 건물 파괴용으로 적합한 부피가 크고 튼튼한 기체.\n방어 모드는 최대 90% 의 피해를 줄일 수 있습니다. mech.dart-ship.description = 표준 비행선.\n빠르고 가볍지만 공격력이 거의 없고 채광 속도가 느립니다. -mech.javelin-ship.description = 치고 빠지는 공격을 위한 비행선.\n처음에는 느리지만, 가속도가 붙어 엄청난 속도로 미사일 피해를 입힐 수 있으며, 전격 능력을 사용할 수 있습니다.\n\n[royal]지나가기만 해도 보호막을 전부 파괴합니다. +mech.javelin-ship.description = 치고 빠지는 공격을 위한 비행선.\n처음에는 느리지만, 가속도가 붙어 엄청난 속도로 비행하여 적 기지를 향해 미사일을 퍼붓습니다. 전격 능력을 사용할 수 있습니다.\n\n[royal]지나가기만 해도 보호막을 전부 파괴합니다. mech.trident-ship.description = 대형 공중 폭격능력과 빠른 건설능력을 가진 폭격기입니다. mech.glaive-ship.description = 크고 잘 무장된 총을 가진 비행선.\n방화용 리피터가 장착되어 있으며, 가속도와 최대속도가 높습니다. unit.draug.description = 가장 기본적인 채굴 드론입니다 저렴하게 생산 가능하며 자동으로 구리와 납을 캐내 가까운 코어에 저장합니다. @@ -960,33 +1020,33 @@ unit.phantom.description = 첨단 드론 유닛. 플레이어의 건설을 도 unit.dagger.description = 기본 지상 유닛입니다. unit.crawler.description = 지상 유닛. 적이 가까이에 있으면 폭발합니다. unit.titan.description = 고급 지상 유닛입니다.\n원거리 총 대신에 근접 화염 방사기를 가지고 있으며, 지상과 공중 둘다 공격할 수 있습니다. -unit.fortress.description = 중포 지상 유닛.\n높은 공격력을 가진 총과 높은 체력을 가지고 있습니다. +unit.fortress.description = 중무장 포병 지상 유닛.\n높은 공격력을 가진 총과 높은 체력을 가지고 있습니다. unit.eruptor.description = 지상 유닛. 광재를 넣은 파도와 같은 무기를 장착했습니다. unit.wraith.description = 적 핵심 건물 및 유닛을 집중적으로 공격하는 방식을 사용하는 전투기 입니다. unit.ghoul.description = 무겁고 튼튼한 지상 폭격기 입니다.\n주로 적 건물로 이동하여 엄청난 폭격을 가합니다. -unit.revenant.description = 플래이어가 생산가능한 최종 공중 전투기. 폭발물을 쓰는 스웜 포탑과 같은 무기를 사용합니다. -block.message.description = 글을 작성할 수 있습니다. 이 것을 이용하여 같은 팀과 소통을 해보세요. +unit.revenant.description = 플레이어가 생산가능한 최종 공중 전투기. 폭발물을 쓰는 스웜 포탑과 같은 무기를 사용합니다. +block.message.description = 글을 작성할 수 있습니다. 이것을 이용하여 같은 팀과 소통을 해보세요. block.graphite-press.description = 석탄 덩어리를 흑연으로 압축합니다. -block.multi-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.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.pulverizer.description = 고철을 갈아 모래로 만듭니다. 맵에 모래가 부족할 때 유용합니다. block.coal-centrifuge.description = 석유로 석탄을 만듭니다. block.incinerator.description = 불필요한 자원을 전기를 사용해 소각시킬 수 있는 건물입니다. block.power-void.description = 이어져있는 건물의 전기를 모두 없앱니다.\n샌드박스에서만 건설가능. block.power-source.description = 무한한 전력을 공급해주는 블록입니다.\n샌드박스에서만 건설가능. block.item-source.description = 자원을 선택하면 그 자원이 무한하게 생성되는 블록입니다.\n샌드박스에서만 건설가능. block.item-void.description = 자원을 사라지게 만듭니다.\n샌드박스에서만 건설가능. -block.liquid-source.description = 무한한 액체를 출력해냅니다.\n샌드박스에서만 건설가능. +block.liquid-source.description = 무한한 액체를 출력합니다.\n샌드박스에서만 건설가능. block.copper-wall.description = 게임 시작 초기에 방어용으로 적합합니다. block.copper-wall-large.description = 구리 벽 4개를 뭉친 블럭입니다. block.titanium-wall.description = 흑연이 생산될 즈음에 사용하기 적합합니다. @@ -1000,7 +1060,7 @@ block.surge-wall-large.description = 설금 벽 4개를 뭉친 블럭입니다. block.door.description = 눌러서 열고 닫을 수 있는 문.\n만약 문이 열리면, 적들은 총을 쏘며 문을 통과할 수 있습니다. block.door-large.description = 문 4개를 뭉친 블럭입니다. block.mender.description = 주변 블록들을 주기적으로 치료합니다. -block.mend-projector.description = 주변 블록들을 수리기보다 더 넓은 범위, 더 많은 회복량, 더 빠른 속도로 수리합니다. +block.mend-projector.description = 주변 블록들을 멘더보다 더 넓은 범위, 더 많은 회복량, 더 빠른 속도로 수리합니다. block.overdrive-projector.description = 드릴과 컨베이어와 같은 인근 건물의 속도를 높여줍니다. block.force-projector.description = 육각형 보호막을 만들고, 내구도가 다 닳기 전까지 보호막 내로 들어오는 모든 공격을 방어합니다. block.shock-mine.description = 지뢰를 밟는 적에게 피해를 줍니다. 적에게는 거의 보이지 않습니다. 일단 설치 완료된 후에는 적 유닛이 공격하지 않습니다. 그러나 지뢰가 있는 곳은 피해가니 주의하세요. @@ -1010,13 +1070,14 @@ block.junction.description = 2개의 컨베이어 벨트를 교차시키는 다 block.bridge-conveyor.description = 자원 수송 블록.\n지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다. block.phase-conveyor.description = 고급 자원 수송 블록.\n지형이나 건물을 넘어 최대 11개 타일을 건너뛰고 자원을 운송할 수 있습니다. 전기를 사용하고, 기본 터널 컨베이어보다 빠릅니다. block.sorter.description = 자원을 넣어서 필터에 설정된 자원일 경우 바로 앞으로 통과하며, 그렇지 않을 경우 옆으로 이동시킵니다. -block.router.description = 한 방향에서 자원을 넣을 시 최대 3개의 방향으로 균등하게 내보냅니다. 자원을 한곳에서 여러 방향으로 분배하는 데 유용합니다. +block.inverted-sorter.descriptions = 필터처럼 자원을 이동시키는 대신에, 선택한 자원을 양 옆으로 출력합니다. +block.router.description = 한 방향에서 자원을 넣을 시 최대 3개의 다른 방향으로 균등하게 내보냅니다. 자원을 한 곳에서 여러 방향으로 분배하는 데 유용합니다. block.distributor.description = 자원을 최대 7개의 다른 방향으로 균등하게 분베하는 고급 분배기. -block.overflow-gate.description = 평소에는 자원의 들어온 방향으로 자원을 통과시키지만, 정면이 자원이 꽉차거나 다른 사유로 막힐 시 옆으로 자원을 내보냅니다. -block.mass-driver.description = 자원 수송 포탑\n자원을 모아 전기를 사용하여 또 다른 매스 드라이버로 발사합니다.\n[ROYAL]받을 때도 전기를 사용합니다. -block.mechanical-pump.description = 느린 속도로 물을 퍼올리나 전기를 사용하지 않는 펌프입니다. -block.rotary-pump.description = 전기를 사용해 빠른 속도로 물을 끌어올릴 수 있는 펌프입니다.\n\n[ROYAL]타일당 물을 퍼올리는 속도가 가장 빠릅니다. -block.thermal-pump.description = 3x3범위의 액체타일에서 액체를 빠르게 퍼올리나 타일당 퍼올리는 속도는 동력 펌프보다 느립니다. +block.overflow-gate.description = 평소에는 자원의 들어온 방향으로 자원을 통과시키지만, 정면이 자원으로 꽉 차거나 다른 사유로 막힐 시 옆으로 자원을 내보냅니다. +block.mass-driver.description = 자원 수송 포탑\n모인 자원을 전기를 사용하여 또 다른 매스 드라이버로 발사합니다.\n[ROYAL]받을 때도 전기를 사용합니다. +block.mechanical-pump.description = 느린 속도로 액체를 퍼올리나, 전기를 사용하지 않는 펌프입니다. +block.rotary-pump.description = 전기를 사용해 빠른 속도로 액체를 끌어올릴 수 있는 펌프입니다.\n\n[ROYAL]타일당 액체를 퍼올리는 속도가 가장 빠릅니다. +block.thermal-pump.description = 가장 강력한 펌프. block.conduit.description = 기본 파이프\n액체를 배치된 방향으로 느리게 운송합니다. block.pulse-conduit.description = 고급 파이프\n기본 파이프보다 액체 운송 속도가 빠릅니다. block.liquid-router.description = 액체를 다른 방향으로 분배할 수 있게 하는 블럭입니다. @@ -1030,40 +1091,40 @@ block.surge-tower.description = 전기를 연결된 대상과 연동시킵니다 block.battery.description = 전력 생산량에 여유가 있을경우, 생산된 잉여 전력을 여기에 저장합니다.\n\n[ROYAL]이것을 이용해 한순간에 많은 전력을 사용하는 포탑들을 보조가능합니다. block.battery-large.description = 일반 배터리보다 훨씬 많은 량의 전력을 저장합니다.\n\n[ROYAL]배터리 9개를 설치하는 것보다 효율이 좋습니다. block.combustion-generator.description = 인화성 물질을 태워 소량의 전력을 생산합니다. -block.thermal-generator.description = 건설가능한 열이 있는 타일 위에 건설하면 전력을 생산합니다.\n\n[ROYAL]용암 웅덩이 혹은 열기지대에서 무한정 열을 발산합니다. +block.thermal-generator.description = 열이 있는 타일 위에 건설하면 전력을 생산합니다.\n\n[ROYAL]용암 웅덩이 혹은 열기지대에서 무한정 열을 발산합니다. block.turbine-generator.description = 화력 발전기보다 효율적이지만, 액체가 추가적으로 필요합니다.\n\n[ROYAL]일반 타일에서 물추출기 1개로 2개가 가동가능합니다. block.differential-generator.description = 냉각수와 파이라타이트의 온도 차를 이용해 안정적으로 원자로에 버금가는 양의 전기를 생산합니다. -block.rtg-generator.description = 방사성동위원소 열전기 발전기\n토륨또는 현상 구조체를 사용하며, 냉각이 필요없는 발전을 하지만 토륨 원자로에 비해 발전량이 매우 적습니다. +block.rtg-generator.description = 방사성동위원소 열전기 발전기\n토륨 또는 메타를 사용하며, 냉각이 필요 없는 발전을 하지만 토륨 원자로에 비해 발전량이 매우 적습니다. block.solar-panel.description = 태양광으로 극소량의 전기을 생산합니다. block.solar-panel-large.description = 일반 태양 전지판보다 훨씬 발전량이 많지만, 건축비도 훨씬 비쌉니다. block.thorium-reactor.description = 토륨을 이용해 막대한 양의 전기를 생산합니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다.\n\n[royal]폭발로 인한 피해를 버틸 수 있는 건물은 없습니다. -block.impact-reactor.description = 최첨단 발전기\n폭발물과 냉각수를 이용해 최고의 효율로 매우 많은 양의 전기를 생산할 수 있습니다. 발전을 시작하는데 전기가 필요하며 발전기를 가동하는데 시간이 많이 걸립니다.\n[royal]오버드라이브 프로젝터로 10000이상의 전기를 생산할 수 있으며, 가동중에 전기가 끊기면 가동을 다시 해야되기 때문에 창고,물탱크,배터리 등을 주위에 설치하고 나서 가동하는 것을 추천드립니다. -block.mechanical-drill.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.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[royal]모래 또는 고철을 이용하여 창조경제가 가능합니다. +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최고로 튼튼하며 막대한 양의 자원들을 저장할 수 있습니다. -block.vault.description = 각종 대량의 자원을 저장할 수 있습니다.[LIGHT_GRAY]언로더[]를 사용하여 창고에서 물건을 회수할 수 있습니다.\n\n[royal]포탑의 탄약, 핵융합로의 폭발물, 원자로 냉각수의 티타늄등 여러 자원들의 여분을 미리 저장하여 혹시모를 사태를 예방하세요. -block.container.description = 각종 소량의 자원을 저장할 수 있습니다.[LIGHT_GRAY]언로더[]를 사용하여 컨테이너에서 자원을 회수할 수 있습니다.\n\n[royal]또는 컨테이너를 클릭하고 자원을 눌러 자원을 강탈해갈수도 있습니다. -block.unloader.description = 컨테이너, 창고 또는 코어에서 인접한 블록으로 자원을 출하합니다. 출하시킬 자원의 종류는 언로더를 눌러 지정할 수 있습니다. -block.launch-pad.description = 출격할 필요 없이 자원을 수송시킵시다.\n\n[royal]캠페인에서 이 것을 이용해 게임 중에 테크 트리를 올릴 수 있습니다. +block.vault.description = 각종 자원을 대량으로 저장할 수 있습니다.[LIGHT_GRAY]언로더[]를 사용하여 창고에서 물건을 회수할 수 있습니다.\n\n[royal]포탑의 탄약, 핵융합로의 폭발물, 원자로 냉각수의 티타늄등 여러 자원들의 여분을 미리 저장하여 혹시 모를 사태를 예방하세요. +block.container.description = 각종 자원을 저장할 수 있습니다.[LIGHT_GRAY]언로더[]를 사용하여 컨테이너에서 자원을 회수할 수 있습니다.\n\n[royal]또는 컨테이너를 클릭하고 자원을 눌러 자원을 빼낼 수도 있습니다. +block.unloader.description = 컨테이너, 창고 또는 코어에서 인접한 블록으로 자원을 내보냅니다. 내보낼 자원의 종류는 언로더를 눌러 지정할 수 있습니다. +block.launch-pad.description = 출격할 필요 없이 자원을 수송시킵시다.\n\n[royal]캠페인에서 이것을 이용해 게임 중에 연구가 가능합니다. block.launch-pad-large.description = 출격 패드의 강화버전\n더 많은 자원을 더 자주 출격시킵니다.\n\n[ROYAL]크기도 더 큽니다. block.duo.description = 소형 포탑입니다.\n가장 기본적인 포탑으로 약한 탄환을 발사합니다. block.scatter.description = 중형 대공 포탑입니다.\n납이나 고철 덩어리를 적에게 쏩니다. block.scorch.description = 소형 포탑입니다.\n지상의 적을 매우 강력한 화염으로 지져버립니다. 근거리에서 효과적입니다.\n\n[royal]유닛 상대로 무지막지한 공격력을 보여줍니다. -block.hail.description = 소형 포탑입니다.\n장거리로 포탄을 발사합니다. +block.hail.description = 소형 포탑입니다.\n장거리 포탄을 발사합니다. block.wave.description = 중형 포탑입니다. 대상에게 포탑에 공급된 액체를 발사합니다. 물또는 냉각수가 공급되면 자동으로 불을 끕니다. block.lancer.description = 중형 포탑입니다.\n적을 레이저로 관통합니다. block.arc.description = 소형 포탑입니다.\n적을 전기로 지집니다. block.swarmer.description = 중형 포탑입니다.\n지상과 공중 적 모두를 공격하는 유도 미사일 포탑입니다. block.salvo.description = 중형 포탑입니다.\n3연발 탄환을 발사합니다. block.fuse.description = 대형 포탑입니다.\n강력한 단거리 빔을 쏩니다. -block.ripple.description = 대형 포탑입니다.\n여러 발의 사격을 동시에 합니다. +block.ripple.description = 대형 포탑입니다.\n여러 발의 탄환을 동시에 사격합니다. block.cyclone.description = 대형 포탑입니다.\n초고속으로 사격합니다. block.spectre.description = 초대형 포탑입니다.\n한 번에 두 발의 강력한 총알을 쏩니다. block.meltdown.description = 초대형 포탑.\n장거리의 강력한 열광선을 발사합니다. diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index ace0cf6f11..8c63a05598 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -1,10 +1,10 @@ -credits.text = Gemaakt door [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] +credits.text = Gemaakt door [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] - credits = Credits contributors = Vertalers en Medewerkers discord = Word lid van de Mindustry Discord! link.discord.description = De officiële Mindustry discord chatroom link.github.description = Game broncode -link.changelog.description = List of update changes +link.changelog.description = Lijst van Updates link.dev-builds.description = Onstabiele ontwikkeling builds link.trello.description = Officiële trello-bord voor geplande functies link.itch.io.description = itch.io pagina met pc-downloads en webversie @@ -12,15 +12,32 @@ link.google-play.description = Google Play store vermelding link.wiki.description = Officiële Mindustry wiki linkfail = Kan link niet openen!\nDe URL is gekopieerd naar je klembord screenshot = Schermafbeeling opgeslagen in {0} -screenshot.invalid = Map too large, potentially not enough memory for screenshot. -gameover = Game Over +screenshot.invalid = Map is te groot, Mogelijk niet genoeg ruimte op apparaat. +gameover = Spel afgelopen gameover.pvp = het[accent] {0}[] team heeft gewonnen! highscore = [accent]Nieuw topscore! -load.sound = Sounds -load.map = Maps -load.image = Images -load.content = Content -load.system = System +copied = Copied. +load.sound = Geluid +load.map = Mappen +load.image = Afbeeldingen +load.content = inhoud +load.system = Systeem +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Waves Verslagen:[accent] {0} stat.enemiesDestroyed = Vijanden Vernietigd:[accent] {0} stat.built = Gebouwen Gebouwd:[accent] {0} @@ -28,31 +45,32 @@ stat.destroyed = Gebouwen Vernietigd:[accent] {0} stat.deconstructed = Gebouwen Gesloopt:[accent] {0} stat.delivered = Middelen Gelanceerd: stat.rank = Eindrang: [accent]{0} -launcheditems = [accent]Launched Items +launcheditems = [accent]Gelanceerde items +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = Weet je zeker dat je de map wilt verwijderen? "[accent]{0}[]"? level.highscore = Topscore: [accent]{0} level.select = Selecteer Level level.mode = Spelmodus: -showagain = Don't show again next session -coreattack = < Core is under attack! > +showagain = Niet Laten zien in de volgende sessie +coreattack = < Core wordt aangevallen! > nearpoint = [[ [scarlet]LEAVE DROP POINT IMMEDIATELY[] ]\nannihilation imminent database = Core Database -savegame = Save Game -loadgame = Load Game -joingame = Join Game -addplayers = Add/Remove Players -customgame = Custom Game -newgame = New Game +savegame = Opslaan +loadgame = Laden +joingame = Treed toe +customgame = Aangepast spel +newgame = Nieuw spel none = minimap = Minimap -close = Close +position = Position +close = Aflsuiten website = Website -quit = Quit +quit = Stoppen save.quit = Save & Quit -maps = Maps +maps = Mappen maps.browse = Browse Maps -continue = Continue -maps.none = [LIGHT_GRAY]No maps found! +continue = Ga door +maps.none = [LIGHT_GRAY]Geen map gevonden! invalid = Invalid preparingconfig = Preparing Config preparingcontent = Preparing Content @@ -60,37 +78,56 @@ uploadingcontent = Uploading Content uploadingpreviewfile = Uploading Preview File committingchanges = Comitting Changes done = Done -about.button = About -name = Name: -noname = Pick a[accent] player name[] first. -filename = File Name: +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. +about.button = Over +name = Naam: +noname = Maak eerst een[accent] Speler naam[]. +filename = Bestandsnaam: unlocked = New content unlocked! -completed = [accent]Completed -techtree = Tech Tree -research.list = [LIGHT_GRAY]Research: -research = Research -researched = [LIGHT_GRAY]{0} researched. -players = {0} players online -players.single = {0} player online -server.closing = [accent]Closing server... -server.kicked.kick = You have been kicked from the server! +completed = [accent]Voltooid +techtree = Tech boom +research.list = [LIGHT_GRAY]Onderzoek: +research = Onderzoek +researched = [LIGHT_GRAY]{0} Onderzocht. +players = {0} Spelers online +players.single = {0} Speler online +server.closing = [accent]Server aan het sluiten... +server.kicked.kick = Je bent verwijderd van deze sessie. server.kicked.whitelist = You are not whitelisted here. -server.kicked.serverClose = Server closed. -server.kicked.vote = You have been vote-kicked. Goodbye. -server.kicked.clientOutdated = Outdated client! Update your game! -server.kicked.serverOutdated = Outdated server! Ask the host to update! -server.kicked.banned = You are banned on this server. -server.kicked.typeMismatch = This server is not compatible with your build type. +server.kicked.serverClose = Server afgesloten... +server.kicked.vote = Je bent ge vote-kicked. Tot ziens. +server.kicked.clientOutdated = Verouderde versie! Update jouw spel! +server.kicked.serverOutdated = Verouderde server! Vraag de host om te upgraden! +server.kicked.banned = Je bent verbannen van deze server. +server.kicked.typeMismatch = Deze server is niet compitabel met jouw bouwtype. server.kicked.playerLimit = This server is full. Wait for an empty slot. -server.kicked.recentKick = You have been kicked recently.\nWait before connecting again. -server.kicked.nameInUse = There is someone with that name\nalready on this server. -server.kicked.nameEmpty = Your chosen name is invalid. -server.kicked.idInUse = You are already on this server! Connecting with two accounts is not permitted. -server.kicked.customClient = This server does not support custom builds. Download an official version. -server.kicked.gameover = Game over! -server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[] -host.info = The [accent]host[] button hosts a server on port [scarlet]6567[]. \nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings. -join.info = Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP. +server.kicked.recentKick = Je bent reeds verwijderd.\nWacht voordat je opnieuw verbindt. +server.kicked.nameInUse = Er is al iemand met die naam\nop deze server. +server.kicked.nameEmpty = Je gekozen naam is niet geldig. +server.kicked.idInUse = Je bent al verbonden met deze server! Verbinden met 2 accounts is verboden. +server.kicked.customClient = Deze server ondersteunt geen aangepaste spellen . Download de officiele versie. +server.kicked.gameover = Spel afgelopen +server.versions = Jouw versie:[accent] {0}[]\nServer versie:[accent] {1}[] +host.info = De [accent]host[] knop hosts `een server op port [scarlet]6567[]. \nIedereen op hetzelfde [LIGHT_GRAY]wifi or locaal netwerk[] zou jouw server in hun serverlijst moeten zien.\n\nAls je wilt dan vrienden vanaf overal kunnen meedoen via IP, [accent]port forwarding[] is nodig.\n\n[LIGHT_GRAY]Note: IAls iemand moeilijkheden heeft met het meedoen aan jouw spel, kijk of je Mindustry in je firewall instellingen toegang hebt gegeven to jouw locaal netwerk. +join.info = Hier kan je een [accent]server IP[] invoeren om te verbinden, of om[accent]locale netwerken[] te vinden.\nBeide LAN en WAN multiplayer is ondersteund.\n\n[LIGHT_GRAY]Note: Er is geen automatische globale serverlijst; Als je met iemands IP wil verbinden, Zou je moeten vragen om hun IP. hostserver = Host Game invitefriends = Invite Friends hostserver.mobile = Host\nGame @@ -140,7 +177,6 @@ server.port = Port: server.addressinuse = Address already in use! server.invalidport = Invalid port number! server.error = [crimson]Error hosting server: [accent]{0} -save.old = This save is for an older version of the game, and can no longer be used.\n\n[LIGHT_GRAY]Save backwards compatibility will be implemented in the full 4.0 release. save.new = New Save save.overwrite = Are you sure you want to overwrite\nthis save slot? overwrite = Overwrite @@ -174,6 +210,7 @@ warning = Warning. confirm = Confirm delete = Delete view.workshop = View In Workshop +workshop.listing = Edit Workshop Listing ok = OK open = Open customize = Customize @@ -191,7 +228,12 @@ classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic 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... +reloading = [accent]Reloading Mods... saving = [accent]Saving... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Wave {0} wave.waiting = [LIGHT_GRAY]Wave in {0} wave.waveInProgress = [LIGHT_GRAY]Wave in progress @@ -210,11 +252,17 @@ map.nospawn = This map does not have any cores for the player to spawn in! Add a map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor. 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. -map.publish.error = Error publishing map: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Brush editor.openin = Open In Editor editor.oregen = Ore Generation @@ -344,7 +392,6 @@ campaign = Campaign load = Load save = Save fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Please restart your game for the language settings to take effect. settings = Settings @@ -352,12 +399,13 @@ tutorial = Tutorial tutorial.retake = Re-Take Tutorial editor = Editor mapeditor = Map Editor -donate = Donate abandon = Abandon abandon.text = This zone and all its resources will be lost to the enemy. locked = Locked complete = [LIGHT_GRAY]Complete: -zone.requirement = Wave {0} in zone {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Resume Zone:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]Best Wave: {0} launch = < LAUNCH > @@ -368,11 +416,13 @@ launch.confirm = This will launch all resources in your core.\nYou will not be a launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Uncover configure = Configure Loadout +bannedblocks = Banned Blocks +addall = Add All configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}. configure.invalid = Amount must be a number between 0 and {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.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Resources Detected: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -428,15 +478,14 @@ 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 > +clear = Clear +banned = [scarlet]Banned yes = Yes no = No info.title = Info error.title = [crimson]An error has occured error.crashtitle = An error has occured -attackpvponly = [scarlet]Only available in Attack/PvP modes blocks.input = Input blocks.output = Output blocks.booster = Booster @@ -518,6 +567,7 @@ category.optional = Optional Enhancements setting.landscape.name = Lock Landscape setting.shadows.name = Shadows setting.linear.name = Linear Filtering +setting.hints.name = Hints setting.animatedwater.name = Animated Water setting.animatedshields.name = Animated Shields setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] @@ -547,6 +597,7 @@ setting.fps.name = Show FPS setting.vsync.name = VSync setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance) setting.minimap.name = Show Minimap +setting.position.name = Show Player Position setting.musicvol.name = Music Volume setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Mute Music @@ -558,6 +609,8 @@ setting.publichost.name = Public Game Visibility setting.chatopacity.name = Chat Opacity setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Display In-Game Chat +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. 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 @@ -569,13 +622,16 @@ category.multiplayer.name = Multiplayer command.attack = Attack command.rally = Rally command.retreat = Retreat -keybind.gridMode.name = Block Select -keybind.gridModeShift.name = Category Select +keybind.clear_building.name = Clear Building keybind.press = Press a key... 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.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Toggle Fullscreen keybind.select.name = Select/Shoot keybind.diagonal_placement.name = Diagonal Placement @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Zoom Hold keybind.zoom.name = Zoom keybind.menu.name = Menu keybind.pause.name = Pause +keybind.pause_building.name = Pause/Resume Building 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.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Toggle menus keybind.chat_history_prev.name = Chat history prev keybind.chat_history_next.name = Chat history next @@ -604,6 +662,7 @@ mode.survival.name = Survival mode.survival.description = The normal mode. Limited resources and automatic incoming waves. mode.sandbox.name = Sandbox mode.sandbox.description = Infinite resources and no timer for waves. +mode.editor.name = Editor mode.pvp.name = PvP mode.pvp.description = Fight against other players locally. mode.attack.name = Attack @@ -790,6 +849,7 @@ block.junction.name = Junction block.router.name = Router block.distributor.name = Distributor block.sorter.name = Sorter +block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.overflow-gate.name = Overflow Gate block.silicon-smelter.name = Silicon Smelter @@ -1010,6 +1070,7 @@ block.junction.description = Acts as a bridge for two crossing conveyor belts. U block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. 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.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Accepts items from one direction and outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets. block.distributor.description = An advanced router which splits items to up to 7 other directions equally. block.overflow-gate.description = A combination splitter and router that only outputs to the left and right if the front path is blocked. diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 1151996f3c..9740efd921 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -16,11 +16,28 @@ screenshot.invalid = Kaart te groot, mogelijks te weinig geheugen voor een scree gameover = Game Over gameover.pvp = Het[accent] {0}[] team heeft gewonnen! highscore = [accent]Nieuw record! +copied = Copied. load.sound = Sounds load.map = Maps load.image = Images load.content = Content load.system = System +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Je overleefde tot aanvalsgolf: [accent]{0}[]. stat.enemiesDestroyed = Vijanden vernietigd:[accent] {0} stat.built = Gebouwen gebouwd:[accent] {0} @@ -29,6 +46,7 @@ stat.deconstructed = Gebouwen afgebroken:[accent] {0} stat.delivered = Gronstoffen meegenomen: stat.rank = Eindresultaat: [accent]{0} launcheditems = [accent]Meegenomen grondstoffen +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = Ben je zeker dat je de kaart "[accent]{0}[]" wilt verwijderen? level.highscore = Beste score: [accent]{0} level.select = Selecteer level @@ -40,11 +58,11 @@ database = Kern Database savegame = opslaan loadgame = openen joingame = Multiplayer -addplayers = Voeg toe/verwijder spelers customgame = Aangepaste versie newgame = Nieuw spel none = minimap = Kaartje +position = Position close = Sluit website = Website quit = Verlaat @@ -60,6 +78,25 @@ uploadingcontent = Uploading Content uploadingpreviewfile = Uploading Preview File committingchanges = Comitting Changes done = Done +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Extra info name = Naam: noname = Kies eerst[accent] een naam[]. @@ -140,7 +177,6 @@ server.port = Poort: server.addressinuse = Dit adres wordt al gebruikt! server.invalidport = Ongeldige poort! server.error = [crimson]Error hosting server: [accent]{0} -save.old = Deze save word niet meer ondersteund\n\n[LIGHT_GRAY]Terugwaardse compatibiliteit zal geïmplementeerd worden in de volledige 4.0 versie save.new = Nieuwe save save.overwrite = Ben je zeker dat je deze save\nwil overschrijven? overwrite = Overschrijf @@ -174,6 +210,7 @@ warning = Waarschuwing. confirm = Bevestig delete = Verwijder view.workshop = View In Workshop +workshop.listing = Edit Workshop Listing ok = OK open = Open customize = Pas aan @@ -191,7 +228,12 @@ classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic quit.confirm = Weet je zeker dat je wilt stoppen? 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]Aan het laden... +reloading = [accent]Reloading Mods... saving = [accent]Aan het opslaan... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Golf {0} wave.waiting = [LIGHT_GRAY]Golf in {0} wave.waveInProgress = [LIGHT_GRAY]Wave in progress @@ -210,11 +252,17 @@ map.nospawn = This map does not have any cores for the player to spawn in! Add a 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. -map.publish.error = Error publishing map: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Brush editor.openin = Open In Editor editor.oregen = Ore Generation @@ -344,7 +392,6 @@ campaign = Campaign load = Load save = Save fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Please restart your game for the language settings to take effect. settings = Settings @@ -352,12 +399,13 @@ tutorial = Tutorial tutorial.retake = Re-Take Tutorial editor = Editor mapeditor = Map Editor -donate = Donate 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} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Resume Zone:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]Best Wave: {0} launch = < LAUNCH > @@ -368,11 +416,13 @@ launch.confirm = This will launch all resources in your core.\nYou will not be a launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Uncover configure = Configure Loadout +bannedblocks = Banned Blocks +addall = Add All configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}. configure.invalid = Amount must be a number between 0 and {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.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Resources Detected: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -428,15 +478,14 @@ 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 > +clear = Clear +banned = [scarlet]Banned yes = Yes no = No info.title = Info error.title = [crimson]An error has occured error.crashtitle = An error has occured -attackpvponly = [scarlet]Only available in Attack/PvP modes blocks.input = Input blocks.output = Output blocks.booster = Booster @@ -518,6 +567,7 @@ category.optional = Optional Enhancements setting.landscape.name = Lock Landscape setting.shadows.name = Shadows setting.linear.name = Linear Filtering +setting.hints.name = Hints setting.animatedwater.name = Animated Water setting.animatedshields.name = Animated Shields setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] @@ -547,6 +597,7 @@ setting.fps.name = Show FPS setting.vsync.name = VSync setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance, disables animations) setting.minimap.name = Show Minimap +setting.position.name = Show Player Position setting.musicvol.name = Music Volume setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Mute Music @@ -558,6 +609,8 @@ setting.publichost.name = Public Game Visibility setting.chatopacity.name = Chat Opacity setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Display In-Game Chat +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. 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 @@ -569,13 +622,16 @@ category.multiplayer.name = Multiplayer command.attack = Attack command.rally = Rally command.retreat = Retreat -keybind.gridMode.name = Block Select -keybind.gridModeShift.name = Category Select +keybind.clear_building.name = Clear Building keybind.press = Press a key... 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.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Toggle Fullscreen keybind.select.name = Select/Shoot keybind.diagonal_placement.name = Diagonal Placement @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Zoom Hold keybind.zoom.name = Zoom keybind.menu.name = Menu keybind.pause.name = Pause +keybind.pause_building.name = Pause/Resume Building 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.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Toggle menus keybind.chat_history_prev.name = Chat history prev keybind.chat_history_next.name = Chat history next @@ -604,6 +662,7 @@ mode.survival.name = Survival mode.survival.description = The normal mode. Limited resources and automatic incoming waves. mode.sandbox.name = Sandbox mode.sandbox.description = Infinite resources and no timer for waves. +mode.editor.name = Editor mode.pvp.name = PvP mode.pvp.description = Fight against other players locally. mode.attack.name = Attack @@ -790,6 +849,7 @@ block.junction.name = Junction block.router.name = Router block.distributor.name = Distributor block.sorter.name = Sorter +block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.overflow-gate.name = Overflow Gate block.silicon-smelter.name = Silicon Smelter @@ -1010,6 +1070,7 @@ block.junction.description = Acts as a bridge for two crossing conveyor belts. U block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. 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.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Accepts items from one direction and outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets. block.distributor.description = An advanced router which splits items to up to 7 other directions equally. block.overflow-gate.description = A combination splitter and router that only outputs to the left and right if the front path is blocked. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 6821067bad..02056031d3 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -3,7 +3,7 @@ credits = Zasłużeni contributors = Tłumacze i pomocnicy discord = Odwiedź nasz serwer Discord! link.discord.description = Oficjalny serwer Discord Mindustry -link.github.description = Kod Gry +link.github.description = Kod źródłowy gry link.changelog.description = Informacje o aktualizacjach link.dev-builds.description = Niestabilne wersje gry link.trello.description = Oficjalna tablica Trello z planowanym funkcjami @@ -13,14 +13,31 @@ link.wiki.description = Oficjana Wiki Mindustry linkfail = Nie udało się otworzyć linku!\nURL został skopiowany. screenshot = Zapisano zdjęcie do {0} screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje miejsca w pamięci urządzenia. -gameover = Rdzeń został zniszczony. +gameover = Koniec Gry gameover.pvp = Zwyciężyła drużyna [accent]{0}[]! highscore = [YELLOW] Nowy rekord! +copied = Copied. load.sound = Dźwięki load.map = Mapy load.image = Obrazy load.content = Treść load.system = System +load.mod = Mody +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Fale powstrzymane:[accent] {0} stat.enemiesDestroyed = Przeciwnicy zniszczeni:[accent] {0} stat.built = Budynki zbudowane:[accent] {0} @@ -29,38 +46,58 @@ stat.deconstructed = Budynki zrekonstruowane:[accent] {0} stat.delivered = Surowce wystrzelone: stat.rank = Ocena: [accent]{0} launcheditems = [accent]Wystrzelone przedmioty +launchinfo = [unlaunched][[LAUNCH] rdzeń aby uzyskać przedmioty oznaczone na niebiesko. map.delete = Jesteś pewny, że chcesz usunąć "[accent]{0}[]"? level.highscore = Rekord: [accent]{0} level.select = Wybrany poziom level.mode = Tryb gry: showagain = Nie pokazuj tego więcej coreattack = < Rdzeń jest atakowany! > -nearpoint = [[ [scarlet]OPUŚĆ PUNKT ZRZUTU NATYCHMIAST[] ]\nunicestwienie nadchodzi +nearpoint = [[ [scarlet]OPUŚĆ PUNKT ZRZUTU NATYCHMIAST[] ]\nnadciąga zniszczenie database = Centralna baza danych savegame = Zapisz Grę -loadgame = Wczytaj grę -joingame = Gra wieloosobowa -addplayers = Dodaj/Usuń graczy +loadgame = Wczytaj Grę +joingame = Dołącz Do Gry customgame = Własna Gra newgame = Nowa Gra -none = +none = minimap = Minimapa +position = Position close = Zamknij website = Strona Gry quit = Wyjdź -save.quit = Save & Quit +save.quit = Zapisz & Wyjdź maps = Mapy -maps.browse = Browse Maps +maps.browse = Przeglądaj Mapy continue = Kontynuuj maps.none = [LIGHT_GRAY]Nie znaleziono żadnych map! -invalid = Invalid -preparingconfig = Preparing Config -preparingcontent = Preparing Content -uploadingcontent = Uploading Content -uploadingpreviewfile = Uploading Preview File -committingchanges = Comitting Changes -done = Done -about.button = O grze +invalid = Nieprawidłowy +preparingconfig = Przygotowywanie Konfiguracji +preparingcontent = Przygotowywanie Zawartości +uploadingcontent = Przesyłanie Zawartości +uploadingpreviewfile = Przesyłanie Pliku Podglądu +committingchanges = Zatwierdzanie Zmian +done = Gotowe +mods.alphainfo = Pamiętaj, że mody są wersji alpha, i[scarlet] mogą być pełne błędów[].\nZgłaszaj wszystkie znalezione problemy na Mindustry Github lub Discord. +mods.alpha = [scarlet](Alpha) +mods = Mody +mods.none = [LIGHT_GRAY]Nie znaleziono modów! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Włączony +mod.disabled = [scarlet]Wyłączony +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = Gra się wyłączy aby wprowadzić zmiany moda. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Importuj Mod +mod.import.github = Import Github Mod +mod.remove.confirm = Ten mod zostanie usunięty. +mod.author = [LIGHT_GRAY]Autor:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. +about.button = O Grze name = Nazwa: noname = Najpierw wybierz [accent]nazwę gracza[] filename = Nazwa Pliku: @@ -74,7 +111,7 @@ players = {0} graczy online players.single = {0} gracz online server.closing = [accent] Zamykanie serwera... server.kicked.kick = Zostałeś wyrzucony z serwera! -server.kicked.whitelist = You are not whitelisted here. +server.kicked.whitelist = Nie ma cię tu na białej liście. server.kicked.serverClose = Serwer został zamknięty. server.kicked.vote = Zostałeś wyrzucony z gry. Żegnaj. server.kicked.clientOutdated = Nieaktualna gra! Zaktualizują ją! @@ -92,17 +129,17 @@ server.versions = Twoja wersja gry:[accent] {0}[]\nWersja gry serwera:[accent] { host.info = Przycisk [accent]host[] hostuje serwer na porcie [scarlet]6567[] i [scarlet]6568.[]\nKtokolwiek z tym samym [LIGHT_GRAY]wifi lub hotspotem[] powinien zobaczyć twój serwer.\n\nJeśli chcesz, aby każdy z twoim IP mógł dołączyć, [accent]przekierowywanie portów[] jest potrzebne.\n\n[LIGHT_GRAY]Notka:Jeśli ktokolwiek ma problem z dołączeniem do gry, upewnij się, że udostępniłeś Mindustry dostęp do sieci. join.info = Tutaj możesz wpisać [accent]IP serwera[], aby dołączyć lub wyszukaj [accent]serwery w lokalnej sieci[], do których chcesz dołączyć .\nGra wieloosobowa na LAN i WAN jest wspomagana.\n\n[LIGHT_GRAY]Notka: Nie ma automatycznej listy wszystkich serwerów; jeśli chcesz dołączyć przez IP, musisz zapytać się hosta o IP. hostserver = Stwórz Serwer -invitefriends = Invite Friends -hostserver.mobile = Hostuj\ngrę +invitefriends = Zaproś Znajomych +hostserver.mobile = Hostuj\nGrę host = Hostuj hosting = [accent] Otwieranie serwera... hosts.refresh = Odśwież hosts.discovering = Wyszukiwanie gier w sieci LAN -hosts.discovering.any = Discovering games +hosts.discovering.any = Wyszukiwanie gier server.refreshing = Odświeżanie serwera hosts.none = [lightgray] Brak serwerów w sieci LAN! host.invalid = [scarlet] Nie można połączyć się z hostem. -trace = Zlokalizuj gracza +trace = Zlokalizuj Gracza trace.playername = Nazwa gracza: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Wyjątkowe ID: [accent]{0} @@ -113,16 +150,16 @@ server.bans = Bany server.bans.none = Nie znaleziono zbanowanych osób! server.admins = Admini server.admins.none = Nie znaleziono adminów! -server.add = Dodaj serwer +server.add = Dodaj Serwer server.delete = Czy na pewno chcesz usunąć ten serwer? -server.edit = Edytuj serwer +server.edit = Edytuj Serwer server.outdated = [crimson]Przestarzały serwer![] server.outdated.client = [crimson]Przestarzały klient![] server.version = [lightgray]Wersja: {0} server.custombuild = [yellow]Zmodowany klient confirmban = Jesteś pewny, że chcesz zbanować tego gracza? confirmkick = Jesteś pewny, że chcesz wyrzucić tego gracza? -confirmvotekick = Are you sure you want to vote-kick this player? +confirmvotekick = Jesteś pewny, że chcesz głosować za wyrzuceniem tego gracza? confirmunban = Jesteś pewny, że chcesz odbanować tego gracza? confirmadmin = Jesteś pewny, że chcesz dać rangę admina temu graczowi? confirmunadmin = Jesteś pewny, że chcesz zabrać rangę admina temu graczowi? @@ -133,14 +170,13 @@ disconnect.error = Błąd połączenia. disconnect.closed = Połączenie zostało zamknięte. disconnect.timeout = Przekroczono limit czasu. disconnect.data = Nie udało się załadować mapy! -cantconnect = Unable to join game ([accent]{0}[]). +cantconnect = Nie można dołączyć do gry ([accent]{0}[]). connecting = [accent]Łączenie... connecting.data = [accent]Ładowanie danych świata... server.port = Port: server.addressinuse = Adres jest już w użyciu! server.invalidport = Nieprawidłowy numer portu. server.error = [crimson]Błąd hostowania serwera: [accent]{0} -save.old = Ten zapis jest ze starej wersji i gra nie może go teraz wczytać.\n\n[LIGHT_GRAY]Wsparcie starych zapisów będzie w pełnej wersji 4.0. save.new = Nowy zapis save.overwrite = Czy na pewno chcesz nadpisać zapis gry? overwrite = Nadpisz @@ -153,13 +189,13 @@ save.export = Eksportuj save.import.invalid = [accent]Zapis gry jest niepoprawny! save.import.fail = [crimson]Nie udało się zaimportować zapisu: [accent] {0} save.export.fail = [crimson]Nie można wyeksportować zapisu: [accent] {0} -save.import = Importuj zapis +save.import = Importuj Zapis save.newslot = Zapisz nazwę: -save.rename = Zmień nazwę +save.rename = Zmień Nazwę save.rename.text = Nowa nazwa: selectslot = Wybierz zapis. slot = [accent]Slot {0} -editmessage = Edit Message +editmessage = Edytuj Wiadomość save.corrupted = [accent]Zapis gry jest uszkodzony lub nieprawidłowy! Jeżeli aktualizowałeś grę, najprawdopodobniej jest to zmiana w formacie zapisu i [scarlet]nie jest[] to błąd. empty = on = Włączone @@ -167,31 +203,37 @@ off = Wyłączone save.autosave = Autozapis: {0} save.map = Mapa: {0} save.wave = Fala {0} -save.mode = Gamemode: {0} -save.date = Ostatnio zapisano: {0} +save.mode = Tryb Gry: {0} +save.date = Ostatnio Zapisane: {0} save.playtime = Czas gry: {0} warning = Uwaga. confirm = Potwierdź delete = Usuń -view.workshop = View In Workshop -ok = Ok +view.workshop = Pokaż w Warsztacie +workshop.listing = Edit Workshop Listing +ok = OK open = Otwórz customize = Dostosuj cancel = Anuluj -openlink = Otwórz link -copylink = Kopiuj link +openlink = Otwórz Link +copylink = Kopiuj Link back = Wróć data.export = Eksportuj Dane data.import = Importuj Dane data.exported = Dane wyeksportowane. data.invalid = Nieprawidłowe dane gry. data.import.confirm = Zaimportowanie zewnętrznych danych usunie[scarlet] wszystkie[] obecne dane gry.\n[accent]Nie można tego cofnąć![]\n\nGdy dane zostaną zimportowane, gra automatycznie się wyłączy. -classic.export = Eksportuj dane wersji klasycznej +classic.export = Eksportuj Dane Wersji Klasycznej classic.export.text = [accent]Mindustry[] otrzymało ostatnio ważną aktualizację.\nClassic (v3.5 build 40) zapis albo mapa zostały wykryte. Czy chciałbyś eksportować te zapisy do katalogu domowego swojego telefonu, do użycia w aplikacji Mindustry Classic? quit.confirm = Czy na pewno chcesz wyjść? quit.confirm.tutorial = Czy jesteś pewien tego co robisz?\nSamouczek może zostać powtórzony w[accent] Opcje->Gra->Powtórz samouczek.[] loading = [accent]Ładowanie... +reloading = [accent]Reloading Mods... saving = [accent]Zapisywanie... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Fala {0} wave.waiting = Fala za {0} wave.waveInProgress = [LIGHT_GRAY]Fala w trakcie @@ -199,37 +241,43 @@ waiting = [LIGHT_GRAY]Oczekiwanie... waiting.players = Oczekiwanie na graczy... wave.enemies = Pozostało [LIGHT_GRAY]{0} wrogów wave.enemy = Pozostał [LIGHT_GRAY]{0} wróg -loadimage = Załaduj obraz -saveimage = Zapisz obraz +loadimage = Załaduj Obraz +saveimage = Zapisz Obraz unknown = Nieznane custom = Własne builtin = Wbudowane map.delete.confirm = Jesteś pewny, że chcesz usunąć tę mapę? Nie będzie można jej przywrócić. -map.random = [accent]Losowa mapa +map.random = [accent]Losowa Mapa map.nospawn = Ta mapa nie zawiera żadnego rdzenia! Dodaj [ROYAL]niebieski[] rdzeń do tej mapy w edytorze. map.nospawn.pvp = Ta mapa nie ma żadnego rdzenia przeciwnika, aby mogli się zrespić przeciwnicy! Dodaj[SCARLET] inny niż niebieski[] rdzeń do mapy w edytorze. map.nospawn.attack = Ta mapa nie ma żadnego rdzenia przeciwnika, aby można było go zaatakować! Dodaj[SCARLET] czerwony[] rdzeń do mapy w edytorze. map.invalid = Błąd podczas ładowania mapy: uszkodzony lub niepoprawny plik mapy. -map.publish.error = Błąd podczas publikowania mapy: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Opublikowano mapę. -map.publishing = [accent]Publikowanie mapy... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Pędzel -editor.openin = Otwórz w edytorze -editor.oregen = Generacja złóż -editor.oregen.info = Generacja złóż: -editor.mapinfo = Informacje o mapie +editor.openin = Otwórz w Edytorze +editor.oregen = Generacja Złóż +editor.oregen.info = Generacja Złóż: +editor.mapinfo = Informacje o Mapie editor.author = Autor: editor.description = Opis: -editor.nodescription = A map must have a description of at least 4 characters before being published. +editor.nodescription = Mapa musi posiadać opis o długości co najmniej 4 znaków zanim zostanie opublikowana. editor.waves = Fale: editor.rules = Zasady: editor.generation = Generacja: -editor.ingame = Edytuj w grze -editor.publish.workshop = Opublikuj w Workshop +editor.ingame = Edytuj w Grze +editor.publish.workshop = Opublikuj w Warsztacie editor.newmap = Nowa Mapa -workshop = Workshop +workshop = Warsztat waves.title = Fale waves.remove = Usuń waves.never = @@ -240,8 +288,8 @@ waves.to = do waves.boss = Boss waves.preview = Podgląd waves.edit = Edytuj... -waves.copy = Kopiuj do schowka -waves.load = Załaduj ze schowka +waves.copy = Kopiuj Do Schowka +waves.load = Załaduj Ze Schowka waves.invalid = Nieprawidłowe fale w schowku. waves.copied = Fale zostały skopiowane. waves.none = Brak zdefiniowanych wrogów.\nPamiętaj, że puste układy fal zostaną automatycznie zastąpione układem domyślnym. @@ -249,8 +297,8 @@ editor.default = [LIGHT_GRAY] details = Detale... edit = Edytuj... editor.name = Nazwa: -editor.spawn = Stwórz jednostkę -editor.removeunit = Usuń jednostkę +editor.spawn = Stwórz Jednostkę +editor.removeunit = Usuń Jednostkę editor.teams = Drużyny editor.errorload = Błąd podczas ładowania pliku:\n[accent]{0} editor.errorsave = Błąd podczas zapisywania pliku:\n[accent]{0} @@ -263,9 +311,9 @@ editor.update = Aktualizuj editor.randomize = Losuj editor.apply = Zastosuj editor.generate = Generuj -editor.resize = Zmień rozmiar -editor.loadmap = Załaduj mapę -editor.savemap = Zapisz mapę +editor.resize = Zmień Rozmiar +editor.loadmap = Załaduj Mapę +editor.savemap = Zapisz Mapę editor.saved = Zapisano! editor.save.noname = Twoja mapa nie ma nazwy! Ustaw ją w 'Informacjach o mapie'. editor.save.overwrite = Ta mapa nadpisze wbudowaną mapę! Ustaw inną nazwę w 'Informacjach o mapie'. @@ -278,22 +326,22 @@ editor.importfile.description = Importuj zewnętrzny plik mapy editor.importimage = Importuj Obraz Terenu editor.importimage.description = Importuj zewnętrzny obraz terenu editor.export = Eksportuj... -editor.exportfile = Eksportuj plik +editor.exportfile = Eksportuj Plik editor.exportfile.description = Eksportuj plik mapy editor.exportimage = Eksportuj Obraz Terenu editor.exportimage.description = Eksportuj plik obrazu terenu -editor.loadimage = Załaduj obraz -editor.saveimage = Zapisz obraz +editor.loadimage = Załaduj Teren +editor.saveimage = Zapisz Teren editor.unsaved = [scarlet]Masz niezapisane zmiany![]\nCzy na pewno chcesz wyjść? -editor.resizemap = Zmień rozmiar mapy -editor.mapname = Nazwa mapy: +editor.resizemap = Zmień Rozmiar Mapy +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.exists = A map with this name already exists. +editor.overwrite.confirm = [scarlet]Uwaga![] Mapa o tej nazwie już istnieje. Jesteś pewny, że chcesz ją nadpisać? +editor.exists = Mapa o tej nazwie już istnieje. editor.selectmap = Wybierz mapę do załadowania: toolmode.replace = Zastąp toolmode.replace.description = Rysuje tylko na stałych blokach. -toolmode.replaceall = Zastąp wszystko +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. @@ -305,15 +353,15 @@ 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. +filters.empty = [LIGHT_GRAY]Brak filtrów! Dodaj jeden za pomocą przycisku poniżej. filter.distort = Zniekształcanie filter.noise = Szum filter.median = Mediana -filter.oremedian = Mediana rud +filter.oremedian = Mediana Rud filter.blend = Wtopienie -filter.defaultores = Domyślne rudy +filter.defaultores = Domyślne Rudy filter.ore = Ruda -filter.rivernoise = Szum rzeki +filter.rivernoise = Szum Rzeki filter.mirror = Lustro filter.clear = Oczyść filter.option.ignore = Ignoruj @@ -323,7 +371,7 @@ filter.option.scale = Skala filter.option.chance = Szansa filter.option.mag = Wielkość filter.option.threshold = Próg -filter.option.circle-scale = Skala koła +filter.option.circle-scale = Skala Koła filter.option.octaves = Oktawy filter.option.falloff = Spadek filter.option.angle = Kąt @@ -332,8 +380,8 @@ filter.option.floor = Podłoga filter.option.flooronto = Podłoga Docelowa filter.option.wall = Ściana filter.option.ore = Ruda -filter.option.floor2 = Druga podłoga -filter.option.threshold2 = Drugi próg +filter.option.floor2 = Druga Podłoga +filter.option.threshold2 = Drugi Próg filter.option.radius = Zasięg filter.option.percentile = Percentyl width = Szerokość: @@ -344,20 +392,20 @@ campaign = Kampania load = Wczytaj save = Zapisz fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Uruchom grę ponownie, aby ustawiony język zaczął funkcjonować. settings = Ustawienia tutorial = Poradnik tutorial.retake = Ponów Samouczek editor = Edytor -mapeditor = Edytor map -donate = Wspomóż nas +mapeditor = Edytor Map abandon = Opuść abandon.text = Ta strefa i wszystkie jej surowce będą przejęte przez przeciwników. locked = Zablokowane complete = [LIGHT_GRAY]Ukończone: -zone.requirement = Fala {0} w strefie {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Kontynuuj Strefę:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]Najwyższa fala: {0} launch = < WYSTRZEL > @@ -367,12 +415,14 @@ launch.unable2 = [scarlet]WYSTZRZELENIE niedostępne.[] launch.confirm = Spowoduje to wystrzelenie wszystkich surowców w rdzeniu.\nNie będziesz mógł wrócić do tej bazy. launch.skip.confirm = Jeśli teraz przejdziesz do kolejnej fali, Nie biędziesz miał możliwości wystrzelenia do czasu pokonania dalszych fal. uncover = Odkryj -configure = Skonfiguruj ładunek +configure = Skonfiguruj Ładunek +bannedblocks = Banned Blocks +addall = Add All configure.locked = [LIGHT_GRAY]Dotrzyj do fali {0}\nAby skonfigurować ładunek. configure.invalid = Ilość musi być liczbą pomiędzy 0 a {0}. zone.unlocked = [LIGHT_GRAY]Strefa {0} odblokowana. zone.requirement.complete = Fala {0} osiągnięta:\n{1} Wymagania strefy zostały spełnione. -zone.config.complete = Fala {0} osiągnięta:\nKonfiguracja ładunku odblokowana. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Wykryte Zasoby: zone.objective = [lightgray]Cel: [accent]{0} zone.objective.survival = Przeżyj @@ -404,7 +454,7 @@ zone.impact0078.name = Uderzenie 0078 zone.crags.name = Urwisko zone.fungalPass.name = Grzybowa Przełęcz 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.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 = Te pustkowia są rozległe, nieprzewidywalne, i znajdują się na nich opuszczone struktury.\nWęgiel jest obecny w tym regionie. Użyj go do produkcji energii, lub do stworzenia grafitu.\n\n[lightgray]Miejsce lądowania nie jest pewne. zone.saltFlats.description = Na obrzeżach pustyni spoczywają Solne Równiny. Można tu znaleźć niewiele surowców.\n\nWrogowie zbudowali tu bazę składującą surowce. Zniszcz ich rdżeń. Zniszcz wszystko co stanie ci na drodze. zone.craters.description = W tym kraterze zebrała się woda. Pozostałość dawnych wojen. Odzyskaj ten teren. Wykop piasek. Wytop metaszkło. Pompuj wodę do działek obronnych i wierteł by je schłodzić @@ -419,24 +469,23 @@ zone.impact0078.description = zone.crags.description = settings.language = Język settings.data = Dane Gry -settings.reset = Przywróć domyślne +settings.reset = Przywróć Domyślne settings.rebind = Zmień settings.controls = Sterowanie settings.game = Gra settings.sound = Dźwięk settings.graphics = Grafika -settings.cleardata = Wyczyść dane gry... +settings.cleardata = Wyczyść Dane Gry... settings.clear.confirm = Czy jesteś pewien że chcesz usunąć te dane?\nPo tym nie ma powrotu! settings.clearall.confirm = [scarlet]UWAGA![]\nTo wykasuje wszystkie dane, włącznie z zapisanymi grami i mapami, ustawienami, i znanymi technologiami.\nKiedy naciśniesz 'ok', gra usunie wszystkie swoje dane i automatycznie wyłączy się. -settings.clearunlocks = Wyczyść listę przedmiotów -settings.clearall = Wyczyść wszystko paused = [accent]< Wstrzymano > -yes = Jasne! -no = Nie ma mowy! +clear = Clear +banned = [scarlet]Banned +yes = Tak +no = Nie info.title = Informacje error.title = [crimson]Wystąpił błąd error.crashtitle = Wystąpił błąd -attackpvponly = [scarlet]Dostępne tylko w trybach Atak/PvP blocks.input = Wejście blocks.output = Wyjście blocks.booster = Wzmacniacz @@ -475,7 +524,7 @@ bar.drilltierreq = Wymagane Lepsze Wiertło bar.drillspeed = Prędkość wiertła: {0}/s bar.efficiency = Efektywność: {0}% bar.powerbalance = Moc: {0} -bar.powerstored = Stored: {0}/{1} +bar.powerstored = Zmagazynowano: {0}/{1} bar.poweramount = Moc: {0} bar.poweroutput = Wyjście mocy: {0} bar.items = Przedmiotów: {0} @@ -496,7 +545,7 @@ 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 szybkość ataku -unit.blocks = Klocki +unit.blocks = bloki unit.powersecond = jednostek prądu na sekundę unit.liquidsecond = jednostek płynów na sekundę unit.itemssecond = przedmiotów na sekundę @@ -518,13 +567,14 @@ category.optional = Dodatkowe ulepszenia setting.landscape.name = Zablokuj tryb panoramiczny setting.shadows.name = Cienie setting.linear.name = Filtrowanie Liniowe +setting.hints.name = Hints setting.animatedwater.name = Animowana woda setting.animatedshields.name = Animowana Tarcza -setting.antialias.name = Antialias[LIGHT_GRAY] (wymaga restartu)[] +setting.antialias.name = Antyaliasing[LIGHT_GRAY] (wymaga restartu)[] setting.indicators.name = Wskaźniki Przyjaciół setting.autotarget.name = Automatyczne Celowanie -setting.keyboard.name = Sterowanie Myszka+Klawiatura -setting.touchscreen.name = Touchscreen Controls +setting.keyboard.name = Sterowanie - Myszka+Klawiatura +setting.touchscreen.name = Sterowanie - Ekran Dotykowy setting.fpscap.name = Maksymalny FPS setting.fpscap.none = Nieograniczone setting.fpscap.text = {0} FPS @@ -547,6 +597,7 @@ setting.fps.name = Pokazuj FPS setting.vsync.name = Synchronizacja pionowa setting.pixelate.name = Pikselacja [LIGHT_GRAY](wyłącza animacje) setting.minimap.name = Pokaż Minimapę +setting.position.name = Show Player Position setting.musicvol.name = Głośność muzyki setting.ambientvol.name = Głośność otoczenia setting.mutemusic.name = Wycisz muzykę @@ -554,12 +605,14 @@ setting.sfxvol.name = Głośność dźwięków setting.mutesound.name = Wycisz dźwięki setting.crashreport.name = Wysyłaj anonimowo dane o crashu gry setting.savecreate.name = Automatyczne tworzenie zapisu -setting.publichost.name = Widoczność gry publicznej +setting.publichost.name = Widoczność Gry Publicznej setting.chatopacity.name = Przezroczystość czatu setting.lasersopacity.name = Przezroczystość laserów zasilających setting.playerchat.name = Wyświetlaj czat w grze +public.confirm = Czy chcesz ustawić swoją grę jako publiczną?\n[lightgray]Można to później zmienić w Ustawienia->Gra->Widoczność Gry Publicznej. +public.beta = Note that beta versions of the game cannot make public lobbies. uiscale.reset = Skala interfejsu uległa zmianie.\nNaciśnij "OK" by potwierdzić zmiany.\n[scarlet]Cofanie zmian i wyjście z gry za[accent] {0}[] -uiscale.cancel = Anuluj i wyjdź +uiscale.cancel = Anuluj i Wyjdź setting.bloom.name = Bloom keybind.title = Zmień keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w wersji mobilnej. Tylko podstawowe poruszanie się jest wspierane. @@ -567,16 +620,19 @@ category.general.name = Ogólne category.view.name = Wyświetl category.multiplayer.name = Multiplayer command.attack = Atakuj -command.rally = Rally +command.rally = Zbierz command.retreat = Wycofaj -keybind.gridMode.name = Wybieranie Bloku -keybind.gridModeShift.name = Wybieranie Kategorii +keybind.clear_building.name = Clear Building keybind.press = Naciśnij wybrany klawisz... keybind.press.axis = Naciśnij oś lub klawisz... keybind.screenshot.name = Zrzut ekranu mapy keybind.move_x.name = Poruszanie w poziomie keybind.move_y.name = Poruszanie w pionie -keybind.fullscreen.name = Toggle Fullscreen +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y +keybind.fullscreen.name = Przełącz Pełny Ekran keybind.select.name = Zaznacz keybind.diagonal_placement.name = Budowa po skosie keybind.pick.name = Wybierz Blok @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Inicjator przybliżania keybind.zoom.name = Przybliżanie keybind.menu.name = Menu keybind.pause.name = Pauza +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Minimapa keybind.dash.name = Przyspieszenie keybind.chat.name = Czat keybind.player_list.name = Lista graczy keybind.console.name = Konsola keybind.rotate.name = Obracanie +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Zmiana widoczności menu keybind.chat_history_prev.name = Przewiń wiadomości w górę keybind.chat_history_next.name = Przewiń wiadomości w dół @@ -603,28 +661,29 @@ mode.help.title = Opis trybów mode.survival.name = Przeżycie mode.survival.description = Zwykły tryb. Limitowane surowce i fale przeciwników. mode.sandbox.name = Piaskownica -mode.sandbox.description = Nieskończone surowce i fale bez odliczania. Dla przedszkolaków! +mode.sandbox.description = Nieskończone surowce i fale bez odliczania. +mode.editor.name = Edytor mode.pvp.name = PvP mode.pvp.description = Walcz przeciwko innym graczom. mode.attack.name = Atak -mode.attack.description = Brak fal, celem jest zniszczenie bazy przeciwnika. +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 -rules.attack = Tryb Ataku +rules.attack = Tryb ataku rules.enemyCheat = Nieskończone zasoby komputera-przeciwnika (czerwonego zespołu) -rules.unitdrops = Surowce z zniszczonych jednostek -rules.unitbuildspeedmultiplier = Mnożnik Prędkości Tworzenia Jednostek -rules.unithealthmultiplier = Mnożnik Życia Jednostek -rules.playerhealthmultiplier = Mnożnik Życia Gracza -rules.playerdamagemultiplier = Mnożnik Obrażeń Gracza -rules.unitdamagemultiplier = Mnożnik Obrażeń Jednostek +rules.unitdrops = Surowce ze zniszczonych jednostek +rules.unitbuildspeedmultiplier = Mnożnik prędkości tworzenia jednostek +rules.unithealthmultiplier = Mnożnik życia jednostek +rules.playerhealthmultiplier = Mnożnik życia gracza +rules.playerdamagemultiplier = Mnożnik obrażeń gracza +rules.unitdamagemultiplier = Mnożnik obrażeń jednostek rules.enemycorebuildradius = Zasięg blokady budowy przy rdżeniu wroga:[LIGHT_GRAY] (kratki) -rules.respawntime = Czas Odrodzenia:[LIGHT_GRAY] (sek) +rules.respawntime = Czas odrodzenia:[LIGHT_GRAY] (sek) rules.wavespacing = Odstępy między falami:[LIGHT_GRAY] (sek) -rules.buildcostmultiplier = Mnożnik Kosztów Budowania -rules.buildspeedmultiplier = Mnożnik Prędkości Budowania +rules.buildcostmultiplier = Mnożnik kosztów budowania +rules.buildspeedmultiplier = Mnożnik prędkości budowania rules.waitForWaveToEnd = Fale czekają na przeciwników rules.dropzoneradius = Zasięg strefy zrzutu:[LIGHT_GRAY] (kratki) rules.respawns = Maksymalna ilośc odrodzeń na falę @@ -650,7 +709,7 @@ item.silicon.name = Krzem item.plastanium.name = Plastan item.phase-fabric.name = Włókno Fazowe item.surge-alloy.name = Elektrum -item.spore-pod.name = Zarodnia +item.spore-pod.name = Kapsuła Zarodników item.sand.name = Piasek item.blast-compound.name = Wybuchowy związek item.pyratite.name = Piratian @@ -703,8 +762,8 @@ block.saltrocks.name = Skały Solne block.pebbles.name = Kamyczki block.tendrils.name = Wić block.sandrocks.name = Skały Piaskowe -block.spore-pine.name = Sosna Zarodkowa -block.sporerocks.name = Skała z Zarodkami +block.spore-pine.name = Sosna Zarodnikowa +block.sporerocks.name = Skała Zarodnikowa block.rock.name = Skały block.snowrock.name = Skały śnieżne block.snow-pine.name = Sosna śniegowa @@ -712,19 +771,19 @@ block.shale.name = Łupek block.shale-boulder.name = Głaz Łupkowy block.moss.name = Mech block.shrubs.name = Krzewy -block.spore-moss.name = Mech z Zarodkami +block.spore-moss.name = Mech Zarodnikowy 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.scrap-wall.name = Ściana ze Złomu +block.scrap-wall-large.name = Duża Ściana ze Złomu +block.scrap-wall-huge.name = Ogromna Ściana ze Złomu +block.scrap-wall-gigantic.name = Gigantyczna Ściana ze Złomu block.thruster.name = Silnik block.kiln.name = Wypalarka block.graphite-press.name = Grafitowa Prasa block.multi-press.name = Multi-Prasa block.constructing = {0} [LIGHT_GRAY](Budowa) block.spawn.name = Spawn wrogów -block.core-shard.name = Rdzeń: Ułamek +block.core-shard.name = Rdzeń: Odłamek block.core-foundation.name = Rdzeń: Podstawa block.core-nucleus.name = Rdzeń: Jądro block.deepwater.name = Głęboka Woda @@ -750,7 +809,7 @@ block.dunerocks.name = Skały wydmowe 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.spore-cluster.name = Skupisko Zarodnikó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 @@ -768,7 +827,7 @@ block.hotrock.name = Gorący Kamień block.magmarock.name = Skała magmowa block.cliffs.name = Klify block.copper-wall.name = Miedziana Ściana -block.copper-wall-large.name = Duża miedziana ściana +block.copper-wall-large.name = Duża Miedziana Ściana block.titanium-wall.name = Tytanowa Ściana block.titanium-wall-large.name = Duża Tytanowa Ściana block.phase-wall.name = Fazowa Ściana @@ -777,28 +836,29 @@ block.thorium-wall.name = Torowa Ściana block.thorium-wall-large.name = Duża Torowa Ściana block.door.name = Drzwi block.door-large.name = Duże drzwi -block.duo.name = Podwójne działko +block.duo.name = Podwójne Działko block.scorch.name = Płomień block.scatter.name = Flak block.hail.name = Grad block.lancer.name = Lancer block.conveyor.name = Przenośnik -block.titanium-conveyor.name = Tytanowy przenośnik -block.armored-conveyor.name = Armored Conveyor -block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. +block.titanium-conveyor.name = Przenośnik Tytanowy +block.armored-conveyor.name = Przenośnik Opancerzony +block.armored-conveyor.description = Przesyła przedmioty z taką samą szybkością jak Przenośnik Tytanowy, ale jest bardziej odporny. Wejściami bocznymi mogą być tylko inne przenośniki. block.junction.name = Węzeł block.router.name = Rozdzielacz block.distributor.name = Dystrybutor block.sorter.name = Sortownik -block.message.name = Message -block.overflow-gate.name = Brama Przeciwprzepełnieniowa +block.inverted-sorter.name = Inverted Sorter +block.message.name = Wiadomość +block.overflow-gate.name = Brama Przepełnieniowa block.silicon-smelter.name = Huta Krzemu block.phase-weaver.name = Fazowa Fabryka block.pulverizer.name = Rozkruszacz block.cryofluidmixer.name = Mieszacz Lodocieczy block.melter.name = Przetapiacz block.incinerator.name = Spalacz -block.spore-press.name = Prasa Zarodni +block.spore-press.name = Prasa Zarodników block.separator.name = Rozdzielacz block.coal-centrifuge.name = Wirówka węglowa block.power-node.name = Węzeł Prądu @@ -831,11 +891,11 @@ block.power-void.name = Próżnia prądu block.power-source.name = Nieskończony Prąd block.unloader.name = Ekstraktor block.vault.name = Magazyn -block.wave.name = Strumyk +block.wave.name = Strumień 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.ripple.name = Działo Falowe +block.phase-conveyor.name = Transporter Fazowy block.bridge-conveyor.name = Most Transportowy block.plastanium-compressor.name = Kompresor Plastanu block.pyratite-mixer.name = Mieszacz Piratianu @@ -847,13 +907,13 @@ block.command-center.name = Centrum Dowodzenia 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 Widmo +block.wraith-factory.name = Fabryka Myśliwców Widmo block.ghoul-factory.name = Fabryka Bombowców Upiór block.dagger-factory.name = Fabryka Mechów Nóż block.crawler-factory.name = Fabryka Mechów Pełzacz block.titan-factory.name = Fabryka Mechów Tytan block.fortress-factory.name = Fabryka Mechów Forteca -block.revenant-factory.name = Fabryka Wojowników Zjawa +block.revenant-factory.name = Fabryka Krążowników Zjawa block.repair-point.name = Punkt Napraw block.pulse-conduit.name = Rura Pulsacyjna block.phase-conduit.name = Rura Fazowa @@ -870,12 +930,12 @@ block.thermal-generator.name = Generator Termalny block.alloy-smelter.name = Piec Mieszający block.mender.name = Naprawiacz block.mend-projector.name = Projektor Napraw -block.surge-wall.name = Ściana Elektronu -block.surge-wall-large.name = Duża Ściana Elektronu +block.surge-wall.name = Ściana Elektrum +block.surge-wall-large.name = Duża Ściana Elektrum block.cyclone.name = Cyklon block.fuse.name = Lont block.shock-mine.name = Mina -block.overdrive-projector.name = Projektor Nad-prędkości +block.overdrive-projector.name = Projektor Przyśpieszający block.force-projector.name = Projektor Pola Siłowego block.arc.name = Piorun block.rtg-generator.name = Generator RTG @@ -891,21 +951,21 @@ team.orange.name = pomarańczowy team.derelict.name = szary team.green.name = zielony team.purple.name = fioletowy -unit.spirit.name = Duch -unit.draug.name = Draug -unit.phantom.name = Widmo +unit.spirit.name = Dron Naprawczy Duch +unit.draug.name = Dron Wydobywczy Draug +unit.phantom.name = Dron Budowniczy Widmo unit.dagger.name = Nóż unit.crawler.name = Pełzak unit.titan.name = Tytan -unit.ghoul.name = Upiór -unit.wraith.name = Widmo +unit.ghoul.name = Bombowiec Upiór +unit.wraith.name = Myśliwiec Widmo unit.fortress.name = Forteca unit.revenant.name = Zjawa unit.eruptor.name = Roztapiacz -unit.chaos-array.name = Kolejka Chaosu +unit.chaos-array.name = Chaos unit.eradicator.name = Niszczyciel unit.lich.name = Obudzony -unit.reaper.name = Żeniec +unit.reaper.name = Żniwiarz tutorial.next = [lightgray] tutorial.intro = Wszedłeś do[scarlet] Samouczka Mindustry.[]\nZacznij od[accent] wydobycia miedzi[]. Aby to zrobić, dotknij żyły rudy miedzi w pobliżu rdzenia.\n\n[accent]{0}/{1} miedź tutorial.drill = Wydobywanie ręczne nie jest efektywne.\n[accent]Wiertła []mogą kopać automatycznie.\nKliknij zakładkę wiertła w prawym dolnym rogu.\nWybierz[accent] wiertło mechaniczne[]. Umieść go na złożu miedzi, klikając.\n[accent]Kliknij prawym przyciskiem myszy[], aby przestać budować. @@ -935,25 +995,25 @@ item.coal.description = Zwykły i łatwo dostępny materiał energetyczny. item.titanium.description = Rzadki i bardzo lekki materiał. Używany w bardzo zaawansowanym przewodnictwie, wiertłach i samolotach. Poczuj się jak Tytan! item.thorium.description = Zwarty i radioaktywny materiał używany w strukturach i paliwie nuklearnym. Nie trzymaj go w rękach! item.scrap.description = Pozostałości starych budynków i jednostek. Składa się z małej ilości wszystkiego. -item.silicon.description = Niesamowicie przydatny półprzewodnk uźywany w panelach słonecznych i skomplikowanej elektronice. Nie, w Dolinie Krzemowej już nie ma krzemu. +item.silicon.description = Niesamowicie przydatny półprzewodnk. Używany w panelach słonecznych, skomplikowanej elektronice i pociskach samonaprowadzających. item.plastanium.description = Lekki i plastyczny materiał używany w amunicji odłamkowej i samolotach. Używany też w klockach LEGO (dlatego są niezniszczalne)! -item.phase-fabric.description = Niewiarygodnie lekkie włókno używane w zaawansowanej elektronice i technologii samo-naprawiającej się. +item.phase-fabric.description = Niewiarygodnie lekkie włókno używane w zaawansowanej elektronice i technologii samo-naprawiającej item.surge-alloy.description = Zaawansowany materiał z niesłychanymi wartościami energetycznymi. -item.spore-pod.description = Używany do wyrobu oleju, materiałów wybuchowych i paliwa. -item.blast-compound.description = Lotny związek używany w pirotechnice. Może być używany jako materiał energetyczny, ale nie polecam, ale i tak warto spróbować. +item.spore-pod.description = Syntetyczne zarodniki, które mogą być przekształcone na olej, materiały wybuchowe i paliwo. +item.blast-compound.description = Niestabilny związek używany w materiałach wybuchowych. Powstaje podczas syntezy z zarodników i innych lotnych substancji. Używanie go jako materiał energetyczny jest niewskazane. item.pyratite.description = Niesamowicie palny związek używany w zbrojeniu. Nielegalny w 9 państwach. liquid.water.description = Powszechnie używana do schładzania budowli i przetwarzania odpadów. liquid.slag.description = Wiele różnych metali stopionych i zmieszanych razem. Może zostać rozdzielony na jego metale składowe, albo wystrzelony w wrogie jednostki i użyty jako broń. liquid.oil.description = Używany w do produkcji złożonych materiałów. Może zostać przetworzony na węgiel, lub wystrzelony w wrogów przez wieżyczke. 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 szybkich ataków i ucieczki. Zadaje niewielkie obrażenia strukturom, lecz może bardzo szybko niszczyć spore grupy jednostek wroga przy pomocy jego działek tesli. +mech.alpha-mech.description = Standardowy mech. Bazuje na jednostce Nóż, z ulepszonym pancerzem i zdolnością budowania. Zadaje więcej obrażeń niż Strzałka. +mech.delta-mech.description = Szybki, lekko opancerzony mech stworzony do ataków typu uderz i uciekaj. Zadaje niewielkie obrażenia strukturom, lecz może bardzo szybko niszczyć spore grupy jednostek wroga przy pomocy jego działek tesli. mech.tau-mech.description = Mech wsparcia. 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% 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.omega-mech.description = Duży i silny mech, zaprojektowany na ataki. Jego pancerz pozwala mu na zablokowanie do 90% obrażeń. +mech.dart-ship.description = Standardowy statek. Lekki i szybki, ale posiada małe zdolności ofensywne i niską szybkość wydobywania surowców. +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, zbudowany do budowy i niszczenia fortyfikacji wroga. Dość dobrze opancerzony. -mech.glaive-ship.description = Duży, uzbrojony statek. Dobra prędkość i przyspieszenie. Wyposażony w karabin zapalający. +mech.glaive-ship.description = Duży, uzbrojony statek. Dobra prędkość i przyspieszenie. Wyposażony w karabin zapalający. unit.draug.description = Prymitywny dron górniczy. Tani w produkcji. Przeznaczony na stracenie. Automatycznie wydobywa miedź i ołów w pobliżu. Dostarcza wydobyte zasoby do najbliższego rdzenia. unit.spirit.description = Zmodyfikowany dron draug, zaprojektowany do naprawy zamiast do wydobywania. Automatycznie naprawia wszelkie uszkodzone bloki w obszarze. unit.phantom.description = Zaawansowana jednostka dronów. Podąża za użytkownikiem. Pomaga w budowie bloków. @@ -965,7 +1025,7 @@ unit.eruptor.description = Ciężki mech stworzony do niszczenia struktur. Strze unit.wraith.description = Szybka jednostka, stosuje taktyke uderz-uciekaj Namierza jakiekolwiek źródło prądu. unit.ghoul.description = Ciężki bombowiec dywanowy. Rozdziera struktury wroga, atakując krytyczną infrastrukturę. unit.revenant.description = Ciężka, unosząca sie platforma z rakietami. -block.message.description = Stores a message. Used for communication between allies. +block.message.description = Przechowuje wiadomość. Wykorzystywane do komunikacji pomiędzy sojusznikami. block.graphite-press.description = Kompresuje kawałki węgla w czyste blaszki grafitu. block.multi-press.description = Ulepszona wersja prasy grafitowej. Używa wody i prądu do kompresowania węgla szybko i efektywnie. block.silicon-smelter.description = Redukuje piasek za pomocą wysoce czystego węgla w celu wytworzenia krzemu. @@ -978,7 +1038,7 @@ block.blast-mixer.description = Kruszy i miesza skupiska zarodników z piratytem block.pyratite-mixer.description = Miesza węgiel, ołów i piasek tworząc bardzo łatwopalny piratian. block.melter.description = Przetapia złom na żużel do dalszego przetwarzania lub użycia w wieżyczkach block.separator.description = Oddziela użyteczne materiały z mieszaniny jaką jest żużel. -block.spore-press.description = Kompresuje kapsułki zarodników w olej. +block.spore-press.description = Kompresuje kapsuły zarodników pod ogromnym ciśnieniem tworząc olej. block.pulverizer.description = Mieli złom w drobny piasek. Przydatne, gdy brakuje naturalnego piasku. block.coal-centrifuge.description = Zestala olej w kawałki węgla. block.incinerator.description = Pozbywa się nadmiaru przedmiotów lub płynu @@ -993,10 +1053,10 @@ block.titanium-wall.description = Umiarkowanie silny blok obronny.\nZapewnia umi block.titanium-wall-large.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami.\nObejmuje wiele kratek. block.thorium-wall.description = Silny blok obronny.\nDobra ochrona przed wrogami. block.thorium-wall-large.description = Silny blok obronny.\nDobra ochrona przed wrogami.\nObejmuje wiele kratek. -block.phase-wall.description = Nie tak silny jak ściana toru, ale odbije pociski, chyba że będą zbyt potężne. -block.phase-wall-large.description = Nie tak silny jak ściana toru, ale odbije pociski, chyba że będą zbyt potężne.\nObejmuje wiele kratek. -block.surge-wall.description = Najsilniejszy blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego. -block.surge-wall-large.description = Najsilniejszy blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego.\nObejmuje wiele kratek. +block.phase-wall.description = Ściana pokryta specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków. +block.phase-wall-large.description = Ściana pokryta specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków.\nObejmuje wiele kratek. +block.surge-wall.description = Ekstremalnie wytrzymały blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego. +block.surge-wall-large.description = Ekstremalnie wytrzymały blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego.\nObejmuje wiele kratek. block.door.description = Małe drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą strzelać i się przemieszczać przez nie. block.door-large.description = Duże drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą strzelać i się przemieszczać przez nie.\nObejmuje wiele kratek. block.mender.description = Co jakiś czas naprawia bloki w zasięgu. Utrzymuje struktury obronne w dobrym stanie.\nOpcjonalnie używa silikonu do zwiększenia zasięgu i szybkości naprawy. @@ -1008,19 +1068,20 @@ block.conveyor.description = Podstawowy blok transportowy dla przedmiotów. Auto block.titanium-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Przesyła przedmioty szybciej od zwykłego przenośnika. block.junction.description = Używany jako most dla dwóch krzyżujących się przenośników. Przydatne w sytuacjach kiedy dwa różne przenośniki transportują różne surowce do różnych miejsc. block.bridge-conveyor.description = Zaawansowany blok transportujący. Pozwala na przenoszenie przedmiotów nawet do 3 bloków na każdym terenie, przez każdy budynek. -block.phase-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Używa energii przy teleportacji przedmiotów do podłączonego transportera fazowego na spore odległości. +block.phase-conveyor.description = Zaawansowany blok transportowy dla przedmiotów. Używa energii do teleportacji przedmiotów do połączonego transportera fazowego na spore odległości. block.sorter.description = Sortuje przedmioty. Jeśli przedmiot pasuje to przechodzi dalej, jeśli nie - to przechodzi na boki. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Akceptuje przedmioty z jednego miejsca i rozdziela je do trzech innych kierunków. Przydatne w rozdzielaniu materiałów z jednego źródła do wielu celów. block.distributor.description = Zaawansowany rozdzielacz, rozdzielający przedmioty do 7 innych kierunków. block.overflow-gate.description = Rozdzielacz, który przerzuca przedmioty, kiedy główna droga jest przepełniona block.mass-driver.description = Najlepszy blok do transportu przedmiotów. Zbiera wiele przedmiotów naraz a potem wystrzeliwuje je do kolejnej katapulty masy na bardzo duże odległości. -block.mechanical-pump.description = Tania pompa o niskiej przepustowości. Nie wymaga prądu. -block.rotary-pump.description = Zaawansowana pompa, dwukrotnie większa przepustowość od mechanicznej pompy. Wymaga prądu. +block.mechanical-pump.description = Tania pompa o niskiej wydajności. Nie wymaga prądu. +block.rotary-pump.description = Zaawansowana pompa. Pompuje więcej cieczy, ale wymaga zasilania. block.thermal-pump.description = Najlepsza pompa. Trzy razy szybsza od mechanicznej pompy i jedyna, która może wypompować lawę. -block.conduit.description = Podstawowy blok do przenoszenia cieczy. Działa jak transporter, ale na ciecze. Najlepiej używać z ekstraktorami wody, pompami lub innymi rurami. -block.pulse-conduit.description = Zaawansowany blok do przenoszenia cieczy. Transportuje je szybciej i magazynuje więcej niż standardowe rury. -block.liquid-router.description = Akceptuje płyny z jednego kierunku i wyprowadza je do trzech innych kierunków jednakowo. Może również przechowywać pewną ilość płynu. Przydatne do dzielenia płynów z jednego źródła na wiele celów. -block.liquid-tank.description = Magazynuje ogromne ilości cieczy. Użyj go do stworzenia buforu, gdy występuje różne zapotrzebowanie na materiały lub jako zabezpieczenie dla chłodzenia ważnych bloków. +block.conduit.description = Podstawowy blok do transportowania cieczy. Używany w połączeniu z pompami i innymi rurami. +block.pulse-conduit.description = Zaawansowany blok do transportowania cieczy. Transportuje je szybciej i magazynuje więcej niż standardowe rury. +block.liquid-router.description = Akceptuje płyny z jednego kierunku i wyprowadza je po równo do trzech innych kierunków. Może również przechowywać pewną ilość płynu. Przydatne do dzielenia płynów z jednego źródła do wielu celów. +block.liquid-tank.description = Magazynuje duże ilości cieczy. Użyj go do stworzenia buforu, gdy występuje różne zapotrzebowanie na materiały lub jako zabezpieczenie dla chłodzenia ważnych bloków. 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. @@ -1033,17 +1094,17 @@ block.combustion-generator.description = Wytwarza energię poprzez spalanie łat block.thermal-generator.description = Generuje prąd kiedy jest postawiony na źródłach ciepła. block.turbine-generator.description = Bardziej wydajny niż generator spalania, ale wymaga dodatkowej wody. block.differential-generator.description = Generuje duże ilości prądu. Wykorzystuje różnice temperatur pomiędzy Lodocieczą a spalanym Piratianem. -block.rtg-generator.description = Termoelektryczny generator wykorzystujący izotopy promieniotwórcze. Nie wymaga chłodzenia, ale produkuje mniej energii od reaktora torowego. +block.rtg-generator.description = Generator wykorzystujący ciepło powstałe z rozpadu izotopów promieniotwórczych. Nie wymaga chłodzenia, ale produkuje mniej energii od reaktora torowego. block.solar-panel.description = Wytwarza małe ilości prądu wykorzystując energię słoneczną. block.solar-panel-large.description = Wytwarza o wiele więcej prądu niż zwykły panel słoneczny, ale jest o wiele droższy w budowie. block.thorium-reactor.description = Produkuje bardzo duże ilości prądu z wysoce radioaktywnego toru. Wymaga ciągłego chłodzenia. Silnie eksploduje jeśli nie zostanie dostarczona wystarczająca ilość chłodziwa. Produkcja energii zależy od zapełnienia, produkując bazową ilość energii przy całkowitym zapełnieniu. block.impact-reactor.description = Zaawansowany generator, zdolny do produkcji ogromnych ilości prądu u szczytu swoich możliwości. Wymaga znacznych ilości energii do rozpoczęcia procesu. -block.mechanical-drill.description = Tanie wiertło. Kiedy położnone na odpowiednich polach, wysyła przedmioty w wolnym tempie. +block.mechanical-drill.description = Tanie wiertło. Kiedy zostanie zbudowane na odpowiednich polach, wydobywa surowce w wolnym tempie. block.pneumatic-drill.description = Ulepszone wiertło, które jest szybsze i może wykopywać twardsze surowce przy użyciu ciśnienia. -block.laser-drill.description = Pozwala kopać jeszcze szybciej poprzez technologię laserową, ale wymaga energii. Dodatkowo, radioaktywny tor może zostać wydobyty przez to wiertło. +block.laser-drill.description = Pozwala kopać jeszcze szybciej poprzez technologię laserową, ale wymaga energii. Zdolne do wydobywania toru. block.blast-drill.description = Najlepsze wiertło. Wymaga dużych ilości energii. block.water-extractor.description = Wydobywa wodę z ziemi. Użyj go, gdy w pobliżu nie ma jeziora. -block.cultivator.description = Uprawia małe skupiska zarodników w gotowe do użytku kapsułki. +block.cultivator.description = Uprawia małe skupiska zarodników i umieszcza je w gotowych do dalszego przetwarzania kapsułach. block.oil-extractor.description = Używa bardzo dużych ilości energii do ekstrakcji ropy z piasku. Używaj go w sytuacji kiedy nie ma bezpośredniego źródła ropy w okolicy. block.core-shard.description = Pierwsza wersja rdzenia. Gdy zostaje zniszczony, wszelki kontakt do regionu zostaje utracony. Nie pozwól na to. block.core-foundation.description = Druga wersja rdzenia. Lepiej opancerzony. Przechowuje więcej surowców. @@ -1056,22 +1117,22 @@ block.launch-pad-large.description = Ulepszona wersja wyrzutni. Magazynuje więc block.duo.description = Mała, tania wieża. Przydatna przeciwko jednostkom naziemnym. block.scatter.description = Średniej wielkości wieża przeciwlotnicza. Rozsiewa śruty z ołowiu lub strzępy złomu na jednostki wroga. block.scorch.description = Spala wszystkich wrogów naziemnych w pobliżu. Bardzo skuteczny z bliskiej odległości. -block.hail.description = Mała wieża artyleryjska, bardzo przydatna, atakuje tylko jednostki naziemne. -block.wave.description = Średniej wielkości szybkostrzelna wieżyczka, która wystrzeliwuje płynne bąbelki. Gasi ogień jeżeli jest w niej woda lub lodociecz -block.lancer.description = Średniej wielkości wieżyczka, która strzela naładowanymi wiązkami elektryczności. -block.arc.description = Mała wieża bliskiego zasięgu, która wystrzeliwuje wiązki tesli losowym łukiem w kierunku wroga. -block.swarmer.description = Średniej wielkości wieżyczka, która strzela rakietami wybuchowymi. -block.salvo.description = Średniej wielkości wieża strzelająca salwami. +block.hail.description = Mała wieża artyleryjska o dużym zasięgu. +block.wave.description = Średniej wielkości wieżyczka, która wystrzeliwuje strumienie cieczy. Automatycznie gasi ogień jeśli zasilana jest wodą. +block.lancer.description = Średniej wielkości wieżyczka, która po naładowaniu, wystrzeliwuje silne wiązki energii. +block.arc.description = Mała wieża bliskiego zasięgu. Wystrzeliwuje wiązki elektryczne w kierunku wroga. +block.swarmer.description = Średniej wielkości wieżyczka, która wystrzeliwuje rakiety samonaprowadzające. +block.salvo.description = Większa, bardziej zaawansowana wersja Podwójnego Działka, strzelająca szybkimi salwami. block.fuse.description = Duża wieża, która strzela potężnymi wiązkami krótkiego zasięgu. block.ripple.description = Duża wieża artyleryjska, która strzela jednocześnie kilkoma strzałami. block.cyclone.description = Duża szybkostrzelna wieża. -block.spectre.description = Duża wieża, która strzela dwoma potężnymi pociskami jednocześnie. -block.meltdown.description = Duża wieża, która strzela potężnymi wiązkami dalekiego zasięgu. +block.spectre.description = Duże działo dwulufowe, które strzela potężnymi pociskami przebijającymi pancerz w jednostki naziemne i powietrzne. +block.meltdown.description = Duże działo laserowe, które strzela potężnymi wiązkami dalekiego zasięgu. Wymaga chłodzenia. block.command-center.description = Wydaje polecenia ruchu sojuszniczym jednostkom na całej mapie.\nPowoduje patrolowanie jednostek, atakowanie wrogiego rdzenia lub wycofanie się do rdzenia / fabryki. Gdy nie ma rdzenia wroga, jednostki będą domyślnie patrolować pod dowództwem ataku. block.draug-factory.description = Produkuje drony wydobywcze Draug. block.spirit-factory.description = Produkuje lekkie drony, które naprawiają bloki. block.phantom-factory.description = Produkuje zaawansowane drony które pomagają przy budowie. -block.wraith-factory.description = Produkuje szybkie jednostki powietrzne typu "uderz-uciekaj". +block.wraith-factory.description = Produkuje szybkie jednostki powietrzne typu "uderz i uciekaj". block.ghoul-factory.description = Produkuje ciężkie bombowce dywanowe. block.revenant-factory.description = Produkuje ciężkie jednostki powietrzne z wyrzutniami rakiet. block.dagger-factory.description = Produkuje podstawowe jednostki lądowe. diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index cde736c89c..169b5c0673 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -4,7 +4,7 @@ contributors = Tradutores e contribuidores discord = Junte-se ao Discord do Mindustry! (Lá nós falamos em inglês) link.discord.description = O discord oficial do Mindustry link.github.description = Código fonte do jogo. -link.changelog.description = List of update changes +link.changelog.description = Lista de mudanças da atualização link.dev-builds.description = Desenvolvimentos Instáveis link.trello.description = Trello Oficial para Updates Planejados link.itch.io.description = Pagina da Itch.io com os Downloads @@ -14,15 +14,30 @@ linkfail = Falha ao abrir o link\nO Url foi copiado screenshot = Screenshot salvo para {0} screenshot.invalid = Mapa grande demais, Potencialmente sem memória suficiente para captura. gameover = O núcleo foi destruído. -gameover.pvp = O time[accent] {0}[] É vitorioso! +gameover.pvp = O time[accent] {0}[] ganhou! highscore = [YELLOW]Novo recorde! - +copied = Copied. load.sound = Sons load.map = Mapas load.image = Imagens load.content = Conteúdo load.system = Sistema - +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Hordas derrotadas:[accent] {0} stat.enemiesDestroyed = Inimigos Destruídos:[accent] {0} stat.built = Construções construídas:[accent] {0} @@ -31,7 +46,7 @@ stat.deconstructed = Construções desconstruídas:[accent] {0} stat.delivered = Recursos lançados: stat.rank = Rank Final: [accent]{0} launcheditems = [accent]Itens lançados - +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = Certeza que quer deletar o mapa "[accent]{0}[]"? level.highscore = Melhor\npontuação: [accent] {0} level.select = Seleção de Fase @@ -43,17 +58,17 @@ database = banco do núcleo savegame = Salvar Jogo loadgame = Carregar Jogo joingame = Entrar no Jogo -addplayers = Adicionar/Remover Jogador customgame = Jogo Customi-/nzado newgame = Novo Jogo none = minimap = Mini-Mapa +position = Position close = Fechar -website = Website +website = Site quit = Sair -save.quit = Save & Quit +save.quit = Salvar e sair maps = Mapas -maps.browse = Browse Maps +maps.browse = Pesquisar mapas continue = Continuar maps.none = [LIGHT_GRAY]Nenhum Mapa Encontrado! invalid = Inválido @@ -63,10 +78,28 @@ uploadingcontent = Fazendo upload do conteúdo uploadingpreviewfile = Fazendo upload do arquivo de pré visualização committingchanges = Enviando mudanças done = Feito - +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Sobre name = Nome: -noname = Pegue[accent] um nome[] primeiro. +noname = Escolha[accent] um nome[] primeiro. filename = Nome do arquivo: unlocked = Novo bloco Desbloqueado! completed = [accent]Completado @@ -80,15 +113,15 @@ server.closing = [accent]Fechando servidor... server.kicked.kick = Voce foi expulso do servidor! server.kicked.whitelist = Você não está na lista branca do servidor. server.kicked.serverClose = Servidor Fechado. -server.kicked.vote = Você foi expulso desse servidor. Tchau. +server.kicked.vote = Você foi expulso desse servidor. Adeus. server.kicked.clientOutdated = Cliente desatualizado! Atualize seu jogo! server.kicked.serverOutdated = Servidor desatualiado! Peça ao dono para atualizar! server.kicked.banned = Você foi banido do servidor. server.kicked.typeMismatch = Este servidor não é compatível com a sua versão. -server.kicked.playerLimit = Este servidor está cheio. Espere por uma vaga -server.kicked.recentKick = Voce foi banido recentemente.\nEspere para conectar de novo. -server.kicked.nameInUse = Este nome já esta sendo usado\nneste servidor. -server.kicked.nameEmpty = Voce deve ter pelo menos uma letra ou número. +server.kicked.playerLimit = Este servidor está cheio. Espere por uma vaga. +server.kicked.recentKick = Voce foi expulso recentemente.\nEspere para conectar de novo. +server.kicked.nameInUse = Este nome já está sendo usado\nneste servidor. +server.kicked.nameEmpty = Você deve ter pelo menos uma letra ou número no nome. server.kicked.idInUse = Você ja está neste servidor! Conectar com duas contas não é permitido. server.kicked.customClient = Este servidor não suporta versões customizadas. Baixe a versão original. server.kicked.gameover = Fim de jogo! @@ -110,7 +143,7 @@ trace = Traçar jogador trace.playername = Nome do jogador: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID unico: [accent]{0} -trace.mobile = Mobile Client: [accent]{0} +trace.mobile = Cliente móvel: [accent]{0} trace.modclient = Cliente Customizado: [accent]{0} invalidid = ID do cliente invalido! Reporte o bug. server.bans = Banidos @@ -126,15 +159,15 @@ server.version = [lightgray]Versão: {0} server.custombuild = [yellow]Versão customizada confirmban = Certeza que quer banir este jogador? confirmkick = Certeza que quer expulsar o jogador? -confirmvotekick = Você tem certeza de que quer votar para banir este jogador? +confirmvotekick = Você tem certeza de que quer votar para expulsar este jogador? confirmunban = Certeza que quer desbanir este jogador? confirmadmin = Certeza que quer fazer este jogador um administrador? confirmunadmin = Certeza que quer remover o estatus de adminstrador deste jogador? joingame.title = Entrar no jogo joingame.ip = IP: disconnect = Desconectado. -disconnect.error = Connection error. -disconnect.closed = Connection closed. +disconnect.error = Erro de conexão. +disconnect.closed = Conexão fechada. disconnect.timeout = Tempo esgotado. disconnect.data = Falha ao abrir os dados do mundo! cantconnect = Impossível conectar ([accent]{0}[]). @@ -144,7 +177,6 @@ server.port = Porte: server.addressinuse = Senha em uso! server.invalidport = Numero de porta invalido! server.error = [crimson]Erro ao hospedar o servidor: [accent]{0} -save.old = Este save é para uma versão antiga do jogo, e não pode ser usado.\n\n[LIGHT_GRAY]Salvar versões antigas vai ser implementado na versão 4.0 completa save.new = Novo salvamento save.overwrite = Você tem certeza que quer sobrescrever este salvamento? overwrite = Salvar sobre @@ -161,7 +193,7 @@ save.import = Importar salvamento save.newslot = Nome do salvamento: save.rename = Renomear save.rename.text = Novo jogo: -selectslot = Selecione um slot para salvar. +selectslot = Selecione um lugar para salvar. slot = [accent]Slot {0} editmessage = Edit Message save.corrupted = [accent]Arquivo corrompido ou inválido! @@ -178,9 +210,10 @@ warning = Aviso. confirm = Confirmar delete = Excluir view.workshop = Ver na oficina +workshop.listing = Edit Workshop Listing ok = OK open = Abrir -customize = Customize +customize = Customizar cancel = Cancelar openlink = Abrir Link copylink = Copiar link @@ -188,14 +221,19 @@ back = Voltar data.export = Exportar dados data.import = Importar dados data.exported = Dados exportados. -data.invalid = Estes dados de jogo não são válidos +data.invalid = Estes dados de jogo não são válidos. data.import.confirm = Importar dados externos irá deletar[scarlet] todos[] os seus dados atuais.\n[accent]Isso não pode ser desfeito![]\n\nQuando sua data é importada, seu jogo ira sair imediatamente. classic.export = Exportar dados clássicos -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? +classic.export.text = [accent]Mindustry[] acabou de ter uma grande atualização.\nForam detectados salvamentos ou mapas na versão clássica (v3.5 build 40). Você gostaria de exportar estes salvamentos para a pasta inicial do seu celular, para usar no Mindustry Classic? quit.confirm = Você tem certeza que quer sair? quit.confirm.tutorial = Você tem certeza você sabe o que você esta fazendo?\nO tutorial pode ser refeito nas [accent] Configurações->Jogo->Refazer Tutorial.[] loading = [accent]Carregando... +reloading = [accent]Reloading Mods... saving = [accent]Salvando... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Horda {0} wave.waiting = Horda em {0} wave.waveInProgress = [LIGHT_GRAY]Horda Em Progresso @@ -207,18 +245,24 @@ loadimage = Carregar\nimagem saveimage = Salvar\nimagem unknown = Desconhecido custom = Customizado -builtin = Built-In +builtin = Embutido map.delete.confirm = Certeza que quer deletar este mapa? Isto não pode ser desfeito! map.random = [accent]Mapa aleatório map.nospawn = Este mapa não possui nenhum núcleo para o jogador nascer! Adicione um núcleo[accent] amarelo[] para este mapa no editor. map.nospawn.pvp = Esse mapa não tem núcleos inimigos para os jogadores nascerem! Adicione[SCARLET] Núcleos vermelhos[] no mapa no editor. map.nospawn.attack = Esse mapa não tem nenhum núcleo inimigo para o jogador atacar! coloque[SCARLET] Núcleos[] vermelhos no editor. map.invalid = Erro ao carregar o mapa: Arquivo de mapa invalido ou corrupto. -map.publish.error = Error publishing map: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Você tem certeza de que quer publicar este mapa?\n\n[lightgray]Tenha certeza de que você concorda com o EULA da oficina primeiro, ou seus mapas não serão mostrados! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = EULA do Steam -map.publish = Mapa publicado. -map.publishing = [accent]Publicando mapa... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Pincel editor.openin = Abrir no Editor editor.oregen = Geração de minério @@ -255,7 +299,7 @@ edit = Editar... editor.name = Nome: editor.spawn = Criar unidade editor.removeunit = Remover unidade -editor.teams = Time +editor.teams = Times editor.errorload = Erro ao carregar arquivo:\n[accent]{0} editor.errorsave = Erro ao salvar arquivo:\n[accent]{0} editor.errorimage = Isso é uma imagem, não um mapa. Não vá por aí mudando extensões esperando que funcione.\n\nSe você quer importar um mapa legacy, Use o botão 'Importar mapa legacy'no editor. @@ -264,7 +308,7 @@ editor.errornot = Este não é um arquivo de mapa. editor.errorheader = Este arquivo de mapa não é mais válido ou está corrompido. editor.errorname = O mapa não tem nome definido. editor.update = Atualizar -editor.randomize = Randomizar +editor.randomize = Aleatorizar editor.apply = Aplicar editor.generate = Gerar editor.resize = Redimen-\nsionar @@ -286,7 +330,7 @@ editor.exportfile = Exportar arquivo editor.exportfile.description = Exportar um arquivo de mapa editor.exportimage = Exportar imagem de terreno editor.exportimage.description = Exportar um arquivo de imagem de mapa -editor.loadimage = Carregar\n Imagem +editor.loadimage = Carregar\nImagem editor.saveimage = Salvar\nImagem editor.unsaved = [scarlet]Você tem alterações não salvas![]\nTem certeza que quer sair? editor.resizemap = Redimensionar Mapa @@ -295,7 +339,6 @@ editor.overwrite = [accent]Aviso!\nIsso Substitui um mapa existente. editor.overwrite.confirm = [scarlet]Aviso![] Um mapa com esse nome já existe. Tem certeza que deseja substituir? editor.exists = Já existe um mapa com este nome. editor.selectmap = Selecione uma mapa para carregar: - toolmode.replace = Substituir toolmode.replace.description = Desenha apenas em blocos sólidos. toolmode.replaceall = Substituir tudo @@ -310,13 +353,12 @@ toolmode.fillteams = Encher times toolmode.fillteams.description = Muda o time do qual todos os blocos pertencem. toolmode.drawteams = Desenhar times toolmode.drawteams.description = Muda o time do qual o bloco pertence. - filters.empty = [LIGHT_GRAY]Sem filtro! Adicione um usando o botão abaixo. filter.distort = Distorcedor filter.noise = Geração aleatória -filter.median = Median -filter.oremedian = Ore Median -filter.blend = Blend +filter.median = Mediano +filter.oremedian = Minério Mediano +filter.blend = Misturar filter.defaultores = Minérios padrão filter.ore = Minério filter.rivernoise = Geração aleatória de rios @@ -332,7 +374,7 @@ filter.option.threshold = Margem filter.option.circle-scale = Escala de círculo filter.option.octaves = Oitavas filter.option.falloff = Caída -filter.option.angle = Angle +filter.option.angle = Ângulo filter.option.block = Bloco filter.option.floor = Chão filter.option.flooronto = Chão alvo @@ -342,7 +384,6 @@ filter.option.floor2 = Chão secundário filter.option.threshold2 = Margem secundária filter.option.radius = Raio filter.option.percentile = Percentual - width = Largura: height = Altura: menu = Menu @@ -351,7 +392,6 @@ campaign = Campa-/nnha load = Carregar save = Salvar fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Por favor, reinicie seu jogo para a tradução tomar efeito. settings = Configu-/nrações @@ -359,13 +399,13 @@ tutorial = Tutorial tutorial.retake = Refazer Tutorial editor = Editor mapeditor = Editor de mapa -donate = Doar - abandon = Abandonar abandon.text = Esta zona e todos os seus recursos serão perdidos para o inimigo. locked = Trancado complete = [LIGHT_GRAY]Completo: -zone.requirement = Horda {0} Na zona {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Resumir Zona:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]Melhor: {0} launch = Lançar @@ -376,18 +416,19 @@ launch.confirm = Isto vai lançar todos os seus recursos no seu núcleo.\nVoce n launch.skip.confirm = Se você pular a horda agora, você não será capaz de lançar até hordas mais avançadas. uncover = Descobrir configure = Configurar carregamento +bannedblocks = Banned Blocks +addall = Add All configure.locked = [LIGHT_GRAY]Alcançe a horda {0}\npara configurar o carregamento. configure.invalid = A quantidade deve ser um número entre 0 e {0}. zone.unlocked = [LIGHT_GRAY]{0} Desbloqueado. zone.requirement.complete = Horda {0} alcançada:\n{1} Requerimentos da zona alcançada. -zone.config.complete = Horda {0} Alcançada:\nConfiguração do carregamento desbloqueado. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Recursos detectados: zone.objective = [lightgray]Objetivo: [accent]{0} zone.objective.survival = Sobreviver zone.objective.attack = Destruir o núcleo inimigo add = Adicionar... boss.health = Saúde do chefe - connectfail = [crimson]Falha ao entrar no servidor: [accent]{0} error.unreachable = Servidor inalcançável. error.invalidaddress = Endereço inválido. @@ -398,7 +439,6 @@ error.mapnotfound = Arquivo de mapa não encontrado! error.io = Erro I/O de internet. error.any = Erro de rede desconhecido. error.bloom = Falha ao inicializar bloom.\nSeu dispositivo talvez não o suporte. - zone.groundZero.name = Marco zero zone.desertWastes.name = Ruínas do Deserto zone.craters.name = As crateras @@ -413,7 +453,6 @@ zone.saltFlats.name = Planícies de sal zone.impact0078.name = Impacto 0078 zone.crags.name = Penhascos zone.fungalPass.name = Passagem Fúngica - zone.groundZero.description = Uma ótima localização para começar de novo. Baixa ameaça inimiga. Poucos recursos.\nColete o máximo de chumbo e cobre possível.\nContinue! zone.frozenForest.description = Até aqui, perto das montanhas, os esporos se espalharam. As baixas temperaturas não podem contê-los para sempre.\n\nComeçe a busca por energia. Construa geradores à combustão. Aprenda a usar os reparadores (menders). zone.desertWastes.description = Estas ruínas são vastas, imprevisíveis, e cruzadas por estruturas abandonadas.\nCarvão está presente na região. O queime por energia, ou sintetize grafite.\n\n[lightgray]Este local de pouso não pode ser garantido. @@ -425,10 +464,9 @@ zone.overgrowth.description = Esta área tem crescimento excessivo, mais perto d zone.tarFields.description = Nos arredores de uma zona de produção de petróleo, entre as montanhas e o deserto. Uma das poucas áreas com reservas utilizáveis de piche.\nApesar de abandonada, esta área possui perigosas forças inimigas por perto. Não as subestime.\n\n[lightgray]Pesquise tecnologias de processamento de petróleo se possível. zone.desolateRift.description = Uma zona extremamente perigosa. Recursos abundantes, porém pouco espaço. Alto risco de destruição. Saia o mais rápido possível. Não seja enganado pelo longo espaço de tempo entre os ataques inimigos. zone.nuclearComplex.description = Uma antiga instalação para produção e processamento de tório, reduzido a ruínas.\n[lightgray]Pesquise o tório e seus muitos usos.\n\nO inimigo está presente aqui em grandes números, constantemente à procura de atacantes. -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.fungalPass.description = Uma area de transição entre montanhas altas e baixas, terras cheias de esporos. Uma pequena base de reconhecimento inimiga está localizada aqui.\nDestrua-a.\nUse as unidades crawler e dagger. Destrua os dois núcleos. zone.impact0078.description = zone.crags.description = - settings.language = Linguagem settings.data = Dados do jogo settings.reset = Restaurar Padrões @@ -440,15 +478,14 @@ settings.graphics = Gráficos settings.cleardata = Apagar dados... settings.clear.confirm = Certeza que quer limpar a os dados?\nOque é feito não pode ser desfeito! settings.clearall.confirm = [scarlet]Aviso![]\nIsso vai limpar toda a data, Incluindo saves, mapas, Keybinds e desbloqueados.\nQuando apertar 'ok' Vai apagar toda a data e sair automaticamente. -settings.clearunlocks = Limpar liberados -settings.clearall = Limpar tudo paused = Pausado +clear = Clear +banned = [scarlet]Banned yes = Sim no = Não info.title = [accent]Informação error.title = [crimson]Ocorreu um Erro. error.crashtitle = Ocorreu um Erro -attackpvponly = [scarlet]Only available in Attack/PvP modes blocks.input = Entrada blocks.output = Saida blocks.booster = Booster @@ -483,22 +520,20 @@ blocks.inaccuracy = Imprecisão blocks.shots = Tiros blocks.reload = Tiros por segundo blocks.ammo = Munição - bar.drilltierreq = Broca melhor necessária. bar.drillspeed = Velocidade da broca: {0}/s bar.efficiency = Eficiência: {0}% bar.powerbalance = Energia: {0} -bar.powerstored = Stored: {0}/{1} +bar.powerstored = Armazenada: {0}/{1} bar.poweramount = Energia: {0} bar.poweroutput = Saída de energia: {0} bar.items = Itens: {0} -bar.capacity = Capacity: {0} +bar.capacity = Capacidade: {0} bar.liquid = Liquido bar.heat = Aquecimento bar.power = Poder bar.progress = Progresso da construção bar.spawned = Unidades: {0}/{1} - bullet.damage = [stat]{0}[lightgray] dano bullet.splashdamage = [stat]{0}[lightgray] Dano em área ~[stat] {1}[lightgray] Blocos bullet.incendiary = [stat]Incendiário @@ -510,7 +545,6 @@ bullet.freezing = [stat]Congelamento bullet.tarred = [stat]Grudento bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munição bullet.reload = [stat]{0}[lightgray]x cadência de tiro - unit.blocks = Blocos unit.powersecond = Unidades de energia/segundo unit.liquidsecond = Unidades de líquido/segundo @@ -533,14 +567,15 @@ category.optional = Melhoras opcionais setting.landscape.name = Travar panorama setting.shadows.name = Sombras setting.linear.name = Filtragem linear +setting.hints.name = Hints setting.animatedwater.name = Água animada setting.animatedshields.name = Escudos animados setting.antialias.name = Filtro suavizante[LIGHT_GRAY] (reinicialização requerida)[] setting.indicators.name = Indicador de aliados setting.autotarget.name = Alvo automatico setting.keyboard.name = Controles de mouse e teclado -setting.touchscreen.name = Controles de tela sensível ao toque -setting.fpscap.name = FPS Maximo +setting.touchscreen.name = Controles de Touchscreen +setting.fpscap.name = FPS Máximo setting.fpscap.none = Nenhum setting.fpscap.text = {0} FPS setting.uiscale.name = Escala da IU[lightgray] (reinicialização requerida)[] @@ -562,6 +597,7 @@ setting.fps.name = Mostrar FPS setting.vsync.name = VSync setting.pixelate.name = Pixelizado [LIGHT_GRAY](Pode diminuir a performace) setting.minimap.name = Mostrar minimapa +setting.position.name = Show Player Position setting.musicvol.name = Volume da Música setting.ambientvol.name = Volume do ambiente setting.mutemusic.name = Desligar Música @@ -573,6 +609,8 @@ setting.publichost.name = Visibilidade do jogo público setting.chatopacity.name = Opacidade do chat setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Mostrar chat em jogo +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. uiscale.reset = A escala da IU foi mudada.\nPressione "OK" para confirmar esta escala.\n[scarlet]Revertendo e saindo em[accent] {0}[] settings... uiscale.cancel = Cancelar e sair setting.bloom.name = Bloom @@ -584,13 +622,16 @@ category.multiplayer.name = Multijogador command.attack = Atacar command.rally = Reunir command.retreat = Recuar -keybind.gridMode.name = Seleção de blocos -keybind.gridModeShift.name = Seleção de categoria +keybind.clear_building.name = Clear Building keybind.press = Pressione uma tecla... keybind.press.axis = Pressione uma Axis ou tecla... keybind.screenshot.name = Captura do mapa keybind.move_x.name = mover_x keybind.move_y.name = mover_y +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Alterar tela cheia keybind.select.name = selecionar keybind.diagonal_placement.name = Colocação diagonal @@ -602,23 +643,26 @@ keybind.zoom_hold.name = segurar_zoom keybind.zoom.name = Zoom keybind.menu.name = Menu keybind.pause.name = Pausar +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Minimapa keybind.dash.name = Correr keybind.chat.name = Conversa keybind.player_list.name = Lista_de_jogadores keybind.console.name = console keybind.rotate.name = Girar +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Ativar menus keybind.chat_history_prev.name = Historico do chat anterior keybind.chat_history_next.name = Historico do proximo chat keybind.chat_scroll.name = Rolar chat keybind.drop_unit.name = Soltar unidade -keybind.zoom_minimap.name = Zoom minimap +keybind.zoom_minimap.name = Zoom do minimapa mode.help.title = Descrição dos modos -mode.survival.name = Sobrevivencia +mode.survival.name = Sobrevivência mode.survival.description = O modo normal. Recursos limitados e hordas automáticas. mode.sandbox.name = Sandbox mode.sandbox.description = Recursos infinitos e sem tempo para ataques. +mode.editor.name = Editor mode.pvp.name = JXJ mode.pvp.description = Lutar contra outros jogadores locais. mode.attack.name = Ataque @@ -627,7 +671,7 @@ mode.custom = Regras personalizadas rules.infiniteresources = Recursos infinitos rules.wavetimer = Tempo de horda rules.waves = Hordas -rules.attack = Attack Mode +rules.attack = Modo de ataque rules.enemyCheat = Recursos de IA Infinitos rules.unitdrops = Unidade solta rules.unitbuildspeedmultiplier = Multiplicador de velocidade de criação de unidade @@ -641,7 +685,7 @@ rules.wavespacing = Espaço entre hordas:[LIGHT_GRAY] (seg) rules.buildcostmultiplier = Multiplicador de custo de construção rules.buildspeedmultiplier = Multiplicador de velocidade de construção rules.waitForWaveToEnd = hordas esperam inimigos -rules.dropzoneradius = Zona de soltá:[LIGHT_GRAY] (blocos) +rules.dropzoneradius = Raio da zona de spawn:[LIGHT_GRAY] (blocos) rules.respawns = Respawn maximos por horda rules.limitedRespawns = Respawn limitados rules.title.waves = Hordas @@ -665,7 +709,7 @@ item.silicon.name = Sílicio item.plastanium.name = Plastânio item.phase-fabric.name = Tecido de fase item.surge-alloy.name = Liga de surto -item.spore-pod.name = Pod de esporos +item.spore-pod.name = Cápsula de esporos item.sand.name = Areia item.blast-compound.name = Composto de explosão item.pyratite.name = Piratita @@ -711,28 +755,28 @@ mech.buildspeed = [LIGHT_GRAY]Velocidade de construção: {0}% liquid.heatcapacity = [LIGHT_GRAY]Capacidade de aquecimento: {0} liquid.viscosity = [LIGHT_GRAY]Viscosidade: {0} liquid.temperature = [LIGHT_GRAY]Temperatura: {0} -block.sand-boulder.name = Sand Boulder +block.sand-boulder.name = Pedregulho de areia block.grass.name = Grama block.salt.name = Sal block.saltrocks.name = Pedras De Sal -block.pebbles.name = Pebbles -block.tendrils.name = Tendrils +block.pebbles.name = Pedrinhas +block.tendrils.name = Gavinhas block.sandrocks.name = Pedras de areia block.spore-pine.name = Pinheiro de esporo block.sporerocks.name = Pedras de esporo -block.rock.name = Pedra -block.snowrock.name = Pedra de gelo -block.snow-pine.name = Snow Pine +block.rock.name = Rocha +block.snowrock.name = Rocha com neve +block.snow-pine.name = Pinheiro com neve block.shale.name = Xisto block.shale-boulder.name = Pedra de xisto block.moss.name = Musgo -block.shrubs.name = Shrubs +block.shrubs.name = Arbusto block.spore-moss.name = Musgo de esporos -block.shalerocks.name = Pedas de xisto -block.scrap-wall.name = Parede de sucata -block.scrap-wall-large.name = Parede de sucata grande -block.scrap-wall-huge.name = Parede de sucata Maior -block.scrap-wall-gigantic.name = Muro de sucata gigante +block.shalerocks.name = Rohas de xisto +block.scrap-wall.name = Muro de sucata +block.scrap-wall-large.name = Muro grande de sucata +block.scrap-wall-huge.name = Muro enorme de sucata +block.scrap-wall-gigantic.name = Muro gigante de sucata block.thruster.name = Propulsor block.kiln.name = Forno para metavidro block.graphite-press.name = Prensa de grafite @@ -799,12 +843,13 @@ block.hail.name = Granizo block.lancer.name = Lançador block.conveyor.name = Esteira block.titanium-conveyor.name = Esteira de Titânio -block.armored-conveyor.name = Esteira blindada -block.armored-conveyor.description = Move itens com a mesma velocidade que esteiras de titânio, mas tem mais armadura. Não aceita itens dos lados a não ser de outras esteiras. +block.armored-conveyor.name = Esteira Armadurada +block.armored-conveyor.description = Move os itens com a mesma velocidade das esteiras de titânio, mas tem mais armadura. Não aceita itens dos lados de nada além de outras esteiras. block.junction.name = Junção block.router.name = Roteador block.distributor.name = Distribuidor block.sorter.name = Ordenador +block.inverted-sorter.name = Inverted Sorter block.message.name = Mensagem block.overflow-gate.name = Portão Sobrecarregado block.silicon-smelter.name = Fundidora de silicio @@ -941,7 +986,6 @@ tutorial.deposit = Deposite itens em blocos arrastando da sua nave até o bloco. tutorial.waves = O[LIGHT_GRAY] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Construa mais torretas. tutorial.waves.mobile = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Seu drone vai atirar nos inimigos automaticamente.\nConstrua mais torretas e brocas. Minere mais cobre. tutorial.launch = Quando você atinge uma horda específica, Você é capaz de[accent] lançar o núcleo[], deixando suas defesas para trás e[accent] obtendo todos os recursos em seu núcleo.[]\nEstes recursos podem ser usados para pesquisar novas tecnologias.\n\n[accent]Pressione o botão lançar. - item.copper.description = O material mais básico. Usado em todos os tipos de blocos. item.lead.description = Material de começo basico. usado extensivamente em blocos de transporte de líquidos e eletrônicos. item.metaglass.description = Composto de vidro super resistente. Extensivamente usado para distribuição e armazenagem de líquidos. @@ -1004,20 +1048,20 @@ block.item-source.description = Infinivamente da itens. Apenas caixa de areia. block.item-void.description = Destroi qualquer item que entre sem requerir energia. Apenas caixa de areia. block.liquid-source.description = Infinitivamente da Liquidos. Apenas caixa de areia. block.copper-wall.description = Um bloco defensivo e barato.\nUtil para proteger o núcleo e torretas no começo. -block.copper-wall-large.description = Um bloco defensivo e barato.\nUtil para proteger o núcleo e torretas no começo.\nOcupa multiplos espaços. -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 = Um bloco defensivo e barato.\nUtil para proteger o núcleo e torretas no começo.\nOcupa múltiplos blocos. +block.titanium-wall.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos. +block.titanium-wall-large.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.\nOcupa múltiplos blocos. block.thorium-wall.description = Um bloco defensivo forte.\nBoa proteção contra inimigos. -block.thorium-wall-large.description = Um bloco grande e defensivo.\nBoa proteção contra inimigos.\nOcupa multiplos espaços. -block.phase-wall.description = Não tão forte quanto a parede de torio Mas vai defletir balas a menos que seja muito forte. -block.phase-wall-large.description = Não tão forte quanto a parde de torio mas vai defletir balas a menos que seja muito forte.\nOcupa multiplos espaços. -block.surge-wall.description = O bloco defensivo mais forte.\nQue tem uma pequena chance de lançar um raio Contra o atacante. -block.surge-wall-large.description = O bloco defensivo mais forte.\nQue tem uma pequena chance de lançar um raio Contra o atacante.\nOcupa multiplos espaços -block.door.description = Uma pequena porta que pode ser aberta o fechada quando voce clica.\nSe aberta, Os inimigos podem atirar e passar. -block.door-large.description = Uma grande porta que pode ser aberta o fechada quando voce clica.\nSe aberta, Os inimigos podem atirar e passar..\nOcupa multiplos espaços. -block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. -block.mend-projector.description = Periodicamente conserta as construções. -block.overdrive-projector.description = Aumenta a velocidade de unidades proximas de geradores e esteiras. +block.thorium-wall-large.description = Um bloco grande e defensivo.\nBoa proteção contra inimigos.\nOcupa multiplos blocos. +block.phase-wall.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto. +block.phase-wall-large.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto.\nSOcupa múltiplos blocos. +block.surge-wall.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-s aleatoriamente. +block.surge-wall-large.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-s aleatoriamente.\nOcupa multiplos blocos. +block.door.description = Uma pequeda porta. Pode ser aberta e fechada ao tocar. +block.door-large.description = Uma grande porta. Pode ser aberta e fechada ao tocar.\nOcupa múltiplos blocos. +block.mender.description = Periodicamente repara blocos vizinhos. Mantem as defesas reparadas em e entre ondas.\nPode usar silício para aumentar o alcance e a eficiência. +block.mend-projector.description = Uma versão melhorada do reparador. Repara blocos vizinhos.\nPode usar tecido de fase para aumentar o alcance e a eficiência. +block.overdrive-projector.description = Aumenta a velocidade de construções vizinhas.\nPode usar tecido de fase para aumentar o alcance e a eficiência. block.force-projector.description = Cria um campo de forca hexagonal em volta de si mesmo, Protegendo construções e unidades dentro de dano por balas. block.shock-mine.description = Danifica inimigos em cima da mina. Quase invisivel ao inimigo. block.conveyor.description = Bloco de transporte de item basico. Move os itens a frente e os deposita automaticamente em torretas ou construtores. Rotacionavel. @@ -1026,6 +1070,7 @@ block.junction.description = Funciona como uma ponte Para duas esteiras que este block.bridge-conveyor.description = Bloco de transporte de itens avancado. Possibilita o transporte de itens acima de 3 blocos de construção ou paredes. block.phase-conveyor.description = Bloco de transporte de item avançado. Usa energia para teleportar itens a uma esteira de fase sobre uma severa distancia. block.sorter.description = [interact]Aperte no bloco para configurar[] +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Aceita itens de uma direção e os divide em 3 direções igualmente. Util para espalhar materiais da fonte para multiplos alvos. block.distributor.description = Um roteador avancada que espalhas os itens em 7 outras direções igualmente. block.overflow-gate.description = Uma combinação de roteador e divisor Que apenas manda para a esquerda e Direita se a frente estiver bloqueada. @@ -1061,17 +1106,17 @@ block.blast-drill.description = A melhor mineradora. Requer muita energia. block.water-extractor.description = Extrai água do chão. Use quando não tive nenhum lago proximo block.cultivator.description = Cultiva o solo com agua para pegar bio materia. block.oil-extractor.description = Usa altas quantidades de energia Para extrair oleo da areia. Use quando não tiver fontes de oleo por perto -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.core-shard.description = Primeira iteração da cápsula do núcleo. Uma vez destruida, o controle da região inteira é perdido. Não deixe isso acontecer. +block.core-foundation.description = A segunda versão do núcleo. Melhor armadura. Guarda mais recursos. +block.core-nucleus.description = A terceira e ultima iteração do núcleo. Extremamente bem armadurada. Guarda quantidades massivas de recursos. block.vault.description = Carrega uma alta quantidade de itens. Usado para criar fontes Quando não tem uma necessidade constante de materiais. Um[LIGHT_GRAY] Descarregador[] pode ser usado para recuperar esses itens do container. block.container.description = Carrega uma baixa quantidade de itens. Usado para criar fontes Quando não tem uma necessidade constante de materiais. Um[LIGHT_GRAY] Descarregador[] pode ser usado para recuperar esses itens do container. block.unloader.description = Descarrega itens de um container, Descarrega em uma esteira ou diretamente em um bloco adjacente. O tipo de item que pode ser descarregado pode ser mudado clicando no descarregador. -block.launch-pad.description = Lança montes de itens sem qualquer necessidade de um lançamento de nucleo. Não completo. -block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently. +block.launch-pad.description = Lança montes de itens sem qualquer necessidade de um lançamento de núcleo. +block.launch-pad-large.description = Uma versão melhorada da plataforma de lançamento. Guarda mais itens. Lança mais frequentemente. block.duo.description = Uma torre pequena e barata. -block.scatter.description = A medium-sized anti-air turret. Sprays clumps of lead or scrap flak at enemy units. -block.scorch.description = Burns any ground enemies close to it. Highly effective at close range. +block.scatter.description = Uma torre anti aerea media. Joga montes de cobre ou sucata aos inimigos. +block.scorch.description = Queima qualquer inimigo terrestre próximo. Altamente efetivo a curta distncia. block.hail.description = Uma pequena torre de artilharia. block.wave.description = Uma torre que Tamanho medio que atira bolhas. block.lancer.description = Uma torre de Tamanho-Medio que atira raios de eletricidade. @@ -1083,11 +1128,11 @@ block.ripple.description = Uma grande torre que atira simultaneamente. block.cyclone.description = Uma grande torre de tiro rapido. block.spectre.description = Uma grande torre que da dois tiros poderosos ao mesmo tempo. block.meltdown.description = Uma grande torre que atira dois raios poderosos ao mesmo tempo. -block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. -block.draug-factory.description = Produces Draug mining drones. -block.spirit-factory.description = Produz drones leves que mineram e reparam blocos. -block.phantom-factory.description = Produz unidades de drone avancadas Que são significativamente mais efetivos que um drone spirit. -block.wraith-factory.description = produz unidades interceptor de ataque rapido. +block.command-center.description = Emite comandos de movimento para unidades aliadas através do mapa.\nFaz unidades se reagruparem, atacarem um núcleo inimigo ou recuar para o núcleo/fábrica. Quando não há nucleo inimigo, unidades vão ficar perto da área de spawn dos inimigos sob o comando atacar. +block.draug-factory.description = Produz drones de mineração drawg. +block.spirit-factory.description = produz drones Spirit de reparo estrutural. +block.phantom-factory.description = Produz drones de construção avançados. +block.wraith-factory.description = Produz unidades rápidas hit-and-run (atacar e correr) block.ghoul-factory.description = Produz bombardeiros pesados. block.revenant-factory.description = Produz unidades laser, pesadas e terrestres. block.dagger-factory.description = Produz unidades terrestres. diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index b020766974..fd249ccf6e 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -7,8 +7,8 @@ link.github.description = Исходный код игры link.changelog.description = Список изменений link.dev-builds.description = Нестабильные версии link.trello.description = Официальная доска Trello для запланированных функций -link.itch.io.description = Itch.io страница с загрузками игры -link.google-play.description = Скачать для Android с Google play +link.itch.io.description = Страница itch.io с загрузками игры +link.google-play.description = Скачать для Android с Google Play link.wiki.description = Официальная вики linkfail = Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена. screenshot = Cкриншот сохранён в {0} @@ -16,35 +16,53 @@ screenshot.invalid = Карта слишком большая, возможно, gameover = Игра окончена gameover.pvp = [accent]{0}[] команда победила! highscore = [accent]Новый рекорд! +copied = Copied. load.sound = Звуки load.map = Карты load.image = Изображения load.content = Содержимое load.system = Система +load.mod = Модификации +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks 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} +stat.rank = Финальный ранг: [accent]{0} launcheditems = [accent]Запущенные предметы +launchinfo = [unlaunched]Нажмите на кнопку [ЗАПУСК], чтобы получить предметы, которые отмечены синим цветом. map.delete = Вы действительно хотите удалить карту «[accent]{0}[]»? level.highscore = Рекорд: [accent]{0} level.select = Выбор карты level.mode = Режим игры: showagain = Не показывать снова до следующей сессии coreattack = < Ядро находится под атакой! > -nearpoint = [[ [scarlet]ПОКИНЬТЕ ТОЧКУ ВЫСАДКИ НЕМЕДЛЕННО[] ]\nАннигиляция неизбежна. +nearpoint = [[ [scarlet]ПОКИНЬТЕ ТОЧКУ ВЫСАДКИ НЕМЕДЛЕННО[] ]\nАннигиляция неизбежна database = База данных ядра savegame = Сохранить игру loadgame = Загрузить игру joingame = Сетевая игра -addplayers = Доб./Удалить игроков customgame = Пользовательская игра newgame = Новая игра none = <ничего> minimap = Мини-карта +position = Position close = Закрыть website = Веб-сайт quit = Выход @@ -60,6 +78,25 @@ uploadingcontent = Выгрузка содержимого uploadingpreviewfile = Выгрузка файла предпросмотра committingchanges = Внесение изменений done = Готово +mods.alphainfo = Имейте в виду, что модификации находятся в альфа-версии и могут содержать много ошибок[]. Докладывайте о любых проблемах, которые Вы найдете в Mindustry Github или Discord. +mods.alpha = [accent](Альфа) +mods = Модификации +mods.none = [LIGHT_GRAY]Модификации не найдены! +mods.guide = Руководство по созданию модификаций +mods.report = Доложить об ошибке +mod.enabled = [lightgray]Включён +mod.disabled = [scarlet]Выключен +mod.disable = Выключить +mod.enable = Включить +mod.requiresrestart = Теперь игра закроется, чтобы применить изменения в модификациях. +mod.reloadrequired = [scarlet]Необходим перезапуск +mod.import = Импортировать модификацию +mod.import.github = Импортировать модификацию с Github +mod.remove.confirm = Этот мод будет удалён. +mod.author = [LIGHT_GRAY]Автор:[] {0} +mod.missing = Это сохранение содержит модификацию, которое Вы недавно обновили или оно больше не установлено. Может случиться повреждение сохранения. Вы уверены, что хотите загрузить его?\n[lightgray]Модификации:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Об игре name = Имя: noname = Для начала, придумайте[accent] себе имя[]. @@ -84,17 +121,17 @@ server.kicked.typeMismatch = Этот сервер не совместим с в server.kicked.playerLimit = Этот сервер заполнен. Дождитесь свободного слота. server.kicked.recentKick = Вас недавно выгнали.\nПодождите немного перед следующим подключением. server.kicked.nameInUse = На этом сервере есть кто-то с этим именем. -server.kicked.nameEmpty = Ваше имя должно содержать хотя бы один символ или цифру. +server.kicked.nameEmpty = Выбранное Вами имя недопустимо. server.kicked.idInUse = Вы уже на этом сервере! Соединение с двумя учетными записями не разрешено. server.kicked.customClient = Этот сервер не поддерживает пользовательские сборки. Загрузите официальную версию. server.kicked.gameover = Игра окончена! server.versions = Ваша версия:[accent] {0}[]\nВерсия сервера:[accent] {1}[] -host.info = Кнопка [accent]Сервер[] запускает сервер на порте [accent]6567[]. \nЛюбой пользователь в той же [lightgray]локальной сети или WiFi[] должен увидеть ваш сервер в своём списке серверов.\n\nЕсли Вы хотите, чтобы люди могли подключаться откуда угодно по IP, то требуется [accent]переадресация (проброс) портов[] и наличие [red]ВНЕШНЕГО[] WAN адреса (WAN адрес [red]НЕ должен[] начинаться с [red]10[][lightgray].x.x.x[], [red]100.64[][lightgray].x.x[], [red]172.16[][lightgray].x.x[], [red]192.168[][lightgray].x.x[], [red]127[][lightgray].x.x.x[])!\nКлиентам мобильных операторов нужно уточнять информацию в личном кабинете на сайте вашего оператора!\n\n[lightgray]Примечание: Если у кого-то возникают проблемы с подключением к вашей игре по локальной сети, убедитесь, что Вы разрешили доступ Mindustry к вашей локальной сети в настройках брандмауэра. Обратите внимание, что публичные сети иногда не позволяют обнаружение сервера. +host.info = Кнопка [accent]Сервер[] запускает сервер на порте [scarlet]6567[]. \nЛюбой пользователь в той же [lightgray]локальной сети или WiFi[] должен увидеть ваш сервер в своём списке серверов.\n\nЕсли Вы хотите, чтобы люди могли подключаться откуда угодно по IP, то требуется [accent]переадресация (проброс) портов[] и наличие [red]ВНЕШНЕГО[] WAN адреса (WAN адрес [red]НЕ должен[] начинаться с [red]10[][lightgray].x.x.x[], [red]100.64[][lightgray].x.x[], [red]172.16[][lightgray].x.x[], [red]192.168[][lightgray].x.x[], [red]127[][lightgray].x.x.x[])!\nКлиентам мобильных операторов нужно уточнять информацию в личном кабинете на сайте вашего оператора!\n\n[lightgray]Примечание: Если у кого-то возникают проблемы с подключением к вашей игре по локальной сети, убедитесь, что Вы разрешили доступ Mindustry к вашей локальной сети в настройках брандмауэра. Обратите внимание, что публичные сети иногда не позволяют обнаружение сервера. join.info = Здесь Вы можете ввести [accent]IP-адрес сервера[] для подключения или открыть [accent]локальную сеть[] для подключения к другим серверам.\nПоддерживаются оба многопользовательских режима: LAN и WAN.\n\n[lightgray]Примечание: это НЕ автоматический глобальный список серверов; если Вы хотите подключиться к кому-то по IP, вам нужно спросить у хоста его IP-адрес. hostserver = Запустить многопользовательский сервер invitefriends = Пригласить друзей hostserver.mobile = Запустить\nсервер -host = Сервер +host = Открыть сервер hosting = [accent]Открытие сервера… hosts.refresh = Обновить hosts.discovering = Поиск локальных игр @@ -108,7 +145,7 @@ trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} trace.mobile = Мобильный клиент: [accent]{0} trace.modclient = Пользовательский клиент: [accent]{0} -invalidid = Недопустимый идентификатор клиента! Отправьте отчёт об ошибке. +invalidid = Недопустимый уникальный идентификатор клиента! Отправьте отчёт об ошибке. server.bans = Блокировки server.bans.none = Заблокированных игроков нет! server.admins = Администраторы @@ -127,7 +164,7 @@ confirmunban = Вы действительно хотите разблокиро confirmadmin = Вы действительно хотите сделать этого игрока администратором? confirmunadmin = Вы действительно хотите убрать этого игрока из администраторов? joingame.title = Присоединиться к игре -joingame.ip = IP: +joingame.ip = Адрес: disconnect = Отключено. disconnect.error = Ошибка соединения. disconnect.closed = Соединение закрыто. @@ -140,7 +177,6 @@ server.port = Порт: server.addressinuse = Данный адрес уже используется! server.invalidport = Неверный номер порта! server.error = [crimson]Ошибка создания сервера. -save.old = Это сохранение для старой версии игры и больше не может использоваться.\n\n[lightgray]Совместимость сохранений будет реализована в финальной версии 4.0. save.new = Новое сохранение save.overwrite = Вы уверены, что хотите перезаписать\nэтот слот для сохранения? overwrite = Перезаписать @@ -161,7 +197,7 @@ selectslot = Выберите сохранение. slot = [accent]Слот {0} editmessage = Редактировать сообщение save.corrupted = [accent]Сохранённый файл повреждён или имеет недопустимый формат!\nЕсли Вы только что обновили свою игру, это, вероятно, из-за изменения формата сохранения, и [scarlet]не является[] ошибкой. -empty = <Пусто> +empty = <пусто> on = Вкл off = Выкл save.autosave = Автосохранение: {0} @@ -174,6 +210,7 @@ warning = Предупреждение. confirm = Подтверждение delete = Удалить view.workshop = Просмотреть в Мастерской +workshop.listing = Изменить информацию в Мастерской ok = ОК open = Открыть customize = Настроить правила @@ -184,21 +221,26 @@ back = Назад data.export = Экспортировать данные data.import = Импортировать данные data.exported = Данные экспортированы. -data.invalid = Эти игровые данные являются недействительными +data.invalid = Эти игровые данные являются недействительными. data.import.confirm = Импорт внешних данных сотрёт[scarlet] все[] ваши игровые данные.\n[accent]Это не может быть отменено![]\n\nКак только данные импортированы, ваша игра немедленно закроется. -classic.export = Экспортировать данные с классической версии? +classic.export = Экспортировать данные классической версии classic.export.text = [accent]Mindustry[] получил глобальное обновление.\nБыло обнаружено Классическое (версия 3.5 сборка 40) сохранение или карта. Вы хотите экспортировать эти сохранения в домашнюю папку вашего телефона, для использования в приложении Mindustry Classic? quit.confirm = Вы уверены, что хотите выйти? -quit.confirm.tutorial = Вы уверены, что знаете Что делаете?\nОбучение может быть повторно запущено через[accent] Настройки->Игра->Открыть обучение.[] +quit.confirm.tutorial = Вы уверены, что знаете, что делаете?\nОбучение может быть повторно запущено через[accent] Настройки→Игра→Открыть обучение.[] loading = [accent]Загрузка… +reloading = [accent]Перезагрузка модификаций... saving = [accent]Сохранение… +cancelbuilding = [accent][[{0}][] для очистки плана +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] для приостановки строительства +resumebuilding = [scarlet][[{0}][] для продолжения строительства wave = [accent]Волна {0} wave.waiting = [lightgray]Волна через {0} wave.waveInProgress = [lightgray]Волна продолжается waiting = [lightgray]Ожидание… waiting.players = Ожидание игроков… -wave.enemies = [lightgray]{0} противник. осталось -wave.enemy = [lightgray]{0} противник остался +wave.enemies = Осталось противников: [lightgray]{0} +wave.enemy = Остался [lightgray]{0} противник loadimage = Загрузить изображение saveimage = Сохранить изображение unknown = Неизвестно @@ -210,11 +252,17 @@ map.nospawn = Эта карта не имеет ни одного ядра, в map.nospawn.pvp = У этой карты нет вражеских ядер, в которых игрок может появиться! Добавьте[SCARLET] не оранжевое[] ядро на эту карту в редакторе. map.nospawn.attack = У этой карты нет вражеских ядер для атаки игроком! Добавьте[SCARLET] красное[] ядро на эту карту в редакторе. map.invalid = Ошибка загрузки карты: повреждённый или недопустимый файл карты. -map.publish.error = Ошибка при публикации карты: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Вы уверены, что хотите опубликовать эту карту?\n\n[lightgray]Убедитесь, что вы согласны с EULA Мастерской, иначе ваши карты не будут отображаться! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Лицензионное соглашение Steam с конечным пользователем -map.publish = Карта опубликована. -map.publishing = [accent]Отправка карты… +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Кисть editor.openin = Открыть в редакторе editor.oregen = Генерация руд @@ -227,9 +275,9 @@ editor.waves = Волны: editor.rules = Правила: editor.generation = Генерация: editor.ingame = Редактировать в игре -editor.publish.workshop = Опубликовать в Мастерской Steam +editor.publish.workshop = Опубликовать в Мастерской editor.newmap = Новая карта -workshop = Workshop +workshop = Мастерская waves.title = Волны waves.remove = Удалить waves.never = <никогда> @@ -344,7 +392,6 @@ campaign = Кампания load = Загрузить save = Сохранить fps = FPS: {0} -tps = TPS: {0} ping = Пинг: {0}мс language.restart = Перезагрузите игру, чтобы языковые настройки вступили в силу. settings = Настройки @@ -352,12 +399,13 @@ tutorial = Обучение tutorial.retake = Перепройти обучение editor = Редактор mapeditor = Редактор карт -donate = Пожертво\nвать abandon = Покинуть abandon.text = Эта зона и все её ресурсы будут отданы противнику. locked = Заблокировано complete = [lightgray]Достигнута: -zone.requirement = Волна {0} в зоне {1} +requirement.wave = Достигните {0} волны на {1} +requirement.core = Уничтожьте вражеское ядро на {0} +requirement.unlock = Разблокируйте {0} resume = Возобновить зону:\n[lightgray]{0} bestwave = [lightgray]Лучшая волна: {0} launch = < ЗАПУСК > @@ -368,11 +416,13 @@ launch.confirm = Это [accent]запустит[] все ресурсы в Ва launch.skip.confirm = Если Вы пропустите сейчас, то Вы не сможете произвести [accent]запуск[] до более поздних волн. uncover = Раскрыть configure = Конфигурация выгрузки +bannedblocks = Запрещённые блоки +addall = Добавить всё configure.locked = [lightgray]Возможность разблокировки выгрузки ресурсов будет доступна на {0}-ой волне. -configure.invalid = Amount must be a number between 0 and {0}. +configure.invalid = Количество должно быть числом между 0 и {0}. zone.unlocked = Зона «[lightgray]{0}» теперь разблокирована. zone.requirement.complete = Вы достигли {0}-ой волны,\nУсловия для зоны «{1}» выполнены. -zone.config.complete = Вы достигли {0}-ой волны,Возможность выгрузки ресурсов теперь разблокирована. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = [lightgray]Обнаруженные ресурсы: zone.objective = [lightgray]Цель: [accent]{0} zone.objective.survival = Выжить @@ -405,11 +455,11 @@ zone.crags.name = Скалы zone.fungalPass.name = Грибной перевал zone.groundZero.description = Оптимальная локация для повторных игр. Низкая вражеская угроза. Немного ресурсов.\nСоберите как можно больше свинца и меди.\nДвигайтесь дальше. zone.frozenForest.description = Даже здесь, ближе к горам, споры распространились. Холодные температуры не могут сдерживать их вечно.\n\nНачните вкладываться в энергию. Постройте генераторы внутреннего сгорания. Научитесь пользоваться регенератором. -zone.desertWastes.description = Эти пустоши огромны, непредсказуемы и пронизаны заброшенными секторальными структурами.\nВ регионе представлен уголь. Сожгите его для энергии, или синтезируйте в графит.\n\n[lightgray]Место посадки здесь может не быть гарантировано. +zone.desertWastes.description = Эти пустоши огромны, непредсказуемы и пронизаны заброшенными секторальными структурами.\nВ регионе присутствует уголь. Сожгите его для получения энергии, или синтезируйте графит.\n\n[lightgray]Место посадки здесь может не быть гарантировано. zone.saltFlats.description = На окраине пустыни лежат соляные равнины. В этой местности можно найти немного ресурсов.\n\nВраги возвели здесь комплекс хранения ресурсов. Искорените их ядро. Не оставьте камня на камне. -zone.craters.description = В этом кратере скопилась вода, реликвия времён старых войн. Восстановите область. Соберите песок. Выплавите метастекло. Выкачайте воду для охлаждения турелей и буров. -zone.ruinousShores.description = Мимо пустошей проходит береговая линия. Когда-то здесь располагался массив береговой обороны. Не так много от него осталось. Только самые базовые оборонительные сооружения остались невредимыми, всё остальное превратилось в металлолом.\nПродолжайте экспансию во вне. Переоткройте для себя технологии. -zone.stainedMountains.description = Дальше вглубь местности лежат горы, еще не запятнанные спорами.\nИзвлеките изобилие титана в этой области. Узнайте, как его использовать.\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 = Чрезвычайно опасная зона. Обилие ресурсов, но мало места. Высокий риск разрушения. Эвакуироваться нужно как можно скорее. Не расслабляйтесь во время больших перерывов между вражескими атаками. @@ -428,15 +478,14 @@ settings.graphics = Графика settings.cleardata = Очистить игровые данные… settings.clear.confirm = Вы действительно хотите очистить свои данные?\nЭто нельзя отменить! settings.clearall.confirm = [scarlet]ОСТОРОЖНО![]\nЭто сотрёт все данные, включая сохранения, карты, прогресс кампании и настройки управления.\nПосле того как Вы нажмете [accent][ОК][], игра уничтожит все данные и автоматически закроется. -settings.clearunlocks = Очистить прогресс кампании -settings.clearall = Очистить всё paused = [accent]< Пауза > +clear = Clear +banned = [scarlet]Banned yes = Да no = Нет info.title = Информация error.title = [crimson]Произошла ошибка error.crashtitle = Произошла ошибка -attackpvponly = [scarlet]Доступно только в Атаке/PvP режимах blocks.input = Вход blocks.output = Выход blocks.booster = Ускоритель @@ -484,17 +533,17 @@ 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]зажигательный bullet.homing = [stat]самонаводящийся -bullet.shock = [stat]ЭМИ -bullet.frag = [stat]разрывной +bullet.shock = [stat]шоковый +bullet.frag = [stat]осколочный bullet.knockback = [stat]{0}[lightgray] отдачи bullet.freezing = [stat]замораживающий -bullet.tarred = [stat]горючий -bullet.multiplier = [stat]{0}[lightgray]x количество боеприпасов +bullet.tarred = [stat]замедляющий, горючий +bullet.multiplier = [stat]{0}[lightgray]x множитель боеприпасов bullet.reload = [stat]{0}[lightgray]x скорость стрельбы unit.blocks = блоки unit.powersecond = единиц энергии/секунду @@ -518,10 +567,11 @@ category.optional = Дополнительные улучшения setting.landscape.name = Только альбомный (горизонтальный) режим setting.shadows.name = Тени setting.linear.name = Линейная фильтрация +setting.hints.name = Подсказки setting.animatedwater.name = Анимированная вода setting.animatedshields.name = Анимированные щиты setting.antialias.name = Сглаживание[lightgray] (требует перезапуска)[] -setting.indicators.name = Отображать индикаторы расположения союзников и врагов +setting.indicators.name = Индикаторы расположения союзников и врагов setting.autotarget.name = Автозахват цели setting.keyboard.name = Мышь+Управление с клавиатуры setting.touchscreen.name = Сенсорное управление @@ -538,7 +588,7 @@ setting.difficulty.insane = Безумная setting.difficulty.name = Сложность: setting.screenshake.name = Тряска экрана setting.effects.name = Эффекты -setting.sensitivity.name = Чувствительность контроллёра +setting.sensitivity.name = Чувствительность контроллера setting.saveinterval.name = Интервал сохранения setting.seconds = {0} секунд setting.fullscreen.name = Полноэкранный режим @@ -546,7 +596,8 @@ setting.borderlesswindow.name = Безрамочное окно[lightgray] (мо setting.fps.name = Показывать FPS setting.vsync.name = Вертикальная синхронизация setting.pixelate.name = Пикселизация[lightgray] (отключает анимации) -setting.minimap.name = Показать миникарту +setting.minimap.name = Показать мини-карту +setting.position.name = Show Player Position setting.musicvol.name = Громкость музыки setting.ambientvol.name = Громкость окружения setting.mutemusic.name = Заглушить музыку @@ -556,8 +607,10 @@ setting.crashreport.name = Отправлять анонимные отчёты setting.savecreate.name = Автоматическое создание сохранений setting.publichost.name = Общедоступность игры setting.chatopacity.name = Непрозрачность чата -setting.lasersopacity.name = Power Laser Opacity +setting.lasersopacity.name = Непрозрачность лазеров энергоснабжения setting.playerchat.name = Отображать облака чата над игроками +public.confirm = Вы хотите, чтобы Ваша игра стала публичной?\n[accent] Любой игрок сможет присоединиться к Вашем играм.\n[lightgray]Позже, это можно будет изменить в Настройки→Игра→Общедоступность игры. +public.beta = Имейте в виду, что бета-версия игры не может делать игры публичными. uiscale.reset = Масштаб пользовательского интерфейса был изменён.\nНажмите «ОК» для подтверждения этого масштаба.\n[scarlet]Возврат настроек и выход через[accent] {0}[] секунд… uiscale.cancel = Отменить & Выйти setting.bloom.name = Свечение @@ -569,13 +622,16 @@ category.multiplayer.name = Сетевая игра command.attack = Атаковать command.rally = Точка сбора command.retreat = Отступить -keybind.gridMode.name = Выбрать блок -keybind.gridModeShift.name = Выбрать категорию +keybind.clear_building.name = Остановить строительство keybind.press = Нажмите клавишу… keybind.press.axis = Нажмите оси или клавишу… keybind.screenshot.name = Скриншот карты keybind.move_x.name = Движение по оси x keybind.move_y.name = Движение по оси y +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Полноэкранный режим keybind.select.name = Выбор/Выстрел keybind.diagonal_placement.name = Диагональное размещение @@ -587,23 +643,26 @@ keybind.zoom_hold.name = Управление масштабом keybind.zoom.name = Приблизить/Отдалить keybind.menu.name = Меню keybind.pause.name = Пауза +keybind.pause_building.name = Приостановить/возобновить строительство keybind.minimap.name = Мини-карта keybind.dash.name = Полёт/Ускорение keybind.chat.name = Чат keybind.player_list.name = Список игроков keybind.console.name = Консоль -keybind.rotate.name = Вращение +keybind.rotate.name = Вращать +keybind.rotateplaced.name = Повернуть существующее (зажать) keybind.toggle_menus.name = Переключение меню keybind.chat_history_prev.name = Пред. история чата keybind.chat_history_next.name = След. история чата keybind.chat_scroll.name = Прокрутка чата keybind.drop_unit.name = Сбросить боев. ед. -keybind.zoom_minimap.name = Масштабировать миникарту +keybind.zoom_minimap.name = Масштабировать мини-карту mode.help.title = Описание режимов mode.survival.name = Выживание mode.survival.description = Обычный режим. Необходимо добывать ресурсы, а волны наступают автоматически.\n[gray]Требуются точки появления врагов на карте для игры. mode.sandbox.name = Песочница mode.sandbox.description = Бесконечные ресурсы и нет таймера волн. [gray]Можно самим вызвать волну. +mode.editor.name = Редактор mode.pvp.name = PvP mode.pvp.description = Боритесь против других игроков.\n[gray]Для игры требуется как минимум 2 ядра разного цвета на карте. mode.attack.name = Атака @@ -650,7 +709,7 @@ item.silicon.name = Кремний item.plastanium.name = Пластаний item.phase-fabric.name = Фазовая ткань item.surge-alloy.name = Кинетический сплав -item.spore-pod.name = Споровой стручок +item.spore-pod.name = Споровый стручок item.sand.name = Песок item.blast-compound.name = Взрывчатая смесь item.pyratite.name = Пиротит @@ -675,7 +734,7 @@ mech.omega-mech.ability = Укреплённое бронирование mech.dart-ship.name = Дротик mech.dart-ship.weapon = Бластер mech.javelin-ship.name = Джавелин -mech.javelin-ship.weapon = Разрывные ракеты +mech.javelin-ship.weapon = Ракетный залп mech.javelin-ship.ability = Разрядный ускоритель mech.trident-ship.name = Трезубец mech.trident-ship.weapon = Бомбовый отсек @@ -790,6 +849,7 @@ block.junction.name = Перекрёсток block.router.name = Маршрутизатор block.distributor.name = Распределитель block.sorter.name = Сортировщик +block.inverted-sorter.name = Inverted Sorter block.message.name = Сообщение block.overflow-gate.name = Избыточный затвор block.silicon-smelter.name = Кремниевый плавильный завод @@ -798,7 +858,7 @@ block.pulverizer.name = Измельчитель block.cryofluidmixer.name = Мешалка криогенной жидкости block.melter.name = Плавильня block.incinerator.name = Мусоросжигатель -block.spore-press.name = Споровой пресс +block.spore-press.name = Споровый пресс block.separator.name = Отделитель block.coal-centrifuge.name = Угольная центрифуга block.power-node.name = Силовой узел @@ -813,7 +873,7 @@ block.impact-reactor.name = Импульсный реактор block.mechanical-drill.name = Механический бур block.pneumatic-drill.name = Пневматический бур block.laser-drill.name = Лазерный бур -block.water-extractor.name = Гидроконденсатор +block.water-extractor.name = Гидронасос block.cultivator.name = Культиватор block.dart-mech-pad.name = Реконструктор меха «Альфа» block.delta-mech-pad.name = Реконструктор меха «Дельта» @@ -881,7 +941,7 @@ block.arc.name = Дуга block.rtg-generator.name = Радиоизотопный термоэлектрический генератор block.spectre.name = Спектр block.meltdown.name = Испепелитель -block.container.name = Склад +block.container.name = Контейнер block.launch-pad.name = Стартовая площадка block.launch-pad-large.name = Большая стартовая площадка team.blue.name = Синяя @@ -908,24 +968,24 @@ unit.lich.name = Лич unit.reaper.name = Жнец tutorial.next = [lightgray]<Нажмите для продолжения> tutorial.intro = Вы начали[scarlet] обучение по Mindustry.[]\nНачните с [accent]добычи меди[]. Нажмите на медную жилу возле вашего ядра, чтобы сделать это.\n\n[accent]{0}/{1} меди -tutorial.drill = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. Разместите его на медной жиле нажатием.\n[accent]Нажатие по правой кнопке[] прервёт строительство. +tutorial.drill = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. Разместите его на медной жиле нажатием.\n[accent]Нажатие по правой кнопке[] прервёт строительство. [accent]Зажмите Ctrl и покрутите колесо мыши[]для приближения или отдаления камеры. tutorial.drill.mobile = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. \nРазместите его на медной жиле нажатием, затемм нажмите [accent] белую галку[] ниже, чтобы подтвердить построение выделенного.\nНажмите [accent] кнопку X[], чтобы отменить размещение. -tutorial.blockinfo = Каждый блок имеет разные характеристики.\nЧтобы узнать информацию о блоке и о его характеристиках,[accent] нажмите на «?», когда он выбран в меню строительства.[]\n\n[accent]Сейчас, узнайте характеристики механического бура.[] -tutorial.conveyor = [accent]Конвейера[] используются для транспортировки ресуров в ядро.\nСделайте линию конвейеров от бура к ядру\n[accent]Удерживайте левую кнопку мыши, чтобы разместить конвейерную линию.[]\nУдерживайте[accent] CTRL[] при постройке линии блоков, чтобы сделать её диагональной\n\n[accent]{0}/{1} конвейеров размещённых в линию\n[accent]0/1 предмет доставлен. -tutorial.conveyor.mobile = [accent]Конвейера[] используются для транспортировки ресурсов в ядро\nСделайте линию конвейеров от бура к ядру\n[accent]Сделайте линию, удерживая палец несколько секунд в том месте, в котором Вы хотите начать линию,[] и перетяните его в нужном направлении.\n\n[accent]{0}/{1} конвейеров размещённых в линию\n[accent]0/1 предмет доставлен. -tutorial.turret = Защитные структуры нужно строить для отражения[lightgray] противников[].\nПостройте[accent] двойную турель[] возле своего ядра. -tutorial.drillturret = Двойным турелям нужна [accent]медь []в качестве боеприпасов.\nРазместите бур рядом с турелью.\nПроведите конвейеры к турели, чтобы снабдить её боеприпасами.\n\n[accent]Боеприпасов доставлено: 0/1 +tutorial.blockinfo = Каждый блок имеет разные характеристики. Каждая дрель может добывать определенные руды.\nЧтобы узнать информацию о блоке и о его характеристиках,[accent] нажмите на «?», когда он выбран в меню строительства.[]\n\n[accent]Сейчас, узнайте характеристики механического бура.[] +tutorial.conveyor = [accent]Конвейеры[] используются для транспортировки ресуров в ядро.\nСделайте линию конвейеров от бура к ядру\n[accent]Удерживайте левую кнопку мыши, чтобы разместить в линию.[]\nУдерживайте[accent] CTRL[] при постройке линии блоков, чтобы сделать её диагональной\n\n[accent]Разместите 2 конвейера в линию и доставьте предметы в ядро. +tutorial.conveyor.mobile = [accent]Конвейеры[] используются для транспортировки ресурсов в ядро\nСделайте линию конвейеров от бура к ядру\n[accent]Сделайте линию, удерживая палец несколько секунд в том месте, в котором Вы хотите начать линию,[] и перетяните его в нужном направлении.[accent]Разместите 2 конвейера в линию и доставьте предметы в ядро. +tutorial.turret = Как только предмет попадает в ядро, его можно использовать в строительстве.\nИмейте в виду, что не все предметы могут быть использованы в строительстве.\nПредметы, которые нелья использовать для стоительства, такие как[accent] уголь[] или[accent] металлолом[], не могут быть транспортированы в ядро.\nЗащитные структуры нужно строить для отражения[lightgray] противников[].\nПостройте[accent] двойную турель[] возле Вашей базы. +tutorial.drillturret = Двойным турелям нужна [accent]медь []в качестве боеприпасов.\nРазместите бур рядом с турелью.\nПроведите конвейеры к турели, чтобы снабдить её медью.\n\n[accent]Боеприпасов доставлено: 0/1 tutorial.pause = Во время битвы Вы можете[accent] приостановить игру.[]\nВы можете планировать строительство, когда игра стоит на паузе.\n\n[accent]Нажмите ПРОБЕЛ для приостановки игры. -tutorial.pause.mobile = Во время битвы, Вы можете[accent] приостановить игру.[]\nВы можеть планировать строительство, когда игра стоит на паузе.\n\n[accent]Нажмите кнопку сверху слева, чтобы поставить игру на паузу. -tutorial.unpause = Теперь нажмите пробел снова для снятия паузы. -tutorial.unpause.mobile = Теперь нажмите снова туда для снятия паузы. -tutorial.breaking = Часто блоки нужно разрушать\n[accent]Зажмите ПКМ[], чтобы разрушить блоки в выбранной зоне.[]\n\n[accent]Разрушьте все стены из металлолома слева от вашего ядра. -tutorial.breaking.mobile = Часто блоки нужно разрушить.\n[accent]Выберите режим деконструкции[], после чего нажмите на нужный блок, чтобы его разрушить.\nРазрушьте блоки в выбранной зоне, зажав палец на несколько секунд[], и проводя его в нужном направлении.\nНажмите на галочку, чтобы подтвердить разрушение.\n\n[accent]Разрушьте все стены из металлолома слева от вашего ядра. -tutorial.withdraw = В некоторых ситуациях, необходимо забрать предметы из блоков вручную.\nЧтобы сделать это, [accent]нажмите на блок[], когда в нём находятся предметы, затем [accent]нажмите на предмет[] в инвентаре.\nМожно забрать несколько предметов [accent]нажатием с зажимом[].\n\n[accent]Заберите немного меди из ядра[] +tutorial.pause.mobile = Во время битвы, Вы можете[accent] приостановить игру.[]\nВы можеть планировать строительство, когда игра стоит на паузе.\n\n[accent]Нажмите кнопку вверху слева, чтобы поставить игру на паузу. +tutorial.unpause = Снова нажмите пробел для снятия паузы. +tutorial.unpause.mobile = Снова нажмите туда для снятия паузы. +tutorial.breaking = Зачастую, блоки приходится разрушать\n[accent]Зажмите ПКМ[], чтобы разрушить блоки в выбранной зоне.[]\n\n[accent]Разрушьте все стены из металлолома слева от Вашего ядра. +tutorial.breaking.mobile = Зачастую, блоки приходится разрушить.\n[accent]Выберите режим деконструкции[], после чего нажмите на нужный блок, чтобы разрушить его.\nРазрушьте блоки в выбранной зоне, зажав палец на несколько секунд[], и проведя его в нужном направлении.\nНажмите на галочку, чтобы подтвердить разрушение.\n\n[accent]Разрушьте все стены из металлолома слева от Вашего ядра. +tutorial.withdraw = В некоторых ситуациях, необходимо забрать предметы из блоков вручную.\nЧтобы сделать это, [accent]нажмите на блок[], в котором находятся предметы, затем [accent]нажмите на предмет[] в инвентаре.\nМожно забрать несколько предметов [accent]нажатием с зажимом[].\n\n[accent]Заберите немного меди из ядра[] tutorial.deposit = Положить предметы в блоки можно перетащив от своего корабля к нужному блоку.\n\n[accent]Перенесите медь обратно в ядро[] -tutorial.waves = [lightgray]Противники[] приближаются.\n\nЗащитите ядро от двух волн.[accent] Нажмите левую кнопку мыши[], чтобы выстрелить.\nПостройте больше турелей и буров. Добудьте больше меди. -tutorial.waves.mobile = [lightgray]Противники[] приближаются.\n\nЗащитите ядро от двух волн. Ваш мех будет автоматически атаковать противника.\nПостройте больше турелей и буров. Добудьте больше меди. -tutorial.launch = Когда Вы достигаете некоторых волн, Вы можете осуществить[accent] запуск ядра[], оставив базу и[accent] перенести ресурсы из ядра.[]\nЭти ресурсы могут быть использованы для изучения новых технологий.\n\n[accent]Нажмите кнопку запуска. +tutorial.waves = [lightgray]Противники[] приближаются.\n\nЗащитите ядро от двух волн. Используйте[accent] левую кнопку мыши[] для стрельбы.\nПостройте больше турелей и буров. Добудьте больше меди. +tutorial.waves.mobile = [lightgray]Противники[] приближаются.\n\nЗащитите ядро от двух волн. Ваш корабль будет автоматически атаковать противника.\nПостройте больше турелей и буров. Добудьте больше меди. +tutorial.launch = Когда Вы достигаете определенной волны, Вы можете осуществить[accent] запуск ядра[], оставив базу и[accent] перенести ресурсы из ядра.[]\nЭти ресурсы могут быть использованы для изучения новых технологий.\n\n[accent]Нажмите кнопку запуска. item.copper.description = Самый основной строительный материал. Широко используется во всех типах блоков. item.lead.description = Основной стартовый материал. Широко используется в электронике и блоках для транспортировки жидкостей. item.metaglass.description = Сверхпрочный сплав стекла. Широко используется для распределения и хранения жидкости. @@ -944,8 +1004,8 @@ item.blast-compound.description = Нестабильный соединение, item.pyratite.description = Чрезвычайно огнеопасное вещество, используемое в зажигательном оружии. liquid.water.description = Самая полезная жидкость. Обычно используется для охлаждения машин и переработки отходов. liquid.slag.description = Всевозможно различные типы расплавленного металла, смешанные вместе. Может быть разделен на составляющие его минералы или распылён на вражеских боевые единицы в качестве оружия. -liquid.oil.description = Жидкость, используемая в производстве современных материалов. Может быть превращена в уголь в качестве топлива или распылён и подожжён как оружие. -liquid.cryofluid.description = Инертная, неедкая жидкость, созданная из воды и титана. Обладает чрезвычайно высокой пропускной способностью. Широко используется в качестве охлаждающей жидкости. +liquid.oil.description = Жидкость, используемая в производстве современных материалов. Может быть превращена в уголь в качестве топлива или распылена и подожжена как оружие. +liquid.cryofluid.description = Инертная, неедкая жидкость, созданная из воды и титана. Обладает чрезвычайно высокой теплоёмкостью. Широко используется в качестве охлаждающей жидкости. mech.alpha-mech.description = Стандартный управляемый мех. Основан на «Кинжале», с улучшенной броней и строительными возможностями. Имеет больший урон, чем «Дротик». mech.delta-mech.description = Быстрый, легко бронированный мех, созданный для ударов «атакуй и беги». Наносит мало урона по строениям, но может очень быстро убить большие группы вражеских орудий с помощью дуговых молний. mech.tau-mech.description = Мех поддержки. Ремонтирует союзные блоки просто стреляя в них. Может лечить союзников в радиусе его ремонтирующей способности. @@ -954,7 +1014,7 @@ mech.dart-ship.description = Стандартный управляемый ко mech.javelin-ship.description = Корабль для тактики «атакуй и беги». Сначала он медленный, но позже может разгоняться до огромных скоростей и летать над аванпостами противника, нанося большой урон молниями и ракетами. mech.trident-ship.description = Тяжёлый бомбардировщик, построенный для строительства и уничтожения вражеских укреплений. Достаточно хорошо бронированный. mech.glaive-ship.description = Большой хорошо бронированный боевой корабль. Оборудован зажигательным повторителем. Очень манёвренный. -unit.draug.description = Примитивный добывающий дрон. Дёшево производить. Расходуемый. Автоматически добывает медь и свинец в непосредственной близости. Поставляет добытые ресурсы в ближайшее ядро. +unit.draug.description = Примитивный добывающий дрон. Дешёвый в производстве. Расходуемый. Автоматически добывает медь и свинец в непосредственной близости. Поставляет добытые ресурсы в ближайшее ядро. unit.spirit.description = Модифицированный «Драугр», предназначенный для ремонта вместо добычи ресурсов. Автоматически ремонтирует любые поврежденные блоки в области. unit.phantom.description = Продвинутый дрон. Следует за пользователями. Помогает в строительстве блоков. unit.dagger.description = Самый основной наземный мех. Дешёвый в производстве. Очень сильный при использовании толпами. @@ -962,26 +1022,26 @@ unit.crawler.description = Наземный блок, состоящий из у unit.titan.description = Продвинутый, бронированный наземный юнит. Атакует как наземные, так и воздушные цели. Оборудован двумя миниатюрными огнеметами класса «Обжигатель». unit.fortress.description = Тяжёлый артиллерийский мех. Оснащен двумя модифицированными пушками типа «Град» для штурма дальних объектов и подразделений противника. unit.eruptor.description = Тяжёлый мех, предназначенный для разрушения строений. Выстреливает поток шлака по вражеским укреплениям, плавит их и поджигает летучие вещества. -unit.wraith.description = Быстрый перехватчик. Целевые генераторы энергии. -unit.ghoul.description = Тяжёлый ковровой бомбардировщик. Проникает через вражеские структуры, нацеливаясь на критическую инфраструктуру. +unit.wraith.description = Быстрый перехватчик. Нацелен на генераторы энергии. +unit.ghoul.description = Тяжёлый ковровый бомбардировщик. Проникает через вражеские структуры, нацеливаясь на критическую инфраструктуру. unit.revenant.description = Тяжёлый, парящий массив, который вооружён ракетами. block.message.description = Сохраняет сообщение. Используется для связи между союзниками. block.graphite-press.description = Сжимает куски угля в чистые листы графита. block.multi-press.description = Обновлённая версия графитовой печати. Использует воду и энергию для быстрой и эффективной переработки угля. block.silicon-smelter.description = Соединяет песок с чистым углем. Производит кремний. block.kiln.description = Выплавляет песок и свинец в соединение, известному как метастекло. Требуется небольшое количество энергии для запуска. -block.plastanium-compressor.description = Производит пластиний из нефти и титана. +block.plastanium-compressor.description = Производит пластаний из нефти и титана. block.phase-weaver.description = Синтезирует фазовую ткань из радиоактивного тория и песка. Требуется огромное количество энергии. block.alloy-smelter.description = Объединяет титан, свинец, кремний и медь для производства кинетического сплава. -block.cryofluidmixer.description = Смешивает воду и мелкий титановый порошок титана в криогеннную жидкость. Необходим для использования в ториевом реакторе. +block.cryofluidmixer.description = Смешивает воду и мелкий титановый порошок титана в криогеннную жидкость. Неотъемлемая часть при использования ториевого реактора block.blast-mixer.description = Раздавливает и смешивает скопления спор с пиротитом для получения взрывчатого вещества. block.pyratite-mixer.description = Смешивает уголь, свинец и песок в легковоспламеняющийся пиротит. -block.melter.description = Расплавляет металлолом в шлак для дальнейшей обработки или использования в башнях «Волна». +block.melter.description = Плавит металлолом в шлак для дальнейшей обработки или использования в башнях «Волна». block.separator.description = Разделяет шлак на его минеральные компоненты. Выводит охлажденный результат. block.spore-press.description = Сжимает капсулы спор под сильным давлением для синтеза масла. block.pulverizer.description = Измельчает металлолом в мелкий песок. -block.coal-centrifuge.description = Нефть превращается в куски угля. -block.incinerator.description = Выпаривает любой лишний предмет или жидкость, которую он получает. +block.coal-centrifuge.description = Отвердевает нефть в куски угля. +block.incinerator.description = Испаряет любой лишний предмет или жидкость, которую он получает. block.power-void.description = Аннулирует всю энергию, введенную в него. Только песочница. block.power-source.description = Бесконечно вводит энергию. Только песочница. block.item-source.description = Бесконечно выводит элементы. Только песочница. @@ -997,86 +1057,87 @@ block.phase-wall.description = Стена, покрытая специальны block.phase-wall-large.description = Стена, покрытая специальным фазовым отражающим составом. Отражает большинство пуль при ударе.\nРазмещается на нескольких плитках. block.surge-wall.description = Очень прочный защитный блок.\nНакапливает заряд при контакте с пулей, выпуская его случайным образом. block.surge-wall-large.description = Очень прочный защитный блок.\nНакапливает заряд при контакте с пулей, выпуская его случайным образом.\nРазмещается на нескольких плитках. -block.door.description = Маленькая дверь. Можно открыть или закрыть, нажав. -block.door-large.description = Большая дверь. Можно открыть и закрыть, коснувшись.\nОткрывает несколько плитках. +block.door.description = Маленькая дверь. Можно открыть или закрыть нажатием. +block.door-large.description = Большая дверь. Можно открыть и закрыть нажатием.\nРазмещается на нескольких плитках. block.mender.description = Периодически ремонтирует блоки в непосредственной близости. Сохраняет средства защиты, восстановленные между волнами.\nОпционально использует кремний для увеличения дальности и эффективности. block.mend-projector.description = Обновлённая версия Регенератора. Ремонт блоков в непосредственной близости.\nОпционально использует фазовую ткань для увеличения дальности и эффективности. block.overdrive-projector.description = Увеличивает скорость близлежащих зданий.\nОпционально использует фазовую ткань для увеличения дальности и эффективности. -block.force-projector.description = Создает вокруг себя шестиугольное силовое поле, защищая здания и подразделения внутри от повреждений.\nПерегревается, если слишком много повреждений нанесено. Опционально требуется охлаждающая жидкость для предотвращения перегрева. Фазовая ткань может быть использована для увеличения размера щита. -block.shock-mine.description = Наносит урон врагам, наступающим на мину. Почти невидим для врага. -block.conveyor.description = Базовый элемент транспортного блока. Перемещает предметы вперед и автоматически складывает их в блоки. Вращающийся. -block.titanium-conveyor.description = Расширенный транспортный блок элемента. Перемещает предметы быстрее, чем стандартные конвейеры. +block.force-projector.description = Создает вокруг себя шестиугольное силовое поле, защищая здания и подразделения внутри от повреждений.\nПерегревается, если нанесено слишком большое количество повреждений. Опционально требуется охлаждающая жидкость для предотвращения перегрева. Фазовая ткань может быть использована для увеличения размера щита. +block.shock-mine.description = Наносит урон врагам, наступающим на мину. Почти невидима для врага. +block.conveyor.description = Базовый элемент транспортного блока. Перемещает предметы вперед и автоматически складывает их в блоки. Можно повернуть. +block.titanium-conveyor.description = Расширенный транспортный блок. Перемещает предметы быстрее, чем стандартные конвейеры. block.junction.description = Действует как мост для двух пересекающихся конвейерных лент. Полезно в ситуациях, когда два разных конвейера перевозят разные материалы в разные места. -block.bridge-conveyor.description = Улучшенный транспортный блок элемента. Позволяет транспортировать предметы по 3 плиткам любой местности или здания. -block.phase-conveyor.description = Улучшенный транспортный блок элемента. Использует энергию для телепортации предметов на подключенный фазовый конвейер по нескольким плиткам. -block.sorter.description = Сортировка элементов. Если элемент соответствует выбору, он может пройти. В противном случае элемент выводится слева и справа. -block.router.description = Принимает элементы в одном направлении и выводит их до 3 других направлений в равной степени. Полезно для разделения материалов из одного источника на несколько целей.\n\n[scarlet]Никогда не используйте рядом с заводами и т.п., так как маршрутизатор будет забит выходными предметами.[] +block.bridge-conveyor.description = Улучшенный транспортный блок. Позволяет транспортировать предметы по 3 плиткам любой местности или здания. +block.phase-conveyor.description = Улучшенный транспортный блок. Использует энергию для телепортации предметов на подключенный фазовый конвейер по нескольким плиткам. +block.sorter.description = Сортирует предметы. Если предмет соответствует выбору, он может пройти. В противном случае предмет выводится слева и справа. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. +block.router.description = Принимает предмет в одном направлении и выводит их до 3 других направлений в равной степени. Полезно для разделения материалов из одного источника на несколько целей.\n\n[scarlet]Никогда не используйте рядом с заводами и т.п., так как маршрутизатор будет забит выходными предметами.[] block.distributor.description = Расширенный маршрутизатор. Разделение элементов до 7 других направлений в равной степени. -block.overflow-gate.description = Комбинированный разделитель и маршрутизатор. выводится только влево и вправо, если передний путь заблокирован. -block.mass-driver.description = Конечный транспортный блок элемента. Собирает несколько предметов и затем стреляет в них другому массовому водителю на большом расстоянии. Требуется сила для работы. +block.overflow-gate.description = Комбинированный разделитель и маршрутизатор. Выводит только влево и вправо, если передний путь заблокирован. +block.mass-driver.description = Конечный транспортный блок. Собирает несколько предметов и затем стреляет ими в другую катапульту на большом расстоянии. Требуется энергия для работы. block.mechanical-pump.description = Дешёвый насос с низкой производительностью, но без энергопотребления. -block.rotary-pump.description = Продвинутый насос. Лучше чем обычный насос, но требуют энергию. +block.rotary-pump.description = Продвинутый насос. Качает больше жидкости, но требуют энергию. block.thermal-pump.description = Наилучший насос. block.conduit.description = Основной блок транспортировки жидкости. Перемещает жидкости вперед. Используется совместно с насосами и другими трубопроводами. block.pulse-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.bridge-conduit.description = Расширенный блок транспортировки жидкости. Позволяет транспортировать жидкости над 3 плитками любой местности или здания. +block.phase-conduit.description = Расширенный блок транспортировки жидкости. Использует энергию для телепортации жидкостей в подключенный фазовый канал над несколькими плиткам. block.power-node.description = Передает питание на подключенные узлы. Узел будет получать питание или поставлять питание на любые соседние блоки. block.power-node-large.description = Усовершенствованный силовой узел с большей дальностью и большим количеством соединений. -block.surge-tower.description = Очень дальний узел питания с меньшим количеством доступных соединений. +block.surge-tower.description = Силовой узел с очень большим радиусом действия, но меньшим количеством доступных соединений. block.battery.description = Накапливает энергию как буфер во времена избытка энергии. Выводит энергию во времена дефицита. block.battery-large.description = Хранит гораздо больше энергии, чем обычная батарея. block.combustion-generator.description = Вырабатывает энергию путём сжигания легковоспламеняющихся материалов, таких как уголь. block.thermal-generator.description = Генерирует энергию, когда находится в горячих местах. -block.turbine-generator.description = Усовершенствованный генератор сгорания. Более эффективен, но требует дополнительной воды для выработки пара. +block.turbine-generator.description = Усовершенствованный генератор сгорания. Более эффективен, но дополнительно требует воду для выработки пара. block.differential-generator.description = Генерирует большое количество энергии. Использует разницу температур между криогенной жидкостью и горящим пиротитом. block.rtg-generator.description = Простой, надежный генератор. Использует тепло распадающихся радиоактивных соединений для производства энергии с низкой скоростью. block.solar-panel.description = Обеспечивает небольшое количество энергии от солнца. block.solar-panel-large.description = Значительно более эффективный вариант стандартной солнечной панели. -block.thorium-reactor.description = Генерирует значительное количество энергии из тория. Требует постоянного охлаждения. Сильно взорвётся при недостаточном количестве охлаждающей жидкости. Выходная энергия зависит от наполненности, при этом базовая энергия генерируется на полную мощность. +block.thorium-reactor.description = Генерирует значительное количество энергии из тория. Требует постоянного охлаждения. Взорвётся с большой силой при недостаточном количестве охлаждающей жидкости. Выходная энергия зависит от наполненности, при этом базовая энергия генерируется на полную мощность. block.impact-reactor.description = Усовершенствованный генератор, способный создавать огромное количество энергии с максимальной эффективностью. Требуется значительное количество энергии для запуска процесса. -block.mechanical-drill.description = ДешёВый бур. При размещении на соответствующих плитках медленные предметы выводятся бесконечно. Способен добывать только медь, свинец и уголь. -block.pneumatic-drill.description = Улучшенный бур, способная добывать титан. Добывает в более быстром темпе, чем механический бур. +block.mechanical-drill.description = Дешёвый бур. При размещении на соответствующих плитках, предметы бесконечно выводятся в медленном темпе. Способен добывать только медь, свинец и уголь. +block.pneumatic-drill.description = Улучшенный бур, способный добывать титан. Добывает быстрее, чем механический бур. block.laser-drill.description = Позволяет сверлить еще быстрее с помощью лазерной технологии, но требует энергии. Способен добывать торий. -block.blast-drill.description = Конечный бур. Требует большого количества энергии. +block.blast-drill.description = Конечный бур. Требует большое количества энергии. block.water-extractor.description = Выкачивает подземные воды. Используется в местах, где нет поверхностных вод. -block.cultivator.description = Выращивает крошечные концентрации спор в атмосфере в готовые к употреблению споры. -block.oil-extractor.description = Использует большое количество энергии, песка и воды для бурения на нефть. +block.cultivator.description = Выращивает крошечные концентрации спор в атмосфере в готовые к использованию споры. +block.oil-extractor.description = Использует большое количество энергии, песка и воды для бурения, добывая нефть. block.core-shard.description = Первая итерация капсулы ядра. После уничтожения весь контакт с регионом теряется. Не позволяйте этому случиться. -block.core-foundation.description = Вторая версия ядра. Лучше бронированное. Хранит больше ресурсов. -block.core-nucleus.description = Третья и последняя итерация капсулы ядра. Очень хорошо бронированный. Хранит огромное количество ресурсов. +block.core-foundation.description = Вторая версия ядра. Лучше бронировано. Хранит больше ресурсов. +block.core-nucleus.description = Третья и последняя итерация капсулы ядра. Очень хорошо бронировано. Хранит огромное количество ресурсов. block.vault.description = Хранит большое количество предметов каждого типа. Блок разгрузчика может быть использован для извлечения предметов из хранилища. block.container.description = Хранит небольшое количество предметов каждого типа. Блок разгрузчика может быть использован для извлечения элементов из контейнера. block.unloader.description = Выгружает предметы из контейнера, хранилища или ядра на конвейер или непосредственно в соседний блок. Тип элемента, который необходимо Выгрузить, можно изменить, коснувшись. block.launch-pad.description = Запускает партии предметов без необходимости запуска ядра. block.launch-pad-large.description = Улучшенная версия стартовой площадки. Хранит больше предметов. Запускается чаще. -block.duo.description = Маленькая, дешёвая башня. Полезна против наземных юнитов. -block.scatter.description = Важная противовоздушная башня. Распыляет комки свинца или металлолома на вражеские подразделения. -block.scorch.description = Сжигает любых наземных врагов рядом с ним. Высокоэффективен на близком расстоянии. -block.hail.description = Маленькая дальнобойная артиллерийская башня. -block.wave.description = Башня среднего размера. Стреляет потоками жидкости по врагам. Автоматически тушит пожары при подаче воды. -block.lancer.description = Лазерная турель среднего размера. Заряжает и зажигает мощные лучи энергии. -block.arc.description = Небольшая электрическая башня ближнего радиуса действия. Выстреливает дуги электричества по врагам. -block.swarmer.description = Ракетная башня среднего размера. Атакует как воздушных, так и наземных врагов. Запускает самонаводящиеся ракеты. -block.salvo.description = Большая, более продвинутая версия башни «Двойная». Выпускает быстрые залпы из пуль по врагу. -block.fuse.description = Большая энергетическая башня ближнего радиуса действия. Выпускает три пронизывающих луча по ближайшим врагам. -block.ripple.description = Очень мощная артиллерийская башня. Стреляет скопления снарядов по врагам на большие расстояния. -block.cyclone.description = Большая противовоздушная и наземная башня. Выстреливает взрывными глыбами зенитных орудий в ближайшие подразделения. +block.duo.description = Маленькая, дешёвая турель. Полезна против наземных юнитов. +block.scatter.description = Основная противовоздушная турель. Распыляет куски свинца или металлолома на вражеские подразделения. +block.scorch.description = Сжигает любых наземных врагов рядом с ним. Высокоэффективна на близком расстоянии. +block.hail.description = Маленькая дальнобойная артиллерийская турель. +block.wave.description = Турель среднего размера. Стреляет потоками жидкости по врагам. Автоматически тушит пожары при подаче воды. +block.lancer.description = Лазерная турель среднего размера. Заряжает и стреляет мощными лучами энергии. +block.arc.description = Небольшая электрическая турель ближнего радиуса действия. Выстреливает дуги электричества по врагам. +block.swarmer.description = Ракетная турель среднего размера. Атакует как воздушных, так и наземных врагов. Запускает самонаводящиеся ракеты. +block.salvo.description = Большая, более продвинутая версия двойной турели. Выпускает быстрые залпы из пуль по врагу. +block.fuse.description = Большая энергетическая турель ближнего радиуса действия. Выпускает три пронизывающих луча по ближайшим врагам. +block.ripple.description = Очень мощная артиллерийская турель. Стреляет скоплениями снарядов по врагам на большие расстояния. +block.cyclone.description = Большая противовоздушная и наземная турель. Стреляет разрывными снарядами по ближайшим врагам. block.spectre.description = Массивная двуствольная пушка. Стреляет крупными бронебойными пулями по воздушным и наземным целям. block.meltdown.description = Массивная лазерная пушка. Заряжает и стреляет постоянным лазерным лучом в ближайших врагов. Требуется охлаждающая жидкость для работы. -block.command-center.description = Командует перемещениями боевых единиц по всей карте.\nУказывает подразделениям [accent]собираться[] вокруг командного центра, [accent]атаковать[] вражеское ядро или [accent]отступать[] к ядру/фабрике. Когда вражеское ядро не представлено, единицы будут патрулировать при команде [accent]атаки[]. -block.draug-factory.description = Производит добывающих дронов -block.spirit-factory.description = Производит дронов, которые помогают в строительстве. +block.command-center.description = Командует перемещениями боевых единиц по всей карте.\nУказывает подразделениям [accent]собираться[] вокруг командного центра, [accent]атаковать[] вражеское ядро или [accent]отступать[] к ядру/фабрике. Если вражеское ядро отсутствует, единицы будут патрулировать при команде [accent]атаки[]. +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 = Производит быстрых саморозрушающихся боевые единиц. -block.titan-factory.description = Производит продвинутые бронированне боевые единицы. +block.titan-factory.description = Производит продвинутые бронированные боевые единицы. block.fortress-factory.description = Производит тяжёлые артиллерийские боевые единицы. block.repair-point.description = Непрерывно лечит ближайший поврежденную боевую единицу или мех, находящийся рядом. block.dart-mech-pad.description = Обеспечивает превращение в базовый атакующий мех. \nИспользуйте, нажав, стоя на нём. diff --git a/core/assets/bundles/bundle_se.properties b/core/assets/bundles/bundle_sv.properties similarity index 88% rename from core/assets/bundles/bundle_se.properties rename to core/assets/bundles/bundle_sv.properties index 90329f5052..e395024fd0 100644 --- a/core/assets/bundles/bundle_se.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -1,91 +1,128 @@ credits.text = Skapad av [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] credits = Credits -contributors = Translators and Contributors -discord = Join the Mindustry Discord! -link.discord.description = The official Mindustry Discord chatroom -link.github.description = Game source code -link.changelog.description = List of update changes +contributors = Översättare och bidragsgivare +discord = Gå med Mindustry:s Discord server! +link.discord.description = Officiella chattrummet för Mindustry +link.github.description = Spelets källkod +link.changelog.description = Lista av uppdateringar link.dev-builds.description = Unstable development builds -link.trello.description = Official Trello board for planned features -link.itch.io.description = itch.io page with PC downloads -link.google-play.description = Google Play store listing -link.wiki.description = Official Mindustry wiki -linkfail = Failed to open link!\nThe URL has been copied to your clipboard. -screenshot = Screenshot saved to {0} -screenshot.invalid = Map too large, potentially not enough memory for screenshot. +link.trello.description = Officiell Trello tavla för plannerade funktioner +link.itch.io.description = itch.io sida med nedladdningar +link.google-play.description = Mindustry på Google Play +link.wiki.description = Officiell wiki-sida för Mindustry +linkfail = Kunde inte öppna länken!\nURL:en har kopierats till ditt urklipp. +screenshot = Skärmdump har sparats till {0} +screenshot.invalid = Karta för stor, potentiellt inte tillräckligt minne för . gameover = Game Over gameover.pvp = The[accent] {0}[] team is victorious! highscore = [accent]Nytt rekord! -load.sound = Sounds -load.map = Maps -load.image = Images -load.content = Content +copied = Kopierad. +load.sound = Ljud +load.map = Kartor +load.image = Bilder +load.content = Innehåll load.system = System -stat.wave = Waves Defeated:[accent] {0} -stat.enemiesDestroyed = Enemies Destroyed:[accent] {0} +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks +stat.wave = Besegrade vågor:[accent] {0} +stat.enemiesDestroyed = Besegrade fiender:[accent] {0} stat.built = Buildings Built:[accent] {0} stat.destroyed = Buildings Destroyed:[accent] {0} stat.deconstructed = Buildings Deconstructed:[accent] {0} stat.delivered = Resources Launched: stat.rank = Final Rank: [accent]{0} launcheditems = [accent]Launched Items +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = Are you sure you want to delete the map "[accent]{0}[]"? level.highscore = High Score: [accent]{0} -level.select = Level Select +level.select = Nivåval level.mode = Spelläge: showagain = Visa inte igen nästa session coreattack = < Kärnan är under attack! > -nearpoint = [[ [scarlet]LÄMNA SLÄPPZONEN OMEDELBART[] ]\ndu dör snart -database = Core Database +nearpoint = [[ [scarlet]LÄMNA DROPPZONEN OMEDELBART[] ]\ndu dör snart +database = Kärndatabas savegame = Spara Spel loadgame = Importera Spel -joingame = Join Game -addplayers = Add/Remove Players +joingame = Gå med spel customgame = Anpassat Spel newgame = Nytt Spel none = minimap = Minikarta +position = Position close = Stäng -website = Website -quit = Avsulta -save.quit = Save & Quit +website = Webbsida +quit = Avsluta +save.quit = Spara & lämna maps = Kartor -maps.browse = Browse Maps +maps.browse = Bläddra bland kartor continue = Fortsätt -maps.none = [lightgray]No maps found! -invalid = Invalid -preparingconfig = Preparing Config -preparingcontent = Preparing Content -uploadingcontent = Uploading Content -uploadingpreviewfile = Uploading Preview File +maps.none = [lightgray]Inga kartor hittade! +invalid = Ogiltig +preparingconfig = Förbereder konfiguration +preparingcontent = Förbereder innehåll +uploadingcontent = Laddar upp innehåll +uploadingpreviewfile = Laddar upp förhandsgranskningsfil committingchanges = Comitting Changes -done = Done +done = Klar +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Om name = Namn: noname = Välj ett[accent] namn[] först. filename = Filnamn: -unlocked = New content unlocked! +unlocked = Nytt innehåll upplåst! completed = [accent]Avklarad -techtree = Tech Tree -research.list = [lightgray]Research: -research = Research -researched = [lightgray]{0} researched. +techtree = Teknologiträd +research.list = [lightgray]Forskning: +research = Forskning +researched = [lightgray]{0} framforskat. players = {0} spelare online players.single = {0} spelare online server.closing = [accent]Stänger server... -server.kicked.kick = You have been kicked from the server! -server.kicked.whitelist = You are not whitelisted here. +server.kicked.kick = Du har blivit kickad från servern! +server.kicked.whitelist = Du är inte vitlistad här. server.kicked.serverClose = Server stängd. -server.kicked.vote = You have been vote-kicked. Goodbye. -server.kicked.clientOutdated = Outdated client! Uppdatera ditt spel! -server.kicked.serverOutdated = Outdated server! Ask the host to update! +server.kicked.vote = Du har blivit utröstad. Hejdå. +server.kicked.clientOutdated = Utdaterad klient! Uppdatera ditt spel! +server.kicked.serverOutdated = Utdaterad server! Be värden att uppdatera! server.kicked.banned = Du är bannad från servern. server.kicked.typeMismatch = This server is not compatible with your build type. -server.kicked.playerLimit = This server is full. Wait for an empty slot. -server.kicked.recentKick = You have been kicked recently.\nWait before connecting again. +server.kicked.playerLimit = Den här servern är full. Var god vänta på en öppning. +server.kicked.recentKick = Du har blivit kickad nyligen.\nVänta innan du kopplar igen. server.kicked.nameInUse = Någon med det namnet finns redan\npå servern. server.kicked.nameEmpty = Ditt namn är ogiltigt. -server.kicked.idInUse = You are already on this server! Connecting with two accounts is not permitted. +server.kicked.idInUse = Du är redan på den här servern! Det är inte tillåtet att koppla med två konton. server.kicked.customClient = This server does not support custom builds. Ladda ned en officiell verision. server.kicked.gameover = Game over! server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[] @@ -103,7 +140,7 @@ server.refreshing = Refreshing server hosts.none = [lightgray]No local games found! host.invalid = [scarlet]Can't connect to host. trace = Trace Player -trace.playername = Player name: [accent]{0} +trace.playername = Spelarnamn: [accent]{0} trace.ip = IP: [accent]{0} trace.id = Unique ID: [accent]{0} trace.mobile = Mobile Client: [accent]{0} @@ -128,9 +165,9 @@ confirmadmin = Are you sure you want to make this player an admin? confirmunadmin = Are you sure you want to remove admin status from this player? joingame.title = Join Game joingame.ip = Adress: -disconnect = Disconnected. -disconnect.error = Connection error. -disconnect.closed = Connection closed. +disconnect = Frånkopplad. +disconnect.error = Kopplingsfel. +disconnect.closed = Koppling stängd. disconnect.timeout = Timed out. disconnect.data = Failed to load world data! cantconnect = Unable to join game ([accent]{0}[]). @@ -140,14 +177,13 @@ server.port = Port: server.addressinuse = Address already in use! server.invalidport = Ogiltigt portnummer! server.error = [crimson]Error hosting server: [accent]{0} -save.old = This save is for an older version of the game, and can no longer be used.\n\n[lightgray]Save backwards compatibility will be implemented in the full 4.0 release. -save.new = New Save +save.new = Ny sparfil save.overwrite = Are you sure you want to overwrite\nthis save slot? overwrite = Skriv över -save.none = No saves found! +save.none = Inga sparfiler hittade! saveload = [accent]Sparar... -savefail = Failed to save game! -save.delete.confirm = Are you sure you want to delete this save? +savefail = Kunde inte spara spelet! +save.delete.confirm = Är du säker att du vill radera den här sparfilen? save.delete = Radera save.export = Exportera save.import.invalid = [accent]This save is invalid! @@ -157,9 +193,9 @@ save.import = Importera save.newslot = Namn: save.rename = Byt namn save.rename.text = Nytt namn: -selectslot = Select a save. +selectslot = Välj sparfil. slot = [accent]Slot {0} -editmessage = Edit Message +editmessage = Redigera meddelande save.corrupted = [accent]Save file corrupted or invalid!\nIf you have just updated your game, this is probably a change in the save format and [scarlet]not[] a bug. empty = on = På @@ -174,6 +210,7 @@ warning = Varning. confirm = Confirm delete = Radera view.workshop = View In Workshop +workshop.listing = Edit Workshop Listing ok = OK open = Öppna customize = Customize Rules @@ -181,9 +218,9 @@ cancel = Avbryt openlink = Öppna Länk copylink = Kopiera Länk back = Tillbaka -data.export = Export Data -data.import = Import Data -data.exported = Data exported. +data.export = Exportera data +data.import = Importera data +data.exported = Data exporterad. data.invalid = This isn't valid game data. data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. classic.export = Exportera Classic-Data @@ -191,16 +228,21 @@ classic.export.text = Sparad data från Classic (v3.5 build 40) har hittats. Vil quit.confirm = Är du säker på att du vill avsluta? 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]Läser in... +reloading = [accent]Reloading Mods... saving = [accent]Sparar... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Våg {0} wave.waiting = [lightgray]Våg om {0} -wave.waveInProgress = [lightgray]Våg pågår +wave.waveInProgress = [lightgray]Wave in progress waiting = [lightgray]Väntar... waiting.players = Väntar på spelare... -wave.enemies = [lightgray]{0} Fiender Återstår -wave.enemy = [lightgray]{0} Fiende Återstår -loadimage = Load Image -saveimage = Save Image +wave.enemies = [lightgray]{0} Fiender kvarvarande +wave.enemy = [lightgray]{0} Fiende kvar +loadimage = Ladda bild +saveimage = Spara bild unknown = Okänd custom = Anpassad builtin = Inbyggd @@ -210,15 +252,21 @@ map.nospawn = This map does not have any cores for the player to spawn in! Add a map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] non-orange[] 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. -map.publish.error = Error publishing map: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Pensel -editor.openin = Öppna I Redigeraren -editor.oregen = Malmgenerering -editor.oregen.info = Malmgenerering: +editor.openin = Open In Editor +editor.oregen = Ore Generation +editor.oregen.info = Ore Generation: editor.mapinfo = Map Info editor.author = Skapare: editor.description = Beskrivning: @@ -344,7 +392,6 @@ campaign = Campaign load = Load save = Spara fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Starta om spelet för att språkinställningarna ska ta effekt. settings = Inställningar @@ -352,14 +399,15 @@ tutorial = Tutorial tutorial.retake = Ta Om Tutorial editor = Editor mapeditor = Map Editor -donate = Donera abandon = Ge upp abandon.text = Zonen och alla dess resurser förloras till fienden. locked = Låst complete = [lightgray]Nå: -zone.requirement = Våg {0} i zon {1} -resume = Fortsätt Zon:\n[lightgray]{0} -bestwave = [lightgray]Bästa Våg: {0} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} +resume = Resume Zone:\n[lightgray]{0} +bestwave = [lightgray]Best Wave: {0} launch = < LAUNCH > launch.title = Launch Successful launch.next = [lightgray]next opportunity at wave {0} @@ -368,11 +416,13 @@ launch.confirm = This will launch all resources in your core.\nYou will not be a launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Uncover configure = Configure Loadout -configure.locked = [lightgray]Unlock configuring loadout: Wave {0}. +bannedblocks = Banned Blocks +addall = Add All +configure.locked = [lightgray]Unlock configuring loadout: {0}. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [lightgray]{0} unlocked. zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met. -zone.config.complete = Wave {0} reached:\nLoadout config unlocked. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = [lightgray]Resources Detected: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -428,15 +478,14 @@ settings.graphics = Grafik settings.cleardata = Rensa 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 = Rensa Allt paused = [accent]< Pausat > +clear = Clear +banned = [scarlet]Banned yes = Ja no = Nej info.title = Info error.title = [crimson]An error has occured error.crashtitle = An error has occured -attackpvponly = [scarlet]Only available in Attack/PvP modes blocks.input = Inmatning blocks.output = Utmatning blocks.booster = Booster @@ -518,6 +567,7 @@ category.optional = Optional Enhancements setting.landscape.name = Lock Landscape setting.shadows.name = Skuggor setting.linear.name = Linear Filtering +setting.hints.name = Hints setting.animatedwater.name = Animerat Vatten setting.animatedshields.name = Animerade Sköldar setting.antialias.name = Antialias[lightgray] (requires restart)[] @@ -547,6 +597,7 @@ setting.fps.name = Show FPS setting.vsync.name = VSync setting.pixelate.name = Pixellera[lightgray] (disables animations) setting.minimap.name = Visa Minikarta +setting.position.name = Show Player Position setting.musicvol.name = Musikvolym setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Stäng Av Musik @@ -557,7 +608,9 @@ setting.savecreate.name = Auto-Create Saves setting.publichost.name = Public Game Visibility setting.chatopacity.name = Chattgenomskinlighet setting.lasersopacity.name = Power Laser Opacity -setting.playerchat.name = Visa Chatt +setting.playerchat.name = Visa +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. uiscale.reset = UI-skalan har ändrats.\nTryck "OK" för att använda den här skalan.\n[scarlet]Avslutar och återställer om[accent] {0}[] sekunder... uiscale.cancel = Avbryt och Avsluta setting.bloom.name = Bloom @@ -569,13 +622,16 @@ category.multiplayer.name = Multiplayer command.attack = Attack command.rally = Rally command.retreat = Retreat -keybind.gridMode.name = Block Select -keybind.gridModeShift.name = Category Select +keybind.clear_building.name = Clear Building keybind.press = Press a key... 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.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Toggle Fullscreen keybind.select.name = Select/Shoot keybind.diagonal_placement.name = Diagonal Placement @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Zoom Hold keybind.zoom.name = Zoom keybind.menu.name = Menu keybind.pause.name = Pause +keybind.pause_building.name = Pause/Resume Building 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.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Toggle menus keybind.chat_history_prev.name = Chat history prev keybind.chat_history_next.name = Chat history next @@ -602,9 +660,10 @@ keybind.zoom_minimap.name = Zoom minimap mode.help.title = Description of modes mode.survival.name = Överlevnad mode.survival.description = The normal mode. Limited resources and automatic incoming waves.\n[gray]Requires enemy spawns in the map to play. -mode.sandbox.name = Sandbox +mode.sandbox.name = Sandlåda mode.sandbox.description = Infinite resources and no timer for waves. -mode.pvp.name = PvP +mode.editor.name = Redigerare +mode.pvp.name = Spelare mot spelare mode.pvp.description = Fight against other players locally.\n[gray]Requires at least 2 differently-colored cores in the map to play. mode.attack.name = Attack mode.attack.description = Destroy the enemy's base. No waves.\n[gray]Requires a red core in the map to play. @@ -780,7 +839,7 @@ block.door-large.name = Stor Dörr block.duo.name = Duo block.scorch.name = Scorch block.scatter.name = Scatter -block.hail.name = Hail +block.hail.name = Hagel block.lancer.name = Lancer block.conveyor.name = Conveyor block.titanium-conveyor.name = Titanium Conveyor @@ -790,14 +849,15 @@ block.junction.name = Korsning block.router.name = Router block.distributor.name = Distributor block.sorter.name = Sorterare -block.message.name = Message -block.overflow-gate.name = Overflow Gate -block.silicon-smelter.name = Silicon Smelter +block.inverted-sorter.name = Inverted Sorter +block.message.name = Meddelande +block.overflow-gate.name = Överflödesgrind +block.silicon-smelter.name = Kiselsmältare block.phase-weaver.name = Phase Weaver -block.pulverizer.name = Pulverizer +block.pulverizer.name = Pulveriserare block.cryofluidmixer.name = Cryofluid Mixer block.melter.name = Smältare -block.incinerator.name = Incinerator +block.incinerator.name = Förbrännare block.spore-press.name = Spore Press block.separator.name = Separerare block.coal-centrifuge.name = Kolcentrifug @@ -822,7 +882,7 @@ 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.conduit.name = Ledare block.mechanical-pump.name = Mechanical Pump block.item-source.name = Föremålskälla block.item-void.name = Föremålsförstörare @@ -830,8 +890,8 @@ block.liquid-source.name = Vätskekälla block.power-void.name = Energiätare block.power-source.name = Energikälla block.unloader.name = Urladdare -block.vault.name = Vault -block.wave.name = Wave +block.vault.name = Valv +block.wave.name = Våg block.swarmer.name = Svärmare block.salvo.name = Salvo block.ripple.name = Ripple @@ -843,7 +903,7 @@ block.blast-mixer.name = Blast Mixer block.solar-panel.name = Solpanel block.solar-panel-large.name = Stor Solpanel block.oil-extractor.name = Oljeextraktor -block.command-center.name = Command Center +block.command-center.name = Kommandocenter block.draug-factory.name = Draug Miner Drone Factory block.spirit-factory.name = Spirit Repair Drone Factory block.phantom-factory.name = Phantom Builder Drone Factory @@ -963,7 +1023,7 @@ unit.titan.description = An advanced, armored ground unit. Attacks both ground a unit.fortress.description = A heavy artillery mech. Equipped with two modified Hail-type cannons for long-range assault on enemy structures and units. 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.wraith.description = A fast, hit-and-run interceptor unit. Targets power generators. -unit.ghoul.description = A heavy carpet bomber. Rips through enemy structures, targeting critital infrastructure. +unit.ghoul.description = A heavy carpet bomber. Rips through enemy structures, targeting critical infrastructure. unit.revenant.description = A heavy, hovering missile array. block.message.description = Stores a message. Used for communication between allies. block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. @@ -1010,6 +1070,7 @@ block.junction.description = Acts as a bridge for two crossing conveyor belts. U block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. 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.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[] block.distributor.description = An advanced router. Splits items to up to 7 other directions equally. block.overflow-gate.description = A combination splitter and router. Only outputs to the left and right if the front path is blocked. diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index ad48272f7d..557617d16e 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -16,11 +16,28 @@ screenshot.invalid = Map too large, potentially not enough memory for screenshot gameover = Cekirdegin yok edildi. gameover.pvp = The[accent] {0}[] team is victorious! highscore = [accent]Yeni Yuksek skor! +copied = Copied. load.sound = Sounds load.map = Maps load.image = Images load.content = Content load.system = System +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Waves Defeated:[accent] {0} stat.enemiesDestroyed = Enemies Destroyed:[accent] {0} stat.built = Buildings Built:[accent] {0} @@ -29,6 +46,7 @@ stat.deconstructed = Buildings Deconstructed:[accent] {0} stat.delivered = Resources Launched: stat.rank = Final Rank: [accent]{0} launcheditems = [accent]Launched Items +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = Su haritayi silmek istediginden emin misin? "[accent]{0}[]"? level.highscore = Yuksek Skor: [accent]{0} level.select = Seviye secimi @@ -40,11 +58,11 @@ database = Core Database savegame = Oyunu kaydet loadgame = Devam et joingame = Oyuna katil -addplayers = Oyuncu ekle/cikar customgame = Ozel oyun newgame = New Game none = minimap = Minimap +position = Position close = Kapat website = Website quit = Cik @@ -60,6 +78,25 @@ uploadingcontent = Uploading Content uploadingpreviewfile = Uploading Preview File committingchanges = Comitting Changes done = Done +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Hakkinda name = isim: noname = Pick a[accent] player name[] first. @@ -140,7 +177,6 @@ server.port = Link: server.addressinuse = Addres zaten kullaniliyor! server.invalidport = Geçersiz Oyun numarasi! server.error = [crimson]Oyun acarkes sorun olustu: [accent]{0} -save.old = Bu oyun su anda kullanilamaz.\n\n[LIGHT_GRAY]geri alma oyunun 4.0 surumunde eklenecektir. save.new = Yeni Kayit Dosyasi save.overwrite = Bu oyunun uzerinden\ngecmek istedigine emin\nmisin? overwrite = uzerinden gec @@ -174,6 +210,7 @@ warning = Warning. confirm = Onayla delete = Sil view.workshop = View In Workshop +workshop.listing = Edit Workshop Listing ok = Tamam open = Ac customize = Customize @@ -191,7 +228,12 @@ classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic quit.confirm = Cikmak istedigine emin misin? 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]Yukleniyor... +reloading = [accent]Reloading Mods... saving = [accent]Kaydediliyor... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Dalga {0} wave.waiting = Dalganin baslamasina: {0} wave.waveInProgress = [LIGHT_GRAY]Wave in progress @@ -210,11 +252,17 @@ map.nospawn = Haritada Oyncularin cikmasi icin cekirdek yok! Haritaya[ROYAL]Mavi map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor. 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 = Harita yuklenemedi. Gecersiz yada bozuk dosya. -map.publish.error = Error publishing map: {0} +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Firca editor.openin = Editorde ac editor.oregen = Maden Yaratilma hizi @@ -344,7 +392,6 @@ campaign = Campaign load = Yukle save = Kaydet fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms language.restart = Lutfen dil degisiminin etkin olmasi icin oyunu yeniden baslatin settings = ayarlar @@ -352,12 +399,13 @@ tutorial = Tutorial tutorial.retake = Re-Take Tutorial editor = Editor mapeditor = Harita yaraticisi -donate = Bagis yap abandon = Abandon abandon.text = This zone and all its resources will be lost to the enemy. locked = Locked complete = [LIGHT_GRAY]Complete: -zone.requirement = Wave {0} in zone {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Resume Zone:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]Best: {0} launch = Launch @@ -368,11 +416,13 @@ launch.confirm = This will launch all resources in your core.\nYou will not be a launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Uncover configure = Configure Loadout +bannedblocks = Banned Blocks +addall = Add All configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout. configure.invalid = Amount must be a number between 0 and {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.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Resources Detected: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -428,15 +478,14 @@ settings.graphics = Grafikler 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 = Duraklatildi +clear = Clear +banned = [scarlet]Banned yes = Evet no = Hayir info.title = [accent]Bilgi error.title = [crimson]Bir hata olustu error.crashtitle = Bir hata olustu -attackpvponly = [scarlet]Only available in Attack/PvP modes blocks.input = Input blocks.output = Output blocks.booster = Booster @@ -518,6 +567,7 @@ category.optional = Optional Enhancements setting.landscape.name = Lock Landscape setting.shadows.name = Shadows setting.linear.name = Linear Filtering +setting.hints.name = Hints setting.animatedwater.name = Animated Water setting.animatedshields.name = Animated Shields setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] @@ -547,6 +597,7 @@ setting.fps.name = FPS'i goster setting.vsync.name = VSync setting.pixelate.name = Pixelate [LIGHT_GRAY](may decrease performance) setting.minimap.name = Haritayi goster +setting.position.name = Show Player Position setting.musicvol.name = Ses yuksekligi setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Sesi kapat @@ -558,6 +609,8 @@ setting.publichost.name = Public Game Visibility setting.chatopacity.name = Chat Opacity setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Display In-Game Chat +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. 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 @@ -569,13 +622,16 @@ category.multiplayer.name = Cok oyunculu command.attack = Attack command.rally = Rally command.retreat = Retreat -keybind.gridMode.name = Block Select -keybind.gridModeShift.name = Category Select +keybind.clear_building.name = Clear Building keybind.press = Bir tusa bas... keybind.press.axis = Bir yone cevir yada tusa bas... keybind.screenshot.name = Map Screenshot keybind.move_x.name = Sol/Sag hareket keybind.move_y.name = Yukari/asagi hareket +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Toggle Fullscreen keybind.select.name = Sec/silahi sik keybind.diagonal_placement.name = Diagonal Placement @@ -587,12 +643,14 @@ keybind.zoom_hold.name = Yaklasma basili tutmasi keybind.zoom.name = Yaklas keybind.menu.name = Menu keybind.pause.name = Durdur +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Minimap keybind.dash.name = Kos keybind.chat.name = konus keybind.player_list.name = Oyuncu listesi keybind.console.name = Konsol keybind.rotate.name = cevir +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Menuleri ac'kapat keybind.chat_history_prev.name = Konusma gecmisi geri keybind.chat_history_next.name = Konusma gecmisi ileri @@ -604,6 +662,7 @@ mode.survival.name = Survival mode.survival.description = The normal mode. Limited resources and automatic incoming waves. mode.sandbox.name = Serbest mode.sandbox.description = Sonsuz esyalar ve Dalga suresi yok +mode.editor.name = Editor mode.pvp.name = PvP mode.pvp.description = fight against other players locally. mode.attack.name = Attack @@ -790,6 +849,7 @@ block.junction.name = ayirici block.router.name = dagitici block.distributor.name = yayici block.sorter.name = secici +block.inverted-sorter.name = Inverted Sorter block.message.name = Message block.overflow-gate.name = Kapali dagatici block.silicon-smelter.name = Silikon eritici @@ -1010,6 +1070,7 @@ block.junction.description = Acts as a bridge for two crossing conveyor belts. U block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. block.sorter.description = esyalari secer. rengi ayni olan esya ileriden, digerleri sagdan ve soldan devam eder +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Accepts items from one direction and outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets. block.distributor.description = An advanced router which splits items to up to 7 other directions equally. block.overflow-gate.description = sadece saga ve sola dagatir. onu kapalidir diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index dea313d429..a71bd83a48 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -16,11 +16,28 @@ screenshot.invalid = Harita çok büyük, ekran görüntüsü için potansiyel o gameover = Kaybettin gameover.pvp = [accent] {0}[] Takımı kazandı! highscore = [accent]Yeni rekor! +copied = Copied. load.sound = Sesler load.map = Haritalar load.image = Resimler load.content = İçerik load.system = Sistem +load.mod = Mods +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Yenilen Dalgalar:[accent] {0} stat.enemiesDestroyed = Yok Edilen Düşmanlar:[accent] {0} stat.built = İnşa Edilen Yapılar:[accent] {0} @@ -29,44 +46,64 @@ stat.deconstructed = Yıkılan Yapılar:[accent] {0} stat.delivered = Gönderilen Kaynaklar: stat.rank = Rütbe: [accent]{0} launcheditems = [accent]Gönderilen Kaynaklar -map.delete = "[accent]{0}[]"Haritasını silmek istediğine emin misin? +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. +map.delete = "[accent]{0}[]" haritasını silmek istediğine emin misin? level.highscore = Rekor: [accent]{0} level.select = Seviye Seçimi level.mode = Oyun Modu: showagain = Bir daha gösterme -coreattack = < Çekirdek saldırı altında! > +coreattack = < Merkez saldırı altında! > nearpoint = [[ [scarlet]İNİŞ PİSTİNDEN AYRIL[] ]\nimha tehlikesi -database = Çekirdek Veritabanı +database = Ana Veritabanı savegame = Oyunu Kaydet loadgame = Oyunu Yükle joingame = Oyuna Katıl -addplayers = Oyuncu Ekle/Kaldır customgame = Özel Oyun newgame = Yeni Oyun none = minimap = Harita +position = Position close = Kapat website = Website quit = Çık -save.quit = Save & Quit +save.quit = Kaydet & Çık maps = Haritalar maps.browse = Haritaları gör continue = Devam et maps.none = [lightgray]Harita Bulunamadı! -invalid = Invalid +invalid = Geçersiz preparingconfig = Yapılandırma Hazırlanıyor preparingcontent = İçerik Hazırlanıyor uploadingcontent = İçerik Yükleniyor uploadingpreviewfile = Önizleme Dosyası Yükleniyor committingchanges = Değişiklikler Uygulanıyor -done = Bittti +done = Bitti +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry Github or Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]No mods found! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Enabled +mod.disabled = [scarlet]Disabled +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = The game will now close to apply the mod changes. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Import Mod +mod.import.github = Import Github Mod +mod.remove.confirm = This mod will be deleted. +mod.author = [LIGHT_GRAY]Author:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Hakkında name = İsim: noname = Bir[accent] kullanıcı adı[] seçmelisin. filename = Dosya Adı: unlocked = Yeni içerik açıldı! completed = [accent]Tamamlandı -techtree = Yetenek Ağacı +techtree = Teknoloji Ağacı research.list = [lightgray]Araştırmalar: research = Araştır researched = [lightgray]{0} Araştırıldı. @@ -92,13 +129,13 @@ server.versions = Kullandığın surum:[accent] {0}[]\nSunucunun sürümü:[acce host.info = [accent]host[], [scarlet]6567[] portunda bir sunucuya ev sahipliği yapıyor. \nAynı [lightgray]wifi veya yerel ağdaki[] herkes sunucu listelerinde senin sunucunu görebiliyor olmalı.\n\nEğer diğerlerinin herhangi bir yerden IP ile bağlanabilmesini istiyorsan [accent]port yönlendirmesi[] gerekli.\n\n[lightgray]Not: Eğer birisi senin yerel ağ oyununa katılmakta sorun yaşıyorsa güvenlik duvarı ayarlarında Mindustry'ye yerel ağ bağlantısı izni verdiğinden emin olun. Halka açık ağların zaman zaman sunucu aramaya engel olduğunu unutmayın. join.info = Burada, bağlanmak istediğin sunucunun [accent]IP[] adresini girebilir veya [accent]yerel ağ[] sunucularını görebilirsin..\nHem yerel ağ hem de geniş alan ağı çoklu oyuncu için destekleniyor.\n\n[lightgray]Not: Otomatik bir global sunucu listesi yok; eğer birisine IP adresi kullanarak bağlanmak istiyorsan IP adresini istemelisin. hostserver = Çok Oyunculu Oyun Aç -invitefriends = Invite Friends +invitefriends = Arkadaşlarını Davet Et hostserver.mobile = Oyun\nKur host = Kur hosting = [accent]Sunucu açılıyor... hosts.refresh = Yenile hosts.discovering = Yerel ağ oyunu aranıyor -hosts.discovering.any = Discovering games +hosts.discovering.any = Oyun aranıyor server.refreshing = Sunucu yenileniyor hosts.none = [lightgray]Yerel oyun bulunamadı! host.invalid = [scarlet]Kurucuya bağlanılamıyor. @@ -120,9 +157,9 @@ server.outdated = [crimson]Güncel Olmayan Sunucu![] server.outdated.client = [crimson]Güncel Olmayan Sürüm![] server.version = [gray]v{0} {1} server.custombuild = [yellow]Özel Sürüm -confirmban = Bu kullanıcıyı yasaklamak istediğine emin misin?confirmkick = Bu kullanıcıyı atmak istediğine emin misin? -confirmkick = Are you sure you want to kick this player? -confirmvotekick = Are you sure you want to vote-kick this player? +confirmban = Bu kullanıcıyı yasaklamak istediğine emin misin? +confirmkick = Bu kullanıcıyı atmak istediğine emin misin? +confirmvotekick = Bu kullanıcıyı oylayıp atmak istediğinize emin misiniz? confirmunban = Bu kullanıcının yasağını kaldırmak istediğine emin misin? confirmadmin = Bu kullanıcıyı bir yönetici yapmak istediğine emin misin? confirmunadmin = Bu kullanıcının yönetici yetkilerini almak istediğine istediğine emin misin? @@ -133,14 +170,13 @@ disconnect.error = Bağlantı hatası. disconnect.closed = Bağlantı kapatıldı. disconnect.timeout = Zaman aşımı. disconnect.data = Dünya verisi yüklenemedi! -cantconnect = Unable to join game ([accent]{0}[]). +cantconnect = Oyuna girilemiyor ([accent]{0}[]). connecting = [accent]Bağlanılıyor... connecting.data = [accent]Dünya verisi yükleniyor... server.port = Port: server.addressinuse = Adres zaten kullanılıyor! server.invalidport = Geçersiz port sayısı! server.error = [crimson]Sunucu kurulamadı: [accent]{0} -save.old = Bu kayıt oyunun eski bir sürümü için ve artık kullanılamaz.\n\n[lightgray]Tam 4.0 sürümü yayınlandığında geri kayıt özelliği eklenecek. save.new = Yeni kayıt save.overwrite = Bu kayıdın üstüne yazmak istediğine\nemin misin? overwrite = Üstüne yaz @@ -159,7 +195,7 @@ save.rename = Yeniden isimlendir save.rename.text = Yeni isim: selectslot = Bir kayıt seçin. slot = [accent]Slot {0} -editmessage = Edit Message +editmessage = Mesajı Düzenle save.corrupted = [accent]Kayıt dosyası bozuk veya geçersiz!\nEğer oyununuzu kısa süre öce güncellediyseniz bu, kayıt formatındaki bir değişiklik. Bir hata [scarlet]değil[]. empty = on = Aç @@ -173,8 +209,9 @@ save.playtime = Oynama süresi: {0} warning = Uyarı. confirm = Doğrula delete = Sil -view.workshop = View In Workshop -ok = OK +view.workshop = Workshop'da görüntüle +workshop.listing = Edit Workshop Listing +ok = Tamam open = Aç customize = Kuralları Özelleştir cancel = İptal @@ -186,100 +223,111 @@ data.import = Veriyi İçe Aktar data.exported = Veri dışa aktarıldı. data.invalid = Bu oyun verisi geçerli değil. data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. -classic.export = Export Classic Data -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... -saving = [accent]Saving... -wave = [accent]Wave {0} -wave.waiting = [lightgray]Wave in {0} -wave.waveInProgress = [lightgray]Wave in progress -waiting = [lightgray]Waiting... -waiting.players = Waiting for players... -wave.enemies = [lightgray]{0} Enemies Remaining -wave.enemy = [lightgray]{0} Enemy Remaining -loadimage = Load Image -saveimage = Save Image -unknown = Unknown -custom = Custom -builtin = Built-In -map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone! -map.random = [accent]Random Map +classic.export = Klasik Verileri Dışa Aktar +classic.export.text = [accent]Mindustry'e[] büyük bir update olmuştur.\nKlasik (v3.5 build 40) kayıt ya da harita bulunmuştur. Bu kayıtları Mindustry Classic uygulamasında kullanmak için telefonunuzun dosyalarına çıkartmak ister misiniz? +quit.confirm = Çıkmak istediğinize emin misiniz? +quit.confirm.tutorial = Ne yaptığınıza emin misiniz?\nÖğreticiyi [accent] Ayarlar->Oyun->Öğreticiyi Yeniden Al'dan[] tekrar yapabilirsiniz. +loading = [accent]Yükleniyor... +reloading = [accent]Reloading Mods... +saving = [accent]Kayıt ediliyor... +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building +wave = [accent]Dalga {0} +wave.waiting = [lightgray]{0} saniye içinde dalga +wave.waveInProgress = [lightgray]Dalga gerçekleşiyor +waiting = [lightgray]Bekleniliyor... +waiting.players = Oyuncular için bekleniliyor... +wave.enemies = [lightgray]{0} Tane Düşman Kaldı +wave.enemy = [lightgray]{0} Tane Düşman Kaldı +loadimage = Resim Aç +saveimage = Resim Kaydet +unknown = Bilinmeyen +custom = Özel +builtin = Yerleşik +map.delete.confirm = Bu haritayı silmek istediğinizden emin misiniz? Bunu geri alamazsınız! +map.random = [accent]Rastgele Harita map.nospawn = This map does not have any cores for the player to spawn in! Add a[accent] orange[] 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-orange[] 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. -map.publish.error = Error publishing map: {0} +map.invalid = Haritayı açarken hata oldu: bozulmuş ya da geçersiz harita dosyası.- +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... -editor.brush = Brush -editor.openin = Open In Editor -editor.oregen = Ore Generation -editor.oregen.info = Ore Generation: -editor.mapinfo = Map Info -editor.author = Author: -editor.description = Description: -editor.nodescription = A map must have a description of at least 4 characters before being published. -editor.waves = Waves: -editor.rules = Rules: -editor.generation = Generation: -editor.ingame = Edit In-Game -editor.publish.workshop = Publish On Workshop -editor.newmap = New Map -workshop = Workshop -waves.title = Waves -waves.remove = Remove -waves.never = -waves.every = every -waves.waves = wave(s) +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} +editor.brush = Fırça +editor.openin = Düzenleyici'de Aç +editor.oregen = Maden Oluşumu +editor.oregen.info = Maden Oluşumu: +editor.mapinfo = Harita Bilgileri +editor.author = Yapımcı: +editor.description = Açıklama: +editor.nodescription = Haritanın en az 4 harflik bir açıklaması olması gerekiyor. +editor.waves = Dalgalar: +editor.rules = Kularlar: +editor.generation = Oluşum: +editor.ingame = Oyun içinde düzenle +editor.publish.workshop = Workshop'da Yayınla +editor.newmap = Yeni Harita +workshop = Workshop- +waves.title = Dalgalar +waves.remove = Kaldır +waves.never = +waves.every = her +waves.waves = dalga(lar) waves.perspawn = per spawn -waves.to = to +waves.to = doğru waves.boss = Boss -waves.preview = Preview -waves.edit = Edit... -waves.copy = Copy to Clipboard -waves.load = Load from Clipboard -waves.invalid = Invalid waves in clipboard. -waves.copied = Waves copied. -waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout. -editor.default = [lightgray] -details = Details... -edit = Edit... -editor.name = Name: -editor.spawn = Spawn Unit -editor.removeunit = Remove Unit -editor.teams = Teams -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. +waves.preview = Öngörünüm +waves.edit = Düzenle... +waves.copy = Clipboard'dan kopyala +waves.load = Clipboard'dan yükle +waves.invalid = Clipboard'da geçersiz dalga sayısı var. +waves.copied = Dalgalar kopyalandı. +waves.none = Düşman bulunamadı.\nNote that empty wave layouts will automatically be replaced with the default layout. +editor.default = [lightgray] +details = Detaylar... +edit = Düzenle... +editor.name = İsim: +editor.spawn = Eleman Oluştur +editor.removeunit = Eleman Kaldır +editor.teams = Takımlar +editor.errorload = Dosya yüklerken hata oluştu:\n[accent]{0} +editor.errorsave = Dosya kaydederken hata oluştu:\n[accent]{0} +editor.errorimage = That's an image, not a map.\n\nIf you want to import a 3.5/build 40 map, use the 'Import Legacy Map' button in the editor. editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported. -editor.errornot = This is not a map file. -editor.errorheader = This map file is either not valid or corrupt. -editor.errorname = Map has no name defined. Are you trying to load a save file? -editor.update = Update -editor.randomize = Randomize -editor.apply = Apply -editor.generate = Generate -editor.resize = Resize -editor.loadmap = Load Map -editor.savemap = Save Map -editor.saved = Saved! -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 = Import... -editor.importmap = Import Map -editor.importmap.description = Import an already existing map -editor.importfile = Import File -editor.importfile.description = Import an external map file -editor.importimage = Import Legacy Image -editor.importimage.description = Import an external map image file -editor.export = Export... -editor.exportfile = Export File -editor.exportfile.description = Export a map file +editor.errornot = Bu bir harita dosyası değil. +editor.errorheader = Bu harita dosyası geçerli değil ya da bozuk. +editor.errorname = Haritanın ismi yok. Bir kayıt dosyası mı yüklemeye çalışıyorsun? +editor.update = Güncelle +editor.randomize = Rastgele Yap +editor.apply = Uygula +editor.generate = Oluştur +editor.resize = Yeniden Boyutlandır +editor.loadmap = Harita Yükle +editor.savemap = Harita Kaydet +editor.saved = Kaydedildi! +editor.save.noname = Haritanın bir ismi yok! 'Harita bilgileri' menüsünden bir isim seç. +editor.save.overwrite = Haritan bir yerleşik haritayla örtüşüyor! 'Harita bilgileri' menüsünden farklı bir isim seç. +editor.import.exists = [scarlet]İçeri aktarılamadı:[] '{0}' isminde zaten bir yerleşik harita var! +editor.import = İçeri Aktar... +editor.importmap = Haritayı İçeri Aktar +editor.importmap.description = Var olan bir haritayı içeri aktar +editor.importfile = Dosyayı İçeri Aktar +editor.importfile.description = Dışarıdaki bir harita dosyasını içeriye aktar +editor.importimage = Eski Haritayı İçeri Aktar +editor.importimage.description = Dışarıdaki bir resim-harita dosyasını içeriye aktar +editor.export = Dışarı Aktar... +editor.exportfile = Dosyayı Dışarı Aktar +editor.exportfile.description = Harita dosyasını dışarıya aktar editor.exportimage = Export Terrain Image editor.exportimage.description = Export a map image file editor.loadimage = Import Terrain @@ -291,13 +339,13 @@ 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.exists = A map with this name already exists. editor.selectmap = Select a map to load: -toolmode.replace = Replace +toolmode.replace = Değiştir toolmode.replace.description = Draws only on solid blocks. -toolmode.replaceall = Replace All +toolmode.replaceall = Hepsini Değiştir toolmode.replaceall.description = Replace all blocks in map. -toolmode.orthogonal = Orthogonal +toolmode.orthogonal = Dikey toolmode.orthogonal.description = Draws only orthogonal lines. -toolmode.square = Square +toolmode.square = Kare toolmode.square.description = Square brush. toolmode.eraseores = Erase Ores toolmode.eraseores.description = Erase only ores. @@ -311,8 +359,8 @@ filter.noise = Noise filter.median = Median filter.oremedian = Ore Median filter.blend = Blend -filter.defaultores = Default Ores -filter.ore = Ore +filter.defaultores = Varsayılan Madenler +filter.ore = Maden filter.rivernoise = River Noise filter.mirror = Mirror filter.clear = Clear @@ -327,37 +375,37 @@ filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff filter.option.angle = Angle -filter.option.block = Block -filter.option.floor = Floor +filter.option.block = Blok +filter.option.floor = Zemin filter.option.flooronto = Target Floor -filter.option.wall = Wall -filter.option.ore = Ore +filter.option.wall = Duvar +filter.option.ore = Maden filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold filter.option.radius = Radius filter.option.percentile = Percentile -width = Width: -height = Height: -menu = Menu -play = Play -campaign = Campaign -load = Load -save = Save +width = Eni: +height = Boyu: +menu = Menü +play = Oyna +campaign = Başla +load = Yükle +save = Kaydet fps = FPS: {0} -tps = TPS: {0} ping = Ping: {0}ms -language.restart = Please restart your game for the language settings to take effect. -settings = Settings -tutorial = Tutorial -tutorial.retake = Re-Take Tutorial -editor = Editor -mapeditor = Map Editor -donate = Donate -abandon = Abandon -abandon.text = This zone and all its resources will be lost to the enemy. -locked = Locked +language.restart = Dil ayarlarının çalışması için lütfen oyunu yeniden başlatın. +settings = Ayarlar +tutorial = Öğretici +tutorial.retake = Öğreticiyi Yeniden Al +editor = Düzenleyici +mapeditor = Harita Düzenleyicisi +abandon = Terk Et +abandon.text = Burası ve bütün kaynakları düşmana kaybedilecek. +locked = Kilitli complete = [lightgray]Reach: -zone.requirement = Wave {0} in zone {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Resume Zone:\n[lightgray]{0} bestwave = [lightgray]Best Wave: {0} launch = < LAUNCH > @@ -365,23 +413,25 @@ launch.title = Launch Successful launch.next = [lightgray]next opportunity at wave {0} launch.unable2 = [scarlet]Unable to LAUNCH.[] launch.confirm = This will launch all resources in your core.\nYou will not be able to return to this base. -launch.skip.confirm = If you skip now, you will not be able to launch until later waves. -uncover = Uncover +launch.skip.confirm = Eğer şimdi geçerseniz, +uncover = Aç configure = Configure Loadout +bannedblocks = Banned Blocks +addall = Add All configure.locked = [lightgray]Unlock configuring loadout: Wave {0}. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [lightgray]{0} unlocked. zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met. -zone.config.complete = Wave {0} reached:\nLoadout config unlocked. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = [lightgray]Resources Detected: zone.objective = [lightgray]Objective: [accent]{0} -zone.objective.survival = Survive -zone.objective.attack = Destroy Enemy Core -add = Add... -boss.health = Boss Health +zone.objective.survival = Hayatta Kal +zone.objective.attack = Düşman Merkezini Yok Et +add = Ekle... +boss.health = Boss Canı connectfail = [crimson]Connection error:\n\n[accent]{0} error.unreachable = Server unreachable.\nIs the address spelled correctly? -error.invalidaddress = Invalid address. +error.invalidaddress = Geçersiz adres. 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. @@ -417,74 +467,73 @@ zone.nuclearComplex.description = A former facility for the production and proce 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 = zone.crags.description = -settings.language = Language -settings.data = Game Data +settings.language = Dil +settings.data = Oyun Verisi settings.reset = Reset to Defaults settings.rebind = Rebind -settings.controls = Controls -settings.game = Game -settings.sound = Sound -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.controls = Kontroller +settings.game = Oyun +settings.sound = Ses +settings.graphics = Grafikler +settings.cleardata = Oyun Verisini Sil... +settings.clear.confirm = Verileri silmek istediğinizden emin misiniz?\nBunu geri alamazsınız! 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 = Yes -no = No -info.title = Info -error.title = [crimson]An error has occured -error.crashtitle = An error has occured -attackpvponly = [scarlet]Only available in Attack/PvP modes -blocks.input = Input -blocks.output = Output +paused = [accent]< Durduruldu > +clear = Clear +banned = [scarlet]Banned +yes = Evet +no = Hayır +info.title = Bilgi +error.title = [crimson]Bir hata oldu +error.crashtitle = Bir hata oldu +blocks.input = Giriş +blocks.output = Çıkış blocks.booster = Booster block.unknown = [lightgray]??? blocks.powercapacity = Power Capacity blocks.powershot = Power/Shot -blocks.damage = Damage -blocks.targetsair = Targets Air -blocks.targetsground = Targets Ground -blocks.itemsmoved = Move Speed -blocks.launchtime = Time Between Launches -blocks.shootrange = Range -blocks.size = Size -blocks.liquidcapacity = Liquid Capacity -blocks.powerrange = Power Range -blocks.poweruse = Power Use -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 = Range -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.buildcost = Build Cost -blocks.inaccuracy = Inaccuracy -blocks.shots = Shots -blocks.reload = Shots/Second -blocks.ammo = Ammo -bar.drilltierreq = Better Drill Required +blocks.damage = Hasar +blocks.targetsair = Havayı Hedefler +blocks.targetsground = Yeri Hedefler +blocks.itemsmoved = Hareket Hızı +blocks.launchtime = Fırlatmalar Arasındaki Süre +blocks.shootrange = Menzil +blocks.size = Boyut +blocks.liquidcapacity = Sıvı Kapasitesi +blocks.powerrange = Enerji Menzili +blocks.poweruse = Enerji Kullanımı +blocks.powerdamage = Enerji/Hasar +blocks.itemcapacity = Eşya Kapasitesi +blocks.basepowergeneration = Zemin Enerji Üretimi +blocks.productiontime = Üretim Süresi +blocks.repairtime = Full Tamir Süresi +blocks.speedincrease = Hız Artışı +blocks.range = Menzil +blocks.drilltier = Matkaplanabilenler +blocks.drillspeed = Zemin Matkap Hızı +blocks.boosteffect = Hızlandırma Efekti +blocks.maxunits = Maksimum Aktif Unitler +blocks.health = Can +blocks.buildtime = İnşaat Süresi +blocks.buildcost = İnşaat Fiyatı +blocks.inaccuracy = Yanlış Atış İhtimali +blocks.shots = Atışlar +blocks.reload = Atışlar/Sn +blocks.ammo = Mermi +bar.drilltierreq = Daha İyi Matkap Gerekli bar.drillspeed = Drill Speed: {0}/s bar.efficiency = Efficiency: {0}% -bar.powerbalance = Power: {0}/s -bar.powerstored = Stored: {0}/{1} -bar.poweramount = Power: {0} -bar.poweroutput = Power Output: {0} -bar.items = Items: {0} -bar.capacity = Capacity: {0} -bar.liquid = Liquid -bar.heat = Heat -bar.power = Power +bar.powerbalance = Enerji: {0}/sn +bar.powerstored = Enerji Deposu: {0}/{1} +bar.poweramount = Enerji: {0} +bar.poweroutput = Enerji Üretimi: {0} +bar.items = Eşyalar: {0} +bar.capacity = Kapasite: {0} +bar.liquid = Sıvı +bar.heat = Isı +bar.power = Enerji bar.progress = Build Progress -bar.spawned = Units: {0}/{1} +bar.spawned = Unitler: {0}/{1} bullet.damage = [stat]{0}[lightgray] damage bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles bullet.incendiary = [stat]incendiary @@ -496,103 +545,112 @@ 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 = seconds -unit.persecond = /sec -unit.timesspeed = x speed +unit.blocks = bloklar +unit.powersecond = enerji birimi/saniye +unit.liquidsecond = sıvı birimi/saniye +unit.itemssecond = eşya/saniye +unit.liquidunits = sıvı birimi +unit.powerunits = enerji birimi +unit.degrees = derece +unit.seconds = saniye +unit.persecond = /sn +unit.timesspeed = x hız unit.percent = % -unit.items = items -category.general = General -category.power = Power -category.liquids = Liquids -category.items = Items -category.crafting = Input/Output +unit.items = eşya +category.general = Genel +category.power = Enerji +category.liquids = Sıvılar +category.items = Eşyalar +category.crafting = Giriş/Çıkış category.shooting = Shooting category.optional = Optional Enhancements setting.landscape.name = Lock Landscape -setting.shadows.name = Shadows +setting.shadows.name = Gölgeler setting.linear.name = Linear Filtering -setting.animatedwater.name = Animated Water -setting.animatedshields.name = Animated Shields +setting.hints.name = Hints +setting.animatedwater.name = Animasyonlu Su +setting.animatedshields.name = Animasyonlu Kalkanlar setting.antialias.name = Antialias[lightgray] (requires restart)[] setting.indicators.name = Enemy/Ally Indicators setting.autotarget.name = Auto-Target -setting.keyboard.name = Mouse+Keyboard Controls +setting.keyboard.name = Fare+Klavye Kontrolleri setting.touchscreen.name = Touchscreen Controls -setting.fpscap.name = Max FPS -setting.fpscap.none = None +setting.fpscap.name = Maksimum FPS +setting.fpscap.none = Limitsiz setting.fpscap.text = {0} FPS setting.uiscale.name = UI Scaling[lightgray] (require restart)[] setting.swapdiagonal.name = Always Diagonal Placement -setting.difficulty.training = Training -setting.difficulty.easy = Easy +setting.difficulty.training = Eğitim +setting.difficulty.easy = Kolay setting.difficulty.normal = Normal -setting.difficulty.hard = Hard -setting.difficulty.insane = Insane -setting.difficulty.name = Difficulty: +setting.difficulty.hard = Zor +setting.difficulty.insane = Çılgın +setting.difficulty.name = Zorluk: setting.screenshake.name = Screen Shake setting.effects.name = Display Effects setting.sensitivity.name = Controller Sensitivity setting.saveinterval.name = Save Interval -setting.seconds = {0} Seconds -setting.fullscreen.name = Fullscreen -setting.borderlesswindow.name = Borderless Window[lightgray] (may require restart) -setting.fps.name = Show FPS +setting.seconds = {0} Saniye +setting.fullscreen.name = Tam Ekran +setting.borderlesswindow.name = Kenarsız Pencere[lightgray] (yeniden açmak gerekebilir) +setting.fps.name = FPS Göster setting.vsync.name = VSync -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.pixelate.name = Pixelle[lightgray] (animasyonları kapatır) +setting.minimap.name = Harita Göster +setting.position.name = Show Player Position +setting.musicvol.name = Müzik +setting.ambientvol.name = Etraf Sesi +setting.mutemusic.name = Müziği Kapat +setting.sfxvol.name = Oyun Sesi +setting.mutesound.name = Sesi Kapat setting.crashreport.name = Send Anonymous Crash Reports setting.savecreate.name = Auto-Create Saves setting.publichost.name = Public Game Visibility setting.chatopacity.name = Chat Opacity -setting.lasersopacity.name = Power Laser Opacity -setting.playerchat.name = Display In-Game Chat +setting.lasersopacity.name = Enerji Lazeri Opaklığı +setting.playerchat.name = Oyun-içi Konuşmayı Göster +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. 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 +uiscale.cancel = İptal Et ve Çık setting.bloom.name = Bloom keybind.title = Rebind Keys keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. -category.general.name = General +category.general.name = Genel category.view.name = View -category.multiplayer.name = Multiplayer -command.attack = Attack -command.rally = Rally -command.retreat = Retreat -keybind.gridMode.name = Block Select -keybind.gridModeShift.name = Category Select -keybind.press = Press a key... +category.multiplayer.name = Çok Oyunculu +command.attack = Saldır +command.rally = Toplan +command.retreat = Geri Çekil +keybind.clear_building.name = Clear Building +keybind.press = Bir tuşa basın... 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.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Toggle Fullscreen 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.pick.name = Blok Seç +keybind.break_block.name = Blok Kır +keybind.deselect.name = Seçimleri Kaldır +keybind.shoot.name = Ateş Et keybind.zoom_hold.name = Zoom Hold keybind.zoom.name = Zoom -keybind.menu.name = Menu -keybind.pause.name = Pause +keybind.menu.name = Menü +keybind.pause.name = Durdur +keybind.pause_building.name = Pause/Resume Building 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.chat.name = Konuş +keybind.player_list.name = Oyuncu Listesi +keybind.console.name = Konsol +keybind.rotate.name = Döndür +keybind.rotateplaced.name = Rotate Existing (Hold) keybind.toggle_menus.name = Toggle menus keybind.chat_history_prev.name = Chat history prev keybind.chat_history_next.name = Chat history next @@ -600,19 +658,20 @@ 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.name = Hayatta Kalma mode.survival.description = The normal mode. Limited resources and automatic incoming waves.\n[gray]Requires enemy spawns in the map to play. -mode.sandbox.name = Sandbox -mode.sandbox.description = Infinite resources and no timer for waves. +mode.sandbox.name = Yaratıcı +mode.sandbox.description = Sonsuz kaynaklar ve dalgalar için zamanlayıcı yok. +mode.editor.name = Düzenleyici mode.pvp.name = PvP mode.pvp.description = Fight against other players locally.\n[gray]Requires at least 2 differently-colored cores in the map to play. -mode.attack.name = Attack +mode.attack.name = Saldırı mode.attack.description = Destroy the enemy's base. No waves.\n[gray]Requires a red core in the map to play. -mode.custom = Custom Rules -rules.infiniteresources = Infinite Resources -rules.wavetimer = Wave Timer -rules.waves = Waves -rules.attack = Attack Mode +mode.custom = Özel Kurallar +rules.infiniteresources = Sınırsız Kaynaklar +rules.wavetimer = Dalga Zamanlayıcısı +rules.waves = Dalgalar +rules.attack = Saldırı Modu rules.enemyCheat = Infinite AI (Red Team) Resources rules.unitdrops = Unit Drops rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier @@ -627,38 +686,38 @@ rules.buildcostmultiplier = Build Cost Multiplier rules.buildspeedmultiplier = Build Speed Multiplier rules.waitForWaveToEnd = Waves wait for enemies rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) -rules.respawns = Max respawns per wave -rules.limitedRespawns = Limit Respawns -rules.title.waves = Waves -rules.title.respawns = Respawns -rules.title.resourcesbuilding = Resources & Building -rules.title.player = Players -rules.title.enemy = Enemies -rules.title.unit = Units -content.item.name = Items -content.liquid.name = Liquids -content.unit.name = Units -content.block.name = Blocks -content.mech.name = Mechs -item.copper.name = Copper -item.lead.name = Lead -item.coal.name = Coal -item.graphite.name = Graphite -item.titanium.name = Titanium -item.thorium.name = Thorium -item.silicon.name = Silicon -item.plastanium.name = Plastanium -item.phase-fabric.name = Phase Fabric -item.surge-alloy.name = Surge Alloy -item.spore-pod.name = Spore Pod -item.sand.name = Sand -item.blast-compound.name = Blast Compound -item.pyratite.name = Pyratite -item.metaglass.name = Metaglass -item.scrap.name = Scrap -liquid.water.name = Water -liquid.slag.name = Slag -liquid.oil.name = Oil +rules.respawns = Dalga Başına Maksimum Tekrar Canlanmalar +rules.limitedRespawns = Tekrar Canlanma Limiti +rules.title.waves = Dalgalar +rules.title.respawns = Tekrar Canlanmalar +rules.title.resourcesbuilding = Kaynaklar & İnşa +rules.title.player = Oyuncular +rules.title.enemy = Düşmanlar +rules.title.unit = Unitler +content.item.name = Eşyalar +content.liquid.name = Sıvılar +content.unit.name = Unitler +content.block.name = Bloklar +content.mech.name = Mekanikler +item.copper.name = Bakır +item.lead.name = Kurşun +item.coal.name = Kömür +item.graphite.name = Grafit +item.titanium.name = Titanyum +item.thorium.name = Toryum +item.silicon.name = Silikon +item.plastanium.name = Plastanyum +item.phase-fabric.name = Faz Kumaş +item.surge-alloy.name = Dalgalanma Alaşımı +item.spore-pod.name = Spor Tübü +item.sand.name = Kum +item.blast-compound.name = Patlayıcı Bileşik +item.pyratite.name = Pirratit +item.metaglass.name = Metacam +item.scrap.name = Hurda +liquid.water.name = Su +liquid.slag.name = Cüruf +liquid.oil.name = Petrol liquid.cryofluid.name = Cryofluid mech.alpha-mech.name = Alpha mech.alpha-mech.weapon = Heavy Repeater @@ -681,156 +740,157 @@ mech.trident-ship.name = Trident mech.trident-ship.weapon = Bomb Bay mech.glaive-ship.name = Glaive mech.glaive-ship.weapon = Flame Repeater -item.explosiveness = [lightgray]Explosiveness: {0}% -item.flammability = [lightgray]Flammability: {0}% -item.radioactivity = [lightgray]Radioactivity: {0}% -unit.health = [lightgray]Health: {0} -unit.speed = [lightgray]Speed: {0} -mech.weapon = [lightgray]Weapon: {0} -mech.health = [lightgray]Health: {0} -mech.itemcapacity = [lightgray]Item Capacity: {0} -mech.minespeed = [lightgray]Mining Speed: {0}% -mech.minepower = [lightgray]Mining Power: {0} -mech.ability = [lightgray]Ability: {0} +item.explosiveness = [lightgray]Patlama: {0}% +item.flammability = [lightgray]Yanıcılık: {0}% +item.radioactivity = [lightgray]Radyoaktivite: {0}% +unit.health = [lightgray]Can: {0} +unit.speed = [lightgray]Hız: {0} +mech.weapon = [lightgray]Silah: {0} +mech.health = [lightgray]Can: {0} +mech.itemcapacity = [lightgray]Eşya Kapasitesi: {0} +mech.minespeed = [lightgray]Kazma Hızı: {0}% +mech.minepower = [lightgray]Kazma Gücü: {0} +mech.ability = [lightgray]Kabiliyet: {0} mech.buildspeed = [lightgray]Building Speed: {0}% liquid.heatcapacity = [lightgray]Heat Capacity: {0} liquid.viscosity = [lightgray]Viscosity: {0} liquid.temperature = [lightgray]Temperature: {0} -block.sand-boulder.name = Sand Boulder -block.grass.name = Grass -block.salt.name = Salt -block.saltrocks.name = Salt Rocks -block.pebbles.name = Pebbles +block.sand-boulder.name = Kum Kaya Parçaları +block.grass.name = Çimen +block.salt.name = Tuz +block.saltrocks.name = Tuz Taşları +block.pebbles.name = Çakıl Taşları block.tendrils.name = Tendrils -block.sandrocks.name = Sand Rocks -block.spore-pine.name = Spore Pine -block.sporerocks.name = Spore Rocks -block.rock.name = Rock -block.snowrock.name = Snow Rock -block.snow-pine.name = Snow Pine +block.sandrocks.name = Kum Kayaları +block.spore-pine.name = Spor Çamı +block.sporerocks.name = Spor Kayaları +block.rock.name = Kaya +block.snowrock.name = Karlı Kaya +block.snow-pine.name = Karlı Çam block.shale.name = Shale block.shale-boulder.name = Shale Boulder -block.moss.name = Moss +block.moss.name = Yosun block.shrubs.name = Shrubs -block.spore-moss.name = Spore Moss +block.spore-moss.name = Spor Yos 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.graphite-press.name = Graphite Press -block.multi-press.name = Multi-Press -block.constructing = {0} [lightgray](Constructing) +block.scrap-wall.name = Hurda Duvar +block.scrap-wall-large.name = Büyük Hurda Duvar +block.scrap-wall-huge.name = Dev Hurda Duvar +block.scrap-wall-gigantic.name = Devasa Hurda Duvar +block.thruster.name = İticiler +block.kiln.name = Tuğla Ocağı +block.graphite-press.name = Grafit Basıcısı +block.multi-press.name = Çoklu-Basıcı +block.constructing = {0} [lightgray](İnşaat Ediliyor) 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.core-shard.name = Merkez: Shard +block.core-foundation.name = Merkez: Foundation +block.core-nucleus.name = Merkez: Nucleus +block.deepwater.name = Derin Su +block.water.name = Su +block.tainted-water.name = Lekeli Su +block.darksand-tainted-water.name = Kara Kum Lekeli Su +block.tar.name = Katran +block.stone.name = Taş +block.sand.name = Kum +block.darksand.name = Kara Kum +block.ice.name = Buz +block.snow.name = Kar +block.craters.name = Kraterler +block.sand-water.name = Kumlu Su +block.darksand-water.name = Siyah Kumlu Su +block.char.name = Kömür block.holostone.name = Holo stone block.ice-snow.name = Ice Snow -block.rocks.name = Rocks +block.rocks.name = Kayalar 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.white-tree-dead.name = Ölmüş Beyaz Ağaç +block.white-tree.name = Beyaz Ağaç +block.spore-cluster.name = Spor Kümesi +block.metal-floor.name = Metal Zemin 1 +block.metal-floor-2.name = Metal Zemin 2 +block.metal-floor-3.name = Metal Zemin 3 +block.metal-floor-5.name = Metal Zemin 4 +block.metal-floor-damaged.name = Hasarlı Metal Zemin +block.dark-panel-1.name = Kara Panel 1 +block.dark-panel-2.name = Kara Panel 2 +block.dark-panel-3.name = Kara Panel 3 +block.dark-panel-4.name = Kara Panel 4 +block.dark-panel-5.name = Kara Panel 5 +block.dark-panel-6.name = Kara Panel 6 +block.dark-metal.name = Kara Metal block.ignarock.name = Igna Rock -block.hotrock.name = Hot Rock -block.magmarock.name = Magma Rock +block.hotrock.name = Sıcak Kaya +block.magmarock.name = Magma Kayası 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.copper-wall.name = Bakır Duvar +block.copper-wall-large.name = Büyük Bakır Duvar +block.titanium-wall.name = Titanyum Duvar +block.titanium-wall-large.name = Büyük Titanyum Duvar +block.phase-wall.name = Faz Duvar +block.phase-wall-large.name = Büyük Faz Duvar +block.thorium-wall.name = Thoryum Duvar +block.thorium-wall-large.name = Büyük Thoryum Duvar +block.door.name = Kapı +block.door-large.name = Büyük Kapı 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.armored-conveyor.name = Armored Conveyor +block.conveyor.name = Konveyör +block.titanium-conveyor.name = Titanyum Konveyör +block.armored-conveyor.name = Zırhlı Konveyör block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. -block.junction.name = Junction -block.router.name = Router -block.distributor.name = Distributor -block.sorter.name = Sorter -block.message.name = Message -block.overflow-gate.name = Overflow Gate -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 = Steam 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.junction.name = Kavşak +block.router.name = Yönlendirici +block.distributor.name = Dağıtıcı +block.sorter.name = Ayıklayıcı +block.inverted-sorter.name = Inverted Sorter +block.message.name = Mesaj +block.overflow-gate.name = Taşma Geçiti +block.silicon-smelter.name = Silikon Isıtıcısı +block.phase-weaver.name = Faz Dokumacı +block.pulverizer.name = Pulvarizör +block.cryofluidmixer.name = Cryofluid Mikseri +block.melter.name = Eritici +block.incinerator.name = Yakıcı +block.spore-press.name = Spor Basıcısı +block.separator.name = Ayırıcı +block.coal-centrifuge.name = Kömür Santrifüjü +block.power-node.name = Enerji Noktası +block.power-node-large.name = Büyük Enerji Noktası +block.surge-tower.name = Dalgalanma Kulesi +block.battery.name = Batarya +block.battery-large.name = Büyük Batarya +block.combustion-generator.name = Yanma Jeneratörü +block.turbine-generator.name = Buhar Jeneratörü +block.differential-generator.name = Diferansiyel Jeneratör +block.impact-reactor.name = Patlama Reaktörü +block.mechanical-drill.name = Mekanik Matkap +block.pneumatic-drill.name = Hava Basınçlı Matkap +block.laser-drill.name = Lazer Matkap +block.water-extractor.name = Su Çıkarıcı +block.cultivator.name = Ekici +block.dart-mech-pad.name = Alpha 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.conduit.name = Boru +block.mechanical-pump.name = Mekanik Pompa +block.item-source.name = Sonsuz Eşya Kaynağı +block.item-void.name = Eşya Yokedici +block.liquid-source.name = Sonsuz Sıvı Kaynağı +block.power-void.name = Enerji Yokedici +block.power-source.name = Sonsuz Enerji Kaynağı +block.unloader.name = Boşaltıcı +block.vault.name = Depo block.wave.name = Wave block.swarmer.name = Swarmer block.salvo.name = Salvo @@ -840,10 +900,10 @@ 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.command-center.name = Command Center +block.solar-panel.name = Güneş Paneli +block.solar-panel-large.name = Büyük Güneş Paneli +block.oil-extractor.name = Petrol Çıkarıcı +block.command-center.name = Komut Merkezi block.draug-factory.name = Draug Miner Drone Factory block.spirit-factory.name = Spirit Repair Drone Factory block.phantom-factory.name = Phantom Builder Drone Factory @@ -857,19 +917,19 @@ 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.liquid-router.name = Sıvı Yönlendiricisi +block.liquid-tank.name = Sıvı Tankı +block.liquid-junction.name = Sıvı Kavşağı +block.bridge-conduit.name = Köprülü Boru +block.rotary-pump.name = Rotary Pompa +block.thorium-reactor.name = Toryum Reaktörü 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.thermal-pump.name = Termal Pompa +block.thermal-generator.name = Termal Jeneratör +block.alloy-smelter.name = Alaşım Karıştırıcısı +block.mender.name = Tamirci +block.mend-projector.name = Büyük Tamirci block.surge-wall.name = Surge Wall block.surge-wall-large.name = Large Surge Wall block.cyclone.name = Cyclone @@ -878,19 +938,19 @@ 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.rtg-generator.name = RTG Jeneratör block.spectre.name = Spectre block.meltdown.name = Meltdown block.container.name = Container block.launch-pad.name = Launch Pad block.launch-pad-large.name = Large Launch Pad -team.blue.name = blue -team.crux.name = red -team.sharded.name = orange -team.orange.name = orange +team.blue.name = mavi +team.crux.name = kırmızı +team.sharded.name = turuncu +team.orange.name = turuncu team.derelict.name = derelict -team.green.name = green -team.purple.name = purple +team.green.name = yeşil +team.purple.name = mor unit.spirit.name = Spirit Repair Drone unit.draug.name = Draug Miner Drone unit.phantom.name = Phantom Builder Drone @@ -906,14 +966,14 @@ unit.chaos-array.name = Chaos Array unit.eradicator.name = Eradicator unit.lich.name = Lich unit.reaper.name = Reaper -tutorial.next = [lightgray] -tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nBegin by[accent] mining copper[]. Tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper -tutorial.drill = Mining manually is inefficient.\n[accent]Drills []can mine automatically.\nClick the drill tab in the bottom right.\nSelect the[accent] mechanical drill[]. Place it on a copper vein by clicking.\n[accent]Right-click[] to stop building. -tutorial.drill.mobile = Mining manually is inefficient.\n[accent]Drills []can mine automatically.\nTap the drill tab in the bottom right.\nSelect the[accent] mechanical drill[].\nPlace it on a copper vein by tapping, then press the[accent] checkmark[] below to confirm your selection.\nPress the[accent] X button[] to cancel placement. -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 = 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.next = [lightgray] +tutorial.intro = [scarlet]Mindustry öğreticisine hoş geldiniz.[]\n[accent]Bakır kazarak[] başlayınız. Bunu yapmak için merkezinize yakın bir bakır madenine dokunun.\n\n[accent]{0}/{1} bakır +tutorial.drill = Manuel olarak kazmak verimsizdir.\n[accent]Matkaplar []otomatikman kazabilir.\nSağ alttaki matkap sekmesine tıklayınız.\n[accent]Mekanik matkabı[] seçiniz. Tıklayarak bir bakır madenine yerleştiriniz.\n Yapımı durdurmak için [accent]sağ tıklayın[] ve yakınlaştırmak ve uzaklaştırmak için [accent]CTRL basılı tutarak tekerleği kaydırın[]. +tutorial.drill.mobile = Manuel olarak kazmak verimsizdir.\n[accent]Matkaplar []otomatikman kazabilir.\nSağ alttaki matkap sekmesine dokununuz.\n[accent]Mekanik matkabı[] seçiniz. \nDokunarak bir bakır madenine yerleştiriniz, sonra seçiminizi onaylamak için alttaki [accent] tik düğmesine[] basınız.\nYerleştirmenizi iptal etmek için [accent] X butonuna[] basınız. +tutorial.blockinfo = Her bloğun farklı istatistikleri vardır. Her matkap sadece belirli madenleri kazabilir.\nBir bloğun bilgi ve istastiklerine bakmak için,[accent] yapım menüsünde seçerken "?" tuşuna dokununuz.[]\n\n[accent]Şimdi Mekanik Matkap'ın istatistiklerine erişiniz.[] +tutorial.conveyor = [accent]Konveyörler[] merkeze eşyaları ulaştırmak için kullanılır.\nMatkaptan merkeze konveyörlerden oluşan bir sıra yapınız.\n[accent]Bir sıra halinde yerleştirmek için farenizi basılı tutunuz.[]\nÇaprazlama bir yol konveyör yerleştirmek için [accent]CTRL[] tuşunu basılı tutunuz.\n\n[accent]Sıra aracı ile 2 konveyör yerleştirin, sonra bir eşyayı merkeze götürün. +tutorial.conveyor.mobile = [accent]Konveyörler[] merkeze eşyaları ulaştırmak için kullanılır.\nMatkaptan merkeze konveyörlerden oluşan bir sıra yapınız.\n[accent] Bir sıra halinde yerleştirmek için parmağınızı birkaç saniye basılı tutup[] bir yöne çekin.\n\n[accent]Sıra aracı ile 2 konveyör yerleştirin, sonra bir eşyayı merkeze götürün. +tutorial.turret = Bir eşya merkezinize girdiğinde, inşa için kullanılabilir.\nHer eşyaların sadece inşa için kullanılmadığını aklınızda tutunuz.\nİnşa için kullanılmayan eşyalar,[accent] kömür[] ya da[accent] hurda[] gibileri merkeze konulamaz.\n[lightgray]Düşmanı[] püskürtmek için savunma yapıları inşa edilmelidir.\nÜssünüze yakın bir yerde [accent] duo kulesi[] inşa ediniz. 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. @@ -926,27 +986,27 @@ tutorial.deposit = Deposit items into blocks by dragging from your ship to the d tutorial.waves = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves.[accent] Click[] to shoot.\nBuild more turrets and drills. Mine more copper. tutorial.waves.mobile = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves. Your ship will automatically fire at enemies.\nBuild more turrets and drills. Mine more copper. tutorial.launch = Once you reach a specific wave, you are able to[accent] launch the core[], leaving your defenses behind and[accent] obtaining all the resources in your core.[]\nThese resources can then be used to research new technology.\n\n[accent]Press the launch button. -item.copper.description = The most basic structural material. Used extensively in all types of blocks. -item.lead.description = A basic starter material. Used extensively in electronics and liquid transportation blocks. -item.metaglass.description = A super-tough glass compound. Extensively used for liquid distribution and storage. -item.graphite.description = Mineralized carbon, used for ammunition and electrical insulation. -item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux. -item.coal.description = Fossilized plant matter, formed long before the seeding event. Used extensively for fuel and resource production. -item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft. -item.thorium.description = A dense, radioactive metal used as structural support and nuclear fuel. -item.scrap.description = Leftover remnants of old structures and units. Contains trace amounts of many different metals. -item.silicon.description = An extremely useful semiconductor. Applications in solar panels, complex electronics and homing turret ammunition. -item.plastanium.description = A light, ductile material used in advanced aircraft and fragmentation ammunition. -item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology. -item.surge-alloy.description = An advanced alloy with unique electrical properties. -item.spore-pod.description = A pod of synthetic spores, synthesized from atmospheric concentrations for industrial purposes. Used for conversion into oil, explosives and fuel. -item.blast-compound.description = An unstable compound used in bombs and explosives. Synthesized from spore pods and other volatile substances. Use as fuel is not advised. -item.pyratite.description = An extremely flammable substance used in incendiary weapons. -liquid.water.description = The most useful liquid. Commonly used for cooling machines and waste processing. -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 = A liquid used in advanced material production. Can be converted into coal as fuel, or sprayed and set on fire as a weapon. -liquid.cryofluid.description = An inert, non-corrosive liquid created from water and titanium. Has extremely high heat capacity. Extensively used as coolant. -mech.alpha-mech.description = The standard control mech. Based on a Dagger unit, with upgraded armor and building capabilities. Has more damage output than a Dart ship. +item.copper.description = En basit materyal. Her türlü blokda kullanılır. +item.lead.description = Basit bir materyal. Elektronikte ve sıvı taşımada kullanılır. +item.metaglass.description = Süper sert camdan bir bileşim. Sıvı dağıtım ve depolama için yaygın olarak kullanılır. +item.graphite.description = Mineralize karbon. Mermi ve elektrik yalıtımında kullanılır. +item.sand.description = Hem alaşımda hem de akı halinde eritme işlemlerinde kullanılan bir malzeme. +item.coal.description = Fosilleşmiş bitki maddesi, tohumlama olayından çok önce oluşmuş. Yaygın olarak yakıt ve kaynak üretimi için kullanılır. +item.titanium.description = Yaygın olarak sıvı taşımacılığında, matkaplarda ve uçaklarda kullanılan nadir bir süper-hafif metal. +item.thorium.description = Yapısal destek ve nükleer yakıt olarak kullanılan yoğun, radyoaktif bir metal. +item.scrap.description = Eski yapılar ve birimlerin kalıntıları. Birçok farklı metalden eser miktarları içerir. +item.silicon.description = Kullanışlı bir yarı iletken. Güneş panellerinde, elektronikler ve hedef taret cephanesi için kullanılır. +item.plastanium.description = Gelişmiş uçak ve parçalama için kullanılan hafif, sünek bir malzeme. +item.phase-fabric.description = Gelişmiş elektronik ve kendi kendini tamir eden teknolojide kullanılan ağırlıksız bir madde. +item.surge-alloy.description = Elektriksel özelliklere sahip gelişmiş bir alaşım. +item.spore-pod.description = Endüstriyel amaçlar için atmosferik konsantrasyonlardan sentezlenen sentetik sporların bir kapsülü. Yağ, patlayıcı ve yakıt haline dönüştürmek için kullanılır. +item.blast-compound.description = Bomba ve patlayıcılarda kullanılan dengesiz bir bileşim. Spor kapsülleri ve diğer uçucu maddelerden sentezlenir. Yakıt olarak tavsiye edilmez. +item.pyratite.description = Yakıcı silahlarda kullanılan son derece yanıcı bir madde. +liquid.water.description = En kullanışlı sıvı. Makineleri soğutmak ve atık işlenmesi için kullanılır. +liquid.slag.description = Çeşitli tipte erimiş metallerin birbirine karışımı. Kurucu minerallerine ayrılabilir veya düşmanlara silah olarak püskürtülebilir. +liquid.oil.description = İleri seviye malzeme üretiminde kullanılan bir sıvıdır. Yakıt olarak kömür haline getirilebilir veya bir silah olarak püskürtülerek ateşe verilebilir. +liquid.cryofluid.description = Su ve titanyumdan oluşturulan aşındırıcı olmayan bir sıvı. Son derece yüksek ısı kapasitesine sahiptir. Soğutucu olarak yaygın olarak kullanılır. +mech.alpha-mech.description = Standart kontrol mekaniği. Yükseltilmiş zırh ve inşaat kabiliyetine sahip bir Dagger ünitesine dayanır. Dart gemisinden daha fazla hasara sahiptir. 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.description = The support mech. Heals allied blocks by shooting at them. Can heal allies in a radius with its repair ability. mech.omega-mech.description = A bulky and well-armored mech, made for front-line assaults. Its armor can block up to 90% of incoming damage. @@ -965,44 +1025,44 @@ unit.eruptor.description = A heavy mech designed to take down structures. Fires unit.wraith.description = A fast, hit-and-run interceptor unit. Targets power generators. unit.ghoul.description = A heavy carpet bomber. Rips through enemy structures, targeting critical infrastructure. unit.revenant.description = A heavy, hovering missile array. -block.message.description = Stores a message. Used for communication between allies. -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. -block.silicon-smelter.description = Reduces sand with pure coal. Produces silicon. -block.kiln.description = Smelts sand and lead into the compound known as metaglass. Requires small amounts of power to run. -block.plastanium-compressor.description = Produces plastanium from oil and titanium. -block.phase-weaver.description = Synthesizes phase fabric from radioactive thorium and sand. Requires massive amounts of power to function. -block.alloy-smelter.description = Combines titanium, lead, silicon and copper to produce surge alloy. -block.cryofluidmixer.description = Mixes water and fine titanium powder into cryofluid. Essential for thorium reactor usage. -block.blast-mixer.description = Crushes and mixes clusters of spores with pyratite to produce 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 wave turrets. -block.separator.description = Separates slag into its mineral components. Outputs the cooled result. -block.spore-press.description = Compresses spore pods under extreme pressure to synthesize oil. -block.pulverizer.description = Crushes scrap into fine sand. -block.coal-centrifuge.description = Solidifes oil into chunks of coal. -block.incinerator.description = Vaporizes any excess item or liquid it receives. -block.power-void.description = Voids all power inputted into it. Sandbox only. -block.power-source.description = Infinitely outputs power. Sandbox only. -block.item-source.description = Infinitely outputs items. Sandbox only. -block.item-void.description = Destroys any items. Sandbox only. -block.liquid-source.description = Infinitely outputs liquids. Sandbox only. -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.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.thorium-wall.description = A strong defensive block.\nDecent protection from enemies. -block.thorium-wall-large.description = A strong defensive block.\nDecent protection from enemies.\nSpans multiple tiles. -block.phase-wall.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact. -block.phase-wall-large.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact.\nSpans multiple tiles. -block.surge-wall.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly. -block.surge-wall-large.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly.\nSpans multiple tiles. -block.door.description = A small door. Can be opened or closed by tapping. -block.door-large.description = A large door. Can be opened and closed by tapping.\nSpans multiple tiles. -block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. -block.mend-projector.description = An upgraded version of the Mender. Repairs blocks in its vicinity.\nOptionally uses phase fabric to boost range and efficiency. -block.overdrive-projector.description = Increases the speed of nearby buildings.\nOptionally uses phase fabric to boost range and efficiency. -block.force-projector.description = Creates a hexagonal force field around itself, protecting buildings and units inside from damage.\nOverheats if too much damage is sustained. Optionally uses coolant to prevent overheating. Phase fabric can be used to increase shield size. +block.message.description = Bir mesajı saklar. Müttefikler arasındaki haberleşmede kullanılır. +block.graphite-press.description = Kömür parçalarını saf grafit tabakalarına sıkıştırır. +block.multi-press.description = Grafit baskı makinesinin yükseltilmiş versiyonu. Kömürün hızlı ve verimli bir şekilde işlenmesi için su ve enerji kullanır. +block.silicon-smelter.description = Saf kömürle kumu azaltır. Silikon üretir. +block.kiln.description = Kum ve kurşunu eritir ve metaglass olarak bilinen bileşiği oluşturur. Çalıştırmak için az miktarda enerji gerektirir. +block.plastanium-compressor.description = Petrol ve titanyumdan plastanyum üretir. +block.phase-weaver.description = Faz kumaşını radyoaktif toryum ve kumdan sentezler. İşlev için büyük miktarda güç gerektirir. +block.alloy-smelter.description = Dalgalanma alaşımı üretmek için titanyum, kurşun, silikon ve bakırı birleştirir. +block.cryofluidmixer.description = Su ve titanyum tozunu cryofluid'e karıştırır. Toryum reaktörü kullanımı için önemlidir. +block.blast-mixer.description = Patlayıcı bileşiği üretmek için spor kümelerini pirratit ile ezer ve karıştırır. +block.pyratite-mixer.description = Kömür, kurşun ve kumu ile çok yanıcı olan pirratite üretir. +block.melter.description = Silah olarak kullanım veya daha çok işleme için hurdayı cürufta eritir. +block.separator.description = Cürufu mineral bileşenlerine ayırır. Soğutulmuş sonucu çıkarır. +block.spore-press.description = Yağı çıkartmak için aşırı basınç altında spor tüplerini sıkıştırır. +block.pulverizer.description = Hurdaları ince kuma ezer. +block.coal-centrifuge.description = Yağı kömür parçalarına katılaştırır. +block.incinerator.description = Alınan fazlalıkları veya sıvıları buharlaştırır (yok eder). +block.power-void.description = İçine konan enerjiyi yok eder. Sadece Yaratıcı Modda. +block.power-source.description = Sonsuz enerji verir. Sadece Yaratıcı Modda. +block.item-source.description = Seçilen eşyadan sonsuz verir. Sadece Yaratıcı Modda. +block.item-void.description = Verilen eşyaları yok eder. Sadece Yaratıcı Modda. +block.liquid-source.description = Seçilen sıvıyı sonsuz verir. Sadece Yaratıcı Modda. +block.copper-wall.description = Ucuz bir savunma bloğu.\nİlk birkaç dalgada merkezi ve silahları korumak için kullanışlıdır. +block.copper-wall-large.description = Ucuz bir savunma bloğu.\nİlk birkaç dalgada merkezi ve silahları korumak için kullanışlıdır.\nBirçok blok alan kaplar. +block.titanium-wall.description = Orta derecede güçlü savunma bloğu.\nDüşmanlardan orta derecede koruma sağlar. +block.titanium-wall-large.description = Orta derecede güçlü savunma bloğu.\nDüşmanlardan orta derecede koruma sağlar.\nBirçok blok alan kaplar. +block.thorium-wall.description = Güçlü bir savunma bloğu.\nDüşmanlardan iyi korunma sağlar. +block.thorium-wall-large.description = Güçlü bir savunma bloğu.\nDüşmanlardan iyi korunma sağlar.\nBirçok blok alan kaplar. +block.phase-wall.description = Özel faz bazlı yansıtıcı bileşik ile kaplanmış bir duvar. Çoğu mermi çarpma anında saptırır. +block.phase-wall-large.description = Özel faz bazlı yansıtıcı bileşik ile kaplanmış bir duvar. Çoğu mermi çarpma anında saptırır.\nBirçok blok alan kaplar. +block.surge-wall.description = Son derece dayanıklı bir savunma bloğu.\nMermi temasıyla yükü yükseltir ve rastgele serbest bırakır. +block.surge-wall-large.description = Son derece dayanıklı bir savunma bloğu.\nMermi temasıyla yükü yükseltir ve rastgele serbest bırakır.\nBirçok blok alan kaplar. +block.door.description = Küçük bir kapı. Dokunarak açılabilir veya kapatılabilir. +block.door-large.description = Büyük bir kapı. Dokunarak açılabilir veya kapatılabilir.\nBirçok blok alan kaplar. +block.mender.description = Çevresindeki blokları periyodik olarak tamir eder. Savunmaları dalgalar arasında tamir eder.\nİsteğe bağlı olarak menzili ve verimi arttırmak için silikon kullanın. +block.mend-projector.description = Mender'ın yükseltilmiş bir versiyonu. Çevresindeki blokları onarır. İsteğe bağlı olarak menzili ve verimliliği artırmak için faz kumaşı kullanılır. +block.overdrive-projector.description = Yakındaki binaların hızını artırır.\nİsteğe bağlı olarak bir dizi ve verimliliğini artırmak için faz kumaş kullanır. +block.force-projector.description = Kendi etrafında altıgen güç alanı oluşturur. Çok fazla zarar gördüğünde aşırı ısınır ve kapanır. İsteğe bağlı olarak aşırı ısınmasını önlemek için soğutma sıvısı kullanılabilir. Faz kumaş koruyucu boyutunu artırmak için kullanılabilir. block.shock-mine.description = Damages enemies stepping on the mine. Nearly invisible to the enemy. block.conveyor.description = Basic item transport block. Moves items forward and automatically deposits them into blocks. Rotatable. block.titanium-conveyor.description = Advanced item transport block. Moves items faster than standard conveyors. @@ -1010,6 +1070,7 @@ block.junction.description = Acts as a bridge for two crossing conveyor belts. U block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. 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.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[] block.distributor.description = An advanced router. Splits items to up to 7 other directions equally. block.overflow-gate.description = A combination splitter and router. Only outputs to the left and right if the front path is blocked. @@ -1034,7 +1095,7 @@ block.thermal-generator.description = Generates power when placed in hot locatio block.turbine-generator.description = An advanced combustion generator. More efficient, but requires additional water for generating steam. block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite. block.rtg-generator.description = A simple, reliable generator. Uses the heat of decaying radioactive compounds to produce energy at a slow rate. -block.solar-panel.description = Provides a small amount of power from the sun. +block.solar-panel.description = Güneşten küçük bir enerji üretir. block.solar-panel-large.description = A significantly more efficient version of the standard solar panel. block.thorium-reactor.description = Generates significant amounts of power from 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.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. diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index aafae6c08f..7f623be311 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -16,11 +16,28 @@ screenshot.invalid = Мапа занадто велика, тому, мабут gameover = Гра завершена gameover.pvp = [accent] {0}[] команда перемогла! highscore = [YELLOW]Новий рекорд! +copied = Copied. load.sound = Звуки load.map = Мапи load.image = Зображення load.content = Зміст load.system = Система +load.mod = Модифікації +schematic = Schematic +schematic.add = Save Schematic... +schematics = Schematics +schematic.import = Import Schematic... +schematic.exportfile = Export File +schematic.importfile = Import File +schematic.browseworkshop = Browse Workshop +schematic.copy = Copy to Clipboard +schematic.copy.import = Import from Clipboard +schematic.shareworkshop = Share on Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic +schematic.saved = Schematic saved. +schematic.delete.confirm = This schematic will be utterly eradicated. +schematic.rename = Rename Schematic +schematic.info = {0}x{1}, {2} blocks stat.wave = Хвиль відбито:[accent] {0} stat.enemiesDestroyed = Ворогів знищено:[accent] {0} stat.built = Будівель збудувано:[accent] {0} @@ -29,6 +46,7 @@ stat.deconstructed = Будівель декоструйовано[accent] {0} stat.delivered = Ресурсів запущено: stat.rank = Фінальний рахунок: [accent]{0} launcheditems = [accent]Запущені предмети +launchinfo = [unlaunched][[LAUNCH] ваше ядро для отримання предметів позначено синім кольором. map.delete = Ви впевнені, що хочете видалити мапу «[accent]{0}[]»? level.highscore = Рекорд: [accent]{0} level.select = Вибір мапи @@ -40,11 +58,11 @@ database = База даних ядра savegame = Зберегти гру loadgame = Завантажити гру joingame = Мережева гра -addplayers = Додати/Видалити гравців customgame = Користувацька гра newgame = Нова гра none = <нічого> minimap = Мінімапа +position = Position close = Закрити website = Веб-сайт quit = Вихід @@ -60,6 +78,25 @@ uploadingcontent = Вивантаження вмісту uploadingpreviewfile = Вивантаження файлу передперегляду committingchanges = Здійснення змін done = Зроблено +mods.alphainfo = Майте на увазі, що модифікації знаходяться в альфі, і [scarlet]може бути дуже глючними[].\nПовідомте про будь-які проблеми, які ви знайдете до Mindustry Github або Discord. +mods.alpha = [scarlet](Альфа) +mods = Модифікації +mods.none = [LIGHT_GRAY]Модифікацій не знайдено! +mods.guide = Modding Guide +mods.report = Report Bug +mod.enabled = [lightgray]Увімкнено +mod.disabled = [scarlet]Вимкнено +mod.disable = Disable +mod.enable = Enable +mod.requiresrestart = А тепер гра закриється, щоб застосувати зміни модифікацій. +mod.reloadrequired = [scarlet]Reload Required +mod.import = Імпортувати модифікацію +mod.import.github = Import Github Mod +mod.remove.confirm = Цю модифікацію буде видалено. +mod.author = [LIGHT_GRAY]Автор:[] {0} +mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} +mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. +mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. about.button = Про гру name = Ім’я: noname = Спочатку придумайте[accent] собі ім’я[]. @@ -70,7 +107,7 @@ techtree = Дерево технологій research.list = [lightgray]Дослідження: research = Дослідження researched = [lightgray]{0} досліджено. -players = Гравців на сервері: {0} +players = Гравців: {0} players.single = {0} гравець на сервері server.closing = [accent]Закриття сервера… server.kicked.kick = Ви були вигнані з сервера! @@ -140,7 +177,6 @@ server.port = Порт: server.addressinuse = Ця адреса вже використовується! server.invalidport = Недійсний номер порту! server.error = [crimson]Помилка створення сервера: [accent]{0} -save.old = Це збереження для старої версії гри, і його більше не можна використовувати.\n\n [lightgray]Зворотна сумісність буде реалізована у фінальній версії 4.0. save.new = Нове збереження save.overwrite = Ви впевнені, що хочете перезаписати цей слот для збереження? overwrite = Перезаписати @@ -192,7 +228,12 @@ classic.export.text = Класичне (версія 3.5 збірка 40) збе quit.confirm = Ви впевнені, що хочете вийти? quit.confirm.tutorial = Ви впевнені, що хочете вийти з навчання? loading = [accent]Завантаження… +reloading = [accent]Reloading Mods... saving = [accent]Збереження… +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Хвиля {0} wave.waiting = Хвиля через {0} wave.waveInProgress = [lightgray]Хвиля триває @@ -211,16 +252,17 @@ map.nospawn = Ця мапа не має жодного ядра для появ map.nospawn.pvp = У цієї мапи немає ворожих ядер, в яких гравець може з’явитися! Додайте [SCARLET]не помаранчеве[] ядро до цієї мапи в редакторі. map.nospawn.attack = У цієї мапи немає ворожих ядер, в яких гравець може з’явитися! Додайте [SCARLET]червоне[] ядро до цієї мапи в редакторі. map.invalid = Помилка завантаження мапи: пошкоджений або невірний файл мапи. -map.publish.error = Помилка при опублікуванні мапи: {0} -map.update = Оновити мапу -map.load.error = Помилка отримання даних з Майстерню: {0} -map.missing = Цю карту було видалено або переміщено.\n[lightgray]Перелік у Майстерні автоматично від’єднано від мапи. -map.menu = Виберіть, що ви хочете зробити з цією мапою. -map.changelog = Список змік (необов’язково): +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} map.publish.confirm = Ви дійсно хочете опублікувати цю мапу?\n\n[lightgray]Переконайтеся, що спершу ви згодні з Ліцензійною угодою Steam, або ваші мапи не з’являться! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Ліцензійна угода -map.publish = Мапа опублікована. -map.publishing = [accent]Публікації мапи... +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = Пензлик editor.openin = Відкрити в редакторі editor.oregen = Генерація руд @@ -271,7 +313,7 @@ editor.apply = Застосувати editor.generate = Згенерувати editor.resize = Змінити\nрозмір editor.loadmap = Завантажити мапу -editor.savemap = Зберегти мапи +editor.savemap = Зберегти мапу editor.saved = Збережено! editor.save.noname = Ваша мапа не має імені! Встановіть його в «Інформація про мапу». editor.save.overwrite = Ваша мапа перезаписує вбудовану мапу! Виберіть інше ім’я в «Інформація про мапу». @@ -350,7 +392,6 @@ campaign = Кампанія load = Завантажити save = Зберегти fps = FPS: {0} -tps = TPS: {0} ping = Пінг: {0} мс language.restart = Будь ласка, перезапустіть свою гру, щоб налаштування мови набули чинності. settings = Налаштування @@ -358,12 +399,13 @@ tutorial = Навчання tutorial.retake = Відкрити навчання editor = Редактор mapeditor = Редактор мап -donate = Пожертву\nвання abandon = Покинути abandon.text = Ця зона і всі її ресурси будуть втрачені. locked = Заблоковано complete = [lightgray]Досягнута: -zone.requirement = Хвиля {0} у зоні {1} +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} resume = Відновити зону:\n[lightgray]{0} bestwave = [lightgray]Найкраща хвиля: {0} launch = < ЗАПУСК > @@ -374,11 +416,13 @@ launch.confirm = Це видалить всі ресурси у Вашому я launch.skip.confirm = Якщо Ви пропустите зараз, Ви не зможете не запускати до більш пізніх хвиль. uncover = Розкрити configure = Вивантажити конфігурацію +bannedblocks = Banned Blocks +addall = Add All configure.locked = [lightgray]Можливість розблокувати вивантаження ресурсів буде доступна на {0}-тій хвилі. configure.invalid = Кількість повинна бути числом між 0 та {0}. zone.unlocked = Зона «[lightgray]{0}» тепер розблокована. zone.requirement.complete = Ви досягли {0}-тої хвилі,\nВимоги до зони «{1}» виконані. -zone.config.complete = Ви досягли {0}-тої хвилі.\nМожливість вивантаження ресурсів тепер розблокована. +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Виявлені ресурси: zone.objective = [lightgray]Мета: [accent]{0} zone.objective.survival = Вижити @@ -434,15 +478,14 @@ settings.graphics = Графіка settings.cleardata = Очистити дані… settings.clear.confirm = Ви впевнені, що хочете очистити ці дані?\nЦя дія не може бути скасовано! settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить всі дані, включаючи збереження, мапи, розблоковане та налаштування керування.\nПісля того, як ви натиснете ОК, гра видалить усі дані та автоматично закриється. -settings.clearunlocks = Очистити розблоковане -settings.clearall = Очистити все paused = Пауза +clear = Clear +banned = [scarlet]Banned yes = Так no = Ні info.title = Інформація error.title = [crimson]Виникла помилка error.crashtitle = Виникла помилка -attackpvponly = [scarlet]Наявне тільки у режимах атаки/PvP blocks.input = Вхід blocks.output = Вихід blocks.booster = Прискорювач @@ -524,6 +567,7 @@ category.optional = Додаткові поліпшення setting.landscape.name = Тільки альбомний(гозинтальний) режим setting.shadows.name = Тіні setting.linear.name = Лінійна фільтрація +setting.hints.name = Hints setting.animatedwater.name = Анімована вода setting.animatedshields.name = Анімовані щити setting.antialias.name = Згладжування[lightgray] (потребує перезапуску)[] @@ -553,6 +597,7 @@ setting.fps.name = Показувати FPS setting.vsync.name = Вертикальна синхронізація setting.pixelate.name = Пікселізація[lightgray] (вимикає анімації) setting.minimap.name = Показувати міні-мапу +setting.position.name = Show Player Position setting.musicvol.name = Гучність музики setting.ambientvol.name = Звуки навколишнього середовища setting.mutemusic.name = Заглушити музику @@ -565,6 +610,7 @@ setting.chatopacity.name = Непрозорість чату setting.lasersopacity.name = Power Laser Opacity setting.playerchat.name = Відображати хмару чата над гравцями public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[lightgray]Це можна змінити у Налаштування->Гра->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. uiscale.reset = Масштаб користувальницького інтерфейсу було змінено.\nНатисніть «ОК» для підтверждення цього масшатабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] … uiscale.cancel = Скасувати & Вийти setting.bloom.name = Світіння @@ -576,13 +622,16 @@ category.multiplayer.name = Мережева гра command.attack = Атакувати command.rally = Точка збору command.retreat = Відступити -keybind.gridMode.name = Вибрати блок -keybind.gridModeShift.name = Вибрати категорію +keybind.clear_building.name = Clear Building keybind.press = Натисніть клавішу… keybind.press.axis = Натисніть клавішу… keybind.screenshot.name = Зняток мапи keybind.move_x.name = Рух по осі x keybind.move_y.name = Рух по осі y +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y keybind.fullscreen.name = Повноекранний keybind.select.name = Вибір/Постріл keybind.diagonal_placement.name = Діагональне розміщення @@ -594,12 +643,14 @@ keybind.zoom_hold.name = Керування масштабом keybind.zoom.name = Приблизити keybind.menu.name = Меню keybind.pause.name = Пауза +keybind.pause_building.name = Pause/Resume Building keybind.minimap.name = Мінімапа keybind.dash.name = Прискоритися/Літати keybind.chat.name = Чат keybind.player_list.name = Список гравців keybind.console.name = Консоль keybind.rotate.name = Обертати +keybind.rotateplaced.name = Обертати існуюче (утримуйте) keybind.toggle_menus.name = Меню перемикання keybind.chat_history_prev.name = Попередня історія чату keybind.chat_history_next.name = Наступна історія чату @@ -793,11 +844,12 @@ block.lancer.name = Списоносець block.conveyor.name = Конвеєр block.titanium-conveyor.name = Титановий конвеєр block.armored-conveyor.name = Броньований конвеєр -block.armored-conveyor.description = Переміщує предмети з тією ж швидкістю, як і титанові конвеєри, але має більше міцності. Не приймає введення з боків ні з чого, крім інших конвеєрів. +block.armored-conveyor.description = Переміщує предмети з тією ж швидкістю, як і титанові конвеєри, але має більше міцності. Не приймає введення з боків ні з чого, крім інших конвеєрних стрічок. block.junction.name = Перехрестя block.router.name = Маршрутизатор block.distributor.name = Розподілювач block.sorter.name = Сортувальник +block.inverted-sorter.name = Inverted Sorter block.message.name = Повідомлення block.overflow-gate.name = Надмірний затвор block.silicon-smelter.name = Кремнієвий плавильний завод @@ -915,15 +967,15 @@ unit.eradicator.name = Викорінювач unit.lich.name = Лич unit.reaper.name = Жнець tutorial.next = [lightgray]<Натисніть для продовження> -tutorial.intro = Ви розпочали[scarlet] навчання по Mindustry.[]\nРозпочність з[accent] видобування міді[]. Використовуйте [[WASD] для руху, а потім натисність на мідну жилу біля вашого ядра, щоб зробити це.\n\n[accent]{0}/{1} міді +tutorial.intro = Ви розпочали[scarlet] навчання по Mindustry.[]\nРозпочність з[accent] видобування міді[]. Використовуйте [[WASD] для руху.\n[accent] Утримуйте [[Ctrl] під час прокрутки миші[] для приближення і віддалення. Наблизьтесь, а потім натисність на мідну жилу біля вашого ядра, щоб зробити це.\n\n[accent]{0}/{1} міді tutorial.drill = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисніть на вкладку свердла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням.\n[accent]Натисніть ПКМ[], щоб зупинити будування. tutorial.drill.mobile = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисність на вкладку сведла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням, потім натисність на [accent] галочку[] нижче, щоб підтвердити розміщення to confirm your selection.\nPress the[accent] X button[] to cancel placement. tutorial.blockinfo = Кожен блок має різні характеристики. Кожний бур може видобувати тільки певні руди.\nЩоб переглянути інформацію та характеристики блока,[accent] натисність на кнопку «?», коли Ви вибрали блок у меню будування.[]\n\n[accent]Перегляньте характеристику Механічного бура прямо зараз.[] tutorial.conveyor = [accent]Конвеєри[] використовуються для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent]Утримуйте миш, щоб розмістити у лінію.[]\nУтримуйте[accent] CTRL[] під час вибору лінії для розміщення по діагоналі.\n\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено -tutorial.conveyor.mobile = [accent]Конвеєри[] використовується для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent] Розмістить у лінію, утримуючи палець кілька секунд[] і тягніть у напрямку, який Ви вибрали.\n\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено +tutorial.conveyor.mobile = [accent]Конвеєри[] використовується для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent] Розмістить у лінію, утримуючи палець кілька секунд[] і тягніть у напрямку, який Ви вибрали.\nВикористовуйте колесо прокрутки, щоб обертати блоки перед їх розміщенням\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено tutorial.turret = Оборонні споруди повинні бути побудовані для відбиття[lightgray] ворогів[].\nПобудуйте[accent] башточку «Подвійна»[] біля вашої бази. tutorial.drillturret = «Подвійна» потребує [accent] мідні боєприпаси []для стрільби.\nРозмістіть бур біля башточки\nПроведіть конвеєри до башточки, щоб заповнити її боєприпасами.\n\n[accent]Доставлено боєприпасів: 0/1 -tutorial.pause = Під час бою ви можете[accent] поставити на павзу гру.[]\nВи можете зробити чергу на будівництво під час паузи.\n\n[accent]Натисність пробіл для павзи. +tutorial.pause = Під час бою ви можете[accent] поставити на павзу гру.[]\nВи можете зробити чергу на будівництво під час паузи.\n\n[accent]Натисність пробіл для павзи.tutorial.launch tutorial.pause.mobile = Під час бою ви можете[accent] поставити на павзу гру.[]\nВи можете зробити чергу на будівництво під час паузи.\n\n[accent]атисніть кнопку зліва вгорі для павзи. tutorial.unpause = Тепер натисність пробіл, щоб зняти павзу. tutorial.unpause.mobile = Тепер натисність туди ще раз, щоб зняти павзу. @@ -933,7 +985,7 @@ tutorial.withdraw = У деяких ситуаціях потрібно брат tutorial.deposit = Покладіть предмети в блоки, перетягнувши з вашого корабля в потрібний блок.\n\n[accent]Покладіть мідь назад у ядро.[] tutorial.waves = [lightgray] Ворог[] з’явився.\n\nЗахистіть ядро від двух хвиль.[accent] Натисніть[], щоб стріляти.\nСтворіть більше башточок і бурів. Добудьте більше міді. tutorial.waves.mobile = [lightgray] Ворог[] з’явився.\n\nЗахистіть ядро від двух хвиль. Ваш корабель буде автоматично атакувати ворогів.\nСтворіть більше башточок і бурів. Добудьте більше міді. -tutorial.launch = Як тільки ви досягнете певної хвилі, Ви зможете[accent] запустити ядро[], залишивши захисні сили позаду та [accent]отримати всі ресурси у вашому ядрі.[]\nЦі ресурси можуть бути використані для дослідження нових технологій.\n\n[accent]Натисніть кнопку запуску. +tutorial.launch = Як тільки ви досягнете певної хвилі, Ви зможете[accent] запустити ядро[], залишивши захисні сили позаду та [accent]отримати всі ресурси у вашому ядрі.[]\nЦі отримані ресурси можуть бути використані для дослідження нових технологій.\n\n[accent]Натисніть кнопку запуску. item.copper.description = Найбільш базовий будівельний матеріал. Широко використовується у всіх типах блоків. item.lead.description = Основний стартовий матеріал. Широко застосовується в електроніці та транспортуванні рідин. item.metaglass.description = Супер жорсткий склад скла. Широко застосовується для розподілу та зберігання рідини. @@ -1018,6 +1070,7 @@ block.junction.description = Діє як міст для двох перехре block.bridge-conveyor.description = Покращений блок транспорту елементів. Дозволяє транспортувати предмети до 3-ох плиток з будь-якої місцевості чи будівлі. block.phase-conveyor.description = Покращений блок транспорту елементів. Використовує енергію для телепортування елементів на підключений фазовий конвеєр через кілька плиток. block.sorter.description = Сортує предмети. Якщо елемент відповідає вибраному, його можна передати. В іншому випадку елемент виводиться зліва та справа. +block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.router.description = Приймає елементи з одного напрямку та виводить їх до трьох інших напрямків порівну. Корисно для поділу матеріалів від одного джерела до кількох цілей.\n\n[scarlet]Ніколи не використовуйте поруч із входами до механізмів, оскільки вони будуть забиті вихідними предметами.[] block.distributor.description = Розширений маршрутизатор. Розділяє предмети до 7 інших напрямків порівну. block.overflow-gate.description = Комбінований розгалужувач і маршрутизатор. Виходи лише вліво і вправо, якщо передній шлях заблокований. diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index f8d5173ecf..ca0b27957b 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -16,11 +16,28 @@ screenshot.invalid = 地图太大,可能没有足够的内存用于截图。 gameover = 你的核心被摧毁了! gameover.pvp = [accent] {0}[]队获胜! highscore = [accent]新纪录! +copied = 已复制。 load.sound = 音乐加载中 load.map = 地图加载中 load.image = 图片加载中 load.content = 内容加载中 load.system = 系统加载中 +load.mod = 模组加载中 +schematic = 示意图 +schematic.add = 保存示意图中…… +schematics = 示意图 +schematic.import = 导出示意图中…… +schematic.exportfile = 导入文件 +schematic.importfile = 导出文件 +schematic.browseworkshop = 流览创意工坊 +schematic.copy = 复制到剪贴板 +schematic.copy.import = 从剪贴板导入 +schematic.shareworkshop = 在创意工坊上分享 +schematic.flip = [accent][[{0}][]/[accent][[{1}][]:翻转示意图 +schematic.saved = 示意图已保存。 +schematic.delete.confirm = 这个示意图将被清除。 +schematic.rename = 重命名示意图 +schematic.info = {0}x{1}, {2} 方块 stat.wave = 战胜的波数:[accent]{0} stat.enemiesDestroyed = 消灭的敌人:[accent]{0} stat.built = 建造的建筑:[accent]{0} @@ -29,6 +46,7 @@ stat.deconstructed = 拆除的建筑:[accent]{0} stat.delivered = 发射的资源: stat.rank = 最终等级:[accent]{0} launcheditems = [accent]发射的资源 +launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue. map.delete = 确定要删除 "[accent]{0}[]" 地图吗? level.highscore = 最高分:[accent]{0} level.select = 选择关卡 @@ -40,11 +58,11 @@ database = 核心数据库 savegame = 保存游戏 loadgame = 载入游戏 joingame = 加入游戏 -addplayers = 添加/删除玩家 customgame = 自定义游戏 newgame = 新游戏 none = <无> minimap = 小地图 +position = 位置 close = 关闭 website = 官网 quit = 退出 @@ -60,6 +78,25 @@ uploadingcontent = 正在上传内容 uploadingpreviewfile = 正在上传预览文件 committingchanges = 提交更改 done = 已完成 +mods.alphainfo = 请注意在测试版本中的模组[scarlet]可能有缺陷[]。\n在 Mindustry Github 或 Discord上报告你发现的问题。 +mods.alpha = [accent](测试版) +mods = 模组 +mods.none = [LIGHT_GRAY]无模组! +mods.guide = 模组教程 +mods.report = 报告 Bug +mod.enabled = [lightgray]已启用 +mod.disabled = [scarlet]已禁用 +mod.disable = 禁用 +mod.enable = 启用 +mod.requiresrestart = 需要重启使模组生效。 +mod.reloadrequired = [scarlet]需要重启 +mod.import = 导入模组 +mod.import.github = 导入 Github 模组 +mod.remove.confirm = 此模组将被删除。 +mod.author = [LIGHT_GRAY]作者:[] {0} +mod.missing = 此存档包含更新后的模组或不再使用的模组。存档可能会损坏。确定要加载它吗?\n[lightgray]模组:\n{0} +mod.preview.missing = 在创意工坊中发布此模组之前,必须添加图像预览。\n请将名为[accent] preview.png[] 的图像放入模组文件夹,然后重试。 +mod.folder.missing = 只有文件夹形式的模组才能在创意工坊上发布。\n若要将任何模组转换为文件夹,只需将其文件解压缩到文件夹中并删除旧压缩包,然后重新启动游戏或重新加载模组。 about.button = 关于 name = 名字: noname = 先取一个[accent]玩家名[]。 @@ -140,7 +177,6 @@ server.port = 端口: server.addressinuse = 地址已经在使用中! server.invalidport = 无效的端口号! server.error = [crimson]创建服务器错误:[accent]{0} -save.old = 这个存档属于旧版本游戏,不再被使用。\n\n[LIGHT_GRAY]存档向下兼容将在完整的4.0版本中实现。 save.new = 新存档 save.overwrite = 你确定你要覆盖这个存档位吗? overwrite = 覆盖 @@ -174,6 +210,7 @@ warning = 警告! confirm = 确认 delete = 删除 view.workshop = 浏览创意工坊 +workshop.listing = 编辑创意工坊目录 ok = 确定 open = 打开 customize = 自定义 @@ -183,7 +220,7 @@ copylink = 复制链接 back = 返回 data.export = 导出数据 data.import = 导入数据 -data.exported = 数据已导入。 +data.exported = 数据已导出。 data.invalid = 非有效游戏数据。 data.import.confirm = 导入外部游戏数据将覆盖本地[scarlet]全部[]的游戏数据。\n[accent]此操作无法撤销![]\n\n数据导入后将自动退出游戏。 classic.export = 导出老版本数据 @@ -191,7 +228,12 @@ classic.export.text = [accent]Mindustry []已经有了一个重要的更新。\n quit.confirm = 确定退出? quit.confirm.tutorial = 你确定要跳过教程?\n教程可以通过[accent]设置->游戏->重新游玩教程[]来再次游玩。 loading = [accent]加载中…… +reloading = [accent]重载模组中…… saving = [accent]保存中…… +cancelbuilding = [accent][[{0}][]来清除规划 +selectschematic = [accent][[{0}][]来选择复制 +pausebuilding = [accent][[{0}][]来暂停建造 +resumebuilding = [scarlet][[{0}][]来恢复建造 wave = [accent]波次{0} wave.waiting = [LIGHT_GRAY]下一波将在{0}秒后到来 wave.waveInProgress = [LIGHT_GRAY]波次进行中 @@ -210,11 +252,17 @@ map.nospawn = 这个地图没有核心!请在编辑器中添加一个[ROYAL] map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[ROYAL]敌方[]的核心。 map.nospawn.attack = 这个地图没有敌人的核心!请在编辑中向地图添加一个[SCARLET]敌方[]的核心。 map.invalid = 地图载入错误:地图文件可能已经损坏。 -map.publish.error = 地图上传错误:{0} +workshop.update = 更新地图 +workshop.error = 获取创意工坊详细信息时出错:{0} map.publish.confirm = 确定上传此地图?\n\n[lightgray]确定你同意 Steam 创意工坊的最终用户许可协议,否则你的地图将不会被展示! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): eula = Steam 最终用户许可协议 -map.publish = 地图已上传。 -map.publishing = [accent]地图上传中…… +missing = 地图已被删除或移动。\n[lightgray]链接已在创意工坊中被删除。 +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} editor.brush = 笔刷 editor.openin = 在编辑器中打开 editor.oregen = 矿石的生成 @@ -343,8 +391,7 @@ play = 开始游戏 campaign = 战役模式 load = 载入游戏 save = 保存 -fps = FPS:{0} -tps = TPS:{0} +fps = 帧数:{0} ping = 延迟:{0}毫秒 language.restart = 为了使语言设置生效请重启游戏。 settings = 设置 @@ -352,12 +399,13 @@ tutorial = 教程 tutorial.retake = 重新游玩教程 editor = 编辑器 mapeditor = 地图编辑器 -donate = 打赏 abandon = 放弃 abandon.text = 这个区域及其资源会被敌人重置。 locked = 已锁定 complete = [LIGHT_GRAY]完成: -zone.requirement = 在{1}中达到{0}波 +requirement.wave = Reach Wave {0} in {1} +requirement.core = 在{0}中摧毁敌方核心 +requirement.unlock = 解锁{0} resume = 暂停:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]最高波次:{0} launch = < 发射 > @@ -368,11 +416,13 @@ launch.confirm = 您将发射核心中所有资源。\n此地图将重置。 launch.skip.confirm = 如果你现在跳过,在后来的波次前你将无法发射。 uncover = 解锁 configure = 设定发射资源数量 -configure.locked = [LIGHT_GRAY]到达第 {0} 波\n才能设定发射资源。 +bannedblocks = 禁用方块 +addall = 添加所有 +configure.locked = [LIGHT_GRAY]到达第{0}波\n才能设定发射资源。 configure.invalid = 数量必须是0到{0}之间的数字。 zone.unlocked = [LIGHT_GRAY]{0} 已解锁。 zone.requirement.complete = 已达到第{0}波。\n达到解锁{1}的需求。 -zone.config.complete = 已达到第{0}波。\n允许携带发射的资源进入此地区。 +zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = 地图中的资源: zone.objective = [lightgray]目标:[accent]{0} zone.objective.survival = 生存 @@ -380,7 +430,7 @@ zone.objective.attack = 摧毁敌方核心 add = 添加…… boss.health = BOSS 生命值 connectfail = [crimson]服务器连接失败:[accent]{0} -error.unreachable = 服务器无法访问。 +error.unreachable = 服务器无法访问。\n确定输对地址了吗? error.invalidaddress = 地址无效。 error.timedout = 连接超时!\n确保服务器设置了端口转发,并且地址正确! error.mismatch = 不匹配。\n可能是客户端/服务器版本不匹配。\n请确保客户端和服务器都是最新的版本! @@ -428,15 +478,14 @@ settings.graphics = 图像 settings.cleardata = 清除游戏数据…… settings.clear.confirm = 您确定要清除数据吗?\n这个操作无法撤销! settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据,包括存档、地图、解锁和绑定键。\n按「是」后,游戏将删除所有数据并自动退出。 -settings.clearunlocks = 清除解锁的科技 -settings.clearall = 清除所有数据 -paused = 暂停 +paused = [accent]< 暂停 > +clear = 清除 +banned = [scarlet]已禁止 yes = 是 no = 否 info.title = [accent]详情 error.title = [crimson]发生了一个错误 error.crashtitle = 发生了一个错误 -attackpvponly = [scarlet]只在攻击/PVP模式中可用 blocks.input = 输入 blocks.output = 输出 blocks.booster = 加成物品/液体 @@ -468,8 +517,8 @@ blocks.health = 生命值 blocks.buildtime = 建造时间 blocks.buildcost = 建造花费 blocks.inaccuracy = 误差 -blocks.shots = 每秒发射数 -blocks.reload = 重新装弹 +blocks.shots = 发射数 +blocks.reload = 每秒发射数 blocks.ammo = 子弹 bar.drilltierreq = 需要更好的钻头 bar.drillspeed = 挖掘速度:{0}/s @@ -518,6 +567,7 @@ category.optional = 可选的增强物品 setting.landscape.name = 锁定横屏 setting.shadows.name = 影子 setting.linear.name = 抗锯齿 +setting.hints.name = 提示 setting.animatedwater.name = 流动的水 setting.animatedshields.name = 动态画面 setting.antialias.name = 抗锯齿[LIGHT_GRAY](需要重新启动)[] @@ -547,6 +597,7 @@ setting.fps.name = 显示 FPS setting.vsync.name = 垂直同步 setting.pixelate.name = 像素画面 [LIGHT_GRAY](禁用动画) setting.minimap.name = 显示小地图 +setting.position.name = 显示玩家坐标 setting.musicvol.name = 音乐音量 setting.ambientvol.name = 环境体积 setting.mutemusic.name = 静音 @@ -556,8 +607,10 @@ setting.crashreport.name = 发送匿名崩溃报告 setting.savecreate.name = 自动创建存档 setting.publichost.name = 公共游戏旁观 setting.chatopacity.name = 聊天界面透明度 -setting.lasersopacity.name = Power Laser Opacity +setting.lasersopacity.name = 能量激光不透明度 setting.playerchat.name = 显示游戏内聊天界面 +public.confirm = 确定开启旁观?\n[lightgray]可在设置->游戏->公共游戏旁观中修改。 +public.beta = 请注意,测试版的游戏不能公共旁观。 uiscale.reset = UI缩放比例已经改变。\n按下“确定”来确定缩放比例\n[accent]{0}[]秒后[scarlet]退出并恢复设定。 uiscale.cancel = 取消并退出 setting.bloom.name = 特效 @@ -567,15 +620,18 @@ category.general.name = 普通 category.view.name = 查看 category.multiplayer.name = 多人 command.attack = 攻击 -command.rally = Rally +command.rally = 集合 command.retreat = 撤退 -keybind.gridMode.name = 选择块 -keybind.gridModeShift.name = 选择类别 +keybind.clear_building.name = 清除建筑 keybind.press = 按一下键…… keybind.press.axis = 按一下轴或键…… keybind.screenshot.name = 地图截图 keybind.move_x.name = 水平移动 -keybind.move_y.name = 垂直移动 +keybind.move_y.name = 竖直移动 +keybind.schematic_select.name = 选择区域 +keybind.schematic_menu.name = 示意图目录 +keybind.schematic_flip_x.name = 水平翻转 +keybind.schematic_flip_y.name = 竖直翻转 keybind.fullscreen.name = 切换全屏 keybind.select.name = 选择/射击 keybind.diagonal_placement.name = 自动铺设 @@ -587,27 +643,30 @@ keybind.zoom_hold.name = 保持缩放 keybind.zoom.name = 缩放 keybind.menu.name = 菜单 keybind.pause.name = 暂停 +keybind.pause_building.name = 暂停/继续建造 keybind.minimap.name = 小地图 keybind.dash.name = 冲刺 keybind.chat.name = 聊天 keybind.player_list.name = 玩家列表 keybind.console.name = 控制台 keybind.rotate.name = 旋转 +keybind.rotateplaced.name = 旋转全部(长按) keybind.toggle_menus.name = 切换菜单 keybind.chat_history_prev.name = 前面的聊天记录 keybind.chat_history_next.name = 后面的聊天记录 keybind.chat_scroll.name = 聊天记录滚动 -keybind.drop_unit.name = 掉落单位 +keybind.drop_unit.name = 释放单位 keybind.zoom_minimap.name = 小地图缩放 mode.help.title = 模式说明 mode.survival.name = 生存 -mode.survival.description = 正常的游戏模式,有限的资源和自动波次。 +mode.survival.description = 正常的游戏模式,有限的资源和自动波次。\n[gray]需要敌人出生点。 mode.sandbox.name = 沙盒 mode.sandbox.description = 无限的资源,不会自动生成敌人。 +mode.editor.name = 编辑 mode.pvp.name = PvP -mode.pvp.description = 和本地玩家对战。 +mode.pvp.description = 和本地玩家对战。\n[gray]需要不同队伍的核心。 mode.attack.name = 攻击 -mode.attack.description = 没有波数,但是有摧毁敌人基地的任务。 +mode.attack.description = 没有波数,但是有摧毁敌人基地的任务。\n[gray]需要姨妈红队核心。 mode.custom = 自定义模式 rules.infiniteresources = 无限资源 rules.wavetimer = 波次计时器 @@ -790,7 +849,8 @@ block.junction.name = 连接点 block.router.name = 路由器 block.distributor.name = 分配器 block.sorter.name = 分类器 -block.message.name = 信息 +block.inverted-sorter.name = 反向分类器 +block.message.name = 信使 block.overflow-gate.name = 溢流门 block.silicon-smelter.name = 硅冶炼厂 block.phase-weaver.name = 相织布编织器 @@ -1009,7 +1069,8 @@ block.titanium-conveyor.description = 高级传送带。能比初级传送带更 block.junction.description = 两条交叉传送带的桥梁。适用于两条不同传送带将不同材料运送到不同位置的情况。 block.bridge-conveyor.description = 高级项目传输块。允许在跨越任何地形或建筑物上运输物品,最多跨越3个块。 block.phase-conveyor.description = 高级传送带。使用电力将物品传送到距离几个块的相位传送带上。 -block.sorter.description = 对物品进行分类。如果物品与所选种类,则允许其通过。否则,物品将从左边和右边输出。 +block.sorter.description = 对物品进行分类。如果物品与所选种类相同,则允许其通过。否则,物品将从左边和右边输出。 +block.inverted-sorter.descriptions = 像标准分类器工作,但将选择的物品向两侧输出。 block.router.description = 从一个方向接受物品,并将它们平均输出到最多3个其他方向。用于将材料分成多份。 block.distributor.description = 一个高级路由器,可以将物品向最多7个方向输出。 block.overflow-gate.description = 分离器和路由器的组合,如果前面被挡住,则向从左和右输出。 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index e206bd44a1..809c93126c 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -1,10 +1,11 @@ credits.text = 由[ROYAL]Anuken[]製作 - [SKY]anukendev@gmail.com[] -credits = 致謝名單 +credits = 感謝名單 contributors = 翻譯員和貢獻者 discord = 加入 Mindustry 的 Discord 聊天室! link.discord.description = 官方 Mindustry Discord 聊天室 +link.reddit.description = Mindustry Reddit論壇 link.github.description = 遊戲原始碼 -link.changelog.description = List of update changes +link.changelog.description = 遊戲更新清單 link.dev-builds.description = 開發中版本 link.trello.description = 官方 Trello 功能規劃看板 link.itch.io.description = itch.io 電腦版下載與網頁版 @@ -16,19 +17,37 @@ screenshot.invalid = 地圖太大了,可能沒有足夠的內存用於截圖 gameover = 遊戲結束 gameover.pvp = [accent]{0}[]隊獲勝! highscore = [accent]新的高分紀錄! -load.sound = Sounds -load.map = Maps -load.image = Images -load.content = Content -load.system = System +copied = 已複製。 +load.sound = 音效載入中 +load.map = 地圖載入中 +load.image = 圖片載入中 +load.content = 內容載入中 +load.system = 系統載入中 +load.mod = 模組載入中 +schematic = 計畫圖 +schematic.add = 儲存計畫圖... +schematics = 計畫圖 +schematic.import = 匯入計畫圖... +schematic.exportfile = 匯出檔案 +schematic.importfile = 匯入檔案 +schematic.browseworkshop = 瀏覽工作坊 +schematic.copy = 複製到剪貼簿 +schematic.copy.import = 從剪貼簿匯入 +schematic.shareworkshop = 分享到工作坊 +schematic.flip = [accent][[{0}][]/[accent][[{1}][]:翻轉計畫圖 +schematic.saved = 計畫圖已保存。 +schematic.delete.confirm = 該計畫圖將被完全清除。 +schematic.rename = 重新命名計畫圖 +schematic.info = {0}x{1}, {2}方塊 stat.wave = 打敗的波次:[accent]{0} stat.enemiesDestroyed = 摧毀的敵人:[accent]{0} stat.built = 建設的建築:[accent]{0} stat.destroyed = 摧毀的建築:[accent]{0} -stat.deconstructed = 移除的建築:[accent]{0} -stat.delivered = 發射的資源: +stat.deconstructed = 拆除的建築:[accent]{0} +stat.delivered = 發射的核心資源: stat.rank = 最終排名:[accent]{0} -launcheditems = [accent]發射了的物品 +launcheditems = [accent]已發射的物品 +launchinfo = [unlaunched][發射]的核心以獲得藍字部分的物品。 map.delete = 確認要刪除「[accent]{0}[]」地圖嗎? level.highscore = 最高分:[accent]{0} level.select = 選擇關卡 @@ -40,26 +59,45 @@ database = 核心數據庫 savegame = 儲存遊戲 loadgame = 載入遊戲 joingame = 多人連線 -addplayers = 增加/移除玩家 customgame = 自訂遊戲 newgame = 新遊戲 none = 〈沒有〉 minimap = 小地圖 +position = 位置 close = 關閉 -website = Website +website = 網頁 quit = 退出 -save.quit = Save & Quit +save.quit = 儲存與離開 maps = 地圖 -maps.browse = Browse Maps +maps.browse = 瀏覽地圖 continue = 繼續 maps.none = [LIGHT_GRAY]找不到地圖! -invalid = Invalid -preparingconfig = Preparing Config -preparingcontent = Preparing Content -uploadingcontent = Uploading Content -uploadingpreviewfile = Uploading Preview File -committingchanges = Comitting Changes -done = Done +invalid = 無效 +preparingconfig = 配置準備中 +preparingcontent = 內容準備中 +uploadingcontent = 內容上傳中 +uploadingpreviewfile = 上傳預覽文件 +committingchanges = 提交變更 +done = 完成 +mods.alphainfo = 請記住,mod仍處於Alpha狀態, [scarlet]可能會有很多BUG[].\n向Mindustry Github或Discord報告發現的任何問題。 +mods.alpha = [accent](Alpha) +mods = 模組 +mods.none = [LIGHT_GRAY]沒有找到模組! +mods.guide = 模組指南 +mods.report = 回報錯誤 +mod.enabled = [lightgray]啟用 +mod.disabled = [scarlet]未啟用 +mod.disable = 禁用 +mod.enable = 可使用 +mod.requiresrestart = 遊戲將立即關閉以應用mod變更。 +mod.reloadrequired = [scarlet]需要重新加載 +mod.import = 匯入模組 +mod.import.github = 匯入Github模組 +mod.remove.confirm = 該mod將被刪除。 +mod.author = [LIGHT_GRAY]作者:[] {0} +mod.missing = 此存檔含有您最近更新或不再安裝的mod。可能會發生存檔損毀。您確定要載入嗎?\n[lightgray]模組:\n{0} +mod.preview.missing = 在工作坊發佈這個MOD前,您必須添加預覽圖。\n放置一個名為[accent] preview.png[]進Mod的資料夾並重試。 +mod.folder.missing = 只有文件夾形式的mod可以在工作坊上發布。\n要將任何mod轉換為文件夾,只需將其文件解壓縮到文件夾並刪除舊的zip,然後重新啟動遊戲或重新加載mod。. about.button = 關於 name = 名稱: noname = 先選擇一個[accent]玩家名稱[]。 @@ -74,31 +112,31 @@ players = {0}個線上玩家 players.single = {0}個線上玩家 server.closing = [accent]正在關閉伺服器…… server.kicked.kick = 您已被踢出伺服器! -server.kicked.whitelist = You are not whitelisted here. +server.kicked.whitelist = 您不在這裡的白名單內. server.kicked.serverClose = 伺服器已關閉。 -server.kicked.vote = You have been vote-kicked. Goodbye. +server.kicked.vote = 您已被投票踢出伺服器,再見。 server.kicked.clientOutdated = 客戶端版本過舊!請更新遊戲! server.kicked.serverOutdated = 伺服器版本過舊!請聯絡伺服主更新伺服器! server.kicked.banned = 您已經從這個伺服器被封禁。 -server.kicked.typeMismatch = This server is not compatible with your build type. -server.kicked.playerLimit = This server is full. Wait for an empty slot. +server.kicked.typeMismatch = 該伺服器與您的構建類型不兼容。 +server.kicked.playerLimit = 該伺服器已滿。等待一個空位置。 server.kicked.recentKick = 您已經從伺服器被踢除。\n請稍後再進行連線。 server.kicked.nameInUse = 伺服器中已經\n有人有相同的名稱了。 server.kicked.nameEmpty = 你的名稱必須至少包含一個字母或數字。 server.kicked.idInUse = 你已經在伺服器中!不允許用兩個賬號。 server.kicked.customClient = 這個伺服器不支持自訂客戶端,請下載官方版本。 server.kicked.gameover = 遊戲結束! -server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[] +server.versions = 您的遊戲版本:[accent] {0}[]\n伺服器遊戲版本:[accent] {1}[] host.info = 目前伺服器監聽於連接埠[scarlet]6567[]。\n所有跟您在同一個[LIGHT_GRAY]網路或區域網路[]環境的玩家應該能在他們的伺服器清單中找到您的伺服器。\n\n如果您希望網際網路上的玩家透過IP 位址連線到您的伺服器,您必須設定[accent]連接埠轉發[]。\n\n[LIGHT_GRAY]注意:如果區域網路內有玩家無法連線至您的伺服器,請務必確認您已於防火牆設定中開放Mindustry存取您的區域網路。 join.info = 您可以在此輸入欲連線的[accent]伺服器的IP位址[],或尋找[accent]區域網路[]內的伺服器。目前支援區域網路與網際網路連線。\n\n[LIGHT_GRAY]注意:這裡沒有網際網路伺服器清單,如果您想透過IP位址連線到某人的伺服器,您必須向他們詢問IP位址。 hostserver = 建立伺服器 -invitefriends = Invite Friends +invitefriends = 邀請好友 hostserver.mobile = 建立\n伺服器 -host = 建立 +host = 主機 hosting = [accent]伺服器啟動中…… hosts.refresh = 刷新 hosts.discovering = 搜尋區域網路遊戲 -hosts.discovering.any = Discovering games +hosts.discovering.any = 發現的遊戲 server.refreshing = 刷新伺服器 hosts.none = [lightgray]找不到區域網路伺服器! host.invalid = [scarlet]無法連線至伺服器。 @@ -122,25 +160,24 @@ server.version = [lightgray]版本:{0} server.custombuild = [yellow]自訂組建 confirmban = 您確定要封禁該玩家嗎? confirmkick = 您確定要踢出該玩家嗎? -confirmvotekick = Are you sure you want to vote-kick this player? +confirmvotekick = 您確定要投票剔除該名玩家嗎? confirmunban = 您確定要解除封禁該玩家嗎? confirmadmin = 您確定要提升這個玩家為管理員嗎? confirmunadmin = 您確定要解除這個玩家的管理員嗎? joingame.title = 加入遊戲 joingame.ip = IP位址: disconnect = 已中斷連線。 -disconnect.error = Connection error. -disconnect.closed = Connection closed. -disconnect.timeout = Timed out. +disconnect.error = 連線錯誤。 +disconnect.closed = 連線關閉。 +disconnect.timeout = 連線超時。 disconnect.data = 無法載入地圖資料! -cantconnect = Unable to join game ([accent]{0}[]). +cantconnect = 無法加入遊戲 ([accent]{0}[]). connecting = [accent]連線中…… connecting.data = [accent]正在載入地圖資料…… server.port = 連接埠: server.addressinuse = 該位址已使用中! server.invalidport = 無效的連接埠! server.error = [crimson]建立伺服器時發生錯誤:[accent]{0} -save.old = 這個存檔屬於舊版本,無法使用了。\n\n[LIGHT_GRAY]舊存檔兼容將在正式4.0版本中實現。 save.new = 新存檔 save.overwrite = 您確定要覆蓋存檔嗎? overwrite = 覆蓋 @@ -159,7 +196,7 @@ save.rename = 重新命名 save.rename.text = 新名稱: selectslot = 選取一個存檔。 slot = [accent]存檔{0} -editmessage = Edit Message +editmessage = 編輯訊息 save.corrupted = [accent]此存檔無效或已損毀!\n如果你剛剛升級了遊戲,那麼這可能是因為存檔格式改變了而[scarlet]不是[]錯誤。 empty = 〈空白〉 on = 開啟 @@ -167,13 +204,14 @@ off = 關閉 save.autosave = 自動存檔:{0} save.map = 地圖:{0} save.wave = 波次:{0} -save.mode = Gamemode: {0} +save.mode = 遊戲模式: {0} save.date = 最後存檔時間:{0} save.playtime = 遊玩時間:{0} warning = 警告。 confirm = 確認 delete = 刪除 -view.workshop = View In Workshop +view.workshop = 在工作坊中查看 +workshop.listing = 編輯工作坊清單 ok = 確定 open = 開啟 customize = 自訂 @@ -181,21 +219,26 @@ cancel = 取消 openlink = 開啟連結 copylink = 複製連結 back = 返回 -data.export = Export Data -data.import = Import Data -data.exported = Data exported. -data.invalid = This isn't valid game data. -data.import.confirm = Importing external data will erase[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. -classic.export = Export Classic Data -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? +data.export = 匯出數據 +data.import = 匯入數據 +data.exported = 數據已匯出. +data.invalid = 這不是有效的遊戲資料。 +data.import.confirm = 導入外部數據將刪除您當前[scarlet]所有的[]遊戲數據,\n[accent]這個動作不能撤銷![]\n\n匯入數據後,您的遊戲將立即退出。 +classic.export = 匯出 Classic 數據 +classic.export.text = [accent]Mindustry[]剛剛進行了重大更新。\n檢測到 Classic (v3.5 build 40) 存檔或地圖資料。您是否要將這些存檔匯出到手機的主文件夾中,以便在Mindustry Classic應用中使用? quit.confirm = 您確定要退出嗎? -quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial can be re-taken in[accent] Settings->Game->Re-Take Tutorial.[] +quit.confirm.tutorial = 您確定您知道自己在做什麼嗎?\n該教學可以在[accent] 設定->遊戲[] 選項中重置教學。 loading = [accent]載入中…… +reloading = [accent]重新載入模組... saving = [accent]儲存中…… +cancelbuilding = [accent][[{0}][]清除計畫 +selectschematic = [accent][[{0}][]選擇+複製 +pausebuilding = [accent][[{0}][]暫停建造 +resumebuilding = [scarlet][[{0}][]恢復建造 wave = [accent]第{0}波 -wave.waiting = 將於{0}秒後抵達 -wave.waveInProgress = [LIGHT_GRAY]波正在進行中 -waiting = 等待中…… +wave.waiting = [lightgray]將於{0}秒後抵達 +wave.waveInProgress = 第[LIGHT_GRAY]波正在進行中 +waiting = [lightgray]等待中…… waiting.players = 等待玩家中…… wave.enemies = [LIGHT_GRAY]剩下{0}敵人 wave.enemy = [LIGHT_GRAY]剩下{0}敵人 @@ -210,26 +253,32 @@ map.nospawn = 這個地圖沒有核心!請在編輯器中添加一個[ROYAL] map.nospawn.pvp = 這個地圖沒有核心讓敵人重生!請在編輯器中添加一個[SCARLET]紅色[]的核心。 map.nospawn.attack = 這個地圖沒有敵人核心讓可以攻擊!請在編輯器中添加一個[SCARLET]紅色[]的核心。 map.invalid = 地圖載入錯誤:地圖可能已經損壞。 -map.publish.error = Error publishing map: {0} -map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.update = 更新項目 +workshop.error = 提取工作坊詳細信息時出錯: {0} +map.publish.confirm = 您確定要發布此地圖嗎?\n\n[lightgray]首先請先確定您同意Steam工坊 EULA協定,否則您的地圖將不會顯示! +workshop.menu = 選擇您要對此項目執行的操作。 +workshop.info = 項目信息 +changelog = 變更日誌(可選): eula = Steam EULA -map.publish = Map published. -map.publishing = [accent]Publishing map... +missing = 此項目已被刪除或移動。\n[lightgray]工作坊列表現在已自動取消鏈接。 +publishing = [accent]發佈中... +publish.confirm = 您確定要發布嗎?\n\n[lightgray]首先確定您同意Workshop EULA,否則您的項目將不會顯示! +publish.error = 發佈項目時出錯: {0} editor.brush = 粉刷 editor.openin = 在編輯器中開啟 -editor.oregen = 礦石產生 -editor.oregen.info = 礦石產生: +editor.oregen = 礦石生成 +editor.oregen.info = 礦石生成: editor.mapinfo = 地圖資訊 editor.author = 作者: editor.description = 描述: -editor.nodescription = A map must have a description of at least 4 characters before being published. +editor.nodescription = 在地圖發佈前必須有至少四個字以上的敘述。 editor.waves = 波次: editor.rules = 規則: -editor.generation = Generation: +editor.generation = 篩選器: editor.ingame = 在遊戲中編輯 -editor.publish.workshop = Publish On Workshop -editor.newmap = New Map -workshop = Workshop +editor.publish.workshop = 在工作坊上發佈 +editor.newmap = 新地圖 +workshop = 工作坊 waves.title = 波次 waves.remove = 移除 waves.never = 〈從來沒有〉 @@ -244,9 +293,9 @@ 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]〈默認〉 -details = Details... +details = 詳情…… edit = 編輯…… editor.name = 名稱: editor.spawn = 重生單位 @@ -256,7 +305,7 @@ editor.errorload = 加載文件時出錯:\n[accent]{0} editor.errorsave = 保存文件時出錯:\n[accent]{0} editor.errorimage = 這是一個圖像檔,而不是地圖。不要更改副檔名使它可用。\n\n如果要匯入地形圖像檔,請使用編輯器中的「匯入地形圖像檔」按鈕。 editor.errorlegacy = 此地圖太舊,並使用不支持的舊地圖格式。 -editor.errornot = This is not a map file. +editor.errornot = 這不是一個地圖檔案。 editor.errorheader = 此地圖檔案無效或已損壞。 editor.errorname = 地圖沒有定義名稱。 editor.update = 更新 @@ -289,136 +338,139 @@ editor.resizemap = 調整地圖大小 editor.mapname = 地圖名稱: editor.overwrite = [accent]警告!這將會覆蓋現有的地圖。 editor.overwrite.confirm = [scarlet]警告![]同名地圖存在,確定要覆蓋現有地圖? -editor.exists = A map with this name already exists. +editor.exists = 具有該名稱的地圖已經存在。 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.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 = Draw Teams -toolmode.drawteams.description = Draw teams instead of blocks. +toolmode.drawteams.description = 繪製團隊而不是方塊。 filters.empty = [LIGHT_GRAY]沒有過濾器!使用下面的按鈕添加一個。 -filter.distort = 歪曲 -filter.noise = 噪聲 -filter.median = Median -filter.oremedian = Ore Median -filter.blend = Blend -filter.defaultores = Default Ores +filter.distort = 扭曲 +filter.noise = 雜訊 +filter.median = 平均數 +filter.oremedian = 礦石平均數 +filter.blend = 混合 +filter.defaultores = 預設礦石 filter.ore = 礦石 -filter.rivernoise = 河流噪聲 -filter.mirror = Mirror -filter.clear = Clear -filter.option.ignore = Ignore +filter.rivernoise = 河流雜訊 +filter.mirror = 鏡射 +filter.clear = 清除 +filter.option.ignore = 忽略 filter.scatter = 分散 filter.terrain = 地形 -filter.option.scale = 比例 +filter.option.scale = 規模 filter.option.chance = 機會 filter.option.mag = 大小 -filter.option.threshold = 閾 -filter.option.circle-scale = 圓形比例 +filter.option.threshold = 閾值 +filter.option.circle-scale = 圓形規模 filter.option.octaves = 倍頻 filter.option.falloff = 衰減 -filter.option.angle = Angle +filter.option.angle = 角度 filter.option.block = 方塊 filter.option.floor = 地板 -filter.option.flooronto = Target Floor +filter.option.flooronto = 目標地板 filter.option.wall = 牆 filter.option.ore = 礦石 filter.option.floor2 = 次要地板 -filter.option.threshold2 = 次要閾 +filter.option.threshold2 = 次要閾值 filter.option.radius = 半徑 filter.option.percentile = 百分比 width = 寬度: height = 長度: menu = 主選單 -play = 開始 -campaign = Campaign +play = 開始遊戲 +campaign = 戰役 load = 載入 save = 儲存 fps = FPS:{0} -tps = TPS:{0} ping = 延遲:{0}ms language.restart = 請重新啟動遊戲以使選取的語言生效。 settings = 設定 tutorial = 教學 -tutorial.retake = Re-Take Tutorial +tutorial.retake = 重置教學 editor = 地圖編輯器 mapeditor = 地圖編輯器 -donate = 贊助 + abandon = 放棄 abandon.text = 此區域及其所有資源將會丟失給敵人。 locked = 鎖定 complete = [LIGHT_GRAY]完成: -zone.requirement = {0}波於區域{1} +requirement.wave = 在{1}到達第{0}波 +requirement.core = 在{0}摧毀敵人核心 +requirement.unlock = 解鎖{0} resume = 繼續區域:\n[LIGHT_GRAY]{0} bestwave = [LIGHT_GRAY]高分:{0} launch = 發射 launch.title = 發射成功 launch.next = [LIGHT_GRAY]下次的機會於波次{0} -launch.unable2 = [scarlet]Unable to LAUNCH.[] +launch.unable2 = [scarlet]無法發射核心。[] launch.confirm = 這將發射核心中的所有資源。\n你將無法返回這個基地。 -launch.skip.confirm = If you skip now, you will not be able to launch until later waves. +launch.skip.confirm = 如果您現在跳過,您將無法發射核心直到下一次的可發射波數。 uncover = 揭露 configure = 配置裝載 +bannedblocks = 禁用方塊 +addall = 加入全部 configure.locked = [LIGHT_GRAY]到達波次{0}\n以配置裝載。 -configure.invalid = Amount must be a number between 0 and {0}. +configure.invalid = 數值必須介於 0 到 {0}。 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 +zone.config.unlocked = 加載解鎖:[lightgray]\n{0} +zone.resources = [lightgray]檢測到的資源: +zone.objective = [lightgray]目標: [accent]{0} +zone.objective.survival = 生存 +zone.objective.attack = 摧毀敵人核心 add = 新增…… boss.health = 頭目血量 connectfail = [crimson]無法連線到伺服器:[accent]{0} error.unreachable = 無法到達伺服器。 error.invalidaddress = 無效地址。 error.timedout = 超時連接!\n確保伺服器設置了連接埠轉發,並且地址正確! -error.mismatch = 包裹錯誤:\n客戶端/伺服器版本可能不匹配。 n確保客戶端和伺服器有最新版本的Mindustry! +error.mismatch = 封包錯誤:\n客戶端/伺服器版本可能不匹配。\n確保客戶端和伺服器有最新版本的Mindustry! error.alreadyconnected = 已連接。 error.mapnotfound = 找不到地圖! error.io = 網絡輸入輸出錯誤。 error.any = 未知網絡錯誤。 -error.bloom = Failed to initialize bloom.\nYour device may not support it. -zone.groundZero.name = 歸零地 +error.bloom = 初始化特效失敗.\n您的設備可能不支援它 +zone.groundZero.name = 零號地區 zone.desertWastes.name = 沙漠荒原 zone.craters.name = 隕石坑 zone.frozenForest.name = 冰凍森林 -zone.ruinousShores.name = 毀滅海岸 -zone.stainedMountains.name = 染山 -zone.desolateRift.name = 荒涼的裂痕 +zone.ruinousShores.name = 廢墟海岸 +zone.stainedMountains.name = 汙染山脈 +zone.desolateRift.name = 荒涼裂谷 zone.nuclearComplex.name = 核生產綜合體 -zone.overgrowth.name = 增生 +zone.overgrowth.name = 蔓生 zone.tarFields.name = 焦油田 -zone.saltFlats.name = Salt Flats -zone.impact0078.name = Impact 0078 -zone.crags.name = Crags -zone.fungalPass.name = Fungal Pass -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.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 = -zone.crags.description = +zone.saltFlats.name = 鹽沼 +zone.impact0078.name = 衝擊 0078 +zone.crags.name = 岩壁 +zone.fungalPass.name = 真菌隘口 +zone.groundZero.description = 再次開始的最佳位置。敵人威脅度低。資源少。\n盡可能的收集更多的鉛和銅。\n繼續前進。 +zone.frozenForest.description = 即使這裡更靠近山脈,孢子也已經擴散到這裡了。嚴寒的溫度不可能永遠禁錮它們。\n\n開始進入能源的世界。建造燃燒發電機。學會使用修理方塊。 +zone.desertWastes.description = 這些荒原規模巨大,難以預測,並且與廢棄的結構交錯在一起。\n此地區存在著煤炭。燃燒它以獲得能源或合成石墨。\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[lightgray]研究釷及其多種用途。\n\n敵人在這裡的數量眾多,不斷的偵查入侵者。 +zone.fungalPass.description = 高山與被孢子纏繞的低地之間的過渡區域。一個小的敵人偵察基地位於這裡。\n破壞它。\n使用匕首機甲和爬行機甲單位來摧毀兩個核心。 +zone.impact0078.description = <在此處輸入說明> +zone.crags.description = <在此輸入說明> settings.language = 語言 -settings.data = Game Data +settings.data = 遊戲數據 settings.reset = 重設為預設設定 settings.rebind = 重新綁定 settings.controls = 操作 @@ -428,22 +480,21 @@ settings.graphics = 圖形 settings.cleardata = 清除遊戲數據…… settings.clear.confirm = 您確定要清除數據嗎?\n此操作無法撤回! settings.clearall.confirm = [scarlet]警告![]\n這將清除所有數據,包括存檔、地圖、解鎖和熱鍵綁定。\n按「是」後,遊戲將刪除所有數據並自動退出。 -settings.clearunlocks = 清除已解鎖 -settings.clearall = 清除所有 paused = [accent]〈已暫停〉 +clear = Clear +banned = [scarlet]Banned yes = 是 no = 否 -info.title = [accent]資訊 +info.title = 資訊 error.title = [crimson]發生錯誤 error.crashtitle = 發生錯誤 -attackpvponly = [scarlet]Only available in Attack/PvP modes 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 = 移動速度 @@ -466,20 +517,20 @@ blocks.boosteffect = 提升效應 blocks.maxunits = 最大活躍單位 blocks.health = 耐久度 blocks.buildtime = 建設時間 -blocks.buildcost = Build Cost +blocks.buildcost = 建造成本 blocks.inaccuracy = 誤差 blocks.shots = 射擊數 blocks.reload = 重裝彈藥 blocks.ammo = 彈藥 -bar.drilltierreq = Better Drill Required +bar.drilltierreq = 需要更好的鑽頭 bar.drillspeed = 鑽頭速度:{0}/秒 bar.efficiency = 效率:{0}% bar.powerbalance = 能量變化:{0} -bar.powerstored = Stored: {0}/{1} +bar.powerstored = 能量存量: {0}/{1} bar.poweramount = 能量:{0} bar.poweroutput = 能量輸出:{0} bar.items = 物品:{0} -bar.capacity = Capacity: {0} +bar.capacity = 容量: {0} bar.liquid = 液體 bar.heat = 熱 bar.power = 能量 @@ -489,8 +540,8 @@ bullet.damage = [stat]{0}[lightgray]傷害 bullet.splashdamage = [stat]{0}[lightgray]範圍傷害 ~[stat] {1}[lightgray]格 bullet.incendiary = [stat]燃燒 bullet.homing = [stat]追踪 -bullet.shock = [stat]休克 -bullet.frag = [stat]碎片 +bullet.shock = [stat]暈眩 +bullet.frag = [stat]破片彈 bullet.knockback = [stat]{0}[lightgray]擊退 bullet.freezing = [stat]冷凍 bullet.tarred = [stat]焦油 @@ -518,17 +569,18 @@ category.optional = 可選的強化 setting.landscape.name = 鎖定景觀 setting.shadows.name = 陰影 setting.linear.name = 線性過濾 -setting.animatedwater.name = 動畫水 -setting.animatedshields.name = 動畫力牆 -setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟)[] +setting.hints.name = 提示 +setting.animatedwater.name = 水動畫 +setting.animatedshields.name = 護盾動畫 +setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟遊戲)[] setting.indicators.name = 盟友指標 setting.autotarget.name = 自動射擊 -setting.keyboard.name = Mouse+Keyboard Controls -setting.touchscreen.name = Touchscreen Controls +setting.keyboard.name = 滑鼠+鍵盤控制 +setting.touchscreen.name = 觸控螢幕控制 setting.fpscap.name = 最大FPS setting.fpscap.none = 没有 setting.fpscap.text = {0}FPS -setting.uiscale.name = UI Scaling[lightgray] (require restart)[] +setting.uiscale.name = UI縮放[lightgray] (需要重啟遊戲)[] setting.swapdiagonal.name = 始終對角線放置 setting.difficulty.training = 訓練 setting.difficulty.easy = 簡單 @@ -542,41 +594,47 @@ setting.sensitivity.name = 控制器靈敏度 setting.saveinterval.name = 自動存檔間隔 setting.seconds = {0}秒 setting.fullscreen.name = 全螢幕 -setting.borderlesswindow.name = 無邊框窗口[LIGHT_GRAY](可能需要重啟) +setting.borderlesswindow.name = 無邊框窗口[LIGHT_GRAY](可能需要重啟遊戲) setting.fps.name = 顯示FPS setting.vsync.name = 垂直同步 setting.pixelate.name = 像素化[LIGHT_GRAY](可能降低性能) setting.minimap.name = 顯示小地圖 +setting.position.name = 顯示玩家位置 setting.musicvol.name = 音樂音量 -setting.ambientvol.name = Ambient Volume +setting.ambientvol.name = 環境音量 setting.mutemusic.name = 靜音 setting.sfxvol.name = 音效音量 setting.mutesound.name = 靜音 setting.crashreport.name = 發送匿名崩潰報告 -setting.savecreate.name = Auto-Create Saves -setting.publichost.name = Public Game Visibility +setting.savecreate.name = 自動建立存檔 +setting.publichost.name = 公開遊戲可見度 setting.chatopacity.name = 聊天框不透明度 -setting.lasersopacity.name = Power Laser Opacity +setting.lasersopacity.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 +public.confirm = 您想公開遊戲嗎?\n[accent]任何人都可以加入您的遊戲。\n[lightgray]以後可以在“設置”->“遊戲”->“公開遊戲可見度”中進行更改。 +public.beta = 請注意,該遊戲的Beta版本無法公開遊戲大廳。 +uiscale.reset = UI縮放已變更\n按下"確定"確認這個比例\n[scarlet][accent] {0}[] 秒後...退出並還原設定 +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 = 多人 command.attack = 攻擊 command.rally = Rally command.retreat = 撤退 -keybind.gridMode.name = 方塊選取 -keybind.gridModeShift.name = 類別選取 -keybind.press = 按一下鍵…… -keybind.press.axis = 按一下軸心或鍵…… +keybind.clear_building.name = 清除建築物 +keybind.press = 按一下按鍵…… +keybind.press.axis = 按一下軸向或按鍵…… keybind.screenshot.name = 地圖截圖 keybind.move_x.name = 水平移動 keybind.move_y.name = 垂直移動 -keybind.fullscreen.name = Toggle Fullscreen +keybind.schematic_select.name = 選擇區域 +keybind.schematic_menu.name = 計畫圖目錄 +keybind.schematic_flip_x.name = X軸翻轉 +keybind.schematic_flip_y.name = Y軸翻轉 +keybind.fullscreen.name = 全螢幕切換 keybind.select.name = 選取 keybind.diagonal_placement.name = 對角線放置 keybind.pick.name = 選擇方塊 @@ -587,12 +645,14 @@ keybind.zoom_hold.name = 按住縮放 keybind.zoom.name = 縮放 keybind.menu.name = 主選單 keybind.pause.name = 暫停遊戲 +keybind.pause_building.name = 暫停/恢復建造 keybind.minimap.name = 小地圖 keybind.dash.name = 衝刺 keybind.chat.name = 聊天 keybind.player_list.name = 玩家列表 keybind.console.name = 終端機 keybind.rotate.name = 旋轉 +keybind.rotateplaced.name = 旋轉現有(按住) keybind.toggle_menus.name = 切換畫面 keybind.chat_history_prev.name = 之前的聊天記錄 keybind.chat_history_next.name = 之後的聊天記錄 @@ -604,15 +664,16 @@ mode.survival.name = 生存 mode.survival.description = 一般模式。有限的資源與自動來襲的波次。 mode.sandbox.name = 沙盒 mode.sandbox.description = 無限的資源,與不倒數計時的波次。 +mode.editor.name = 編輯 mode.pvp.name = 對戰 -mode.pvp.description = 和其他玩家鬥爭。 -mode.attack.name = 攻擊 +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 = 單位建設速度倍數 @@ -637,7 +698,7 @@ rules.title.enemy = 敵人 rules.title.unit = 單位 content.item.name = 物品 content.liquid.name = 液體 -content.unit.name = 機組 +content.unit.name = 單位 content.block.name = 方塊 content.mech.name = 機甲 item.copper.name = 銅 @@ -647,28 +708,28 @@ item.graphite.name = 石墨 item.titanium.name = 鈦 item.thorium.name = 釷 item.silicon.name = 矽 -item.plastanium.name = 塑料 +item.plastanium.name = 塑鋼 item.phase-fabric.name = 相織布 item.surge-alloy.name = 波動合金 item.spore-pod.name = 孢子莢 item.sand.name = 沙 item.blast-compound.name = 爆炸混合物 -item.pyratite.name = 硫 -item.metaglass.name = 金屬玻璃 +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.weapon = 重型機關槍 -mech.alpha-mech.ability = 無人機群 +mech.alpha-mech.ability = 自修復 mech.delta-mech.name = 德爾塔 mech.delta-mech.weapon = 電弧生成機 mech.delta-mech.ability = 放電 -mech.tau-mech.name = 牛頭機甲 +mech.tau-mech.name = 滔 mech.tau-mech.weapon = 重構激光 -mech.tau-mech.ability = 修复陣 +mech.tau-mech.ability = 修復陣 mech.omega-mech.name = 奧米伽 mech.omega-mech.weapon = 導彈群 mech.omega-mech.ability = 裝甲配置 @@ -676,10 +737,10 @@ mech.dart-ship.name = 鏢船 mech.dart-ship.weapon = 機關槍 mech.javelin-ship.name = 標槍 mech.javelin-ship.weapon = 爆發導彈 -mech.javelin-ship.ability = 放電助推器 -mech.trident-ship.name = 三叉 -mech.trident-ship.weapon = 炸彈 -mech.glaive-ship.name = 長柄 +mech.javelin-ship.ability = 電弧助推器 +mech.trident-ship.name = 三叉戟 +mech.trident-ship.weapon = 轟炸艙 +mech.glaive-ship.name = 偃月刀 mech.glaive-ship.weapon = 火焰機關槍 item.explosiveness = [LIGHT_GRAY]爆炸性:{0} item.flammability = [LIGHT_GRAY]易燃性:{0} @@ -692,22 +753,22 @@ mech.itemcapacity = [LIGHT_GRAY]物品容量:{0} mech.minespeed = [LIGHT_GRAY]採礦速度:{0} mech.minepower = [LIGHT_GRAY]採礦力度:{0} mech.ability = [LIGHT_GRAY]能力:{0} -mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}% +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 +liquid.temperature = [LIGHT_GRAY]溫度:{0} +block.sand-boulder.name = 沙礫 block.grass.name = 草 block.salt.name = 鹽 block.saltrocks.name = 鹽岩 block.pebbles.name = 卵石 block.tendrils.name = 卷鬚 block.sandrocks.name = 沙岩 -block.spore-pine.name = 孢子鬆 +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 = 苔蘚 @@ -721,11 +782,11 @@ block.scrap-wall-gigantic.name = 超巨型廢牆 block.thruster.name = 推進器 block.kiln.name = 窯 block.graphite-press.name = 石墨壓縮機 -block.multi-press.name = 多用途壓縮機 +block.multi-press.name = 多重壓縮機 block.constructing = {0}\n[LIGHT_GRAY](建設中) block.spawn.name = 敵人生成 block.core-shard.name = 核心:碎片 -block.core-foundation.name = 核心:基礎 +block.core-foundation.name = 核心:基地 block.core-nucleus.name = 核心:核子 block.deepwater.name = 深水 block.water.name = 水 @@ -748,7 +809,7 @@ block.icerocks.name = 冰岩 block.snowrocks.name = 雪巖 block.dunerocks.name = 沙丘岩 block.pine.name = 松樹 -block.white-tree-dead.name = 死了的白樹 +block.white-tree-dead.name = 枯萎白樹 block.white-tree.name = 白樹 block.spore-cluster.name = 孢子簇 block.metal-floor.name = 金屬地板 @@ -777,20 +838,21 @@ block.thorium-wall.name = 釷牆 block.thorium-wall-large.name = 大型釷牆 block.door.name = 門 block.door-large.name = 大門 -block.duo.name = 雙炮 -block.scorch.name = 燒焦炮 -block.scatter.name = 分散炮 -block.hail.name = 冰雹炮 -block.lancer.name = 藍瑟炮 +block.duo.name = 雙砲 +block.scorch.name = 焦土砲 +block.scatter.name = 分散砲 +block.hail.name = 冰雹砲 +block.lancer.name = 光矛砲 block.conveyor.name = 輸送帶 block.titanium-conveyor.name = 鈦輸送帶 -block.armored-conveyor.name = Armored Conveyor -block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors. +block.armored-conveyor.name = 裝甲輸送帶 +block.armored-conveyor.description = 以與鈦輸送帶相同的速度移動物品,但擁有更高的防禦。除其他傳送帶外,不接受任何從側面輸入的資源。 block.junction.name = 樞紐 block.router.name = 分配器 block.distributor.name = 大型分配器 block.sorter.name = 分類器 -block.message.name = Message +block.inverted-sorter.name = 反向分類器 +block.message.name = 訊息 block.overflow-gate.name = 溢流器 block.silicon-smelter.name = 煉矽廠 block.phase-weaver.name = 相織布編織器 @@ -814,195 +876,195 @@ block.mechanical-drill.name = 機械鑽頭 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.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.conduit.name = 管線 block.mechanical-pump.name = 機械泵 block.item-source.name = 物品源 -block.item-void.name = 物品虚 +block.item-void.name = 物品虚空 block.liquid-source.name = 液體源 -block.power-void.name = 能量空虛 -block.power-source.name = 無限能量 +block.power-void.name = 能量虛空 +block.power-source.name = 無限能量源 block.unloader.name = 裝卸器 block.vault.name = 存儲庫 -block.wave.name = 波浪炮 -block.swarmer.name = 群炮 -block.salvo.name = 齊射炮 -block.ripple.name = 波紋炮 +block.wave.name = 波浪 +block.swarmer.name = 群集砲 +block.salvo.name = 齊射砲 +block.ripple.name = 波紋砲 block.phase-conveyor.name = 相織傳送帶 -block.bridge-conveyor.name = 傳送帶橋 -block.plastanium-compressor.name = 塑料壓縮機 -block.pyratite-mixer.name = 硫混合器 +block.bridge-conveyor.name = 輸送帶橋 +block.plastanium-compressor.name = 塑鋼壓縮機 +block.pyratite-mixer.name = 火焰彈混合器 block.blast-mixer.name = 爆炸混合器 block.solar-panel.name = 太陽能板 block.solar-panel-large.name = 大型太陽能板 -block.oil-extractor.name = 石油鑽井 -block.command-center.name = Command Center -block.draug-factory.name = Draug Miner Drone Factory -block.spirit-factory.name = 輕型無人機工廠 +block.oil-extractor.name = 原油鑽井 +block.command-center.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 = 匕首機甲工廠 block.crawler-factory.name = 爬行機甲工廠 block.titan-factory.name = 泰坦機甲工廠 -block.fortress-factory.name = 堡壘機甲工廠 -block.revenant-factory.name = 亡魂戰鬥機工廠 +block.fortress-factory.name = 要塞機甲工廠 +block.revenant-factory.name = 復仇鬼戰鬥機工廠 block.repair-point.name = 維修點 block.pulse-conduit.name = 脈衝管線 block.phase-conduit.name = 相織管線 block.liquid-router.name = 液體分配器 -block.liquid-tank.name = 液體儲罐 -block.liquid-junction.name = 液體連接點 +block.liquid-tank.name = 液體儲存槽 +block.liquid-junction.name = 液體樞紐 block.bridge-conduit.name = 管線橋 block.rotary-pump.name = 迴旋泵 block.thorium-reactor.name = 釷反應堆 block.mass-driver.name = 質量驅動器 -block.blast-drill.name = 爆破鑽頭 +block.blast-drill.name = 氣爆鑽頭 block.thermal-pump.name = 熱能泵 -block.thermal-generator.name = 熱能發電機 +block.thermal-generator.name = 地熱發電機 block.alloy-smelter.name = 合金冶煉廠 block.mender.name = 修理方塊 block.mend-projector.name = 修理投影器 block.surge-wall.name = 波動牆 block.surge-wall-large.name = 大型波動牆 -block.cyclone.name = 氣旋炮 -block.fuse.name = 融合炮 -block.shock-mine.name = 休克地雷 -block.overdrive-projector.name = 超速投影器 -block.force-projector.name = 力牆投影器 -block.arc.name = 電弧 +block.cyclone.name = 颶風砲 +block.fuse.name = 融合砲 +block.shock-mine.name = 衝擊地雷 +block.overdrive-projector.name = 超速運轉投影器 +block.force-projector.name = 護盾投影器 +block.arc.name = 電弧砲 block.rtg-generator.name = 放射性同位素熱發電機 -block.spectre.name = 幽靈炮 -block.meltdown.name = 熔毀炮 +block.spectre.name = 鬼影砲 +block.meltdown.name = 熔毀砲 block.container.name = 容器 -block.launch-pad.name = 發射台 +block.launch-pad.name = 小型發射台 block.launch-pad-large.name = 大型發射台 team.blue.name = 藍 -team.crux.name = red -team.sharded.name = orange -team.orange.name = 橙 -team.derelict.name = derelict +team.crux.name = 紅 +team.sharded.name = 黃 +team.orange.name = 橘 +team.derelict.name = 灰 team.green.name = 綠 team.purple.name = 紫 -unit.spirit.name = 輕型無人機 -unit.draug.name = Draug Miner Drone +unit.spirit.name = 幽靈無人機 +unit.draug.name = 殭屍採礦無人機 unit.phantom.name = 幻影無人機 -unit.dagger.name = 匕首 -unit.crawler.name = 爬行 +unit.dagger.name = 匕首機甲 +unit.crawler.name = 爬行機甲 unit.titan.name = 泰坦 unit.ghoul.name = 食屍鬼轟炸機 unit.wraith.name = 怨靈戰鬥機 -unit.fortress.name = 堡壘 -unit.revenant.name = 亡魂 +unit.fortress.name = 要塞 +unit.revenant.name = 復仇鬼 unit.eruptor.name = 爆發者 -unit.chaos-array.name = 混沌陣 +unit.chaos-array.name = 混沌陣列 unit.eradicator.name = 消除者 unit.lich.name = 巫妖 -unit.reaper.name = 收割者 -tutorial.next = [lightgray] -tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nBegin by[accent] mining copper[]. Tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper +unit.reaper.name = 收掠者 +tutorial.next = [lightgray]<按下以繼續> +tutorial.intro = 您已進入[scarlet] Mindustry 教學。[]\n從[accent] 挖掘銅礦[]開始吧。點擊靠近您核心的銅礦脈。\n\n[accent]{0}/{1} 個銅礦 tutorial.drill = 手動挖掘礦石是低效率的。\n[accent]鑽頭[]能夠自動挖掘礦石。\n在銅脈上放置一個鑽頭。 -tutorial.drill.mobile = Mining manually is inefficient.\n[accent]Drills []can mine automatically.\nTap the drill tab in the bottom right.\nSelect the[accent] mechanical drill[].\nPlace it on a copper vein by tapping, then press the[accent] checkmark[] below to confirm your selection.\nPress the[accent] X button[] to cancel placement. -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.drill.mobile = 手動挖掘礦石是低效率的。\n[accent]鑽頭[]能夠自動挖掘礦石。\n點選右下角的鑽頭選項\n選擇[accent]機械鑽頭[].\n通過點擊將其放置在銅礦上,然後按下下方的[accent]確認標誌[]確認您的選擇\n按下[accent] X 按鈕[] 取消放置. +tutorial.blockinfo = 每個方塊都有不同的屬性。每個鑽頭只能開採特定的礦石。\n查看方塊的資訊和屬性,[accent]在建造目錄時按下"?"鈕。[]\n\n[accent]立即訪問機械鑽頭的屬性資料。[] tutorial.conveyor = [accent]輸送帶[]能夠將物品運輸到核心。\n製作一條從鑽頭開始到核心的輸送帶。 -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.conveyor.mobile = [accent]輸送帶[]能夠將物品運輸到核心。製作一條從鑽頭開始到核心的輸送帶。\n[accent]長按數秒[]並向一個方向拖動來放置直線。\n\n[accent]{0}/{1} 條輸送帶\n[accent]0/1 交付的物品 tutorial.turret = 防禦建築是必須的以擊退[LIGHT_GRAY]敵人[]。\n於核心附近建造一個雙炮。 tutorial.drillturret = 雙炮需要[accent]銅彈[]以射擊。\n在雙炮旁邊放置一個鑽頭以供應銅。 -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. -tutorial.unpause = Now press space again to unpause. -tutorial.unpause.mobile = Now press it again to unpause. -tutorial.breaking = Blocks frequently need to be destroyed.\n[accent]Hold down right-click[] to destroy all blocks in a selection.[]\n\n[accent]Destroy all the scrap blocks to the left of your core using area selection. -tutorial.breaking.mobile = Blocks frequently need to be destroyed.\n[accent]Select deconstruction mode[], then tap a block to begin breaking it.\nDestroy an area by holding down your finger for a few seconds[] and dragging in a direction.\nPress the checkmark button to confirm breaking.\n\n[accent]Destroy all the scrap blocks to the left of your core using area selection. -tutorial.withdraw = In some situations, taking items directly from blocks is necessary.\nTo do this, [accent]tap a block[] with items in it, then [accent]tap the item[] in the inventory.\nMultiple items can be withdrawn by [accent]tapping and holding[].\n\n[accent]Withdraw some copper from the core.[] -tutorial.deposit = Deposit items into blocks by dragging from your ship to the destination block.\n\n[accent]Deposit your copper back into the core.[] +tutorial.pause = 在戰鬥中,你可以[accent]暫停遊戲。[]\n您可以在暫停時規劃建築物並加入建造序列。\n\n[accent]按空白鍵暫停遊戲。 +tutorial.pause.mobile = 在戰鬥中,你可以[accent]暫停遊戲。[]\n您可以在暫停時規劃建築物並加入建造序列。\n\n[accent]按左上角的此按鈕暫停。 +tutorial.unpause = 現在再次按空格鍵即可取消暫停。 +tutorial.unpause.mobile = 現在再次按空格鍵即可取消暫停。 +tutorial.breaking = 方塊經常需要被銷毀。\n[accent]按住右鍵[]破壞選擇中的所有方塊。[]\n\n[accent]使用區域選擇銷毀核心左側的所有廢料方塊。 +tutorial.breaking.mobile = 方塊經常需要被銷毀。\n[accent]選擇解構模式[],然後點擊一個方塊開始破壞它。\n按住手指幾秒鐘以破壞區域[]並向一個方向拖動。\n按下複選標記按鈕以確認破壞。\n\n[accent]使用區域選擇銷毀核心左側的所有廢料方塊。 +tutorial.withdraw = 在某些情況下,直接從方塊中取出物品是必要的。\n去做這個, [accent]點擊有物品的方塊[],然後[accent]點擊在方框中的物品[]。\n可以通過[accent]點擊或常按[]來取出物品。\n\n[accent]從核心中取出一些銅。[] +tutorial.deposit = 通過將物品從船上拖到目標方塊,將物品放入放塊中。\n\n[accent]將您的銅放到核心中。[] tutorial.waves = [LIGHT_GRAY]敵人[]來臨。\n\n防衛核心2波。建造更多的砲塔以防衛。 -tutorial.waves.mobile = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves. Your ship will automatically fire at enemies.\nBuild more turrets and drills. Mine more copper. -tutorial.launch = Once you reach a specific wave, you are able to[accent] launch the core[], leaving your defenses behind and[accent] obtaining all the resources in your core.[]\nThese resources can then be used to research new technology.\n\n[accent]Press the launch button. +tutorial.waves.mobile = [lightgray]敵人[]接近。\n\n保護核心抵抗兩波攻擊。您的飛船將自動向敵人開火。\n建造更多的砲塔和鑽頭。開採更多的銅。 +tutorial.launch = 一旦您達到特定的波數, 您就可以[accent] 發射核心[],放棄防禦並[accent]獲取核心中的所有資源。[]\n這些資源可以用於研究新科技。\n\n[accent]按下發射按鈕。 item.copper.description = 一種有用的結構材料。在各種類型的方塊中廣泛使用。 item.lead.description = 一種基本的起始材料。被廣泛用於電子設備和運輸液體方塊。 -item.metaglass.description = 一種超級強硬玻璃混合物。廣泛用於液體分配和存儲。 -item.graphite.description = Mineralized carbon, used for ammunition and electrical insulation. +item.metaglass.description = 一種高強度的玻璃。廣泛用於液體分配和存儲。 +item.graphite.description = 礦化的碳,用於彈藥和電氣絕緣。 item.sand.description = 一種常見的材料,廣泛用於冶煉,包括製作合金和助熔劑。 -item.coal.description = 一種常見並容易獲得的燃料。 -item.titanium.description = 一種罕見的超輕金屬,被廣泛運用於運輸液體、鑽頭和飛機。 -item.thorium.description = 一種稠密的放射性金屬,用作支撐結構和核燃料。 -item.scrap.description = 舊結構和單位的遺留剩餘物。含有痕量的許多不同的金屬。 -item.silicon.description = 一種非常有用的半導體,被用於太陽能電池板和很多複雜的電子設備。 -item.plastanium.description = 一種輕量、可延展的材料,用於高級的飛機和碎彈藥。 +item.coal.description = 遠在「播種」事件前就形成的植物化石。一種常見並容易獲得的燃料。 +item.titanium.description = 一種罕見的超輕金屬,被廣泛運用於運輸液體、鑽頭和飛行載具。 +item.thorium.description = 一種高密度的放射性金屬,用作結構支撐和核燃料。 +item.scrap.description = 舊結構和單位的殘骸。含有微量的各種金屬。 +item.silicon.description = 一種非常有用的半導體,被用於太陽能電池板、很多複雜的電子設備和追蹤導彈彈藥。 +item.plastanium.description = 一種輕量、可延展的材料,用於高級的飛行載具和破片彈藥。 item.phase-fabric.description = 一種近乎無重量的物質,用於先進的電子設備和自修復技術。 item.surge-alloy.description = 一種具有獨特電子特性的高級合金。 -item.spore-pod.description = 用於轉化為石油、爆炸物和燃料。 -item.blast-compound.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架無人機以提高進攻能力。 -mech.delta-mech.description = 一种快速、轻铠的机甲,是用於打了就跑的攻擊。对结构造成的伤害很小,但可以用弧形闪电武器很快杀死大量敌方机组。 -mech.tau-mech.description = 支援機甲。射擊友好方塊以治療它們。可以使用它的修復能力熄滅火焰並治療一定範圍內的友軍。 -mech.omega-mech.description = 一種笨重、裝甲重的機甲,用於在前線突擊。它的裝甲能力可以阻擋高達90%的傷害。 -mech.dart-ship.description = 標準飛船。快速、輕便,但有低的攻擊能力和慢的採礦速度。 -mech.javelin-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.wraith.description = 一種快速、打了就跑的攔截機。 -unit.ghoul.description = 一種重型的鋪蓋性的轟炸機。使用爆炸化合物或黃鐵礦作為彈藥。 -unit.revenant.description = A heavy, hovering missile array. -block.message.description = Stores a message. Used for communication between allies. -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. +liquid.water.description = 最有用的液體。常用於冷卻機器和廢物處理。 +liquid.slag.description = 各種不同類型的熔融金屬混合在一起的液體。可以被分解成其所組成之礦物,或作為武器向敵方單位噴灑。 +liquid.oil.description = 用於進階材料製造的液體。可以轉化為煤炭作為燃料或噴灑向敵方單位後點燃作為武器。 +liquid.cryofluid.description = 一種安定,無腐蝕性的液體,用水及鈦混合成。具有很高的比熱。廣泛的用作冷卻劑。 +mech.alpha-mech.description = 標準的控制機甲。改良自匕首機甲,加強了裝甲及建造能力。 +mech.delta-mech.description = 一種快速、輕裝甲的機甲,用於打帶跑的攻擊。對結構造成的傷害很小,但可以用弧形閃電武器很快殺死大量敵方單位。 +mech.tau-mech.description = 支援機甲。射擊友方方塊以修復它們。可以使用它的修復能力治療一定範圍內的友軍。 +mech.omega-mech.description = 一種笨重、重裝甲的機甲,用於前線突擊。它的裝甲能力可以阻擋高達90%的傷害。 +mech.dart-ship.description = 標準的控制飛船。快速、輕便,但攻擊能力低、採礦速度慢。 +mech.javelin-ship.description = 一種打帶跑的突襲艇。雖然最初很慢,但它可以加速到很快的速度,並飛過敵人的前哨站,利用其閃電能力和導彈造成大量的傷害。 +mech.trident-ship.description = 一種重型轟炸機。用以摧毀敵方建築。有相當的裝甲。 +mech.glaive-ship.description = 一種大型、配有良好裝甲的砲艇。配備燃燒機關槍。高機動性。 +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.wraith.description = 一種快速、打帶跑的攔截機。針對發電機進行打擊。 +unit.ghoul.description = 一種重型的鋪蓋性轟炸機。摧毀敵方建築,並針對重要基礎設施進行打擊。 +unit.revenant.description = 重型的盤旋導彈陣列。 +block.message.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.incinerator.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 = 將原油固化成煤礦。 +block.incinerator.description = 銷毀它接收到的任何多餘物品或液體。 block.power-void.description = 銷毀所有輸入的能量。僅限沙盒。 -block.power-source.description = 不限地輸出能量。僅限沙盒。 -block.item-source.description = 不限地輸出物品。僅限沙盒。 +block.power-source.description = 無限輸出能量。僅限沙盒。 +block.item-source.description = 無限輸出物品。僅限沙盒。 block.item-void.description = 不使用能量銷毀任何進入它的物品。僅限沙盒。 -block.liquid-source.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.thorium-wall.description = 一種堅強的防衛方塊。\n良好地防衛敵人。 +block.liquid-source.description = 無限輸出液體。僅限沙盒。 +block.copper-wall.description = 一種便宜的防禦方塊。\n用於前幾波防衛核心和砲塔。 +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.phase-wall.description = 沒有釷牆那麼強但會使不太強的子彈偏離。 -block.phase-wall-large.description = 沒有釷牆那麼強但會使不太強的子彈偏離。\n佔據多個方塊。 -block.surge-wall.description = 最強的防衛方塊。\n有小的機會對攻擊者觸發閃電。 -block.surge-wall-large.description = 最強的防衛方塊。\n有小的機會對攻擊者觸發閃電。\n佔據多個方塊。 +block.phase-wall.description = 沒有釷牆那麼堅固但特殊的相位化合物塗層會使大多的子彈偏離。 +block.phase-wall-large.description = 沒有釷牆那麼堅固但特殊的相位化合物塗層會使大多的子彈偏離。\n佔據多個方塊。 +block.surge-wall.description = 最強的防禦方塊。\n有低機率對攻擊者觸發閃電。 +block.surge-wall-large.description = 最強的防禦方塊。\n有低機率對攻擊者觸發閃電。\n佔據多個方塊。 block.door.description = 可以通過點擊打開和關閉的一扇小門。\n如果打開,敵人可以穿過它射擊和移動。 block.door-large.description = 可以通過點擊打開和關閉的一扇大門。\n如果打開,敵人可以穿過它射擊和移動。\n佔據多個方塊。 -block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. -block.mend-projector.description = 定期修復附近的建築物。 -block.overdrive-projector.description = 提高附近建築物的速度,如鑽頭和輸送帶。 -block.force-projector.description = 在自身周圍形成一個六角形力場,保護內部的建築物和單位免受子彈的傷害。 +block.mender.description = 定期修復附近的建築物。在每一波之間保持防禦力的修復。\n可選擇使用矽來提高範圍和效率。 +block.mend-projector.description = 高級的修理方塊。可選擇使用相織布增加範圍和效率。 +block.overdrive-projector.description = 提高附近建築物的速度,如鑽頭和輸送帶。可選擇使用相織布增加範圍和效率。 +block.force-projector.description = 在自身周圍形成一個六角形能量力場護盾,保護內部的建築物和單位免受傷害。承受太多傷害時會過熱。可選擇用冷卻液避免過熱。可以使用相織布增加護盾範圍。 block.shock-mine.description = 傷害踩到地雷的敵人。敵人幾乎看不見。 block.conveyor.description = 基本物品傳輸方塊。將物品向前移動並自動將它們放入砲塔或機器中。能夠旋轉方向。 block.titanium-conveyor.description = 高級物品傳輸方塊。比標準輸送帶更快地移動物品。 @@ -1010,79 +1072,80 @@ block.junction.description = 作為兩個交叉輸送帶的橋樑。適用於兩 block.bridge-conveyor.description = 高級的物品運輸方塊。允許跨過最多3個任何地形或建築物的方塊運輸物品。 block.phase-conveyor.description = 高級物品傳輸方塊。使用能量將物品傳送到幾個方塊外連接的相織輸送帶。 block.sorter.description = 對物品進行分類。如果物品與所選種類匹配,則允許其通過。否則,物品將從左邊和右邊輸出。 -block.router.description = 接受來自一個方向的物品並將它們平均輸出到最多3個其他方向。 用於將物品從一個來源分割為多個目標。 +block.inverted-sorter.descriptions = 處理物品的方式類似於分類器,但將所選擇的物品輸出到側面。 +block.router.description = 接受來自一個方向的物品並將它們平均輸出到最多3個其他方向。用於將物品從一個來源分割為多個目標。 block.distributor.description = 高級的分配器,可將物品均分到最多7個其他方向。 block.overflow-gate.description = 分離器和分配器的組合。如果前面被擋住,則向從左邊和右邊輸出物品。 -block.mass-driver.description = 終極物品運輸方塊。收集幾件物品,然後將它們射向另一個長距離的質量驅動器。 +block.mass-driver.description = 終極物品運輸方塊。收集大量物品,然後將它們射向另一個質量驅動器。需要能源以運作。 block.mechanical-pump.description = 一種便宜的泵,輸出速度慢,但不使用能量。 -block.rotary-pump.description = 高級的泵,透過使用能量使輸出速度加倍。 -block.thermal-pump.description = 終極泵。輸出速度是機械泵的三倍並且是唯一能夠抽熔岩的泵。 -block.conduit.description = 基本液體運輸方塊。像輸送帶一樣工作,但是液體用的。最適用於提取器、泵或其他管線。 +block.rotary-pump.description = 高級的泵。抽更多液體,但需要能量。 +block.thermal-pump.description = 終極的泵。 +block.conduit.description = 基本液體運輸方塊。將液體往前輸送。用於提取器、泵或其他管線。 block.pulse-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.power-node-large.description = 範圍大於能量節點,最多可連接六個能量來源、接收或節點。 -block.surge-tower.description = An extremely long-range power node with fewer available connections. -block.battery.description = 有能量剩餘時,存儲電力並在能量短缺時提供能量。 +block.power-node.description = 將能量傳輸到相連的節點。該節點將從任何相鄰方塊接收能量或向任何相鄰方塊供應能量。 +block.power-node-large.description = 具有更大範圍和更多連接的高級電源節點。 +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.combustion-generator.description = 透過燃燒原油或可燃物品以產生能量。 +block.thermal-generator.description = 放置在熱的位置時會產生能量。 +block.turbine-generator.description = 比燃燒發電機更有效率,但需要水才能運作。 +block.differential-generator.description = 產生大量能量。利用冷卻液和燃燒的火焰彈之間的溫差產生大量的能量。 +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.mechanical-drill.description = 一種便宜的鑽頭。當放置在適當的方塊上時,以緩慢的速度無限期地輸出物品。 -block.pneumatic-drill.description = 一種改進的鑽頭。它挖掘更快,能夠利用氣壓挖掘更硬的材料。 +block.thorium-reactor.description = 從高度放射性釷產生大量能量。需要持續冷卻。如果供應的冷卻劑不足,會劇烈爆炸。產生的能量取決於釷裝載量,滿載時會達到基礎發電功率。 +block.impact-reactor.description = 先進的發電機,在尖峰值效率時能產生巨量能量。需要大量的電源輸入才能啟動該過程。 +block.mechanical-drill.description = 一種便宜的鑽頭。當放置在適當的方塊上時,以緩慢的速度無限期地輸出物品。只能挖掘基本的原料。 +block.pneumatic-drill.description = 一種改進的鑽頭,可以挖掘鈦。比機械鑽頭挖掘的更快。 block.laser-drill.description = 通過激光技術可以更快地挖掘,但需要能量。此外,這種鑽頭可以挖掘放射性釷。 block.blast-drill.description = 終極的鑽頭。需要大量能量。 -block.water-extractor.description = 從地下提取水。當附近沒有湖泊時使用它。 -block.cultivator.description = 用水培養土壤以獲得生物物質。 -block.oil-extractor.description = 使用大量的能量從沙子中提取油。當附近沒有直接的石油來源時使用它。 -block.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.water-extractor.description = 從地下提取水。當附近沒有湖泊時可以使用它。 +block.cultivator.description = 將大氣中微小濃度的胞子培養成工業等級的孢子莢。 +block.oil-extractor.description = 使用大量的能量、水以及沙子鑽取原油。當附近沒有直接的原油來源時使用它。 +block.core-shard.description = 初代的核心膠囊。一旦被摧毀,與該地區的所有聯繫都將失去。不要讓這種情況發生。 +block.core-foundation.description = 第二代核心。有更好的裝甲。可以存儲更多資源。 +block.core-nucleus.description = 第三代核心,也是最後一代。裝甲非常好。可以存儲大量資源。 +block.vault.description = 存儲大量的每一種物品。當物品需求非恆定時,使用它來創建緩衝。使用[LIGHT_GRAY]裝卸器[]以從存儲庫提取物品。 +block.container.description = 存儲少量的每一種物品。當物品需求非恆定時,使用它來創建緩衝。使用[LIGHT_GRAY]裝卸器[]以從容器提取物品。 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.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.arc.description = 一種向敵人射出隨機電弧的小砲塔。 -block.swarmer.description = 一種射出爆炸導彈的中型砲塔。 -block.salvo.description = 一種齊射的中型砲塔。 -block.fuse.description = 一種射出強大的短程射線的大型砲塔。 -block.ripple.description = 一種一次射出幾發子彈的大型火砲。 -block.cyclone.description = 一種快速射擊的大型砲塔。 -block.spectre.description = 一種一次射出兩顆強大的子彈的大型砲塔。 -block.meltdown.description = 一種射出強大的遠程光束的大型砲塔。 -block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. -block.draug-factory.description = Produces Draug mining drones. -block.spirit-factory.description = 生產輕型無人機,用於開採礦石和修復方塊。 -block.phantom-factory.description = 生產高級的無人機,比輕型無人機明顯更有效。 -block.wraith-factory.description = 生產快速、打了就跑的攔截機單位。 +block.scorch.description = 燃燒所有靠近它的地面敵人。在近距離效果很好。 +block.hail.description = 一種小型的長距離迫擊砲。 +block.wave.description = 一種可以向敵人噴灑液體束的中型砲塔。提供水時可以自動滅火。 +block.lancer.description = 一種對地的中型雷射砲塔。充能並發射出強大的能源束。 +block.arc.description = 一種近距的小型電擊砲塔。向敵人發射電弧。 +block.swarmer.description = 一種中型導彈砲塔。能攻擊空中和地面的敵人。發射追蹤導彈。 +block.salvo.description = 一種更大、更先進版本的雙炮。快速地向敵人齊射數發子彈。 +block.fuse.description = 一種近距的大型能量砲塔。向敵人發射三道貫穿性的能源束。 +block.ripple.description = 極為強大的迫擊炮塔。一次向敵人發射數發子彈。 +block.cyclone.description = 一種對空和對地的大型砲塔。向附近單位發射爆裂性的碎塊。 +block.spectre.description = 一種雙炮管的巨型砲塔。向空中及地面敵人發射大型的穿甲彈。 +block.meltdown.description = 一種巨型激光砲塔。充能並發射持續性的激光光束。需要冷卻液以運作。 +block.command-center.description = 向地圖上的盟軍發出移動命令。\n使單位巡邏,攻擊敵人的核心或撤退到核心/工廠。當沒有敵人核心時,部隊將默認在攻擊命令下進行巡邏。 +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.revenant-factory.description = 生產重型飛行導彈單位。 +block.dagger-factory.description = 生產基本地面單位。 +block.crawler-factory.description = 生產快速的自爆部隊。 block.titan-factory.description = 生產具有裝甲的高級地面單位。 block.fortress-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.trident-ship-pad.description = 離開現在的船隻,換成具有相當不錯裝甲的重型轟炸機。\n站在上面雙擊墊以使用它。 -block.glaive-ship-pad.description = 離開現在的船隻,換成具有重裝甲的武裝直升機。\n站在上面雙擊墊以使用它。 +block.dart-mech-pad.description = 提供轉換為基本攻擊機甲的能力。\n站在上面的時候按下它使用。 +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.trident-ship-pad.description = 離開現在的船隻,換成具有相當不錯裝甲的重型轟炸機。\n站在上面雙擊機坪以使用它。 +block.glaive-ship-pad.description = 離開現在的船隻,換成具有重裝甲的砲艇。\n站在上面雙擊機坪以使用它。 diff --git a/core/assets/contributors b/core/assets/contributors index 72684ac274..cff8b843f1 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -29,6 +29,8 @@ BeefEX Lorex laohuaji233 Spico The Spirit Guy +TunacanGamer +kemalinanc13 Zachary Fenr1r Jaiun Lee @@ -78,4 +80,5 @@ itskatt Agent-Laevain AzariasB amrsoll +ねらひかだ Draco diff --git a/core/assets/sprites/schematic-background.png b/core/assets/sprites/schematic-background.png new file mode 100644 index 0000000000..d0085b65d9 Binary files /dev/null and b/core/assets/sprites/schematic-background.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index f9cbd723c2..36c66dab43 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -6,5712 +6,5775 @@ filter: Nearest,Nearest repeat: none force-projector-top rotate: false - xy: 651, 752 + xy: 553, 735 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mend-projector-top rotate: false - xy: 1177, 1097 + xy: 1135, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mender-top rotate: false - xy: 1993, 1169 + xy: 1700, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 overdrive-projector-top rotate: false - xy: 1309, 1229 + xy: 1267, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shock-mine rotate: false - xy: 1111, 668 + xy: 1870, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-arrow rotate: false - xy: 817, 416 + xy: 1216, 915 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-bridge rotate: false - xy: 853, 512 + xy: 1231, 779 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-end rotate: false - xy: 887, 512 + xy: 1231, 745 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 center rotate: false - xy: 853, 478 + xy: 1231, 711 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-0 rotate: false - xy: 797, 1736 + xy: 1370, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-armored-conveyor-full rotate: false - xy: 797, 1736 + xy: 1370, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-1 rotate: false - xy: 1599, 1121 + xy: 1404, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-2 rotate: false - xy: 1721, 1243 + xy: 1438, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-3 rotate: false - xy: 1599, 1087 + xy: 1472, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-0 rotate: false - xy: 1599, 1053 + xy: 1506, 1079 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-1 rotate: false - xy: 1599, 1019 + xy: 1540, 1079 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-2 rotate: false - xy: 1599, 985 + xy: 1574, 1079 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-3 rotate: false - xy: 1599, 951 + xy: 1608, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-0 rotate: false - xy: 1599, 917 + xy: 1642, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-1 rotate: false - xy: 1599, 883 + xy: 1676, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-2 rotate: false - xy: 1599, 849 + xy: 1710, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-3 rotate: false - xy: 1599, 815 + xy: 1744, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-0 rotate: false - xy: 1599, 781 + xy: 1778, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-1 rotate: false - xy: 1775, 1369 + xy: 1812, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-2 rotate: false - xy: 1775, 1335 + xy: 1846, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-3 rotate: false - xy: 1775, 1301 + xy: 1880, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-0 rotate: false - xy: 1809, 1373 + xy: 1914, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-1 rotate: false - xy: 1809, 1339 + xy: 1948, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-2 rotate: false - xy: 1843, 1373 + xy: 1320, 1033 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-3 rotate: false - xy: 1809, 1305 + xy: 1354, 1037 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-1 rotate: false - xy: 919, 395 + xy: 1231, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-2 rotate: false - xy: 919, 361 + xy: 1231, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-3 rotate: false - xy: 919, 327 + xy: 1231, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-0 rotate: false - xy: 919, 293 + xy: 1231, 99 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-1 rotate: false - xy: 955, 489 + xy: 1231, 65 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-2 rotate: false - xy: 989, 489 + xy: 1231, 31 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-3 rotate: false - xy: 955, 455 + xy: 951, 20 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-0 rotate: false - xy: 989, 455 + xy: 985, 20 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-1 rotate: false - xy: 953, 421 + xy: 1019, 5 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-2 rotate: false - xy: 953, 387 + xy: 1286, 999 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-3 rotate: false - xy: 987, 421 + xy: 1320, 999 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-0 rotate: false - xy: 953, 353 + xy: 1354, 1003 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-1 rotate: false - xy: 987, 387 + xy: 1388, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-2 rotate: false - xy: 953, 319 + xy: 1422, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-3 rotate: false - xy: 987, 353 + xy: 1456, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-0 rotate: false - xy: 987, 319 + xy: 1490, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-1 rotate: false - xy: 953, 285 + xy: 1524, 1011 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-2 rotate: false - xy: 987, 285 + xy: 1558, 1011 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-3 rotate: false - xy: 1516, 761 + xy: 1592, 1011 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-1 rotate: false - xy: 1667, 1125 + xy: 1938, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-2 rotate: false - xy: 1667, 1091 + xy: 1284, 897 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-3 rotate: false - xy: 1667, 1057 + xy: 1318, 897 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-0 rotate: false - xy: 1667, 1023 + xy: 1299, 863 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-1 rotate: false - xy: 1667, 989 + xy: 1299, 829 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-2 rotate: false - xy: 1667, 955 + xy: 1299, 795 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-3 rotate: false - xy: 1667, 921 + xy: 1299, 761 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-0 rotate: false - xy: 1667, 887 + xy: 1299, 727 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-1 rotate: false - xy: 1667, 853 + xy: 1299, 693 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-2 rotate: false - xy: 1667, 819 + xy: 1299, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-3 rotate: false - xy: 1667, 785 + xy: 1299, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-0 rotate: false - xy: 1701, 1107 + xy: 1299, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-1 rotate: false - xy: 1701, 1073 + xy: 1299, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-2 rotate: false - xy: 1701, 1039 + xy: 1299, 523 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-3 rotate: false - xy: 1701, 1005 + xy: 1299, 489 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-0 rotate: false - xy: 1701, 971 + xy: 1299, 455 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-1 rotate: false - xy: 1701, 937 + xy: 1299, 421 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-2 rotate: false - xy: 1701, 903 + xy: 1299, 387 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-3 rotate: false - xy: 1701, 869 + xy: 1299, 353 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mass-driver-base rotate: false - xy: 852, 1657 + xy: 717, 261 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 phase-conveyor-arrow rotate: false - xy: 1781, 1165 + xy: 1836, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-bridge rotate: false - xy: 1713, 1141 + xy: 1870, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-end rotate: false - xy: 1747, 1131 + xy: 1904, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 blast-drill rotate: false - xy: 1804, 1917 + xy: 204, 993 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 blast-drill-rim rotate: false - xy: 323, 1392 + xy: 334, 993 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 blast-drill-rotator rotate: false - xy: 526, 1595 + xy: 477, 1371 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 blast-drill-top rotate: false - xy: 453, 1392 + xy: 413, 1241 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 drill-top rotate: false - xy: 1111, 1229 + xy: 913, 457 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-liquid rotate: false - xy: 1111, 1229 + xy: 913, 457 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 laser-drill rotate: false - xy: 749, 946 + xy: 619, 343 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 laser-drill-rim rotate: false - xy: 749, 848 + xy: 619, 245 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 laser-drill-rotator rotate: false - xy: 749, 750 + xy: 619, 147 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 laser-drill-top rotate: false - xy: 749, 652 + xy: 619, 49 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mechanical-drill rotate: false - xy: 1309, 1295 + xy: 937, 1256 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mechanical-drill-rotator rotate: false - xy: 1045, 965 + xy: 1003, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mechanical-drill-top rotate: false - xy: 1111, 1031 + xy: 1069, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 oil-extractor rotate: false - xy: 852, 1559 + xy: 717, 163 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 oil-extractor-liquid rotate: false - xy: 950, 1657 + xy: 717, 65 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 oil-extractor-rotator rotate: false - xy: 950, 1559 + xy: 749, 751 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 oil-extractor-top rotate: false - xy: 1048, 1657 + xy: 815, 653 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 pneumatic-drill rotate: false - xy: 1309, 1163 + xy: 1663, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pneumatic-drill-rotator rotate: false - xy: 1375, 1229 + xy: 1729, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pneumatic-drill-top rotate: false - xy: 1045, 833 + xy: 1795, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor rotate: false - xy: 1441, 1097 + xy: 1713, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor-liquid rotate: false - xy: 1441, 1031 + xy: 1779, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor-rotator rotate: false - xy: 1441, 965 + xy: 1845, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor-top rotate: false - xy: 1441, 899 + xy: 1911, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-border rotate: false - xy: 1877, 1339 + xy: 1490, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-middle rotate: false - xy: 627, 12 + xy: 1163, 473 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-select rotate: false - xy: 1244, 675 + xy: 1197, 745 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 885, 410 + xy: 1231, 473 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 place-arrow rotate: false - xy: 1048, 1559 + xy: 815, 555 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 rubble-1-0 rotate: false - xy: 1177, 965 + xy: 1927, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rubble-1-1 rotate: false - xy: 1243, 1031 + xy: 921, 1183 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rubble-2-0 rotate: false - xy: 1309, 1097 + xy: 1003, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rubble-2-1 rotate: false - xy: 1375, 1163 + xy: 1069, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rubble-3-0 rotate: false - xy: 1244, 1657 + xy: 815, 261 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 rubble-3-1 rotate: false - xy: 1244, 1657 + xy: 815, 261 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 rubble-4-0 rotate: false - xy: 423, 742 + xy: 1059, 1497 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 rubble-4-1 rotate: false - xy: 423, 742 + xy: 1059, 1497 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 +rubble-5-0 + rotate: false + xy: 1876, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +rubble-5-1 + rotate: false + xy: 1876, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +rubble-6-0 + rotate: false + xy: 1, 750 + size: 192, 192 + orig: 192, 192 + offset: 0, 0 + index: -1 +rubble-6-1 + rotate: false + xy: 1, 750 + size: 192, 192 + orig: 192, 192 + offset: 0, 0 + index: -1 +rubble-7-0 + rotate: false + xy: 323, 1501 + size: 224, 224 + orig: 224, 224 + offset: 0, 0 + index: -1 +rubble-7-1 + rotate: false + xy: 323, 1501 + size: 224, 224 + orig: 224, 224 + offset: 0, 0 + index: -1 +rubble-8-0 + rotate: false + xy: 1, 1147 + size: 256, 256 + orig: 256, 256 + offset: 0, 0 + index: -1 +rubble-8-1 + rotate: false + xy: 1, 1147 + size: 256, 256 + orig: 256, 256 + offset: 0, 0 + index: -1 bridge-conduit-arrow rotate: false - xy: 817, 382 + xy: 1216, 881 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-arrow rotate: false - xy: 817, 382 + xy: 1216, 881 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-bridge rotate: false - xy: 817, 348 + xy: 1231, 847 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-end rotate: false - xy: 817, 314 + xy: 1231, 813 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 921, 497 + xy: 1231, 643 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-0 rotate: false - xy: 851, 444 + xy: 1231, 609 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-1 rotate: false - xy: 851, 410 + xy: 1231, 575 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-2 rotate: false - xy: 885, 444 + xy: 1231, 541 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-3 rotate: false - xy: 885, 444 + xy: 1231, 541 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-4 rotate: false - xy: 885, 444 + xy: 1231, 541 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-6 rotate: false - xy: 885, 444 + xy: 1231, 541 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-5 rotate: false - xy: 851, 376 + xy: 1231, 507 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-0 rotate: false - xy: 851, 342 + xy: 1231, 439 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-1 rotate: false - xy: 885, 376 + xy: 1231, 405 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-2 rotate: false - xy: 885, 342 + xy: 1231, 371 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-3 rotate: false - xy: 851, 308 + xy: 1231, 337 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-3 rotate: false - xy: 851, 308 + xy: 1231, 337 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-4 rotate: false - xy: 885, 308 + xy: 1231, 303 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-5 rotate: false - xy: 921, 463 + xy: 1231, 269 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-6 rotate: false - xy: 919, 429 + xy: 1231, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-bottom rotate: false - xy: 1670, 679 + xy: 1462, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-liquid rotate: false - xy: 1670, 645 + xy: 1496, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-top rotate: false - xy: 1823, 1169 + xy: 1530, 977 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-tank-bottom rotate: false - xy: 754, 1632 + xy: 717, 653 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 liquid-tank-liquid rotate: false - xy: 754, 1534 + xy: 717, 555 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 liquid-tank-top rotate: false - xy: 779, 1436 + xy: 717, 457 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 phase-conduit-arrow rotate: false - xy: 1679, 1167 + xy: 1734, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-bridge rotate: false - xy: 1713, 1175 + xy: 1768, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-end rotate: false - xy: 1747, 1165 + xy: 1802, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-0 rotate: false - xy: 1815, 1135 + xy: 1292, 931 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-1 rotate: false - xy: 1849, 1135 + xy: 1326, 931 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-2 rotate: false - xy: 1883, 1135 + xy: 1360, 935 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-4 rotate: false - xy: 1917, 1135 + xy: 1394, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-5 rotate: false - xy: 1951, 1135 + xy: 1428, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-6 rotate: false - xy: 1985, 1135 + xy: 1462, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 battery rotate: false - xy: 1843, 1339 + xy: 1388, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-battery-full rotate: false - xy: 1843, 1339 + xy: 1388, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 battery-large rotate: false - xy: 293, 384 + xy: 527, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-battery-large-full rotate: false - xy: 293, 384 + xy: 527, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 combustion-generator-top rotate: false - xy: 887, 478 + xy: 1231, 677 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 differential-generator-liquid rotate: false - xy: 651, 1142 + xy: 521, 343 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 differential-generator-top rotate: false - xy: 651, 1044 + xy: 521, 245 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 impact-reactor rotate: false - xy: 219, 1262 + xy: 1586, 1757 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-bottom rotate: false - xy: 349, 1262 + xy: 1716, 1757 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-light rotate: false - xy: 479, 1262 + xy: 1846, 1757 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-0 rotate: false - xy: 293, 1132 + xy: 929, 1586 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-1 rotate: false - xy: 293, 1002 + xy: 1059, 1627 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-2 rotate: false - xy: 423, 1132 + xy: 1189, 1627 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-3 rotate: false - xy: 293, 872 + xy: 1319, 1627 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 power-source rotate: false - xy: 1781, 1131 + xy: 1938, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rtg-generator-top rotate: false - xy: 1985, 1101 + xy: 1666, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-reactor-center rotate: false - xy: 1342, 1559 + xy: 549, 1583 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 thorium-reactor-lights rotate: false - xy: 877, 1461 + xy: 647, 1583 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 turbine-generator-top rotate: false - xy: 1375, 767 + xy: 1449, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 alloy-smelter rotate: false - xy: 1, 1 + xy: 1, 4 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-alloy-smelter-full rotate: false - xy: 1, 1 + xy: 1, 4 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 alloy-smelter-top rotate: false - xy: 1934, 1949 + xy: 1449, 1529 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 blast-mixer rotate: false - xy: 295, 24 + xy: 1976, 1821 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-blast-mixer-full rotate: false - xy: 295, 24 + xy: 1976, 1821 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cryofluidmixer-bottom rotate: false - xy: 913, 801 + xy: 890, 1051 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cryofluidmixer-liquid rotate: false - xy: 979, 867 + xy: 890, 985 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cryofluidmixer-top rotate: false - xy: 913, 735 + xy: 890, 919 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cultivator rotate: false - xy: 979, 801 + xy: 890, 853 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cultivator-middle rotate: false - xy: 979, 735 + xy: 913, 787 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cultivator-top rotate: false - xy: 1045, 1295 + xy: 913, 721 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 kiln-top rotate: false - xy: 1111, 1097 + xy: 871, 1315 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 silicon-smelter-top rotate: false - xy: 1111, 1097 + xy: 871, 1315 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-weaver rotate: false - xy: 1045, 899 + xy: 1399, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-weaver-bottom rotate: false - xy: 1111, 965 + xy: 1465, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-weaver-weave rotate: false - xy: 1177, 1031 + xy: 1531, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plastanium-compressor-top rotate: false - xy: 1243, 1097 + xy: 1597, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pulverizer rotate: false - xy: 1815, 1101 + xy: 1496, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 1849, 1101 + xy: 1530, 943 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pump-liquid rotate: false - xy: 1883, 1101 + xy: 1564, 943 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 separator-liquid rotate: false - xy: 1309, 965 + xy: 1729, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press rotate: false - xy: 1177, 767 + xy: 1861, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-frame0 rotate: false - xy: 1243, 833 + xy: 1927, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-frame1 rotate: false - xy: 1309, 899 + xy: 987, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-frame2 rotate: false - xy: 1375, 965 + xy: 1053, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-liquid rotate: false - xy: 1243, 767 + xy: 1119, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-top rotate: false - xy: 1309, 833 + xy: 1185, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 +unloader-center + rotate: false + xy: 1299, 285 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 arc-heat rotate: false - xy: 609, 1262 + xy: 1286, 1033 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-1 rotate: false - xy: 1877, 1373 + xy: 1422, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-2 rotate: false - xy: 1073, 1493 + xy: 1976, 1755 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-3 rotate: false - xy: 423, 514 + xy: 1547, 1529 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-4 rotate: false - xy: 163, 1031 + xy: 543, 1241 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 hail-heat rotate: false - xy: 1557, 1001 + xy: 613, 7 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 lancer-heat rotate: false - xy: 1243, 1229 + xy: 937, 1322 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 meltdown-heat rotate: false - xy: 293, 742 + xy: 1579, 1627 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 ripple-heat rotate: false - xy: 1146, 1559 + xy: 815, 359 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 salvo-heat rotate: false - xy: 1111, 833 + xy: 1201, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 salvo-panel-left rotate: false - xy: 1177, 899 + xy: 1267, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 salvo-panel-right rotate: false - xy: 1243, 965 + xy: 1333, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scorch-heat rotate: false - xy: 1021, 387 + xy: 1734, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 wave-liquid rotate: false - xy: 1441, 767 + xy: 956, 1035 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 crawler-factory rotate: false - xy: 913, 867 + xy: 855, 1183 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dagger-factory rotate: false - xy: 913, 867 + xy: 855, 1183 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 draug-factory rotate: false - xy: 913, 867 + xy: 855, 1183 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phantom-factory rotate: false - xy: 913, 867 + xy: 855, 1183 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spirit-factory rotate: false - xy: 913, 867 + xy: 855, 1183 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 wraith-factory rotate: false - xy: 913, 867 + xy: 855, 1183 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 crawler-factory-top rotate: false - xy: 979, 933 + xy: 890, 1117 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dagger-factory-top rotate: false - xy: 1045, 1229 + xy: 913, 655 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 draug-factory-top rotate: false - xy: 1045, 1163 + xy: 913, 523 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 fortress-factory rotate: false - xy: 651, 654 + xy: 651, 751 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 fortress-factory-top rotate: false - xy: 749, 1240 + xy: 619, 637 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 ghoul-factory-top rotate: false - xy: 749, 1240 + xy: 619, 637 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 titan-factory-top rotate: false - xy: 749, 1240 + xy: 619, 637 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 ghoul-factory rotate: false - xy: 749, 1044 + xy: 619, 441 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 phantom-factory-top rotate: false - xy: 1375, 1295 + xy: 1333, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rally-point rotate: false - xy: 1111, 899 + xy: 1861, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 repair-point-base rotate: false - xy: 1951, 1101 + xy: 1632, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 revenant-factory rotate: false - xy: 423, 872 + xy: 1709, 1627 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 revenant-factory-top rotate: false - xy: 293, 612 + xy: 1839, 1627 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 spirit-factory-top rotate: false - xy: 1375, 1031 + xy: 1795, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 titan-factory rotate: false - xy: 975, 1461 + xy: 745, 1579 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 wraith-factory-top rotate: false - xy: 1045, 701 + xy: 1022, 1101 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 door-large-open rotate: false - xy: 1111, 1295 + xy: 913, 589 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 door-open rotate: false - xy: 1568, 679 + xy: 1898, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall-huge2 rotate: false - xy: 1244, 1559 + xy: 815, 163 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 scrap-wall-huge3 rotate: false - xy: 1342, 1657 + xy: 815, 65 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 scrap-wall-large1 rotate: false - xy: 1375, 1097 + xy: 1465, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-large2 rotate: false - xy: 1111, 767 + xy: 1531, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-large3 rotate: false - xy: 1177, 833 + xy: 1597, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-large4 rotate: false - xy: 1243, 899 + xy: 1663, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall2 rotate: false - xy: 1021, 353 + xy: 1768, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall3 rotate: false - xy: 1021, 319 + xy: 1802, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall4 rotate: false - xy: 1021, 285 + xy: 1836, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall5 rotate: false - xy: 1021, 285 + xy: 1836, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bullet rotate: false - xy: 913, 681 + xy: 1494, 1113 size: 52, 52 orig: 52, 52 offset: 0, 0 index: -1 bullet-back rotate: false - xy: 967, 681 + xy: 1548, 1113 size: 52, 52 orig: 52, 52 offset: 0, 0 index: -1 casing rotate: false - xy: 847, 660 + xy: 1255, 13 size: 8, 16 orig: 8, 16 offset: 0, 0 index: -1 circle-shadow rotate: false - xy: 645, 1844 + xy: 863, 1846 size: 201, 201 orig: 201, 201 offset: 0, 0 index: -1 error rotate: false - xy: 1497, 1453 + xy: 1029, 655 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 laser rotate: false - xy: 1039, 685 + xy: 195, 894 size: 4, 48 orig: 4, 48 offset: 0, 0 index: -1 laser-end rotate: false - xy: 489, 208 + xy: 549, 1509 size: 72, 72 orig: 72, 72 offset: 0, 0 index: -1 minelaser rotate: false - xy: 155, 301 + xy: 1059, 1796 size: 4, 48 orig: 4, 48 offset: 0, 0 index: -1 minelaser-end rotate: false - xy: 651, 580 + xy: 623, 1509 size: 72, 72 orig: 72, 72 offset: 0, 0 index: -1 missile rotate: false - xy: 759, 1732 + xy: 863, 1808 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 missile-back rotate: false - xy: 1599, 1155 + xy: 1248, 1029 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 scale_marker rotate: false - xy: 1469, 1553 + xy: 607, 1371 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 scorch1 rotate: false - xy: 2019, 1067 + xy: 1299, 183 size: 28, 100 orig: 28, 100 offset: 0, 0 index: -1 scorch2 rotate: false - xy: 1735, 1029 + xy: 1299, 81 size: 28, 100 orig: 28, 100 offset: 0, 0 index: -1 scorch3 rotate: false - xy: 1765, 1029 + xy: 1333, 795 size: 28, 100 orig: 28, 100 offset: 0, 0 index: -1 scorch4 rotate: false - xy: 1735, 927 + xy: 1333, 693 size: 28, 100 orig: 28, 100 offset: 0, 0 index: -1 scorch5 rotate: false - xy: 1765, 927 + xy: 1333, 591 size: 28, 100 orig: 28, 100 offset: 0, 0 index: -1 shell rotate: false - xy: 1641, 1197 + xy: 1206, 987 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 shell-back rotate: false - xy: 1683, 1239 + xy: 1332, 1071 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 shot rotate: false - xy: 863, 274 + xy: 1904, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 transfer rotate: false - xy: 155, 251 + xy: 2038, 1999 size: 4, 48 orig: 4, 48 offset: 0, 0 index: -1 transfer-arrow rotate: false - xy: 1701, 835 + xy: 1299, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 transfer-end rotate: false - xy: 759, 1770 + xy: 607, 1435 size: 72, 72 orig: 72, 72 offset: 0, 0 index: -1 white rotate: false - xy: 645, 1725 + xy: 2044, 2044 size: 3, 3 orig: 3, 3 offset: 0, 0 index: -1 arc rotate: false - xy: 1045, 1361 + xy: 723, 1145 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-arc-full rotate: false - xy: 1843, 1305 + xy: 1456, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-drill-full rotate: false - xy: 163, 901 + xy: 799, 1677 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-bridge-conduit-full rotate: false - xy: 1911, 1373 + xy: 1524, 1045 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit rotate: false - xy: 1911, 1373 + xy: 1524, 1045 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-bridge-conveyor-full rotate: false - xy: 1877, 1305 + xy: 1558, 1045 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor rotate: false - xy: 1877, 1305 + xy: 1558, 1045 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-char-full rotate: false - xy: 1911, 1339 + xy: 1592, 1045 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliffs-full rotate: false - xy: 1945, 1373 + xy: 1626, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-coal-centrifuge-full rotate: false - xy: 563, 216 + xy: 1969, 1689 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 coal-centrifuge rotate: false - xy: 563, 216 + xy: 1969, 1689 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-combustion-generator-full rotate: false - xy: 1911, 1305 + xy: 1660, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 combustion-generator rotate: false - xy: 1911, 1305 + xy: 1660, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-command-center-full rotate: false - xy: 361, 24 + xy: 843, 1537 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 command-center rotate: false - xy: 361, 24 + xy: 843, 1537 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-conduit-full rotate: false - xy: 1945, 1339 + xy: 1694, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-container-full rotate: false - xy: 1139, 1493 + xy: 909, 1520 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 container rotate: false - xy: 1139, 1493 + xy: 909, 1520 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-conveyor-full rotate: false - xy: 1979, 1373 + xy: 1728, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-0 rotate: false - xy: 1979, 1373 + xy: 1728, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-copper-wall-full rotate: false - xy: 1945, 1305 + xy: 1762, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper-wall rotate: false - xy: 1945, 1305 + xy: 1762, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-copper-wall-large-full rotate: false - xy: 629, 216 + xy: 975, 1520 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 copper-wall-large rotate: false - xy: 629, 216 + xy: 975, 1520 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-core-foundation-full rotate: false - xy: 163, 771 + xy: 929, 1716 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 core-foundation rotate: false - xy: 163, 771 + xy: 929, 1716 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-core-nucleus-full rotate: false - xy: 1, 999 + xy: 1066, 1887 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 core-nucleus rotate: false - xy: 1, 999 + xy: 1066, 1887 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 block-core-shard-full rotate: false - xy: 293, 286 + xy: 1645, 1529 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 core-shard rotate: false - xy: 293, 286 + xy: 1645, 1529 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-craters-full rotate: false - xy: 1979, 1339 + xy: 1796, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-crawler-factory-full rotate: false - xy: 1205, 1493 + xy: 697, 1513 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-cryofluidmixer-full rotate: false - xy: 695, 216 + xy: 763, 1513 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-cultivator-full rotate: false - xy: 1271, 1493 + xy: 681, 1443 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-cyclone-full rotate: false - xy: 656, 1632 + xy: 1743, 1529 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-dagger-factory-full rotate: false - xy: 1337, 1493 + xy: 747, 1447 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-dark-metal-full rotate: false - xy: 2013, 1373 + xy: 1830, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-1-full rotate: false - xy: 1979, 1305 + xy: 1864, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-2-full rotate: false - xy: 2013, 1339 + xy: 1898, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-3-full rotate: false - xy: 2013, 1305 + xy: 1932, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-4-full rotate: false - xy: 1775, 1267 + xy: 1966, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-5-full rotate: false - xy: 1809, 1271 + xy: 2000, 1065 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-6-full rotate: false - xy: 1843, 1271 + xy: 2000, 1031 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-full rotate: false - xy: 1877, 1271 + xy: 1122, 949 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-tainted-water-full rotate: false - xy: 1911, 1271 + xy: 1156, 949 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-water-full rotate: false - xy: 1945, 1271 + xy: 1114, 915 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dart-mech-pad-full rotate: false - xy: 427, 24 + xy: 813, 1447 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dart-mech-pad rotate: false - xy: 427, 24 + xy: 813, 1447 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-deepwater-full rotate: false - xy: 1979, 1271 + xy: 1114, 881 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-delta-mech-pad-full rotate: false - xy: 847, 1272 + xy: 879, 1454 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 delta-mech-pad rotate: false - xy: 847, 1272 + xy: 879, 1454 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-differential-generator-full rotate: false - xy: 553, 1164 + xy: 1841, 1529 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 differential-generator rotate: false - xy: 553, 1164 + xy: 1841, 1529 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-distributor-full rotate: false - xy: 847, 1206 + xy: 945, 1454 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 distributor rotate: false - xy: 847, 1206 + xy: 945, 1454 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-door-full rotate: false - xy: 2013, 1271 + xy: 1148, 915 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 door rotate: false - xy: 2013, 1271 + xy: 1148, 915 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-door-large-full rotate: false - xy: 847, 1140 + xy: 681, 1377 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 door-large rotate: false - xy: 847, 1140 + xy: 681, 1377 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-draug-factory-full rotate: false - xy: 847, 1074 + xy: 747, 1381 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-dunerocks-full rotate: false - xy: 563, 182 + xy: 1148, 881 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-duo-full rotate: false - xy: 597, 182 + xy: 1190, 949 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-force-projector-full rotate: false - xy: 553, 1066 + xy: 464, 1029 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 force-projector rotate: false - xy: 553, 1066 + xy: 464, 1029 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-fortress-factory-full rotate: false - xy: 553, 968 + xy: 464, 931 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-fuse-full rotate: false - xy: 553, 870 + xy: 464, 833 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-ghoul-factory-full rotate: false - xy: 553, 772 + xy: 455, 735 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-glaive-ship-pad-full rotate: false - xy: 553, 674 + xy: 625, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 glaive-ship-pad rotate: false - xy: 553, 674 + xy: 625, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-graphite-press-full rotate: false - xy: 847, 1008 + xy: 813, 1381 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 graphite-press rotate: false - xy: 847, 1008 + xy: 813, 1381 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-grass-full rotate: false - xy: 631, 182 + xy: 1182, 915 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hail-full rotate: false - xy: 665, 182 + xy: 1182, 881 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-holostone-full rotate: false - xy: 699, 182 + xy: 1129, 847 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hotrock-full rotate: false - xy: 733, 182 + xy: 1129, 813 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-full rotate: false - xy: 767, 182 + xy: 1163, 847 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-snow-full rotate: false - xy: 557, 148 + xy: 1129, 779 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icerocks-full rotate: false - xy: 591, 148 + xy: 1163, 813 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ignarock-full rotate: false - xy: 625, 148 + xy: 1129, 745 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-impact-reactor-full rotate: false - xy: 163, 641 + xy: 204, 863 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-incinerator-full rotate: false - xy: 659, 148 + xy: 1163, 779 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 incinerator rotate: false - xy: 659, 148 + xy: 1163, 779 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-inverted-sorter-full rotate: false - xy: 693, 148 + xy: 1129, 711 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 inverted-sorter rotate: false - xy: 693, 148 + xy: 1129, 711 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-item-source-full rotate: false - xy: 727, 148 + xy: 1163, 745 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source rotate: false - xy: 727, 148 + xy: 1163, 745 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-item-void-full rotate: false - xy: 761, 148 + xy: 1129, 677 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void rotate: false - xy: 761, 148 + xy: 1129, 677 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-javelin-ship-pad-full rotate: false - xy: 847, 942 + xy: 879, 1388 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 javelin-ship-pad rotate: false - xy: 847, 942 + xy: 879, 1388 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-junction-full rotate: false - xy: 559, 114 + xy: 1163, 711 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 junction rotate: false - xy: 559, 114 + xy: 1163, 711 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-kiln-full rotate: false - xy: 847, 876 + xy: 945, 1388 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 kiln rotate: false - xy: 847, 876 + xy: 945, 1388 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-lancer-full rotate: false - xy: 847, 810 + xy: 673, 1311 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-laser-drill-full rotate: false - xy: 553, 576 + xy: 562, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-launch-pad-full rotate: false - xy: 99, 1 + xy: 562, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 launch-pad rotate: false - xy: 99, 1 + xy: 562, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-launch-pad-large-full rotate: false - xy: 163, 511 + xy: 334, 863 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 launch-pad-large rotate: false - xy: 163, 511 + xy: 334, 863 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-liquid-junction-full rotate: false - xy: 559, 80 + xy: 1129, 643 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-junction rotate: false - xy: 559, 80 + xy: 1129, 643 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-router-full rotate: false - xy: 593, 114 + xy: 1163, 677 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-source-full rotate: false - xy: 559, 46 + xy: 1129, 609 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-source rotate: false - xy: 559, 46 + xy: 1129, 609 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-tank-full rotate: false - xy: 197, 23 + xy: 562, 849 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-magmarock-full rotate: false - xy: 593, 80 + xy: 1163, 643 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-driver-full rotate: false - xy: 656, 1534 + xy: 660, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-mechanical-drill-full rotate: false - xy: 847, 744 + xy: 673, 1245 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-mechanical-pump-full rotate: false - xy: 627, 114 + xy: 1129, 575 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mechanical-pump rotate: false - xy: 627, 114 + xy: 1129, 575 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-meltdown-full rotate: false - xy: 163, 381 + xy: 195, 733 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-melter-full rotate: false - xy: 559, 12 + xy: 1163, 609 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 melter rotate: false - xy: 559, 12 + xy: 1163, 609 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mend-projector-full rotate: false - xy: 847, 678 + xy: 1011, 1431 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mend-projector rotate: false - xy: 847, 678 + xy: 1011, 1431 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-mender-full rotate: false - xy: 593, 46 + xy: 1129, 541 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mender rotate: false - xy: 593, 46 + xy: 1129, 541 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-message-full rotate: false - xy: 627, 80 + xy: 1163, 575 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 message rotate: false - xy: 627, 80 + xy: 1163, 575 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-2-full rotate: false - xy: 661, 114 + xy: 1129, 507 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-3-full rotate: false - xy: 593, 12 + xy: 1163, 541 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-5-full rotate: false - xy: 627, 46 + xy: 1129, 473 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-damaged-full rotate: false - xy: 661, 80 + xy: 1163, 507 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-full rotate: false - xy: 695, 114 + xy: 1129, 439 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-moss-full rotate: false - xy: 661, 46 + xy: 1129, 405 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-multi-press-full rotate: false - xy: 293, 188 + xy: 660, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 multi-press rotate: false - xy: 293, 188 + xy: 660, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-oil-extractor-full rotate: false - xy: 391, 384 + xy: 660, 849 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-omega-mech-pad-full rotate: false - xy: 391, 286 + xy: 423, 635 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 omega-mech-pad rotate: false - xy: 391, 286 + xy: 423, 635 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-ore-coal-full rotate: false - xy: 695, 80 + xy: 1163, 439 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-coal-medium rotate: false - xy: 695, 80 + xy: 1163, 439 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-coal-large rotate: false - xy: 609, 1296 + xy: 1407, 1455 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-coal-small rotate: false - xy: 583, 1410 + xy: 1053, 13 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-coal-tiny rotate: false - xy: 1448, 691 + xy: 1041, 1568 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-coal-xlarge rotate: false - xy: 1548, 1553 + xy: 1014, 855 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-copper-full rotate: false - xy: 729, 114 + xy: 1129, 371 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-copper-medium rotate: false - xy: 729, 114 + xy: 1129, 371 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-copper-large rotate: false - xy: 1557, 1253 + xy: 549, 1685 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-copper-small rotate: false - xy: 1934, 1923 + xy: 259, 1379 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-copper-tiny rotate: false - xy: 583, 1392 + xy: 1041, 1550 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-copper-xlarge rotate: false - xy: 1598, 1553 + xy: 1752, 1117 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-lead-full rotate: false - xy: 661, 12 + xy: 1163, 405 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-lead-medium rotate: false - xy: 661, 12 + xy: 1163, 405 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-lead-large rotate: false - xy: 1557, 1211 + xy: 571, 9 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-lead-small rotate: false - xy: 521, 586 + xy: 847, 757 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-lead-tiny rotate: false - xy: 1448, 673 + xy: 1041, 1532 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-lead-xlarge rotate: false - xy: 1648, 1553 + xy: 1802, 1117 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-scrap-full rotate: false - xy: 695, 46 + xy: 1129, 337 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-scrap-medium rotate: false - xy: 695, 46 + xy: 1129, 337 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-scrap-large rotate: false - xy: 1557, 1169 + xy: 867, 23 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-scrap-small rotate: false - xy: 423, 488 + xy: 1993, 1237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-scrap-tiny rotate: false - xy: 155, 103 + xy: 1041, 1514 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-scrap-xlarge rotate: false - xy: 923, 531 + xy: 1852, 1117 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-thorium-full rotate: false - xy: 729, 80 + xy: 1163, 371 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-thorium-medium rotate: false - xy: 729, 80 + xy: 1163, 371 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-thorium-large rotate: false - xy: 1557, 1127 + xy: 591, 1685 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-thorium-small rotate: false - xy: 219, 1162 + xy: 901, 1820 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-thorium-tiny rotate: false - xy: 852, 1541 + xy: 204, 1129 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-thorium-xlarge rotate: false - xy: 973, 523 + xy: 1902, 1117 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-titanium-full rotate: false - xy: 695, 12 + xy: 1129, 303 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-titanium-medium rotate: false - xy: 695, 12 + xy: 1129, 303 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-titanium-large rotate: false - xy: 1557, 1085 + xy: 99, 2 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-titanium-small rotate: false - xy: 1073, 1467 + xy: 1972, 989 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-titanium-tiny rotate: false - xy: 877, 1443 + xy: 1407, 1437 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-titanium-xlarge rotate: false - xy: 1466, 717 + xy: 979, 804 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-overdrive-projector-full rotate: false - xy: 491, 142 + xy: 1077, 1431 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 overdrive-projector rotate: false - xy: 491, 142 + xy: 1077, 1431 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-overflow-gate-full rotate: false - xy: 729, 46 + xy: 1163, 337 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 overflow-gate rotate: false - xy: 729, 46 + xy: 1163, 337 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pebbles-full rotate: false - xy: 729, 12 + xy: 1129, 269 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phantom-factory-full rotate: false - xy: 725, 586 + xy: 1143, 1431 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-phase-conduit-full rotate: false - xy: 763, 114 + xy: 1163, 303 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit rotate: false - xy: 763, 114 + xy: 1163, 303 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-conveyor-full rotate: false - xy: 763, 80 + xy: 1129, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor rotate: false - xy: 763, 80 + xy: 1129, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-wall-full rotate: false - xy: 763, 46 + xy: 1163, 269 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall rotate: false - xy: 763, 46 + xy: 1163, 269 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-wall-large-full rotate: false - xy: 791, 586 + xy: 1209, 1431 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-wall-large rotate: false - xy: 791, 586 + xy: 1209, 1431 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-phase-weaver-full rotate: false - xy: 903, 1395 + xy: 1275, 1431 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-pine-full rotate: false - xy: 1698, 1553 + xy: 979, 754 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plastanium-compressor-full rotate: false - xy: 969, 1395 + xy: 1341, 1431 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plastanium-compressor rotate: false - xy: 969, 1395 + xy: 1341, 1431 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-pneumatic-drill-full rotate: false - xy: 1035, 1395 + xy: 1011, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-power-node-full rotate: false - xy: 763, 12 + xy: 1129, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-node rotate: false - xy: 763, 12 + xy: 1129, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-node-large-full rotate: false - xy: 1403, 1493 + xy: 1077, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 power-node-large rotate: false - xy: 1403, 1493 + xy: 1077, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-power-source-full rotate: false - xy: 801, 182 + xy: 1163, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-void-full rotate: false - xy: 795, 148 + xy: 1129, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void rotate: false - xy: 795, 148 + xy: 1129, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pulse-conduit-full rotate: false - xy: 797, 114 + xy: 1163, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pulverizer-full rotate: false - xy: 797, 80 + xy: 1129, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pyratite-mixer-full rotate: false - xy: 1101, 1427 + xy: 1143, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pyratite-mixer rotate: false - xy: 1101, 1427 + xy: 1143, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-repair-point-full rotate: false - xy: 797, 46 + xy: 1163, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-revenant-factory-full rotate: false - xy: 848, 1755 + xy: 325, 733 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-ripple-full rotate: false - xy: 391, 188 + xy: 423, 537 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-rock-full rotate: false - xy: 1730, 1607 + xy: 979, 704 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rocks-full rotate: false - xy: 797, 12 + xy: 1129, 99 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rotary-pump-full rotate: false - xy: 1167, 1427 + xy: 1209, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rotary-pump rotate: false - xy: 1167, 1427 + xy: 1209, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-router-full rotate: false - xy: 1466, 683 + xy: 1163, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 router rotate: false - xy: 1466, 683 + xy: 1163, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rtg-generator-full rotate: false - xy: 1233, 1427 + xy: 1275, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rtg-generator rotate: false - xy: 1233, 1427 + xy: 1275, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-salt-full rotate: false - xy: 1500, 683 + xy: 1129, 65 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-saltrocks-full rotate: false - xy: 829, 148 + xy: 1163, 99 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-salvo-full rotate: false - xy: 1299, 1427 + xy: 1341, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-sand-boulder-full rotate: false - xy: 831, 114 + xy: 1129, 31 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-full rotate: false - xy: 831, 80 + xy: 1163, 65 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-water-full rotate: false - xy: 831, 46 + xy: 1163, 31 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sandrocks-full rotate: false - xy: 831, 12 + xy: 1197, 847 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scatter-full rotate: false - xy: 1365, 1427 + xy: 1407, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-scorch-full rotate: false - xy: 1176, 675 + xy: 1197, 813 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-full rotate: false - xy: 1210, 675 + xy: 1197, 779 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall1 rotate: false - xy: 1210, 675 + xy: 1197, 779 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-gigantic-full rotate: false - xy: 978, 1755 + xy: 163, 603 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 scrap-wall-gigantic rotate: false - xy: 978, 1755 + xy: 163, 603 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-scrap-wall-huge-full rotate: false - xy: 295, 90 + xy: 423, 439 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 scrap-wall-huge1 rotate: false - xy: 295, 90 + xy: 423, 439 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-scrap-wall-large-full rotate: false - xy: 1431, 1427 + xy: 1473, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-separator-full rotate: false - xy: 1101, 1361 + xy: 1539, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 separator rotate: false - xy: 1101, 1361 + xy: 1539, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-shale-boulder-full rotate: false - xy: 1278, 675 + xy: 1197, 711 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shale-full rotate: false - xy: 1312, 675 + xy: 1197, 677 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shalerocks-full rotate: false - xy: 1346, 675 + xy: 1197, 643 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shock-mine-full rotate: false - xy: 1380, 675 + xy: 1197, 609 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shrubs-full rotate: false - xy: 1414, 675 + xy: 1197, 575 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-silicon-smelter-full rotate: false - xy: 1167, 1361 + xy: 1605, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 silicon-smelter rotate: false - xy: 1167, 1361 + xy: 1605, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-snow-full rotate: false - xy: 725, 552 + xy: 1197, 541 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snow-pine-full rotate: false - xy: 1780, 1607 + xy: 979, 654 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snowrock-full rotate: false - xy: 1830, 1607 + xy: 979, 604 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snowrocks-full rotate: false - xy: 759, 552 + xy: 1197, 507 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-solar-panel-full rotate: false - xy: 793, 552 + xy: 1197, 473 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel rotate: false - xy: 793, 552 + xy: 1197, 473 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-solar-panel-large-full rotate: false - xy: 393, 90 + xy: 423, 341 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 solar-panel-large rotate: false - xy: 393, 90 + xy: 423, 341 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-sorter-full rotate: false - xy: 717, 518 + xy: 1197, 439 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sorter rotate: false - xy: 717, 518 + xy: 1197, 439 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spawn-full rotate: false - xy: 717, 484 + xy: 1197, 405 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spectre-full rotate: false - xy: 1108, 1755 + xy: 163, 473 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-spirit-factory-full rotate: false - xy: 1233, 1361 + xy: 1671, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-spore-cluster-full rotate: false - xy: 1557, 1043 + xy: 2001, 1389 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-moss-full rotate: false - xy: 751, 518 + xy: 1197, 371 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-pine-full rotate: false - xy: 1880, 1607 + xy: 979, 554 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spore-press-full rotate: false - xy: 1299, 1361 + xy: 1737, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-sporerocks-full rotate: false - xy: 785, 518 + xy: 1197, 337 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-stone-full rotate: false - xy: 751, 484 + xy: 1197, 303 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-tower-full rotate: false - xy: 1365, 1361 + xy: 1803, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 surge-tower rotate: false - xy: 1365, 1361 + xy: 1803, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-surge-wall-full rotate: false - xy: 785, 484 + xy: 1197, 269 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall rotate: false - xy: 785, 484 + xy: 1197, 269 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-wall-large-full rotate: false - xy: 1431, 1361 + xy: 1869, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 surge-wall-large rotate: false - xy: 1431, 1361 + xy: 1869, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-swarmer-full rotate: false - xy: 857, 612 + xy: 1935, 1365 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-tainted-water-full rotate: false - xy: 783, 450 + xy: 1197, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tar-full rotate: false - xy: 783, 416 + xy: 1197, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tau-mech-pad-full rotate: false - xy: 857, 546 + xy: 723, 1179 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 tau-mech-pad rotate: false - xy: 857, 546 + xy: 723, 1179 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-tendrils-full rotate: false - xy: 783, 382 + xy: 1197, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thermal-generator-full rotate: false - xy: 761, 216 + xy: 739, 1311 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thermal-generator rotate: false - xy: 761, 216 + xy: 739, 1311 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-thermal-pump-full rotate: false - xy: 521, 478 + xy: 423, 243 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 thermal-pump rotate: false - xy: 521, 478 + xy: 423, 243 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-thorium-reactor-full rotate: false - xy: 489, 380 + xy: 423, 145 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 thorium-reactor rotate: false - xy: 489, 380 + xy: 423, 145 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-thorium-wall-full rotate: false - xy: 783, 348 + xy: 1197, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-wall rotate: false - xy: 783, 348 + xy: 1197, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thorium-wall-large-full rotate: false - xy: 493, 76 + xy: 739, 1245 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thorium-wall-large rotate: false - xy: 493, 76 + xy: 739, 1245 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-thruster-full rotate: false - xy: 1238, 1755 + xy: 293, 603 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 thruster rotate: false - xy: 1238, 1755 + xy: 293, 603 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-titan-factory-full rotate: false - xy: 489, 282 + xy: 423, 47 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-titanium-conveyor-full rotate: false - xy: 783, 314 + xy: 1197, 99 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-0 rotate: false - xy: 783, 314 + xy: 1197, 99 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-wall-full rotate: false - xy: 819, 518 + xy: 1197, 65 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall rotate: false - xy: 819, 518 + xy: 1197, 65 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-wall-large-full rotate: false - xy: 493, 10 + xy: 805, 1315 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 titanium-wall-large rotate: false - xy: 493, 10 + xy: 805, 1315 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-trident-ship-pad-full rotate: false - xy: 913, 1329 + xy: 805, 1249 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 trident-ship-pad rotate: false - xy: 913, 1329 + xy: 805, 1249 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-turbine-generator-full rotate: false - xy: 913, 1263 + xy: 789, 1179 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator rotate: false - xy: 913, 1263 + xy: 789, 1179 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-unloader-full rotate: false - xy: 819, 484 + xy: 1197, 31 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 unloader rotate: false - xy: 819, 484 + xy: 1197, 31 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-vault-full rotate: false - xy: 619, 478 + xy: 1449, 1431 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 vault rotate: false - xy: 619, 478 + xy: 1449, 1431 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-water-extractor-full rotate: false - xy: 979, 1329 + xy: 758, 1113 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-water-full rotate: false - xy: 817, 450 + xy: 1224, 953 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-wave-full rotate: false - xy: 913, 1197 + xy: 758, 1047 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-white-tree-dead-full rotate: false - xy: 1, 1725 + xy: 1, 1727 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 block-white-tree-full rotate: false - xy: 1, 1403 + xy: 1, 1405 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 block-wraith-factory-full rotate: false - xy: 979, 1263 + xy: 758, 981 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-1-0 rotate: false - xy: 1516, 727 + xy: 1626, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-1 rotate: false - xy: 1550, 757 + xy: 1660, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-2 rotate: false - xy: 1550, 723 + xy: 1694, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-3 rotate: false - xy: 1584, 747 + xy: 1728, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-4 rotate: false - xy: 1584, 713 + xy: 1762, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-5 rotate: false - xy: 1618, 747 + xy: 1796, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-6 rotate: false - xy: 1618, 713 + xy: 1830, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-7 rotate: false - xy: 1534, 689 + xy: 1864, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-2-0 rotate: false - xy: 913, 1131 + xy: 758, 915 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-1 rotate: false - xy: 979, 1197 + xy: 758, 849 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-2 rotate: false - xy: 913, 1065 + xy: 824, 1113 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-3 rotate: false - xy: 979, 1131 + xy: 824, 1047 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-4 rotate: false - xy: 913, 999 + xy: 824, 981 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-5 rotate: false - xy: 979, 1065 + xy: 824, 915 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-6 rotate: false - xy: 913, 933 + xy: 824, 849 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-7 rotate: false - xy: 979, 999 + xy: 847, 783 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-3-0 rotate: false - xy: 587, 380 + xy: 1547, 1431 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-1 rotate: false - xy: 587, 282 + xy: 1645, 1431 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-2 rotate: false - xy: 685, 380 + xy: 1743, 1431 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-3 rotate: false - xy: 685, 282 + xy: 1841, 1431 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-4 rotate: false - xy: 583, 1436 + xy: 1939, 1529 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-5 rotate: false - xy: 681, 1436 + xy: 1939, 1431 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-6 rotate: false - xy: 609, 1338 + xy: 521, 637 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-7 rotate: false - xy: 707, 1338 + xy: 521, 539 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-4-0 rotate: false - xy: 1758, 1787 + xy: 293, 343 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-1 rotate: false - xy: 1888, 1787 + xy: 293, 213 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-2 rotate: false - xy: 1498, 1661 + xy: 163, 83 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-3 rotate: false - xy: 1628, 1661 + xy: 293, 83 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-4 rotate: false - xy: 1758, 1657 + xy: 1066, 1757 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-5 rotate: false - xy: 1888, 1657 + xy: 1196, 1757 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-6 rotate: false - xy: 163, 251 + xy: 1326, 1757 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-7 rotate: false - xy: 155, 121 + xy: 1456, 1757 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-5-0 rotate: false - xy: 848, 1885 + xy: 1, 588 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-1 rotate: false - xy: 1, 837 + xy: 1228, 1887 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-2 rotate: false - xy: 1010, 1885 + xy: 1, 426 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-3 rotate: false - xy: 1, 675 + xy: 1390, 1887 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-4 rotate: false - xy: 1172, 1885 + xy: 1, 264 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-5 rotate: false - xy: 1, 513 + xy: 1552, 1887 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-6 rotate: false - xy: 1334, 1885 + xy: 1, 102 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-7 rotate: false - xy: 1, 351 + xy: 1714, 1887 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cyclone rotate: false - xy: 651, 1240 + xy: 521, 441 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 duo rotate: false - xy: 1602, 679 + xy: 1932, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fuse rotate: false - xy: 749, 1142 + xy: 619, 539 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 hail rotate: false - xy: 1534, 655 + xy: 1966, 1015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-blast-compound-large rotate: false - xy: 1557, 959 + xy: 655, 7 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-blast-compound-medium rotate: false - xy: 1602, 645 + xy: 1250, 919 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-blast-compound-small rotate: false - xy: 2019, 1531 + xy: 1299, 55 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-blast-compound-tiny rotate: false - xy: 197, 5 + xy: 697, 31 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-blast-compound-xlarge rotate: false - xy: 1597, 1403 + xy: 1029, 389 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-coal-large rotate: false - xy: 1557, 917 + xy: 909, 19 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-coal-medium rotate: false - xy: 1636, 645 + xy: 1265, 851 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-coal-small rotate: false - xy: 827, 560 + xy: 1333, 565 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-coal-tiny rotate: false - xy: 1021, 717 + xy: 1982, 1099 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-coal-xlarge rotate: false - xy: 1647, 1453 + xy: 1029, 339 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-copper-large rotate: false - xy: 1557, 875 + xy: 2001, 1347 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-copper-medium rotate: false - xy: 1721, 1209 + xy: 1265, 783 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-copper-small rotate: false - xy: 783, 288 + xy: 285, 1379 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-copper-tiny rotate: false - xy: 1079, 1377 + xy: 1129, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-copper-xlarge rotate: false - xy: 1647, 1403 + xy: 1029, 289 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-graphite-large rotate: false - xy: 1557, 833 + xy: 1993, 1305 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-graphite-medium rotate: false - xy: 1755, 1199 + xy: 1265, 715 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-graphite-small rotate: false - xy: 1145, 676 + xy: 873, 757 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-graphite-tiny rotate: false - xy: 897, 290 + xy: 1329, 235 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-graphite-xlarge rotate: false - xy: 1719, 1503 + xy: 1029, 239 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-lead-large rotate: false - xy: 1557, 791 + xy: 1993, 1263 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-lead-medium rotate: false - xy: 1789, 1199 + xy: 1265, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-lead-small rotate: false - xy: 1701, 809 + xy: 1972, 963 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-lead-tiny rotate: false - xy: 2027, 1253 + xy: 1011, 1502 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-lead-xlarge rotate: false - xy: 1697, 1453 + xy: 1029, 189 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-metaglass-large rotate: false - xy: 1607, 1361 + xy: 2002, 1141 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-metaglass-medium rotate: false - xy: 1823, 1203 + xy: 1265, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-metaglass-small rotate: false - xy: 1735, 901 + xy: 1299, 29 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-metaglass-tiny rotate: false - xy: 1795, 1113 + xy: 222, 1129 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-metaglass-xlarge rotate: false - xy: 1697, 1403 + xy: 1029, 139 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-phase-fabric-large rotate: false - xy: 1607, 1319 + xy: 2002, 1099 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-phase-fabric-medium rotate: false - xy: 1857, 1203 + xy: 1265, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-phase-fabric-small rotate: false - xy: 1960, 1923 + xy: 1333, 539 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-phase-fabric-tiny rotate: false - xy: 2019, 1513 + xy: 1425, 1437 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-phase-fabric-xlarge rotate: false - xy: 1769, 1507 + xy: 1029, 89 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-plastanium-large rotate: false - xy: 1649, 1361 + xy: 1080, 1059 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-plastanium-medium rotate: false - xy: 1891, 1203 + xy: 1265, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-plastanium-small rotate: false - xy: 449, 488 + xy: 1299, 3 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-plastanium-tiny rotate: false - xy: 271, 1170 + xy: 697, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-plastanium-xlarge rotate: false - xy: 1819, 1507 + xy: 1029, 39 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-pyratite-large rotate: false - xy: 1649, 1319 + xy: 1080, 1017 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-pyratite-medium rotate: false - xy: 1925, 1203 + xy: 1265, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-pyratite-small rotate: false - xy: 245, 1162 + xy: 1333, 513 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-pyratite-tiny rotate: false - xy: 501, 496 + xy: 1147, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-pyratite-xlarge rotate: false - xy: 1869, 1507 + xy: 157, 33 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-sand-large rotate: false - xy: 1691, 1361 + xy: 1080, 975 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-sand-medium rotate: false - xy: 1959, 1203 + xy: 1265, 307 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-sand-small rotate: false - xy: 809, 288 + xy: 1333, 487 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-sand-tiny rotate: false - xy: 501, 478 + xy: 1329, 217 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-sand-xlarge rotate: false - xy: 1919, 1507 + xy: 207, 33 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-scrap-large rotate: false - xy: 1691, 1319 + xy: 1122, 1067 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-scrap-medium rotate: false - xy: 1993, 1203 + xy: 1265, 239 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-scrap-small rotate: false - xy: 1735, 875 + xy: 1333, 461 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-scrap-tiny rotate: false - xy: 1761, 831 + xy: 240, 1129 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-scrap-xlarge rotate: false - xy: 1969, 1507 + xy: 257, 33 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-silicon-large rotate: false - xy: 1733, 1361 + xy: 1164, 1067 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-silicon-medium rotate: false - xy: 1633, 1121 + xy: 1265, 171 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-silicon-small rotate: false - xy: 1761, 901 + xy: 1333, 435 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-silicon-tiny rotate: false - xy: 173, 103 + xy: 1165, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-silicon-xlarge rotate: false - xy: 1747, 1453 + xy: 307, 33 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-spore-pod-large rotate: false - xy: 1733, 1319 + xy: 1122, 1025 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-spore-pod-medium rotate: false - xy: 1633, 1053 + xy: 1265, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-spore-pod-small rotate: false - xy: 1986, 1923 + xy: 1333, 409 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-spore-pod-tiny rotate: false - xy: 215, 5 + xy: 1329, 199 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-spore-pod-xlarge rotate: false - xy: 1747, 1403 + xy: 357, 33 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-surge-alloy-large rotate: false - xy: 1607, 1277 + xy: 1206, 1067 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-surge-alloy-medium rotate: false - xy: 1633, 985 + xy: 1265, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-surge-alloy-small rotate: false - xy: 475, 488 + xy: 1333, 383 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-surge-alloy-tiny rotate: false - xy: 1021, 699 + xy: 1183, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-surge-alloy-xlarge rotate: false - xy: 1797, 1457 + xy: 1952, 1117 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-thorium-large rotate: false - xy: 1649, 1277 + xy: 1164, 1025 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-thorium-medium rotate: false - xy: 1633, 917 + xy: 1248, 995 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-thorium-small rotate: false - xy: 1735, 849 + xy: 1333, 357 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-thorium-tiny rotate: false - xy: 1021, 681 + xy: 1329, 181 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-thorium-xlarge rotate: false - xy: 1797, 1407 + xy: 717, 15 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-titanium-large rotate: false - xy: 1691, 1277 + xy: 1122, 983 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-titanium-medium rotate: false - xy: 1633, 849 + xy: 1292, 965 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-titanium-small rotate: false - xy: 1761, 875 + xy: 1333, 331 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-titanium-tiny rotate: false - xy: 2027, 1235 + xy: 1201, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-titanium-xlarge rotate: false - xy: 1847, 1457 + xy: 767, 15 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 lancer rotate: false - xy: 1177, 1163 + xy: 871, 1249 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 liquid-cryofluid-large rotate: false - xy: 1733, 1277 + xy: 1248, 1067 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 liquid-cryofluid-medium rotate: false - xy: 1633, 781 + xy: 1360, 969 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-cryofluid-small rotate: false - xy: 1761, 849 + xy: 1333, 305 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquid-cryofluid-tiny rotate: false - xy: 1795, 1095 + xy: 1329, 163 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 liquid-cryofluid-xlarge rotate: false - xy: 1947, 1457 + xy: 1079, 813 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 liquid-oil-large rotate: false - xy: 1599, 1235 + xy: 1206, 1025 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 liquid-oil-medium rotate: false - xy: 1652, 713 + xy: 1428, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-oil-small rotate: false - xy: 1701, 783 + xy: 1998, 971 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquid-oil-tiny rotate: false - xy: 233, 5 + xy: 1219, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 liquid-oil-xlarge rotate: false - xy: 1947, 1407 + xy: 1079, 763 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 liquid-slag-large rotate: false - xy: 1599, 1193 + xy: 1164, 983 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 liquid-slag-medium rotate: false - xy: 1891, 1169 + xy: 1598, 977 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-slag-small rotate: false - xy: 2012, 1923 + xy: 1333, 279 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquid-slag-tiny rotate: false - xy: 2027, 1217 + xy: 1329, 145 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 liquid-slag-xlarge rotate: false - xy: 1997, 1457 + xy: 1079, 713 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 liquid-water-large rotate: false - xy: 1641, 1235 + xy: 1290, 1067 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 liquid-water-medium rotate: false - xy: 1959, 1169 + xy: 1666, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water-small rotate: false - xy: 1735, 823 + xy: 1329, 253 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquid-water-tiny rotate: false - xy: 1795, 1077 + xy: 1237, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 liquid-water-xlarge rotate: false - xy: 1997, 1407 + xy: 1079, 663 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 mass-driver rotate: false - xy: 805, 1338 + xy: 717, 359 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mech-alpha-mech-full rotate: false - xy: 1507, 1345 + xy: 1079, 613 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 mech-dart-ship-full rotate: false - xy: 1507, 1295 + xy: 1079, 563 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 mech-delta-mech-full rotate: false - xy: 1507, 1245 + xy: 1079, 513 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 mech-glaive-ship-full rotate: false - xy: 526, 1537 + xy: 1969, 1631 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 mech-javelin-ship-full rotate: false - xy: 1507, 1195 + xy: 1079, 463 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 mech-omega-mech-full rotate: false - xy: 1176, 709 + xy: 607, 1377 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 mech-tau-mech-full rotate: false - xy: 1498, 1603 + xy: 1088, 1109 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 mech-trident-ship-full rotate: false - xy: 584, 1537 + xy: 956, 912 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 meltdown rotate: false - xy: 423, 1002 + xy: 1449, 1627 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 repair-point rotate: false - xy: 1917, 1101 + xy: 1598, 943 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ripple rotate: false - xy: 1146, 1657 + xy: 815, 457 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 salvo rotate: false - xy: 1045, 767 + xy: 1135, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scatter rotate: false - xy: 1309, 1031 + xy: 1399, 1233 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scorch rotate: false - xy: 1021, 421 + xy: 1700, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spectre rotate: false - xy: 293, 482 + xy: 1189, 1497 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 swarmer rotate: false - xy: 1375, 899 + xy: 1251, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 unit-chaos-array-full rotate: false - xy: 423, 612 + xy: 1319, 1497 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 unit-crawler-full rotate: false - xy: 1507, 795 + xy: 1079, 63 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 unit-dagger-full rotate: false - xy: 1557, 1345 + xy: 1079, 13 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 unit-eradicator-full rotate: false - xy: 1, 99 + xy: 259, 1123 size: 152, 124 orig: 152, 124 offset: 0, 0 index: -1 unit-eruptor-full rotate: false - xy: 1441, 1295 + xy: 1515, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 unit-fortress-full rotate: false - xy: 1441, 1229 + xy: 1581, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 unit-titan-full rotate: false - xy: 1441, 1163 + xy: 1647, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 wave rotate: false - xy: 1441, 833 + xy: 956, 1101 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 item-blast-compound rotate: false - xy: 1568, 645 + xy: 2000, 997 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-coal rotate: false - xy: 1636, 679 + xy: 1250, 885 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-copper rotate: false - xy: 1679, 1201 + xy: 1265, 817 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-graphite rotate: false - xy: 1755, 1233 + xy: 1265, 749 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-lead rotate: false - xy: 1789, 1233 + xy: 1265, 681 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-metaglass rotate: false - xy: 1823, 1237 + xy: 1265, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-phase-fabric rotate: false - xy: 1857, 1237 + xy: 1265, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-plastanium rotate: false - xy: 1891, 1237 + xy: 1265, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-pyratite rotate: false - xy: 1925, 1237 + xy: 1265, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-sand rotate: false - xy: 1959, 1237 + xy: 1265, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-scrap rotate: false - xy: 1993, 1237 + xy: 1265, 273 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 1637, 1159 + xy: 1265, 205 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-spore-pod rotate: false - xy: 1633, 1087 + xy: 1265, 137 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 1633, 1019 + xy: 1265, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 1633, 951 + xy: 1265, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 1633, 883 + xy: 1258, 961 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-cryofluid rotate: false - xy: 1633, 815 + xy: 1326, 965 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-oil rotate: false - xy: 1652, 747 + xy: 1394, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-slag rotate: false - xy: 1857, 1169 + xy: 1564, 977 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water rotate: false - xy: 1925, 1169 + xy: 1632, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 alpha-mech rotate: false - xy: 923, 631 + xy: 521, 1 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 alpha-mech-base rotate: false - xy: 923, 581 + xy: 1602, 1117 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 alpha-mech-leg rotate: false - xy: 973, 631 + xy: 1652, 1117 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 delta-mech rotate: false - xy: 1519, 1503 + xy: 979, 54 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 delta-mech-base rotate: false - xy: 1569, 1503 + xy: 1029, 805 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 delta-mech-leg rotate: false - xy: 1619, 1503 + xy: 1029, 755 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 omega-mech rotate: false - xy: 1234, 709 + xy: 1146, 1109 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 omega-mech-armor rotate: false - xy: 1243, 1163 + xy: 1201, 1299 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 omega-mech-base rotate: false - xy: 1556, 1603 + xy: 956, 854 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 omega-mech-leg rotate: false - xy: 1292, 709 + xy: 1204, 1109 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 tau-mech rotate: false - xy: 1672, 1603 + xy: 1378, 1109 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 tau-mech-base rotate: false - xy: 1507, 895 + xy: 1079, 163 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 tau-mech-leg rotate: false - xy: 1507, 845 + xy: 1079, 113 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 dart-ship rotate: false - xy: 1469, 1503 + xy: 979, 104 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 glaive-ship rotate: false - xy: 1440, 1559 + xy: 99, 44 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 javelin-ship rotate: false - xy: 1847, 1407 + xy: 817, 15 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 javelin-ship-shield rotate: false - xy: 1897, 1457 + xy: 1064, 913 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 trident-ship rotate: false - xy: 1408, 709 + xy: 1436, 1109 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 blank rotate: false - xy: 913, 678 + xy: 1, 1 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 circle rotate: false - xy: 323, 1522 + xy: 1, 944 size: 201, 201 orig: 201, 201 offset: 0, 0 index: -1 shape-3 rotate: false - xy: 1111, 702 + xy: 956, 970 size: 63, 63 orig: 63, 63 offset: 0, 0 index: -1 chaos-array rotate: false - xy: 1368, 1755 + xy: 163, 343 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 chaos-array-base rotate: false - xy: 1498, 1791 + xy: 293, 473 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 chaos-array-leg rotate: false - xy: 1628, 1791 + xy: 163, 213 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 crawler rotate: false - xy: 1798, 1557 + xy: 979, 404 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 crawler-base rotate: false - xy: 1848, 1557 + xy: 979, 354 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 crawler-leg rotate: false - xy: 1898, 1557 + xy: 979, 304 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 dagger rotate: false - xy: 1980, 1607 + xy: 979, 254 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 dagger-base rotate: false - xy: 1948, 1557 + xy: 979, 204 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 dagger-leg rotate: false - xy: 1998, 1557 + xy: 979, 154 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 draug rotate: false - xy: 1669, 1503 + xy: 1029, 705 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 eradicator rotate: false - xy: 1496, 1921 + xy: 323, 1375 size: 152, 124 orig: 152, 124 offset: 0, 0 index: -1 eradicator-base rotate: false - xy: 1, 225 + xy: 645, 1681 size: 152, 124 orig: 152, 124 offset: 0, 0 index: -1 eradicator-leg rotate: false - xy: 1650, 1921 + xy: 259, 1249 size: 152, 124 orig: 152, 124 offset: 0, 0 index: -1 eruptor rotate: false - xy: 1177, 1295 + xy: 913, 391 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 eruptor-base rotate: false - xy: 1045, 1097 + xy: 913, 325 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 eruptor-leg rotate: false - xy: 1111, 1163 + xy: 913, 259 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 fortress rotate: false - xy: 1177, 1229 + xy: 913, 193 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 fortress-base rotate: false - xy: 1243, 1295 + xy: 913, 127 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 titan-base rotate: false - xy: 1243, 1295 + xy: 913, 127 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 fortress-leg rotate: false - xy: 1045, 1031 + xy: 913, 61 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 ghoul rotate: false - xy: 219, 1188 + xy: 843, 1603 size: 72, 72 orig: 72, 72 offset: 0, 0 index: -1 lich rotate: false - xy: 1, 1161 + xy: 645, 1807 size: 216, 240 orig: 216, 240 offset: 0, 0 index: -1 phantom rotate: false - xy: 1614, 1603 + xy: 1262, 1109 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 power-cell rotate: false - xy: 1350, 709 + xy: 1320, 1109 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 reaper rotate: false - xy: 323, 1725 + xy: 323, 1727 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 revenant rotate: false - xy: 645, 1730 + xy: 413, 1127 size: 112, 112 orig: 112, 112 offset: 0, 0 index: -1 spirit rotate: false - xy: 1507, 995 + xy: 1079, 263 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 titan rotate: false - xy: 1309, 767 + xy: 1317, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 titan-leg rotate: false - xy: 1375, 833 + xy: 1383, 1167 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 wraith rotate: false - xy: 1557, 1295 + xy: 1977, 1183 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 artillery-equip rotate: false - xy: 973, 573 + xy: 1014, 905 size: 48, 56 orig: 48, 56 offset: 0, 0 index: -1 blaster-equip rotate: false - xy: 1498, 1553 + xy: 1702, 1117 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 bomber-equip rotate: false - xy: 1930, 1607 + xy: 979, 504 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 missiles-equip rotate: false - xy: 1930, 1607 + xy: 979, 504 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 chain-blaster-equip rotate: false - xy: 1748, 1557 + xy: 979, 454 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 chaos-equip rotate: false - xy: 1440, 1617 + xy: 1022, 963 size: 56, 136 orig: 56, 136 offset: 0, 0 index: -1 eradication-equip rotate: false - xy: 651, 850 + xy: 521, 51 size: 96, 192 orig: 96, 192 offset: 0, 0 index: -1 eruption-equip rotate: false - xy: 1497, 1395 + xy: 1029, 597 size: 48, 56 orig: 48, 56 offset: 0, 0 index: -1 flakgun-equip rotate: false - xy: 1547, 1453 + xy: 1029, 547 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 flamethrower-equip rotate: false - xy: 1547, 1395 + xy: 1029, 489 size: 48, 56 orig: 48, 56 offset: 0, 0 index: -1 heal-blaster-equip rotate: false - xy: 1597, 1453 + xy: 1029, 439 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 lich-missiles-equip rotate: false - xy: 1897, 1407 + xy: 1064, 863 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 reaper-gun-equip rotate: false - xy: 1507, 1145 + xy: 1079, 413 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 revenant-missiles-equip rotate: false - xy: 1507, 1095 + xy: 1079, 363 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 shockgun-equip rotate: false - xy: 1507, 1045 + xy: 1079, 313 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 swarmer-equip rotate: false - xy: 1507, 945 + xy: 1079, 213 size: 48, 48 orig: 48, 48 offset: 0, 0 @@ -9090,10025 +9153,6 @@ wraith-factory-icon-editor index: -1 sprites4.png -size: 2048,1024 -format: RGBA8888 -filter: Nearest,Nearest -repeat: none -bar - rotate: false - xy: 967, 262 - size: 27, 36 - split: 9, 9, 9, 9 - orig: 27, 36 - offset: 0, 0 - index: -1 -bar-top - rotate: false - xy: 967, 300 - size: 27, 36 - split: 9, 10, 9, 10 - orig: 27, 36 - offset: 0, 0 - index: -1 -block-alloy-smelter-large - rotate: false - xy: 301, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-alloy-smelter-medium - rotate: false - xy: 2009, 941 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-alloy-smelter-small - rotate: false - xy: 2023, 575 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-alloy-smelter-tiny - rotate: false - xy: 2023, 505 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-alloy-smelter-xlarge - rotate: false - xy: 1, 670 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-arc-large - rotate: false - xy: 301, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-arc-medium - rotate: false - xy: 2009, 907 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-arc-small - rotate: false - xy: 2023, 549 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-arc-tiny - rotate: false - xy: 338, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-arc-xlarge - rotate: false - xy: 259, 928 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-armored-conveyor-large - rotate: false - xy: 343, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-armored-conveyor-medium - rotate: false - xy: 2009, 873 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-armored-conveyor-small - rotate: false - xy: 2023, 523 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-armored-conveyor-tiny - rotate: false - xy: 356, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-armored-conveyor-xlarge - rotate: false - xy: 1, 620 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-battery-large - rotate: false - xy: 301, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-battery-large-large - rotate: false - xy: 343, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-battery-large-medium - rotate: false - xy: 2009, 839 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-battery-large-small - rotate: false - xy: 581, 1 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-battery-large-tiny - rotate: false - xy: 374, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-battery-large-xlarge - rotate: false - xy: 259, 878 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-battery-medium - rotate: false - xy: 2009, 805 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-battery-small - rotate: false - xy: 607, 1 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-battery-tiny - rotate: false - xy: 392, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-battery-xlarge - rotate: false - xy: 1, 570 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-blast-drill-large - rotate: false - xy: 385, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-blast-drill-medium - rotate: false - xy: 2009, 771 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-blast-drill-small - rotate: false - xy: 633, 1 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-blast-drill-tiny - rotate: false - xy: 410, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-blast-drill-xlarge - rotate: false - xy: 259, 828 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-blast-mixer-large - rotate: false - xy: 301, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-blast-mixer-medium - rotate: false - xy: 1441, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-blast-mixer-small - rotate: false - xy: 659, 1 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-blast-mixer-tiny - rotate: false - xy: 428, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-blast-mixer-xlarge - rotate: false - xy: 1, 520 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-bridge-conduit-large - rotate: false - xy: 343, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-bridge-conduit-medium - rotate: false - xy: 1475, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-bridge-conduit-small - rotate: false - xy: 685, 1 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-bridge-conduit-tiny - rotate: false - xy: 446, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-bridge-conduit-xlarge - rotate: false - xy: 259, 778 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-bridge-conveyor-large - rotate: false - xy: 385, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-bridge-conveyor-medium - rotate: false - xy: 1509, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-bridge-conveyor-small - rotate: false - xy: 841, 274 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-bridge-conveyor-tiny - rotate: false - xy: 464, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-bridge-conveyor-xlarge - rotate: false - xy: 1, 470 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-char-large - rotate: false - xy: 427, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-char-medium - rotate: false - xy: 1543, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-char-small - rotate: false - xy: 2021, 745 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-char-tiny - rotate: false - xy: 482, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-char-xlarge - rotate: false - xy: 1, 420 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-cliffs-large - rotate: false - xy: 301, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-cliffs-medium - rotate: false - xy: 1577, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-cliffs-small - rotate: false - xy: 2021, 719 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-cliffs-tiny - rotate: false - xy: 1, 2 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-cliffs-xlarge - rotate: false - xy: 1, 370 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-coal-centrifuge-large - rotate: false - xy: 343, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-coal-centrifuge-medium - rotate: false - xy: 1611, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-coal-centrifuge-small - rotate: false - xy: 815, 266 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-coal-centrifuge-tiny - rotate: false - xy: 847, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-coal-centrifuge-xlarge - rotate: false - xy: 1, 320 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-combustion-generator-large - rotate: false - xy: 385, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-combustion-generator-medium - rotate: false - xy: 1645, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-combustion-generator-small - rotate: false - xy: 963, 236 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-combustion-generator-tiny - rotate: false - xy: 1003, 408 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-combustion-generator-xlarge - rotate: false - xy: 1, 270 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-command-center-large - rotate: false - xy: 427, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-command-center-medium - rotate: false - xy: 1679, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-command-center-small - rotate: false - xy: 841, 248 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-command-center-tiny - rotate: false - xy: 1025, 278 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-command-center-xlarge - rotate: false - xy: 1, 220 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-conduit-large - rotate: false - xy: 469, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-conduit-medium - rotate: false - xy: 1713, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-conduit-small - rotate: false - xy: 841, 222 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-conduit-tiny - rotate: false - xy: 1545, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-conduit-xlarge - rotate: false - xy: 1, 170 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-container-large - rotate: false - xy: 301, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-container-medium - rotate: false - xy: 1747, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-container-small - rotate: false - xy: 867, 242 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-container-tiny - rotate: false - xy: 19, 2 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-container-xlarge - rotate: false - xy: 1, 120 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-conveyor-large - rotate: false - xy: 343, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-conveyor-medium - rotate: false - xy: 1781, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-conveyor-small - rotate: false - xy: 841, 196 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-conveyor-tiny - rotate: false - xy: 1043, 278 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-conveyor-xlarge - rotate: false - xy: 1, 70 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-copper-wall-large - rotate: false - xy: 385, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-copper-wall-large-large - rotate: false - xy: 427, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-copper-wall-large-medium - rotate: false - xy: 1815, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-copper-wall-large-small - rotate: false - xy: 867, 216 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-copper-wall-large-tiny - rotate: false - xy: 1545, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-copper-wall-large-xlarge - rotate: false - xy: 1, 20 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-copper-wall-medium - rotate: false - xy: 1849, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-copper-wall-small - rotate: false - xy: 867, 190 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-copper-wall-tiny - rotate: false - xy: 1563, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-copper-wall-xlarge - rotate: false - xy: 87, 717 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-core-foundation-large - rotate: false - xy: 469, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-core-foundation-medium - rotate: false - xy: 1883, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-core-foundation-small - rotate: false - xy: 893, 216 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-core-foundation-tiny - rotate: false - xy: 1061, 278 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-core-foundation-xlarge - rotate: false - xy: 137, 717 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-core-nucleus-large - rotate: false - xy: 511, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-core-nucleus-medium - rotate: false - xy: 1917, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-core-nucleus-small - rotate: false - xy: 893, 190 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-core-nucleus-tiny - rotate: false - xy: 1563, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-core-nucleus-xlarge - rotate: false - xy: 187, 717 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-core-shard-large - rotate: false - xy: 301, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-core-shard-medium - rotate: false - xy: 1951, 691 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-core-shard-small - rotate: false - xy: 919, 216 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-core-shard-tiny - rotate: false - xy: 1581, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-core-shard-xlarge - rotate: false - xy: 345, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-craters-large - rotate: false - xy: 343, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-craters-medium - rotate: false - xy: 343, 19 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-craters-small - rotate: false - xy: 919, 190 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-craters-tiny - rotate: false - xy: 1079, 278 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-craters-xlarge - rotate: false - xy: 395, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-crawler-factory-large - rotate: false - xy: 385, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-crawler-factory-medium - rotate: false - xy: 377, 19 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-crawler-factory-small - rotate: false - xy: 867, 164 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-crawler-factory-tiny - rotate: false - xy: 1581, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-crawler-factory-xlarge - rotate: false - xy: 445, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-cryofluidmixer-large - rotate: false - xy: 427, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-cryofluidmixer-medium - rotate: false - xy: 411, 19 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-cryofluidmixer-small - rotate: false - xy: 867, 138 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-cryofluidmixer-tiny - rotate: false - xy: 1599, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-cryofluidmixer-xlarge - rotate: false - xy: 495, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-cultivator-large - rotate: false - xy: 469, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-cultivator-medium - rotate: false - xy: 445, 19 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-cultivator-small - rotate: false - xy: 893, 164 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-cultivator-tiny - rotate: false - xy: 1097, 278 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-cultivator-xlarge - rotate: false - xy: 545, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-cyclone-large - rotate: false - xy: 511, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-cyclone-medium - rotate: false - xy: 479, 19 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-cyclone-small - rotate: false - xy: 867, 112 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-cyclone-tiny - rotate: false - xy: 1599, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-cyclone-xlarge - rotate: false - xy: 595, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-dagger-factory-large - rotate: false - xy: 553, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-dagger-factory-medium - rotate: false - xy: 595, 129 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-dagger-factory-small - rotate: false - xy: 893, 138 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-dagger-factory-tiny - rotate: false - xy: 1617, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-dagger-factory-xlarge - rotate: false - xy: 645, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-dark-metal-large - rotate: false - xy: 301, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-dark-metal-medium - rotate: false - xy: 513, 32 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-dark-metal-small - rotate: false - xy: 919, 164 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-dark-metal-tiny - rotate: false - xy: 1115, 278 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-dark-metal-xlarge - rotate: false - xy: 695, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-dark-panel-1-large - rotate: false - xy: 343, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-dark-panel-1-medium - rotate: false - xy: 591, 95 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-dark-panel-1-small - rotate: false - xy: 867, 86 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-dark-panel-1-tiny - rotate: false - xy: 1617, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-dark-panel-1-xlarge - rotate: false - xy: 745, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-dark-panel-2-large - rotate: false - xy: 385, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-dark-panel-2-medium - rotate: false - xy: 637, 200 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-dark-panel-2-small - rotate: false - xy: 893, 112 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-dark-panel-2-tiny - rotate: false - xy: 1635, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-dark-panel-2-xlarge - rotate: false - xy: 795, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-dark-panel-3-large - rotate: false - xy: 427, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-dark-panel-3-medium - rotate: false - xy: 633, 166 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-dark-panel-3-small - rotate: false - xy: 919, 138 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-dark-panel-3-tiny - rotate: false - xy: 1133, 278 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-dark-panel-3-xlarge - rotate: false - xy: 845, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-dark-panel-4-large - rotate: false - xy: 469, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-dark-panel-4-medium - rotate: false - xy: 679, 242 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-dark-panel-4-small - rotate: false - xy: 893, 86 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-dark-panel-4-tiny - rotate: false - xy: 1635, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-dark-panel-4-xlarge - rotate: false - xy: 895, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-dark-panel-5-large - rotate: false - xy: 511, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-dark-panel-5-medium - rotate: false - xy: 721, 284 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-dark-panel-5-small - rotate: false - xy: 919, 112 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-dark-panel-5-tiny - rotate: false - xy: 1653, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-dark-panel-5-xlarge - rotate: false - xy: 945, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-dark-panel-6-large - rotate: false - xy: 553, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-dark-panel-6-medium - rotate: false - xy: 763, 326 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-dark-panel-6-small - rotate: false - xy: 919, 86 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-dark-panel-6-tiny - rotate: false - xy: 1653, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-dark-panel-6-xlarge - rotate: false - xy: 995, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-darksand-large - rotate: false - xy: 595, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-darksand-medium - rotate: false - xy: 805, 368 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-darksand-small - rotate: false - xy: 2021, 693 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-darksand-tainted-water-large - rotate: false - xy: 301, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-darksand-tainted-water-medium - rotate: false - xy: 847, 410 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-darksand-tainted-water-small - rotate: false - xy: 513, 6 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-darksand-tainted-water-tiny - rotate: false - xy: 1671, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-darksand-tainted-water-xlarge - rotate: false - xy: 1045, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-darksand-tiny - rotate: false - xy: 1671, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-darksand-water-large - rotate: false - xy: 343, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-darksand-water-medium - rotate: false - xy: 889, 452 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-darksand-water-small - rotate: false - xy: 996, 249 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-darksand-water-tiny - rotate: false - xy: 1689, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-darksand-water-xlarge - rotate: false - xy: 1095, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-darksand-xlarge - rotate: false - xy: 1145, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-dart-mech-pad-large - rotate: false - xy: 385, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-dart-mech-pad-medium - rotate: false - xy: 931, 494 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-dart-mech-pad-small - rotate: false - xy: 945, 210 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-dart-mech-pad-tiny - rotate: false - xy: 1689, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-dart-mech-pad-xlarge - rotate: false - xy: 1195, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-deepwater-large - rotate: false - xy: 427, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-deepwater-medium - rotate: false - xy: 973, 536 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-deepwater-small - rotate: false - xy: 945, 184 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-deepwater-tiny - rotate: false - xy: 1707, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-deepwater-xlarge - rotate: false - xy: 1245, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-delta-mech-pad-large - rotate: false - xy: 469, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-delta-mech-pad-medium - rotate: false - xy: 1015, 578 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-delta-mech-pad-small - rotate: false - xy: 945, 158 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-delta-mech-pad-tiny - rotate: false - xy: 1707, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-delta-mech-pad-xlarge - rotate: false - xy: 1295, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-differential-generator-large - rotate: false - xy: 511, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-differential-generator-medium - rotate: false - xy: 1057, 620 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-differential-generator-small - rotate: false - xy: 945, 132 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-differential-generator-tiny - rotate: false - xy: 1725, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-differential-generator-xlarge - rotate: false - xy: 1345, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-distributor-large - rotate: false - xy: 553, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-distributor-medium - rotate: false - xy: 1099, 662 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-distributor-small - rotate: false - xy: 945, 106 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-distributor-tiny - rotate: false - xy: 1725, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-distributor-xlarge - rotate: false - xy: 1395, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-door-large - rotate: false - xy: 595, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-door-large-large - rotate: false - xy: 637, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-door-large-medium - rotate: false - xy: 1133, 662 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-door-large-small - rotate: false - xy: 945, 80 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-door-large-tiny - rotate: false - xy: 1743, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-door-large-xlarge - rotate: false - xy: 1445, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-door-medium - rotate: false - xy: 1167, 662 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-door-small - rotate: false - xy: 971, 210 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-door-tiny - rotate: false - xy: 1743, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-door-xlarge - rotate: false - xy: 1495, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-draug-factory-large - rotate: false - xy: 301, 305 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-draug-factory-medium - rotate: false - xy: 1201, 662 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-draug-factory-small - rotate: false - xy: 971, 184 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-draug-factory-tiny - rotate: false - xy: 1761, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-draug-factory-xlarge - rotate: false - xy: 1545, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-dunerocks-large - rotate: false - xy: 343, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-dunerocks-medium - rotate: false - xy: 1235, 662 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-dunerocks-small - rotate: false - xy: 971, 158 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-dunerocks-tiny - rotate: false - xy: 1761, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-dunerocks-xlarge - rotate: false - xy: 1595, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-duo-large - rotate: false - xy: 385, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-duo-medium - rotate: false - xy: 1269, 662 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-duo-small - rotate: false - xy: 971, 132 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-duo-tiny - rotate: false - xy: 1779, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-duo-xlarge - rotate: false - xy: 1645, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-force-projector-large - rotate: false - xy: 427, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-force-projector-medium - rotate: false - xy: 1303, 662 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-force-projector-small - rotate: false - xy: 971, 106 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-force-projector-tiny - rotate: false - xy: 1779, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-force-projector-xlarge - rotate: false - xy: 1695, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-fortress-factory-large - rotate: false - xy: 469, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-fortress-factory-medium - rotate: false - xy: 1337, 662 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-fortress-factory-small - rotate: false - xy: 971, 80 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-fortress-factory-tiny - rotate: false - xy: 1797, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-fortress-factory-xlarge - rotate: false - xy: 1745, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-fuse-large - rotate: false - xy: 511, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-fuse-medium - rotate: false - xy: 1371, 662 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-fuse-small - rotate: false - xy: 997, 223 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-fuse-tiny - rotate: false - xy: 1797, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-fuse-xlarge - rotate: false - xy: 1795, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-ghoul-factory-large - rotate: false - xy: 553, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-ghoul-factory-medium - rotate: false - xy: 1405, 662 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-ghoul-factory-small - rotate: false - xy: 997, 197 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-ghoul-factory-tiny - rotate: false - xy: 1815, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-ghoul-factory-xlarge - rotate: false - xy: 1845, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-glaive-ship-pad-large - rotate: false - xy: 595, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-glaive-ship-pad-medium - rotate: false - xy: 1439, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-glaive-ship-pad-small - rotate: false - xy: 997, 171 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-glaive-ship-pad-tiny - rotate: false - xy: 1815, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-glaive-ship-pad-xlarge - rotate: false - xy: 1895, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-graphite-press-large - rotate: false - xy: 637, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-graphite-press-medium - rotate: false - xy: 1473, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-graphite-press-small - rotate: false - xy: 997, 145 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-graphite-press-tiny - rotate: false - xy: 1833, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-graphite-press-xlarge - rotate: false - xy: 1945, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-grass-large - rotate: false - xy: 679, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-grass-medium - rotate: false - xy: 1507, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-grass-small - rotate: false - xy: 997, 119 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-grass-tiny - rotate: false - xy: 1833, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-grass-xlarge - rotate: false - xy: 1995, 975 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-hail-large - rotate: false - xy: 301, 263 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-hail-medium - rotate: false - xy: 1541, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-hail-small - rotate: false - xy: 997, 93 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-hail-tiny - rotate: false - xy: 1851, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-hail-xlarge - rotate: false - xy: 237, 717 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-holostone-large - rotate: false - xy: 343, 305 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-holostone-medium - rotate: false - xy: 1575, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-holostone-small - rotate: false - xy: 997, 67 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-holostone-tiny - rotate: false - xy: 1851, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-holostone-xlarge - rotate: false - xy: 51, 667 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-hotrock-large - rotate: false - xy: 385, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-hotrock-medium - rotate: false - xy: 1609, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-hotrock-small - rotate: false - xy: 867, 60 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-hotrock-tiny - rotate: false - xy: 1869, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-hotrock-xlarge - rotate: false - xy: 51, 617 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-ice-large - rotate: false - xy: 427, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-ice-medium - rotate: false - xy: 1643, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-ice-small - rotate: false - xy: 893, 60 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-ice-snow-large - rotate: false - xy: 469, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-ice-snow-medium - rotate: false - xy: 1677, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-ice-snow-small - rotate: false - xy: 919, 60 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-ice-snow-tiny - rotate: false - xy: 1869, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-ice-snow-xlarge - rotate: false - xy: 101, 667 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-ice-tiny - rotate: false - xy: 1887, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-ice-xlarge - rotate: false - xy: 51, 567 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-icerocks-large - rotate: false - xy: 511, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-icerocks-medium - rotate: false - xy: 1711, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-icerocks-small - rotate: false - xy: 945, 54 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icerocks-tiny - rotate: false - xy: 1887, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icerocks-xlarge - rotate: false - xy: 101, 617 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-ignarock-large - rotate: false - xy: 553, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-ignarock-medium - rotate: false - xy: 1745, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-ignarock-small - rotate: false - xy: 971, 54 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-ignarock-tiny - rotate: false - xy: 1905, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-ignarock-xlarge - rotate: false - xy: 151, 667 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-impact-reactor-large - rotate: false - xy: 595, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-impact-reactor-medium - rotate: false - xy: 1779, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-impact-reactor-small - rotate: false - xy: 997, 41 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-impact-reactor-tiny - rotate: false - xy: 1905, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-impact-reactor-xlarge - rotate: false - xy: 51, 517 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-incinerator-large - rotate: false - xy: 637, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-incinerator-medium - rotate: false - xy: 1813, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-incinerator-small - rotate: false - xy: 1399, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-incinerator-tiny - rotate: false - xy: 1923, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-incinerator-xlarge - rotate: false - xy: 101, 567 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-inverted-sorter-large - rotate: false - xy: 679, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-inverted-sorter-medium - rotate: false - xy: 1847, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-inverted-sorter-small - rotate: false - xy: 1425, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-inverted-sorter-tiny - rotate: false - xy: 1923, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-inverted-sorter-xlarge - rotate: false - xy: 151, 617 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-item-source-large - rotate: false - xy: 721, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-item-source-medium - rotate: false - xy: 1881, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-item-source-small - rotate: false - xy: 1451, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-item-source-tiny - rotate: false - xy: 1941, 291 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-item-source-xlarge - rotate: false - xy: 201, 667 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-item-void-large - rotate: false - xy: 301, 221 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-item-void-medium - rotate: false - xy: 1915, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-item-void-small - rotate: false - xy: 1477, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-item-void-tiny - rotate: false - xy: 1941, 273 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-item-void-xlarge - rotate: false - xy: 51, 467 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-javelin-ship-pad-large - rotate: false - xy: 343, 263 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-javelin-ship-pad-medium - rotate: false - xy: 1949, 657 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-javelin-ship-pad-small - rotate: false - xy: 1503, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-javelin-ship-pad-tiny - rotate: false - xy: 2019, 675 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-javelin-ship-pad-xlarge - rotate: false - xy: 101, 517 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-junction-large - rotate: false - xy: 385, 305 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-junction-medium - rotate: false - xy: 553, 74 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-junction-small - rotate: false - xy: 1529, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-junction-tiny - rotate: false - xy: 1048, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-junction-xlarge - rotate: false - xy: 151, 567 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-kiln-large - rotate: false - xy: 427, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-kiln-medium - rotate: false - xy: 587, 61 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-kiln-small - rotate: false - xy: 1555, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-kiln-tiny - rotate: false - xy: 1066, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-kiln-xlarge - rotate: false - xy: 201, 617 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-lancer-large - rotate: false - xy: 469, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-lancer-medium - rotate: false - xy: 1987, 737 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-lancer-small - rotate: false - xy: 1581, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-lancer-tiny - rotate: false - xy: 1084, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-lancer-xlarge - rotate: false - xy: 51, 417 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-laser-drill-large - rotate: false - xy: 511, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-laser-drill-medium - rotate: false - xy: 1987, 703 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-laser-drill-small - rotate: false - xy: 1607, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-laser-drill-tiny - rotate: false - xy: 1102, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-laser-drill-xlarge - rotate: false - xy: 101, 467 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-launch-pad-large - rotate: false - xy: 553, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-launch-pad-large-large - rotate: false - xy: 595, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-launch-pad-large-medium - rotate: false - xy: 1985, 669 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-launch-pad-large-small - rotate: false - xy: 1633, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-launch-pad-large-tiny - rotate: false - xy: 1120, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-launch-pad-large-xlarge - rotate: false - xy: 151, 517 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-launch-pad-medium - rotate: false - xy: 1983, 635 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-launch-pad-small - rotate: false - xy: 1659, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-launch-pad-tiny - rotate: false - xy: 1138, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-launch-pad-xlarge - rotate: false - xy: 201, 567 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-liquid-junction-large - rotate: false - xy: 637, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-liquid-junction-medium - rotate: false - xy: 629, 129 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-liquid-junction-small - rotate: false - xy: 1685, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-liquid-junction-tiny - rotate: false - xy: 1156, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-liquid-junction-xlarge - rotate: false - xy: 51, 367 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-liquid-router-large - rotate: false - xy: 679, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-liquid-router-medium - rotate: false - xy: 625, 95 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-liquid-router-small - rotate: false - xy: 1711, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-liquid-router-tiny - rotate: false - xy: 1174, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-liquid-router-xlarge - rotate: false - xy: 101, 417 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-liquid-source-large - rotate: false - xy: 721, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-liquid-source-medium - rotate: false - xy: 621, 61 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-liquid-source-small - rotate: false - xy: 1737, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-liquid-source-tiny - rotate: false - xy: 1192, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-liquid-source-xlarge - rotate: false - xy: 151, 467 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-liquid-tank-large - rotate: false - xy: 763, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-liquid-tank-medium - rotate: false - xy: 671, 200 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-liquid-tank-small - rotate: false - xy: 1763, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-liquid-tank-tiny - rotate: false - xy: 1210, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-liquid-tank-xlarge - rotate: false - xy: 201, 517 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-magmarock-large - rotate: false - xy: 301, 179 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-magmarock-medium - rotate: false - xy: 667, 166 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-magmarock-small - rotate: false - xy: 1789, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-magmarock-tiny - rotate: false - xy: 1228, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-magmarock-xlarge - rotate: false - xy: 51, 317 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-mass-driver-large - rotate: false - xy: 343, 221 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-mass-driver-medium - rotate: false - xy: 663, 132 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-mass-driver-small - rotate: false - xy: 1815, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-mass-driver-tiny - rotate: false - xy: 1246, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-mass-driver-xlarge - rotate: false - xy: 101, 367 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-mechanical-drill-large - rotate: false - xy: 385, 263 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-mechanical-drill-medium - rotate: false - xy: 713, 242 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-mechanical-drill-small - rotate: false - xy: 1841, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-mechanical-drill-tiny - rotate: false - xy: 1264, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-mechanical-drill-xlarge - rotate: false - xy: 151, 417 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-mechanical-pump-large - rotate: false - xy: 427, 305 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-mechanical-pump-medium - rotate: false - xy: 705, 208 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-mechanical-pump-small - rotate: false - xy: 1867, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-mechanical-pump-tiny - rotate: false - xy: 1282, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-mechanical-pump-xlarge - rotate: false - xy: 201, 467 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-meltdown-large - rotate: false - xy: 469, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-meltdown-medium - rotate: false - xy: 705, 174 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-meltdown-small - rotate: false - xy: 1893, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-meltdown-tiny - rotate: false - xy: 1300, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-meltdown-xlarge - rotate: false - xy: 51, 267 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-melter-large - rotate: false - xy: 511, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-melter-medium - rotate: false - xy: 739, 208 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-melter-small - rotate: false - xy: 1919, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-melter-tiny - rotate: false - xy: 1318, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-melter-xlarge - rotate: false - xy: 101, 317 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-mend-projector-large - rotate: false - xy: 553, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-mend-projector-medium - rotate: false - xy: 739, 174 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-mend-projector-small - rotate: false - xy: 1945, 335 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-mend-projector-tiny - rotate: false - xy: 1336, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-mend-projector-xlarge - rotate: false - xy: 151, 367 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-mender-large - rotate: false - xy: 595, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-mender-medium - rotate: false - xy: 797, 326 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-mender-small - rotate: false - xy: 1971, 319 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-mender-tiny - rotate: false - xy: 1354, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-mender-xlarge - rotate: false - xy: 201, 417 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-message-large - rotate: false - xy: 637, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-message-medium - rotate: false - xy: 839, 368 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-message-small - rotate: false - xy: 1997, 319 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-message-tiny - rotate: false - xy: 1372, 260 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-message-xlarge - rotate: false - xy: 51, 217 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-metal-floor-2-large - rotate: false - xy: 679, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-metal-floor-2-medium - rotate: false - xy: 831, 334 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-metal-floor-2-small - rotate: false - xy: 2023, 319 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-metal-floor-2-tiny - rotate: false - xy: 1390, 265 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-metal-floor-2-xlarge - rotate: false - xy: 101, 267 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-metal-floor-3-large - rotate: false - xy: 721, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-metal-floor-3-medium - rotate: false - xy: 831, 300 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-metal-floor-3-small - rotate: false - xy: 787, 12 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-metal-floor-3-tiny - rotate: false - xy: 1408, 265 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-metal-floor-3-xlarge - rotate: false - xy: 151, 317 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-metal-floor-5-large - rotate: false - xy: 763, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-metal-floor-5-medium - rotate: false - xy: 865, 334 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-metal-floor-5-small - rotate: false - xy: 1022, 249 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-metal-floor-5-tiny - rotate: false - xy: 1426, 265 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-metal-floor-5-xlarge - rotate: false - xy: 201, 367 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-metal-floor-damaged-large - rotate: false - xy: 805, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-metal-floor-damaged-medium - rotate: false - xy: 865, 300 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-metal-floor-damaged-small - rotate: false - xy: 1023, 223 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-metal-floor-damaged-tiny - rotate: false - xy: 1444, 265 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-metal-floor-damaged-xlarge - rotate: false - xy: 51, 167 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-metal-floor-large - rotate: false - xy: 301, 137 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-metal-floor-medium - rotate: false - xy: 923, 452 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-metal-floor-small - rotate: false - xy: 1023, 197 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-metal-floor-tiny - rotate: false - xy: 1049, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-metal-floor-xlarge - rotate: false - xy: 101, 217 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-moss-large - rotate: false - xy: 343, 179 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-moss-medium - rotate: false - xy: 965, 494 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-moss-small - rotate: false - xy: 1023, 171 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-moss-tiny - rotate: false - xy: 1049, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-moss-xlarge - rotate: false - xy: 151, 267 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-multi-press-large - rotate: false - xy: 385, 221 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-multi-press-medium - rotate: false - xy: 957, 460 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-multi-press-small - rotate: false - xy: 1023, 145 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-multi-press-tiny - rotate: false - xy: 1067, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-multi-press-xlarge - rotate: false - xy: 201, 317 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-oil-extractor-large - rotate: false - xy: 427, 263 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-oil-extractor-medium - rotate: false - xy: 957, 426 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-oil-extractor-small - rotate: false - xy: 1023, 119 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-oil-extractor-tiny - rotate: false - xy: 1049, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-oil-extractor-xlarge - rotate: false - xy: 51, 117 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-omega-mech-pad-large - rotate: false - xy: 469, 305 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-omega-mech-pad-medium - rotate: false - xy: 991, 460 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-omega-mech-pad-small - rotate: false - xy: 1023, 93 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-omega-mech-pad-tiny - rotate: false - xy: 1085, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-omega-mech-pad-xlarge - rotate: false - xy: 101, 167 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-overdrive-projector-large - rotate: false - xy: 511, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-overdrive-projector-medium - rotate: false - xy: 991, 426 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-overdrive-projector-small - rotate: false - xy: 1023, 67 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-overdrive-projector-tiny - rotate: false - xy: 1067, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-overdrive-projector-xlarge - rotate: false - xy: 151, 217 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-overflow-gate-large - rotate: false - xy: 553, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-overflow-gate-medium - rotate: false - xy: 1049, 578 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-overflow-gate-small - rotate: false - xy: 1023, 41 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-overflow-gate-tiny - rotate: false - xy: 1049, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-overflow-gate-xlarge - rotate: false - xy: 201, 267 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-pebbles-large - rotate: false - xy: 595, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-pebbles-medium - rotate: false - xy: 1095, 628 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-pebbles-small - rotate: false - xy: 795, 54 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-pebbles-tiny - rotate: false - xy: 1103, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-pebbles-xlarge - rotate: false - xy: 51, 67 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phantom-factory-large - rotate: false - xy: 637, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phantom-factory-medium - rotate: false - xy: 1129, 628 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phantom-factory-small - rotate: false - xy: 821, 54 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phantom-factory-tiny - rotate: false - xy: 1085, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phantom-factory-xlarge - rotate: false - xy: 101, 117 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phase-conduit-large - rotate: false - xy: 679, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phase-conduit-medium - rotate: false - xy: 1163, 628 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phase-conduit-small - rotate: false - xy: 813, 28 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phase-conduit-tiny - rotate: false - xy: 1067, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phase-conduit-xlarge - rotate: false - xy: 151, 167 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phase-conveyor-large - rotate: false - xy: 721, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phase-conveyor-medium - rotate: false - xy: 1197, 628 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phase-conveyor-small - rotate: false - xy: 813, 2 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phase-conveyor-tiny - rotate: false - xy: 1049, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phase-conveyor-xlarge - rotate: false - xy: 201, 217 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phase-wall-large - rotate: false - xy: 763, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phase-wall-large-large - rotate: false - xy: 805, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phase-wall-large-medium - rotate: false - xy: 1231, 628 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phase-wall-large-small - rotate: false - xy: 839, 28 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phase-wall-large-tiny - rotate: false - xy: 1121, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phase-wall-large-xlarge - rotate: false - xy: 101, 67 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phase-wall-medium - rotate: false - xy: 1265, 628 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phase-wall-small - rotate: false - xy: 839, 2 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phase-wall-tiny - rotate: false - xy: 1103, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phase-wall-xlarge - rotate: false - xy: 151, 117 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phase-weaver-large - rotate: false - xy: 847, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phase-weaver-medium - rotate: false - xy: 1299, 628 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phase-weaver-small - rotate: false - xy: 865, 34 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phase-weaver-tiny - rotate: false - xy: 1085, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phase-weaver-xlarge - rotate: false - xy: 201, 167 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-pine-large - rotate: false - xy: 301, 95 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-pine-medium - rotate: false - xy: 1333, 628 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-pine-small - rotate: false - xy: 891, 34 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-pine-tiny - rotate: false - xy: 1067, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-pine-xlarge - rotate: false - xy: 151, 67 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-plastanium-compressor-large - rotate: false - xy: 343, 137 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-plastanium-compressor-medium - rotate: false - xy: 1367, 628 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-plastanium-compressor-small - rotate: false - xy: 865, 8 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-plastanium-compressor-tiny - rotate: false - xy: 1049, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-plastanium-compressor-xlarge - rotate: false - xy: 201, 117 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-pneumatic-drill-large - rotate: false - xy: 385, 179 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-pneumatic-drill-medium - rotate: false - xy: 1401, 628 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-pneumatic-drill-small - rotate: false - xy: 917, 34 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-pneumatic-drill-tiny - rotate: false - xy: 1139, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-pneumatic-drill-xlarge - rotate: false - xy: 201, 67 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-power-node-large - rotate: false - xy: 427, 221 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-power-node-large-large - rotate: false - xy: 469, 263 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-power-node-large-medium - rotate: false - xy: 1435, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-power-node-large-small - rotate: false - xy: 891, 8 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-power-node-large-tiny - rotate: false - xy: 1121, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-power-node-large-xlarge - rotate: false - xy: 51, 17 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-power-node-medium - rotate: false - xy: 1469, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-power-node-small - rotate: false - xy: 917, 8 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-power-node-tiny - rotate: false - xy: 1103, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-power-node-xlarge - rotate: false - xy: 101, 17 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-power-source-large - rotate: false - xy: 511, 305 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-power-source-medium - rotate: false - xy: 1503, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-power-source-small - rotate: false - xy: 943, 28 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-power-source-tiny - rotate: false - xy: 1085, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-power-source-xlarge - rotate: false - xy: 151, 17 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-power-void-large - rotate: false - xy: 553, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-power-void-medium - rotate: false - xy: 1537, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-power-void-small - rotate: false - xy: 969, 28 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-power-void-tiny - rotate: false - xy: 1067, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-power-void-xlarge - rotate: false - xy: 201, 17 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-pulse-conduit-large - rotate: false - xy: 595, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-pulse-conduit-medium - rotate: false - xy: 1571, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-pulse-conduit-small - rotate: false - xy: 943, 2 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-pulse-conduit-tiny - rotate: false - xy: 1049, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-pulse-conduit-xlarge - rotate: false - xy: 251, 667 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-pulverizer-large - rotate: false - xy: 637, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-pulverizer-medium - rotate: false - xy: 1605, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-pulverizer-small - rotate: false - xy: 969, 2 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-pulverizer-tiny - rotate: false - xy: 1157, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-pulverizer-xlarge - rotate: false - xy: 251, 617 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-pyratite-mixer-large - rotate: false - xy: 679, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-pyratite-mixer-medium - rotate: false - xy: 1639, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-pyratite-mixer-small - rotate: false - xy: 995, 15 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-pyratite-mixer-tiny - rotate: false - xy: 1139, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-pyratite-mixer-xlarge - rotate: false - xy: 251, 567 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-repair-point-large - rotate: false - xy: 721, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-repair-point-medium - rotate: false - xy: 1673, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-repair-point-small - rotate: false - xy: 1021, 15 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-repair-point-tiny - rotate: false - xy: 1121, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-repair-point-xlarge - rotate: false - xy: 251, 517 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-revenant-factory-large - rotate: false - xy: 763, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-revenant-factory-medium - rotate: false - xy: 1707, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-revenant-factory-small - rotate: false - xy: 1047, 15 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-revenant-factory-tiny - rotate: false - xy: 1103, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-revenant-factory-xlarge - rotate: false - xy: 251, 467 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-ripple-large - rotate: false - xy: 805, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-ripple-medium - rotate: false - xy: 1741, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-ripple-small - rotate: false - xy: 998, 348 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-ripple-tiny - rotate: false - xy: 1085, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-ripple-xlarge - rotate: false - xy: 251, 417 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-rock-large - rotate: false - xy: 847, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-rock-medium - rotate: false - xy: 1775, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-rock-small - rotate: false - xy: 1003, 374 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-rock-tiny - rotate: false - xy: 1067, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-rock-xlarge - rotate: false - xy: 251, 367 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-rocks-large - rotate: false - xy: 889, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-rocks-medium - rotate: false - xy: 1809, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-rocks-small - rotate: false - xy: 1029, 374 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-rocks-tiny - rotate: false - xy: 1049, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-rocks-xlarge - rotate: false - xy: 251, 317 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-rotary-pump-large - rotate: false - xy: 301, 53 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-rotary-pump-medium - rotate: false - xy: 1843, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-rotary-pump-small - rotate: false - xy: 1024, 348 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-rotary-pump-tiny - rotate: false - xy: 1175, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-rotary-pump-xlarge - rotate: false - xy: 251, 267 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-router-large - rotate: false - xy: 343, 95 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-router-medium - rotate: false - xy: 1877, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-router-small - rotate: false - xy: 1055, 374 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-router-tiny - rotate: false - xy: 1157, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-router-xlarge - rotate: false - xy: 251, 217 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-rtg-generator-large - rotate: false - xy: 385, 137 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-rtg-generator-medium - rotate: false - xy: 1911, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-rtg-generator-small - rotate: false - xy: 1050, 348 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-rtg-generator-tiny - rotate: false - xy: 1139, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-rtg-generator-xlarge - rotate: false - xy: 251, 167 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-salt-large - rotate: false - xy: 427, 179 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-salt-medium - rotate: false - xy: 1945, 623 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-salt-small - rotate: false - xy: 1025, 322 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-salt-tiny - rotate: false - xy: 1121, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-salt-xlarge - rotate: false - xy: 251, 117 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-saltrocks-large - rotate: false - xy: 469, 221 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-saltrocks-medium - rotate: false - xy: 1979, 601 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-saltrocks-small - rotate: false - xy: 1025, 296 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-saltrocks-tiny - rotate: false - xy: 1103, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-saltrocks-xlarge - rotate: false - xy: 251, 67 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-salvo-large - rotate: false - xy: 511, 263 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-salvo-medium - rotate: false - xy: 549, 40 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-salvo-small - rotate: false - xy: 1051, 322 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-salvo-tiny - rotate: false - xy: 1085, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-salvo-xlarge - rotate: false - xy: 251, 17 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-sand-boulder-large - rotate: false - xy: 553, 305 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-sand-boulder-medium - rotate: false - xy: 583, 27 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-sand-boulder-small - rotate: false - xy: 1051, 296 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-sand-boulder-tiny - rotate: false - xy: 1067, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-sand-boulder-xlarge - rotate: false - xy: 309, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-sand-large - rotate: false - xy: 595, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-sand-medium - rotate: false - xy: 617, 27 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-sand-small - rotate: false - xy: 1076, 348 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-sand-tiny - rotate: false - xy: 1049, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-sand-water-large - rotate: false - xy: 637, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-sand-water-medium - rotate: false - xy: 547, 6 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-sand-water-small - rotate: false - xy: 1102, 348 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-sand-water-tiny - rotate: false - xy: 1193, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-sand-water-xlarge - rotate: false - xy: 309, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-sand-xlarge - rotate: false - xy: 359, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-sandrocks-large - rotate: false - xy: 679, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-sandrocks-medium - rotate: false - xy: 659, 95 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-sandrocks-small - rotate: false - xy: 1077, 322 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-sandrocks-tiny - rotate: false - xy: 1175, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-sandrocks-xlarge - rotate: false - xy: 309, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-scatter-large - rotate: false - xy: 721, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-scatter-medium - rotate: false - xy: 655, 61 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-scatter-small - rotate: false - xy: 1128, 348 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-scatter-tiny - rotate: false - xy: 1157, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-scatter-xlarge - rotate: false - xy: 359, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-scorch-large - rotate: false - xy: 763, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-scorch-medium - rotate: false - xy: 651, 27 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-scorch-small - rotate: false - xy: 1077, 296 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-scorch-tiny - rotate: false - xy: 1139, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-scorch-xlarge - rotate: false - xy: 409, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-scrap-wall-gigantic-large - rotate: false - xy: 805, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-scrap-wall-gigantic-medium - rotate: false - xy: 697, 132 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-scrap-wall-gigantic-small - rotate: false - xy: 1103, 322 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-scrap-wall-gigantic-tiny - rotate: false - xy: 1121, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-scrap-wall-gigantic-xlarge - rotate: false - xy: 359, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-scrap-wall-huge-large - rotate: false - xy: 847, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-scrap-wall-huge-medium - rotate: false - xy: 693, 98 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-scrap-wall-huge-small - rotate: false - xy: 1103, 296 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-scrap-wall-huge-tiny - rotate: false - xy: 1103, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-scrap-wall-huge-xlarge - rotate: false - xy: 409, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-scrap-wall-large - rotate: false - xy: 889, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-scrap-wall-large-large - rotate: false - xy: 931, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-scrap-wall-large-medium - rotate: false - xy: 731, 140 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-scrap-wall-large-small - rotate: false - xy: 1129, 322 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-scrap-wall-large-tiny - rotate: false - xy: 1085, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-scrap-wall-large-xlarge - rotate: false - xy: 459, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-scrap-wall-medium - rotate: false - xy: 731, 106 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-scrap-wall-small - rotate: false - xy: 1129, 296 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-scrap-wall-tiny - rotate: false - xy: 1067, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-scrap-wall-xlarge - rotate: false - xy: 409, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-separator-large - rotate: false - xy: 343, 53 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-separator-medium - rotate: false - xy: 765, 140 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-separator-small - rotate: false - xy: 1155, 330 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-separator-tiny - rotate: false - xy: 1049, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-separator-xlarge - rotate: false - xy: 459, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-shale-boulder-large - rotate: false - xy: 385, 95 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-shale-boulder-medium - rotate: false - xy: 765, 106 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-shale-boulder-small - rotate: false - xy: 1181, 330 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-shale-boulder-tiny - rotate: false - xy: 1211, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-shale-boulder-xlarge - rotate: false - xy: 509, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-shale-large - rotate: false - xy: 427, 137 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-shale-medium - rotate: false - xy: 755, 284 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-shale-small - rotate: false - xy: 1155, 304 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-shale-tiny - rotate: false - xy: 1193, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-shale-xlarge - rotate: false - xy: 459, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-shalerocks-large - rotate: false - xy: 469, 179 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-shalerocks-medium - rotate: false - xy: 747, 250 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-shalerocks-small - rotate: false - xy: 1207, 330 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-shalerocks-tiny - rotate: false - xy: 1175, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-shalerocks-xlarge - rotate: false - xy: 509, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-shock-mine-large - rotate: false - xy: 511, 221 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-shock-mine-medium - rotate: false - xy: 789, 292 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-shock-mine-small - rotate: false - xy: 1181, 304 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-shock-mine-tiny - rotate: false - xy: 1157, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-shock-mine-xlarge - rotate: false - xy: 559, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-shrubs-large - rotate: false - xy: 553, 263 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-shrubs-medium - rotate: false - xy: 781, 250 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-shrubs-small - rotate: false - xy: 1233, 330 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-shrubs-tiny - rotate: false - xy: 1139, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-shrubs-xlarge - rotate: false - xy: 509, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-silicon-smelter-large - rotate: false - xy: 595, 305 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-silicon-smelter-medium - rotate: false - xy: 773, 216 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-silicon-smelter-small - rotate: false - xy: 1207, 304 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-silicon-smelter-tiny - rotate: false - xy: 1121, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-silicon-smelter-xlarge - rotate: false - xy: 559, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-snow-large - rotate: false - xy: 637, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-snow-medium - rotate: false - xy: 773, 182 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-snow-pine-large - rotate: false - xy: 679, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-snow-pine-medium - rotate: false - xy: 807, 216 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-snow-pine-small - rotate: false - xy: 1259, 330 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-snow-pine-tiny - rotate: false - xy: 1103, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-snow-pine-xlarge - rotate: false - xy: 609, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-snow-small - rotate: false - xy: 1233, 304 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-snow-tiny - rotate: false - xy: 1085, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-snow-xlarge - rotate: false - xy: 559, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-snowrock-large - rotate: false - xy: 721, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-snowrock-medium - rotate: false - xy: 807, 182 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-snowrock-small - rotate: false - xy: 1285, 330 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-snowrock-tiny - rotate: false - xy: 1067, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-snowrock-xlarge - rotate: false - xy: 609, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-snowrocks-large - rotate: false - xy: 763, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-snowrocks-medium - rotate: false - xy: 799, 148 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-snowrocks-small - rotate: false - xy: 1259, 304 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-snowrocks-tiny - rotate: false - xy: 1049, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-snowrocks-xlarge - rotate: false - xy: 659, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-solar-panel-large - rotate: false - xy: 805, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-solar-panel-large-large - rotate: false - xy: 847, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-solar-panel-large-medium - rotate: false - xy: 799, 114 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-solar-panel-large-small - rotate: false - xy: 1311, 330 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-solar-panel-large-tiny - rotate: false - xy: 1229, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-solar-panel-large-xlarge - rotate: false - xy: 609, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-solar-panel-medium - rotate: false - xy: 833, 148 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-solar-panel-small - rotate: false - xy: 1285, 304 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-solar-panel-tiny - rotate: false - xy: 1211, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-solar-panel-xlarge - rotate: false - xy: 659, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-sorter-large - rotate: false - xy: 889, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-sorter-medium - rotate: false - xy: 833, 114 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-sorter-small - rotate: false - xy: 1337, 330 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-sorter-tiny - rotate: false - xy: 1193, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-sorter-xlarge - rotate: false - xy: 709, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-spawn-large - rotate: false - xy: 931, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-spawn-medium - rotate: false - xy: 799, 80 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-spawn-small - rotate: false - xy: 1311, 304 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-spawn-tiny - rotate: false - xy: 1175, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-spawn-xlarge - rotate: false - xy: 659, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-spectre-large - rotate: false - xy: 973, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-spectre-medium - rotate: false - xy: 833, 80 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-spectre-small - rotate: false - xy: 1363, 330 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-spectre-tiny - rotate: false - xy: 1157, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-spectre-xlarge - rotate: false - xy: 709, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-spirit-factory-large - rotate: false - xy: 385, 53 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-spirit-factory-medium - rotate: false - xy: 881, 410 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-spirit-factory-small - rotate: false - xy: 1337, 304 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-spirit-factory-tiny - rotate: false - xy: 1139, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-spirit-factory-xlarge - rotate: false - xy: 759, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-spore-cluster-large - rotate: false - xy: 427, 95 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-spore-cluster-medium - rotate: false - xy: 873, 376 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-spore-cluster-small - rotate: false - xy: 1363, 304 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-spore-cluster-tiny - rotate: false - xy: 1121, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-spore-cluster-xlarge - rotate: false - xy: 709, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-spore-moss-large - rotate: false - xy: 469, 137 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-spore-moss-medium - rotate: false - xy: 915, 418 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-spore-moss-small - rotate: false - xy: 1389, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-spore-moss-tiny - rotate: false - xy: 1103, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-spore-moss-xlarge - rotate: false - xy: 759, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-spore-pine-large - rotate: false - xy: 511, 179 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-spore-pine-medium - rotate: false - xy: 907, 376 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-spore-pine-small - rotate: false - xy: 1415, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-spore-pine-tiny - rotate: false - xy: 1085, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-spore-pine-xlarge - rotate: false - xy: 809, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-spore-press-large - rotate: false - xy: 553, 221 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-spore-press-medium - rotate: false - xy: 899, 342 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-spore-press-small - rotate: false - xy: 1441, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-spore-press-tiny - rotate: false - xy: 1067, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-spore-press-xlarge - rotate: false - xy: 759, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-sporerocks-large - rotate: false - xy: 595, 263 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-sporerocks-medium - rotate: false - xy: 899, 308 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-sporerocks-small - rotate: false - xy: 1467, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-sporerocks-tiny - rotate: false - xy: 1049, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-sporerocks-xlarge - rotate: false - xy: 809, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-stone-large - rotate: false - xy: 637, 305 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-stone-medium - rotate: false - xy: 933, 342 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-stone-small - rotate: false - xy: 1493, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-stone-tiny - rotate: false - xy: 1247, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-stone-xlarge - rotate: false - xy: 859, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-surge-tower-large - rotate: false - xy: 679, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-surge-tower-medium - rotate: false - xy: 933, 308 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-surge-tower-small - rotate: false - xy: 1519, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-surge-tower-tiny - rotate: false - xy: 1229, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-surge-tower-xlarge - rotate: false - xy: 809, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-surge-wall-large - rotate: false - xy: 721, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-surge-wall-large-large - rotate: false - xy: 763, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-surge-wall-large-medium - rotate: false - xy: 899, 274 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-surge-wall-large-small - rotate: false - xy: 1545, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-surge-wall-large-tiny - rotate: false - xy: 1211, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-surge-wall-large-xlarge - rotate: false - xy: 859, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-surge-wall-medium - rotate: false - xy: 933, 274 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-surge-wall-small - rotate: false - xy: 1571, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-surge-wall-tiny - rotate: false - xy: 1193, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-surge-wall-xlarge - rotate: false - xy: 909, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-swarmer-large - rotate: false - xy: 805, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-swarmer-medium - rotate: false - xy: 1007, 536 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-swarmer-small - rotate: false - xy: 1597, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-swarmer-tiny - rotate: false - xy: 1175, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-swarmer-xlarge - rotate: false - xy: 859, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-tainted-water-large - rotate: false - xy: 847, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-tainted-water-medium - rotate: false - xy: 999, 502 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-tainted-water-small - rotate: false - xy: 1623, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-tainted-water-tiny - rotate: false - xy: 1157, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-tainted-water-xlarge - rotate: false - xy: 909, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-tar-large - rotate: false - xy: 889, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-tar-medium - rotate: false - xy: 1041, 544 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-tar-small - rotate: false - xy: 1649, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-tar-tiny - rotate: false - xy: 1139, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-tar-xlarge - rotate: false - xy: 959, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-tau-mech-pad-large - rotate: false - xy: 931, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-tau-mech-pad-medium - rotate: false - xy: 1033, 502 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-tau-mech-pad-small - rotate: false - xy: 1675, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-tau-mech-pad-tiny - rotate: false - xy: 1121, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-tau-mech-pad-xlarge - rotate: false - xy: 909, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-tendrils-large - rotate: false - xy: 973, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-tendrils-medium - rotate: false - xy: 1025, 468 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-tendrils-small - rotate: false - xy: 1701, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-tendrils-tiny - rotate: false - xy: 1103, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-tendrils-xlarge - rotate: false - xy: 959, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-thermal-generator-large - rotate: false - xy: 1015, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-thermal-generator-medium - rotate: false - xy: 1025, 434 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-thermal-generator-small - rotate: false - xy: 1727, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-thermal-generator-tiny - rotate: false - xy: 1085, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-thermal-generator-xlarge - rotate: false - xy: 1009, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-thermal-pump-large - rotate: false - xy: 427, 53 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-thermal-pump-medium - rotate: false - xy: 1075, 544 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-thermal-pump-small - rotate: false - xy: 1753, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-thermal-pump-tiny - rotate: false - xy: 1067, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-thermal-pump-xlarge - rotate: false - xy: 959, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-thorium-reactor-large - rotate: false - xy: 469, 95 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-thorium-reactor-medium - rotate: false - xy: 1067, 510 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-thorium-reactor-small - rotate: false - xy: 1779, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-thorium-reactor-tiny - rotate: false - xy: 1265, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-thorium-reactor-xlarge - rotate: false - xy: 1009, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-thorium-wall-large - rotate: false - xy: 511, 137 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-thorium-wall-large-large - rotate: false - xy: 553, 179 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-thorium-wall-large-medium - rotate: false - xy: 1059, 468 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-thorium-wall-large-small - rotate: false - xy: 1805, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-thorium-wall-large-tiny - rotate: false - xy: 1247, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-thorium-wall-large-xlarge - rotate: false - xy: 1059, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-thorium-wall-medium - rotate: false - xy: 1059, 434 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-thorium-wall-small - rotate: false - xy: 1831, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-thorium-wall-tiny - rotate: false - xy: 1229, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-thorium-wall-xlarge - rotate: false - xy: 1009, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-thruster-large - rotate: false - xy: 595, 221 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-thruster-medium - rotate: false - xy: 1025, 400 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-thruster-small - rotate: false - xy: 1857, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-thruster-tiny - rotate: false - xy: 1211, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-thruster-xlarge - rotate: false - xy: 1059, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-titan-factory-large - rotate: false - xy: 637, 263 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-titan-factory-medium - rotate: false - xy: 1059, 400 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-titan-factory-small - rotate: false - xy: 1883, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-titan-factory-tiny - rotate: false - xy: 1193, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-titan-factory-xlarge - rotate: false - xy: 1109, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-titanium-conveyor-large - rotate: false - xy: 679, 305 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-titanium-conveyor-medium - rotate: false - xy: 1101, 510 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-titanium-conveyor-small - rotate: false - xy: 1909, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-titanium-conveyor-tiny - rotate: false - xy: 1175, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-titanium-conveyor-xlarge - rotate: false - xy: 1059, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-titanium-wall-large - rotate: false - xy: 721, 347 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-titanium-wall-large-large - rotate: false - xy: 763, 389 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-titanium-wall-large-medium - rotate: false - xy: 1093, 476 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-titanium-wall-large-small - rotate: false - xy: 1935, 309 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-titanium-wall-large-tiny - rotate: false - xy: 1157, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-titanium-wall-large-xlarge - rotate: false - xy: 1109, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-titanium-wall-medium - rotate: false - xy: 1093, 442 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-titanium-wall-small - rotate: false - xy: 1155, 278 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-titanium-wall-tiny - rotate: false - xy: 1139, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-titanium-wall-xlarge - rotate: false - xy: 1159, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-trident-ship-pad-large - rotate: false - xy: 805, 431 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-trident-ship-pad-medium - rotate: false - xy: 1093, 408 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-trident-ship-pad-small - rotate: false - xy: 1181, 278 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-trident-ship-pad-tiny - rotate: false - xy: 1121, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-trident-ship-pad-xlarge - rotate: false - xy: 1109, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-turbine-generator-large - rotate: false - xy: 847, 473 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-turbine-generator-medium - rotate: false - xy: 1127, 476 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-turbine-generator-small - rotate: false - xy: 1207, 278 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-turbine-generator-tiny - rotate: false - xy: 1103, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-turbine-generator-xlarge - rotate: false - xy: 1159, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-unloader-large - rotate: false - xy: 889, 515 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-unloader-medium - rotate: false - xy: 1127, 442 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-unloader-small - rotate: false - xy: 1233, 278 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-unloader-tiny - rotate: false - xy: 1085, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-unloader-xlarge - rotate: false - xy: 1209, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-vault-large - rotate: false - xy: 931, 557 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-vault-medium - rotate: false - xy: 1127, 408 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-vault-small - rotate: false - xy: 1259, 278 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-vault-tiny - rotate: false - xy: 1067, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-vault-xlarge - rotate: false - xy: 1159, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-water-extractor-large - rotate: false - xy: 973, 599 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-water-extractor-medium - rotate: false - xy: 1093, 374 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-water-extractor-small - rotate: false - xy: 1285, 278 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-water-extractor-tiny - rotate: false - xy: 1283, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-water-extractor-xlarge - rotate: false - xy: 1209, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-water-large - rotate: false - xy: 1015, 641 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-water-medium - rotate: false - xy: 1127, 374 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-water-small - rotate: false - xy: 1311, 278 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-water-tiny - rotate: false - xy: 1265, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-water-xlarge - rotate: false - xy: 1259, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-wave-large - rotate: false - xy: 1057, 683 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-wave-medium - rotate: false - xy: 2013, 601 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-wave-small - rotate: false - xy: 1337, 278 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-wave-tiny - rotate: false - xy: 1247, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-wave-xlarge - rotate: false - xy: 1209, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-white-tree-dead-large - rotate: false - xy: 469, 53 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-white-tree-dead-medium - rotate: false - xy: 685, 27 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-white-tree-dead-small - rotate: false - xy: 1363, 278 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-white-tree-dead-tiny - rotate: false - xy: 1229, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-white-tree-dead-xlarge - rotate: false - xy: 1259, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-white-tree-large - rotate: false - xy: 511, 95 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-white-tree-medium - rotate: false - xy: 689, 61 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-white-tree-small - rotate: false - xy: 1389, 283 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-white-tree-tiny - rotate: false - xy: 1211, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-white-tree-xlarge - rotate: false - xy: 1309, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-wraith-factory-large - rotate: false - xy: 553, 137 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-wraith-factory-medium - rotate: false - xy: 727, 72 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-wraith-factory-small - rotate: false - xy: 1415, 283 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-wraith-factory-tiny - rotate: false - xy: 1193, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-wraith-factory-xlarge - rotate: false - xy: 1259, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -button - rotate: false - xy: 1137, 696 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-disabled - rotate: false - xy: 595, 192 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-down - rotate: false - xy: 637, 234 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-edge-1 - rotate: false - xy: 679, 276 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-edge-2 - rotate: false - xy: 721, 318 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-edge-3 - rotate: false - xy: 763, 360 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-edge-4 - rotate: false - xy: 805, 402 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-edge-over-4 - rotate: false - xy: 847, 444 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-over - rotate: false - xy: 889, 486 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-red - rotate: false - xy: 931, 528 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-right - rotate: false - xy: 1057, 654 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-right-down - rotate: false - xy: 973, 570 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-right-over - rotate: false - xy: 1015, 612 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-select - rotate: false - xy: 1441, 283 - size: 24, 24 - split: 4, 4, 4, 4 - orig: 24, 24 - offset: 0, 0 - index: -1 -button-square - rotate: false - xy: 553, 108 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-square-down - rotate: false - xy: 1099, 696 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-square-over - rotate: false - xy: 511, 66 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -button-trans - rotate: false - xy: 595, 163 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -check-disabled - rotate: false - xy: 761, 72 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -check-off - rotate: false - xy: 723, 38 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -check-on - rotate: false - xy: 757, 38 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -check-on-disabled - rotate: false - xy: 719, 4 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -check-on-over - rotate: false - xy: 753, 4 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -check-over - rotate: false - xy: 1091, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -clear - rotate: false - xy: 1081, 388 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -cursor - rotate: false - xy: 893, 262 - size: 4, 4 - orig: 4, 4 - offset: 0, 0 - index: -1 -discord-banner - rotate: false - xy: 1, 720 - size: 84, 45 - orig: 84, 45 - offset: 0, 0 - index: -1 -flat-down-base - rotate: false - xy: 1175, 696 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -icon-about - rotate: false - xy: 1309, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-about-small - rotate: false - xy: 1125, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-about-smaller - rotate: false - xy: 2017, 637 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-about-tiny - rotate: false - xy: 1175, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-add - rotate: false - xy: 1359, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-add-small - rotate: false - xy: 1159, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-add-smaller - rotate: false - xy: 867, 268 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-add-tiny - rotate: false - xy: 1157, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-admin - rotate: false - xy: 1309, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-admin-badge - rotate: false - xy: 1359, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-admin-badge-small - rotate: false - xy: 1193, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-admin-badge-smaller - rotate: false - xy: 1399, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-admin-badge-tiny - rotate: false - xy: 1139, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-admin-small - rotate: false - xy: 1227, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-admin-smaller - rotate: false - xy: 1399, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-admin-tiny - rotate: false - xy: 1121, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-arrow - rotate: false - xy: 1409, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-arrow-16 - rotate: false - xy: 1409, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-arrow-16-small - rotate: false - xy: 1261, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-arrow-small - rotate: false - xy: 1261, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-arrow-16-smaller - rotate: false - xy: 1431, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-arrow-smaller - rotate: false - xy: 1431, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-arrow-16-tiny - rotate: false - xy: 1103, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-arrow-tiny - rotate: false - xy: 1103, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-arrow-down - rotate: false - xy: 1359, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-arrow-down-small - rotate: false - xy: 1295, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-arrow-down-smaller - rotate: false - xy: 1399, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-arrow-down-tiny - rotate: false - xy: 1085, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-arrow-left - rotate: false - xy: 1409, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-arrow-left-small - rotate: false - xy: 1329, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-arrow-left-smaller - rotate: false - xy: 1431, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-arrow-left-tiny - rotate: false - xy: 1301, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-arrow-right - rotate: false - xy: 1459, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-arrow-right-small - rotate: false - xy: 1363, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-arrow-right-smaller - rotate: false - xy: 1463, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-arrow-right-tiny - rotate: false - xy: 1283, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-arrow-up - rotate: false - xy: 1409, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-arrow-up-small - rotate: false - xy: 1397, 594 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-arrow-up-smaller - rotate: false - xy: 1399, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-arrow-up-tiny - rotate: false - xy: 1265, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-back - rotate: false - xy: 1459, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-back-small - rotate: false - xy: 1431, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-back-smaller - rotate: false - xy: 1431, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-back-tiny - rotate: false - xy: 1247, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-ban - rotate: false - xy: 1509, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-ban-small - rotate: false - xy: 1465, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-ban-smaller - rotate: false - xy: 1463, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-ban-tiny - rotate: false - xy: 1229, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-break - rotate: false - xy: 1459, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-break-small - rotate: false - xy: 1499, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-break-smaller - rotate: false - xy: 1495, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-break-tiny - rotate: false - xy: 1211, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-cancel - rotate: false - xy: 1509, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-cancel-small - rotate: false - xy: 1533, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-cancel-smaller - rotate: false - xy: 1399, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-cancel-tiny - rotate: false - xy: 1193, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-quit-tiny - rotate: false - xy: 1193, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-changelog - rotate: false - xy: 1559, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-changelog-small - rotate: false - xy: 1567, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-changelog-smaller - rotate: false - xy: 1431, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-changelog-tiny - rotate: false - xy: 1175, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-chat - rotate: false - xy: 1509, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-chat-small - rotate: false - xy: 1601, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-chat-smaller - rotate: false - xy: 1463, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-chat-tiny - rotate: false - xy: 1157, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-check - rotate: false - xy: 1559, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-check-small - rotate: false - xy: 1635, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-check-smaller - rotate: false - xy: 1495, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-check-tiny - rotate: false - xy: 1139, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-command-attack - rotate: false - xy: 1609, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-command-attack-small - rotate: false - xy: 1669, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-command-attack-smaller - rotate: false - xy: 1527, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-command-attack-tiny - rotate: false - xy: 1121, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-command-patrol - rotate: false - xy: 1559, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-command-patrol-small - rotate: false - xy: 1703, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-command-patrol-smaller - rotate: false - xy: 1431, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-command-patrol-tiny - rotate: false - xy: 1103, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-command-rally - rotate: false - xy: 1609, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-command-rally-small - rotate: false - xy: 1737, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-command-rally-smaller - rotate: false - xy: 1463, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-command-rally-tiny - rotate: false - xy: 1319, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-command-retreat - rotate: false - xy: 1659, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-command-retreat-small - rotate: false - xy: 1771, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-command-retreat-smaller - rotate: false - xy: 1495, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-command-retreat-tiny - rotate: false - xy: 1301, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-copy - rotate: false - xy: 1609, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-copy-small - rotate: false - xy: 1805, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-copy-smaller - rotate: false - xy: 1527, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-copy-tiny - rotate: false - xy: 1283, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-crafting - rotate: false - xy: 1659, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-crafting-small - rotate: false - xy: 1839, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-crafting-smaller - rotate: false - xy: 1559, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-crafting-tiny - rotate: false - xy: 1265, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-cursor - rotate: false - xy: 1709, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-cursor-small - rotate: false - xy: 1873, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-cursor-smaller - rotate: false - xy: 1463, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-cursor-tiny - rotate: false - xy: 1247, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-database - rotate: false - xy: 1659, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-database-small - rotate: false - xy: 1907, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-database-smaller - rotate: false - xy: 1495, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-database-tiny - rotate: false - xy: 1229, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-defense - rotate: false - xy: 1709, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-defense-small - rotate: false - xy: 1941, 589 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-defense-smaller - rotate: false - xy: 1527, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-defense-tiny - rotate: false - xy: 1211, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-dev-builds - rotate: false - xy: 1759, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-dev-builds-small - rotate: false - xy: 1109, 560 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-dev-builds-smaller - rotate: false - xy: 1559, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-dev-builds-tiny - rotate: false - xy: 1193, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-diagonal - rotate: false - xy: 1709, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-diagonal-small - rotate: false - xy: 1143, 560 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-diagonal-smaller - rotate: false - xy: 1591, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-diagonal-tiny - rotate: false - xy: 1175, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-discord - rotate: false - xy: 1759, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-discord-small - rotate: false - xy: 1177, 560 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-discord-smaller - rotate: false - xy: 1495, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-discord-tiny - rotate: false - xy: 1157, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-distribution - rotate: false - xy: 1809, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-distribution-small - rotate: false - xy: 1211, 560 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-distribution-smaller - rotate: false - xy: 1527, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-distribution-tiny - rotate: false - xy: 1139, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-donate - rotate: false - xy: 1759, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-donate-small - rotate: false - xy: 1245, 560 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-donate-smaller - rotate: false - xy: 1559, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-donate-tiny - rotate: false - xy: 1121, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-dots - rotate: false - xy: 1809, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-dots-small - rotate: false - xy: 1279, 560 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-dots-smaller - rotate: false - xy: 1591, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-dots-tiny - rotate: false - xy: 1337, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-editor - rotate: false - xy: 1859, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-editor-small - rotate: false - xy: 1313, 560 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-editor-smaller - rotate: false - xy: 1623, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-editor-tiny - rotate: false - xy: 1319, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-effect - rotate: false - xy: 1809, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-effect-small - rotate: false - xy: 1347, 560 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-effect-smaller - rotate: false - xy: 1527, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-effect-tiny - rotate: false - xy: 1301, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-elevation - rotate: false - xy: 1859, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-elevation-small - rotate: false - xy: 1381, 560 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-elevation-smaller - rotate: false - xy: 1559, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-elevation-tiny - rotate: false - xy: 1283, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-eraser - rotate: false - xy: 1909, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-eraser-small - rotate: false - xy: 1135, 526 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-eraser-smaller - rotate: false - xy: 1591, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-eraser-tiny - rotate: false - xy: 1265, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-exit - rotate: false - xy: 1859, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-exit-small - rotate: false - xy: 1169, 526 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-exit-smaller - rotate: false - xy: 1623, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-exit-tiny - rotate: false - xy: 1247, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-fdroid - rotate: false - xy: 1909, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-fdroid-small - rotate: false - xy: 1203, 526 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-fdroid-smaller - rotate: false - xy: 1655, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-fdroid-tiny - rotate: false - xy: 1229, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-file - rotate: false - xy: 1959, 925 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-file-image - rotate: false - xy: 1909, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-file-image-small - rotate: false - xy: 1237, 526 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-file-image-smaller - rotate: false - xy: 1559, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-file-image-tiny - rotate: false - xy: 1211, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-file-small - rotate: false - xy: 1271, 526 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-file-smaller - rotate: false - xy: 1591, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-file-text - rotate: false - xy: 1959, 875 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-file-text-small - rotate: false - xy: 1305, 526 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-file-text-smaller - rotate: false - xy: 1623, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-file-text-tiny - rotate: false - xy: 1193, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-file-tiny - rotate: false - xy: 1175, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-fill - rotate: false - xy: 1959, 825 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-fill-small - rotate: false - xy: 1339, 526 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-fill-smaller - rotate: false - xy: 1655, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-fill-tiny - rotate: false - xy: 1157, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-floppy - rotate: false - xy: 309, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-floppy-16 - rotate: false - xy: 359, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-floppy-16-small - rotate: false - xy: 1373, 526 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-floppy-16-smaller - rotate: false - xy: 1687, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-floppy-16-tiny - rotate: false - xy: 1139, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-floppy-small - rotate: false - xy: 1161, 492 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-floppy-smaller - rotate: false - xy: 1591, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-floppy-tiny - rotate: false - xy: 1355, 242 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-folder - rotate: false - xy: 409, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-folder-parent - rotate: false - xy: 459, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-folder-parent-small - rotate: false - xy: 1161, 458 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-folder-parent-smaller - rotate: false - xy: 1623, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-folder-parent-tiny - rotate: false - xy: 1337, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-folder-small - rotate: false - xy: 1195, 492 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-folder-smaller - rotate: false - xy: 1655, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-folder-tiny - rotate: false - xy: 1319, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-github - rotate: false - xy: 509, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-github-small - rotate: false - xy: 1161, 424 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-github-smaller - rotate: false - xy: 1687, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-github-tiny - rotate: false - xy: 1301, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-google-play - rotate: false - xy: 559, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-google-play-small - rotate: false - xy: 1195, 458 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-google-play-smaller - rotate: false - xy: 1719, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-google-play-tiny - rotate: false - xy: 1283, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-grid - rotate: false - xy: 609, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-grid-small - rotate: false - xy: 1229, 492 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-grid-smaller - rotate: false - xy: 1623, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-grid-tiny - rotate: false - xy: 1265, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-home - rotate: false - xy: 659, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-home-small - rotate: false - xy: 1161, 390 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-home-smaller - rotate: false - xy: 1655, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-home-tiny - rotate: false - xy: 1247, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-host - rotate: false - xy: 709, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-host-small - rotate: false - xy: 1195, 424 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-host-smaller - rotate: false - xy: 1687, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-host-tiny - rotate: false - xy: 1229, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-info - rotate: false - xy: 759, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-info-small - rotate: false - xy: 1229, 458 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-info-smaller - rotate: false - xy: 1719, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-info-tiny - rotate: false - xy: 1211, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-itch.io - rotate: false - xy: 809, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-itch.io-small - rotate: false - xy: 1263, 492 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-itch.io-smaller - rotate: false - xy: 1751, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-itch.io-tiny - rotate: false - xy: 1193, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-item - rotate: false - xy: 859, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-item-small - rotate: false - xy: 1195, 390 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-item-smaller - rotate: false - xy: 1655, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-item-tiny - rotate: false - xy: 1175, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-line - rotate: false - xy: 909, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-line-small - rotate: false - xy: 1229, 424 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-line-smaller - rotate: false - xy: 1687, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-line-tiny - rotate: false - xy: 1157, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-link - rotate: false - xy: 959, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-link-small - rotate: false - xy: 1263, 458 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-link-smaller - rotate: false - xy: 1719, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-link-tiny - rotate: false - xy: 1355, 224 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-liquid - rotate: false - xy: 1009, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-liquid-consume - rotate: false - xy: 1059, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-liquid-consume-small - rotate: false - xy: 1297, 492 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-liquid-consume-smaller - rotate: false - xy: 1751, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-liquid-consume-tiny - rotate: false - xy: 1337, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-liquid-small - rotate: false - xy: 1229, 390 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-liquid-smaller - rotate: false - xy: 1783, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-liquid-tiny - rotate: false - xy: 1319, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-load - rotate: false - xy: 1109, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-load-image - rotate: false - xy: 1159, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-load-image-small - rotate: false - xy: 1263, 424 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-load-image-smaller - rotate: false - xy: 1687, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-load-image-tiny - rotate: false - xy: 1301, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-load-map - rotate: false - xy: 1209, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-load-map-small - rotate: false - xy: 1297, 458 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-load-map-smaller - rotate: false - xy: 1719, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-load-map-tiny - rotate: false - xy: 1283, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-load-small - rotate: false - xy: 1331, 492 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-load-smaller - rotate: false - xy: 1751, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-load-tiny - rotate: false - xy: 1265, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-loading - rotate: false - xy: 1259, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-loading-small - rotate: false - xy: 1263, 390 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-loading-smaller - rotate: false - xy: 1783, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-loading-tiny - rotate: false - xy: 1247, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-locked - rotate: false - xy: 1309, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-locked-small - rotate: false - xy: 1297, 424 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-locked-smaller - rotate: false - xy: 1815, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-locked-tiny - rotate: false - xy: 1229, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-map - rotate: false - xy: 1359, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-map-small - rotate: false - xy: 1331, 458 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-map-smaller - rotate: false - xy: 1719, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-map-tiny - rotate: false - xy: 1211, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-menu - rotate: false - xy: 1409, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-menu-large - rotate: false - xy: 1459, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-menu-large-small - rotate: false - xy: 1365, 492 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-menu-large-smaller - rotate: false - xy: 1751, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-menu-large-tiny - rotate: false - xy: 1193, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-menu-small - rotate: false - xy: 1297, 390 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-menu-smaller - rotate: false - xy: 1783, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-menu-tiny - rotate: false - xy: 1175, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-missing - rotate: false - xy: 1509, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-missing-small - rotate: false - xy: 1331, 424 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-missing-smaller - rotate: false - xy: 1815, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-missing-tiny - rotate: false - xy: 1355, 206 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-mode-attack - rotate: false - xy: 1559, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-mode-attack-small - rotate: false - xy: 1365, 458 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-mode-attack-smaller - rotate: false - xy: 1847, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-mode-attack-tiny - rotate: false - xy: 1337, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-mode-pvp - rotate: false - xy: 1609, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-mode-pvp-small - rotate: false - xy: 1331, 390 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-mode-pvp-smaller - rotate: false - xy: 1751, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-mode-pvp-tiny - rotate: false - xy: 1319, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-mode-survival - rotate: false - xy: 1659, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-mode-survival-small - rotate: false - xy: 1365, 424 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-mode-survival-smaller - rotate: false - xy: 1783, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-mode-survival-tiny - rotate: false - xy: 1301, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-none - rotate: false - xy: 1709, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-none-small - rotate: false - xy: 1365, 390 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-none-smaller - rotate: false - xy: 1815, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-none-tiny - rotate: false - xy: 1283, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-paste - rotate: false - xy: 1759, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-paste-small - rotate: false - xy: 1161, 356 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-paste-smaller - rotate: false - xy: 1847, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-paste-tiny - rotate: false - xy: 1265, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-pause - rotate: false - xy: 1809, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-pause-small - rotate: false - xy: 1195, 356 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-pause-smaller - rotate: false - xy: 1879, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-pause-tiny - rotate: false - xy: 1247, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-pencil - rotate: false - xy: 1859, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-pencil-small - rotate: false - xy: 1229, 356 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-pencil-smaller - rotate: false - xy: 1783, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-pencil-tiny - rotate: false - xy: 1229, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-pick - rotate: false - xy: 1909, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-pick-small - rotate: false - xy: 1263, 356 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-pick-smaller - rotate: false - xy: 1815, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-pick-tiny - rotate: false - xy: 1211, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-play - rotate: false - xy: 1959, 775 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-play-2 - rotate: false - xy: 287, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-play-2-small - rotate: false - xy: 1297, 356 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-play-2-smaller - rotate: false - xy: 1847, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-play-2-tiny - rotate: false - xy: 1193, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-play-tiny - rotate: false - xy: 1193, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-play-custom - rotate: false - xy: 337, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-play-custom-small - rotate: false - xy: 1331, 356 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-play-custom-smaller - rotate: false - xy: 1879, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-play-custom-tiny - rotate: false - xy: 1355, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-play-small - rotate: false - xy: 1365, 356 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-play-smaller - rotate: false - xy: 1911, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-players - rotate: false - xy: 387, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-players-small - rotate: false - xy: 1415, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-players-smaller - rotate: false - xy: 1815, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-players-tiny - rotate: false - xy: 1337, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-power - rotate: false - xy: 437, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-power-small - rotate: false - xy: 1449, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-power-smaller - rotate: false - xy: 1847, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-power-tiny - rotate: false - xy: 1319, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-production - rotate: false - xy: 487, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-production-small - rotate: false - xy: 1483, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-production-smaller - rotate: false - xy: 1879, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-production-tiny - rotate: false - xy: 1301, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-quit - rotate: false - xy: 537, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-quit-small - rotate: false - xy: 1517, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-quit-smaller - rotate: false - xy: 1911, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-redo - rotate: false - xy: 587, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-redo-small - rotate: false - xy: 1551, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-redo-smaller - rotate: false - xy: 1847, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-redo-tiny - rotate: false - xy: 1283, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-refresh - rotate: false - xy: 637, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-refresh-small - rotate: false - xy: 1585, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-refresh-smaller - rotate: false - xy: 1879, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-refresh-tiny - rotate: false - xy: 1265, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-rename - rotate: false - xy: 687, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-rename-small - rotate: false - xy: 1619, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-rename-smaller - rotate: false - xy: 1911, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-rename-tiny - rotate: false - xy: 1247, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-resize - rotate: false - xy: 737, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-resize-small - rotate: false - xy: 1653, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-resize-smaller - rotate: false - xy: 1879, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-resize-tiny - rotate: false - xy: 1229, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-rotate - rotate: false - xy: 787, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-rotate-arrow - rotate: false - xy: 837, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-rotate-arrow-small - rotate: false - xy: 1687, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-rotate-arrow-smaller - rotate: false - xy: 1911, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-rotate-arrow-tiny - rotate: false - xy: 1211, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-rotate-left - rotate: false - xy: 887, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-rotate-left-small - rotate: false - xy: 1721, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-rotate-left-smaller - rotate: false - xy: 1911, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-rotate-left-tiny - rotate: false - xy: 1355, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-rotate-right - rotate: false - xy: 937, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-rotate-right-small - rotate: false - xy: 1755, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-rotate-right-smaller - rotate: false - xy: 1959, 557 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-rotate-right-tiny - rotate: false - xy: 1337, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-rotate-small - rotate: false - xy: 1789, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-rotate-smaller - rotate: false - xy: 1991, 569 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-rotate-tiny - rotate: false - xy: 1319, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-save - rotate: false - xy: 987, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-save-image - rotate: false - xy: 1037, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-save-image-small - rotate: false - xy: 1823, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-save-image-smaller - rotate: false - xy: 1991, 537 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-save-image-tiny - rotate: false - xy: 1301, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-save-map - rotate: false - xy: 1087, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-save-map-small - rotate: false - xy: 1857, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-save-map-smaller - rotate: false - xy: 1959, 525 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-save-map-tiny - rotate: false - xy: 1283, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-save-small - rotate: false - xy: 1891, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-save-smaller - rotate: false - xy: 1991, 505 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-save-tiny - rotate: false - xy: 1265, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-settings - rotate: false - xy: 1137, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-settings-small - rotate: false - xy: 1925, 555 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-settings-smaller - rotate: false - xy: 1943, 489 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-settings-tiny - rotate: false - xy: 1247, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-spray - rotate: false - xy: 1187, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-spray-small - rotate: false - xy: 1407, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-spray-smaller - rotate: false - xy: 1943, 457 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-spray-tiny - rotate: false - xy: 1229, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-terrain - rotate: false - xy: 1237, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-terrain-small - rotate: false - xy: 1441, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-terrain-smaller - rotate: false - xy: 1943, 425 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-terrain-tiny - rotate: false - xy: 1355, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-tools - rotate: false - xy: 1287, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-tools-small - rotate: false - xy: 1475, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-tools-smaller - rotate: false - xy: 1943, 393 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-tools-tiny - rotate: false - xy: 1337, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-trash - rotate: false - xy: 1337, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-trash-16 - rotate: false - xy: 1387, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-trash-16-small - rotate: false - xy: 1509, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-trash-16-smaller - rotate: false - xy: 1943, 361 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-trash-16-tiny - rotate: false - xy: 1319, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-trash-small - rotate: false - xy: 1543, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-trash-smaller - rotate: false - xy: 1975, 473 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-trash-tiny - rotate: false - xy: 1301, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-tree - rotate: false - xy: 1437, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-tree-small - rotate: false - xy: 1577, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-tree-smaller - rotate: false - xy: 1975, 441 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-tree-tiny - rotate: false - xy: 1283, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-trello - rotate: false - xy: 1487, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-trello-small - rotate: false - xy: 1611, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-trello-smaller - rotate: false - xy: 1975, 409 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-trello-tiny - rotate: false - xy: 1265, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-turret - rotate: false - xy: 1537, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-turret-small - rotate: false - xy: 1645, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-turret-smaller - rotate: false - xy: 1975, 377 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-turret-tiny - rotate: false - xy: 1247, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-tutorial - rotate: false - xy: 1587, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-tutorial-small - rotate: false - xy: 1679, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-tutorial-smaller - rotate: false - xy: 2007, 473 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-tutorial-tiny - rotate: false - xy: 1355, 134 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-undo - rotate: false - xy: 1637, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-undo-small - rotate: false - xy: 1713, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-undo-smaller - rotate: false - xy: 2007, 441 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-undo-tiny - rotate: false - xy: 1337, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-units - rotate: false - xy: 1687, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-units-small - rotate: false - xy: 1747, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-units-smaller - rotate: false - xy: 2007, 409 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-units-tiny - rotate: false - xy: 1319, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-unlocks - rotate: false - xy: 1737, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-unlocks-small - rotate: false - xy: 1781, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-unlocks-smaller - rotate: false - xy: 2007, 377 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-unlocks-tiny - rotate: false - xy: 1301, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-upgrade - rotate: false - xy: 1787, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-upgrade-small - rotate: false - xy: 1815, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-upgrade-smaller - rotate: false - xy: 1975, 345 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-upgrade-tiny - rotate: false - xy: 1283, 62 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-wiki - rotate: false - xy: 1837, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-wiki-small - rotate: false - xy: 1849, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-wiki-smaller - rotate: false - xy: 2007, 345 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-wiki-tiny - rotate: false - xy: 1265, 44 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-workshop - rotate: false - xy: 1887, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-workshop-small - rotate: false - xy: 1883, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-workshop-smaller - rotate: false - xy: 899, 242 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-workshop-tiny - rotate: false - xy: 1355, 116 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-zoom - rotate: false - xy: 1937, 725 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-zoom-small - rotate: false - xy: 1917, 521 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icon-zoom-smaller - rotate: false - xy: 931, 242 - size: 30, 30 - orig: 30, 30 - offset: 0, 0 - index: -1 -icon-zoom-tiny - rotate: false - xy: 1337, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -info-banner - rotate: false - xy: 259, 978 - size: 84, 45 - orig: 84, 45 - offset: 0, 0 - index: -1 -inventory - rotate: false - xy: 1467, 267 - size: 24, 40 - split: 10, 10, 10, 14 - orig: 24, 40 - offset: 0, 0 - index: -1 -nomap - rotate: false - xy: 1, 767 - size: 256, 256 - orig: 256, 256 - offset: 0, 0 - index: -1 -pane - rotate: false - xy: 1251, 696 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -pane-2 - rotate: false - xy: 1213, 696 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -scroll - rotate: false - xy: 1519, 272 - size: 24, 35 - split: 10, 10, 6, 5 - orig: 24, 35 - offset: 0, 0 - index: -1 -scroll-horizontal - rotate: false - xy: 301, 1 - size: 35, 24 - split: 6, 5, 10, 10 - orig: 35, 24 - offset: 0, 0 - index: -1 -scroll-knob-horizontal-black - rotate: false - xy: 301, 27 - size: 40, 24 - orig: 40, 24 - offset: 0, 0 - index: -1 -scroll-knob-vertical-black - rotate: false - xy: 1493, 267 - size: 24, 40 - orig: 24, 40 - offset: 0, 0 - index: -1 -selection - rotate: false - xy: 309, 975 - size: 1, 1 - orig: 1, 1 - offset: 0, 0 - index: -1 -slider - rotate: false - xy: 998, 338 - size: 1, 8 - orig: 1, 8 - offset: 0, 0 - index: -1 -slider-knob - rotate: false - xy: 941, 378 - size: 29, 38 - orig: 29, 38 - offset: 0, 0 - index: -1 -slider-knob-down - rotate: false - xy: 972, 386 - size: 29, 38 - orig: 29, 38 - offset: 0, 0 - index: -1 -slider-knob-over - rotate: false - xy: 967, 338 - size: 29, 38 - orig: 29, 38 - offset: 0, 0 - index: -1 -slider-vertical - rotate: false - xy: 51, 717 - size: 8, 1 - orig: 8, 1 - offset: 0, 0 - index: -1 -underline - rotate: false - xy: 1403, 696 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -underline-2 - rotate: false - xy: 1289, 696 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -underline-disabled - rotate: false - xy: 1327, 696 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -underline-red - rotate: false - xy: 1365, 696 - size: 36, 27 - split: 12, 12, 12, 12 - orig: 36, 27 - offset: 0, 0 - index: -1 -whiteui - rotate: false - xy: 1415, 589 - size: 3, 3 - orig: 3, 3 - offset: 0, 0 - index: -1 -window-empty - rotate: false - xy: 996, 275 - size: 27, 61 - split: 4, 4, 2, 2 - orig: 27, 61 - offset: 0, 0 - index: -1 - -sprites5.png size: 1024,1024 format: RGBA8888 filter: Nearest,Nearest @@ -19197,3 +9241,10050 @@ zone-tarFields orig: 250, 250 offset: 0, 0 index: -1 + +sprites5.png +size: 2048,1024 +format: RGBA8888 +filter: Nearest,Nearest +repeat: none +bar + rotate: false + xy: 1647, 611 + size: 27, 36 + split: 9, 9, 9, 9 + orig: 27, 36 + offset: 0, 0 + index: -1 +bar-top + rotate: false + xy: 1618, 611 + size: 27, 36 + split: 9, 10, 9, 10 + orig: 27, 36 + offset: 0, 0 + index: -1 +block-alloy-smelter-large + rotate: false + xy: 301, 633 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-alloy-smelter-medium + rotate: false + xy: 2009, 941 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-alloy-smelter-small + rotate: false + xy: 2009, 779 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-alloy-smelter-tiny + rotate: false + xy: 605, 82 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-alloy-smelter-xlarge + rotate: false + xy: 1, 670 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-arc-large + rotate: false + xy: 351, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-arc-medium + rotate: false + xy: 2009, 907 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-arc-small + rotate: false + xy: 1705, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-arc-tiny + rotate: false + xy: 727, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-arc-xlarge + rotate: false + xy: 259, 928 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-armored-conveyor-large + rotate: false + xy: 301, 591 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-armored-conveyor-medium + rotate: false + xy: 2009, 873 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-armored-conveyor-small + rotate: false + xy: 1705, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-armored-conveyor-tiny + rotate: false + xy: 745, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-armored-conveyor-xlarge + rotate: false + xy: 1, 620 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-battery-large + rotate: false + xy: 393, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-battery-large-large + rotate: false + xy: 301, 549 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-battery-large-medium + rotate: false + xy: 2009, 839 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-battery-large-small + rotate: false + xy: 1731, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-battery-large-tiny + rotate: false + xy: 763, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-battery-large-xlarge + rotate: false + xy: 259, 878 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-battery-medium + rotate: false + xy: 2009, 805 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-battery-small + rotate: false + xy: 1731, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-battery-tiny + rotate: false + xy: 781, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-battery-xlarge + rotate: false + xy: 1, 570 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-blast-drill-large + rotate: false + xy: 435, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-blast-drill-medium + rotate: false + xy: 1276, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-blast-drill-small + rotate: false + xy: 1757, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-blast-drill-tiny + rotate: false + xy: 799, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-blast-drill-xlarge + rotate: false + xy: 259, 828 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-blast-mixer-large + rotate: false + xy: 301, 507 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-blast-mixer-medium + rotate: false + xy: 1310, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-blast-mixer-small + rotate: false + xy: 1757, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-blast-mixer-tiny + rotate: false + xy: 817, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-blast-mixer-xlarge + rotate: false + xy: 1, 520 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-bridge-conduit-large + rotate: false + xy: 477, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-bridge-conduit-medium + rotate: false + xy: 1344, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-bridge-conduit-small + rotate: false + xy: 1783, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-bridge-conduit-tiny + rotate: false + xy: 835, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-bridge-conduit-xlarge + rotate: false + xy: 259, 778 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-bridge-conveyor-large + rotate: false + xy: 301, 465 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-bridge-conveyor-medium + rotate: false + xy: 1378, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-bridge-conveyor-small + rotate: false + xy: 1783, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-bridge-conveyor-tiny + rotate: false + xy: 853, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-bridge-conveyor-xlarge + rotate: false + xy: 1, 470 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-char-large + rotate: false + xy: 519, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-char-medium + rotate: false + xy: 1412, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-char-small + rotate: false + xy: 1809, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-char-tiny + rotate: false + xy: 871, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-char-xlarge + rotate: false + xy: 1, 420 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-cliffs-large + rotate: false + xy: 301, 423 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-cliffs-medium + rotate: false + xy: 1446, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-cliffs-small + rotate: false + xy: 1809, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-cliffs-tiny + rotate: false + xy: 889, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-cliffs-xlarge + rotate: false + xy: 1, 370 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-coal-centrifuge-large + rotate: false + xy: 561, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-coal-centrifuge-medium + rotate: false + xy: 1480, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-coal-centrifuge-small + rotate: false + xy: 1835, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-coal-centrifuge-tiny + rotate: false + xy: 907, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-coal-centrifuge-xlarge + rotate: false + xy: 1, 320 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-combustion-generator-large + rotate: false + xy: 301, 381 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-combustion-generator-medium + rotate: false + xy: 1514, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-combustion-generator-small + rotate: false + xy: 1835, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-combustion-generator-tiny + rotate: false + xy: 925, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-combustion-generator-xlarge + rotate: false + xy: 1, 270 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-command-center-large + rotate: false + xy: 603, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-command-center-medium + rotate: false + xy: 1548, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-command-center-small + rotate: false + xy: 1861, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-command-center-tiny + rotate: false + xy: 943, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-command-center-xlarge + rotate: false + xy: 1, 220 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-conduit-large + rotate: false + xy: 301, 339 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-conduit-medium + rotate: false + xy: 1582, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-conduit-small + rotate: false + xy: 1861, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-conduit-tiny + rotate: false + xy: 961, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-conduit-xlarge + rotate: false + xy: 1, 170 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-container-large + rotate: false + xy: 645, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-container-medium + rotate: false + xy: 1616, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-container-small + rotate: false + xy: 1887, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-container-tiny + rotate: false + xy: 979, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-container-xlarge + rotate: false + xy: 1, 120 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-conveyor-large + rotate: false + xy: 301, 297 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-conveyor-medium + rotate: false + xy: 1650, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-conveyor-small + rotate: false + xy: 1887, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-conveyor-tiny + rotate: false + xy: 1, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-conveyor-xlarge + rotate: false + xy: 1, 70 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-copper-wall-large + rotate: false + xy: 687, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-copper-wall-large-large + rotate: false + xy: 301, 255 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-copper-wall-large-medium + rotate: false + xy: 1684, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-copper-wall-large-small + rotate: false + xy: 1913, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-copper-wall-large-tiny + rotate: false + xy: 385, 6 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-copper-wall-large-xlarge + rotate: false + xy: 1, 20 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-copper-wall-medium + rotate: false + xy: 1718, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-copper-wall-small + rotate: false + xy: 1913, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-copper-wall-tiny + rotate: false + xy: 1035, 364 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-copper-wall-xlarge + rotate: false + xy: 87, 717 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-core-foundation-large + rotate: false + xy: 729, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-core-foundation-medium + rotate: false + xy: 1752, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-core-foundation-small + rotate: false + xy: 1939, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-core-foundation-tiny + rotate: false + xy: 1061, 330 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-core-foundation-xlarge + rotate: false + xy: 137, 717 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-core-nucleus-large + rotate: false + xy: 301, 213 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-core-nucleus-medium + rotate: false + xy: 1786, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-core-nucleus-small + rotate: false + xy: 1939, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-core-nucleus-tiny + rotate: false + xy: 727, 88 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-core-nucleus-xlarge + rotate: false + xy: 187, 717 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-core-shard-large + rotate: false + xy: 771, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-core-shard-medium + rotate: false + xy: 1820, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-core-shard-small + rotate: false + xy: 1245, 631 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-core-shard-tiny + rotate: false + xy: 1271, 553 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-core-shard-xlarge + rotate: false + xy: 345, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-craters-large + rotate: false + xy: 301, 171 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-craters-medium + rotate: false + xy: 1854, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-craters-small + rotate: false + xy: 1271, 623 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-craters-tiny + rotate: false + xy: 1965, 631 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-craters-xlarge + rotate: false + xy: 395, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-crawler-factory-large + rotate: false + xy: 813, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-crawler-factory-medium + rotate: false + xy: 1888, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-crawler-factory-small + rotate: false + xy: 1271, 597 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-crawler-factory-tiny + rotate: false + xy: 1301, 521 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-crawler-factory-xlarge + rotate: false + xy: 445, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-cryofluidmixer-large + rotate: false + xy: 301, 129 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-cryofluidmixer-medium + rotate: false + xy: 1922, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-cryofluidmixer-small + rotate: false + xy: 1271, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-cryofluidmixer-tiny + rotate: false + xy: 1319, 521 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-cryofluidmixer-xlarge + rotate: false + xy: 495, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-cultivator-large + rotate: false + xy: 855, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-cultivator-medium + rotate: false + xy: 1956, 649 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-cultivator-small + rotate: false + xy: 1297, 591 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-cultivator-tiny + rotate: false + xy: 1691, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-cultivator-xlarge + rotate: false + xy: 545, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-cyclone-large + rotate: false + xy: 301, 87 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-cyclone-medium + rotate: false + xy: 1990, 657 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-cyclone-small + rotate: false + xy: 1323, 591 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-cyclone-tiny + rotate: false + xy: 19, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-cyclone-xlarge + rotate: false + xy: 595, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-dagger-factory-large + rotate: false + xy: 897, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-dagger-factory-medium + rotate: false + xy: 847, 494 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-dagger-factory-small + rotate: false + xy: 1349, 591 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-dagger-factory-tiny + rotate: false + xy: 403, 6 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-dagger-factory-xlarge + rotate: false + xy: 645, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-dark-metal-large + rotate: false + xy: 301, 45 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-dark-metal-medium + rotate: false + xy: 843, 460 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-dark-metal-small + rotate: false + xy: 1375, 591 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-dark-metal-tiny + rotate: false + xy: 1965, 613 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-dark-metal-xlarge + rotate: false + xy: 695, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-dark-panel-1-large + rotate: false + xy: 939, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-dark-panel-1-medium + rotate: false + xy: 889, 536 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-dark-panel-1-small + rotate: false + xy: 1401, 591 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-dark-panel-1-tiny + rotate: false + xy: 1337, 521 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-dark-panel-1-xlarge + rotate: false + xy: 745, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-dark-panel-2-large + rotate: false + xy: 981, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-dark-panel-2-medium + rotate: false + xy: 931, 578 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-dark-panel-2-small + rotate: false + xy: 1427, 591 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-dark-panel-2-tiny + rotate: false + xy: 1709, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-dark-panel-2-xlarge + rotate: false + xy: 795, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-dark-panel-3-large + rotate: false + xy: 1023, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-dark-panel-3-medium + rotate: false + xy: 427, 32 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-dark-panel-3-small + rotate: false + xy: 1453, 591 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-dark-panel-3-tiny + rotate: false + xy: 1965, 595 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-dark-panel-3-xlarge + rotate: false + xy: 845, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-dark-panel-4-large + rotate: false + xy: 1065, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-dark-panel-4-medium + rotate: false + xy: 469, 74 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-dark-panel-4-small + rotate: false + xy: 1479, 591 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-dark-panel-4-tiny + rotate: false + xy: 1355, 521 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-dark-panel-4-xlarge + rotate: false + xy: 895, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-dark-panel-5-large + rotate: false + xy: 1107, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-dark-panel-5-medium + rotate: false + xy: 511, 116 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-dark-panel-5-small + rotate: false + xy: 1297, 565 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-dark-panel-5-tiny + rotate: false + xy: 1727, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-dark-panel-5-xlarge + rotate: false + xy: 945, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-dark-panel-6-large + rotate: false + xy: 1149, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-dark-panel-6-medium + rotate: false + xy: 553, 158 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-dark-panel-6-small + rotate: false + xy: 1323, 565 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-dark-panel-6-tiny + rotate: false + xy: 1965, 577 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-dark-panel-6-xlarge + rotate: false + xy: 995, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-darksand-large + rotate: false + xy: 1191, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-darksand-medium + rotate: false + xy: 595, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-darksand-small + rotate: false + xy: 1349, 565 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-darksand-tainted-water-large + rotate: false + xy: 1233, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-darksand-tainted-water-medium + rotate: false + xy: 637, 242 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-darksand-tainted-water-small + rotate: false + xy: 1375, 565 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-darksand-tainted-water-tiny + rotate: false + xy: 1373, 521 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-darksand-tainted-water-xlarge + rotate: false + xy: 1045, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-darksand-tiny + rotate: false + xy: 1745, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-darksand-water-large + rotate: false + xy: 1275, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-darksand-water-medium + rotate: false + xy: 679, 284 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-darksand-water-small + rotate: false + xy: 1401, 565 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-darksand-water-tiny + rotate: false + xy: 1391, 521 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-darksand-water-xlarge + rotate: false + xy: 1095, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-darksand-xlarge + rotate: false + xy: 1145, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-dart-mech-pad-large + rotate: false + xy: 1317, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-dart-mech-pad-medium + rotate: false + xy: 721, 326 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-dart-mech-pad-small + rotate: false + xy: 1427, 565 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-dart-mech-pad-tiny + rotate: false + xy: 1763, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-dart-mech-pad-xlarge + rotate: false + xy: 1195, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-deepwater-large + rotate: false + xy: 1359, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-deepwater-medium + rotate: false + xy: 755, 326 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-deepwater-small + rotate: false + xy: 1453, 565 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-deepwater-tiny + rotate: false + xy: 1409, 521 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-deepwater-xlarge + rotate: false + xy: 1245, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-delta-mech-pad-large + rotate: false + xy: 1401, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-delta-mech-pad-medium + rotate: false + xy: 973, 620 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-delta-mech-pad-small + rotate: false + xy: 1479, 565 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-delta-mech-pad-tiny + rotate: false + xy: 1427, 521 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-delta-mech-pad-xlarge + rotate: false + xy: 1295, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-differential-generator-large + rotate: false + xy: 1443, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-differential-generator-medium + rotate: false + xy: 1007, 620 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-differential-generator-small + rotate: false + xy: 1301, 539 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-differential-generator-tiny + rotate: false + xy: 1781, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-differential-generator-xlarge + rotate: false + xy: 1345, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-distributor-large + rotate: false + xy: 1485, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-distributor-medium + rotate: false + xy: 1041, 620 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-distributor-small + rotate: false + xy: 1327, 539 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-distributor-tiny + rotate: false + xy: 1445, 521 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-distributor-xlarge + rotate: false + xy: 1395, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-door-large + rotate: false + xy: 1527, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-door-large-large + rotate: false + xy: 1569, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-door-large-medium + rotate: false + xy: 1075, 620 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-door-large-small + rotate: false + xy: 1353, 539 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-door-large-tiny + rotate: false + xy: 1799, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-door-large-xlarge + rotate: false + xy: 1445, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-door-medium + rotate: false + xy: 1109, 620 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-door-small + rotate: false + xy: 1379, 539 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-door-tiny + rotate: false + xy: 1463, 521 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-door-xlarge + rotate: false + xy: 1495, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-draug-factory-large + rotate: false + xy: 1611, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-draug-factory-medium + rotate: false + xy: 1143, 620 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-draug-factory-small + rotate: false + xy: 1405, 539 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-draug-factory-tiny + rotate: false + xy: 1817, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-draug-factory-xlarge + rotate: false + xy: 1545, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-dunerocks-large + rotate: false + xy: 1653, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-dunerocks-medium + rotate: false + xy: 1177, 620 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-dunerocks-small + rotate: false + xy: 1431, 539 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-dunerocks-tiny + rotate: false + xy: 1835, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-dunerocks-xlarge + rotate: false + xy: 1595, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-duo-large + rotate: false + xy: 1695, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-duo-medium + rotate: false + xy: 1211, 620 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-duo-small + rotate: false + xy: 1457, 539 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-duo-tiny + rotate: false + xy: 1853, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-duo-xlarge + rotate: false + xy: 1645, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-force-projector-large + rotate: false + xy: 1737, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-force-projector-medium + rotate: false + xy: 805, 423 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-force-projector-small + rotate: false + xy: 1483, 539 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-force-projector-tiny + rotate: false + xy: 1871, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-force-projector-xlarge + rotate: false + xy: 1695, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-fortress-factory-large + rotate: false + xy: 1779, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-fortress-factory-medium + rotate: false + xy: 801, 389 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-fortress-factory-small + rotate: false + xy: 1705, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-fortress-factory-tiny + rotate: false + xy: 1889, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-fortress-factory-xlarge + rotate: false + xy: 1745, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-fuse-large + rotate: false + xy: 1821, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-fuse-medium + rotate: false + xy: 797, 355 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-fuse-small + rotate: false + xy: 1731, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-fuse-tiny + rotate: false + xy: 1907, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-fuse-xlarge + rotate: false + xy: 1795, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-ghoul-factory-large + rotate: false + xy: 1863, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-ghoul-factory-medium + rotate: false + xy: 789, 321 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-ghoul-factory-small + rotate: false + xy: 1757, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-ghoul-factory-tiny + rotate: false + xy: 1925, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-ghoul-factory-xlarge + rotate: false + xy: 1845, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-glaive-ship-pad-large + rotate: false + xy: 1905, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-glaive-ship-pad-medium + rotate: false + xy: 1990, 623 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-glaive-ship-pad-small + rotate: false + xy: 1783, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-glaive-ship-pad-tiny + rotate: false + xy: 1943, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-glaive-ship-pad-xlarge + rotate: false + xy: 1895, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-graphite-press-large + rotate: false + xy: 1947, 683 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-graphite-press-medium + rotate: false + xy: 823, 321 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-graphite-press-small + rotate: false + xy: 1809, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-graphite-press-tiny + rotate: false + xy: 1961, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-graphite-press-xlarge + rotate: false + xy: 1945, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-grass-large + rotate: false + xy: 301, 3 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-grass-medium + rotate: false + xy: 831, 355 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-grass-small + rotate: false + xy: 1835, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-grass-tiny + rotate: false + xy: 997, 4 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-grass-xlarge + rotate: false + xy: 1995, 975 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-hail-large + rotate: false + xy: 1987, 733 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-hail-medium + rotate: false + xy: 835, 389 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-hail-small + rotate: false + xy: 1861, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-hail-tiny + rotate: false + xy: 1015, 4 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-hail-xlarge + rotate: false + xy: 237, 717 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-holostone-large + rotate: false + xy: 1989, 691 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-holostone-medium + rotate: false + xy: 839, 423 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-holostone-small + rotate: false + xy: 1887, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-holostone-tiny + rotate: false + xy: 1319, 503 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-holostone-xlarge + rotate: false + xy: 51, 667 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-hotrock-large + rotate: false + xy: 343, 633 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-hotrock-medium + rotate: false + xy: 857, 321 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-hotrock-small + rotate: false + xy: 1913, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-hotrock-tiny + rotate: false + xy: 1319, 485 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-hotrock-xlarge + rotate: false + xy: 51, 617 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-ice-large + rotate: false + xy: 343, 591 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-ice-medium + rotate: false + xy: 865, 355 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-ice-small + rotate: false + xy: 1939, 571 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-ice-snow-large + rotate: false + xy: 343, 549 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-ice-snow-medium + rotate: false + xy: 869, 389 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-ice-snow-small + rotate: false + xy: 1505, 583 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-ice-snow-tiny + rotate: false + xy: 1337, 503 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-ice-snow-xlarge + rotate: false + xy: 101, 667 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-ice-tiny + rotate: false + xy: 1319, 467 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-ice-xlarge + rotate: false + xy: 51, 567 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-icerocks-large + rotate: false + xy: 343, 507 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-icerocks-medium + rotate: false + xy: 891, 321 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-icerocks-small + rotate: false + xy: 1531, 583 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-icerocks-tiny + rotate: false + xy: 1355, 503 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-icerocks-xlarge + rotate: false + xy: 101, 617 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-ignarock-large + rotate: false + xy: 343, 465 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-ignarock-medium + rotate: false + xy: 899, 355 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-ignarock-small + rotate: false + xy: 1557, 583 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-ignarock-tiny + rotate: false + xy: 1337, 485 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-ignarock-xlarge + rotate: false + xy: 151, 667 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-impact-reactor-large + rotate: false + xy: 343, 423 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-impact-reactor-medium + rotate: false + xy: 925, 321 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-impact-reactor-small + rotate: false + xy: 1583, 583 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-impact-reactor-tiny + rotate: false + xy: 1373, 503 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-impact-reactor-xlarge + rotate: false + xy: 51, 517 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-incinerator-large + rotate: false + xy: 343, 381 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-incinerator-medium + rotate: false + xy: 965, 578 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-incinerator-small + rotate: false + xy: 1609, 583 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-incinerator-tiny + rotate: false + xy: 1355, 485 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-incinerator-xlarge + rotate: false + xy: 101, 567 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-inverted-sorter-large + rotate: false + xy: 343, 339 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-inverted-sorter-medium + rotate: false + xy: 999, 586 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-inverted-sorter-small + rotate: false + xy: 1635, 585 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-inverted-sorter-tiny + rotate: false + xy: 1337, 467 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-inverted-sorter-xlarge + rotate: false + xy: 151, 617 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-item-source-large + rotate: false + xy: 343, 297 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-item-source-medium + rotate: false + xy: 1033, 586 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-item-source-small + rotate: false + xy: 1509, 557 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-item-source-tiny + rotate: false + xy: 1391, 503 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-item-source-xlarge + rotate: false + xy: 201, 667 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-item-void-large + rotate: false + xy: 343, 255 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-item-void-medium + rotate: false + xy: 1067, 586 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-item-void-small + rotate: false + xy: 1535, 557 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-item-void-tiny + rotate: false + xy: 1373, 485 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-item-void-xlarge + rotate: false + xy: 51, 467 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-javelin-ship-pad-large + rotate: false + xy: 343, 213 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-javelin-ship-pad-medium + rotate: false + xy: 1101, 586 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-javelin-ship-pad-small + rotate: false + xy: 1561, 557 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-javelin-ship-pad-tiny + rotate: false + xy: 1355, 467 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-javelin-ship-pad-xlarge + rotate: false + xy: 101, 517 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-junction-large + rotate: false + xy: 343, 171 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-junction-medium + rotate: false + xy: 1135, 586 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-junction-small + rotate: false + xy: 1587, 557 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-junction-tiny + rotate: false + xy: 1409, 503 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-junction-xlarge + rotate: false + xy: 151, 567 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-kiln-large + rotate: false + xy: 343, 129 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-kiln-medium + rotate: false + xy: 1169, 586 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-kiln-small + rotate: false + xy: 1613, 557 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-kiln-tiny + rotate: false + xy: 1427, 503 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-kiln-xlarge + rotate: false + xy: 201, 617 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-lancer-large + rotate: false + xy: 343, 87 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-lancer-medium + rotate: false + xy: 1203, 586 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-lancer-small + rotate: false + xy: 1639, 559 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-lancer-tiny + rotate: false + xy: 1391, 485 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-lancer-xlarge + rotate: false + xy: 51, 417 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-laser-drill-large + rotate: false + xy: 343, 45 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-laser-drill-medium + rotate: false + xy: 999, 552 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-laser-drill-small + rotate: false + xy: 1509, 531 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-laser-drill-tiny + rotate: false + xy: 1373, 467 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-laser-drill-xlarge + rotate: false + xy: 101, 467 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-launch-pad-large + rotate: false + xy: 343, 3 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-launch-pad-large-large + rotate: false + xy: 385, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-launch-pad-large-medium + rotate: false + xy: 1033, 552 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-launch-pad-large-small + rotate: false + xy: 1535, 531 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-launch-pad-large-tiny + rotate: false + xy: 1445, 503 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-launch-pad-large-xlarge + rotate: false + xy: 151, 517 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-launch-pad-medium + rotate: false + xy: 1067, 552 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-launch-pad-small + rotate: false + xy: 1561, 531 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-launch-pad-tiny + rotate: false + xy: 1409, 485 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-launch-pad-xlarge + rotate: false + xy: 201, 567 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-liquid-junction-large + rotate: false + xy: 385, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-liquid-junction-medium + rotate: false + xy: 1101, 552 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-liquid-junction-small + rotate: false + xy: 1587, 531 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-liquid-junction-tiny + rotate: false + xy: 1427, 485 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-liquid-junction-xlarge + rotate: false + xy: 51, 367 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-liquid-router-large + rotate: false + xy: 427, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-liquid-router-medium + rotate: false + xy: 1135, 552 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-liquid-router-small + rotate: false + xy: 1613, 531 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-liquid-router-tiny + rotate: false + xy: 1391, 467 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-liquid-router-xlarge + rotate: false + xy: 101, 417 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-liquid-source-large + rotate: false + xy: 385, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-liquid-source-medium + rotate: false + xy: 1169, 552 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-liquid-source-small + rotate: false + xy: 1639, 533 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-liquid-source-tiny + rotate: false + xy: 1463, 503 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-liquid-source-xlarge + rotate: false + xy: 151, 467 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-liquid-tank-large + rotate: false + xy: 427, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-liquid-tank-medium + rotate: false + xy: 1203, 552 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-liquid-tank-small + rotate: false + xy: 1665, 560 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-liquid-tank-tiny + rotate: false + xy: 1445, 485 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-liquid-tank-xlarge + rotate: false + xy: 201, 517 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-magmarock-large + rotate: false + xy: 469, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-magmarock-medium + rotate: false + xy: 1237, 586 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-magmarock-small + rotate: false + xy: 1665, 534 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-magmarock-tiny + rotate: false + xy: 1409, 467 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-magmarock-xlarge + rotate: false + xy: 51, 317 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-mass-driver-large + rotate: false + xy: 385, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-mass-driver-medium + rotate: false + xy: 1237, 552 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-mass-driver-small + rotate: false + xy: 1691, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-mass-driver-tiny + rotate: false + xy: 1427, 467 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-mass-driver-xlarge + rotate: false + xy: 101, 367 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-mechanical-drill-large + rotate: false + xy: 427, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-mechanical-drill-medium + rotate: false + xy: 461, 32 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-mechanical-drill-small + rotate: false + xy: 1717, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-mechanical-drill-tiny + rotate: false + xy: 1463, 485 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-mechanical-drill-xlarge + rotate: false + xy: 151, 417 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-mechanical-pump-large + rotate: false + xy: 469, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-mechanical-pump-medium + rotate: false + xy: 503, 74 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-mechanical-pump-small + rotate: false + xy: 1743, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-mechanical-pump-tiny + rotate: false + xy: 1445, 467 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-mechanical-pump-xlarge + rotate: false + xy: 201, 467 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-meltdown-large + rotate: false + xy: 511, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-meltdown-medium + rotate: false + xy: 495, 40 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-meltdown-small + rotate: false + xy: 1769, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-meltdown-tiny + rotate: false + xy: 1463, 467 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-meltdown-xlarge + rotate: false + xy: 51, 267 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-melter-large + rotate: false + xy: 385, 473 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-melter-medium + rotate: false + xy: 495, 6 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-melter-small + rotate: false + xy: 1795, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-melter-tiny + rotate: false + xy: 1005, 398 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-melter-xlarge + rotate: false + xy: 101, 317 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-mend-projector-large + rotate: false + xy: 427, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-mend-projector-medium + rotate: false + xy: 529, 40 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-mend-projector-small + rotate: false + xy: 1821, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-mend-projector-tiny + rotate: false + xy: 1983, 605 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-mend-projector-xlarge + rotate: false + xy: 151, 367 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-mender-large + rotate: false + xy: 469, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-mender-medium + rotate: false + xy: 529, 6 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-mender-small + rotate: false + xy: 1847, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-mender-tiny + rotate: false + xy: 1983, 587 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-mender-xlarge + rotate: false + xy: 201, 417 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-message-large + rotate: false + xy: 511, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-message-medium + rotate: false + xy: 587, 158 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-message-small + rotate: false + xy: 1873, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-message-tiny + rotate: false + xy: 2001, 605 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-message-xlarge + rotate: false + xy: 51, 217 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-metal-floor-2-large + rotate: false + xy: 553, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-metal-floor-2-medium + rotate: false + xy: 629, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-metal-floor-2-small + rotate: false + xy: 1899, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-metal-floor-2-tiny + rotate: false + xy: 2001, 587 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-metal-floor-2-xlarge + rotate: false + xy: 101, 267 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-metal-floor-3-large + rotate: false + xy: 385, 431 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-metal-floor-3-medium + rotate: false + xy: 621, 166 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-metal-floor-3-small + rotate: false + xy: 1925, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-metal-floor-3-tiny + rotate: false + xy: 1983, 569 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-metal-floor-3-xlarge + rotate: false + xy: 151, 317 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-metal-floor-5-large + rotate: false + xy: 427, 473 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-metal-floor-5-medium + rotate: false + xy: 621, 132 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-metal-floor-5-small + rotate: false + xy: 1951, 545 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-metal-floor-5-tiny + rotate: false + xy: 2001, 569 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-metal-floor-5-xlarge + rotate: false + xy: 201, 367 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-metal-floor-damaged-large + rotate: false + xy: 469, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-metal-floor-damaged-medium + rotate: false + xy: 655, 166 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-metal-floor-damaged-small + rotate: false + xy: 1691, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-metal-floor-damaged-tiny + rotate: false + xy: 1977, 551 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-metal-floor-damaged-xlarge + rotate: false + xy: 51, 167 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-metal-floor-large + rotate: false + xy: 511, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-metal-floor-medium + rotate: false + xy: 655, 132 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-metal-floor-small + rotate: false + xy: 1717, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-metal-floor-tiny + rotate: false + xy: 1977, 533 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-metal-floor-xlarge + rotate: false + xy: 101, 217 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-moss-large + rotate: false + xy: 553, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-moss-medium + rotate: false + xy: 713, 284 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-moss-small + rotate: false + xy: 1743, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-moss-tiny + rotate: false + xy: 1995, 551 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-moss-xlarge + rotate: false + xy: 151, 267 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-multi-press-large + rotate: false + xy: 595, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-multi-press-medium + rotate: false + xy: 747, 292 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-multi-press-small + rotate: false + xy: 1769, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-multi-press-tiny + rotate: false + xy: 1977, 515 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-multi-press-xlarge + rotate: false + xy: 201, 317 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-oil-extractor-large + rotate: false + xy: 385, 389 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-oil-extractor-medium + rotate: false + xy: 781, 287 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-oil-extractor-small + rotate: false + xy: 1795, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-oil-extractor-tiny + rotate: false + xy: 1995, 533 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-oil-extractor-xlarge + rotate: false + xy: 51, 117 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-omega-mech-pad-large + rotate: false + xy: 427, 431 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-omega-mech-pad-medium + rotate: false + xy: 815, 287 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-omega-mech-pad-small + rotate: false + xy: 1821, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-omega-mech-pad-tiny + rotate: false + xy: 1977, 497 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-omega-mech-pad-xlarge + rotate: false + xy: 101, 167 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-overdrive-projector-large + rotate: false + xy: 469, 473 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-overdrive-projector-medium + rotate: false + xy: 849, 287 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-overdrive-projector-small + rotate: false + xy: 1847, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-overdrive-projector-tiny + rotate: false + xy: 1995, 515 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-overdrive-projector-xlarge + rotate: false + xy: 151, 217 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-overflow-gate-large + rotate: false + xy: 511, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-overflow-gate-medium + rotate: false + xy: 883, 287 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-overflow-gate-small + rotate: false + xy: 1873, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-overflow-gate-tiny + rotate: false + xy: 1977, 479 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-overflow-gate-xlarge + rotate: false + xy: 201, 267 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-pebbles-large + rotate: false + xy: 553, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-pebbles-medium + rotate: false + xy: 917, 287 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-pebbles-small + rotate: false + xy: 1899, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-pebbles-tiny + rotate: false + xy: 1995, 497 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-pebbles-xlarge + rotate: false + xy: 51, 67 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-phantom-factory-large + rotate: false + xy: 595, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-phantom-factory-medium + rotate: false + xy: 747, 258 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-phantom-factory-small + rotate: false + xy: 1925, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-phantom-factory-tiny + rotate: false + xy: 1977, 461 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-phantom-factory-xlarge + rotate: false + xy: 101, 117 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-phase-conduit-large + rotate: false + xy: 637, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-phase-conduit-medium + rotate: false + xy: 781, 253 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-phase-conduit-small + rotate: false + xy: 1951, 519 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-phase-conduit-tiny + rotate: false + xy: 1995, 479 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-phase-conduit-xlarge + rotate: false + xy: 151, 167 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-phase-conveyor-large + rotate: false + xy: 385, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-phase-conveyor-medium + rotate: false + xy: 815, 253 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-phase-conveyor-small + rotate: false + xy: 1665, 508 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-phase-conveyor-tiny + rotate: false + xy: 1977, 443 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-phase-conveyor-xlarge + rotate: false + xy: 201, 217 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-phase-wall-large + rotate: false + xy: 427, 389 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-phase-wall-large-large + rotate: false + xy: 469, 431 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-phase-wall-large-medium + rotate: false + xy: 849, 253 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-phase-wall-large-small + rotate: false + xy: 1639, 507 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-phase-wall-large-tiny + rotate: false + xy: 1995, 461 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-phase-wall-large-xlarge + rotate: false + xy: 101, 67 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-phase-wall-medium + rotate: false + xy: 883, 253 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-phase-wall-small + rotate: false + xy: 1691, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-phase-wall-tiny + rotate: false + xy: 1977, 425 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-phase-wall-xlarge + rotate: false + xy: 151, 117 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-phase-weaver-large + rotate: false + xy: 511, 473 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-phase-weaver-medium + rotate: false + xy: 917, 253 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-phase-weaver-small + rotate: false + xy: 1717, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-phase-weaver-tiny + rotate: false + xy: 1995, 443 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-phase-weaver-xlarge + rotate: false + xy: 201, 167 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-pine-large + rotate: false + xy: 553, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-pine-medium + rotate: false + xy: 951, 287 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-pine-small + rotate: false + xy: 1743, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-pine-tiny + rotate: false + xy: 1977, 407 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-pine-xlarge + rotate: false + xy: 151, 67 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-plastanium-compressor-large + rotate: false + xy: 595, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-plastanium-compressor-medium + rotate: false + xy: 951, 253 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-plastanium-compressor-small + rotate: false + xy: 1769, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-plastanium-compressor-tiny + rotate: false + xy: 1977, 389 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-plastanium-compressor-xlarge + rotate: false + xy: 201, 117 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-pneumatic-drill-large + rotate: false + xy: 637, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-pneumatic-drill-medium + rotate: false + xy: 881, 494 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-pneumatic-drill-small + rotate: false + xy: 1795, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-pneumatic-drill-tiny + rotate: false + xy: 1995, 425 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-pneumatic-drill-xlarge + rotate: false + xy: 201, 67 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-power-node-large + rotate: false + xy: 679, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-power-node-large-large + rotate: false + xy: 385, 305 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-power-node-large-medium + rotate: false + xy: 877, 460 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-power-node-large-small + rotate: false + xy: 1821, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-power-node-large-tiny + rotate: false + xy: 1995, 407 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-power-node-large-xlarge + rotate: false + xy: 51, 17 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-power-node-medium + rotate: false + xy: 873, 426 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-power-node-small + rotate: false + xy: 1847, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-power-node-tiny + rotate: false + xy: 1995, 389 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-power-node-xlarge + rotate: false + xy: 101, 17 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-power-source-large + rotate: false + xy: 427, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-power-source-medium + rotate: false + xy: 927, 544 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-power-source-small + rotate: false + xy: 1873, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-power-source-tiny + rotate: false + xy: 1979, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-power-source-xlarge + rotate: false + xy: 151, 17 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-power-void-large + rotate: false + xy: 469, 389 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-power-void-medium + rotate: false + xy: 961, 544 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-power-void-small + rotate: false + xy: 1899, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-power-void-tiny + rotate: false + xy: 1997, 371 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-power-void-xlarge + rotate: false + xy: 201, 17 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-pulse-conduit-large + rotate: false + xy: 511, 431 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-pulse-conduit-medium + rotate: false + xy: 545, 116 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-pulse-conduit-small + rotate: false + xy: 1925, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-pulse-conduit-tiny + rotate: false + xy: 2024, 673 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-pulse-conduit-xlarge + rotate: false + xy: 251, 667 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-pulverizer-large + rotate: false + xy: 553, 473 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-pulverizer-medium + rotate: false + xy: 537, 82 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-pulverizer-small + rotate: false + xy: 1951, 493 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-pulverizer-tiny + rotate: false + xy: 2024, 655 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-pulverizer-xlarge + rotate: false + xy: 251, 617 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-pyratite-mixer-large + rotate: false + xy: 595, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-pyratite-mixer-medium + rotate: false + xy: 579, 124 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-pyratite-mixer-small + rotate: false + xy: 1665, 482 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-pyratite-mixer-tiny + rotate: false + xy: 2024, 637 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-pyratite-mixer-xlarge + rotate: false + xy: 251, 567 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-repair-point-large + rotate: false + xy: 637, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-repair-point-medium + rotate: false + xy: 571, 82 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-repair-point-small + rotate: false + xy: 1691, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-repair-point-tiny + rotate: false + xy: 2024, 619 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-repair-point-xlarge + rotate: false + xy: 251, 517 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-revenant-factory-large + rotate: false + xy: 679, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-revenant-factory-medium + rotate: false + xy: 563, 48 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-revenant-factory-small + rotate: false + xy: 1717, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-revenant-factory-tiny + rotate: false + xy: 2019, 601 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-revenant-factory-xlarge + rotate: false + xy: 251, 467 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-ripple-large + rotate: false + xy: 721, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-ripple-medium + rotate: false + xy: 563, 14 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-ripple-small + rotate: false + xy: 1743, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-ripple-tiny + rotate: false + xy: 2019, 583 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-ripple-xlarge + rotate: false + xy: 251, 417 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-rock-large + rotate: false + xy: 385, 263 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-rock-medium + rotate: false + xy: 597, 48 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-rock-small + rotate: false + xy: 1769, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-rock-tiny + rotate: false + xy: 2019, 565 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-rock-xlarge + rotate: false + xy: 251, 367 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-rocks-large + rotate: false + xy: 427, 305 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-rocks-medium + rotate: false + xy: 597, 14 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-rocks-small + rotate: false + xy: 1795, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-rocks-tiny + rotate: false + xy: 2013, 547 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-rocks-xlarge + rotate: false + xy: 251, 317 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-rotary-pump-large + rotate: false + xy: 469, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-rotary-pump-medium + rotate: false + xy: 671, 242 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-rotary-pump-small + rotate: false + xy: 1821, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-rotary-pump-tiny + rotate: false + xy: 2031, 547 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-rotary-pump-xlarge + rotate: false + xy: 251, 267 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-router-large + rotate: false + xy: 511, 389 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-router-medium + rotate: false + xy: 663, 208 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-router-small + rotate: false + xy: 1847, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-router-tiny + rotate: false + xy: 2013, 529 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-router-xlarge + rotate: false + xy: 251, 217 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-rtg-generator-large + rotate: false + xy: 553, 431 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-rtg-generator-medium + rotate: false + xy: 705, 250 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-rtg-generator-small + rotate: false + xy: 1873, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-rtg-generator-tiny + rotate: false + xy: 2031, 529 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-rtg-generator-xlarge + rotate: false + xy: 251, 167 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-salt-large + rotate: false + xy: 595, 473 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-salt-medium + rotate: false + xy: 697, 208 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-salt-small + rotate: false + xy: 1899, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-salt-tiny + rotate: false + xy: 2013, 511 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-salt-xlarge + rotate: false + xy: 251, 117 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-saltrocks-large + rotate: false + xy: 637, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-saltrocks-medium + rotate: false + xy: 689, 174 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-saltrocks-small + rotate: false + xy: 1925, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-saltrocks-tiny + rotate: false + xy: 2031, 511 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-saltrocks-xlarge + rotate: false + xy: 251, 67 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-salvo-large + rotate: false + xy: 679, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-salvo-medium + rotate: false + xy: 689, 140 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-salvo-small + rotate: false + xy: 1951, 467 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-salvo-tiny + rotate: false + xy: 2013, 493 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-salvo-xlarge + rotate: false + xy: 251, 17 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-sand-boulder-large + rotate: false + xy: 721, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-sand-boulder-medium + rotate: false + xy: 723, 174 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-sand-boulder-small + rotate: false + xy: 1483, 513 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-sand-boulder-tiny + rotate: false + xy: 2031, 493 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-sand-boulder-xlarge + rotate: false + xy: 309, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-sand-large + rotate: false + xy: 763, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-sand-medium + rotate: false + xy: 723, 140 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-sand-small + rotate: false + xy: 1509, 505 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-sand-tiny + rotate: false + xy: 2013, 475 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-sand-water-large + rotate: false + xy: 385, 221 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-sand-water-medium + rotate: false + xy: 689, 106 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-sand-water-small + rotate: false + xy: 1535, 505 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-sand-water-tiny + rotate: false + xy: 2031, 475 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-sand-water-xlarge + rotate: false + xy: 309, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-sand-xlarge + rotate: false + xy: 359, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-sandrocks-large + rotate: false + xy: 427, 263 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-sandrocks-medium + rotate: false + xy: 723, 106 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-sandrocks-small + rotate: false + xy: 1561, 505 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-sandrocks-tiny + rotate: false + xy: 2013, 457 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-sandrocks-xlarge + rotate: false + xy: 309, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-scatter-large + rotate: false + xy: 469, 305 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-scatter-medium + rotate: false + xy: 911, 460 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-scatter-small + rotate: false + xy: 1587, 505 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-scatter-tiny + rotate: false + xy: 2031, 457 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-scatter-xlarge + rotate: false + xy: 359, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-scorch-large + rotate: false + xy: 511, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-scorch-medium + rotate: false + xy: 907, 426 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-scorch-small + rotate: false + xy: 1613, 505 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-scorch-tiny + rotate: false + xy: 2013, 439 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-scorch-xlarge + rotate: false + xy: 409, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-scrap-wall-gigantic-large + rotate: false + xy: 553, 389 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-scrap-wall-gigantic-medium + rotate: false + xy: 903, 392 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-scrap-wall-gigantic-small + rotate: false + xy: 1639, 481 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-scrap-wall-gigantic-tiny + rotate: false + xy: 2031, 439 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-scrap-wall-gigantic-xlarge + rotate: false + xy: 359, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-scrap-wall-huge-large + rotate: false + xy: 595, 431 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-scrap-wall-huge-medium + rotate: false + xy: 995, 518 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-scrap-wall-huge-small + rotate: false + xy: 1665, 456 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-scrap-wall-huge-tiny + rotate: false + xy: 2013, 421 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-scrap-wall-huge-xlarge + rotate: false + xy: 409, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-scrap-wall-large + rotate: false + xy: 637, 473 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-scrap-wall-large-large + rotate: false + xy: 679, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-scrap-wall-large-medium + rotate: false + xy: 1029, 518 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-scrap-wall-large-small + rotate: false + xy: 1691, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-scrap-wall-large-tiny + rotate: false + xy: 2031, 421 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-scrap-wall-large-xlarge + rotate: false + xy: 459, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-scrap-wall-medium + rotate: false + xy: 1063, 518 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-scrap-wall-small + rotate: false + xy: 1717, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-scrap-wall-tiny + rotate: false + xy: 2013, 403 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-scrap-wall-xlarge + rotate: false + xy: 409, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-separator-large + rotate: false + xy: 721, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-separator-medium + rotate: false + xy: 1097, 518 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-separator-small + rotate: false + xy: 1743, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-separator-tiny + rotate: false + xy: 2031, 403 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-separator-xlarge + rotate: false + xy: 459, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-shale-boulder-large + rotate: false + xy: 763, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-shale-boulder-medium + rotate: false + xy: 1131, 518 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-shale-boulder-small + rotate: false + xy: 1769, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-shale-boulder-tiny + rotate: false + xy: 423, 14 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-shale-boulder-xlarge + rotate: false + xy: 509, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-shale-large + rotate: false + xy: 805, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-shale-medium + rotate: false + xy: 1165, 518 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-shale-small + rotate: false + xy: 1795, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-shale-tiny + rotate: false + xy: 441, 14 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-shale-xlarge + rotate: false + xy: 459, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-shalerocks-large + rotate: false + xy: 385, 179 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-shalerocks-medium + rotate: false + xy: 1199, 518 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-shalerocks-small + rotate: false + xy: 1821, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-shalerocks-tiny + rotate: false + xy: 459, 14 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-shalerocks-xlarge + rotate: false + xy: 509, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-shock-mine-large + rotate: false + xy: 427, 221 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-shock-mine-medium + rotate: false + xy: 1233, 518 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-shock-mine-small + rotate: false + xy: 1847, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-shock-mine-tiny + rotate: false + xy: 477, 14 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-shock-mine-xlarge + rotate: false + xy: 559, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-shrubs-large + rotate: false + xy: 469, 263 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-shrubs-medium + rotate: false + xy: 941, 426 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-shrubs-small + rotate: false + xy: 1873, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-shrubs-tiny + rotate: false + xy: 1691, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-shrubs-xlarge + rotate: false + xy: 509, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-silicon-smelter-large + rotate: false + xy: 511, 305 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-silicon-smelter-medium + rotate: false + xy: 937, 392 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-silicon-smelter-small + rotate: false + xy: 1899, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-silicon-smelter-tiny + rotate: false + xy: 1709, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-silicon-smelter-xlarge + rotate: false + xy: 559, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-snow-large + rotate: false + xy: 553, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-snow-medium + rotate: false + xy: 933, 358 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-snow-pine-large + rotate: false + xy: 595, 389 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-snow-pine-medium + rotate: false + xy: 959, 324 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-snow-pine-small + rotate: false + xy: 1925, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-snow-pine-tiny + rotate: false + xy: 1727, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-snow-pine-xlarge + rotate: false + xy: 609, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-snow-small + rotate: false + xy: 1951, 441 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-snow-tiny + rotate: false + xy: 1745, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-snow-xlarge + rotate: false + xy: 559, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-snowrock-large + rotate: false + xy: 637, 431 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-snowrock-medium + rotate: false + xy: 967, 358 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-snowrock-small + rotate: false + xy: 1483, 487 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-snowrock-tiny + rotate: false + xy: 1763, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-snowrock-xlarge + rotate: false + xy: 609, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-snowrocks-large + rotate: false + xy: 679, 473 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-snowrocks-medium + rotate: false + xy: 971, 392 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-snowrocks-small + rotate: false + xy: 1509, 479 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-snowrocks-tiny + rotate: false + xy: 1781, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-snowrocks-xlarge + rotate: false + xy: 659, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-solar-panel-large + rotate: false + xy: 721, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-solar-panel-large-large + rotate: false + xy: 763, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-solar-panel-large-medium + rotate: false + xy: 993, 324 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-solar-panel-large-small + rotate: false + xy: 1535, 479 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-solar-panel-large-tiny + rotate: false + xy: 1799, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-solar-panel-large-xlarge + rotate: false + xy: 609, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-solar-panel-medium + rotate: false + xy: 985, 290 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-solar-panel-small + rotate: false + xy: 1561, 479 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-solar-panel-tiny + rotate: false + xy: 1817, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-solar-panel-xlarge + rotate: false + xy: 659, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-sorter-large + rotate: false + xy: 805, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-sorter-medium + rotate: false + xy: 985, 256 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-sorter-small + rotate: false + xy: 1587, 479 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-sorter-tiny + rotate: false + xy: 1835, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-sorter-xlarge + rotate: false + xy: 709, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-spawn-large + rotate: false + xy: 847, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-spawn-medium + rotate: false + xy: 1001, 358 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-spawn-small + rotate: false + xy: 1613, 479 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-spawn-tiny + rotate: false + xy: 1853, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-spawn-xlarge + rotate: false + xy: 659, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-spectre-large + rotate: false + xy: 385, 137 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-spectre-medium + rotate: false + xy: 1019, 290 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-spectre-small + rotate: false + xy: 1639, 455 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-spectre-tiny + rotate: false + xy: 1871, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-spectre-xlarge + rotate: false + xy: 709, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-spirit-factory-large + rotate: false + xy: 427, 179 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-spirit-factory-medium + rotate: false + xy: 1019, 256 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-spirit-factory-small + rotate: false + xy: 1665, 430 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-spirit-factory-tiny + rotate: false + xy: 1889, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-spirit-factory-xlarge + rotate: false + xy: 759, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-spore-cluster-large + rotate: false + xy: 469, 221 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-spore-cluster-medium + rotate: false + xy: 1027, 324 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-spore-cluster-small + rotate: false + xy: 1691, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-spore-cluster-tiny + rotate: false + xy: 1907, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-spore-cluster-xlarge + rotate: false + xy: 709, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-spore-moss-large + rotate: false + xy: 511, 263 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-spore-moss-medium + rotate: false + xy: 1053, 290 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-spore-moss-small + rotate: false + xy: 1717, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-spore-moss-tiny + rotate: false + xy: 1925, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-spore-moss-xlarge + rotate: false + xy: 759, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-spore-pine-large + rotate: false + xy: 553, 305 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-spore-pine-medium + rotate: false + xy: 1053, 256 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-spore-pine-small + rotate: false + xy: 1743, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-spore-pine-tiny + rotate: false + xy: 1943, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-spore-pine-xlarge + rotate: false + xy: 809, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-spore-press-large + rotate: false + xy: 595, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-spore-press-medium + rotate: false + xy: 923, 510 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-spore-press-small + rotate: false + xy: 1769, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-spore-press-tiny + rotate: false + xy: 1961, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-spore-press-xlarge + rotate: false + xy: 759, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-sporerocks-large + rotate: false + xy: 637, 389 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-sporerocks-medium + rotate: false + xy: 957, 510 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-sporerocks-small + rotate: false + xy: 1795, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-sporerocks-tiny + rotate: false + xy: 1979, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-sporerocks-xlarge + rotate: false + xy: 809, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-stone-large + rotate: false + xy: 679, 431 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-stone-medium + rotate: false + xy: 945, 476 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-stone-small + rotate: false + xy: 1821, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-stone-tiny + rotate: false + xy: 1997, 353 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-stone-xlarge + rotate: false + xy: 859, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-surge-tower-large + rotate: false + xy: 721, 473 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-surge-tower-medium + rotate: false + xy: 979, 476 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-surge-tower-small + rotate: false + xy: 1847, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-surge-tower-tiny + rotate: false + xy: 2031, 761 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-surge-tower-xlarge + rotate: false + xy: 809, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-surge-wall-large + rotate: false + xy: 763, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-surge-wall-large-large + rotate: false + xy: 805, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-surge-wall-large-medium + rotate: false + xy: 1013, 484 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-surge-wall-large-small + rotate: false + xy: 1873, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-surge-wall-large-tiny + rotate: false + xy: 2031, 743 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-surge-wall-large-xlarge + rotate: false + xy: 859, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-surge-wall-medium + rotate: false + xy: 1047, 484 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-surge-wall-small + rotate: false + xy: 1899, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-surge-wall-tiny + rotate: false + xy: 2031, 725 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-surge-wall-xlarge + rotate: false + xy: 909, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-swarmer-large + rotate: false + xy: 847, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-swarmer-medium + rotate: false + xy: 1081, 484 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-swarmer-small + rotate: false + xy: 1925, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-swarmer-tiny + rotate: false + xy: 2031, 707 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-swarmer-xlarge + rotate: false + xy: 859, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-tainted-water-large + rotate: false + xy: 889, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-tainted-water-medium + rotate: false + xy: 1115, 484 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-tainted-water-small + rotate: false + xy: 1951, 415 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-tainted-water-tiny + rotate: false + xy: 2015, 385 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-tainted-water-xlarge + rotate: false + xy: 909, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-tar-large + rotate: false + xy: 385, 95 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-tar-medium + rotate: false + xy: 1149, 484 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-tar-small + rotate: false + xy: 1483, 461 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-tar-tiny + rotate: false + xy: 2015, 367 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-tar-xlarge + rotate: false + xy: 959, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-tau-mech-pad-large + rotate: false + xy: 427, 137 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-tau-mech-pad-medium + rotate: false + xy: 1183, 484 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-tau-mech-pad-small + rotate: false + xy: 1509, 453 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-tau-mech-pad-tiny + rotate: false + xy: 2015, 349 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-tau-mech-pad-xlarge + rotate: false + xy: 909, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-tendrils-large + rotate: false + xy: 469, 179 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-tendrils-medium + rotate: false + xy: 1217, 484 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-tendrils-small + rotate: false + xy: 1535, 453 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-tendrils-tiny + rotate: false + xy: 1219, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-tendrils-xlarge + rotate: false + xy: 959, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thermal-generator-large + rotate: false + xy: 511, 221 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thermal-generator-medium + rotate: false + xy: 975, 442 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thermal-generator-small + rotate: false + xy: 1561, 453 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thermal-generator-tiny + rotate: false + xy: 1237, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thermal-generator-xlarge + rotate: false + xy: 1009, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thermal-pump-large + rotate: false + xy: 553, 263 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thermal-pump-medium + rotate: false + xy: 1251, 484 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thermal-pump-small + rotate: false + xy: 1587, 453 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thermal-pump-tiny + rotate: false + xy: 1255, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thermal-pump-xlarge + rotate: false + xy: 959, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thorium-reactor-large + rotate: false + xy: 595, 305 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thorium-reactor-medium + rotate: false + xy: 1267, 518 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thorium-reactor-small + rotate: false + xy: 1613, 453 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thorium-reactor-tiny + rotate: false + xy: 1273, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thorium-reactor-xlarge + rotate: false + xy: 1009, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thorium-wall-large + rotate: false + xy: 637, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thorium-wall-large-large + rotate: false + xy: 679, 389 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thorium-wall-large-medium + rotate: false + xy: 1285, 484 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thorium-wall-large-small + rotate: false + xy: 1639, 429 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thorium-wall-large-tiny + rotate: false + xy: 1291, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thorium-wall-large-xlarge + rotate: false + xy: 1059, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thorium-wall-medium + rotate: false + xy: 1013, 450 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thorium-wall-small + rotate: false + xy: 1665, 404 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thorium-wall-tiny + rotate: false + xy: 1309, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thorium-wall-xlarge + rotate: false + xy: 1009, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thruster-large + rotate: false + xy: 721, 431 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thruster-medium + rotate: false + xy: 1047, 450 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thruster-small + rotate: false + xy: 1691, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thruster-tiny + rotate: false + xy: 1327, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thruster-xlarge + rotate: false + xy: 1059, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-titan-factory-large + rotate: false + xy: 763, 473 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-titan-factory-medium + rotate: false + xy: 1081, 450 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-titan-factory-small + rotate: false + xy: 1717, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-titan-factory-tiny + rotate: false + xy: 1345, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-titan-factory-xlarge + rotate: false + xy: 1109, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-titanium-conveyor-large + rotate: false + xy: 805, 515 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-titanium-conveyor-medium + rotate: false + xy: 1115, 450 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-titanium-conveyor-small + rotate: false + xy: 1743, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-titanium-conveyor-tiny + rotate: false + xy: 1363, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-titanium-conveyor-xlarge + rotate: false + xy: 1059, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-titanium-wall-large + rotate: false + xy: 847, 557 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-titanium-wall-large-large + rotate: false + xy: 889, 599 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-titanium-wall-large-medium + rotate: false + xy: 1149, 450 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-titanium-wall-large-small + rotate: false + xy: 1769, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-titanium-wall-large-tiny + rotate: false + xy: 1381, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-titanium-wall-large-xlarge + rotate: false + xy: 1109, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-titanium-wall-medium + rotate: false + xy: 1183, 450 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-titanium-wall-small + rotate: false + xy: 1795, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-titanium-wall-tiny + rotate: false + xy: 1399, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-titanium-wall-xlarge + rotate: false + xy: 1159, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-trident-ship-pad-large + rotate: false + xy: 931, 641 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-trident-ship-pad-medium + rotate: false + xy: 1217, 450 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-trident-ship-pad-small + rotate: false + xy: 1821, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-trident-ship-pad-tiny + rotate: false + xy: 1417, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-trident-ship-pad-xlarge + rotate: false + xy: 1109, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-turbine-generator-large + rotate: false + xy: 385, 53 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-turbine-generator-medium + rotate: false + xy: 1251, 450 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-turbine-generator-small + rotate: false + xy: 1847, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-turbine-generator-tiny + rotate: false + xy: 1435, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-turbine-generator-xlarge + rotate: false + xy: 1159, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-unloader-large + rotate: false + xy: 427, 95 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-unloader-medium + rotate: false + xy: 1285, 450 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-unloader-small + rotate: false + xy: 1873, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-unloader-tiny + rotate: false + xy: 1453, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-unloader-xlarge + rotate: false + xy: 1209, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-vault-large + rotate: false + xy: 469, 137 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-vault-medium + rotate: false + xy: 1009, 416 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-vault-small + rotate: false + xy: 1899, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-vault-tiny + rotate: false + xy: 1471, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-vault-xlarge + rotate: false + xy: 1159, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-water-extractor-large + rotate: false + xy: 511, 179 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-water-extractor-medium + rotate: false + xy: 1043, 416 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-water-extractor-small + rotate: false + xy: 1925, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-water-extractor-tiny + rotate: false + xy: 1489, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-water-extractor-xlarge + rotate: false + xy: 1209, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-water-large + rotate: false + xy: 553, 221 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-water-medium + rotate: false + xy: 1077, 416 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-water-small + rotate: false + xy: 1951, 389 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-water-tiny + rotate: false + xy: 1349, 449 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-water-xlarge + rotate: false + xy: 1259, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-wave-large + rotate: false + xy: 595, 263 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-wave-medium + rotate: false + xy: 1111, 416 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-wave-small + rotate: false + xy: 1483, 435 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-wave-tiny + rotate: false + xy: 1349, 431 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-wave-xlarge + rotate: false + xy: 1209, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-white-tree-dead-large + rotate: false + xy: 637, 305 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-white-tree-dead-medium + rotate: false + xy: 1145, 416 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-white-tree-dead-small + rotate: false + xy: 1509, 427 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-white-tree-dead-tiny + rotate: false + xy: 1367, 449 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-white-tree-dead-xlarge + rotate: false + xy: 1259, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-white-tree-large + rotate: false + xy: 679, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-white-tree-medium + rotate: false + xy: 1179, 416 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-white-tree-small + rotate: false + xy: 1535, 427 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-white-tree-tiny + rotate: false + xy: 1385, 449 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-white-tree-xlarge + rotate: false + xy: 1309, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-wraith-factory-large + rotate: false + xy: 721, 389 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-wraith-factory-medium + rotate: false + xy: 1213, 416 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-wraith-factory-small + rotate: false + xy: 1561, 427 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-wraith-factory-tiny + rotate: false + xy: 1367, 431 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-wraith-factory-xlarge + rotate: false + xy: 1259, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +button + rotate: false + xy: 1011, 654 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-disabled + rotate: false + xy: 805, 486 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-down + rotate: false + xy: 847, 528 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-edge-1 + rotate: false + xy: 889, 570 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-edge-2 + rotate: false + xy: 931, 612 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-edge-3 + rotate: false + xy: 973, 654 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-edge-4 + rotate: false + xy: 385, 24 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-edge-over-4 + rotate: false + xy: 427, 66 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-over + rotate: false + xy: 469, 108 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-red + rotate: false + xy: 511, 150 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-right + rotate: false + xy: 637, 276 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-right-down + rotate: false + xy: 553, 192 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-right-over + rotate: false + xy: 595, 234 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-select + rotate: false + xy: 1587, 427 + size: 24, 24 + split: 4, 4, 4, 4 + orig: 24, 24 + offset: 0, 0 + index: -1 +button-square + rotate: false + xy: 763, 418 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-square-down + rotate: false + xy: 679, 318 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-square-over + rotate: false + xy: 721, 360 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +button-trans + rotate: false + xy: 805, 457 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +check-disabled + rotate: false + xy: 1247, 416 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +check-off + rotate: false + xy: 1281, 416 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +check-on + rotate: false + xy: 1035, 382 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +check-on-disabled + rotate: false + xy: 1069, 382 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +check-on-over + rotate: false + xy: 1103, 382 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +check-over + rotate: false + xy: 1137, 382 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +clear + rotate: false + xy: 677, 120 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +cursor + rotate: false + xy: 1035, 358 + size: 4, 4 + orig: 4, 4 + offset: 0, 0 + index: -1 +discord-banner + rotate: false + xy: 1, 720 + size: 84, 45 + orig: 84, 45 + offset: 0, 0 + index: -1 +flat-down-base + rotate: false + xy: 763, 389 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +icon-about + rotate: false + xy: 1309, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-about-small + rotate: false + xy: 1171, 382 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-about-smaller + rotate: false + xy: 1131, 146 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-about-tiny + rotate: false + xy: 1403, 449 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-add + rotate: false + xy: 1359, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-add-small + rotate: false + xy: 1205, 382 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-add-smaller + rotate: false + xy: 1165, 180 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-add-tiny + rotate: false + xy: 1385, 431 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-admin + rotate: false + xy: 1309, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-admin-badge + rotate: false + xy: 1359, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-admin-badge-small + rotate: false + xy: 1239, 382 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-admin-badge-smaller + rotate: false + xy: 1131, 114 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-admin-badge-tiny + rotate: false + xy: 1421, 449 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-admin-small + rotate: false + xy: 1273, 382 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-admin-smaller + rotate: false + xy: 1197, 180 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-admin-tiny + rotate: false + xy: 1403, 431 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-arrow + rotate: false + xy: 1409, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-arrow-16 + rotate: false + xy: 1409, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-arrow-16-small + rotate: false + xy: 1061, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-arrow-small + rotate: false + xy: 1061, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-arrow-16-smaller + rotate: false + xy: 1229, 180 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-arrow-smaller + rotate: false + xy: 1229, 180 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-arrow-16-tiny + rotate: false + xy: 1439, 449 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-arrow-tiny + rotate: false + xy: 1439, 449 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-arrow-down + rotate: false + xy: 1359, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-arrow-down-small + rotate: false + xy: 1095, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-arrow-down-smaller + rotate: false + xy: 1261, 180 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-arrow-down-tiny + rotate: false + xy: 1421, 431 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-arrow-left + rotate: false + xy: 1409, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-arrow-left-small + rotate: false + xy: 1129, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-arrow-left-smaller + rotate: false + xy: 1293, 180 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-arrow-left-tiny + rotate: false + xy: 1457, 449 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-arrow-right + rotate: false + xy: 1459, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-arrow-right-small + rotate: false + xy: 1163, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-arrow-right-smaller + rotate: false + xy: 1325, 180 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-arrow-right-tiny + rotate: false + xy: 1439, 431 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-arrow-up + rotate: false + xy: 1409, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-arrow-up-small + rotate: false + xy: 1197, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-arrow-up-smaller + rotate: false + xy: 1357, 180 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-arrow-up-tiny + rotate: false + xy: 1457, 431 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-back + rotate: false + xy: 1459, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-back-small + rotate: false + xy: 1231, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-back-smaller + rotate: false + xy: 1389, 180 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-back-tiny + rotate: false + xy: 1375, 413 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-ban + rotate: false + xy: 1509, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-ban-small + rotate: false + xy: 1265, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-ban-smaller + rotate: false + xy: 1063, 78 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-ban-tiny + rotate: false + xy: 1375, 395 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-break + rotate: false + xy: 1459, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-break-small + rotate: false + xy: 1087, 314 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-break-smaller + rotate: false + xy: 1095, 78 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-break-tiny + rotate: false + xy: 1393, 413 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-cancel + rotate: false + xy: 1509, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-cancel-small + rotate: false + xy: 1087, 280 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-cancel-smaller + rotate: false + xy: 1421, 180 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-cancel-tiny + rotate: false + xy: 1411, 413 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-quit-tiny + rotate: false + xy: 1411, 413 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-changelog + rotate: false + xy: 1559, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-changelog-small + rotate: false + xy: 1121, 314 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-changelog-smaller + rotate: false + xy: 1131, 82 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-changelog-tiny + rotate: false + xy: 1393, 395 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-chat + rotate: false + xy: 1509, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-chat-small + rotate: false + xy: 1121, 280 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-chat-smaller + rotate: false + xy: 995, 54 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-chat-tiny + rotate: false + xy: 1429, 413 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-check + rotate: false + xy: 1559, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-check-small + rotate: false + xy: 1155, 314 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-check-smaller + rotate: false + xy: 1027, 54 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-check-tiny + rotate: false + xy: 1411, 395 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-command-attack + rotate: false + xy: 1609, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-command-attack-small + rotate: false + xy: 1155, 280 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-command-attack-smaller + rotate: false + xy: 1059, 46 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-command-attack-tiny + rotate: false + xy: 1447, 413 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-command-patrol + rotate: false + xy: 1559, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-command-patrol-small + rotate: false + xy: 1189, 314 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-command-patrol-smaller + rotate: false + xy: 1091, 46 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-command-patrol-tiny + rotate: false + xy: 1429, 395 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-command-rally + rotate: false + xy: 1609, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-command-rally-small + rotate: false + xy: 1189, 280 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-command-rally-smaller + rotate: false + xy: 1123, 46 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-command-rally-tiny + rotate: false + xy: 1447, 395 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-command-retreat + rotate: false + xy: 1659, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-command-retreat-small + rotate: false + xy: 1223, 314 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-command-retreat-smaller + rotate: false + xy: 1155, 50 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-command-retreat-tiny + rotate: false + xy: 1465, 413 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-copy + rotate: false + xy: 1609, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-copy-small + rotate: false + xy: 1223, 280 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-copy-smaller + rotate: false + xy: 1155, 18 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-copy-tiny + rotate: false + xy: 1465, 395 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-crafting + rotate: false + xy: 1659, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-crafting-small + rotate: false + xy: 1257, 314 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-crafting-smaller + rotate: false + xy: 1163, 146 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-crafting-tiny + rotate: false + xy: 1483, 417 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-cursor + rotate: false + xy: 1709, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-cursor-small + rotate: false + xy: 1257, 280 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-cursor-smaller + rotate: false + xy: 1163, 114 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-cursor-tiny + rotate: false + xy: 1483, 399 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-database + rotate: false + xy: 1659, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-database-small + rotate: false + xy: 1087, 246 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-database-smaller + rotate: false + xy: 1163, 82 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-database-tiny + rotate: false + xy: 1501, 409 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-defense + rotate: false + xy: 1709, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-defense-small + rotate: false + xy: 1121, 246 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-defense-smaller + rotate: false + xy: 1195, 148 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-defense-tiny + rotate: false + xy: 1519, 409 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-dev-builds + rotate: false + xy: 1759, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-dev-builds-small + rotate: false + xy: 1155, 246 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-dev-builds-smaller + rotate: false + xy: 1195, 116 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-dev-builds-tiny + rotate: false + xy: 1537, 409 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-diagonal + rotate: false + xy: 1709, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-diagonal-small + rotate: false + xy: 1189, 246 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-diagonal-smaller + rotate: false + xy: 1227, 148 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-diagonal-tiny + rotate: false + xy: 1555, 409 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-discord + rotate: false + xy: 1759, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-discord-small + rotate: false + xy: 1223, 246 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-discord-smaller + rotate: false + xy: 1195, 84 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-discord-tiny + rotate: false + xy: 1573, 409 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-distribution + rotate: false + xy: 1809, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-distribution-small + rotate: false + xy: 1257, 246 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-distribution-smaller + rotate: false + xy: 1227, 116 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-distribution-tiny + rotate: false + xy: 1591, 409 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-donate + rotate: false + xy: 1759, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-donate-small + rotate: false + xy: 1307, 382 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-donate-smaller + rotate: false + xy: 1259, 148 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-donate-tiny + rotate: false + xy: 1501, 391 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-dots + rotate: false + xy: 1809, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-dots-small + rotate: false + xy: 1299, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-dots-smaller + rotate: false + xy: 1227, 84 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-dots-tiny + rotate: false + xy: 1519, 391 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-editor + rotate: false + xy: 1859, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-editor-small + rotate: false + xy: 1291, 314 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-editor-smaller + rotate: false + xy: 1259, 116 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-editor-tiny + rotate: false + xy: 1537, 391 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-effect + rotate: false + xy: 1809, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-effect-small + rotate: false + xy: 1291, 280 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-effect-smaller + rotate: false + xy: 1291, 148 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-effect-tiny + rotate: false + xy: 1555, 391 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-elevation + rotate: false + xy: 1859, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-elevation-small + rotate: false + xy: 1291, 246 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-elevation-smaller + rotate: false + xy: 1259, 84 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-elevation-tiny + rotate: false + xy: 1573, 391 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-eraser + rotate: false + xy: 1909, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-eraser-small + rotate: false + xy: 1315, 416 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-eraser-smaller + rotate: false + xy: 1291, 116 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-eraser-tiny + rotate: false + xy: 1591, 391 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-exit + rotate: false + xy: 1859, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-exit-small + rotate: false + xy: 1333, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-exit-smaller + rotate: false + xy: 1323, 148 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-exit-tiny + rotate: false + xy: 1609, 393 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-fdroid + rotate: false + xy: 1909, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-fdroid-small + rotate: false + xy: 1325, 314 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-fdroid-smaller + rotate: false + xy: 1291, 84 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-fdroid-tiny + rotate: false + xy: 1483, 381 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-file + rotate: false + xy: 1959, 925 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-file-image + rotate: false + xy: 1909, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-file-image-small + rotate: false + xy: 1341, 382 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-file-image-smaller + rotate: false + xy: 1323, 116 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-file-image-tiny + rotate: false + xy: 1501, 373 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-file-small + rotate: false + xy: 1325, 280 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-file-smaller + rotate: false + xy: 1355, 148 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-file-text + rotate: false + xy: 1959, 875 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-file-text-small + rotate: false + xy: 1325, 246 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-file-text-smaller + rotate: false + xy: 1323, 84 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-file-text-tiny + rotate: false + xy: 1519, 373 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-file-tiny + rotate: false + xy: 1537, 373 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-fill + rotate: false + xy: 1959, 825 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-fill-small + rotate: false + xy: 1359, 314 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-fill-smaller + rotate: false + xy: 1355, 116 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-fill-tiny + rotate: false + xy: 1555, 373 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-floppy + rotate: false + xy: 309, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-floppy-16 + rotate: false + xy: 359, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-floppy-16-small + rotate: false + xy: 1359, 280 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-floppy-16-smaller + rotate: false + xy: 1387, 148 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-floppy-16-tiny + rotate: false + xy: 1573, 373 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-floppy-small + rotate: false + xy: 1367, 348 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-floppy-smaller + rotate: false + xy: 1355, 84 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-floppy-tiny + rotate: false + xy: 1591, 373 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-folder + rotate: false + xy: 409, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-folder-parent + rotate: false + xy: 459, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-folder-parent-small + rotate: false + xy: 1359, 246 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-folder-parent-smaller + rotate: false + xy: 1387, 116 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-folder-parent-tiny + rotate: false + xy: 1609, 375 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-folder-small + rotate: false + xy: 1393, 314 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-folder-smaller + rotate: false + xy: 1419, 148 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-folder-tiny + rotate: false + xy: 1483, 363 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-github + rotate: false + xy: 509, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-github-small + rotate: false + xy: 1393, 280 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-github-smaller + rotate: false + xy: 1387, 84 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-github-tiny + rotate: false + xy: 1501, 355 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-google-play + rotate: false + xy: 559, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-google-play-small + rotate: false + xy: 1393, 246 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-google-play-smaller + rotate: false + xy: 1419, 116 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-google-play-tiny + rotate: false + xy: 1519, 355 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-grid + rotate: false + xy: 609, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-grid-small + rotate: false + xy: 985, 222 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-grid-smaller + rotate: false + xy: 1419, 84 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-grid-tiny + rotate: false + xy: 1537, 355 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-home + rotate: false + xy: 659, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-home-small + rotate: false + xy: 1019, 222 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-home-smaller + rotate: false + xy: 1187, 50 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-home-tiny + rotate: false + xy: 1555, 355 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-host + rotate: false + xy: 709, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-host-small + rotate: false + xy: 1053, 222 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-host-smaller + rotate: false + xy: 1187, 18 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-host-tiny + rotate: false + xy: 1573, 355 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-info + rotate: false + xy: 759, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-info-small + rotate: false + xy: 1087, 212 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-info-smaller + rotate: false + xy: 1219, 52 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-info-tiny + rotate: false + xy: 1591, 355 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-itch.io + rotate: false + xy: 809, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-itch.io-small + rotate: false + xy: 1121, 212 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-itch.io-smaller + rotate: false + xy: 1219, 20 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-itch.io-tiny + rotate: false + xy: 1609, 357 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-item + rotate: false + xy: 859, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-item-small + rotate: false + xy: 1155, 212 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-item-smaller + rotate: false + xy: 1251, 52 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-item-tiny + rotate: false + xy: 1483, 345 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-line + rotate: false + xy: 909, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-line-small + rotate: false + xy: 1189, 212 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-line-smaller + rotate: false + xy: 1251, 20 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-line-tiny + rotate: false + xy: 1501, 337 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-link + rotate: false + xy: 959, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-link-small + rotate: false + xy: 1223, 212 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-link-smaller + rotate: false + xy: 1283, 52 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-link-tiny + rotate: false + xy: 1519, 337 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-liquid + rotate: false + xy: 1009, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-liquid-consume + rotate: false + xy: 1059, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-liquid-consume-small + rotate: false + xy: 1257, 212 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-liquid-consume-smaller + rotate: false + xy: 1283, 20 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-liquid-consume-tiny + rotate: false + xy: 1537, 337 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-liquid-small + rotate: false + xy: 1291, 212 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-liquid-smaller + rotate: false + xy: 1315, 52 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-liquid-tiny + rotate: false + xy: 1555, 337 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-load + rotate: false + xy: 1109, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-load-image + rotate: false + xy: 1159, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-load-image-small + rotate: false + xy: 1325, 212 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-load-image-smaller + rotate: false + xy: 1315, 20 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-load-image-tiny + rotate: false + xy: 1573, 337 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-load-map + rotate: false + xy: 1209, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-load-map-small + rotate: false + xy: 1359, 212 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-load-map-smaller + rotate: false + xy: 1347, 52 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-load-map-tiny + rotate: false + xy: 1591, 337 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-load-small + rotate: false + xy: 1393, 212 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-load-smaller + rotate: false + xy: 1347, 20 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-load-tiny + rotate: false + xy: 1609, 339 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-loading + rotate: false + xy: 1259, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-loading-small + rotate: false + xy: 739, 224 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-loading-smaller + rotate: false + xy: 1379, 52 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-loading-tiny + rotate: false + xy: 1483, 327 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-locked + rotate: false + xy: 1309, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-locked-small + rotate: false + xy: 773, 219 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-locked-smaller + rotate: false + xy: 1379, 20 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-locked-tiny + rotate: false + xy: 1501, 319 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-map + rotate: false + xy: 1359, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-map-small + rotate: false + xy: 807, 219 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-map-smaller + rotate: false + xy: 1411, 52 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-map-tiny + rotate: false + xy: 1519, 319 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-menu + rotate: false + xy: 1409, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-menu-large + rotate: false + xy: 1459, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-menu-large-small + rotate: false + xy: 841, 219 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-menu-large-smaller + rotate: false + xy: 1411, 20 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-menu-large-tiny + rotate: false + xy: 1537, 319 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-menu-small + rotate: false + xy: 875, 219 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-menu-smaller + rotate: false + xy: 1443, 52 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-menu-tiny + rotate: false + xy: 1555, 319 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-missing + rotate: false + xy: 1509, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-missing-small + rotate: false + xy: 909, 219 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-missing-smaller + rotate: false + xy: 1443, 20 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-missing-tiny + rotate: false + xy: 1573, 319 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-mode-attack + rotate: false + xy: 1559, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-mode-attack-small + rotate: false + xy: 943, 219 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-mode-attack-smaller + rotate: false + xy: 1451, 148 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-mode-attack-tiny + rotate: false + xy: 1591, 319 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-mode-pvp + rotate: false + xy: 1609, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-mode-pvp-small + rotate: false + xy: 757, 185 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-mode-pvp-smaller + rotate: false + xy: 1451, 116 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-mode-pvp-tiny + rotate: false + xy: 1609, 321 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-mode-survival + rotate: false + xy: 1659, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-mode-survival-small + rotate: false + xy: 757, 151 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-mode-survival-smaller + rotate: false + xy: 1451, 84 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-mode-survival-tiny + rotate: false + xy: 1483, 309 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-none + rotate: false + xy: 1709, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-none-small + rotate: false + xy: 791, 185 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-none-smaller + rotate: false + xy: 1475, 52 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-none-tiny + rotate: false + xy: 1501, 301 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-paste + rotate: false + xy: 1759, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-paste-small + rotate: false + xy: 757, 117 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-paste-smaller + rotate: false + xy: 1475, 20 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-paste-tiny + rotate: false + xy: 1519, 301 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-pause + rotate: false + xy: 1809, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-pause-small + rotate: false + xy: 791, 151 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-pause-smaller + rotate: false + xy: 613, 100 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-pause-tiny + rotate: false + xy: 1537, 301 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-pencil + rotate: false + xy: 1859, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-pencil-small + rotate: false + xy: 825, 185 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-pencil-smaller + rotate: false + xy: 645, 100 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-pencil-tiny + rotate: false + xy: 1555, 301 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-pick + rotate: false + xy: 1909, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-pick-small + rotate: false + xy: 791, 117 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-pick-smaller + rotate: false + xy: 631, 68 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-pick-tiny + rotate: false + xy: 1573, 301 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-play + rotate: false + xy: 1959, 775 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-play-2 + rotate: false + xy: 287, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-play-2-small + rotate: false + xy: 825, 151 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-play-2-smaller + rotate: false + xy: 631, 36 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-play-2-tiny + rotate: false + xy: 1591, 301 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-play-tiny + rotate: false + xy: 1591, 301 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-play-custom + rotate: false + xy: 337, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-play-custom-small + rotate: false + xy: 859, 185 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-play-custom-smaller + rotate: false + xy: 631, 4 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-play-custom-tiny + rotate: false + xy: 1609, 303 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-play-small + rotate: false + xy: 825, 117 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-play-smaller + rotate: false + xy: 663, 68 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-players + rotate: false + xy: 387, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-players-small + rotate: false + xy: 859, 151 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-players-smaller + rotate: false + xy: 663, 36 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-players-tiny + rotate: false + xy: 1483, 291 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-power + rotate: false + xy: 437, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-power-small + rotate: false + xy: 893, 185 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-power-smaller + rotate: false + xy: 663, 4 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-power-tiny + rotate: false + xy: 1501, 283 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-production + rotate: false + xy: 487, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-production-small + rotate: false + xy: 859, 117 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-production-smaller + rotate: false + xy: 695, 74 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-production-tiny + rotate: false + xy: 1519, 283 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-quit + rotate: false + xy: 537, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-quit-small + rotate: false + xy: 893, 151 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-quit-smaller + rotate: false + xy: 695, 42 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-reddit + rotate: false + xy: 587, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-reddit-small + rotate: false + xy: 927, 185 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-reddit-smaller + rotate: false + xy: 695, 10 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-reddit-tiny + rotate: false + xy: 1537, 283 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-redo + rotate: false + xy: 637, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-redo-small + rotate: false + xy: 893, 117 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-redo-smaller + rotate: false + xy: 727, 51 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-redo-tiny + rotate: false + xy: 1555, 283 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-refresh + rotate: false + xy: 687, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-refresh-small + rotate: false + xy: 927, 151 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-refresh-smaller + rotate: false + xy: 759, 51 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-refresh-tiny + rotate: false + xy: 1573, 283 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-rename + rotate: false + xy: 737, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-rename-small + rotate: false + xy: 927, 117 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-rename-smaller + rotate: false + xy: 727, 19 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-rename-tiny + rotate: false + xy: 1591, 283 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-resize + rotate: false + xy: 787, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-resize-small + rotate: false + xy: 961, 185 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-resize-smaller + rotate: false + xy: 791, 51 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-resize-tiny + rotate: false + xy: 1609, 285 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-rotate + rotate: false + xy: 837, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-rotate-arrow + rotate: false + xy: 887, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-rotate-arrow-small + rotate: false + xy: 961, 151 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-rotate-arrow-smaller + rotate: false + xy: 759, 19 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-rotate-arrow-tiny + rotate: false + xy: 1483, 273 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-rotate-left + rotate: false + xy: 937, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-rotate-left-small + rotate: false + xy: 961, 117 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-rotate-left-smaller + rotate: false + xy: 823, 51 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-rotate-left-tiny + rotate: false + xy: 1501, 265 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-rotate-right + rotate: false + xy: 987, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-rotate-right-small + rotate: false + xy: 995, 188 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-rotate-right-smaller + rotate: false + xy: 791, 19 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-rotate-right-tiny + rotate: false + xy: 1519, 265 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-rotate-small + rotate: false + xy: 1029, 188 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-rotate-smaller + rotate: false + xy: 855, 51 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-rotate-tiny + rotate: false + xy: 1537, 265 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-save + rotate: false + xy: 1037, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-save-image + rotate: false + xy: 1087, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-save-image-small + rotate: false + xy: 995, 154 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-save-image-smaller + rotate: false + xy: 823, 19 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-save-image-tiny + rotate: false + xy: 1555, 265 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-save-map + rotate: false + xy: 1137, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-save-map-small + rotate: false + xy: 995, 120 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-save-map-smaller + rotate: false + xy: 887, 51 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-save-map-tiny + rotate: false + xy: 1573, 265 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-save-small + rotate: false + xy: 1029, 154 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-save-smaller + rotate: false + xy: 855, 19 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-save-tiny + rotate: false + xy: 1591, 265 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-settings + rotate: false + xy: 1187, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-settings-small + rotate: false + xy: 1029, 120 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-settings-smaller + rotate: false + xy: 919, 51 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-settings-tiny + rotate: false + xy: 1609, 267 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-spray + rotate: false + xy: 1237, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-spray-small + rotate: false + xy: 757, 83 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-spray-smaller + rotate: false + xy: 887, 19 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-spray-tiny + rotate: false + xy: 1483, 255 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-terrain + rotate: false + xy: 1287, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-terrain-small + rotate: false + xy: 791, 83 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-terrain-smaller + rotate: false + xy: 951, 51 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-terrain-tiny + rotate: false + xy: 1501, 247 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-tools + rotate: false + xy: 1337, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-tools-small + rotate: false + xy: 825, 83 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-tools-smaller + rotate: false + xy: 919, 19 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-tools-tiny + rotate: false + xy: 1519, 247 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-trash + rotate: false + xy: 1387, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-trash-16 + rotate: false + xy: 1437, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-trash-16-small + rotate: false + xy: 859, 83 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-trash-16-smaller + rotate: false + xy: 951, 19 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-trash-16-tiny + rotate: false + xy: 1537, 247 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-trash-small + rotate: false + xy: 893, 83 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-trash-smaller + rotate: false + xy: 983, 22 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-trash-tiny + rotate: false + xy: 1555, 247 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-tree + rotate: false + xy: 1487, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-tree-small + rotate: false + xy: 927, 83 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-tree-smaller + rotate: false + xy: 1015, 22 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-tree-tiny + rotate: false + xy: 1573, 247 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-trello + rotate: false + xy: 1537, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-trello-small + rotate: false + xy: 961, 83 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-trello-smaller + rotate: false + xy: 1047, 14 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-trello-tiny + rotate: false + xy: 1591, 247 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-turret + rotate: false + xy: 1587, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-turret-small + rotate: false + xy: 995, 86 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-turret-smaller + rotate: false + xy: 1079, 14 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-turret-tiny + rotate: false + xy: 1609, 249 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-tutorial + rotate: false + xy: 1637, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-tutorial-small + rotate: false + xy: 1029, 86 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-tutorial-smaller + rotate: false + xy: 1111, 14 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-tutorial-tiny + rotate: false + xy: 1483, 237 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-undo + rotate: false + xy: 1687, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-undo-small + rotate: false + xy: 1063, 178 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-undo-smaller + rotate: false + xy: 1301, 617 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-undo-tiny + rotate: false + xy: 1501, 229 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-units + rotate: false + xy: 1737, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-units-small + rotate: false + xy: 1063, 144 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-units-smaller + rotate: false + xy: 1333, 617 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-units-tiny + rotate: false + xy: 1519, 229 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-unlocks + rotate: false + xy: 1787, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-unlocks-small + rotate: false + xy: 1097, 178 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-unlocks-smaller + rotate: false + xy: 1365, 617 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-unlocks-tiny + rotate: false + xy: 1537, 229 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-upgrade + rotate: false + xy: 1837, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-upgrade-small + rotate: false + xy: 1063, 110 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-upgrade-smaller + rotate: false + xy: 1397, 617 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-upgrade-tiny + rotate: false + xy: 1555, 229 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-wiki + rotate: false + xy: 1887, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-wiki-small + rotate: false + xy: 1097, 144 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-wiki-smaller + rotate: false + xy: 1429, 617 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-wiki-tiny + rotate: false + xy: 1573, 229 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-workshop + rotate: false + xy: 1937, 725 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-workshop-small + rotate: false + xy: 1131, 178 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-workshop-smaller + rotate: false + xy: 1461, 617 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-workshop-tiny + rotate: false + xy: 1591, 229 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-zoom + rotate: false + xy: 301, 675 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-zoom-small + rotate: false + xy: 1097, 110 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +icon-zoom-smaller + rotate: false + xy: 1493, 617 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +icon-zoom-tiny + rotate: false + xy: 1609, 231 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +info-banner + rotate: false + xy: 259, 978 + size: 84, 45 + orig: 84, 45 + offset: 0, 0 + index: -1 +inventory + rotate: false + xy: 1613, 411 + size: 24, 40 + split: 10, 10, 10, 14 + orig: 24, 40 + offset: 0, 0 + index: -1 +nomap + rotate: false + xy: 1, 767 + size: 256, 256 + orig: 256, 256 + offset: 0, 0 + index: -1 +pane + rotate: false + xy: 1049, 654 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +pane-2 + rotate: false + xy: 759, 360 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +scroll + rotate: false + xy: 1665, 367 + size: 24, 35 + split: 10, 10, 6, 5 + orig: 24, 35 + offset: 0, 0 + index: -1 +scroll-horizontal + rotate: false + xy: 1239, 657 + size: 35, 24 + split: 6, 5, 10, 10 + orig: 35, 24 + offset: 0, 0 + index: -1 +scroll-knob-horizontal-black + rotate: false + xy: 763, 447 + size: 40, 24 + orig: 40, 24 + offset: 0, 0 + index: -1 +scroll-knob-vertical-black + rotate: false + xy: 1639, 387 + size: 24, 40 + orig: 24, 40 + offset: 0, 0 + index: -1 +selection + rotate: false + xy: 309, 975 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +slider + rotate: false + xy: 1063, 212 + size: 1, 8 + orig: 1, 8 + offset: 0, 0 + index: -1 +slider-knob + rotate: false + xy: 1525, 609 + size: 29, 38 + orig: 29, 38 + offset: 0, 0 + index: -1 +slider-knob-down + rotate: false + xy: 1556, 609 + size: 29, 38 + orig: 29, 38 + offset: 0, 0 + index: -1 +slider-knob-over + rotate: false + xy: 1587, 609 + size: 29, 38 + orig: 29, 38 + offset: 0, 0 + index: -1 +slider-vertical + rotate: false + xy: 51, 717 + size: 8, 1 + orig: 8, 1 + offset: 0, 0 + index: -1 +underline + rotate: false + xy: 1201, 654 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +underline-2 + rotate: false + xy: 1087, 654 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +underline-disabled + rotate: false + xy: 1125, 654 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +underline-red + rotate: false + xy: 1163, 654 + size: 36, 27 + split: 12, 12, 12, 12 + orig: 36, 27 + offset: 0, 0 + index: -1 +whiteui + rotate: false + xy: 789, 355 + size: 3, 3 + orig: 3, 3 + offset: 0, 0 + index: -1 +window-empty + rotate: false + xy: 1676, 586 + size: 27, 61 + split: 4, 4, 2, 2 + orig: 27, 61 + offset: 0, 0 + index: -1 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 400aa6aa85..8b2c1c71e4 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/sprites/sprites4.png b/core/assets/sprites/sprites4.png index 20a3e8fd6c..9c08c17bf7 100644 Binary files a/core/assets/sprites/sprites4.png and b/core/assets/sprites/sprites4.png differ diff --git a/core/assets/sprites/sprites5.png b/core/assets/sprites/sprites5.png index 9c08c17bf7..db0bbb8db9 100644 Binary files a/core/assets/sprites/sprites5.png and b/core/assets/sprites/sprites5.png differ diff --git a/core/src/io/anuke/mindustry/ClientLauncher.java b/core/src/io/anuke/mindustry/ClientLauncher.java index 3234b1f9c5..9c6248562c 100644 --- a/core/src/io/anuke/mindustry/ClientLauncher.java +++ b/core/src/io/anuke/mindustry/ClientLauncher.java @@ -9,8 +9,9 @@ import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; +import io.anuke.arc.util.async.*; import io.anuke.mindustry.core.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.ctype.Content; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; @@ -81,6 +82,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform add(netClient = new NetClient()); assets.load(mods); + assets.load(schematics); assets.loadRun("contentinit", ContentLoader.class, () -> { content.init(); @@ -118,10 +120,11 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform for(ApplicationListener listener : modules){ listener.init(); } - super.resize(graphics.getWidth(), graphics.getHeight()); mods.each(Mod::init); finished = true; Events.fire(new ClientLoadEvent()); + super.resize(graphics.getWidth(), graphics.getHeight()); + app.post(() -> app.post(() -> app.post(() -> app.post(() -> super.resize(graphics.getWidth(), graphics.getHeight()))))); } }else{ super.update(); @@ -133,11 +136,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform long target = (1000 * 1000000) / targetfps; //target in nanos long elapsed = Time.timeSinceNanos(lastTime); if(elapsed < target){ - try{ - Thread.sleep((target - elapsed) / 1000000, (int)((target - elapsed) % 1000000)); - }catch(InterruptedException ignored){ - //ignore - } + Threads.sleep((target - elapsed) / 1000000, (int)((target - elapsed) % 1000000)); } } diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 2d8f4f83c0..d5c4a980f5 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -33,6 +33,10 @@ public class Vars implements Loadable{ public static boolean loadLocales = true; /** Maximum number of broken blocks. TODO implement or remove.*/ public static final int maxBrokenBlocks = 256; + /** Maximum schematic size.*/ + public static final int maxSchematicSize = 32; + /** All schematic base64 starts with this string.*/ + public static final String schematicBaseStart ="bXNjaAB"; /** IO buffer size. */ public static final int bufferSize = 8192; /** global charset, since Android doesn't support the Charsets class */ @@ -128,10 +132,14 @@ public class Vars implements Loadable{ public static FileHandle saveDirectory; /** data subdirectory used for mods */ public static FileHandle modDirectory; + /** data subdirectory used for schematics */ + public static FileHandle schematicDirectory; /** map file extension */ public static final String mapExtension = "msav"; /** save file extension */ public static final String saveExtension = "msav"; + /** schematic file extension */ + public static final String schematicExtension = "msch"; /** list of all locales that can be switched to */ public static Locale[] locales; @@ -146,6 +154,7 @@ public class Vars implements Loadable{ public static LoopControl loops; public static Platform platform = new Platform(){}; public static Mods mods; + public static Schematics schematics = new Schematics(); public static World world; public static Maps maps; @@ -251,6 +260,7 @@ public class Vars implements Loadable{ saveDirectory = dataDirectory.child("saves/"); tmpDirectory = dataDirectory.child("tmp/"); modDirectory = dataDirectory.child("mods/"); + schematicDirectory = dataDirectory.child("schematics/"); modDirectory.mkdirs(); diff --git a/core/src/io/anuke/mindustry/ai/BlockIndexer.java b/core/src/io/anuke/mindustry/ai/BlockIndexer.java index b57e364d91..0fdbbb7c5e 100644 --- a/core/src/io/anuke/mindustry/ai/BlockIndexer.java +++ b/core/src/io/anuke/mindustry/ai/BlockIndexer.java @@ -164,6 +164,10 @@ public class BlockIndexer{ } public TileEntity findTile(Team team, float x, float y, float range, Predicate pred){ + return findTile(team, x, y, range, pred, false); + } + + public TileEntity findTile(Team team, float x, float y, float range, Predicate pred, boolean usePriority){ TileEntity closest = null; float dst = 0; @@ -184,7 +188,7 @@ public class BlockIndexer{ TileEntity e = other.entity; float ndst = Mathf.dst(x, y, e.x, e.y); - if(ndst < range && (closest == null || ndst < dst)){ + if(ndst < range && (closest == null || ndst < dst || (usePriority && closest.block.priority.ordinal() < e.block.priority.ordinal()))){ dst = ndst; closest = e; } diff --git a/core/src/io/anuke/mindustry/content/Blocks.java b/core/src/io/anuke/mindustry/content/Blocks.java index c3890b1874..5dcf495848 100644 --- a/core/src/io/anuke/mindustry/content/Blocks.java +++ b/core/src/io/anuke/mindustry/content/Blocks.java @@ -7,10 +7,10 @@ import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.*; import io.anuke.arc.util.*; import io.anuke.mindustry.*; +import io.anuke.mindustry.ctype.ContentList; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.bullet.*; -import io.anuke.mindustry.entities.type.Bullet; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; @@ -29,8 +29,6 @@ import io.anuke.mindustry.world.consumers.*; import io.anuke.mindustry.world.meta.*; import io.anuke.mindustry.world.modules.*; -import static io.anuke.mindustry.Vars.*; - public class Blocks implements ContentList{ public static Block @@ -716,23 +714,23 @@ public class Blocks implements ContentList{ //region sandbox powerVoid = new PowerVoid("power-void"){{ - requirements(Category.power, () -> state.rules.infiniteResources, ItemStack.with()); + requirements(Category.power, BuildVisibility.sandboxOnly, ItemStack.with()); alwaysUnlocked = true; }}; powerSource = new PowerSource("power-source"){{ - requirements(Category.power, () -> state.rules.infiniteResources, ItemStack.with()); + requirements(Category.power, BuildVisibility.sandboxOnly, ItemStack.with()); alwaysUnlocked = true; }}; itemSource = new ItemSource("item-source"){{ - requirements(Category.distribution, () -> state.rules.infiniteResources, ItemStack.with()); + requirements(Category.distribution, BuildVisibility.sandboxOnly, ItemStack.with()); alwaysUnlocked = true; }}; itemVoid = new ItemVoid("item-void"){{ - requirements(Category.distribution, () -> state.rules.infiniteResources, ItemStack.with()); + requirements(Category.distribution, BuildVisibility.sandboxOnly, ItemStack.with()); alwaysUnlocked = true; }}; liquidSource = new LiquidSource("liquid-source"){{ - requirements(Category.liquid, () -> state.rules.infiniteResources, ItemStack.with()); + requirements(Category.liquid, BuildVisibility.sandboxOnly, ItemStack.with()); alwaysUnlocked = true; }}; message = new MessageBlock("message"){{ @@ -745,27 +743,27 @@ public class Blocks implements ContentList{ int wallHealthMultiplier = 4; scrapWall = new Wall("scrap-wall"){{ - requirements(Category.defense, () -> state.rules.infiniteResources, ItemStack.with()); + requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with()); health = 60 * wallHealthMultiplier; variants = 5; }}; scrapWallLarge = new Wall("scrap-wall-large"){{ - requirements(Category.defense, () -> state.rules.infiniteResources, ItemStack.with()); + requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with()); health = 60 * 4 * wallHealthMultiplier; size = 2; variants = 4; }}; scrapWallHuge = new Wall("scrap-wall-huge"){{ - requirements(Category.defense, () -> state.rules.infiniteResources, ItemStack.with()); + requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with()); health = 60 * 9 * wallHealthMultiplier; size = 3; variants = 3; }}; scrapWallGigantic = new Wall("scrap-wall-gigantic"){{ - requirements(Category.defense, () -> state.rules.infiniteResources, ItemStack.with()); + requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.with()); health = 60 * 16 * wallHealthMultiplier; size = 4; }}; @@ -1235,7 +1233,7 @@ public class Blocks implements ContentList{ //region storage coreShard = new CoreBlock("core-shard"){{ - requirements(Category.effect, () -> false, ItemStack.with(Items.titanium, 1000)); + requirements(Category.effect, BuildVisibility.debugOnly, ItemStack.with(Items.titanium, 4000)); alwaysUnlocked = true; health = 1100; @@ -1244,7 +1242,7 @@ public class Blocks implements ContentList{ }}; coreFoundation = new CoreBlock("core-foundation"){{ - requirements(Category.effect, () -> false, ItemStack.with(Items.titanium, 1500, Items.silicon, 1000)); + requirements(Category.effect, BuildVisibility.debugOnly, ItemStack.with(Items.titanium, 400, Items.silicon, 3000)); health = 2000; itemCapacity = 9000; @@ -1252,7 +1250,7 @@ public class Blocks implements ContentList{ }}; coreNucleus = new CoreBlock("core-nucleus"){{ - requirements(Category.effect, () -> false, ItemStack.with(Items.titanium, 4000, Items.silicon, 2000, Items.surgealloy, 1000)); + requirements(Category.effect, BuildVisibility.debugOnly, ItemStack.with(Items.titanium, 4000, Items.silicon, 2000, Items.surgealloy, 3000)); health = 4000; itemCapacity = 13000; @@ -1277,7 +1275,7 @@ public class Blocks implements ContentList{ }}; launchPad = new LaunchPad("launch-pad"){{ - requirements(Category.effect, () -> world.isZone(), ItemStack.with(Items.copper, 250, Items.silicon, 75, Items.lead, 100)); + requirements(Category.effect, BuildVisibility.campaignOnly, ItemStack.with(Items.copper, 250, Items.silicon, 75, Items.lead, 100)); size = 3; itemCapacity = 100; launchTime = 60f * 16; @@ -1286,7 +1284,7 @@ public class Blocks implements ContentList{ }}; launchPadLarge = new LaunchPad("launch-pad-large"){{ - requirements(Category.effect, () -> world.isZone(), ItemStack.with(Items.titanium, 200, Items.silicon, 150, Items.lead, 250, Items.plastanium, 75)); + requirements(Category.effect, BuildVisibility.campaignOnly, ItemStack.with(Items.titanium, 200, Items.silicon, 150, Items.lead, 250, Items.plastanium, 75)); size = 4; itemCapacity = 250; launchTime = 60f * 14; @@ -1346,7 +1344,8 @@ public class Blocks implements ContentList{ Items.pyratite, Bullets.pyraFlame ); recoil = 0f; - reload = 4f; + reload = 5f; + coolantMultiplier = 2f; range = 60f; shootCone = 50f; targetAir = false; @@ -1617,7 +1616,7 @@ public class Blocks implements ContentList{ size = 4; shootShake = 2f; range = 190f; - reload = 50f; + reload = 80f; firingMoveFract = 0.5f; shootDuration = 220f; powerUse = 14f; @@ -1634,7 +1633,7 @@ public class Blocks implements ContentList{ draugFactory = new UnitFactory("draug-factory"){{ requirements(Category.units, ItemStack.with(Items.copper, 30, Items.lead, 70)); - type = UnitTypes.draug; + unitType = UnitTypes.draug; produceTime = 2500; size = 2; maxSpawn = 1; @@ -1644,7 +1643,7 @@ public class Blocks implements ContentList{ spiritFactory = new UnitFactory("spirit-factory"){{ requirements(Category.units, ItemStack.with(Items.metaglass, 45, Items.lead, 55, Items.silicon, 45)); - type = UnitTypes.spirit; + unitType = UnitTypes.spirit; produceTime = 4000; size = 2; maxSpawn = 1; @@ -1654,7 +1653,7 @@ public class Blocks implements ContentList{ phantomFactory = new UnitFactory("phantom-factory"){{ requirements(Category.units, ItemStack.with(Items.titanium, 50, Items.thorium, 60, Items.lead, 65, Items.silicon, 105)); - type = UnitTypes.phantom; + unitType = UnitTypes.phantom; produceTime = 4400; size = 2; maxSpawn = 1; @@ -1671,7 +1670,7 @@ public class Blocks implements ContentList{ wraithFactory = new UnitFactory("wraith-factory"){{ requirements(Category.units, ItemStack.with(Items.titanium, 30, Items.lead, 40, Items.silicon, 45)); - type = UnitTypes.wraith; + unitType = UnitTypes.wraith; produceTime = 700; size = 2; consumes.power(0.5f); @@ -1680,7 +1679,7 @@ public class Blocks implements ContentList{ ghoulFactory = new UnitFactory("ghoul-factory"){{ requirements(Category.units, ItemStack.with(Items.titanium, 75, Items.lead, 65, Items.silicon, 110)); - type = UnitTypes.ghoul; + unitType = UnitTypes.ghoul; produceTime = 1150; size = 3; consumes.power(1.2f); @@ -1689,7 +1688,7 @@ public class Blocks implements ContentList{ revenantFactory = new UnitFactory("revenant-factory"){{ requirements(Category.units, ItemStack.with(Items.plastanium, 50, Items.titanium, 150, Items.lead, 150, Items.silicon, 200)); - type = UnitTypes.revenant; + unitType = UnitTypes.revenant; produceTime = 2000; size = 4; consumes.power(3f); @@ -1698,7 +1697,7 @@ public class Blocks implements ContentList{ daggerFactory = new UnitFactory("dagger-factory"){{ requirements(Category.units, ItemStack.with(Items.lead, 55, Items.silicon, 35)); - type = UnitTypes.dagger; + unitType = UnitTypes.dagger; produceTime = 850; size = 2; consumes.power(0.5f); @@ -1707,7 +1706,7 @@ public class Blocks implements ContentList{ crawlerFactory = new UnitFactory("crawler-factory"){{ requirements(Category.units, ItemStack.with(Items.lead, 45, Items.silicon, 30)); - type = UnitTypes.crawler; + unitType = UnitTypes.crawler; produceTime = 300; size = 2; maxSpawn = 6; @@ -1717,7 +1716,7 @@ public class Blocks implements ContentList{ titanFactory = new UnitFactory("titan-factory"){{ requirements(Category.units, ItemStack.with(Items.graphite, 50, Items.lead, 50, Items.silicon, 45)); - type = UnitTypes.titan; + unitType = UnitTypes.titan; produceTime = 1050; size = 3; consumes.power(0.60f); @@ -1726,7 +1725,7 @@ public class Blocks implements ContentList{ fortressFactory = new UnitFactory("fortress-factory"){{ requirements(Category.units, ItemStack.with(Items.thorium, 40, Items.lead, 110, Items.silicon, 75)); - type = UnitTypes.fortress; + unitType = UnitTypes.fortress; produceTime = 2000; size = 3; maxSpawn = 3; diff --git a/core/src/io/anuke/mindustry/content/Bullets.java b/core/src/io/anuke/mindustry/content/Bullets.java index ac18c8a2b0..3071c59f49 100644 --- a/core/src/io/anuke/mindustry/content/Bullets.java +++ b/core/src/io/anuke/mindustry/content/Bullets.java @@ -4,11 +4,11 @@ import io.anuke.arc.graphics.*; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.*; import io.anuke.arc.util.*; +import io.anuke.mindustry.ctype.ContentList; 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.game.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.world.*; @@ -99,8 +99,7 @@ public class Bullets implements ContentList{ collidesTiles = false; splashDamageRadius = 25f; splashDamage = 30f; - incendAmount = 4; - incendSpread = 11f; + status = StatusEffects.burning; frontColor = Pal.lightishOrange; backColor = Pal.lightOrange; trailEffect = Fx.incendTrail; @@ -228,8 +227,7 @@ public class Bullets implements ContentList{ splashDamage = 10f; lifetime = 160f; hitEffect = Fx.blastExplosion; - incendSpread = 10f; - incendAmount = 3; + status = StatusEffects.burning; }}; missileSurge = new MissileBulletType(4.4f, 15, "bullet"){{ @@ -342,9 +340,7 @@ public class Bullets implements ContentList{ bulletHeight = 12f; frontColor = Pal.lightishOrange; backColor = Pal.lightOrange; - incendSpread = 3f; - incendAmount = 1; - incendChance = 0.3f; + status = StatusEffects.burning; inaccuracy = 3f; lifetime = 60f; }}; @@ -354,9 +350,7 @@ public class Bullets implements ContentList{ bulletHeight = 12f; frontColor = Color.valueOf("feb380"); backColor = Color.valueOf("ea8878"); - incendSpread = 3f; - incendAmount = 1; - incendChance = 0.3f; + status = StatusEffects.burning; lifetime = 60f; }}; @@ -385,9 +379,7 @@ public class Bullets implements ContentList{ bulletHeight = 21f; frontColor = Pal.lightishOrange; backColor = Pal.lightOrange; - incendSpread = 3f; - incendAmount = 2; - incendChance = 0.3f; + status = StatusEffects.burning; shootEffect = Fx.shootBig; }}; diff --git a/core/src/io/anuke/mindustry/content/Fx.java b/core/src/io/anuke/mindustry/content/Fx.java index 47efe39e66..397f15e67b 100644 --- a/core/src/io/anuke/mindustry/content/Fx.java +++ b/core/src/io/anuke/mindustry/content/Fx.java @@ -5,12 +5,13 @@ import io.anuke.arc.graphics.*; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.*; import io.anuke.arc.util.*; +import io.anuke.mindustry.ctype.ContentList; import io.anuke.mindustry.entities.Effects.*; import io.anuke.mindustry.entities.effect.GroundEffectEntity.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.Cicon; import static io.anuke.mindustry.Vars.tilesize; diff --git a/core/src/io/anuke/mindustry/content/Items.java b/core/src/io/anuke/mindustry/content/Items.java index f367c9656c..77c88c651b 100644 --- a/core/src/io/anuke/mindustry/content/Items.java +++ b/core/src/io/anuke/mindustry/content/Items.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.content; import io.anuke.arc.graphics.Color; -import io.anuke.mindustry.game.ContentList; +import io.anuke.mindustry.ctype.ContentList; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemType; diff --git a/core/src/io/anuke/mindustry/content/Liquids.java b/core/src/io/anuke/mindustry/content/Liquids.java index 17cc695c0e..bf103bceaa 100644 --- a/core/src/io/anuke/mindustry/content/Liquids.java +++ b/core/src/io/anuke/mindustry/content/Liquids.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.content; import io.anuke.arc.graphics.Color; -import io.anuke.mindustry.game.ContentList; +import io.anuke.mindustry.ctype.ContentList; import io.anuke.mindustry.type.Liquid; public class Liquids implements ContentList{ diff --git a/core/src/io/anuke/mindustry/content/Loadouts.java b/core/src/io/anuke/mindustry/content/Loadouts.java index a9c7f5bc3f..af4a5962c0 100644 --- a/core/src/io/anuke/mindustry/content/Loadouts.java +++ b/core/src/io/anuke/mindustry/content/Loadouts.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.content; -import io.anuke.mindustry.game.ContentList; +import io.anuke.mindustry.ctype.ContentList; import io.anuke.mindustry.type.Loadout; public class Loadouts implements ContentList{ diff --git a/core/src/io/anuke/mindustry/content/Mechs.java b/core/src/io/anuke/mindustry/content/Mechs.java index b9dd4c80c9..f738a1c083 100644 --- a/core/src/io/anuke/mindustry/content/Mechs.java +++ b/core/src/io/anuke/mindustry/content/Mechs.java @@ -6,11 +6,11 @@ import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.*; import io.anuke.arc.util.*; import io.anuke.mindustry.*; +import io.anuke.mindustry.ctype.ContentList; 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.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; @@ -38,7 +38,7 @@ public class Mechs implements ContentList{ weapon = new Weapon("blaster"){{ length = 1.5f; reload = 14f; - roundrobin = true; + alternate = true; ejectEffect = Fx.shellEjectSmall; bullet = Bullets.standardMechSmall; }}; @@ -71,7 +71,7 @@ public class Mechs implements ContentList{ length = 1f; reload = 55f; shotDelay = 3f; - roundrobin = true; + alternate = true; shots = 2; inaccuracy = 0f; ejectEffect = Fx.none; @@ -116,7 +116,7 @@ public class Mechs implements ContentList{ weapon = new Weapon("heal-blaster"){{ length = 1.5f; reload = 24f; - roundrobin = false; + alternate = false; ejectEffect = Fx.none; recoil = 2f; bullet = Bullets.healBullet; @@ -168,7 +168,7 @@ public class Mechs implements ContentList{ shots = 4; spacing = 8f; inaccuracy = 8f; - roundrobin = true; + alternate = true; ejectEffect = Fx.none; shake = 3f; bullet = Bullets.missileSwarm; @@ -232,7 +232,7 @@ public class Mechs implements ContentList{ weapon = new Weapon("blaster"){{ length = 1.5f; reload = 15f; - roundrobin = true; + alternate = true; ejectEffect = Fx.shellEjectSmall; bullet = Bullets.standardCopper; }}; @@ -262,7 +262,7 @@ public class Mechs implements ContentList{ reload = 70f; shots = 4; inaccuracy = 2f; - roundrobin = true; + alternate = true; ejectEffect = Fx.none; velocityRnd = 0.2f; spacing = 1f; @@ -327,7 +327,7 @@ public class Mechs implements ContentList{ shots = 2; shotDelay = 1f; shots = 8; - roundrobin = true; + alternate = true; ejectEffect = Fx.none; velocityRnd = 1f; inaccuracy = 20f; @@ -365,7 +365,7 @@ public class Mechs implements ContentList{ weapon = new Weapon("bomber"){{ length = 1.5f; reload = 13f; - roundrobin = true; + alternate = true; ejectEffect = Fx.shellEjectSmall; bullet = Bullets.standardGlaive; shootSound = Sounds.shootSnap; diff --git a/core/src/io/anuke/mindustry/content/StatusEffects.java b/core/src/io/anuke/mindustry/content/StatusEffects.java index fb94a881ce..c4342ec82c 100644 --- a/core/src/io/anuke/mindustry/content/StatusEffects.java +++ b/core/src/io/anuke/mindustry/content/StatusEffects.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.content; import io.anuke.arc.*; import io.anuke.arc.math.Mathf; import io.anuke.mindustry.entities.Effects; -import io.anuke.mindustry.game.ContentList; +import io.anuke.mindustry.ctype.ContentList; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.type.StatusEffect; @@ -18,7 +18,7 @@ public class StatusEffects implements ContentList{ none = new StatusEffect(); burning = new StatusEffect(){{ - damage = 0.04f; + damage = 0.06f; effect = Fx.burning; opposite(() -> wet, () -> freezing); diff --git a/core/src/io/anuke/mindustry/content/TechTree.java b/core/src/io/anuke/mindustry/content/TechTree.java index 21ca9ff84b..4daebfdcda 100644 --- a/core/src/io/anuke/mindustry/content/TechTree.java +++ b/core/src/io/anuke/mindustry/content/TechTree.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.content; import io.anuke.arc.collection.Array; -import io.anuke.mindustry.game.ContentList; +import io.anuke.mindustry.ctype.ContentList; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.world.Block; @@ -317,9 +317,9 @@ public class TechTree implements ContentList{ return node(block, () -> {}); } - public static void create(Block parent, Block block){ + public static TechNode create(Block parent, Block block){ TechNode.context = all.find(t -> t.block == parent); - node(block, () -> {}); + return node(block, () -> {}); } public static class TechNode{ diff --git a/core/src/io/anuke/mindustry/content/TypeIDs.java b/core/src/io/anuke/mindustry/content/TypeIDs.java index faf82ed359..2e3f6347b1 100644 --- a/core/src/io/anuke/mindustry/content/TypeIDs.java +++ b/core/src/io/anuke/mindustry/content/TypeIDs.java @@ -3,8 +3,8 @@ package io.anuke.mindustry.content; import io.anuke.mindustry.entities.effect.Fire; import io.anuke.mindustry.entities.effect.Puddle; import io.anuke.mindustry.entities.type.Player; -import io.anuke.mindustry.game.ContentList; -import io.anuke.mindustry.game.TypeID; +import io.anuke.mindustry.ctype.ContentList; +import io.anuke.mindustry.type.TypeID; public class TypeIDs implements ContentList{ public static TypeID fire, puddle, player; diff --git a/core/src/io/anuke/mindustry/content/UnitTypes.java b/core/src/io/anuke/mindustry/content/UnitTypes.java index c472d9de93..35eb9890bd 100644 --- a/core/src/io/anuke/mindustry/content/UnitTypes.java +++ b/core/src/io/anuke/mindustry/content/UnitTypes.java @@ -1,11 +1,11 @@ package io.anuke.mindustry.content; import io.anuke.arc.collection.*; +import io.anuke.mindustry.ctype.ContentList; import io.anuke.mindustry.entities.bullet.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.entities.type.Bullet; import io.anuke.mindustry.entities.type.base.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.type.*; @@ -41,11 +41,11 @@ public class UnitTypes implements ContentList{ health = 100; engineSize = 1.8f; engineOffset = 5.7f; - weapon = new Weapon("heal-blaster"){{ + weapon = new Weapon(){{ length = 1.5f; reload = 40f; width = 0.5f; - roundrobin = true; + alternate = true; ejectEffect = Fx.none; recoil = 2f; bullet = Bullets.healBulletBig; @@ -65,11 +65,11 @@ public class UnitTypes implements ContentList{ buildPower = 0.4f; engineOffset = 6.5f; toMine = ObjectSet.with(Items.lead, Items.copper, Items.titanium); - weapon = new Weapon("heal-blaster"){{ + weapon = new Weapon(){{ length = 1.5f; reload = 20f; width = 0.5f; - roundrobin = true; + alternate = true; ejectEffect = Fx.none; recoil = 2f; bullet = Bullets.healBullet; @@ -86,7 +86,7 @@ public class UnitTypes implements ContentList{ weapon = new Weapon("chain-blaster"){{ length = 1.5f; reload = 28f; - roundrobin = true; + alternate = true; ejectEffect = Fx.shellEjectSmall; bullet = Bullets.standardCopper; }}; @@ -99,7 +99,7 @@ public class UnitTypes implements ContentList{ hitsize = 8f; mass = 1.75f; health = 120; - weapon = new Weapon("bomber"){{ + weapon = new Weapon(){{ reload = 12f; ejectEffect = Fx.none; shootSound = Sounds.explosion; @@ -138,7 +138,7 @@ public class UnitTypes implements ContentList{ length = 1f; reload = 14f; range = 30f; - roundrobin = true; + alternate = true; recoil = 1f; ejectEffect = Fx.none; bullet = Bullets.basicFlame; @@ -158,7 +158,7 @@ public class UnitTypes implements ContentList{ length = 1f; reload = 60f; width = 10f; - roundrobin = true; + alternate = true; recoil = 4f; shake = 2f; ejectEffect = Fx.shellEjectMedium; @@ -180,7 +180,7 @@ public class UnitTypes implements ContentList{ weapon = new Weapon("eruption"){{ length = 3f; reload = 10f; - roundrobin = true; + alternate = true; ejectEffect = Fx.none; bullet = Bullets.eruptorShot; recoil = 1f; @@ -201,7 +201,7 @@ public class UnitTypes implements ContentList{ length = 8f; reload = 50f; width = 17f; - roundrobin = true; + alternate = true; recoil = 3f; shake = 2f; shots = 4; @@ -225,7 +225,7 @@ public class UnitTypes implements ContentList{ length = 13f; reload = 30f; width = 22f; - roundrobin = true; + alternate = true; recoil = 3f; shake = 2f; inaccuracy = 3f; @@ -247,10 +247,10 @@ public class UnitTypes implements ContentList{ health = 75; engineOffset = 5.5f; range = 140f; - weapon = new Weapon("chain-blaster"){{ + weapon = new Weapon(){{ length = 1.5f; reload = 28f; - roundrobin = true; + alternate = true; ejectEffect = Fx.shellEjectSmall; bullet = Bullets.standardCopper; shootSound = Sounds.shoot; @@ -267,11 +267,11 @@ public class UnitTypes implements ContentList{ targetAir = false; engineOffset = 7.8f; range = 140f; - weapon = new Weapon("bomber"){{ + weapon = new Weapon(){{ length = 0f; width = 2f; reload = 12f; - roundrobin = true; + alternate = true; ejectEffect = Fx.none; velocityRnd = 1f; inaccuracy = 40f; @@ -303,7 +303,7 @@ public class UnitTypes implements ContentList{ width = 10f; shots = 2; inaccuracy = 2f; - roundrobin = true; + alternate = true; ejectEffect = Fx.none; velocityRnd = 0.2f; spacing = 1f; @@ -336,7 +336,7 @@ public class UnitTypes implements ContentList{ shootCone = 100f; shotDelay = 2; inaccuracy = 10f; - roundrobin = true; + alternate = true; ejectEffect = Fx.none; velocityRnd = 0.2f; spacing = 1f; @@ -369,7 +369,7 @@ public class UnitTypes implements ContentList{ shake = 1f; inaccuracy = 3f; - roundrobin = true; + alternate = true; ejectEffect = Fx.none; bullet = new BasicBulletType(7f, 42, "bullet"){ { diff --git a/core/src/io/anuke/mindustry/content/Zones.java b/core/src/io/anuke/mindustry/content/Zones.java index 90794dd80e..6c4932e814 100644 --- a/core/src/io/anuke/mindustry/content/Zones.java +++ b/core/src/io/anuke/mindustry/content/Zones.java @@ -1,5 +1,6 @@ package io.anuke.mindustry.content; +import io.anuke.mindustry.ctype.ContentList; import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.Objectives.*; import io.anuke.mindustry.maps.generators.*; diff --git a/core/src/io/anuke/mindustry/core/ContentLoader.java b/core/src/io/anuke/mindustry/core/ContentLoader.java index 77ed6f219f..99c50e111e 100644 --- a/core/src/io/anuke/mindustry/core/ContentLoader.java +++ b/core/src/io/anuke/mindustry/core/ContentLoader.java @@ -5,8 +5,9 @@ import io.anuke.arc.function.*; import io.anuke.arc.graphics.*; import io.anuke.arc.util.*; import io.anuke.mindustry.content.*; +import io.anuke.mindustry.ctype.*; import io.anuke.mindustry.entities.bullet.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.mod.Mods.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.world.*; @@ -109,8 +110,15 @@ public class ContentLoader{ for(ContentType type : ContentType.values()){ for(Content content : contentMap[type.ordinal()]){ - //TODO catch error and display it per mod - callable.accept(content); + try{ + callable.accept(content); + }catch(Throwable e){ + if(content.mod != null){ + mods.handleError(new ModLoadException(content, e), content.mod); + }else{ + throw new RuntimeException(e); + } + } } } diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 08302458d2..e5d5b2b9ce 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -29,8 +29,8 @@ import java.text.*; import java.util.*; import static io.anuke.arc.Core.*; -import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.net; +import static io.anuke.mindustry.Vars.*; /** * Control module. diff --git a/core/src/io/anuke/mindustry/core/Logic.java b/core/src/io/anuke/mindustry/core/Logic.java index d4fe3a4dc6..959f90b01d 100644 --- a/core/src/io/anuke/mindustry/core/Logic.java +++ b/core/src/io/anuke/mindustry/core/Logic.java @@ -5,6 +5,7 @@ import io.anuke.arc.*; import io.anuke.arc.util.*; import io.anuke.mindustry.content.*; import io.anuke.mindustry.core.GameState.*; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.game.EventType.*; @@ -82,7 +83,8 @@ public class Logic implements ApplicationListener{ //painful O(n) iteration + copy for(int i = 0; i < data.brokenBlocks.size; i++){ BrokenBlock b = data.brokenBlocks.get(i); - if(b.x == event.tile.x && b.y == event.tile.y){ + Block block = content.block(b.block); + if(event.tile.block().bounds(event.tile.x, event.tile.y, Tmp.r1).overlaps(block.bounds(b.x, b.y, Tmp.r2))){ data.brokenBlocks.removeIndex(i); break; } diff --git a/core/src/io/anuke/mindustry/core/NetClient.java b/core/src/io/anuke/mindustry/core/NetClient.java index 911bb4ada4..eb1734fa94 100644 --- a/core/src/io/anuke/mindustry/core/NetClient.java +++ b/core/src/io/anuke/mindustry/core/NetClient.java @@ -15,14 +15,15 @@ import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.traits.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.*; +import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.net.Administration.*; import io.anuke.mindustry.net.Net.*; import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.Packets.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.type.TypeID; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.modules.*; @@ -198,6 +199,16 @@ public class NetClient implements ApplicationListener{ return "[#" + player.color.toString().toUpperCase() + "]" + name; } + @Remote(called = Loc.client, variants = Variant.one) + public static void onConnect(String ip, int port){ + netClient.disconnectQuietly(); + state.set(State.menu); + logic.reset(); + + Vars.netClient.beginConnecting(); + net.connect(ip, port, () -> {}); + } + @Remote(targets = Loc.client) public static void onPing(Player player, long time){ Call.onPingResponse(player.con, time); @@ -245,6 +256,11 @@ public class NetClient implements ApplicationListener{ ui.showText("", message); } + @Remote(variants = Variant.both) + public static void onSetRules(Rules rules){ + state.rules = rules; + } + @Remote(variants = Variant.both) public static void onWorldDataBegin(){ entities.clear(); @@ -479,4 +495,4 @@ public class NetClient implements ApplicationListener{ return result; } } -} \ No newline at end of file +} diff --git a/core/src/io/anuke/mindustry/core/Platform.java b/core/src/io/anuke/mindustry/core/Platform.java index bfedda548c..588e5081f1 100644 --- a/core/src/io/anuke/mindustry/core/Platform.java +++ b/core/src/io/anuke/mindustry/core/Platform.java @@ -8,9 +8,9 @@ import io.anuke.arc.function.*; import io.anuke.arc.math.*; import io.anuke.arc.scene.ui.*; import io.anuke.arc.util.serialization.*; -import io.anuke.mindustry.maps.*; import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.Net.*; +import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.dialogs.*; import static io.anuke.mindustry.Vars.mobile; @@ -24,27 +24,18 @@ public interface Platform{ default void inviteFriends(){} /** Steam: Share a map on the workshop.*/ - default void publishMap(Map map){} - - /** Steam: Return external workshop maps to be loaded.*/ - default Array getExternalMaps(){ - return Array.with(); - } - - /** Steam: Return external workshop mods to be loaded.*/ - default Array getExternalMods(){ - return Array.with(); - } - - /** Steam: View a map listing on the workshop.*/ - default void viewMapListing(Map map){} + default void publish(Publishable pub){} /** Steam: View a listing on the workshop.*/ - default void viewListing(String mapid){} + default void viewListing(Publishable pub){} - /** Steam: View map workshop info, removing the map ID tag if its listing is deleted. - * Also presents the option to update the map. */ - default void viewMapListingInfo(Map map){} + /** Steam: View a listing on the workshop by an ID.*/ + default void viewListingID(String mapid){} + + /** Steam: Return external workshop maps to be loaded.*/ + default Array getWorkshopContent(Class type){ + return new Array<>(0); + } /** Steam: Open workshop for maps.*/ default void openWorkshop(){} @@ -81,11 +72,6 @@ public interface Platform{ default void updateRPC(){ } - /** Whether donating is supported. */ - default boolean canDonate(){ - return false; - } - /** Must be a base64 string 8 bytes in length. */ default String getUUID(){ String uuid = Core.settings.getString("uuid", ""); diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index c358c846a4..fd9c577179 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -22,6 +22,7 @@ import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.input.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.blocks.defense.ForceProjector.*; import static io.anuke.arc.Core.*; diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index 57ad4cccda..ffea7f4a4e 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -68,6 +68,7 @@ public class UI implements ApplicationListener, Loadable{ public DeployDialog deploy; public TechTreeDialog tech; public MinimapDialog minimap; + public SchematicsDialog schematics; public ModsDialog mods; public Cursor drillCursor, unloadCursor; @@ -185,6 +186,13 @@ public class UI implements ApplicationListener, Loadable{ Core.scene.act(); Core.scene.draw(); + if(Core.input.keyTap(KeyCode.MOUSE_LEFT) && Core.scene.getKeyboardFocus() instanceof TextField){ + Element e = Core.scene.hit(Core.input.mouseX(), Core.input.mouseY(), true); + if(!(e instanceof TextField)){ + Core.scene.setKeyboardFocus(null); + } + } + //draw overlay for buttons if(state.rules.tutorial){ control.tutorial.draw(); @@ -225,6 +233,7 @@ public class UI implements ApplicationListener, Loadable{ tech = new TechTreeDialog(); minimap = new MinimapDialog(); mods = new ModsDialog(); + schematics = new SchematicsDialog(); Group group = Core.scene.root; @@ -296,7 +305,7 @@ public class UI implements ApplicationListener, Loadable{ } public void showTextInput(String title, String text, String def, Consumer confirmed){ - showTextInput(title, text, 24, def, confirmed); + showTextInput(title, text, 32, def, confirmed); } public void showTextInput(String titleText, String text, int textLength, String def, Consumer confirmed){ @@ -307,7 +316,7 @@ public class UI implements ApplicationListener, Loadable{ Table table = new Table(); table.setFillParent(true); table.actions(Actions.fadeOut(7f, Interpolation.fade), Actions.remove()); - table.top().add(info).padTop(10); + table.top().add(info).style(Styles.outlineLabel).padTop(10); Core.scene.add(table); } @@ -397,7 +406,7 @@ public class UI implements ApplicationListener, Loadable{ public void showConfirm(String title, String text, BooleanProvider hide, Runnable confirmed){ FloatingDialog dialog = new FloatingDialog(title); - dialog.cont.add(text).width(500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center); + dialog.cont.add(text).width(mobile ? 400f : 500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center); dialog.buttons.defaults().size(200f, 54f).pad(2f); dialog.setFillParent(false); dialog.buttons.addButton("$cancel", dialog::hide); @@ -420,7 +429,7 @@ public class UI implements ApplicationListener, Loadable{ public void showCustomConfirm(String title, String text, String yes, String no, Runnable confirmed){ FloatingDialog dialog = new FloatingDialog(title); - dialog.cont.add(text).width(500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center); + dialog.cont.add(text).width(mobile ? 400f : 500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center); dialog.buttons.defaults().size(200f, 54f).pad(2f); dialog.setFillParent(false); dialog.buttons.addButton(no, dialog::hide); diff --git a/core/src/io/anuke/mindustry/game/Version.java b/core/src/io/anuke/mindustry/core/Version.java similarity index 98% rename from core/src/io/anuke/mindustry/game/Version.java rename to core/src/io/anuke/mindustry/core/Version.java index 1df671ae06..9d774c47c8 100644 --- a/core/src/io/anuke/mindustry/game/Version.java +++ b/core/src/io/anuke/mindustry/core/Version.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.game; +package io.anuke.mindustry.core; import io.anuke.arc.*; import io.anuke.arc.Files.*; diff --git a/core/src/io/anuke/mindustry/game/Content.java b/core/src/io/anuke/mindustry/ctype/Content.java similarity index 97% rename from core/src/io/anuke/mindustry/game/Content.java rename to core/src/io/anuke/mindustry/ctype/Content.java index 0c03f47eff..ab6f20d305 100644 --- a/core/src/io/anuke/mindustry/game/Content.java +++ b/core/src/io/anuke/mindustry/ctype/Content.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.game; +package io.anuke.mindustry.ctype; import io.anuke.arc.files.*; import io.anuke.arc.util.ArcAnnotate.*; diff --git a/core/src/io/anuke/mindustry/game/ContentList.java b/core/src/io/anuke/mindustry/ctype/ContentList.java similarity index 85% rename from core/src/io/anuke/mindustry/game/ContentList.java rename to core/src/io/anuke/mindustry/ctype/ContentList.java index 82406a9880..1f77c37e18 100644 --- a/core/src/io/anuke/mindustry/game/ContentList.java +++ b/core/src/io/anuke/mindustry/ctype/ContentList.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.game; +package io.anuke.mindustry.ctype; /** Interface for a list of content to be loaded in {@link io.anuke.mindustry.core.ContentLoader}. */ public interface ContentList{ diff --git a/core/src/io/anuke/mindustry/game/MappableContent.java b/core/src/io/anuke/mindustry/ctype/MappableContent.java similarity index 90% rename from core/src/io/anuke/mindustry/game/MappableContent.java rename to core/src/io/anuke/mindustry/ctype/MappableContent.java index 785113d2b8..3063157c13 100644 --- a/core/src/io/anuke/mindustry/game/MappableContent.java +++ b/core/src/io/anuke/mindustry/ctype/MappableContent.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.game; +package io.anuke.mindustry.ctype; import io.anuke.mindustry.*; diff --git a/core/src/io/anuke/mindustry/game/UnlockableContent.java b/core/src/io/anuke/mindustry/ctype/UnlockableContent.java similarity index 93% rename from core/src/io/anuke/mindustry/game/UnlockableContent.java rename to core/src/io/anuke/mindustry/ctype/UnlockableContent.java index 9b1986b9c9..bc43a75d97 100644 --- a/core/src/io/anuke/mindustry/game/UnlockableContent.java +++ b/core/src/io/anuke/mindustry/ctype/UnlockableContent.java @@ -1,10 +1,11 @@ -package io.anuke.mindustry.game; +package io.anuke.mindustry.ctype; import io.anuke.annotations.Annotations.*; import io.anuke.arc.*; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.mindustry.*; +import io.anuke.mindustry.ui.Cicon; /** Base interface for an unlockable content type. */ public abstract class UnlockableContent extends MappableContent{ @@ -13,7 +14,7 @@ public abstract class UnlockableContent extends MappableContent{ /** Localized description. May be null. */ public String description; /** Icons by Cicon ID.*/ - protected TextureRegion[] cicons = new TextureRegion[Cicon.all.length]; + protected TextureRegion[] cicons = new TextureRegion[io.anuke.mindustry.ui.Cicon.all.length]; public UnlockableContent(String name){ super(name); diff --git a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java index 88fe62e604..0bcd4fa80b 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java @@ -25,6 +25,7 @@ import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.io.*; import io.anuke.mindustry.maps.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.ui.dialogs.*; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; @@ -149,15 +150,16 @@ public class MapEditorDialog extends Dialog implements Disposable{ if(steam){ menu.cont.addImageTextButton("$editor.publish.workshop", Icon.linkSmall, () -> { Map builtin = maps.all().find(m -> m.name().equals(editor.getTags().get("name", "").trim())); + if(editor.getTags().containsKey("steamid") && builtin != null && !builtin.custom){ - platform.viewListing(editor.getTags().get("steamid")); + platform.viewListingID(editor.getTags().get("steamid")); return; } Map map = save(); if(editor.getTags().containsKey("steamid") && map != null){ - platform.viewMapListingInfo(map); + platform.viewListing(map); return; } @@ -173,7 +175,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ return; } - platform.publishMap(map); + platform.publish(map); }).padTop(-3).size(swidth * 2f + 10, 60f).update(b -> b.setText(editor.getTags().containsKey("steamid") ? editor.getTags().get("author").equals(player.name) ? "$workshop.listing" : "$view.workshop" : "$editor.publish.workshop")); menu.cont.row(); diff --git a/core/src/io/anuke/mindustry/editor/MapRenderer.java b/core/src/io/anuke/mindustry/editor/MapRenderer.java index 8c88cba145..27994abcdc 100644 --- a/core/src/io/anuke/mindustry/editor/MapRenderer.java +++ b/core/src/io/anuke/mindustry/editor/MapRenderer.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.editor; -import io.anuke.arc.Core; +import io.anuke.arc.*; import io.anuke.arc.collection.IntSet; import io.anuke.arc.collection.IntSet.IntSetIterator; import io.anuke.arc.graphics.Color; @@ -10,6 +10,7 @@ import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.*; import io.anuke.mindustry.content.Blocks; +import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.graphics.IndexedRenderer; import io.anuke.mindustry.world.Block; @@ -29,7 +30,11 @@ public class MapRenderer implements Disposable{ public MapRenderer(MapEditor editor){ this.editor = editor; - texture = Core.atlas.find("clear-editor").getTexture(); + this.texture = Core.atlas.find("clear-editor").getTexture(); + + Events.on(ContentReloadEvent.class, e -> { + texture = Core.atlas.find("clear-editor").getTexture(); + }); } public void resize(int width, int height){ diff --git a/core/src/io/anuke/mindustry/editor/MapResizeDialog.java b/core/src/io/anuke/mindustry/editor/MapResizeDialog.java index 4639faf878..3284feda19 100644 --- a/core/src/io/anuke/mindustry/editor/MapResizeDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapResizeDialog.java @@ -46,7 +46,7 @@ public class MapResizeDialog extends FloatingDialog{ buttons.defaults().size(200f, 50f); buttons.addButton("$cancel", this::hide); - buttons.addButton("$editor.resize", () -> { + buttons.addButton("$ok", () -> { cons.accept(width, height); hide(); }); diff --git a/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java b/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java index aba7fa135d..fa94b6b2f2 100644 --- a/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java +++ b/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java @@ -17,6 +17,7 @@ import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.io.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.ui.dialogs.*; import static io.anuke.mindustry.Vars.*; @@ -140,7 +141,7 @@ public class WaveInfoDialog extends FloatingDialog{ t.margin(0).defaults().pad(3).padLeft(5f).growX().left(); t.addButton(b -> { b.left(); - b.addImage(group.type.icon(Cicon.medium)).size(32f).padRight(3); + b.addImage(group.type.icon(io.anuke.mindustry.ui.Cicon.medium)).size(32f).padRight(3); b.add(group.type.localizedName).color(Pal.accent); }, () -> showUpdate(group)).pad(-6f).padBottom(0f); @@ -221,7 +222,7 @@ public class WaveInfoDialog extends FloatingDialog{ for(UnitType type : content.units()){ dialog.cont.addButton(t -> { t.left(); - t.addImage(type.icon(Cicon.medium)).size(40f).padRight(2f); + t.addImage(type.icon(io.anuke.mindustry.ui.Cicon.medium)).size(40f).padRight(2f); t.add(type.localizedName); }, () -> { lastType = type; diff --git a/core/src/io/anuke/mindustry/entities/Damage.java b/core/src/io/anuke/mindustry/entities/Damage.java index 8d920e214a..dfe339bb44 100644 --- a/core/src/io/anuke/mindustry/entities/Damage.java +++ b/core/src/io/anuke/mindustry/entities/Damage.java @@ -2,8 +2,7 @@ package io.anuke.mindustry.entities; import io.anuke.annotations.Annotations.Struct; import io.anuke.arc.*; -import io.anuke.arc.collection.GridBits; -import io.anuke.arc.collection.IntQueue; +import io.anuke.arc.collection.*; import io.anuke.arc.function.*; import io.anuke.arc.graphics.Color; import io.anuke.arc.math.Mathf; @@ -32,6 +31,7 @@ public class Damage{ private static Vector2 tr = new Vector2(); private static GridBits bits = new GridBits(30, 30); private static IntQueue propagation = new IntQueue(); + private static IntSet collidedBlocks = new IntSet(); /** Creates a dynamic explosion based on specified parameters. */ public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, Color color){ @@ -88,11 +88,13 @@ public class Damage{ * Only enemies of the specified team are damaged. */ public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length, boolean large){ + collidedBlocks.clear(); tr.trns(angle, length); IntPositionConsumer collider = (cx, cy) -> { Tile tile = world.ltile(cx, cy); - if(tile != null && tile.entity != null && tile.getTeamID() != team.ordinal() && tile.entity.collide(hitter)){ + if(tile != null && !collidedBlocks.contains(tile.pos()) && tile.entity != null && tile.getTeamID() != team.ordinal() && tile.entity.collide(hitter)){ tile.entity.collision(hitter); + collidedBlocks.add(tile.pos()); hitter.getBulletType().hit(hitter, tile.worldx(), tile.worldy()); } }; diff --git a/core/src/io/anuke/mindustry/entities/TargetPriority.java b/core/src/io/anuke/mindustry/entities/TargetPriority.java new file mode 100644 index 0000000000..47b0213de3 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/TargetPriority.java @@ -0,0 +1,6 @@ +package io.anuke.mindustry.entities; + +public enum TargetPriority{ + base, + turret +} diff --git a/core/src/io/anuke/mindustry/entities/Units.java b/core/src/io/anuke/mindustry/entities/Units.java index af3d3f4fe7..c9d0073998 100644 --- a/core/src/io/anuke/mindustry/entities/Units.java +++ b/core/src/io/anuke/mindustry/entities/Units.java @@ -87,7 +87,7 @@ public class Units{ if(team == Team.derelict) return null; for(Team enemy : state.teams.enemiesOf(team)){ - TileEntity entity = indexer.findTile(enemy, x, y, range, pred); + TileEntity entity = indexer.findTile(enemy, x, y, range, pred, true); if(entity != null){ return entity; } diff --git a/core/src/io/anuke/mindustry/entities/bullet/BulletType.java b/core/src/io/anuke/mindustry/entities/bullet/BulletType.java index 58b186c28d..807218cd85 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/bullet/BulletType.java @@ -3,12 +3,12 @@ package io.anuke.mindustry.entities.bullet; import io.anuke.arc.audio.*; import io.anuke.arc.math.*; import io.anuke.mindustry.content.*; +import io.anuke.mindustry.ctype.Content; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.Effects.*; import io.anuke.mindustry.entities.effect.*; import io.anuke.mindustry.entities.traits.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; @@ -47,7 +47,7 @@ public abstract class BulletType extends Content{ /** Status effect applied on hit. */ public StatusEffect status = StatusEffects.none; /** Intensity of applied status effect in terms of duration. */ - public float statusDuration = 60 * 1f; + public float statusDuration = 60 * 10f; /** Whether this bullet type collides with tiles. */ public boolean collidesTiles = true; /** Whether this bullet type collides with tiles that are of the same team. */ diff --git a/core/src/io/anuke/mindustry/entities/effect/Fire.java b/core/src/io/anuke/mindustry/entities/effect/Fire.java index 31cc65ab6a..2c47550426 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Fire.java +++ b/core/src/io/anuke/mindustry/entities/effect/Fire.java @@ -12,8 +12,8 @@ import io.anuke.mindustry.entities.traits.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.entities.type.TimedEntity; import io.anuke.mindustry.game.EventType.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; +import io.anuke.mindustry.type.TypeID; import io.anuke.mindustry.world.*; import java.io.*; diff --git a/core/src/io/anuke/mindustry/entities/effect/Puddle.java b/core/src/io/anuke/mindustry/entities/effect/Puddle.java index 69bb64c9c2..56d326c41b 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Puddle.java +++ b/core/src/io/anuke/mindustry/entities/effect/Puddle.java @@ -16,7 +16,7 @@ import io.anuke.mindustry.content.*; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.type.SolidEntity; import io.anuke.mindustry.entities.traits.*; -import io.anuke.mindustry.game.TypeID; +import io.anuke.mindustry.type.TypeID; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java index 7fe7aea771..35205daa42 100644 --- a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java @@ -104,7 +104,7 @@ public interface BuilderTrait extends Entity, TeamTrait{ if(current.breaking){ entity.deconstruct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier); }else{ - if(entity.construct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier)){ + if(entity.construct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier, current.hasConfig)){ if(current.hasConfig){ Call.onTileConfig(null, tile, current.config); } @@ -193,11 +193,16 @@ public interface BuilderTrait extends Entity, TeamTrait{ /** Add another build requests to the queue, if it doesn't exist there yet. */ default void addBuildRequest(BuildRequest place, boolean tail){ + BuildRequest replace = null; for(BuildRequest request : buildQueue()){ if(request.x == place.x && request.y == place.y){ - return; + replace = request; + break; } } + if(replace != null){ + buildQueue().remove(replace); + } Tile tile = world.tile(place.x, place.y); if(tile != null && tile.entity instanceof BuildEntity){ place.progress = tile.entity().progress; @@ -267,18 +272,26 @@ public interface BuilderTrait extends Entity, TeamTrait{ /** Class for storing build requests. Can be either a place or remove request. */ class BuildRequest{ + /** Position and rotation of this request. */ public int x, y, rotation; + /** Block being placed. If null, this is a breaking request.*/ public @Nullable Block block; + /** Whether this is a break request.*/ public boolean breaking; + /** Whether this request comes with a config int. If yes, any blocks placed with this request will not call playerPlaced.*/ public boolean hasConfig; + /** Config int. Not used unless hasConfig is true.*/ public int config; + /** Original position, only used in schematics.*/ + public int originalX, originalY, originalWidth, originalHeight; + /** Last progress.*/ public float progress; - public boolean initialized; + /** Whether construction has started for this request.*/ + public boolean initialized, worldContext = true; - //animation variables + /** Visual scale. Used only for rendering.*/ public float animScale = 0f; - public float animInvalid; /** This creates a build request. */ public BuildRequest(int x, int y, int rotation, Block block){ @@ -302,6 +315,31 @@ public interface BuilderTrait extends Entity, TeamTrait{ } + public BuildRequest copy(){ + BuildRequest copy = new BuildRequest(); + copy.x = x; + copy.y = y; + copy.rotation = rotation; + copy.block = block; + copy.breaking = breaking; + copy.hasConfig = hasConfig; + copy.config = config; + copy.originalX = originalX; + copy.originalY = originalY; + copy.progress = progress; + copy.initialized = initialized; + copy.animScale = animScale; + return copy; + } + + public BuildRequest original(int x, int y, int originalWidth, int originalHeight){ + originalX = x; + originalY = y; + this.originalWidth = originalWidth; + this.originalHeight = originalHeight; + return this; + } + public Rectangle bounds(Rectangle rect){ if(breaking){ return rect.set(-100f, -100f, 0f, 0f); diff --git a/core/src/io/anuke/mindustry/entities/traits/TypeTrait.java b/core/src/io/anuke/mindustry/entities/traits/TypeTrait.java index 9e53f9678a..deddefe7ed 100644 --- a/core/src/io/anuke/mindustry/entities/traits/TypeTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/TypeTrait.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.entities.traits; -import io.anuke.mindustry.game.TypeID; +import io.anuke.mindustry.type.TypeID; public interface TypeTrait{ diff --git a/core/src/io/anuke/mindustry/entities/type/BaseEntity.java b/core/src/io/anuke/mindustry/entities/type/BaseEntity.java index ee938afd39..97de965cfe 100755 --- a/core/src/io/anuke/mindustry/entities/type/BaseEntity.java +++ b/core/src/io/anuke/mindustry/entities/type/BaseEntity.java @@ -1,5 +1,6 @@ package io.anuke.mindustry.entities.type; +import io.anuke.mindustry.*; import io.anuke.mindustry.entities.EntityGroup; import io.anuke.mindustry.entities.traits.Entity; @@ -14,6 +15,14 @@ public abstract class BaseEntity implements Entity{ id = lastid++; } + public int tileX(){ + return Vars.world.toTile(x); + } + + public int tileY(){ + return Vars.world.toTile(y); + } + @Override public int getID(){ return id; diff --git a/core/src/io/anuke/mindustry/entities/type/BaseUnit.java b/core/src/io/anuke/mindustry/entities/type/BaseUnit.java index 369170e560..ab22a7933b 100644 --- a/core/src/io/anuke/mindustry/entities/type/BaseUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/BaseUnit.java @@ -16,6 +16,8 @@ import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.type.TypeID; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.blocks.defense.DeflectorWall.*; diff --git a/core/src/io/anuke/mindustry/entities/type/Player.java b/core/src/io/anuke/mindustry/entities/type/Player.java index 82ac867e05..eeaebc5fef 100644 --- a/core/src/io/anuke/mindustry/entities/type/Player.java +++ b/core/src/io/anuke/mindustry/entities/type/Player.java @@ -24,7 +24,9 @@ import io.anuke.mindustry.io.*; import io.anuke.mindustry.net.Administration.*; import io.anuke.mindustry.net.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.type.TypeID; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; @@ -438,7 +440,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{ control.input.drawBreaking(request); }else{ request.block.drawRequest(request, control.input.allRequests(), - Build.validPlace(getTeam(), request.x, request.y, request.block, request.rotation)); + Build.validPlace(getTeam(), request.x, request.y, request.block, request.rotation) || control.input.requestMatches(request)); } } @@ -585,7 +587,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{ float xa = Core.input.axis(Binding.move_x); float ya = Core.input.axis(Binding.move_y); - if(!Core.input.keyDown(Binding.gridMode) && !(Core.scene.getKeyboardFocus() instanceof TextField)){ + if(!(Core.scene.getKeyboardFocus() instanceof TextField)){ movement.y += ya * speed; movement.x += xa * speed; } @@ -797,6 +799,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{ textFadeTime = 0f; target = null; moveTarget = null; + isShooting = isBoosting = isTransferring = isTyping = false; spawner = lastSpawner = null; health = maxHealth(); mining = null; diff --git a/core/src/io/anuke/mindustry/entities/type/Unit.java b/core/src/io/anuke/mindustry/entities/type/Unit.java index 618c733f3a..8211476cef 100644 --- a/core/src/io/anuke/mindustry/entities/type/Unit.java +++ b/core/src/io/anuke/mindustry/entities/type/Unit.java @@ -22,6 +22,7 @@ import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.net.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; diff --git a/core/src/io/anuke/mindustry/entities/type/base/FlyingUnit.java b/core/src/io/anuke/mindustry/entities/type/base/FlyingUnit.java index 8a7e04dbcf..017ebad34f 100644 --- a/core/src/io/anuke/mindustry/entities/type/base/FlyingUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/base/FlyingUnit.java @@ -151,7 +151,13 @@ public class FlyingUnit extends BaseUnit{ } public void drawWeapons(){ - + for(int i : Mathf.signs){ + float tra = rotation - 90, trY = -type.weapon.getRecoil(this, i > 0) + type.weaponOffsetY; + float w = -i * type.weapon.region.getWidth() * Draw.scl; + Draw.rect(type.weapon.region, + x + Angles.trnsx(tra, getWeapon().width * i, trY), + y + Angles.trnsy(tra, getWeapon().width * i, trY), w, type.weapon.region.getHeight() * Draw.scl, rotation - 90); + } } public void drawEngine(){ diff --git a/core/src/io/anuke/mindustry/game/EventType.java b/core/src/io/anuke/mindustry/game/EventType.java index c526a5359c..fef2556d35 100644 --- a/core/src/io/anuke/mindustry/game/EventType.java +++ b/core/src/io/anuke/mindustry/game/EventType.java @@ -2,6 +2,7 @@ package io.anuke.mindustry.game; import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.mindustry.core.GameState.State; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.entities.traits.BuilderTrait; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.entities.units.*; diff --git a/core/src/io/anuke/mindustry/game/GlobalData.java b/core/src/io/anuke/mindustry/game/GlobalData.java index 5ef1ae09fb..6746425d82 100644 --- a/core/src/io/anuke/mindustry/game/GlobalData.java +++ b/core/src/io/anuke/mindustry/game/GlobalData.java @@ -6,6 +6,7 @@ import io.anuke.arc.files.*; import io.anuke.arc.util.io.*; import io.anuke.mindustry.*; import io.anuke.mindustry.content.*; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.type.*; @@ -39,10 +40,14 @@ public class GlobalData{ files.add(Core.settings.getSettingsFile()); files.addAll(customMapDirectory.list()); files.addAll(saveDirectory.list()); + files.addAll(screenshotDirectory.list()); + files.addAll(modDirectory.list()); + files.addAll(schematicDirectory.list()); String base = Core.settings.getDataDirectory().path(); try(OutputStream fos = file.write(false, 2048); ZipOutputStream zos = new ZipOutputStream(fos)){ for(FileHandle add : files){ + if(add.isDirectory()) continue; zos.putNextEntry(new ZipEntry(add.path().substring(base.length()))); Streams.copyStream(add.read(), zos); zos.closeEntry(); diff --git a/core/src/io/anuke/mindustry/game/MusicControl.java b/core/src/io/anuke/mindustry/game/MusicControl.java index 7b5c314a95..066d9f3e79 100644 --- a/core/src/io/anuke/mindustry/game/MusicControl.java +++ b/core/src/io/anuke/mindustry/game/MusicControl.java @@ -28,10 +28,8 @@ public class MusicControl{ private boolean silenced; public MusicControl(){ - Events.on(ClientLoadEvent.class, e -> { - ambientMusic = Array.with(Musics.game1, Musics.game3, Musics.game4, Musics.game6); - darkMusic = Array.with(Musics.game2, Musics.game5, Musics.game7); - }); + Events.on(ClientLoadEvent.class, e -> reload()); + Events.on(ContentReloadEvent.class, e -> reload()); //only run music 10 seconds after a wave spawns Events.on(WaveEvent.class, e -> Time.run(60f * 10f, () -> { @@ -41,6 +39,13 @@ public class MusicControl{ })); } + private void reload(){ + current = null; + fade = 0f; + ambientMusic = Array.with(Musics.game1, Musics.game3, Musics.game4, Musics.game6); + darkMusic = Array.with(Musics.game2, Musics.game5, Musics.game7); + } + /** Update and play the right music track.*/ public void update(){ if(state.is(State.menu)){ diff --git a/core/src/io/anuke/mindustry/game/Schematic.java b/core/src/io/anuke/mindustry/game/Schematic.java new file mode 100644 index 0000000000..cfa4d25d19 --- /dev/null +++ b/core/src/io/anuke/mindustry/game/Schematic.java @@ -0,0 +1,115 @@ +package io.anuke.mindustry.game; + +import io.anuke.arc.collection.*; +import io.anuke.arc.collection.IntIntMap.*; +import io.anuke.arc.files.*; +import io.anuke.arc.util.ArcAnnotate.*; +import io.anuke.mindustry.*; +import io.anuke.mindustry.type.*; +import io.anuke.mindustry.world.*; + +import static io.anuke.mindustry.Vars.*; + +public class Schematic implements Publishable, Comparable{ + public final Array tiles; + public StringMap tags; + public int width, height; + public @Nullable FileHandle file; + + public Schematic(Array tiles, StringMap tags, int width, int height){ + this.tiles = tiles; + this.tags = tags; + this.width = width; + this.height = height; + } + + public Array requirements(){ + IntIntMap amounts = new IntIntMap(); + + tiles.each(t -> { + for(ItemStack stack : t.block.requirements){ + amounts.getAndIncrement(stack.item.id, 0, stack.amount); + } + }); + Array stacks = new Array<>(); + for(Entry ent : amounts.entries()){ + stacks.add(new ItemStack(Vars.content.item(ent.key), ent.value)); + } + stacks.sort(); + return stacks; + } + + public String name(){ + return tags.get("name", "unknown"); + } + + public void save(){ + schematics.saveChanges(this); + } + + @Override + public String getSteamID(){ + return tags.get("steamid"); + } + + @Override + public void addSteamID(String id){ + tags.put("steamid", id); + save(); + } + + @Override + public void removeSteamID(){ + tags.remove("steamid"); + save(); + } + + @Override + public String steamTitle(){ + return name(); + } + + @Override + public String steamDescription(){ + return null; + } + + @Override + public String steamTag(){ + return "schematic"; + } + + @Override + public FileHandle createSteamFolder(String id){ + FileHandle directory = tmpDirectory.child("schematic_" + id).child("schematic." + schematicExtension); + file.copyTo(directory); + return directory; + } + + @Override + public FileHandle createSteamPreview(String id){ + FileHandle preview = tmpDirectory.child("schematic_preview_" + id + ".png"); + schematics.savePreview(this, preview); + return preview; + } + + @Override + public int compareTo(Schematic schematic){ + return name().compareTo(schematic.name()); + } + + public static class Stile{ + public @NonNull Block block; + public short x, y; + public int config; + public byte rotation; + + public Stile(Block block, int x, int y, int config, byte rotation){ + this.block = block; + this.x = (short)x; + this.y = (short)y; + this.config = config; + this.rotation = rotation; + } + } +} diff --git a/core/src/io/anuke/mindustry/game/Schematics.java b/core/src/io/anuke/mindustry/game/Schematics.java new file mode 100644 index 0000000000..9b1bda5470 --- /dev/null +++ b/core/src/io/anuke/mindustry/game/Schematics.java @@ -0,0 +1,406 @@ +package io.anuke.mindustry.game; + +import io.anuke.arc.*; +import io.anuke.arc.assets.*; +import io.anuke.arc.collection.*; +import io.anuke.arc.files.*; +import io.anuke.arc.graphics.*; +import io.anuke.arc.graphics.g2d.*; +import io.anuke.arc.graphics.glutils.*; +import io.anuke.arc.util.*; +import io.anuke.arc.util.io.Streams.*; +import io.anuke.arc.util.serialization.*; +import io.anuke.mindustry.*; +import io.anuke.mindustry.content.*; +import io.anuke.mindustry.entities.traits.BuilderTrait.*; +import io.anuke.mindustry.game.EventType.*; +import io.anuke.mindustry.game.Schematic.*; +import io.anuke.mindustry.input.*; +import io.anuke.mindustry.input.PlaceUtils.*; +import io.anuke.mindustry.type.*; +import io.anuke.mindustry.world.*; + +import java.io.*; +import java.util.zip.*; + +import static io.anuke.mindustry.Vars.*; + +/** Handles schematics.*/ +public class Schematics implements Loadable{ + private static final byte[] header = {'m', 's', 'c', 'h'}; + private static final byte version = 0; + + private static final int padding = 2; + private static final int resolution = 32; + + private OptimizedByteArrayOutputStream out = new OptimizedByteArrayOutputStream(1024); + private Array all = new Array<>(); + private OrderedMap previews = new OrderedMap<>(); + private FrameBuffer shadowBuffer; + + public Schematics(){ + Events.on(DisposeEvent.class, e -> { + previews.each((schem, m) -> m.dispose()); + previews.clear(); + shadowBuffer.dispose(); + }); + } + + @Override + public void loadSync(){ + load(); + } + + /** Load all schematics in the folder immediately.*/ + public void load(){ + all.clear(); + + for(FileHandle file : schematicDirectory.list()){ + loadFile(file); + } + + platform.getWorkshopContent(Schematic.class).each(this::loadFile); + + all.sort(); + + Core.app.post(() -> { + shadowBuffer = new FrameBuffer(maxSchematicSize + padding + 8, maxSchematicSize + padding + 8); + }); + } + + public void overwrite(Schematic target, Schematic newSchematic){ + if(previews.containsKey(target)){ + previews.get(target).dispose(); + previews.remove(target); + } + + target.tiles.clear(); + target.tiles.addAll(newSchematic.tiles); + newSchematic.tags.putAll(target.tags); + newSchematic.file = target.file; + + try{ + write(newSchematic, target.file); + }catch(Exception e){ + Log.err(e); + ui.showException(e); + } + } + + private void loadFile(FileHandle file){ + if(!file.extension().equals(schematicExtension)) return; + + try{ + Schematic s = read(file); + all.add(s); + + //external file from workshop + if(!s.file.parent().equals(schematicDirectory)){ + s.tags.put("steamid", s.file.parent().name()); + } + }catch(IOException e){ + Log.err(e); + } + } + + public Array all(){ + return all; + } + + public void saveChanges(Schematic s){ + if(s.file != null){ + try{ + write(s, s.file); + }catch(Exception e){ + ui.showException(e); + } + } + } + + public void savePreview(Schematic schematic, FileHandle file){ + FrameBuffer buffer = getBuffer(schematic); + Draw.flush(); + buffer.begin(); + Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(0, 0, buffer.getWidth(), buffer.getHeight()); + file.writePNG(pixmap); + buffer.end(); + } + + public Texture getPreview(Schematic schematic){ + return getBuffer(schematic).getTexture(); + } + + public boolean hasPreview(Schematic schematic){ + return previews.containsKey(schematic); + } + + public FrameBuffer getBuffer(Schematic schematic){ + if(!previews.containsKey(schematic)){ + Draw.blend(); + Draw.reset(); + Tmp.m1.set(Draw.proj()); + Tmp.m2.set(Draw.trans()); + FrameBuffer buffer = new FrameBuffer((schematic.width + padding) * resolution, (schematic.height + padding) * resolution); + + shadowBuffer.beginDraw(Color.clear); + + Draw.trans().idt(); + Draw.proj().setOrtho(0, 0, shadowBuffer.getWidth(), shadowBuffer.getHeight()); + + Draw.color(); + schematic.tiles.each(t -> { + int size = t.block.size; + int offsetx = -(size - 1) / 2; + int offsety = -(size - 1) / 2; + for(int dx = 0; dx < size; dx++){ + for(int dy = 0; dy < size; dy++){ + int wx = t.x + dx + offsetx; + int wy = t.y + dy + offsety; + Fill.square(padding/2f + wx + 0.5f, padding/2f + wy + 0.5f, 0.5f); + } + } + }); + + shadowBuffer.endDraw(); + + buffer.beginDraw(Color.clear); + + Draw.proj().setOrtho(0, buffer.getHeight(), buffer.getWidth(), -buffer.getHeight()); + + Tmp.tr1.set(shadowBuffer.getTexture(), 0, 0, schematic.width + padding, schematic.height + padding); + Draw.color(0f, 0f, 0f, 1f); + Draw.rect(Tmp.tr1, buffer.getWidth()/2f, buffer.getHeight()/2f, buffer.getWidth(), -buffer.getHeight()); + Draw.color(); + + Array requests = schematic.tiles.map(t -> new BuildRequest(t.x, t.y, t.rotation, t.block).configure(t.config)); + + Draw.flush(); + //scale each request to fit schematic + Draw.trans().scale(resolution / tilesize, resolution / tilesize).translate(tilesize*1.5f, tilesize*1.5f); + + //draw requests + requests.each(req -> { + req.animScale = 1f; + req.worldContext = false; + req.block.drawRequestRegion(req, requests::each); + }); + + requests.each(req -> req.block.drawRequestConfigTop(req, requests::each)); + + Draw.flush(); + Draw.trans().idt(); + + buffer.endDraw(); + + Draw.proj(Tmp.m1); + Draw.trans(Tmp.m2); + + previews.put(schematic, buffer); + } + + return previews.get(schematic); + } + + /** Creates an array of build requests from a schematic's data, centered on the provided x+y coordinates. */ + public Array toRequests(Schematic schem, int x, int y){ + return schem.tiles.map(t -> new BuildRequest(t.x + x - schem.width/2, t.y + y - schem.height/2, t.rotation, t.block).original(t.x, t.y, schem.width, schem.height).configure(t.config)).removeAll(s -> !s.block.isVisible()); + } + + /** Adds a schematic to the list, also copying it into the files.*/ + public void add(Schematic schematic){ + all.add(schematic); + try{ + FileHandle file = schematicDirectory.child(Time.millis() + "." + schematicExtension); + write(schematic, file); + schematic.file = file; + }catch(Exception e){ + ui.showException(e); + Log.err(e); + } + } + + public void remove(Schematic s){ + all.remove(s); + if(s.file != null){ + s.file.delete(); + } + + if(previews.containsKey(s)){ + previews.get(s).dispose(); + previews.remove(s); + } + } + + /** Creates a schematic from a world selection. */ + public Schematic create(int x, int y, int x2, int y2){ + NormalizeResult result = PlaceUtils.normalizeArea(x, y, x2, y2, 0, false, maxSchematicSize); + x = result.x; + y = result.y; + x2 = result.x2; + y2 = result.y2; + + int ox = x, oy = y, ox2 = x2, oy2 = y2; + + Array tiles = new Array<>(); + + int minx = x2, miny = y2, maxx = x, maxy = y; + boolean found = false; + for(int cx = x; cx <= x2; cx++){ + for(int cy = y; cy <= y2; cy++){ + Tile linked = world.ltile(cx, cy); + + if(linked != null && linked.entity != null && linked.entity.block.isVisible()){ + int top = linked.block().size/2; + int bot = linked.block().size % 2 == 1 ? -linked.block().size/2 : -(linked.block().size - 1)/2; + minx = Math.min(linked.x + bot, minx); + miny = Math.min(linked.y + bot, miny); + maxx = Math.max(linked.x + top, maxx); + maxy = Math.max(linked.y + top, maxy); + found = true; + } + } + } + + if(found){ + x = minx; + y = miny; + x2 = maxx; + y2 = maxy; + }else{ + return new Schematic(new Array<>(), new StringMap(), 1, 1); + } + + int width = x2 - x + 1, height = y2 - y + 1; + int offsetX = -x, offsetY = -y; + IntSet counted = new IntSet(); + for(int cx = ox; cx <= ox2; cx++){ + for(int cy = oy; cy <= oy2; cy++){ + Tile tile = world.ltile(cx, cy); + + if(tile != null && tile.entity != null && !counted.contains(tile.pos())){ + int config = tile.entity.config(); + if(tile.block().posConfig){ + config = Pos.get(Pos.x(config) + offsetX, Pos.y(config) + offsetY); + } + + tiles.add(new Stile(tile.block(), tile.x + offsetX, tile.y + offsetY, config, tile.rotation())); + counted.add(tile.pos()); + } + } + } + + return new Schematic(tiles, new StringMap(), width, height); + } + + /** Converts a schematic to base64. Note that the result of this will always start with 'bXNjaAB'.*/ + public String writeBase64(Schematic schematic){ + try{ + out.reset(); + write(schematic, out); + return new String(Base64Coder.encode(out.getBuffer(), out.size())); + }catch(IOException e){ + throw new RuntimeException(e); + } + } + + /** Loads a schematic from base64. May throw an exception. */ + public Schematic readBase64(String schematic) throws IOException{ + return read(new ByteArrayInputStream(Base64Coder.decode(schematic))); + } + + //region IO methods + + public static Schematic read(FileHandle file) throws IOException{ + Schematic s = read(new DataInputStream(file.read(1024))); + if(!s.tags.containsKey("name")){ + s.tags.put("name", file.nameWithoutExtension()); + } + s.file = file; + return s; + } + + public static Schematic read(InputStream input) throws IOException{ + for(byte b : header){ + if(input.read() != b){ + throw new IOException("Not a schematic file (missing header)."); + } + } + + int ver; + if((ver = input.read()) != version){ + throw new IOException("Unknown version: " + ver); + } + + try(DataInputStream stream = new DataInputStream(new InflaterInputStream(input))){ + short width = stream.readShort(), height = stream.readShort(); + + StringMap map = new StringMap(); + byte tags = stream.readByte(); + for(int i = 0; i < tags; i++){ + map.put(stream.readUTF(), stream.readUTF()); + } + + IntMap blocks = new IntMap<>(); + byte length = stream.readByte(); + for(int i = 0; i < length; i++){ + Block block = Vars.content.getByName(ContentType.block, stream.readUTF()); + blocks.put(i, block == null ? Blocks.air : block); + } + + int total = stream.readInt(); + Array tiles = new Array<>(total); + for(int i = 0; i < total; i++){ + Block block = blocks.get(stream.readByte()); + int position = stream.readInt(); + int config = stream.readInt(); + byte rotation = stream.readByte(); + if(block != Blocks.air){ + tiles.add(new Stile(block, Pos.x(position), Pos.y(position), config, rotation)); + } + } + + return new Schematic(tiles, map, width, height); + } + } + + public static void write(Schematic schematic, FileHandle file) throws IOException{ + write(schematic, file.write(false, 1024)); + } + + public static void write(Schematic schematic, OutputStream output) throws IOException{ + output.write(header); + output.write(version); + + try(DataOutputStream stream = new DataOutputStream(new DeflaterOutputStream(output))){ + + stream.writeShort(schematic.width); + stream.writeShort(schematic.height); + + stream.writeByte(schematic.tags.size); + for(ObjectMap.Entry e : schematic.tags.entries()){ + stream.writeUTF(e.key); + stream.writeUTF(e.value); + } + + OrderedSet blocks = new OrderedSet<>(); + schematic.tiles.each(t -> blocks.add(t.block)); + + //create dictionary + stream.writeByte(blocks.size); + for(int i = 0; i < blocks.size; i++){ + stream.writeUTF(blocks.orderedItems().get(i).name); + } + + stream.writeInt(schematic.tiles.size); + //write each tile + for(Stile tile : schematic.tiles){ + stream.writeByte(blocks.orderedItems().indexOf(tile.block)); + stream.writeInt(Pos.get(tile.x, tile.y)); + stream.writeInt(tile.config); + stream.writeByte(tile.rotation); + } + } + } + + //endregion +} diff --git a/core/src/io/anuke/mindustry/game/SpawnGroup.java b/core/src/io/anuke/mindustry/game/SpawnGroup.java index 4637ba4bfd..e799e26c40 100644 --- a/core/src/io/anuke/mindustry/game/SpawnGroup.java +++ b/core/src/io/anuke/mindustry/game/SpawnGroup.java @@ -3,6 +3,7 @@ package io.anuke.mindustry.game; import io.anuke.arc.util.serialization.Json; import io.anuke.arc.util.serialization.Json.Serializable; import io.anuke.arc.util.serialization.JsonValue; +import io.anuke.mindustry.content.*; import io.anuke.mindustry.entities.type.BaseUnit; import io.anuke.mindustry.type.*; @@ -84,6 +85,7 @@ public class SpawnGroup implements Serializable{ @Override public void read(Json json, JsonValue data){ type = content.getByName(ContentType.unit, data.getString("type", "dagger")); + if(type == null) type = UnitTypes.dagger; begin = data.getInt("begin", 0); end = data.getInt("end", never); spacing = data.getInt("spacing", 1); diff --git a/core/src/io/anuke/mindustry/game/Tutorial.java b/core/src/io/anuke/mindustry/game/Tutorial.java index 8eb8e9e054..3048561693 100644 --- a/core/src/io/anuke/mindustry/game/Tutorial.java +++ b/core/src/io/anuke/mindustry/game/Tutorial.java @@ -40,6 +40,12 @@ public class Tutorial{ Events.on(BlockInfoEvent.class, event -> events.add("blockinfo")); Events.on(DepositEvent.class, event -> events.add("deposit")); Events.on(WithdrawEvent.class, event -> events.add("withdraw")); + + Events.on(ClientLoadEvent.class, e -> { + for(TutorialStage stage : TutorialStage.values()){ + stage.load(); + } + }); } /** update tutorial state, transition if needed */ @@ -204,13 +210,17 @@ public class Tutorial{ /** displayed tutorial stage text.*/ public String text(){ if(sentences == null){ - this.line = Core.bundle.has("tutorial." + name() + ".mobile") && mobile ? "tutorial." + name() + ".mobile" : "tutorial." + name(); - this.sentences = Array.select(Core.bundle.get(line).split("\n"), s -> !s.isEmpty()); + load(); } String line = sentences.get(control.tutorial.sentence); return line.contains("{") ? text.get(line) : line; } + void load(){ + this.line = Core.bundle.has("tutorial." + name() + ".mobile") && mobile ? "tutorial." + name() + ".mobile" : "tutorial." + name(); + this.sentences = Array.select(Core.bundle.get(line).split("\n"), s -> !s.isEmpty()); + } + /** called every frame when this stage is active.*/ void update(){ diff --git a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java index 3b8306a353..009c88966f 100644 --- a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java @@ -9,10 +9,10 @@ import io.anuke.arc.graphics.glutils.*; import io.anuke.arc.math.*; import io.anuke.arc.util.*; import io.anuke.mindustry.content.*; -import io.anuke.mindustry.entities.type.base.*; import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.Teams.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import static io.anuke.arc.Core.camera; @@ -29,6 +29,7 @@ public class BlockRenderer implements Disposable{ private int lastCamX, lastCamY, lastRangeX, lastRangeY; private int requestidx = 0; private int iterateidx = 0; + private float brokenFade = 0f; private FrameBuffer shadows = new FrameBuffer(2, 2); private FrameBuffer fog = new FrameBuffer(2, 2); private Array outArray = new Array<>(); @@ -124,12 +125,18 @@ public class BlockRenderer implements Disposable{ } public void drawBroken(){ - if(unitGroups[player.getTeam().ordinal()].all().contains(p -> p instanceof BuilderDrone)){ + if(control.input.isPlacing() || control.input.isBreaking()){ + brokenFade = Mathf.lerpDelta(brokenFade, 1f, 0.1f); + }else{ + brokenFade = Mathf.lerpDelta(brokenFade, 0f, 0.1f); + } + + if(brokenFade > 0.001f){ for(BrokenBlock block : state.teams.get(player.getTeam()).brokenBlocks){ Block b = content.block(block.block); if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset(), block.y * tilesize + b.offset()))) continue; - Draw.alpha(0.5f); + Draw.alpha(0.53f * brokenFade); Draw.mixcol(Color.white, 0.2f + Mathf.absin(Time.globalTime(), 6f, 0.2f)); Draw.rect(b.icon(Cicon.full), block.x * tilesize + b.offset(), block.y * tilesize + b.offset(), b.rotate ? block.rotation * 90 : 0f); } diff --git a/core/src/io/anuke/mindustry/graphics/MenuRenderer.java b/core/src/io/anuke/mindustry/graphics/MenuRenderer.java index d6d3bcbd97..3efe543625 100644 --- a/core/src/io/anuke/mindustry/graphics/MenuRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/MenuRenderer.java @@ -14,8 +14,8 @@ import io.anuke.arc.util.noise.RidgedPerlin; import io.anuke.arc.util.noise.Simplex; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.content.UnitTypes; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.type.UnitType; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.Floor; import io.anuke.mindustry.world.blocks.OreBlock; diff --git a/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java b/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java index 92c8497b26..c997caae80 100644 --- a/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java @@ -9,10 +9,14 @@ 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.*; +import io.anuke.mindustry.content.TypeIDs; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.io.*; +import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.dialogs.*; import io.anuke.mindustry.world.*; import static io.anuke.mindustry.Vars.*; @@ -68,7 +72,7 @@ public class MinimapRenderer implements Disposable{ region = new TextureRegion(texture); } - public void drawEntities(float x, float y, float w, float h){ + public void drawEntities(float x, float y, float w, float h, boolean withLabels){ updateUnitArray(); float sz = baseSize * zoom; @@ -80,7 +84,17 @@ public class MinimapRenderer implements Disposable{ rect.set((dx - sz) * tilesize, (dy - sz) * tilesize, sz * 2 * tilesize, sz * 2 * tilesize); for(Unit unit : units){ - float rx = (unit.x - rect.x) / rect.width * w, ry = (unit.y - rect.y) / rect.width * h; + float rx = (unit.x - rect.x) / rect.width * w; + float ry = (unit.y - rect.y) / rect.width * h; + + if(withLabels && unit instanceof Player){ + Player pl = (Player) unit; + if(!pl.isLocal){ + // Only display names for other players. + drawLabel(x + rx, y + ry, pl.name, unit.getTeam().color); + } + } + Draw.color(unit.getTeam().color); Fill.rect(x + rx, y + ry, Scl.scl(baseSize / 2f), Scl.scl(baseSize / 2f)); } @@ -88,6 +102,10 @@ public class MinimapRenderer implements Disposable{ Draw.color(); } + public void drawEntities(float x, float y, float w, float h){ + drawEntities(x, y, w, h, true); + } + public TextureRegion getRegion(){ if(texture == null) return null; @@ -145,4 +163,27 @@ public class MinimapRenderer implements Disposable{ pixmap = null; } } + + public void drawLabel(float x, float y, String text, Color color){ + BitmapFont font = Fonts.outline; + GlyphLayout l = Pools.obtain(GlyphLayout.class, GlyphLayout::new); + boolean ints = font.usesIntegerPositions(); + font.getData().setScale(1 / 1.5f / Scl.scl(1f)); + font.setUseIntegerPositions(false); + + l.setText(font, text, color, 90f, Align.left, true); + float yOffset = 20f; + float margin = 3f; + + Draw.color(0f, 0f, 0f, 0.2f); + Fill.rect(x, y + yOffset - l.height/2f, l.width + margin, l.height + margin); + Draw.color(); + font.setColor(color); + font.draw(text, x - l.width/2f, y + yOffset, 90f, Align.left, true); + font.setUseIntegerPositions(ints); + + font.getData().setScale(1f); + + Pools.free(l); + } } diff --git a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java index 3c91d89a58..c9297a26a1 100644 --- a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java @@ -12,6 +12,7 @@ import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.game.*; import io.anuke.mindustry.input.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import static io.anuke.mindustry.Vars.*; diff --git a/core/src/io/anuke/mindustry/input/Binding.java b/core/src/io/anuke/mindustry/input/Binding.java index 90309b74ad..24421b26cd 100644 --- a/core/src/io/anuke/mindustry/input/Binding.java +++ b/core/src/io/anuke/mindustry/input/Binding.java @@ -18,9 +18,11 @@ public enum Binding implements KeyBind{ rotateplaced(KeyCode.R), diagonal_placement(KeyCode.CONTROL_LEFT), pick(KeyCode.MOUSE_MIDDLE), + schematic_select(KeyCode.F), + schematic_flip_x(KeyCode.Z), + schematic_flip_y(KeyCode.X), + schematic_menu(KeyCode.T), dash(KeyCode.SHIFT_LEFT), - gridMode(KeyCode.BACKTICK), - gridModeShift(KeyCode.ALT_LEFT), zoom_hold(KeyCode.CONTROL_LEFT, "view"), zoom(new Axis(KeyCode.SCROLL)), menu(Core.app.getType() == ApplicationType.Android ? KeyCode.BACK : KeyCode.ESCAPE), diff --git a/core/src/io/anuke/mindustry/input/DesktopInput.java b/core/src/io/anuke/mindustry/input/DesktopInput.java index 127d674ea4..b66bc7068f 100644 --- a/core/src/io/anuke/mindustry/input/DesktopInput.java +++ b/core/src/io/anuke/mindustry/input/DesktopInput.java @@ -6,11 +6,15 @@ import io.anuke.arc.Graphics.Cursor.*; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.*; import io.anuke.arc.scene.*; +import io.anuke.arc.scene.event.*; import io.anuke.arc.scene.ui.*; +import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.ArcAnnotate.*; +import io.anuke.mindustry.*; import io.anuke.mindustry.core.GameState.*; import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.game.EventType.*; +import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.ui.*; @@ -24,9 +28,9 @@ public class DesktopInput extends InputHandler{ /** Current cursor type. */ private Cursor cursorType = SystemCursor.arrow; /** Position where the player started dragging a line. */ - private int selectX, selectY; + private int selectX, selectY, schemX, schemY; /** Last known line positions.*/ - private int lastLineX, lastLineY; + private int lastLineX, lastLineY, schematicX, schematicY; /** Whether selecting mode is active. */ private PlaceMode mode; /** Animation scale for line. */ @@ -40,14 +44,48 @@ public class DesktopInput extends InputHandler{ public void buildUI(Group group){ group.fill(t -> { t.bottom().update(() -> t.getColor().a = Mathf.lerpDelta(t.getColor().a, player.isBuilding() ? 1f : 0f, 0.15f)); - t.visible(() -> Core.settings.getBool("hints")); + t.visible(() -> Core.settings.getBool("hints") && selectRequests.isEmpty()); + t.touchable(() -> t.getColor().a < 0.1f ? Touchable.disabled : Touchable.childrenOnly); t.table(Styles.black6, b -> { b.defaults().left(); b.label(() -> Core.bundle.format(!player.isBuilding ? "resumebuilding" : "pausebuilding", Core.keybinds.get(Binding.pause_building).key.name())).style(Styles.outlineLabel); b.row(); b.add(Core.bundle.format("cancelbuilding", Core.keybinds.get(Binding.clear_building).key.name())).style(Styles.outlineLabel); + b.row(); + b.add(Core.bundle.format("selectschematic", Core.keybinds.get(Binding.schematic_select).key.name())).style(Styles.outlineLabel); }).margin(10f); }); + + group.fill(t -> { + t.visible(() -> lastSchematic != null && !selectRequests.isEmpty()); + t.bottom(); + t.table(Styles.black6, b -> { + b.defaults().left(); + b.add(Core.bundle.format("schematic.flip", + Core.keybinds.get(Binding.schematic_flip_x).key.name(), + Core.keybinds.get(Binding.schematic_flip_y).key.name())).style(Styles.outlineLabel); + b.row(); + b.table(a -> { + a.addImageTextButton("$schematic.add", Icon.saveSmall, () -> { + ui.showTextInput("$schematic.add", "$name", "", text -> { + Schematic replacement = schematics.all().find(s -> s.name().equals(text)); + if(replacement != null){ + ui.showConfirm("$confirm", "$schematic.replace", () -> { + schematics.overwrite(replacement, lastSchematic); + ui.showInfoFade("$schematic.saved"); + ui.schematics.showInfo(replacement); + }); + }else{ + lastSchematic.tags.put("name", text); + schematics.add(lastSchematic); + ui.showInfoFade("$schematic.saved"); + ui.schematics.showInfo(lastSchematic); + } + }); + }).colspan(2).size(250f, 50f).disabled(f -> lastSchematic == null || lastSchematic.file != null); + }); + }).margin(6f); + }); } @Override @@ -66,7 +104,7 @@ public class DesktopInput extends InputHandler{ drawRequest(lineRequests.get(i)); } }else if(mode == breaking){ - drawSelection(selectX, selectY, cursorX, cursorY); + drawBreakSelection(selectX, selectY, cursorX, cursorY); }else if(isPlacing()){ if(block.rotate){ drawArrow(block, cursorX, cursorY, rotation); @@ -83,6 +121,12 @@ public class DesktopInput extends InputHandler{ } } + //draw schematic requests + for(BuildRequest request : selectRequests){ + request.animScale = 1f; + drawRequest(request); + } + if(sreq != null){ boolean valid = validPlace(sreq.x, sreq.y, sreq.block, sreq.rotation, sreq); if(sreq.block.rotate){ @@ -94,6 +138,10 @@ public class DesktopInput extends InputHandler{ drawSelected(sreq.x, sreq.y, sreq.block, getRequest(sreq.x, sreq.y, sreq.block.size, sreq) != null ? Pal.remove : Pal.accent); } + if(Core.input.keyDown(Binding.schematic_select)){ + drawSelection(schemX, schemY, cursorX, cursorY, Vars.maxSchematicSize); + } + Draw.reset(); } @@ -118,7 +166,7 @@ public class DesktopInput extends InputHandler{ if(state.is(State.menu) || Core.scene.hasDialog()) return; //zoom things - if(Math.abs(Core.input.axisTap(Binding.zoom)) > 0 && (Core.input.keyDown(Binding.zoom_hold))){ + if(Math.abs(Core.input.axisTap(Binding.zoom)) > 0 && Core.input.keyDown(Binding.zoom_hold)){ renderer.scaleCamera(Core.input.axisTap(Binding.zoom)); } @@ -134,6 +182,11 @@ public class DesktopInput extends InputHandler{ mode = none; } + if(mode != none){ + selectRequests.clear(); + lastSchematic = null; + } + if(player.isShooting && !canShoot()){ player.isShooting = false; } @@ -151,8 +204,12 @@ public class DesktopInput extends InputHandler{ sreq.rotation = Mathf.mod(sreq.rotation + (int)Core.input.axisTap(Binding.rotate), 4); } - if(Math.abs((int)Core.input.axisTap(Binding.rotate)) > 0 && isPlacing() && mode == placing){ - updateLine(selectX, selectY); + if(!Core.input.keyDown(Binding.zoom_hold) && Math.abs((int)Core.input.axisTap(Binding.rotate)) > 0){ + if(isPlacing() && mode == placing){ + updateLine(selectX, selectY); + }else if(!selectRequests.isEmpty()){ + rotateRequests(selectRequests, (int)Core.input.axisTap(Binding.rotate)); + } } Tile cursor = tileAt(Core.input.mouseX(), Core.input.mouseY()); @@ -162,7 +219,7 @@ public class DesktopInput extends InputHandler{ cursorType = cursor.block().getCursor(cursor); - if(isPlacing()){ + if(isPlacing() || !selectRequests.isEmpty()){ cursorType = SystemCursor.hand; } @@ -190,10 +247,52 @@ public class DesktopInput extends InputHandler{ cursorType = SystemCursor.arrow; } + @Override + public void useSchematic(Schematic schem){ + block = null; + schematicX = tileX(getMouseX()); + schematicY = tileY(getMouseY()); + + selectRequests.clear(); + selectRequests.addAll(schematics.toRequests(schem, schematicX, schematicY)); + mode = none; + } + + @Override + public boolean isBreaking(){ + return mode == breaking; + } + + @Override + public void buildPlacementUI(Table table){ + table.addImage().color(Pal.gray).height(4f).colspan(4).growX(); + table.row(); + table.left().margin(0f).defaults().size(48f).left(); + + table.addImageButton(Icon.wikiSmall, Styles.clearPartiali, () -> { + ui.schematics.show(); + }); + } + void pollInput(){ + if(scene.getKeyboardFocus() instanceof TextField) return; + Tile selected = tileAt(Core.input.mouseX(), Core.input.mouseY()); int cursorX = tileX(Core.input.mouseX()); int cursorY = tileY(Core.input.mouseY()); + int rawCursorX = world.toTile(Core.input.mouseWorld().x), rawCursorY = world.toTile(Core.input.mouseWorld().y); + + if(!selectRequests.isEmpty()){ + int shiftX = rawCursorX - schematicX, shiftY = rawCursorY - schematicY; + + selectRequests.each(s -> { + s.x += shiftX; + s.y += shiftY; + }); + + schematicX += shiftX; + schematicY += shiftY; + } if(Core.input.keyTap(Binding.deselect)){ player.setMineTile(null); @@ -203,6 +302,38 @@ public class DesktopInput extends InputHandler{ player.clearBuilding(); } + if(Core.input.keyTap(Binding.schematic_select)){ + schemX = rawCursorX; + schemY = rawCursorY; + } + + if(Core.input.keyTap(Binding.schematic_menu)){ + ui.schematics.show(); + } + + if(Core.input.keyTap(Binding.clear_building)){ + lastSchematic = null; + selectRequests.clear(); + } + + if(Core.input.keyRelease(Binding.schematic_select)){ + lastSchematic = schematics.create(schemX, schemY, rawCursorX, rawCursorY); + useSchematic(lastSchematic); + if(selectRequests.isEmpty()){ + lastSchematic = null; + } + } + + if(!selectRequests.isEmpty()){ + if(Core.input.keyTap(Binding.schematic_flip_x)){ + flipRequests(selectRequests, true); + } + + if(Core.input.keyTap(Binding.schematic_flip_y)){ + flipRequests(selectRequests, false); + } + } + if(sreq != null){ float offset = ((sreq.block.size + 2) % 2) * tilesize / 2f; float x = Core.input.mouseWorld().x + offset; @@ -228,7 +359,10 @@ public class DesktopInput extends InputHandler{ if(Core.input.keyTap(Binding.select) && !Core.scene.hasMouse()){ BuildRequest req = getRequest(cursorX, cursorY); - if(isPlacing()){ + if(!selectRequests.isEmpty()){ + flushRequests(selectRequests); + //selectRequests.clear(); + }else if(isPlacing()){ selectX = cursorX; selectY = cursorY; lastLineX = cursorX; @@ -324,6 +458,7 @@ public class DesktopInput extends InputHandler{ mode = none; block = null; sreq = null; + selectRequests.clear(); } } } diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index 84c0c8799f..9d38b20592 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -14,12 +14,14 @@ import io.anuke.arc.scene.*; import io.anuke.arc.scene.event.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; +import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.mindustry.content.*; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.effect.*; import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.game.EventType.*; +import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.Teams.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; @@ -28,6 +30,8 @@ import io.anuke.mindustry.net.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.fragments.*; import io.anuke.mindustry.world.*; +import io.anuke.mindustry.world.blocks.*; +import io.anuke.mindustry.world.blocks.BuildBlock.*; import java.util.*; @@ -51,6 +55,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public boolean droppingItem; public Group uiGroup; + protected @Nullable Schematic lastSchematic; protected GestureDetector detector; protected PlaceLine line = new PlaceLine(); protected BuildRequest resultreq; @@ -207,10 +212,15 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ if(request.breaking){ drawBreaking(request.x, request.y); }else{ - drawSelected(request.x, request.y, request.tile().block(), Pal.remove); + drawSelected(request.x, request.y, request.block, Pal.remove); } } + public boolean requestMatches(BuildRequest request){ + Tile tile = world.tile(request.x, request.y); + return tile != null && tile.block() instanceof BuildBlock && tile.entity().cblock == request.block; + } + public void drawBreaking(int x, int y){ Tile tile = world.ltile(x, y); if(tile == null) return; @@ -219,6 +229,76 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ drawSelected(x, y, block, Pal.remove); } + public void useSchematic(Schematic schem){ + selectRequests.addAll(schematics.toRequests(schem, world.toTile(player.x), world.toTile(player.y))); + } + + public void rotateRequests(Array requests, int direction){ + int ox = rawTileX(), oy = rawTileY(); + + requests.each(req -> { + //rotate config position + if(req.block.posConfig){ + int cx = Pos.x(req.config) - req.originalX, cy = Pos.y(req.config) - req.originalY; + int lx = cx; + + if(direction >= 0){ + cx = -cy; + cy = lx; + }else{ + cx = cy; + cy = -lx; + } + req.config = Pos.get(cx + req.originalX, cy + req.originalY); + } + + //rotate actual request, centered on its multiblock position + float wx = (req.x - ox) * tilesize + req.block.offset(), wy = (req.y - oy) * tilesize + req.block.offset(); + float x = wx; + if(direction >= 0){ + wx = -wy; + wy = x; + }else{ + wx = wy; + wy = -x; + } + req.x = world.toTile(wx - req.block.offset()) + ox; + req.y = world.toTile(wy - req.block.offset()) + oy; + req.rotation = Mathf.mod(req.rotation + direction, 4); + }); + } + + public void flipRequests(Array requests, boolean x){ + int origin = (x ? rawTileX() : rawTileY()) * tilesize; + + requests.each(req -> { + float value = -((x ? req.x : req.y) * tilesize - origin + req.block.offset()) + origin; + + if(x){ + req.x = (int)((value - req.block.offset()) / tilesize); + }else{ + req.y = (int)((value - req.block.offset()) / tilesize); + } + + if(req.block.posConfig){ + int corigin = x ? req.originalWidth/2 : req.originalHeight/2; + int nvalue = -((x ? Pos.x(req.config) : Pos.y(req.config)) - corigin) + corigin; + if(x){ + req.originalX = -(req.originalX - corigin) + corigin; + req.config = Pos.get(nvalue, Pos.y(req.config)); + }else{ + req.originalY = -(req.originalY - corigin) + corigin; + req.config = Pos.get(Pos.x(req.config), nvalue); + } + } + + //flip rotation + if(x == (req.rotation % 2 == 0)){ + req.rotation = Mathf.mod(req.rotation + 2, 4); + } + }); + } + /** Returns the selection request that overlaps this position, or null. */ protected BuildRequest getRequest(int x, int y){ return getRequest(x, y, 1, null); @@ -259,7 +339,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ return null; } - protected void drawSelection(int x1, int y1, int x2, int y2){ + protected void drawBreakSelection(int x1, int y1, int x2, int y2){ NormalizeDrawResult result = PlaceUtils.normalizeDrawArea(Blocks.air, x1, y1, x2, y2, false, maxLength, 1f); NormalizeResult dresult = PlaceUtils.normalizeArea(x1, y1, x2, y2, rotation, false, maxLength); @@ -307,10 +387,21 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ Lines.rect(result.x, result.y, result.x2 - result.x, result.y2 - result.y); } + protected void drawSelection(int x1, int y1, int x2, int y2, int maxLength){ + NormalizeDrawResult result = PlaceUtils.normalizeDrawArea(Blocks.air, x1, y1, x2, y2, false, maxLength, 1f); + + Lines.stroke(2f); + + Draw.color(Pal.accentBack); + Lines.rect(result.x, result.y - 1, result.x2 - result.x, result.y2 - result.y); + Draw.color(Pal.accent); + Lines.rect(result.x, result.y, result.x2 - result.x, result.y2 - result.y); + } + protected void flushSelectRequests(Array requests){ for(BuildRequest req : requests){ if(req.block != null && validPlace(req.x, req.y, req.block, req.rotation)){ - selectRequests.add(req); + selectRequests.add(req.copy()); } } } @@ -318,7 +409,11 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ protected void flushRequests(Array requests){ for(BuildRequest req : requests){ if(req.block != null && validPlace(req.x, req.y, req.block, req.rotation)){ - player.addBuildRequest(req); + BuildRequest copy = req.copy(); + if(copy.hasConfig && copy.block.posConfig){ + copy.config = Pos.get(Pos.x(copy.config) + copy.x - copy.originalX, Pos.y(copy.config) + copy.y - copy.originalY); + } + player.addBuildRequest(copy); } } } @@ -448,14 +543,6 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } } - /* - //clear when the player taps on something else - if(!consumed && !mobile && player.isBuilding() && block == null){ - //player.clearBuilding(); - block = null; - return true; - }*/ - if(!showedInventory){ frag.inv.hide(); } @@ -499,6 +586,14 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ return world.tile(tileX(x), tileY(y)); } + int rawTileX(){ + return world.toTile(Core.input.mouseWorld().x); + } + + int rawTileY(){ + return world.toTile(Core.input.mouseWorld().y); + } + int tileX(float cursorX){ Vector2 vec = Core.input.mouseWorld(cursorX, 0); if(selectedBlock()){ @@ -523,6 +618,10 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ return block != null; } + public boolean isBreaking(){ + return false; + } + public float mouseAngle(float x, float y){ return Core.input.mouseWorld(getMouseX(), getMouseY()).sub(x, y).angle(); } @@ -616,7 +715,11 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public boolean validPlace(int x, int y, Block type, int rotation, BuildRequest ignore){ for(BuildRequest req : player.buildQueue()){ - if(req != ignore && !req.breaking && req.block.bounds(req.x, req.y, Tmp.r1).overlaps(type.bounds(x, y, Tmp.r2))){ + if(req != ignore + && !req.breaking + && req.block.bounds(req.x, req.y, Tmp.r1).overlaps(type.bounds(x, y, Tmp.r2)) + && !(type.canReplace(req.block) && Tmp.r1.equals(Tmp.r2)) + ){ return false; } } @@ -628,6 +731,10 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } public void placeBlock(int x, int y, Block block, int rotation){ + BuildRequest req = getRequest(x, y); + if(req != null){ + player.buildQueue().remove(req); + } player.addBuildRequest(new BuildRequest(x, y, rotation, block)); } diff --git a/core/src/io/anuke/mindustry/input/MobileInput.java b/core/src/io/anuke/mindustry/input/MobileInput.java index 7cc5159b55..692a5f505c 100644 --- a/core/src/io/anuke/mindustry/input/MobileInput.java +++ b/core/src/io/anuke/mindustry/input/MobileInput.java @@ -208,7 +208,7 @@ public class MobileInput extends InputHandler implements GestureListener{ } //move all current requests to removal array so they fade out - removals.addAll(selectRequests.find(r -> !r.breaking)); + removals.addAll(selectRequests.select(r -> !r.breaking)); selectRequests.clear(); selecting = false; }).visible(() -> !selectRequests.isEmpty()).name("confirmplace"); @@ -243,7 +243,6 @@ public class MobileInput extends InputHandler implements GestureListener{ if(tile == null) continue; request.animScale = Mathf.lerpDelta(request.animScale, 0f, 0.2f); - request.animInvalid = Mathf.lerpDelta(request.animInvalid, 0f, 0.2f); if(request.breaking){ drawSelected(request.x, request.y, tile.block(), Pal.remove); @@ -263,10 +262,8 @@ public class MobileInput extends InputHandler implements GestureListener{ if((!request.breaking && validPlace(tile.x, tile.y, request.block, request.rotation)) || (request.breaking && validBreak(tile.x, tile.y))){ request.animScale = Mathf.lerpDelta(request.animScale, 1f, 0.2f); - request.animInvalid = Mathf.lerpDelta(request.animInvalid, 0f, 0.2f); }else{ request.animScale = Mathf.lerpDelta(request.animScale, 0.6f, 0.1f); - request.animInvalid = Mathf.lerpDelta(request.animInvalid, 0.9f, 0.2f); } Tmp.c1.set(Draw.getMixColor()); @@ -305,7 +302,7 @@ public class MobileInput extends InputHandler implements GestureListener{ drawRequest(lineRequests.get(i)); } }else if(mode == breaking){ - drawSelection(lineStartX, lineStartY, tileX, tileY); + drawBreakSelection(lineStartX, lineStartY, tileX, tileY); } } @@ -340,7 +337,7 @@ public class MobileInput extends InputHandler implements GestureListener{ if(request.breaking){ drawSelected(request.x, request.y, request.tile().block(), Pal.remove); }else{ - drawRequest(request.x, request.y, request.block, request.rotation); + request.block.drawRequest(request, allRequests(), validPlace(request.x, request.y, request.block, request.rotation)); drawSelected(request.x, request.y, request.block, Pal.accent); } } @@ -348,6 +345,11 @@ public class MobileInput extends InputHandler implements GestureListener{ //endregion //region input events + @Override + public boolean isBreaking(){ + return mode == breaking; + } + @Override public boolean touchDown(int screenX, int screenY, int pointer, KeyCode button){ if(state.is(State.menu) || player.isDead()) return false; diff --git a/core/src/io/anuke/mindustry/input/PlaceMode.java b/core/src/io/anuke/mindustry/input/PlaceMode.java index 8eb6bb5105..5ac66c5220 100644 --- a/core/src/io/anuke/mindustry/input/PlaceMode.java +++ b/core/src/io/anuke/mindustry/input/PlaceMode.java @@ -1,5 +1,5 @@ package io.anuke.mindustry.input; enum PlaceMode{ - none, breaking, placing + none, breaking, placing, schematicSelect } diff --git a/core/src/io/anuke/mindustry/input/PlaceUtils.java b/core/src/io/anuke/mindustry/input/PlaceUtils.java index 52e06e518b..79a358e286 100644 --- a/core/src/io/anuke/mindustry/input/PlaceUtils.java +++ b/core/src/io/anuke/mindustry/input/PlaceUtils.java @@ -95,14 +95,14 @@ public class PlaceUtils{ }else{ endx = tilex; } + } - if(Math.abs(endx - tilex) > maxLength){ - endx = Mathf.sign(endx - tilex) * maxLength + tilex; - } + if(Math.abs(endx - tilex) > maxLength){ + endx = Mathf.sign(endx - tilex) * maxLength + tilex; + } - if(Math.abs(endy - tiley) > maxLength){ - endy = Mathf.sign(endy - tiley) * maxLength + tiley; - } + if(Math.abs(endy - tiley) > maxLength){ + endy = Mathf.sign(endy - tiley) * maxLength + tiley; } int dx = endx - tilex, dy = endy - tiley; @@ -141,12 +141,12 @@ public class PlaceUtils{ return result; } - static class NormalizeDrawResult{ + public static class NormalizeDrawResult{ float x, y, x2, y2; } - static class NormalizeResult{ - int x, y, x2, y2, rotation; + public static class NormalizeResult{ + public int x, y, x2, y2, rotation; boolean isX(){ return Math.abs(x2 - x) > Math.abs(y2 - y); diff --git a/core/src/io/anuke/mindustry/io/JsonIO.java b/core/src/io/anuke/mindustry/io/JsonIO.java index 7e0b8f640c..4dc253672b 100644 --- a/core/src/io/anuke/mindustry/io/JsonIO.java +++ b/core/src/io/anuke/mindustry/io/JsonIO.java @@ -4,16 +4,32 @@ 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.ctype.MappableContent; import io.anuke.mindustry.game.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.world.*; +import java.io.*; + @SuppressWarnings("unchecked") public class JsonIO{ private static CustomJson jsonBase = new CustomJson(); - private static Json json = new Json(){{ - apply(this); - }}; + private static Json json = new Json(){ + { apply(this); } + + @Override + public void writeValue(Object value, Class knownType, Class elementType){ + if(value instanceof io.anuke.mindustry.ctype.MappableContent){ + try{ + getWriter().value(((MappableContent)value).name); + }catch(IOException e){ + throw new RuntimeException(e); + } + }else{ + super.writeValue(value, knownType, elementType); + } + } + }; public static String write(Object object){ return json.toJson(object, object.getClass()); @@ -66,24 +82,6 @@ public class JsonIO{ } }); - //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(){ - @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(Block.class, new Serializer(){ @Override public void write(Json json, Block object, Class knownType){ @@ -96,26 +94,6 @@ public class JsonIO{ } }); - /* - json.setSerializer(TeamData.class, new Serializer(){ - @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 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(){ @Override public void write(Json json, ItemStack object, Class knownType){ diff --git a/core/src/io/anuke/mindustry/io/MapIO.java b/core/src/io/anuke/mindustry/io/MapIO.java index 7d14c210d9..da24c1d8d7 100644 --- a/core/src/io/anuke/mindustry/io/MapIO.java +++ b/core/src/io/anuke/mindustry/io/MapIO.java @@ -6,6 +6,7 @@ import io.anuke.arc.graphics.*; import io.anuke.arc.graphics.Pixmap.*; import io.anuke.arc.util.io.*; import io.anuke.mindustry.content.*; +import io.anuke.mindustry.core.*; import io.anuke.mindustry.game.*; import io.anuke.mindustry.maps.*; import io.anuke.mindustry.world.*; diff --git a/core/src/io/anuke/mindustry/io/SaveVersion.java b/core/src/io/anuke/mindustry/io/SaveVersion.java index f1fceb5ce3..b02fc92fa7 100644 --- a/core/src/io/anuke/mindustry/io/SaveVersion.java +++ b/core/src/io/anuke/mindustry/io/SaveVersion.java @@ -3,6 +3,8 @@ package io.anuke.mindustry.io; import io.anuke.arc.collection.*; import io.anuke.arc.util.*; import io.anuke.arc.util.io.*; +import io.anuke.mindustry.core.*; +import io.anuke.mindustry.ctype.*; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.traits.*; import io.anuke.mindustry.game.*; diff --git a/core/src/io/anuke/mindustry/io/TypeIO.java b/core/src/io/anuke/mindustry/io/TypeIO.java index 1d17e0bc44..87dc8d5766 100644 --- a/core/src/io/anuke/mindustry/io/TypeIO.java +++ b/core/src/io/anuke/mindustry/io/TypeIO.java @@ -11,7 +11,7 @@ import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest; import io.anuke.mindustry.entities.traits.ShooterTrait; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.entities.units.*; -import io.anuke.mindustry.game.Team; +import io.anuke.mindustry.game.*; import io.anuke.mindustry.net.Administration.TraceInfo; import io.anuke.mindustry.net.Packets.AdminAction; import io.anuke.mindustry.net.Packets.KickReason; @@ -167,6 +167,25 @@ public class TypeIO{ return KickReason.values()[buffer.get()]; } + @WriteClass(Rules.class) + public static void writeRules(ByteBuffer buffer, Rules rules){ + String string = JsonIO.write(rules); + byte[] bytes = string.getBytes(charset); + buffer.putInt(bytes.length); + buffer.put(bytes); + + writeString(buffer, JsonIO.write(rules)); + } + + @ReadClass(Rules.class) + public static Rules readRules(ByteBuffer buffer){ + int length = buffer.getInt(); + byte[] bytes = new byte[length]; + buffer.get(length); + String string = new String(bytes, charset); + return JsonIO.read(Rules.class, string); + } + @WriteClass(Team.class) public static void writeTeam(ByteBuffer buffer, Team reason){ buffer.put((byte)reason.ordinal()); diff --git a/core/src/io/anuke/mindustry/io/versions/Save2.java b/core/src/io/anuke/mindustry/io/versions/Save2.java index 4fb9954b0c..65c531c66e 100644 --- a/core/src/io/anuke/mindustry/io/versions/Save2.java +++ b/core/src/io/anuke/mindustry/io/versions/Save2.java @@ -1,9 +1,9 @@ package io.anuke.mindustry.io.versions; import io.anuke.mindustry.entities.traits.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.io.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.type.TypeID; import java.io.*; diff --git a/core/src/io/anuke/mindustry/maps/Map.java b/core/src/io/anuke/mindustry/maps/Map.java index 94fa841f08..378f3c8ff6 100644 --- a/core/src/io/anuke/mindustry/maps/Map.java +++ b/core/src/io/anuke/mindustry/maps/Map.java @@ -4,14 +4,17 @@ import io.anuke.arc.*; import io.anuke.arc.collection.*; import io.anuke.arc.files.*; import io.anuke.arc.graphics.*; +import io.anuke.arc.util.*; import io.anuke.mindustry.*; +import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.*; import io.anuke.mindustry.io.*; import io.anuke.mindustry.maps.filters.*; +import io.anuke.mindustry.type.*; -import static io.anuke.mindustry.Vars.maps; +import static io.anuke.mindustry.Vars.*; -public class Map implements Comparable{ +public class Map implements Comparable, Publishable{ /** Whether this is a custom map. */ public final boolean custom; /** Metadata. Author description, display name, etc. */ @@ -131,6 +134,76 @@ public class Map implements Comparable{ return tags.containsKey(name); } + @Override + public String getSteamID(){ + return tags.get("steamid"); + } + + @Override + public void addSteamID(String id){ + tags.put("steamid", id); + + ui.editor.editor.getTags().put("steamid", id); + try{ + ui.editor.save(); + }catch(Exception e){ + Log.err(e); + } + Events.fire(new MapPublishEvent()); + } + + @Override + public void removeSteamID(){ + tags.remove("steamid"); + + ui.editor.editor.getTags().remove("steamid"); + try{ + ui.editor.save(); + }catch(Exception e){ + Log.err(e); + } + } + + @Override + public String steamTitle(){ + return name(); + } + + @Override + public String steamDescription(){ + return description(); + } + + @Override + public String steamTag(){ + return "map"; + } + + @Override + public FileHandle createSteamFolder(String id){ + return null; + } + + @Override + public FileHandle createSteamPreview(String id){ + return null; + } + + @Override + public Array extraTags(){ + Gamemode mode = Gamemode.attack.valid(this) ? Gamemode.attack : Gamemode.survival; + return Array.with(mode.name()); + } + + @Override + public boolean prePublish(){ + tags.put("author", player.name); + ui.editor.editor.getTags().put("author", tags.get("author")); + ui.editor.save(); + + return true; + } + @Override public int compareTo(Map map){ int work = -Boolean.compare(workshop, map.workshop); diff --git a/core/src/io/anuke/mindustry/maps/MapPreviewLoader.java b/core/src/io/anuke/mindustry/maps/MapPreviewLoader.java index da229addce..ad0afea0e2 100644 --- a/core/src/io/anuke/mindustry/maps/MapPreviewLoader.java +++ b/core/src/io/anuke/mindustry/maps/MapPreviewLoader.java @@ -8,7 +8,7 @@ import io.anuke.arc.files.*; import io.anuke.arc.graphics.*; import io.anuke.arc.util.*; import io.anuke.mindustry.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.ctype.Content; public class MapPreviewLoader extends TextureLoader{ diff --git a/core/src/io/anuke/mindustry/maps/Maps.java b/core/src/io/anuke/mindustry/maps/Maps.java index 72d1b17b77..6c16abfa1e 100644 --- a/core/src/io/anuke/mindustry/maps/Maps.java +++ b/core/src/io/anuke/mindustry/maps/Maps.java @@ -13,6 +13,7 @@ import io.anuke.arc.util.async.*; import io.anuke.arc.util.io.*; import io.anuke.arc.util.serialization.*; import io.anuke.mindustry.content.*; +import io.anuke.mindustry.ctype.Content; import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.io.*; @@ -104,7 +105,7 @@ public class Maps{ } //workshop - for(FileHandle file : platform.getExternalMaps()){ + for(FileHandle file : platform.getWorkshopContent(Map.class)){ try{ Map map = loadMap(file, false); map.workshop = true; diff --git a/core/src/io/anuke/mindustry/maps/filters/FilterOption.java b/core/src/io/anuke/mindustry/maps/filters/FilterOption.java index 038819b122..b66d972465 100644 --- a/core/src/io/anuke/mindustry/maps/filters/FilterOption.java +++ b/core/src/io/anuke/mindustry/maps/filters/FilterOption.java @@ -8,7 +8,7 @@ import io.anuke.arc.scene.ui.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.mindustry.*; import io.anuke.mindustry.content.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.ui.dialogs.*; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; @@ -16,12 +16,12 @@ import io.anuke.mindustry.world.blocks.*; import static io.anuke.mindustry.Vars.updateEditorOnChange; public abstract class FilterOption{ - public static final Predicate floorsOnly = b -> (b instanceof Floor && !(b instanceof OverlayFloor)) && Core.atlas.isFound(b.icon(Cicon.full)); - public static final Predicate wallsOnly = b -> (!b.synthetic() && !(b instanceof Floor)) && Core.atlas.isFound(b.icon(Cicon.full)); - public static final Predicate floorsOptional = b -> b == Blocks.air || ((b instanceof Floor && !(b instanceof OverlayFloor)) && Core.atlas.isFound(b.icon(Cicon.full))); - public static final Predicate wallsOptional = b -> b == Blocks.air || ((!b.synthetic() && !(b instanceof Floor)) && Core.atlas.isFound(b.icon(Cicon.full))); - public static final Predicate wallsOresOptional = b -> b == Blocks.air || (((!b.synthetic() && !(b instanceof Floor)) || (b instanceof OverlayFloor)) && Core.atlas.isFound(b.icon(Cicon.full))); - public static final Predicate oresOnly = b -> b instanceof OverlayFloor && Core.atlas.isFound(b.icon(Cicon.full)); + public static final Predicate floorsOnly = b -> (b instanceof Floor && !(b instanceof OverlayFloor)) && Core.atlas.isFound(b.icon(io.anuke.mindustry.ui.Cicon.full)); + public static final Predicate wallsOnly = b -> (!b.synthetic() && !(b instanceof Floor)) && Core.atlas.isFound(b.icon(io.anuke.mindustry.ui.Cicon.full)); + public static final Predicate floorsOptional = b -> b == Blocks.air || ((b instanceof Floor && !(b instanceof OverlayFloor)) && Core.atlas.isFound(b.icon(io.anuke.mindustry.ui.Cicon.full))); + public static final Predicate wallsOptional = b -> b == Blocks.air || ((!b.synthetic() && !(b instanceof Floor)) && Core.atlas.isFound(b.icon(io.anuke.mindustry.ui.Cicon.full))); + public static final Predicate wallsOresOptional = b -> b == Blocks.air || (((!b.synthetic() && !(b instanceof Floor)) || (b instanceof OverlayFloor)) && Core.atlas.isFound(b.icon(io.anuke.mindustry.ui.Cicon.full))); + public static final Predicate oresOnly = b -> b instanceof OverlayFloor && Core.atlas.isFound(b.icon(io.anuke.mindustry.ui.Cicon.full)); public static final Predicate anyOptional = b -> floorsOnly.test(b) || wallsOnly.test(b) || oresOnly.test(b) || b == Blocks.air; public abstract void build(Table table); @@ -76,8 +76,8 @@ public abstract class FilterOption{ @Override public void build(Table table){ - table.addButton(b -> b.addImage(supplier.get().icon(Cicon.small)).update(i -> ((TextureRegionDrawable)i.getDrawable()) - .setRegion(supplier.get() == Blocks.air ? Core.atlas.find("icon-none") : supplier.get().icon(Cicon.small))).size(8 * 3), () -> { + table.addButton(b -> b.addImage(supplier.get().icon(io.anuke.mindustry.ui.Cicon.small)).update(i -> ((TextureRegionDrawable)i.getDrawable()) + .setRegion(supplier.get() == Blocks.air ? Core.atlas.find("icon-none") : supplier.get().icon(io.anuke.mindustry.ui.Cicon.small))).size(8 * 3), () -> { FloatingDialog dialog = new FloatingDialog(""); dialog.setFillParent(false); int i = 0; diff --git a/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java b/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java index 08092e7fdb..8c7da50621 100644 --- a/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java +++ b/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java @@ -39,6 +39,9 @@ public class MapGenerator extends Generator{ this.decorations.addAll(decor); return this; } + public void removePrefix(String name){ + this.mapName = this.mapName.substring(name.length() + 1); + } { decor(new Decoration(Blocks.snow, Blocks.snowrock, 0.01), new Decoration(Blocks.ignarock, Blocks.pebbles, 0.03f)); diff --git a/core/src/io/anuke/mindustry/mod/ContentParser.java b/core/src/io/anuke/mindustry/mod/ContentParser.java index 0e1c729b60..dee6e8b32c 100644 --- a/core/src/io/anuke/mindustry/mod/ContentParser.java +++ b/core/src/io/anuke/mindustry/mod/ContentParser.java @@ -2,6 +2,7 @@ package io.anuke.mindustry.mod; import io.anuke.arc.*; import io.anuke.arc.audio.*; +import io.anuke.arc.audio.mock.*; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.*; import io.anuke.arc.files.*; @@ -15,6 +16,8 @@ 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.content.TechTree.*; +import io.anuke.mindustry.ctype.*; import io.anuke.mindustry.entities.Effects.*; import io.anuke.mindustry.entities.bullet.*; import io.anuke.mindustry.entities.type.*; @@ -25,6 +28,7 @@ import io.anuke.mindustry.mod.Mods.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.consumers.*; +import io.anuke.mindustry.world.meta.*; import java.lang.reflect.*; @@ -33,34 +37,31 @@ public class ContentParser{ private static final boolean ignoreUnknownFields = true; private ObjectMap, ContentType> contentTypes = new ObjectMap<>(); private ObjectMap, FieldParser> classParsers = new ObjectMap, FieldParser>(){{ - put(BulletType.class, (type, data) -> field(Bullets.class, data)); put(Effect.class, (type, data) -> field(Fx.class, data)); put(StatusEffect.class, (type, data) -> field(StatusEffects.class, data)); put(Loadout.class, (type, data) -> field(Loadouts.class, data)); put(Color.class, (type, data) -> Color.valueOf(data.asString())); put(BulletType.class, (type, data) -> { - Class bc = data.has("type") ? resolve(data.getString("type"), "io.anuke.mindustry.entities.bullets") : BasicBulletType.class; + if(data.isString()){ + return field(Bullets.class, data); + } + Class bc = data.has("type") ? resolve(data.getString("type"), "io.anuke.mindustry.entities.bullet") : BasicBulletType.class; data.remove("type"); BulletType result = make(bc); readFields(result, data); return result; }); - put(Music.class, (type, data) -> { - if(fieldOpt(Musics.class, data) != null) return fieldOpt(Musics.class, data); - - String path = "music/" + data.asString() + (Vars.ios ? ".mp3" : ".ogg"); - Core.assets.load(path, Music.class); - Core.assets.finishLoadingAsset(path); - return Core.assets.get(path); - }); put(Sound.class, (type, data) -> { if(fieldOpt(Sounds.class, data) != null) return fieldOpt(Sounds.class, data); + if(Vars.headless) return new MockSound(); - String path = "sounds/" + data.asString() + (Vars.ios ? ".mp3" : ".ogg"); - Core.assets.load(path, Sound.class); - Core.assets.finishLoadingAsset(path); - Log.info(Core.assets.get(path)); - return Core.assets.get(path); + String name = "sounds/" + data.asString(); + String path = Vars.tree.get(name + ".ogg").exists() && !Vars.ios ? name + ".ogg" : name + ".mp3"; + ModLoadingSound sound = new ModLoadingSound(); + Core.assets.load(path, Sound.class).loaded = result -> { + sound.sound = (Sound)result; + }; + return sound; }); put(Objective.class, (type, data) -> { Class oc = data.has("type") ? resolve(data.getString("type"), "io.anuke.mindustry.game.Objectives") : ZoneWave.class; @@ -69,16 +70,30 @@ public class ContentParser{ readFields(obj, data); return obj; }); + put(Weapon.class, (type, data) -> { + Weapon weapon = new Weapon(); + readFields(weapon, data); + weapon.name = currentMod.name + "-" + weapon.name; + return weapon; + }); }}; /** Stores things that need to be parsed fully, e.g. reading fields of content. * This is done to accomodate binding of content names first.*/ private Array reads = new Array<>(); + private Array postreads = new Array<>(); + private ObjectSet toBeParsed = new ObjectSet<>(); private LoadedMod currentMod; private Content currentContent; private Json parser = new Json(){ @Override public T readValue(Class type, Class elementType, JsonValue jsonData, Class keyType){ + T t = internalRead(type, elementType, jsonData, keyType); + if(t != null) checkNullFields(t); + return t; + } + + private T internalRead(Class type, Class elementType, JsonValue jsonData, Class keyType){ if(type != null){ if(classParsers.containsKey(type)){ try{ @@ -114,11 +129,11 @@ public class ContentParser{ block = Vars.content.getByName(ContentType.block, name); if(value.has("type")){ - throw new IllegalArgumentException("When overwriting an existing block, you must not re-declared its type. The original type will be used. Block: " + name); + throw new IllegalArgumentException("When overwriting an existing block, you must not re-declare its type. The original type will be used. Block: " + name); } }else{ //TODO generate dynamically instead of doing.. this - Class type = resolve(value.getString("type"), + Class type = resolve(getType(value), "io.anuke.mindustry.world", "io.anuke.mindustry.world.blocks", "io.anuke.mindustry.world.blocks.defense", @@ -136,6 +151,15 @@ public class ContentParser{ } currentContent = block; + + String[] research = {null}; + + //add research tech node + if(value.has("research")){ + research[0] = value.get("research").asString(); + value.remove("research"); + } + read(() -> { if(value.has("consumes")){ for(JsonValue child : value.get("consumes")){ @@ -163,13 +187,21 @@ public class ContentParser{ readFields(block, value, true); //add research tech node - if(value.has("research")){ - TechTree.create(find(ContentType.block, value.get("research").asString()), block); + if(research[0] != null){ + Block parent = find(ContentType.block, research[0]); + TechNode baseNode = TechTree.create(parent, block); + + postreads.add(() -> { + TechNode parnode = TechTree.all.find(t -> t.block == parent); + if(!parnode.children.contains(baseNode)){ + parnode.children.add(baseNode); + } + }); } - //make block visible - if(value.has("requirements")){ - block.buildVisibility = () -> true; + //make block visible by default if there are requirements and no visibility set + if(value.has("requirements") && block.buildVisibility == BuildVisibility.hidden){ + block.buildVisibility = BuildVisibility.shown; } }); @@ -178,7 +210,7 @@ public class ContentParser{ ContentType.unit, (TypeParser)(mod, name, value) -> { readBundle(ContentType.unit, name, value); - Class type = resolve(value.getString("type"), "io.anuke.mindustry.entities.type.base"); + Class type = resolve(getType(value), "io.anuke.mindustry.entities.type.base"); UnitType unit = new UnitType(mod + "-" + name, supply(type)); currentContent = unit; read(() -> readFields(unit, value, true)); @@ -191,6 +223,18 @@ public class ContentParser{ ContentType.zone, parser(ContentType.zone, Zone::new) ); + private String getString(JsonValue value, String key){ + if(value.has(key)){ + return value.getString(key); + }else{ + throw new IllegalArgumentException((currentContent == null ? "" : currentContent.sourceFile + ": ") + "You are missing a \"" + key + "\". It must be added before the file can be parsed."); + } + } + + private String getType(JsonValue value){ + return getString(value, "type"); + } + private T find(ContentType type, String name){ Content c = Vars.content.getByName(type, name); if(c == null) c = Vars.content.getByName(type, currentMod.name + "-" + name); @@ -264,10 +308,13 @@ public class ContentParser{ public void finishParsing(){ try{ reads.each(Runnable::run); + postreads.each(Runnable::run); }catch(Exception e){ Vars.mods.handleError(new ModLoadException("Error occurred parsing content: " + currentContent, currentContent, e), currentMod); } reads.clear(); + postreads.clear(); + toBeParsed.clear(); } /** @@ -291,11 +338,11 @@ public class ContentParser{ currentMod = mod; boolean exists = Vars.content.getByName(type, name) != null; Content c = parsers.get(type).parse(mod.name, name, value); + toBeParsed.add(c); if(!exists){ c.sourceFile = file; c.mod = mod; } - checkNulls(c); return c; } @@ -351,35 +398,21 @@ public class ContentParser{ private Object fieldOpt(Class type, JsonValue value){ try{ - Object b = type.getField(value.asString()).get(null); - if(b == null) return null; - return b; + return type.getField(value.asString()).get(null); }catch(Exception e){ return null; } } - /** Checks all @NonNull fields in this object, recursively. - * Throws an exception if any are null.*/ - private void checkNulls(Object object){ - checkNulls(object, new ObjectSet<>()); - } - - private void checkNulls(Object object, ObjectSet checked){ - checked.add(object); + private void checkNullFields(Object object){ + if(object instanceof Number || object instanceof String || toBeParsed.contains(object)) return; parser.getFields(object.getClass()).values().toArray().each(field -> { try{ if(field.field.getType().isPrimitive()) return; - Object obj = field.field.get(object); if(field.field.isAnnotationPresent(NonNull.class) && field.field.get(object) == null){ - throw new RuntimeException("Field '" + field.field.getName() + "' in " + object.getClass().getSimpleName() + " is missing!"); - } - - if(obj != null && !checked.contains(obj)){ - checkNulls(obj, checked); - checked.add(obj); + throw new RuntimeException("'" + field.field.getName() + "' in " + object.getClass().getSimpleName() + " is missing!"); } }catch(Exception e){ throw new RuntimeException(e); @@ -393,15 +426,14 @@ public class ContentParser{ } private void readFields(Object object, JsonValue jsonMap){ + toBeParsed.remove(object); Class type = object.getClass(); ObjectMap fields = parser.getFields(type); for(JsonValue child = jsonMap.child; child != null; child = child.next){ FieldMetadata metadata = fields.get(child.name().replace(" ", "_")); if(metadata == null){ if(ignoreUnknownFields){ - if(!child.name.equals("research")){ - Log.err("{0}: Ignoring unknown field: " + child.name + " (" + type.getName() + ")", object); - } + Log.err("{0}: Ignoring unknown field: " + child.name + " (" + type.getName() + ")", object); continue; }else{ SerializationException ex = new SerializationException("Field not found: " + child.name + " (" + type.getName() + ")"); diff --git a/core/src/io/anuke/mindustry/mod/ModCrashHandler.java b/core/src/io/anuke/mindustry/mod/ModCrashHandler.java new file mode 100644 index 0000000000..3cbf3a656a --- /dev/null +++ b/core/src/io/anuke/mindustry/mod/ModCrashHandler.java @@ -0,0 +1,66 @@ +package io.anuke.mindustry.mod; + +import io.anuke.arc.*; +import io.anuke.arc.collection.*; +import io.anuke.arc.graphics.*; +import io.anuke.arc.graphics.g2d.*; +import io.anuke.arc.math.*; +import io.anuke.arc.scene.ui.layout.*; +import io.anuke.arc.util.*; +import io.anuke.mindustry.graphics.*; +import io.anuke.mindustry.mod.Mods.*; +import io.anuke.mindustry.ui.*; + +public class ModCrashHandler{ + + public static void handle(Throwable t){ + Array list = Strings.getCauses(t); + Throwable modCause = list.find(e -> e instanceof ModLoadException); + if(modCause != null && Fonts.outline != null){ + String text = "[scarlet][[A fatal crash has occured while loading a mod!][]\n\nReason:[accent] " + modCause.getMessage(); + String bottom = "[scarlet]The associated mod has been disabled. Swipe out of the app and launch it again."; + GlyphLayout layout = new GlyphLayout(); + Core.atlas = TextureAtlas.blankAtlas(); + Colors.put("accent", Pal.accent); + + Core.app.addListener(new ApplicationListener(){ + @Override + public void update(){ + Core.graphics.clear(0.1f, 0.1f, 0.1f, 1f); + float rad = Math.min(Core.graphics.getWidth(), Core.graphics.getHeight()) / 2f / 1.3f; + Draw.color(Color.scarlet, Color.black, Mathf.absin(Core.graphics.getFrameId(), 15f, 0.6f)); + Lines.stroke(Scl.scl(40f)); + //Lines.poly2(Core.graphics.getWidth()/2f, Core.graphics.getHeight()/2f, 3, rad, 0f); + float cx = Core.graphics.getWidth()/2f, cy = Core.graphics.getHeight()/2f; + for(int i = 0; i < 3; i++){ + float angle1 = i * 120f + 90f; + float angle2 = (i + 1) * 120f + 90f; + Tmp.v1.trnsExact(angle1, rad - Lines.getStroke()/2f).add(cx, cy); + Tmp.v2.trnsExact(angle2, rad - Lines.getStroke()/2f).add(cx, cy); + Tmp.v3.trnsExact(angle1, rad + Lines.getStroke()/2f).add(cx, cy); + Tmp.v4.trnsExact(angle2, rad + Lines.getStroke()/2f).add(cx, cy); + Fill.quad(Tmp.v1.x, Tmp.v1.y, Tmp.v2.x, Tmp.v2.y, Tmp.v4.x, Tmp.v4.y, Tmp.v3.x, Tmp.v3.y); + } + Lines.lineAngleCenter(Core.graphics.getWidth()/2f, Core.graphics.getHeight()/2f - Scl.scl(5f), 90f, rad/3.1f); + Fill.square(Core.graphics.getWidth()/2f, Core.graphics.getHeight()/2f + rad/2f - Scl.scl(15f), Lines.getStroke()/2f); + Draw.reset(); + + Fonts.outline.getData().markupEnabled = true; + layout.setText(Fonts.outline, text, Color.white, Core.graphics.getWidth(), Align.left, true); + Fonts.outline.draw(text, Core.graphics.getWidth()/2f - layout.width/2f, Core.graphics.getHeight() - Scl.scl(50f), Core.graphics.getWidth(), Align.left, true); + + layout.setText(Fonts.outline, bottom, Color.white, Core.graphics.getWidth(), Align.left, true); + Fonts.outline.draw(bottom, Core.graphics.getWidth()/2f - layout.width/2f, layout.height + Scl.scl(10f), Core.graphics.getWidth(), Align.left, true); + Draw.flush(); + } + + @Override + public void resize(int width, int height){ + Draw.proj().setOrtho(0, 0, width, height); + } + }); + }else{ + throw new RuntimeException(t); + } + } +} diff --git a/core/src/io/anuke/mindustry/mod/ModLoadingSound.java b/core/src/io/anuke/mindustry/mod/ModLoadingSound.java new file mode 100644 index 0000000000..43d30f4617 --- /dev/null +++ b/core/src/io/anuke/mindustry/mod/ModLoadingSound.java @@ -0,0 +1,135 @@ +package io.anuke.mindustry.mod; + +import io.anuke.arc.audio.*; +import io.anuke.arc.audio.mock.*; +import io.anuke.arc.math.geom.*; +import io.anuke.arc.util.ArcAnnotate.*; + +public class ModLoadingSound implements Sound{ + public @NonNull Sound sound = new MockSound(); + + @Override + public float calcPan(float x, float y){ + return sound.calcPan(x, y); + } + + @Override + public float calcVolume(float x, float y){ + return sound.calcVolume(x, y); + } + + @Override + public float calcFalloff(float x, float y){ + return sound.calcFalloff(x, y); + } + + @Override + public int at(float x, float y, float pitch){ + return sound.at(x, y, pitch); + } + + @Override + public int at(float x, float y){ + return sound.at(x, y); + } + + @Override + public int at(Position pos){ + return sound.at(pos); + } + + @Override + public int at(Position pos, float pitch){ + return sound.at(pos, pitch); + } + + @Override + public int play(){ + return sound.play(); + } + + @Override + public int play(float volume){ + return sound.play(volume); + } + + @Override + public int play(float volume, float pitch, float pan){ + return sound.play(volume, pitch, pan); + } + + @Override + public int loop(){ + return sound.loop(); + } + + @Override + public int loop(float volume){ + return sound.loop(volume); + } + + @Override + public int loop(float volume, float pitch, float pan){ + return sound.loop(volume, pitch, pan); + } + + @Override + public void stop(){ + sound.stop(); + } + + @Override + public void pause(){ + sound.pause(); + } + + @Override + public void resume(){ + sound.resume(); + } + + @Override + public void dispose(){ + sound.dispose(); + } + + @Override + public void stop(int soundId){ + sound.stop(soundId); + } + + @Override + public void pause(int soundId){ + sound.pause(soundId); + } + + @Override + public void resume(int soundId){ + sound.resume(soundId); + } + + @Override + public void setLooping(int soundId, boolean looping){ + sound.setLooping(soundId, looping); + } + + @Override + public void setPitch(int soundId, float pitch){ + sound.setPitch(soundId, pitch); + } + + @Override + public void setVolume(int soundId, float volume){ + sound.setVolume(soundId, volume); + } + + @Override + public void setPan(int soundId, float pan, float volume){ + sound.setPan(soundId, pan, volume); + } + + @Override + public boolean isDisposed(){ + return sound.isDisposed(); + } +} diff --git a/core/src/io/anuke/mindustry/mod/Mods.java b/core/src/io/anuke/mindustry/mod/Mods.java index 21a5aa4073..785b3596cd 100644 --- a/core/src/io/anuke/mindustry/mod/Mods.java +++ b/core/src/io/anuke/mindustry/mod/Mods.java @@ -14,7 +14,9 @@ import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.arc.util.*; import io.anuke.arc.util.io.*; import io.anuke.arc.util.serialization.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.core.*; +import io.anuke.mindustry.ctype.*; +import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.plugin.*; import io.anuke.mindustry.type.*; @@ -60,7 +62,7 @@ public class Mods implements Loadable{ file.copyTo(dest); try{ - loaded.add(loadMod(file, false)); + loaded.add(loadMod(dest, false)); requiresReload = true; }catch(IOException e){ dest.delete(); @@ -154,6 +156,7 @@ public class Mods implements Loadable{ mod.file.delete(); } loaded.remove(mod); + disabled.remove(mod); requiresReload = true; } @@ -166,9 +169,11 @@ public class Mods implements Loadable{ for(FileHandle file : modDirectory.list()){ if(!file.extension().equals("jar") && !file.extension().equals("zip") && !(file.isDirectory() && file.child("mod.json").exists())) continue; + + Log.debug("[Mods] Loading mod {0}", file); try{ LoadedMod mod = loadMod(file, false); - if(mod.enabled()){ + if(mod.enabled() || headless){ loaded.add(mod); }else{ disabled.add(mod); @@ -180,7 +185,7 @@ public class Mods implements Loadable{ } //load workshop mods now - for(FileHandle file : platform.getExternalMods()){ + for(FileHandle file : platform.getWorkshopContent(LoadedMod.class)){ try{ LoadedMod mod = loadMod(file, true); if(mod.enabled()){ @@ -244,7 +249,9 @@ public class Mods implements Loadable{ /** Reloads all mod content. How does this even work? I refuse to believe that it functions correctly.*/ public void reloadContent(){ //epic memory leak + //TODO make it less epic Core.atlas = new TextureAtlas(Core.files.internal("sprites/sprites.atlas")); + loaded.clear(); disabled.clear(); load(); @@ -263,6 +270,8 @@ public class Mods implements Loadable{ content.loadColors(); data.load(); requiresReload = false; + + Events.fire(new ContentReloadEvent()); } /** Creates all the content found in mod files. */ @@ -279,7 +288,7 @@ public class Mods implements Loadable{ try{ //this binds the content but does not load it entirely Content loaded = parser.parse(mod, file.nameWithoutExtension(), file.readString("UTF-8"), file, type); - Log.info("[{0}] Loaded '{1}'.", mod.meta.name, + Log.debug("[{0}] Loaded '{1}'.", mod.meta.name, (loaded instanceof UnlockableContent ? ((UnlockableContent)loaded).localizedName : loaded)); }catch(Exception e){ throw new RuntimeException("Failed to parse content file '" + file + "' for mod '" + mod.meta.name + "'.", e); @@ -322,7 +331,8 @@ public class Mods implements Loadable{ /** Makes a mod enabled or disabled. shifts it.*/ public void setEnabled(LoadedMod mod, boolean enabled){ if(mod.enabled() != enabled){ - Core.settings.putSave(mod.name + "-enabled", enabled); + Core.settings.putSave("mod-" + mod.name + "-enabled", enabled); + Core.settings.save(); requiresReload = true; if(!enabled){ loaded.remove(mod); @@ -369,6 +379,8 @@ public class Mods implements Loadable{ } } + setEnabled(mod, false); + if(content != null){ throw new ModLoadException(Strings.format("Error loading '{0}' from mod '{1}' ({2}):\n{3}", content, mod.meta.name, content.sourceFile.name(), realCause), content, t); @@ -442,7 +454,7 @@ public class Mods implements Loadable{ } /** Represents a plugin that has been loaded from a jar file.*/ - public static class LoadedMod{ + public static class LoadedMod implements Publishable{ /** The location of this mod's zip file/folder on the disk. */ public final FileHandle file; /** The root zip file; points to the contents of this mod. In the case of folders, this is the same as the mod's file. */ @@ -453,8 +465,6 @@ public class Mods implements Loadable{ public final String name; /** This mod's metadata. */ public final ModMeta meta; - /** The ID of this mod in the workshop.*/ - public @Nullable String workshopID; public LoadedMod(FileHandle file, FileHandle root, Mod mod, ModMeta meta){ this.root = root; @@ -465,7 +475,64 @@ public class Mods implements Loadable{ } public boolean enabled(){ - return Core.settings.getBool(name + "-enabled", true); + return Core.settings.getBool("mod-" + name + "-enabled", true); + } + + @Override + public String getSteamID(){ + return Core.settings.getString(name + "-steamid", null); + } + + @Override + public void addSteamID(String id){ + Core.settings.put(name + "-steamid", id); + Core.settings.save(); + } + + @Override + public void removeSteamID(){ + Core.settings.remove(name + "-steamid"); + Core.settings.save(); + } + + @Override + public String steamTitle(){ + return meta.name; + } + + @Override + public String steamDescription(){ + return meta.description; + } + + @Override + public String steamTag(){ + return "mod"; + } + + @Override + public FileHandle createSteamFolder(String id){ + return file; + } + + @Override + public FileHandle createSteamPreview(String id){ + return file.child("preview.png"); + } + + @Override + public boolean prePublish(){ + if(!file.isDirectory()){ + ui.showErrorMessage("$mod.folder.missing"); + return false; + } + + if(!file.child("preview.png").exists()){ + ui.showErrorMessage("$mod.preview.missing"); + return false; + } + + return true; } @Override @@ -502,5 +569,13 @@ public class Mods implements Loadable{ this.mod = content.mod; } } + + public ModLoadException(@Nullable Content content, Throwable cause){ + super(cause); + this.content = content; + if(content != null){ + this.mod = content.mod; + } + } } } diff --git a/core/src/io/anuke/mindustry/net/CrashSender.java b/core/src/io/anuke/mindustry/net/CrashSender.java index 332371ff58..1240c22160 100644 --- a/core/src/io/anuke/mindustry/net/CrashSender.java +++ b/core/src/io/anuke/mindustry/net/CrashSender.java @@ -11,7 +11,7 @@ import io.anuke.arc.util.serialization.*; import io.anuke.arc.util.serialization.JsonValue.*; import io.anuke.arc.util.serialization.JsonWriter.*; import io.anuke.mindustry.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.core.*; import java.io.*; import java.text.*; diff --git a/core/src/io/anuke/mindustry/net/NetworkIO.java b/core/src/io/anuke/mindustry/net/NetworkIO.java index 9bc881f08c..ff61c41f42 100644 --- a/core/src/io/anuke/mindustry/net/NetworkIO.java +++ b/core/src/io/anuke/mindustry/net/NetworkIO.java @@ -2,6 +2,7 @@ package io.anuke.mindustry.net; import io.anuke.arc.*; import io.anuke.arc.util.*; +import io.anuke.mindustry.core.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.game.*; import io.anuke.mindustry.io.*; diff --git a/core/src/io/anuke/mindustry/net/Packets.java b/core/src/io/anuke/mindustry/net/Packets.java index 760728d945..0a39de51ef 100644 --- a/core/src/io/anuke/mindustry/net/Packets.java +++ b/core/src/io/anuke/mindustry/net/Packets.java @@ -1,12 +1,12 @@ package io.anuke.mindustry.net; -import io.anuke.arc.Core; +import io.anuke.arc.*; import io.anuke.arc.collection.*; -import io.anuke.arc.util.serialization.Base64Coder; -import io.anuke.mindustry.game.Version; -import io.anuke.mindustry.io.TypeIO; +import io.anuke.arc.util.serialization.*; +import io.anuke.mindustry.core.*; +import io.anuke.mindustry.io.*; -import java.nio.ByteBuffer; +import java.nio.*; /** * Class for storing all packets. diff --git a/core/src/io/anuke/mindustry/type/Item.java b/core/src/io/anuke/mindustry/type/Item.java index 4950f32c10..6ec12ae475 100644 --- a/core/src/io/anuke/mindustry/type/Item.java +++ b/core/src/io/anuke/mindustry/type/Item.java @@ -4,7 +4,7 @@ import io.anuke.arc.*; import io.anuke.arc.collection.*; import io.anuke.arc.graphics.*; import io.anuke.arc.scene.ui.layout.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.ui.*; import io.anuke.mindustry.world.blocks.*; diff --git a/core/src/io/anuke/mindustry/type/Liquid.java b/core/src/io/anuke/mindustry/type/Liquid.java index 816e430c9c..9b778dfd95 100644 --- a/core/src/io/anuke/mindustry/type/Liquid.java +++ b/core/src/io/anuke/mindustry/type/Liquid.java @@ -4,7 +4,7 @@ import io.anuke.arc.*; import io.anuke.arc.graphics.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.mindustry.content.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.ui.*; public class Liquid extends UnlockableContent{ diff --git a/core/src/io/anuke/mindustry/type/Loadout.java b/core/src/io/anuke/mindustry/type/Loadout.java index 136018acc2..0b669c3f8f 100644 --- a/core/src/io/anuke/mindustry/type/Loadout.java +++ b/core/src/io/anuke/mindustry/type/Loadout.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.type; import io.anuke.arc.collection.*; import io.anuke.mindustry.content.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.ctype.Content; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.storage.*; diff --git a/core/src/io/anuke/mindustry/type/Mech.java b/core/src/io/anuke/mindustry/type/Mech.java index 2f9e64a9b4..8eb9681548 100644 --- a/core/src/io/anuke/mindustry/type/Mech.java +++ b/core/src/io/anuke/mindustry/type/Mech.java @@ -4,8 +4,9 @@ import io.anuke.arc.Core; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.scene.ui.layout.Table; +import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.mindustry.entities.type.Player; -import io.anuke.mindustry.game.UnlockableContent; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.graphics.Pal; import io.anuke.mindustry.ui.ContentDisplay; @@ -31,7 +32,7 @@ public class Mech extends UnlockableContent{ public float compoundSpeed, compoundSpeedBoost; public float weaponOffsetX, weaponOffsetY, engineOffset = 5f, engineSize = 2.5f; - public Weapon weapon; + public @NonNull Weapon weapon; public TextureRegion baseRegion, legRegion, region; diff --git a/core/src/io/anuke/mindustry/type/Publishable.java b/core/src/io/anuke/mindustry/type/Publishable.java new file mode 100644 index 0000000000..f3e8b45b88 --- /dev/null +++ b/core/src/io/anuke/mindustry/type/Publishable.java @@ -0,0 +1,40 @@ +package io.anuke.mindustry.type; + +import io.anuke.arc.collection.*; +import io.anuke.arc.files.*; +import io.anuke.arc.util.ArcAnnotate.*; +import io.anuke.mindustry.*; + +/** Defines a piece of content that can be published on the Workshop. */ +public interface Publishable{ + /** @return workshop item ID, or null if this isn't on the workshop. */ + @Nullable String getSteamID(); + /** adds a steam ID to this item once it's published. should save the item to make sure this change is persisted. */ + void addSteamID(String id); + /** removes the item ID; called when the item isn't found. */ + void removeSteamID(); + /** @return default title of the listing. */ + String steamTitle(); + /** @return standard steam listing description, may be null. this is editable by users after release.*/ + @Nullable String steamDescription(); + /** @return the tag that this content has. e.g. 'schematic' or 'map'. */ + String steamTag(); + /** @return a folder with everything needed for this piece of content in it; does not need to be a copy. */ + FileHandle createSteamFolder(String id); + /** @return a preview file PNG. */ + FileHandle createSteamPreview(String id); + /** @return any extra tags to add to this item.*/ + default Array extraTags(){ + return new Array<>(0); + } + /** @return whether this item is or was once on the workshop.*/ + default boolean hasSteamID(){ + return getSteamID() != null && Vars.steam; + } + /** called before this item is published. + * @return true to signify that everything is cool and good, or false to significy that the user has done something wrong. + * if false is returned, make sure to show a dialog explaining the error. */ + default boolean prePublish(){ + return true; + } +} diff --git a/core/src/io/anuke/mindustry/type/StatusEffect.java b/core/src/io/anuke/mindustry/type/StatusEffect.java index ae74288758..0c6cf15bd2 100644 --- a/core/src/io/anuke/mindustry/type/StatusEffect.java +++ b/core/src/io/anuke/mindustry/type/StatusEffect.java @@ -11,7 +11,7 @@ import io.anuke.mindustry.entities.Effects; import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.units.Statuses.StatusEntry; -import io.anuke.mindustry.game.Content; +import io.anuke.mindustry.ctype.Content; public class StatusEffect extends Content{ public float damageMultiplier = 1f; //damage dealt diff --git a/core/src/io/anuke/mindustry/game/TypeID.java b/core/src/io/anuke/mindustry/type/TypeID.java similarity index 67% rename from core/src/io/anuke/mindustry/game/TypeID.java rename to core/src/io/anuke/mindustry/type/TypeID.java index c054f9d8e9..8af97048a6 100644 --- a/core/src/io/anuke/mindustry/game/TypeID.java +++ b/core/src/io/anuke/mindustry/type/TypeID.java @@ -1,8 +1,8 @@ -package io.anuke.mindustry.game; +package io.anuke.mindustry.type; -import io.anuke.arc.function.Supplier; -import io.anuke.mindustry.entities.traits.TypeTrait; -import io.anuke.mindustry.type.ContentType; +import io.anuke.arc.function.*; +import io.anuke.mindustry.ctype.*; +import io.anuke.mindustry.entities.traits.*; public class TypeID extends MappableContent{ public final Supplier constructor; diff --git a/core/src/io/anuke/mindustry/type/UnitType.java b/core/src/io/anuke/mindustry/type/UnitType.java index 1c75e27a08..c05d6f2eab 100644 --- a/core/src/io/anuke/mindustry/type/UnitType.java +++ b/core/src/io/anuke/mindustry/type/UnitType.java @@ -8,6 +8,7 @@ import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.mindustry.content.*; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; diff --git a/core/src/io/anuke/mindustry/type/Weapon.java b/core/src/io/anuke/mindustry/type/Weapon.java index de70c5f3d3..cd467238d9 100644 --- a/core/src/io/anuke/mindustry/type/Weapon.java +++ b/core/src/io/anuke/mindustry/type/Weapon.java @@ -20,7 +20,7 @@ import io.anuke.mindustry.gen.*; import static io.anuke.mindustry.Vars.net; public class Weapon{ - public final String name; + public String name; /** minimum cursor distance from player, fixes 'cross-eyed' shooting. */ protected static float minPlayerDist = 20f; @@ -48,7 +48,7 @@ public class Weapon{ /** fraction of velocity that is random */ public float velocityRnd = 0f; /** whether to shoot the weapons in different arms one after another, rather than all at once */ - public boolean roundrobin = false; + public boolean alternate = false; /** randomization of shot length */ public float lengthRand = 0f; /** delay in ticks between shots */ @@ -64,7 +64,7 @@ public class Weapon{ this.name = name; } - protected Weapon(){ + public Weapon(){ //no region this.name = ""; } @@ -124,7 +124,7 @@ public class Weapon{ } public void load(){ - region = Core.atlas.find(name + "-equip", Core.atlas.find("clear")); + region = Core.atlas.find(name + "-equip", Core.atlas.find(name, Core.atlas.find("clear"))); } public void update(ShooterTrait shooter, float pointerX, float pointerY){ @@ -143,7 +143,7 @@ public class Weapon{ public void update(ShooterTrait shooter, float mountX, float mountY, float angle, boolean left){ if(shooter.getTimer().get(shooter.getShootTimer(left), reload)){ - if(roundrobin){ + if(alternate){ shooter.getTimer().reset(shooter.getShootTimer(!left), reload / 2f); } diff --git a/core/src/io/anuke/mindustry/type/WeatherEvent.java b/core/src/io/anuke/mindustry/type/WeatherEvent.java index 385124a1b9..29b6ca0855 100644 --- a/core/src/io/anuke/mindustry/type/WeatherEvent.java +++ b/core/src/io/anuke/mindustry/type/WeatherEvent.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.type; -import io.anuke.mindustry.game.Content; +import io.anuke.mindustry.ctype.Content; //currently unimplemented, see trello for implementation plans public class WeatherEvent extends Content{ diff --git a/core/src/io/anuke/mindustry/type/Zone.java b/core/src/io/anuke/mindustry/type/Zone.java index 19e11aa3be..b4088b24e6 100644 --- a/core/src/io/anuke/mindustry/type/Zone.java +++ b/core/src/io/anuke/mindustry/type/Zone.java @@ -7,6 +7,7 @@ import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.mindustry.content.*; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.Objectives.*; @@ -171,6 +172,10 @@ public class Zone extends UnlockableContent{ @Override public void init(){ + if(generator instanceof MapGenerator && mod != null){ + ((MapGenerator)generator).removePrefix(mod.name); + } + generator.init(loadout); resources.sort(); diff --git a/core/src/io/anuke/mindustry/game/Cicon.java b/core/src/io/anuke/mindustry/ui/Cicon.java similarity index 92% rename from core/src/io/anuke/mindustry/game/Cicon.java rename to core/src/io/anuke/mindustry/ui/Cicon.java index eccc436c1e..71024fddbf 100644 --- a/core/src/io/anuke/mindustry/game/Cicon.java +++ b/core/src/io/anuke/mindustry/ui/Cicon.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.game; +package io.anuke.mindustry.ui; import java.util.*; diff --git a/core/src/io/anuke/mindustry/ui/ContentDisplay.java b/core/src/io/anuke/mindustry/ui/ContentDisplay.java index 8245047e0f..a184e86aaf 100644 --- a/core/src/io/anuke/mindustry/ui/ContentDisplay.java +++ b/core/src/io/anuke/mindustry/ui/ContentDisplay.java @@ -5,7 +5,6 @@ import io.anuke.arc.collection.*; import io.anuke.arc.graphics.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.world.*; @@ -49,7 +48,7 @@ public class ContentDisplay{ for(BlockStat stat : map.keys()){ table.table(inset -> { inset.left(); - inset.add("[LIGHT_GRAY]" + stat.localized() + ":[] "); + inset.add("[LIGHT_GRAY]" + stat.localized() + ":[] ").left(); Array arr = map.get(stat); for(StatValue value : arr){ value.display(inset); diff --git a/core/src/io/anuke/mindustry/ui/ItemImage.java b/core/src/io/anuke/mindustry/ui/ItemImage.java index 22edaedd75..e2ea1b5c23 100644 --- a/core/src/io/anuke/mindustry/ui/ItemImage.java +++ b/core/src/io/anuke/mindustry/ui/ItemImage.java @@ -3,7 +3,6 @@ package io.anuke.mindustry.ui; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.scene.ui.*; import io.anuke.arc.scene.ui.layout.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.type.*; public class ItemImage extends Stack{ diff --git a/core/src/io/anuke/mindustry/ui/ItemsDisplay.java b/core/src/io/anuke/mindustry/ui/ItemsDisplay.java index 5e820ba459..f10b17e3eb 100644 --- a/core/src/io/anuke/mindustry/ui/ItemsDisplay.java +++ b/core/src/io/anuke/mindustry/ui/ItemsDisplay.java @@ -3,7 +3,6 @@ package io.anuke.mindustry.ui; import io.anuke.arc.graphics.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.mindustry.core.GameState.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.type.*; diff --git a/core/src/io/anuke/mindustry/ui/Links.java b/core/src/io/anuke/mindustry/ui/Links.java index cdb91c8655..cfdaac40a9 100644 --- a/core/src/io/anuke/mindustry/ui/Links.java +++ b/core/src/io/anuke/mindustry/ui/Links.java @@ -1,6 +1,7 @@ package io.anuke.mindustry.ui; import io.anuke.arc.Core; +import io.anuke.arc.util.Strings; import io.anuke.arc.graphics.Color; import io.anuke.mindustry.graphics.Pal; @@ -13,6 +14,7 @@ public class Links{ new LinkEntry("changelog", "https://github.com/Anuken/Mindustry/releases", Pal.accent.cpy()), new LinkEntry("trello", "https://trello.com/b/aE2tcUwF", Color.valueOf("026aa7")), new LinkEntry("wiki", "https://mindustrygame.github.io/wiki/", Color.valueOf("0f142f")), + new LinkEntry("reddit", "https://www.reddit.com/r/Mindustry/", Color.valueOf("ee593b")), new LinkEntry("itch.io", "https://anuke.itch.io/mindustry", Color.valueOf("fa5c5c")), new LinkEntry("google-play", "https://play.google.com/store/apps/details?id=io.anuke.mindustry", Color.valueOf("689f38")), new LinkEntry("github", "https://github.com/Anuken/Mindustry/", Color.valueOf("24292e")), @@ -29,7 +31,7 @@ public class Links{ } public static class LinkEntry{ - public final String name, description, link; + public final String name, title, description, link; public final Color color; public LinkEntry(String name, String link, Color color){ @@ -37,6 +39,9 @@ public class Links{ this.color = color; this.description = Core.bundle.getNotNull("link." + name + ".description"); this.link = link; + + String title = Core.bundle.getOrNull("link." + name + ".title"); + this.title = title != null ? title : Strings.capitalize(name.replace("-", " ")); } } } diff --git a/core/src/io/anuke/mindustry/ui/LiquidDisplay.java b/core/src/io/anuke/mindustry/ui/LiquidDisplay.java index 160ab843c7..be4d22b124 100644 --- a/core/src/io/anuke/mindustry/ui/LiquidDisplay.java +++ b/core/src/io/anuke/mindustry/ui/LiquidDisplay.java @@ -5,7 +5,6 @@ import io.anuke.arc.scene.ui.Image; import io.anuke.arc.scene.ui.layout.Stack; import io.anuke.arc.scene.ui.layout.Table; import io.anuke.arc.util.Strings; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.meta.StatUnit; diff --git a/core/src/io/anuke/mindustry/ui/Minimap.java b/core/src/io/anuke/mindustry/ui/Minimap.java index d4cba3bc33..dc2817e8f0 100644 --- a/core/src/io/anuke/mindustry/ui/Minimap.java +++ b/core/src/io/anuke/mindustry/ui/Minimap.java @@ -36,7 +36,7 @@ public class Minimap extends Table{ Draw.rect(renderer.minimap.getRegion(), x + width / 2f, y + height / 2f, width, height); if(renderer.minimap.getTexture() != null){ - renderer.minimap.drawEntities(x, y, width, height); + renderer.minimap.drawEntities(x, y, width, height, false); } } }).size(140f); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/AboutDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/AboutDialog.java index 00c0ac0835..a8e5212307 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/AboutDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/AboutDialog.java @@ -59,7 +59,7 @@ public class AboutDialog extends FloatingDialog{ }).size(h - 5, h); table.table(inset -> { - inset.add("[accent]" + Strings.capitalize(link.name.replace("-", " "))).growX().left(); + inset.add("[accent]" + link.title).growX().left(); inset.row(); inset.labelWrap(link.description).width(w - 100f).color(Color.lightGray).growX(); }).padLeft(8); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/ContentInfoDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/ContentInfoDialog.java index f76bba6bbc..3a4abf4d18 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/ContentInfoDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/ContentInfoDialog.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.ui.dialogs; import io.anuke.arc.scene.ui.ScrollPane; import io.anuke.arc.scene.ui.layout.Table; -import io.anuke.mindustry.game.UnlockableContent; +import io.anuke.mindustry.ctype.UnlockableContent; public class ContentInfoDialog extends FloatingDialog{ diff --git a/core/src/io/anuke/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/CustomRulesDialog.java index 00d9db0cd0..e0e617929e 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/CustomRulesDialog.java @@ -15,6 +15,7 @@ import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import static io.anuke.mindustry.Vars.*; @@ -157,14 +158,14 @@ public class CustomRulesDialog extends FloatingDialog{ main.row(); title("$rules.title.player"); - number("$rules.playerdamagemultiplier", f -> rules.playerDamageMultiplier = f, () -> rules.playerDamageMultiplier); number("$rules.playerhealthmultiplier", f -> rules.playerHealthMultiplier = f, () -> rules.playerHealthMultiplier); + number("$rules.playerdamagemultiplier", f -> rules.playerDamageMultiplier = f, () -> rules.playerDamageMultiplier); title("$rules.title.unit"); check("$rules.unitdrops", b -> rules.unitDrops = b, () -> rules.unitDrops, () -> true); - number("$rules.unitbuildspeedmultiplier", f -> rules.unitBuildSpeedMultiplier = f, () -> rules.unitBuildSpeedMultiplier); number("$rules.unithealthmultiplier", f -> rules.unitHealthMultiplier = f, () -> rules.unitHealthMultiplier); number("$rules.unitdamagemultiplier", f -> rules.unitDamageMultiplier = f, () -> rules.unitDamageMultiplier); + number("$rules.unitbuildspeedmultiplier", f -> rules.unitBuildSpeedMultiplier = f, () -> rules.unitBuildSpeedMultiplier); title("$rules.title.enemy"); check("$rules.attack", b -> rules.attackMode = b, () -> rules.attackMode); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/DatabaseDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/DatabaseDialog.java index 4c25761cb4..faa3f6f39a 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/DatabaseDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/DatabaseDialog.java @@ -1,19 +1,19 @@ package io.anuke.mindustry.ui.dialogs; -import io.anuke.arc.Core; -import io.anuke.arc.collection.Array; -import io.anuke.arc.graphics.Color; -import io.anuke.arc.scene.event.ClickListener; -import io.anuke.arc.scene.event.HandCursorListener; +import io.anuke.arc.*; +import io.anuke.arc.collection.*; +import io.anuke.arc.graphics.*; +import io.anuke.arc.scene.event.*; import io.anuke.arc.scene.ui.*; -import io.anuke.arc.scene.ui.layout.Table; -import io.anuke.arc.util.Time; -import io.anuke.mindustry.Vars; -import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.game.*; +import io.anuke.arc.scene.ui.layout.*; +import io.anuke.arc.util.*; +import io.anuke.mindustry.*; +import io.anuke.mindustry.core.GameState.*; +import io.anuke.mindustry.ctype.*; import io.anuke.mindustry.gen.*; -import io.anuke.mindustry.graphics.Pal; -import io.anuke.mindustry.type.ContentType; +import io.anuke.mindustry.graphics.*; +import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.*; public class DatabaseDialog extends FloatingDialog{ diff --git a/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java index de9f1ad85e..09924218d0 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java @@ -55,6 +55,7 @@ public class FloatingDialog extends Dialog{ @Override public void addCloseButton(){ + buttons.defaults().size(210f, 64f); buttons.addImageTextButton("$back", Icon.arrowLeft, this::hide).size(210f, 64f); keyDown(key -> { diff --git a/core/src/io/anuke/mindustry/ui/dialogs/GameOverDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/GameOverDialog.java index 1e8bcfad87..af64727163 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/GameOverDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/GameOverDialog.java @@ -6,6 +6,7 @@ import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.Stats.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.Cicon; import static io.anuke.mindustry.Vars.*; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java index 92a69ddcc3..5ecb7a3e9a 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java @@ -5,7 +5,7 @@ import io.anuke.arc.graphics.*; import io.anuke.arc.scene.ui.*; import io.anuke.arc.util.*; import io.anuke.mindustry.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.core.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.ui.*; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java index d6d579a787..b786bc3fe4 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java @@ -10,7 +10,7 @@ import io.anuke.arc.scene.ui.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; import io.anuke.mindustry.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.core.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.Packets.*; @@ -105,9 +105,8 @@ public class JoinDialog extends FloatingDialog{ TextButton button = buttons[0] = remote.addButton("[accent]" + server.displayIP(), Styles.cleart, () -> { if(!buttons[0].childrenPressed()){ - if(server.lastHost != null && server.lastHost.version != Version.build && Version.build != -1 && server.lastHost.version != -1){ - ui.showInfo("[scarlet]" + (server.lastHost.version > Version.build ? KickReason.clientOutdated : KickReason.serverOutdated).toString() + "\n[]" + - Core.bundle.format("server.versions", Version.build, server.lastHost.version)); + if(server.lastHost != null){ + safeConnect(server.ip, server.port, server.lastHost.version); }else{ connect(server.ip, server.port); } @@ -314,7 +313,7 @@ public class JoinDialog extends FloatingDialog{ local.row(); - TextButton button = local.addButton("", Styles.cleart, () -> connect(host.address, port)) + TextButton button = local.addButton("", Styles.cleart, () -> safeConnect(host.address, port, host.version)) .width(w).pad(5f).get(); button.clearChildren(); buildServer(host, button); @@ -344,6 +343,15 @@ public class JoinDialog extends FloatingDialog{ }); } + void safeConnect(String ip, int port, int version){ + if(version != Version.build && Version.build != -1 && version != -1){ + ui.showInfo("[scarlet]" + (version > Version.build ? KickReason.clientOutdated : KickReason.serverOutdated).toString() + "\n[]" + + Core.bundle.format("server.versions", Version.build, version)); + }else{ + connect(ip, port); + } + } + float targetWidth(){ return Core.graphics.isPortrait() ? 350f : 500f; } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/LoadoutDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/LoadoutDialog.java index fc5b560678..f6bd24ff37 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/LoadoutDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/LoadoutDialog.java @@ -5,21 +5,19 @@ import io.anuke.arc.collection.*; import io.anuke.arc.input.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import static io.anuke.mindustry.Vars.*; public class LoadoutDialog extends FloatingDialog{ private Runnable hider; - //private Supplier> supplier; private Runnable resetter; private Runnable updater; private Array stacks = new Array<>(); private Array originalStacks = new Array<>(); - //private Predicate filter; private Table items; private int capacity; @@ -48,6 +46,7 @@ public class LoadoutDialog extends FloatingDialog{ buttons.addImageTextButton("$settings.reset", Icon.refreshSmall, () -> { resetter.run(); + reseed(); updater.run(); setup(); }).size(210f, 64f); @@ -55,10 +54,7 @@ public class LoadoutDialog extends FloatingDialog{ public void show(int capacity, Array stacks, Runnable reseter, Runnable updater, Runnable hider){ this.originalStacks = stacks; - this.stacks = stacks.map(ItemStack::copy); - this.stacks.addAll(content.items().select(i -> i.type == ItemType.material && - !stacks.contains(stack -> stack.item == i)).map(i -> new ItemStack(i, 0))); - this.stacks.sort(Structs.comparingInt(s -> s.item.id)); + reseed(); this.resetter = reseter; this.updater = updater; this.capacity = capacity; @@ -110,6 +106,13 @@ public class LoadoutDialog extends FloatingDialog{ } } + private void reseed(){ + this.stacks = originalStacks.map(ItemStack::copy); + this.stacks.addAll(content.items().select(i -> i.type == ItemType.material && + !stacks.contains(stack -> stack.item == i)).map(i -> new ItemStack(i, 0))); + this.stacks.sort(Structs.comparingInt(s -> s.item.id)); + } + private int step(int amount){ if(amount < 1000){ return 100; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java index 968cb0983f..a2fb508fcb 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java @@ -205,7 +205,7 @@ public class MapsDialog extends FloatingDialog{ table.addImageTextButton(map.workshop && steam ? "$view.workshop" : "$delete", map.workshop && steam ? Icon.linkSmall : Icon.trash16Small, () -> { if(map.workshop && steam){ - platform.viewMapListing(map); + platform.viewListing(map); }else{ ui.showConfirm("$confirm", Core.bundle.format("map.delete", map.name()), () -> { maps.removeMap(map); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/ModsDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/ModsDialog.java index c0a42d71a7..7471bac8f5 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/ModsDialog.java @@ -30,7 +30,7 @@ public class ModsDialog extends FloatingDialog{ .size(210f, 64f); buttons.addImageTextButton("$mod.import.github", Icon.github, () -> { - ui.showTextInput("$mod.import.github", "", "Anuken/ExampleMod", text -> { + ui.showTextInput("$mod.import.github", "", 64, "Anuken/ExampleMod", text -> { ui.loadfrag.show(); Core.net.httpGet("http://api.github.com/repos/" + text + "/zipball/master", loc -> { Core.net.httpGet(loc.getHeader("Location"), result -> { @@ -41,11 +41,11 @@ public class ModsDialog extends FloatingDialog{ mods.reloadContent(); setup(); ui.loadfrag.hide(); - }catch(Exception e){ + }catch(Throwable e){ ui.showException(e); } }); - }catch(Exception e){ + }catch(Throwable e){ ui.showException(e); } }, t -> Core.app.post(() -> ui.showException(t))); @@ -93,7 +93,7 @@ public class ModsDialog extends FloatingDialog{ t.margin(14f).left(); t.table(title -> { title.left(); - title.add("[accent]" + mod.meta.name + "[lightgray] v" + mod.meta.version + (" | " + Core.bundle.get(mod.enabled() ? "mod.enabled" : "mod.disabled"))); + title.add("[accent]" + mod.meta.name + "[lightgray] v" + mod.meta.version + (" | " + Core.bundle.get(mod.enabled() ? "mod.enabled" : "mod.disabled"))).width(270f).wrap(); title.add().growX(); title.addImageTextButton(mod.enabled() ? "$mod.disable" : "$mod.enable", mod.enabled() ? Icon.arrowDownSmall : Icon.arrowUpSmall, Styles.cleart, () -> { @@ -101,14 +101,20 @@ public class ModsDialog extends FloatingDialog{ setup(); }).height(50f).margin(8f).width(130f); - title.addImageButton(mod.workshopID != null ? Icon.linkSmall : Icon.trash16Small, Styles.cleari, () -> { - if(mod.workshopID == null){ + if(steam && !mod.hasSteamID()){ + title.addImageButton(Icon.loadMapSmall, Styles.cleari, () -> { + platform.publish(mod); + }).size(50f); + } + + title.addImageButton(mod.hasSteamID() ? Icon.linkSmall : Icon.trash16Small, Styles.cleari, () -> { + if(!mod.hasSteamID()){ ui.showConfirm("$confirm", "$mod.remove.confirm", () -> { mods.removeMod(mod); setup(); }); }else{ - platform.viewListing(mod.workshopID); + platform.viewListing(mod); } }).size(50f); }).growX().left().padTop(-14f).padRight(-14f); @@ -146,4 +152,4 @@ public class ModsDialog extends FloatingDialog{ }); }).margin(12f).width(500f); } -} \ No newline at end of file +} diff --git a/core/src/io/anuke/mindustry/ui/dialogs/SchematicsDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/SchematicsDialog.java new file mode 100644 index 0000000000..aad45b93cc --- /dev/null +++ b/core/src/io/anuke/mindustry/ui/dialogs/SchematicsDialog.java @@ -0,0 +1,314 @@ +package io.anuke.mindustry.ui.dialogs; + +import io.anuke.arc.*; +import io.anuke.arc.collection.*; +import io.anuke.arc.graphics.*; +import io.anuke.arc.graphics.Texture.*; +import io.anuke.arc.graphics.g2d.*; +import io.anuke.arc.scene.style.*; +import io.anuke.arc.scene.ui.*; +import io.anuke.arc.scene.ui.ImageButton.*; +import io.anuke.arc.scene.ui.TextButton.*; +import io.anuke.arc.scene.ui.layout.*; +import io.anuke.arc.util.*; +import io.anuke.mindustry.game.*; +import io.anuke.mindustry.gen.*; +import io.anuke.mindustry.graphics.*; +import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; + +import static io.anuke.mindustry.Vars.*; + +public class SchematicsDialog extends FloatingDialog{ + private SchematicInfoDialog info = new SchematicInfoDialog(); + private String search = ""; + + public SchematicsDialog(){ + super("$schematics"); + Core.assets.load("sprites/schematic-background.png", Texture.class).loaded = t -> { + ((Texture)t).setWrap(TextureWrap.Repeat); + }; + + shouldPause = true; + addCloseButton(); + buttons.addImageTextButton("$schematic.import", Icon.loadMapSmall, this::showImport); + shown(this::setup); + } + + void setup(){ + search = ""; + Runnable[] rebuildPane = {null}; + + cont.top(); + cont.clear(); + + cont.table(s -> { + s.left(); + s.addImage(Icon.zoom); + s.addField(search, res -> { + search = res; + rebuildPane[0].run(); + }).growX(); + }).fillX().padBottom(4); + + cont.row(); + + cont.pane(t -> { + t.top(); + t.margin(20f); + rebuildPane[0] = () -> { + t.clear(); + int i = 0; + + if(!schematics.all().contains(s -> search.isEmpty() || s.name().contains(search))){ + t.add("$none"); + } + + for(Schematic s : schematics.all()){ + if(!search.isEmpty() && !s.name().contains(search)) continue; + + Button[] sel = {null}; + sel[0] = t.addButton(b -> { + b.top(); + b.margin(0f); + b.table(buttons -> { + buttons.left(); + buttons.defaults().size(50f); + + ImageButtonStyle style = Styles.clearPartiali; + + buttons.addImageButton(Icon.infoSmall, style, () -> { + showInfo(s); + }); + + buttons.addImageButton(Icon.loadMapSmall, style, () -> { + showExport(s); + }); + + buttons.addImageButton(Icon.pencilSmall, style, () -> { + ui.showTextInput("$schematic.rename", "$name", s.name(), res -> { + s.tags.put("name", res); + s.save(); + rebuildPane[0].run(); + }); + }); + + if(s.hasSteamID()){ + buttons.addImageButton(Icon.linkSmall, style, () -> platform.viewListing(s)); + }else{ + buttons.addImageButton(Icon.trash16Small, style, () -> { + ui.showConfirm("$confirm", "$schematic.delete.confirm", () -> { + schematics.remove(s); + rebuildPane[0].run(); + }); + }); + } + + }).growX().height(50f); + b.row(); + b.stack(new SchematicImage(s).setScaling(Scaling.fit), new Table(n -> { + n.top(); + n.table(Styles.black3, c -> { + Label label = c.add(s.name()).style(Styles.outlineLabel).color(Color.white).top().growX().maxWidth(200f - 8f).get(); + label.setEllipsis(true); + label.setAlignment(Align.center); + }).growX().margin(1).pad(4).maxWidth(200f - 8f).padBottom(0); + })).size(200f); + }, () -> { + if(sel[0].childrenPressed()) return; + control.input.useSchematic(s); + hide(); + }).pad(4).style(Styles.cleari).get(); + + sel[0].getStyle().up = Tex.pane; + + if(++i % 4 == 0){ + t.row(); + } + } + }; + + rebuildPane[0].run(); + }).get().setScrollingDisabled(true, false); + } + + public void showInfo(Schematic schematic){ + info.show(schematic); + } + + public void showImport(){ + FloatingDialog dialog = new FloatingDialog("$editor.export"); + dialog.cont.pane(p -> { + p.margin(10f); + p.table(Tex.button, t -> { + TextButtonStyle style = Styles.cleart; + t.defaults().size(280f, 60f).left(); + t.row(); + t.addImageTextButton("$schematic.copy.import", Icon.copySmall, style, () -> { + dialog.hide(); + try{ + Schematic s = schematics.readBase64(Core.app.getClipboardText()); + schematics.add(s); + setup(); + ui.showInfoFade("$schematic.saved"); + showInfo(s); + }catch(Exception e){ + ui.showException(e); + } + }).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null || !Core.app.getClipboardText().startsWith(schematicBaseStart)); + t.row(); + t.addImageTextButton("$schematic.importfile", Icon.saveMapSmall, style, () -> platform.showFileChooser(true, schematicExtension, file -> { + dialog.hide(); + + try{ + Schematic s = Schematics.read(file); + schematics.add(s); + setup(); + showInfo(s); + }catch(Exception e){ + ui.showException(e); + } + })).marginLeft(12f); + t.row(); + if(steam){ + t.addImageTextButton("$schematic.browseworkshop", Icon.wikiSmall, style, () -> { + dialog.hide(); + platform.openWorkshop(); + }).marginLeft(12f); + } + }); + }); + + dialog.addCloseButton(); + dialog.show(); + } + + public void showExport(Schematic s){ + FloatingDialog dialog = new FloatingDialog("$editor.export"); + dialog.cont.pane(p -> { + p.margin(10f); + p.table(Tex.button, t -> { + TextButtonStyle style = Styles.cleart; + t.defaults().size(280f, 60f).left(); + if(steam && !s.hasSteamID()){ + t.addImageTextButton("$schematic.shareworkshop", Icon.wikiSmall, style, + () -> platform.publish(s)).marginLeft(12f); + t.row(); + dialog.hide(); + } + t.addImageTextButton("$schematic.copy", Icon.copySmall, style, () -> { + dialog.hide(); + ui.showInfoFade("$copied"); + Core.app.setClipboardText(schematics.writeBase64(s)); + }).marginLeft(12f); + t.row(); + t.addImageTextButton("$schematic.exportfile", Icon.saveMapSmall, style, () -> platform.showFileChooser(false, schematicExtension, file -> { + dialog.hide(); + try{ + Schematics.write(s, file); + }catch(Exception e){ + ui.showException(e); + } + })).marginLeft(12f); + }); + }); + + dialog.addCloseButton(); + dialog.show(); + } + + public static class SchematicImage extends Image{ + public float scaling = 16f; + public float thickness = 4f; + public Color borderColor = Pal.gray; + + private Schematic schematic; + boolean set; + + public SchematicImage(Schematic s){ + super(Tex.clear); + setScaling(Scaling.fit); + schematic = s; + + if(schematics.hasPreview(s)){ + setPreview(); + set = true; + } + } + + @Override + public void draw(){ + boolean checked = getParent().getParent() instanceof Button + && ((Button)getParent().getParent()).isOver(); + + boolean wasSet = set; + if(!set){ + Core.app.post(this::setPreview); + set = true; + } + + Texture background = Core.assets.get("sprites/schematic-background.png", Texture.class); + TextureRegion region = Draw.wrap(background); + float xr = width / scaling; + float yr = height / scaling; + region.setU2(xr); + region.setV2(yr); + Draw.color(); + Draw.alpha(parentAlpha); + Draw.rect(region, x + width/2f, y + height/2f, width, height); + + if(wasSet){ + super.draw(); + }else{ + Draw.rect(Icon.loading.getRegion(), x + width/2f, y + height/2f, width/4f, height/4f); + } + + Draw.color(checked ? Pal.accent : borderColor); + Draw.alpha(parentAlpha); + Lines.stroke(Scl.scl(thickness)); + Lines.rect(x, y, width, height); + Draw.reset(); + } + + private void setPreview(){ + TextureRegionDrawable draw = new TextureRegionDrawable(new TextureRegion(schematics.getPreview(schematic))); + setDrawable(draw); + setScaling(Scaling.fit); + } + } + + public static class SchematicInfoDialog extends FloatingDialog{ + + SchematicInfoDialog(){ + super(""); + setFillParent(true); + addCloseButton(); + } + + public void show(Schematic schem){ + cont.clear(); + title.setText("[[" + Core.bundle.get("schematic") + "] " +schem.name()); + + cont.add(Core.bundle.format("schematic.info", schem.width, schem.height, schem.tiles.size)).color(Color.lightGray); + cont.row(); + cont.add(new SchematicImage(schem)).maxSize(800f); + cont.row(); + + Array arr = schem.requirements(); + cont.table(r -> { + int i = 0; + for(ItemStack s : arr){ + r.addImage(s.item.icon(Cicon.small)).left(); + r.add(s.amount + "").padLeft(2).left().color(Color.lightGray).padRight(4); + + if(++i % 4 == 0){ + r.row(); + } + } + }); + + show(); + } + } +} diff --git a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java index a84dddac73..fdbf61df9e 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -14,7 +14,7 @@ import io.anuke.arc.scene.ui.TextButton.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; import io.anuke.mindustry.core.GameState.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.core.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; @@ -294,6 +294,7 @@ public class SettingsMenuDialog extends SettingsDialog{ graphics.checkPref("effects", true); graphics.checkPref("playerchat", true); graphics.checkPref("minimap", !mobile); + graphics.checkPref("position", false); graphics.checkPref("fps", false); graphics.checkPref("indicators", true); graphics.checkPref("animatedwater", false); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/TechTreeDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/TechTreeDialog.java index b34b4935eb..fb79710675 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/TechTreeDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/TechTreeDialog.java @@ -16,12 +16,12 @@ import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.TechTree.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.ui.layout.*; import io.anuke.mindustry.ui.layout.TreeLayout.*; @@ -40,7 +40,16 @@ public class TechTreeDialog extends FloatingDialog{ titleTable.remove(); margin(0f).marginBottom(8); - cont.stack(view = new View(), items = new ItemsDisplay()).grow(); + Stack stack = cont.stack(view = new View(), items = new ItemsDisplay()).grow().get(); + + Events.on(ContentReloadEvent.class, e -> { + nodes.clear(); + root = new TechTreeNode(TechTree.root, null); + checkNodes(root); + treeLayout(); + stack.getChildren().get(0).remove(); + stack.addChildAt(0, view = new View()); + }); shown(() -> { checkNodes(root); @@ -105,8 +114,18 @@ public class TechTreeDialog extends FloatingDialog{ RadialTreeLayout layout = new RadialTreeLayout(); LayoutNode node = new LayoutNode(root, null); layout.layout(node); - //bounds.y += nodeSize*1.5f; + float minx = 0f, miny = 0f, maxx = 0f, maxy = 0f; copyInfo(node); + + for(TechTreeNode n : nodes){ + if(!n.visible) continue; + minx = Math.min(n.x - n.width/2f, minx); + maxx = Math.max(n.x + n.width/2f, maxx); + miny = Math.min(n.y - n.height/2f, miny); + maxy = Math.max(n.y + n.height/2f, maxy); + } + bounds = new Rectangle(minx, miny, maxx - minx, maxy - miny); + bounds.y += nodeSize*1.5f; } void copyInfo(LayoutNode node){ @@ -262,7 +281,7 @@ public class TechTreeDialog extends FloatingDialog{ float rx = bounds.x + panX + ox, ry = panY + oy + bounds.y; float rw = bounds.width, rh = bounds.height; rx = Mathf.clamp(rx, -rw + pad, Core.graphics.getWidth() - pad); - ry = Mathf.clamp(ry, pad, Core.graphics.getHeight() - rh - pad); + ry = Mathf.clamp(ry, -rh + pad, Core.graphics.getHeight() - pad); panX = rx - bounds.x - ox; panY = ry - bounds.y - oy; } @@ -343,7 +362,6 @@ public class TechTreeDialog extends FloatingDialog{ infoTable.table(t -> t.margin(3f).left().labelWrap(node.block.description).color(Color.lightGray).growX()).fillX(); } - addChild(infoTable); infoTable.pack(); infoTable.act(Core.graphics.getDeltaTime()); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/ZoneInfoDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/ZoneInfoDialog.java index 7a7d716294..a3e67d8b4d 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/ZoneInfoDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/ZoneInfoDialog.java @@ -10,6 +10,7 @@ import io.anuke.mindustry.game.Objectives.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.Cicon; import static io.anuke.mindustry.Vars.*; @@ -44,7 +45,7 @@ public class ZoneInfoDialog extends FloatingDialog{ if(i++ % 2 == 0){ iteminfo.row(); } - iteminfo.addImage(stack.item.icon(Cicon.small)).size(8 * 3).padRight(1); + iteminfo.addImage(stack.item.icon(io.anuke.mindustry.ui.Cicon.small)).size(8 * 3).padRight(1); iteminfo.add(stack.amount + "").color(Color.lightGray).padRight(5); } }; @@ -84,7 +85,7 @@ public class ZoneInfoDialog extends FloatingDialog{ r.add("$research.list").colspan(2).left(); r.row(); for(Unlock blocko : blocks){ - r.addImage(blocko.block.icon(Cicon.small)).size(8 * 3).padRight(5); + r.addImage(blocko.block.icon(io.anuke.mindustry.ui.Cicon.small)).size(8 * 3).padRight(5); r.add(blocko.block.localizedName).color(Color.lightGray).left(); r.addImage(blocko.block.unlocked() ? Icon.checkSmall : Icon.cancelSmall, blocko.block.unlocked() ? Color.lightGray : Color.scarlet).padLeft(3); r.row(); @@ -157,7 +158,7 @@ public class ZoneInfoDialog extends FloatingDialog{ hide(); control.playZone(zone); } - }).minWidth(150f).margin(13f).padTop(5).disabled(b -> zone.locked() ? !zone.canUnlock() : !data.hasItems(zone.getLaunchCost())).uniformY().get(); + }).minWidth(200f).margin(13f).padTop(5).disabled(b -> zone.locked() ? !zone.canUnlock() : !data.hasItems(zone.getLaunchCost())).uniformY().get(); button.row(); button.add(iteminfo); diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java index 316990d8bf..8585bf94c7 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java @@ -17,10 +17,10 @@ import io.anuke.arc.util.*; import io.anuke.mindustry.core.GameState.*; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import static io.anuke.mindustry.Vars.*; diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 357cc0eb58..7f3effba9c 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -17,17 +17,18 @@ import io.anuke.arc.scene.ui.ImageButton.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; import io.anuke.mindustry.core.GameState.*; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.*; +import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.input.*; import io.anuke.mindustry.net.Packets.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; -import io.anuke.mindustry.ui.Styles; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.ui.dialogs.*; import static io.anuke.mindustry.Vars.*; @@ -132,7 +133,7 @@ public class HudFragment extends Fragment{ } cont.update(() -> { - if(!Core.input.keyDown(Binding.gridMode) && Core.input.keyTap(Binding.toggle_menus) && !ui.chatfrag.chatOpen() && !Core.scene.hasDialog() && !(Core.scene.getKeyboardFocus() instanceof TextField)){ + if(Core.input.keyTap(Binding.toggle_menus) && !ui.chatfrag.chatOpen() && !Core.scene.hasDialog() && !(Core.scene.getKeyboardFocus() instanceof TextField)){ toggleMenus(); } }); @@ -249,9 +250,17 @@ public class HudFragment extends Fragment{ info.label(() -> ping.get(netClient.getPing())).visible(net::client).left().style(Styles.outlineLabel); }).top().left(); }); - - //minimap - parent.fill(t -> t.top().right().add(new Minimap()).visible(() -> Core.settings.getBool("minimap") && !state.rules.tutorial)); + + parent.fill(t -> { + t.visible(() -> Core.settings.getBool("minimap") && !state.rules.tutorial); + //minimap + t.add(new Minimap()); + t.row(); + //position + t.label(() -> world.toTile(player.x) + "," + world.toTile(player.y)) + .visible(() -> Core.settings.getBool("position") && !state.rules.tutorial); + t.top().right(); + }); //spawner warning parent.fill(t -> { diff --git a/core/src/io/anuke/mindustry/ui/fragments/LoadingFragment.java b/core/src/io/anuke/mindustry/ui/fragments/LoadingFragment.java index 12fbccc5a7..fc0a246851 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/LoadingFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/LoadingFragment.java @@ -22,7 +22,6 @@ public class LoadingFragment extends Fragment{ t.visible(false); t.touchable(Touchable.enabled); t.add().height(133f).row(); - t.addImage().growX().height(3f).pad(4f).growX().get().setColor(Pal.accent); t.row(); t.add("$loading").name("namelabel").pad(10f); diff --git a/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java b/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java index b4a0a2078b..9e22cae99b 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java @@ -11,12 +11,11 @@ import io.anuke.arc.scene.style.*; import io.anuke.arc.scene.ui.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; +import io.anuke.mindustry.core.*; import io.anuke.mindustry.game.EventType.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.ui.*; -import io.anuke.mindustry.ui.Styles; import static io.anuke.arc.Core.assets; import static io.anuke.mindustry.Vars.*; @@ -98,6 +97,7 @@ public class MenuFragment extends Fragment{ join = new MobileButton(Icon.add, "$joingame", ui.join::show), editor = new MobileButton(Icon.editor, "$editor", ui.maps::show), tools = new MobileButton(Icon.tools, "$settings", ui.settings::show), + mods = new MobileButton(Icon.wiki, "$mods", ui.mods::show), donate = new MobileButton(Icon.link, "$website", () -> Core.net.openURI("https://anuke.itch.io/mindustry")), exit = new MobileButton(Icon.exit, "$quit", () -> Core.app.exit()); @@ -116,7 +116,8 @@ public class MenuFragment extends Fragment{ table.add(editor); table.add(tools); - if(platform.canDonate()) table.add(donate); + table.add(mods); + //if(platform.canDonate()) table.add(donate); if(!ios) table.add(exit); }).colspan(4); }else{ @@ -134,7 +135,8 @@ public class MenuFragment extends Fragment{ container.table(table -> { table.defaults().set(container.defaults()); - if(platform.canDonate()) table.add(donate); + table.add(mods); + //if(platform.canDonate()) table.add(donate); if(!ios) table.add(exit); }).colspan(2); } diff --git a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java index ac6cfe8edf..cd93807065 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java @@ -3,7 +3,6 @@ package io.anuke.mindustry.ui.fragments; import io.anuke.arc.*; import io.anuke.arc.collection.*; import io.anuke.arc.graphics.*; -import io.anuke.arc.input.*; import io.anuke.arc.math.geom.*; import io.anuke.arc.scene.*; import io.anuke.arc.scene.event.*; @@ -13,13 +12,13 @@ import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.input.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import static io.anuke.mindustry.Vars.*; @@ -37,19 +36,6 @@ public class PlacementFragment extends Fragment{ Table blockTable, toggler, topTable; boolean lastGround; - //not configurable, no plans to make it configurable - final KeyCode[] inputGrid = { - KeyCode.NUM_1, KeyCode.NUM_2, KeyCode.NUM_3, KeyCode.NUM_4, - KeyCode.Q, KeyCode.W, KeyCode.E, KeyCode.R, - KeyCode.A, KeyCode.S, KeyCode.D, KeyCode.F, - KeyCode.Z, KeyCode.X, KeyCode.C, KeyCode.V - }, inputCatGrid = { - KeyCode.NUM_1, KeyCode.NUM_2, - KeyCode.Q, KeyCode.W, - KeyCode.A, KeyCode.S, - KeyCode.Z, KeyCode.X, KeyCode.C, KeyCode.V - }; - public PlacementFragment(){ Events.on(WorldLoadEvent.class, event -> { Core.app.post(() -> { @@ -92,27 +78,6 @@ public class PlacementFragment extends Fragment{ return true; } } - - if(!Core.input.keyDown(Binding.gridMode) || ui.chatfrag.chatOpen()) return false; - if(Core.input.keyDown(Binding.gridModeShift)){ //select category - int i = 0; - for(KeyCode key : inputCatGrid){ - if(Core.input.keyDown(key)){ - input.block = getByCategory(Category.all[i]).first(); - currentCategory = input.block.category; - } - i++; - } - return true; - }else{ //select block - int i = 0; - Array recipes = getByCategory(currentCategory); - for(KeyCode key : inputGrid){ - if(Core.input.keyDown(key)) - input.block = (i < recipes.size && unlocked(recipes.get(i))) ? recipes.get(i) : null; - i++; - } - } return false; } @@ -272,6 +237,14 @@ public class PlacementFragment extends Fragment{ blocksSelect.table(control.input::buildPlacementUI).name("inputTable").growX(); }).fillY().bottom().touchable(Touchable.enabled); frame.table(categories -> { + categories.bottom(); + categories.add(new Image(Styles.black6){ + @Override + public void draw(){ + if(height <= Scl.scl(3f)) return; + getDrawable().draw(x, y, width, height - Scl.scl(3f)); + } + }).colspan(2).growX().growY().padTop(-3f).row(); categories.defaults().size(50f); ButtonGroup group = new ButtonGroup<>(); @@ -296,7 +269,7 @@ public class PlacementFragment extends Fragment{ rebuildCategory.run(); }).group(group).update(i -> i.setChecked(currentCategory == cat)).name("category-" + cat.name()); } - }).touchable(Touchable.enabled); + }).fillY().bottom().touchable(Touchable.enabled); rebuildCategory.run(); frame.update(() -> { diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 838eeeee7a..7d2964c5b9 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -17,11 +17,11 @@ import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.arc.util.pooling.*; +import io.anuke.mindustry.ctype.*; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.effect.*; import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; @@ -39,8 +39,6 @@ import static io.anuke.mindustry.Vars.*; public class Block extends BlockStorage{ public static final int crackRegions = 8, maxCrackSize = 5; - private static final BooleanProvider invisible = () -> false; - /** whether this block has a tile entity that updates */ public boolean update; /** whether this block has health and can be destroyed */ @@ -83,10 +81,14 @@ public class Block extends BlockStorage{ public BlockGroup group = BlockGroup.none; /** List of block flags. Used for AI indexing. */ public EnumSet flags = EnumSet.of(); + /** Targeting priority of this block, as seen by enemies.*/ + public TargetPriority priority = TargetPriority.base; /** Whether the block can be tapped and selected to configure. */ public boolean configurable; /** Whether this block consumes touchDown events when tapped. */ public boolean consumesTap; + /** Whether the config is positional and needs to be shifted. */ + public boolean posConfig; /** * The color of this block when displayed on the minimap or map preview. * Do not set manually! This is overriden when loading for most blocks. @@ -116,13 +118,15 @@ public class Block extends BlockStorage{ public float idleSoundVolume = 0.5f; /** Cost of constructing this block. */ - public ItemStack[] requirements = new ItemStack[]{}; + public ItemStack[] requirements = {}; /** Category in place menu. */ public Category category = Category.distribution; /** Cost of building this block; do not modify directly! */ public float buildCost; /** Whether this block is visible and can currently be built. */ - public BooleanProvider buildVisibility = invisible; + public BuildVisibility buildVisibility = BuildVisibility.hidden; + /** Multiplier for speed of building this block. */ + public float buildCostMultiplier = 1f; /** Whether this block has instant transfer.*/ public boolean instantTransfer = false; public boolean alwaysUnlocked = false; @@ -153,7 +157,7 @@ public class Block extends BlockStorage{ } public boolean isBuildable(){ - return buildVisibility != invisible; + return buildVisibility != BuildVisibility.hidden && buildVisibility != BuildVisibility.debugOnly; } public boolean isStatic(){ @@ -386,6 +390,7 @@ public class Block extends BlockStorage{ for(ItemStack stack : requirements){ buildCost += stack.amount * stack.item.cost; } + buildCost *= buildCostMultiplier; if(consumes.has(ConsumeType.power)) hasPower = true; if(consumes.has(ConsumeType.item)) hasItems = true; @@ -678,8 +683,32 @@ public class Block extends BlockStorage{ public void drawRequestRegion(BuildRequest req, Eachable list){ TextureRegion reg = icon(Cicon.full); Draw.rect(icon(Cicon.full), req.drawx(), req.drawy(), - reg.getWidth() * req.animScale * Draw.scl, reg.getHeight() * req.animScale * Draw.scl, - !rotate ? 0 : req.rotation * 90); + reg.getWidth() * req.animScale * Draw.scl, + reg.getHeight() * req.animScale * Draw.scl, + !rotate ? 0 : req.rotation * 90); + + if(req.hasConfig){ + drawRequestConfig(req, list); + } + } + + public void drawRequestConfig(BuildRequest req, Eachable list){ + + } + + public void drawRequestConfigCenter(BuildRequest req, Content content, String region){ + Color color = content instanceof Item ? ((Item)content).color : content instanceof Liquid ? ((Liquid)content).color : null; + if(color == null) return; + + Draw.color(color); + Draw.scl *= req.animScale; + Draw.rect(region, req.drawx(), req.drawy()); + Draw.scl /= req.animScale; + Draw.color(); + } + + public void drawRequestConfigTop(BuildRequest req, Eachable list){ + } @Override @@ -803,7 +832,7 @@ public class Block extends BlockStorage{ } public boolean isVisible(){ - return buildVisibility.get() && !isHidden(); + return buildVisibility.visible() && !isHidden(); } public boolean isFloor(){ @@ -820,7 +849,7 @@ public class Block extends BlockStorage{ @Override public boolean isHidden(){ - return !buildVisibility.get(); + return !buildVisibility.visible(); } @Override @@ -829,21 +858,21 @@ public class Block extends BlockStorage{ } protected void requirements(Category cat, ItemStack[] stacks, boolean unlocked){ - requirements(cat, () -> true, stacks); + requirements(cat, BuildVisibility.shown, stacks); this.alwaysUnlocked = unlocked; } protected void requirements(Category cat, ItemStack[] stacks){ - requirements(cat, () -> true, stacks); + requirements(cat, BuildVisibility.shown, stacks); } /** Sets up requirements. Use only this method to set up requirements. */ - protected void requirements(Category cat, BooleanProvider visible, ItemStack[] stacks){ + protected void requirements(Category cat, BuildVisibility visible, ItemStack[] stacks){ this.category = cat; this.requirements = stacks; this.buildVisibility = visible; - Arrays.sort(requirements, (a, b) -> Integer.compare(a.item.id, b.item.id)); + Arrays.sort(requirements, Structs.comparingInt(i -> i.item.id)); } } diff --git a/core/src/io/anuke/mindustry/world/BlockStorage.java b/core/src/io/anuke/mindustry/world/BlockStorage.java index 984858a5ef..fc2ab42d1a 100644 --- a/core/src/io/anuke/mindustry/world/BlockStorage.java +++ b/core/src/io/anuke/mindustry/world/BlockStorage.java @@ -10,7 +10,7 @@ import io.anuke.mindustry.entities.Effects; import io.anuke.mindustry.entities.effect.Puddle; import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.type.Unit; -import io.anuke.mindustry.game.UnlockableContent; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.consumers.Consumers; diff --git a/core/src/io/anuke/mindustry/world/LegacyColorMapper.java b/core/src/io/anuke/mindustry/world/LegacyColorMapper.java index 17c7e19417..e57e99eb3a 100644 --- a/core/src/io/anuke/mindustry/world/LegacyColorMapper.java +++ b/core/src/io/anuke/mindustry/world/LegacyColorMapper.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.world; import io.anuke.arc.collection.IntMap; import io.anuke.arc.graphics.Color; import io.anuke.mindustry.content.Blocks; -import io.anuke.mindustry.game.ContentList; +import io.anuke.mindustry.ctype.ContentList; import io.anuke.mindustry.world.blocks.Floor; public class LegacyColorMapper implements ContentList{ diff --git a/core/src/io/anuke/mindustry/world/blocks/Autotiler.java b/core/src/io/anuke/mindustry/world/blocks/Autotiler.java index 3256a47178..4ee4d938fb 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Autotiler.java +++ b/core/src/io/anuke/mindustry/world/blocks/Autotiler.java @@ -33,20 +33,20 @@ public interface Autotiler{ } }); - return buildBlending(req.tile(), req.rotation, directionals); + return buildBlending(req.tile(), req.rotation, directionals, req.worldContext); } - default int[] buildBlending(Tile tile, int rotation, BuildRequest[] directional){ + default int[] buildBlending(Tile tile, int rotation, BuildRequest[] directional, boolean world){ int[] blendresult = AutotilerHolder.blendresult; blendresult[0] = 0; blendresult[1] = blendresult[2] = 1; int num = - (blends(tile, rotation, directional, 2) && blends(tile, rotation, directional, 1) && blends(tile, rotation, directional, 3)) ? 0 : - (blends(tile, rotation, directional, 1) && blends(tile, rotation, directional, 3)) ? 1 : - (blends(tile, rotation, directional, 1) && blends(tile, rotation, directional, 2)) ? 2 : - (blends(tile, rotation, directional, 3) && blends(tile, rotation, directional, 2)) ? 3 : - blends(tile, rotation, directional, 1) ? 4 : - blends(tile, rotation, directional, 3) ? 5 : + (blends(tile, rotation, directional, 2, world) && blends(tile, rotation, directional, 1, world) && blends(tile, rotation, directional, 3, world)) ? 0 : + (blends(tile, rotation, directional, 1, world) && blends(tile, rotation, directional, 3, world)) ? 1 : + (blends(tile, rotation, directional, 1, world) && blends(tile, rotation, directional, 2, world)) ? 2 : + (blends(tile, rotation, directional, 3, world) && blends(tile, rotation, directional, 2, world)) ? 3 : + blends(tile, rotation, directional, 1, world) ? 4 : + blends(tile, rotation, directional, 3, world) ? 5 : -1; transformCase(num, blendresult); return blendresult; @@ -70,7 +70,7 @@ public interface Autotiler{ } } - default boolean blends(Tile tile, int rotation, @Nullable BuildRequest[] directional, int direction){ + default boolean blends(Tile tile, int rotation, @Nullable BuildRequest[] directional, int direction, boolean checkWorld){ int realDir = Mathf.mod(rotation - direction, 4); if(directional != null && directional[realDir] != null){ BuildRequest req = directional[realDir]; @@ -78,7 +78,7 @@ public interface Autotiler{ return true; } } - return blends(tile, rotation, direction); + return checkWorld && blends(tile, rotation, direction); } default boolean blends(Tile tile, int rotation, int direction){ diff --git a/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java b/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java index 37c3ccc6fa..10f678173c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java @@ -12,11 +12,12 @@ import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.effect.*; import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.*; +import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.*; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.modules.*; @@ -56,23 +57,27 @@ public class BuildBlock extends Block{ } @Remote(called = Loc.server) - public static void onConstructFinish(Tile tile, Block block, int builderID, byte rotation, Team team){ + public static void onConstructFinish(Tile tile, Block block, int builderID, byte rotation, Team team, boolean skipConfig){ if(tile == null) return; float healthf = tile.entity == null ? 1f : tile.entity.healthf(); world.setBlock(tile, block, team, rotation); if(tile.entity != null){ tile.entity.health = block.health * healthf; } - Effects.effect(Fx.placeBlock, tile.drawx(), tile.drawy(), block.size); - Core.app.post(() -> tile.block().placed(tile)); - //last builder was this local client player, call placed() if(!headless && builderID == player.id){ - //this is run delayed, since if this is called on the server, all clients need to recieve the onBuildFinish() - //event first before they can recieve the placed() event modification results - Core.app.post(() -> tile.block().playerPlaced(tile)); + if(!skipConfig){ + tile.block().playerPlaced(tile); + } } - Core.app.post(() -> Events.fire(new BlockBuildEndEvent(tile, playerGroup.getByID(builderID), team, false))); + Effects.effect(Fx.placeBlock, tile.drawx(), tile.drawy(), block.size); + } + + public static void constructed(Tile tile, Block block, int builderID, byte rotation, Team team, boolean skipConfig){ + Call.onConstructFinish(tile, block, builderID, rotation, team, skipConfig); + tile.block().placed(tile); + + Events.fire(new BlockBuildEndEvent(tile, playerGroup.getByID(builderID), team, false)); Sounds.place.at(tile, Mathf.random(0.7f, 1.4f)); } @@ -90,7 +95,7 @@ public class BuildBlock extends Block{ @Override public TextureRegion getDisplayIcon(Tile tile){ BuildEntity entity = tile.entity(); - return (entity.cblock == null ? entity.previous : entity.cblock).icon(Cicon.full); + return (entity.cblock == null ? entity.previous : entity.cblock).icon(io.anuke.mindustry.ui.Cicon.full); } @Override @@ -135,7 +140,7 @@ public class BuildBlock extends Block{ if(entity.previous == null) return; - if(Core.atlas.isFound(entity.previous.icon(Cicon.full))){ + if(Core.atlas.isFound(entity.previous.icon(io.anuke.mindustry.ui.Cicon.full))){ Draw.rect(entity.previous.icon(Cicon.full), tile.drawx(), tile.drawy(), entity.previous.rotate ? tile.rotation() * 90 : 0); } } @@ -185,7 +190,7 @@ public class BuildBlock extends Block{ private float[] accumulator; private float[] totalAccumulator; - public boolean construct(Unit builder, @Nullable TileEntity core, float amount){ + public boolean construct(Unit builder, @Nullable TileEntity core, float amount, boolean configured){ if(cblock == null){ kill(); return false; @@ -208,7 +213,7 @@ public class BuildBlock extends Block{ } if(progress >= 1f || state.rules.infiniteResources){ - Call.onConstructFinish(tile, cblock, builderID, tile.rotation(), builder.getTeam()); + constructed(tile, cblock, builderID, tile.rotation(), builder.getTeam(), configured); return true; } return false; diff --git a/core/src/io/anuke/mindustry/world/blocks/Floor.java b/core/src/io/anuke/mindustry/world/blocks/Floor.java index 86fc8b5ea1..c293eb5f9d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Floor.java +++ b/core/src/io/anuke/mindustry/world/blocks/Floor.java @@ -9,8 +9,8 @@ import io.anuke.arc.math.*; import io.anuke.arc.math.geom.*; import io.anuke.mindustry.content.*; import io.anuke.mindustry.entities.Effects.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import static io.anuke.mindustry.Vars.tilesize; diff --git a/core/src/io/anuke/mindustry/world/blocks/ItemSelection.java b/core/src/io/anuke/mindustry/world/blocks/ItemSelection.java index 391638355f..b892ade149 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ItemSelection.java +++ b/core/src/io/anuke/mindustry/world/blocks/ItemSelection.java @@ -5,10 +5,10 @@ import io.anuke.arc.function.*; import io.anuke.arc.scene.style.*; import io.anuke.arc.scene.ui.*; import io.anuke.arc.scene.ui.layout.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import static io.anuke.mindustry.Vars.*; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/Wall.java b/core/src/io/anuke/mindustry/world/blocks/defense/Wall.java index 3062883588..66972be035 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/Wall.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/Wall.java @@ -16,6 +16,7 @@ public class Wall extends Block{ solid = true; destructible = true; group = BlockGroup.walls; + buildCostMultiplier = 5f; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/CooledTurret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/CooledTurret.java index 86f15dce93..58038d857e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/CooledTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/CooledTurret.java @@ -11,6 +11,7 @@ import io.anuke.mindustry.type.*; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.consumers.*; import io.anuke.mindustry.world.meta.*; +import io.anuke.mindustry.world.meta.values.*; import static io.anuke.mindustry.Vars.tilesize; @@ -31,9 +32,7 @@ public class CooledTurret extends Turret{ public void setStats(){ super.setStats(); - float maxUsed = consumes.get(ConsumeType.liquid).amount; - - stats.add(BlockStat.boostEffect, 1f + maxUsed * coolantMultiplier, StatUnit.timesSpeed); + stats.add(BlockStat.booster, new BoosterListValue(reload, consumes.get(ConsumeType.liquid).amount, coolantMultiplier, true, l -> consumes.liquidfilters.get(l.id))); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java index b48b36303f..40110a7d26 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java @@ -7,11 +7,11 @@ import io.anuke.mindustry.*; import io.anuke.mindustry.content.*; import io.anuke.mindustry.entities.bullet.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.consumers.*; import io.anuke.mindustry.world.meta.*; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LaserTurret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LaserTurret.java index b33b21a55d..d6b94f872c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LaserTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LaserTurret.java @@ -1,17 +1,15 @@ package io.anuke.mindustry.world.blocks.defense.turrets; -import io.anuke.arc.math.Angles; -import io.anuke.arc.math.Mathf; -import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.Effects; -import io.anuke.mindustry.entities.type.Bullet; -import io.anuke.mindustry.entities.bullet.BulletType; -import io.anuke.mindustry.entities.type.TileEntity; -import io.anuke.mindustry.type.Liquid; -import io.anuke.mindustry.world.Tile; +import io.anuke.arc.math.*; +import io.anuke.arc.util.*; +import io.anuke.mindustry.entities.*; +import io.anuke.mindustry.entities.bullet.*; +import io.anuke.mindustry.entities.type.*; +import io.anuke.mindustry.type.*; +import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.consumers.*; -import io.anuke.mindustry.world.meta.BlockStat; -import io.anuke.mindustry.world.meta.StatUnit; +import io.anuke.mindustry.world.meta.*; +import io.anuke.mindustry.world.meta.values.*; import static io.anuke.mindustry.Vars.tilesize; @@ -24,13 +22,15 @@ public class LaserTurret extends PowerTurret{ canOverdrive = false; consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.01f)).update(false); + coolantMultiplier = 1f; } @Override public void setStats(){ super.setStats(); - stats.remove(BlockStat.boostEffect); + stats.remove(BlockStat.booster); + stats.add(BlockStat.input, new BoosterListValue(reload, consumes.get(ConsumeType.liquid).amount, coolantMultiplier, false, l -> consumes.liquidfilters.get(l.id))); stats.remove(BlockStat.damage); //damages every 5 ticks, at least in meltdown's case stats.add(BlockStat.damage, shootType.damage * 60f / 5f, StatUnit.perSecond); @@ -74,7 +74,7 @@ public class LaserTurret extends PowerTurret{ Liquid liquid = entity.liquids.current(); float maxUsed = consumes.get(ConsumeType.liquid).amount; - float used = baseReloadSpeed(tile) * (tile.isEnemyCheat() ? maxUsed : Math.min(entity.liquids.get(liquid), maxUsed * Time.delta())); + float used = baseReloadSpeed(tile) * (tile.isEnemyCheat() ? maxUsed : Math.min(entity.liquids.get(liquid), maxUsed * Time.delta())) * liquid.heatCapacity * coolantMultiplier; entity.reload += used; entity.liquids.remove(liquid, used); diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java index 948161dfd1..8a124ea3cc 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java @@ -72,6 +72,7 @@ public abstract class Turret extends Block{ public Turret(String name){ super(name); + priority = TargetPriority.turret; update = true; solid = true; layer = Layer.turret; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/ArmoredConveyor.java b/core/src/io/anuke/mindustry/world/blocks/distribution/ArmoredConveyor.java index 3bad2c3945..3f87d9e645 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/ArmoredConveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/ArmoredConveyor.java @@ -18,6 +18,7 @@ public class ArmoredConveyor extends Conveyor{ @Override public boolean blends(Tile tile, int rotation, int otherx, int othery, int otherrot, Block otherblock){ return otherblock.outputsItems() && (Point2.equals(tile.x + Geometry.d4(rotation).x, tile.y + Geometry.d4(rotation).y, otherx, othery) - || ((!otherblock.rotate && Edges.getFacingEdge(otherblock, otherx, othery, tile).relativeTo(tile) == tile.rotation()) || Point2.equals(otherx + Geometry.d4(otherrot).x, othery + Geometry.d4(otherrot).y, tile.x, tile.y))); + || ((!otherblock.rotate && Edges.getFacingEdge(otherblock, otherx, othery, tile) != null && + Edges.getFacingEdge(otherblock, otherx, othery, tile).relativeTo(tile) == tile.rotation()) || Point2.equals(otherx + Geometry.d4(otherrot).x, othery + Geometry.d4(otherrot).y, tile.x, tile.y))); } } diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java index f8f4394482..4abf4c9cdc 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java @@ -40,7 +40,7 @@ public class Conduit extends LiquidBlock implements Autotiler{ super.onProximityUpdate(tile); ConduitEntity entity = tile.entity(); - int[] bits = buildBlending(tile, tile.rotation(), null); + int[] bits = buildBlending(tile, tile.rotation(), null, true); entity.blendbits = bits[0]; } @@ -52,11 +52,13 @@ public class Conduit extends LiquidBlock implements Autotiler{ Draw.colorl(0.34f); Draw.alpha(0.5f); - Draw.rect(botRegions[bits[0]], req.drawx(), req.drawy(), req.rotation * 90); + Draw.rect(botRegions[bits[0]], req.drawx(), req.drawy(), + botRegions[bits[0]].getWidth() * Draw.scl * req.animScale, botRegions[bits[0]].getHeight() * Draw.scl * req.animScale, + req.rotation * 90); Draw.color(); - Draw.rect(topRegions[bits[0]], req.drawx(), req.drawy(), req.rotation * 90); + Draw.rect(topRegions[bits[0]], req.drawx(), req.drawy(), topRegions[bits[0]].getWidth() * Draw.scl * req.animScale, topRegions[bits[0]].getHeight() * Draw.scl * req.animScale, req.rotation * 90); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java index c643eef9d1..32b0841d4e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java @@ -9,10 +9,10 @@ import io.anuke.arc.math.geom.*; import io.anuke.arc.util.*; import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.meta.*; @@ -94,7 +94,7 @@ public class Conveyor extends Block implements Autotiler{ super.onProximityUpdate(tile); ConveyorEntity entity = tile.entity(); - int[] bits = buildBlending(tile, tile.rotation(), null); + int[] bits = buildBlending(tile, tile.rotation(), null, true); entity.blendbits = bits[0]; entity.blendsclx = bits[1]; entity.blendscly = bits[2]; @@ -107,7 +107,7 @@ public class Conveyor extends Block implements Autotiler{ if(bits == null) return; TextureRegion region = regions[bits[0]][0]; - Draw.rect(region, req.drawx(), req.drawy(), region.getWidth() * bits[1] * Draw.scl, region.getHeight() * bits[2] * Draw.scl, req.rotation * 90); + Draw.rect(region, req.drawx(), req.drawy(), region.getWidth() * bits[1] * Draw.scl * req.animScale, region.getHeight() * bits[2] * Draw.scl * req.animScale, req.rotation * 90); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/ItemBridge.java b/core/src/io/anuke/mindustry/world/blocks/distribution/ItemBridge.java index 46acbc1420..3c11b5903f 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/ItemBridge.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/ItemBridge.java @@ -3,11 +3,13 @@ package io.anuke.mindustry.world.blocks.distribution; import io.anuke.arc.*; import io.anuke.arc.collection.*; import io.anuke.arc.collection.IntSet.*; +import io.anuke.arc.function.*; import io.anuke.arc.graphics.*; 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.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; @@ -23,6 +25,7 @@ public class ItemBridge extends Block{ protected int range; protected float transportTime = 2f; protected TextureRegion endRegion, bridgeRegion, arrowRegion; + protected BuildRequest otherReq; private static int lastPlaced = Pos.invalid; @@ -34,6 +37,7 @@ public class ItemBridge extends Block{ layer = Layer.power; expanded = true; itemCapacity = 10; + posConfig = true; configurable = true; hasItems = true; unloadable = false; @@ -65,6 +69,27 @@ public class ItemBridge extends Block{ arrowRegion = Core.atlas.find(name + "-arrow"); } + @Override + public void drawRequestConfigTop(BuildRequest req, Eachable list){ + otherReq = null; + list.each(other -> { + if(other.block == this && req.config == Pos.get(other.x, other.y)){ + otherReq = other; + } + }); + + if(otherReq == null) return; + + Lines.stroke(8f); + Lines.line(bridgeRegion, + req.drawx(), + req.drawy(), + otherReq.drawx(), + otherReq.drawy(), CapStyle.none, -tilesize / 2f); + Draw.rect(arrowRegion, (req.drawx() + otherReq.drawx()) / 2f, (req.drawy() + otherReq.drawy()) / 2f, + Angles.angle(req.drawx(), req.drawy(), otherReq.drawx(), otherReq.drawy())); + } + @Override public void playerPlaced(Tile tile){ Tile link = findLink(tile.x, tile.y); diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java b/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java index c5ada69c89..04a8af5b9b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java @@ -36,6 +36,7 @@ public class MassDriver extends Block{ super(name); update = true; solid = true; + posConfig = true; configurable = true; hasItems = true; layer = Layer.turret; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java index b6c9c7831b..a1ef2bce86 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java @@ -1,10 +1,11 @@ package io.anuke.mindustry.world.blocks.distribution; -import io.anuke.arc.*; +import io.anuke.arc.function.*; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.ArcAnnotate.*; +import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.world.*; @@ -37,7 +38,7 @@ public class Sorter extends Block{ @Override public void playerPlaced(Tile tile){ if(lastItem != null){ - Core.app.post(() -> tile.configure(lastItem.id)); + tile.configure(lastItem.id); } } @@ -46,6 +47,11 @@ public class Sorter extends Block{ tile.entity().sortItem = content.item(value); } + @Override + public void drawRequestConfig(BuildRequest req, Eachable list){ + drawRequestConfigCenter(req, content.item(req.config), "center"); + } + @Override public void draw(Tile tile){ super.draw(tile); @@ -73,7 +79,7 @@ public class Sorter extends Block{ } boolean isSame(Tile tile, Tile other){ - return other != null && other.block() == this && other.entity().sortItem == tile.entity().sortItem; + return other != null && other.block() instanceof Sorter && other.entity().sortItem == tile.entity().sortItem; } Tile getTileTarget(Item item, Tile dest, Tile source, boolean flip){ diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java index 453b4032c5..1907329ee4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java @@ -33,53 +33,6 @@ public class PowerNode extends PowerBlock{ consumesPower = false; outputsPower = false; } -/* - @Remote(targets = Loc.both, called = Loc.server, forward = true) - public static void linkPowerNodes(Player player, Tile tile, Tile other){ - if(tile.entity == null || other == null || tile.entity.power == null || !((PowerNode)tile.block()).linkValid(tile, other) - || tile.entity.power.links.size >= ((PowerNode)tile.block()).maxNodes) return; - if(!Units.canInteract(player, tile)) return; - - TileEntity entity = tile.entity(); - - if(!entity.power.links.contains(other.pos())){ - entity.power.links.add(other.pos()); - } - - if(other.getTeamID() == tile.getTeamID()){ - - if(!other.entity.power.links.contains(tile.pos())){ - other.entity.power.links.add(tile.pos()); - } - } - - entity.power.graph.add(other.entity.power.graph); - } - - @Remote(targets = Loc.both, called = Loc.server, forward = true) - public static void unlinkPowerNodes(Player player, Tile tile, Tile other){ - if(tile.entity.power == null || other.entity == null || other.entity.power == null) return; - if(!Units.canInteract(player, tile)) return; - - TileEntity entity = tile.entity(); - - entity.power.links.removeValue(other.pos()); - other.entity.power.links.removeValue(tile.pos()); - - PowerGraph newgraph = new PowerGraph(); - - //reflow from this point, covering all tiles on this side - newgraph.reflow(tile); - - if(other.entity.power.graph != newgraph){ - //create new graph for other end - PowerGraph og = new PowerGraph(); - //reflow from other end - og.reflow(other); - } - } - - */ @Override public void configured(Tile tile, Player player, int value){ diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java index 5cf1aca2d0..a70ef2ba12 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java @@ -10,11 +10,11 @@ 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.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.meta.*; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Fracker.java b/core/src/io/anuke/mindustry/world/blocks/production/Fracker.java index 20804daa28..2cd220d7b2 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Fracker.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Fracker.java @@ -34,6 +34,11 @@ public class Fracker extends SolidPump{ topRegion = Core.atlas.find(name + "-top"); } + @Override + public boolean outputsItems(){ + return false; + } + @Override public void drawCracks(Tile tile){} diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Separator.java b/core/src/io/anuke/mindustry/world/blocks/production/Separator.java index 37199f6c61..90039e140e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Separator.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Separator.java @@ -4,6 +4,7 @@ import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Lines; import io.anuke.arc.math.Mathf; +import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; @@ -20,7 +21,7 @@ import io.anuke.mindustry.world.meta.values.ItemFilterValue; * Extracts a random list of items from an input item and an input liquid. */ public class Separator extends Block{ - protected ItemStack[] results; + protected @NonNull ItemStack[] results; protected float craftTime; protected float spinnerRadius = 2.5f; protected float spinnerLength = 1f; diff --git a/core/src/io/anuke/mindustry/world/blocks/sandbox/ItemSource.java b/core/src/io/anuke/mindustry/world/blocks/sandbox/ItemSource.java index 8611eb18b7..aebc81da2a 100644 --- a/core/src/io/anuke/mindustry/world/blocks/sandbox/ItemSource.java +++ b/core/src/io/anuke/mindustry/world/blocks/sandbox/ItemSource.java @@ -1,8 +1,10 @@ package io.anuke.mindustry.world.blocks.sandbox; import io.anuke.arc.*; +import io.anuke.arc.function.*; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.scene.ui.layout.*; +import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.world.*; @@ -43,6 +45,11 @@ public class ItemSource extends Block{ bars.remove("items"); } + @Override + public void drawRequestConfig(BuildRequest req, Eachable list){ + drawRequestConfigCenter(req, content.item(req.config), "center"); + } + @Override public boolean outputsItems(){ return true; diff --git a/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java b/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java index 26177da5a0..4310bd0524 100644 --- a/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java +++ b/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java @@ -2,16 +2,18 @@ package io.anuke.mindustry.world.blocks.sandbox; import io.anuke.arc.*; import io.anuke.arc.collection.*; +import io.anuke.arc.function.*; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.scene.style.*; import io.anuke.arc.scene.ui.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.ArcAnnotate.*; +import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import java.io.*; @@ -57,6 +59,11 @@ public class LiquidSource extends Block{ } } + @Override + public void drawRequestConfig(BuildRequest req, Eachable list){ + drawRequestConfigCenter(req, content.liquid(req.config), "center"); + } + @Override public void draw(Tile tile){ super.draw(tile); diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/Unloader.java b/core/src/io/anuke/mindustry/world/blocks/storage/Unloader.java index 9488337209..0b5c7d2079 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/Unloader.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/Unloader.java @@ -1,9 +1,10 @@ package io.anuke.mindustry.world.blocks.storage; -import io.anuke.arc.*; +import io.anuke.arc.function.*; import io.anuke.arc.graphics.*; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.scene.ui.layout.*; +import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.world.*; @@ -28,6 +29,11 @@ public class Unloader extends Block{ configurable = true; } + @Override + public void drawRequestConfig(BuildRequest req, Eachable list){ + drawRequestConfigCenter(req, content.item(req.config), "unloader-center"); + } + @Override public boolean canDump(Tile tile, Tile to, Item item){ return !(to.block() instanceof StorageBlock); @@ -42,7 +48,7 @@ public class Unloader extends Block{ @Override public void playerPlaced(Tile tile){ if(lastItem != null){ - Core.app.post(() -> tile.configure(lastItem.id)); + tile.configure(lastItem.id); } } @@ -109,7 +115,7 @@ public class Unloader extends Block{ UnloaderEntity entity = tile.entity(); Draw.color(entity.sortItem == null ? Color.clear : entity.sortItem.color); - Fill.square(tile.worldx(), tile.worldy(), 1f); + Draw.rect("unloader-center", tile.worldx(), tile.worldy()); Draw.color(); } diff --git a/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java b/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java index 9dfee5e827..7282ee1cf9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java @@ -6,6 +6,7 @@ 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.arc.util.ArcAnnotate.*; import io.anuke.mindustry.content.*; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.traits.*; @@ -23,7 +24,7 @@ import java.io.*; import static io.anuke.mindustry.Vars.*; public class MechPad extends Block{ - protected Mech mech; + protected @NonNull Mech mech; protected float buildTime = 60 * 5; public MechPad(String name){ diff --git a/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java b/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java index 35caf17d9c..69e15f8309 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java @@ -10,13 +10,13 @@ import io.anuke.mindustry.Vars; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.entities.Effects; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Pal; import io.anuke.mindustry.graphics.Shaders; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.Bar; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.consumers.ConsumeItems; @@ -27,7 +27,7 @@ import java.io.*; import static io.anuke.mindustry.Vars.*; public class UnitFactory extends Block{ - protected UnitType type; + protected UnitType unitType; protected float produceTime = 1000f; protected float launchVelocity = 0f; protected TextureRegion topRegion; @@ -57,7 +57,7 @@ public class UnitFactory extends Block{ Effects.effect(Fx.producesmoke, tile.drawx(), tile.drawy()); if(!net.client()){ - BaseUnit unit = factory.type.create(tile.getTeam()); + BaseUnit unit = factory.unitType.create(tile.getTeam()); unit.setSpawner(tile); unit.set(tile.drawx() + Mathf.range(4), tile.drawy() + Mathf.range(4)); unit.add(); @@ -122,7 +122,7 @@ public class UnitFactory extends Block{ @Override public void draw(Tile tile){ UnitFactoryEntity entity = tile.entity(); - TextureRegion region = type.icon(Cicon.full); + TextureRegion region = unitType.icon(Cicon.full); Draw.rect(name, tile.drawx(), tile.drawy()); @@ -170,7 +170,7 @@ public class UnitFactory extends Block{ entity.buildTime = 0f; Call.onUnitFactorySpawn(tile, entity.spawned + 1); - useContent(tile, type); + useContent(tile, unitType); entity.cons.trigger(); } diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java index 417148dd72..89c78d7ca0 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java @@ -3,10 +3,11 @@ package io.anuke.mindustry.world.consumers; import io.anuke.arc.collection.*; import io.anuke.arc.function.*; import io.anuke.arc.scene.ui.layout.*; +import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.meta.*; import io.anuke.mindustry.world.meta.values.*; @@ -14,7 +15,7 @@ import io.anuke.mindustry.world.meta.values.*; import static io.anuke.mindustry.Vars.*; public class ConsumeItemFilter extends Consume{ - public final Predicate filter; + public final @NonNull Predicate filter; public ConsumeItemFilter(Predicate item){ this.filter = item; diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java index f6b047bf6f..0b5c7bc5bc 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java @@ -4,9 +4,9 @@ import io.anuke.arc.collection.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.meta.*; import io.anuke.mindustry.world.meta.values.*; diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java index 066fb29836..faaf5dc4ca 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java @@ -2,15 +2,16 @@ package io.anuke.mindustry.world.consumers; import io.anuke.arc.collection.*; import io.anuke.arc.scene.ui.layout.*; +import io.anuke.arc.util.ArcAnnotate.*; import io.anuke.mindustry.entities.type.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.meta.*; public class ConsumeLiquid extends ConsumeLiquidBase{ - public final Liquid liquid; + public final @NonNull Liquid liquid; public ConsumeLiquid(Liquid liquid, float amount){ super(amount); diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java index 3f2ff4ced7..5a58ca323f 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java @@ -4,8 +4,8 @@ import io.anuke.arc.collection.*; import io.anuke.arc.function.Predicate; import io.anuke.arc.scene.ui.layout.Table; import io.anuke.mindustry.entities.type.TileEntity; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.type.Liquid; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.ui.MultiReqImage; import io.anuke.mindustry.ui.ReqImage; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/meta/BuildVisibility.java b/core/src/io/anuke/mindustry/world/meta/BuildVisibility.java new file mode 100644 index 0000000000..38c98aeaa2 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/meta/BuildVisibility.java @@ -0,0 +1,22 @@ +package io.anuke.mindustry.world.meta; + +import io.anuke.arc.function.*; +import io.anuke.mindustry.*; + +public enum BuildVisibility{ + hidden(() -> false), + shown(() -> true), + debugOnly(() -> false), + sandboxOnly(() -> Vars.state.rules.infiniteResources), + campaignOnly(() -> Vars.world.isZone()); + + private final BooleanProvider visible; + + public boolean visible(){ + return visible.get(); + } + + BuildVisibility(BooleanProvider visible){ + this.visible = visible; + } +} diff --git a/core/src/io/anuke/mindustry/world/meta/Producers.java b/core/src/io/anuke/mindustry/world/meta/Producers.java index 346a387860..2b430ee28a 100644 --- a/core/src/io/anuke/mindustry/world/meta/Producers.java +++ b/core/src/io/anuke/mindustry/world/meta/Producers.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.meta; -import io.anuke.mindustry.game.Content; +import io.anuke.mindustry.ctype.Content; public class Producers{ private Content output; diff --git a/core/src/io/anuke/mindustry/world/meta/values/AmmoListValue.java b/core/src/io/anuke/mindustry/world/meta/values/AmmoListValue.java index 71e4643866..86f51320b6 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/AmmoListValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/AmmoListValue.java @@ -7,9 +7,10 @@ import io.anuke.arc.math.*; import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; import io.anuke.mindustry.content.*; +import io.anuke.mindustry.ctype.UnlockableContent; import io.anuke.mindustry.entities.bullet.*; -import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; +import io.anuke.mindustry.ui.Cicon; import io.anuke.mindustry.world.meta.*; import static io.anuke.mindustry.Vars.tilesize; diff --git a/core/src/io/anuke/mindustry/world/meta/values/BoosterListValue.java b/core/src/io/anuke/mindustry/world/meta/values/BoosterListValue.java new file mode 100644 index 0000000000..5fc06abd3e --- /dev/null +++ b/core/src/io/anuke/mindustry/world/meta/values/BoosterListValue.java @@ -0,0 +1,56 @@ +package io.anuke.mindustry.world.meta.values; + +import io.anuke.arc.*; +import io.anuke.arc.function.*; +import io.anuke.arc.scene.ui.layout.*; +import io.anuke.arc.util.*; +import io.anuke.mindustry.gen.*; +import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.Cicon; +import io.anuke.mindustry.world.meta.*; + +import static io.anuke.mindustry.Vars.content; + +public class BoosterListValue implements StatValue{ + protected float reload, maxUsed, multiplier; + protected boolean baseReload; + protected Predicate filter; + + public BoosterListValue(float reload, float maxUsed, float multiplier, boolean baseReload, Predicate filter){ + this.reload = reload; + this.maxUsed = maxUsed; + this.baseReload = baseReload; + this.multiplier = multiplier; + this.filter = filter; + } + + @Override + public void display(Table table){ + + table.row(); + table.table(c -> { + for(Liquid liquid : content.liquids()){ + if(!filter.test(liquid)) continue; + + c.addImage(liquid.icon(Cicon.medium)).size(3 * 8).padRight(4).right().top(); + c.add(liquid.localizedName()).padRight(10).left().top(); + c.table(Tex.underline, bt -> { + bt.left().defaults().padRight(3).left(); + + float reloadRate = (baseReload ? 1f : 0f) + maxUsed * multiplier * liquid.heatCapacity; + float standardReload = baseReload ? reload : reload / (maxUsed * multiplier * 0.4f); + float result = standardReload / (reload / reloadRate); + bt.add(Core.bundle.format("bullet.reload", Strings.fixed(result, 1))); + }).left().padTop(-9); + c.row(); + } + }).colspan(table.getColumns()); + table.row(); + + } + + void sep(Table table, String text){ + table.row(); + table.add(text); + } +} diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index e97099f3ef..bcf4ddfb82 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -19,13 +19,13 @@ import io.anuke.arc.util.io.*; import io.anuke.arc.util.serialization.*; import io.anuke.mindustry.*; import io.anuke.mindustry.core.GameState.*; +import io.anuke.mindustry.core.Version; import io.anuke.mindustry.desktop.steam.*; import io.anuke.mindustry.game.EventType.*; -import io.anuke.mindustry.game.Version; -import io.anuke.mindustry.maps.Map; import io.anuke.mindustry.mod.Mods.*; import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.Net.*; +import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; import java.io.*; @@ -142,7 +142,7 @@ public class DesktopLauncher extends ClientLauncher{ try{ SteamAPI.loadLibraries(); }catch(Throwable t){ - Log.err(t); + logSteamError(t); fallbackSteam(); } @@ -155,11 +155,21 @@ public class DesktopLauncher extends ClientLauncher{ }catch(Throwable e){ steam = false; Log.err("Failed to load Steam native libraries."); - Log.err(e); + logSteamError(e); } } } + void logSteamError(Throwable e){ + Log.err(e); + try(OutputStream s = new FileOutputStream(new File("steam-error-log-" + System.nanoTime() + ".txt"))){ + String log = Strings.parseException(e, true); + s.write(log.getBytes()); + }catch(Exception e2){ + Log.err(e2); + } + } + void fallbackSteam(){ try{ String name = "steam_api"; @@ -169,7 +179,7 @@ public class DesktopLauncher extends ClientLauncher{ Streams.copyStream(getClass().getResourceAsStream(name), new FileOutputStream(name)); System.loadLibrary(new File(name).getAbsolutePath()); }catch(Throwable e){ - Log.err(e); + logSteamError(e); } } @@ -249,28 +259,18 @@ public class DesktopLauncher extends ClientLauncher{ } @Override - public Array getExternalMaps(){ - return !steam ? super.getExternalMaps() : SVars.workshop.getMapFiles(); + public Array getWorkshopContent(Class type){ + return !steam ? super.getWorkshopContent(type) : SVars.workshop.getWorkshopFiles(type); } @Override - public Array getExternalMods(){ - return !steam ? super.getExternalMods() : SVars.workshop.getModFiles(); + public void viewListing(Publishable pub){ + SVars.workshop.viewListing(pub); } @Override - public void viewMapListing(Map map){ - viewListing(map.file.parent().name()); - } - - @Override - public void viewListing(String mapid){ - SVars.net.friends.activateGameOverlayToWebPage("steam://url/CommunityFilePage/" + mapid); - } - - @Override - public void viewMapListingInfo(Map map){ - SVars.workshop.viewMapListingInfo(map); + public void viewListingID(String id){ + SVars.net.friends.activateGameOverlayToWebPage("steam://url/CommunityFilePage/" + id); } @Override @@ -284,8 +284,8 @@ public class DesktopLauncher extends ClientLauncher{ } @Override - public void publishMap(Map map){ - SVars.workshop.publishMap(map); + public void publish(Publishable pub){ + SVars.workshop.publish(pub); } @Override diff --git a/desktop/src/io/anuke/mindustry/desktop/steam/SNet.java b/desktop/src/io/anuke/mindustry/desktop/steam/SNet.java index f6f9a6c3bf..16bb25ff67 100644 --- a/desktop/src/io/anuke/mindustry/desktop/steam/SNet.java +++ b/desktop/src/io/anuke/mindustry/desktop/steam/SNet.java @@ -9,8 +9,8 @@ import io.anuke.arc.collection.*; import io.anuke.arc.function.*; import io.anuke.arc.util.*; import io.anuke.arc.util.pooling.*; +import io.anuke.mindustry.core.Version; import io.anuke.mindustry.game.EventType.*; -import io.anuke.mindustry.game.Version; import io.anuke.mindustry.game.*; import io.anuke.mindustry.net.ArcNetImpl.*; import io.anuke.mindustry.net.*; diff --git a/desktop/src/io/anuke/mindustry/desktop/steam/SWorkshop.java b/desktop/src/io/anuke/mindustry/desktop/steam/SWorkshop.java index 31f6029e44..682691af68 100644 --- a/desktop/src/io/anuke/mindustry/desktop/steam/SWorkshop.java +++ b/desktop/src/io/anuke/mindustry/desktop/steam/SWorkshop.java @@ -9,10 +9,11 @@ import io.anuke.arc.files.*; import io.anuke.arc.function.*; import io.anuke.arc.scene.ui.*; import io.anuke.arc.util.*; -import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.maps.*; +import io.anuke.mindustry.mod.Mods.*; +import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.dialogs.*; import static io.anuke.mindustry.Vars.*; @@ -20,10 +21,10 @@ import static io.anuke.mindustry.Vars.*; public class SWorkshop implements SteamUGCCallback{ public final SteamUGC ugc = new SteamUGC(this); - private Map lastMap; - private Array mapFiles; - private Array modFiles; + private ObjectMap, Array> workshopFiles = new ObjectMap<>(); private ObjectMap, SteamResult>> detailHandlers = new ObjectMap<>(); + private Array> itemHandlers = new Array<>(); + private ObjectMap updatedHandlers = new ObjectMap<>(); public SWorkshop(){ int items = ugc.getNumSubscribedItems(); @@ -36,130 +37,186 @@ public class SWorkshop implements SteamUGCCallback{ return new FileHandle(info.getFolder()); }).select(f -> f != null && f.list().length > 0); - mapFiles = folders.select(f -> f.list().length == 1 && f.list()[0].extension().equals(mapExtension)).map(f -> f.list()[0]); - modFiles = folders.select(f -> f.child("mod.json").exists()); + workshopFiles.put(Map.class, folders.select(f -> f.list().length == 1 && f.list()[0].extension().equals(mapExtension)).map(f -> f.list()[0])); + workshopFiles.put(Schematic.class, folders.select(f -> f.list().length == 1 && f.list()[0].extension().equals(schematicExtension)).map(f -> f.list()[0])); + workshopFiles.put(LoadedMod.class, folders.select(f -> f.child("mod.json").exists())); - if(!mapFiles.isEmpty()){ + if(!workshopFiles.get(Map.class).isEmpty()){ SAchievement.downloadMapWorkshop.complete(); } - Log.info("Fetching {0} subscribed maps.", mapFiles.size); - Log.info("Fetching {0} subscribed mods.", modFiles.size); + workshopFiles.each((type, list) -> { + Log.info("Fetched content ({0}): {1}", type.getSimpleName(), list.size); + }); } - public Array getMapFiles(){ - return mapFiles; + public Array getWorkshopFiles(Class type){ + return workshopFiles.getOr(type, () -> new Array<>(0)); } - public Array getModFiles(){ - return modFiles; - } - - public void publishMap(Map map){ - if(map.tags.containsKey("steamid")){ - Log.info("Map already published, redirecting to ID."); - SVars.net.friends.activateGameOverlayToWebPage("steam://url/CommunityFilePage/" + map.tags.get("steamid")); + /** Publish a new item and submit an update for it. + * If it is already published, redirects to its page.*/ + public void publish(Publishable p){ + Log.info("publish(): " + p.steamTitle()); + if(p.hasSteamID()){ + Log.info("Content already published, redirecting to ID."); + viewListing(p); return; } - //update author name when publishing - map.tags.put("author", SVars.net.friends.getPersonaName()); - ui.editor.editor.getTags().put("author", map.tags.get("author")); - ui.editor.save(); + if(!p.prePublish()){ + Log.info("Rejecting due to pre-publish."); + return; + } - FloatingDialog dialog = new FloatingDialog("$confirm"); - dialog.setFillParent(false); - dialog.cont.add("$map.publish.confirm").width(600f).wrap(); - dialog.addCloseButton(); - dialog.buttons.addImageTextButton("$eula", Icon.linkSmall, () -> { - SVars.net.friends.activateGameOverlayToWebPage("https://steamcommunity.com/sharedfiles/workshoplegalagreement"); - }).size(210f, 64f); - - dialog.buttons.addImageTextButton("$ok", Icon.checkSmall, () -> { - this.lastMap = map; - ugc.createItem(SVars.steamID, WorkshopFileType.Community); - ui.loadfrag.show("$map.publishing"); - Log.info("Publish map " + map.name()); - dialog.hide(); - }).size(170f, 64f); - dialog.show(); + showPublish(id -> update(p, id, null)); } - public void viewMapListingInfo(Map map){ - String id = map.tags.get("steamid"); + /** Update an existing item with a changelog. */ + public void updateItem(Publishable p, String changelog){ + String id = p.getSteamID(); long handle = Strings.parseLong(id, -1); SteamPublishedFileID fid = new SteamPublishedFileID(handle); + update(p, fid, changelog); + } - Log.info("Requesting map listing view; id = " + id); + /** Fetches info for an item, checking to make sure that it exists.*/ + public void viewListing(Publishable p){ + long handle = Strings.parseLong(p.getSteamID(), -1); + SteamPublishedFileID id = new SteamPublishedFileID(handle); ui.loadfrag.show(); - SteamUGCQuery query = ugc.createQueryUGCDetailsRequest(fid); - Log.info("POST " + query); - - detailHandlers.put(query, (detailsList, result) -> { + query(ugc.createQueryUGCDetailsRequest(id), (detailsList, result) -> { ui.loadfrag.hide(); - Log.info("Map listing result: " + result + " " + detailsList); - if(result == SteamResult.OK){ SteamUGCDetails details = detailsList.first(); if(details.getResult() == SteamResult.OK){ if(details.getOwnerID().equals(SVars.user.user.getSteamID())){ - FloatingDialog dialog = new FloatingDialog("$editor.mapinfo"); + FloatingDialog dialog = new FloatingDialog("$workshop.info"); dialog.setFillParent(false); - dialog.cont.add("$map.menu").pad(20f); + dialog.cont.add("$workshop.menu").pad(20f); dialog.addCloseButton(); dialog.buttons.addImageTextButton("$view.workshop", Icon.linkSmall, () -> { - platform.viewListing(id); + viewListingID(id); dialog.hide(); }).size(210f, 64f); - dialog.buttons.addImageTextButton("$map.update", Icon.upgradeSmall, () -> { - new FloatingDialog("$map.update"){{ + dialog.buttons.addImageTextButton("$workshop.update", Icon.upgradeSmall, () -> { + new FloatingDialog("$workshop.update"){{ setFillParent(false); - cont.margin(10).add("$map.changelog").padRight(6f); + cont.margin(10).add("$changelog").padRight(6f); cont.row(); TextArea field = cont.addArea("", t -> {}).size(500f, 160f).get(); field.setMaxLength(400); buttons.defaults().size(120, 54).pad(4); buttons.addButton("$ok", () -> { - ui.loadfrag.show("$map.publishing"); - lastMap = map; - updateMap(map, details.getPublishedFileID(), field.getText().replace("\r", "\n")); + ui.loadfrag.show("$publishing"); + updateItem(p, field.getText().replace("\r", "\n")); dialog.hide(); hide(); - - Log.info("Update map " + map.name()); }); buttons.addButton("$cancel", this::hide); }}.show(); }).size(210f, 64f); dialog.show(); - }else{ SVars.net.friends.activateGameOverlayToWebPage("steam://url/CommunityFilePage/" + SteamNativeHandle.getNativeHandle(details.getPublishedFileID())); } }else if(details.getResult() == SteamResult.FileNotFound){ - //force-remove tags - ui.editor.editor.getTags().remove("steamid"); - map.tags.remove("steamid"); - ui.editor.save(); - - ui.showErrorMessage("$map.missing"); + p.removeSteamID(); + ui.showErrorMessage("$missing"); }else{ - ui.showErrorMessage(Core.bundle.format("map.load.error", result.name())); + ui.showErrorMessage(Core.bundle.format("workshop.error", details.getResult().name())); } }else{ - ui.showErrorMessage(Core.bundle.format("map.load.error", result.name())); + ui.showErrorMessage(Core.bundle.format("workshop.error", result.name())); } }); + } + void viewListingID(SteamPublishedFileID id){ + SVars.net.friends.activateGameOverlayToWebPage("steam://url/CommunityFilePage/" + SteamNativeHandle.getNativeHandle(id)); + } + + void update(Publishable p, SteamPublishedFileID id, String changelog){ + Log.info("Calling update({0})", p.steamTitle()); + String sid = SteamNativeHandle.getNativeHandle(id) + ""; + + updateItem(id, h -> { + if(p.steamDescription() != null){ + ugc.setItemDescription(h, p.steamDescription()); + } + + Array tags = p.extraTags(); + tags.add(p.steamTag()); + + ugc.setItemTitle(h, p.steamTitle()); + ugc.setItemTags(h, tags.toArray(String.class)); + ugc.setItemPreview(h, p.createSteamPreview(sid).absolutePath()); + ugc.setItemContent(h, p.createSteamFolder(sid).absolutePath()); + if(changelog == null){ + ugc.setItemVisibility(h, PublishedFileVisibility.Private); + } + ugc.submitItemUpdate(h, changelog == null ? "" : changelog); + }, () -> p.addSteamID(sid)); + } + + void showPublish(Consumer published){ + FloatingDialog dialog = new FloatingDialog("$confirm"); + dialog.setFillParent(false); + dialog.cont.add("$publish.confirm").width(600f).wrap(); + dialog.addCloseButton(); + dialog.buttons.addImageTextButton("$eula", Icon.linkSmall, + () -> SVars.net.friends.activateGameOverlayToWebPage("https://steamcommunity.com/sharedfiles/workshoplegalagreement")) + .size(210f, 64f); + + dialog.buttons.addImageTextButton("$ok", Icon.checkSmall, () -> { + Log.info("Accepted, publishing item..."); + itemHandlers.add(published); + ugc.createItem(SVars.steamID, WorkshopFileType.Community); + ui.loadfrag.show("$publishing"); + dialog.hide(); + }).size(170f, 64f); + dialog.show(); + } + + void query(SteamUGCQuery query, BiConsumer, SteamResult> handler){ + Log.info("POST QUERY " + query); + detailHandlers.put(query, handler); ugc.sendQueryUGCRequest(query); } + void updateItem(SteamPublishedFileID publishedFileID, Consumer tagger, Runnable updated){ + try{ + SteamUGCUpdateHandle h = ugc.startItemUpdate(SVars.steamID, publishedFileID); + Log.info("begin updateItem({0})", publishedFileID.toString()); + + tagger.accept(h); + Log.info("Tagged."); + + ItemUpdateInfo info = new ItemUpdateInfo(); + + ui.loadfrag.setProgress(() -> { + ItemUpdateStatus status = ugc.getItemUpdateProgress(h, info); + ui.loadfrag.setText("$" + status.name().toLowerCase()); + if(status == ItemUpdateStatus.Invalid){ + ui.loadfrag.setText("$done"); + return 1f; + } + return (float)status.ordinal() / (float)ItemUpdateStatus.values().length; + }); + + updatedHandlers.put(publishedFileID, updated); + }catch(Throwable t){ + ui.loadfrag.hide(); + Log.err(t); + } + } + @Override public void onRequestUGCDetails(SteamUGCDetails details, SteamResult result){ @@ -167,21 +224,26 @@ public class SWorkshop implements SteamUGCCallback{ @Override public void onUGCQueryCompleted(SteamUGCQuery query, int numResultsReturned, int totalMatchingResults, boolean isCachedData, SteamResult result){ - Log.info("GET " + query); + Log.info("GET QUERY " + query); if(detailHandlers.containsKey(query)){ + Log.info("Query being handled..."); if(numResultsReturned > 0){ + Log.info("{0} q results", numResultsReturned); Array details = new Array<>(); for(int i = 0; i < numResultsReturned; i++){ - details.set(i, new SteamUGCDetails()); + details.add(new SteamUGCDetails()); ugc.getQueryUGCResult(query, i, details.get(i)); } detailHandlers.get(query).accept(details, result); }else{ + Log.info("Nothing found."); detailHandlers.get(query).accept(new Array<>(), SteamResult.FileNotFound); } detailHandlers.remove(query); + }else{ + Log.info("Query not handled."); } } @@ -202,55 +264,19 @@ public class SWorkshop implements SteamUGCCallback{ @Override public void onCreateItem(SteamPublishedFileID publishedFileID, boolean needsToAcceptWLA, SteamResult result){ - if(lastMap == null){ - Log.err("No map to publish?"); - return; - } - - //SVars.net.friends.activateGameOverlayToWebPage("steam://url/CommunityFilePage/" + publishedFileID.toString()); - - Map map = lastMap; - Log.info("Create item {0} result {1} {2}", SteamNativeHandle.getNativeHandle(publishedFileID), result, needsToAcceptWLA); - - if(result == SteamResult.OK){ - updateMap(map, publishedFileID, ""); - }else{ - ui.showErrorMessage(Core.bundle.format("map.publish.error ", result.name())); - } - - lastMap = null; - } - - void updateMap(Map map, SteamPublishedFileID publishedFileID, String changelog){ - SteamUGCUpdateHandle h = ugc.startItemUpdate(SVars.steamID, publishedFileID); - - Gamemode mode = Gamemode.attack.valid(map) ? Gamemode.attack : Gamemode.survival; - FileHandle mapFile = tmpDirectory.child("map_" + publishedFileID.toString()).child("map.msav"); - lastMap.file.copyTo(mapFile); - - Log.info(mapFile.parent().absolutePath()); - Log.info(map.previewFile().absolutePath()); - - ugc.setItemTitle(h, map.name()); - ugc.setItemDescription(h, map.description()); - ugc.setItemTags(h, new String[]{"map", mode.name()}); - ugc.setItemVisibility(h, PublishedFileVisibility.Private); - ugc.setItemPreview(h, map.previewFile().absolutePath()); - ugc.setItemContent(h, mapFile.parent().absolutePath()); - ugc.addItemKeyValueTag(h, "mode", mode.name()); - ugc.submitItemUpdate(h, changelog); - - ItemUpdateInfo info = new ItemUpdateInfo(); - - ui.loadfrag.setProgress(() -> { - ItemUpdateStatus status = ugc.getItemUpdateProgress(h, info); - ui.loadfrag.setText("$" + status.name().toLowerCase()); - if(status == ItemUpdateStatus.Invalid){ - ui.loadfrag.setText("$done"); - return 1f; + Log.info("onCreateItem(" + result + ")"); + if(!itemHandlers.isEmpty()){ + if(result == SteamResult.OK){ + Log.info("Passing to first handler."); + itemHandlers.first().accept(publishedFileID); + }else{ + ui.showErrorMessage(Core.bundle.format("publish.error ", result.name())); } - return (float)status.ordinal() / (float)ItemUpdateStatus.values().length; - }); + + itemHandlers.remove(0); + }else{ + Log.err("No handlers for createItem()"); + } } @Override @@ -263,15 +289,12 @@ public class SWorkshop implements SteamUGCCallback{ if(needsToAcceptWLA){ SVars.net.friends.activateGameOverlayToWebPage("https://steamcommunity.com/sharedfiles/workshoplegalagreement"); } - ui.editor.editor.getTags().put("steamid", SteamNativeHandle.getNativeHandle(publishedFileID) + ""); - try{ - ui.editor.save(); - }catch(Exception e){ - Log.err(e); + + if(updatedHandlers.containsKey(publishedFileID)){ + updatedHandlers.get(publishedFileID).run(); } - Events.fire(new MapPublishEvent()); }else{ - ui.showErrorMessage(Core.bundle.format("map.publish.error ", result.name())); + ui.showErrorMessage(Core.bundle.format("publish.error ", result.name())); } } diff --git a/fastlane/metadata/android/ja-JP/full_description.txt b/fastlane/metadata/android/ja-JP/full_description.txt new file mode 100644 index 0000000000..d76eb7a53c --- /dev/null +++ b/fastlane/metadata/android/ja-JP/full_description.txt @@ -0,0 +1,14 @@ +ベルトコンベアーを巧みに配置して、弾薬をタレットに送り込み、建設に必要な材料を集めて、敵からコアを守り切ろう。あなたのフレンドとクロスプラットフォームでマルチプレイして、お互いに協力したり、チームで戦ったりしよう。 + +Mindustryの特徴: +- 24個のマップ +- テックツリーや新しいエリアの解放を目指す +- 4つのパワフルなボス +- 電気、液体、アイテムの輸送システム +- 19個の個性的なドローンや機体 +- 120以上のテクノロジーブロックを使いこなす +- 75以上の異なる環境ブロック +- ローカルネットワークや専用サーバーで、クロスプラットフォームのマルチプレイが可能 +- カスタマイズ可能なゲーム: ブロックのコスト変更、敵のステータス、初期アイテム、ウェーブのタイミング など… +- 強力なエディター、鉱石をランダムに生成したり、地形、デコレーション、左右対称なマップも制作可能 +- マップごとにウェーブの構成もカスタマイズ可能 \ No newline at end of file diff --git a/fastlane/metadata/android/ja-JP/short_description.txt b/fastlane/metadata/android/ja-JP/short_description.txt new file mode 100644 index 0000000000..a7430009eb --- /dev/null +++ b/fastlane/metadata/android/ja-JP/short_description.txt @@ -0,0 +1 @@ +工場ベースのサンドボックスタワーディフェンスゲーム。 \ No newline at end of file diff --git a/fastlane/metadata/android/ja-JP/title.txt b/fastlane/metadata/android/ja-JP/title.txt new file mode 100644 index 0000000000..2beb939017 --- /dev/null +++ b/fastlane/metadata/android/ja-JP/title.txt @@ -0,0 +1 @@ +Mindustry \ No newline at end of file diff --git a/fastlane/metadata/android/ja-JP/video.txt b/fastlane/metadata/android/ja-JP/video.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/fastlane/metadata/steam/Simplified Chinese/achievements.vdf b/fastlane/metadata/steam/Simplified Chinese/achievements.vdf new file mode 100644 index 0000000000..fbdadf9a19 --- /dev/null +++ b/fastlane/metadata/steam/Simplified Chinese/achievements.vdf @@ -0,0 +1,109 @@ +"lang" +{ + "Language" "Simplified Chinese" + "Tokens" + { + "NEW_ACHIEVEMENT_20_0_NAME" "萌新" + "NEW_ACHIEVEMENT_20_0_DESC" "完成教程。" + "NEW_ACHIEVEMENT_20_1_NAME" "千人斩!" + "NEW_ACHIEVEMENT_20_1_DESC" "累计击败1,000名敌人。" + "NEW_ACHIEVEMENT_20_2_NAME" "十万人斩!" + "NEW_ACHIEVEMENT_20_2_DESC" "累计击败100,000名敌人。" + "NEW_ACHIEVEMENT_20_3_NAME" "大气输送" + "NEW_ACHIEVEMENT_20_3_DESC" "累计发射10,000件物品。" + "NEW_ACHIEVEMENT_20_5_NAME" "无尽装运" + "NEW_ACHIEVEMENT_20_5_DESC" "累计发射1,000,000件物品。" + "NEW_ACHIEVEMENT_20_6_NAME" "征服者" + "NEW_ACHIEVEMENT_20_6_DESC" "赢得10场攻击模式。" + "NEW_ACHIEVEMENT_20_7_NAME" "冠军" + "NEW_ACHIEVEMENT_20_7_DESC" "赢得10场PvP比赛。" + "NEW_ACHIEVEMENT_20_8_NAME" "速战速决" + "NEW_ACHIEVEMENT_20_8_DESC" "在攻击模式地区中在5波以内摧毁敌方核心。" + "NEW_ACHIEVEMENT_20_9_NAME" "核心雨" + "NEW_ACHIEVEMENT_20_9_DESC" "把你的核心发射到一个区域30次。" + "NEW_ACHIEVEMENT_20_10_NAME" "顽强抵抗" + "NEW_ACHIEVEMENT_20_10_DESC" "存活100波。" + "NEW_ACHIEVEMENT_20_11_NAME" "不可征服" + "NEW_ACHIEVEMENT_20_11_DESC" "存活500波。" + "NEW_ACHIEVEMENT_20_12_NAME" "研究者" + "NEW_ACHIEVEMENT_20_12_DESC" "研究所有科技。" + "NEW_ACHIEVEMENT_20_13_NAME" "变形金刚" + "NEW_ACHIEVEMENT_20_13_DESC" "解锁并变形成所有机甲。" + "NEW_ACHIEVEMENT_20_14_NAME" "过载" + "NEW_ACHIEVEMENT_20_14_DESC" "用电力击打被水覆盖的敌人。" + "NEW_ACHIEVEMENT_20_15_NAME" "借刀杀人" + "NEW_ACHIEVEMENT_20_15_DESC" "用敌人的子弹摧毁它自己。" + "NEW_ACHIEVEMENT_20_17_NAME" "严重的错误" + "NEW_ACHIEVEMENT_20_17_DESC" "研究路由器。" + "NEW_ACHIEVEMENT_20_18_NAME" "大肆建造" + "NEW_ACHIEVEMENT_20_18_DESC" "放置10,000个方块。" + "NEW_ACHIEVEMENT_20_19_NAME" "夷为平地" + "NEW_ACHIEVEMENT_20_19_DESC" "摧毁1,000个敌方方块。" + "NEW_ACHIEVEMENT_20_20_NAME" "壮观的灾难" + "NEW_ACHIEVEMENT_20_20_DESC" "引起钍反应堆过热爆炸。" + "NEW_ACHIEVEMENT_20_21_NAME" "地图制造者" + "NEW_ACHIEVEMENT_20_21_DESC" "制造10次新地图。" + "NEW_ACHIEVEMENT_20_22_NAME" "浏览器" + "NEW_ACHIEVEMENT_20_22_DESC" "从创意工坊上下载一次地图。" + "NEW_ACHIEVEMENT_20_23_NAME" "创造者" + "NEW_ACHIEVEMENT_20_23_DESC" "上传一次地图到创意工坊。" + "NEW_ACHIEVEMENT_20_24_NAME" "杀戮者" + "NEW_ACHIEVEMENT_20_24_DESC" "击败一次Boss" + "NEW_ACHIEVEMENT_20_25_NAME" "探索者" + "NEW_ACHIEVEMENT_20_25_DESC" "解锁战役模式所有地区。" + "NEW_ACHIEVEMENT_20_26_NAME" "强迫症" + "NEW_ACHIEVEMENT_20_26_DESC" "完成所有地区的任务。" + "NEW_ACHIEVEMENT_20_29_NAME" "第二材料" + "NEW_ACHIEVEMENT_20_29_DESC" "解锁钍。" + "NEW_ACHIEVEMENT_20_31_NAME" "第一材料" + "NEW_ACHIEVEMENT_20_31_DESC" "解锁钛。" + "NEW_ACHIEVEMENT_21_0_NAME" "恐怖分子" + "NEW_ACHIEVEMENT_21_0_DESC" "将你的机甲装满爆炸性物品并自爆。" + "NEW_ACHIEVEMENT_21_1_NAME" "开始了!" + "NEW_ACHIEVEMENT_21_1_DESC" "建造尖刀机甲工厂。" + "NEW_ACHIEVEMENT_21_2_NAME" "突击!" + "NEW_ACHIEVEMENT_21_2_DESC" "用指挥中心发出攻击指令。" + "NEW_ACHIEVEMENT_21_3_NAME" "蜂群" + "NEW_ACHIEVEMENT_21_3_DESC" "同时拥有100个单位。" + "NEW_ACHIEVEMENT_21_4_NAME" "建造大队" + "NEW_ACHIEVEMENT_21_4_DESC" "同时拥有10个鬼怪建造机。" + "NEW_ACHIEVEMENT_21_5_NAME" "神风敢死队" + "NEW_ACHIEVEMENT_21_5_DESC" "同时拥有50个爬行者。" + "NEW_ACHIEVEMENT_21_6_NAME" "军队" + "NEW_ACHIEVEMENT_21_6_DESC" "总计建造1,000个机甲" + "NEW_ACHIEVEMENT_21_7_NAME" "SR" + "NEW_ACHIEVEMENT_21_7_DESC" "在任一地区达到级别S。" + "NEW_ACHIEVEMENT_21_8_NAME" "SSR" + "NEW_ACHIEVEMENT_21_8_DESC" "在所有地区达到级别S。" + "NEW_ACHIEVEMENT_21_9_NAME" "不听话的下场" + "NEW_ACHIEVEMENT_21_9_DESC" "在敌人出生点死亡。" + "NEW_ACHIEVEMENT_21_10_NAME" "被水淹没,不知所措" + "NEW_ACHIEVEMENT_21_10_DESC" "被淹死。" + "NEW_ACHIEVEMENT_21_11_NAME" "收集者" + "NEW_ACHIEVEMENT_21_11_DESC" "将核心装满所有资源。" + "NEW_ACHIEVEMENT_21_12_NAME" "忙碌" + "NEW_ACHIEVEMENT_21_12_DESC" "创建一个有10个玩家的服务器。" + "NEW_ACHIEVEMENT_21_13_NAME" "无懈可击" + "NEW_ACHIEVEMENT_21_13_DESC" "建造熔毁和幽灵。" + "NEW_ACHIEVEMENT_21_14_NAME" "上天" + "NEW_ACHIEVEMENT_21_14_DESC" "使用发射台。" + "NEW_ACHIEVEMENT_21_15_NAME" "做人不能太自以为是" + "NEW_ACHIEVEMENT_21_15_DESC" "跳过两次发射机会后核心被敌人摧毁。" + "NEW_ACHIEVEMENT_21_16_NAME" "路由器邪教" + "NEW_ACHIEVEMENT_21_16_DESC" "建造两个相邻的路由器。" + "NEW_ACHIEVEMENT_21_17_NAME" "单枪匹马" + "NEW_ACHIEVEMENT_21_17_DESC" "不放置一块方块存活10波。" + "NEW_ACHIEVEMENT_21_18_NAME" "FFF团之力" + "NEW_ACHIEVEMENT_21_18_DESC" "使用硫做炮塔弹药。" + "NEW_ACHIEVEMENT_21_19_NAME" "效率" + "NEW_ACHIEVEMENT_21_19_DESC" "用水或冷却液冷却炮塔。" + "NEW_ACHIEVEMENT_21_20_NAME" "经典模式" + "NEW_ACHIEVEMENT_21_20_DESC" "启用像素化。" + "NEW_ACHIEVEMENT_21_21_NAME" "学者" + "NEW_ACHIEVEMENT_21_21_DESC" "从游戏中打开Wiki。" + "NEW_ACHIEVEMENT_21_22_NAME" "硬核开头" + "NEW_ACHIEVEMENT_21_22_DESC" "携带10,000资源进入一个地区" + "NEW_ACHIEVEMENT_21_23_NAME" "点火" + "NEW_ACHIEVEMENT_21_23_DESC" "启动冲击反应堆。" + } +} diff --git a/fastlane/metadata/steam/Simplified Chinese/description.txt b/fastlane/metadata/steam/Simplified Chinese/description.txt new file mode 100644 index 0000000000..09c9954e2d --- /dev/null +++ b/fastlane/metadata/steam/Simplified Chinese/description.txt @@ -0,0 +1,60 @@ +建造精密的传送带供应链,提供炮塔弹药,生产建筑材料,保护你的建筑并抵御敌人。在跨平台多人合作游戏中与朋友一起玩,或在基于团队的PVP比赛中向他们挑战。 + +[img]{STEAM_APP_IMAGE}/extras/ezgif-4-0e70c282f775.gif[/img] + +[h2]游戏操作[/h2] + +[list] +[*] 建造钻头和传送带来将资源转移到核心 +[*] 使用工厂制造进阶材料 +[*] 建造无人机以自动采矿,协助建造和保卫核心 +[*] 分配液体并扑灭突发火灾 +[*] 用特定物品冷却炮塔和提高生产 +[/list] + +[h2]战役模式[/h2] + +[list] +[*]在12张可重复游玩的内建区域中前进 +[*]收集并发射资源 +[*]研究科技以进步 +[*]携带资源进入每个区域 +[*]多样的任务与目标 +[*]邀请朋友一起完成任务 +[*]研究120+科技 +[*]19种不同类型的无人机、机甲及飞船 +[*]达成50+成就 +[/list] + +[h2][h2]游戏模式[/h2][/h2] + +[*] [b]生存[/b]: 建造炮塔来防御敌人。尽可能长的生存下来,发射你的核心来使用你收集的资源进行研究。为Boss的到来做好准备。 +[*] [b]攻击[/b]: 为建造工厂生产机甲来摧毁敌人的核心,同时保护你的基地,抵御敌人的攻击。创建各种不同类型的支援和进攻单位,以协助你实现目标。 +[*] [b]PvP[/b]: 与最多4个不同团队的其他玩家互相伤害。创建单位,或者直接用你的飞船攻击他人基地。 +[*] [b]沙盒[/b]: 无限的资源,没有敌人的威胁。使用只限于沙盒的物品源和液体源来测试设计,和根据需要生成敌人。 +[/list] + +[h2]自定义游戏和跨平台多人游戏[/h2] + +[list] +[*]用于自定义的12个内置地图 +[*]游玩合作,PvP或沙盒模式 +[*]加入公共专用服务器,或邀请朋友参加您自己的私人服务器 +[*]可定制的游戏规则 +[*]混合和匹配游戏模式:结合PvP和PvE游戏模式 +[/list] + +[h2]自定义地图编辑器[/h2] + +[list] +[*]使用编辑器绘制地图 +[*]在游戏中编辑和预览 +[*]可更改的工具模式 +[*]具有多种不同类型的地形处理过滤器的强大的地图生成系统 +[*]将随机地形应用于地图 +[*]随机配置和生成矿石,以及放置河流和资源 +[*]配置敌方波次布局 +[*]在Steam创意工坊上共享导出的地图 +[*]自定义地图的基础规则 +[*]使用75+个不同的环境块 +[/list] diff --git a/fastlane/metadata/steam/Simplified Chinese/short-description.txt b/fastlane/metadata/steam/Simplified Chinese/short-description.txt new file mode 100644 index 0000000000..da05408477 --- /dev/null +++ b/fastlane/metadata/steam/Simplified Chinese/short-description.txt @@ -0,0 +1 @@ +一款以资源管理为核心的无尽塔防游戏。 diff --git a/fastlane/metadata/steam/italian/achievements.vdf b/fastlane/metadata/steam/italian/achievements.vdf new file mode 100644 index 0000000000..a000858b27 --- /dev/null +++ b/fastlane/metadata/steam/italian/achievements.vdf @@ -0,0 +1,109 @@ +"lang" +{ + "Language" "italian" + "Tokens" + { + "NEW_ACHIEVEMENT_20_0_NAME" "Utente abilitato" + "NEW_ACHIEVEMENT_20_0_DESC" "Completa il tutorial." + "NEW_ACHIEVEMENT_20_1_NAME" "Attaccabrighe" + "NEW_ACHIEVEMENT_20_1_DESC" "Distruggi 1000 unità nemiche." + "NEW_ACHIEVEMENT_20_2_NAME" "Epurazione" + "NEW_ACHIEVEMENT_20_2_DESC" "Distruggi 100,000 unità nemiche." + "NEW_ACHIEVEMENT_20_3_NAME" "Trasporto Atmosferico" + "NEW_ACHIEVEMENT_20_3_DESC" "Lancia 10,000 oggetti." + "NEW_ACHIEVEMENT_20_5_NAME" "Spedizioni senza fine" + "NEW_ACHIEVEMENT_20_5_DESC" "Lancia 1,000,000 di oggetti." + "NEW_ACHIEVEMENT_20_6_NAME" "Conquistatore" + "NEW_ACHIEVEMENT_20_6_DESC" "Vinci 10 partite in modalità attacco." + "NEW_ACHIEVEMENT_20_7_NAME" "Campione" + "NEW_ACHIEVEMENT_20_7_DESC" "Vinci 10 partite multigiocatore PvP." + "NEW_ACHIEVEMENT_20_8_NAME" "Blitz" + "NEW_ACHIEVEMENT_20_8_DESC" "Distruggi il nucleo nemico in una zona d'attacco in 5 ondate o meno." + "NEW_ACHIEVEMENT_20_9_NAME" "Pioggia di Nuclei" + "NEW_ACHIEVEMENT_20_9_DESC" "Lancia il tuo nucleo in una zona 30 volte" + "NEW_ACHIEVEMENT_20_10_NAME" "Tenace" + "NEW_ACHIEVEMENT_20_10_DESC" "Sopravvivi a 100 ondate." + "NEW_ACHIEVEMENT_20_11_NAME" "Imbattuto" + "NEW_ACHIEVEMENT_20_11_DESC" "Sopravvivi a 500 ondate." + "NEW_ACHIEVEMENT_20_12_NAME" "Ricercatore" + "NEW_ACHIEVEMENT_20_12_DESC" "Ricerca tutto." + "NEW_ACHIEVEMENT_20_13_NAME" "Mutaforma" + "NEW_ACHIEVEMENT_20_13_DESC" "Sblocca tutti i mech e trasformati in ogniuno di essi." + "NEW_ACHIEVEMENT_20_14_NAME" "Sovraccarico" + "NEW_ACHIEVEMENT_20_14_DESC" "Colpisci un nemico ricoperto d'acqua con l'elettricità." + "NEW_ACHIEVEMENT_20_15_NAME" "Deviazione" + "NEW_ACHIEVEMENT_20_15_DESC" "Distruggi un nemico con un suo colpo riflesso." + "NEW_ACHIEVEMENT_20_17_NAME" "Un grave errore" + "NEW_ACHIEVEMENT_20_17_DESC" "Ricerca il distributore." + "NEW_ACHIEVEMENT_20_18_NAME" "Costruttore" + "NEW_ACHIEVEMENT_20_18_DESC" "Piazza 10,000 blocchi." + "NEW_ACHIEVEMENT_20_19_NAME" "Razziatore" + "NEW_ACHIEVEMENT_20_19_DESC" "Distruggi 1,000 blocchi nemici." + "NEW_ACHIEVEMENT_20_20_NAME" "Un disastro memorabile" + "NEW_ACHIEVEMENT_20_20_DESC" "Causa il surriscaldamento e l'esplosione di un Reattore al Torio." + "NEW_ACHIEVEMENT_20_21_NAME" "Cartografo" + "NEW_ACHIEVEMENT_20_21_DESC" "Crea 10 nuove mappe." + "NEW_ACHIEVEMENT_20_22_NAME" "Navigatore" + "NEW_ACHIEVEMENT_20_22_DESC" "Scarica una mappa dal Workshop." + "NEW_ACHIEVEMENT_20_23_NAME" "Creatore" + "NEW_ACHIEVEMENT_20_23_DESC" "Pubblica una mappa nel Workshop." + "NEW_ACHIEVEMENT_20_24_NAME" "Mietitore" + "NEW_ACHIEVEMENT_20_24_DESC" "Sconfiggi un boss." + "NEW_ACHIEVEMENT_20_25_NAME" "Esploratore" + "NEW_ACHIEVEMENT_20_25_DESC" "Sblocca tutte le zone della campagna." + "NEW_ACHIEVEMENT_20_26_NAME" "Completista" + "NEW_ACHIEVEMENT_20_26_DESC" "Sblocca l'equipaggiamento personalizzato in tutte le zone." + "NEW_ACHIEVEMENT_20_29_NAME" "Materiale II" + "NEW_ACHIEVEMENT_20_29_DESC" "Sblocca il Torio." + "NEW_ACHIEVEMENT_20_31_NAME" "Materiale I" + "NEW_ACHIEVEMENT_20_31_DESC" "Sblocca il Titanio." + "NEW_ACHIEVEMENT_21_0_NAME" "Kamikaze" + "NEW_ACHIEVEMENT_21_0_DESC" "Riempi il tuo mech di esplosivi e muori, creando un esplosione." + "NEW_ACHIEVEMENT_21_1_NAME" "Ha inizio" + "NEW_ACHIEVEMENT_21_1_DESC" "Costruisci una fabbrica di droni pugnalatori." + "NEW_ACHIEVEMENT_21_2_NAME" "Assalto Diretto" + "NEW_ACHIEVEMENT_21_2_DESC" "Emetti un ordine di attacco usando il centro di comando." + "NEW_ACHIEVEMENT_21_3_NAME" "Orda" + "NEW_ACHIEVEMENT_21_3_DESC" "Possiedi 100 unità attive contemporaneamente." + "NEW_ACHIEVEMENT_21_4_NAME" "Stormo" + "NEW_ACHIEVEMENT_21_4_DESC" "Possiedi 10 Droni Fantasma attivi contemporaneamente." + "NEW_ACHIEVEMENT_21_5_NAME" "Esercito Esplosivo" + "NEW_ACHIEVEMENT_21_5_DESC" "Possiedi 50 Strisciatori attivi contemporaneamente." + "NEW_ACHIEVEMENT_21_6_NAME" "Legione" + "NEW_ACHIEVEMENT_21_6_DESC" "Costruisci 1000 unità." + "NEW_ACHIEVEMENT_21_7_NAME" "Super" + "NEW_ACHIEVEMENT_21_7_DESC" "Ottieni la valutazione S in una zona qualsiasi." + "NEW_ACHIEVEMENT_21_8_NAME" "Super Super" + "NEW_ACHIEVEMENT_21_8_DESC" "Ottieni la valutazione SS in una zona qualsiasi." + "NEW_ACHIEVEMENT_21_9_NAME" "Avresti dovusto ascoltare" + "NEW_ACHIEVEMENT_21_9_DESC" "Muori nella zona di esclusione dell'atterraggio nemico." + "NEW_ACHIEVEMENT_21_10_NAME" "Premi Shift" + "NEW_ACHIEVEMENT_21_10_DESC" "Annega, in qualche modo." + "NEW_ACHIEVEMENT_21_11_NAME" "Collezionista" + "NEW_ACHIEVEMENT_21_11_DESC" "Riempi il nucleo alla capacità massima con ogni tipo di materiale." + "NEW_ACHIEVEMENT_21_12_NAME" "Folla" + "NEW_ACHIEVEMENT_21_12_DESC" "Ospita un server con 10 giocatori." + "NEW_ACHIEVEMENT_21_13_NAME" "Invincibile" + "NEW_ACHIEVEMENT_21_13_DESC" "Costruisci le torrette Fusione e Spettro." + "NEW_ACHIEVEMENT_21_14_NAME" "Ascesa" + "NEW_ACHIEVEMENT_21_14_DESC" "Usa l'ascensore spaziale." + "NEW_ACHIEVEMENT_21_15_NAME" "Autocompiacimento" + "NEW_ACHIEVEMENT_21_15_DESC" "Salta il decollo due volte e perdi il nucleo per mano nemica." + "NEW_ACHIEVEMENT_21_16_NAME" "Eresia" + "NEW_ACHIEVEMENT_21_16_DESC" "Costruisci due distributori uno affianco all'altro." + "NEW_ACHIEVEMENT_21_17_NAME" "Guardiano dell'amore" + "NEW_ACHIEVEMENT_21_17_DESC" "Sopravvivi a 10 ondate in qualsiasi zona senza piazzare blocchi." + "NEW_ACHIEVEMENT_21_18_NAME" "Incenerimento" + "NEW_ACHIEVEMENT_21_18_DESC" "Usa la Pirite in una torretta qualsiasi." + "NEW_ACHIEVEMENT_21_19_NAME" "Efficenza" + "NEW_ACHIEVEMENT_21_19_DESC" "Raffredda una torretta con dell'acqua o del criofluido." + "NEW_ACHIEVEMENT_21_20_NAME" "Modalità Classica" + "NEW_ACHIEVEMENT_21_20_DESC" "Abilita la pixelazione." + "NEW_ACHIEVEMENT_21_21_NAME" "Alunno" + "NEW_ACHIEVEMENT_21_21_DESC" "Apri la wiki dal gioco." + "NEW_ACHIEVEMENT_21_22_NAME" "Vantaggio" + "NEW_ACHIEVEMENT_21_22_DESC" "Lanciati in una zona con 10,000 o più oggetti nell'equipaggiamento." + "NEW_ACHIEVEMENT_21_23_NAME" "Avviamento" + "NEW_ACHIEVEMENT_21_23_DESC" "Avvia un Reattore ad Impatto." + } +} diff --git a/gradle.properties b/gradle.properties index 312603e215..cbc49eb9de 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=9ed2c7bd64741309e2ece3fdc15f169862922ef3 +archash=6ca636f2f51352022b2c770deafc3b549eb0421c diff --git a/ios/src/io/anuke/mindustry/IOSLauncher.java b/ios/src/io/anuke/mindustry/IOSLauncher.java index 0b0cf974f5..72588f1296 100644 --- a/ios/src/io/anuke/mindustry/IOSLauncher.java +++ b/ios/src/io/anuke/mindustry/IOSLauncher.java @@ -10,7 +10,9 @@ import io.anuke.arc.util.io.*; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.Saves.*; import io.anuke.mindustry.io.*; +import io.anuke.mindustry.mod.*; import io.anuke.mindustry.ui.*; +import org.robovm.apple.dispatch.*; import org.robovm.apple.foundation.*; import org.robovm.apple.uikit.*; import org.robovm.objc.block.*; @@ -34,7 +36,7 @@ public class IOSLauncher extends IOSApplication.Delegate{ Scl.setAddition(-0.5f); } - IOSApplicationConfiguration config = new IOSApplicationConfiguration(); + //IOSApplicationConfiguration config = new IOSApplicationConfiguration(); return new IOSApplication(new ClientLauncher(){ @Override @@ -88,9 +90,10 @@ public class IOSLauncher extends IOSApplication.Delegate{ } cont.setDelegate(new ChooserDelegate()); - UIApplication.getSharedApplication().getKeyWindow().getRootViewController().presentViewController(cont, true, () -> { - }); + // DispatchQueue.getMainQueue().sync(() -> { + UIApplication.getSharedApplication().getKeyWindow().getRootViewController().presentViewController(cont, true, () -> {}); + // }); } @Override @@ -101,10 +104,12 @@ public class IOSLauncher extends IOSApplication.Delegate{ NSURL url = new NSURL(to.file()); UIActivityViewController p = new UIActivityViewController(Collections.singletonList(url), null); - p.getPopoverPresentationController().setSourceView(UIApplication.getSharedApplication().getKeyWindow().getRootViewController().getView()); + //p.getPopoverPresentationController().setSourceView(UIApplication.getSharedApplication().getKeyWindow().getRootViewController().getView()); + //DispatchQueue.getMainQueue().sync(() -> { UIApplication.getSharedApplication().getKeyWindow().getRootViewController() - .presentViewController(p, true, () -> io.anuke.arc.util.Log.info("Success! Presented {0}", to)); + .presentViewController(p, true, () -> Log.info("Success! Presented {0}", to)); + //}); } @Override @@ -118,7 +123,9 @@ public class IOSLauncher extends IOSApplication.Delegate{ forced = false; UINavigationController.attemptRotationToDeviceOrientation(); } - }, config); + }, new IOSApplicationConfiguration(){{ + errorHandler = ModCrashHandler::handle; + }}); } @Override diff --git a/server/src/io/anuke/mindustry/server/MindustryServer.java b/server/src/io/anuke/mindustry/server/MindustryServer.java index c42e695c1d..ad83a69eb7 100644 --- a/server/src/io/anuke/mindustry/server/MindustryServer.java +++ b/server/src/io/anuke/mindustry/server/MindustryServer.java @@ -1,6 +1,8 @@ package io.anuke.mindustry.server; import io.anuke.arc.*; +import io.anuke.arc.files.*; +import io.anuke.arc.util.*; import io.anuke.mindustry.*; import io.anuke.mindustry.core.*; import io.anuke.mindustry.mod.*; @@ -20,6 +22,15 @@ public class MindustryServer implements ApplicationListener{ loadLocales = false; headless = true; + FileHandle plugins = Core.settings.getDataDirectory().child("plugins"); + if(plugins.isDirectory() && plugins.list().length > 0 && !plugins.sibling("mods").exists()){ + Log.warn("[IMPORTANT NOTICE] &lrPlugins have been detected.&ly Automatically moving all contents of the plugin folder into the 'mods' folder. The original folder will not be removed; please do so manually."); + plugins.sibling("mods").mkdirs(); + for(FileHandle file : plugins.list()){ + file.copyTo(plugins.sibling("mods")); + } + } + Vars.loadSettings(); Vars.init(); content.createContent(); diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index a78792306a..d8a06ac6e0 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -10,6 +10,7 @@ import io.anuke.arc.util.CommandHandler.*; import io.anuke.arc.util.Timer.*; import io.anuke.mindustry.*; import io.anuke.mindustry.core.GameState.*; +import io.anuke.mindustry.core.*; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.game.*; @@ -750,8 +751,7 @@ public class ServerControl implements ApplicationListener{ }); mods.each(p -> p.registerServerCommands(handler)); - //TODO - //plugins.each(p -> p.registerClientCommands(netServer.clientCommands)); + mods.each(p -> p.registerClientCommands(netServer.clientCommands)); } private void readCommands(){ diff --git a/tests/src/test/java/ApplicationTests.java b/tests/src/test/java/ApplicationTests.java index 23f5f876b0..dff351c59c 100644 --- a/tests/src/test/java/ApplicationTests.java +++ b/tests/src/test/java/ApplicationTests.java @@ -341,7 +341,7 @@ public class ApplicationTests{ for(int x = 5; x < tiles.length && i < content.blocks().size; ){ Block block = content.block(i++); - if(block.buildVisibility.get()){ + if(block.isBuildable()){ x += block.size; tiles[x][5].setBlock(block); x += block.size; diff --git a/tests/src/test/java/power/DirectConsumerTests.java b/tests/src/test/java/power/DirectConsumerTests.java index 5298c27fde..7fdc9ef612 100644 --- a/tests/src/test/java/power/DirectConsumerTests.java +++ b/tests/src/test/java/power/DirectConsumerTests.java @@ -32,7 +32,7 @@ public class DirectConsumerTests extends PowerTestFixture{ void testUnitFactory(int siliconAmount, int leadAmount, float producedPower, float requestedPower, float expectedSatisfaction){ Tile consumerTile = createFakeTile(0, 0, new UnitFactory("fakefactory"){{ - type = UnitTypes.spirit; + unitType = UnitTypes.spirit; produceTime = 60; consumes.power(requestedPower); consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)); diff --git a/tests/src/test/java/power/PowerTestFixture.java b/tests/src/test/java/power/PowerTestFixture.java index e7b26c3447..75f4a56854 100644 --- a/tests/src/test/java/power/PowerTestFixture.java +++ b/tests/src/test/java/power/PowerTestFixture.java @@ -5,7 +5,7 @@ import io.anuke.arc.util.*; import io.anuke.mindustry.*; import io.anuke.mindustry.content.*; import io.anuke.mindustry.core.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.ctype.*; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.blocks.power.*; diff --git a/tools/build.gradle b/tools/build.gradle index 189eb07bd9..dff7745f5d 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -5,12 +5,18 @@ sourceSets.main.java.srcDirs = ["src/"] import com.badlogic.gdx.graphics.Color -import com.badlogic.gdx.utils.* import com.badlogic.gdx.tools.texturepacker.TexturePacker +import com.badlogic.gdx.utils.IntArray +import com.badlogic.gdx.utils.IntIntMap +import com.badlogic.gdx.utils.IntMap import javax.imageio.ImageIO -import java.awt.Graphics2D +import java.awt.* import java.awt.image.BufferedImage +import java.util.List +import java.util.concurrent.ExecutorService +import java.util.concurrent.Executors +import java.util.concurrent.TimeUnit def genFolder = "../core/assets-raw/sprites_out/generated/" def doAntialias = !project.hasProperty("disableAntialias") @@ -46,6 +52,7 @@ def antialias = { File file -> def color = new Color() def sum = new Color() def suma = new Color() + int[] p = new int[9] for(int x = 0; x < image.getWidth(); x++){ for(int y = 0; y < image.getHeight(); y++){ @@ -59,20 +66,20 @@ def antialias = { File file -> H = getRGB(x, y - 1), I = getRGB(x + 1, y - 1) - int p1 = E, p2 = E, p3 = E, p4 = E, p5 = E, p6 = E, p7 = E, p8 = E, p9 = E - if(D == B && D != H && B != F) p1 = D - if((D == B && D != H && B != F && E != C) || (B == F && B != D && F != H && E != A)) p2 = B - if(B == F && B != D && F != H) p3 = F - if((H == D && H != F && D != B && E != A) || (D == B && D != H && B != F && E != G)) p4 = D - p5 = E - if((B == F && B != D && F != H && E != I) || (F == H && F != B && H != D && E != C)) p6 = F - if(H == D && H != F && D != B) p7 = D - if((F == H && F != B && H != D && E != G) || (H == D && H != F && D != B && E != I)) p8 = H - if(F == H && F != B && H != D) p9 = F + Arrays.fill(p, E); + + if(D == B && D != H && B != F) p[0] = D + if((D == B && D != H && B != F && E != C) || (B == F && B != D && F != H && E != A)) p[1] = B + if(B == F && B != D && F != H) p[2] = F + if((H == D && H != F && D != B && E != A) || (D == B && D != H && B != F && E != G)) p[3] = D + if((B == F && B != D && F != H && E != I) || (F == H && F != B && H != D && E != C)) p[5] = F + if(H == D && H != F && D != B) p[6] = D + if((F == H && F != B && H != D && E != G) || (H == D && H != F && D != B && E != I)) p[7] = H + if(F == H && F != B && H != D) p[8] = F suma.set(0) - [p1, p2, p3, p4, p5, p6, p7, p8, p9].each{ val -> + for(int val : p){ Color.argb8888ToColor(color, val) suma.r += color.r * color.a suma.g += color.g * color.a @@ -85,7 +92,7 @@ def antialias = { File file -> float total = 0 sum.set(0) - [p1, p2, p3, p4, p5, p6, p7, p8, p9].each{ val -> + for(int val : p){ Color.argb8888ToColor(color, val) float a = color.a color.lerp(suma, (float) (1f - a)) @@ -318,11 +325,22 @@ task pack(dependsOn: classes){ delete "../core/assets-raw/sprites_out/ui/icons" } + ExecutorService executor = Executors.newFixedThreadPool(16) + //antialias everything except UI elements fileTree(dir: '../core/assets-raw/sprites_out/', include: "**/*.png").visit{ file -> if(file.isDirectory() || file.toString().replace("\\", "/").contains("zones/") || (file.toString().replace("\\", "/").contains("/ui/") && file.toString().startsWith("icon-"))) return - antialias(file.file) + executor.submit{ + antialias(file.file) + } + } + + executor.shutdown(); + try{ + executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); + }catch(InterruptedException e){ + e.printStackTrace() } //pack normal sprites diff --git a/tools/src/io/anuke/mindustry/Generators.java b/tools/src/io/anuke/mindustry/Generators.java index 651657070d..718f994376 100644 --- a/tools/src/io/anuke/mindustry/Generators.java +++ b/tools/src/io/anuke/mindustry/Generators.java @@ -7,8 +7,9 @@ import io.anuke.arc.math.*; import io.anuke.arc.util.*; import io.anuke.arc.util.noise.*; import io.anuke.mindustry.ImagePacker.*; -import io.anuke.mindustry.game.*; +import io.anuke.mindustry.ctype.*; import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.*; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*;