Merge branch 'master' of https://github.com/Anuken/Mindustry into 7.0-features
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 = エネルギーフィールド内の全ての敵ユニットと建造物には電撃を放ち、全ての味方ユニットには修復効果を与えます。
|
||||
|
||||
@@ -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},
|
||||
|
||||
@@ -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 = Записывает число в соединённую ячейку памяти.
|
||||
|
||||
1775
core/assets/bundles/bundle_sr.properties
Normal file
1775
core/assets/bundles/bundle_sr.properties
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
Binary file not shown.
BIN
core/assets/music/boss1.ogg
Normal file
BIN
core/assets/music/boss1.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/boss2.ogg
Normal file
BIN
core/assets/music/boss2.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/editor.ogg
Normal file
BIN
core/assets/music/editor.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/game1.ogg
Normal file
BIN
core/assets/music/game1.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/game2.ogg
Normal file
BIN
core/assets/music/game2.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/game3.ogg
Normal file
BIN
core/assets/music/game3.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/game4.ogg
Normal file
BIN
core/assets/music/game4.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/game5.ogg
Normal file
BIN
core/assets/music/game5.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/game6.ogg
Normal file
BIN
core/assets/music/game6.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/game7.ogg
Normal file
BIN
core/assets/music/game7.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/game8.ogg
Normal file
BIN
core/assets/music/game8.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/game9.ogg
Normal file
BIN
core/assets/music/game9.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/land.ogg
Normal file
BIN
core/assets/music/land.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/launch.ogg
Normal file
BIN
core/assets/music/launch.ogg
Normal file
Binary file not shown.
Binary file not shown.
BIN
core/assets/music/menu.ogg
Normal file
BIN
core/assets/music/menu.ogg
Normal file
Binary file not shown.
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
}));
|
||||
});
|
||||
});
|
||||
}};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.<Player>register("t", "<message...>", "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() + "]<T>" + NetClient.colorizeName(player.id(), player.name)));
|
||||
String raw = "[#" + player.team().color.toString() + "]<T> " + chatFormatter.format(player, message);
|
||||
Groups.player.each(p -> p.team() == player.team(), o -> o.sendMessage(raw, player, message));
|
||||
}
|
||||
});
|
||||
|
||||
clientCommands.<Player>register("a", "<message...>", "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() + "]<A>" + NetClient.colorizeName(player.id, player.name)));
|
||||
String raw = "[#" + Pal.adminChat.toString() + "]<A> " + 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<Player> players);
|
||||
}
|
||||
|
||||
public interface ChatFormatter{
|
||||
/** @return text to be placed before player name */
|
||||
String format(@Nullable Player player, String message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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(){
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import static mindustry.Vars.*;
|
||||
|
||||
public class ChatFragment extends Table{
|
||||
private static final int messagesShown = 10;
|
||||
private Seq<ChatMessage> messages = new Seq<>();
|
||||
private Seq<String> 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"),
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
@@ -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<Bullet> 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user