diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index c701a41356..86c6df380e 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -666,6 +666,7 @@ 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 Lines keybind.move_x.name = Move X keybind.move_y.name = Move Y keybind.mouse_move.name = Follow Mouse diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 1d188a100b..550fec3937 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -10,6 +10,7 @@ link.dev-builds.description = Нестабільні версії link.trello.description = Офіційна дошка Trello для запланованих функцій link.itch.io.description = Itch.io сторінка, на якій можна завантажити гру link.google-play.description = Завантажити для Android з Google Play +link.f-droid.description = Перелік каталогу F-Droid link.wiki.description = Офіційна Mindustry wiki linkfail = Не вдалося відкрити посилання!\nURL-адреса скопійована в буфер обміну. screenshot = Зняток мапи збережено в {0} @@ -74,6 +75,7 @@ maps.browse = Перегляд мап continue = Продовжити maps.none = [lightgray]Мап не знайдено! invalid = Недійсне +pickcolor = Вибрати колір preparingconfig = Підготовка конфігурації preparingcontent = Підготовка вмісту uploadingcontent = Вивантаження вмісту @@ -237,10 +239,10 @@ quit.confirm.tutorial = Ви впевнені, що хочете вийти з loading = [accent]Завантаження… reloading = [accent]Перезавантаження модифікацій… saving = [accent]Збереження… -cancelbuilding = [accent][[{0}][] to clear plan -selectschematic = [accent][[{0}][] to select+copy -pausebuilding = [accent][[{0}][] to pause building -resumebuilding = [scarlet][[{0}][] to resume building +cancelbuilding = [accent][[{0}][], щоб очистити план +selectschematic = [accent][[{0}][], щоб вибрати та скопіювати +pausebuilding = [accent][[{0}][], щоб призупинити будування +resumebuilding = [scarlet][[{0}][], щоб продовжити будування wave = [accent]Хвиля {0} wave.waiting = Хвиля через {0} wave.waveInProgress = [lightgray]Хвиля триває @@ -411,9 +413,9 @@ abandon = Покинути abandon.text = Ця зона і всі її ресурси будуть втрачені. locked = Заблоковано complete = [lightgray]Досягнута: -requirement.wave = Reach Wave {0} in {1} -requirement.core = Destroy Enemy Core in {0} -requirement.unlock = Unlock {0} +requirement.wave = Досягніть хвилі {0} у {1} +requirement.core = Знишьте вороже ядро у {0} +requirement.unlock = Розблокуйте {0} resume = Відновити зону:\n[lightgray]{0} bestwave = [lightgray]Найкраща хвиля: {0} launch = < ЗАПУСК > @@ -424,8 +426,8 @@ launch.confirm = Це видалить всі ресурси у Вашому я launch.skip.confirm = Якщо Ви пропустите зараз, Ви не зможете не запускати до більш пізніх хвиль. uncover = Розкрити configure = Вивантажити конфігурацію -bannedblocks = Banned Blocks -addall = Add All +bannedblocks = Заборонені блоки +addall = Додати все configure.locked = [lightgray]Можливість розблокувати вивантаження ресурсів буде доступна на {0}-тій хвилі. configure.invalid = Кількість повинна бути числом між 0 та {0}. zone.unlocked = Зона «[lightgray]{0}» тепер розблокована. @@ -487,8 +489,8 @@ settings.cleardata = Очистити дані… settings.clear.confirm = Ви впевнені, що хочете очистити ці дані?\nЦя дія не може бути скасовано! settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить всі дані, включаючи збереження, мапи, розблоковане та налаштування керування.\nПісля того, як ви натиснете ОК, гра видалить усі дані та автоматично закриється. paused = Пауза -clear = Clear -banned = [scarlet]Banned +clear = Очистити +banned = [scarlet]Заблоковано yes = Так no = Ні info.title = Інформація @@ -544,6 +546,8 @@ bar.heat = Нагрівання bar.power = Енергія bar.progress = Хід будування bar.spawned = Бойов. од.: {0}/{1} +bar.input = Ввід +bar.output = Вивід bullet.damage = [stat]{0}[lightgray] шкода bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat] {1}[lightgray] блок. bullet.incendiary = [stat]запальний @@ -578,7 +582,8 @@ setting.landscape.name = Тільки альбомний(гозинтальни setting.shadows.name = Тіні setting.blockreplace.name = Пропозиції щодо автоматичної заміни блоків setting.linear.name = Лінійна фільтрація -setting.hints.name = Hints +setting.hints.name = Підказки +setting.buildautopause.name = Автоматичне призупинення будування setting.animatedwater.name = Анімована вода setting.animatedshields.name = Анімовані щити setting.antialias.name = Згладжування[lightgray] (потребує перезапуску)[] @@ -600,13 +605,16 @@ setting.difficulty.name = Складність: setting.screenshake.name = Тряска екрану setting.effects.name = Ефекти setting.destroyedblocks.name = Показувати зруйновані блоки -setting.conveyorpathfinding.name = Пошук шляху для встановлення конвейерівConveyor Placement Pathfinding +setting.conveyorpathfinding.name = Пошук шляху для встановлення конвейерів setting.sensitivity.name = Чутливість контролера setting.saveinterval.name = Інтервал збереження setting.seconds = {0} с +setting.blockselecttimeout.name = Час вибору блока +setting.milliseconds = {0} мілісекунд setting.fullscreen.name = Повноекранний режим setting.borderlesswindow.name = Вікно без полів[lightgray] (може потребувати перезапуску) setting.fps.name = Показувати FPS і затримку до сервера +setting.blockselectkeys.name = Показувати клавіші вибору блока setting.vsync.name = Вертикальна синхронізація setting.pixelate.name = Пікселізація[lightgray] (вимикає анімації) setting.minimap.name = Показувати міні-мапу @@ -620,10 +628,10 @@ setting.crashreport.name = Відсилати анонімні звіти про setting.savecreate.name = Автоматичне створення збережень setting.publichost.name = Загальнодоступність гри setting.chatopacity.name = Непрозорість чату -setting.lasersopacity.name = Power Laser Opacity +setting.lasersopacity.name = Непрозорість лазерів енергопостачання setting.playerchat.name = Відображати хмару чата над гравцями -public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[lightgray]Це можна змінити у Налаштування->Гра->Public Game Visibility. -public.beta = Note that beta versions of the game cannot make public lobbies. +public.confirm = Ви хочете зробити цю гру загальнодоступною?\n[lightgray]Це можна змінити у Налаштування→Гра→Загальнодоступність гри +public.beta = Зауважте, що в бета-версії гри ви не можете робити публічні ігри. uiscale.reset = Масштаб користувальницького інтерфейсу було змінено.\nНатисніть «ОК» для підтверждення цього масшатабу.\n[scarlet]Повернення налаштувань і вихід через[accent] {0}[] … uiscale.cancel = Скасувати & Вийти setting.bloom.name = Світіння @@ -635,17 +643,36 @@ category.multiplayer.name = Мережева гра command.attack = Атакувати command.rally = Точка збору command.retreat = Відступити +placement.blockselectkeys = \n[lightgray]Клавіша: [{0}, keybind.clear_building.name = Очистити план будування keybind.press = Натисніть клавішу… keybind.press.axis = Натисніть клавішу… keybind.screenshot.name = Зняток мапи keybind.move_x.name = Рух по осі X keybind.move_y.name = Рух по осі Y +keybind.mouse_move.name = Слідкувати за мишею +keybind.dash.name = Прискорення keybind.schematic_select.name = Вибрати ділянку keybind.schematic_menu.name = Меню схем keybind.schematic_flip_x.name = Відобразити по осі X keybind.schematic_flip_y.name = Відобразити по осі Y -keybind.fullscreen.name = Повноекранний +keybind.category_prev.name = Попередня категорія +keybind.category_next.name = Наступна категорія +keybind.block_select_left.name = Вибрати блок ліворуч +keybind.block_select_right.name = Вибрати блок ліворуч праворуч +keybind.block_select_up.name = Вибрати блок зверху +keybind.block_select_down.name = Вибрати блок знизу +keybind.block_select_01.name = Категорія/Вибрати перший блок +keybind.block_select_02.name = Категорія/Вибрати другий блок +keybind.block_select_03.name = Категорія/Вибрати третій блок +keybind.block_select_04.name = Категорія/Вибрати четвертий блок +keybind.block_select_05.name = Категорія/Вибрати п’ятий блок +keybind.block_select_06.name = Категорія/Вибрати шостий блок +keybind.block_select_07.name = Категорія/Вибрати сьомий блок +keybind.block_select_08.name = Категорія/Вибрати восьмий блок +keybind.block_select_09.name = Категорія/Вибрати дев’ятий блок +keybind.block_select_10.name = Категорія/Вибрати десятий блок +keybind.fullscreen.name = Повноекранний режим keybind.select.name = Вибір/Постріл keybind.diagonal_placement.name = Діагональне розміщення keybind.pick.name = Вибрати блок @@ -658,7 +685,6 @@ keybind.menu.name = Меню keybind.pause.name = Пауза keybind.pause_building.name = Призупинити/Продовжити будування keybind.minimap.name = Мінімапа -keybind.dash.name = Прискоритися & летіітати keybind.chat.name = Чат keybind.player_list.name = Список гравців keybind.console.name = Консоль @@ -682,6 +708,7 @@ mode.attack.name = Атака mode.attack.description = Зруйнуйте ворожу базу.\n[gray]Потрібно червоне ядро на мапі для гри. mode.custom = Користувацькі правила rules.infiniteresources = Нескінченні ресурси +rules.reactorexplosions = Вибухи реактора rules.wavetimer = Таймер хвиль rules.waves = Хвилі rules.attack = Режим атаки @@ -707,6 +734,9 @@ rules.title.resourcesbuilding = Ресурси & будування rules.title.player = Гравці rules.title.enemy = Вороги rules.title.unit = Бойов. од. +rules.title.experimental = Есперементальне! +rules.lighting = Світлотінь +rules.ambientlight = Навколишнє світло content.item.name = Предмети content.liquid.name = Рідини content.unit.name = Бойові одиниці @@ -864,8 +894,10 @@ block.junction.name = Перехрестя block.router.name = Маршрутизатор block.distributor.name = Розподілювач block.sorter.name = Сортувальник -block.inverted-sorter.name = Inverted Sorter +block.inverted-sorter.name = Зворотній сортувальник block.message.name = Повідомлення +block.illuminator.name = Освітлювач +block.illuminator.description = Невелике, компактне, джерело світла, яку можна налаштувати. Для функціонування потрібна енергія. block.overflow-gate.name = Надмірний затвор block.silicon-smelter.name = Кремнієвий плавильний завод block.phase-weaver.name = Фазовий ткач @@ -879,6 +911,7 @@ block.coal-centrifuge.name = Вугільна центрифуга block.power-node.name = Енергійний вузол block.power-node-large.name = Великий енергетичний вузол block.surge-tower.name = Кінетична вежа +block.diode.name = Діод block.battery.name = Акумулятор block.battery-large.name = Великий акумулятор block.combustion-generator.name = Генератор горіння @@ -931,6 +964,7 @@ block.fortress-factory.name = Завод мехів «Фортеця» block.revenant-factory.name = Завод бомбардувальників «Потойбічний вбивця» block.repair-point.name = Ремонтний пункт block.pulse-conduit.name = Імпульсний водопровід +block.plated-conduit.name = Зміцнений водопровід block.phase-conduit.name = Фазовий водопровід block.liquid-router.name = Рідкий маршрутизатор block.liquid-tank.name = Рідкий резервуар @@ -984,7 +1018,7 @@ unit.reaper.name = Жнець tutorial.next = [lightgray]<Натисніть для продовження> tutorial.intro = Ви розпочали[scarlet] навчання по Mindustry.[]\nРозпочніть з[accent] видобування міді[]. Використовуйте [[WASD] для руху.\n[accent] Утримуйте [[Ctrl] під час прокрутки миші[] для приближення і віддалення. Наблизьтесь, а потім натисність на мідну жилу біля вашого ядра, щоб зробити це.\n\n[accent]{0}/{1} міді tutorial.intro.mobile = Ви розпочали[scarlet] навчання по Mindustry.[]\nПроведіть екраном, щоб рухатися.\n[accent] Зведіть або розведіть 2 пальця [] для приближення і віддалення відповідно.\nз[accent] видобування міді.[] Наблизьтесь, а потім натисність на мідну жилу біля вашого ядра, щоб зробити це.\n\n[accent]{0}/{1} міді -tutorial.drill = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисніть на вкладку свердла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням.\n[accent]Натисніть ПКМ[], щоб зупинити будування. +tutorial.drill = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисніть на вкладку свердла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням.\nВи також можете вибрати бур, натиснувши [accent][[2][], а потім натиснути [accent][[1][] швидко, незалежно від того, яка вкладка відкрита.\n[accent]Натисніть ПКМ[], щоб зупинити будування. tutorial.drill.mobile = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисність на вкладку сведла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням, потім натисність на [accent] галочку[] нижче, щоб підтвердити розміщення to confirm your selection.\nPress the[accent] X button[] to cancel placement. tutorial.blockinfo = Кожен блок має різні характеристики. Кожний бур може видобувати тільки певні руди.\nЩоб переглянути інформацію та характеристики блока,[accent] натисність на кнопку «?», коли Ви вибрали блок у меню будування.[]\n\n[accent]Перегляньте характеристику Механічного бура прямо зараз.[] tutorial.conveyor = [accent]Конвеєри[] використовуються для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent]Утримуйте миш, щоб розмістити у лінію.[]\nУтримуйте[accent] CTRL[] під час вибору лінії для розміщення по діагоналі.\n\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено @@ -1091,13 +1125,14 @@ block.sorter.description = Сортує предмети. Якщо елемен block.inverted-sorter.description = Обробляє елементи, як звичайний сортувальник, але виводить обрані елементи на сторони. block.router.description = Приймає елементи з одного напрямку та виводить їх до трьох інших напрямків порівну. Корисно для поділу матеріалів від одного джерела до кількох цілей.\n\n[scarlet]Ніколи не використовуйте поруч із входами до механізмів, оскільки вони будуть забиті вихідними предметами.[] block.distributor.description = Розширений маршрутизатор. Розділяє предмети до 7 інших напрямків порівну. -block.overflow-gate.description = Комбінований розгалужувач і маршрутизатор. Виходи лише вліво і вправо, якщо передній шлях заблокований. +block.overflow-gate.description = Виходи лише вліво і вправо, якщо передній шлях заблокований. block.mass-driver.description = Кінцевий елемент транспортного блоку. Збирає кілька предметів, а потім вистрілює їх до іншої електромагнитної катапульти на великій відстані. Для роботи потрібна енергія. block.mechanical-pump.description = Недорогий насос з повільним виходом, але без енергоспоживання. block.rotary-pump.description = Удосконалений насос. Насоси більше викачують, але потребують енергію. block.thermal-pump.description = Найкращий насос. block.conduit.description = Основний блок транспортування рідини. Пересуває рідини вперед. Застосовується спільно з насосами та іншими трубопроводами. block.pulse-conduit.description = Вдосконалений блок транспортування рідини. Транспортує рідини швидше і зберігає більше, ніж стандартні трубопроводи. +block.plated-conduit.description =Переміщує рідини з тією ж швидкістю, як і імпульсні трубопроводи, але має більше міцності. Не приймає рідин з боків окрім інших трубопроводів.\nПротікає менше. block.liquid-router.description = Приймає рідини з одного напрямку та виводить їх до трьох інших напрямків порівну. Також можна зберігати певну кількість рідини. Корисно для розщеплення рідин від одного джерела до кількох мішеней. block.liquid-tank.description = Зберігає велику кількість рідини. Використовуйте для створення буферів у ситуаціях з непостійним попитом на матеріали або як гарантію охолодження життєво важливих блоків. block.liquid-junction.description = Діє як міст для двох каналів перетину. Корисно в ситуаціях, коли два різні трубопроводи перевозять різні рідини в різні місця. @@ -1106,6 +1141,7 @@ block.phase-conduit.description = Розширений блок транспор block.power-node.description = Передає живлення на підключені вузли. Вузол буде отримувати живлення від будь-яких сусідніх блоків або подавати живлення до них. block.power-node-large.description = Удосконалений вузол живлення з більшим діапазоном. block.surge-tower.description = Надзвичайно дальний вузол живлення з меншою кількістю доступних з’єднань. +block.diode.description = Живлення акумулятора може протікати через цей блок лише в одному напрямку, але лише в тому випадку, якщо інша сторона має менше енергії. block.battery.description = Зберігає енергію як буфер в часи надлишкової енергії. Виводить енергію у періоди дефіциту. block.battery-large.description = Зберігає набагато більше енергії, ніж звичайний акумулятор. block.combustion-generator.description = Виробляє енергію, спалюючи легкозаймисті матеріали, такі як вугілля. diff --git a/core/assets/sprites/block_colors.png b/core/assets/sprites/block_colors.png index 20d01ac7fb..88056829c3 100644 Binary files a/core/assets/sprites/block_colors.png and b/core/assets/sprites/block_colors.png differ diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 3953f9b778..78a371afc2 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/sprites/sprites3.png b/core/assets/sprites/sprites3.png index d987c76119..4d7a68f928 100644 Binary files a/core/assets/sprites/sprites3.png and b/core/assets/sprites/sprites3.png differ diff --git a/core/assets/sprites/sprites5.png b/core/assets/sprites/sprites5.png index 3526fee659..22b97e382f 100644 Binary files a/core/assets/sprites/sprites5.png and b/core/assets/sprites/sprites5.png differ diff --git a/core/src/io/anuke/mindustry/content/Blocks.java b/core/src/io/anuke/mindustry/content/Blocks.java index 9add2d5e8c..623fd0ef79 100644 --- a/core/src/io/anuke/mindustry/content/Blocks.java +++ b/core/src/io/anuke/mindustry/content/Blocks.java @@ -507,7 +507,7 @@ public class Blocks implements ContentList{ int bottomRegion = reg("-bottom"), weaveRegion = reg("-weave"); - drawIcons = () -> new TextureRegion[]{Core.atlas.find(name + "-bottom"), Core.atlas.find(name)}; + drawIcons = () -> new TextureRegion[]{Core.atlas.find(name + "-bottom"), Core.atlas.find(name), Core.atlas.find(name + "-weave")}; drawer = tile -> { GenericCrafterEntity entity = tile.entity(); diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/ForceProjector.java b/core/src/io/anuke/mindustry/world/blocks/defense/ForceProjector.java index 333d3818ae..4dce2d9db9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/ForceProjector.java @@ -99,7 +99,7 @@ public class ForceProjector extends Block{ entity.phaseHeat = Mathf.lerpDelta(entity.phaseHeat, Mathf.num(phaseValid), 0.1f); - if(phaseValid && !entity.broken && entity.timer.get(timerUse, phaseUseTime)){ + if(phaseValid && !entity.broken && entity.timer.get(timerUse, phaseUseTime) && entity.efficiency() > 0){ entity.cons.trigger(); } diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerDiode.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerDiode.java index b8a1090591..8193ff4e7e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerDiode.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerDiode.java @@ -51,7 +51,7 @@ public class PowerDiode extends Block{ // battery % of the graph on either side, defaults to zero protected float bar(Tile tile){ - return tile.block().hasPower ? tile.entity.power.graph.getBatteryStored() / tile.entity.power.graph.getTotalBatteryCapacity() : 0f; + return (tile != null && tile.block().hasPower) ? tile.entity.power.graph.getBatteryStored() / tile.entity.power.graph.getTotalBatteryCapacity() : 0f; } @Override