diff --git a/SERVERLIST.md b/SERVERLIST.md index bef8443c8d..4bc7810290 100644 --- a/SERVERLIST.md +++ b/SERVERLIST.md @@ -5,6 +5,7 @@ This is done by letting clients `GET` a [JSON list of servers](https://github.co You may want to add your server to this list. The steps for getting this done are as follows: +0. **Take note of the fact that modded servers are not allowed on this list.** Such servers confuse users, and there's currently no easy way to fix mod incompatibilities after a failed connection. 1. **Ensure your server is properly moderated.** For the most part, this applies to survival servers, but PvP servers can be affected as well. You'll need to either hire some moderators, or make use of (currently non-existent) anti-grief and anti-curse plugins. *Consider enabling a rate limit:* `config messageRateLimit 2` will make it so that players can only send messages every 2 seconds, for example. diff --git a/TRANSLATING.md b/TRANSLATING.md index 0514018541..8e61559964 100644 --- a/TRANSLATING.md +++ b/TRANSLATING.md @@ -31,9 +31,11 @@ There are two ways to test the translation bundle: 1) Assuming you have the PC version downloaded, download your bundle file, name it `bundle.properties`, then place it in the same folder as the Mindustry desktop executable and run it. *You should get a popup message in-game confirming that you have loaded an external translation.* 2) For advanced users: simply download your fork of mindustry and compile/run the game. -#### Translating for stores (Steam, Google Play) +#### Translating for stores (Steam, ~~Google Play~~) -If you would like to translate the descriptions for Google Play or Steam, see the [Fastlane Metadata folder](https://github.com/Anuken/Mindustry/tree/master/fastlane/metadata) and submit a pull request for files there. On Google Play, you would create or edit the folder with the correct local code; for Steam, I have to update the translations manually, so just name the folder with the language name, and include the same files as the English folder does. +NOTE: The Google Play description is in the process of being re-written, please do not translate it. + +If you would like to translate the descriptions for ~~Google Play~~ or Steam, see the [Fastlane Metadata folder](https://github.com/Anuken/Mindustry/tree/master/fastlane/metadata) and submit a pull request for files there. On Google Play, you would create or edit the folder with the correct local code; for Steam, I have to update the translations manually, so just name the folder with the language name, and include the same files as the English folder does. **And that's it.** diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 7b1f92c389..39d8b1f2a2 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1617,7 +1617,7 @@ unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Co unit.alpha.description = Defends the Shard core from enemies. Builds structures. unit.beta.description = Defends the Foundation core from enemies. Builds structures. unit.gamma.description = Defends the Nucleus core from enemies. Builds structures. -unit.retusa.description = Fires homing torpedos at nearby enemies. Repairs allied units. +unit.retusa.description = Fires homing torpedoes at nearby enemies. Repairs allied units. unit.oxynoe.description = Fires structure-repairing streams of flame at nearby enemies. Targets nearby enemy projectiles with a point defense turret. unit.cyerce.description = Fires seeking cluster-missiles at enemies. Repairs allied units. unit.aegires.description = Shocks all enemy units and structures that enter its energy field. Repairs all allies. diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 7581748a30..b630a97df7 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -1200,19 +1200,19 @@ tutorial.waves = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 wav 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 obtained 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 components. -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.copper.description = Ang pinaka basic na struktural materyal. Malawakang ginagamit sa lahat ng types ng blocks. +item.lead.description = Ang panimulang at basic na materyal. Malawakang ginagamit sa electronika at sa transportasyon ng likido gamit ng blocks. +item.metaglass.description = Ito ay matigas na glass compound. Malawakang ginagamit sa distribution ng likido at pag imbakan. +item.graphite.description = Mineralized carbon, Malawakang ginagamit sa ammunisyon at sa mga bahagi ng electrisidad. +item.sand.description = Ang karaniwang materyal na malawakang ginagamit sa smelting, pareho sa alloying at bilang flux +item.coal.description =Ang karaniwang materyal na malawakang ginagamit sa smelting, pareho sa alloying at bilang flux +item.titanium.description = Ang bihira hanapin at magaan na metal. Malawaking ginagamit sa transportasyon ng likido, mga drills at aircraft. +item.thorium.description = Ito ay malagong, radioactive metal ginagamit para sa supporta sa istraktura at nuklear fuel. +item.scrap.description = Galing sa mga matatanda at natirang struktura at units. Naglalaman ng ibat ibang metals. +item.silicon.description = Ang nakakatulong na semiconductor. Aplikasyon sa solar panels, Komplikadong electronika at homing turret ammunisyon. +item.plastanium.description = Ito ay magaan, malagkit na materyal ginamit sa advanced aircraft at fragmentation ammunisyon. +item.phase-fabric.description = Ito ay malapit na mawalan ng timbang na substansya ginamit sa advanced na electronika at self-repairing na technolohiya. +item.surge-alloy.description = Ang advanced na pinag halung metal na may kakaibang 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. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 8e6dca790b..2e80b91e2b 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -122,7 +122,7 @@ committingchanges = Validation des modifications done = Fait feature.unsupported = Votre appareil ne prend pas en charge cette fonctionnalité. -mods.initfailed = [red]⚠[] L'instance précédente de Mindustry n’a pas pu s’initialiser. Cela a probablement été causé par des mods..\n\nPour éviter une boucle de crash, [red]tous les mods ont été désactivés.[]\n\nPour désactiver cette fonctionnalité, désactivez-la dans [accent]Paramètres->Jeu->Désactiver les mods lors d'un crash au démarrage[]. +mods.initfailed = [red]⚠[] L'instance précédente de Mindustry n’a pas pu s’initialiser. Cela a probablement été causé par des mods..\n\nPour éviter une boucle de crash, [red]tous les mods ont été désactivés.[] mods = Mods mods.none = [lightgray]Aucun Mod trouvé ! mods.guide = Guide de Modding @@ -363,6 +363,7 @@ publish.confirm = Êtes-vous sûr de vouloir publier ceci ?\n\n[lightgray]Assure publish.error = Erreur de publication de l'élément : {0} steam.error = Échec d'initialisation des services Steam.\nErreur : {0} +editor.cliffs = De murs à falaises editor.brush = Pinceau editor.openin = Ouvrir dans l'éditeur editor.oregen = Génération de minerais @@ -378,6 +379,9 @@ editor.ingame = Éditer dans le jeu editor.publish.workshop = Publier sur le Workshop editor.newmap = Nouvelle carte editor.center = Centrer +editor.search = Recherche de cartes... +editor.filters = Filtrer les cartes +editor.showAll = Afficher les cartes par défaut workshop = Steam Workshop waves.title = Vagues waves.remove = Supprimer @@ -1133,6 +1137,7 @@ block.sand-boulder.name = Bloc de Sable block.basalt-boulder.name = Rocher de Basalte block.grass.name = Herbe block.molten-slag.name = Scories +block.pooled-cryofluid.name = Cryofluide block.space.name = Espace block.salt.name = Sel block.salt-wall.name = Mur de Sel @@ -1613,7 +1618,7 @@ unit.omura.description = Tire avec un canon à rails à longue portée, une puis unit.alpha.description = Défend le Noyau fragment contre les ennemis. Peut construire des structures. unit.beta.description = Défend le Noyau fondation contre les ennemis. Peut construire des structures. unit.gamma.description = Défend le Noyau épicentre contre les ennemis. Peut construire des structures. -unit.retusa.description = Pose des mines de proximité. Répare les unités alliées. +unit.retusa.description = Tire des torpilles à tête chercheuse sur les ennemis proches. Répare les unités alliées. unit.oxynoe.description = Tire des jets de flammes qui réparent les structures et endommage les ennemis proches. Cible les projectiles ennemis proches avec une tourelle de défense ponctuelle. unit.cyerce.description = Tire des missiles à fragmentation sur les ennemis. Répare les unités alliées. unit.aegires.description = Secoue toutes les unités et structures ennemies qui entrent dans son champ d'énergie. Répare tous les alliés. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 3698123f3c..c74e312385 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -122,7 +122,7 @@ committingchanges = 変更を適応中 done = 完了 feature.unsupported = あなたのデバイスはこの機能をサポートしていません。 -mods.initfailed = [red]⚠[] 以前のMindustryの初期化に失敗しました。\nおそらくModの誤作動が原因です。\n\nクラッシュループを防ぐために、[red]全てのModが無効になっています。[]\n\nこの機能を無効にするのは、[accent]設定->ゲーム->起動時にクラッシュした場合にModを無効にする[]をオフにします。 +mods.initfailed = [red]⚠[] 以前のMindustryの初期化に失敗しました。\nおそらくModの誤作動が原因です。\n\nクラッシュループを防ぐために、[red]全てのModが無効になっています。[] mods = Mods mods.none = [lightgray]Modが見つかりませんでした! mods.guide = Mod作成ガイド @@ -379,6 +379,9 @@ editor.ingame = ゲーム内で編集する editor.publish.workshop = ワークショップで公開 editor.newmap = 新しいマップ editor.center = 中心 +editor.search = マップを検索... +editor.filters = マップをフィルターする +editor.showAll = デフォルトマップを表示 workshop = ワークショップ waves.title = ウェーブ waves.remove = 削除 @@ -1134,6 +1137,7 @@ block.sand-boulder.name = 巨大な礫 block.basalt-boulder.name = 玄武岩の礫 block.grass.name = 草 block.molten-slag.name = スラグ +block.pooled-cryofluid.name = 冷却水 block.space.name = Space block.salt.name = 岩塩氷河 block.salt-wall.name = 塩の壁 @@ -1615,7 +1619,7 @@ unit.omura.description = 敵に長距離かつ貫通性能を持つレールガ unit.alpha.description = シャードコアを敵から守ります。\n建造物を建築します。 unit.beta.description = ファンデーションコアを敵から守ります。\n建造物を建築します。 unit.gamma.description = ニュークリアスコアを敵から守ります。\n建造物を建築します。 -unit.retusa.description = 近接地雷を配置します。\n味方ユニットを修復します。 +unit.retusa.description = 近くの敵に追尾魚雷を発射します。\n味方ユニットを修復します。 unit.oxynoe.description = 建造物修復火炎放射を発射します。敵にはダメージを与えます。\n地点防空タレットによって敵の弾丸を撃ち落とします。 unit.cyerce.description = 敵に追尾クラスターミサイルを発射します。\n味方ユニットを修復します。 unit.aegires.description = エネルギーフィールド内の全ての敵ユニットと建造物には電撃を放ち、全ての味方ユニットには修復効果を与えます。 diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 8539ca93bf..cb9fca5dcd 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -904,7 +904,7 @@ category.view.name = Wyświetl category.multiplayer.name = Wielu graczy category.blocks.name = Wybierz Blok command.attack = Atakuj -command.rally = Zbierz +command.rally = Zbiórka command.retreat = Wycofaj command.idle = Nieaktywny placement.blockselectkeys = \n[lightgray]Klawisz: [{0}, diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 4aefb5a02d..e69c27cd19 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -121,7 +121,7 @@ committingchanges = Внесение изменений done = Готово feature.unsupported = Ваше устройство не поддерживает эту возможность. -mods.initfailed = [red]⚠[] Не удалось инициализировать предыдущий запуск Mindustry. Это могло быть вызвано неисправными модификациями.\n\nЧтобы предотвратить зацикленные вылеты игры, [red]все модификации были отключены.[]\n\nЧтобы отключить эту функцию, выключите её в [accent]Настройки->Игра->Отключение модификаций после вылета при запуске[]. +mods.initfailed = [red]⚠[] Не удалось инициализировать предыдущий запуск Mindustry. Это могло быть вызвано неисправными модификациями.\n\nЧтобы предотвратить зацикленные вылеты игры, [red]все модификации были отключены.[] mods = Модификации mods.none = [lightgray]Модификации не найдены! mods.guide = Руководство по модификациям @@ -168,6 +168,7 @@ launchcore = Запуск ядра filename = Имя файла: unlocked = Новый контент разблокирован! available = Доступно новое исследование! +unlock.incampaign = < Разблокируйте в кампании для подробностей > completed = [accent]Завершено techtree = Дерево\n технологий research.legacy = Найдены данные исследований из [accent]5.0[].\nХотите [accent]загрузить эти данные[], или [accent]отказаться от них[] и перезапустить исследования в новой кампании (рекомендуется)? @@ -315,7 +316,7 @@ data.invalid = Эти игровые данные являются недейс data.import.confirm = Импорт внешних данных сотрёт[scarlet] все[] ваши игровые данные.\n[accent]Это не может быть отменено![]\n\nКак только данные импортированы, ваша игра немедленно закроется. quit.confirm = Вы уверены, что хотите выйти? loading = [accent]Загрузка… -reloading = [accent]Перезагрузка модификаций… +downloading = [accent]Скачивание... saving = [accent]Сохранение… respawn = [accent][[{0}][] для возрождения из ядра cancelbuilding = [accent][[{0}][] для очистки плана @@ -343,9 +344,9 @@ custom = Пользовательская builtin = Встроенная map.delete.confirm = Вы действительно хотите удалить эту карту? Это действие не может быть отменено! map.random = [accent]Случайная карта -map.nospawn = Эта карта не имеет ни одного ядра, в котором игрок может появиться! Добавьте [accent]оранжевое[] ядро на эту карту в редакторе. +map.nospawn = Эта карта не имеет ни одного ядра, в котором игрок может появиться! Добавьте [#{0}]{1}[] ядро на эту карту в редакторе. map.nospawn.pvp = У этой карты нет вражеских ядер, в которых игрок может появиться! Добавьте [scarlet]не оранжевое[] ядро на эту карту в редакторе. -map.nospawn.attack = У этой карты нет вражеских ядер для атаки игроком! Добавьте [scarlet]красное[] ядро на эту карту в редакторе. +map.nospawn.attack = У этой карты нет вражеских ядер для атаки игроком! Добавьте [#{0}]{1}[] ядро на эту карту в редакторе. map.invalid = Ошибка загрузки карты: повреждённый или недопустимый файл карты. workshop.update = Обновить содержимое workshop.error = Ошибка загрузки информации из Мастерской: {0} @@ -375,6 +376,9 @@ editor.ingame = Редактировать в игре editor.publish.workshop = Опубликовать в Мастерской editor.newmap = Новая карта editor.center = Центрировать +editor.search = Поиск карт... +editor.filters = Фильтры +editor.showAll = Показать карты по умолчанию workshop = Мастерская waves.title = Волны waves.remove = Удалить @@ -383,6 +387,7 @@ waves.waves = волна(ы) waves.perspawn = за появление waves.shields = ед. щита/волну waves.to = до +waves.max = максимум единиц waves.guardian = Страж waves.preview = Предварительный просмотр waves.edit = Редактировать… @@ -843,13 +848,13 @@ category.items = Предметы category.crafting = Ввод/вывод category.function = Действие category.optional = Дополнительные улучшения +setting.skipcoreanimation.name = Пропускать анимацию запуска/приземления ядра setting.landscape.name = Только альбомный (горизонтальный) режим setting.shadows.name = Тени setting.blockreplace.name = Автоматическая замена блоков setting.linear.name = Линейная фильтрация setting.hints.name = Подсказки setting.logichints.name = Подсказки для логики -setting.flow.name = Показывать скорость потока ресурсов setting.backgroundpause.name = Фоновая пауза setting.buildautopause.name = Автоматическая приостановка строительства setting.doubletapmine.name = Добыча руды двойным нажатием @@ -1113,13 +1118,13 @@ unit.reign.name = Власть unit.vela.name = Парус unit.corvus.name = Ворон -block.resupply-point.name = Пункт снабжения block.parallax.name = Параллакс block.cliff.name = Скала block.sand-boulder.name = Песчаный валун block.basalt-boulder.name = Базальтовый валун block.grass.name = Трава block.molten-slag.name = Шлак +block.pooled-cryofluid.name = Криогенная жидкость block.space.name = Космос block.salt.name = Соль block.salt-wall.name = Соляная стена @@ -1366,6 +1371,7 @@ hint.placeTurret = Установите \uf861 [accent]Турели[] для з hint.breaking = Выделите блоки в рамку [accent]правой кнопкой мыши[], чтобы разобрать их. hint.breaking.mobile = Активируйте \ue817 [accent]молоток[] в правом нижнем углу и нажимайте на блоки, чтобы разобрать их. Удерживайте палец в течение секунды и переместите, чтобы разобрать выделением. hint.blockInfo = Для просмотра информации о блоке, выберите его в [accent]меню строительства[], затем нажмите на кнопку [accent][[?][] справа. +hint.derelict = [accent]Покинутые[] постройки - это остатки старых баз, которые больше не функционируют.\n\nОни могут быть [accent]разобраны[] для получения ресурсов. hint.research = Используйте кнопку \ue875 [accent]Исследований[], чтобы исследовать новые технологии. hint.research.mobile = Используйте кнопку \ue875 [accent]Исследований[] в \ue88c [accent]Меню[], чтобы исследовать новые технологии. hint.unitControl = Зажмите [accent][[Л-Ctrl][] и [accent]нажмите левую кнопку мыши[], чтобы контролировать дружественные единицы и турели. @@ -1418,7 +1424,6 @@ liquid.slag.description = Может быть переработан в разд liquid.oil.description = Используется в производстве продвинутых материалов и как зажигательный боеприпас. liquid.cryofluid.description = Используется в качестве охлаждающей жидкости для реакторов, турелей и фабрик. -block.resupply-point.description = Снаряжает медными боеприпасами ближайшие боевые единицы. Не совместим с единицами, требующими питания от батареи. block.armored-conveyor.description = Перемещает предметы вперёд. Не принимает вход по бокам. block.illuminator.description = Излучает свет. block.message.description = Сохраняет сообщение для связи между союзниками. @@ -1598,6 +1603,11 @@ unit.omura.description = Стреляет дальнобойным пробив unit.alpha.description = Защищает ядро «Осколок» от врагов. Основная строительная единица. unit.beta.description = Защищает ядро «Штаб» от врагов. Основная строительная единица. unit.gamma.description = Защищает ядро «Атом» от врагов. Основная строительная единица. +unit.retusa.description = Запускает самонаводящиеся торпеды в ближайших противников. Ремонтирует союзные единицы. +unit.oxynoe.description = Стреляет потоками пламени, которые восстанавливают союзные постройки и наносят урон врагам. Разрушает ближайшие вражеские снаряды с помощью турели точечной защиты. +unit.cyerce.description = Стреляет по врагам скоплениями ракет. Ремонтирует союзные единицы. +unit.aegires.description = Оглушает все вражеские единицы и постройки, которые попадают в его энергетическое поле. Ремонтирует всех союзников. +unit.navanax.description = Запускает взрывные ЭМИ-снаряды, которые наносят значительный урон силовым узлам противника и ремонтируют союзные постройки. Плавит ближайших врагов с помощью 4 автономных лазерных турелей. lst.read = Считывает число из соединённой ячейки памяти. lst.write = Записывает число в соединённую ячейку памяти. diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties new file mode 100644 index 0000000000..64075538f1 --- /dev/null +++ b/core/assets/bundles/bundle_sr.properties @@ -0,0 +1,1775 @@ +credits.text = Napravio [royal]Anuken[] - [sky]anukendev@gmail.com[] +credits = Zasluge +contributors = Prevodioci i pomagači +discord = Pridruži se Mindustry discordu! +link.discord.description = Zvanično discord ćaskanje za Mindustry +link.reddit.description = Mindustry subreddit +link.github.description = Izvorni kod za igru +link.changelog.description = Lista promena za ažuriranja +link.dev-builds.description = Nestabilne verzije u razvoju +link.trello.description = Zvanična Trello tabla za planirane dodatke. +link.itch.io.description = itch.io stranica, gde se igra skida za PC +link.google-play.description = Google Play stranice igre +link.f-droid.description = F-Droid stranice igre +link.wiki.description = Zvanična Mindustry wikipedia +link.suggestions.description = Preloži nove dodatke +link.bug.description = Pronašao si grešku? Prijavi je ovde +linkfail = Nemoguće otvoriti link!\nURL adresa je iskopirana +screenshot = Snimak ekrana snimljen {0} +screenshot.invalid = Mapa je prevelika, moguće je da nema dovoljno memorije za snimanje ekrana. +gameover = Igra gotova. +gameover.disconnect = Prekini vezu +gameover.pvp = [accent] {0}[] tim je pobedio! +gameover.waiting = [accent]Čeka se na sledeću mapu... +highscore = [accent]Novi rekord! +copied = Iskopirano. +indev.notready = Ovaj deo igre još uvek nije spreman. +indev.campaign = [accent]Čestitamo! Došli ste to kraja kampanje![]\n\nOvo je najdalje dokle sadržaj igre ide za sad. Međuplanetarno putovanje će biti dotato u budućim verzijama.. + +load.sound = Zvukovi +load.map = Mape +load.image = Slike +load.content = Sadržaj +load.system = Sistem +load.mod = Modovi +load.scripts = Programi + +be.update = Nova razvojna verzija je spremna! +be.update.confirm = Skinuti sad i restartovati igru? +be.updating = Ažuriranje... +be.ignore = Ignoriši +be.noupdates = Nema dostupnih ažuriranja. +be.check = Proveri za ažuriranja + +mods.browser = Pregledač modova +mods.browser.selected = Izabrani mod +mods.browser.add = Instaliraj +mods.browser.reinstall = Reinstaliraj +mods.github.open = GitHub repo +mods.browser.sortdate = Sortiraj od najnovijeg to najstarijeg +mods.browser.sortstars = Sortiraj po broju "zvezdica" + +schematic = Šeme +schematic.add = Snimi šemu +schematics = Šeme +schematic.replace = Već postoji šema pod ovim imenom. Zameniti? +schematic.exists = Šema sa ovimn imenom već postoji. +schematic.import = Uvezi šemu. +schematic.exportfile = Izvezi dokument +schematic.importfile = Uvezi dokument +schematic.browseworkshop = Pretraži radionicu +schematic.copy = Iskopiraj u privremenu ostavu +schematic.copy.import = Uvezi is privremene ostave +schematic.shareworkshop = Podeli na radionici +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Prevrni šemu. +schematic.saved = Šema snimljena. +schematic.delete.confirm = Šema će biti potpuno uništena. +schematic.rename = Preimenuj šemu +schematic.info = {0}x{1}, {2} blokova +schematic.disabled = [scarlet]Šema onemogućena.[]\nZabranjena je upotreba šema na ovoj [accent]mapi[] ili na ovom [accent]serveru. +schematic.tags = Oznake: +schematic.edittags = Uredi oznake +schematic.addtag = Dodaj oznaku +schematic.texttag = Tekstualna oznaka +schematic.icontag = Slikovna oznaka +schematic.renametag = Preimenuj oznaku +schematic.tagdelconfirm = Potpuno izbriši oznaku? +schematic.tagexists = Ova oznaka već postoji. + +stats = Statistika +stat.wave = Talasi poraženi:[accent] {0} +stat.unitsCreated = Proizvedene jedinice:[accent] {0} +stat.enemiesDestroyed = Uništeni neprijatelji:[accent] {0} +stat.built = Zgrade sagrađene:[accent] {0} +stat.destroyed = Zgrade uništene:[accent] {0} +stat.deconstructed = Zgrade dekonstruisane:[accent] {0} +stat.playtime = Vreme igre:[accent] {0} + +globalitems = [accent]Totalni materijali +map.delete = Da li ste sigurni da želite izbrisati ovu mapu "[accent]{0}[]"? +level.highscore = Najbolji rezultat: [accent]{0} +level.select = Izabrati nivo +level.mode = Režim igre: +coreattack = < Jezgro je napadnuto! > +nearpoint = [[ [scarlet]NAPUSTI ZONU DOLASKA TRENUTNO[] ]\nauništenje trenutno +database = Baza podataka +database.button = Baza podataka +savegame = Snimi igru +loadgame = Učitaj igrz +joingame = Priključi se na igru +customgame = Podesiva igra +newgame = Nova igra +none = +none.found = [lightgray] +none.inmap = [lightgray] +minimap = Minimapa +position = Pozicija +close = Zatvori +website = Veb-stranica +quit = Izađi +save.quit = Snimi i izađi +maps = Mape +maps.browse = Pretraži mape +continue = Nastavi +maps.none = [lightgray]Nijedna mapa nije pronađena! +invalid = Neispravno +pickcolor = Izaberi boju +preparingconfig = Spremanje konfiguracije +preparingcontent = Spremanje sadržaja +uploadingcontent = Kačenje sadržaja na internet +uploadingpreviewfile = Kačenje pregledne datoteke na internet. +committingchanges = Vršenje izmena +done = Gotovo. +feature.unsupported = Vaš uređaj ne podržava uvo funkciju + +mods.initfailed = [red]⚠[] Mindustry se nije mogao podići prethodni put.. To je verovatno izazvano greškom u vezi modova.\n\nDa bi se sprečilo večno ispadanje, [red]svi modovi su onemogućeni..[] +mods = Modovi +mods.none = [lightgray]Modovi nisu pronađeni! +mods.guide = Vodič za modovanje +mods.report = Prijavi grešku +mods.openfolder = Otvori folder +mods.viewcontent = Pregledaj sadržaj +mods.reload = Ponovno učitaj +mods.reloadexit = Igra će se sada ugasiti, da ponovo učita modove. +mod.installed = [[Instalirano] +mod.display = [gray]Mod:[orange] {0} +mod.enabled = [lightgray]Omogućeno +mod.disabled = [scarlet]Onemogućeno +mod.multiplayer.compatible = [gray]Kompatibilan sa multiplejerom +mod.disable = Onemogući +mod.content = Sadržaj: +mod.delete.error = Nemoguće izbrisati mod, datoteka je možda u upotrebi. +mod.requiresversion = [scarletMinimalna verzija igre: [accent]{0} +mod.outdated = [scarlet]Nekompatibilan sa verzijom 6 (nema minGameVersion: 105) +mod.missingdependencies = [scarlet]Nedostaju zavisni modovi: {0} +mod.erroredcontent = [scarlet]Greška u sadržaju +mod.errors = Greške su nastale tokom učitavanja sadržaja. +mod.noerrorplay = [scarlet]Imate modove sa greškama.[] Onemogućite te modove, ili ispravite greške. +mod.nowdisabled = [scarlet]Mod '{0}'nema potrebne zavisne modove:[accent] {1}\n[lightgray]Ove modove treba instalirati prvo.\nMod se automatski onemogućava. +mod.enable = Omogući +mod.requiresrestart = Igra će se zatvoriti da ažurira modove. +mod.reloadrequired = [scarlet]Ponovno pokretanje potrebno +mod.import = Uvezi mod +mod.import.file = Uvezi datoteku +mod.import.github = Uvezi sa GitHub-a +mod.jarwarn = [scarlet]JAR modovi su često nepouzdani i nebezbedni.[]\nBudite sigurni da je mod skinut sa verodostojnog izvora! +mod.item.remove = Ova stavka je deo [accent] '{0}'[] moda. Da je uklonite, onemogućite mod. +mod.remove.confirm = Mod će biti izbrisan. +mod.author = [lightgray]Autor:[] {0} +mod.missing = Ovaj snimak sadrži modove koji su ili promenjeni ili onemogućeni. Može doći do korupcije snimka. Da li ste sigurni da ga želite učitati?\n[lightgray]Modovi:\n{0} +mod.preview.missing = Pre objavljivanja moda u radionicu, neophodno je staviti sliku za mod.\nPostaviti sliku sa imenom: [accent] preview.png[] u folder moda i pokušati ponovo. +mod.folder.missing = Mod mora biti u obliku foldera da bi se objavio na radionicu.\nDa pretvorite bilo koji mod u folder, ekstraktujte fajl u neko folder, izbrišite stari .zip, ponovo pokrenite igru i učitajte modove. +mod.scripts.disable = Vaš uređaj ne podržava modove sa skriptama. Onemogućite te modove. + +about.button = Više informacija +name = Ime: +noname = Izaberite [accent] ime igrača[] prvo. +planetmap = Mapa planete +launchcore =Lansirajte Jezgro +filename = Ime datoteke: +unlocked = Novi sadržaj otključan! +available = Nova tehnologija dostupna za izučavanje! +unlock.incampaign = < Otključajte u kampanji za više detalja > +completed = [accent]Završeno. +techtree = Drvo tehnologija +research.legacy = Podaci iz verzije [accent]5.0[] su pronađeni.\nDa li želite da ih [accent]učitate[], ili [accent] odbacite ih[] i nastaviti kampanju (druga opcija je preporučena)? +research.load = Učitajte +research.discard = Odbacite +research.list = [lightgray]Tehnologija: +research = Izučite +researched = [lightgray]{0} izučeno. +research.progress = {0}% završeno +players = {0} broj igrača +players.single = {0} igrač +players.search = pretraži +players.notfound = [gray]igrači nisu pronađeni +server.closing = [accent]Zatvaranje servera... +server.kicked.kick = Izbačeni ste iz servera! +server.kicked.whitelist = Ne nalazite se na beloj listi servera. +server.kicked.serverClose = Server zatvoren.. +server.kicked.vote = Izglasano je da budete izbačeni. Doviđenja. +server.kicked.clientOutdated = Zastarela igra - ažurirajte igru! +server.kicked.serverOutdated = Zastareli server - tražite od vlasnika servera da ažurira! +server.kicked.banned = Trajno ste izbačeni iz ovog servera. +server.kicked.typeMismatch = Ovaj server nije kompatibilan sa vašom verzijom igre. +server.kicked.playerLimit = Server je pun. Sačekajte da se oslobodi mesto. +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 = Već ste na ovom serveru, a prisustvo sa da naloga je zabranjeno. +server.kicked.customClient = This server does not support custom builds. Download an official version. +server.kicked.gameover = Game over! +server.kicked.serverRestarting = The server is restarting. +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 [lightgray]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[lightgray]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. Note that public networks sometimes do not allow server discovery. +join.info = Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] or [accent]global[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[lightgray]If you want to connect to someone by IP, you would need to ask the host for their IP, which can be found by googling "my ip" from their device. +hostserver = Host Multiplayer Game +invitefriends = Invite Friends +hostserver.mobile = Host Game +host = Host +hosting = [accent]Opening server... +hosts.refresh = Refresh +hosts.discovering = Discovering LAN games +hosts.discovering.any = Discovering games +server.refreshing = Refreshing server +hosts.none = [lightgray]No local games found! +host.invalid = [scarlet]Can't connect to host. + +servers.local = Local Servers +servers.local.steam = Open Games & Local Servers +servers.remote = Remote Servers +servers.global = Community Servers + +servers.disclaimer = Community servers are [accent]not[] owned or controlled by the developer.\n\nServers may contain user-generated content that is not appropriate for all ages. +servers.showhidden = Show Hidden Servers +server.shown = Shown +server.hidden = Hidden + +trace = Trace Player +trace.playername = Player name: [accent]{0} +trace.ip = IP: [accent]{0} +trace.id = ID: [accent]{0} +trace.mobile = Mobile Client: [accent]{0} +trace.modclient = Custom Client: [accent]{0} +trace.times.joined = Times Joined: [accent]{0} +trace.times.kicked = Times Kicked: [accent]{0} +invalidid = Invalid client ID! Submit a bug report. +server.bans = Bans +server.bans.none = No banned players found! +server.admins = Admins +server.admins.none = No admins found! +server.add = Add Server +server.delete = Are you sure you want to delete this server? +server.edit = Edit Server +server.outdated = [scarlet]Outdated Server![] +server.outdated.client = [scarlet]Outdated Client![] +server.version = [gray]v{0} {1} +server.custombuild = [accent]Custom Build +confirmban = Are you sure you want to ban "{0}[white]"? +confirmkick = Are you sure you want to kick "{0}[white]"? +confirmvotekick = Are you sure you want to vote-kick "{0}[white]"? +confirmunban = Are you sure you want to unban this player? +confirmadmin = Are you sure you want to make "{0}[white]" an admin? +confirmunadmin = Are you sure you want to remove admin status from "{0}[white]"? +joingame.title = Join Game +joingame.ip = Address: +disconnect = Disconnected. +disconnect.error = Connection error. +disconnect.closed = Connection closed. +disconnect.timeout = Timed out. +disconnect.data = Failed to load world data! +cantconnect = Unable to join game ([accent]{0}[]). +connecting = [accent]Connecting... +reconnecting = [accent]Reconnecting... +connecting.data = [accent]Loading world data... +server.port = Port: +server.addressinuse = Address already in use! +server.invalidport = Invalid port number! +server.error = [scarlet]Error hosting server. +save.new = New Save +save.overwrite = Are you sure you want to overwrite\nthis save slot? +overwrite = Overwrite +save.none = No saves found! +savefail = Failed to save game! +save.delete.confirm = Are you sure you want to delete this save? +save.delete = Delete +save.export = Export Save +save.import.invalid = [accent]This save is invalid! +save.import.fail = [scarlet]Failed to import save: [accent]{0} +save.export.fail = [scarlet]Failed to export save: [accent]{0} +save.import = Import Save +save.newslot = Save name: +save.rename = Rename +save.rename.text = New name: +selectslot = Select a save. +slot = [accent]Slot {0} +editmessage = Edit Message +save.corrupted = Save file corrupted or invalid! +empty = +on = On +off = Off +save.autosave = Automatski snimak: {0} +save.map = Mapa: {0} +save.wave = Talas {0} +save.mode = Režim igre: {0} +save.date = Poslednji snimak: {0} +save.playtime = Vreme igre: {0} +warning = Upozorenje. +confirm = Potvrdi +delete = Izbriši +view.workshop = View In Workshop +workshop.listing = Edit Workshop Listing +ok = OK +open = Otvori +customize = Podesi pravila +cancel = Cancel +openlink = Open Link +copylink = Copy Link +back = Back +max = Max +crash.export = Export Crash Logs +crash.none = No crash logs found. +crash.exported = Crash logs exported. +data.export = Export Data +data.import = Import Data +data.openfolder = Open Data Folder +data.exported = Data exported. +data.invalid = This isn't valid game data. +data.import.confirm = Importing external data will overwrite[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. +quit.confirm = Are you sure you want to quit? +loading = [accent]Loading... +downloading = [accent]Downloading... +saving = [accent]Saving... +respawn = [accent][[{0}][] to respawn in core +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building +enablebuilding = [scarlet][[{0}][] to enable building +showui = UI hidden.\nPress [accent][[{0}][] to show UI. +wave = [accent]Wave {0} +wave.cap = [accent]Wave {0}/{1} +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.enemycores = [accent]{0}[lightgray] Enemy Cores +wave.enemycore = [accent]{0}[lightgray] Enemy Core +wave.enemy = [lightgray]{0} Enemy Remaining +wave.guardianwarn = Guardian approaching in [accent]{0}[] waves. +wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave. +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 +map.nospawn = This map does not have any cores for the player to spawn in! Add a [#{0}]{1}[] 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 [#{0}]{1}[] cores to this map in the editor. +map.invalid = Error loading map: corrupted or invalid map file. +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 +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} +steam.error = Failed to initialize Steam services.\nError: {0} + +editor.cliffs = Walls To Cliffs +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 +editor.center = Center +editor.search = Search Maps... +editor.filters = Filter Maps +editor.showAll = Show Default Maps +workshop = Workshop +waves.title = Waves +waves.remove = Remove +waves.every = every +waves.waves = wave(s) +waves.perspawn = per spawn +waves.shields = shields/wave +waves.to = to +waves.max = max units +waves.guardian = Čuvar +waves.preview = Prikaz +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. +waves.sort = Sort By +waves.sort.reverse = Reverse Sort +waves.sort.begin = Begin +waves.sort.health = Health +waves.sort.type = Type +waves.units.hide = Hide All +waves.units.show = Show All + +#these are intentionally in lower case +wavemode.counts = counts +wavemode.totals = totals +wavemode.health = health + +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. +editor.errorsave = Error saving file. +editor.errorimage = That's an image, not a map. +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 Image File +editor.importimage.description = Import an external map image file +editor.export = Export... +editor.exportfile = Export File +editor.exportfile.description = Export a map file +editor.exportimage = Export Terrain Image +editor.exportimage.description = Export an image file containing only basic terrain +editor.loadimage = Import Terrain +editor.saveimage = Export Terrain +editor.unsaved = Are you sure you want to exit?\n[scarlet]Any unsaved changes will be lost. +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?\n"[accent]{0}[]" +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 = [lightgray]No filters! Add one with the button below. + +filter.distort = Distort +filter.noise = Noise +filter.enemyspawn = Enemy Spawn Select +filter.spawnpath = Path To Spawn +filter.corespawn = Core Select +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 = Razmera +filter.option.chance = Šansa +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.rotate = Rotate +filter.option.amount = Amount +filter.option.block = Block +filter.option.floor = Floor +filter.option.flooronto = Target Floor +filter.option.target = Target +filter.option.replacement = Replacement +filter.option.wall = Wall +filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold +filter.option.radius = Radius +filter.option.percentile = Percentile + +width = Width: +height = Height: +menu = Menu +play = Play +campaign = Campaign +load = Load +save = Save +fps = FPS: {0} +ping = Ping: {0}ms +tps = TPS: {0} +memory = Mem: {0}mb +memory2 = Mem:\n {0}mb +\n {1}mb +language.restart = Restart your game for the language settings to take effect. +settings = Settings +tutorial = Tutorial +tutorial.retake = Re-Take Tutorial +editor = Editor +mapeditor = Map Editor + +abandon = Abandon +abandon.text = This zone and all its resources will be lost to the enemy. +locked = Locked +complete = [lightgray]Complete: +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.research = Research {0} +requirement.produce = Produce {0} +requirement.capture = Capture {0} +launch.text = Launch +research.multiplayer = Only the host can research items. +map.multiplayer = Only the host can view sectors. +uncover = Uncover +configure = Configure Loadout + +loadout = Loadout +resources = Resources +bannedblocks = Banned Blocks +bannedunits = Banned Units +addall = Add All +launch.from = Launching From: [accent]{0} +launch.destination = Destination: {0} +configure.invalid = Amount must be a number between 0 and {0}. +add = Add... +guardian = Guardian + +connectfail = [scarlet]Connection error:\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. + +weather.rain.name = Rain +weather.snow.name = Snow +weather.sandstorm.name = Sandstorm +weather.sporestorm.name = Sporestorm +weather.fog.name = Fog + +sectorlist = Sectors +sectorlist.attacked = {0} under attack +sectors.unexplored = [lightgray]Unexplored +sectors.resources = Resources: +sectors.production = Production: +sectors.export = Export: +sectors.import = Import: +sectors.time = Time: +sectors.threat = Threat: +sectors.wave = Wave: +sectors.stored = Stored: +sectors.resume = Resume +sectors.launch = Launch +sectors.select = Select +sectors.nonelaunch = [lightgray]none (sun) +sectors.rename = Rename Sector +sectors.enemybase = [scarlet]Enemy Base +sectors.vulnerable = [scarlet]Vulnerable +sectors.underattack = [scarlet]Under attack! [accent]{0}% damaged +sectors.survives = [accent]Survives {0} waves +sectors.go = Go +sector.curcapture = Sector Captured +sector.curlost = Sector Lost +sector.missingresources = [scarlet]Insufficient Core Resources +sector.attacked = Sector [accent]{0}[white] under attack! +sector.lost = Sector [accent]{0}[white] lost! +#note: the missing space in the line below is intentional +sector.captured = Sector [accent]{0}[white]captured! +sector.changeicon = Change Icon + +threat.low = Low +threat.medium = Medium +threat.high = High +threat.extreme = Extreme +threat.eradication = Eradication + +planets = Planets + +planet.serpulo.name = Serpulo +planet.sun.name = Sunce + +sector.impact0078.name = Udar 0078 +sector.groundZero.name = Početna zona +sector.craters.name = Krateri +sector.frozenForest.name = Smrznuta šuma +sector.ruinousShores.name = Urušene obale +sector.stainedMountains.name = Zatamnjene planine +sector.desolateRift.name = Pakleni prolaz +sector.nuclearComplex.name = Nuklearno proizvodni kompleks +sector.overgrowth.name = Prerasla ravnica +sector.tarFields.name = Polja katrana +sector.saltFlats.name = Slane ravnice +sector.fungalPass.name = Gljivični prolaz +sector.biomassFacility.name = Biosentetičko postrojenje +sector.windsweptIslands.name = Vetrovita ostrva +sector.extractionOutpost.name = Lansirna utvrda +sector.planetaryTerminal.name = Planetarno lansirni terminal +sector.coastline.name = Obala +sector.navalFortress.name = Pomorska tvrđava + +sector.groundZero.description = Savršena lokacija za ponovni početak. Niska neprijateljska pretnja, ali i mala količina resursa.\nSakupite sav bakar i svo olovo koje možete. Nastavite dalje. +sector.frozenForest.description = Čak i ovde, u blizini planina, spore su se proširile… ledene temperature ih neće večno zadržati.\n\nZapočnite upotrebu elektriciteta. Graditei sagorevne generatore. Naučite primenu popravljača. +sector.saltFlats.description =Na ivici pustinja nalaze se Slane Ravnice. Retko šta od resursa se može naći ovde..\n\nNeprijatelj je sazidao skladišno postrenje ovde. Uništite njihovo Jezgro. Sravnite sve sa zemljom. +sector.craters.description = Voda se nakupila u ovim kraterima, ostacima davnih ratova... Povratite sektor. Kopajte pesak. Topite olovno staklo. Pumpajte vodu da ohladite topove i bušilice. +sector.ruinousShores.description = Posle pustinja leži obala. Davno, ovde se nalazio sistem obalske odbrane. Malo šta od njega ostade do danas. Samo najosnovnije odbrane ostadoše, sve ostalo je svedeno na opiljke.\nNastavite širenje ka spoljašnjosti. Povratite tehnologiju. +sector.stainedMountains.description = Dalje u unutrašnjosti nalaze se planine, još nezagađene sporama. \nKopajte titanijum, koji je prisutan u značajnoj količini. Naučite sve njegove primene. .\n\nNeprijateljsko prisustvo ovde je veće… ne dajte im vremena da pošalju svoje najmoćnije jedinice... +sector.overgrowth.description = Ova oblast je potpuno zarasla, već bliska izvoru spora.\nNeprijatelj je ovde podigao utvrdu. Koristeći “Topuz” jedinice, uništite je. +sector.tarFields.description = Početak zone ekstrakcije nafte, između planina i pustinja. Jedna od retkih oblasti sa upotrebljivim rezervama katrana.\nIako je oblast napuštena, ovde se nalaze smažne neprijateljske jedinice. Ne potcenjujte ih..\n\n[lightgray]Izučite tehnologiju prerade nafte ako ste u mogućnosti. +sector.desolateRift.description = Zona ogromne opasnosti. Mnogo resursa, ali malo prostora. Povucite se čim je moguće. Ne dajte se prevariti dugačkim razmacima između neprijateljskih napada. +sector.nuclearComplex.description = Bivše postrojenje za proizvodnju i preradu torijuma, sada ništa više od ruševina..\n[lightgray]Izuči torijum i njegove brojne primene.\n\nNeprijatlje je ovde prisutan u velikim brojevima, stalno tražeći nove pretnje... +sector.fungalPass.description = Prelazna oblast između planina i nižih, sporama obraslim oblastima. Neprijatelj ovde ima malu izvidničku bazu.\nRazorite je..\nKoristite “Bodež” i “Puzač” jedinice. Uništite dva Jezgra. +sector.biomassFacility.description = Poreklo spora. Ovo je postrojenje gde su prvo otkrivene i proizvedene.\nIzučtei tehnologiju koja leži unutra. Proizvodi spore za kompresiju u ugalj i plastiku.\n\n[lightgray]Po propasti ovog zlosrećnog postrojenja, spore behu oslobođene. Ništa u lokalnom ekosistemu se nije moglo takmičiti sa tako invazivnim organizmom... +sector.windsweptIslands.description =Dalje nakon obale leže zabačena ostrva. Izveštaji pokazuju da su se ovde nalazile strukture za proizvodnju [accent]Plastaniuma[].\n\nOterajte neprijateljsku mornaricu. Sagradite bazu na ostrvu. Izučite novu tehnologiju tih fabrika. +sector.extractionOutpost.description = Zabačena utvrda, sagrađena od strane neprijatelja za lansiranje resursa u druge sektore..\n\nMeđusektorski transport je kljulčan za dalje osvajanje. Zauzmite bazu. Izučite njihove Lansirne Rampe. +sector.impact0078.description = Ovde padošei ostaci međuzvezdane transportne letelice koja je prva ušla u sistem..\n\nSakupite sve što je ostalo celo, nađite primenu za tu novu tehnologiju. +sector.planetaryTerminal.description =Krajnji cilj.\n\nOva obalska struktura ima objekat sposoban za lansiranje Jezgara na druge planete. Maksimalno je čuvan.\n\nProizvodite brodove. Elimiši neprijatelja što brže moguće. Sagradi Interplanetarni Akcelerator po osvanjanju sektora. + +status.burning.name = Burning +status.freezing.name = Freezing +status.wet.name = Wet +status.muddy.name = Muddy +status.melting.name = Melting +status.sapped.name = Sapped +status.electrified.name = Electrified +status.spore-slowed.name = Spore Slowed +status.tarred.name = Tarred +status.overdrive.name = Overdrive +status.overclock.name = Overclock +status.shocked.name = Shocked +status.blasted.name = Blasted +status.unmoving.name = Unmoving +status.boss.name = Guardian + +settings.language = Jezik +settings.data = Podaci +settings.reset = Vrati na podrazumevano +settings.rebind = Rebind +settings.resetKey = Reset +settings.controls = Controls +settings.game = Igra +settings.sound = Zvuk +settings.graphics = Grafika +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.clearsaves.confirm = Are you sure you want to clear all your saves? +settings.clearsaves = Clear Saves +settings.clearresearch = Clear Research +settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research? +settings.clearcampaignsaves = Clear Campaign Saves +settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves? +paused = [accent]< Paused > +clear = Clear +banned = [scarlet]Banned +unsupported.environment = [scarlet]Unsupported Environment +yes = Yes +no = No +info.title = Info +error.title = [scarlet]An error has occured +error.crashtitle = An error has occured +unit.nobuild = [scarlet]Unit can't build +lastaccessed = [lightgray]Last Accessed: {0} +block.unknown = [lightgray]??? + +stat.showinmap = +stat.description = Namena +stat.input = Ulaz +stat.output = Izlaz +stat.booster = Pojačivač +stat.tiles = Potrebni blokovi +stat.affinities = Afiniteti +stat.opposites = Suprotnosti +stat.powercapacity = Skladište energije +stat.powershot = Energija po pucnju +stat.damage = Šteta +stat.targetsair = Nišani vazduh +stat.targetsground = Nišani zemlju +stat.itemsmoved = Brzina kretanja +stat.launchtime = Vreme između lansiranja +stat.shootrange = Domet +stat.size = Veličina +stat.displaysize = Veličina ekrana +stat.liquidcapacity = Skladište tečnosti +stat.powerrange = Domet strujne veze +stat.linkrange = Domet veze +stat.instructions = Insturkcije +stat.powerconnections = Maksimalne veze +stat.poweruse = Upotreba energije +stat.powerdamage = Energija po šteti +stat.itemcapacity = Skladište materijala +stat.memorycapacity = Kapacitet memorije +stat.basepowergeneration = Osnovna generacija struje +stat.productiontime = Vreme proizvodnje +stat.repairtime = Vreme popravke celog bloka +stat.repairspeed = Brzina popravke +stat.weapons = Oružja +stat.bullet = Metak +stat.speedincrease = Povećanje brzije +stat.range = Domet +stat.drilltier = Materijali kojeje moguće kopati +stat.drillspeed = Osnovna brzina bušenja +stat.boosteffect = Efekat pojačivača +stat.maxunits = Maksimalne aktivne jedinice +stat.health = Izdržljivost +stat.armor = Oklop +stat.buildtime = Creme izgradnje +stat.maxconsecutive = Maksimalni konzekutivni +stat.buildcost = Cena izgradnje +stat.inaccuracy = Nepreciznost +stat.shots = Broj pucanja +stat.reload = Brzina paljbe +stat.ammo = Municija +stat.shieldhealth = Izdržljivost štita +stat.cooldowntime = Vreme hlađenja +stat.explosiveness = Eksplozivnost +stat.basedeflectchance = Šansa odbijanja +stat.lightningchance = Šansa za stvaranje munje +stat.lightningdamage = Šteta munje +stat.flammability = Zapaljivost +stat.radioactivity = Radioaktivnost +stat.charge = Električni naboj +stat.heatcapacity = Termalni kapacitet +stat.viscosity = Viskoznost +stat.temperature = Temperatura +stat.speed = Brzina +stat.buildspeed = Brzina gradnje +stat.minespeed = Brzina kopanja +stat.minetier = Nivo kopanja +stat.payloadcapacity = Tovarni kapacitet +stat.commandlimit = Ograničenje komandovanja +stat.abilities = Spospbnosti +stat.canboost = Može lebdeti +stat.flying = Leteća jedinica +stat.ammouse = Upotreba municije +stat.damagemultiplier = Umnožavač štete +stat.healthmultiplier = Umnožavač izdržljivosti +stat.speedmultiplier = Umnožavač brzine +stat.reloadmultiplier = Umnožavač brzine paljbe +stat.buildspeedmultiplier = Umnožavač brzine gradnje +stat.reactive = Reaguje sa +stat.healing = Popravlja + +ability.forcefield = Polje sile +ability.repairfield = Polje popravke +ability.statusfield = {0} Statusno polje +ability.unitspawn = {0} Fabrika +ability.shieldregenfield = Brzina obnovke štita +ability.movelightning = Munje pri kretanju +ability.energyfield = Energetsko polje: [accent]{0}[] štete ~ [accent]{1}[] blokova / [accent]{2}[] maksimalnih meta + +bar.drilltierreq = Bolja bušilica potrebna +bar.noresources = Nedostaju resursi +bar.corereq = Potrebno Jezgro kao osnova +bar.drillspeed = Brzina bušenja: {0}/s +bar.pumpspeed = Brzina pumpanja: {0}/s +bar.efficiency = Efikasnost: {0}% +bar.boost = Pojačanje: +{0}% +bar.powerbalance = Energija: {0}/s +bar.powerstored = Stored: {0}/{1} +bar.poweramount = Power: {0} +bar.poweroutput = Power Output: {0} +bar.powerlines = Connections: {0}/{1} +bar.items = Items: {0} +bar.capacity = Capacity: {0} +bar.unitcap = {0} {1}/{2} +bar.liquid = Liquid +bar.heat = Heat +bar.power = Power +bar.progress = Build Progress +bar.input = Input +bar.output = Output +bar.strength = [stat]{0}[lightgray]x strength + +units.processorcontrol = [lightgray]Processor Controlled + +bullet.damage = [stat]{0}[lightgray] šteta +bullet.splashdamage = [stat]{0}[lightgray] oblasna šteta ~[stat] {1}[lightgray] blokova +bullet.incendiary = [stat]zapaljiv +bullet.homing = [stat]navođen +bullet.frags = [stat]{0}[lightgray]x šrapnela: +bullet.lightning = [stat]{0}[lightgray]x munja ~ [stat]{1}[lightgray] štete +bullet.buildingdamage = [stat]{0}%[lightgray] šteta za strukture +bullet.knockback = [stat]{0}[lightgray] odbacivanje +bullet.pierce = [stat]{0}[lightgray]x probijanje +bullet.infinitepierce = [stat]proboj +bullet.healpercent = [stat]{0}[lightgray]% popravljanje +bullet.multiplier = [stat]{0}[lightgray]x umnožavanje municije +bullet.reload = [stat]{0}[lightgray]x brzina paljbe + +unit.blocks = blocks +unit.blockssquared = blocks² +unit.powersecond = power units/second +unit.tilessecond = tiles/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.minutes = mins +unit.persecond = /sec +unit.perminute = /min +unit.timesspeed = x speed +unit.percent = % +unit.shieldhealth = shield health +unit.items = items +unit.thousands = k +unit.millions = mil +unit.billions = b +unit.pershot = /shot +category.purpose = Namena +category.general = Opšte +category.power = Energija +category.liquids = Tečnosti +category.items = Resursi +category.crafting = Ulaz/izlaz +category.function = Funkcija +category.optional =Opcionalna poboljšanja +setting.skipcoreanimation.name = Preskoči animacije sletanja i poletanja Jezgra. +setting.landscape.name = Lock Landscape +setting.shadows.name = Shadows +setting.blockreplace.name = Automatic Block Suggestions +setting.linear.name = Linear Filtering +setting.hints.name = Hints +setting.logichints.name = Logic Hints +setting.backgroundpause.name = Pause In Background +setting.buildautopause.name = Auto-Pause Building +setting.doubletapmine.name = Double-Tap to Mine +setting.modcrashdisable.name = Disable Mods On Startup Crash +setting.animatedwater.name = Animated Surfaces +setting.animatedshields.name = Animated Shields +setting.playerindicators.name = Player Indicators +setting.indicators.name = Enemy 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 +setting.uiscale.description = Restart required to apply changes. +setting.swapdiagonal.name = Always Diagonal Placement +setting.difficulty.training = Training +setting.difficulty.easy = Easy +setting.difficulty.normal = Normal +setting.difficulty.hard = Hard +setting.difficulty.insane = Insane +setting.difficulty.name = Difficulty: +setting.screenshake.name = Screen Shake +setting.effects.name = Display Effects +setting.destroyedblocks.name = Display Destroyed Blocks +setting.blockstatus.name = Display Block Status +setting.conveyorpathfinding.name = Conveyor Placement Pathfinding +setting.sensitivity.name = Controller Sensitivity +setting.saveinterval.name = Save Interval +setting.seconds = {0} seconds +setting.milliseconds = {0} milliseconds +setting.fullscreen.name = Fullscreen +setting.borderlesswindow.name = Borderless Window +setting.borderlesswindow.name.windows = Borderless Fullscreen +setting.borderlesswindow.description = Restart may be required to apply changes. +setting.fps.name = Show FPS & Ping +setting.smoothcamera.name = Smooth Camera +setting.vsync.name = VSync +setting.pixelate.name = Pixelate +setting.minimap.name = Show Minimap +setting.coreitems.name = Display Core Items +setting.position.name = Show Player Position +setting.musicvol.name = Music Volume +setting.atmosphere.name = Show Planet Atmosphere +setting.ambientvol.name = Ambient Volume +setting.mutemusic.name = Mute Music +setting.sfxvol.name = SFX Volume +setting.mutesound.name = Mute Sound +setting.crashreport.name = Send Anonymous Crash Reports +setting.savecreate.name = Auto-Create Saves +setting.publichost.name = Public Game Visibility +setting.playerlimit.name = Player Limit +setting.chatopacity.name = Chat Opacity +setting.lasersopacity.name = Power Laser Opacity +setting.bridgeopacity.name = Bridge Opacity +setting.playerchat.name = Display Player Bubble Chat +setting.showweather.name = Show Weather Graphics +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.confirm.really = If you want to play with friends, use [green]Invite Friend[] instead of a [scarlet]Public server[]!\nAre you sure you want to make your game [scarlet]public[]? +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 +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 +category.blocks.name = Block Select +command.attack = Attack +command.rally = Rally +command.retreat = Retreat +command.idle = Idle +placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit +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.toggle_power_lines.name = Toggle Power Lasers +keybind.toggle_block_status.name = Toggle Block Statuses +keybind.move_x.name = Move X +keybind.move_y.name = Move Y +keybind.mouse_move.name = Follow Mouse +keybind.pan.name = Pan View +keybind.boost.name = Boost +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.category_prev.name = Previous Category +keybind.category_next.name = Next Category +keybind.block_select_left.name = Block Select Left +keybind.block_select_right.name = Block Select Right +keybind.block_select_up.name = Block Select Up +keybind.block_select_down.name = Block Select Down +keybind.block_select_01.name = Category/Block Select 1 +keybind.block_select_02.name = Category/Block Select 2 +keybind.block_select_03.name = Category/Block Select 3 +keybind.block_select_04.name = Category/Block Select 4 +keybind.block_select_05.name = Category/Block Select 5 +keybind.block_select_06.name = Category/Block Select 6 +keybind.block_select_07.name = Category/Block Select 7 +keybind.block_select_08.name = Category/Block Select 8 +keybind.block_select_09.name = Category/Block Select 9 +keybind.block_select_10.name = Category/Block Select 10 +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.pickupCargo.name = Pickup Cargo +keybind.dropCargo.name = Drop Cargo +keybind.command.name = Command +keybind.shoot.name = Shoot +keybind.zoom.name = Zoom +keybind.menu.name = Menu +keybind.pause.name = Pause +keybind.pause_building.name = Pause/Resume Building +keybind.minimap.name = Minimap +keybind.planet_map.name = Planet Map +keybind.research.name = Research +keybind.block_info.name = Block Info +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 +keybind.chat_scroll.name = Chat Scroll +keybind.chat_mode.name = Change Chat Mode +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.\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.editor.name = Editor +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.description = Destroy the enemy's base. \n[gray]Requires a red core in the map to play. +mode.custom = Custom Rules + +rules.infiniteresources = Infinite Resources +rules.reactorexplosions = Reactor Explosions +rules.coreincinerates = Core Incinerates Overflow +rules.schematic = Schematics Allowed +rules.wavetimer = Wave Timer +rules.waves = Waves +rules.attack = Attack Mode +rules.buildai = AI Building +rules.aitier = AI Tier +rules.cleanupdeadteams = Clean Up Defeated Team Buildings (PvP) +rules.corecapture = Capture Core On Destruction +rules.polygoncoreprotection = Polygonal Core Protection +rules.enemyCheat = Infinite AI (Red Team) Resources +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier +rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier +rules.unithealthmultiplier = Unit Health Multiplier +rules.unitdamagemultiplier = Unit Damage Multiplier +rules.unitcapvariable = Cores Contribute To Unit Cap +rules.unitcap = Base Unit Cap +rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) +rules.wavespacing = Wave Spacing:[lightgray] (sec) +rules.buildcostmultiplier = Build Cost Multiplier +rules.buildspeedmultiplier = Build Speed Multiplier +rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier +rules.waitForWaveToEnd = Waves Wait for Enemies +rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) +rules.unitammo = Units Require Ammo +rules.enemyteam = Enemy Team +rules.playerteam = Player Team +rules.title.waves = Waves +rules.title.resourcesbuilding = Resources & Building +rules.title.enemy = Enemies +rules.title.unit = Units +rules.title.experimental = Experimental +rules.title.environment = Environment +rules.title.teams = Teams +rules.lighting = Lighting +rules.enemyLights = Enemy Lights +rules.fire = Fire +rules.explosions = Block/Unit Explosion Damage +rules.ambientlight = Ambient Light +rules.weather = Weather +rules.weather.frequency = Frequency: +rules.weather.always = Always +rules.weather.duration = Duration: + +content.item.name = Items +content.liquid.name = Liquids +content.unit.name = Units +content.block.name = Blocks +content.status.name = Status Effects +content.sector.name = Sectors + +item.copper.name = Bakar +item.lead.name = Olovo +item.coal.name = Ugalj +item.graphite.name = Grafit +item.titanium.name = Titanijum +item.thorium.name = Torijum +item.silicon.name = Silicijum +item.plastanium.name = Plastanijum +item.phase-fabric.name = Fazna tkanina +item.surge-alloy.name = Impulsna legura +item.spore-pod.name = Kapsula spora +item.sand.name = Pesak +item.blast-compound.name = Eksploziv +item.pyratite.name = Piratit +item.metaglass.name = Olovno staklo +item.scrap.name = Opiljci + +liquid.water.name = Voda +liquid.slag.name = Šljaka +liquid.oil.name = Nafta +liquid.cryofluid.name = Rashladna tečnost + +unit.dagger.name = Bodež +unit.mace.name = Topuz +unit.fortress.name = Tvrđava +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Kvazar +unit.crawler.name = Puzač +unit.atrax.name = Atraks +unit.spiroct.name = Spirokt +unit.arkyid.name = Arkid +unit.toxopid.name = Toksopid +unit.flare.name = Blesak +unit.horizon.name = Horizont +unit.zenith.name = Zenit +unit.antumbra.name = Antumbra +unit.eclipse.name = Pomračenje +unit.mono.name = Mono +unit.poly.name = Poli +unit.mega.name = Mega +unit.quad.name = Kvad +unit.oct.name = Okt +unit.risso.name = Riso +unit.minke.name = Minke +unit.bryde.name = Bride +unit.sei.name = Sei +unit.omura.name = Omura +unit.retusa.name = Retuza +unit.oxynoe.name = Oksinoe +unit.cyerce.name = Cierce +unit.aegires.name = Aegires +unit.navanax.name = Navanaks +unit.alpha.name = Alpfa +unit.beta.name = Beta +unit.gamma.name = Gama +unit.scepter.name = Skiptar +unit.reign.name = Car +unit.vela.name = Vela +unit.corvus.name = Korvus + +block.parallax.name = Odblesak +block.cliff.name = Litica +block.sand-boulder.name = Peščana stena +block.basalt-boulder.name = Bazaltna stena +block.grass.name = Trava +block.molten-slag.name = Šljaka +block.pooled-cryofluid.name = Rashladna tečnost +block.space.name = Svemir +block.salt.name = So +block.salt-wall.name = Soni zid +block.pebbles.name = Šljunak +block.tendrils.name = Rastinje +block.sand-wall.name = Peščani zid +block.spore-pine.name = Četinar spora +block.spore-wall.name = Zid spora +block.boulder.name = Stena +block.snow-boulder.name = Snežna stena +block.snow-pine.name = Snežni četinar +block.shale.name = Škriljac +block.shale-boulder.name = Škriljčana stena +block.moss.name = Mahovina +block.shrubs.name = Žbunovi +block.spore-moss.name = Mahovina spora +block.shale-wall.name = Škriljčani zid +block.scrap-wall.name = Zid od opiljaka +block.scrap-wall-large.name = Veliki zid od opiljaka +block.scrap-wall-huge.name = Ogromni zid od opiljaka +block.scrap-wall-gigantic.name = Džinovski zid od opiljaka +block.thruster.name = Potisnik +block.kiln.name = Pećnica +block.graphite-press.name = Grafitna presa +block.multi-press.name = Multi-Presa +block.constructing = {0} [lightgray](U izgradnju) +block.spawn.name = Mesto stvaranja neprijatelja +block.core-shard.name = Jezgro: Krhotina +block.core-foundation.name = Jezgro: Temelj +block.core-nucleus.name = Jezgro: Nukleus +block.deep-water.name = Duboka voda +block.shallow-water.name = Voda +block.tainted-water.name = Zaražena voda +block.deep-tainted-water.name = Duboka zaražena voda +block.darksand-tainted-water.name = Zaražena voda na tamnom pesku +block.tar.name = Katran +block.stone.name = Kamen +block.sand.name = Pesak +block.darksand.name = Tamni pesak +block.ice.name = Led +block.snow.name = Sneg +block.crater-stone.name = Krateri +block.sand-water.name = Voda na pesku +block.darksand-water.name = Voda na tamnom pesku +block.char.name = Nagoretina +block.dacite.name = Dacit +block.rhyolite.name = Rilotit +block.dacite-wall.name = Dacitni zid +block.dacite-boulder.name = Dacitna stena +block.ice-snow.name = Snežni led +block.stone-wall.name = Kameni zid +block.ice-wall.name = Ledeni zid +block.snow-wall.name = Snežni zid +block.dune-wall.name = Zid dina +block.pine.name = Četinar +block.dirt.name = Zemlja +block.dirt-wall.name = Zemljani zid +block.mud.name = Blato +block.white-tree-dead.name = Mrtvo belo drvo +block.white-tree.name = Belo drvo +block.spore-cluster.name = Kolonija spora +block.metal-floor.name = Metalni pod 1 +block.metal-floor-2.name = Metalni pod 2 +block.metal-floor-3.name = Metalni pod 3 +block.metal-floor-4.name = Metalni pod 4 +block.metal-floor-5.name = Metalni pod 5 +block.metal-floor-damaged.name = Oštećeni metalni pod +block.dark-panel-1.name = Tamna ploča 1 +block.dark-panel-2.name = Tamna ploča 2 +block.dark-panel-3.name = Tamna ploča 3 +block.dark-panel-4.name = Tamna ploča 4 +block.dark-panel-5.name = Tamna ploča 5 +block.dark-panel-6.name = Tamna ploča 6 +block.dark-metal.name = Tamni metal +block.basalt.name = Bazalt +block.hotrock.name = Vrele stene +block.magmarock.name = Magmatske stene +block.copper-wall.name = Bakarni zid +block.copper-wall-large.name = Veliki bakarni zid +block.titanium-wall.name = Titanijumski zid +block.titanium-wall-large.name = Veliki titanijumski zid +block.plastanium-wall.name = Plastanijumski zid +block.plastanium-wall-large.name = Veliki plastanijumski zid +block.phase-wall.name = Fazni zid +block.phase-wall-large.name = Veliki fazni zid +block.thorium-wall.name = Torijumski zid +block.thorium-wall-large.name = Veliki torijumski zid +block.door.name = Vrata +block.door-large.name = Velika vrata +block.duo.name = Duo +block.scorch.name = Iskra +block.scatter.name = Flak +block.hail.name = Grad +block.lancer.name = Koplje +block.conveyor.name = Pokretna traka +block.titanium-conveyor.name = Titanium Conveyor +block.plastanium-conveyor.name = Plastanium Conveyor +block.armored-conveyor.name = Armored Conveyor +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.illuminator.name = Illuminator +block.overflow-gate.name = Overflow Gate +block.underflow-gate.name = Underflow Gate +block.silicon-smelter.name = Silicon Smelter +block.phase-weaver.name = Phase Weaver +block.pulverizer.name = Pulverizer +block.cryofluid-mixer.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.diode.name = Battery Diode +block.battery.name = Battery +block.battery-large.name = Large Battery +block.combustion-generator.name = Combustion Generator +block.steam-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.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.liquid-void.name = Liquid Void +block.power-void.name = Power Void +block.power-source.name = Power Source +block.unloader.name = Unloader +block.vault.name = Vault +block.wave.name = Talas +block.tsunami.name = Cunami +block.swarmer.name = Roj +block.salvo.name = Salvo +block.ripple.name = Impuls +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.repair-point.name = Repair Point +block.repair-turret.name = Repair Turret +block.pulse-conduit.name = Pulse Conduit +block.plated-conduit.name = Plated 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 = Nuklearni reaktor +block.mass-driver.name = Akcelerator +block.blast-drill.name = Vazdušna pumpa +block.thermal-pump.name = Termalna pumpa +block.thermal-generator.name = Termalni generator +block.alloy-smelter.name = Topionica impulsne legure +block.mender.name = Popravljač +block.mend-projector.name = Projektor popravke +block.surge-wall.name = Impulsni zid +block.surge-wall-large.name = Veliki impulsni zid +block.cyclone.name = Ciklon +block.fuse.name = Fuzija +block.shock-mine.name = Šok-mina +block.overdrive-projector.name = Projektor ubrzanja +block.force-projector.name = Projektor štita +block.arc.name = Luk +block.rtg-generator.name = RTG Generator +block.spectre.name = Utvara +block.meltdown.name = Istopitelj +block.foreshadow.name = Predznak +block.container.name = Kontejner +block.launch-pad.name = Launch Pad +block.segment.name = Segment +block.command-center.name = Command Center +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.payload-conveyor.name = Payload Conveyor +block.payload-router.name = Payload Router +block.duct.name = Duct +block.duct-router.name = Duct Router +block.duct-bridge.name = Duct Bridge +block.payload-propulsion-tower.name = Payload Propulsion Tower +block.payload-void.name = Payload Void +block.payload-source.name = Payload Source +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.overdrive-dome.name = Overdrive Dome +block.interplanetary-accelerator.name = Interplanetary Accelerator +#experimental, may be removed +block.block-forge.name = Block Forge +block.block-loader.name = Block Loader +block.block-unloader.name = Block Unloader + +block.switch.name = Switch +block.micro-processor.name = Micro Processor +block.logic-processor.name = Logic Processor +block.hyper-processor.name = Hyper Processor +block.logic-display.name = Logic Display +block.large-logic-display.name = Large Logic Display +block.memory-cell.name = Memory Cell +block.memory-bank.name = Memory Bank + +team.blue.name = plavi +team.crux.name = kruks +team.sharded.name = skrhani +team.derelict.name = zaostali +team.green.name = zeleni +team.purple.name = ljubičasti + +hint.skip = Skip +hint.desktopMove = Use [accent][[WASD][] to move. +hint.zoom = [accent]Scroll[] to zoom in or out. +hint.mine = Move near the \uf8c4 copper ore and [accent]tap[] it to mine manually. +hint.desktopShoot = [accent][[Left-click][] to shoot. +hint.depositItems = To transfer items, drag from your ship to the core. +hint.respawn = To respawn as a ship, press [accent][[V][]. +hint.respawn.mobile = You have switched control to a unit/structure. To respawn as a ship, [accent]tap the avatar in the top left.[] +hint.desktopPause = Press [accent][[Space][] to pause and unpause the game. +hint.placeDrill = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and click on a copper patch to place it. +hint.placeDrill.mobile = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and tap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. +hint.placeConveyor = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. +hint.placeConveyor.mobile = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nHold down your finger for a second and drag to place multiple conveyors. +hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. +hint.breaking = [accent]Right-click[] and drag to break blocks. +hint.breaking.mobile = Activate the \ue817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. +hint.blockInfo = View information of a block by selecting it in the [accent]build menu[], then selecting the [accent][[?][] button at the right. +hint.derelict = [accent]Derelict[] structures are broken remnants of old bases that no longer function.\n\nThese structures can be [accent]deconstructed[] for resources. +hint.research = Use the \ue875 [accent]Research[] button to research new technology. +hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology. +hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to control friendly units or turrets. +hint.unitControl.mobile = [accent][[Double-tap][] to control friendly units or turrets. +hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the bottom right. +hint.launch.mobile = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the \ue88c [accent]Menu[]. +hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. +hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. +hint.conveyorPathfind.mobile = Enable \ue844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. +hint.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters. +hint.command = Press [accent][[G][] to command nearby units of [accent]similar type[] into formation.\n\nTo command ground units, you must first control another ground unit. +hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation. +hint.payloadPickup = Press [accent][[[] to pick up small blocks or units. +hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up. +hint.payloadDrop = Press [accent]][] to drop a payload. +hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. +hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. +hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. +hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down. +hint.coreUpgrade = Cores can be upgraded by [accent]placing higher-tier cores over them[].\n\nPlace a [accent]Foundation[] core over the [accent]Shard[] core. Make sure it is free from nearby obstructions. +hint.presetLaunch = Gray [accent]landing zone sectors[], such as [accent]Frozen Forest[], can be launched to from anywhere. They do not require capture of nearby territory.\n\n[accent]Numbered sectors[], such as this one, are [accent]optional[]. +hint.presetDifficulty = This sector has a [scarlet]high enemy threat level[].\nLaunching to such sectors is [accent]not recommended[] without proper technology and preparation. +hint.coreIncinerate = After the core is filled to capacity with an item, any extra items of that type it receives will be [accent]incinerated[]. +hint.coopCampaign = When playing the [accent]co-op campaign[], items that are produced in the current map will also be sent [accent]to your local sectors[].\n\nAny new research done by the host also carries over. + +item.copper.description = Koristi se za sve strukture. +item.copper.details = Bakar. Nenormalno prisutan na Serupulu, strukturno je slab ako nije ojačan. +item.lead.description = Koristi se za transport tečnosti i elektroniku. +item.lead.details = Gusto. Inertno. Veoma primenljivo za baterije.\nNapomena: verovatno otrovno po biološke oblike života. Nije kao da ih je ovde mnogo ostalo. +item.metaglass.description = Koristi se za transport i skladište tečnosti. +item.graphite.description = Koristi se kao električna komponenta i municija za topove. +item.sand.description = Koristan za preradu drugih materijala. +item.coal.description = Koristi se za gorivo i preradu drugih materijala. +item.coal.details = Izgleda da je biološkog porekla, fosilizovan davno pre Zasejavanja... +item.titanium.description = Koristi se za transport tečnosti, izgradnju struktura, topova i jedinica. +item.thorium.description = Koristi se kao izdržljiv građevinski materijal, municija i nuklearno gorivo. +item.scrap.description = Pretapa i melje se za preradu u druge materijale. +item.scrap.details = Ostaci davnašnjih jedinica i struktura. +item.silicon.description = Koristi se za solarne ploče, topove, jedinice i naprednu elektroniku. Od silicijuma se pravi dirigovana municija. +item.plastanium.description = Koristi se za napredne jedinice, izloaciju i fragmentacionu municiju. +item.phase-fabric.description = Koristi se za naprednu elektroniku i samopopravljajuće strukture. +item.surge-alloy.description = Koristi se kao municija i reaktivna odbrana. +item.spore-pod.description = Prerađuje se u naftu ili plastiku, može se spaljivati kao gorivo. +item.spore-pod.details = Spore. Verovatno sintetički obliki života. Emituje gasove otrovne po ostali život. Ekstremno invazivne. Visoko zapaljive u određenim uslovima. +item.blast-compound.description = Koristi se za bombe i eksplozivnu municiju. +item.pyratite.description = Koristi se kao zapaljiva municija i odlično gorivo za elektrane. + +liquid.water.description = Koristi se za hlađenje mašina i preradu otpada. +liquid.slag.description = Može se preraditi u Razdvajačima u druge resurse, može se sipati na neprijatelje kao oružje. +liquid.oil.description = Koristi se za proizvodnju naprednih materijala. Može se koristi kao pojačivač vatre ako se sipa na neprijatelja dok gori. +liquid.cryofluid.description = Rashladna tečnost za fabrike, reaktore i topove. + +block.derelict = [lightgray]Derelict +block.armored-conveyor.description = Moves items forward. Does not accept inputs from the sides. +block.illuminator.description = Emits light. +block.message.description = Stores a message for communication between allies. +block.graphite-press.description = Compresses coal into graphite. +block.multi-press.description = Compresses coal into graphite. Requires water as coolant. +block.silicon-smelter.description = Refines silicon from sand and coal. +block.kiln.description = Smelts sand and lead into metaglass. +block.plastanium-compressor.description = Produces plastanium from oil and titanium. +block.phase-weaver.description = Synthesizes phase fabric from thorium and sand. +block.alloy-smelter.description = Fuses titanium, lead, silicon and copper into surge alloy. +block.cryofluid-mixer.description = Mixes water and fine titanium powder to produce cryofluid. +block.blast-mixer.description = Produces blast compound from pyratite and spore pods. +block.pyratite-mixer.description = Mixes coal, lead and sand into pyratite. +block.melter.description = Melts down scrap into slag. +block.separator.description = Separates slag into its mineral components. +block.spore-press.description = Compresses spore pods into oil. +block.pulverizer.description = Crushes scrap into fine sand. +block.coal-centrifuge.description = Transforms oil into coal. +block.incinerator.description = Vaporizes any item or liquid it receives. +block.power-void.description = Voids all power inputted. 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.liquid-void.description = Removes any liquids. Sandbox only. +block.payload-source.description = Infinitely outputs payloads. Sandbox only. +block.payload-void.description = Destroys any payloads. Sandbox only. +block.copper-wall.description = Protects structures from enemy projectiles. +block.copper-wall-large.description = Protects structures from enemy projectiles. +block.titanium-wall.description = Protects structures from enemy projectiles. +block.titanium-wall-large.description = Protects structures from enemy projectiles. +block.plastanium-wall.description = Protects structures from enemy projectiles. Absorbs lasers and electric arcs. Blocks automatic power connections. +block.plastanium-wall-large.description = Protects structures from enemy projectiles. Absorbs lasers and electric arcs. Blocks automatic power connections. +block.thorium-wall.description = Protects structures from enemy projectiles. +block.thorium-wall-large.description = Protects structures from enemy projectiles. +block.phase-wall.description = Protects structures from enemy projectiles, reflecting most bullets upon impact. +block.phase-wall-large.description = Protects structures from enemy projectiles, reflecting most bullets upon impact. +block.surge-wall.description = Protects structures from enemy projectiles, periodically releasing electric arcs upon contact. +block.surge-wall-large.description = Protects structures from enemy projectiles, periodically releasing electric arcs upon contact. +block.door.description = A wall that can be opened and closed. +block.door-large.description = A wall that can be opened and closed. +block.mender.description = Periodically repairs blocks in its vicinity.\nOptionally uses silicon to boost range and efficiency. +block.mend-projector.description = 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 increases shield size. +block.shock-mine.description = Releases electric arcs upon enemy unit contact. +block.conveyor.description = Transports items forward. +block.titanium-conveyor.description = Transports items forward. Faster than a standard conveyor. +block.plastanium-conveyor.description = Transports items forward in batches. Accepts items at the back, and unloads them in three directions at the front. Requires multiple loading and unloading points for peak throughput. +block.junction.description = Acts as a bridge for two crossing conveyor belts. +block.bridge-conveyor.description = Transports items over terrain or buildings. +block.phase-conveyor.description = Instantly transports items over terrain or buildings. Longer range than the item bridge, but requires power. +block.sorter.description = If an input item matches the selection, it passes forward. Otherwise, the item is outputted to the left and right. +block.inverted-sorter.description = Similar to a standard sorter, but outputs selected items to the sides instead. +block.router.description = Distributes input items to 3 output directions equally. +block.router.details = A necessary evil. Using next to production inputs is not advised, as they will get clogged by output. +block.distributor.description = Distributes input items to 7 output directions equally. +block.overflow-gate.description = Only outputs items to the left and right if the front path is blocked. +block.underflow-gate.description = Opposite of an overflow gate. Outputs to the front if the left and right paths are blocked. +block.mass-driver.description = Long-range item transport structure. Collects batches of items and shoots them to other mass drivers. +block.mechanical-pump.description = Pumps and outputs liquids. Does not require power. +block.rotary-pump.description = Pumps and outputs liquids. Requires power. +block.thermal-pump.description = Pumps and outputs liquids. +block.conduit.description = Moves liquids forward. Used in conjunction with pumps and other conduits. +block.pulse-conduit.description = Moves liquids forward. Transports faster and stores more than standard conduits. +block.plated-conduit.description = Moves liquids forward. Does not accept input from the sides. Does not leak. +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. +block.liquid-tank.description = Stores a large amount of liquid. Outputs to all sides, similarly to a liquid router. +block.liquid-junction.description = Acts as a bridge for two crossing conduits. +block.bridge-conduit.description = Transports liquids over terrain or buildings. +block.phase-conduit.description = Transports liquids over terrain or buildings. Longer range than the bridge conduit, but requires power. +block.power-node.description = Transmits power to connected nodes. The node will receive power from or supply power to any adjacent blocks. +block.power-node-large.description = An advanced power node with greater range. +block.surge-tower.description = A long-range power node with fewer available connections. +block.diode.description = Moves battery power in one direction, but only if the other side has less power stored. +block.battery.description = Stores power in times of surplus energy. Outputs power in times of deficit. +block.battery-large.description = Stores power in times of surplus energy. Outputs power in times of deficit. Higher capacity than a regular battery. +block.combustion-generator.description = Generates power by burning flammable materials, such as coal. +block.thermal-generator.description = Generates power when placed in hot locations. +block.steam-generator.description = Generates power by burning flammable materials and converting water to steam. +block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite. +block.rtg-generator.description = 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-large.description = Provides a small amount of power from the sun. More efficient than 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. +block.impact-reactor.description = Creates massive amounts of power at peak efficiency. Requires a significant power input to kickstart the process. +block.mechanical-drill.description = When placed on ore, outputs items at a slow pace indefinitely. Only capable of mining basic resources. +block.pneumatic-drill.description = An improved drill, capable of mining titanium. Mines at a faster pace than a mechanical drill. +block.laser-drill.description = Allows drilling even faster through laser technology, but requires power. Capable of mining thorium. +block.blast-drill.description = The ultimate drill. Requires large amounts of power. +block.water-extractor.description = Extracts groundwater. Used in locations with no surface water available. +block.cultivator.description = Cultivates tiny concentrations of atmospheric spores into spore pods. +block.cultivator.details = Recovered technology. Used to produce massive amounts of biomass as efficiently as possible. Likely the initial incubator of the spores now covering Serpulo. +block.oil-extractor.description = Uses large amounts of power, sand and water to drill for oil. +block.core-shard.description = Core of the base. Once destroyed, the sector is lost. +block.core-shard.details = The first iteration. Compact. Self-replicating. Equipped with single-use launch thrusters. Not designed for interplanetary travel. +block.core-foundation.description = Core of the base. Well armored. Stores more resources than a Shard. +block.core-foundation.details = The second iteration. +block.core-nucleus.description = Core of the base. Extremely well armored. Stores massive amounts of resources. +block.core-nucleus.details = The third and final iteration. +block.vault.description = Stores a large amount of items of each type. Contents can be retrieved with an unloader. +block.container.description = Stores a small amount of items of each type. Contents can be retrieved with an unloader. +block.unloader.description = Unloads the selected item from nearby blocks. +block.launch-pad.description = Launches batches of items to selected sectors. +block.duo.description = Fires alternating bullets at enemies. +block.scatter.description = Fires clumps of lead, scrap or metaglass flak at enemy aircraft. +block.scorch.description = Burns any ground enemies close to it. Highly effective at close range. +block.hail.description = Fires small shells at ground enemies over long distances. +block.wave.description = Fires streams of liquid at enemies. Automatically extinguishes fires when supplied with water. +block.lancer.description = Charges and fires powerful beams of energy at ground targets. +block.arc.description = Fires arcs of electricity at ground targets. +block.swarmer.description = Fires homing missiles at enemies. +block.salvo.description = Fires quick salvos of bullets at enemies. +block.fuse.description = Fires three close-range piercing blasts at nearby enemies. +block.ripple.description = Shoots clusters of shells at ground enemies over long distances. +block.cyclone.description = Fires explosive clumps of flak at nearby enemies. +block.spectre.description = Fires large armor-piercing bullets at air and ground targets. +block.meltdown.description = Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. +block.foreshadow.description = Fires a large single-target bolt over long distances. Prioritizes enemies with higher max health. +block.repair-point.description = Continuously repairs the closest damaged unit in its vicinity. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. +block.parallax.description = Fires a tractor beam that pulls in air targets, damaging them in the process. +block.tsunami.description = Fires powerful streams of liquid at enemies. Automatically extinguishes fires when supplied with water. +block.silicon-crucible.description = Refines silicon from sand and coal, using pyratite as an additional heat source. More efficient in hot locations. +block.disassembler.description = Separates slag into trace amounts of exotic mineral components at low efficiency. Can produce thorium. +block.overdrive-dome.description = Increases the speed of nearby buildings. Requires phase fabric and silicon to operate. +block.payload-conveyor.description = Moves large payloads, such as units from factories. +block.payload-router.description = Splits input payloads into 3 output directions. +block.command-center.description = Controls unit behavior with several different commands. +block.ground-factory.description = Produces ground units. Output units can be used directly, or moved into reconstructors for upgrading. +block.air-factory.description = Produces air units. Output units can be used directly, or moved into reconstructors for upgrading. +block.naval-factory.description = Produces naval units. Output units can be used directly, or moved into reconstructors for upgrading. +block.additive-reconstructor.description = Upgrades inputted units to the second tier. +block.multiplicative-reconstructor.description = Upgrades inputted units to the third tier. +block.exponential-reconstructor.description = Upgrades inputted units to the fourth tier. +block.tetrative-reconstructor.description = Upgrades inputted units to the fifth and final tier. +block.switch.description = A toggleable switch. State can be read and controlled with logic processors. +block.micro-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings. +block.logic-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings. Faster than the micro processor. +block.hyper-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings. Faster than the logic processor. +block.memory-cell.description = Stores information for a logic processor. +block.memory-bank.description = Stores information for a logic processor. High capacity. +block.logic-display.description = Displays arbitrary graphics from a logic processor. +block.large-logic-display.description = Displays arbitrary graphics from a logic processor. +block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. +block.repair-turret.description = Continuously repairs the closest damaged unit in its vicinity. Optionally accepts coolant. +block.payload-propulsion-tower.description = Long-range payload transport structure. Shoots payloads to other linked payload propulsion towers. + +unit.dagger.description = Ispaljuje standardne metke na sve neprijatelje u dometu. +unit.mace.description = Ispaljuje mlazeve plamena na sve neprijatelje u dometu. +unit.fortress.description = Ispaljuje dalekometne artiljerijske granate na mete na zemlji. +unit.scepter.description = Ispaljuje rafale naelektrisanih metaka na sve mete u dometu. +unit.reign.description = Ispaljuje rafale ogromnih probijajućih metaka na sve mete u dometu. +unit.nova.description = Ispaljuje lasere koji popravljaju savezničke, a oštećuju protivničke strukure i jedinice. Može leteti. +unit.pulsar.description = Ispaljuje munje koji oštećuju neprijatelje, a popravljaju saveznike. +unit.quasar.description = Ispaljuje probijajuće lasere na sve mete u dometu. Laseri oštećuju neprijatelje, a popravljaju saveznike. Može leteti. Ima energetski štit. +unit.vela.description = Ispaljuje ogromni konstantni laserski zrak koji popravlja saveznike, a oštećuje i pali neprijatelje. Ima dva popravna zraka. Može leteti. +unit.corvus.description = Fires a massive laser blast that damages enemies and repairs allied structures. Can step over most terrain. +unit.crawler.description = Dolazi do nepprijatelja i samouništava se, izazivaćuji veliku eksploziju. +unit.atrax.description = Ispaljuje pregrejanu šljaku na neprijatelje u dometu. Može pregaziti preko većine terena i zgrada. +unit.spiroct.description = Fires sapping laser beams at enemies, repairing itself in the process. Can step over most terrain. +unit.arkyid.description = Fires large sapping laser beams at enemies, repairing itself in the process. Can step over most terrain. +unit.toxopid.description = Fires large electric cluster-shells and piercing lasers at enemies. Can step over most terrain. +unit.flare.description = Fires standard bullets at nearby ground targets. +unit.horizon.description = Drops clusters of bombs on ground targets. +unit.zenith.description = Fires salvos of missiles at all nearby enemies. +unit.antumbra.description = Fires a barrage of bullets at all nearby enemies. +unit.eclipse.description = Fires two piercing lasers and a barrage of flak at all nearby enemies. +unit.mono.description = Automatically mines copper and lead, depositing it into the core. +unit.poly.description = Automatically rebuilds destroyed structures and assists other units in construction. +unit.mega.description = Automatically repairs damaged structures. Capable of carrying blocks and small ground units. +unit.quad.description = Drops large bombs on ground targets, repairing allied structures and damaging enemies. Capable of carrying medium-sized ground units. +unit.oct.description = Protects nearby allies with its regenerating shield. Capable of carrying most ground units. +unit.risso.description = Fires a barrage of missiles and bullets at all nearby enemies. +unit.minke.description = Fires shells and standard bullets at nearby ground targets. +unit.bryde.description = Fires long-range artillery shells and missiles at enemies. +unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies. +unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units. +unit.alpha.description = Defends the Shard core from enemies. Builds structures. +unit.beta.description = Defends the Foundation core from enemies. Builds structures. +unit.gamma.description = Defends the Nucleus core from enemies. Builds structures. +unit.retusa.description = Fires homing torpedoes at nearby enemies. Repairs allied units. +unit.oxynoe.description = Fires structure-repairing streams of flame at nearby enemies. Targets nearby enemy projectiles with a point defense turret. +unit.cyerce.description = Fires seeking cluster-missiles at enemies. Repairs allied units. +unit.aegires.description = Shocks all enemy units and structures that enter its energy field. Repairs all allies. +unit.navanax.description = Fires explosive EMP projectiles, dealing significant damage to enemy power networks and repairing allied structures. Melts nearby enemies with 4 autonomous laser turrets. + +lst.read = Read a number from a linked memory cell. +lst.write = Write a number to a linked memory cell. +lst.print = Add text to the print buffer.\nDoes not display anything until [accent]Print Flush[] is used. +lst.draw = Add an operation to the drawing buffer.\nDoes not display anything until [accent]Draw Flush[] is used. +lst.drawflush = Flush queued [accent]Draw[] operations to a display. +lst.printflush = Flush queued [accent]Print[] operations to a message block. +lst.getlink = Get a processor link by index. Starts at 0. +lst.control = Control a building. +lst.radar = Locate units around a building with range. +lst.sensor = Get data from a building or unit. +lst.set = Set a variable. +lst.operation = Perform an operation on 1-2 variables. +lst.end = Jump to the top of the instruction stack. +lst.wait = Wait a certain number of seconds. +lst.lookup = Look up an item/liquid/unit/block type by ID.\nTotal counts of each type can be accessed with:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[] +lst.jump = Conditionally jump to another statement. +lst.unitbind = Bind to the next unit of a type, and store it in [accent]@unit[]. +lst.unitcontrol = Control the currently bound unit. +lst.unitradar = Locate units around the currently bound unit. +lst.unitlocate = Locate a specific type of position/building anywhere on the map.\nRequires a bound unit. + +logic.nounitbuild = [red]Unit building logic is not allowed here. + +lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string. +lenum.shoot = Shoot at a position. +lenum.shootp = Shoot at a unit/building with velocity prediction. +lenum.config = Building configuration, e.g. sorter item. +lenum.enabled = Whether the block is enabled. + +laccess.color = Illuminator color. +laccess.controller = Unit controller. If processor controlled, returns processor.\nIf in a formation, returns leader.\nOtherwise, returns the unit itself. +laccess.dead = Whether a unit/building is dead or no longer valid. +laccess.controlled = Returns:\n[accent]@ctrlProcessor[] if unit controller is processor\n[accent]@ctrlPlayer[] if unit/building controller is player\n[accent]@ctrlFormation[] if unit is in formation\nOtherwise, 0. +laccess.commanded = [red]Deprecated. Will be removed![]\nUse [accent]controlled[] instead. +laccess.progress = Action progress, 0 to 1.\nReturns production, turret reload or construction progress. + +graphicstype.clear = Fill the display with a color. +graphicstype.color = Set color for next drawing operations. +graphicstype.stroke = Set line width. +graphicstype.line = Draw line segment. +graphicstype.rect = Fill a rectangle. +graphicstype.linerect = Draw a rectangle outline. +graphicstype.poly = Fill a regular polygon. +graphicstype.linepoly = Draw a regular polygon outline. +graphicstype.triangle = Fill a triangle. +graphicstype.image = Draw an image of some content.\nex: [accent]@router[] or [accent]@dagger[]. + +lenum.always = Always true. +lenum.idiv = Integer division. +lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. +lenum.mod = Modulo. +lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. +lenum.notequal = Not equal. Coerces types. +lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. +lenum.shl = Bit-shift left. +lenum.shr = Bit-shift right. +lenum.or = Bitwise OR. +lenum.land = Logical AND. +lenum.and = Bitwise AND. +lenum.not = Bitwise flip. +lenum.xor = Bitwise XOR. + +lenum.min = Minimum of two numbers. +lenum.max = Maximum of two numbers. +lenum.angle = Angle of vector in degrees. +lenum.len = Length of vector. + +lenum.sin = Sine, in degrees. +lenum.cos = Cosine, in degrees. +lenum.tan = Tangent, in degrees. + +lenum.asin = Arc sine, in degrees. +lenum.acos = Arc cosine, in degrees. +lenum.atan = Arc tangent, in degrees. + +#not a typo, look up 'range notation' +lenum.rand = Random decimal in range [0, value). +lenum.log = Natural logarithm (ln). +lenum.log10 = Base 10 logarithm. +lenum.noise = 2D simplex noise. +lenum.abs = Absolute value. +lenum.sqrt = Square root. + +lenum.any = Any unit. +lenum.ally = Ally unit. +lenum.attacker = Unit with a weapon. +lenum.enemy = Enemy unit. +lenum.boss = Guardian unit. +lenum.flying = Flying unit. +lenum.ground = Ground unit. +lenum.player = Unit controlled by a player. + +lenum.ore = Ore deposit. +lenum.damaged = Damaged ally building. +lenum.spawn = Enemy spawn point.\nMay be a core or a position. +lenum.building = Building in a specific group. + +lenum.core = Any core. +lenum.storage = Storage building, e.g. Vault. +lenum.generator = Buildings that generate power. +lenum.factory = Buildings that transform resources. +lenum.repair = Repair points. +lenum.rally = Command center. +lenum.battery = Any battery. +lenum.resupply = Resupply points.\nOnly relevant when [accent]"Unit Ammo"[] is enabled. +lenum.reactor = Impact/Thorium reactor. +lenum.turret = Any turret. + +sensor.in = The building/unit to sense. + +radar.from = Building to sense from.\nSensor range is limited by building range. +radar.target = Filter for units to sense. +radar.and = Additional filters. +radar.order = Sorting order. 0 to reverse. +radar.sort = Metric to sort results by. +radar.output = Variable to write output unit to. + +unitradar.target = Filter for units to sense. +unitradar.and = Additional filters. +unitradar.order = Sorting order. 0 to reverse. +unitradar.sort = Metric to sort results by. +unitradar.output = Variable to write output unit to. + +control.of = Building to control. +control.unit = Unit/building to aim at. +control.shoot = Whether to shoot. + +unitlocate.enemy = Whether to locate enemy buildings. +unitlocate.found = Whether the object was found. +unitlocate.building = Output variable for located building. +unitlocate.outx = Output X coordinate. +unitlocate.outy = Output Y coordinate. +unitlocate.group = Building group to look for. + +lenum.idle = Don't move, but keep building/mining.\nThe default state. +lenum.stop = Stop moving/mining/building. +lenum.move = Move to exact position. +lenum.approach = Approach a position with a radius. +lenum.pathfind = Pathfind to the enemy spawn. +lenum.target = Shoot a position. +lenum.targetp = Shoot a target with velocity prediction. +lenum.itemdrop = Drop an item. +lenum.itemtake = Take an item from a building. +lenum.paydrop = Drop current payload. +lenum.paytake = Pick up payload at current location. +lenum.flag = Numeric unit flag. +lenum.mine = Mine at a position. +lenum.build = Build a structure. +lenum.getblock = Fetch a building and type at coordinates.\nUnit must be in range of position.\nSolid non-buildings will have the type [accent]@solid[]. +lenum.within = Check if unit is near a position. +lenum.boost = Start/stop boosting. + + diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 5357ba6107..b08fb30880 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -37,7 +37,7 @@ load.scripts = สคริปต์ be.update = เวอร์ชั่นรุ่นพัฒนาล่าสุดออกแล้ว: be.update.confirm = ดาวน์โหลดเวอร์ชั่นใหม่แล้วรีสตาร์ทเลยไหม? be.updating = กำลังอัปเดต... -be.ignore = ยกเลิก +be.ignore = เพิกเฉย be.noupdates = ไม่พบอัปเดตใหม่ be.check = ตรวจหาอัปเดตใหม่ @@ -122,7 +122,7 @@ committingchanges = กำลังทำการเปลี่ยนแปล done = เรียบร้อย feature.unsupported = อุปกรณ์ของคุณไม่รองรับฟีเจอร์นี้ -mods.initfailed = [red]⚠[] ไม่สามารถเปิดเกม Mindustry ได้ อาจเกิดจากม็อดที่ทำงานผิดปกติ\n\nเพื่อป้องกันการแครชต่อเนื่อง [red]ม็อดทั้งหมดได้ปิดตัวลง[]\n\nหากต้องการปิดฟีเจอร์นี้ ปิดได้ที่ [accent]ตั้งค่า->เกม->ปิดม็อดเมื่อเกมขัดข้อง[] +mods.initfailed = [red]⚠[] ไม่สามารถเปิดเกม Mindustry ได้ อาจเกิดจากม็อดที่ทำงานผิดปกติ\n\nเพื่อป้องกันการแครชต่อเนื่อง [red]ม็อดทั้งหมดได้ปิดตัวลง[] mods = ม็อด mods.none = [lightgray]ไม่พบม็อด! mods.guide = คู่มือการทำม็อด @@ -152,7 +152,7 @@ mod.reloadrequired = [scarlet]จำเป็นต้องรีโหลด mod.import = นำเข้าม็อด mod.import.file = นำเข้าไฟล์ mod.import.github = นำเข้าม็อดจาก Github -mod.jarwarn = [scarlet]ม็อดไฟล์ JAR นั้นค่อนข้างไม่ปลอดภัย[]\nกรุณาเช็คให้แน่ใจว่าคุณนำเข้าม็อดนี้จะแหล่งที่เชื่อถือได้! +mod.jarwarn = [scarlet]ม็อดไฟล์ JAR นั้นค่อนข้างไม่ปลอดภัย[]\nกรุณาเช็กให้แน่ใจว่าคุณนำเข้าม็อดนี้จะแหล่งที่เชื่อถือได้! mod.item.remove = ไอเท็มนี้เป็นส่วนหนึ่งของม็อด [accent]'{0}'[] หากต้องการนำออก กรุณาถอนการติดตั้งม็อดนั้น mod.remove.confirm = ม็อดนี้จะถูกลบ mod.author = [lightgray]ผู้สร้าง:[] {0} @@ -201,7 +201,7 @@ server.kicked.customClient = เซิร์ฟเวอร์นี้ไม่ server.kicked.gameover = จบเกม! server.kicked.serverRestarting = เซิร์ฟเวอร์กำลังเริ่มใหม่ server.versions = เวอร์ชั่นของคุณ:[accent] {0}[]\nเวอร์ชั่นของเซิร์ฟเวอร์:[accent] {1}[] -host.info = ปุ่ม[accent]โฮสต์[]นั้นโฮสต์เซิร์ฟเวอร์ที่พอร์ต [scarlet]6567[] \nทุกคนที่อยู่ใน [lightgray]Wi-Fi หรือเครือข่ายท้องถิ่น[]เดียวกันจะสามารถเห็นเซิร์ฟเวอร์ของคุณในรายชื่อของ\nเซิร์ฟเวอร์ได้\n\nถ้าคุณต้องการให้ผู้เล่นอื่นๆ สามารถเชื่อมต่อได้จากทุกที่โดยใช้ IP คุณจำเป็นจะต้องใช้การ[accent]การส่งต่อพอร์ต (Port Forwarding)[] \n\n[lightgray]โน๊ต: ถ้าผู้เล่นคนใดมีปัญหาในการเชื่อมต่อ LAN ของคุณ เช็คให้แน่ใจว่าคุณได้อนุญาตให้ Mindustry เข้าถึงเครือข่ายท้องถิ่นของคุณในการตั้งค่า Firewall จำไว้ว่าเครือข่ายสาธารณะบางครั้งอาจไม่อนุญาตการ\nค้นหาเซิร์ฟเวอร์ +host.info = ปุ่ม[accent]โฮสต์[]นั้นโฮสต์เซิร์ฟเวอร์ที่พอร์ต [scarlet]6567[] \nทุกคนที่อยู่ใน [lightgray]Wi-Fi หรือเครือข่ายท้องถิ่น[]เดียวกันจะสามารถเห็นเซิร์ฟเวอร์ของคุณในรายชื่อของ\nเซิร์ฟเวอร์ได้\n\nถ้าคุณต้องการให้ผู้เล่นอื่นๆ สามารถเชื่อมต่อได้จากทุกที่โดยใช้ IP คุณจำเป็นจะต้องใช้การ[accent]การส่งต่อพอร์ต (Port Forwarding)[] \n\n[lightgray]โน๊ต: ถ้าผู้เล่นคนใดมีปัญหาในการเชื่อมต่อ LAN ของคุณ เช็กให้แน่ใจว่าคุณได้อนุญาตให้ Mindustry เข้าถึงเครือข่ายท้องถิ่นของคุณในการตั้งค่า Firewall จำไว้ว่าเครือข่ายสาธารณะบางครั้งอาจไม่อนุญาตการ\nค้นหาเซิร์ฟเวอร์ join.info = คุณสามารถใส่ [accent]IP ของเซิร์ฟเวอร์[]เพื่อที่จะเชื่อมต่อหรือค้นหาเซิร์ฟเวอร์ เซิร์ฟเวอร์ที่ใช้[accent]เครือข่ายท้องถิ่น[]จะสามารถเชื่อมโดยใช้\n LAN หรือ WAN ก็ได้\n\n[lightgray]ถ้าคุณอยากเชื่อมต่อกับใครบางคนโดยใช้ IP คุณต้องไปถามโฮสต์เอาว่า IP ของโฮสต์คืออะไร ซึ่งสามารถหาได้โดยการค้นหาในกูเกิ้ลว่า "ip ของฉัน" จากเครื่องของโฮสต์ hostserver = โฮสต์เกมผู้เล่นหลายคน invitefriends = ชวนเพื่อน @@ -229,7 +229,7 @@ trace = แกะรอยผู้เล่น trace.playername = ชื่อผู้เล่น: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID: [accent]{0} -trace.mobile = ไคลเอนต์โมบาย: [accent]{0} +trace.mobile = ไคลเอนต์โทรศัพท์: [accent]{0} trace.modclient = ไคลเอนต์ปรับแต่ง: [accent]{0} trace.times.joined = เวลาเข้า: [accent]{0} trace.times.kicked = เวลาโดนเตะ: [accent]{0} @@ -343,7 +343,7 @@ loadimage = โหลดรูป saveimage = เซฟรูป unknown = ไม่ทราบ custom = กำหนดเอง -builtin = ติดตัว +builtin = ค่าเริ่มต้น map.delete.confirm = คุณแน่ใจหรือว่าจะลบแมพนี้? การกระทำครั้งนี้ไม่สามารถย้อนกลับได้! map.random = [accent]สุ่มแมพ map.nospawn = แมพนี้ไม่มีแกนกลางให้ผู้เล่นเกิด! กรุณาใส่แกนกลาง[#{0}]{1}[] ลงในตัวแก้ไข @@ -379,6 +379,9 @@ editor.ingame = แก้ไขในเกม editor.publish.workshop = เผยแพร่บนเวิร์กช็อป editor.newmap = แมพใหม่ editor.center = ศูนย์กลางแมพ +editor.search = ค้นหาแมพ... +editor.filters = ตัวกรองแมพ +editor.showAll = แสดงแมพค่าเริ่มต้น workshop = เวิร์กช็อป waves.title = คลื่น waves.remove = ลบ @@ -432,8 +435,8 @@ editor.loadmap = โหลดแมพ editor.savemap = เซฟแมพ editor.saved = เซฟเรียบร้อย! editor.save.noname = แมพของคุณไม่มีชื่อ! สามารถตั้งชื่อได้ในเมนู 'ข้อมูลแมพ' -editor.save.overwrite = แมพของคุณไปทับกับแมพติดตัว! เปลี่ยนชื่อได้ในเมนู 'ข้อมูลแมพ' -editor.import.exists = [scarlet]ไม่สามารถนำเข้าได้:[] มีแมพติดตัวที่ชื่อ '{0}' อยู่แล้ว! +editor.save.overwrite = แมพของคุณไปทับกับแมพค่าเริ่มต้น! เปลี่ยนชื่อได้ในเมนู 'ข้อมูลแมพ' +editor.import.exists = [scarlet]ไม่สามารถนำเข้าได้:[] มีแมพค่าเริ่มต้นที่ชื่อ '{0}' อยู่แล้ว! editor.import = นำเข้า... editor.importmap = นำเข้าแมพ editor.importmap.description = นำเข้าแมพที่มีอยู่แล้ว @@ -560,8 +563,8 @@ guardian = ผู้พิทักษ์ connectfail = [crimson]การเชื่อมต่อผิดพลาด:\n\n[accent]{0} error.unreachable = เซิร์ฟเวอร์ไม่สามารถเข้าถึงได้\nแน่ใจหรือว่าที่อยู่เขียนถูกต้อง? error.invalidaddress = ที่อยู่ไม่ถูกต้อง -error.timedout = Timed out!\nเช็คให้แน่ใจว่า port forwarding ของโฮสต์เปิดอยู่และที่อยู่นั้นถูกต้อง! -error.mismatch = Packet error:\nอาจเกิดจากเวอร์ชั่นของ ไคลเอนต์/เซิร์ฟเวอร์ ไม่ตรงกัน\nเช็คให้แน่ใจว่าคุณและโฮสต์ใช้ Mindustry เวอร์ชั่นล่าสุด! +error.timedout = Timed out!\nเช็กให้แน่ใจว่า port forwarding ของโฮสต์เปิดอยู่และที่อยู่นั้นถูกต้อง! +error.mismatch = Packet error:\nอาจเกิดจากเวอร์ชั่นของ ไคลเอนต์/เซิร์ฟเวอร์ ไม่ตรงกัน\nเช็กให้แน่ใจว่าคุณและโฮสต์ใช้ Mindustry เวอร์ชั่นล่าสุด! error.alreadyconnected = เชื่อมต่ออยู่แล้ว error.mapnotfound = ไม่พบไฟล์แมพ error.io = Network I/O error @@ -624,7 +627,7 @@ sector.stainedMountains.name = ภูเขาหลากสี sector.desolateRift.name = เดโซเลต ริฟต์ sector.nuclearComplex.name = ฐานผลิตนิวเคลียร์ sector.overgrowth.name = โอเวอร์โกรว์ด -sector.tarFields.name = ผืนแผ่นแห่งน้ำมัน +sector.tarFields.name = ราบลุ่มน้ำมัน sector.saltFlats.name = ที่ราบเกลือ sector.fungalPass.name = ทางผ่านฟังกัล sector.biomassFacility.name = แหล่งสังเคราะห์ชีวมวล @@ -634,21 +637,21 @@ sector.planetaryTerminal.name = ท่าปล่อยจรวดอวกา sector.coastline.name = แนวชายฝั่ง sector.navalFortress.name = ปราการแห่งวารี -sector.groundZero.description = ที่ที่ดีที่สุดในการเริ่มต้นอีกครั้ง ศัตรูน้อย ทรัพยากรน้อย\nเก็บ[accent]ตะกั่ว[]และ[accent]ทองแดง[]ให้ได้มากที่สุด\nแล้วลุยต่อ -sector.frozenForest.description = แม้แต่ที่นี่ ณ ที่ที่อยู่ใกล้ภูเขา [accent]สปอร์[]ก็ยังแพร่มาถึงที่นี่\nอากาศอันแสนเย็นเยือกไม่สามารถหยุดยั้งพวกมันได้ตลอดไป\n\nเริ่มต้นการใช้ไฟฟ้า สร้างเครื่องกำเนิดไฟฟ้าเผาไหม้\nเรียนรู้ที่จะใช้เครื่องซ่อมแซม +sector.groundZero.description = ที่ที่ดีที่สุดในการเริ่มต้นอีกครั้ง ศัตรูน้อย ทรัพยากรน้อย\nเก็บ[accent]ตะกั่ว[]และ[orange]ทองแดง[]ให้ได้มากที่สุด\nแล้วลุยต่อ +sector.frozenForest.description = แม้แต่ที่นี่ ณ ที่ที่อยู่ใกล้ภูเขา [accent]สปอร์[]ก็ยังแพร่มาถึงที่นี่ อากาศอันแสนเย็นเยือกไม่สามารถหยุดยั้งพวกมันได้ตลอดไป\n\nเริ่มต้นการใช้ไฟฟ้า สร้างเครื่องกำเนิดไฟฟ้าเผาไหม้ เรียนรู้ที่จะใช้เครื่องซ่อมแซม sector.saltFlats.description = ณ ขอบของทะเลทราย เป็นที่ตั้งของที่ราบเกลือ สามารถพบทรัพยากรบางอย่างได้ที่นี่\n\nศัตรูได้ตั้งฐานเก็บทรัพยากรไว้ที่นี่ ทำลายแกนกลางของพวกมัน อย่าให้มีอะไรเหลือ -sector.craters.description = มีน้ำขังอยู่ในหลุมอุกกาบาศแห่งนี้ เป็นอนุสรณ์สถานของสงครามเก่าแก่\nยึดพื้นที่นี่มา เก็บทราย เผา[accent]กระจกเมต้า[]\nปั๊มน้ำเพื่อมาหล่อเย็นป้อมปืนและเครื่องขุดเจาะ -sector.ruinousShores.description = ถัดมาจากทะเลทราย เป็นที่ตั้งของชายฝั่ง ที่ครั้งก่อน เคยเป็นที่ตั้งของฐานป้องกันชายฝั่ง\nซึ่งทุกทำลายไปซะส่วนใหญ่แล้ว มีเหลือแค่ระบบการป้องกันพื้นฐาน\nทุกอย่างที่เหลือถูกทำลายเหลือเพียงแค่เศษเหล็ก\n\nทำการขยายการสำรวจต่อไป ค้นพบกับเทคโนโลยีอีกครั้ง -sector.stainedMountains.description = เข้าลึกไปในพื้นที่ จะพบกับภูเขา ซึ่งยังไม่ถูกสปอร์แตะต้อง\nขุด[accent]ไทเทเนี่ยม[]ที่อุดมสมบูรณ์ในพื้นที่นี้ เรียนรู้ที่จะใช้มัน\n\nมีศัตรูปรากฏตัวมากขึ้นในบริเวณนี้ อย่าปล่อยให้พวกมันส่งยูนิตที่แข็งแกร่งที่สุดออกมา -sector.overgrowth.description = พื้นที่นี้ถูกปกคลุมไปด้วยพืช เข้าใกล้กับแหล่งกำเนิดของสปอร์\nศัตรูได้ตั้งฐานเฝ้าระวังไว้ที่นี่ สร้างยูนิตเมส ทำลายฐานทิ้งซะ\nวิจัย[accent]เครื่องพัฒนารุ่นยกกำลัง[]เพื่อผลิตยูนิตขนาดที่ใหญ่ขึ้น -sector.tarFields.description = แนวชานขอบของแหล่งผลิตน้ำมัน อยู่ระหว่างภูเขาและทะเลทราย เป็นหนึ่งในพื้นที่ที่มีแหล่งน้ำมันดินที่ใช้งานได้\nแม้ว่าจะถูกทิ้งร้าง พื้นที่นี้ยังคงมีฐานทัพของศัตรูอยู่ใกล้ๆ อย่าประมาทกับพวกมัน\n\n[lightgray]วิจัยเทคโนโลยีการแปรรูปน้ำมันหากเป็นไปได้ -sector.desolateRift.description = เป็นพื้นที่ที่อันตรายมาก ทรัพยากรมากมาย แต่พื้นที่คับแคบ\nความเสี่ยงการโดนทำลายล้างสูง ออกไปจากที่นี่ให้เร็วที่สุด\nอย่าถูกหลอกโดยระยะเวลาระหว่างการโจมตีของศัตรูที่เว้นไว้นานกว่าปกติ -sector.nuclearComplex.description = สถานที่ผลิตและแปรรูปทอเรี่ยมเก่า ถูกทำลายไม่เหลือสิ้น\nวิจัยทอเรี่ยมและวิธีการใช้มัน\n\nศัตรูในบริเวณนี้มีจำนวนมาก คอยตรวจตราหาผู้บุกรุกอยู่ตลอดเวลา +sector.craters.description = มีน้ำขังอยู่ในหลุมอุกกาบาศแห่งนี้ เป็นอนุสรณ์สถานของสงครามเก่าแก่ ยึดพื้นที่นี่มา เก็บทราย เผา[white]กระจกเมต้า[] ปั๊มน้ำเพื่อมาหล่อเย็นป้อมปืนและเครื่องขุดเจาะ +sector.ruinousShores.description = ถัดมาจากทะเลทราย เป็นที่ตั้งของชายฝั่ง ที่ครั้งก่อน เคยเป็นที่ตั้งของฐานป้องกันชายฝั่ง ซึ่งทุกทำลายไปซะส่วนใหญ่แล้ว มีเหลือแค่ระบบการป้องกันพื้นฐาน ทุกอย่างที่เหลือถูกทำลายเหลือเพียงแค่เศษเหล็ก\n\nทำการขยายการสำรวจต่อไป ค้นพบกับเทคโนโลยีอีกครั้ง +sector.stainedMountains.description = เข้าลึกไปในพื้นที่ จะพบกับภูเขา ซึ่งยังไม่ถูกสปอร์แตะต้อง\nขุด[sky]ไทเทเนี่ยม[]ที่อุดมสมบูรณ์ในพื้นที่นี้ เรียนรู้ที่จะใช้มัน\n\nมีศัตรูปรากฏตัวมากขึ้นในบริเวณนี้ อย่าปล่อยให้พวกมันส่งยูนิตที่แข็งแกร่งที่สุดออกมา +sector.overgrowth.description = พื้นที่แห่งนี้ถูกปกคลุมไปด้วยพืชรกร้าง เริ่มเข้าใกล้กับแหล่งกำเนิดของสปอร์\nศัตรูได้ตั้งฐานเฝ้าระวังไว้ที่นี่ สร้างยูนิตเมส ทำลายฐานทิ้งซะ\nวิจัย[accent]เครื่องพัฒนารุ่นยกกำลัง[]เพื่อผลิตยูนิตขนาดที่ใหญ่ขึ้น +sector.tarFields.description = แนวชานขอบของแหล่งผลิตน้ำมัน อยู่ระหว่างภูเขาและทะเลทราย เป็นหนึ่งในพื้นที่ที่มีแหล่งน้ำมันดินที่ใช้งานได้\nแม้ว่าจะถูกทิ้งร้าง พื้นที่นี้ยังคงมีฐานทัพของศัตรูอยู่ใกล้ๆ อย่าประมาทกับพวกมัน\n\n[lightgray]วิจัยเทคโนโลยีการแปรรูปน้ำมันหากเป็นไปได้[] +sector.desolateRift.description = เป็นพื้นที่ที่อันตรายมาก ทรัพยากรมากมาย แต่พื้นที่คับแคบ ความเสี่ยงการโดนทำลายล้างสูง ออกไปจากที่นี่ให้เร็วที่สุด อย่าถูกหลอกโดยระยะเวลาระหว่างการโจมตีของศัตรูที่เว้นไว้นานกว่าปกติ +sector.nuclearComplex.description = สถานที่ผลิตและแปรรูป[pink]ทอเรี่ยม[]เก่า ถูกทำลายไม่เหลือสิ้น\nวิจัยทอเรี่ยมและวิธีการใช้มัน\n\nศัตรูในบริเวณนี้มีจำนวนมาก คอยตรวจตราหาผู้บุกรุกอยู่ตลอดเวลา sector.fungalPass.description = ทางผ่านระหว่างพื้นที่สูงและต่ำของภูเขา พื้นที่นี้เต็มไปด้วยสปอร์ ฐานลาดตระเวนขนาดเล็กของศัตรูตั้งอยู่ที่นี่\nทำลายมันซะ\nผลิตยูนิตแด็กเกอร์และครอว์เลอร์ ทำลายแกนกลางทั้งสองไม่ให้เหลือซาก sector.biomassFacility.description = แหล่งต้นกำเนิดของสปอร์ ที่นี่คือฐานวิจัยและผลิตสปอร์เริ่มแรก\nวิจัยเทคโนโลยีที่อยู่ภายในนั้น เพาะชำ[accent]สปอร์[]เพื่อเป็นเชื้อเพลิงและใช้ในการผลิตพลาสติก\n\n[gray]เมื่อสถานที่นี้ถูกทิ้งร้าง สปอร์ก็ถูกปล่อยออกมา ไม่มีสิ่งใดในระบบนิเวศท้องถิ่นที่สามารถแข่งขันกับสิ่งมีชีวิตที่\nแพร่กระจายเช่นนี้ได้ -sector.windsweptIslands.description = เลยแนวชายฝั่งไปจะพบกับหมู่เกาะที่ตั้งอยู่ห่างไกลแห่งนี้ เคยมีบันทึกว่าที่นี่มีโรงงานผลิต[accent]พลาสตาเนี่ยม[]อยู่\n\nทำลายเรือศัตรู สร้างฐานทัพบนเกาะ วิจัยโรงงานพวกนี้ +sector.windsweptIslands.description = เลยแนวชายฝั่งไปจะพบกับหมู่เกาะที่ตั้งอยู่ห่างไกลแห่งนี้ เคยมีบันทึกว่าที่นี่มีโรงงานผลิต[green]พลาสตาเนี่ยม[]อยู่\n\nทำลายเรือศัตรู สร้างฐานทัพบนเกาะ วิจัยโรงงานพวกนี้ sector.extractionOutpost.description = ด่านที่อยู่ห่างไกล สร้างโดยศัตรูเพื่อใช้ในการส่งทรัพยากรไปยังฐานทัพอื่น\n\nเทคโนโลยีการส่งไอเท็มข้ามเซ็กเตอร์เป็นสิ่งจำเป็นสำหรับการพิชิตถัดๆ ไป ทำลายด่าน วิจัยฐานส่งของ -sector.impact0078.description = ณ ที่แห่งนี้คือเศษซากของเรือขนส่งระหว่างดวงดาวที่เคยเข้ามายังระบบนี้\nเศษเหล็กและหิมะปกคลุมทั่วทั้งพื้นที่\n\nกอบกู้ซากยานให้ได้มากที่สุด วิจัยเทคโนโลยีทั้งหมดที่ยังเหลือรอด\n\n\n[gray]อย่าประมาทกับฐานทัพศัตรูที่อยู่ใกล้ๆ โดยอันขาด\nศัตรูจะส่งกองกำลังมาโจมตีเรื่อยๆ จนกว่าคุณจะพ่ายแพ้ +sector.impact0078.description = ณ ที่แห่งนี้คือเศษซากของเรือขนส่งระหว่างดวงดาวที่เคยเข้ามายังระบบนี้\nเศษเหล็กและหิมะปกคลุมทั่วทั้งพื้นที่\n\nกอบกู้ซากยานให้ได้มากที่สุด วิจัยเทคโนโลยีทั้งหมดที่ยังเหลือรอด\n\n\n[gray]อย่าประมาทกับฐานทัพศัตรูที่อยู่ใกล้ๆ โดยอันขาด\nศัตรูจะส่งกองกำลังมาโจมตีเรื่อยๆ จนกว่าคุณจะพ่ายแพ้[] sector.planetaryTerminal.description = เป้าหมายสุดท้าย\n\nฐานทัพติดชายหาดนี้มีสิ่งประดิษฐ์ที่สามารถส่งแกนกลางไปยังดาวที่อยู่ใกล้ๆ ได้ ฐานทัพมีการป้องกันที่แน่นหนามาก\n\nผลิตยูนิตเรือ กวาดล้างศัตรูให้เร็วที่สุด วิจัยสิ่งประดิษฐ์นั่น status.burning.name = เผาไหม้ @@ -740,7 +743,7 @@ stat.maxunits = จำนวนยูนิตสูงสุด stat.armor = เกราะ stat.health = พลังชีวิต stat.buildtime = เวลาในการสร้าง -stat.maxconsecutive = ติดต่อกันสูงสุด +stat.maxconsecutive = ติดต่อกันได้สูงสุด stat.buildcost = ใช้ stat.inaccuracy = ความคลาดเคลื่อน stat.shots = นัด @@ -920,7 +923,7 @@ setting.showweather.name = แสดงแกรฟฟิกสภาพอา public.confirm = คุณต้องการให้เกมของคุณเปิดเป็นสาธารณะหรือไม่?\n[accent]ทุกคนจะสามารถเข้าร่วมเกมของคุณได้\n[lightgray]คุณสามารถเปลี่ยนการตั้งค่านี้ได้ที่ ตั้งค่า->เกม->การมองเห็นเซิร์ฟเวอร์สาธารณะ public.confirm.really = หากคุณอยากเล่นกับเล่นกับเพื่อน ใช้[green]ชวนเพื่อน[]ดีกว่า แทนที่จะใช้[scarlet]เซิร์ฟเวอร์สาธารณะ[]!\nคุณแน่ใจนะว่าจะเปลี่ยนเกมคุณเป็น[scarlet]สาธารณะ[]? public.beta = เกมเวอร์ชั่นเบต้าไม่สามารถเปิดเซิร์ฟเวอร์สาธารณะได้ -uiscale.reset = อัตราขนาดของ UI ได้มีการเปลี่ยนแปลง\nกด "โอเค" เพื่อยืนยันขนาด UI นี้\n[scarlet]จะเปลี่ยนกลับไปเป็นแบบเดิมและออกในอีก[accent] {0}[] วินาที... +uiscale.reset = อัตราขนาดของ UI ได้มีการเปลี่ยนแปลง\nกด "โอเค" เพื่อยืนยันขนาด UI นี้\n[scarlet]จะเปลี่ยนกลับไปเป็นขนาดเดิมและออกในอีก[accent] {0}[] วินาที... uiscale.cancel = ยกเลิกและออก setting.bloom.name = บลูม keybind.title = ตั้งค่าปุ่ม @@ -1130,6 +1133,7 @@ block.sand-boulder.name = ก้อนหินทราย block.basalt-boulder.name = ก้อนบะซอลต์ block.grass.name = หญ้า block.molten-slag.name = แร่หลอมละลาย +block.pooled-cryofluid.name = สารหล่อเย็น block.space.name = อวกาศ block.salt.name = เกลือ block.salt-wall.name = กำแพงเกลือ @@ -1298,7 +1302,7 @@ block.thorium-reactor.name = เตาปฏิกรณ์ทอเรี่ย block.mass-driver.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 = เครื่องฉายซ่อมแซม @@ -1532,8 +1536,8 @@ block.thorium-reactor.description = ผลิตพลังงานจำน block.thorium-reactor.details = เตาปฏิกรที่เป็นดาบสองคม ผลิตพลังงานได้มหาศาลขึ้นอยู่จำนวนทอเรี่ยม แต่จะระเบิดอย่างรุนแรงเช่นกันหากขาดสารหล่อเย็น ควรมั่นใจเรื่องทรัพยากรก่อนใช้เตาปฎิกรนี้ block.impact-reactor.description = สามารถผลิตไฟฟ้าได้จำนวนมหาศาลที่ประสิทธิภาพสูงสุด จำเป็นต้องใช้พลังงานจำนวนมากในการสตาร์ทเครื่อง block.mechanical-drill.description = เมื่อวางบนพื้นแร่ จะขุดแร่นั้นและส่งออกมาอย่างช้าๆ\nไปเรื่อยๆ ไม่มีที่สิ้นสุด ขุดได้แค่ทรัพยากรพื้นฐาน -block.pneumatic-drill.description = เครื่องขุดที่ได้รับการปรับปรุง สามารถขุด[accent]ไทเทเนี่ยม[]ได้ ขุดได้เร็วกว่าเครื่องขุดเชิงกล -block.laser-drill.description = ขุดได้เร็วขึ้นด้วยเทคโนโลยีเลเซอร์ แต่ต้องใช้พลังงาน\nสามารถขุด[accent]ทอเรี่ยม[]ได้ +block.pneumatic-drill.description = เครื่องขุดที่ได้รับการปรับปรุง สามารถขุด[sky]ไทเทเนี่ยม[]ได้ ขุดได้เร็วกว่าเครื่องขุดเชิงกล +block.laser-drill.description = ขุดได้เร็วขึ้นด้วยเทคโนโลยีเลเซอร์ แต่ต้องใช้พลังงาน\nสามารถขุด[pink]ทอเรี่ยม[]ได้ block.blast-drill.description = เครื่องขุดขั้นสุดยอด ใช้พลังงานจำนวนมาก block.water-extractor.description = ขุดน้ำบาดาลจากใต้พื้นดิน ใช้ในพื้นที่ที่ไม่มีน้ำบนดินให้ใช้ block.cultivator.description = รวบรวมสปอร์ในชั้นบรรยากาศมาสกัดเป็นกระเปาะสปอร์สำหรับ\nอุตสาหกรรม @@ -1594,15 +1598,15 @@ block.repair-turret.description = ซ่อมแซมยูนิตที่ block.payload-propulsion-tower.description = บล็อกขนส่งสิ่งบรรทุกทางไกล\nยิงสิ่งบรรทุกไปยังหอเคลื่อนย้ายสิ่งบรรทุกอีกเครื่องที่เชื่อมต่อไว้ unit.dagger.description = ยิงกระสุนธรรมดาใส่ศัตรูที่อยู่ใกล้เคียง -unit.mace.description = ยิงเปลวไฟใส่ศัตรูที่อยู่ใกล้เคียง ทำให้ศัตรูถูกเผาไหม้ +unit.mace.description = ยิงเปลวไฟเผาไหม้ใส่ศัตรูที่อยู่ใกล้เคียง unit.fortress.description = ยิงปืนใหญ่พิสัยไกลไปที่เป้าหมายพื้นดิน -unit.scepter.description = ยิงกระสุนชาร์จใส่ศัตรูใกล้เคียงทั้งหมด กระสุนจะระเบิดออกเป็นพลังงานสายฟ้า สร้างความเสียหายแก่ป้อมปืนที่อยู่หลังกำแพง +unit.scepter.description = ยิงกระสุนชาร์จใส่ศัตรูใกล้เคียงทั้งหมด กระสุนจะระเบิดออกเป็นพลังงานสายฟ้า สร้างความเสียหายแก่ยูนิตรอบข้าง unit.reign.description = ยิงกระสุนเจาะทะลุขนาดใหญ่ใส่ศัตรูที่อยู่ใกล้เคียง กระสุนสามารถกระจายตัวไปโจมตีป้อมปืนที่หลบอยู่หลังกำแพงได้ unit.nova.description = ยิงเลเซอร์ที่สร้างความเสียหายให้กับศัตรูและซ่อมแซมสิ่งก่อสร้างของ\nพวกพ้อง สามารถบินได้ unit.pulsar.description = ยิงสายฟ้าที่สร้างความเสียหายให้กับศัตรูและซ่อมแซมสิ่งก่อสร้างของ\nพวกพ้อง สามารถบินได้ unit.quasar.description = ยิงลำแสงเลเซอร์เจาะทะลุที่สร้างความเสียหายให้กับศัตรูและซ่อมแซม\nสิ่งก่อสร้างของพวกพ้อง มีโล่พลังงานเพื่อป้องกันร่างกายอันบอบบาง\nสามารถบินได้ unit.vela.description = ยิงลำแสงเลเซอร์ต่อเนื่องขนาดใหญ่ที่สร้างความเสียหายให้กับศัตรู ทำให้เกิดไฟไหม้ และซ่อมแซมสิ่งก่อสร้างของพวกพ้อง\nสามารถบินได้ -unit.corvus.description = ยิงลำแสงเลเซอร์ระเบิดขนาดใหญ่ที่สร้างความเสียหายอย่างหนักให้กับศัตรู\nและซ่อมแซมสิ่งก่อสร้างของพวกพ้อง สามารถเหยียบข้ามกำแพงได้ +unit.corvus.description = ยิงลำแสงเลเซอร์พลังงานขนาดใหญ่ที่สร้างความเสียหายอย่างหนัก\nให้กับศัตรูและซ่อมแซมสิ่งก่อสร้างของพวกพ้อง สามารถเหยียบข้ามกำแพงได้ unit.crawler.description = วิ่งเข้าหาศัตรูแล้วระเบิดตัวเอง ทำให้เกิดระเบิดขนาดใหญ่ unit.atrax.description = ยิงลูกแก้วแร่หลอมใส่เป้าหมายพื้นดิน ทำให้ศัตรูถูกเผาไหม้ สามารถเหยียบข้ามกำแพงได้ unit.spiroct.description = ยิงเลเซอร์ทอนกำลังใส่ศัตรู ซ่อมแซมตัวเองไปในตัว สามารถเหยียบข้ามกำแพงได้ @@ -1626,10 +1630,10 @@ unit.omura.description = ยิงลำแสงปืนเรลกันเ unit.alpha.description = ปกป้องแกนกลางชาร์ดจากศัตรู สร้างสิ่งต่างๆ unit.beta.description = ปกป้องแกนกลางฟาวน์เดชั่นจากศัตรู สร้างสิ่งต่างๆ unit.gamma.description = ปกป้องแกนกลางนิวเคลียสจากศัตรู สร้างสิ่งต่างๆ -unit.retusa.description = วางทุ่นระเบิดระยะใกล้ และซ่อมแซมยูนิตพวกพ้องที่อยู่ใกล้เคียง +unit.retusa.description = ยิงตอร์ปิโดติดตามตัวใส่ศัตรูที่อยู่ใกล้เคียง และซ่อมแซมยูนิตพวกพ้องที่อยู่ใกล้เคียง unit.oxynoe.description = ยิงเปลวไฟเผาไหม้ใส่ศัตรูที่อยู่ใกล้เคียงและซ่อมแซมสิ่งก่อสร้างของพวกพ้อง\nทำลายกระสุนที่กำลังเข้ามาด้วยปืนป้องกันจุด\nให้สถานะ[accent]โอเวอร์คล็อก[]แก่พวกพ้องรอบข้าง ทำให้ยิงเร็วและแรงขึ้น unit.cyerce.description = ยิงขีปนาวุธพลาสม่าติดตามตัวเป็นกระจุกระเบิดใส่ศัตรู\nซ่อมแซมยูนิตพวกพ้องที่อยู่ใกล้เคียงด้วยปืนซ่อมแซม -unit.aegires.description = ช็อตทุกสิ่งก่อสร้างและยูนิตศัตรูที่เข้ามาในสนามพลังงานของมัน\nซ่อมแซมสิ่งก่อสร้างและยูนิตพวกพ้อง +unit.aegires.description = ช็อตทุกๆ สิ่งก่อสร้างและยูนิตศัตรูที่เข้ามาในสนามพลังงานของมัน\nด้วยสายฟ้าฟาด ซ่อมแซมสิ่งก่อสร้างและยูนิตพวกพ้อง unit.navanax.description = ยิงลูกระเบิดคลื่นชีพจรแม่เหล็กขนาดใหญ่ สร้างความเสียหายอย่างหนักให้กับเครือข่ายพลังงานศัตรู\nและซ่อมแซมสิ่งก่อสร้างของพวกพ้อง\nหลอมละลายศัตรูที่อยู่ใกล้เคียงด้วยป้อมปืนเลเซอร์อัตโนมัติสี่ป้อม lst.read = อ่านเลขจากเซลล์ความจำที่เชื่อมต่อไว้ @@ -1751,16 +1755,16 @@ radar.output = ตัวแปรของยูนิตที่มองห unitradar.target = ตัวกรองในการหายูนิต unitradar.and = ตัวกรองเพิ่มเติม -unitradar.order = เรียงลำดับคำสั่ง\n0 เพื่อย้อนกลับ +unitradar.order = เรียงลำดับคำสั่ง\n0 เพื่อเรียงย้อนกลับ unitradar.sort = เมตริกเพื่อจัดเรียงผลลัพย์ตาม unitradar.output = ตัวแปรของยูนิตที่มองหา control.of = สิ่งก่อสร้างให้ควบคุม control.unit = ยูนิต/สิ่งก่อสร้างที่จะเล็ง -control.shoot = ว่าจะยิงหรือเปล่า +control.shoot = ว่าจะยิงหรือไม่ unitlocate.enemy = ว่าจะหาสิ่งก่อสร้างศัตรูหรือไม่ -unitlocate.found = ตัวแปรว่าหาเจอหรือไม่\nจะส่งกลับว่า true หากเจอสิ่งก่อสร้าง +unitlocate.found = ตัวแปรว่าพบเจอหรือไม่\nจะส่งกลับว่า true หากเจอสิ่งก่อสร้าง unitlocate.building = ตัวแปรสิ่งก่อสร้างที่มองหา unitlocate.outx = ตัวแปรพิกัด X unitlocate.outy = ตัวแปรพิกัด Y diff --git a/core/assets/music/boss1.mp3 b/core/assets/music/boss1.mp3 deleted file mode 100644 index 4a54f750c9..0000000000 Binary files a/core/assets/music/boss1.mp3 and /dev/null differ diff --git a/core/assets/music/boss1.ogg b/core/assets/music/boss1.ogg new file mode 100644 index 0000000000..1ed21ad266 Binary files /dev/null and b/core/assets/music/boss1.ogg differ diff --git a/core/assets/music/boss2.mp3 b/core/assets/music/boss2.mp3 deleted file mode 100644 index cd9eaf1b25..0000000000 Binary files a/core/assets/music/boss2.mp3 and /dev/null differ diff --git a/core/assets/music/boss2.ogg b/core/assets/music/boss2.ogg new file mode 100644 index 0000000000..26c0cea224 Binary files /dev/null and b/core/assets/music/boss2.ogg differ diff --git a/core/assets/music/editor.mp3 b/core/assets/music/editor.mp3 deleted file mode 100644 index 0b3a8e6182..0000000000 Binary files a/core/assets/music/editor.mp3 and /dev/null differ diff --git a/core/assets/music/editor.ogg b/core/assets/music/editor.ogg new file mode 100644 index 0000000000..c24a141c3b Binary files /dev/null and b/core/assets/music/editor.ogg differ diff --git a/core/assets/music/game1.mp3 b/core/assets/music/game1.mp3 deleted file mode 100644 index bfb9b3d468..0000000000 Binary files a/core/assets/music/game1.mp3 and /dev/null differ diff --git a/core/assets/music/game1.ogg b/core/assets/music/game1.ogg new file mode 100644 index 0000000000..1688419305 Binary files /dev/null and b/core/assets/music/game1.ogg differ diff --git a/core/assets/music/game2.mp3 b/core/assets/music/game2.mp3 deleted file mode 100644 index baeddf2914..0000000000 Binary files a/core/assets/music/game2.mp3 and /dev/null differ diff --git a/core/assets/music/game2.ogg b/core/assets/music/game2.ogg new file mode 100644 index 0000000000..8d6d36c5b7 Binary files /dev/null and b/core/assets/music/game2.ogg differ diff --git a/core/assets/music/game3.mp3 b/core/assets/music/game3.mp3 deleted file mode 100644 index e7f8e34f75..0000000000 Binary files a/core/assets/music/game3.mp3 and /dev/null differ diff --git a/core/assets/music/game3.ogg b/core/assets/music/game3.ogg new file mode 100644 index 0000000000..9b0ad6179d Binary files /dev/null and b/core/assets/music/game3.ogg differ diff --git a/core/assets/music/game4.mp3 b/core/assets/music/game4.mp3 deleted file mode 100644 index c21cf226f0..0000000000 Binary files a/core/assets/music/game4.mp3 and /dev/null differ diff --git a/core/assets/music/game4.ogg b/core/assets/music/game4.ogg new file mode 100644 index 0000000000..586edefcfc Binary files /dev/null and b/core/assets/music/game4.ogg differ diff --git a/core/assets/music/game5.mp3 b/core/assets/music/game5.mp3 deleted file mode 100644 index 2bcc7e7a94..0000000000 Binary files a/core/assets/music/game5.mp3 and /dev/null differ diff --git a/core/assets/music/game5.ogg b/core/assets/music/game5.ogg new file mode 100644 index 0000000000..d306db44d3 Binary files /dev/null and b/core/assets/music/game5.ogg differ diff --git a/core/assets/music/game6.mp3 b/core/assets/music/game6.mp3 deleted file mode 100644 index 9e0cfc97d6..0000000000 Binary files a/core/assets/music/game6.mp3 and /dev/null differ diff --git a/core/assets/music/game6.ogg b/core/assets/music/game6.ogg new file mode 100644 index 0000000000..86b6e1531a Binary files /dev/null and b/core/assets/music/game6.ogg differ diff --git a/core/assets/music/game7.mp3 b/core/assets/music/game7.mp3 deleted file mode 100644 index 4a8d5187b8..0000000000 Binary files a/core/assets/music/game7.mp3 and /dev/null differ diff --git a/core/assets/music/game7.ogg b/core/assets/music/game7.ogg new file mode 100644 index 0000000000..2d49c70927 Binary files /dev/null and b/core/assets/music/game7.ogg differ diff --git a/core/assets/music/game8.mp3 b/core/assets/music/game8.mp3 deleted file mode 100644 index a2cebbc465..0000000000 Binary files a/core/assets/music/game8.mp3 and /dev/null differ diff --git a/core/assets/music/game8.ogg b/core/assets/music/game8.ogg new file mode 100644 index 0000000000..380fb2ce40 Binary files /dev/null and b/core/assets/music/game8.ogg differ diff --git a/core/assets/music/game9.mp3 b/core/assets/music/game9.mp3 deleted file mode 100644 index a852b4c4c9..0000000000 Binary files a/core/assets/music/game9.mp3 and /dev/null differ diff --git a/core/assets/music/game9.ogg b/core/assets/music/game9.ogg new file mode 100644 index 0000000000..c7d31cce41 Binary files /dev/null and b/core/assets/music/game9.ogg differ diff --git a/core/assets/music/land.mp3 b/core/assets/music/land.mp3 deleted file mode 100644 index 80720c478c..0000000000 Binary files a/core/assets/music/land.mp3 and /dev/null differ diff --git a/core/assets/music/land.ogg b/core/assets/music/land.ogg new file mode 100644 index 0000000000..3f9d0f3458 Binary files /dev/null and b/core/assets/music/land.ogg differ diff --git a/core/assets/music/launch.mp3 b/core/assets/music/launch.mp3 deleted file mode 100644 index 7aeb2a3340..0000000000 Binary files a/core/assets/music/launch.mp3 and /dev/null differ diff --git a/core/assets/music/launch.ogg b/core/assets/music/launch.ogg new file mode 100644 index 0000000000..22e1705652 Binary files /dev/null and b/core/assets/music/launch.ogg differ diff --git a/core/assets/music/menu.mp3 b/core/assets/music/menu.mp3 deleted file mode 100644 index 6423eba4b2..0000000000 Binary files a/core/assets/music/menu.mp3 and /dev/null differ diff --git a/core/assets/music/menu.ogg b/core/assets/music/menu.ogg new file mode 100644 index 0000000000..2768054f01 Binary files /dev/null and b/core/assets/music/menu.ogg differ diff --git a/core/assets/scripts/global.js b/core/assets/scripts/global.js index 37b756544e..bcc2247d9f 100755 --- a/core/assets/scripts/global.js +++ b/core/assets/scripts/global.js @@ -191,6 +191,7 @@ const PlayEvent = Packages.mindustry.game.EventType.PlayEvent const DisposeEvent = Packages.mindustry.game.EventType.DisposeEvent const ServerLoadEvent = Packages.mindustry.game.EventType.ServerLoadEvent const ClientCreateEvent = Packages.mindustry.game.EventType.ClientCreateEvent +const SaveWriteEvent = Packages.mindustry.game.EventType.SaveWriteEvent const SaveLoadEvent = Packages.mindustry.game.EventType.SaveLoadEvent const MapPublishEvent = Packages.mindustry.game.EventType.MapPublishEvent const MapMakeEvent = Packages.mindustry.game.EventType.MapMakeEvent diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 99b6beefeb..3034d4e228 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -132,6 +132,8 @@ public class Vars implements Loadable{ Color.valueOf("4b5ef1"), Color.valueOf("2cabfe"), }; + /** maximum TCP packet size */ + public static final int maxTcpSize = 900; /** default server port */ public static final int port = 6567; /** multicast discovery port.*/ @@ -199,6 +201,8 @@ public class Vars implements Loadable{ public static final String saveExtension = "msav"; /** schematic file extension */ public static final String schematicExtension = "msch"; + /** path to the java executable */ + public static String javaPath; /** list of all locales that can be switched to */ public static Locale[] locales; @@ -293,6 +297,10 @@ public class Vars implements Loadable{ pathfinder = new Pathfinder(); bases = new BaseRegistry(); constants = new GlobalConstants(); + javaPath = + new Fi(OS.prop("java.home")).child("bin/java").exists() ? new Fi(OS.prop("java.home")).child("bin/java").absolutePath() : + Core.files.local("jre/bin/java").exists() ? Core.files.local("jre/bin/java").absolutePath() : + "java"; state = new GameState(); diff --git a/core/src/mindustry/content/StatusEffects.java b/core/src/mindustry/content/StatusEffects.java index 0a93c2103c..fdd5804cf5 100644 --- a/core/src/mindustry/content/StatusEffects.java +++ b/core/src/mindustry/content/StatusEffects.java @@ -28,11 +28,11 @@ public class StatusEffects implements ContentList{ init(() -> { opposite(wet, freezing); - affinity(tarred, ((unit, result, time) -> { + affinity(tarred, (unit, result, time) -> { unit.damagePierce(transitionDamage); Fx.burning.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f)); result.set(burning, Math.min(time + result.time, 300f)); - })); + }); }); }}; @@ -46,9 +46,9 @@ public class StatusEffects implements ContentList{ init(() -> { opposite(melting, burning); - affinity(blasted, ((unit, result, time) -> { + affinity(blasted, (unit, result, time) -> { unit.damagePierce(transitionDamage); - })); + }); }); }}; diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index 065cf8635c..c6cccfbcf7 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -187,15 +187,15 @@ public class NetClient implements ApplicationListener{ effect(effect, x, y, rotation, color); } - //called on all clients @Remote(targets = Loc.server, variants = Variant.both) - public static void sendMessage(String message, String sender, Player playersender){ + public static void sendMessage(String message, @Nullable String unformatted, @Nullable Player playersender){ if(Vars.ui != null){ - Vars.ui.chatfrag.addMessage(message, sender); + Vars.ui.chatfrag.addMessage(message); } - if(playersender != null){ - playersender.lastText(message); + //display raw unformatted text above player head + if(playersender != null && unformatted != null){ + playersender.lastText(unformatted); playersender.textFadeTime(1f); } } @@ -204,7 +204,7 @@ public class NetClient implements ApplicationListener{ @Remote(called = Loc.server, targets = Loc.server) public static void sendMessage(String message){ if(Vars.ui != null){ - Vars.ui.chatfrag.addMessage(message, null); + Vars.ui.chatfrag.addMessage(message); } } @@ -240,7 +240,7 @@ public class NetClient implements ApplicationListener{ //special case; graphical server needs to see its message if(!headless){ - sendMessage(message, colorizeName(player.id, player.name), player); + sendMessage(netServer.chatFormatter.format(player, message), message, player); } //server console logging @@ -248,7 +248,7 @@ public class NetClient implements ApplicationListener{ //invoke event for all clients but also locally //this is required so other clients get the correct name even if they don't know who's sending it yet - Call.sendMessage(message, colorizeName(player.id(), player.name), player); + Call.sendMessage(netServer.chatFormatter.format(player, message), message, player); }else{ //a command was sent, now get the output @@ -284,12 +284,6 @@ public class NetClient implements ApplicationListener{ } } - public static String colorizeName(int id, String name){ - Player player = Groups.player.getByID(id); - if(name == null || player == null) return null; - return "[#" + player.color().toString().toUpperCase() + "]" + name; - } - @Remote(called = Loc.client, variants = Variant.one) public static void connect(String ip, int port){ if(!steam && ip.startsWith("steam:")) return; diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index d528f672f5..57305333d7 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -64,6 +64,8 @@ public class NetServer implements ApplicationListener{ return state.rules.defaultTeam; }; + /** Converts a message + NULLABLE player sender into a single string. Override for custom prefixes/suffixes. */ + public ChatFormatter chatFormatter = (player, message) -> player == null ? message : "[coral][[" + player.coloredName() + "[coral]]:[white] " + message; private boolean closing = false; private Interval timer = new Interval(); @@ -293,20 +295,22 @@ public class NetServer implements ApplicationListener{ clientCommands.register("t", "", "Send a message only to your teammates.", (args, player) -> { String message = admins.filterMessage(player, args[0]); if(message != null){ - Groups.player.each(p -> p.team() == player.team(), o -> o.sendMessage(message, player, "[#" + player.team().color.toString() + "]" + NetClient.colorizeName(player.id(), player.name))); + String raw = "[#" + player.team().color.toString() + "] " + chatFormatter.format(player, message); + Groups.player.each(p -> p.team() == player.team(), o -> o.sendMessage(raw, player, message)); } }); clientCommands.register("a", "", "Send a message only to admins.", (args, player) -> { if(!player.admin){ - player.sendMessage("[scarlet]You must be admin to use this command."); + player.sendMessage("[scarlet]You must be an admin to use this command."); return; } - Groups.player.each(Player::admin, a -> a.sendMessage(args[0], player, "[#" + Pal.adminChat.toString() + "]" + NetClient.colorizeName(player.id, player.name))); + String raw = "[#" + Pal.adminChat.toString() + "] " + chatFormatter.format(player, args[0]); + Groups.player.each(Player::admin, a -> a.sendMessage(raw, player, args[0])); }); - //duration of a a kick in seconds + //duration of a kick in seconds int kickDuration = 60 * 60; //voting round duration in seconds float voteDuration = 0.5f * 60; @@ -981,4 +985,9 @@ public class NetServer implements ApplicationListener{ public interface TeamAssigner{ Team assign(Player player, Iterable players); } + + public interface ChatFormatter{ + /** @return text to be placed before player name */ + String format(@Nullable Player player, String message); + } } diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index c8259e94c8..79f5ddfc4a 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -314,6 +314,7 @@ public class Renderer implements ApplicationListener{ Draw.draw(Layer.overlayUI, overlays::drawTop); Draw.draw(Layer.space, this::drawLanding); + Events.fire(Trigger.drawOver); blocks.drawBlocks(); Groups.draw.draw(Drawc::draw); diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index e1d9e4e857..8dcea7cbb2 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -108,7 +108,7 @@ public class Damage{ furthest = null; boolean found = world.raycast(b.tileX(), b.tileY(), World.toTile(b.x + Tmp.v1.x), World.toTile(b.y + Tmp.v1.y), - (x, y) -> (furthest = world.tile(x, y)) != null && furthest.team() != b.team && furthest.block().absorbLasers); + (x, y) -> (furthest = world.tile(x, y)) != null && furthest.team() != b.team && (furthest.build != null && furthest.build.absorbLasers())); return found && furthest != null ? Math.max(6f, b.dst(furthest.worldx(), furthest.worldy())) : length; } diff --git a/core/src/mindustry/entities/Lightning.java b/core/src/mindustry/entities/Lightning.java index 6ba1dcc240..29181de687 100644 --- a/core/src/mindustry/entities/Lightning.java +++ b/core/src/mindustry/entities/Lightning.java @@ -53,7 +53,7 @@ public class Lightning{ world.raycastEach(World.toTile(from.getX()), World.toTile(from.getY()), World.toTile(to.getX()), World.toTile(to.getY()), (wx, wy) -> { Tile tile = world.tile(wx, wy); - if(tile != null && tile.block().insulated && tile.team() != team){ + if(tile != null && (tile.build != null && tile.build.isInsulated()) && tile.team() != team){ bhit = true; //snap it instead of removing lines.get(lines.size - 1).set(wx * tilesize, wy * tilesize); diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 0494cd2075..de06a1b0df 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -1241,6 +1241,14 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return amount; } + public boolean absorbLasers(){ + return block.absorbLasers; + } + + public boolean isInsulated(){ + return block.insulated; + } + public boolean collide(Bullet other){ return true; } diff --git a/core/src/mindustry/entities/comp/PlayerComp.java b/core/src/mindustry/entities/comp/PlayerComp.java index d1b3d3da0d..791157ad56 100644 --- a/core/src/mindustry/entities/comp/PlayerComp.java +++ b/core/src/mindustry/entities/comp/PlayerComp.java @@ -9,7 +9,6 @@ import arc.util.*; import arc.util.pooling.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; -import mindustry.core.*; import mindustry.entities.units.*; import mindustry.game.EventType.*; import mindustry.game.*; @@ -310,10 +309,15 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra Draw.z(z); } + /** @return name with a markup color prefix */ + String coloredName(){ + return "[#" + color.toString().toUpperCase() + "]" + name; + } + void sendMessage(String text){ if(isLocal()){ if(ui != null){ - ui.chatfrag.addMessage(text, null); + ui.chatfrag.addMessage(text); } }else{ Call.sendMessage(con, text, null, null); @@ -321,16 +325,16 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra } void sendMessage(String text, Player from){ - sendMessage(text, from, NetClient.colorizeName(from.id(), from.name)); + sendMessage(text, from, null); } - void sendMessage(String text, Player from, String fromName){ + void sendMessage(String text, Player from, String unformatted){ if(isLocal()){ if(ui != null){ - ui.chatfrag.addMessage(text, fromName); + ui.chatfrag.addMessage(text); } }else{ - Call.sendMessage(con, text, fromName, from); + Call.sendMessage(con, text, unformatted, from); } } diff --git a/core/src/mindustry/entities/comp/WaterMoveComp.java b/core/src/mindustry/entities/comp/WaterMoveComp.java index bf5c15a5f0..b1e223df62 100644 --- a/core/src/mindustry/entities/comp/WaterMoveComp.java +++ b/core/src/mindustry/entities/comp/WaterMoveComp.java @@ -88,7 +88,7 @@ abstract class WaterMoveComp implements Posc, Velc, Hitboxc, Flyingc, Unitc{ @Replace public float floorSpeedMultiplier(){ Floor on = isFlying() ? Blocks.air.asFloor() : floorOn(); - return (on.isDeep() ? 1.3f : 1f) * speedMultiplier; + return (on.shallow ? 1f : 1.3f) * speedMultiplier; } public boolean onLiquid(){ diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index 91055acf87..ce55dc5ca0 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -33,6 +33,7 @@ public class EventType{ socketConfigChanged, update, draw, + drawOver, preDraw, postDraw, uiDrawBegin, @@ -50,6 +51,7 @@ public class EventType{ public static class ResizeEvent{} public static class MapMakeEvent{} public static class MapPublishEvent{} + public static class SaveWriteEvent{} public static class SaveLoadEvent{} public static class ClientCreateEvent{} public static class ServerLoadEvent{} @@ -503,7 +505,7 @@ public class EventType{ this.player = player; } } - + public static class PlayerBanEvent{ @Nullable public final Player player; @@ -514,7 +516,7 @@ public class EventType{ this.uuid = uuid; } } - + public static class PlayerUnbanEvent{ @Nullable public final Player player; @@ -525,7 +527,7 @@ public class EventType{ this.uuid = uuid; } } - + public static class PlayerIpBanEvent{ public final String ip; @@ -533,7 +535,7 @@ public class EventType{ this.ip = ip; } } - + public static class PlayerIpUnbanEvent{ public final String ip; @@ -541,6 +543,5 @@ public class EventType{ this.ip = ip; } } - -} +} diff --git a/core/src/mindustry/io/SaveIO.java b/core/src/mindustry/io/SaveIO.java index 0f38a05063..d71fddbe7f 100644 --- a/core/src/mindustry/io/SaveIO.java +++ b/core/src/mindustry/io/SaveIO.java @@ -113,12 +113,15 @@ public class SaveIO{ public static void write(OutputStream os, StringMap tags){ try(DataOutputStream stream = new DataOutputStream(os)){ + Events.fire(new SaveWriteEvent()); + SaveVersion ver = getVersion(); + stream.write(header); - stream.writeInt(getVersion().version); + stream.writeInt(ver.version); if(tags == null){ - getVersion().write(stream); + ver.write(stream); }else{ - getVersion().write(stream, tags); + ver.write(stream, tags); } }catch(Throwable e){ throw new RuntimeException(e); diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index efa75d18fa..c61756580d 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -327,7 +327,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ } } - boolean naval = (float)waters / total >= 0.15f; + boolean naval = (float)waters / total >= 0.19f; //create water pathway if the map is flooded if(naval){ @@ -345,11 +345,11 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ Vec3 v = sector.rect.project(x, y); float rr = Simplex.noise2d(sector.id, (float)2, 0.6f, 1f / 7f, x, y) * 0.1f; - float value = Ridged.noise3d(2, v.x, v.y, v.z, 1, 1f / 53f) + rr - rawHeight(v) * 0f; + float value = Ridged.noise3d(2, v.x, v.y, v.z, 1, 1f / 55f) + rr - rawHeight(v) * 0f; float rrscl = rr * 44 - 2; - if(value > 0.12f && !Mathf.within(x, y, fspawn.x, fspawn.y, 12 + rrscl)){ - boolean deep = value > 0.12f + 0.1f && !Mathf.within(x, y, fspawn.x, fspawn.y, 15 + rrscl); + if(value > 0.17f && !Mathf.within(x, y, fspawn.x, fspawn.y, 12 + rrscl)){ + boolean deep = value > 0.17f + 0.1f && !Mathf.within(x, y, fspawn.x, fspawn.y, 15 + rrscl); boolean spore = floor != Blocks.sand && floor != Blocks.salt; //do not place rivers on ice, they're frozen //ignore pre-existing liquids @@ -407,7 +407,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ } } - floor = floor == Blocks.water ? Blocks.deepwater : Blocks.deepTaintedWater; + floor = floor == Blocks.water ? Blocks.deepwater : Blocks.taintedWater; } }); } diff --git a/core/src/mindustry/net/BeControl.java b/core/src/mindustry/net/BeControl.java index 35c881ea31..3f4a7faa76 100644 --- a/core/src/mindustry/net/BeControl.java +++ b/core/src/mindustry/net/BeControl.java @@ -107,8 +107,8 @@ public class BeControl{ download(updateUrl, file, i -> length[0] = i, v -> progress[0] = v, () -> cancel[0], () -> { try{ Runtime.getRuntime().exec(OS.isMac ? - new String[]{"java", "-XstartOnFirstThread", "-DlastBuild=" + Version.build, "-Dberestart", "-Dbecopy=" + fileDest.absolutePath(), "-jar", file.absolutePath()} : - new String[]{"java", "-DlastBuild=" + Version.build, "-Dberestart", "-Dbecopy=" + fileDest.absolutePath(), "-jar", file.absolutePath()} + new String[]{javaPath, "-XstartOnFirstThread", "-DlastBuild=" + Version.build, "-Dberestart", "-Dbecopy=" + fileDest.absolutePath(), "-jar", file.absolutePath()} : + new String[]{javaPath, "-DlastBuild=" + Version.build, "-Dberestart", "-Dbecopy=" + fileDest.absolutePath(), "-jar", file.absolutePath()} ); System.exit(0); }catch(IOException e){ diff --git a/core/src/mindustry/net/NetConnection.java b/core/src/mindustry/net/NetConnection.java index 87eedd6675..3d9ac3e5ee 100644 --- a/core/src/mindustry/net/NetConnection.java +++ b/core/src/mindustry/net/NetConnection.java @@ -90,7 +90,7 @@ public abstract class NetConnection{ cid = begin.id; while(stream.stream.available() > 0){ - byte[] bytes = new byte[Math.min(512, stream.stream.available())]; + byte[] bytes = new byte[Math.min(maxTcpSize, stream.stream.available())]; stream.stream.read(bytes); StreamChunk chunk = new StreamChunk(); diff --git a/core/src/mindustry/type/Weapon.java b/core/src/mindustry/type/Weapon.java index 498ef2a54d..d88651fa04 100644 --- a/core/src/mindustry/type/Weapon.java +++ b/core/src/mindustry/type/Weapon.java @@ -200,7 +200,7 @@ public class Weapon implements Cloneable{ boolean can = unit.canShoot(); float lastReload = mount.reload; mount.reload = Math.max(mount.reload - Time.delta * unit.reloadMultiplier, 0); - mount.recoil = Math.max(mount.recoil - (Time.delta * recoil * unit.reloadMultiplier) / recoilTime, 0); + mount.recoil = Mathf.approachDelta(mount.recoil, 0, (Math.abs(recoil) * unit.reloadMultiplier) / recoilTime); //rotate if applicable if(rotate && (mount.rotate || mount.shoot) && can){ diff --git a/core/src/mindustry/ui/Bar.java b/core/src/mindustry/ui/Bar.java index eb4fcf9a54..1d566435e4 100644 --- a/core/src/mindustry/ui/Bar.java +++ b/core/src/mindustry/ui/Bar.java @@ -138,8 +138,10 @@ public class Bar extends Element{ GlyphLayout lay = Pools.obtain(GlyphLayout.class, GlyphLayout::new); lay.setText(font, name); - font.setColor(1f, 1f, 1f, parentAlpha); - font.draw(name, x + width / 2f - lay.width / 2f, y + height / 2f + lay.height / 2f + 1); + font.setColor(1f, 1f, 1f, 1f); + font.getCache().clear(); + font.getCache().addText(name, x + width / 2f - lay.width / 2f, y + height / 2f + lay.height / 2f + 1); + font.getCache().draw(parentAlpha); Pools.free(lay); } diff --git a/core/src/mindustry/ui/Minimap.java b/core/src/mindustry/ui/Minimap.java index 53736910f1..ad828a8dd2 100644 --- a/core/src/mindustry/ui/Minimap.java +++ b/core/src/mindustry/ui/Minimap.java @@ -37,6 +37,7 @@ public class Minimap extends Table{ Draw.rect(renderer.minimap.getRegion(), x + width / 2f, y + height / 2f, width, height); if(renderer.minimap.getTexture() != null){ + Draw.alpha(parentAlpha); renderer.minimap.drawEntities(x, y, width, height, 0.75f, false); } diff --git a/core/src/mindustry/ui/fragments/ChatFragment.java b/core/src/mindustry/ui/fragments/ChatFragment.java index 0d97d5d6a2..59026146c8 100644 --- a/core/src/mindustry/ui/fragments/ChatFragment.java +++ b/core/src/mindustry/ui/fragments/ChatFragment.java @@ -23,7 +23,7 @@ import static mindustry.Vars.*; public class ChatFragment extends Table{ private static final int messagesShown = 10; - private Seq messages = new Seq<>(); + private Seq messages = new Seq<>(); private float fadetime; private boolean shown = false; private TextField chatfield; @@ -144,13 +144,13 @@ public class ChatFragment extends Table{ float theight = offsety + spacing + getMarginBottom() + scene.marginBottom; for(int i = scrollPos; i < messages.size && i < messagesShown + scrollPos && (i < fadetime || shown); i++){ - layout.setText(font, messages.get(i).formattedMessage, Color.white, textWidth, Align.bottomLeft, true); + layout.setText(font, messages.get(i), Color.white, textWidth, Align.bottomLeft, true); theight += layout.height + textspacing; if(i - scrollPos == 0) theight -= textspacing + 1; font.getCache().clear(); font.getCache().setColor(Color.white); - font.getCache().addText(messages.get(i).formattedMessage, fontoffsetx + offsetx, offsety + theight, textWidth, Align.bottomLeft, true); + font.getCache().addText(messages.get(i), fontoffsetx + offsetx, offsety + theight, textWidth, Align.bottomLeft, true); if(!shown && fadetime - i < 1f && fadetime - i >= 0f){ font.getCache().setAlphas((fadetime - i) * opacity); @@ -257,9 +257,9 @@ public class ChatFragment extends Table{ return shown; } - public void addMessage(String message, String sender){ - if(sender == null && message == null) return; - messages.insert(0, new ChatMessage(message, sender)); + public void addMessage(String message){ + if(message == null) return; + messages.insert(0, message); fadetime += 1f; fadetime = Math.min(fadetime, messagesShown) + 1f; @@ -267,22 +267,6 @@ public class ChatFragment extends Table{ if(scrollPos > 0) scrollPos++; } - private static class ChatMessage{ - public final String sender; - public final String message; - public final String formattedMessage; - - public ChatMessage(String message, String sender){ - this.message = message; - this.sender = sender; - if(sender == null){ //no sender, this is a server message? - formattedMessage = message == null ? "" : message; - }else{ - formattedMessage = "[coral][[" + sender + "[coral]]:[white] " + message; - } - } - } - private enum ChatMode{ normal(""), team("/t"), diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index bfe976d3f3..d37d5b1c07 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -667,7 +667,7 @@ public class HudFragment extends Fragment{ float stroke = width * 0.35f; float bh = height/2f; - Draw.color(color); + Draw.color(color, parentAlpha); float f1 = Math.min(fract * 2f, 1f), f2 = (fract - 0.5f) * 2f; @@ -703,10 +703,10 @@ public class HudFragment extends Fragment{ new Element(){ @Override public void draw(){ - Draw.color(Pal.darkerGray); + Draw.color(Pal.darkerGray, parentAlpha); Fill.poly(x + width/2f, y + height/2f, 6, height / Mathf.sqrt3); Draw.reset(); - Drawf.shadow(x + width/2f, y + height/2f, height * 1.13f); + Drawf.shadow(x + width/2f, y + height/2f, height * 1.13f, parentAlpha); } }, new Table(t -> { diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index 4042e22c2c..c4cf8812db 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -10,6 +10,7 @@ import arc.util.*; import arc.util.io.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; +import mindustry.entities.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.logic.*; @@ -31,13 +32,16 @@ public class ForceProjector extends Block{ public float cooldownNormal = 1.75f; public float cooldownLiquid = 1.5f; public float cooldownBrokenBase = 0.35f; + public Effect absorbEffect = Fx.absorb; + public Effect shieldBreakEffect = Fx.shieldBreak; public @Load("@-top") TextureRegion topRegion; static ForceBuild paramEntity; + static Effect paramEffect; static final Cons shieldConsumer = trait -> { if(trait.team != paramEntity.team && trait.type.absorbable && Intersector.isInsideHexagon(paramEntity.x, paramEntity.y, paramEntity.realRadius() * 2f, trait.x(), trait.y())){ trait.absorb(); - Fx.absorb.at(trait); + paramEffect.at(trait); paramEntity.hit = 1f; paramEntity.buildup += trait.damage(); } @@ -154,7 +158,7 @@ public class ForceProjector extends Block{ if(buildup >= shieldHealth + phaseShieldBoost * phaseHeat && !broken){ broken = true; buildup = shieldHealth; - Fx.shieldBreak.at(x, y, realRadius(), team.color); + shieldBreakEffect.at(x, y, realRadius(), team.color); } if(hit > 0f){ @@ -165,6 +169,7 @@ public class ForceProjector extends Block{ if(realRadius > 0 && !broken){ paramEntity = this; + paramEffect = absorbEffect; Groups.bullet.intersect(x - realRadius, y - realRadius, realRadius * 2f, realRadius * 2f, shieldConsumer); } } diff --git a/core/src/mindustry/world/blocks/distribution/OverflowGate.java b/core/src/mindustry/world/blocks/distribution/OverflowGate.java index f6c431cb31..9eee519386 100644 --- a/core/src/mindustry/world/blocks/distribution/OverflowGate.java +++ b/core/src/mindustry/world/blocks/distribution/OverflowGate.java @@ -69,13 +69,8 @@ public class OverflowGate extends Block{ }else if(bc && !ac){ to = b; }else{ - if(rotation == 0){ - to = a; - if(flip) rotation =1; - }else{ - to = b; - if(flip) rotation = 0; - } + to = (rotation & (1 << from)) == 0 ? a : b; + if(flip) rotation ^= (1 << from); } } diff --git a/core/src/mindustry/world/blocks/distribution/Sorter.java b/core/src/mindustry/world/blocks/distribution/Sorter.java index 3fe8653f06..4784a954b3 100644 --- a/core/src/mindustry/world/blocks/distribution/Sorter.java +++ b/core/src/mindustry/world/blocks/distribution/Sorter.java @@ -114,13 +114,8 @@ public class Sorter extends Block{ }else if(!bc){ return null; }else{ - if(rotation == 0){ - to = a; - if(flip) this.rotation = (byte)1; - }else{ - to = b; - if(flip) this.rotation = (byte)0; - } + to = (rotation & (1 << dir)) == 0 ? a : b; + if(flip) rotation ^= (1 << dir); } } diff --git a/core/src/mindustry/world/blocks/power/PowerNode.java b/core/src/mindustry/world/blocks/power/PowerNode.java index 39bc9c949c..8ee013f6fe 100644 --- a/core/src/mindustry/world/blocks/power/PowerNode.java +++ b/core/src/mindustry/world/blocks/power/PowerNode.java @@ -349,7 +349,7 @@ public class PowerNode extends PowerBlock{ public static boolean insulated(int x, int y, int x2, int y2){ return world.raycast(x, y, x2, y2, (wx, wy) -> { Building tile = world.build(wx, wy); - return tile != null && tile.block.insulated; + return tile != null && tile.isInsulated(); }); } diff --git a/fastlane/metadata/android/fr-FR/summary.txt b/fastlane/metadata/android/fr-FR/summary.txt new file mode 100644 index 0000000000..e8deb5ded0 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/summary.txt @@ -0,0 +1 @@ +Un tower-defense ouvert, axé sur la gestion des ressources. diff --git a/fastlane/metadata/android/tr-TR/full_description.txt b/fastlane/metadata/android/tr-TR/full_description.txt new file mode 100644 index 0000000000..c32f8e6620 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/full_description.txt @@ -0,0 +1,51 @@ +Taretlerinize cephane göndermek için ayrıntılı yol zincirleri oluşturun, yapı yapmak için materyaller üretin, ve yapılarınızı dalgalar halinde gelen düşmanlardan koruyun. Cross-platform çok oyunculu oyunlarda arkadaşlarınızla oynayın, ya da takım-bazlı PvP maçlarında onlara meydan okuyun. + +

Oynanış Özellikleri

+ +- Geniş kapsamlı materyaller oluşturmak için üretim bloklarını kullanın +- Yapılarınızı dalgalar halindeki düşmanlardan koruyun +- Cross-platform çok oyunculu oyunlarda arkadaşlarınızla oynayın, ya da takım-bazlı PvP maçlarında onlara meydan okuyun +- Sıvıları yönetin ve ortaya çıkan zorluklarla mücadele edin, ateş kaçakları ya da düşman uçak baskınları gibi +- İsteğe bağlı soğutucu ve yağlayıcı sağlayarak üretimden en iyi şekilde yararlanın +- Üssünüzün otomatik kontrolü veya düşman üslerine saldırı için geniş çaplı birimler üretin + + +

Mücadele

+ +- Serpulo gezegenini 250'den fazla rastgele oluşmuş ve 16 elle-yapılmış sektörü kontrol ederek ele geçirin +- Diğer sektörlerde oynarken kaynak üretmek için arazi ele geçirin ve fabrikalar kurun +- Ardarda gelen saldırılardan üssünüzü koruyun +- Kalkış-rampaları aracılığıyla sektörler arasında kaynak dağıtımını koordine edin +- Daha da yol katetmek için blok araştırın +- Görevleri beraber tamamlamak için arkadaşlarınızı davet edin +- 130+ teknoloji bloğu +- 33 farklı drone, robot, ve gemi + +

Oyun modları

+ +- Hayatta Kalma: Kule-savunma temelli oynanışta düşmanlara karşı savunmak için taretler kurun. Mümkün olduğunca uzun süre hayatta kalın, isteğe bağlı araştırmalar için toplanan kaynaklarınızı kullanmak üzere çekirdeğiniz ile kalkış gerçekleştirerek. Üssünüzü aralıklı hava saldırıları için hazırlayın. +- Saldırı: Düşman çekirdeklerini yok etmek için birim fabrikaları üretin ve aynı zamanda üssünüzü düşman dalgalarından savunun. Hedefinizde size yoldaş olmaları için çeşitli saldırgan ve dost birimler üretin. İsteğe bağlı savunma yapıları üreten yapay zekayı aktifleştirip farklı bir zorluk deneyin. +- PvP: 4'e kadar farklı takım içerisinde diğer oyuncuların çekirdeklerini yok etmeye çalışın. Birimler üretin, ya da diğer üslere kendiniz saldırın. +- Sandbox: Düşman tehlikesi olmadan sonsuz kaynaklarla oynayın. Tasarımları denemek için sandbox-özel eşya ve sıvı kaynak bloklarını kullanın, ve isteğe bağlı düşman çağırın. + + +

Özel Oyunlar & Cross-Platform Çok Oyunculu

+ +- Mücadele'ye ek olarak özel oyunlar için 16 harita daha +- Co-op, PvP ya da Sandbox oynayın. +- Herkese açık bir sunucuya katılın, ya da kendi özel oyununuza arkadaşlarınızı davet edin. +- Özelleştirilebilir oyun kuralları: Blok değerlerini, düşman özelliklerini, başlangıç eşyalarını, dalga zamanlamasını ve daha fazlasını özelleştirin +- Karışık oyun modları: PvP ve PvE oyun modlarını bir araya getirin + + +

Özel Harita Düzenleyicisi

+ +- Bir düzenleyici kullanıcı arayüzü ile kendi arazinizi çizin +- Oyun içinde yapılarınızı önizleyin +- Ayarlanabilir araçlar: Her aracın çalışışını değiştirin +- Güçlü oluşum sistemi, arazinin prosedürel manipülasyonu için birçok farklı filtre türü ile +- Haritalarınıza ses, bozulma, yumuşatma, erozyon, simetri, maden üretimi ve rastgele arazi ekleyin +- Cevher oluşumunun yanı sıra nehir ve kaynakların yerleştirilmesini rastgele hale getirin ve yapılandırın +- Düşman dalgalarını özelleştirin +- Temel harita kurallarını özelleştirin +- 80'den fazla blok diff --git a/fastlane/metadata/android/tr-TR/short_description.txt b/fastlane/metadata/android/tr-TR/short_description.txt new file mode 100644 index 0000000000..4e7ac2ae53 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/short_description.txt @@ -0,0 +1 @@ +Fabrika-temelli bir sandbox kule savunma oyunu. diff --git a/fastlane/metadata/android/tr-TR/summary.txt b/fastlane/metadata/android/tr-TR/summary.txt new file mode 100644 index 0000000000..4e7ac2ae53 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/summary.txt @@ -0,0 +1 @@ +Fabrika-temelli bir sandbox kule savunma oyunu. diff --git a/fastlane/metadata/android/tr-TR/title.txt b/fastlane/metadata/android/tr-TR/title.txt new file mode 100644 index 0000000000..e2842b447a --- /dev/null +++ b/fastlane/metadata/android/tr-TR/title.txt @@ -0,0 +1 @@ +Mindustry diff --git a/fastlane/metadata/steam/french/achievements.vdf b/fastlane/metadata/steam/french/achievements.vdf index 79305dbebb..acf8450dfb 100644 --- a/fastlane/metadata/steam/french/achievements.vdf +++ b/fastlane/metadata/steam/french/achievements.vdf @@ -24,7 +24,7 @@ "NEW_ACHIEVEMENT_20_14_NAME" "Surcharge" "NEW_ACHIEVEMENT_20_14_DESC" "Toucher un ennemi couvert d'eau avec un tir électrique." "NEW_ACHIEVEMENT_20_15_NAME" "Déflexion" - "NEW_ACHIEVEMENT_20_15_DESC" "Détruire une unité avec la reflexion de ses propres balles." + "NEW_ACHIEVEMENT_20_15_DESC" "Détruire une unité avec la réflexion de ses propres balles." "NEW_ACHIEVEMENT_20_17_NAME" "Une Grave Erreur" "NEW_ACHIEVEMENT_20_17_DESC" "Rechercher le Routeur." "NEW_ACHIEVEMENT_20_18_NAME" "Créer" @@ -34,7 +34,7 @@ "NEW_ACHIEVEMENT_20_20_NAME" "Un Désastre Spectaculaire" "NEW_ACHIEVEMENT_20_20_DESC" "Provoquer l'explosion d'un Réacteur à Thorium en le faisant surchauffer." "NEW_ACHIEVEMENT_20_21_NAME" "Cartographe" - "NEW_ACHIEVEMENT_20_21_DESC" "Créer une nouvelle carte 10 fois." + "NEW_ACHIEVEMENT_20_21_DESC" "Créer 10 nouvelles cartes." "NEW_ACHIEVEMENT_20_22_NAME" "Navigateur" "NEW_ACHIEVEMENT_20_22_DESC" "Télécharger une carte sur le Workshop." "NEW_ACHIEVEMENT_20_23_NAME" "Créateur" @@ -82,7 +82,7 @@ "NEW_ACHIEVEMENT_21_19_NAME" "Efficacité" "NEW_ACHIEVEMENT_21_19_DESC" "Refroidir une tourelle avec de l'eau ou du liquide cryogénique." "NEW_ACHIEVEMENT_21_20_NAME" "Mode Classique" - "NEW_ACHIEVEMENT_21_20_DESC" "Activer la pixelisation." + "NEW_ACHIEVEMENT_21_20_DESC" "Activer la pixellisation." "NEW_ACHIEVEMENT_21_21_NAME" "Érudit" "NEW_ACHIEVEMENT_21_21_DESC" "Ouvrir le Wiki depuis le jeu." "NEW_ACHIEVEMENT_21_22_NAME" "Avantage" @@ -90,9 +90,9 @@ "NEW_ACHIEVEMENT_21_23_NAME" "Allumage" "NEW_ACHIEVEMENT_21_23_DESC" "Lancer un Réacteur à Impact." "NEW_ACHIEVEMENT_21_24_NAME" "Accélération" - "NEW_ACHIEVEMENT_21_24_DESC" "Activater l'Accélérateur Interplanétaire." + "NEW_ACHIEVEMENT_21_24_DESC" "Activer l'Accélérateur Interplanétaire." "NEW_ACHIEVEMENT_21_25_NAME" "La Spirale" - "NEW_ACHIEVEMENT_21_25_DESC" "Round and round it goes..." + "NEW_ACHIEVEMENT_21_25_DESC" "Tourner en rond, ça va ..." "NEW_ACHIEVEMENT_21_26_NAME" "Escalade" "NEW_ACHIEVEMENT_21_26_DESC" "Construire une unité de niveau 5." "NEW_ACHIEVEMENT_21_27_NAME" "Architecte" @@ -110,6 +110,6 @@ "NEW_ACHIEVEMENT_26_1_NAME" "Victoire Assurée" "NEW_ACHIEVEMENT_26_1_DESC" "Capturer un secteur pendant que vous jouez dans un autre." "NEW_ACHIEVEMENT_26_2_NAME" "Petit Empire" - "NEW_ACHIEVEMENT_26_2_DESC" "Contrôller 10 secteurs à la fois." + "NEW_ACHIEVEMENT_26_2_DESC" "Contrôler 10 secteurs à la fois." } } diff --git a/fastlane/metadata/steam/french/description.txt b/fastlane/metadata/steam/french/description.txt index 7978f37f15..2ece1001ce 100644 --- a/fastlane/metadata/steam/french/description.txt +++ b/fastlane/metadata/steam/french/description.txt @@ -1,60 +1,65 @@ -Créez des chaînes d'approvisionnement complexes pour alimenter vos tourelles en munitions, produisez des matériaux à utiliser pour vos constructions et protégez vos structures des vagues d'ennemis. Jouez avec vos amis dans des parties multijoueurs cross-plateformes en co-op ou défiez-les lors de matchs PvP en équipe. - [img]{STEAM_APP_IMAGE}/extras/ezgif-4-0e70c282f775.gif[/img] -[h2]Gameplay[/h2] +[h2]Caractéristiques du jeu[/h2] [list] [*] Créez des foreuses et des convoyeurs pour récolter et transporter les resources jusqu'à votre Noyau. -[*] Utilisez les blocs de production avancés pour créer des ressources plus complexes. +[*] Utilisez les usines de production avancés pour créer des ressources plus complexes. +[*] Défendez vos structures contre les vagues d'ennemis. [*] Construisez des drones pour miner automatiquement les ressources, pour vous assistez dans la construction ou encore pour défendre votre base. -[*] Gérez l'acheminent des liquides et combattez les incendies. +[*] Gérez l'acheminent des liquides et combattez les incendies des raids d'avions ennemis. [*] Boostez la production en approvisionnant vos blocs de défense et de production avec des liquides de refroidissement et des lubrifiants optionnels. +[*] Produisez une grande variété d'unités pour la gestion automatique de votre base ou l'assaut des bases ennemies. [/list] +[img]{STEAM_APP_IMAGE}/extras/ezgif-1-8679abe089cd.gif[/img] + [h2]Campagne[/h2] [list] -[*] Avancez à travers les 12 zones rejouables de la campagne. -[*] Récoltez and accumulez les resources. -[*] Recherchez de nouveaux blocs et faites progresser les technologies à votre disposition. -[*] Missions et objectifs variés. -[*] Invitez vos amis pour terminer les missions ensemble. -[*] 120+ blocs technologiques à maîtriser. -[*] 19 types de drones, mechs et vaisseaux. -[*] 50+ succès à débloquer. +[*] Partez à la conquête de la planète Serpulo en progressant dans plus de 250 secteurs générés de manière procédurale et sur 16 cartes créées à la main. +[*] Capturez des territoires et installez des usines pour produire des ressources pendant que vous jouez dans d'autres secteurs. +[*] Défendez vos secteurs contre les invasions périodiques. +[*] Coordonner la distribution des ressources entre les secteurs via des rampes de lancement. +[*] Recherchez de nouveaux blocs pour alimenter votre progression. +[*] Invitez vos amis à accomplir des missions ensemble. +[*] Plus de 130 blocs technologiques à maîtriser. +[*] 33 types différents de drones, de mechs et de vaisseaux. +[*] Plus de 50 succés à accomplir. [/list] [h2]Modes de jeu[/h2] [list] [*] [b]Survie[/b]: Construisez des tourelles pour défendre votre base des ennemis dans un style de jeu inspiré des tower-defense. Survivez aussi longtemps que possible, avant de faire décoller votre noyau. Utilisez les ressources récoltées pour débloquer de nouvelles technologies. Préparez votre base pour les attaques de puissants boss aériens. -[*] [b]Attaque[/b]: Construisez des usines et produisez des unités pour détruire les noyaux ennemis, tout en défendant votre base contre les vagues d'attaque. Créez une grande variété d'unités offensives et de support pour vous aider dans vos objectifs. +[*] [b]Attaque[/b]: Construisez des usines et produisez des unités pour détruire les noyaux ennemis, tout en défendant votre base contre les vagues d'attaque. Créez une grande variété d'unités offensives et de soutien pour vous aider dans vos objectifs. [*] [b]PvP[/b]: Affrontez d'autres joueurs. Constituez jusqu'à 4 équipes différentes et tentez de détruire les noyaux adverses. Créez des unités d'assaut ou attaquez directement les autres bases avec vos mechs. -[*] [b]Bac à sable[/b]: Jouez avec des ressources infinies et aucune menace ennemie. Utilisez des objets et des blocs spécifiques à ce mode de jeu tels que les sources de liquides. Testez vos designs et faites apparaître les ennemis à la demande. +[*] [b]Bac à sable[/b]: Jouez avec des ressources infinies et sans menace ennemie. Utilisez des objets et des blocs spécifiques à ce mode de jeu tels que les sources de liquides. Testez vos designs et faites apparaître les ennemis à la demande. [/list] +[img]{STEAM_APP_IMAGE}/extras/2020-11-30_10-46-02.gif[/img] + [h2]Parties Multijoueurs Cross-Platformes Personnalisées[/h2] [list] -[*] 12 cartes supplémentaires pour vos parties personnalisées en plus des cartes de la campagne. +[*] 16 cartes supplémentaires pour vos parties personnalisées en plus des cartes de la campagne. [*] Jouez en Co-op, en PvP ou en mode Bac à sable. [*] Rejoignez un serveur dédié public, ou invitez vos amis dans vos propres sessions privées. -[*] Personnalisez les règles de jeu: changez les coûts des blocs, les stats des ennemis, les ressources de départs, le timing des vagues... +[*] Règles de jeu personnalisables: Modifiez le coût des blocs, les statistiques des ennemis, les objets de départ, le timing des vagues, etc... [*] Mixez les modes de jeux: combinez PvP et PvE dans la même partie. [/list] -[h2]Éditeur de carte[/h2] +[h2]Éditeur de cartes personnalisées[/h2] [list] [*] Peignez le terrain grâce à une interface d'édition. -[*] Éditez and prévisualisez les structures en jeu. +[*] Éditez et prévisualisez les structures en jeu. [*] Outils d'édition configurables: choisissez comment chaque outil fonctionne. [*] Générateur de carte puissant, disposant d'un grand nombre de filtres permettant la manipulation procédurale du terrain. -[*] Appliquez les effets bruit, distortion, lissage, erosion, symétrie, génération de minerais et terrain aléatoire. +[*] Appliquez les effets bruit, distorsion, lissage, érosion, symétrie, génération de minerais et terrain aléatoire. [*] Randomisez et configurez la génération des minerais ainsi que le placement des rivières et des tuiles de ressources. [*] Configurez la disposition des vagues d'ennemis. [*] Partagez vos cartes sur le Workshop Steam. [*] Personnalisez les règles de base de vos cartes. -[*] 75+ blocs environnementaux différents. +[*] Utilisez plus de 80 blocs environnementaux différents. [/list] diff --git a/fastlane/metadata/steam/turkish/achivements.vdf b/fastlane/metadata/steam/turkish/achivements.vdf new file mode 100644 index 0000000000..3696bf5680 --- /dev/null +++ b/fastlane/metadata/steam/turkish/achivements.vdf @@ -0,0 +1,115 @@ +"lang" +{ + "Language" "turkish" + "Tokens" + { + "NEW_ACHIEVEMENT_20_1_NAME" "Yok Edici" + "NEW_ACHIEVEMENT_20_1_DESC" "1000 düşman birliği yok et." + "NEW_ACHIEVEMENT_20_2_NAME" "Temizlik" + "NEW_ACHIEVEMENT_20_2_DESC" "100,000 düşman birliği yok et." + "NEW_ACHIEVEMENT_20_5_NAME" "Sonsuz Mal" + "NEW_ACHIEVEMENT_20_5_DESC" "Toplam 100,000 eşya fırlat." + "NEW_ACHIEVEMENT_20_6_NAME" "Fatih" + "NEW_ACHIEVEMENT_20_6_DESC" "10 saldırı-modu savaşı kazan." + "NEW_ACHIEVEMENT_20_7_NAME" "Şampiyon" + "NEW_ACHIEVEMENT_20_7_DESC" "10 çok oyunculu PvP maçı kazan." + "NEW_ACHIEVEMENT_20_8_NAME" "Yıldırım" + "NEW_ACHIEVEMENT_20_8_DESC" "5 ya da daha az dalgada düşman çekirdeğini yok et." + "NEW_ACHIEVEMENT_20_9_NAME" "Çekirdek Yağmuru" + "NEW_ACHIEVEMENT_20_9_DESC" "Çekirdeğini 10 defa fırlat." + "NEW_ACHIEVEMENT_20_10_NAME" "İnatçı" + "NEW_ACHIEVEMENT_20_10_DESC" "100 dalga boyunca hayatta kal." + "NEW_ACHIEVEMENT_20_12_NAME" "Araştırmacı" + "NEW_ACHIEVEMENT_20_12_DESC" "Her şeyi araştır." + "NEW_ACHIEVEMENT_20_14_NAME" "Aşırı Yüklenme" + "NEW_ACHIEVEMENT_20_14_DESC" "Su ile kaplanmış bir düşmana elektrik ile saldır." + "NEW_ACHIEVEMENT_20_15_NAME" "Saptırma" + "NEW_ACHIEVEMENT_20_15_DESC" "Bir birliği kendi mermisini sektirerek yok et." + "NEW_ACHIEVEMENT_20_17_NAME" "Büyük Bir Hata" + "NEW_ACHIEVEMENT_20_17_DESC" "Yönlendirici bloğunu araştır." + "NEW_ACHIEVEMENT_20_18_NAME" "Oluştur" + "NEW_ACHIEVEMENT_20_18_DESC" "10,000 blok yerleştir." + "NEW_ACHIEVEMENT_20_19_NAME" "Yok Et" + "NEW_ACHIEVEMENT_20_19_DESC" "1,000 düşman bloğu yok et." + "NEW_ACHIEVEMENT_20_20_NAME" "Büyük Bir Felaket" + "NEW_ACHIEVEMENT_20_20_DESC" "Bir Toryum reaktörünün aşırı ısınıp patlamasına sebep ol." + "NEW_ACHIEVEMENT_20_21_NAME" "Haritacı" + "NEW_ACHIEVEMENT_20_21_DESC" "10 tane yeni harita oluştur." + "NEW_ACHIEVEMENT_20_22_NAME" "Tarayıcı" + "NEW_ACHIEVEMENT_20_22_DESC" "Atölye'den bir harita indir." + "NEW_ACHIEVEMENT_20_23_NAME" "Oluşturucu" + "NEW_ACHIEVEMENT_20_23_DESC" "Atölye'de bir harita yayınla." + "NEW_ACHIEVEMENT_20_24_NAME" "Katil" + "NEW_ACHIEVEMENT_20_24_DESC" "Bir gardiyan alt et." + "NEW_ACHIEVEMENT_20_25_NAME" "Kaşif" + "NEW_ACHIEVEMENT_20_25_DESC" "Mücadele'de bütün noktaları keşfet." + "NEW_ACHIEVEMENT_20_29_NAME" "Materyal II" + "NEW_ACHIEVEMENT_20_29_DESC" "Toryum'un kilidini aç." + "NEW_ACHIEVEMENT_20_31_NAME" "Materyal I" + "NEW_ACHIEVEMENT_20_31_DESC" "Titanyum'un kilidini aç." + "NEW_ACHIEVEMENT_21_0_NAME" "Kamikaze" + "NEW_ACHIEVEMENT_21_0_DESC" "Robotunu patlayıcı materyallerle doldur ve öl." + "NEW_ACHIEVEMENT_21_1_NAME" "Başlıyor" + "NEW_ACHIEVEMENT_21_1_DESC" "Bir kara birimi fabrikası kur." + "NEW_ACHIEVEMENT_21_2_NAME" "Direkt Saldırı" + "NEW_ACHIEVEMENT_21_2_DESC" "Komut Merkezi'ni kullanarak Saldırı komudunu ver." + "NEW_ACHIEVEMENT_21_3_NAME" "Sürü" + "NEW_ACHIEVEMENT_21_3_DESC" "Aynı anda 100 adet birliğe sahip ol." + "NEW_ACHIEVEMENT_21_4_NAME" "Hava Sürüsü" + "NEW_ACHIEVEMENT_21_4_DESC" "Aynı anda 10 adet Poly birliğine sahip ol." + "NEW_ACHIEVEMENT_21_5_NAME" "Robot Bilimcisi" + "NEW_ACHIEVEMENT_21_5_DESC" "Tüm türden birlikleri üret." + "NEW_ACHIEVEMENT_21_6_NAME" "Birlik" + "NEW_ACHIEVEMENT_21_6_DESC" "1000 adet birlik üret." + "NEW_ACHIEVEMENT_21_9_NAME" "Dinlemeliydin" + "NEW_ACHIEVEMENT_21_9_DESC" "İniş noktasında öl." + "NEW_ACHIEVEMENT_21_10_NAME" "Onun İçin Su Birlikleri Var" + "NEW_ACHIEVEMENT_21_10_DESC" "Boğul." + "NEW_ACHIEVEMENT_21_11_NAME" "Toplayıcı" + "NEW_ACHIEVEMENT_21_11_DESC" "Çekirdeği tüm türlerden materyallerle tamamen doldur." + "NEW_ACHIEVEMENT_21_12_NAME" "Kalabalık" + "NEW_ACHIEVEMENT_21_12_DESC" "10 oyunculu bir sunucu yönet." + "NEW_ACHIEVEMENT_21_13_NAME" "Yenilmez" + "NEW_ACHIEVEMENT_21_13_DESC" "Meltdown, Spectre and Foreshadow üret." + "NEW_ACHIEVEMENT_21_14_NAME" "Kalkış" + "NEW_ACHIEVEMENT_21_14_DESC" "Kalkış Pisti'ni kullan." + "NEW_ACHIEVEMENT_21_16_NAME" "Saçmalık" + "NEW_ACHIEVEMENT_21_16_DESC" "Yan yana 2 yönlendirici inşa et." + "NEW_ACHIEVEMENT_21_17_NAME" "Yalnız Gardiyan" + "NEW_ACHIEVEMENT_21_17_DESC" "Herhangi bir noktada blok koymadan 10 dalga hayatta kal." + "NEW_ACHIEVEMENT_21_18_NAME" "Yak" + "NEW_ACHIEVEMENT_21_18_DESC" "Herhangi bir tarette Pirratit kullan." + "NEW_ACHIEVEMENT_21_19_NAME" "Etkililik" + "NEW_ACHIEVEMENT_21_19_DESC" "Bir tareti su veya kriyosıvı ile soğut." + "NEW_ACHIEVEMENT_21_20_NAME" "Klasik Mod" + "NEW_ACHIEVEMENT_21_20_DESC" "Pikselleştirmeyi aç." + "NEW_ACHIEVEMENT_21_21_NAME" "Eğitilmiş" + "NEW_ACHIEVEMENT_21_21_DESC" "Oyun içinden Viki'yi aç." + "NEW_ACHIEVEMENT_21_22_NAME" "İyi Başlangıç" + "NEW_ACHIEVEMENT_21_22_DESC" "10,000 veya daha fazla materyal ile ayarlanmış bir şekilde başla." + "NEW_ACHIEVEMENT_21_23_NAME" "Yakıcı" + "NEW_ACHIEVEMENT_21_23_DESC" "Bir Patlama Reaktörüne güç ver." + "NEW_ACHIEVEMENT_21_24_NAME" "Yükseliş" + "NEW_ACHIEVEMENT_21_24_DESC" "Gezegenler Arası Hızlandırıcı'yı aç." + "NEW_ACHIEVEMENT_21_25_NAME" "Spiral" + "NEW_ACHIEVEMENT_21_25_DESC" "Dönüp dolaşıyor..." + "NEW_ACHIEVEMENT_21_26_NAME" "Pahalanma" + "NEW_ACHIEVEMENT_21_26_DESC" "Bir 5. Seviye birlik üret." + "NEW_ACHIEVEMENT_21_27_NAME" "Mimar" + "NEW_ACHIEVEMENT_21_27_DESC" "20 şema oluştur." + "NEW_ACHIEVEMENT_21_28_NAME" "Küresel Hüküm" + "NEW_ACHIEVEMENT_21_28_DESC" "Serpulo'daki her noktayı ele geçir." + "NEW_ACHIEVEMENT_21_29_NAME" "Hava İkmali" + "NEW_ACHIEVEMENT_21_29_DESC" "Bir Oct birliği ile bir T5 birliği taşı." + "NEW_ACHIEVEMENT_21_30_NAME" "Nihai Form" + "NEW_ACHIEVEMENT_21_30_DESC" "Onlara katıl." + "NEW_ACHIEVEMENT_21_31_NAME" "Üretim I" + "NEW_ACHIEVEMENT_21_31_DESC" "Mücadelede 5,000 eşya/dk hızında üretime ulaş." + "NEW_ACHIEVEMENT_26_0_NAME" "Üretim II" + "NEW_ACHIEVEMENT_26_0_DESC" "Mücadelede 50,000 eşya/dk hızında üretime ulaş." + "NEW_ACHIEVEMENT_26_1_NAME" "Emin Zafer" + "NEW_ACHIEVEMENT_26_1_DESC" "Bir sektörü farklı bir sektörde oynarken ele geçir." + "NEW_ACHIEVEMENT_26_2_NAME" "Ufak İmparatorluk" + "NEW_ACHIEVEMENT_26_2_DESC" "Aynı anda 10 sektör kontrol et." + } +} diff --git a/fastlane/metadata/steam/turkish/description.txt b/fastlane/metadata/steam/turkish/description.txt new file mode 100644 index 0000000000..b70729c436 --- /dev/null +++ b/fastlane/metadata/steam/turkish/description.txt @@ -0,0 +1,65 @@ +[img]{STEAM_APP_IMAGE}/extras/ezgif-4-0e70c282f775.gif[/img] + +[h2]Gameplay[/h2] + +[list] +[*] Taretlerinize cephane göndermek için ayrıntılı yol zincirleri oluşturun ve yapı yapmak için materyaller üretin +[*] Geniş kapsamlı materyaller oluşturmak için üretim bloklarını kullanın +[*] Yapılarınızı dalgalar halindeki düşmanlardan koruyun +[*] Cross-platform çok oyunculu co-op oyunlarda arkadaşlarınızla oynayın, ya da takım-bazlı PvP maçlarında onlara meydan okuyun +[*] Sıvıları yönetin ve ortaya çıkan zorluklarla mücadele edin, ateş kaçakları ya da düşman uçak baskınları gibi +[*] İsteğe bağlı soğutucu ve yağlayıcı sağlayarak üretimden en iyi şekilde yararlanın +[*] Üssünüzün otomatik kontrolü veya düşman üslerine saldırı için geniş çaplı birimler üretin +[/list] + +[img]{STEAM_APP_IMAGE}/extras/ezgif-1-8679abe089cd.gif[/img] + +[h2]Campaign[/h2] + +[list] +[*] Serpulo gezegenini 250'den fazla rastgele oluşmuş ve 16 elle-yapılmış sektörü kontrol ederek ele geçirin +[*] Diğer sektörlerde oynarken kaynak üretmek için arazi ele geçirin ve fabrikalar kurun +[*] Ardarda gelen saldırılardan üssünüzü koruyun +[*] Kalkış-rampaları aracılığıyla sektörler arasında kaynak dağıtımını koordine edin +[*] Daha da yol katetmek için blok araştırın +[*] Invite your friends to complete missions together +[*] Görevleri beraber tamamlamak için arkadaşlarınızı davet edin +[*] 33 farklı drone, robot, ve gemi +[*] 50'den fazla tamamlanmayı bekleyen başarım +[/list] + +[h2]Gamemodes[/h2] + +[list] +[*] [b]Hayatta Kalma[/b]: Kule-savunma temelli oynanışta düşmanlara karşı savunmak için taretler kurun. Mümkün olduğunca uzun süre hayatta kalın, isteğe bağlı araştırmalar için toplanan kaynaklarınızı kullanmak üzere çekirdeğiniz ile kalkış gerçekleştirerek. Üssünüzü aralıklı hava saldırıları için hazırlayın. +[*] [b]Saldırı[/b]: Düşman çekirdeklerini yok etmek için birim fabrikaları üretin ve aynı zamanda üssünüzü düşman dalgalarından savunun. Hedefinizde size yoldaş olmaları için çeşitli saldırgan ve dost birimler üretin. İsteğe bağlı savunma yapıları üreten yapay zekayı aktifleştirip farklı bir zorluk deneyin. +[*] [b]PvP[/b]: 4'e kadar farklı takım içerisinde diğer oyuncuların çekirdeklerini yok etmeye çalışın. Birimler üretin, ya da diğer üslere kendiniz saldırın. +[*] [b]Sandbox[/b]: Düşman tehlikesi olmadan sonsuz kaynaklarla oynayın. Tasarımları denemek için sandbox-özel eşya ve sıvı kaynak bloklarını kullanın, ve isteğe bağlı düşman çağırın. +[/list] + +[img]{STEAM_APP_IMAGE}/extras/2020-11-30_10-46-02.gif[/img] + +[h2]Özel Oyunlar & Cross-Platform Çok Oyunculu[/h2] + +[list] +[*] Mücadele'ye ek olarak özel oyunlar için 16 harita daha +[*] Co-op, PvP ya da Sandbox oynayın +[*] Herkese açık bir sunucuya katılın, ya da kendi özel oyununuza arkadaşlarınızı davet edin +[*] Özelleştirilebilir oyun kuralları: Blok değerlerini, düşman özelliklerini, başlangıç eşyalarını, dalga zamanlamasını ve daha fazlasını özelleştirin +[*] Karışık oyun modları: PvP ve PvE oyun modlarını bir araya getirin +[/list] + +[h2]Custom Map Editor[/h2] + +[list] +[*] Bir düzenleyici kullanıcı arayüzü ile kendi arazinizi çizin +[*] Oyun içinde yapılarınızı önizleyin +[*] Ayarlanabilir araçlar: Her aracın çalışışını değiştirin +[*] Güçlü oluşum sistemi, arazinin prosedürel manipülasyonu için birçok farklı filtre türü ile +[*] Haritalarınıza ses, bozulma, yumuşatma, erozyon, simetri, maden üretimi ve rastgele arazi ekleyin +[*] Cevher oluşumunun yanı sıra nehir ve kaynakların yerleştirilmesini rastgele hale getirin ve yapılandırın +[*] Düşman dalgalarını özelleştirin +[*] Steam Workshop'da haritalarınızı paylaşın +[*] Temel harita kurallarını özelleştirin +[*] 80'den fazla blok kullanın +[/list] diff --git a/fastlane/metadata/steam/turkish/short_description.txt b/fastlane/metadata/steam/turkish/short_description.txt new file mode 100644 index 0000000000..973cad65c9 --- /dev/null +++ b/fastlane/metadata/steam/turkish/short_description.txt @@ -0,0 +1 @@ +Kaynak yönetimine odaklanan açık uçlu bir kule savunma oyunu. diff --git a/gradle.properties b/gradle.properties index 7045ce0646..562fecaa69 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,4 +24,4 @@ android.useAndroidX=true #used for slow jitpack builds; TODO see if this actually works org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 -archash=ea2d4b8455a8502eeea80795cd2b6d10d8dfe21c +archash=fd0ca91e700653d5565e13d8ea5fea87378b022e diff --git a/jitpack.yml b/jitpack.yml index c418d56017..5bfaf0f47e 100644 --- a/jitpack.yml +++ b/jitpack.yml @@ -6,4 +6,4 @@ before_install: - jshell --version install: - ./gradlew publishToMavenLocal - - sed -i 's/ --illegal-access=permit//' gradle.properties #remove extra flags after compilation \ No newline at end of file + - echo -n > gradle.properties #zero out gradle.properties \ No newline at end of file diff --git a/server/src/mindustry/server/ServerControl.java b/server/src/mindustry/server/ServerControl.java index 3af40c0c78..230180772d 100644 --- a/server/src/mindustry/server/ServerControl.java +++ b/server/src/mindustry/server/ServerControl.java @@ -79,6 +79,9 @@ public class ServerControl implements ApplicationListener{ } logger = (level1, text) -> { + //err has red text instead of reset. + if(level1 == LogLevel.err) text = text.replace(reset, lightRed + bold); + String result = bold + lightBlack + "[" + dateTime.format(LocalDateTime.now()) + "] " + reset + format(tags[level1.ordinal()] + " " + text + "&fr"); System.out.println(result); diff --git a/servers_v6.json b/servers_v6.json index 913fb3989b..45bd95fe2b 100644 --- a/servers_v6.json +++ b/servers_v6.json @@ -113,10 +113,10 @@ }, { "name": "NukeDustry", - "address": ["nukedustry.tk", "nukedustry.tk:6568"] + "address": ["nukedustry.tk:7777", "nukedustry.tk:8888"] }, { "name": "MindustryBR", - "address": ["mindustryptbr.ddns.net", "mindustryptbr.myddns.me", "mindustryptbr.myddns.me:6566"] + "address": ["mindustryptbr.ddns.net", "mindustryptbr.myddns.me"] } ] diff --git a/servers_v7.json b/servers_v7.json index 49c9880814..73a584e8aa 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -50,5 +50,9 @@ { "name": "Shiza Minigames", "address": ["shizashizashiza.ml"] + }, + { + "name": "devass.su", + "address": ["185.22.152.66"] } ]